@primereact/headless 11.0.0-alpha.1 → 11.0.0-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/accordion/index.mjs +1 -1
- package/accordion/index.mjs.map +1 -1
- package/accordion/useAccordion.d.ts +6 -6
- package/animateonscroll/index.d.ts +2 -0
- package/animateonscroll/index.mjs +2 -0
- package/animateonscroll/index.mjs.map +1 -0
- package/animateonscroll/useAnimateOnScroll.d.ts +3 -0
- package/animateonscroll/useAnimateOnScroll.props.d.ts +2 -0
- package/animateonscroll/useAnimateOnScroll.test.d.ts +0 -0
- package/autocomplete/index.d.ts +2 -0
- package/autocomplete/index.mjs +2 -0
- package/autocomplete/index.mjs.map +1 -0
- package/autocomplete/useAutoComplete.d.ts +87 -0
- package/autocomplete/useAutoComplete.props.d.ts +2 -0
- package/autocomplete/useAutoComplete.test.d.ts +0 -0
- package/breadcrumb/index.d.ts +2 -0
- package/breadcrumb/index.mjs +2 -0
- package/breadcrumb/index.mjs.map +1 -0
- package/breadcrumb/useBreadcrumb.d.ts +3 -0
- package/breadcrumb/useBreadcrumb.props.d.ts +2 -0
- package/breadcrumb/useBreadcrumb.test.d.ts +0 -0
- package/carousel/index.d.ts +2 -0
- package/carousel/index.mjs +2 -0
- package/carousel/index.mjs.map +1 -0
- package/carousel/useCarousel.d.ts +23 -0
- package/carousel/useCarousel.props.d.ts +2 -0
- package/carousel/useCarousel.test.d.ts +0 -0
- package/checkboxgroup/index.d.ts +2 -0
- package/checkboxgroup/index.mjs +2 -0
- package/checkboxgroup/index.mjs.map +1 -0
- package/checkboxgroup/useCheckboxGroup.d.ts +7 -0
- package/checkboxgroup/useCheckboxGroup.props.d.ts +2 -0
- package/checkboxgroup/useCheckboxGroup.test.d.ts +0 -0
- package/collapsible/index.d.ts +2 -0
- package/collapsible/index.mjs +2 -0
- package/collapsible/index.mjs.map +1 -0
- package/collapsible/useCollapsible.d.ts +9 -0
- package/collapsible/useCollapsible.props.d.ts +2 -0
- package/collapsible/useCollapsible.test.d.ts +0 -0
- package/colorpicker/colorManager.d.ts +102 -0
- package/colorpicker/index.d.ts +3 -0
- package/colorpicker/index.mjs +2 -0
- package/colorpicker/index.mjs.map +1 -0
- package/colorpicker/useColorPicker.d.ts +59 -0
- package/colorpicker/useColorPicker.props.d.ts +2 -0
- package/colorpicker/useColorPicker.test.d.ts +0 -0
- package/commandmenu/index.d.ts +2 -0
- package/commandmenu/index.mjs +2 -0
- package/commandmenu/index.mjs.map +1 -0
- package/commandmenu/useCommandMenu.d.ts +11 -0
- package/commandmenu/useCommandMenu.props.d.ts +2 -0
- package/commandmenu/useCommandMenu.test.d.ts +0 -0
- package/compare/index.d.ts +2 -0
- package/compare/index.mjs +2 -0
- package/compare/index.mjs.map +1 -0
- package/compare/useCompare.d.ts +35 -0
- package/compare/useCompare.props.d.ts +2 -0
- package/compare/useCompare.test.d.ts +0 -0
- package/confirmdialog/index.d.ts +2 -0
- package/confirmdialog/index.mjs +2 -0
- package/confirmdialog/index.mjs.map +1 -0
- package/confirmdialog/useConfirmDialog.d.ts +43 -0
- package/confirmdialog/useConfirmDialog.props.d.ts +2 -0
- package/confirmdialog/useConfirmDialog.test.d.ts +0 -0
- package/confirmpopup/index.d.ts +2 -0
- package/confirmpopup/index.mjs +2 -0
- package/confirmpopup/index.mjs.map +1 -0
- package/confirmpopup/useConfirmPopup.d.ts +25 -0
- package/confirmpopup/useConfirmPopup.props.d.ts +2 -0
- package/confirmpopup/useConfirmPopup.test.d.ts +0 -0
- package/contextmenu/index.d.ts +2 -0
- package/contextmenu/index.mjs +2 -0
- package/contextmenu/index.mjs.map +1 -0
- package/contextmenu/useContextMenu.d.ts +1 -0
- package/contextmenu/useContextMenu.props.d.ts +2 -0
- package/contextmenu/useContextMenu.test.d.ts +0 -0
- package/dataview/index.d.ts +2 -0
- package/dataview/index.mjs +2 -0
- package/dataview/index.mjs.map +1 -0
- package/dataview/useDataView.d.ts +3 -0
- package/dataview/useDataView.props.d.ts +2 -0
- package/dataview/useDataView.test.d.ts +0 -0
- package/datepicker/index.d.ts +2 -0
- package/datepicker/index.mjs +2 -0
- package/datepicker/index.mjs.map +1 -0
- package/datepicker/useDatePicker.d.ts +114 -0
- package/datepicker/useDatePicker.props.d.ts +2 -0
- package/datepicker/useDatePicker.test.d.ts +0 -0
- package/dialog/index.d.ts +2 -0
- package/dialog/index.mjs +2 -0
- package/dialog/index.mjs.map +1 -0
- package/dialog/useDialog.d.ts +30 -0
- package/dialog/useDialog.props.d.ts +2 -0
- package/dialog/useDialog.test.d.ts +0 -0
- package/drawer/index.d.ts +2 -0
- package/drawer/index.mjs +2 -0
- package/drawer/index.mjs.map +1 -0
- package/drawer/useDrawer.d.ts +24 -0
- package/drawer/useDrawer.props.d.ts +2 -0
- package/drawer/useDrawer.test.d.ts +0 -0
- package/fieldset/index.mjs +1 -1
- package/fieldset/index.mjs.map +1 -1
- package/fieldset/useFieldset.d.ts +29 -1
- package/fileupload/index.d.ts +2 -0
- package/fileupload/index.mjs +2 -0
- package/fileupload/index.mjs.map +1 -0
- package/fileupload/useFileUpload.d.ts +26 -0
- package/fileupload/useFileUpload.props.d.ts +2 -0
- package/fileupload/useFileUpload.test.d.ts +0 -0
- package/floatlabel/index.d.ts +2 -0
- package/floatlabel/index.mjs +2 -0
- package/floatlabel/index.mjs.map +1 -0
- package/floatlabel/useFloatLabel.d.ts +1 -0
- package/floatlabel/useFloatLabel.props.d.ts +2 -0
- package/floatlabel/useFloatLabel.test.d.ts +0 -0
- package/fluid/index.d.ts +2 -0
- package/fluid/index.mjs +2 -0
- package/fluid/index.mjs.map +1 -0
- package/fluid/useFluid.d.ts +1 -0
- package/fluid/useFluid.props.d.ts +2 -0
- package/fluid/useFluid.test.d.ts +0 -0
- package/focustrap/index.d.ts +2 -0
- package/focustrap/index.mjs +2 -0
- package/focustrap/index.mjs.map +1 -0
- package/focustrap/useFocusTrap.d.ts +9 -0
- package/focustrap/useFocusTrap.props.d.ts +2 -0
- package/focustrap/useFocusTrap.test.d.ts +0 -0
- package/gallery/index.d.ts +2 -0
- package/gallery/index.mjs +2 -0
- package/gallery/index.mjs.map +1 -0
- package/gallery/item/index.d.ts +2 -0
- package/gallery/item/index.mjs +2 -0
- package/gallery/item/index.mjs.map +1 -0
- package/gallery/item/useGalleryItem.d.ts +45 -0
- package/gallery/item/useGalleryItem.props.d.ts +2 -0
- package/gallery/useGallery.d.ts +31 -0
- package/gallery/useGallery.props.d.ts +2 -0
- package/gallery/useGallery.test.d.ts +0 -0
- package/iconfield/index.d.ts +2 -0
- package/iconfield/index.mjs +2 -0
- package/iconfield/index.mjs.map +1 -0
- package/iconfield/useIconField.d.ts +1 -0
- package/iconfield/useIconField.props.d.ts +2 -0
- package/iconfield/useIconField.test.d.ts +0 -0
- package/iftalabel/index.d.ts +2 -0
- package/iftalabel/index.mjs +2 -0
- package/iftalabel/index.mjs.map +1 -0
- package/iftalabel/useIftaLabel.d.ts +1 -0
- package/iftalabel/useIftaLabel.props.d.ts +2 -0
- package/iftalabel/useIftaLabel.test.d.ts +0 -0
- package/inplace/index.mjs +1 -1
- package/inplace/index.mjs.map +1 -1
- package/inplace/useInplace.d.ts +1 -1
- package/inputgroup/index.d.ts +2 -0
- package/inputgroup/index.mjs +2 -0
- package/inputgroup/index.mjs.map +1 -0
- package/inputgroup/useInputGroup.d.ts +1 -0
- package/inputgroup/useInputGroup.props.d.ts +2 -0
- package/inputgroup/useInputGroup.test.d.ts +0 -0
- package/inputnumber/index.d.ts +2 -0
- package/inputnumber/index.mjs +2 -0
- package/inputnumber/index.mjs.map +1 -0
- package/inputnumber/useInputNumber.d.ts +23 -0
- package/inputnumber/useInputNumber.props.d.ts +2 -0
- package/inputnumber/useInputNumber.test.d.ts +0 -0
- package/inputotp/index.d.ts +2 -0
- package/inputotp/index.mjs +2 -0
- package/inputotp/index.mjs.map +1 -0
- package/inputotp/useInputOtp.d.ts +14 -0
- package/inputotp/useInputOtp.props.d.ts +2 -0
- package/inputotp/useInputOtp.test.d.ts +0 -0
- package/inputtags/index.d.ts +2 -0
- package/inputtags/index.mjs +2 -0
- package/inputtags/index.mjs.map +1 -0
- package/inputtags/useInputTags.d.ts +86 -0
- package/inputtags/useInputTags.props.d.ts +2 -0
- package/inputtags/useInputTags.test.d.ts +0 -0
- package/knob/index.d.ts +2 -0
- package/knob/index.mjs +2 -0
- package/knob/index.mjs.map +1 -0
- package/knob/useKnob.d.ts +17 -0
- package/knob/useKnob.props.d.ts +2 -0
- package/knob/useKnob.test.d.ts +0 -0
- package/listbox/index.d.ts +2 -0
- package/listbox/index.mjs +2 -0
- package/listbox/index.mjs.map +1 -0
- package/listbox/useListbox.d.ts +52 -0
- package/listbox/useListbox.props.d.ts +2 -0
- package/listbox/useListbox.test.d.ts +0 -0
- package/menu/index.d.ts +2 -0
- package/menu/index.mjs +2 -0
- package/menu/index.mjs.map +1 -0
- package/menu/sub/index.d.ts +2 -0
- package/menu/sub/index.mjs +2 -0
- package/menu/sub/index.mjs.map +1 -0
- package/menu/sub/useMenuSub.d.ts +19 -0
- package/menu/sub/useMenuSub.props.d.ts +2 -0
- package/menu/useMenu.d.ts +34 -0
- package/menu/useMenu.props.d.ts +2 -0
- package/menu/useMenu.test.d.ts +0 -0
- package/message/index.d.ts +2 -0
- package/message/index.mjs +2 -0
- package/message/index.mjs.map +1 -0
- package/message/useMessage.d.ts +6 -0
- package/message/useMessage.props.d.ts +2 -0
- package/message/useMessage.test.d.ts +0 -0
- package/orgchart/index.d.ts +2 -0
- package/orgchart/index.mjs +2 -0
- package/orgchart/index.mjs.map +1 -0
- package/orgchart/useOrgChart.d.ts +20 -0
- package/orgchart/useOrgChart.props.d.ts +2 -0
- package/orgchart/useOrgChart.test.d.ts +0 -0
- package/overlay/index.d.ts +2 -0
- package/overlay/index.mjs +2 -0
- package/overlay/index.mjs.map +1 -0
- package/overlay/useOverlay.d.ts +16 -0
- package/overlay/useOverlay.props.d.ts +2 -0
- package/overlay/useOverlay.test.d.ts +0 -0
- package/overlaybadge/index.d.ts +2 -0
- package/overlaybadge/index.mjs +2 -0
- package/overlaybadge/index.mjs.map +1 -0
- package/overlaybadge/useOverlayBadge.d.ts +1 -0
- package/overlaybadge/useOverlayBadge.props.d.ts +2 -0
- package/overlaybadge/useOverlayBadge.test.d.ts +0 -0
- package/package.json +6 -6
- package/paginator/index.d.ts +2 -0
- package/paginator/index.mjs +2 -0
- package/paginator/index.mjs.map +1 -0
- package/paginator/usePaginator.d.ts +19 -0
- package/paginator/usePaginator.props.d.ts +2 -0
- package/paginator/usePaginator.test.d.ts +0 -0
- package/panel/index.mjs +1 -1
- package/panel/index.mjs.map +1 -1
- package/panel/usePanel.d.ts +24 -7
- package/password/index.d.ts +2 -0
- package/password/index.mjs +2 -0
- package/password/index.mjs.map +1 -0
- package/password/usePassword.d.ts +9 -0
- package/password/usePassword.props.d.ts +2 -0
- package/password/usePassword.test.d.ts +0 -0
- package/placer/index.d.ts +2 -0
- package/placer/index.mjs +2 -0
- package/placer/index.mjs.map +1 -0
- package/placer/usePlacer.d.ts +12 -0
- package/placer/usePlacer.props.d.ts +2 -0
- package/placer/usePlacer.test.d.ts +0 -0
- package/popover/index.d.ts +2 -0
- package/popover/index.mjs +2 -0
- package/popover/index.mjs.map +1 -0
- package/popover/usePopover.d.ts +19 -0
- package/popover/usePopover.props.d.ts +2 -0
- package/popover/usePopover.test.d.ts +0 -0
- package/portal/index.d.ts +2 -0
- package/portal/index.mjs +2 -0
- package/portal/index.mjs.map +1 -0
- package/portal/usePortal.d.ts +3 -0
- package/portal/usePortal.props.d.ts +2 -0
- package/portal/usePortal.test.d.ts +0 -0
- package/positioner/index.d.ts +2 -0
- package/positioner/index.mjs +2 -0
- package/positioner/index.mjs.map +1 -0
- package/positioner/usePositioner copy.d.ts +18 -0
- package/positioner/usePositioner.d.ts +11 -0
- package/positioner/usePositioner.props.d.ts +2 -0
- package/positioner/usePositioner.test.d.ts +0 -0
- package/radiobuttongroup/index.d.ts +2 -0
- package/radiobuttongroup/index.mjs +2 -0
- package/radiobuttongroup/index.mjs.map +1 -0
- package/radiobuttongroup/useRadioButtonGroup.d.ts +7 -0
- package/radiobuttongroup/useRadioButtonGroup.props.d.ts +2 -0
- package/radiobuttongroup/useRadioButtonGroup.test.d.ts +0 -0
- package/rating/index.d.ts +2 -0
- package/rating/index.mjs +2 -0
- package/rating/index.mjs.map +1 -0
- package/rating/useRating.d.ts +15 -0
- package/rating/useRating.props.d.ts +2 -0
- package/rating/useRating.test.d.ts +0 -0
- package/select/index.d.ts +2 -0
- package/select/index.mjs +2 -0
- package/select/index.mjs.map +1 -0
- package/select/useSelect.d.ts +87 -0
- package/select/useSelect.props.d.ts +2 -0
- package/select/useSelect.test.d.ts +1 -0
- package/slider/index.d.ts +2 -0
- package/slider/index.mjs +2 -0
- package/slider/index.mjs.map +1 -0
- package/slider/useSlider.d.ts +20 -0
- package/slider/useSlider.props.d.ts +2 -0
- package/slider/useSlider.test.d.ts +0 -0
- package/speeddial/index.d.ts +2 -0
- package/speeddial/index.mjs +2 -0
- package/speeddial/index.mjs.map +1 -0
- package/speeddial/useSpeedDial.d.ts +16 -0
- package/speeddial/useSpeedDial.props.d.ts +2 -0
- package/speeddial/useSpeedDial.test.d.ts +0 -0
- package/terminal/index.d.ts +2 -0
- package/terminal/index.mjs +2 -0
- package/terminal/index.mjs.map +1 -0
- package/terminal/useTerminal.d.ts +13 -0
- package/terminal/useTerminal.props.d.ts +2 -0
- package/terminal/useTerminal.test.d.ts +0 -0
- package/textarea/index.d.ts +2 -0
- package/textarea/index.mjs +2 -0
- package/textarea/index.mjs.map +1 -0
- package/textarea/useTextarea.d.ts +4 -0
- package/textarea/useTextarea.props.d.ts +2 -0
- package/textarea/useTextarea.test.d.ts +0 -0
- package/timeline/index.d.ts +2 -0
- package/timeline/index.mjs +2 -0
- package/timeline/index.mjs.map +1 -0
- package/timeline/useTimeline.d.ts +1 -0
- package/timeline/useTimeline.props.d.ts +2 -0
- package/timeline/useTimeline.test.d.ts +0 -0
- package/toast/index.d.ts +2 -0
- package/toast/index.mjs +2 -0
- package/toast/index.mjs.map +1 -0
- package/toast/useToast.d.ts +31 -0
- package/toast/useToast.props.d.ts +2 -0
- package/toast/useToast.test.d.ts +0 -0
- package/toaster/index.d.ts +3 -0
- package/toaster/index.mjs +2 -0
- package/toaster/index.mjs.map +1 -0
- package/toaster/toastStore.d.ts +40 -0
- package/toaster/useToaster.d.ts +26 -0
- package/toaster/useToaster.props.d.ts +2 -0
- package/toaster/useToaster.test.d.ts +0 -0
- package/togglebuttongroup/index.d.ts +2 -0
- package/togglebuttongroup/index.mjs +2 -0
- package/togglebuttongroup/index.mjs.map +1 -0
- package/togglebuttongroup/useToggleButtonGroup.d.ts +8 -0
- package/togglebuttongroup/useToggleButtonGroup.props.d.ts +2 -0
- package/togglebuttongroup/useToggleButtonGroup.test.d.ts +0 -0
- package/tooltip/group/index.d.ts +2 -0
- package/tooltip/group/index.mjs +2 -0
- package/tooltip/group/index.mjs.map +1 -0
- package/tooltip/group/useTooltipGroup.d.ts +9 -0
- package/tooltip/group/useTooltipGroup.props.d.ts +2 -0
- package/tooltip/group/useTooltipGroup.test.d.ts +0 -0
- package/tooltip/index.d.ts +2 -0
- package/tooltip/index.mjs +2 -0
- package/tooltip/index.mjs.map +1 -0
- package/tooltip/useTooltip.d.ts +28 -0
- package/tooltip/useTooltip.props.d.ts +2 -0
- package/tooltip/useTooltip.test.d.ts +0 -0
- package/tree/TreeDragDropService.d.ts +24 -0
- package/tree/index.d.ts +3 -0
- package/tree/index.mjs +2 -0
- package/tree/index.mjs.map +1 -0
- package/tree/useTree.d.ts +27 -0
- package/tree/useTree.props.d.ts +2 -0
- package/tree/useTree.test.d.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/menu/useMenu.ts","../../src/menu/useMenu.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { findSingle, focus, isPrintableCharacter } from '@primeuix/utils';\nimport * as React from 'react';\nimport { defaultProps } from './useMenu.props';\n\nexport const useMenu = withHeadless({\n name: 'useMenu',\n defaultProps,\n setup({ props }) {\n const [openState, setOpenState] = React.useState<boolean>(props.open !== undefined ? props.open : (props.defaultOpen ?? false));\n const [focusedState, setFocusedState] = React.useState<boolean>(false);\n const [focusedOptionId, setFocusedOptionId] = React.useState<string | string[]>(props.composite ? [] : '');\n const [contextMenuTarget, setContextMenuTarget] = React.useState<{ pageX: number; pageY: number } | null>(null);\n const isMouseInteractionRef = React.useRef(false);\n\n const portalRef = React.useRef<{ containerRef: { current: { elementRef: React.RefObject<HTMLDivElement> } } } | null>(null);\n const triggerRef = React.useRef<{ elementRef: React.RefObject<HTMLButtonElement> } | null>(null);\n const listRef = React.useRef<HTMLUListElement | null>(null);\n const itemRefsById = React.useRef<Map<string, HTMLElement>>(new Map());\n\n const state = {\n opened: openState,\n focused: focusedState,\n focusedOptionId,\n contextMenuTarget\n };\n\n const registerItem = React.useCallback((id: string, ref: HTMLElement) => {\n itemRefsById.current.set(id, ref);\n }, []);\n\n const unregisterItem = React.useCallback((id: string) => {\n itemRefsById.current.delete(id);\n }, []);\n\n const updateOpenState = (value: boolean) => {\n if (props.onOpenChange) {\n props.onOpenChange({ value });\n }\n };\n\n React.useEffect(() => {\n if (props.open !== undefined) {\n setOpenState(props.open);\n }\n }, [props.open]);\n\n const changeVisibleState = (isVisible: boolean) => {\n setOpenState(isVisible);\n updateOpenState(isVisible);\n };\n\n const getFocusableItems = React.useCallback(() => {\n const items: Array<{ id: string; element: HTMLElement }> = [];\n\n itemRefsById.current.forEach((element, id) => {\n const isDisabled = element.getAttribute('data-p-disabled') === 'true';\n\n if (isDisabled) return;\n\n let currentElement: HTMLElement | null = element;\n let isVisible = true;\n\n while (currentElement && currentElement !== listRef.current) {\n const parentList = currentElement.closest('[data-pc-name=\"menulist\"]') as HTMLElement | null;\n\n if (!parentList || parentList === listRef.current) break;\n\n const trigger = parentList.previousElementSibling as HTMLElement | null;\n\n if (trigger && trigger.getAttribute('aria-expanded') === 'false') {\n isVisible = false;\n break;\n }\n\n currentElement = parentList.parentElement;\n }\n\n if (!isVisible) return;\n\n items.push({ id, element });\n });\n\n return items;\n }, []);\n\n const getFocusableItemsAtCurrentLevel = React.useCallback(() => {\n const allFocusableItems = getFocusableItems();\n\n if (allFocusableItems.length === 0) return [];\n\n // Determine the root level depth by examining all items\n // Find the minimum underscore count among all items to determine root level depth\n const minDepth = Math.min(...allFocusableItems.map((item) => item.id.split('_').length));\n\n if (focusedOptionId.length === 0) {\n // No focus yet, return root level items\n const rootItems = allFocusableItems.filter((item) => {\n return item.id.split('_').length === minDepth;\n });\n\n return rootItems;\n }\n\n // Get the current focused item ID\n const currentFocusedId = focusedOptionId[focusedOptionId.length - 1];\n const currentIdParts = currentFocusedId.split('_');\n const currentDepth = currentIdParts.length;\n\n // Filter items that are at the same level and belong to the same parent\n const levelItems = allFocusableItems.filter((item) => {\n const itemParts = item.id.split('_');\n\n // Must have same depth\n if (itemParts.length !== currentDepth) return false;\n\n // For root level\n if (currentDepth === minDepth) {\n return itemParts.length === minDepth;\n }\n\n // For nested levels, check if they share the same parent path\n // Example: menu_0_1_2 and menu_0_1_3 share parent menu_0_1\n const currentParentPath = currentIdParts.slice(0, -1).join('_');\n const itemParentPath = itemParts.slice(0, -1).join('_');\n\n return currentParentPath === itemParentPath;\n });\n\n return levelItems;\n }, [props.composite, focusedOptionId, getFocusableItems]);\n\n const changeFocusedOptionId = (id: string) => {\n // Mark as mouse interaction to prevent auto-focus in onListFocus\n isMouseInteractionRef.current = true;\n\n if (props.composite) {\n setFocusedOptionId((prev) => {\n const prevArray = Array.isArray(prev) ? prev : [];\n\n if (prevArray.length === 0) {\n return [id];\n } else {\n if (prevArray.includes(id)) {\n const len = id.length;\n\n const findIndex = prevArray.findIndex((val) => val.length === len);\n\n if (findIndex !== -1) {\n return [...prevArray.slice(0, findIndex), id];\n }\n\n return prevArray;\n } else if (prevArray[prevArray.length - 1].length === id.length) {\n return [...prevArray.slice(0, -1), id];\n }\n\n return [...prevArray, id];\n }\n });\n } else {\n setFocusedOptionId(id);\n }\n };\n\n const getCurrentFocusedId = () => {\n if (props.composite && Array.isArray(focusedOptionId)) {\n return focusedOptionId[focusedOptionId.length - 1] || '';\n }\n\n return typeof focusedOptionId === 'string' ? focusedOptionId : '';\n };\n\n const searchItems = (char: string) => {\n const focusableItems = props.composite ? getFocusableItemsAtCurrentLevel() : getFocusableItems();\n\n if (focusableItems.length === 0) return;\n\n const currentFocusedId = getCurrentFocusedId();\n const startIndex = currentFocusedId ? focusableItems.findIndex((item) => item.id === currentFocusedId) + 1 : 0;\n const searchChar = char.toLowerCase();\n\n for (let i = startIndex; i < focusableItems.length; i++) {\n const item = focusableItems[i];\n const itemText = item.element.textContent?.trim().toLowerCase() || '';\n\n if (itemText.startsWith(searchChar)) {\n if (props.composite) {\n changeFocusedOptionId(item.id);\n } else {\n setFocusedOptionId(item.id);\n }\n\n return;\n }\n }\n\n for (let i = 0; i < startIndex; i++) {\n const item = focusableItems[i];\n const itemText = item.element.textContent?.trim().toLowerCase() || '';\n\n if (itemText.startsWith(searchChar)) {\n if (props.composite) {\n changeFocusedOptionId(item.id);\n } else {\n setFocusedOptionId(item.id);\n }\n\n return;\n }\n }\n };\n\n const onArrowDown = (event: React.KeyboardEvent) => {\n event.preventDefault();\n\n const focusableItems = props.composite ? getFocusableItemsAtCurrentLevel() : getFocusableItems();\n\n if (focusableItems.length === 0) return;\n\n const currentFocusedId = getCurrentFocusedId();\n\n if (!currentFocusedId) {\n if (props.composite) {\n changeFocusedOptionId(focusableItems[0].id);\n } else {\n setFocusedOptionId(focusableItems[0].id);\n }\n\n return;\n }\n\n const currentIndex = focusableItems.findIndex((item) => item.id === currentFocusedId);\n const nextIndex = currentIndex < focusableItems.length - 1 ? currentIndex + 1 : 0;\n\n if (props.composite) {\n changeFocusedOptionId(focusableItems[nextIndex].id);\n } else {\n setFocusedOptionId(focusableItems[nextIndex].id);\n }\n };\n\n const onArrowUp = (event: React.KeyboardEvent) => {\n event.preventDefault();\n\n if (event.altKey && triggerRef.current) {\n hide();\n\n return;\n }\n\n const focusableItems = props.composite ? getFocusableItemsAtCurrentLevel() : getFocusableItems();\n\n if (focusableItems.length === 0) return;\n\n const currentFocusedId = getCurrentFocusedId();\n\n if (!currentFocusedId) {\n if (props.composite) {\n changeFocusedOptionId(focusableItems[focusableItems.length - 1].id);\n } else {\n setFocusedOptionId(focusableItems[focusableItems.length - 1].id);\n }\n\n return;\n }\n\n const currentIndex = focusableItems.findIndex((item) => item.id === currentFocusedId);\n const prevIndex = currentIndex > 0 ? currentIndex - 1 : focusableItems.length - 1;\n\n if (props.composite) {\n changeFocusedOptionId(focusableItems[prevIndex].id);\n } else {\n setFocusedOptionId(focusableItems[prevIndex].id);\n }\n };\n\n const onArrowRight = (event: React.KeyboardEvent) => {\n if (!props.composite) return;\n\n event.preventDefault();\n\n const currentFocusedId = getCurrentFocusedId();\n\n if (!currentFocusedId) return;\n\n // Find the focused element\n const focusedElement = itemRefsById.current.get(currentFocusedId);\n\n if (!focusedElement) return;\n\n const ariaExpanded = focusedElement.getAttribute('aria-expanded');\n\n if (ariaExpanded !== null) {\n if (ariaExpanded === 'false') {\n // Open the submenu by simulating mousedown\n const mouseDownEvent = new MouseEvent('mousedown', {\n bubbles: true,\n cancelable: true,\n view: window\n });\n\n focusedElement.dispatchEvent(mouseDownEvent);\n }\n\n setTimeout(() => {\n const focusableItems = getFocusableItems();\n\n const submenuItems = focusableItems.filter((item) => {\n return item.id.startsWith(currentFocusedId + '_') && item.id.split('_').length === currentFocusedId.split('_').length + 1;\n });\n\n // Focus the first item in the submenu\n if (submenuItems.length > 0) {\n setFocusedOptionId((prev) => {\n const prevArray = Array.isArray(prev) ? prev : [];\n\n return [...prevArray, submenuItems[0].id];\n });\n }\n }, 10);\n }\n };\n\n const onArrowLeft = (event: React.KeyboardEvent) => {\n if (!props.composite) return;\n\n event.preventDefault();\n\n const currentFocusedId = getCurrentFocusedId();\n\n if (!currentFocusedId || !Array.isArray(focusedOptionId)) return;\n\n if (focusedOptionId.length > 1) {\n const parentTriggerId = focusedOptionId[focusedOptionId.length - 2];\n const parentTrigger = itemRefsById.current.get(parentTriggerId);\n\n if (parentTrigger && parentTrigger.getAttribute('aria-expanded') === 'true') {\n // Close the submenu by simulating mousedown\n const mouseDownEvent = new MouseEvent('mousedown', {\n bubbles: true,\n cancelable: true,\n view: window\n });\n\n parentTrigger.dispatchEvent(mouseDownEvent);\n }\n }\n };\n\n const onHome = (event: React.KeyboardEvent) => {\n event.preventDefault();\n\n const focusableItems = props.composite ? getFocusableItemsAtCurrentLevel() : getFocusableItems();\n\n if (focusableItems.length === 0) return;\n\n if (props.composite) {\n changeFocusedOptionId(focusableItems[0].id);\n } else {\n setFocusedOptionId(focusableItems[0].id);\n }\n };\n\n const onEnd = (event: React.KeyboardEvent) => {\n event.preventDefault();\n\n const focusableItems = props.composite ? getFocusableItemsAtCurrentLevel() : getFocusableItems();\n\n if (focusableItems.length === 0) return;\n\n if (props.composite) {\n changeFocusedOptionId(focusableItems[focusableItems.length - 1].id);\n } else {\n setFocusedOptionId(focusableItems[focusableItems.length - 1].id);\n }\n };\n\n const onEnterKey = (event: React.KeyboardEvent) => {\n if (props.composite) {\n onEscapeKey();\n }\n\n if (listRef?.current) {\n const currentFocusedId = getCurrentFocusedId();\n const element = findSingle(listRef?.current, `[id=\"${currentFocusedId}\"]`) as HTMLElement;\n\n if (element) {\n const mouseDownEvent = new MouseEvent('mousedown', {\n bubbles: true,\n cancelable: true,\n view: window\n });\n\n element.dispatchEvent(mouseDownEvent);\n }\n }\n\n event.preventDefault();\n };\n\n const onEscapeKey = () => {\n hideAllSubmenus();\n\n setTimeout(() => {\n if (triggerRef.current) {\n focus(triggerRef.current.elementRef.current!);\n }\n }, 10);\n };\n\n const onListKeyDown = (event: React.KeyboardEvent) => {\n const metaKey = event.metaKey || event.ctrlKey;\n\n switch (event.key) {\n case 'ArrowDown':\n onArrowDown(event);\n\n break;\n\n case 'ArrowUp':\n onArrowUp(event);\n\n break;\n\n case 'ArrowRight':\n if (props.composite) {\n onArrowRight(event);\n }\n\n break;\n\n case 'ArrowLeft':\n if (props.composite) {\n onArrowLeft(event);\n }\n\n break;\n\n case 'Home':\n onHome(event);\n\n break;\n\n case 'End':\n onEnd(event);\n\n break;\n\n case 'Enter':\n case ' ':\n onEnterKey(event);\n\n break;\n\n case 'PageDown':\n case 'PageUp':\n case 'Backspace':\n case 'ShiftLeft':\n case 'ShiftRight':\n break;\n\n case 'Escape':\n onEscapeKey();\n\n break;\n\n default:\n if (!metaKey && isPrintableCharacter(event.key)) {\n searchItems(event.key);\n }\n\n break;\n }\n };\n\n const onListFocus = () => {\n setFocusedState(true);\n\n const currentFocusedId = getCurrentFocusedId();\n\n if (currentFocusedId === '' && !isMouseInteractionRef.current) {\n const focusableItems = props.composite ? getFocusableItemsAtCurrentLevel() : getFocusableItems();\n\n if (focusableItems.length > 0) {\n if (props.composite) {\n changeFocusedOptionId(focusableItems[0].id);\n } else {\n setFocusedOptionId(focusableItems[0].id);\n }\n }\n }\n\n isMouseInteractionRef.current = false;\n };\n\n const onListBlur = () => {\n setFocusedState(false);\n\n if (props.composite) {\n hideAllSubmenus();\n } else {\n // For non-composite mode, reset focus on blur\n setFocusedOptionId('');\n }\n };\n\n const hideAllSubmenus = () => {\n if (props.composite) {\n itemRefsById.current.forEach((element) => {\n const ariaExpanded = element.getAttribute('aria-expanded');\n\n if (ariaExpanded === 'true') {\n const mouseDownEvent = new MouseEvent('mousedown', {\n bubbles: true,\n cancelable: true,\n view: window\n });\n\n element.dispatchEvent(mouseDownEvent);\n }\n });\n\n setFocusedOptionId([]);\n } else {\n setFocusedOptionId('');\n }\n };\n\n const hideSubmenusAfterLevel = (targetItemId: string) => {\n if (!props.composite || !Array.isArray(focusedOptionId)) return;\n\n const targetLevel = targetItemId.split('_').length - 1;\n\n itemRefsById.current.forEach((element, elementId) => {\n const elementLevel = elementId.split('_').length - 1;\n const ariaExpanded = element.getAttribute('aria-expanded');\n\n if (ariaExpanded === 'true' && elementLevel >= targetLevel) {\n const mouseDownEvent = new MouseEvent('mousedown', {\n bubbles: true,\n cancelable: true,\n view: window\n });\n\n element.dispatchEvent(mouseDownEvent);\n }\n });\n\n setFocusedOptionId((prev) => {\n const prevArray = Array.isArray(prev) ? prev : [];\n\n return prevArray.filter((id) => {\n const idLevel = id.split('_').length - 1;\n\n return idLevel < targetLevel;\n });\n });\n };\n\n const hide = () => {\n setOpenState(false);\n updateOpenState(false);\n\n if (props.composite) {\n setFocusedOptionId([]);\n } else {\n setFocusedOptionId('');\n }\n\n setTimeout(() => {\n if (triggerRef.current) {\n focus(triggerRef.current.elementRef.current!);\n }\n }, 10);\n };\n\n const onOverlayEnter = () => {\n if (listRef.current) {\n focus(listRef.current);\n }\n };\n\n const onTriggerClick = (event?: React.MouseEvent) => {\n if (event && event.type === 'contextmenu') {\n event.preventDefault();\n event.stopPropagation();\n\n const newTarget = { pageX: event.pageX, pageY: event.pageY };\n\n if (openState) {\n updateOpenState(false);\n setOpenState(false);\n\n setTimeout(() => {\n setContextMenuTarget(newTarget);\n updateOpenState(true);\n setOpenState(true);\n }, 0);\n } else {\n setContextMenuTarget(newTarget);\n\n setOpenState(true);\n updateOpenState(true);\n }\n } else {\n setContextMenuTarget(null);\n\n setOpenState(true);\n updateOpenState(true);\n }\n };\n\n const onItemClick = (event: React.MouseEvent) => {\n event.preventDefault();\n hide();\n };\n\n return {\n state,\n //refs\n portalRef,\n triggerRef,\n listRef,\n //methods\n registerItem,\n unregisterItem,\n changeVisibleState,\n changeFocusedOptionId,\n hideSubmenusAfterLevel,\n onListKeyDown,\n onListFocus,\n onListBlur,\n onOverlayEnter,\n onTriggerClick,\n onItemClick\n };\n }\n});\n","import type { useMenuProps } from '@primereact/types/shared/menu';\n\nexport const defaultProps: useMenuProps = {\n open: undefined,\n defaultOpen: undefined,\n composite: false,\n appendTo: 'body',\n baseZIndex: 0,\n autoZIndex: true,\n tabIndex: 0,\n onOpenChange: undefined\n};\n"],"mappings":"AAAA,OAAS,gBAAAA,MAAoB,4BAC7B,OAAS,cAAAC,EAAY,SAAAC,EAAO,wBAAAC,OAA4B,kBACxD,UAAYC,MAAW,QCAhB,IAAMC,EAA6B,CACtC,KAAM,OACN,YAAa,OACb,UAAW,GACX,SAAU,OACV,WAAY,EACZ,WAAY,GACZ,SAAU,EACV,aAAc,MAClB,EDNO,IAAMC,GAAUC,EAAa,CAChC,KAAM,UACN,aAAAC,EACA,MAAM,CAAE,MAAAC,CAAM,EAAG,CARrB,IAAAC,EASQ,GAAM,CAACC,EAAWC,CAAY,EAAU,WAAkBH,EAAM,OAAS,OAAYA,EAAM,MAAQC,EAAAD,EAAM,cAAN,KAAAC,EAAqB,EAAM,EACxH,CAACG,EAAcC,CAAe,EAAU,WAAkB,EAAK,EAC/D,CAACC,EAAiBC,CAAkB,EAAU,WAA4BP,EAAM,UAAY,CAAC,EAAI,EAAE,EACnG,CAACQ,EAAmBC,CAAoB,EAAU,WAAkD,IAAI,EACxGC,EAA8B,SAAO,EAAK,EAE1CC,EAAkB,SAA8F,IAAI,EACpHC,EAAmB,SAAkE,IAAI,EACzFC,EAAgB,SAAgC,IAAI,EACpDC,EAAqB,SAAiC,IAAI,GAAK,EAE/DC,EAAQ,CACV,OAAQb,EACR,QAASE,EACT,gBAAAE,EACA,kBAAAE,CACJ,EAEMQ,EAAqB,cAAY,CAACC,EAAYC,IAAqB,CACrEJ,EAAa,QAAQ,IAAIG,EAAIC,CAAG,CACpC,EAAG,CAAC,CAAC,EAECC,EAAuB,cAAaF,GAAe,CACrDH,EAAa,QAAQ,OAAOG,CAAE,CAClC,EAAG,CAAC,CAAC,EAECG,EAAmBC,GAAmB,CACpCrB,EAAM,cACNA,EAAM,aAAa,CAAE,MAAAqB,CAAM,CAAC,CAEpC,EAEM,YAAU,IAAM,CACdrB,EAAM,OAAS,QACfG,EAAaH,EAAM,IAAI,CAE/B,EAAG,CAACA,EAAM,IAAI,CAAC,EAEf,IAAMsB,EAAsBC,GAAuB,CAC/CpB,EAAaoB,CAAS,EACtBH,EAAgBG,CAAS,CAC7B,EAEMC,EAA0B,cAAY,IAAM,CAC9C,IAAMC,EAAqD,CAAC,EAE5D,OAAAX,EAAa,QAAQ,QAAQ,CAACY,EAAST,IAAO,CAG1C,GAFmBS,EAAQ,aAAa,iBAAiB,IAAM,OAE/C,OAEhB,IAAIC,EAAqCD,EACrCH,EAAY,GAEhB,KAAOI,GAAkBA,IAAmBd,EAAQ,SAAS,CACzD,IAAMe,EAAaD,EAAe,QAAQ,2BAA2B,EAErE,GAAI,CAACC,GAAcA,IAAef,EAAQ,QAAS,MAEnD,IAAMgB,EAAUD,EAAW,uBAE3B,GAAIC,GAAWA,EAAQ,aAAa,eAAe,IAAM,QAAS,CAC9DN,EAAY,GACZ,KACJ,CAEAI,EAAiBC,EAAW,aAChC,CAEKL,GAELE,EAAM,KAAK,CAAE,GAAAR,EAAI,QAAAS,CAAQ,CAAC,CAC9B,CAAC,EAEMD,CACX,EAAG,CAAC,CAAC,EAECK,EAAwC,cAAY,IAAM,CAC5D,IAAMC,EAAoBP,EAAkB,EAE5C,GAAIO,EAAkB,SAAW,EAAG,MAAO,CAAC,EAI5C,IAAMC,EAAW,KAAK,IAAI,GAAGD,EAAkB,IAAKE,GAASA,EAAK,GAAG,MAAM,GAAG,EAAE,MAAM,CAAC,EAEvF,GAAI3B,EAAgB,SAAW,EAM3B,OAJkByB,EAAkB,OAAQE,GACjCA,EAAK,GAAG,MAAM,GAAG,EAAE,SAAWD,CACxC,EAOL,IAAME,EADmB5B,EAAgBA,EAAgB,OAAS,CAAC,EAC3B,MAAM,GAAG,EAC3C6B,EAAeD,EAAe,OAsBpC,OAnBmBH,EAAkB,OAAQE,GAAS,CAClD,IAAMG,EAAYH,EAAK,GAAG,MAAM,GAAG,EAGnC,GAAIG,EAAU,SAAWD,EAAc,MAAO,GAG9C,GAAIA,IAAiBH,EACjB,OAAOI,EAAU,SAAWJ,EAKhC,IAAMK,EAAoBH,EAAe,MAAM,EAAG,EAAE,EAAE,KAAK,GAAG,EACxDI,EAAiBF,EAAU,MAAM,EAAG,EAAE,EAAE,KAAK,GAAG,EAEtD,OAAOC,IAAsBC,CACjC,CAAC,CAGL,EAAG,CAACtC,EAAM,UAAWM,EAAiBkB,CAAiB,CAAC,EAElDe,EAAyBtB,GAAe,CAE1CP,EAAsB,QAAU,GAE5BV,EAAM,UACNO,EAAoBiC,GAAS,CACzB,IAAMC,EAAY,MAAM,QAAQD,CAAI,EAAIA,EAAO,CAAC,EAEhD,GAAIC,EAAU,SAAW,EACrB,MAAO,CAACxB,CAAE,EAEV,GAAIwB,EAAU,SAASxB,CAAE,EAAG,CACxB,IAAMyB,EAAMzB,EAAG,OAET0B,EAAYF,EAAU,UAAWG,GAAQA,EAAI,SAAWF,CAAG,EAEjE,OAAIC,IAAc,GACP,CAAC,GAAGF,EAAU,MAAM,EAAGE,CAAS,EAAG1B,CAAE,EAGzCwB,CACX,SAAWA,EAAUA,EAAU,OAAS,CAAC,EAAE,SAAWxB,EAAG,OACrD,MAAO,CAAC,GAAGwB,EAAU,MAAM,EAAG,EAAE,EAAGxB,CAAE,EAGzC,MAAO,CAAC,GAAGwB,EAAWxB,CAAE,CAEhC,CAAC,EAEDV,EAAmBU,CAAE,CAE7B,EAEM4B,EAAsB,IACpB7C,EAAM,WAAa,MAAM,QAAQM,CAAe,EACzCA,EAAgBA,EAAgB,OAAS,CAAC,GAAK,GAGnD,OAAOA,GAAoB,SAAWA,EAAkB,GAG7DwC,EAAeC,GAAiB,CA7K9C,IAAA9C,EAAA+C,EA8KY,IAAMC,EAAiBjD,EAAM,UAAY8B,EAAgC,EAAIN,EAAkB,EAE/F,GAAIyB,EAAe,SAAW,EAAG,OAEjC,IAAMC,EAAmBL,EAAoB,EACvCM,EAAaD,EAAmBD,EAAe,UAAWhB,GAASA,EAAK,KAAOiB,CAAgB,EAAI,EAAI,EACvGE,EAAaL,EAAK,YAAY,EAEpC,QAAS,EAAII,EAAY,EAAIF,EAAe,OAAQ,IAAK,CACrD,IAAMhB,EAAOgB,EAAe,CAAC,EAG7B,MAFiBhD,EAAAgC,EAAK,QAAQ,cAAb,YAAAhC,EAA0B,OAAO,gBAAiB,IAEtD,WAAWmD,CAAU,EAAG,CAC7BpD,EAAM,UACNuC,EAAsBN,EAAK,EAAE,EAE7B1B,EAAmB0B,EAAK,EAAE,EAG9B,MACJ,CACJ,CAEA,QAAS,EAAI,EAAG,EAAIkB,EAAY,IAAK,CACjC,IAAMlB,EAAOgB,EAAe,CAAC,EAG7B,MAFiBD,EAAAf,EAAK,QAAQ,cAAb,YAAAe,EAA0B,OAAO,gBAAiB,IAEtD,WAAWI,CAAU,EAAG,CAC7BpD,EAAM,UACNuC,EAAsBN,EAAK,EAAE,EAE7B1B,EAAmB0B,EAAK,EAAE,EAG9B,MACJ,CACJ,CACJ,EAEMoB,EAAeC,GAA+B,CAChDA,EAAM,eAAe,EAErB,IAAML,EAAiBjD,EAAM,UAAY8B,EAAgC,EAAIN,EAAkB,EAE/F,GAAIyB,EAAe,SAAW,EAAG,OAEjC,IAAMC,EAAmBL,EAAoB,EAE7C,GAAI,CAACK,EAAkB,CACflD,EAAM,UACNuC,EAAsBU,EAAe,CAAC,EAAE,EAAE,EAE1C1C,EAAmB0C,EAAe,CAAC,EAAE,EAAE,EAG3C,MACJ,CAEA,IAAMM,EAAeN,EAAe,UAAWhB,GAASA,EAAK,KAAOiB,CAAgB,EAC9EM,EAAYD,EAAeN,EAAe,OAAS,EAAIM,EAAe,EAAI,EAE5EvD,EAAM,UACNuC,EAAsBU,EAAeO,CAAS,EAAE,EAAE,EAElDjD,EAAmB0C,EAAeO,CAAS,EAAE,EAAE,CAEvD,EAEMC,EAAaH,GAA+B,CAG9C,GAFAA,EAAM,eAAe,EAEjBA,EAAM,QAAU1C,EAAW,QAAS,CACpC8C,EAAK,EAEL,MACJ,CAEA,IAAMT,EAAiBjD,EAAM,UAAY8B,EAAgC,EAAIN,EAAkB,EAE/F,GAAIyB,EAAe,SAAW,EAAG,OAEjC,IAAMC,EAAmBL,EAAoB,EAE7C,GAAI,CAACK,EAAkB,CACflD,EAAM,UACNuC,EAAsBU,EAAeA,EAAe,OAAS,CAAC,EAAE,EAAE,EAElE1C,EAAmB0C,EAAeA,EAAe,OAAS,CAAC,EAAE,EAAE,EAGnE,MACJ,CAEA,IAAMM,EAAeN,EAAe,UAAWhB,GAASA,EAAK,KAAOiB,CAAgB,EAC9ES,EAAYJ,EAAe,EAAIA,EAAe,EAAIN,EAAe,OAAS,EAE5EjD,EAAM,UACNuC,EAAsBU,EAAeU,CAAS,EAAE,EAAE,EAElDpD,EAAmB0C,EAAeU,CAAS,EAAE,EAAE,CAEvD,EAEMC,EAAgBN,GAA+B,CACjD,GAAI,CAACtD,EAAM,UAAW,OAEtBsD,EAAM,eAAe,EAErB,IAAMJ,EAAmBL,EAAoB,EAE7C,GAAI,CAACK,EAAkB,OAGvB,IAAMW,EAAiB/C,EAAa,QAAQ,IAAIoC,CAAgB,EAEhE,GAAI,CAACW,EAAgB,OAErB,IAAMC,EAAeD,EAAe,aAAa,eAAe,EAEhE,GAAIC,IAAiB,KAAM,CACvB,GAAIA,IAAiB,QAAS,CAE1B,IAAMC,EAAiB,IAAI,WAAW,YAAa,CAC/C,QAAS,GACT,WAAY,GACZ,KAAM,MACV,CAAC,EAEDF,EAAe,cAAcE,CAAc,CAC/C,CAEA,WAAW,IAAM,CAGb,IAAMC,EAFiBxC,EAAkB,EAEL,OAAQS,GACjCA,EAAK,GAAG,WAAWiB,EAAmB,GAAG,GAAKjB,EAAK,GAAG,MAAM,GAAG,EAAE,SAAWiB,EAAiB,MAAM,GAAG,EAAE,OAAS,CAC3H,EAGGc,EAAa,OAAS,GACtBzD,EAAoBiC,GAGT,CAAC,GAFU,MAAM,QAAQA,CAAI,EAAIA,EAAO,CAAC,EAE1BwB,EAAa,CAAC,EAAE,EAAE,CAC3C,CAET,EAAG,EAAE,CACT,CACJ,EAEMC,EAAeX,GAA+B,CAOhD,GANI,GAACtD,EAAM,YAEXsD,EAAM,eAAe,EAIjB,CAFqBT,EAAoB,GAEpB,CAAC,MAAM,QAAQvC,CAAe,KAEnDA,EAAgB,OAAS,EAAG,CAC5B,IAAM4D,EAAkB5D,EAAgBA,EAAgB,OAAS,CAAC,EAC5D6D,EAAgBrD,EAAa,QAAQ,IAAIoD,CAAe,EAE9D,GAAIC,GAAiBA,EAAc,aAAa,eAAe,IAAM,OAAQ,CAEzE,IAAMJ,EAAiB,IAAI,WAAW,YAAa,CAC/C,QAAS,GACT,WAAY,GACZ,KAAM,MACV,CAAC,EAEDI,EAAc,cAAcJ,CAAc,CAC9C,CACJ,CACJ,EAEMK,EAAUd,GAA+B,CAC3CA,EAAM,eAAe,EAErB,IAAML,EAAiBjD,EAAM,UAAY8B,EAAgC,EAAIN,EAAkB,EAE3FyB,EAAe,SAAW,IAE1BjD,EAAM,UACNuC,EAAsBU,EAAe,CAAC,EAAE,EAAE,EAE1C1C,EAAmB0C,EAAe,CAAC,EAAE,EAAE,EAE/C,EAEMoB,EAASf,GAA+B,CAC1CA,EAAM,eAAe,EAErB,IAAML,EAAiBjD,EAAM,UAAY8B,EAAgC,EAAIN,EAAkB,EAE3FyB,EAAe,SAAW,IAE1BjD,EAAM,UACNuC,EAAsBU,EAAeA,EAAe,OAAS,CAAC,EAAE,EAAE,EAElE1C,EAAmB0C,EAAeA,EAAe,OAAS,CAAC,EAAE,EAAE,EAEvE,EAEMqB,EAAchB,GAA+B,CAK/C,GAJItD,EAAM,WACNuE,EAAY,EAGZ1D,GAAA,MAAAA,EAAS,QAAS,CAClB,IAAMqC,EAAmBL,EAAoB,EACvCnB,EAAU8C,EAAW3D,GAAA,YAAAA,EAAS,QAAS,QAAQqC,CAAgB,IAAI,EAEzE,GAAIxB,EAAS,CACT,IAAMqC,EAAiB,IAAI,WAAW,YAAa,CAC/C,QAAS,GACT,WAAY,GACZ,KAAM,MACV,CAAC,EAEDrC,EAAQ,cAAcqC,CAAc,CACxC,CACJ,CAEAT,EAAM,eAAe,CACzB,EAEMiB,EAAc,IAAM,CACtBE,EAAgB,EAEhB,WAAW,IAAM,CACT7D,EAAW,SACX8D,EAAM9D,EAAW,QAAQ,WAAW,OAAQ,CAEpD,EAAG,EAAE,CACT,EAEM+D,EAAiBrB,GAA+B,CAClD,IAAMsB,EAAUtB,EAAM,SAAWA,EAAM,QAEvC,OAAQA,EAAM,IAAK,CACf,IAAK,YACDD,EAAYC,CAAK,EAEjB,MAEJ,IAAK,UACDG,EAAUH,CAAK,EAEf,MAEJ,IAAK,aACGtD,EAAM,WACN4D,EAAaN,CAAK,EAGtB,MAEJ,IAAK,YACGtD,EAAM,WACNiE,EAAYX,CAAK,EAGrB,MAEJ,IAAK,OACDc,EAAOd,CAAK,EAEZ,MAEJ,IAAK,MACDe,EAAMf,CAAK,EAEX,MAEJ,IAAK,QACL,IAAK,IACDgB,EAAWhB,CAAK,EAEhB,MAEJ,IAAK,WACL,IAAK,SACL,IAAK,YACL,IAAK,YACL,IAAK,aACD,MAEJ,IAAK,SACDiB,EAAY,EAEZ,MAEJ,QACQ,CAACK,GAAWC,GAAqBvB,EAAM,GAAG,GAC1CR,EAAYQ,EAAM,GAAG,EAGzB,KACR,CACJ,EAEMwB,EAAc,IAAM,CAKtB,GAJAzE,EAAgB,EAAI,EAEKwC,EAAoB,IAEpB,IAAM,CAACnC,EAAsB,QAAS,CAC3D,IAAMuC,EAAiBjD,EAAM,UAAY8B,EAAgC,EAAIN,EAAkB,EAE3FyB,EAAe,OAAS,IACpBjD,EAAM,UACNuC,EAAsBU,EAAe,CAAC,EAAE,EAAE,EAE1C1C,EAAmB0C,EAAe,CAAC,EAAE,EAAE,EAGnD,CAEAvC,EAAsB,QAAU,EACpC,EAEMqE,EAAa,IAAM,CACrB1E,EAAgB,EAAK,EAEjBL,EAAM,UACNyE,EAAgB,EAGhBlE,EAAmB,EAAE,CAE7B,EAEMkE,EAAkB,IAAM,CACtBzE,EAAM,WACNc,EAAa,QAAQ,QAASY,GAAY,CAGtC,GAFqBA,EAAQ,aAAa,eAAe,IAEpC,OAAQ,CACzB,IAAMqC,EAAiB,IAAI,WAAW,YAAa,CAC/C,QAAS,GACT,WAAY,GACZ,KAAM,MACV,CAAC,EAEDrC,EAAQ,cAAcqC,CAAc,CACxC,CACJ,CAAC,EAEDxD,EAAmB,CAAC,CAAC,GAErBA,EAAmB,EAAE,CAE7B,EAEMyE,EAA0BC,GAAyB,CACrD,GAAI,CAACjF,EAAM,WAAa,CAAC,MAAM,QAAQM,CAAe,EAAG,OAEzD,IAAM4E,EAAcD,EAAa,MAAM,GAAG,EAAE,OAAS,EAErDnE,EAAa,QAAQ,QAAQ,CAACY,EAASyD,IAAc,CACjD,IAAMC,EAAeD,EAAU,MAAM,GAAG,EAAE,OAAS,EAGnD,GAFqBzD,EAAQ,aAAa,eAAe,IAEpC,QAAU0D,GAAgBF,EAAa,CACxD,IAAMnB,EAAiB,IAAI,WAAW,YAAa,CAC/C,QAAS,GACT,WAAY,GACZ,KAAM,MACV,CAAC,EAEDrC,EAAQ,cAAcqC,CAAc,CACxC,CACJ,CAAC,EAEDxD,EAAoBiC,IACE,MAAM,QAAQA,CAAI,EAAIA,EAAO,CAAC,GAE/B,OAAQvB,GACLA,EAAG,MAAM,GAAG,EAAE,OAAS,EAEtBiE,CACpB,CACJ,CACL,EAEMxB,EAAO,IAAM,CACfvD,EAAa,EAAK,EAClBiB,EAAgB,EAAK,EAEjBpB,EAAM,UACNO,EAAmB,CAAC,CAAC,EAErBA,EAAmB,EAAE,EAGzB,WAAW,IAAM,CACTK,EAAW,SACX8D,EAAM9D,EAAW,QAAQ,WAAW,OAAQ,CAEpD,EAAG,EAAE,CACT,EA2CA,MAAO,CACH,MAAAG,EAEA,UAAAJ,EACA,WAAAC,EACA,QAAAC,EAEA,aAAAG,EACA,eAAAG,EACA,mBAAAG,EACA,sBAAAiB,EACA,uBAAAyC,EACA,cAAAL,EACA,YAAAG,EACA,WAAAC,EACA,eAxDmB,IAAM,CACrBlE,EAAQ,SACR6D,EAAM7D,EAAQ,OAAO,CAE7B,EAqDI,eAnDoByC,GAA6B,CACjD,GAAIA,GAASA,EAAM,OAAS,cAAe,CACvCA,EAAM,eAAe,EACrBA,EAAM,gBAAgB,EAEtB,IAAM+B,EAAY,CAAE,MAAO/B,EAAM,MAAO,MAAOA,EAAM,KAAM,EAEvDpD,GACAkB,EAAgB,EAAK,EACrBjB,EAAa,EAAK,EAElB,WAAW,IAAM,CACbM,EAAqB4E,CAAS,EAC9BjE,EAAgB,EAAI,EACpBjB,EAAa,EAAI,CACrB,EAAG,CAAC,IAEJM,EAAqB4E,CAAS,EAE9BlF,EAAa,EAAI,EACjBiB,EAAgB,EAAI,EAE5B,MACIX,EAAqB,IAAI,EAEzBN,EAAa,EAAI,EACjBiB,EAAgB,EAAI,CAE5B,EAwBI,YAtBiBkC,GAA4B,CAC7CA,EAAM,eAAe,EACrBI,EAAK,CACT,CAoBA,CACJ,CACJ,CAAC","names":["withHeadless","findSingle","focus","isPrintableCharacter","React","defaultProps","useMenu","withHeadless","defaultProps","props","_a","openState","setOpenState","focusedState","setFocusedState","focusedOptionId","setFocusedOptionId","contextMenuTarget","setContextMenuTarget","isMouseInteractionRef","portalRef","triggerRef","listRef","itemRefsById","state","registerItem","id","ref","unregisterItem","updateOpenState","value","changeVisibleState","isVisible","getFocusableItems","items","element","currentElement","parentList","trigger","getFocusableItemsAtCurrentLevel","allFocusableItems","minDepth","item","currentIdParts","currentDepth","itemParts","currentParentPath","itemParentPath","changeFocusedOptionId","prev","prevArray","len","findIndex","val","getCurrentFocusedId","searchItems","char","_b","focusableItems","currentFocusedId","startIndex","searchChar","onArrowDown","event","currentIndex","nextIndex","onArrowUp","hide","prevIndex","onArrowRight","focusedElement","ariaExpanded","mouseDownEvent","submenuItems","onArrowLeft","parentTriggerId","parentTrigger","onHome","onEnd","onEnterKey","onEscapeKey","findSingle","hideAllSubmenus","focus","onListKeyDown","metaKey","isPrintableCharacter","onListFocus","onListBlur","hideSubmenusAfterLevel","targetItemId","targetLevel","elementId","elementLevel","newTarget"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{withHeadless as m}from"@primereact/core/headless";import*as t from"react";var f={open:void 0,defaultOpen:void 0,onOpenChange:void 0};var O=m({name:"useMenuSub",defaultProps:f,setup({props:e}){var s;let[u,o]=t.useState(e.open!==void 0?e.open:(s=e.defaultOpen)!=null?s:!1),c=t.useRef(null),i=t.useRef(null),d=t.useRef(null),r={opened:u},a=n=>{e.onOpenChange&&e.onOpenChange({value:n})};t.useEffect(()=>{e.open!==void 0&&o(e.open)},[e.open]);let l=()=>{if(!e.disabled){let n=!u;o(n),a(n)}};return{state:r,portalRef:c,triggerRef:i,listRef:d,toggle:l,open:()=>{e.disabled||(o(!0),a(!0))},close:()=>{e.disabled||(o(!1),a(!1))},onTriggerClick:()=>{e.disabled||l()}}}});export{f as defaultProps,O as useMenuSub};
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/menu/sub/useMenuSub.ts","../../../src/menu/sub/useMenuSub.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport * as React from 'react';\nimport { defaultProps } from './useMenuSub.props';\n\nexport const useMenuSub = withHeadless({\n name: 'useMenuSub',\n defaultProps,\n setup({ props }) {\n const [openState, setOpenState] = React.useState<boolean>(props.open !== undefined ? props.open : (props.defaultOpen ?? false));\n\n const portalRef = React.useRef<{ containerRef: { current: { elementRef: React.RefObject<HTMLDivElement> } } } | null>(null);\n const triggerRef = React.useRef<HTMLDivElement | null>(null);\n const listRef = React.useRef<HTMLUListElement | null>(null);\n\n const state = {\n opened: openState\n };\n\n const updateOpenState = (value: boolean) => {\n if (props.onOpenChange) {\n props.onOpenChange({ value });\n }\n };\n\n React.useEffect(() => {\n if (props.open !== undefined) {\n setOpenState(props.open);\n }\n }, [props.open]);\n\n const toggle = () => {\n if (!props.disabled) {\n const newState = !openState;\n\n setOpenState(newState);\n updateOpenState(newState);\n }\n };\n\n const open = () => {\n if (!props.disabled) {\n const newState = true;\n\n setOpenState(newState);\n updateOpenState(newState);\n }\n };\n\n const close = () => {\n if (!props.disabled) {\n const newState = false;\n\n setOpenState(newState);\n updateOpenState(newState);\n }\n };\n\n const onTriggerClick = () => {\n if (!props.disabled) {\n toggle();\n }\n };\n\n return {\n state,\n // refs\n portalRef,\n triggerRef,\n listRef,\n // methods\n toggle,\n open,\n close,\n onTriggerClick\n };\n }\n});\n","import type { useMenuSubProps } from '@primereact/types/shared/menu';\n\nexport const defaultProps: useMenuSubProps = {\n open: undefined,\n defaultOpen: undefined,\n onOpenChange: undefined\n};\n"],"mappings":"AAAA,OAAS,gBAAAA,MAAoB,4BAC7B,UAAYC,MAAW,QCChB,IAAMC,EAAgC,CACzC,KAAM,OACN,YAAa,OACb,aAAc,MAClB,EDFO,IAAMC,EAAaC,EAAa,CACnC,KAAM,aACN,aAAAC,EACA,MAAM,CAAE,MAAAC,CAAM,EAAG,CAPrB,IAAAC,EAQQ,GAAM,CAACC,EAAWC,CAAY,EAAU,WAAkBH,EAAM,OAAS,OAAYA,EAAM,MAAQC,EAAAD,EAAM,cAAN,KAAAC,EAAqB,EAAM,EAExHG,EAAkB,SAA8F,IAAI,EACpHC,EAAmB,SAA8B,IAAI,EACrDC,EAAgB,SAAgC,IAAI,EAEpDC,EAAQ,CACV,OAAQL,CACZ,EAEMM,EAAmBC,GAAmB,CACpCT,EAAM,cACNA,EAAM,aAAa,CAAE,MAAAS,CAAM,CAAC,CAEpC,EAEM,YAAU,IAAM,CACdT,EAAM,OAAS,QACfG,EAAaH,EAAM,IAAI,CAE/B,EAAG,CAACA,EAAM,IAAI,CAAC,EAEf,IAAMU,EAAS,IAAM,CACjB,GAAI,CAACV,EAAM,SAAU,CACjB,IAAMW,EAAW,CAACT,EAElBC,EAAaQ,CAAQ,EACrBH,EAAgBG,CAAQ,CAC5B,CACJ,EA0BA,MAAO,CACH,MAAAJ,EAEA,UAAAH,EACA,WAAAC,EACA,QAAAC,EAEA,OAAAI,EACA,KAhCS,IAAM,CACVV,EAAM,WAGPG,EAAa,EAAQ,EACrBK,EAAgB,EAAQ,EAEhC,EA0BI,MAxBU,IAAM,CACXR,EAAM,WAGPG,EAAa,EAAQ,EACrBK,EAAgB,EAAQ,EAEhC,EAkBI,eAhBmB,IAAM,CACpBR,EAAM,UACPU,EAAO,CAEf,CAaA,CACJ,CACJ,CAAC","names":["withHeadless","React","defaultProps","useMenuSub","withHeadless","defaultProps","props","_a","openState","setOpenState","portalRef","triggerRef","listRef","state","updateOpenState","value","toggle","newState"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export declare const useMenuSub: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/menu").useMenuSubProps, unknown, {
|
|
3
|
+
state: {
|
|
4
|
+
opened: boolean;
|
|
5
|
+
};
|
|
6
|
+
portalRef: React.RefObject<{
|
|
7
|
+
containerRef: {
|
|
8
|
+
current: {
|
|
9
|
+
elementRef: React.RefObject<HTMLDivElement>;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
} | null>;
|
|
13
|
+
triggerRef: React.RefObject<HTMLDivElement | null>;
|
|
14
|
+
listRef: React.RefObject<HTMLUListElement | null>;
|
|
15
|
+
toggle: () => void;
|
|
16
|
+
open: () => void;
|
|
17
|
+
close: () => void;
|
|
18
|
+
onTriggerClick: () => void;
|
|
19
|
+
}>;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export declare const useMenu: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/menu").useMenuProps, unknown, {
|
|
3
|
+
state: {
|
|
4
|
+
opened: boolean;
|
|
5
|
+
focused: boolean;
|
|
6
|
+
focusedOptionId: string | string[];
|
|
7
|
+
contextMenuTarget: {
|
|
8
|
+
pageX: number;
|
|
9
|
+
pageY: number;
|
|
10
|
+
} | null;
|
|
11
|
+
};
|
|
12
|
+
portalRef: React.RefObject<{
|
|
13
|
+
containerRef: {
|
|
14
|
+
current: {
|
|
15
|
+
elementRef: React.RefObject<HTMLDivElement>;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
} | null>;
|
|
19
|
+
triggerRef: React.RefObject<{
|
|
20
|
+
elementRef: React.RefObject<HTMLButtonElement>;
|
|
21
|
+
} | null>;
|
|
22
|
+
listRef: React.RefObject<HTMLUListElement | null>;
|
|
23
|
+
registerItem: (id: string, ref: HTMLElement) => void;
|
|
24
|
+
unregisterItem: (id: string) => void;
|
|
25
|
+
changeVisibleState: (isVisible: boolean) => void;
|
|
26
|
+
changeFocusedOptionId: (id: string) => void;
|
|
27
|
+
hideSubmenusAfterLevel: (targetItemId: string) => void;
|
|
28
|
+
onListKeyDown: (event: React.KeyboardEvent) => void;
|
|
29
|
+
onListFocus: () => void;
|
|
30
|
+
onListBlur: () => void;
|
|
31
|
+
onOverlayEnter: () => void;
|
|
32
|
+
onTriggerClick: (event?: React.MouseEvent) => void;
|
|
33
|
+
onItemClick: (event: React.MouseEvent) => void;
|
|
34
|
+
}>;
|
|
File without changes
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{withHeadless as i}from"@primereact/core/headless";import*as r from"react";var n={life:null,onClose:void 0};var d=i({name:"useMessage",defaultProps:n,setup:({props:t})=>{let[u,o]=r.useState(!0),e=r.useRef(null),a={visible:u},s=r.useCallback(()=>{var l;o(!1),e.current&&(clearTimeout(e.current),e.current=null),(l=t.onClose)==null||l.call(t)},[t.onClose]);return r.useEffect(()=>(e.current&&(clearTimeout(e.current),e.current=null),typeof t.life=="number"&&t.life>0&&u&&(e.current=setTimeout(()=>{s()},t.life)),()=>{e.current&&(clearTimeout(e.current),e.current=null)}),[t.life,u,s]),{state:a,handleClose:s}}});export{n as defaultProps,d as useMessage};
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/message/useMessage.ts","../../src/message/useMessage.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport * as React from 'react';\nimport { defaultProps } from './useMessage.props';\n\nexport const useMessage = withHeadless({\n name: 'useMessage',\n defaultProps,\n setup: ({ props }) => {\n const [visibleState, setVisibleState] = React.useState<boolean>(true);\n const timerRef = React.useRef<NodeJS.Timeout | null>(null);\n\n const state = {\n visible: visibleState\n };\n\n // methods\n const handleClose = React.useCallback(() => {\n setVisibleState(false);\n\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n timerRef.current = null;\n }\n\n props.onClose?.();\n }, [props.onClose]);\n\n // effects\n React.useEffect(() => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n timerRef.current = null;\n }\n\n if (typeof props.life === 'number' && props.life > 0 && visibleState) {\n timerRef.current = setTimeout(() => {\n handleClose();\n }, props.life);\n }\n\n return () => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n timerRef.current = null;\n }\n };\n }, [props.life, visibleState, handleClose]);\n\n return {\n state,\n handleClose\n };\n }\n});\n","import type { useMessageProps } from '@primereact/types/shared/message';\n\nexport const defaultProps: useMessageProps = {\n life: null,\n onClose: undefined\n};\n"],"mappings":"AAAA,OAAS,gBAAAA,MAAoB,4BAC7B,UAAYC,MAAW,QCChB,IAAMC,EAAgC,CACzC,KAAM,KACN,QAAS,MACb,EDDO,IAAMC,EAAaC,EAAa,CACnC,KAAM,aACN,aAAAC,EACA,MAAO,CAAC,CAAE,MAAAC,CAAM,IAAM,CAClB,GAAM,CAACC,EAAcC,CAAe,EAAU,WAAkB,EAAI,EAC9DC,EAAiB,SAA8B,IAAI,EAEnDC,EAAQ,CACV,QAASH,CACb,EAGMI,EAAoB,cAAY,IAAM,CAhBpD,IAAAC,EAiBYJ,EAAgB,EAAK,EAEjBC,EAAS,UACT,aAAaA,EAAS,OAAO,EAC7BA,EAAS,QAAU,OAGvBG,EAAAN,EAAM,UAAN,MAAAM,EAAA,KAAAN,EACJ,EAAG,CAACA,EAAM,OAAO,CAAC,EAGlB,OAAM,YAAU,KACRG,EAAS,UACT,aAAaA,EAAS,OAAO,EAC7BA,EAAS,QAAU,MAGnB,OAAOH,EAAM,MAAS,UAAYA,EAAM,KAAO,GAAKC,IACpDE,EAAS,QAAU,WAAW,IAAM,CAChCE,EAAY,CAChB,EAAGL,EAAM,IAAI,GAGV,IAAM,CACLG,EAAS,UACT,aAAaA,EAAS,OAAO,EAC7BA,EAAS,QAAU,KAE3B,GACD,CAACH,EAAM,KAAMC,EAAcI,CAAW,CAAC,EAEnC,CACH,MAAAD,EACA,YAAAC,CACJ,CACJ,CACJ,CAAC","names":["withHeadless","React","defaultProps","useMessage","withHeadless","defaultProps","props","visibleState","setVisibleState","timerRef","state","handleClose","_a"]}
|
|
File without changes
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{withHeadless as P}from"@primereact/core/headless";import*as s from"react";var N={value:void 0,gap:40,selectable:!0,collapsible:!1,selectionMode:"single"};var H=P({name:"useOrgChart",defaultProps:N,setup({props:a}){let[f,d]=s.useState(()=>new Set),[g,h]=s.useState(()=>new Set),w=s.useMemo(()=>Array.from(f),[f]),M=s.useMemo(()=>Array.from(g),[g]),u=s.useRef(!1),b=s.useRef(new Set),S=s.useRef(new Set),k={selectedNodes:w,collapsedNodes:M},C=s.useCallback(e=>{e&&d(l=>{let t=new Set(l);return t.has(e)?a.selectionMode==="single"?t.clear():t.delete(e):(a.selectionMode==="single"&&t.clear(),t.add(e)),t})},[a.selectionMode]),R=s.useCallback(e=>{e&&h(l=>{let t=new Set(l);return t.has(e)?t.delete(e):t.add(e),t})},[]),E=s.useCallback((e,l)=>{(e.key==="Enter"||e.key===" ")&&(C(l),e.preventDefault(),e.stopPropagation())},[C]),T=s.useCallback((e,l)=>{(e.key==="Enter"||e.key===" ")&&(R(l),e.preventDefault(),e.stopPropagation())},[R]),z=s.useMemo(()=>{var l;let e=(l=a.gap)!=null?l:40;return Array.isArray(e)?e.length===1?e=[e[0],e[0]]:e.length===0&&(e=[40,40]):e=[e,e],{"--gap-x":e[0],"--gap-y":e[1]}},[a.gap]),y=s.useCallback(e=>e.reduce((l,t)=>(l.push(t),t.children&&t.children.length>0&&l.push(...y(t.children)),l),[]),[]),c=s.useMemo(()=>{if(!a.value||a.value.length===0)return new Map;let e=y(a.value),l=new Map;return e.forEach(t=>{l.set(t.key,t)}),l},[a.value,y]);s.useMemo(()=>{if(u.current||c.size===0)return;let e=new Set,l=new Set;c.forEach(t=>{var r,n;if(t.collapsedByDefault){let i=(n=(r=t.collapsible)!=null?r:a.collapsible)!=null?n:!1,o=t.children&&t.children.length>0;i&&o&&e.add(t.key)}}),c.forEach(t=>{var r,n;if(t.selectedByDefault&&((n=(r=t.selectable)!=null?r:a.selectable)!=null?n:!0)){if(a.selectionMode==="single"&&l.size>0)return;l.add(t.key)}}),S.current=e,b.current=l},[c,a.collapsible,a.selectable,a.selectionMode]);let m=s.useCallback(e=>{var t,r;return e?!!(((r=(t=e.collapsible)!=null?t:a.collapsible)!=null?r:!1)&&e.children&&e.children.length>0):!1},[a.collapsible]),K=s.useCallback(e=>{var l,t;return e?!!((t=(l=e.selectable)!=null?l:a.selectable)!=null&&t):!1},[a.selectable]),p=s.useCallback(e=>!e||!e.key||!m(e)?!1:!!(g.has(e.key)||!u.current&&S.current.has(e.key)),[g,m]),x=s.useCallback(e=>!e||!e.key?!1:!!(f.has(e.key)||!u.current&&b.current.has(e.key)),[f]);return s.useEffect(()=>{if(c.size===0){h(e=>e.size>0?new Set:e),d(e=>e.size>0?new Set:e);return}if(!u.current){u.current=!0;let e=S.current,l=b.current;e.size>0&&h(new Set(e)),l.size>0&&d(new Set(l));return}h(e=>{if(e.size===0)return e;let l=new Set,t=!1;return e.forEach(r=>{var i,o;let n=c.get(r);n&&((o=(i=n.collapsible)!=null?i:a.collapsible)!=null?o:!1)&&n.children&&n.children.length>0?l.add(r):t=!0}),t?l:e}),d(e=>{if(e.size===0)return e;let l=new Set,t=!1;return e.forEach(r=>{var i,o;let n=c.get(r);n&&((o=(i=n.selectable)!=null?i:a.selectable)!=null?o:!0)?l.add(r):t=!0}),t?l:e})},[c,a.collapsible,a.selectable]),{state:k,orgChartStyle:z,toggleNodeSelect:C,toggleNodeCollapse:R,isCollapsible:m,isSelectable:K,isCollapsed:p,isSelected:x,handleNodeKeyDown:E,handleCollapseKeyDown:T}}});export{N as defaultProps,H as useOrgChart};
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/orgchart/useOrgChart.ts","../../src/orgchart/useOrgChart.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { TreeNode } from '@primereact/types/shared/orgchart';\nimport * as React from 'react';\nimport { defaultProps } from './useOrgChart.props';\n\nexport const useOrgChart = withHeadless({\n name: 'useOrgChart',\n defaultProps,\n setup({ props }) {\n const [selectedNodesSet, setSelectedNodesSet] = React.useState<Set<string>>(() => new Set());\n const [collapsedNodesSet, setCollapsedNodesSet] = React.useState<Set<string>>(() => new Set());\n\n const selectedNodes = React.useMemo(() => Array.from(selectedNodesSet), [selectedNodesSet]);\n const collapsedNodes = React.useMemo(() => Array.from(collapsedNodesSet), [collapsedNodesSet]);\n\n const isInitialized = React.useRef(false);\n const initialSelectedKeysRef = React.useRef<Set<string>>(new Set());\n const initialCollapsedKeysRef = React.useRef<Set<string>>(new Set());\n\n const state = {\n selectedNodes,\n collapsedNodes\n };\n\n const toggleNodeSelect = React.useCallback(\n (key?: string) => {\n if (!key) return;\n\n setSelectedNodesSet((prev) => {\n const next = new Set(prev);\n\n if (next.has(key)) {\n if (props.selectionMode === 'single') {\n next.clear();\n } else {\n next.delete(key);\n }\n } else {\n if (props.selectionMode === 'single') {\n next.clear();\n }\n\n next.add(key);\n }\n\n return next;\n });\n },\n [props.selectionMode]\n );\n\n const toggleNodeCollapse = React.useCallback((key?: string) => {\n if (!key) return;\n\n setCollapsedNodesSet((prev) => {\n const next = new Set(prev);\n\n if (next.has(key)) {\n next.delete(key);\n } else {\n next.add(key);\n }\n\n return next;\n });\n }, []);\n\n const handleNodeKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>, key?: string) => {\n if (event.key === 'Enter' || event.key === ' ') {\n toggleNodeSelect(key);\n\n event.preventDefault();\n event.stopPropagation();\n }\n },\n [toggleNodeSelect]\n );\n\n const handleCollapseKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLButtonElement>, key?: string) => {\n if (event.key === 'Enter' || event.key === ' ') {\n toggleNodeCollapse(key);\n\n event.preventDefault();\n event.stopPropagation();\n }\n },\n [toggleNodeCollapse]\n );\n\n const orgChartStyle = React.useMemo(() => {\n let gap = props.gap ?? 40;\n\n if (!Array.isArray(gap)) {\n gap = [gap, gap];\n } else if (gap.length === 1) {\n gap = [gap[0], gap[0]];\n } else if (gap.length === 0) {\n gap = [40, 40];\n }\n\n return {\n '--gap-x': gap[0],\n '--gap-y': gap[1]\n };\n }, [props.gap]);\n\n const flattenNodes = React.useCallback((nodes: TreeNode[]): TreeNode[] => {\n return nodes.reduce((acc, node) => {\n acc.push(node);\n\n if (node.children && node.children.length > 0) {\n acc.push(...flattenNodes(node.children));\n }\n\n return acc;\n }, [] as TreeNode[]);\n }, []);\n\n const nodeMap = React.useMemo(() => {\n if (!props.value || props.value.length === 0) return new Map<string, TreeNode>();\n\n const allNodes = flattenNodes(props.value);\n const map = new Map<string, TreeNode>();\n\n allNodes.forEach((node) => {\n map.set(node.key, node);\n });\n\n return map;\n }, [props.value, flattenNodes]);\n\n React.useMemo(() => {\n if (isInitialized.current || nodeMap.size === 0) return;\n\n const collapsedKeys = new Set<string>();\n const selectedKeys = new Set<string>();\n\n nodeMap.forEach((node) => {\n if (node.collapsedByDefault) {\n const nodeCollapsible = node.collapsible ?? props.collapsible ?? false;\n const hasChildren = node.children && node.children.length > 0;\n\n if (nodeCollapsible && hasChildren) {\n collapsedKeys.add(node.key);\n }\n }\n });\n\n nodeMap.forEach((node) => {\n if (node.selectedByDefault) {\n const nodeSelectable = node.selectable ?? props.selectable ?? true;\n\n if (nodeSelectable) {\n if (props.selectionMode === 'single' && selectedKeys.size > 0) {\n return;\n }\n\n selectedKeys.add(node.key);\n }\n }\n });\n\n initialCollapsedKeysRef.current = collapsedKeys;\n initialSelectedKeysRef.current = selectedKeys;\n }, [nodeMap, props.collapsible, props.selectable, props.selectionMode]);\n\n const isCollapsible = React.useCallback(\n (node?: TreeNode) => {\n if (!node) return false;\n\n const nodeCollapsible = node.collapsible ?? props.collapsible ?? false;\n\n return Boolean(nodeCollapsible && node.children && node.children.length > 0);\n },\n [props.collapsible]\n );\n\n const isSelectable = React.useCallback(\n (node?: TreeNode) => {\n if (!node) return false;\n\n return Boolean(node.selectable ?? props.selectable ?? false);\n },\n [props.selectable]\n );\n\n const isCollapsed = React.useCallback(\n (node?: TreeNode) => {\n if (!node || !node.key) return false;\n\n if (!isCollapsible(node)) return false;\n\n if (collapsedNodesSet.has(node.key)) return true;\n\n if (!isInitialized.current && initialCollapsedKeysRef.current.has(node.key)) {\n return true;\n }\n\n return false;\n },\n [collapsedNodesSet, isCollapsible]\n );\n\n const isSelected = React.useCallback(\n (node?: TreeNode) => {\n if (!node || !node.key) return false;\n\n if (selectedNodesSet.has(node.key)) return true;\n\n if (!isInitialized.current && initialSelectedKeysRef.current.has(node.key)) {\n return true;\n }\n\n return false;\n },\n [selectedNodesSet]\n );\n\n React.useEffect(() => {\n if (nodeMap.size === 0) {\n setCollapsedNodesSet((prev) => (prev.size > 0 ? new Set() : prev));\n setSelectedNodesSet((prev) => (prev.size > 0 ? new Set() : prev));\n\n return;\n }\n\n if (!isInitialized.current) {\n isInitialized.current = true;\n\n const collapsedKeys = initialCollapsedKeysRef.current;\n const selectedKeys = initialSelectedKeysRef.current;\n\n if (collapsedKeys.size > 0) {\n setCollapsedNodesSet(new Set(collapsedKeys));\n }\n\n if (selectedKeys.size > 0) {\n setSelectedNodesSet(new Set(selectedKeys));\n }\n\n return;\n }\n\n setCollapsedNodesSet((prev) => {\n if (prev.size === 0) return prev;\n\n const next = new Set<string>();\n let hasChanges = false;\n\n prev.forEach((key) => {\n const node = nodeMap.get(key);\n\n if (node) {\n const nodeCollapsible = node.collapsible ?? props.collapsible ?? false;\n\n if (nodeCollapsible && node.children && node.children.length > 0) {\n next.add(key);\n } else {\n hasChanges = true;\n }\n } else {\n hasChanges = true;\n }\n });\n\n return hasChanges ? next : prev;\n });\n\n setSelectedNodesSet((prev) => {\n if (prev.size === 0) return prev;\n\n const next = new Set<string>();\n let hasChanges = false;\n\n prev.forEach((key) => {\n const node = nodeMap.get(key);\n\n if (node) {\n const nodeSelectable = node.selectable ?? props.selectable ?? true;\n\n if (nodeSelectable) {\n next.add(key);\n } else {\n hasChanges = true;\n }\n } else {\n hasChanges = true;\n }\n });\n\n return hasChanges ? next : prev;\n });\n }, [nodeMap, props.collapsible, props.selectable]);\n\n return {\n state,\n orgChartStyle,\n toggleNodeSelect,\n toggleNodeCollapse,\n isCollapsible,\n isSelectable,\n isCollapsed,\n isSelected,\n handleNodeKeyDown,\n handleCollapseKeyDown\n };\n }\n});\n","import type { useOrgChartProps } from '@primereact/types/shared/orgchart';\n\nexport const defaultProps: useOrgChartProps = {\n value: undefined,\n gap: 40,\n selectable: true,\n collapsible: false,\n selectionMode: 'single'\n};\n"],"mappings":"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","names":["withHeadless","React","defaultProps","useOrgChart","withHeadless","defaultProps","props","selectedNodesSet","setSelectedNodesSet","collapsedNodesSet","setCollapsedNodesSet","selectedNodes","collapsedNodes","isInitialized","initialSelectedKeysRef","initialCollapsedKeysRef","state","toggleNodeSelect","key","prev","next","toggleNodeCollapse","handleNodeKeyDown","event","handleCollapseKeyDown","orgChartStyle","_a","gap","flattenNodes","nodes","acc","node","nodeMap","allNodes","map","collapsedKeys","selectedKeys","_b","nodeCollapsible","hasChildren","isCollapsible","isSelectable","isCollapsed","isSelected","hasChanges"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { TreeNode } from '@primereact/types/shared/orgchart';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
export declare const useOrgChart: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/orgchart").useOrgChartProps, unknown, {
|
|
4
|
+
state: {
|
|
5
|
+
selectedNodes: string[];
|
|
6
|
+
collapsedNodes: string[];
|
|
7
|
+
};
|
|
8
|
+
orgChartStyle: {
|
|
9
|
+
'--gap-x': number;
|
|
10
|
+
'--gap-y': number;
|
|
11
|
+
};
|
|
12
|
+
toggleNodeSelect: (key?: string) => void;
|
|
13
|
+
toggleNodeCollapse: (key?: string) => void;
|
|
14
|
+
isCollapsible: (node?: TreeNode) => boolean;
|
|
15
|
+
isSelectable: (node?: TreeNode) => boolean;
|
|
16
|
+
isCollapsed: (node?: TreeNode) => boolean;
|
|
17
|
+
isSelected: (node?: TreeNode) => boolean;
|
|
18
|
+
handleNodeKeyDown: (event: React.KeyboardEvent<HTMLDivElement>, key?: string) => void;
|
|
19
|
+
handleCollapseKeyDown: (event: React.KeyboardEvent<HTMLButtonElement>, key?: string) => void;
|
|
20
|
+
}>;
|
|
File without changes
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{withHeadless as q}from"@primereact/core/headless";import{ConnectedOverlayScrollHandler as F}from"@primereact/core/utils";import{useEventListener as d,useUnmountEffect as G}from"@primereact/hooks";import{$dt as J}from"@primeuix/styled";import{absolutePosition as Q,addClass as _,addStyle as ee,getHiddenElementOuterHeight as te,getHiddenElementOuterWidth as ne,getOffset as M,getViewport as re,isTouchDevice as oe,relativePosition as le}from"@primeuix/utils/dom";import{ZIndex as E}from"@primeuix/utils/zindex";import{EventBus as U}from"@primeuix/utils/eventbus";var v=U();import*as a from"react";var H={target:void 0,defaultOpen:void 0,open:void 0,appendTo:"body",type:"overlay",baseZIndex:0,autoZIndex:!0,closeOnEscape:!0,onOpenChange:void 0};var Oe=q({name:"useOverlay",defaultProps:H,setup:({props:t,$primereact:k})=>{let[s,b]=a.useState(!1),n=a.useRef(null),c=a.useRef(null),m=a.useRef(!1),S={visible:s},u=a.useCallback(()=>{var e,i;return n!=null&&n.current&&(n==null?void 0:n.current)instanceof HTMLElement?n==null?void 0:n.current:(i=(e=n==null?void 0:n.current)==null?void 0:e.elementRef.current)!=null?i:null},[n]),P=()=>{var e;s||(b(!0),(e=t.onOpenChange)==null||e.call(t,{value:!0}))},f=()=>{var e;s&&(b(!1),(e=t.onOpenChange)==null||e.call(t,{value:!1}))},I=()=>{var i,r,o,l;let e=u();e&&(ee(e,{position:"absolute",top:"0"}),t.autoZIndex&&t.type&&E.set(t.type,e,((i=t.baseZIndex)!=null?i:0)+((l=(o=(r=k.config)==null?void 0:r.zIndex)==null?void 0:o[t.type])!=null?l:1e3)),z())},N=()=>{D(),V(),X(),t.type==="menu"&&K()},Z=()=>{O(),x(),h(),t.type==="menu"&&L()},p=()=>{let e=u();t.autoZIndex&&e&&E.clear(e)},z=()=>{let e=u();if(!e)return;if(t.target&&typeof t.target=="object"&&"pageX"in t.target&&"pageY"in t.target){let r=t.target,o=r.pageX+1,l=r.pageY+1,R=e.offsetParent?e.offsetWidth:ne(e),C=e.offsetParent?e.offsetHeight:te(e),T=re(),y=window.scrollY||document.documentElement.scrollTop||document.body.scrollTop||0,g=window.scrollX||document.documentElement.scrollLeft||document.body.scrollLeft||0;o+R-g>T.width&&(o-=R),l+C-y>T.height&&(l-=C),o<g&&(o=g),l<y&&(l=y),e.style.left=o+"px",e.style.top=l+"px"}else if(t.target){t.appendTo==="self"?le(e,t.target):Q(e,t.target);let r=M(e),o=M(t.target),l=0;Number(r.left)<Number(o.left)&&(l=Number(o.left)-Number(r.left)),e.style.setProperty(J("overlay.arrow.left").name,`${l}px`),r.top<o.top&&(_(e,"p-overlay-flipped"),e.setAttribute("data-p-overlay-flipped","true"))}},[D,O]=d({type:"click",listener:e=>w(e)}),[K,L]=d({type:"contextmenu",listener:e=>w(e)}),[V,x]=d({type:"scroll",listener:()=>A()}),[X,h]=d({target:"window",type:"resize",listener:()=>B()}),w=e=>{if(m.current){m.current=!1;return}s&&Y(e)&&f()},Y=e=>{let i=u();if(!i)return;let r=e.target;return!(i.isSameNode(r)||i.contains(r)||t.target&&t.target instanceof HTMLElement&&(t.target.isSameNode(r)||t.target.contains(r)))},A=()=>{c.current||(c.current=new F(u(),()=>{s&&f()})),c.current.bindScrollListener()},B=()=>{s&&!oe()&&f()},j=e=>{v.emit("overlay-click",{originalEvent:e,target:t.target}),m.current=!0},W=e=>{e.code==="Escape"&&$(e)},$=e=>{s&&f(),e.preventDefault()};return a.useEffect(()=>{t.open?P():t.open||f()},[t.open]),G(()=>{O(),x(),h(),t.type==="menu"&&L(),c.current&&(c.current.destroy(),c.current=null);let e=u();t.autoZIndex&&e&&E.clear(e)}),{state:S,containerRef:n,hide:f,onOverlayEnter:I,onOverlayAfterEnter:N,onLeave:Z,onAfterLeave:p,onOverlayClick:j,onOverlayKeyDown:W}}});export{H as defaultProps,Oe as useOverlay};
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/overlay/useOverlay.ts","../../../../primereact/src/overlayeventbus/OverlayEventBus.ts","../../src/overlay/useOverlay.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { ConnectedOverlayScrollHandler } from '@primereact/core/utils';\nimport { useEventListener, useUnmountEffect } from '@primereact/hooks';\nimport { $dt } from '@primeuix/styled';\nimport { absolutePosition, addClass, addStyle, getHiddenElementOuterHeight, getHiddenElementOuterWidth, getOffset, getViewport, isTouchDevice, relativePosition } from '@primeuix/utils/dom';\nimport { ZIndex } from '@primeuix/utils/zindex';\nimport { OverlayEventBus } from 'primereact/overlayeventbus';\nimport * as React from 'react';\nimport { defaultProps } from './useOverlay.props';\n\nexport const useOverlay = withHeadless({\n name: 'useOverlay',\n defaultProps,\n setup: ({ props, $primereact }) => {\n const [visibleState, setVisibleState] = React.useState(false);\n const containerRef = React.useRef<{ elementRef: React.RefObject<HTMLDivElement> } | null>(null);\n const scrollHandler = React.useRef<ConnectedOverlayScrollHandler | null>(null);\n const selfClick = React.useRef(false);\n\n const state = {\n visible: visibleState\n };\n\n const getContainer = React.useCallback(() => {\n if (containerRef?.current && containerRef?.current instanceof HTMLElement) {\n return containerRef?.current;\n }\n\n return containerRef?.current?.elementRef.current ?? null;\n }, [containerRef]);\n\n const show = () => {\n if (visibleState) return;\n\n setVisibleState(true);\n props.onOpenChange?.({\n value: true\n });\n };\n\n const hide = () => {\n if (!visibleState) return;\n\n setVisibleState(false);\n props.onOpenChange?.({\n value: false\n });\n };\n\n const onOverlayEnter = () => {\n const containerElement = getContainer();\n\n if (!containerElement) return;\n\n addStyle(containerElement, { position: 'absolute', top: '0' });\n\n if (props.autoZIndex && props.type) {\n ZIndex.set(props.type, containerElement, (props.baseZIndex ?? 0) + ($primereact.config?.zIndex?.[props.type] ?? 1000));\n }\n\n alignOverlay();\n };\n\n const onOverlayAfterEnter = () => {\n bindOutsideClickListener();\n bindScrollListener();\n bindResizeListener();\n\n if (props.type === 'menu') {\n bindOutsideContextMenuListener();\n }\n };\n\n const onLeave = () => {\n unbindOutsideClickListener();\n unbindScrollListener();\n unbindResizeListener();\n\n if (props.type === 'menu') {\n unbindOutsideContextMenuListener();\n }\n };\n\n const onAfterLeave = () => {\n const containerElement = getContainer();\n\n if (props.autoZIndex && containerElement) {\n ZIndex.clear(containerElement);\n }\n };\n\n const alignOverlay = () => {\n const containerElement = getContainer();\n\n if (!containerElement) return;\n\n const isVirtualTarget = props.target && typeof props.target === 'object' && 'pageX' in props.target && 'pageY' in props.target;\n\n if (isVirtualTarget) {\n const virtualTarget = props.target as { pageX: number; pageY: number };\n\n let left = virtualTarget.pageX + 1;\n let top = virtualTarget.pageY + 1;\n const width = containerElement.offsetParent ? containerElement.offsetWidth : getHiddenElementOuterWidth(containerElement);\n const height = containerElement.offsetParent ? containerElement.offsetHeight : getHiddenElementOuterHeight(containerElement);\n const viewport = getViewport();\n const scrollTop = window.scrollY || document.documentElement.scrollTop || document.body.scrollTop || 0;\n const scrollLeft = window.scrollX || document.documentElement.scrollLeft || document.body.scrollLeft || 0;\n\n //flip\n if (left + width - scrollLeft > viewport.width) {\n left -= width;\n }\n\n //flip\n if (top + height - scrollTop > viewport.height) {\n top -= height;\n }\n\n //fit\n if (left < scrollLeft) {\n left = scrollLeft;\n }\n\n //fit\n if (top < scrollTop) {\n top = scrollTop;\n }\n\n containerElement.style.left = left + 'px';\n containerElement.style.top = top + 'px';\n } else if (props.target) {\n if (props.appendTo === 'self') {\n relativePosition(containerElement, props.target as HTMLElement);\n } else {\n absolutePosition(containerElement, props.target as HTMLElement);\n }\n\n const containerOffset = getOffset(containerElement);\n const targetOffset = getOffset(props.target as HTMLElement);\n let arrowLeft = 0;\n\n if (Number(containerOffset.left) < Number(targetOffset.left)) {\n arrowLeft = Number(targetOffset.left) - Number(containerOffset.left);\n }\n\n containerElement.style.setProperty($dt('overlay.arrow.left').name, `${arrowLeft}px`);\n\n if (containerOffset.top < targetOffset.top) {\n addClass(containerElement, 'p-overlay-flipped');\n containerElement.setAttribute('data-p-overlay-flipped', 'true');\n }\n }\n };\n\n const [bindOutsideClickListener, unbindOutsideClickListener] = useEventListener({\n type: 'click',\n listener: (event) => onOutsideClick(event as unknown as React.MouseEvent)\n });\n\n const [bindOutsideContextMenuListener, unbindOutsideContextMenuListener] = useEventListener({\n type: 'contextmenu',\n listener: (event) => onOutsideClick(event as unknown as React.MouseEvent)\n });\n\n const [bindScrollListener, unbindScrollListener] = useEventListener({\n type: 'scroll',\n listener: () => onScroll()\n });\n\n const [bindResizeListener, unbindResizeListener] = useEventListener({\n target: 'window',\n type: 'resize',\n listener: () => onResize()\n });\n\n const onOutsideClick = (event: React.MouseEvent) => {\n if (selfClick.current) {\n selfClick.current = false;\n\n return;\n }\n\n if (visibleState && isOutsideClicked(event)) {\n hide();\n }\n };\n\n const isOutsideClicked = (event: React.MouseEvent) => {\n const containerElement = getContainer();\n\n if (!containerElement) return;\n\n const clickedElement = event.target as Node;\n\n // Check if click is inside the overlay container\n if (containerElement.isSameNode(clickedElement) || containerElement.contains(clickedElement)) {\n return false;\n }\n\n // Check if click is on the target element (e.g., the input that triggered the overlay)\n if (props.target && props.target instanceof HTMLElement) {\n if (props.target.isSameNode(clickedElement) || props.target.contains(clickedElement)) {\n return false;\n }\n }\n\n return true;\n };\n\n const onScroll = () => {\n if (!scrollHandler.current) {\n scrollHandler.current = new ConnectedOverlayScrollHandler(getContainer(), () => {\n if (visibleState) {\n hide();\n }\n });\n }\n\n scrollHandler.current.bindScrollListener();\n };\n\n const onResize = () => {\n if (visibleState && !isTouchDevice()) {\n hide();\n }\n };\n\n const onOverlayClick = (event: React.MouseEvent) => {\n OverlayEventBus.emit('overlay-click', {\n originalEvent: event,\n target: props.target\n });\n\n selfClick.current = true;\n };\n\n const onOverlayKeyDown = (event: React.KeyboardEvent) => {\n if (event.code === 'Escape') {\n onEscapeKey(event);\n }\n };\n\n const onEscapeKey = (event: React.KeyboardEvent) => {\n if (visibleState) {\n hide();\n }\n\n event.preventDefault();\n };\n\n React.useEffect(() => {\n if (props.open) {\n show();\n } else if (!props.open) {\n hide();\n }\n }, [props.open]);\n\n useUnmountEffect(() => {\n unbindOutsideClickListener();\n unbindScrollListener();\n unbindResizeListener();\n\n if (props.type === 'menu') {\n unbindOutsideContextMenuListener();\n }\n\n if (scrollHandler.current) {\n scrollHandler.current.destroy();\n scrollHandler.current = null;\n }\n\n const containerElement = getContainer();\n\n if (props.autoZIndex && containerElement) {\n ZIndex.clear(containerElement);\n }\n });\n\n return {\n state,\n containerRef,\n // methods\n hide,\n onOverlayEnter,\n onOverlayAfterEnter,\n onLeave,\n onAfterLeave,\n onOverlayClick,\n onOverlayKeyDown\n };\n }\n});\n","import { EventBus } from '@primeuix/utils/eventbus';\n\nexport default EventBus();\n","import type { useOverlayProps } from '@primereact/types/shared/overlay';\n\nexport const defaultProps: useOverlayProps = {\n target: undefined,\n defaultOpen: undefined,\n open: undefined,\n appendTo: 'body',\n type: 'overlay',\n baseZIndex: 0,\n autoZIndex: true,\n closeOnEscape: true,\n onOpenChange: undefined\n};\n"],"mappings":"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","names":["withHeadless","ConnectedOverlayScrollHandler","useEventListener","useUnmountEffect","$dt","absolutePosition","addClass","addStyle","getHiddenElementOuterHeight","getHiddenElementOuterWidth","getOffset","getViewport","isTouchDevice","relativePosition","ZIndex","EventBus","OverlayEventBus_default","React","defaultProps","useOverlay","withHeadless","defaultProps","props","$primereact","visibleState","setVisibleState","containerRef","scrollHandler","selfClick","state","getContainer","_a","_b","show","hide","onOverlayEnter","_c","_d","containerElement","addStyle","ZIndex","alignOverlay","onOverlayAfterEnter","bindOutsideClickListener","bindScrollListener","bindResizeListener","bindOutsideContextMenuListener","onLeave","unbindOutsideClickListener","unbindScrollListener","unbindResizeListener","unbindOutsideContextMenuListener","onAfterLeave","virtualTarget","left","top","width","getHiddenElementOuterWidth","height","getHiddenElementOuterHeight","viewport","getViewport","scrollTop","scrollLeft","relativePosition","absolutePosition","containerOffset","getOffset","targetOffset","arrowLeft","$dt","addClass","useEventListener","event","onOutsideClick","onScroll","onResize","isOutsideClicked","clickedElement","ConnectedOverlayScrollHandler","isTouchDevice","onOverlayClick","OverlayEventBus_default","onOverlayKeyDown","onEscapeKey","useUnmountEffect"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export declare const useOverlay: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/overlay").useOverlayProps, unknown, {
|
|
3
|
+
state: {
|
|
4
|
+
visible: boolean;
|
|
5
|
+
};
|
|
6
|
+
containerRef: React.RefObject<{
|
|
7
|
+
elementRef: React.RefObject<HTMLDivElement>;
|
|
8
|
+
} | null>;
|
|
9
|
+
hide: () => void;
|
|
10
|
+
onOverlayEnter: () => void;
|
|
11
|
+
onOverlayAfterEnter: () => void;
|
|
12
|
+
onLeave: () => void;
|
|
13
|
+
onAfterLeave: () => void;
|
|
14
|
+
onOverlayClick: (event: React.MouseEvent) => void;
|
|
15
|
+
onOverlayKeyDown: (event: React.KeyboardEvent) => void;
|
|
16
|
+
}>;
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/overlaybadge/useOverlayBadge.ts","../../src/overlaybadge/useOverlayBadge.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { defaultProps } from './useOverlayBadge.props';\n\nexport const useOverlayBadge = withHeadless({\n name: 'useOverlayBadge',\n defaultProps\n});\n","import type { useOverlayBadgeProps } from '@primereact/types/shared/overlaybadge';\n\nexport const defaultProps: useOverlayBadgeProps = {};\n"],"mappings":"AAAA,OAAS,gBAAAA,MAAoB,4BCEtB,IAAMC,EAAqC,CAAC,EDC5C,IAAMC,EAAkBC,EAAa,CACxC,KAAM,kBACN,aAAAC,CACJ,CAAC","names":["withHeadless","defaultProps","useOverlayBadge","withHeadless","defaultProps"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const useOverlayBadge: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/overlaybadge").useOverlayBadgeProps, unknown, Record<PropertyKey, unknown>>;
|
|
File without changes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@primereact/headless",
|
|
3
|
-
"version": "11.0.0-alpha.
|
|
3
|
+
"version": "11.0.0-alpha.10",
|
|
4
4
|
"author": "PrimeTek Informatics",
|
|
5
5
|
"description": "",
|
|
6
6
|
"homepage": "https://primereact.org/",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"repository": {
|
|
9
9
|
"type": "git",
|
|
10
10
|
"url": "git+https://github.com/primefaces/primereact.git",
|
|
11
|
-
"directory": "packages/headless"
|
|
11
|
+
"directory": "packages/@primereact/headless"
|
|
12
12
|
},
|
|
13
13
|
"bugs": {
|
|
14
14
|
"url": "https://github.com/primefaces/primereact/issues"
|
|
@@ -32,9 +32,9 @@
|
|
|
32
32
|
"access": "public"
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@primeuix/styled": "^0.7.
|
|
36
|
-
"@primeuix/utils": "^0.6.
|
|
37
|
-
"@primereact/core": "11.0.0-alpha.
|
|
38
|
-
"@primereact/hooks": "11.0.0-alpha.
|
|
35
|
+
"@primeuix/styled": "^0.7.4",
|
|
36
|
+
"@primeuix/utils": "^0.6.4",
|
|
37
|
+
"@primereact/core": "11.0.0-alpha.10",
|
|
38
|
+
"@primereact/hooks": "11.0.0-alpha.10"
|
|
39
39
|
}
|
|
40
40
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{withHeadless as L}from"@primereact/core/headless";import*as l from"react";var w={defaultPage:1,page:void 0,total:0,itemsPerPage:10,onPageChange:void 0,siblings:1,edges:1,disabled:!1,showEllipsis:!0};var r=(e,a)=>{let s=Math.max(0,a-e+1);return Array.from({length:s},(g,n)=>({type:"page",value:e+n}))},M={type:"ellipsis"},H=L({name:"usePaginator",defaultProps:w,setup({props:e}){var m,f,d,P;let{edges:a=1,siblings:s=1,showEllipsis:g=!0}=e,[n,S]=l.useState((f=(m=e.defaultPage)!=null?m:e.page)!=null?f:1),t=Math.max(1,Math.ceil(((d=e.total)!=null?d:0)/((P=e.itemsPerPage)!=null?P:1))),b=n>1,v=n<t,c=i=>{var u;if(e.disabled||i===void 0)return;let o=i<1?1:i>t?t:i;o!==n&&((u=e.onPageChange)==null||u.call(e,{originalEvent:{},value:o})),S(o)},E=()=>c(n+1),y=()=>c(n-1),R=()=>c(1),I=()=>c(t),p=l.useMemo(()=>{let i=Math.max(n-s,1),o=Math.min(n+s,t);if(g){if(2*a+2*s+(g?3:1)>=t)return r(1,t);let h=i>a+2,x=o<t-a-1;return[...r(1,a),...h?[M]:r(a+1,s*2+a+2),...h&&x?r(i,o):[],...x?[M]:r(t-a-1-2*s,t-a),...r(t-a+1,t)]}else return[...r(Math.max(Math.min(i,o-2*s),1),Math.min(Math.max(o,i+2*s),t))]},[t,a,s,n,g]);return l.useEffect(()=>{e.page!==void 0&&c(e.page)},[e.page]),{state:{activePage:n,totalPages:t,canPrev:b,canNext:v},pages:p,prev:y,next:E,first:R,last:I,handlePage:c}}});export{w as defaultProps,H as usePaginator};
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/paginator/usePaginator.ts","../../src/paginator/usePaginator.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport * as React from 'react';\nimport { defaultProps } from './usePaginator.props';\n\nconst range = (start: number, end: number) => {\n const length = Math.max(0, end - start + 1);\n\n return Array.from({ length }, (_, i) => ({ type: 'page' as const, value: start + i }));\n};\n\nconst ELLIPSIS = { type: 'ellipsis' as const };\n\nexport const usePaginator = withHeadless({\n name: 'usePaginator',\n defaultProps,\n setup({ props }) {\n const { edges = 1, siblings = 1, showEllipsis = true } = props;\n const [activePage, setActivePage] = React.useState(props.defaultPage ?? props.page ?? 1);\n\n const totalPages = Math.max(1, Math.ceil((props.total ?? 0) / (props.itemsPerPage ?? 1)));\n const canPrev = activePage > 1;\n const canNext = activePage < totalPages;\n\n const handlePage = (page?: number) => {\n if (props.disabled || page === undefined) return;\n\n const newPageValue = page < 1 ? 1 : page > totalPages ? totalPages : page;\n\n if (newPageValue !== activePage) {\n props.onPageChange?.({\n originalEvent: {} as React.SyntheticEvent,\n value: newPageValue\n });\n }\n\n setActivePage(newPageValue);\n };\n\n const next = () => handlePage(activePage + 1);\n const prev = () => handlePage(activePage - 1);\n const first = () => handlePage(1);\n const last = () => handlePage(totalPages);\n\n const pages = React.useMemo(() => {\n const leftSiblingIndex = Math.max(activePage - siblings, 1);\n const rightSiblingIndex = Math.min(activePage + siblings, totalPages);\n\n if (showEllipsis) {\n const windowSize = 2 * edges + 2 * siblings + (showEllipsis ? 3 : 1);\n\n if (windowSize >= totalPages) {\n return range(1, totalPages);\n }\n\n const isShowLeftEllipsis = leftSiblingIndex > edges + 2;\n const isShowRightEllipsis = rightSiblingIndex < totalPages - edges - 1;\n\n return [\n ...range(1, edges),\n\n ...(isShowLeftEllipsis ? [ELLIPSIS] : range(edges + 1, siblings * 2 + edges + 2)),\n\n ...(isShowLeftEllipsis && isShowRightEllipsis ? range(leftSiblingIndex, rightSiblingIndex) : []),\n\n ...(isShowRightEllipsis ? [ELLIPSIS] : range(totalPages - edges - 1 - 2 * siblings, totalPages - edges)),\n\n ...range(totalPages - edges + 1, totalPages)\n ];\n } else {\n return [...range(Math.max(Math.min(leftSiblingIndex, rightSiblingIndex - 2 * siblings), 1), Math.min(Math.max(rightSiblingIndex, leftSiblingIndex + 2 * siblings), totalPages))];\n }\n }, [totalPages, edges, siblings, activePage, showEllipsis]);\n\n React.useEffect(() => {\n if (props.page !== undefined) {\n handlePage(props.page);\n }\n }, [props.page]);\n\n return {\n state: {\n activePage,\n totalPages,\n canPrev,\n canNext\n },\n pages,\n prev,\n next,\n first,\n last,\n handlePage\n };\n }\n});\n","import type { usePaginatorProps } from '@primereact/types/shared/paginator';\n\nexport const defaultProps: usePaginatorProps = {\n defaultPage: 1,\n page: undefined,\n total: 0,\n itemsPerPage: 10,\n onPageChange: undefined,\n siblings: 1,\n edges: 1,\n disabled: false,\n showEllipsis: true\n};\n"],"mappings":"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","names":["withHeadless","React","defaultProps","range","start","end","length","_","i","ELLIPSIS","usePaginator","withHeadless","defaultProps","props","_a","_b","_c","_d","edges","siblings","showEllipsis","activePage","setActivePage","totalPages","canPrev","canNext","handlePage","page","newPageValue","next","prev","first","last","pages","leftSiblingIndex","rightSiblingIndex","isShowLeftEllipsis","isShowRightEllipsis"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare const usePaginator: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/paginator").usePaginatorProps, unknown, {
|
|
2
|
+
state: {
|
|
3
|
+
activePage: number;
|
|
4
|
+
totalPages: number;
|
|
5
|
+
canPrev: boolean;
|
|
6
|
+
canNext: boolean;
|
|
7
|
+
};
|
|
8
|
+
pages: ({
|
|
9
|
+
type: "ellipsis";
|
|
10
|
+
} | {
|
|
11
|
+
type: "page";
|
|
12
|
+
value: number;
|
|
13
|
+
})[];
|
|
14
|
+
prev: () => void;
|
|
15
|
+
next: () => void;
|
|
16
|
+
first: () => void;
|
|
17
|
+
last: () => void;
|
|
18
|
+
handlePage: (page?: number) => void;
|
|
19
|
+
}>;
|
|
File without changes
|
package/panel/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
var i=Object.defineProperty,f=Object.defineProperties;var n=Object.getOwnPropertyDescriptors;var p=Object.getOwnPropertySymbols;var P=Object.prototype.hasOwnProperty,c=Object.prototype.propertyIsEnumerable;var l=(r,e,o)=>e in r?i(r,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):r[e]=o,t=(r,e)=>{for(var o in e||(e={}))P.call(e,o)&&l(r,o,e[o]);if(p)for(var o of p(e))c.call(e,o)&&l(r,o,e[o]);return r},a=(r,e)=>f(r,n(e));import{withHeadless as d}from"@primereact/core/headless";import{useCollapsible as g}from"@primereact/headless/collapsible";import*as m from"@primereact/headless/collapsible";var u=t({},m.defaultProps);var w=d({name:"usePanel",defaultProps:u,setup({props:r}){let e=g(r),o=s=>{e==null||e.toggle(s),s==null||s.preventDefault()};return a(t({},e),{onTriggerClick:o})}});export{u as defaultProps,w as usePanel};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|
package/panel/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/panel/usePanel.ts","../../src/panel/usePanel.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport
|
|
1
|
+
{"version":3,"sources":["../../src/panel/usePanel.ts","../../src/panel/usePanel.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useCollapsible } from '@primereact/headless/collapsible';\nimport { defaultProps } from './usePanel.props';\n\nexport const usePanel = withHeadless({\n name: 'usePanel',\n defaultProps,\n setup({ props }) {\n const collapsible = useCollapsible(props);\n\n // methods\n const onTriggerClick = (event?: React.SyntheticEvent) => {\n collapsible?.toggle(event);\n event?.preventDefault();\n };\n\n return {\n ...collapsible,\n onTriggerClick\n };\n }\n});\n","import * as useCollapsible from '@primereact/headless/collapsible';\nimport type { usePanelProps } from '@primereact/types/shared/panel';\n\nexport const defaultProps: usePanelProps = {\n ...useCollapsible.defaultProps\n};\n"],"mappings":"6aAAA,OAAS,gBAAAA,MAAoB,4BAC7B,OAAS,kBAAAC,MAAsB,mCCD/B,UAAYC,MAAoB,mCAGzB,IAAMC,EAA8BC,EAAA,GACrB,gBDAf,IAAMC,EAAWC,EAAa,CACjC,KAAM,WACN,aAAAC,EACA,MAAM,CAAE,MAAAC,CAAM,EAAG,CACb,IAAMC,EAAcC,EAAeF,CAAK,EAGlCG,EAAkBC,GAAiC,CACrDH,GAAA,MAAAA,EAAa,OAAOG,GACpBA,GAAA,MAAAA,EAAO,gBACX,EAEA,OAAOC,EAAAC,EAAA,GACAL,GADA,CAEH,eAAAE,CACJ,EACJ,CACJ,CAAC","names":["withHeadless","useCollapsible","useCollapsible","defaultProps","__spreadValues","usePanel","withHeadless","defaultProps","props","collapsible","useCollapsible","onTriggerClick","event","__spreadProps","__spreadValues"]}
|
package/panel/usePanel.d.ts
CHANGED
|
@@ -1,11 +1,28 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
1
|
export declare const usePanel: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/panel").usePanelProps, unknown, {
|
|
2
|
+
onTriggerClick: (event?: React.SyntheticEvent) => void;
|
|
3
|
+
ref: import("react").Ref<unknown>;
|
|
4
|
+
elementRef: import("react").RefObject<HTMLElement | null>;
|
|
5
|
+
id?: string | undefined;
|
|
6
|
+
name?: string | undefined;
|
|
7
|
+
scope?: string | undefined;
|
|
8
|
+
part?: string | undefined;
|
|
9
|
+
inProps?: import("@primereact/types").SafeRecord<import("@primereact/types/shared/collapsible").useCollapsibleProps> | undefined;
|
|
10
|
+
$attrSelector?: string | undefined;
|
|
11
|
+
$primereact: import("@primereact/types/core").Contexts;
|
|
12
|
+
props: import("@primereact/types").SafeRecord<import("@primereact/types/shared/collapsible").useCollapsibleProps>;
|
|
13
|
+
attrs: Omit<import("@primereact/types").SafeRecord<import("@primereact/types/shared/collapsible").useCollapsibleProps>, keyof import("@primereact/types/shared/collapsible").useCollapsibleProps> & Record<PropertyKey, unknown>;
|
|
3
14
|
state: {
|
|
4
|
-
|
|
15
|
+
open: boolean | undefined;
|
|
5
16
|
};
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
17
|
+
$computedSetup: {
|
|
18
|
+
state: {
|
|
19
|
+
open: boolean | undefined;
|
|
20
|
+
};
|
|
21
|
+
open: (event?: React.SyntheticEvent) => void;
|
|
22
|
+
close: (event?: React.SyntheticEvent) => void;
|
|
23
|
+
toggle: (event?: React.SyntheticEvent) => void;
|
|
24
|
+
};
|
|
25
|
+
open: (event?: React.SyntheticEvent) => void;
|
|
26
|
+
close: (event?: React.SyntheticEvent) => void;
|
|
27
|
+
toggle: (event?: React.SyntheticEvent) => void;
|
|
11
28
|
}>;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{withHeadless as f}from"@primereact/core/headless";import{useControlledState as s}from"@primereact/hooks/use-controlled-state";var o={value:void 0,defaultValue:void 0,mask:void 0,defaultMask:!0,onValueChange:void 0,onMaskChange:void 0};var C=f({name:"usePassword",defaultProps:o,setup({props:e}){var t;let[l,r]=s({value:e.value,defaultValue:e.defaultValue,onChange:e.onValueChange}),[a,d]=s({value:e.mask,defaultValue:(t=e.defaultMask)!=null?t:!0,onChange:e.onMaskChange});return{state:{value:l,mask:a!=null?a:!0},onInputChange:n=>{let u=n.target.value;r([u,{originalEvent:n,value:u}])},toggleMask:()=>{d([!a,{value:!a}])}}}});export{o as defaultProps,C as usePassword};
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/password/usePassword.ts","../../src/password/usePassword.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useControlledState } from '@primereact/hooks/use-controlled-state';\nimport * as React from 'react';\nimport { defaultProps } from './usePassword.props';\n\nexport const usePassword = withHeadless({\n name: 'usePassword',\n defaultProps,\n setup({ props }) {\n const [valueState, setValueState] = useControlledState({\n value: props.value,\n defaultValue: props.defaultValue,\n onChange: props.onValueChange\n });\n\n const [maskState, setMaskState] = useControlledState({\n value: props.mask,\n defaultValue: props.defaultMask ?? true,\n onChange: props.onMaskChange\n });\n\n const state = {\n value: valueState,\n mask: maskState ?? true\n };\n\n const onInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = event.target.value;\n\n setValueState([\n newValue,\n {\n originalEvent: event,\n value: newValue\n }\n ]);\n };\n\n const toggleMask = () => {\n setMaskState([!maskState, { value: !maskState }]);\n };\n\n return {\n state,\n // methods\n onInputChange,\n toggleMask\n };\n }\n});\n","import type { usePasswordProps } from '@primereact/types/shared/password';\n\nexport const defaultProps: usePasswordProps = {\n value: undefined,\n defaultValue: undefined,\n mask: undefined,\n defaultMask: true,\n onValueChange: undefined,\n onMaskChange: undefined\n};\n"],"mappings":"AAAA,OAAS,gBAAAA,MAAoB,4BAC7B,OAAS,sBAAAC,MAA0B,yCCC5B,IAAMC,EAAiC,CAC1C,MAAO,OACP,aAAc,OACd,KAAM,OACN,YAAa,GACb,cAAe,OACf,aAAc,MAClB,EDJO,IAAMC,EAAcC,EAAa,CACpC,KAAM,cACN,aAAAC,EACA,MAAM,CAAE,MAAAC,CAAM,EAAG,CARrB,IAAAC,EASQ,GAAM,CAACC,EAAYC,CAAa,EAAIC,EAAmB,CACnD,MAAOJ,EAAM,MACb,aAAcA,EAAM,aACpB,SAAUA,EAAM,aACpB,CAAC,EAEK,CAACK,EAAWC,CAAY,EAAIF,EAAmB,CACjD,MAAOJ,EAAM,KACb,cAAcC,EAAAD,EAAM,cAAN,KAAAC,EAAqB,GACnC,SAAUD,EAAM,YACpB,CAAC,EAuBD,MAAO,CACH,MAtBU,CACV,MAAOE,EACP,KAAMG,GAAA,KAAAA,EAAa,EACvB,EAqBI,cAnBmBE,GAA+C,CAClE,IAAMC,EAAWD,EAAM,OAAO,MAE9BJ,EAAc,CACVK,EACA,CACI,cAAeD,EACf,MAAOC,CACX,CACJ,CAAC,CACL,EAUI,WARe,IAAM,CACrBF,EAAa,CAAC,CAACD,EAAW,CAAE,MAAO,CAACA,CAAU,CAAC,CAAC,CACpD,CAOA,CACJ,CACJ,CAAC","names":["withHeadless","useControlledState","defaultProps","usePassword","withHeadless","defaultProps","props","_a","valueState","setValueState","useControlledState","maskState","setMaskState","event","newValue"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export declare const usePassword: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/password").usePasswordProps, unknown, {
|
|
3
|
+
state: {
|
|
4
|
+
value: string | undefined;
|
|
5
|
+
mask: boolean;
|
|
6
|
+
};
|
|
7
|
+
onInputChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
8
|
+
toggleMask: () => void;
|
|
9
|
+
}>;
|
|
File without changes
|