import * as react from 'react'; import { ReactNode, RefObject, Dispatch, SetStateAction, ReactElement, FocusEvent, MouseEvent } from 'react'; import * as _yamada_ui_use_descendant from '@yamada-ui/use-descendant'; import { HTMLUIProps, CSSUIObject, PropGetter } from '@yamada-ui/core'; import { FormControlOptions } from '@yamada-ui/form-control'; import { ComboBoxProps, PopoverProps } from '@yamada-ui/popover'; import { Merge } from '@yamada-ui/utils'; import { OptionProps } from './option.js'; import { OptionGroupProps } from './option-group.js'; import './use-select-option.js'; import './use-select-option-group.js'; declare const SelectDescendantsContextProvider: react.Provider<{ count: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => number; destroy: () => void; enabledCount: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => number; enabledFirstValue: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant | undefined; enabledIndexOf: (node?: HTMLElement | null | undefined, filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => number; enabledLastValue: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant | undefined; enabledNextValue: (index: number, filter?: _yamada_ui_use_descendant.FilterDescendant | undefined, loop?: boolean) => _yamada_ui_use_descendant.Descendant | undefined; enabledPrevValue: (index: number, filter?: _yamada_ui_use_descendant.FilterDescendant | undefined, loop?: boolean) => _yamada_ui_use_descendant.Descendant | undefined; enabledValue: (index: number, filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant | undefined; enabledValues: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant[]; firstValue: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant | undefined; indexOf: (node?: HTMLElement | null | undefined) => number; lastValue: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant | undefined; nextValue: (index: number, filter?: _yamada_ui_use_descendant.FilterDescendant | undefined, loop?: boolean) => _yamada_ui_use_descendant.Descendant | undefined; prevValue: (index: number, filter?: _yamada_ui_use_descendant.FilterDescendant | undefined, loop?: boolean) => _yamada_ui_use_descendant.Descendant | undefined; register: (nodeOrOptions?: HTMLElement | { id?: string; disabled?: boolean; filter?: _yamada_ui_use_descendant.FilterDescendant | undefined; } | null | undefined) => void | ((node: HTMLElement | null) => void); unregister: (node?: HTMLElement | undefined) => void; value: (index: number, filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant | undefined; values: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant[]; }>; declare const useSelectDescendant: (options?: { id?: string; disabled?: boolean; filter?: _yamada_ui_use_descendant.FilterDescendant | undefined; } | undefined) => { descendants: { count: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => number; destroy: () => void; enabledCount: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => number; enabledFirstValue: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant | undefined; enabledIndexOf: (node?: HTMLElement | null | undefined, filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => number; enabledLastValue: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant | undefined; enabledNextValue: (index: number, filter?: _yamada_ui_use_descendant.FilterDescendant | undefined, loop?: boolean) => _yamada_ui_use_descendant.Descendant | undefined; enabledPrevValue: (index: number, filter?: _yamada_ui_use_descendant.FilterDescendant | undefined, loop?: boolean) => _yamada_ui_use_descendant.Descendant | undefined; enabledValue: (index: number, filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant | undefined; enabledValues: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant[]; firstValue: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant | undefined; indexOf: (node?: HTMLElement | null | undefined) => number; lastValue: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant | undefined; nextValue: (index: number, filter?: _yamada_ui_use_descendant.FilterDescendant | undefined, loop?: boolean) => _yamada_ui_use_descendant.Descendant | undefined; prevValue: (index: number, filter?: _yamada_ui_use_descendant.FilterDescendant | undefined, loop?: boolean) => _yamada_ui_use_descendant.Descendant | undefined; register: (nodeOrOptions?: HTMLElement | { id?: string; disabled?: boolean; filter?: _yamada_ui_use_descendant.FilterDescendant | undefined; } | null | undefined) => void | ((node: HTMLElement | null) => void); unregister: (node?: HTMLElement | undefined) => void; value: (index: number, filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant | undefined; values: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant[]; }; enabledIndex: number; index: number; register: (node: HTMLElement | null) => void; }; declare const useSelectDescendants: () => { count: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => number; destroy: () => void; enabledCount: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => number; enabledFirstValue: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant | undefined; enabledIndexOf: (node?: HTMLElement | null | undefined, filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => number; enabledLastValue: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant | undefined; enabledNextValue: (index: number, filter?: _yamada_ui_use_descendant.FilterDescendant | undefined, loop?: boolean) => _yamada_ui_use_descendant.Descendant | undefined; enabledPrevValue: (index: number, filter?: _yamada_ui_use_descendant.FilterDescendant | undefined, loop?: boolean) => _yamada_ui_use_descendant.Descendant | undefined; enabledValue: (index: number, filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant | undefined; enabledValues: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant[]; firstValue: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant | undefined; indexOf: (node?: HTMLElement | null | undefined) => number; lastValue: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant | undefined; nextValue: (index: number, filter?: _yamada_ui_use_descendant.FilterDescendant | undefined, loop?: boolean) => _yamada_ui_use_descendant.Descendant | undefined; prevValue: (index: number, filter?: _yamada_ui_use_descendant.FilterDescendant | undefined, loop?: boolean) => _yamada_ui_use_descendant.Descendant | undefined; register: (nodeOrOptions?: HTMLElement | { id?: string; disabled?: boolean; filter?: _yamada_ui_use_descendant.FilterDescendant | undefined; } | null | undefined) => void | ((node: HTMLElement | null) => void); unregister: (node?: HTMLElement | undefined) => void; value: (index: number, filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant | undefined; values: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant[]; }; declare const useSelectDescendantsContext: () => { count: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => number; destroy: () => void; enabledCount: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => number; enabledFirstValue: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant | undefined; enabledIndexOf: (node?: HTMLElement | null | undefined, filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => number; enabledLastValue: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant | undefined; enabledNextValue: (index: number, filter?: _yamada_ui_use_descendant.FilterDescendant | undefined, loop?: boolean) => _yamada_ui_use_descendant.Descendant | undefined; enabledPrevValue: (index: number, filter?: _yamada_ui_use_descendant.FilterDescendant | undefined, loop?: boolean) => _yamada_ui_use_descendant.Descendant | undefined; enabledValue: (index: number, filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant | undefined; enabledValues: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant[]; firstValue: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant | undefined; indexOf: (node?: HTMLElement | null | undefined) => number; lastValue: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant | undefined; nextValue: (index: number, filter?: _yamada_ui_use_descendant.FilterDescendant | undefined, loop?: boolean) => _yamada_ui_use_descendant.Descendant | undefined; prevValue: (index: number, filter?: _yamada_ui_use_descendant.FilterDescendant | undefined, loop?: boolean) => _yamada_ui_use_descendant.Descendant | undefined; register: (nodeOrOptions?: HTMLElement | { id?: string; disabled?: boolean; filter?: _yamada_ui_use_descendant.FilterDescendant | undefined; } | null | undefined) => void | ((node: HTMLElement | null) => void); unregister: (node?: HTMLElement | undefined) => void; value: (index: number, filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant | undefined; values: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant[]; }; interface SelectItemWithValue extends OptionProps { label?: ReactNode; value?: string; } interface SelectItemWithItems extends OptionGroupProps { items?: SelectItemWithValue[]; } type SelectItem = SelectItemWithItems | SelectItemWithValue; type MaybeValue = string | string[]; interface SelectContext extends Omit { containerRef: RefObject; fieldRef: RefObject; focusedIndex: number; label: MaybeValue | undefined; open: boolean; setFocusedIndex: Dispatch>; styles: { [key: string]: CSSUIObject | undefined; }; value: MaybeValue; onChange: (newValue: string) => void; onClose: () => void; onFocusFirst: () => void; onFocusLast: () => void; onFocusNext: () => void; onFocusPrev: () => void; onOpen: () => void; } declare const SelectProvider: react.Provider; declare const useSelectContext: () => SelectContext; interface UseSelectProps extends Merge, ComboBoxProps>, FormControlOptions { /** * The HTML `name` attribute used for forms. */ name?: string; /** * If `true`, the list element will be closed when value is selected. * * @default true */ closeOnSelect?: boolean; /** * The initial value of the select. */ defaultValue?: T; /** * If provided, generate options based on items. */ items?: SelectItem[]; /** * The maximum selectable value. */ maxSelectValues?: number; /** * If `true`, the selected item(s) will be excluded from the list. * * @default false */ omitSelectedValues?: boolean; /** * The placeholder of the select. */ placeholder?: string; /** * If `true`, include placeholders in options. * * @default true */ placeholderInOptions?: boolean; /** * The value of the select. */ value?: T; /** * Props for select option element. */ optionProps?: Omit; /** * The callback invoked when value state changes. */ onChange?: (value: T) => void; } declare const useSelect: (props: UseSelectProps) => { children: ReactElement>[]; closeOnSelect: boolean; containerRef: RefObject; descendants: { count: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => number; destroy: () => void; enabledCount: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => number; enabledFirstValue: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant | undefined; enabledIndexOf: (node?: HTMLElement | null | undefined, filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => number; enabledLastValue: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant | undefined; enabledNextValue: (index: number, filter?: _yamada_ui_use_descendant.FilterDescendant | undefined, loop?: boolean) => _yamada_ui_use_descendant.Descendant | undefined; enabledPrevValue: (index: number, filter?: _yamada_ui_use_descendant.FilterDescendant | undefined, loop?: boolean) => _yamada_ui_use_descendant.Descendant | undefined; enabledValue: (index: number, filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant | undefined; enabledValues: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant[]; firstValue: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant | undefined; indexOf: (node?: HTMLElement | null | undefined) => number; lastValue: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant | undefined; nextValue: (index: number, filter?: _yamada_ui_use_descendant.FilterDescendant | undefined, loop?: boolean) => _yamada_ui_use_descendant.Descendant | undefined; prevValue: (index: number, filter?: _yamada_ui_use_descendant.FilterDescendant | undefined, loop?: boolean) => _yamada_ui_use_descendant.Descendant | undefined; register: (nodeOrOptions?: HTMLElement | { id?: string; disabled?: boolean; filter?: _yamada_ui_use_descendant.FilterDescendant | undefined; } | null | undefined) => void | ((node: HTMLElement | null) => void); unregister: (node?: HTMLElement | undefined) => void; value: (index: number, filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant | undefined; values: (filter?: _yamada_ui_use_descendant.FilterDescendant | undefined) => _yamada_ui_use_descendant.Descendant[]; }; empty: boolean; fieldRef: RefObject; focusedIndex: number; label: T | undefined; omitSelectedValues: boolean; open: boolean; placeholder: string | undefined; placeholderInOptions: boolean; setFocusedIndex: Dispatch>; value: T; formControlProps: { disabled: boolean | undefined; "aria-disabled": boolean | undefined; _active?: ({} & CSSUIObject) | undefined; _focus?: ({} & CSSUIObject) | undefined; _focusVisible?: ({} & CSSUIObject) | undefined; _hover?: ({} & CSSUIObject) | undefined; _invalid?: ({} & CSSUIObject) | undefined; "aria-invalid": boolean | undefined; "aria-required": boolean | undefined; onFocus: (event: FocusEvent) => void; onBlur: (event: FocusEvent) => void; readOnly: boolean | undefined; required: boolean | undefined; "data-readonly": boolean | "false" | "true"; }; getContainerProps: PropGetter<"div", undefined>; getFieldProps: PropGetter<"div", undefined>; getPopoverProps: (props?: PopoverProps) => PopoverProps; optionProps: Omit | undefined; onChange: (newValue: string) => void; onClear: (ev: MouseEvent) => void; onClose: () => void; onFocusFirst: () => void; onFocusLast: () => void; onFocusNext: () => void; onFocusPrev: () => void; onFocusSelected: () => void; onOpen: () => void; }; type UseSelectReturn = ReturnType; export { type MaybeValue, SelectDescendantsContextProvider, type SelectItem, SelectProvider, type UseSelectProps, type UseSelectReturn, useSelect, useSelectContext, useSelectDescendant, useSelectDescendants, useSelectDescendantsContext };