fix(autocomplete): empty items with allowCustomValue (#2674)

* feat(autocomplete): add & export getEmptyPopoverProps

* fix(autocomplete): avoid null node in `ariaHideOutside` from `@react-aria/overlays`

* feat(changeset): add changeset
This commit is contained in:
աӄա 2024-04-14 22:29:53 +08:00 committed by GitHub
parent feab3e6c1d
commit 86a78c9b91
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 18 additions and 1 deletions

View File

@ -0,0 +1,5 @@
---
"@nextui-org/autocomplete": patch
---
Fixed empty items with allowCustomValue by avoiding null node in `ariaHideOutside` from `@react-aria/overlays`

View File

@ -26,6 +26,7 @@ function Autocomplete<T extends object>(props: Props<T>, ref: ForwardedRef<HTMLI
getInputProps,
getListBoxProps,
getPopoverProps,
getEmptyPopoverProps,
getClearButtonProps,
getListBoxWrapperProps,
getEndContentWrapperProps,
@ -42,7 +43,9 @@ function Autocomplete<T extends object>(props: Props<T>, ref: ForwardedRef<HTMLI
<Listbox {...getListBoxProps()} />
</ScrollShadow>
</FreeSoloPopover>
) : null;
) : (
<div {...getEmptyPopoverProps()} />
);
return (
<Component {...getBaseProps()}>

View File

@ -400,6 +400,14 @@ export function useAutocomplete<T extends object>(originalProps: UseAutocomplete
} as unknown as PopoverProps;
};
const getEmptyPopoverProps = () => {
// avoid null node in `ariaHideOutside` from `@react-aria/overlays`
return {
ref: popoverRef,
classNames: "hidden",
};
};
const getListBoxWrapperProps: PropGetter = (props: any = {}) => ({
...mergeProps(slotsProps.scrollShadowProps, props),
className: slots.listboxWrapper({
@ -443,6 +451,7 @@ export function useAutocomplete<T extends object>(originalProps: UseAutocomplete
getInputProps,
getListBoxProps,
getPopoverProps,
getEmptyPopoverProps,
getClearButtonProps,
getSelectorButtonProps,
getListBoxWrapperProps,