import type { ChangeEvent, ReactNode } from 'react'; export type ComboboxItem = { value: string; label: ReactNode; disabled?: boolean; data?: T; }; export type ComboboxOption = { id: string; selected: boolean; isNew: boolean; item: ComboboxItem; }; export type AbstractProps = { /** * 選択可能なアイテムのリスト */ items: Array>; /** * input 要素の `name` 属性の値 */ name?: string; /** * input 要素の `disabled` 属性の値 */ disabled?: boolean; /** * input 要素の `required` 属性の値 */ required?: boolean; /** * コンポーネント内の一番外側の要素に適用するクラス名 */ className?: string; /** * `true` のとき、コンポーネントの外枠が `DANGER` カラーになる */ error?: boolean; /** * `true` のとき、 `items` 内に存在しないアイテムを新しく追加できるようになる */ creatable?: boolean; /** * input 要素の `placeholder` 属性の値 */ placeholder?: string; /** * `true` のとき、ドロップダウンリスト内にローダーを表示する */ isLoading?: boolean; /** * input 要素の `width` スタイルに適用する値 */ width?: number | string; /** * ドロップダウンリスト内に表示するヘルプメッセージ */ dropdownHelpMessage?: ReactNode; /** * ドロップダウンリストの `width` スタイルに適用する値 */ dropdownWidth?: number | string; /** * input 要素の `value` が変わった時に発火するコールバック関数 */ onChangeInput?: (e: ChangeEvent) => void; /** * `items` 内に存在しないアイテムが追加されたときに発火するコールバック関数 */ onAdd?: (label: string) => void; /** * アイテムが選択された時に発火するコールバック関数 */ onSelect?: (item: ComboboxItem) => void; /** * input 要素の `value` が変わった時に発火するコールバック関数 * @deprecated `onChange` は非推奨なため、 代わりに `onChangeInput` を使用してください。 */ onChange?: (e: ChangeEvent) => void; };