import { TemplateRef } from '@angular/core'; import { ScrollerOptions } from 'primeng/api'; import { MultiSelectItem } from './multiselect'; /** * Callbacks to invoke on filter or reset. * @group Interface */ export interface MultiSelectFilterOptions { filter?: (value?: any) => void; reset?: () => void; } /** * Custom change event. * @see {@link MultiSelect.onChange} * @group Events */ export interface MultiSelectChangeEvent { /** * Browser event. */ originalEvent: Event; /** * Current selected values. */ value: any; /** * Toggled item value. */ itemValue?: any; } /** * Custom change event. * @see {@link MultiSelect.onSelectAllChange} * @group Events */ export interface MultiSelectSelectAllChangeEvent { /** * Browser event. */ originalEvent: Event; /** * Boolean value indicates whether all data is selected. */ checked: boolean; } /** * Custom filter event. * @see {@link MultiSelect.onFilter} * @group Events */ export interface MultiSelectFilterEvent { /** * Browser event. */ originalEvent: Event; /** * Filter value. */ filter: any; } /** * Custom focus event. * @see {@link MultiSelect.onFocus} * @group Events */ export interface MultiSelectFocusEvent { /** * Browser event. */ originalEvent: Event; } /** * Custom blur event. * @see {@link MultiSelect.onBlur} * @extends {MultiSelectFocusEvent} * @group Events */ export interface MultiSelectBlurEvent extends MultiSelectFocusEvent { } /** * Custom lazy load event. * @see {@link MultiSelect.onLazyLoad} * @group Events */ export interface MultiSelectLazyLoadEvent { /** * Index of the first element in viewport. */ first: number; /** * Index of the last element in viewport. */ last: number; } /** * Custom remove event. * @see {@link MultiSelect.onRemove} * @group Events */ export interface MultiSelectRemoveEvent { /** * Value after the item removed. */ newValue: object; /** * Removed value. */ removed: MultiSelectItem; } /** * Defines valid templates in MultiSelect. * @group Templates */ export interface MultiSelectTemplates { /** * Custom header template. * @param {Object} context - item data. */ item(context: { /** * Data of the option. */ $implicit: any; }): TemplateRef<{ $implicit: any; }>; /** * Custom selected item template. * @param {Object} context - selected items data. */ selectedItems(context: { /** * Selected option value. */ $implicit: any; /** * Function to remove chip. */ removeChip: (chip: MultiSelectItem, event: MouseEvent) => void; }): TemplateRef<{ $implicit: any; removeChip: Function; }>; /** * Custom header template. */ header(): TemplateRef; /** * Custom filter template. * @param {MultiSelectFilterOptions} options - filter options. */ filter(context: { /** * Filter options. */ options: MultiSelectFilterOptions; }): TemplateRef<{ options: MultiSelectFilterOptions; }>; /** * Custom footer template. */ footer(): TemplateRef; /** * Custom empty filter template. */ emptyfilter(): TemplateRef; /** * Custom empty template. */ empty(): TemplateRef; /** * Custom group template. */ group(context: { /** * Data of the item. */ $implicit: any; }): TemplateRef<{ $implicit: any; }>; /** * Custom loader template. This template can be used with virtualScroll. * @param {ScrollerOptions} options - virtual scroller options. */ loader(context: { /** * Virtual scroller options. */ options: ScrollerOptions; }): TemplateRef<{ options: ScrollerOptions; }>; /** * Custom dropdown trigger icon template. */ dropdownicon(): TemplateRef; /** * Custom clear icon template. */ clearicon(): TemplateRef; /** * Custom filter icon template. */ filtericon(): TemplateRef; /** * Custom check icon template. * @deprecated Use headercheckboxicon or itemcheckboxicon instead. */ checkicon(): TemplateRef; /** * Custom check icon template for the header checkbox. */ headercheckboxicon(context: { /** * Defines if all items are selected. */ $implicit: boolean; /** * Defines if items are partially selected. */ partialSelected: boolean; }): TemplateRef<{ $implicit: boolean; partialSelected: boolean; }>; /** * Custom check icon template for the item checkbox. */ itemcheckboxicon(context: { /** * Selection status of the item. */ $implicit: boolean; }): TemplateRef<{ $implicit: boolean; }>; /** * Custom close icon template. */ closeicon(): TemplateRef; /** * Custom remove token icon template. */ removetokenicon(): TemplateRef; }