Skip to content

Popover Filter

The popover layout renders filters inside dropdown-like popovers. This layout is compact and works well in toolbars or table headers.

vue
<filter :schema="schema" view="popover"></filter>

{}

schema array
[
  {
    "name": "text",
    "type": "text",
    "label": "text"
  },
  {
    "name": "media",
    "type": "checkbox",
    "label": "Checkbox",
    "options": [
      {
        "id": "is_video",
        "text": "Video",
        "color": "#104e02",
        "count": 23
      },
      {
        "id": "is_photo",
        "text": "Photo",
        "color": "#370106",
        "count": 23
      }
    ]
  },
  {
    "name": "source",
    "type": "radio",
    "label": "Radio",
    "options": [
      {
        "id": "is_local",
        "text": "Local"
      },
      {
        "id": "is_external",
        "text": "External"
      },
      {
        "id": "is_partner",
        "text": "Partner"
      },
      {
        "id": "is_imported",
        "text": "Imported"
      },
      {
        "id": "is_generated",
        "text": "Generated"
      },
      {
        "id": "is_manual",
        "text": "Manual"
      },
      {
        "id": "is_automated",
        "text": "Automated"
      },
      {
        "id": "is_third_party",
        "text": "Third-party"
      },
      {
        "id": "is_uploaded",
        "text": "Uploaded"
      },
      {
        "id": "is_copied",
        "text": "Copied"
      },
      {
        "id": "is_synced",
        "text": "Synced"
      },
      {
        "id": "is_archived",
        "text": "Archived"
      },
      {
        "id": "is_collected",
        "text": "Collected"
      },
      {
        "id": "is_transferred",
        "text": "Transferred"
      },
      {
        "id": "is_legacy",
        "text": "Legacy"
      },
      {
        "id": "is_public",
        "text": "Public"
      },
      {
        "id": "is_private",
        "text": "Private"
      },
      {
        "id": "is_internal",
        "text": "Internal"
      },
      {
        "id": "is_verified",
        "text": "Verified"
      },
      {
        "id": "is_unverified",
        "text": "Unverified"
      }
    ]
  },
  {
    "name": "date",
    "type": "date",
    "label": "Date"
  },
  {
    "name": "price",
    "type": "range",
    "label": "Price",
    "placeHolder": [
      "from",
      "to"
    ]
  },
  {
    "name": "select",
    "type": "select",
    "label": "Select",
    "apiUrl": "https://dummyjson.com/products/search",
    "dataKey": "products"
  },
  {
    "name": "tag",
    "type": "tag",
    "label": "TAG",
    "options": [
      {
        "id": null,
        "label": "One size"
      },
      {
        "id": "2XS",
        "label": "2XS"
      },
      {
        "id": "XS",
        "label": "XS"
      },
      {
        "id": "S",
        "label": "S"
      },
      {
        "id": "M",
        "label": "M"
      },
      {
        "id": "L",
        "label": "L"
      },
      {
        "id": "XL",
        "label": "XL"
      },
      {
        "id": "2XL",
        "label": "2XL"
      },
      {
        "id": "3XL",
        "label": "3XL"
      },
      {
        "id": "4XL",
        "label": "4XL"
      },
      {
        "id": "5XL",
        "label": "5XL"
      },
      {
        "id": "44",
        "label": "44"
      },
      {
        "id": "45",
        "label": "45"
      },
      {
        "id": "46",
        "label": "46"
      }
    ],
    "multi": true
  }
]
schema object
{
  "text": {
    "type": "text",
    "label": "text",
    "name": "text"
  },
  "media": {
    "type": "checkbox",
    "label": "Checkbox",
    "options": [
      {
        "id": "is_video",
        "text": "Video",
        "color": "#104e02",
        "count": 23
      },
      {
        "id": "is_photo",
        "text": "Photo",
        "color": "#370106",
        "count": 23
      }
    ],
    "name": "media"
  },
  "source": {
    "type": "radio",
    "label": "Radio",
    "options": [
      {
        "id": "is_local",
        "text": "Local"
      },
      {
        "id": "is_external",
        "text": "External"
      },
      {
        "id": "is_partner",
        "text": "Partner"
      },
      {
        "id": "is_imported",
        "text": "Imported"
      },
      {
        "id": "is_generated",
        "text": "Generated"
      },
      {
        "id": "is_manual",
        "text": "Manual"
      },
      {
        "id": "is_automated",
        "text": "Automated"
      },
      {
        "id": "is_third_party",
        "text": "Third-party"
      },
      {
        "id": "is_uploaded",
        "text": "Uploaded"
      },
      {
        "id": "is_copied",
        "text": "Copied"
      },
      {
        "id": "is_synced",
        "text": "Synced"
      },
      {
        "id": "is_archived",
        "text": "Archived"
      },
      {
        "id": "is_collected",
        "text": "Collected"
      },
      {
        "id": "is_transferred",
        "text": "Transferred"
      },
      {
        "id": "is_legacy",
        "text": "Legacy"
      },
      {
        "id": "is_public",
        "text": "Public"
      },
      {
        "id": "is_private",
        "text": "Private"
      },
      {
        "id": "is_internal",
        "text": "Internal"
      },
      {
        "id": "is_verified",
        "text": "Verified"
      },
      {
        "id": "is_unverified",
        "text": "Unverified"
      }
    ],
    "name": "source"
  },
  "date": {
    "type": "date",
    "label": "Date",
    "name": "date"
  },
  "price": {
    "type": "range",
    "label": "Price",
    "placeHolder": [
      "from",
      "to"
    ],
    "name": "price"
  },
  "select": {
    "type": "select",
    "label": "Select",
    "apiUrl": "https://dummyjson.com/products/search",
    "dataKey": "products",
    "name": "select"
  },
  "tag": {
    "type": "tag",
    "label": "TAG",
    "options": [
      {
        "id": null,
        "label": "One size"
      },
      {
        "id": "2XS",
        "label": "2XS"
      },
      {
        "id": "XS",
        "label": "XS"
      },
      {
        "id": "S",
        "label": "S"
      },
      {
        "id": "M",
        "label": "M"
      },
      {
        "id": "L",
        "label": "L"
      },
      {
        "id": "XL",
        "label": "XL"
      },
      {
        "id": "2XL",
        "label": "2XL"
      },
      {
        "id": "3XL",
        "label": "3XL"
      },
      {
        "id": "4XL",
        "label": "4XL"
      },
      {
        "id": "5XL",
        "label": "5XL"
      },
      {
        "id": "44",
        "label": "44"
      },
      {
        "id": "45",
        "label": "45"
      },
      {
        "id": "46",
        "label": "46"
      }
    ],
    "multi": true,
    "name": "tag"
  }
}