import type { RenderItemFunction } from '@lit-labs/virtualizer/virtualize.js'; import type { ReactiveControllerHost, TemplateResult } from 'lit'; import type IgcComboComponent from './combo.js'; export type Keys = keyof T; export type Values = T[keyof T]; export type Item = T | Values; export type ComboRecord = { value: T; header: boolean; dataIndex: number; }; export type ComboHost = ReactiveControllerHost & IgcComboComponent; export type GroupingDirection = 'asc' | 'desc' | 'none'; export type ComboChangeType = 'selection' | 'deselection' | 'addition'; export type ComboRenderFunction = RenderItemFunction>; export type ComboValue = T | Values; export interface FilteringOptions { filterKey: Keys | undefined; caseSensitive?: boolean; matchDiacritics?: boolean; } export interface GroupingOptions { groupKey?: Keys; valueKey?: Keys; displayKey?: Keys; direction: GroupingDirection; } export interface IgcComboChangeEventArgs { newValue: ComboValue[]; items: T[]; type: ComboChangeType; } export interface IgcComboComponentEventMap { igcChange: CustomEvent; focus: FocusEvent; blur: FocusEvent; igcOpening: CustomEvent; igcOpened: CustomEvent; igcClosing: CustomEvent; igcClosed: CustomEvent; } export type ComboItemTemplate = (props: ComboTemplateProps) => TemplateResult; export interface ComboTemplateProps { item: T; }