import type { ISelectItem } from 'node_modules/@feedmepos/ui-library/dist/components/form/select/FmSelect.vue'; export interface ISelectItemSublabel extends ISelectItem { groupId?: string; collapsed?: boolean; tags?: string[]; searchKeys?: string[]; } export interface ISelectItemGroup { id: string; label: string; sublabel?: string; collapse?: boolean; disabled?: boolean; } export interface FmMultiselectDialogProps { modelValue: any; items: ISelectItemSublabel[]; groups?: ISelectItemGroup[]; singleSelect?: boolean; placeholder?: string; showValidBorder?: boolean; maxHeight?: number; width?: number | undefined; noShadow?: boolean; loading?: boolean; virtualScroll?: boolean; /** * An array of RuleAttribute objects used to define available filter options for the multiselect dialog. * Each RuleAttribute describes a filterable attribute, including its name, type, and possible values. * This property enables advanced filtering functionality by allowing users to filter the selectable items * based on the specified attributes. */ filterAttributes?: RuleAttribute[]; /** * By default, we call validateMongoQuery directly on each item: * `validateMongoQuery(item, mongoQuery)`. * If attributeKey is provided, we call validateMongoQuery on the nested attribute: * `validateMongoQuery(item[attributeKey], mongoQuery)` */ attributeKey?: string; /** * Maximum number of items that can be selected. If not set, there is no limit. * Note: singleSelect is equivalent to maxSelections: 1 */ maxSelections?: number; } export interface FmMultiselectDialogEvents { (event: 'update:modelValue', mv: any): void; (event: 'close'): void; }