@yamada-ui/autocomplete 2.0.0-next-20240513035416 → 2.0.0-next-20240516121223
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/autocomplete-create.js.map +1 -1
- package/dist/autocomplete-create.mjs +1 -1
- package/dist/autocomplete-empty.js.map +1 -1
- package/dist/autocomplete-empty.mjs +1 -1
- package/dist/autocomplete-icon.js.map +1 -1
- package/dist/autocomplete-icon.mjs +1 -1
- package/dist/autocomplete-list.js.map +1 -1
- package/dist/autocomplete-list.mjs +1 -1
- package/dist/autocomplete-option-group.d.mts +1 -1
- package/dist/autocomplete-option-group.d.ts +1 -1
- package/dist/autocomplete-option-group.js.map +1 -1
- package/dist/autocomplete-option-group.mjs +1 -1
- package/dist/autocomplete-option.d.mts +1 -1
- package/dist/autocomplete-option.d.ts +1 -1
- package/dist/autocomplete-option.js.map +1 -1
- package/dist/autocomplete-option.mjs +1 -1
- package/dist/autocomplete.d.mts +1 -1
- package/dist/autocomplete.d.ts +1 -1
- package/dist/autocomplete.js +12 -3
- package/dist/autocomplete.js.map +1 -1
- package/dist/autocomplete.mjs +1 -1
- package/dist/{chunk-M7D4PAIO.mjs → chunk-X2KU3OVN.mjs} +15 -5
- package/dist/chunk-X2KU3OVN.mjs.map +1 -0
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +13 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/multi-autocomplete.d.mts +1 -1
- package/dist/multi-autocomplete.d.ts +1 -1
- package/dist/multi-autocomplete.js +13 -3
- package/dist/multi-autocomplete.js.map +1 -1
- package/dist/multi-autocomplete.mjs +1 -1
- package/dist/{use-autocomplete-BP1-0-tj.d.mts → use-autocomplete-h3CQff1L.d.mts} +10 -25
- package/dist/{use-autocomplete-BP1-0-tj.d.ts → use-autocomplete-h3CQff1L.d.ts} +10 -25
- package/dist/use-autocomplete.d.mts +1 -1
- package/dist/use-autocomplete.d.ts +1 -1
- package/dist/use-autocomplete.js +12 -3
- package/dist/use-autocomplete.js.map +1 -1
- package/dist/use-autocomplete.mjs +1 -1
- package/package.json +3 -3
- package/dist/chunk-M7D4PAIO.mjs.map +0 -1
package/dist/autocomplete.js
CHANGED
@@ -413,9 +413,9 @@ var useAutocomplete = ({
|
|
413
413
|
}) => {
|
414
414
|
rest = (0, import_form_control.useFormControlProps)(rest);
|
415
415
|
const { id } = rest;
|
416
|
-
const formControlProps = (0, import_utils6.pickObject)(
|
416
|
+
const { "aria-readonly": _ariaReadonly, ...formControlProps } = (0, import_utils6.pickObject)(
|
417
417
|
rest,
|
418
|
-
|
418
|
+
import_form_control.formControlProperties
|
419
419
|
);
|
420
420
|
const [containerProps, inputProps] = (0, import_utils6.splitObject)(
|
421
421
|
(0, import_utils6.omitObject)(rest, [...import_popover2.popoverProperties, "onKeyDown", "onFocus"]),
|
@@ -1104,7 +1104,8 @@ var useAutocompleteInput = () => {
|
|
1104
1104
|
onCompositionEnd,
|
1105
1105
|
isAllSelected,
|
1106
1106
|
formControlProps,
|
1107
|
-
inputProps
|
1107
|
+
inputProps,
|
1108
|
+
isOpen
|
1108
1109
|
} = useAutocompleteContext();
|
1109
1110
|
(0, import_utils6.useUpdateEffect)(() => {
|
1110
1111
|
if (isAllSelected && inputRef.current)
|
@@ -1114,6 +1115,13 @@ var useAutocompleteInput = () => {
|
|
1114
1115
|
(props = {}, ref = null) => ({
|
1115
1116
|
ref: (0, import_utils6.mergeRefs)(inputRef, ref),
|
1116
1117
|
...formControlProps,
|
1118
|
+
role: "combobox",
|
1119
|
+
"aria-haspopup": "listbox",
|
1120
|
+
"aria-autocomplete": "list",
|
1121
|
+
"aria-expanded": isOpen,
|
1122
|
+
autoCapitalize: "none",
|
1123
|
+
autoComplete: "off",
|
1124
|
+
spellCheck: "false",
|
1117
1125
|
...inputProps,
|
1118
1126
|
...props,
|
1119
1127
|
id,
|
@@ -1133,6 +1141,7 @@ var useAutocompleteInput = () => {
|
|
1133
1141
|
)
|
1134
1142
|
}),
|
1135
1143
|
[
|
1144
|
+
isOpen,
|
1136
1145
|
inputProps,
|
1137
1146
|
inputRef,
|
1138
1147
|
formControlProps,
|
package/dist/autocomplete.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/autocomplete.tsx","../src/autocomplete-icon.tsx","../src/use-autocomplete.tsx","../src/autocomplete-option-group.tsx","../src/autocomplete-option.tsx","../src/autocomplete-create.tsx","../src/autocomplete-empty.tsx","../src/autocomplete-list.tsx"],"sourcesContent":["import type { CSSUIObject, HTMLUIProps, ThemeProps } from \"@yamada-ui/core\"\nimport {\n ui,\n forwardRef,\n useMultiComponentStyle,\n omitThemeProps,\n} from \"@yamada-ui/core\"\nimport { Popover, PopoverTrigger } from \"@yamada-ui/popover\"\nimport { Portal } from \"@yamada-ui/portal\"\nimport type { PortalProps } from \"@yamada-ui/portal\"\nimport { cx } from \"@yamada-ui/utils\"\nimport type { AutocompleteIconProps } from \"./autocomplete-icon\"\nimport { AutocompleteIcon } from \"./autocomplete-icon\"\nimport type { AutocompleteListProps } from \"./autocomplete-list\"\nimport { AutocompleteList } from \"./autocomplete-list\"\nimport type { UseAutocompleteProps } from \"./use-autocomplete\"\nimport {\n AutocompleteProvider,\n useAutocomplete,\n AutocompleteDescendantsContextProvider,\n useAutocompleteContext,\n useAutocompleteInput,\n} from \"./use-autocomplete\"\nimport { AutocompleteCreate, AutocompleteEmpty } from \"./\"\n\ntype AutocompleteOptions = {\n /**\n * The border color when the input is focused.\n */\n focusBorderColor?: string\n /**\n * The border color when the input is invalid.\n */\n errorBorderColor?: string\n /**\n * Props for autocomplete container element.\n */\n containerProps?: Omit<HTMLUIProps<\"div\">, \"children\">\n /**\n * Props for autocomplete list element.\n */\n listProps?: Omit<AutocompleteListProps, \"children\">\n /**\n * Props for autocomplete input element.\n */\n inputProps?: HTMLUIProps<\"input\">\n /**\n * Props for autocomplete icon element.\n */\n iconProps?: AutocompleteIconProps\n /**\n * Props to be forwarded to the portal component.\n *\n * @default '{ isDisabled: true }'\n *\n */\n portalProps?: Omit<PortalProps, \"children\">\n}\n\nexport type AutocompleteProps = ThemeProps<\"Autocomplete\"> &\n Omit<UseAutocompleteProps<string>, \"maxSelectValues\" | \"omitSelectedValues\"> &\n AutocompleteOptions\n\n/**\n * `Autocomplete` is a component used to display suggestions in response to user text input.\n *\n * @see Docs https://yamada-ui.com/components/forms/autocomplete\n */\nexport const Autocomplete = forwardRef<AutocompleteProps, \"input\">(\n (props, ref) => {\n const [styles, mergedProps] = useMultiComponentStyle(\"Autocomplete\", props)\n let {\n className,\n defaultValue = \"\",\n color,\n h,\n height,\n minH,\n minHeight,\n containerProps,\n listProps,\n inputProps,\n iconProps,\n portalProps = { isDisabled: true },\n children,\n ...computedProps\n } = omitThemeProps(mergedProps)\n\n const {\n descendants,\n formControlProps,\n getPopoverProps,\n getContainerProps,\n getFieldProps,\n allowCreate,\n isEmpty,\n inputValue,\n computedChildren,\n ...rest\n } = useAutocomplete({ ...computedProps, defaultValue, children })\n\n h ??= height\n minH ??= minHeight\n\n const css: CSSUIObject = {\n w: \"100%\",\n h: \"fit-content\",\n color,\n ...styles.container,\n }\n\n return (\n <AutocompleteDescendantsContextProvider value={descendants}>\n <AutocompleteProvider\n value={{\n ...rest,\n formControlProps,\n inputValue,\n allowCreate,\n isEmpty,\n styles,\n }}\n >\n <Popover {...getPopoverProps()}>\n <ui.div\n className={cx(\"ui-autocomplete\", className)}\n __css={css}\n {...getContainerProps(containerProps)}\n >\n <ui.div\n className=\"ui-autocomplete__inner\"\n __css={{ position: \"relative\", ...styles.inner }}\n >\n <AutocompleteField\n h={h}\n minH={minH}\n inputProps={inputProps}\n {...getFieldProps({}, ref)}\n />\n\n <AutocompleteIcon {...iconProps} {...formControlProps} />\n </ui.div>\n\n {!isEmpty ? (\n <Portal {...portalProps}>\n <AutocompleteList {...listProps}>\n {allowCreate ? (\n <AutocompleteCreate />\n ) : (\n <AutocompleteEmpty />\n )}\n\n {children ?? computedChildren}\n </AutocompleteList>\n </Portal>\n ) : (\n <Portal {...portalProps}>\n <AutocompleteList {...listProps}>\n {allowCreate && inputValue ? (\n <AutocompleteCreate />\n ) : (\n <AutocompleteEmpty />\n )}\n </AutocompleteList>\n </Portal>\n )}\n </ui.div>\n </Popover>\n </AutocompleteProvider>\n </AutocompleteDescendantsContextProvider>\n )\n },\n)\n\ntype AutocompleteFieldProps = HTMLUIProps<\"div\"> &\n Pick<AutocompleteProps, \"inputProps\">\n\nconst AutocompleteField = forwardRef<AutocompleteFieldProps, \"input\">(\n ({ className, h, minH, placeholder, inputProps, ...rest }, ref) => {\n const { label, inputValue, styles } = useAutocompleteContext()\n\n const { getInputProps } = useAutocompleteInput()\n\n const css: CSSUIObject = {\n pe: \"2rem\",\n h,\n minH,\n display: \"flex\",\n alignItems: \"center\",\n ...styles.field,\n cursor: \"text\",\n }\n\n return (\n <PopoverTrigger>\n <ui.div\n className={cx(\"ui-autocomplete__field\", className)}\n __css={css}\n {...rest}\n >\n <ui.input\n className=\"ui-autocomplete__input\"\n display=\"inline-block\"\n w=\"100%\"\n placeholder={placeholder}\n {...getInputProps(\n { ...inputProps, value: inputValue || label || \"\" },\n ref,\n )}\n />\n </ui.div>\n </PopoverTrigger>\n )\n },\n)\n","import type { CSSUIObject, HTMLUIProps } from \"@yamada-ui/core\"\nimport { ui, forwardRef } from \"@yamada-ui/core\"\nimport { ChevronIcon, CloseIcon } from \"@yamada-ui/icon\"\nimport { useClickable } from \"@yamada-ui/use-clickable\"\nimport { cx, getValidChildren, isValidElement } from \"@yamada-ui/utils\"\nimport type { FC, HTMLAttributes } from \"react\"\nimport { cloneElement, useRef } from \"react\"\nimport { useAutocompleteContext } from \"./use-autocomplete\"\n\nexport type AutocompleteIconProps = HTMLUIProps<\"div\">\n\nexport const AutocompleteIcon = forwardRef<AutocompleteIconProps, \"div\">(\n ({ className, children, __css, ...rest }, ref) => {\n const { styles } = useAutocompleteContext()\n\n const css: CSSUIObject = {\n position: \"absolute\",\n top: \"50%\",\n transform: \"translateY(-50%)\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n pointerEvents: \"none\",\n cursor: \"pointer\",\n ...styles.icon,\n ...__css,\n }\n\n const validChildren = getValidChildren(children)\n\n const cloneChildren = validChildren.map((child) =>\n cloneElement(child, {\n focusable: false,\n \"aria-hidden\": true,\n style: {\n maxWidth: \"1em\",\n maxHeight: \"1em\",\n color: \"currentColor\",\n },\n }),\n )\n\n return (\n <ui.div\n ref={ref}\n className={cx(\"ui-autocomplete__icon\", className)}\n __css={css}\n {...rest}\n >\n {isValidElement(children) ? cloneChildren : <ChevronIcon />}\n </ui.div>\n )\n },\n)\n\nexport type AutocompleteClearIconProps = AutocompleteIconProps & {\n disabled?: boolean\n}\n\nexport const AutocompleteClearIcon: FC<AutocompleteClearIconProps> = ({\n className,\n children,\n ...props\n}) => {\n const ref = useRef<HTMLDivElement>(null)\n const { styles } = useAutocompleteContext()\n\n const isDisabled = props.disabled\n\n const rest = useClickable({\n ref,\n isDisabled,\n ...(props as HTMLAttributes<HTMLElement>),\n })\n\n return (\n <AutocompleteIcon\n aria-label=\"Clear value\"\n className={cx(\"ui-autocomplete__icon--clear\", className)}\n __css={styles.clearIcon}\n {...rest}\n >\n {children ?? <CloseIcon w=\"0.5em\" h=\"0.5em\" />}\n </AutocompleteIcon>\n )\n}\n\nexport type AutocompleteItemIconProps = HTMLUIProps<\"span\">\n\nexport const AutocompleteItemIcon = forwardRef<\n AutocompleteItemIconProps,\n \"span\"\n>(({ className, ...rest }, ref) => {\n const { styles } = useAutocompleteContext()\n\n const css: CSSUIObject = {\n flexShrink: 0,\n display: \"inline-flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n fontSize: \"0.85em\",\n ...styles.itemIcon,\n }\n\n return (\n <ui.span\n ref={ref}\n className={cx(\"ui-autocomplete__item-icon\", className)}\n __css={css}\n {...rest}\n />\n )\n})\n","import type { CSSUIObject, HTMLUIProps, UIPropGetter } from \"@yamada-ui/core\"\nimport { layoutStyleProperties } from \"@yamada-ui/core\"\nimport type { FormControlOptions } from \"@yamada-ui/form-control\"\nimport {\n getFormControlProperties,\n useFormControlProps,\n} from \"@yamada-ui/form-control\"\nimport type { MotionUIPropGetter } from \"@yamada-ui/motion\"\nimport { popoverProperties, type PopoverProps } from \"@yamada-ui/popover\"\nimport { useControllableState } from \"@yamada-ui/use-controllable-state\"\nimport { createDescendant } from \"@yamada-ui/use-descendant\"\nimport { useDisclosure } from \"@yamada-ui/use-disclosure\"\nimport { useOutsideClick } from \"@yamada-ui/use-outside-click\"\nimport type { Dict, Union, DOMAttributes } from \"@yamada-ui/utils\"\nimport {\n ariaAttr,\n createContext,\n dataAttr,\n funcAll,\n getEventRelatedTarget,\n handlerAll,\n isArray,\n isContains,\n isHTMLElement,\n mergeRefs,\n omitObject,\n pickObject,\n splitObject,\n useUnmountEffect,\n useUpdateEffect,\n getValidChildren,\n isUndefined,\n} from \"@yamada-ui/utils\"\nimport type {\n ChangeEvent,\n CSSProperties,\n Dispatch,\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n RefObject,\n SetStateAction,\n} from \"react\"\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\"\nimport type { AutocompleteOptionProps } from \"./\"\nimport { AutocompleteOption, AutocompleteOptionGroup } from \"./\"\n\ntype AutocompleteBaseItem = Omit<\n AutocompleteOptionProps,\n \"value\" | \"children\"\n> & {\n label?: string\n}\n\ntype AutocompleteItemWithValue = AutocompleteBaseItem & {\n value?: string\n}\n\ntype AutocompleteItemWithItems = AutocompleteBaseItem & {\n items?: AutocompleteItemWithValue[]\n}\n\nexport type AutocompleteItem =\n | AutocompleteItemWithValue\n | AutocompleteItemWithItems\n\nconst kanaMap: Record<string, string> = {\n ガ: \"ガ\",\n ギ: \"ギ\",\n グ: \"グ\",\n ゲ: \"ゲ\",\n ゴ: \"ゴ\",\n ザ: \"ザ\",\n ジ: \"ジ\",\n ズ: \"ズ\",\n ゼ: \"ゼ\",\n ゾ: \"ゾ\",\n ダ: \"ダ\",\n ヂ: \"ヂ\",\n ヅ: \"ヅ\",\n デ: \"デ\",\n ド: \"ド\",\n バ: \"バ\",\n ビ: \"ビ\",\n ブ: \"ブ\",\n ベ: \"ベ\",\n ボ: \"ボ\",\n パ: \"パ\",\n ピ: \"ピ\",\n プ: \"プ\",\n ペ: \"ペ\",\n ポ: \"ポ\",\n ヴ: \"ヴ\",\n ヷ: \"ヷ\",\n ヺ: \"ヺ\",\n ア: \"ア\",\n イ: \"イ\",\n ウ: \"ウ\",\n エ: \"エ\",\n オ: \"オ\",\n カ: \"カ\",\n キ: \"キ\",\n ク: \"ク\",\n ケ: \"ケ\",\n コ: \"コ\",\n サ: \"サ\",\n シ: \"シ\",\n ス: \"ス\",\n セ: \"セ\",\n ソ: \"ソ\",\n タ: \"タ\",\n チ: \"チ\",\n ツ: \"ツ\",\n テ: \"テ\",\n ト: \"ト\",\n ナ: \"ナ\",\n ニ: \"ニ\",\n ヌ: \"ヌ\",\n ネ: \"ネ\",\n ノ: \"ノ\",\n ハ: \"ハ\",\n ヒ: \"ヒ\",\n フ: \"フ\",\n ヘ: \"ヘ\",\n ホ: \"ホ\",\n マ: \"マ\",\n ミ: \"ミ\",\n ム: \"ム\",\n メ: \"メ\",\n モ: \"モ\",\n ヤ: \"ヤ\",\n ユ: \"ユ\",\n ヨ: \"ヨ\",\n ラ: \"ラ\",\n リ: \"リ\",\n ル: \"ル\",\n レ: \"レ\",\n ロ: \"ロ\",\n ワ: \"ワ\",\n ヲ: \"ヲ\",\n ン: \"ン\",\n ァ: \"ァ\",\n ィ: \"ィ\",\n ゥ: \"ゥ\",\n ェ: \"ェ\",\n ォ: \"ォ\",\n ッ: \"ッ\",\n ャ: \"ャ\",\n ュ: \"ュ\",\n ョ: \"ョ\",\n \"。\": \"。\",\n \"、\": \"、\",\n ー: \"ー\",\n \"「\": \"「\",\n \"」\": \"」\",\n \"・\": \"・\",\n}\n\nconst defaultFormat = (value: string) => {\n value = value.replace(/[!-~]/g, (v) =>\n String.fromCharCode(v.charCodeAt(0) - 0xfee0),\n )\n\n const reg = new RegExp(\"(\" + Object.keys(kanaMap).join(\"|\") + \")\", \"g\")\n\n value = value\n .replace(reg, (v) => kanaMap[v])\n .replace(/゙/g, \"゛\")\n .replace(/゚/g, \"゜\")\n\n value = value.toUpperCase()\n\n return value\n}\n\nconst flattenItems = (\n items: AutocompleteItem[],\n): AutocompleteItemWithValue[] => {\n const filterItems = (\n items: AutocompleteItem[] | AutocompleteItemWithValue[],\n ): (AutocompleteItemWithValue | AutocompleteItemWithValue[])[] =>\n items\n .map((item) => {\n const { isDisabled, isFocusable } = item\n const trulyDisabled = !!isDisabled && !isFocusable\n\n if (trulyDisabled) return\n\n if (\"items\" in item) {\n return filterItems(item.items ?? [])\n } else {\n return item as AutocompleteItemWithValue\n }\n })\n .filter(Boolean) as (\n | AutocompleteItemWithValue\n | AutocompleteItemWithValue[]\n )[]\n\n return filterItems(items).flat(Infinity) as AutocompleteItemWithValue[]\n}\n\nconst isTargetOption = (target: EventTarget | null): boolean =>\n isHTMLElement(target) &&\n !!target?.getAttribute(\"role\")?.startsWith(\"autocomplete-item\")\n\nexport const {\n DescendantsContextProvider: AutocompleteDescendantsContextProvider,\n useDescendantsContext: useAutocompleteDescendantsContext,\n useDescendants: useAutocompleteDescendants,\n useDescendant: useAutocompleteDescendant,\n} = createDescendant<HTMLElement>()\n\ntype AutocompleteContext = Omit<\n UseAutocompleteProps,\n \"value\" | \"defaultValue\" | \"onChange\" | \"onCreate\"\n> & {\n value: string | string[]\n label: string | string[] | undefined\n inputValue: string\n isHit: boolean\n isEmpty: boolean\n isAllSelected: boolean\n onChange: (newValue: string) => void\n onChangeLabel: (newValue: string, runOmit?: boolean) => void\n pickOptions: (value: string) => void\n rebirthOptions: (runFocus?: boolean) => void\n inputProps: DOMAttributes\n isOpen: boolean\n onOpen: () => void\n onClose: () => void\n onCreate: () => void\n onFocusFirst: () => void\n onFocusLast: () => void\n onFocusNext: (index?: number) => void\n onFocusPrev: (index?: number) => void\n focusedIndex: number\n setFocusedIndex: Dispatch<SetStateAction<number>>\n listRef: RefObject<HTMLUListElement>\n inputRef: RefObject<HTMLInputElement>\n formControlProps: Record<string, any>\n styles: Record<string, CSSUIObject>\n}\n\nexport const [AutocompleteProvider, useAutocompleteContext] =\n createContext<AutocompleteContext>({\n name: \"AutocompleteContext\",\n errorMessage: `useAutocompleteContext returned is 'undefined'. Seems you forgot to wrap the components in \"<Autocomplete />\" or \"<MultiAutocomplete />\"`,\n })\n\ntype UseAutocompleteBaseProps<T extends string | string[] = string> = Omit<\n PopoverProps,\n | \"initialFocusRef\"\n | \"closeOnButton\"\n | \"trigger\"\n | \"autoFocus\"\n | \"restoreFocus\"\n | \"openDelay\"\n | \"closeDelay\"\n> &\n FormControlOptions & {\n /**\n * The value of the autocomplete.\n */\n value?: T\n /**\n * The initial value of the autocomplete.\n */\n defaultValue?: T\n /**\n * The callback invoked when value state changes.\n */\n onChange?: (value: T) => void\n /**\n * The callback invoked when search input.\n */\n onSearch?: (ev: ChangeEvent<HTMLInputElement>) => void\n /**\n * The callback invoked when autocomplete option created.\n */\n onCreate?: (newItem: AutocompleteItem, newItems: AutocompleteItem[]) => void\n /**\n * Function to format text when search input.\n */\n format?: (value: string) => string\n /**\n * The position to be inserted when the autocomplete option is created.\n *\n * @default 'first'\n */\n insertPositionItem?: Union<\"first\" | \"last\"> | [string, \"first\" | \"last\"]\n /**\n * If `true`, the list element will be closed when value is selected.\n *\n * @default true\n */\n closeOnSelect?: boolean\n /**\n * The message displayed when the search yields no hits.\n *\n * @default 'No results found'\n */\n emptyMessage?: string\n /**\n * If `true`, enables the creation of autocomplete option.\n *\n * @default false\n */\n allowCreate?: boolean\n /**\n * If `true`, enables the free input.\n */\n allowFree?: boolean\n /**\n * If `true`, the selected item(s) will be excluded from the list.\n *\n * @default false\n */\n omitSelectedValues?: boolean\n /**\n * The maximum selectable value.\n */\n maxSelectValues?: number\n /**\n * Props for select option element.\n */\n optionProps?: Omit<AutocompleteOptionProps, \"value\" | \"children\">\n /**\n * If provided, generate options based on items.\n */\n items?: AutocompleteItem[]\n }\n\nexport type UseAutocompleteProps<T extends string | string[] = string> = Omit<\n HTMLUIProps<\"input\">,\n | keyof UseAutocompleteBaseProps\n | \"list\"\n | \"disabled\"\n | \"required\"\n | \"readOnly\"\n | \"size\"\n> &\n UseAutocompleteBaseProps<T>\n\nexport const useAutocomplete = <T extends string | string[] = string>({\n value: valueProp,\n defaultValue,\n onChange: onChangeProp,\n onCreate: onCreateProp,\n onSearch: onSearchProp,\n closeOnSelect = true,\n omitSelectedValues = false,\n maxSelectValues,\n closeOnBlur = true,\n closeOnEsc = true,\n allowCreate = false,\n allowFree = false,\n insertPositionItem = \"first\",\n emptyMessage = \"No results found\",\n format = defaultFormat,\n placement = \"bottom-start\",\n duration = 0.2,\n optionProps,\n placeholder,\n items,\n children,\n isOpen: isOpenProp,\n defaultIsOpen,\n onOpen: onOpenProp,\n onClose: onCloseProp,\n ...rest\n}: UseAutocompleteProps<T>) => {\n rest = useFormControlProps(rest)\n\n const { id } = rest\n\n const formControlProps = pickObject(\n rest,\n getFormControlProperties({ omit: [\"aria-readonly\"] }),\n )\n const [containerProps, inputProps] = splitObject<Dict, string>(\n omitObject(rest, [...popoverProperties, \"onKeyDown\", \"onFocus\"]),\n layoutStyleProperties,\n )\n\n const descendants = useAutocompleteDescendants()\n\n const containerRef = useRef<HTMLDivElement>(null)\n const listRef = useRef<HTMLUListElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n const timeoutIds = useRef<Set<any>>(new Set([]))\n const isComposition = useRef<boolean>(false)\n const prevValue = useRef<T | undefined>(undefined)\n\n const [resolvedItems, setResolvedItems] = useState<\n AutocompleteItem[] | undefined\n >(items)\n const [value, setValue] = useControllableState({\n value: valueProp,\n defaultValue,\n onChange: onChangeProp,\n })\n const [label, setLabel] = useState<T | undefined>(undefined)\n const [inputValue, setInputValue] = useState<string>(\"\")\n const [focusedIndex, setFocusedIndex] = useState<number>(-1)\n const [isAllSelected, setIsAllSelected] = useState<boolean>(false)\n const [isHit, setIsHit] = useState<boolean>(true)\n const {\n isOpen,\n onOpen: onInternalOpen,\n onClose,\n } = useDisclosure({\n isOpen: isOpenProp,\n defaultIsOpen,\n onOpen: onOpenProp,\n onClose: onCloseProp,\n })\n const isFocused = focusedIndex > -1\n const isCreate = focusedIndex === -2 && allowCreate\n const isMulti = isArray(value)\n const isEmptyValue = !isMulti ? !value : !value.length\n\n const [firstInsertPositionItem, secondInsertPositionItem] = useMemo(() => {\n if (isArray(insertPositionItem)) {\n return insertPositionItem\n } else {\n return [insertPositionItem, \"first\"]\n }\n }, [insertPositionItem])\n\n if (allowCreate && !isUndefined(children)) {\n console.warn(\n `${!isMulti ? \"Autocomplete\" : \"MultiAutocomplete\"}: ${\n !isMulti ? \"Autocomplete\" : \"MultiAutocomplete\"\n } internally prefers 'children'. If 'allowCreate' is true, it will not be reflected correctly. If want to reflect, please set 'items' in props.`,\n )\n }\n\n const selectedValues = descendants.enabledValues(\n ({ node }) => isMulti && value.includes(node.dataset.value ?? \"\"),\n )\n const selectedIndexes = selectedValues.map(({ index }) => index)\n const enabledValues = descendants.enabledValues(\n ({ node, index }) =>\n \"target\" in node.dataset && !selectedIndexes.includes(index),\n )\n\n const validChildren = getValidChildren(children)\n\n const computedChildren = resolvedItems?.map((item, i) => {\n if (\"value\" in item) {\n const { label, value, ...props } = item\n\n return (\n <AutocompleteOption key={i} value={value} {...props}>\n {label}\n </AutocompleteOption>\n )\n } else if (\"items\" in item) {\n const { label, items = [], ...props } = item\n\n return (\n <AutocompleteOptionGroup\n key={i}\n label={label as string}\n {...(props as HTMLUIProps<\"ul\">)}\n >\n {items.map(({ label, value, ...props }, i) => (\n <AutocompleteOption key={i} value={value} {...props}>\n {label}\n </AutocompleteOption>\n ))}\n </AutocompleteOptionGroup>\n )\n }\n })\n\n const isEmpty = !validChildren.length && !computedChildren?.length\n\n const onOpen = useCallback(() => {\n if (formControlProps.disabled || formControlProps.readOnly) return\n\n if (!allowCreate && (isEmpty || isAllSelected)) return\n\n onInternalOpen()\n\n if (inputRef.current) inputRef.current.focus()\n }, [allowCreate, formControlProps, isAllSelected, isEmpty, onInternalOpen])\n\n const onFocusFirst = useCallback(() => {\n const id = setTimeout(() => {\n if (isEmpty || isAllSelected) return\n\n const first = descendants.enabledFirstValue(\n ({ node }) => \"target\" in node.dataset,\n )\n\n if (!first) return\n\n if (!isMulti || !omitSelectedValues) {\n setFocusedIndex(first.index)\n } else {\n if (selectedIndexes.includes(first.index)) {\n const enabledFirst = enabledValues[0]\n\n setFocusedIndex(enabledFirst.index)\n } else {\n setFocusedIndex(first.index)\n }\n }\n })\n\n timeoutIds.current.add(id)\n }, [\n descendants,\n enabledValues,\n isAllSelected,\n isEmpty,\n isMulti,\n omitSelectedValues,\n selectedIndexes,\n ])\n\n const onFocusLast = useCallback(() => {\n const id = setTimeout(() => {\n if (isEmpty || isAllSelected) return\n\n const last = descendants.enabledLastValue(\n ({ node }) => \"target\" in node.dataset,\n )\n\n if (!last) return\n\n if (!isMulti || !omitSelectedValues) {\n setFocusedIndex(last.index)\n } else {\n if (selectedIndexes.includes(last.index)) {\n const enabledLast = enabledValues.reverse()[0]\n\n setFocusedIndex(enabledLast.index)\n } else {\n setFocusedIndex(last.index)\n }\n }\n })\n\n timeoutIds.current.add(id)\n }, [\n descendants,\n enabledValues,\n isAllSelected,\n isEmpty,\n isMulti,\n omitSelectedValues,\n selectedIndexes,\n ])\n\n const onFocusSelected = useCallback(() => {\n const id = setTimeout(() => {\n const values = descendants.enabledValues()\n\n const selected = values.find(({ node }) =>\n !isMulti\n ? node.dataset.value === value\n : value.includes(node.dataset.value ?? \"\"),\n )\n\n if (selected) setFocusedIndex(selected.index)\n })\n\n timeoutIds.current.add(id)\n }, [descendants, isMulti, value])\n\n const onFocusNext = useCallback(\n (index: number = focusedIndex) => {\n const id = setTimeout(() => {\n const next = descendants.enabledNextValue(\n index,\n ({ node }) => \"target\" in node.dataset,\n )\n\n if (!next) return\n\n if (!isMulti || !omitSelectedValues) {\n setFocusedIndex(next.index)\n } else {\n if (selectedIndexes.includes(next.index)) {\n const enabledNext =\n enabledValues.find(({ index }) => next.index < index) ??\n enabledValues[0]\n\n setFocusedIndex(enabledNext.index)\n } else {\n setFocusedIndex(next.index)\n }\n }\n })\n\n timeoutIds.current.add(id)\n },\n [\n descendants,\n enabledValues,\n focusedIndex,\n isMulti,\n omitSelectedValues,\n selectedIndexes,\n ],\n )\n\n const onFocusPrev = useCallback(\n (index: number = focusedIndex) => {\n const id = setTimeout(() => {\n const prev = descendants.enabledPrevValue(\n index,\n ({ node }) => \"target\" in node.dataset,\n )\n\n if (!prev) return\n\n if (!isMulti || !omitSelectedValues) {\n setFocusedIndex(prev.index)\n } else {\n if (selectedIndexes.includes(prev.index)) {\n const enabledPrev =\n enabledValues.reverse().find(({ index }) => index < prev.index) ??\n enabledValues[0]\n\n setFocusedIndex(enabledPrev.index)\n } else {\n setFocusedIndex(prev.index)\n }\n }\n })\n\n timeoutIds.current.add(id)\n },\n [\n descendants,\n enabledValues,\n focusedIndex,\n isMulti,\n omitSelectedValues,\n selectedIndexes,\n ],\n )\n\n const onFocusFirstOrSelected =\n isEmptyValue || omitSelectedValues ? onFocusFirst : onFocusSelected\n const onFocusLastOrSelected =\n isEmptyValue || omitSelectedValues ? onFocusLast : onFocusSelected\n\n const pickOptions = useCallback(\n (value: string) => {\n const values = descendants.values()\n\n let isHit = false\n let isFocused = false\n\n values.forEach(({ node, index }) => {\n if (format(node.textContent ?? \"\").includes(value)) {\n isHit = true\n\n const isDisabled = \"disabled\" in node.dataset\n\n node.dataset.target = \"\"\n\n if (!isFocused && !isDisabled) {\n isFocused = true\n\n setFocusedIndex(index)\n }\n } else {\n delete node.dataset.target\n }\n })\n\n setIsHit(isHit)\n },\n [descendants, format],\n )\n\n const rebirthOptions = useCallback(\n (runFocus = true) => {\n const values = descendants.values()\n\n values.forEach(({ node }) => {\n node.dataset.target = \"\"\n })\n\n if (runFocus) onFocusFirst()\n\n setIsHit(true)\n },\n [descendants, onFocusFirst],\n )\n\n const getSelectedValues = useCallback(\n (newValues: string | string[]) => {\n const enabledValues = descendants.enabledValues()\n\n const resolvedValues = isArray(newValues) ? newValues : [newValues]\n\n const selectedValues = resolvedValues\n .map((value) => {\n const { node } =\n enabledValues.find(({ node }) => node.dataset.value === value) ?? {}\n\n if (node) {\n const el = Array.from(node.children).find(\n (child) => child.getAttribute(\"data-label\") !== null,\n )\n\n return el?.textContent ?? undefined\n } else {\n return allowFree ? value : undefined\n }\n })\n .filter(Boolean) as string[]\n\n return selectedValues\n },\n [allowFree, descendants],\n )\n\n const onChangeLabel = useCallback(\n (newValue: string, runOmit: boolean = true) => {\n const selectedValues = getSelectedValues(newValue)\n\n setLabel((prev) => {\n if (!isMulti) {\n return selectedValues[0] as T\n } else {\n selectedValues.forEach((selectedValue) => {\n const isSelected =\n isArray(prev) && prev.includes(selectedValue ?? \"\")\n\n if (!isSelected) {\n prev = [...(isArray(prev) ? prev : []), selectedValue] as T\n } else if (runOmit) {\n prev = (\n isArray(prev)\n ? prev.filter((value) => value !== selectedValue)\n : undefined\n ) as T\n }\n })\n\n return prev\n }\n })\n },\n [getSelectedValues, isMulti],\n )\n\n const onChange = useCallback(\n (newValue: string, runRebirth: boolean = true) => {\n setValue((prev) => {\n let next: T\n\n if (!isArray(prev)) {\n next = newValue as T\n } else {\n const isSelected = prev.includes(newValue)\n\n if (!isSelected) {\n next = [...prev, newValue] as T\n } else {\n next = prev.filter((value) => value !== newValue) as T\n }\n }\n\n prevValue.current = next\n return next\n })\n\n const isHit =\n descendants\n .values()\n .filter(({ node }) =>\n format(node.textContent ?? \"\").includes(newValue),\n ).length > 0\n\n onChangeLabel(newValue)\n\n if (allowFree || isHit) setInputValue(\"\")\n\n if (isMulti && runRebirth) rebirthOptions(false)\n },\n [\n allowFree,\n isMulti,\n onChangeLabel,\n rebirthOptions,\n setValue,\n descendants,\n format,\n ],\n )\n\n const onSelect = useCallback(() => {\n let enabledValue = descendants.value(focusedIndex)\n\n if (\"disabled\" in (enabledValue?.node.dataset ?? {}))\n enabledValue = undefined\n\n if (!enabledValue) return\n\n const value = enabledValue.node.dataset.value ?? \"\"\n\n onChange(value)\n\n if (closeOnSelect) onClose()\n\n if (omitSelectedValues) onFocusNext()\n }, [\n closeOnSelect,\n descendants,\n focusedIndex,\n omitSelectedValues,\n onChange,\n onClose,\n onFocusNext,\n ])\n\n const onSearch = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (!isOpen) onOpen()\n\n onSearchProp?.(ev)\n\n const value = ev.target.value\n const computedValue = format(value)\n\n if (computedValue) {\n pickOptions(computedValue)\n } else {\n rebirthOptions()\n }\n\n setInputValue(value)\n },\n [isOpen, onOpen, format, onSearchProp, pickOptions, rebirthOptions],\n )\n\n const onCompositionStart = useCallback(() => {\n isComposition.current = true\n }, [])\n\n const onCompositionEnd = useCallback(() => {\n isComposition.current = false\n }, [])\n\n const onCreate = useCallback(() => {\n if (!listRef.current) return\n\n const newItem: AutocompleteItem = { label: inputValue, value: inputValue }\n\n let newItems: AutocompleteItem[] = []\n\n if (resolvedItems) newItems = resolvedItems\n\n if (firstInsertPositionItem === \"first\") {\n newItems = [newItem, ...newItems]\n } else if (firstInsertPositionItem === \"last\") {\n newItems = [...newItems, newItem]\n } else {\n const i = newItems.findIndex(\n ({ label }) => label === firstInsertPositionItem,\n )\n\n const targetItem = newItems[i]\n\n if (i !== -1 && \"items\" in targetItem) {\n if (secondInsertPositionItem === \"first\") {\n targetItem.items = [newItem, ...(targetItem.items ?? [])]\n } else {\n targetItem.items = [...(targetItem.items ?? []), newItem]\n }\n\n newItems[i] = targetItem\n } else {\n console.warn(\n `${\n !isMulti ? \"Autocomplete\" : \"MultiAutocomplete\"\n }: '${firstInsertPositionItem}' specified in insertPositionItem does not exist in the option group.`,\n )\n }\n }\n\n setResolvedItems(newItems)\n onChange(inputValue)\n rebirthOptions(false)\n\n const index = flattenItems(newItems).findIndex(\n ({ value }) => value === inputValue,\n )\n\n setFocusedIndex(index)\n\n onCreateProp?.(newItem, newItems)\n }, [\n inputValue,\n resolvedItems,\n firstInsertPositionItem,\n onChange,\n rebirthOptions,\n onCreateProp,\n secondInsertPositionItem,\n isMulti,\n ])\n\n const onClick = useCallback(() => {\n if (isOpen) {\n if (inputRef.current) inputRef.current.focus()\n } else {\n onOpen()\n\n onFocusFirstOrSelected()\n }\n }, [isOpen, onFocusFirstOrSelected, onOpen])\n\n const onFocus = useCallback(() => {\n if (isOpen) return\n\n onOpen()\n\n onFocusFirstOrSelected()\n }, [isOpen, onFocusFirstOrSelected, onOpen])\n\n const onBlur = useCallback(\n (ev: FocusEvent<HTMLDivElement>) => {\n const relatedTarget = getEventRelatedTarget(ev)\n\n if (isContains(containerRef.current, relatedTarget)) return\n\n if (!closeOnBlur && isHit) return\n\n if (allowFree && !!inputValue) onChange(inputValue, false)\n\n setInputValue(\"\")\n\n if (isOpen) onClose()\n },\n [closeOnBlur, isHit, isOpen, inputValue, allowFree, onClose, onChange],\n )\n\n const onDelete = useCallback(() => {\n if (!isMulti) {\n onChange(\"\")\n } else {\n onChange(value[value.length - 1])\n }\n\n if (!isOpen) onFocus()\n }, [isMulti, isOpen, onChange, onFocus, value])\n\n const onClear = useCallback(\n (ev: MouseEvent<HTMLDivElement>) => {\n ev.stopPropagation()\n\n prevValue.current = [] as unknown as T\n setValue([] as unknown as T)\n setLabel(undefined)\n setInputValue(\"\")\n rebirthOptions()\n\n if (isOpen && inputRef.current) inputRef.current.focus()\n },\n [isOpen, setLabel, setInputValue, setValue, rebirthOptions],\n )\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent<HTMLDivElement>) => {\n if (ev.key === \" \") ev.key = ev.code\n\n if (formControlProps.disabled || formControlProps.readOnly) return\n if (isComposition.current) return\n\n const enabledDelete = label === inputValue || !inputValue.length\n\n const actions: Record<string, Function | undefined> = {\n ArrowDown: isFocused\n ? () => onFocusNext()\n : !isOpen\n ? funcAll(onOpen, onFocusFirstOrSelected)\n : undefined,\n ArrowUp: isFocused\n ? () => onFocusPrev()\n : !isOpen\n ? funcAll(onOpen, onFocusLastOrSelected)\n : undefined,\n Space: isCreate\n ? onCreate\n : isFocused\n ? onSelect\n : !isOpen\n ? funcAll(onOpen, onFocusFirstOrSelected)\n : undefined,\n Enter: isCreate\n ? onCreate\n : isFocused\n ? onSelect\n : !isOpen\n ? funcAll(onOpen, onFocusFirstOrSelected)\n : allowFree && isMulti\n ? () => {\n if (inputValue) onChange(inputValue)\n\n setFocusedIndex(0)\n }\n : undefined,\n Home: isOpen ? onFocusFirst : undefined,\n End: isOpen ? onFocusLast : undefined,\n Escape: closeOnEsc ? onClose : undefined,\n Backspace: !isEmptyValue && enabledDelete ? onDelete : undefined,\n }\n\n const action = actions[ev.key]\n\n if (!action) return\n\n ev.preventDefault()\n ev.stopPropagation()\n\n action(ev)\n },\n [\n allowFree,\n formControlProps,\n label,\n inputValue,\n onOpen,\n isFocused,\n isMulti,\n onFocusFirstOrSelected,\n onFocusNext,\n onFocusLastOrSelected,\n onFocusPrev,\n isCreate,\n onCreate,\n onSelect,\n isOpen,\n onFocusFirst,\n onFocusLast,\n closeOnEsc,\n onClose,\n isEmptyValue,\n onDelete,\n onChange,\n ],\n )\n\n useEffect(() => {\n if (!isMulti) return\n\n if (!omitSelectedValues && isUndefined(maxSelectValues)) return\n\n const isAll = value.length > 0 && value.length === descendants.count()\n const isMax = value.length === maxSelectValues\n\n if (isAll || isMax) {\n onClose()\n setIsAllSelected(true)\n } else {\n setIsAllSelected(false)\n }\n }, [\n omitSelectedValues,\n value,\n descendants,\n isMulti,\n onClose,\n maxSelectValues,\n ])\n\n useEffect(() => {\n if (isMulti) {\n if (\n JSON.stringify(prevValue.current ?? []) === JSON.stringify(value ?? [])\n )\n return\n\n const label = getSelectedValues(value)\n\n setLabel(label as T)\n } else {\n if (prevValue.current === value) return\n\n onChangeLabel(value, false)\n }\n }, [isMulti, value, onChangeLabel, getSelectedValues])\n\n useUpdateEffect(() => {\n if (isOpen || allowFree) return\n\n setFocusedIndex(-1)\n setInputValue(\"\")\n }, [isOpen])\n\n useUpdateEffect(() => {\n if (!isHit) setFocusedIndex(-2)\n }, [isHit])\n\n useUnmountEffect(() => {\n timeoutIds.current.forEach((id) => clearTimeout(id))\n timeoutIds.current.clear()\n })\n\n useOutsideClick({\n ref: containerRef,\n handler: onClose,\n enabled: isOpen && (closeOnBlur || !isHit),\n })\n\n const getPopoverProps = useCallback(\n (props?: PopoverProps): PopoverProps => ({\n matchWidth: true,\n ...rest,\n ...props,\n isOpen,\n onOpen,\n onClose,\n placement,\n duration,\n trigger: \"never\",\n closeOnButton: false,\n closeOnBlur,\n }),\n [duration, closeOnBlur, isOpen, onClose, onOpen, placement, rest],\n )\n\n const getContainerProps: UIPropGetter = useCallback(\n (props = {}, ref = null) => ({\n ref: mergeRefs(containerRef, ref),\n ...containerProps,\n ...props,\n ...formControlProps,\n onClick: handlerAll(props.onClick, rest.onClick, onClick),\n onBlur: handlerAll(props.onBlur, rest.onBlur, onBlur),\n }),\n\n [containerProps, formControlProps, onBlur, onClick, rest],\n )\n\n const getFieldProps: UIPropGetter = useCallback(\n (props = {}, ref = null) => ({\n ref,\n tabIndex: -1,\n ...props,\n ...formControlProps,\n placeholder,\n \"data-active\": dataAttr(isOpen),\n \"aria-expanded\": dataAttr(isOpen),\n onFocus: handlerAll(props.onFocus, rest.onFocus, onFocus),\n onKeyDown: handlerAll(props.onKeyDown, rest.onKeyDown, onKeyDown),\n }),\n [formControlProps, placeholder, isOpen, rest, onFocus, onKeyDown],\n )\n\n return {\n id,\n descendants,\n value,\n label,\n inputValue,\n isHit,\n isEmpty,\n computedChildren,\n focusedIndex,\n omitSelectedValues,\n closeOnSelect,\n allowCreate,\n allowFree,\n emptyMessage,\n isOpen,\n isAllSelected,\n listRef,\n inputRef,\n optionProps,\n formControlProps,\n setFocusedIndex,\n onChangeLabel,\n onChange,\n onSearch,\n onCreate,\n onClear,\n onCompositionStart,\n onCompositionEnd,\n pickOptions,\n rebirthOptions,\n onOpen,\n onClose,\n onFocusFirst,\n onFocusLast,\n onFocusSelected,\n onFocusNext,\n onFocusPrev,\n getPopoverProps,\n getContainerProps,\n getFieldProps,\n inputProps,\n }\n}\n\nexport type UseAutocompleteReturn = ReturnType<typeof useAutocomplete>\n\nexport const useAutocompleteInput = () => {\n const {\n id,\n inputRef,\n onSearch,\n onCompositionStart,\n onCompositionEnd,\n isAllSelected,\n formControlProps,\n inputProps,\n } = useAutocompleteContext()\n\n useUpdateEffect(() => {\n if (isAllSelected && inputRef.current) inputRef.current.blur()\n }, [isAllSelected])\n\n const getInputProps: UIPropGetter<\"input\"> = useCallback(\n (props = {}, ref = null) => ({\n ref: mergeRefs(inputRef, ref),\n ...formControlProps,\n ...inputProps,\n ...props,\n id,\n cursor: formControlProps.readOnly ? \"default\" : \"text\",\n pointerEvents:\n formControlProps.disabled || isAllSelected ? \"none\" : \"auto\",\n tabIndex: isAllSelected ? -1 : 0,\n onChange: handlerAll(props.onChange, onSearch),\n onCompositionStart: handlerAll(\n props.onCompositionStart,\n inputProps.onCompositionStart,\n onCompositionStart,\n ),\n onCompositionEnd: handlerAll(\n props.onCompositionEnd,\n inputProps.onCompositionEnd,\n onCompositionEnd,\n ),\n }),\n [\n inputProps,\n inputRef,\n formControlProps,\n id,\n isAllSelected,\n onSearch,\n onCompositionStart,\n onCompositionEnd,\n ],\n )\n\n return {\n getInputProps,\n }\n}\n\nexport type UseAutocompleteInputReturn = ReturnType<typeof useAutocompleteInput>\n\nexport const useAutocompleteList = () => {\n const { focusedIndex, isOpen, listRef, rebirthOptions } =\n useAutocompleteContext()\n\n const descendants = useAutocompleteDescendantsContext()\n\n const beforeFocusedIndex = useRef<number>(-1)\n const selectedValue = descendants.value(focusedIndex)\n\n const onAnimationComplete = useCallback(() => {\n if (!isOpen) rebirthOptions(false)\n }, [isOpen, rebirthOptions])\n\n useEffect(() => {\n if (!listRef.current || !selectedValue) return\n\n if (beforeFocusedIndex.current === selectedValue.index) return\n\n const parent = listRef.current\n const child = selectedValue.node\n\n const parentHeight = parent.clientHeight\n const viewTop = parent.scrollTop\n const viewBottom = viewTop + parentHeight\n\n const childHeight = child.clientHeight\n const childTop = child.offsetTop\n const childBottom = childTop + childHeight\n\n const isInView = viewTop <= childTop && childBottom <= viewBottom\n\n const isScrollBottom = beforeFocusedIndex.current < selectedValue.index\n\n if (!isInView) {\n if (childBottom <= parentHeight) {\n listRef.current.scrollTo({ top: 0 })\n } else {\n if (!isScrollBottom) {\n listRef.current.scrollTo({ top: childTop + 1 })\n } else {\n listRef.current.scrollTo({ top: childBottom - parentHeight })\n }\n }\n }\n\n beforeFocusedIndex.current = selectedValue.index\n }, [listRef, selectedValue])\n\n useUpdateEffect(() => {\n if (!isOpen) beforeFocusedIndex.current = -1\n }, [isOpen])\n\n const getListProps: MotionUIPropGetter<\"ul\"> = useCallback(\n (props = {}, ref = null) => ({\n as: \"ul\",\n ref: mergeRefs(listRef, ref),\n role: \"select\",\n tabIndex: -1,\n ...props,\n onAnimationComplete: handlerAll(\n props.onAnimationComplete,\n onAnimationComplete,\n ),\n }),\n [listRef, onAnimationComplete],\n )\n\n return {\n getListProps,\n }\n}\n\nexport type UseAutocompleteOptionGroupProps = HTMLUIProps<\"ul\"> & {\n /**\n * The label of the autocomplete option group.\n */\n label: string\n}\n\nexport const useAutocompleteOptionGroup = ({\n label,\n ...rest\n}: UseAutocompleteOptionGroupProps) => {\n const { value, omitSelectedValues } = useAutocompleteContext()\n\n const isMulti = isArray(value)\n\n const descendants = useAutocompleteDescendantsContext()\n\n const values = descendants.values()\n const selectedValues =\n isMulti && omitSelectedValues\n ? descendants.values(({ node }) =>\n value.includes(node.dataset.value ?? \"\"),\n )\n : []\n const selectedIndexes = selectedValues.map(({ index }) => index)\n const childValues = values.filter(\n ({ node, index }) =>\n node.parentElement?.dataset.label === label &&\n !selectedIndexes.includes(index) &&\n \"target\" in node.dataset,\n )\n\n const isEmpty = !childValues.length\n\n const computedRest = splitObject(rest, layoutStyleProperties)\n\n const getContainerProps: UIPropGetter = useCallback(\n (props = {}, ref = null) => {\n const style: CSSProperties = {\n border: \"0px\",\n clip: \"rect(0px, 0px, 0px, 0px)\",\n height: \"1px\",\n width: \"1px\",\n margin: \"-1px\",\n padding: \"0px\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n position: \"absolute\",\n }\n\n return {\n ref,\n ...props,\n ...computedRest[0],\n style: isEmpty ? style : undefined,\n \"data-label\": label,\n role: \"autocomplete-group-container\",\n }\n },\n [computedRest, isEmpty, label],\n )\n\n const getGroupProps: UIPropGetter = useCallback(\n (props = {}, ref = null) => ({\n ref,\n ...props,\n ...computedRest[1],\n \"data-label\": label,\n role: \"autocomplete-group\",\n }),\n [computedRest, label],\n )\n\n return {\n label,\n getContainerProps,\n getGroupProps,\n }\n}\n\nexport type UseAutocompleteOptionGroupReturn = ReturnType<\n typeof useAutocompleteOptionGroup\n>\n\nexport type UseAutocompleteOptionProps = Omit<\n HTMLUIProps<\"li\">,\n \"value\" | \"children\"\n> & {\n /**\n * The value of the select option.\n */\n value?: string\n /**\n * The label of the select option.\n */\n children?: string\n /**\n * If `true`, the select option will be disabled.\n *\n * @default false\n */\n isDisabled?: boolean\n /**\n * If `true`, the select option will be focusable.\n *\n * @default false\n */\n isFocusable?: boolean\n /**\n * If `true`, the list element will be closed when selected.\n *\n * @default false\n */\n closeOnSelect?: boolean\n}\n\nexport const useAutocompleteOption = (props: UseAutocompleteOptionProps) => {\n const {\n value,\n omitSelectedValues,\n onChange,\n onChangeLabel,\n focusedIndex,\n setFocusedIndex,\n onClose,\n closeOnSelect: generalCloseOnSelect,\n optionProps,\n inputRef,\n onFocusNext,\n } = useAutocompleteContext()\n\n let {\n icon: customIcon,\n isDisabled,\n isFocusable,\n closeOnSelect: customCloseOnSelect,\n children,\n value: optionValue,\n ...computedProps\n } = { ...optionProps, ...props }\n\n const trulyDisabled = !!isDisabled && !isFocusable\n\n const itemRef = useRef<HTMLLIElement>(null)\n\n const { index, register, descendants } = useAutocompleteDescendant({\n disabled: trulyDisabled,\n })\n\n const values = descendants.values()\n const frontValues = values.slice(0, index)\n\n const isMulti = isArray(value)\n const isDuplicated = !isMulti\n ? frontValues.some(({ node }) => node.dataset.value === (optionValue ?? \"\"))\n : false\n\n const isSelected =\n !isDuplicated &&\n (!isMulti\n ? (optionValue ?? \"\") === value\n : value.includes(optionValue ?? \"\"))\n const isTarget = \"target\" in (itemRef.current?.dataset ?? {})\n const isFocused = index === focusedIndex\n\n const onClick = useCallback(\n (ev: MouseEvent<HTMLLIElement>) => {\n ev.stopPropagation()\n\n if (isDisabled) {\n if (inputRef.current) inputRef.current.focus()\n\n return\n }\n\n if (!isTargetOption(ev.currentTarget)) {\n if (inputRef.current) inputRef.current.focus()\n\n return\n }\n\n setFocusedIndex(index)\n\n onChange(optionValue ?? \"\")\n\n if (inputRef.current) inputRef.current.focus()\n\n if (customCloseOnSelect ?? generalCloseOnSelect) onClose()\n\n if (omitSelectedValues) onFocusNext(index)\n },\n [\n onFocusNext,\n omitSelectedValues,\n isDisabled,\n optionValue,\n setFocusedIndex,\n index,\n onChange,\n customCloseOnSelect,\n generalCloseOnSelect,\n onClose,\n inputRef,\n ],\n )\n\n useUpdateEffect(() => {\n if (isSelected) onChangeLabel(optionValue ?? \"\", false)\n }, [optionValue])\n\n const getOptionProps: UIPropGetter<\"li\"> = useCallback(\n (props = {}, ref = null) => {\n const style: CSSProperties = {\n border: \"0px\",\n clip: \"rect(0px, 0px, 0px, 0px)\",\n height: \"1px\",\n width: \"1px\",\n margin: \"-1px\",\n padding: \"0px\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n position: \"absolute\",\n }\n\n return {\n ref: mergeRefs(itemRef, ref, register),\n ...computedProps,\n ...props,\n role: \"autocomplete-item\",\n tabIndex: -1,\n style:\n !isTarget || (omitSelectedValues && isSelected) ? style : undefined,\n \"data-target\": dataAttr(true),\n \"data-value\": optionValue ?? \"\",\n \"data-focus\": dataAttr(isFocused),\n \"data-disabled\": dataAttr(isDisabled),\n \"aria-checked\": ariaAttr(isSelected),\n \"aria-disabled\": ariaAttr(isDisabled),\n onClick: handlerAll(computedProps.onClick, props.onClick, onClick),\n }\n },\n [\n optionValue,\n computedProps,\n isDisabled,\n isFocused,\n isSelected,\n isTarget,\n omitSelectedValues,\n onClick,\n register,\n ],\n )\n\n return {\n isSelected,\n isFocused,\n customIcon,\n children,\n getOptionProps,\n }\n}\n\nexport type UseAutocompleteOptionReturn = ReturnType<\n typeof useAutocompleteOption\n>\n\nexport const useAutocompleteCreate = () => {\n const { isHit, onCreate } = useAutocompleteContext()\n\n const getCreateProps: UIPropGetter<\"li\"> = useCallback(\n (props = {}, ref = null) => {\n const style: CSSProperties = {\n border: \"0px\",\n clip: \"rect(0px, 0px, 0px, 0px)\",\n height: \"1px\",\n width: \"1px\",\n margin: \"-1px\",\n padding: \"0px\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n position: \"absolute\",\n }\n\n return {\n ref,\n ...props,\n tabIndex: -1,\n style: isHit ? style : undefined,\n \"data-focus\": dataAttr(!isHit),\n onClick: handlerAll(props.onClick, onCreate),\n }\n },\n [isHit, onCreate],\n )\n\n return { getCreateProps }\n}\n\nexport type UseAutocompleteCreateReturn = ReturnType<\n typeof useAutocompleteCreate\n>\n\nexport const useAutocompleteEmpty = () => {\n const { isHit, isEmpty } = useAutocompleteContext()\n\n const getEmptyProps: UIPropGetter<\"li\"> = useCallback(\n (props = {}, ref = null) => {\n const style: CSSProperties = {\n border: \"0px\",\n clip: \"rect(0px, 0px, 0px, 0px)\",\n height: \"1px\",\n width: \"1px\",\n margin: \"-1px\",\n padding: \"0px\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n position: \"absolute\",\n }\n\n return {\n ref,\n ...props,\n tabIndex: -1,\n style: isHit && !isEmpty ? style : undefined,\n }\n },\n [isHit, isEmpty],\n )\n\n return { getEmptyProps }\n}\n\nexport type UseAutocompleteEmptyReturn = ReturnType<typeof useAutocompleteEmpty>\n","import type { HTMLUIProps } from \"@yamada-ui/core\"\nimport { ui, forwardRef } from \"@yamada-ui/core\"\nimport { cx } from \"@yamada-ui/utils\"\nimport type { UseAutocompleteOptionGroupProps } from \"./use-autocomplete\"\nimport {\n useAutocompleteContext,\n useAutocompleteOptionGroup,\n} from \"./use-autocomplete\"\n\ntype AutocompleteOptionGroupOptions = UseAutocompleteOptionGroupProps\n\nexport type AutocompleteOptionGroupProps = HTMLUIProps<\"ul\"> &\n AutocompleteOptionGroupOptions\n\nexport const AutocompleteOptionGroup = forwardRef<\n AutocompleteOptionGroupProps,\n \"ul\"\n>(\n (\n { className, color, h, height, minH, minHeight, children, ...rest },\n ref,\n ) => {\n const { styles } = useAutocompleteContext()\n const { label, getContainerProps, getGroupProps } =\n useAutocompleteOptionGroup(rest)\n\n h ??= height\n minH ??= minHeight\n\n return (\n <ui.li\n className={cx(\n \"ui-autocomplete__item\",\n \"ui-autocomplete__item--group\",\n className,\n )}\n __css={{ w: \"100%\", h: \"fit-content\", color }}\n {...getContainerProps()}\n >\n <ui.span\n className=\"ui-autocomplete__group-label\"\n __css={styles.groupLabel}\n lineClamp={1}\n >\n {label}\n </ui.span>\n\n <ui.ul\n {...getGroupProps({}, ref)}\n className=\"ui-autocomplete__group\"\n __css={{ h, minH, ...styles.group }}\n >\n {children}\n </ui.ul>\n </ui.li>\n )\n },\n)\n","import type { CSSUIObject } from \"@yamada-ui/core\"\nimport { ui, forwardRef } from \"@yamada-ui/core\"\nimport { cx } from \"@yamada-ui/utils\"\nimport type { FC, ReactElement } from \"react\"\nimport { AutocompleteItemIcon } from \"./autocomplete-icon\"\nimport type { UseAutocompleteOptionProps } from \"./use-autocomplete\"\nimport {\n useAutocompleteContext,\n useAutocompleteOption,\n} from \"./use-autocomplete\"\n\ntype AutocompleteOptionOptions = {\n /**\n * The autocomplete option icon to use.\n */\n icon?: ReactElement\n}\n\nexport type AutocompleteOptionProps = UseAutocompleteOptionProps &\n AutocompleteOptionOptions\n\nexport const AutocompleteOption = forwardRef<AutocompleteOptionProps, \"li\">(\n ({ className, icon, ...rest }, ref) => {\n const { styles } = useAutocompleteContext()\n const { isSelected, customIcon, children, getOptionProps } =\n useAutocompleteOption(rest)\n\n icon ??= customIcon\n\n const css: CSSUIObject = {\n textDecoration: \"none\",\n color: \"inherit\",\n userSelect: \"none\",\n display: \"flex\",\n width: \"100%\",\n alignItems: \"center\",\n textAlign: \"start\",\n flex: \"0 0 auto\",\n outline: 0,\n gap: \"0.75rem\",\n ...styles.item,\n }\n\n return (\n <ui.li\n className={cx(\"ui-autocomplete__item\", className)}\n __css={css}\n {...getOptionProps({}, ref)}\n >\n {icon !== null ? (\n <AutocompleteItemIcon opacity={isSelected ? 1 : 0}>\n {icon || <CheckIcon />}\n </AutocompleteItemIcon>\n ) : null}\n\n <ui.span style={{ flex: 1 }} data-label>\n {children}\n </ui.span>\n </ui.li>\n )\n },\n)\n\nconst CheckIcon: FC = () => (\n <svg viewBox=\"0 0 14 14\" width=\"1em\" height=\"1em\">\n <polygon\n fill=\"currentColor\"\n points=\"5.5 11.9993304 14 3.49933039 12.5 2 5.5 8.99933039 1.5 4.9968652 0 6.49933039\"\n />\n </svg>\n)\n","import type { CSSUIObject, HTMLUIProps } from \"@yamada-ui/core\"\nimport { ui, forwardRef } from \"@yamada-ui/core\"\nimport { cx, runIfFunc } from \"@yamada-ui/utils\"\nimport type { FC, ReactElement } from \"react\"\nimport { AutocompleteItemIcon } from \"./autocomplete-icon\"\nimport {\n useAutocompleteContext,\n useAutocompleteCreate,\n} from \"./use-autocomplete\"\n\ntype AutocompleteCreateOptions = {\n /**\n * The autocomplete create option icon to use.\n */\n icon?: ReactElement\n /**\n * The label of the autocomplete create option.\n */\n children?: string | ((inputValue: string) => string)\n}\n\nexport type AutocompleteCreateProps = Omit<HTMLUIProps<\"li\">, \"children\"> &\n AutocompleteCreateOptions\n\nexport const AutocompleteCreate = forwardRef<AutocompleteCreateProps, \"li\">(\n ({ className, icon, children, ...rest }, ref) => {\n const { inputValue, styles } = useAutocompleteContext()\n const { getCreateProps } = useAutocompleteCreate()\n\n children ??= inputValue\n\n const css: CSSUIObject = {\n textDecoration: \"none\",\n color: \"inherit\",\n userSelect: \"none\",\n display: \"flex\",\n width: \"100%\",\n alignItems: \"center\",\n textAlign: \"start\",\n flex: \"0 0 auto\",\n outline: 0,\n gap: \"0.75rem\",\n ...styles.item,\n }\n\n return (\n <ui.li\n className={cx(\"ui-autocomplete__item--create\", className)}\n __css={css}\n {...getCreateProps(rest, ref)}\n >\n {icon !== null ? (\n <AutocompleteItemIcon>{icon || <PlusIcon />}</AutocompleteItemIcon>\n ) : null}\n {icon ? (\n <ui.span style={{ pointerEvents: \"none\", flex: 1 }} lineClamp={1}>\n {runIfFunc(children, inputValue)}\n </ui.span>\n ) : (\n runIfFunc(children, inputValue)\n )}\n </ui.li>\n )\n },\n)\n\nconst PlusIcon: FC = () => (\n <svg viewBox=\"0 0 45.402 45.402\" width=\"1em\" height=\"1em\">\n <path\n fill=\"currentColor\"\n d=\"M41.267,18.557H26.832V4.134C26.832,1.851,24.99,0,22.707,0c-2.283,0-4.124,1.851-4.124,4.135v14.432H4.141 c-2.283,0-4.139,1.851-4.138,4.135c-0.001,1.141,0.46,2.187,1.207,2.934c0.748,0.749,1.78,1.222,2.92,1.222h14.453V41.27 c0,1.142,0.453,2.176,1.201,2.922c0.748,0.748,1.777,1.211,2.919,1.211c2.282,0,4.129-1.851,4.129-4.133V26.857h14.435 c2.283,0,4.134-1.867,4.133-4.15C45.399,20.425,43.548,18.557,41.267,18.557z\"\n />\n </svg>\n)\n","import type { CSSUIObject, HTMLUIProps } from \"@yamada-ui/core\"\nimport { ui, forwardRef } from \"@yamada-ui/core\"\nimport { cx } from \"@yamada-ui/utils\"\nimport type { FC, ReactElement } from \"react\"\nimport { AutocompleteItemIcon } from \"./autocomplete-icon\"\nimport {\n useAutocompleteContext,\n useAutocompleteEmpty,\n} from \"./use-autocomplete\"\n\ntype AutocompleteEmptyOptions = {\n /**\n * The autocomplete empty option icon to use.\n */\n icon?: ReactElement\n /**\n * The label of the autocomplete empty option.\n */\n children?: string\n}\n\nexport type AutocompleteEmptyProps = Omit<HTMLUIProps<\"li\">, \"children\"> &\n AutocompleteEmptyOptions\n\nexport const AutocompleteEmpty = forwardRef<AutocompleteEmptyProps, \"li\">(\n ({ className, icon, children, ...rest }, ref) => {\n const { emptyMessage, styles } = useAutocompleteContext()\n const { getEmptyProps } = useAutocompleteEmpty()\n\n children ??= emptyMessage\n\n const css: CSSUIObject = {\n textDecoration: \"none\",\n color: \"inherit\",\n userSelect: \"none\",\n display: \"flex\",\n width: \"100%\",\n alignItems: \"center\",\n textAlign: \"start\",\n flex: \"0 0 auto\",\n outline: 0,\n gap: \"0.75rem\",\n pointerEvents: \"none\",\n ...styles.item,\n }\n\n return (\n <ui.li\n className={cx(\"ui-autocomplete__item--empty\", className)}\n __css={css}\n {...getEmptyProps(rest, ref)}\n >\n {icon !== null ? (\n <AutocompleteItemIcon>{icon || <MinusIcon />}</AutocompleteItemIcon>\n ) : null}\n {icon ? (\n <ui.span style={{ pointerEvents: \"none\", flex: 1 }} lineClamp={1}>\n {children}\n </ui.span>\n ) : (\n children\n )}\n </ui.li>\n )\n },\n)\n\nconst MinusIcon: FC = () => (\n <svg viewBox=\"0 0 448 512\" width=\"1em\" height=\"1em\">\n <path\n fill=\"currentColor\"\n d=\"M432 256c0 17.7-14.3 32-32 32L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l352 0c17.7 0 32 14.3 32 32z\"\n />\n </svg>\n)\n","import type { CSSUIObject, CSSUIProps } from \"@yamada-ui/core\"\nimport { forwardRef } from \"@yamada-ui/core\"\nimport type { MotionProps } from \"@yamada-ui/motion\"\nimport { PopoverContent } from \"@yamada-ui/popover\"\nimport { cx } from \"@yamada-ui/utils\"\nimport { useAutocompleteContext, useAutocompleteList } from \"./use-autocomplete\"\n\nexport type AutocompleteListProps = MotionProps<\"ul\">\n\nexport const AutocompleteList = forwardRef<AutocompleteListProps, \"ul\">(\n ({ className, w, width, minW, minWidth, ...rest }, ref) => {\n const { styles } = useAutocompleteContext()\n\n const { getListProps } = useAutocompleteList()\n\n w =\n w ?? width ?? ((styles.list?.w ?? styles.list?.width) as CSSUIProps[\"w\"])\n minW =\n minW ??\n minWidth ??\n ((styles.list?.minW ?? styles.list?.minWidth) as CSSUIProps[\"minW\"])\n\n const css: CSSUIObject = { ...styles.list }\n\n return (\n <PopoverContent\n className={cx(\"ui-autocomplete__list\", className)}\n w={w}\n minW={minW}\n __css={css}\n {...getListProps(rest, ref)}\n />\n )\n },\n)\n"],"mappings":"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","names":["import_core","import_popover","import_utils","import_core","import_utils","import_react","import_core","import_popover","import_utils","import_core","import_utils","import_jsx_runtime","import_core","import_utils","import_jsx_runtime","import_core","import_utils","import_jsx_runtime","import_core","import_utils","import_jsx_runtime","import_jsx_runtime","items","label","value","props","i","id","index","isHit","isFocused","enabledValues","selectedValues","node","import_jsx_runtime","import_jsx_runtime"]}
|
1
|
+
{"version":3,"sources":["../src/autocomplete.tsx","../src/autocomplete-icon.tsx","../src/use-autocomplete.tsx","../src/autocomplete-option-group.tsx","../src/autocomplete-option.tsx","../src/autocomplete-create.tsx","../src/autocomplete-empty.tsx","../src/autocomplete-list.tsx"],"sourcesContent":["import type { CSSUIObject, HTMLUIProps, ThemeProps } from \"@yamada-ui/core\"\nimport {\n ui,\n forwardRef,\n useMultiComponentStyle,\n omitThemeProps,\n} from \"@yamada-ui/core\"\nimport { Popover, PopoverTrigger } from \"@yamada-ui/popover\"\nimport { Portal } from \"@yamada-ui/portal\"\nimport type { PortalProps } from \"@yamada-ui/portal\"\nimport { cx } from \"@yamada-ui/utils\"\nimport type { AutocompleteIconProps } from \"./autocomplete-icon\"\nimport { AutocompleteIcon } from \"./autocomplete-icon\"\nimport type { AutocompleteListProps } from \"./autocomplete-list\"\nimport { AutocompleteList } from \"./autocomplete-list\"\nimport type { UseAutocompleteProps } from \"./use-autocomplete\"\nimport {\n AutocompleteProvider,\n useAutocomplete,\n AutocompleteDescendantsContextProvider,\n useAutocompleteContext,\n useAutocompleteInput,\n} from \"./use-autocomplete\"\nimport { AutocompleteCreate, AutocompleteEmpty } from \"./\"\n\ntype AutocompleteOptions = {\n /**\n * The border color when the input is focused.\n */\n focusBorderColor?: string\n /**\n * The border color when the input is invalid.\n */\n errorBorderColor?: string\n /**\n * Props for autocomplete container element.\n */\n containerProps?: Omit<HTMLUIProps<\"div\">, \"children\">\n /**\n * Props for autocomplete list element.\n */\n listProps?: Omit<AutocompleteListProps, \"children\">\n /**\n * Props for autocomplete input element.\n */\n inputProps?: HTMLUIProps<\"input\">\n /**\n * Props for autocomplete icon element.\n */\n iconProps?: AutocompleteIconProps\n /**\n * Props to be forwarded to the portal component.\n *\n * @default '{ isDisabled: true }'\n *\n */\n portalProps?: Omit<PortalProps, \"children\">\n}\n\nexport type AutocompleteProps = ThemeProps<\"Autocomplete\"> &\n Omit<UseAutocompleteProps<string>, \"maxSelectValues\" | \"omitSelectedValues\"> &\n AutocompleteOptions\n\n/**\n * `Autocomplete` is a component used to display suggestions in response to user text input.\n *\n * @see Docs https://yamada-ui.com/components/forms/autocomplete\n */\nexport const Autocomplete = forwardRef<AutocompleteProps, \"input\">(\n (props, ref) => {\n const [styles, mergedProps] = useMultiComponentStyle(\"Autocomplete\", props)\n let {\n className,\n defaultValue = \"\",\n color,\n h,\n height,\n minH,\n minHeight,\n containerProps,\n listProps,\n inputProps,\n iconProps,\n portalProps = { isDisabled: true },\n children,\n ...computedProps\n } = omitThemeProps(mergedProps)\n\n const {\n descendants,\n formControlProps,\n getPopoverProps,\n getContainerProps,\n getFieldProps,\n allowCreate,\n isEmpty,\n inputValue,\n computedChildren,\n ...rest\n } = useAutocomplete({ ...computedProps, defaultValue, children })\n\n h ??= height\n minH ??= minHeight\n\n const css: CSSUIObject = {\n w: \"100%\",\n h: \"fit-content\",\n color,\n ...styles.container,\n }\n\n return (\n <AutocompleteDescendantsContextProvider value={descendants}>\n <AutocompleteProvider\n value={{\n ...rest,\n formControlProps,\n inputValue,\n allowCreate,\n isEmpty,\n styles,\n }}\n >\n <Popover {...getPopoverProps()}>\n <ui.div\n className={cx(\"ui-autocomplete\", className)}\n __css={css}\n {...getContainerProps(containerProps)}\n >\n <ui.div\n className=\"ui-autocomplete__inner\"\n __css={{ position: \"relative\", ...styles.inner }}\n >\n <AutocompleteField\n h={h}\n minH={minH}\n inputProps={inputProps}\n {...getFieldProps({}, ref)}\n />\n\n <AutocompleteIcon {...iconProps} {...formControlProps} />\n </ui.div>\n\n {!isEmpty ? (\n <Portal {...portalProps}>\n <AutocompleteList {...listProps}>\n {allowCreate ? (\n <AutocompleteCreate />\n ) : (\n <AutocompleteEmpty />\n )}\n\n {children ?? computedChildren}\n </AutocompleteList>\n </Portal>\n ) : (\n <Portal {...portalProps}>\n <AutocompleteList {...listProps}>\n {allowCreate && inputValue ? (\n <AutocompleteCreate />\n ) : (\n <AutocompleteEmpty />\n )}\n </AutocompleteList>\n </Portal>\n )}\n </ui.div>\n </Popover>\n </AutocompleteProvider>\n </AutocompleteDescendantsContextProvider>\n )\n },\n)\n\ntype AutocompleteFieldProps = HTMLUIProps<\"div\"> &\n Pick<AutocompleteProps, \"inputProps\">\n\nconst AutocompleteField = forwardRef<AutocompleteFieldProps, \"input\">(\n ({ className, h, minH, placeholder, inputProps, ...rest }, ref) => {\n const { label, inputValue, styles } = useAutocompleteContext()\n\n const { getInputProps } = useAutocompleteInput()\n\n const css: CSSUIObject = {\n pe: \"2rem\",\n h,\n minH,\n display: \"flex\",\n alignItems: \"center\",\n ...styles.field,\n cursor: \"text\",\n }\n\n return (\n <PopoverTrigger>\n <ui.div\n className={cx(\"ui-autocomplete__field\", className)}\n __css={css}\n {...rest}\n >\n <ui.input\n className=\"ui-autocomplete__input\"\n display=\"inline-block\"\n w=\"100%\"\n placeholder={placeholder}\n {...getInputProps(\n { ...inputProps, value: inputValue || label || \"\" },\n ref,\n )}\n />\n </ui.div>\n </PopoverTrigger>\n )\n },\n)\n","import type { CSSUIObject, HTMLUIProps } from \"@yamada-ui/core\"\nimport { ui, forwardRef } from \"@yamada-ui/core\"\nimport { ChevronIcon, CloseIcon } from \"@yamada-ui/icon\"\nimport { useClickable } from \"@yamada-ui/use-clickable\"\nimport { cx, getValidChildren, isValidElement } from \"@yamada-ui/utils\"\nimport type { FC, HTMLAttributes } from \"react\"\nimport { cloneElement, useRef } from \"react\"\nimport { useAutocompleteContext } from \"./use-autocomplete\"\n\nexport type AutocompleteIconProps = HTMLUIProps<\"div\">\n\nexport const AutocompleteIcon = forwardRef<AutocompleteIconProps, \"div\">(\n ({ className, children, __css, ...rest }, ref) => {\n const { styles } = useAutocompleteContext()\n\n const css: CSSUIObject = {\n position: \"absolute\",\n top: \"50%\",\n transform: \"translateY(-50%)\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n pointerEvents: \"none\",\n cursor: \"pointer\",\n ...styles.icon,\n ...__css,\n }\n\n const validChildren = getValidChildren(children)\n\n const cloneChildren = validChildren.map((child) =>\n cloneElement(child, {\n focusable: false,\n \"aria-hidden\": true,\n style: {\n maxWidth: \"1em\",\n maxHeight: \"1em\",\n color: \"currentColor\",\n },\n }),\n )\n\n return (\n <ui.div\n ref={ref}\n className={cx(\"ui-autocomplete__icon\", className)}\n __css={css}\n {...rest}\n >\n {isValidElement(children) ? cloneChildren : <ChevronIcon />}\n </ui.div>\n )\n },\n)\n\nexport type AutocompleteClearIconProps = AutocompleteIconProps & {\n disabled?: boolean\n}\n\nexport const AutocompleteClearIcon: FC<AutocompleteClearIconProps> = ({\n className,\n children,\n ...props\n}) => {\n const ref = useRef<HTMLDivElement>(null)\n const { styles } = useAutocompleteContext()\n\n const isDisabled = props.disabled\n\n const rest = useClickable({\n ref,\n isDisabled,\n ...(props as HTMLAttributes<HTMLElement>),\n })\n\n return (\n <AutocompleteIcon\n aria-label=\"Clear value\"\n className={cx(\"ui-autocomplete__icon--clear\", className)}\n __css={styles.clearIcon}\n {...rest}\n >\n {children ?? <CloseIcon w=\"0.5em\" h=\"0.5em\" />}\n </AutocompleteIcon>\n )\n}\n\nexport type AutocompleteItemIconProps = HTMLUIProps<\"span\">\n\nexport const AutocompleteItemIcon = forwardRef<\n AutocompleteItemIconProps,\n \"span\"\n>(({ className, ...rest }, ref) => {\n const { styles } = useAutocompleteContext()\n\n const css: CSSUIObject = {\n flexShrink: 0,\n display: \"inline-flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n fontSize: \"0.85em\",\n ...styles.itemIcon,\n }\n\n return (\n <ui.span\n ref={ref}\n className={cx(\"ui-autocomplete__item-icon\", className)}\n __css={css}\n {...rest}\n />\n )\n})\n","import type { CSSUIObject, HTMLUIProps, UIPropGetter } from \"@yamada-ui/core\"\nimport { layoutStyleProperties } from \"@yamada-ui/core\"\nimport type { FormControlOptions } from \"@yamada-ui/form-control\"\nimport {\n formControlProperties,\n useFormControlProps,\n} from \"@yamada-ui/form-control\"\nimport type { MotionUIPropGetter } from \"@yamada-ui/motion\"\nimport { popoverProperties, type PopoverProps } from \"@yamada-ui/popover\"\nimport { useControllableState } from \"@yamada-ui/use-controllable-state\"\nimport { createDescendant } from \"@yamada-ui/use-descendant\"\nimport { useDisclosure } from \"@yamada-ui/use-disclosure\"\nimport { useOutsideClick } from \"@yamada-ui/use-outside-click\"\nimport type { Dict, Union, DOMAttributes } from \"@yamada-ui/utils\"\nimport {\n ariaAttr,\n createContext,\n dataAttr,\n funcAll,\n getEventRelatedTarget,\n handlerAll,\n isArray,\n isContains,\n isHTMLElement,\n mergeRefs,\n omitObject,\n pickObject,\n splitObject,\n useUnmountEffect,\n useUpdateEffect,\n getValidChildren,\n isUndefined,\n} from \"@yamada-ui/utils\"\nimport type {\n ChangeEvent,\n CSSProperties,\n Dispatch,\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n RefObject,\n SetStateAction,\n} from \"react\"\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\"\nimport type { AutocompleteOptionProps } from \"./\"\nimport { AutocompleteOption, AutocompleteOptionGroup } from \"./\"\n\ntype AutocompleteBaseItem = Omit<\n AutocompleteOptionProps,\n \"value\" | \"children\"\n> & {\n label?: string\n}\n\ntype AutocompleteItemWithValue = AutocompleteBaseItem & {\n value?: string\n}\n\ntype AutocompleteItemWithItems = AutocompleteBaseItem & {\n items?: AutocompleteItemWithValue[]\n}\n\nexport type AutocompleteItem =\n | AutocompleteItemWithValue\n | AutocompleteItemWithItems\n\nconst kanaMap: Record<string, string> = {\n ガ: \"ガ\",\n ギ: \"ギ\",\n グ: \"グ\",\n ゲ: \"ゲ\",\n ゴ: \"ゴ\",\n ザ: \"ザ\",\n ジ: \"ジ\",\n ズ: \"ズ\",\n ゼ: \"ゼ\",\n ゾ: \"ゾ\",\n ダ: \"ダ\",\n ヂ: \"ヂ\",\n ヅ: \"ヅ\",\n デ: \"デ\",\n ド: \"ド\",\n バ: \"バ\",\n ビ: \"ビ\",\n ブ: \"ブ\",\n ベ: \"ベ\",\n ボ: \"ボ\",\n パ: \"パ\",\n ピ: \"ピ\",\n プ: \"プ\",\n ペ: \"ペ\",\n ポ: \"ポ\",\n ヴ: \"ヴ\",\n ヷ: \"ヷ\",\n ヺ: \"ヺ\",\n ア: \"ア\",\n イ: \"イ\",\n ウ: \"ウ\",\n エ: \"エ\",\n オ: \"オ\",\n カ: \"カ\",\n キ: \"キ\",\n ク: \"ク\",\n ケ: \"ケ\",\n コ: \"コ\",\n サ: \"サ\",\n シ: \"シ\",\n ス: \"ス\",\n セ: \"セ\",\n ソ: \"ソ\",\n タ: \"タ\",\n チ: \"チ\",\n ツ: \"ツ\",\n テ: \"テ\",\n ト: \"ト\",\n ナ: \"ナ\",\n ニ: \"ニ\",\n ヌ: \"ヌ\",\n ネ: \"ネ\",\n ノ: \"ノ\",\n ハ: \"ハ\",\n ヒ: \"ヒ\",\n フ: \"フ\",\n ヘ: \"ヘ\",\n ホ: \"ホ\",\n マ: \"マ\",\n ミ: \"ミ\",\n ム: \"ム\",\n メ: \"メ\",\n モ: \"モ\",\n ヤ: \"ヤ\",\n ユ: \"ユ\",\n ヨ: \"ヨ\",\n ラ: \"ラ\",\n リ: \"リ\",\n ル: \"ル\",\n レ: \"レ\",\n ロ: \"ロ\",\n ワ: \"ワ\",\n ヲ: \"ヲ\",\n ン: \"ン\",\n ァ: \"ァ\",\n ィ: \"ィ\",\n ゥ: \"ゥ\",\n ェ: \"ェ\",\n ォ: \"ォ\",\n ッ: \"ッ\",\n ャ: \"ャ\",\n ュ: \"ュ\",\n ョ: \"ョ\",\n \"。\": \"。\",\n \"、\": \"、\",\n ー: \"ー\",\n \"「\": \"「\",\n \"」\": \"」\",\n \"・\": \"・\",\n}\n\nconst defaultFormat = (value: string) => {\n value = value.replace(/[!-~]/g, (v) =>\n String.fromCharCode(v.charCodeAt(0) - 0xfee0),\n )\n\n const reg = new RegExp(\"(\" + Object.keys(kanaMap).join(\"|\") + \")\", \"g\")\n\n value = value\n .replace(reg, (v) => kanaMap[v])\n .replace(/゙/g, \"゛\")\n .replace(/゚/g, \"゜\")\n\n value = value.toUpperCase()\n\n return value\n}\n\nconst flattenItems = (\n items: AutocompleteItem[],\n): AutocompleteItemWithValue[] => {\n const filterItems = (\n items: AutocompleteItem[] | AutocompleteItemWithValue[],\n ): (AutocompleteItemWithValue | AutocompleteItemWithValue[])[] =>\n items\n .map((item) => {\n const { isDisabled, isFocusable } = item\n const trulyDisabled = !!isDisabled && !isFocusable\n\n if (trulyDisabled) return\n\n if (\"items\" in item) {\n return filterItems(item.items ?? [])\n } else {\n return item as AutocompleteItemWithValue\n }\n })\n .filter(Boolean) as (\n | AutocompleteItemWithValue\n | AutocompleteItemWithValue[]\n )[]\n\n return filterItems(items).flat(Infinity) as AutocompleteItemWithValue[]\n}\n\nconst isTargetOption = (target: EventTarget | null): boolean =>\n isHTMLElement(target) &&\n !!target?.getAttribute(\"role\")?.startsWith(\"autocomplete-item\")\n\nexport const {\n DescendantsContextProvider: AutocompleteDescendantsContextProvider,\n useDescendantsContext: useAutocompleteDescendantsContext,\n useDescendants: useAutocompleteDescendants,\n useDescendant: useAutocompleteDescendant,\n} = createDescendant<HTMLElement>()\n\ntype AutocompleteContext = Omit<\n UseAutocompleteProps,\n \"value\" | \"defaultValue\" | \"onChange\" | \"onCreate\"\n> & {\n value: string | string[]\n label: string | string[] | undefined\n inputValue: string\n isHit: boolean\n isEmpty: boolean\n isAllSelected: boolean\n onChange: (newValue: string) => void\n onChangeLabel: (newValue: string, runOmit?: boolean) => void\n pickOptions: (value: string) => void\n rebirthOptions: (runFocus?: boolean) => void\n inputProps: DOMAttributes\n isOpen: boolean\n onOpen: () => void\n onClose: () => void\n onCreate: () => void\n onFocusFirst: () => void\n onFocusLast: () => void\n onFocusNext: (index?: number) => void\n onFocusPrev: (index?: number) => void\n focusedIndex: number\n setFocusedIndex: Dispatch<SetStateAction<number>>\n listRef: RefObject<HTMLUListElement>\n inputRef: RefObject<HTMLInputElement>\n formControlProps: Record<string, any>\n styles: Record<string, CSSUIObject>\n}\n\nexport const [AutocompleteProvider, useAutocompleteContext] =\n createContext<AutocompleteContext>({\n name: \"AutocompleteContext\",\n errorMessage: `useAutocompleteContext returned is 'undefined'. Seems you forgot to wrap the components in \"<Autocomplete />\" or \"<MultiAutocomplete />\"`,\n })\n\ntype UseAutocompleteBaseProps<T extends string | string[] = string> = Omit<\n PopoverProps,\n | \"initialFocusRef\"\n | \"closeOnButton\"\n | \"trigger\"\n | \"autoFocus\"\n | \"restoreFocus\"\n | \"openDelay\"\n | \"closeDelay\"\n> &\n FormControlOptions & {\n /**\n * The value of the autocomplete.\n */\n value?: T\n /**\n * The initial value of the autocomplete.\n */\n defaultValue?: T\n /**\n * The callback invoked when value state changes.\n */\n onChange?: (value: T) => void\n /**\n * The callback invoked when search input.\n */\n onSearch?: (ev: ChangeEvent<HTMLInputElement>) => void\n /**\n * The callback invoked when autocomplete option created.\n */\n onCreate?: (newItem: AutocompleteItem, newItems: AutocompleteItem[]) => void\n /**\n * Function to format text when search input.\n */\n format?: (value: string) => string\n /**\n * The position to be inserted when the autocomplete option is created.\n *\n * @default 'first'\n */\n insertPositionItem?: Union<\"first\" | \"last\"> | [string, \"first\" | \"last\"]\n /**\n * If `true`, the list element will be closed when value is selected.\n *\n * @default true\n */\n closeOnSelect?: boolean\n /**\n * The message displayed when the search yields no hits.\n *\n * @default 'No results found'\n */\n emptyMessage?: string\n /**\n * If `true`, enables the creation of autocomplete option.\n *\n * @default false\n */\n allowCreate?: boolean\n /**\n * If `true`, enables the free input.\n */\n allowFree?: boolean\n /**\n * If `true`, the selected item(s) will be excluded from the list.\n *\n * @default false\n */\n omitSelectedValues?: boolean\n /**\n * The maximum selectable value.\n */\n maxSelectValues?: number\n /**\n * Props for select option element.\n */\n optionProps?: Omit<AutocompleteOptionProps, \"value\" | \"children\">\n /**\n * If provided, generate options based on items.\n */\n items?: AutocompleteItem[]\n }\n\nexport type UseAutocompleteProps<T extends string | string[] = string> = Omit<\n HTMLUIProps<\"input\">,\n | keyof UseAutocompleteBaseProps\n | \"list\"\n | \"disabled\"\n | \"required\"\n | \"readOnly\"\n | \"size\"\n> &\n UseAutocompleteBaseProps<T>\n\nexport const useAutocomplete = <T extends string | string[] = string>({\n value: valueProp,\n defaultValue,\n onChange: onChangeProp,\n onCreate: onCreateProp,\n onSearch: onSearchProp,\n closeOnSelect = true,\n omitSelectedValues = false,\n maxSelectValues,\n closeOnBlur = true,\n closeOnEsc = true,\n allowCreate = false,\n allowFree = false,\n insertPositionItem = \"first\",\n emptyMessage = \"No results found\",\n format = defaultFormat,\n placement = \"bottom-start\",\n duration = 0.2,\n optionProps,\n placeholder,\n items,\n children,\n isOpen: isOpenProp,\n defaultIsOpen,\n onOpen: onOpenProp,\n onClose: onCloseProp,\n ...rest\n}: UseAutocompleteProps<T>) => {\n rest = useFormControlProps(rest)\n\n const { id } = rest\n\n const { \"aria-readonly\": _ariaReadonly, ...formControlProps } = pickObject(\n rest,\n formControlProperties,\n )\n const [containerProps, inputProps] = splitObject<Dict, string>(\n omitObject(rest, [...popoverProperties, \"onKeyDown\", \"onFocus\"]),\n layoutStyleProperties,\n )\n\n const descendants = useAutocompleteDescendants()\n\n const containerRef = useRef<HTMLDivElement>(null)\n const listRef = useRef<HTMLUListElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n const timeoutIds = useRef<Set<any>>(new Set([]))\n const isComposition = useRef<boolean>(false)\n const prevValue = useRef<T | undefined>(undefined)\n\n const [resolvedItems, setResolvedItems] = useState<\n AutocompleteItem[] | undefined\n >(items)\n const [value, setValue] = useControllableState({\n value: valueProp,\n defaultValue,\n onChange: onChangeProp,\n })\n const [label, setLabel] = useState<T | undefined>(undefined)\n const [inputValue, setInputValue] = useState<string>(\"\")\n const [focusedIndex, setFocusedIndex] = useState<number>(-1)\n const [isAllSelected, setIsAllSelected] = useState<boolean>(false)\n const [isHit, setIsHit] = useState<boolean>(true)\n const {\n isOpen,\n onOpen: onInternalOpen,\n onClose,\n } = useDisclosure({\n isOpen: isOpenProp,\n defaultIsOpen,\n onOpen: onOpenProp,\n onClose: onCloseProp,\n })\n const isFocused = focusedIndex > -1\n const isCreate = focusedIndex === -2 && allowCreate\n const isMulti = isArray(value)\n const isEmptyValue = !isMulti ? !value : !value.length\n\n const [firstInsertPositionItem, secondInsertPositionItem] = useMemo(() => {\n if (isArray(insertPositionItem)) {\n return insertPositionItem\n } else {\n return [insertPositionItem, \"first\"]\n }\n }, [insertPositionItem])\n\n if (allowCreate && !isUndefined(children)) {\n console.warn(\n `${!isMulti ? \"Autocomplete\" : \"MultiAutocomplete\"}: ${\n !isMulti ? \"Autocomplete\" : \"MultiAutocomplete\"\n } internally prefers 'children'. If 'allowCreate' is true, it will not be reflected correctly. If want to reflect, please set 'items' in props.`,\n )\n }\n\n const selectedValues = descendants.enabledValues(\n ({ node }) => isMulti && value.includes(node.dataset.value ?? \"\"),\n )\n const selectedIndexes = selectedValues.map(({ index }) => index)\n const enabledValues = descendants.enabledValues(\n ({ node, index }) =>\n \"target\" in node.dataset && !selectedIndexes.includes(index),\n )\n\n const validChildren = getValidChildren(children)\n\n const computedChildren = resolvedItems?.map((item, i) => {\n if (\"value\" in item) {\n const { label, value, ...props } = item\n\n return (\n <AutocompleteOption key={i} value={value} {...props}>\n {label}\n </AutocompleteOption>\n )\n } else if (\"items\" in item) {\n const { label, items = [], ...props } = item\n\n return (\n <AutocompleteOptionGroup\n key={i}\n label={label as string}\n {...(props as HTMLUIProps<\"ul\">)}\n >\n {items.map(({ label, value, ...props }, i) => (\n <AutocompleteOption key={i} value={value} {...props}>\n {label}\n </AutocompleteOption>\n ))}\n </AutocompleteOptionGroup>\n )\n }\n })\n\n const isEmpty = !validChildren.length && !computedChildren?.length\n\n const onOpen = useCallback(() => {\n if (formControlProps.disabled || formControlProps.readOnly) return\n\n if (!allowCreate && (isEmpty || isAllSelected)) return\n\n onInternalOpen()\n\n if (inputRef.current) inputRef.current.focus()\n }, [allowCreate, formControlProps, isAllSelected, isEmpty, onInternalOpen])\n\n const onFocusFirst = useCallback(() => {\n const id = setTimeout(() => {\n if (isEmpty || isAllSelected) return\n\n const first = descendants.enabledFirstValue(\n ({ node }) => \"target\" in node.dataset,\n )\n\n if (!first) return\n\n if (!isMulti || !omitSelectedValues) {\n setFocusedIndex(first.index)\n } else {\n if (selectedIndexes.includes(first.index)) {\n const enabledFirst = enabledValues[0]\n\n setFocusedIndex(enabledFirst.index)\n } else {\n setFocusedIndex(first.index)\n }\n }\n })\n\n timeoutIds.current.add(id)\n }, [\n descendants,\n enabledValues,\n isAllSelected,\n isEmpty,\n isMulti,\n omitSelectedValues,\n selectedIndexes,\n ])\n\n const onFocusLast = useCallback(() => {\n const id = setTimeout(() => {\n if (isEmpty || isAllSelected) return\n\n const last = descendants.enabledLastValue(\n ({ node }) => \"target\" in node.dataset,\n )\n\n if (!last) return\n\n if (!isMulti || !omitSelectedValues) {\n setFocusedIndex(last.index)\n } else {\n if (selectedIndexes.includes(last.index)) {\n const enabledLast = enabledValues.reverse()[0]\n\n setFocusedIndex(enabledLast.index)\n } else {\n setFocusedIndex(last.index)\n }\n }\n })\n\n timeoutIds.current.add(id)\n }, [\n descendants,\n enabledValues,\n isAllSelected,\n isEmpty,\n isMulti,\n omitSelectedValues,\n selectedIndexes,\n ])\n\n const onFocusSelected = useCallback(() => {\n const id = setTimeout(() => {\n const values = descendants.enabledValues()\n\n const selected = values.find(({ node }) =>\n !isMulti\n ? node.dataset.value === value\n : value.includes(node.dataset.value ?? \"\"),\n )\n\n if (selected) setFocusedIndex(selected.index)\n })\n\n timeoutIds.current.add(id)\n }, [descendants, isMulti, value])\n\n const onFocusNext = useCallback(\n (index: number = focusedIndex) => {\n const id = setTimeout(() => {\n const next = descendants.enabledNextValue(\n index,\n ({ node }) => \"target\" in node.dataset,\n )\n\n if (!next) return\n\n if (!isMulti || !omitSelectedValues) {\n setFocusedIndex(next.index)\n } else {\n if (selectedIndexes.includes(next.index)) {\n const enabledNext =\n enabledValues.find(({ index }) => next.index < index) ??\n enabledValues[0]\n\n setFocusedIndex(enabledNext.index)\n } else {\n setFocusedIndex(next.index)\n }\n }\n })\n\n timeoutIds.current.add(id)\n },\n [\n descendants,\n enabledValues,\n focusedIndex,\n isMulti,\n omitSelectedValues,\n selectedIndexes,\n ],\n )\n\n const onFocusPrev = useCallback(\n (index: number = focusedIndex) => {\n const id = setTimeout(() => {\n const prev = descendants.enabledPrevValue(\n index,\n ({ node }) => \"target\" in node.dataset,\n )\n\n if (!prev) return\n\n if (!isMulti || !omitSelectedValues) {\n setFocusedIndex(prev.index)\n } else {\n if (selectedIndexes.includes(prev.index)) {\n const enabledPrev =\n enabledValues.reverse().find(({ index }) => index < prev.index) ??\n enabledValues[0]\n\n setFocusedIndex(enabledPrev.index)\n } else {\n setFocusedIndex(prev.index)\n }\n }\n })\n\n timeoutIds.current.add(id)\n },\n [\n descendants,\n enabledValues,\n focusedIndex,\n isMulti,\n omitSelectedValues,\n selectedIndexes,\n ],\n )\n\n const onFocusFirstOrSelected =\n isEmptyValue || omitSelectedValues ? onFocusFirst : onFocusSelected\n const onFocusLastOrSelected =\n isEmptyValue || omitSelectedValues ? onFocusLast : onFocusSelected\n\n const pickOptions = useCallback(\n (value: string) => {\n const values = descendants.values()\n\n let isHit = false\n let isFocused = false\n\n values.forEach(({ node, index }) => {\n if (format(node.textContent ?? \"\").includes(value)) {\n isHit = true\n\n const isDisabled = \"disabled\" in node.dataset\n\n node.dataset.target = \"\"\n\n if (!isFocused && !isDisabled) {\n isFocused = true\n\n setFocusedIndex(index)\n }\n } else {\n delete node.dataset.target\n }\n })\n\n setIsHit(isHit)\n },\n [descendants, format],\n )\n\n const rebirthOptions = useCallback(\n (runFocus = true) => {\n const values = descendants.values()\n\n values.forEach(({ node }) => {\n node.dataset.target = \"\"\n })\n\n if (runFocus) onFocusFirst()\n\n setIsHit(true)\n },\n [descendants, onFocusFirst],\n )\n\n const getSelectedValues = useCallback(\n (newValues: string | string[]) => {\n const enabledValues = descendants.enabledValues()\n\n const resolvedValues = isArray(newValues) ? newValues : [newValues]\n\n const selectedValues = resolvedValues\n .map((value) => {\n const { node } =\n enabledValues.find(({ node }) => node.dataset.value === value) ?? {}\n\n if (node) {\n const el = Array.from(node.children).find(\n (child) => child.getAttribute(\"data-label\") !== null,\n )\n\n return el?.textContent ?? undefined\n } else {\n return allowFree ? value : undefined\n }\n })\n .filter(Boolean) as string[]\n\n return selectedValues\n },\n [allowFree, descendants],\n )\n\n const onChangeLabel = useCallback(\n (newValue: string, runOmit: boolean = true) => {\n const selectedValues = getSelectedValues(newValue)\n\n setLabel((prev) => {\n if (!isMulti) {\n return selectedValues[0] as T\n } else {\n selectedValues.forEach((selectedValue) => {\n const isSelected =\n isArray(prev) && prev.includes(selectedValue ?? \"\")\n\n if (!isSelected) {\n prev = [...(isArray(prev) ? prev : []), selectedValue] as T\n } else if (runOmit) {\n prev = (\n isArray(prev)\n ? prev.filter((value) => value !== selectedValue)\n : undefined\n ) as T\n }\n })\n\n return prev\n }\n })\n },\n [getSelectedValues, isMulti],\n )\n\n const onChange = useCallback(\n (newValue: string, runRebirth: boolean = true) => {\n setValue((prev) => {\n let next: T\n\n if (!isArray(prev)) {\n next = newValue as T\n } else {\n const isSelected = prev.includes(newValue)\n\n if (!isSelected) {\n next = [...prev, newValue] as T\n } else {\n next = prev.filter((value) => value !== newValue) as T\n }\n }\n\n prevValue.current = next\n return next\n })\n\n const isHit =\n descendants\n .values()\n .filter(({ node }) =>\n format(node.textContent ?? \"\").includes(newValue),\n ).length > 0\n\n onChangeLabel(newValue)\n\n if (allowFree || isHit) setInputValue(\"\")\n\n if (isMulti && runRebirth) rebirthOptions(false)\n },\n [\n allowFree,\n isMulti,\n onChangeLabel,\n rebirthOptions,\n setValue,\n descendants,\n format,\n ],\n )\n\n const onSelect = useCallback(() => {\n let enabledValue = descendants.value(focusedIndex)\n\n if (\"disabled\" in (enabledValue?.node.dataset ?? {}))\n enabledValue = undefined\n\n if (!enabledValue) return\n\n const value = enabledValue.node.dataset.value ?? \"\"\n\n onChange(value)\n\n if (closeOnSelect) onClose()\n\n if (omitSelectedValues) onFocusNext()\n }, [\n closeOnSelect,\n descendants,\n focusedIndex,\n omitSelectedValues,\n onChange,\n onClose,\n onFocusNext,\n ])\n\n const onSearch = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (!isOpen) onOpen()\n\n onSearchProp?.(ev)\n\n const value = ev.target.value\n const computedValue = format(value)\n\n if (computedValue) {\n pickOptions(computedValue)\n } else {\n rebirthOptions()\n }\n\n setInputValue(value)\n },\n [isOpen, onOpen, format, onSearchProp, pickOptions, rebirthOptions],\n )\n\n const onCompositionStart = useCallback(() => {\n isComposition.current = true\n }, [])\n\n const onCompositionEnd = useCallback(() => {\n isComposition.current = false\n }, [])\n\n const onCreate = useCallback(() => {\n if (!listRef.current) return\n\n const newItem: AutocompleteItem = { label: inputValue, value: inputValue }\n\n let newItems: AutocompleteItem[] = []\n\n if (resolvedItems) newItems = resolvedItems\n\n if (firstInsertPositionItem === \"first\") {\n newItems = [newItem, ...newItems]\n } else if (firstInsertPositionItem === \"last\") {\n newItems = [...newItems, newItem]\n } else {\n const i = newItems.findIndex(\n ({ label }) => label === firstInsertPositionItem,\n )\n\n const targetItem = newItems[i]\n\n if (i !== -1 && \"items\" in targetItem) {\n if (secondInsertPositionItem === \"first\") {\n targetItem.items = [newItem, ...(targetItem.items ?? [])]\n } else {\n targetItem.items = [...(targetItem.items ?? []), newItem]\n }\n\n newItems[i] = targetItem\n } else {\n console.warn(\n `${\n !isMulti ? \"Autocomplete\" : \"MultiAutocomplete\"\n }: '${firstInsertPositionItem}' specified in insertPositionItem does not exist in the option group.`,\n )\n }\n }\n\n setResolvedItems(newItems)\n onChange(inputValue)\n rebirthOptions(false)\n\n const index = flattenItems(newItems).findIndex(\n ({ value }) => value === inputValue,\n )\n\n setFocusedIndex(index)\n\n onCreateProp?.(newItem, newItems)\n }, [\n inputValue,\n resolvedItems,\n firstInsertPositionItem,\n onChange,\n rebirthOptions,\n onCreateProp,\n secondInsertPositionItem,\n isMulti,\n ])\n\n const onClick = useCallback(() => {\n if (isOpen) {\n if (inputRef.current) inputRef.current.focus()\n } else {\n onOpen()\n\n onFocusFirstOrSelected()\n }\n }, [isOpen, onFocusFirstOrSelected, onOpen])\n\n const onFocus = useCallback(() => {\n if (isOpen) return\n\n onOpen()\n\n onFocusFirstOrSelected()\n }, [isOpen, onFocusFirstOrSelected, onOpen])\n\n const onBlur = useCallback(\n (ev: FocusEvent<HTMLDivElement>) => {\n const relatedTarget = getEventRelatedTarget(ev)\n\n if (isContains(containerRef.current, relatedTarget)) return\n\n if (!closeOnBlur && isHit) return\n\n if (allowFree && !!inputValue) onChange(inputValue, false)\n\n setInputValue(\"\")\n\n if (isOpen) onClose()\n },\n [closeOnBlur, isHit, isOpen, inputValue, allowFree, onClose, onChange],\n )\n\n const onDelete = useCallback(() => {\n if (!isMulti) {\n onChange(\"\")\n } else {\n onChange(value[value.length - 1])\n }\n\n if (!isOpen) onFocus()\n }, [isMulti, isOpen, onChange, onFocus, value])\n\n const onClear = useCallback(\n (ev: MouseEvent<HTMLDivElement>) => {\n ev.stopPropagation()\n\n prevValue.current = [] as unknown as T\n setValue([] as unknown as T)\n setLabel(undefined)\n setInputValue(\"\")\n rebirthOptions()\n\n if (isOpen && inputRef.current) inputRef.current.focus()\n },\n [isOpen, setLabel, setInputValue, setValue, rebirthOptions],\n )\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent<HTMLDivElement>) => {\n if (ev.key === \" \") ev.key = ev.code\n\n if (formControlProps.disabled || formControlProps.readOnly) return\n if (isComposition.current) return\n\n const enabledDelete = label === inputValue || !inputValue.length\n\n const actions: Record<string, Function | undefined> = {\n ArrowDown: isFocused\n ? () => onFocusNext()\n : !isOpen\n ? funcAll(onOpen, onFocusFirstOrSelected)\n : undefined,\n ArrowUp: isFocused\n ? () => onFocusPrev()\n : !isOpen\n ? funcAll(onOpen, onFocusLastOrSelected)\n : undefined,\n Space: isCreate\n ? onCreate\n : isFocused\n ? onSelect\n : !isOpen\n ? funcAll(onOpen, onFocusFirstOrSelected)\n : undefined,\n Enter: isCreate\n ? onCreate\n : isFocused\n ? onSelect\n : !isOpen\n ? funcAll(onOpen, onFocusFirstOrSelected)\n : allowFree && isMulti\n ? () => {\n if (inputValue) onChange(inputValue)\n\n setFocusedIndex(0)\n }\n : undefined,\n Home: isOpen ? onFocusFirst : undefined,\n End: isOpen ? onFocusLast : undefined,\n Escape: closeOnEsc ? onClose : undefined,\n Backspace: !isEmptyValue && enabledDelete ? onDelete : undefined,\n }\n\n const action = actions[ev.key]\n\n if (!action) return\n\n ev.preventDefault()\n ev.stopPropagation()\n\n action(ev)\n },\n [\n allowFree,\n formControlProps,\n label,\n inputValue,\n onOpen,\n isFocused,\n isMulti,\n onFocusFirstOrSelected,\n onFocusNext,\n onFocusLastOrSelected,\n onFocusPrev,\n isCreate,\n onCreate,\n onSelect,\n isOpen,\n onFocusFirst,\n onFocusLast,\n closeOnEsc,\n onClose,\n isEmptyValue,\n onDelete,\n onChange,\n ],\n )\n\n useEffect(() => {\n if (!isMulti) return\n\n if (!omitSelectedValues && isUndefined(maxSelectValues)) return\n\n const isAll = value.length > 0 && value.length === descendants.count()\n const isMax = value.length === maxSelectValues\n\n if (isAll || isMax) {\n onClose()\n setIsAllSelected(true)\n } else {\n setIsAllSelected(false)\n }\n }, [\n omitSelectedValues,\n value,\n descendants,\n isMulti,\n onClose,\n maxSelectValues,\n ])\n\n useEffect(() => {\n if (isMulti) {\n if (\n JSON.stringify(prevValue.current ?? []) === JSON.stringify(value ?? [])\n )\n return\n\n const label = getSelectedValues(value)\n\n setLabel(label as T)\n } else {\n if (prevValue.current === value) return\n\n onChangeLabel(value, false)\n }\n }, [isMulti, value, onChangeLabel, getSelectedValues])\n\n useUpdateEffect(() => {\n if (isOpen || allowFree) return\n\n setFocusedIndex(-1)\n setInputValue(\"\")\n }, [isOpen])\n\n useUpdateEffect(() => {\n if (!isHit) setFocusedIndex(-2)\n }, [isHit])\n\n useUnmountEffect(() => {\n timeoutIds.current.forEach((id) => clearTimeout(id))\n timeoutIds.current.clear()\n })\n\n useOutsideClick({\n ref: containerRef,\n handler: onClose,\n enabled: isOpen && (closeOnBlur || !isHit),\n })\n\n const getPopoverProps = useCallback(\n (props?: PopoverProps): PopoverProps => ({\n matchWidth: true,\n ...rest,\n ...props,\n isOpen,\n onOpen,\n onClose,\n placement,\n duration,\n trigger: \"never\",\n closeOnButton: false,\n closeOnBlur,\n }),\n [duration, closeOnBlur, isOpen, onClose, onOpen, placement, rest],\n )\n\n const getContainerProps: UIPropGetter = useCallback(\n (props = {}, ref = null) => ({\n ref: mergeRefs(containerRef, ref),\n ...containerProps,\n ...props,\n ...formControlProps,\n onClick: handlerAll(props.onClick, rest.onClick, onClick),\n onBlur: handlerAll(props.onBlur, rest.onBlur, onBlur),\n }),\n\n [containerProps, formControlProps, onBlur, onClick, rest],\n )\n\n const getFieldProps: UIPropGetter = useCallback(\n (props = {}, ref = null) => ({\n ref,\n tabIndex: -1,\n ...props,\n ...formControlProps,\n placeholder,\n \"data-active\": dataAttr(isOpen),\n \"aria-expanded\": dataAttr(isOpen),\n onFocus: handlerAll(props.onFocus, rest.onFocus, onFocus),\n onKeyDown: handlerAll(props.onKeyDown, rest.onKeyDown, onKeyDown),\n }),\n [formControlProps, placeholder, isOpen, rest, onFocus, onKeyDown],\n )\n\n return {\n id,\n descendants,\n value,\n label,\n inputValue,\n isHit,\n isEmpty,\n computedChildren,\n focusedIndex,\n omitSelectedValues,\n closeOnSelect,\n allowCreate,\n allowFree,\n emptyMessage,\n isOpen,\n isAllSelected,\n listRef,\n inputRef,\n optionProps,\n formControlProps,\n setFocusedIndex,\n onChangeLabel,\n onChange,\n onSearch,\n onCreate,\n onClear,\n onCompositionStart,\n onCompositionEnd,\n pickOptions,\n rebirthOptions,\n onOpen,\n onClose,\n onFocusFirst,\n onFocusLast,\n onFocusSelected,\n onFocusNext,\n onFocusPrev,\n getPopoverProps,\n getContainerProps,\n getFieldProps,\n inputProps,\n }\n}\n\nexport type UseAutocompleteReturn = ReturnType<typeof useAutocomplete>\n\nexport const useAutocompleteInput = () => {\n const {\n id,\n inputRef,\n onSearch,\n onCompositionStart,\n onCompositionEnd,\n isAllSelected,\n formControlProps,\n inputProps,\n isOpen,\n } = useAutocompleteContext()\n\n useUpdateEffect(() => {\n if (isAllSelected && inputRef.current) inputRef.current.blur()\n }, [isAllSelected])\n\n const getInputProps: UIPropGetter<\"input\"> = useCallback(\n (props = {}, ref = null) => ({\n ref: mergeRefs(inputRef, ref),\n ...formControlProps,\n role: \"combobox\",\n \"aria-haspopup\": \"listbox\",\n \"aria-autocomplete\": \"list\",\n \"aria-expanded\": isOpen,\n autoCapitalize: \"none\",\n autoComplete: \"off\",\n spellCheck: \"false\",\n ...inputProps,\n ...props,\n id,\n cursor: formControlProps.readOnly ? \"default\" : \"text\",\n pointerEvents:\n formControlProps.disabled || isAllSelected ? \"none\" : \"auto\",\n tabIndex: isAllSelected ? -1 : 0,\n onChange: handlerAll(props.onChange, onSearch),\n onCompositionStart: handlerAll(\n props.onCompositionStart,\n inputProps.onCompositionStart,\n onCompositionStart,\n ),\n onCompositionEnd: handlerAll(\n props.onCompositionEnd,\n inputProps.onCompositionEnd,\n onCompositionEnd,\n ),\n }),\n [\n isOpen,\n inputProps,\n inputRef,\n formControlProps,\n id,\n isAllSelected,\n onSearch,\n onCompositionStart,\n onCompositionEnd,\n ],\n )\n\n return {\n getInputProps,\n }\n}\n\nexport type UseAutocompleteInputReturn = ReturnType<typeof useAutocompleteInput>\n\nexport const useAutocompleteList = () => {\n const { focusedIndex, isOpen, listRef, rebirthOptions } =\n useAutocompleteContext()\n\n const descendants = useAutocompleteDescendantsContext()\n\n const beforeFocusedIndex = useRef<number>(-1)\n const selectedValue = descendants.value(focusedIndex)\n\n const onAnimationComplete = useCallback(() => {\n if (!isOpen) rebirthOptions(false)\n }, [isOpen, rebirthOptions])\n\n useEffect(() => {\n if (!listRef.current || !selectedValue) return\n\n if (beforeFocusedIndex.current === selectedValue.index) return\n\n const parent = listRef.current\n const child = selectedValue.node\n\n const parentHeight = parent.clientHeight\n const viewTop = parent.scrollTop\n const viewBottom = viewTop + parentHeight\n\n const childHeight = child.clientHeight\n const childTop = child.offsetTop\n const childBottom = childTop + childHeight\n\n const isInView = viewTop <= childTop && childBottom <= viewBottom\n\n const isScrollBottom = beforeFocusedIndex.current < selectedValue.index\n\n if (!isInView) {\n if (childBottom <= parentHeight) {\n listRef.current.scrollTo({ top: 0 })\n } else {\n if (!isScrollBottom) {\n listRef.current.scrollTo({ top: childTop + 1 })\n } else {\n listRef.current.scrollTo({ top: childBottom - parentHeight })\n }\n }\n }\n\n beforeFocusedIndex.current = selectedValue.index\n }, [listRef, selectedValue])\n\n useUpdateEffect(() => {\n if (!isOpen) beforeFocusedIndex.current = -1\n }, [isOpen])\n\n const getListProps: MotionUIPropGetter<\"ul\"> = useCallback(\n (props = {}, ref = null) => ({\n as: \"ul\",\n ref: mergeRefs(listRef, ref),\n role: \"select\",\n tabIndex: -1,\n ...props,\n onAnimationComplete: handlerAll(\n props.onAnimationComplete,\n onAnimationComplete,\n ),\n }),\n [listRef, onAnimationComplete],\n )\n\n return {\n getListProps,\n }\n}\n\nexport type UseAutocompleteOptionGroupProps = HTMLUIProps<\"ul\"> & {\n /**\n * The label of the autocomplete option group.\n */\n label: string\n}\n\nexport const useAutocompleteOptionGroup = ({\n label,\n ...rest\n}: UseAutocompleteOptionGroupProps) => {\n const { value, omitSelectedValues } = useAutocompleteContext()\n\n const isMulti = isArray(value)\n\n const descendants = useAutocompleteDescendantsContext()\n\n const values = descendants.values()\n const selectedValues =\n isMulti && omitSelectedValues\n ? descendants.values(({ node }) =>\n value.includes(node.dataset.value ?? \"\"),\n )\n : []\n const selectedIndexes = selectedValues.map(({ index }) => index)\n const childValues = values.filter(\n ({ node, index }) =>\n node.parentElement?.dataset.label === label &&\n !selectedIndexes.includes(index) &&\n \"target\" in node.dataset,\n )\n\n const isEmpty = !childValues.length\n\n const computedRest = splitObject(rest, layoutStyleProperties)\n\n const getContainerProps: UIPropGetter = useCallback(\n (props = {}, ref = null) => {\n const style: CSSProperties = {\n border: \"0px\",\n clip: \"rect(0px, 0px, 0px, 0px)\",\n height: \"1px\",\n width: \"1px\",\n margin: \"-1px\",\n padding: \"0px\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n position: \"absolute\",\n }\n\n return {\n ref,\n ...props,\n ...computedRest[0],\n style: isEmpty ? style : undefined,\n \"data-label\": label,\n role: \"autocomplete-group-container\",\n }\n },\n [computedRest, isEmpty, label],\n )\n\n const getGroupProps: UIPropGetter = useCallback(\n (props = {}, ref = null) => ({\n ref,\n ...props,\n ...computedRest[1],\n \"data-label\": label,\n role: \"autocomplete-group\",\n }),\n [computedRest, label],\n )\n\n return {\n label,\n getContainerProps,\n getGroupProps,\n }\n}\n\nexport type UseAutocompleteOptionGroupReturn = ReturnType<\n typeof useAutocompleteOptionGroup\n>\n\nexport type UseAutocompleteOptionProps = Omit<\n HTMLUIProps<\"li\">,\n \"value\" | \"children\"\n> & {\n /**\n * The value of the select option.\n */\n value?: string\n /**\n * The label of the select option.\n */\n children?: string\n /**\n * If `true`, the select option will be disabled.\n *\n * @default false\n */\n isDisabled?: boolean\n /**\n * If `true`, the select option will be focusable.\n *\n * @default false\n */\n isFocusable?: boolean\n /**\n * If `true`, the list element will be closed when selected.\n *\n * @default false\n */\n closeOnSelect?: boolean\n}\n\nexport const useAutocompleteOption = (props: UseAutocompleteOptionProps) => {\n const {\n value,\n omitSelectedValues,\n onChange,\n onChangeLabel,\n focusedIndex,\n setFocusedIndex,\n onClose,\n closeOnSelect: generalCloseOnSelect,\n optionProps,\n inputRef,\n onFocusNext,\n } = useAutocompleteContext()\n\n let {\n icon: customIcon,\n isDisabled,\n isFocusable,\n closeOnSelect: customCloseOnSelect,\n children,\n value: optionValue,\n ...computedProps\n } = { ...optionProps, ...props }\n\n const trulyDisabled = !!isDisabled && !isFocusable\n\n const itemRef = useRef<HTMLLIElement>(null)\n\n const { index, register, descendants } = useAutocompleteDescendant({\n disabled: trulyDisabled,\n })\n\n const values = descendants.values()\n const frontValues = values.slice(0, index)\n\n const isMulti = isArray(value)\n const isDuplicated = !isMulti\n ? frontValues.some(({ node }) => node.dataset.value === (optionValue ?? \"\"))\n : false\n\n const isSelected =\n !isDuplicated &&\n (!isMulti\n ? (optionValue ?? \"\") === value\n : value.includes(optionValue ?? \"\"))\n const isTarget = \"target\" in (itemRef.current?.dataset ?? {})\n const isFocused = index === focusedIndex\n\n const onClick = useCallback(\n (ev: MouseEvent<HTMLLIElement>) => {\n ev.stopPropagation()\n\n if (isDisabled) {\n if (inputRef.current) inputRef.current.focus()\n\n return\n }\n\n if (!isTargetOption(ev.currentTarget)) {\n if (inputRef.current) inputRef.current.focus()\n\n return\n }\n\n setFocusedIndex(index)\n\n onChange(optionValue ?? \"\")\n\n if (inputRef.current) inputRef.current.focus()\n\n if (customCloseOnSelect ?? generalCloseOnSelect) onClose()\n\n if (omitSelectedValues) onFocusNext(index)\n },\n [\n onFocusNext,\n omitSelectedValues,\n isDisabled,\n optionValue,\n setFocusedIndex,\n index,\n onChange,\n customCloseOnSelect,\n generalCloseOnSelect,\n onClose,\n inputRef,\n ],\n )\n\n useUpdateEffect(() => {\n if (isSelected) onChangeLabel(optionValue ?? \"\", false)\n }, [optionValue])\n\n const getOptionProps: UIPropGetter<\"li\"> = useCallback(\n (props = {}, ref = null) => {\n const style: CSSProperties = {\n border: \"0px\",\n clip: \"rect(0px, 0px, 0px, 0px)\",\n height: \"1px\",\n width: \"1px\",\n margin: \"-1px\",\n padding: \"0px\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n position: \"absolute\",\n }\n\n return {\n ref: mergeRefs(itemRef, ref, register),\n ...computedProps,\n ...props,\n role: \"autocomplete-item\",\n tabIndex: -1,\n style:\n !isTarget || (omitSelectedValues && isSelected) ? style : undefined,\n \"data-target\": dataAttr(true),\n \"data-value\": optionValue ?? \"\",\n \"data-focus\": dataAttr(isFocused),\n \"data-disabled\": dataAttr(isDisabled),\n \"aria-checked\": ariaAttr(isSelected),\n \"aria-disabled\": ariaAttr(isDisabled),\n onClick: handlerAll(computedProps.onClick, props.onClick, onClick),\n }\n },\n [\n optionValue,\n computedProps,\n isDisabled,\n isFocused,\n isSelected,\n isTarget,\n omitSelectedValues,\n onClick,\n register,\n ],\n )\n\n return {\n isSelected,\n isFocused,\n customIcon,\n children,\n getOptionProps,\n }\n}\n\nexport type UseAutocompleteOptionReturn = ReturnType<\n typeof useAutocompleteOption\n>\n\nexport const useAutocompleteCreate = () => {\n const { isHit, onCreate } = useAutocompleteContext()\n\n const getCreateProps: UIPropGetter<\"li\"> = useCallback(\n (props = {}, ref = null) => {\n const style: CSSProperties = {\n border: \"0px\",\n clip: \"rect(0px, 0px, 0px, 0px)\",\n height: \"1px\",\n width: \"1px\",\n margin: \"-1px\",\n padding: \"0px\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n position: \"absolute\",\n }\n\n return {\n ref,\n ...props,\n tabIndex: -1,\n style: isHit ? style : undefined,\n \"data-focus\": dataAttr(!isHit),\n onClick: handlerAll(props.onClick, onCreate),\n }\n },\n [isHit, onCreate],\n )\n\n return { getCreateProps }\n}\n\nexport type UseAutocompleteCreateReturn = ReturnType<\n typeof useAutocompleteCreate\n>\n\nexport const useAutocompleteEmpty = () => {\n const { isHit, isEmpty } = useAutocompleteContext()\n\n const getEmptyProps: UIPropGetter<\"li\"> = useCallback(\n (props = {}, ref = null) => {\n const style: CSSProperties = {\n border: \"0px\",\n clip: \"rect(0px, 0px, 0px, 0px)\",\n height: \"1px\",\n width: \"1px\",\n margin: \"-1px\",\n padding: \"0px\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n position: \"absolute\",\n }\n\n return {\n ref,\n ...props,\n tabIndex: -1,\n style: isHit && !isEmpty ? style : undefined,\n }\n },\n [isHit, isEmpty],\n )\n\n return { getEmptyProps }\n}\n\nexport type UseAutocompleteEmptyReturn = ReturnType<typeof useAutocompleteEmpty>\n","import type { HTMLUIProps } from \"@yamada-ui/core\"\nimport { ui, forwardRef } from \"@yamada-ui/core\"\nimport { cx } from \"@yamada-ui/utils\"\nimport type { UseAutocompleteOptionGroupProps } from \"./use-autocomplete\"\nimport {\n useAutocompleteContext,\n useAutocompleteOptionGroup,\n} from \"./use-autocomplete\"\n\ntype AutocompleteOptionGroupOptions = UseAutocompleteOptionGroupProps\n\nexport type AutocompleteOptionGroupProps = HTMLUIProps<\"ul\"> &\n AutocompleteOptionGroupOptions\n\nexport const AutocompleteOptionGroup = forwardRef<\n AutocompleteOptionGroupProps,\n \"ul\"\n>(\n (\n { className, color, h, height, minH, minHeight, children, ...rest },\n ref,\n ) => {\n const { styles } = useAutocompleteContext()\n const { label, getContainerProps, getGroupProps } =\n useAutocompleteOptionGroup(rest)\n\n h ??= height\n minH ??= minHeight\n\n return (\n <ui.li\n className={cx(\n \"ui-autocomplete__item\",\n \"ui-autocomplete__item--group\",\n className,\n )}\n __css={{ w: \"100%\", h: \"fit-content\", color }}\n {...getContainerProps()}\n >\n <ui.span\n className=\"ui-autocomplete__group-label\"\n __css={styles.groupLabel}\n lineClamp={1}\n >\n {label}\n </ui.span>\n\n <ui.ul\n {...getGroupProps({}, ref)}\n className=\"ui-autocomplete__group\"\n __css={{ h, minH, ...styles.group }}\n >\n {children}\n </ui.ul>\n </ui.li>\n )\n },\n)\n","import type { CSSUIObject } from \"@yamada-ui/core\"\nimport { ui, forwardRef } from \"@yamada-ui/core\"\nimport { cx } from \"@yamada-ui/utils\"\nimport type { FC, ReactElement } from \"react\"\nimport { AutocompleteItemIcon } from \"./autocomplete-icon\"\nimport type { UseAutocompleteOptionProps } from \"./use-autocomplete\"\nimport {\n useAutocompleteContext,\n useAutocompleteOption,\n} from \"./use-autocomplete\"\n\ntype AutocompleteOptionOptions = {\n /**\n * The autocomplete option icon to use.\n */\n icon?: ReactElement\n}\n\nexport type AutocompleteOptionProps = UseAutocompleteOptionProps &\n AutocompleteOptionOptions\n\nexport const AutocompleteOption = forwardRef<AutocompleteOptionProps, \"li\">(\n ({ className, icon, ...rest }, ref) => {\n const { styles } = useAutocompleteContext()\n const { isSelected, customIcon, children, getOptionProps } =\n useAutocompleteOption(rest)\n\n icon ??= customIcon\n\n const css: CSSUIObject = {\n textDecoration: \"none\",\n color: \"inherit\",\n userSelect: \"none\",\n display: \"flex\",\n width: \"100%\",\n alignItems: \"center\",\n textAlign: \"start\",\n flex: \"0 0 auto\",\n outline: 0,\n gap: \"0.75rem\",\n ...styles.item,\n }\n\n return (\n <ui.li\n className={cx(\"ui-autocomplete__item\", className)}\n __css={css}\n {...getOptionProps({}, ref)}\n >\n {icon !== null ? (\n <AutocompleteItemIcon opacity={isSelected ? 1 : 0}>\n {icon || <CheckIcon />}\n </AutocompleteItemIcon>\n ) : null}\n\n <ui.span style={{ flex: 1 }} data-label>\n {children}\n </ui.span>\n </ui.li>\n )\n },\n)\n\nconst CheckIcon: FC = () => (\n <svg viewBox=\"0 0 14 14\" width=\"1em\" height=\"1em\">\n <polygon\n fill=\"currentColor\"\n points=\"5.5 11.9993304 14 3.49933039 12.5 2 5.5 8.99933039 1.5 4.9968652 0 6.49933039\"\n />\n </svg>\n)\n","import type { CSSUIObject, HTMLUIProps } from \"@yamada-ui/core\"\nimport { ui, forwardRef } from \"@yamada-ui/core\"\nimport { cx, runIfFunc } from \"@yamada-ui/utils\"\nimport type { FC, ReactElement } from \"react\"\nimport { AutocompleteItemIcon } from \"./autocomplete-icon\"\nimport {\n useAutocompleteContext,\n useAutocompleteCreate,\n} from \"./use-autocomplete\"\n\ntype AutocompleteCreateOptions = {\n /**\n * The autocomplete create option icon to use.\n */\n icon?: ReactElement\n /**\n * The label of the autocomplete create option.\n */\n children?: string | ((inputValue: string) => string)\n}\n\nexport type AutocompleteCreateProps = Omit<HTMLUIProps<\"li\">, \"children\"> &\n AutocompleteCreateOptions\n\nexport const AutocompleteCreate = forwardRef<AutocompleteCreateProps, \"li\">(\n ({ className, icon, children, ...rest }, ref) => {\n const { inputValue, styles } = useAutocompleteContext()\n const { getCreateProps } = useAutocompleteCreate()\n\n children ??= inputValue\n\n const css: CSSUIObject = {\n textDecoration: \"none\",\n color: \"inherit\",\n userSelect: \"none\",\n display: \"flex\",\n width: \"100%\",\n alignItems: \"center\",\n textAlign: \"start\",\n flex: \"0 0 auto\",\n outline: 0,\n gap: \"0.75rem\",\n ...styles.item,\n }\n\n return (\n <ui.li\n className={cx(\"ui-autocomplete__item--create\", className)}\n __css={css}\n {...getCreateProps(rest, ref)}\n >\n {icon !== null ? (\n <AutocompleteItemIcon>{icon || <PlusIcon />}</AutocompleteItemIcon>\n ) : null}\n {icon ? (\n <ui.span style={{ pointerEvents: \"none\", flex: 1 }} lineClamp={1}>\n {runIfFunc(children, inputValue)}\n </ui.span>\n ) : (\n runIfFunc(children, inputValue)\n )}\n </ui.li>\n )\n },\n)\n\nconst PlusIcon: FC = () => (\n <svg viewBox=\"0 0 45.402 45.402\" width=\"1em\" height=\"1em\">\n <path\n fill=\"currentColor\"\n d=\"M41.267,18.557H26.832V4.134C26.832,1.851,24.99,0,22.707,0c-2.283,0-4.124,1.851-4.124,4.135v14.432H4.141 c-2.283,0-4.139,1.851-4.138,4.135c-0.001,1.141,0.46,2.187,1.207,2.934c0.748,0.749,1.78,1.222,2.92,1.222h14.453V41.27 c0,1.142,0.453,2.176,1.201,2.922c0.748,0.748,1.777,1.211,2.919,1.211c2.282,0,4.129-1.851,4.129-4.133V26.857h14.435 c2.283,0,4.134-1.867,4.133-4.15C45.399,20.425,43.548,18.557,41.267,18.557z\"\n />\n </svg>\n)\n","import type { CSSUIObject, HTMLUIProps } from \"@yamada-ui/core\"\nimport { ui, forwardRef } from \"@yamada-ui/core\"\nimport { cx } from \"@yamada-ui/utils\"\nimport type { FC, ReactElement } from \"react\"\nimport { AutocompleteItemIcon } from \"./autocomplete-icon\"\nimport {\n useAutocompleteContext,\n useAutocompleteEmpty,\n} from \"./use-autocomplete\"\n\ntype AutocompleteEmptyOptions = {\n /**\n * The autocomplete empty option icon to use.\n */\n icon?: ReactElement\n /**\n * The label of the autocomplete empty option.\n */\n children?: string\n}\n\nexport type AutocompleteEmptyProps = Omit<HTMLUIProps<\"li\">, \"children\"> &\n AutocompleteEmptyOptions\n\nexport const AutocompleteEmpty = forwardRef<AutocompleteEmptyProps, \"li\">(\n ({ className, icon, children, ...rest }, ref) => {\n const { emptyMessage, styles } = useAutocompleteContext()\n const { getEmptyProps } = useAutocompleteEmpty()\n\n children ??= emptyMessage\n\n const css: CSSUIObject = {\n textDecoration: \"none\",\n color: \"inherit\",\n userSelect: \"none\",\n display: \"flex\",\n width: \"100%\",\n alignItems: \"center\",\n textAlign: \"start\",\n flex: \"0 0 auto\",\n outline: 0,\n gap: \"0.75rem\",\n pointerEvents: \"none\",\n ...styles.item,\n }\n\n return (\n <ui.li\n className={cx(\"ui-autocomplete__item--empty\", className)}\n __css={css}\n {...getEmptyProps(rest, ref)}\n >\n {icon !== null ? (\n <AutocompleteItemIcon>{icon || <MinusIcon />}</AutocompleteItemIcon>\n ) : null}\n {icon ? (\n <ui.span style={{ pointerEvents: \"none\", flex: 1 }} lineClamp={1}>\n {children}\n </ui.span>\n ) : (\n children\n )}\n </ui.li>\n )\n },\n)\n\nconst MinusIcon: FC = () => (\n <svg viewBox=\"0 0 448 512\" width=\"1em\" height=\"1em\">\n <path\n fill=\"currentColor\"\n d=\"M432 256c0 17.7-14.3 32-32 32L48 288c-17.7 0-32-14.3-32-32s14.3-32 32-32l352 0c17.7 0 32 14.3 32 32z\"\n />\n </svg>\n)\n","import type { CSSUIObject, CSSUIProps } from \"@yamada-ui/core\"\nimport { forwardRef } from \"@yamada-ui/core\"\nimport type { MotionProps } from \"@yamada-ui/motion\"\nimport { PopoverContent } from \"@yamada-ui/popover\"\nimport { cx } from \"@yamada-ui/utils\"\nimport { useAutocompleteContext, useAutocompleteList } from \"./use-autocomplete\"\n\nexport type AutocompleteListProps = MotionProps<\"ul\">\n\nexport const AutocompleteList = forwardRef<AutocompleteListProps, \"ul\">(\n ({ className, w, width, minW, minWidth, ...rest }, ref) => {\n const { styles } = useAutocompleteContext()\n\n const { getListProps } = useAutocompleteList()\n\n w =\n w ?? width ?? ((styles.list?.w ?? styles.list?.width) as CSSUIProps[\"w\"])\n minW =\n minW ??\n minWidth ??\n ((styles.list?.minW ?? styles.list?.minWidth) as CSSUIProps[\"minW\"])\n\n const css: CSSUIObject = { ...styles.list }\n\n return (\n <PopoverContent\n className={cx(\"ui-autocomplete__list\", className)}\n w={w}\n minW={minW}\n __css={css}\n {...getListProps(rest, ref)}\n />\n )\n },\n)\n"],"mappings":"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","names":["import_core","import_popover","import_utils","import_core","import_utils","import_react","import_core","import_popover","import_utils","import_core","import_utils","import_jsx_runtime","import_core","import_utils","import_jsx_runtime","import_core","import_utils","import_jsx_runtime","import_core","import_utils","import_jsx_runtime","import_jsx_runtime","items","label","value","props","i","id","index","isHit","isFocused","enabledValues","selectedValues","node","import_jsx_runtime","import_jsx_runtime"]}
|
package/dist/autocomplete.mjs
CHANGED
@@ -8,7 +8,7 @@ import { cx as cx8 } from "@yamada-ui/utils";
|
|
8
8
|
// src/use-autocomplete.tsx
|
9
9
|
import { layoutStyleProperties } from "@yamada-ui/core";
|
10
10
|
import {
|
11
|
-
|
11
|
+
formControlProperties,
|
12
12
|
useFormControlProps
|
13
13
|
} from "@yamada-ui/form-control";
|
14
14
|
import { popoverProperties } from "@yamada-ui/popover";
|
@@ -639,6 +639,7 @@ var MultiAutocompleteField = forwardRef7(
|
|
639
639
|
/* @__PURE__ */ jsx7(
|
640
640
|
ui7.input,
|
641
641
|
{
|
642
|
+
"aria-label": "Input value",
|
642
643
|
className: "ui-multi-autocomplete__field__input",
|
643
644
|
display: "inline-block",
|
644
645
|
flex: "1",
|
@@ -817,9 +818,9 @@ var useAutocomplete = ({
|
|
817
818
|
}) => {
|
818
819
|
rest = useFormControlProps(rest);
|
819
820
|
const { id } = rest;
|
820
|
-
const formControlProps = pickObject(
|
821
|
+
const { "aria-readonly": _ariaReadonly, ...formControlProps } = pickObject(
|
821
822
|
rest,
|
822
|
-
|
823
|
+
formControlProperties
|
823
824
|
);
|
824
825
|
const [containerProps, inputProps] = splitObject(
|
825
826
|
omitObject(rest, [...popoverProperties, "onKeyDown", "onFocus"]),
|
@@ -1508,7 +1509,8 @@ var useAutocompleteInput = () => {
|
|
1508
1509
|
onCompositionEnd,
|
1509
1510
|
isAllSelected,
|
1510
1511
|
formControlProps,
|
1511
|
-
inputProps
|
1512
|
+
inputProps,
|
1513
|
+
isOpen
|
1512
1514
|
} = useAutocompleteContext();
|
1513
1515
|
useUpdateEffect(() => {
|
1514
1516
|
if (isAllSelected && inputRef.current)
|
@@ -1518,6 +1520,13 @@ var useAutocompleteInput = () => {
|
|
1518
1520
|
(props = {}, ref = null) => ({
|
1519
1521
|
ref: mergeRefs(inputRef, ref),
|
1520
1522
|
...formControlProps,
|
1523
|
+
role: "combobox",
|
1524
|
+
"aria-haspopup": "listbox",
|
1525
|
+
"aria-autocomplete": "list",
|
1526
|
+
"aria-expanded": isOpen,
|
1527
|
+
autoCapitalize: "none",
|
1528
|
+
autoComplete: "off",
|
1529
|
+
spellCheck: "false",
|
1521
1530
|
...inputProps,
|
1522
1531
|
...props,
|
1523
1532
|
id,
|
@@ -1537,6 +1546,7 @@ var useAutocompleteInput = () => {
|
|
1537
1546
|
)
|
1538
1547
|
}),
|
1539
1548
|
[
|
1549
|
+
isOpen,
|
1540
1550
|
inputProps,
|
1541
1551
|
inputRef,
|
1542
1552
|
formControlProps,
|
@@ -1901,4 +1911,4 @@ export {
|
|
1901
1911
|
AutocompleteItemIcon,
|
1902
1912
|
AutocompleteCreate
|
1903
1913
|
};
|
1904
|
-
//# sourceMappingURL=chunk-
|
1914
|
+
//# sourceMappingURL=chunk-X2KU3OVN.mjs.map
|