UNPKG

@kobalte/core

Version:

Unstyled components and primitives for building accessible web apps and design systems with SolidJS.

126 lines (120 loc) 3.19 kB
import { MenuCheckboxItem, MenuContent, MenuGroup, MenuGroupLabel, MenuIcon, MenuItem, MenuItemDescription, MenuItemIndicator, MenuItemLabel, MenuPortal, MenuRadioGroup, MenuRadioItem, MenuRoot, MenuSub, MenuSubContent, MenuSubTrigger, MenuTrigger, useMenuContext, useMenuRootContext } from "./LEK3K6R3.jsx"; import { SeparatorRoot } from "./T4C3DMHT.jsx"; import { PopperArrow } from "./2CTBMVJ4.jsx"; import { __export } from "./5WXHJDCZ.jsx"; // src/dropdown-menu/index.tsx var dropdown_menu_exports = {}; __export(dropdown_menu_exports, { Arrow: () => PopperArrow, CheckboxItem: () => MenuCheckboxItem, Content: () => DropdownMenuContent, DropdownMenu: () => DropdownMenu, Group: () => MenuGroup, GroupLabel: () => MenuGroupLabel, Icon: () => MenuIcon, Item: () => MenuItem, ItemDescription: () => MenuItemDescription, ItemIndicator: () => MenuItemIndicator, ItemLabel: () => MenuItemLabel, Portal: () => MenuPortal, RadioGroup: () => MenuRadioGroup, RadioItem: () => MenuRadioItem, Root: () => DropdownMenuRoot, Separator: () => SeparatorRoot, Sub: () => MenuSub, SubContent: () => MenuSubContent, SubTrigger: () => MenuSubTrigger, Trigger: () => MenuTrigger }); // src/dropdown-menu/dropdown-menu-content.tsx import { focusWithoutScrolling } from "@kobalte/utils"; import { splitProps } from "solid-js"; function DropdownMenuContent(props) { const rootContext = useMenuRootContext(); const context = useMenuContext(); const [local, others] = splitProps(props, [ "onCloseAutoFocus", "onInteractOutside" ]); let hasInteractedOutside = false; const onCloseAutoFocus = (e) => { local.onCloseAutoFocus?.(e); if (!hasInteractedOutside) { focusWithoutScrolling(context.triggerRef()); } hasInteractedOutside = false; e.preventDefault(); }; const onInteractOutside = (e) => { local.onInteractOutside?.(e); if (!rootContext.isModal() || e.detail.isContextMenu) { hasInteractedOutside = true; } }; return <MenuContent onCloseAutoFocus={onCloseAutoFocus} onInteractOutside={onInteractOutside} {...others} />; } // src/dropdown-menu/dropdown-menu-root.tsx import { mergeDefaultProps } from "@kobalte/utils"; import { createUniqueId } from "solid-js"; function DropdownMenuRoot(props) { const defaultId = `dropdownmenu-${createUniqueId()}`; const mergedProps = mergeDefaultProps({ id: defaultId }, props); return <MenuRoot {...mergedProps} />; } // src/dropdown-menu/index.tsx var DropdownMenu = Object.assign(DropdownMenuRoot, { Arrow: PopperArrow, CheckboxItem: MenuCheckboxItem, Content: DropdownMenuContent, Group: MenuGroup, GroupLabel: MenuGroupLabel, Icon: MenuIcon, Item: MenuItem, ItemDescription: MenuItemDescription, ItemIndicator: MenuItemIndicator, ItemLabel: MenuItemLabel, Portal: MenuPortal, RadioGroup: MenuRadioGroup, RadioItem: MenuRadioItem, Separator: SeparatorRoot, Sub: MenuSub, SubContent: MenuSubContent, SubTrigger: MenuSubTrigger, Trigger: MenuTrigger }); export { DropdownMenuContent, DropdownMenuRoot, DropdownMenu, dropdown_menu_exports };