UNPKG

@yamada-ui/react

Version:

React UI components of the Yamada, by the Yamada, for the Yamada built with React and Emotion

283 lines (282 loc) • 16 kB
import { HTMLProps, PropGetter } from "../../core/components/index.types.js"; import "../../core/index.js"; import { Descendant, DescendantProps, Descendants } from "../../hooks/use-descendants/index.js"; import { UseDisclosureProps } from "../../hooks/use-disclosure/use-disclosure.js"; import "../../index.js"; import * as react807 from "react"; import { RefObject } from "react"; //#region src/components/menu/use-menu.d.ts type SubMenuDirection = "end" | "start"; interface MenuDescendantProps { id: string; } type MenuDescendant = Descendant<HTMLDivElement, MenuDescendantProps>; declare const MenuDescendantsContext: react807.Context<{ active: (target?: HTMLDivElement | Descendant<HTMLDivElement, MenuDescendantProps> | null | undefined, options?: FocusOptions) => void; count: () => number; destroy: () => void; enabledCount: () => number; enabledFirstValue: () => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; enabledIndexOf: (target?: HTMLDivElement | Descendant<HTMLDivElement, MenuDescendantProps> | null | undefined) => number; enabledLastValue: () => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; enabledNextValue: (indexOrNode: number | HTMLDivElement | Descendant<HTMLDivElement, MenuDescendantProps> | null, loop?: boolean) => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; enabledPrevValue: (indexOrNode: number | HTMLDivElement | Descendant<HTMLDivElement, MenuDescendantProps> | null, loop?: boolean) => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; enabledValue: (index: number) => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; enabledValues: () => Descendant<HTMLDivElement, MenuDescendantProps>[]; firstValue: () => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; indexOf: (target?: HTMLDivElement | Descendant<HTMLDivElement, MenuDescendantProps> | null | undefined) => number; lastValue: () => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; nextValue: (indexOrNode: number | HTMLDivElement | Descendant<HTMLDivElement, MenuDescendantProps> | null, loop?: boolean) => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; prevValue: (indexOrNode: number | HTMLDivElement | Descendant<HTMLDivElement, MenuDescendantProps> | null, loop?: boolean) => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; register: (props?: DescendantProps<HTMLDivElement, MenuDescendantProps> | undefined) => react807.RefCallback<HTMLDivElement>; unregister: (node?: HTMLDivElement | null | undefined) => void; value: (indexOrNode: number | HTMLDivElement | null) => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; values: () => Descendant<HTMLDivElement, MenuDescendantProps>[]; }>, useMenuDescendant: (props?: DescendantProps<HTMLDivElement, MenuDescendantProps> | undefined) => { descendants: { active: (target?: HTMLDivElement | Descendant<HTMLDivElement, MenuDescendantProps> | null | undefined, options?: FocusOptions) => void; count: () => number; destroy: () => void; enabledCount: () => number; enabledFirstValue: () => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; enabledIndexOf: (target?: HTMLDivElement | Descendant<HTMLDivElement, MenuDescendantProps> | null | undefined) => number; enabledLastValue: () => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; enabledNextValue: (indexOrNode: number | HTMLDivElement | Descendant<HTMLDivElement, MenuDescendantProps> | null, loop?: boolean) => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; enabledPrevValue: (indexOrNode: number | HTMLDivElement | Descendant<HTMLDivElement, MenuDescendantProps> | null, loop?: boolean) => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; enabledValue: (index: number) => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; enabledValues: () => Descendant<HTMLDivElement, MenuDescendantProps>[]; firstValue: () => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; indexOf: (target?: HTMLDivElement | Descendant<HTMLDivElement, MenuDescendantProps> | null | undefined) => number; lastValue: () => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; nextValue: (indexOrNode: number | HTMLDivElement | Descendant<HTMLDivElement, MenuDescendantProps> | null, loop?: boolean) => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; prevValue: (indexOrNode: number | HTMLDivElement | Descendant<HTMLDivElement, MenuDescendantProps> | null, loop?: boolean) => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; register: (props?: DescendantProps<HTMLDivElement, MenuDescendantProps> | undefined) => react807.RefCallback<HTMLDivElement>; unregister: (node?: HTMLDivElement | null | undefined) => void; value: (indexOrNode: number | HTMLDivElement | null) => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; values: () => Descendant<HTMLDivElement, MenuDescendantProps>[]; }; register: react807.RefCallback<HTMLDivElement>; }, useMenuDescendants: () => { active: (target?: HTMLDivElement | Descendant<HTMLDivElement, MenuDescendantProps> | null | undefined, options?: FocusOptions) => void; count: () => number; destroy: () => void; enabledCount: () => number; enabledFirstValue: () => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; enabledIndexOf: (target?: HTMLDivElement | Descendant<HTMLDivElement, MenuDescendantProps> | null | undefined) => number; enabledLastValue: () => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; enabledNextValue: (indexOrNode: number | HTMLDivElement | Descendant<HTMLDivElement, MenuDescendantProps> | null, loop?: boolean) => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; enabledPrevValue: (indexOrNode: number | HTMLDivElement | Descendant<HTMLDivElement, MenuDescendantProps> | null, loop?: boolean) => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; enabledValue: (index: number) => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; enabledValues: () => Descendant<HTMLDivElement, MenuDescendantProps>[]; firstValue: () => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; indexOf: (target?: HTMLDivElement | Descendant<HTMLDivElement, MenuDescendantProps> | null | undefined) => number; lastValue: () => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; nextValue: (indexOrNode: number | HTMLDivElement | Descendant<HTMLDivElement, MenuDescendantProps> | null, loop?: boolean) => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; prevValue: (indexOrNode: number | HTMLDivElement | Descendant<HTMLDivElement, MenuDescendantProps> | null, loop?: boolean) => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; register: (props?: DescendantProps<HTMLDivElement, MenuDescendantProps> | undefined) => react807.RefCallback<HTMLDivElement>; unregister: (node?: HTMLDivElement | null | undefined) => void; value: (indexOrNode: number | HTMLDivElement | null) => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; values: () => Descendant<HTMLDivElement, MenuDescendantProps>[]; }; interface MenuContext extends Pick<UseMenuReturn, "onActiveDescendant" | "onClose" | "onCloseSubMenu" | "onOpen" | "onSelect" | "subMenu" | "subMenuDirection"> {} declare const MenuContext: react807.Context<MenuContext>, useMenuContext: () => MenuContext; interface MenuGroupContext extends Pick<UseMenuGroupReturn, "getLabelProps"> {} declare const MenuGroupContext: react807.Context<MenuGroupContext>, useMenuGroupContext: () => MenuGroupContext; interface MainMenuContext { descendants: Descendants<HTMLDivElement, MenuDescendantProps>; onActiveDescendant: (descendant?: MenuDescendant) => void; onCloseRef: RefObject<() => void>; onSelect: (value?: string, closeOnSelect?: boolean) => void; closeOnSelect?: boolean; } declare const MainMenuContext: react807.Context<MainMenuContext | undefined>, useMainMenuContext: () => MainMenuContext | undefined; interface MenuOptionGroupContext { type: "checkbox" | "radio"; value: string | string[]; onChange?: (value: string) => void; } declare const MenuOptionGroupContext: react807.Context<MenuOptionGroupContext>, useMenuOptionGroupContext: () => MenuOptionGroupContext; interface UseMenuProps extends Omit<UseDisclosureProps, "timing"> { /** * If `true`, the menu item will be closed when selected. * * @default true */ closeOnSelect?: boolean; /** * If `true`, the menu will be disabled. * * @default false */ disabled?: boolean; /** * The direction of the sub menu. * * @default 'end' */ subMenuDirection?: SubMenuDirection; /** * Callback invoked when a menu item is selected. */ onSelect?: (value?: string) => void; } declare const useMenu: ({ closeOnSelect, defaultOpen, disabled, open: openProp, subMenuDirection, onClose: onCloseProp, onOpen: onOpenProp, onSelect: onSelectProp }?: UseMenuProps) => { closeOnSelect: boolean; descendants: { active: (target?: HTMLDivElement | Descendant<HTMLDivElement, MenuDescendantProps> | null | undefined, options?: FocusOptions) => void; count: () => number; destroy: () => void; enabledCount: () => number; enabledFirstValue: () => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; enabledIndexOf: (target?: HTMLDivElement | Descendant<HTMLDivElement, MenuDescendantProps> | null | undefined) => number; enabledLastValue: () => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; enabledNextValue: (indexOrNode: number | HTMLDivElement | Descendant<HTMLDivElement, MenuDescendantProps> | null, loop?: boolean) => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; enabledPrevValue: (indexOrNode: number | HTMLDivElement | Descendant<HTMLDivElement, MenuDescendantProps> | null, loop?: boolean) => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; enabledValue: (index: number) => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; enabledValues: () => Descendant<HTMLDivElement, MenuDescendantProps>[]; firstValue: () => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; indexOf: (target?: HTMLDivElement | Descendant<HTMLDivElement, MenuDescendantProps> | null | undefined) => number; lastValue: () => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; nextValue: (indexOrNode: number | HTMLDivElement | Descendant<HTMLDivElement, MenuDescendantProps> | null, loop?: boolean) => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; prevValue: (indexOrNode: number | HTMLDivElement | Descendant<HTMLDivElement, MenuDescendantProps> | null, loop?: boolean) => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; register: (props?: DescendantProps<HTMLDivElement, MenuDescendantProps> | undefined) => react807.RefCallback<HTMLDivElement>; unregister: (node?: HTMLDivElement | null | undefined) => void; value: (indexOrNode: number | HTMLDivElement | null) => Descendant<HTMLDivElement, MenuDescendantProps> | undefined; values: () => Descendant<HTMLDivElement, MenuDescendantProps>[]; }; open: boolean; subMenu: boolean; subMenuDirection: SubMenuDirection; updateRef: RefObject<() => void>; getContentProps: PropGetter<"div", undefined, undefined>; getContextTriggerProps: PropGetter<"div", undefined, undefined>; getSeparatorProps: PropGetter<"div", undefined, undefined>; getTriggerProps: PropGetter<"div", undefined, undefined>; onActiveDescendant: (descendant?: MenuDescendant, options?: FocusOptions) => void; onClose: () => void | Promise<void>; onCloseRef: RefObject<() => void>; onCloseSubMenu: () => void; onOpen: () => void | Promise<void>; onSelect: (value?: string, closeOnSelectProp?: boolean) => void; }; type UseMenuReturn = ReturnType<typeof useMenu>; interface UseSubMenuProps extends Omit<Required<UseDisclosureProps>, "defaultOpen" | "timing"> { descendants: Descendants<HTMLDivElement, MenuDescendantProps>; onActiveDescendant: (descendant?: MenuDescendant) => void; disabled?: boolean; subMenuDirection?: SubMenuDirection; } declare const useSubMenu: ({ descendants, disabled, open, subMenuDirection, onActiveDescendant, onClose, onOpen }: UseSubMenuProps) => { mainCloseOnSelect: boolean | undefined; subMenu: boolean; getSubMenuProps: PropGetter<"div", undefined, undefined>; onMainSelect: ((value?: string, closeOnSelect?: boolean) => void) | undefined; }; type UseSubMenuReturn = ReturnType<typeof useSubMenu>; interface UseMenuGroupProps extends HTMLProps {} declare const useMenuGroup: ({ "aria-labelledby": ariaLabelledbyProp, ...rest }: UseMenuGroupProps) => { getGroupProps: PropGetter<"div", undefined, undefined>; getLabelProps: PropGetter<"span", undefined, undefined>; }; type UseMenuGroupReturn = ReturnType<typeof useMenuGroup>; interface UseMenuItemProps extends HTMLProps { /** * If `true`, the menu item will be closed when selected. */ closeOnSelect?: boolean; /** * If `true`, the menu item will be disabled. * * @default false */ disabled?: boolean; /** * The value of the menu item. */ value?: string; } declare const useMenuItem: ({ id, "aria-disabled": ariaDisabled, "data-disabled": dataDisabled, "data-trigger": dataTrigger, closeOnSelect, disabled, value, ...rest }: UseMenuItemProps) => { subMenuTrigger: boolean; getItemProps: PropGetter<"div", undefined, undefined>; }; type UseMenuItemReturn = ReturnType<typeof useMenuItem>; type MenuOptionGroupType = "checkbox" | "radio"; type MenuOptionGroupValue<Y extends MenuOptionGroupType> = Y extends "checkbox" ? string[] : string; interface UseMenuOptionGroupProps<Y extends MenuOptionGroupType = "checkbox", M extends MenuOptionGroupValue<Y> = MenuOptionGroupValue<Y>> { /** * The type of the menu option group. */ type?: Y; /** * The initial value of the menu item group. */ defaultValue?: M; /** * The value of the menu item group. */ value?: M; /** * The callback fired when any children checkbox is checked or unchecked. */ onChange?: (value: M) => void; } declare const useMenuOptionGroup: <Y extends "checkbox" | "radio" = "checkbox", M extends (Y extends "checkbox" ? string[] : string) = (Y extends "checkbox" ? string[] : string)>({ type, defaultValue, value: valueProp, onChange: onChangeProp }: UseMenuOptionGroupProps<Y, M>) => { type: Y; value: M; onChange: (selectedValue: string) => void; }; type UseMenuOptionGroupReturn = ReturnType<typeof useMenuOptionGroup>; interface UseMenuOptionItemProps extends UseMenuItemProps { /** * The value of the menu option item. */ value: string; } declare const useMenuOptionItem: ({ disabled, value, ...rest }: UseMenuOptionItemProps) => { type: "checkbox" | "radio"; selected: boolean; getIndicatorProps: PropGetter<"div", undefined, undefined>; getOptionItemProps: PropGetter<"div", undefined, undefined>; }; type UseMenuOptionItemReturn = ReturnType<typeof useMenuOptionItem>; //#endregion export { MainMenuContext, MenuContext, MenuDescendantsContext, MenuGroupContext, MenuOptionGroupContext, MenuOptionGroupType, MenuOptionGroupValue, UseMenuGroupProps, UseMenuGroupReturn, UseMenuItemProps, UseMenuItemReturn, UseMenuOptionGroupProps, UseMenuOptionGroupReturn, UseMenuOptionItemProps, UseMenuOptionItemReturn, UseMenuProps, UseMenuReturn, UseSubMenuProps, UseSubMenuReturn, useMainMenuContext, useMenu, useMenuContext, useMenuDescendant, useMenuDescendants, useMenuGroup, useMenuGroupContext, useMenuItem, useMenuOptionGroup, useMenuOptionGroupContext, useMenuOptionItem, useSubMenu }; //# sourceMappingURL=use-menu.d.ts.map