{
  "name": "card-view",
  "version": "20.0.2",
  "jetVersion": "^20.0.2",
  "pack": "oj-c",
  "type": "composite",
  "dependencyScope": "runtime",
  "license": "https://opensource.org/licenses/UPL",
  "implements": [
    "CCardViewElement"
  ],
  "displayName": "Card View",
  "description": "A CardView displays data items as a grid with highly interactive features.",
  "help": "oj-c.CardView.html",
  "main": "oj-c/card-view",
  "status": [
    {
      "type": "production",
      "since": "19.0.0"
    }
  ],
  "requirements": [
    {
      "type": "anyOf",
      "label": "accessibility",
      "properties": [
        "aria-label",
        "aria-labelledby"
      ]
    }
  ],
  "extension": {
    "vbdt": {
      "module": "oj-c/card-view"
    },
    "oracle": {
      "uxSpecs": [
        "card-view"
      ]
    },
    "webelement": {
      "package": "@oracle/oraclejet-core-pack",
      "version": "20.0.2",
      "docUrl": "https://www.oracle.com/webfolder/technetwork/jet/cpwdtsdoc/classes/CardViewWebElement.html",
      "export": "findCardView",
      "main": "@oracle/oraclejet-core-pack/webdriver"
    }
  },
  "propertyLayout": [
    {
      "propertyGroup": "common",
      "items": [
        "selectionMode",
        "gutterSize",
        "focusBehavior",
        "initialAnimation"
      ]
    },
    {
      "propertyGroup": "data",
      "items": [
        "data",
        "selected"
      ]
    }
  ],
  "since": "17.0.0",
  "properties": {
    "currentItem": {
      "type": "string|number",
      "description": "The item that currently has keyboard focus",
      "displayName": "Current Item",
      "help": "#currentItem",
      "readOnly": true,
      "writeback": true
    },
    "data": {
      "type": "DataProvider|null",
      "description": "The data source for CardView.",
      "displayName": "Data",
      "help": "#data",
      "extension": {
        "webelement": {
          "exceptionStatus": [
            {
              "type": "unsupported"
            }
          ]
        }
      },
      "value": null
    },
    "gutterSize": {
      "type": "string",
      "description": "Size of the gutter between columns and rows.",
      "displayName": "GutterSize",
      "help": "#gutterSize",
      "enumValues": [
        "xs",
        "sm",
        "md",
        "lg",
        "xl"
      ],
      "value": "sm"
    },
    "scrollPolicyOptions": {
      "type": "object",
      "description": "Specifies fetch options for scrolling behaviors that trigger data fetches.",
      "displayName": "Scroll Policy Options",
      "help": "#scrollPolicyOptions",
      "properties": {
        "fetchSize": {
          "type": "number",
          "value": 25
        },
        "scroller": {
          "type": "string"
        }
      }
    },
    "selected": {
      "type": "object",
      "description": "The selected property",
      "displayName": "Selected Items Changed",
      "help": "#selected",
      "writeback": true
    },
    "selectionMode": {
      "type": "string",
      "description": "Type of selection behavior for the CardView",
      "displayName": "Selection Mode",
      "help": "#selectionMode",
      "propertyEditorValues": {
        "multiple": {
          "description": "Multiple items can be selected at the same time.",
          "displayName": "Multiple"
        },
        "none": {
          "description": "Selection is disabled.",
          "displayName": "None"
        },
        "single": {
          "description": "Only a single item can be selected at a time.",
          "displayName": "Single"
        },
        "singleRequired": {
          "description": "Only a single item can be selected at a time. In addition, CardView will also ensure that an item is selected at all time.",
          "displayName": "Single Required"
        }
      },
      "enumValues": [
        "none",
        "multiple",
        "single",
        "singleRequired"
      ],
      "value": "none"
    },
    "initialAnimation": {
      "type": "string",
      "description": "Specify animation when cards are initially rendered.",
      "displayName": "Initial Animation",
      "help": "initialAnimation",
      "enumValues": [
        "slideUp",
        "slideDown"
      ],
      "value": "slideUp"
    },
    "focusBehavior": {
      "type": "string",
      "description": "Specifies which focus behavior we should use for an item.",
      "displayName": "Focus Behavior",
      "help": "focusBehavior",
      "enumValues": [
        "content",
        "card"
      ],
      "value": "card"
    },
    "columns": {
      "type": "number|string",
      "description": "Specifies the exact number of columns to render.",
      "displayName": "Columns",
      "help": "columns",
      "propertyEditorValues": {
        "auto": {
          "description": "CardView will determine the number of columns based on width of the CardView and the width of the cards",
          "displayName": "Auto"
        }
      },
      "value": "auto"
    },
    "reorderable": {
      "type": "object",
      "description": "Specify the item reordering functionality.",
      "displayName": "Reorderable",
      "help": "#reorderable",
      "properties": {
        "items": {
          "type": "string",
          "enumValues": [
            "disabled",
            "enabled"
          ],
          "value": "disabled"
        }
      }
    }
  },
  "slots": {
    "noData": {
      "description": "The noData slot is used to specify the content to show when there is no data. See the Help documentation for more information.",
      "displayName": "noData",
      "help": "#noData",
      "maxItems": 1,
      "templateSlotAlias": "noDataTemplate",
      "data": {}
    },
    "itemTemplate": {
      "description": "The itemTemplate slot is used to specify the template for rendering each item in the component. See the Help documentation for more information.",
      "displayName": "itemTemplate",
      "help": "#itemTemplate",
      "maxItems": 1,
      "data": {
        "data": {
          "type": "any"
        },
        "item": {
          "type": "object",
          "properties": {
            "data": {
              "type": "any"
            },
            "metadata": {
              "type": "object",
              "properties": {
                "indexFromParent": {
                  "type": "number"
                },
                "isLeaf": {
                  "type": "boolean"
                },
                "key": {
                  "type": "string|number"
                },
                "message": {
                  "type": "object",
                  "properties": {
                    "detail": {
                      "type": "string"
                    },
                    "severity": {
                      "type": "string|number"
                    },
                    "summary": {
                      "type": "string"
                    }
                  }
                },
                "parentKey": {
                  "type": "string|number"
                },
                "suggestion": {
                  "type": "object"
                },
                "treeDepth": {
                  "type": "number"
                }
              }
            }
          }
        },
        "isTabbable": {
          "type": "boolean"
        }
      }
    },
    "skeletonTemplate": {
      "description": "The skeletonTemplate slot is used to specify the template for rendering each skeleton while waiting for data during initial load as well as load more on scroll. See the Help documentation for more information.",
      "displayName": "skeletonTemplate",
      "help": "#skeletonTemplate",
      "maxItems": 1,
      "data": {}
    }
  },
  "events": {
    "ojReorder": {
      "description": "Triggered after items are reordered within CardView via drag and drop or keyboard.",
      "displayName": "Reorder",
      "help": "#event:reorder",
      "detail": {
        "reorderedKeys": {
          "type": "Array<string|number>"
        },
        "itemKeys": {
          "type": "Array<string|number>"
        },
        "referenceKey": {
          "type": "string|number|null"
        }
      }
    }
  },
  "methods": {
    "setProperty": {
      "description": "Sets a property or a single subproperty for complex properties and notifies the component of the change, triggering a corresponding event.",
      "help": "#setProperty",
      "params": [
        {
          "name": "property",
          "description": "The property name to set. Supports dot notation for subproperty access.",
          "type": "string"
        },
        {
          "name": "value",
          "description": "The new value to set the property to.",
          "type": "any"
        }
      ],
      "return": "void"
    },
    "getProperty": {
      "description": "Retrieves the value of a property or a subproperty.",
      "help": "#getProperty",
      "params": [
        {
          "name": "property",
          "description": "The property name to get. Supports dot notation for subproperty access.",
          "type": "string"
        }
      ],
      "return": "any"
    },
    "setProperties": {
      "description": "Performs a batch set of properties.",
      "help": "#setProperties",
      "params": [
        {
          "name": "properties",
          "description": "An object containing the property and value pairs to set.",
          "type": "object"
        }
      ],
      "return": "void"
    }
  }
}