import { DataSchema } from '@membranehq/sdk'; import { SvgIconType } from '../SvgIcon/svg-icon-type'; import { ReactNode } from 'react'; import type { ComboBoxOption, ComboBoxOptionsFactory, PopperRefElementType, ValueDataType } from './shared'; import { ValueSpecType } from './value-spec'; type VariablesSchemaType = any; export type FnOnValueChangeType = (value: ValueDataType) => void; type FnInitEditModeType = () => void; type FnCloseEditModeType = () => void; type IsComboBoxDisabledType = boolean; type IsValueRequiredType = boolean; export interface ComboBoxOptionsProps { value?: ValueDataType; onValueChange?: FnOnValueChangeType; schema?: DataSchema; valueSpec?: ValueSpecType; variablesSchema?: VariablesSchemaType; variablesOnly?: boolean; options?: ComboBoxOption[]; optionFactories?: Array; refsToIgnoreClick?: PopperRefElementType[]; } export interface ComboBoxProps extends ComboBoxOptionsProps { valueComponent?: JSX.Element; onChange: FnOnValueChangeType; placeholder?: string; hideSearch?: boolean; isRequired?: IsValueRequiredType; disabled?: IsComboBoxDisabledType; className?: string; autoOpen?: ComboBoxDropdownProps['autoOpen']; onOpen?: ComboBoxDropdownProps['onDropdownOpen']; onClose?: ComboBoxDropdownProps['onDropdownClose']; topDropdownPanelComponent?: ComboBoxDropdownProps['topDropdownPanelComponent']; } export interface ComboBoxComponentProps { placeholder?: string; className?: string; onChange: FnOnValueChangeType; required?: IsValueRequiredType; disabled?: IsComboBoxDisabledType; role?: string; 'aria-expanded'?: boolean; 'data-selected'?: boolean; } export interface ComboBoxDropdownProps { autoOpen?: boolean; onDropdownOpen?: FnInitEditModeType; onDropdownClose?: FnCloseEditModeType; topDropdownPanelComponent?: JSX.Element; } export type ComboBoxTagVariantType = 'default' | 'lookup'; export interface ComboBoxTagProps { variant?: ComboBoxTagVariantType; selected?: boolean; onClick?: FnInitEditModeType; tooltip?: string; className?: string; icon?: SvgIconType; iconUri?: string; children: ReactNode; invalid?: boolean; disabled?: IsComboBoxDisabledType; } export type OptionsStateType = 'rejected' | 'pending' | 'resolved'; export interface ComboBoxValueProps { className?: string; placeholder?: string; isEdited?: boolean; disabled?: IsComboBoxDisabledType; onClick?: FnInitEditModeType; onChange?: FnOnValueChangeType; } export interface ComboBoxSchemaValueProps extends Omit { value: any; schema: DataSchema | undefined; variablesSchema: DataSchema | undefined; } export {};