@primereact/headless 11.0.0-alpha.9 → 11.0.0-rc.1
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/LICENSE.md +45 -0
- package/README.md +35 -0
- package/accordion/index.d.ts +3 -0
- package/accordion/index.mjs +1 -1
- package/accordion/index.mjs.map +1 -1
- package/accordion/useAccordion.d.ts +7 -6
- package/accordion/useAccordion.props.d.ts +2 -2
- package/accordion/useAccordionPanel.d.ts +46 -0
- package/accordion/useAccordionPanel.props.d.ts +2 -0
- package/animateonscroll/index.d.ts +1 -0
- package/animateonscroll/index.mjs +1 -1
- package/animateonscroll/index.mjs.map +1 -1
- package/animateonscroll/useAnimateOnScroll.d.ts +6 -1
- package/animateonscroll/useAnimateOnScroll.props.d.ts +2 -2
- package/autocomplete/index.d.ts +3 -0
- package/autocomplete/index.mjs +2 -0
- package/autocomplete/index.mjs.map +1 -0
- package/autocomplete/useAutoComplete.d.ts +198 -0
- package/autocomplete/useAutoComplete.props.d.ts +2 -0
- package/avatar/index.d.ts +1 -0
- package/avatar/index.mjs +1 -1
- package/avatar/index.mjs.map +1 -1
- package/avatar/useAvatar.d.ts +5 -1
- package/avatar/useAvatar.props.d.ts +2 -2
- package/avatargroup/index.d.ts +3 -0
- package/avatargroup/index.mjs +2 -0
- package/avatargroup/index.mjs.map +1 -0
- package/avatargroup/useAvatarGroup.d.ts +6 -0
- package/avatargroup/useAvatarGroup.props.d.ts +2 -0
- package/badge/index.d.ts +1 -0
- package/badge/index.mjs +1 -1
- package/badge/index.mjs.map +1 -1
- package/badge/useBadge.d.ts +7 -1
- package/badge/useBadge.props.d.ts +2 -2
- package/breadcrumb/index.d.ts +1 -0
- package/breadcrumb/index.mjs +1 -1
- package/breadcrumb/index.mjs.map +1 -1
- package/breadcrumb/useBreadcrumb.d.ts +18 -2
- package/breadcrumb/useBreadcrumb.props.d.ts +2 -2
- package/button/index.d.ts +1 -0
- package/button/index.mjs +1 -1
- package/button/index.mjs.map +1 -1
- package/button/useButton.d.ts +6 -1
- package/button/useButton.props.d.ts +2 -2
- package/card/index.d.ts +1 -0
- package/card/index.mjs +1 -1
- package/card/index.mjs.map +1 -1
- package/card/useCard.d.ts +6 -1
- package/card/useCard.props.d.ts +2 -2
- package/carousel/index.d.ts +1 -0
- package/carousel/index.mjs +1 -1
- package/carousel/index.mjs.map +1 -1
- package/carousel/useCarousel.d.ts +101 -5
- package/carousel/useCarousel.props.d.ts +2 -2
- package/checkbox/index.d.ts +1 -0
- package/checkbox/index.mjs +1 -1
- package/checkbox/index.mjs.map +1 -1
- package/checkbox/useCheckbox.d.ts +44 -3
- package/checkbox/useCheckbox.props.d.ts +2 -2
- package/checkboxgroup/index.d.ts +3 -0
- package/checkboxgroup/index.mjs +2 -0
- package/checkboxgroup/index.mjs.map +1 -0
- package/checkboxgroup/useCheckboxGroup.d.ts +11 -0
- package/checkboxgroup/useCheckboxGroup.props.d.ts +2 -0
- package/chip/index.d.ts +1 -0
- package/chip/index.mjs +1 -1
- package/chip/index.mjs.map +1 -1
- package/chip/useChip.d.ts +9 -3
- package/chip/useChip.props.d.ts +2 -2
- package/collapsible/index.d.ts +3 -0
- package/collapsible/index.mjs +2 -0
- package/collapsible/index.mjs.map +1 -0
- package/collapsible/useCollapsible.d.ts +33 -0
- package/collapsible/useCollapsible.props.d.ts +2 -0
- package/compare/index.d.ts +3 -0
- package/compare/index.mjs +2 -0
- package/compare/index.mjs.map +1 -0
- package/compare/useCompare.d.ts +2 -0
- package/compare/useCompare.props.d.ts +2 -0
- package/contextmenu/index.d.ts +1 -0
- package/contextmenu/index.mjs +1 -1
- package/contextmenu/index.mjs.map +1 -1
- package/contextmenu/submenu/index.d.ts +2 -0
- package/contextmenu/submenu/index.mjs +2 -0
- package/contextmenu/submenu/index.mjs.map +1 -0
- package/contextmenu/submenu/useContextMenuSubmenu.d.ts +121 -0
- package/contextmenu/submenu/useContextMenuSubmenu.props.d.ts +2 -0
- package/contextmenu/useContextMenu.d.ts +413 -1
- package/contextmenu/useContextMenu.props.d.ts +2 -2
- package/datatable/features/index.d.ts +28 -0
- package/datatable/features/index.mjs +11 -0
- package/datatable/features/index.mjs.map +1 -0
- package/datatable/features/useDataTableColumnReorder.d.ts +52 -0
- package/datatable/features/useDataTableColumnResize.d.ts +20 -0
- package/datatable/features/useDataTableEditing.d.ts +69 -0
- package/datatable/features/useDataTableExpansion.d.ts +32 -0
- package/datatable/features/useDataTableExport.d.ts +43 -0
- package/datatable/features/useDataTableFilter.d.ts +95 -0
- package/datatable/features/useDataTableGrouping.d.ts +11 -0
- package/datatable/features/useDataTableKeyboard.d.ts +23 -0
- package/datatable/features/useDataTablePagination.d.ts +32 -0
- package/datatable/features/useDataTableRowReorder.d.ts +42 -0
- package/datatable/features/useDataTableSelection.d.ts +28 -0
- package/datatable/features/useDataTableSort.d.ts +51 -0
- package/datatable/features/useDataTableTree.d.ts +31 -0
- package/datatable/index.d.ts +7 -0
- package/datatable/index.mjs +11 -0
- package/datatable/index.mjs.map +1 -0
- package/datatable/useDataTable.d.ts +237 -0
- package/datatable/useDataTable.props.d.ts +2 -0
- package/datatable/useDataTableRow.d.ts +30 -0
- package/datatable/useDataTableRow.props.d.ts +2 -0
- package/datatable/utils/compareValues.d.ts +20 -0
- package/datatable/utils/index.d.ts +1 -0
- package/datatable/utils/index.mjs +2 -0
- package/datatable/utils/index.mjs.map +1 -0
- package/dataview/index.d.ts +1 -0
- package/dataview/index.mjs +1 -1
- package/dataview/index.mjs.map +1 -1
- package/dataview/useDataView.d.ts +25 -1
- package/dataview/useDataView.props.d.ts +2 -2
- package/datepicker/index.d.ts +1 -0
- package/datepicker/index.mjs +1 -1
- package/datepicker/index.mjs.map +1 -1
- package/datepicker/useDatePicker.d.ts +2 -114
- package/datepicker/useDatePicker.props.d.ts +2 -2
- package/dialog/index.d.ts +1 -0
- package/dialog/index.mjs +1 -1
- package/dialog/index.mjs.map +1 -1
- package/dialog/useDialog.d.ts +274 -24
- package/dialog/useDialog.props.d.ts +2 -2
- package/divider/index.d.ts +1 -0
- package/divider/index.mjs +1 -1
- package/divider/index.mjs.map +1 -1
- package/divider/useDivider.d.ts +14 -1
- package/divider/useDivider.props.d.ts +2 -2
- package/dnd/index.d.ts +11 -0
- package/dnd/index.mjs +2 -0
- package/dnd/index.mjs.map +1 -0
- package/dnd/useDnd.d.ts +45 -0
- package/dnd/useDnd.props.d.ts +2 -0
- package/dnd/useDraggable.d.ts +14 -0
- package/dnd/useDraggable.props.d.ts +2 -0
- package/dnd/useDroppable.d.ts +11 -0
- package/dnd/useDroppable.props.d.ts +2 -0
- package/dnd/useSortable.d.ts +11 -0
- package/dnd/useSortable.props.d.ts +2 -0
- package/dnd/useSortableContainer.d.ts +24 -0
- package/dnd/useSortableContainer.props.d.ts +2 -0
- package/drawer/index.d.ts +1 -0
- package/drawer/index.mjs +1 -1
- package/drawer/index.mjs.map +1 -1
- package/drawer/useDrawer.d.ts +78 -16
- package/drawer/useDrawer.props.d.ts +2 -2
- package/fieldset/index.d.ts +1 -0
- package/fieldset/index.mjs +1 -1
- package/fieldset/index.mjs.map +1 -1
- package/fieldset/useFieldset.d.ts +80 -1
- package/fieldset/useFieldset.props.d.ts +2 -2
- package/fileupload/index.d.ts +1 -0
- package/fileupload/index.mjs +1 -1
- package/fileupload/index.mjs.map +1 -1
- package/fileupload/useFileUpload.d.ts +73 -4
- package/fileupload/useFileUpload.props.d.ts +2 -2
- package/floatlabel/index.d.ts +3 -0
- package/floatlabel/index.mjs +2 -0
- package/floatlabel/index.mjs.map +1 -0
- package/floatlabel/useFloatLabel.d.ts +6 -0
- package/floatlabel/useFloatLabel.props.d.ts +2 -0
- package/fluid/index.d.ts +1 -0
- package/fluid/index.mjs +1 -1
- package/fluid/index.mjs.map +1 -1
- package/fluid/useFluid.d.ts +6 -1
- package/fluid/useFluid.props.d.ts +2 -2
- package/focustrap/index.d.ts +1 -0
- package/focustrap/index.mjs +1 -1
- package/focustrap/index.mjs.map +1 -1
- package/focustrap/useFocusTrap.d.ts +16 -3
- package/focustrap/useFocusTrap.props.d.ts +2 -2
- package/gallery/index.d.ts +1 -0
- package/gallery/index.mjs +1 -1
- package/gallery/index.mjs.map +1 -1
- package/gallery/item/index.mjs +1 -1
- package/gallery/item/index.mjs.map +1 -1
- package/gallery/item/useGalleryItem.d.ts +17 -7
- package/gallery/item/useGalleryItem.props.d.ts +2 -2
- package/gallery/useGallery.d.ts +147 -6
- package/gallery/useGallery.props.d.ts +2 -2
- package/iconfield/index.d.ts +1 -0
- package/iconfield/index.mjs +1 -1
- package/iconfield/index.mjs.map +1 -1
- package/iconfield/useIconField.d.ts +6 -1
- package/iconfield/useIconField.props.d.ts +2 -2
- package/iftalabel/index.d.ts +3 -0
- package/iftalabel/index.mjs +2 -0
- package/iftalabel/index.mjs.map +1 -0
- package/iftalabel/useIftaLabel.d.ts +6 -0
- package/iftalabel/useIftaLabel.props.d.ts +2 -0
- package/inplace/index.d.ts +1 -0
- package/inplace/index.mjs +1 -1
- package/inplace/index.mjs.map +1 -1
- package/inplace/useInplace.d.ts +21 -2
- package/inplace/useInplace.props.d.ts +2 -2
- package/{colorpicker → inputcolor}/colorManager.d.ts +3 -2
- package/inputcolor/index.d.ts +4 -0
- package/inputcolor/index.mjs +2 -0
- package/inputcolor/index.mjs.map +1 -0
- package/inputcolor/useInputColor.d.ts +119 -0
- package/inputcolor/useInputColor.props.d.ts +2 -0
- package/inputgroup/index.d.ts +1 -0
- package/inputgroup/index.mjs +1 -1
- package/inputgroup/index.mjs.map +1 -1
- package/inputgroup/useInputGroup.d.ts +6 -1
- package/inputgroup/useInputGroup.props.d.ts +2 -2
- package/inputnumber/index.d.ts +1 -0
- package/inputnumber/index.mjs +1 -1
- package/inputnumber/index.mjs.map +1 -1
- package/inputnumber/useInputNumber.d.ts +55 -17
- package/inputnumber/useInputNumber.props.d.ts +2 -2
- package/inputotp/index.d.ts +1 -0
- package/inputotp/index.mjs +1 -1
- package/inputotp/index.mjs.map +1 -1
- package/inputotp/useInputOtp.d.ts +25 -6
- package/inputotp/useInputOtp.props.d.ts +2 -2
- package/inputpassword/index.d.ts +3 -0
- package/inputpassword/index.mjs +2 -0
- package/inputpassword/index.mjs.map +1 -0
- package/inputpassword/useInputPassword.d.ts +15 -0
- package/inputpassword/useInputPassword.props.d.ts +2 -0
- package/inputtags/index.d.ts +1 -0
- package/inputtags/index.mjs +1 -1
- package/inputtags/index.mjs.map +1 -1
- package/inputtags/useInputTags.d.ts +42 -12
- package/inputtags/useInputTags.props.d.ts +2 -2
- package/inputtext/index.d.ts +1 -0
- package/inputtext/index.mjs +1 -1
- package/inputtext/index.mjs.map +1 -1
- package/inputtext/useInputText.d.ts +8 -1
- package/inputtext/useInputText.props.d.ts +2 -2
- package/knob/index.d.ts +1 -0
- package/knob/index.mjs +1 -1
- package/knob/index.mjs.map +1 -1
- package/knob/useKnob.d.ts +51 -10
- package/knob/useKnob.props.d.ts +2 -2
- package/label/index.d.ts +1 -0
- package/label/index.mjs +1 -1
- package/label/index.mjs.map +1 -1
- package/label/useLabel.d.ts +6 -1
- package/label/useLabel.props.d.ts +2 -2
- package/listbox/index.d.ts +3 -0
- package/listbox/index.mjs +1 -1
- package/listbox/index.mjs.map +1 -1
- package/listbox/useListbox.d.ts +56 -18
- package/listbox/useListbox.props.d.ts +2 -2
- package/listbox/useListboxOption.d.ts +21 -0
- package/listbox/useListboxOption.props.d.ts +2 -0
- package/menu/checkboxitem/index.d.ts +2 -0
- package/menu/checkboxitem/index.mjs +2 -0
- package/menu/checkboxitem/index.mjs.map +1 -0
- package/menu/checkboxitem/useMenuCheckboxItem.d.ts +112 -0
- package/menu/checkboxitem/useMenuCheckboxItem.props.d.ts +2 -0
- package/menu/index.d.ts +1 -0
- package/menu/index.mjs +1 -1
- package/menu/index.mjs.map +1 -1
- package/menu/radioitem/index.d.ts +2 -0
- package/menu/radioitem/index.mjs +2 -0
- package/menu/radioitem/index.mjs.map +1 -0
- package/menu/radioitem/useMenuRadioItem.d.ts +106 -0
- package/menu/radioitem/useMenuRadioItem.props.d.ts +2 -0
- package/menu/submenu/index.d.ts +2 -0
- package/menu/submenu/index.mjs +2 -0
- package/menu/submenu/index.mjs.map +1 -0
- package/menu/submenu/useMenuSubmenu.d.ts +97 -0
- package/menu/submenu/useMenuSubmenu.props.d.ts +2 -0
- package/menu/useMenu.d.ts +215 -22
- package/menu/useMenu.props.d.ts +2 -2
- package/message/index.d.ts +1 -0
- package/message/index.mjs +1 -1
- package/message/index.mjs.map +1 -1
- package/message/useMessage.d.ts +13 -1
- package/message/useMessage.props.d.ts +2 -2
- package/metergroup/index.d.ts +1 -0
- package/metergroup/index.mjs +1 -1
- package/metergroup/index.mjs.map +1 -1
- package/metergroup/useMeterGroup.d.ts +36 -5
- package/metergroup/useMeterGroup.props.d.ts +2 -2
- package/navigationmenu/index.d.ts +3 -0
- package/navigationmenu/index.mjs +2 -0
- package/navigationmenu/index.mjs.map +1 -0
- package/navigationmenu/useNavigationMenu.d.ts +30 -0
- package/navigationmenu/useNavigationMenu.props.d.ts +2 -0
- package/orderlist/index.d.ts +3 -0
- package/orderlist/index.mjs +2 -0
- package/orderlist/index.mjs.map +1 -0
- package/orderlist/useOrderList.d.ts +73 -0
- package/orderlist/useOrderList.props.d.ts +2 -0
- package/organizationchart/index.d.ts +3 -0
- package/organizationchart/index.mjs +2 -0
- package/organizationchart/index.mjs.map +1 -0
- package/organizationchart/useOrganizationChart.d.ts +69 -0
- package/organizationchart/useOrganizationChart.props.d.ts +2 -0
- package/overlaybadge/index.d.ts +3 -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/package.json +12 -15
- package/paginator/index.d.ts +1 -0
- package/paginator/index.mjs +1 -1
- package/paginator/index.mjs.map +1 -1
- package/paginator/usePaginator.d.ts +47 -1
- package/paginator/usePaginator.props.d.ts +2 -2
- package/panel/index.d.ts +1 -0
- package/panel/index.mjs +1 -1
- package/panel/index.mjs.map +1 -1
- package/panel/usePanel.d.ts +76 -8
- package/panel/usePanel.props.d.ts +2 -2
- package/picklist/index.d.ts +3 -0
- package/picklist/index.mjs +2 -0
- package/picklist/index.mjs.map +1 -0
- package/picklist/usePickList.d.ts +153 -0
- package/picklist/usePickList.props.d.ts +2 -0
- package/popover/index.d.ts +1 -0
- package/popover/index.mjs +1 -7
- package/popover/index.mjs.map +1 -1
- package/popover/usePopover.d.ts +65 -12
- package/popover/usePopover.props.d.ts +2 -2
- package/portal/index.d.ts +1 -0
- package/portal/index.mjs +1 -1
- package/portal/index.mjs.map +1 -1
- package/portal/usePortal.d.ts +4 -2
- package/portal/usePortal.props.d.ts +2 -2
- package/positioner/index.d.ts +3 -0
- package/positioner/index.mjs +2 -0
- package/positioner/index.mjs.map +1 -0
- package/positioner/usePositioner.anchor.d.ts +7 -0
- package/positioner/usePositioner.d.ts +11 -0
- package/positioner/usePositioner.fallback.d.ts +13 -0
- package/positioner/usePositioner.props.d.ts +2 -0
- package/positioner/usePositioner.utils.d.ts +21 -0
- package/progressbar/index.d.ts +1 -0
- package/progressbar/index.mjs +1 -1
- package/progressbar/index.mjs.map +1 -1
- package/progressbar/useProgressBar.d.ts +13 -1
- package/progressbar/useProgressBar.props.d.ts +2 -2
- package/progressspinner/index.d.ts +1 -0
- package/progressspinner/index.mjs +1 -1
- package/progressspinner/index.mjs.map +1 -1
- package/progressspinner/useProgressSpinner.d.ts +50 -1
- package/progressspinner/useProgressSpinner.props.d.ts +2 -2
- package/radiobutton/index.d.ts +1 -0
- package/radiobutton/index.mjs +1 -1
- package/radiobutton/index.mjs.map +1 -1
- package/radiobutton/useRadioButton.d.ts +41 -3
- package/radiobutton/useRadioButton.props.d.ts +2 -2
- package/radiobuttongroup/index.d.ts +3 -0
- package/radiobuttongroup/index.mjs +2 -0
- package/radiobuttongroup/index.mjs.map +1 -0
- package/radiobuttongroup/useRadioButtonGroup.d.ts +11 -0
- package/radiobuttongroup/useRadioButtonGroup.props.d.ts +2 -0
- package/rating/index.d.ts +3 -0
- package/rating/index.mjs +1 -1
- package/rating/index.mjs.map +1 -1
- package/rating/useRating.d.ts +46 -12
- package/rating/useRating.props.d.ts +2 -2
- package/rating/useRatingOption.d.ts +69 -0
- package/rating/useRatingOption.props.d.ts +2 -0
- package/scrollarea/index.d.ts +1 -0
- package/scrollarea/index.mjs +1 -1
- package/scrollarea/index.mjs.map +1 -1
- package/scrollarea/useScrollArea.d.ts +120 -15
- package/scrollarea/useScrollArea.props.d.ts +2 -2
- package/select/index.d.ts +3 -0
- package/select/index.mjs +2 -0
- package/select/index.mjs.map +1 -0
- package/select/useSelect.d.ts +190 -0
- package/select/useSelect.props.d.ts +2 -0
- package/select/useSelect.test.d.ts +1 -0
- package/sidebar/index.d.ts +7 -0
- package/sidebar/index.mjs +2 -0
- package/sidebar/index.mjs.map +1 -0
- package/sidebar/useSidebar.d.ts +117 -0
- package/sidebar/useSidebar.props.d.ts +2 -0
- package/sidebar/useSidebarLayout.d.ts +24 -0
- package/sidebar/useSidebarLayout.props.d.ts +2 -0
- package/sidebar/useSidebarMenuItem.d.ts +11 -0
- package/sidebar/useSidebarMenuItem.props.d.ts +2 -0
- package/skeleton/index.d.ts +1 -0
- package/skeleton/index.mjs +1 -1
- package/skeleton/index.mjs.map +1 -1
- package/skeleton/useSkeleton.d.ts +7 -1
- package/skeleton/useSkeleton.props.d.ts +2 -2
- package/slider/index.d.ts +1 -0
- package/slider/index.mjs +1 -1
- package/slider/index.mjs.map +1 -1
- package/slider/useSlider.d.ts +81 -48
- package/slider/useSlider.props.d.ts +2 -2
- package/speeddial/index.d.ts +1 -0
- package/speeddial/index.mjs +1 -1
- package/speeddial/index.mjs.map +1 -1
- package/speeddial/useSpeedDial.d.ts +89 -32
- package/speeddial/useSpeedDial.props.d.ts +2 -2
- package/splitter/index.d.ts +1 -0
- package/splitter/index.mjs +1 -1
- package/splitter/index.mjs.map +1 -1
- package/splitter/useSplitter.d.ts +57 -14
- package/splitter/useSplitter.props.d.ts +2 -2
- package/stepper/index.d.ts +1 -0
- package/stepper/index.mjs +1 -1
- package/stepper/index.mjs.map +1 -1
- package/stepper/useStepper.d.ts +47 -2
- package/stepper/useStepper.props.d.ts +2 -2
- package/styleclass/index.d.ts +1 -0
- package/styleclass/index.mjs +1 -1
- package/styleclass/index.mjs.map +1 -1
- package/styleclass/useStyleClass.d.ts +5 -1
- package/styleclass/useStyleClass.props.d.ts +2 -2
- package/tabs/index.d.ts +1 -0
- package/tabs/index.mjs +1 -1
- package/tabs/index.mjs.map +1 -1
- package/tabs/useTabs.d.ts +42 -3
- package/tabs/useTabs.props.d.ts +2 -2
- package/tag/index.d.ts +1 -0
- package/tag/index.mjs +1 -1
- package/tag/index.mjs.map +1 -1
- package/tag/useTag.d.ts +6 -1
- package/tag/useTag.props.d.ts +2 -2
- package/terminal/index.d.ts +1 -0
- package/terminal/index.mjs +1 -1
- package/terminal/index.mjs.map +1 -1
- package/terminal/useTerminal.d.ts +23 -2
- package/terminal/useTerminal.props.d.ts +2 -2
- package/textarea/index.d.ts +1 -0
- package/textarea/index.mjs +1 -1
- package/textarea/index.mjs.map +1 -1
- package/textarea/useTextarea.d.ts +9 -2
- package/textarea/useTextarea.props.d.ts +2 -2
- package/timeline/index.d.ts +1 -0
- package/timeline/index.mjs +1 -1
- package/timeline/index.mjs.map +1 -1
- package/timeline/useTimeline.d.ts +41 -1
- package/timeline/useTimeline.props.d.ts +2 -2
- package/toast/index.d.ts +1 -1
- package/toast/index.mjs +1 -1
- package/toast/index.mjs.map +1 -1
- package/toast/useToast.d.ts +85 -23
- package/toast/useToast.props.d.ts +2 -2
- package/toaster/ToastManager.d.ts +14 -0
- package/toaster/index.d.ts +4 -0
- package/toaster/index.mjs +2 -0
- package/toaster/index.mjs.map +1 -0
- package/toaster/useToaster.d.ts +50 -0
- package/toaster/useToaster.props.d.ts +2 -0
- package/togglebutton/index.d.ts +1 -0
- package/togglebutton/index.mjs +1 -1
- package/togglebutton/index.mjs.map +1 -1
- package/togglebutton/useToggleButton.d.ts +5 -3
- package/togglebutton/useToggleButton.props.d.ts +2 -2
- package/togglebuttongroup/index.d.ts +3 -0
- package/togglebuttongroup/index.mjs +2 -0
- package/togglebuttongroup/index.mjs.map +1 -0
- package/togglebuttongroup/useToggleButtonGroup.d.ts +17 -0
- package/togglebuttongroup/useToggleButtonGroup.props.d.ts +2 -0
- package/toggleswitch/index.d.ts +3 -0
- package/toggleswitch/index.mjs +2 -0
- package/toggleswitch/index.mjs.map +1 -0
- package/toggleswitch/useToggleSwitch.d.ts +48 -0
- package/toggleswitch/useToggleSwitch.props.d.ts +2 -0
- package/toolbar/index.d.ts +1 -0
- package/toolbar/index.mjs +1 -1
- package/toolbar/index.mjs.map +1 -1
- package/toolbar/useToolbar.d.ts +7 -1
- package/toolbar/useToolbar.props.d.ts +2 -2
- package/tooltip/index.d.ts +1 -0
- package/tooltip/index.mjs +1 -1
- package/tooltip/index.mjs.map +1 -1
- package/tooltip/useTooltip.d.ts +43 -24
- package/tooltip/useTooltip.props.d.ts +2 -2
- package/tooltipmanager/index.d.ts +2 -0
- package/tooltipmanager/index.mjs +2 -0
- package/tooltipmanager/index.mjs.map +1 -0
- package/tooltipmanager/useTooltipManager.d.ts +12 -0
- package/tooltipmanager/useTooltipManager.props.d.ts +2 -0
- package/tooltipmanager/useTooltipManager.test.d.ts +0 -0
- package/tree/TreeDragDropService.d.ts +13 -5
- package/tree/index.d.ts +7 -0
- package/tree/index.mjs +1 -1
- package/tree/index.mjs.map +1 -1
- package/tree/useTree.d.ts +96 -16
- package/tree/useTree.props.d.ts +2 -2
- package/tree/useTreeDragDrop.d.ts +24 -0
- package/tree/useTreeFlatten.d.ts +13 -0
- package/tree/useTreeKeyboard.d.ts +18 -0
- package/tree/useTreeNode.d.ts +45 -0
- package/tree/useTreeNode.props.d.ts +2 -0
- package/tree/useTreeSelection.d.ts +31 -0
- package/utils/itemKey.d.ts +10 -0
- package/LICENSE +0 -21
- package/colorpicker/index.d.ts +0 -3
- package/colorpicker/index.mjs +0 -2
- package/colorpicker/index.mjs.map +0 -1
- package/colorpicker/input/index.d.ts +0 -2
- package/colorpicker/input/index.mjs +0 -2
- package/colorpicker/input/index.mjs.map +0 -1
- package/colorpicker/input/useColorPickerInput.d.ts +0 -11
- package/colorpicker/input/useColorPickerInput.props.d.ts +0 -2
- package/colorpicker/slider/index.d.ts +0 -2
- package/colorpicker/slider/index.mjs +0 -2
- package/colorpicker/slider/index.mjs.map +0 -1
- package/colorpicker/slider/useColorPickerSlider.d.ts +0 -13
- package/colorpicker/slider/useColorPickerSlider.props.d.ts +0 -2
- package/colorpicker/useColorPicker.d.ts +0 -26
- package/colorpicker/useColorPicker.props.d.ts +0 -2
- package/commandmenu/index.d.ts +0 -2
- package/commandmenu/index.mjs +0 -2
- package/commandmenu/index.mjs.map +0 -1
- package/commandmenu/useCommandMenu.d.ts +0 -11
- package/commandmenu/useCommandMenu.props.d.ts +0 -2
- package/confirmdialog/index.d.ts +0 -2
- package/confirmdialog/index.mjs +0 -2
- package/confirmdialog/index.mjs.map +0 -1
- package/confirmdialog/useConfirmDialog.d.ts +0 -1
- package/confirmdialog/useConfirmDialog.props.d.ts +0 -2
- package/confirmpopup/index.d.ts +0 -2
- package/confirmpopup/index.mjs +0 -2
- package/confirmpopup/index.mjs.map +0 -1
- package/confirmpopup/useConfirmPopup.d.ts +0 -25
- package/confirmpopup/useConfirmPopup.props.d.ts +0 -2
- package/imagecompare/index.d.ts +0 -2
- package/imagecompare/index.mjs +0 -2
- package/imagecompare/index.mjs.map +0 -1
- package/imagecompare/useImageCompare.d.ts +0 -8
- package/imagecompare/useImageCompare.props.d.ts +0 -2
- package/menu/sub/index.d.ts +0 -2
- package/menu/sub/index.mjs +0 -2
- package/menu/sub/index.mjs.map +0 -1
- package/menu/sub/useMenuSub.d.ts +0 -19
- package/menu/sub/useMenuSub.props.d.ts +0 -2
- package/orgchart/index.d.ts +0 -2
- package/orgchart/index.mjs +0 -2
- package/orgchart/index.mjs.map +0 -1
- package/orgchart/useOrgChart.d.ts +0 -20
- package/orgchart/useOrgChart.props.d.ts +0 -2
- package/overlay/index.d.ts +0 -2
- package/overlay/index.mjs +0 -2
- package/overlay/index.mjs.map +0 -1
- package/overlay/useOverlay.d.ts +0 -16
- package/overlay/useOverlay.props.d.ts +0 -2
- package/password/index.d.ts +0 -2
- package/password/index.mjs +0 -2
- package/password/index.mjs.map +0 -1
- package/password/usePassword.d.ts +0 -35
- package/password/usePassword.props.d.ts +0 -2
- package/placer/index.d.ts +0 -2
- package/placer/index.mjs +0 -2
- package/placer/index.mjs.map +0 -1
- package/placer/usePlacer.d.ts +0 -12
- package/placer/usePlacer.props.d.ts +0 -2
- package/switch/index.d.ts +0 -2
- package/switch/index.mjs +0 -2
- package/switch/index.mjs.map +0 -1
- package/switch/useSwitch.d.ts +0 -7
- package/switch/useSwitch.props.d.ts +0 -2
- package/toast/item/index.css +0 -2
- package/toast/item/index.css.map +0 -1
- package/toast/item/index.d.ts +0 -2
- package/toast/item/index.mjs +0 -2
- package/toast/item/index.mjs.map +0 -1
- package/toast/item/useToastItem.d.ts +0 -25
- package/toast/item/useToastItem.props.d.ts +0 -2
- package/toast/toastStore.d.ts +0 -40
- package/tooltip/group/index.d.ts +0 -2
- package/tooltip/group/index.mjs +0 -2
- package/tooltip/group/index.mjs.map +0 -1
- package/tooltip/group/useTooltipGroup.d.ts +0 -9
- package/tooltip/group/useTooltipGroup.props.d.ts +0 -2
- /package/{colorpicker/input/useColorPickerInput.test.d.ts → autocomplete/useAutoComplete.test.d.ts} +0 -0
- /package/{colorpicker/slider/useColorPickerSlider.test.d.ts → checkboxgroup/useCheckboxGroup.test.d.ts} +0 -0
- /package/{colorpicker/useColorPicker.test.d.ts → collapsible/useCollapsible.test.d.ts} +0 -0
- /package/{commandmenu/useCommandMenu.test.d.ts → compare/useCompare.test.d.ts} +0 -0
- /package/{confirmdialog/useConfirmDialog.test.d.ts → floatlabel/useFloatLabel.test.d.ts} +0 -0
- /package/{confirmpopup/useConfirmPopup.test.d.ts → iftalabel/useIftaLabel.test.d.ts} +0 -0
- /package/{imagecompare/useImageCompare.test.d.ts → inputcolor/useInputColor.test.d.ts} +0 -0
- /package/{orgchart/useOrgChart.test.d.ts → inputpassword/useInputPassword.test.d.ts} +0 -0
- /package/{overlay/useOverlay.test.d.ts → navigationmenu/useNavigationMenu.test.d.ts} +0 -0
- /package/{password/usePassword.test.d.ts → organizationchart/useOrganizationChart.test.d.ts} +0 -0
- /package/{placer/usePlacer.test.d.ts → overlaybadge/useOverlayBadge.test.d.ts} +0 -0
- /package/{progressspinner/useProgressSpinner.test.d.ts → positioner/usePositioner.test.d.ts} +0 -0
- /package/{rating/useRating.test.d.ts → radiobuttongroup/useRadioButtonGroup.test.d.ts} +0 -0
- /package/{switch/useSwitch.test.d.ts → toaster/useToaster.test.d.ts} +0 -0
- /package/{toast/item/useToastItem.test.d.ts → togglebuttongroup/useToggleButtonGroup.test.d.ts} +0 -0
- /package/{tooltip/group/useTooltipGroup.test.d.ts → toggleswitch/useToggleSwitch.test.d.ts} +0 -0
package/popover/index.d.ts
CHANGED
package/popover/index.mjs
CHANGED
|
@@ -1,8 +1,2 @@
|
|
|
1
|
-
import{withHeadless as
|
|
2
|
-
@media screen and (max-width: ${t}) {
|
|
3
|
-
.p-popover[${I}] {
|
|
4
|
-
width: ${E[t]} !important;
|
|
5
|
-
}
|
|
6
|
-
}
|
|
7
|
-
`;s.current.innerHTML=e}},X=()=>{s.current&&(document.head.removeChild(s.current),s.current=null)};return n.useEffect(()=>{S?setTimeout(()=>{R()},0):i()},[S]),n.useEffect(()=>{O?setTimeout(()=>{R()},0):i()},[O]),te(()=>{E&&W()}),ne(()=>{C&&P(),l.current&&(l.current.destroy(),l.current=null),X(),h();let e=y();e&&L&&T.clear(e),u.current&&(v.off("overlay-click",u.current),u.current=null)}),{state:$,show:R,hide:i,onBeforeEnter:B,onAfterLeave:U,onOverlayClick:Q,onLeave:A,onContentKeydown:V,triggerRef:r,containerRef:o}}});export{K as defaultProps,Ce as usePopover};
|
|
1
|
+
var ce=Object.defineProperty;var U=Object.getOwnPropertySymbols;var le=Object.prototype.hasOwnProperty,se=Object.prototype.propertyIsEnumerable;var B=(r,c,s)=>c in r?ce(r,c,{enumerable:!0,configurable:!0,writable:!0,value:s}):r[c]=s,L=(r,c)=>{for(var s in c||(c={}))le.call(c,s)&&B(r,s,c[s]);if(U)for(var s of U(c))se.call(c,s)&&B(r,s,c[s]);return r};import{withHeadless as ae}from"@primereact/core/headless";import{OverlayEventBus as K}from"@primereact/core/utils";import{useFocusTrap as ue}from"@primereact/headless/focustrap";import{useControlledState as ie}from"@primereact/hooks/use-controlled-state";import{useEventListener as V}from"@primereact/hooks/use-event-listener";import{focus as T,getFirstFocusableElement as fe,toElement as d}from"@primeuix/utils/dom";import*as o from"react";var I={anchor:void 0,defaultOpen:void 0,open:void 0,trapped:!1,autoFocus:!0,closeOnEscape:!0,onOpenChange:void 0,onExitComplete:void 0};var be=ae({name:"usePopover",defaultProps:I,setup:({props:r})=>{var x;let[c,s,k]=ie({value:r.open,defaultValue:r.defaultOpen,onChange:r.onOpenChange}),[j,b]=o.useState(!!c),[q,m]=o.useState((x=r.anchor)!=null?x:null),[z,G]=o.useState(null),[h,J]=o.useState(null),[Q,W]=o.useState(null),X={open:c,rendered:j,trapped:!!r.trapped,anchorElement:q,positionerElement:z,popupElement:h,arrowElement:Q},l=o.useRef(null),u=o.useRef(null),f=o.useRef(null),E=o.useRef(null),M=o.useRef(null),H=ue({trapped:!!r.trapped&&!!h,autoFocus:!1}),g=o.useCallback(t=>{var n;let e=(n=d(t))!=null?n:null;!e||e===l.current||(l.current=e,m(e||u.current))},[]),Y=o.useCallback(t=>{var n;let e=(n=d(t))!=null?n:null;if(e!==u.current){if(u.current=e,!e){l.current&&!l.current.isConnected&&(l.current=null,m(null));return}l.current||(l.current=e,m(e))}},[]),P=o.useCallback(t=>{var n;let e=(n=d(t))!=null?n:null;e!==f.current&&(f.current=e,G(e))},[]),F=o.useCallback(t=>{var n;let e=(n=d(t))!=null?n:null;e!==E.current&&(E.current=e,H.containerRef.current=e,J(e))},[]),O=o.useCallback(t=>{var n;let e=(n=d(t))!=null?n:null;e!==M.current&&(M.current=e,W(e))},[]),R=o.useRef(!1);function p(t,e){s([t,{originalEvent:e,value:t}])}let v=t=>{var n,a,i;if(R.current)return;let e=t.relatedTarget;!e||(n=f.current)!=null&&n.contains(e)||(a=l.current)!=null&&a.contains(e)||(i=u.current)!=null&&i.contains(e)||p(!1,t)},Z=t=>{p(!c,t.nativeEvent)},_=t=>{p(!1,t.nativeEvent)},$=o.useCallback(()=>{if(r.autoFocus===!1)return;let t=E.current;if(!t)return;let e=document.activeElement,n=l.current||u.current;if(e&&(n!=null&&n.contains(e))&&n!==e)return;R.current=!0;let a=fe(t);a?T(a,{preventScroll:!0}):T(t,{preventScroll:!0}),R.current=!1},[r.autoFocus]),ee=o.useCallback(()=>{var t;(t=r.onExitComplete)==null||t.call(r)},[r.onExitComplete]),C=o.useRef(!1),[S,w]=V({type:"pointerdown",listener:t=>{let e=t.target;if(!e||!document.documentElement.contains(e))return;if(C.current){C.current=!1;return}let n=f.current,a=l.current,i=u.current;c&&n&&!n.contains(e)&&(!a||!a.contains(e))&&(!i||!i.contains(e))&&p(!1,t)}});o.useEffect(()=>{if(!c)return;let t=e=>{var A;let n=(A=e==null?void 0:e.target)!=null?A:null;if(!n)return;let a=f.current,i=l.current,D=u.current;(a&&a.contains(n)||i&&i.contains(n)||D&&D.contains(n))&&(C.current=!0)};return K.on("overlay-click",t),()=>{K.off("overlay-click",t)}},[c]);let[y,N]=V({type:"keydown",listener:t=>{t.key==="Escape"&&(p(!1,t),T(l.current||u.current,{preventScroll:!0}))}});o.useEffect(()=>{r.anchor!==void 0&&(l.current=r.anchor,m(r.anchor))},[r.anchor]),o.useEffect(()=>{c&&b(!0)},[c]),o.useEffect(()=>{c?(S(),r.closeOnEscape&&y()):(w(),N())},[c,r.closeOnEscape,S,w,y,N]),o.useEffect(()=>{let t=f.current;if(!(!c||!t||r.trapped||k))return t.addEventListener("focusout",v),()=>{t.removeEventListener("focusout",v)}},[c,r.trapped,k,v]);let te=L({"data-scope":"popover","data-part":"trigger",ref:g,onClick:Z},c?{"data-positioner-open":""}:{}),ne={"data-scope":"popover","data-part":"positioner",ref:P},re={"data-scope":"popover","data-part":"arrow",ref:O},oe=L({"data-scope":"popover","data-part":"popup",ref:F,tabIndex:-1},c?{"data-open":""}:{});return{state:X,focusTrap:H,setArrowRef:O,setAnchorRef:g,setAnchorFallbackRef:Y,setPopupRef:F,setPositionerRef:P,triggerProps:te,popupProps:oe,closeProps:{"data-scope":"popover","data-part":"close",type:"button",onClick:_},positionerProps:ne,arrowProps:re,setOpen:p,setRendered:b,onOpenComplete:$,onCloseComplete:ee}}});export{I as defaultProps,be as usePopover};
|
|
8
2
|
//# sourceMappingURL=index.mjs.map
|
package/popover/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/popover/usePopover.ts","../../../primereact/src/overlayeventbus/OverlayEventBus.ts","../../src/popover/usePopover.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { ConnectedOverlayScrollHandler } from '@primereact/core/utils';\nimport { useMountEffect } from '@primereact/hooks/use-mount-effect';\nimport { useUnmountEffect } from '@primereact/hooks/use-unmount-effect';\nimport { $dt } from '@primeuix/styled';\nimport { absolutePosition, addClass, addStyle, focus, getOffset, isClient, isTouchDevice, setAttribute } from '@primeuix/utils/dom';\nimport { ZIndex } from '@primeuix/utils/zindex';\nimport { OverlayEventBus } from 'primereact/overlayeventbus';\nimport * as React from 'react';\nimport { defaultProps } from './usePopover.props';\n\nexport const usePopover = withHeadless({\n name: 'usePopover',\n defaultProps,\n setup: ({ props, $attrSelector }) => {\n const { dismissable, baseZIndex = 0, autoZIndex, closeOnEscape, defaultOpen, open, onOpenChange, breakpoints } = props;\n const [visibleState, setVisibleState] = React.useState(false);\n const selfClick = React.useRef(false);\n const overlayEventListeners = React.useRef<((e: unknown) => void) | null>(null);\n const scrollHandler = React.useRef<ConnectedOverlayScrollHandler | null>(null);\n const resizeListener = React.useRef<() => void | null>(null);\n const outsideClickListener = React.useRef<((e: unknown) => void) | null>(null);\n const styleElement = React.useRef<HTMLStyleElement | null>(null);\n const documentKeydownListener = React.useRef<((e: unknown) => void) | null>(null);\n const triggerRef = React.useRef<HTMLElement | null>(null);\n const containerRef = React.useRef<HTMLElement | null>(null);\n\n const state = {\n visible: visibleState\n };\n\n const getTrigger = React.useCallback(() => {\n if (triggerRef?.current && triggerRef?.current instanceof HTMLElement) {\n return triggerRef?.current;\n }\n\n // @ts-expect-error - Temporary fix for elementRef property access\n return triggerRef?.current?.elementRef.current ?? null;\n }, [triggerRef]);\n\n const getContainer = React.useCallback(() => {\n if (containerRef?.current && containerRef?.current instanceof HTMLElement) {\n return containerRef?.current;\n }\n\n // @ts-expect-error - Temporary fix for elementRef property access\n return containerRef?.current?.elementRef.current ?? null;\n }, [containerRef]);\n\n const show = () => {\n if (visibleState) return;\n\n setVisibleState(true);\n onOpenChange?.({\n value: true\n });\n };\n\n const hide = () => {\n if (!visibleState) return;\n\n setVisibleState(false);\n onOpenChange?.({\n value: false\n });\n\n setTimeout(() => {\n const trigger = getTrigger();\n\n if (trigger) {\n focus(trigger);\n }\n }, 10);\n };\n\n const onBeforeEnter = () => {\n const container = getContainer();\n\n if (!container) return;\n\n addStyle(container, { position: 'absolute', top: '0' });\n alignOverlay();\n\n if (dismissable) {\n bindOutsideClickListener();\n }\n\n bindScrollListener();\n bindResizeListener();\n\n if (autoZIndex) {\n // Fix\n ZIndex.set('overlay', container, baseZIndex + 10);\n }\n\n overlayEventListeners.current = (e: unknown) => {\n const event = e as Event;\n\n if (container.contains(event.target as Node)) {\n selfClick.current = true;\n }\n };\n\n OverlayEventBus.on('overlay-click', overlayEventListeners.current);\n\n if (closeOnEscape) {\n bindDocumentKeyDownListener();\n }\n };\n\n const onLeave = () => {\n unbindOutsideClickListener();\n unbindScrollListener();\n unbindResizeListener();\n unbindDocumentKeyDownListener();\n\n if (overlayEventListeners.current) {\n OverlayEventBus.off('overlay-click', overlayEventListeners.current);\n overlayEventListeners.current = null;\n }\n\n hide();\n };\n\n const onAfterLeave = () => {\n const container = getContainer();\n\n if (autoZIndex && container) {\n ZIndex.clear(container);\n }\n };\n\n const alignOverlay = () => {\n const container = getContainer();\n\n const trigger = getTrigger();\n\n if (!trigger || !container) return;\n\n absolutePosition(container, trigger, false);\n\n const containerOffset = getOffset(container);\n const targetOffset = getOffset(trigger);\n let arrowLeft = 0;\n\n if (Number(containerOffset.left) < Number(targetOffset.left)) {\n arrowLeft = Number(targetOffset.left) - Number(containerOffset.left);\n }\n\n container.style.setProperty($dt('popover.arrow.left').name, `${arrowLeft}px`);\n\n if (containerOffset.top < targetOffset.top) {\n addClass(container, 'p-popover-flipped');\n container.setAttribute('data-p-popover-flipped', 'true');\n }\n };\n\n const onContentKeydown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.code === 'Escape' && closeOnEscape) {\n hide();\n }\n };\n\n const bindOutsideClickListener = () => {\n if (!outsideClickListener.current && isClient()) {\n outsideClickListener.current = (event: unknown) => {\n const clickEvent = event as MouseEvent;\n\n const container = getContainer();\n\n if (visibleState && !(clickEvent.target === container || container?.contains(clickEvent.target as Node))) {\n hide();\n }\n\n selfClick.current = false;\n };\n\n document.addEventListener('click', outsideClickListener.current);\n }\n };\n\n const unbindOutsideClickListener = () => {\n if (outsideClickListener.current) {\n document.removeEventListener('click', outsideClickListener.current);\n outsideClickListener.current = null;\n selfClick.current = false;\n }\n };\n\n const bindDocumentKeyDownListener = () => {\n if (!documentKeydownListener.current) {\n documentKeydownListener.current = (event: unknown) => {\n const keyboardEvent = event as KeyboardEvent;\n\n if (keyboardEvent.code === 'Escape' && closeOnEscape) {\n hide();\n }\n };\n\n window.document.addEventListener('keydown', documentKeydownListener.current);\n }\n };\n\n const unbindDocumentKeyDownListener = () => {\n if (documentKeydownListener.current) {\n window.document.removeEventListener('keydown', documentKeydownListener.current);\n documentKeydownListener.current = null;\n }\n };\n\n const bindScrollListener = () => {\n if (!scrollHandler.current) {\n scrollHandler.current = new ConnectedOverlayScrollHandler(getTrigger() ?? null, () => {\n if (visibleState) {\n hide();\n }\n });\n }\n\n scrollHandler.current.bindScrollListener();\n };\n\n const unbindScrollListener = () => {\n if (scrollHandler.current) {\n scrollHandler.current.unbindScrollListener();\n }\n };\n\n const bindResizeListener = () => {\n if (!resizeListener.current) {\n resizeListener.current = () => {\n if (visibleState && !isTouchDevice()) {\n alignOverlay();\n }\n };\n\n window.addEventListener('resize', resizeListener.current);\n }\n };\n\n const unbindResizeListener = () => {\n if (resizeListener.current) {\n window.removeEventListener('resize', resizeListener.current);\n resizeListener.current = null;\n }\n };\n\n const onOverlayClick = (event: Event) => {\n OverlayEventBus.emit('overlay-click', {\n originalEvent: event,\n target: getTrigger()\n });\n };\n\n const createStyle = () => {\n if (!breakpoints || !styleElement.current) {\n styleElement.current = document.createElement('style');\n styleElement.current.type = 'text/css';\n setAttribute(styleElement.current, 'nonce', 'nonce');\n document.head.appendChild(styleElement.current);\n\n let innerHTML = '';\n\n for (const breakpoint in breakpoints) {\n innerHTML += `\n @media screen and (max-width: ${breakpoint}) {\n .p-popover[${$attrSelector}] {\n width: ${breakpoints[breakpoint]} !important;\n }\n }\n `;\n }\n\n styleElement.current.innerHTML = innerHTML;\n }\n };\n\n const destroyStyle = () => {\n if (styleElement.current) {\n document.head.removeChild(styleElement.current);\n styleElement.current = null;\n }\n };\n\n React.useEffect(() => {\n if (open) {\n setTimeout(() => {\n show();\n }, 0);\n } else {\n hide();\n }\n }, [open]);\n\n React.useEffect(() => {\n if (defaultOpen) {\n setTimeout(() => {\n show();\n }, 0);\n } else {\n hide();\n }\n }, [defaultOpen]);\n\n useMountEffect(() => {\n if (breakpoints) {\n createStyle();\n }\n });\n\n useUnmountEffect(() => {\n if (dismissable) {\n unbindOutsideClickListener();\n }\n\n if (scrollHandler.current) {\n scrollHandler.current.destroy();\n scrollHandler.current = null;\n }\n\n destroyStyle();\n unbindResizeListener();\n\n const container = getContainer();\n\n if (container && autoZIndex) {\n ZIndex.clear(container);\n }\n\n if (overlayEventListeners.current) {\n OverlayEventBus.off('overlay-click', overlayEventListeners.current);\n overlayEventListeners.current = null;\n }\n });\n\n return {\n state,\n show,\n hide,\n onBeforeEnter,\n onAfterLeave,\n onOverlayClick,\n onLeave,\n onContentKeydown,\n triggerRef,\n containerRef\n };\n }\n});\n","import { EventBus } from '@primeuix/utils/eventbus';\n\nexport default EventBus();\n","import type { usePopoverProps } from '@primereact/types/shared/popover';\n\nexport const defaultProps: usePopoverProps = {\n dismissable: true,\n appendTo: 'body',\n baseZIndex: 0,\n autoZIndex: true,\n breakpoints: {},\n closeOnEscape: true,\n defaultOpen: undefined,\n open: undefined,\n onOpenChange: undefined\n};\n"],"mappings":"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","names":["withHeadless","ConnectedOverlayScrollHandler","useMountEffect","useUnmountEffect","$dt","absolutePosition","addClass","addStyle","focus","getOffset","isClient","isTouchDevice","setAttribute","ZIndex","EventBus","OverlayEventBus_default","React","defaultProps","usePopover","withHeadless","defaultProps","props","$attrSelector","dismissable","baseZIndex","autoZIndex","closeOnEscape","defaultOpen","open","onOpenChange","breakpoints","visibleState","setVisibleState","selfClick","overlayEventListeners","scrollHandler","resizeListener","outsideClickListener","styleElement","documentKeydownListener","triggerRef","containerRef","state","getTrigger","_a","_b","getContainer","show","hide","trigger","focus","onBeforeEnter","container","addStyle","alignOverlay","bindOutsideClickListener","bindScrollListener","bindResizeListener","ZIndex","e","event","OverlayEventBus_default","bindDocumentKeyDownListener","onLeave","unbindOutsideClickListener","unbindScrollListener","unbindResizeListener","unbindDocumentKeyDownListener","onAfterLeave","absolutePosition","containerOffset","getOffset","targetOffset","arrowLeft","$dt","addClass","onContentKeydown","isClient","clickEvent","ConnectedOverlayScrollHandler","isTouchDevice","onOverlayClick","createStyle","setAttribute","innerHTML","breakpoint","destroyStyle","useMountEffect","useUnmountEffect"]}
|
|
1
|
+
{"version":3,"sources":["../../src/popover/usePopover.ts","../../src/popover/usePopover.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { OverlayEventBus } from '@primereact/core/utils';\nimport { useFocusTrap } from '@primereact/headless/focustrap';\nimport { useControlledState } from '@primereact/hooks/use-controlled-state';\nimport { useEventListener } from '@primereact/hooks/use-event-listener';\nimport { focus, getFirstFocusableElement, toElement } from '@primeuix/utils/dom';\nimport * as React from 'react';\nimport { defaultProps } from './usePopover.props';\n\nexport const usePopover = withHeadless({\n name: 'usePopover',\n defaultProps,\n setup: ({ props }) => {\n const [openState, setOpenState, isControlled] = useControlledState({\n value: props.open,\n defaultValue: props.defaultOpen,\n onChange: props.onOpenChange\n });\n const [rendered, setRendered] = React.useState<boolean>(!!openState);\n\n // elements\n const [anchorElement, setAnchorElement] = React.useState<HTMLElement | null>(props.anchor ?? null);\n const [positionerElement, setPositionerElement] = React.useState<HTMLDivElement | null>(null);\n const [popupElement, setPopupElement] = React.useState<HTMLElement | null>(null);\n const [arrowElement, setArrowElement] = React.useState<HTMLDivElement | null>(null);\n\n const state = {\n open: openState,\n rendered,\n trapped: !!props.trapped,\n anchorElement,\n positionerElement,\n popupElement,\n arrowElement\n };\n\n const anchorRef = React.useRef<HTMLElement | null>(null);\n const anchorFallbackRef = React.useRef<HTMLElement | null>(null);\n const positionerRef = React.useRef<HTMLDivElement | null>(null);\n const popupRef = React.useRef<HTMLElement | null>(null);\n const arrowRef = React.useRef<HTMLDivElement | null>(null);\n\n const focusTrap = useFocusTrap({\n trapped: !!props.trapped && !!popupElement,\n autoFocus: false\n });\n\n const setAnchorRef = React.useCallback((node: HTMLElement | null) => {\n const element = toElement(node) ?? null;\n\n if (!element || element === anchorRef.current) return;\n\n anchorRef.current = element;\n setAnchorElement(element || anchorFallbackRef.current);\n }, []);\n\n const setAnchorFallbackRef = React.useCallback((node: HTMLElement | null) => {\n const element = toElement(node) ?? null;\n\n if (element === anchorFallbackRef.current) return;\n\n anchorFallbackRef.current = element;\n\n if (!element) {\n if (anchorRef.current && !anchorRef.current.isConnected) {\n anchorRef.current = null;\n setAnchorElement(null);\n }\n\n return;\n }\n\n if (!anchorRef.current) {\n anchorRef.current = element;\n setAnchorElement(element);\n }\n }, []);\n\n const setPositionerRef = React.useCallback((node: HTMLDivElement | null) => {\n const element = (toElement(node) ?? null) as HTMLDivElement | null;\n\n if (element === positionerRef.current) return;\n\n positionerRef.current = element;\n setPositionerElement(element);\n }, []);\n\n const setPopupRef = React.useCallback((node: HTMLElement | null) => {\n const element = toElement(node) ?? null;\n\n if (element === popupRef.current) return;\n\n popupRef.current = element;\n focusTrap.containerRef.current = element;\n setPopupElement(element);\n }, []);\n\n const setArrowRef = React.useCallback((node: HTMLDivElement | null) => {\n const element = (toElement(node) ?? null) as HTMLDivElement | null;\n\n if (element === arrowRef.current) return;\n\n arrowRef.current = element;\n setArrowElement(element);\n }, []);\n\n const isAutoFocusingRef = React.useRef(false);\n\n function setOpen(open: boolean, originalEvent?: Event) {\n setOpenState([\n open,\n {\n originalEvent,\n value: open\n }\n ]);\n }\n\n const handleFocusOut = (event: FocusEvent) => {\n if (isAutoFocusingRef.current) return;\n\n const relatedTarget = event.relatedTarget as Node | null;\n\n if (!relatedTarget || positionerRef.current?.contains(relatedTarget) || anchorRef.current?.contains(relatedTarget) || anchorFallbackRef.current?.contains(relatedTarget)) return;\n\n setOpen(false, event);\n };\n\n const onTriggerClick = (event: React.MouseEvent) => {\n setOpen(!openState, event.nativeEvent);\n };\n\n const onCloseClick = (event: React.MouseEvent) => {\n setOpen(false, event.nativeEvent);\n };\n\n const onOpenComplete = React.useCallback(() => {\n if (props.autoFocus === false) return;\n\n const popupNode = popupRef.current;\n\n if (!popupNode) return;\n\n const activeElement = document.activeElement as HTMLElement | null;\n const anchorNode = anchorRef.current || anchorFallbackRef.current;\n\n if (activeElement && anchorNode?.contains(activeElement) && anchorNode !== activeElement) {\n return;\n }\n\n isAutoFocusingRef.current = true;\n\n const firstFocusable = getFirstFocusableElement(popupNode);\n\n if (firstFocusable) {\n focus(firstFocusable as HTMLElement, { preventScroll: true });\n } else {\n focus(popupNode, { preventScroll: true });\n }\n\n isAutoFocusingRef.current = false;\n }, [props.autoFocus]);\n\n const onCloseComplete = React.useCallback(() => {\n props.onExitComplete?.();\n }, [props.onExitComplete]);\n\n const overlaySelfClickRef = React.useRef(false);\n\n const [bindOutsideClickListener, unbindOutsideClickListener] = useEventListener({\n type: 'pointerdown',\n listener: (event: Event) => {\n const target = event.target as Node;\n\n if (!target || !document.documentElement.contains(target)) return;\n\n if (overlaySelfClickRef.current) {\n overlaySelfClickRef.current = false;\n\n return;\n }\n\n const positionerNode = positionerRef.current;\n const anchorNode = anchorRef.current;\n const anchorFallbackNode = anchorFallbackRef.current;\n\n if (openState && positionerNode && !positionerNode.contains(target) && (!anchorNode || !anchorNode.contains(target)) && (!anchorFallbackNode || !anchorFallbackNode.contains(target))) {\n setOpen(false, event);\n }\n }\n });\n\n React.useEffect(() => {\n if (!openState) return;\n\n const listener = (payload: unknown) => {\n const emittedTarget = (payload as { target?: Node | null } | undefined)?.target ?? null;\n\n if (!emittedTarget) return;\n\n const positionerNode = positionerRef.current;\n const anchorNode = anchorRef.current;\n const anchorFallbackNode = anchorFallbackRef.current;\n\n if ((positionerNode && positionerNode.contains(emittedTarget)) || (anchorNode && anchorNode.contains(emittedTarget)) || (anchorFallbackNode && anchorFallbackNode.contains(emittedTarget))) {\n overlaySelfClickRef.current = true;\n }\n };\n\n OverlayEventBus.on('overlay-click', listener);\n\n return () => {\n OverlayEventBus.off('overlay-click', listener);\n };\n }, [openState]);\n\n const [bindEscapeListener, unbindEscapeListener] = useEventListener({\n type: 'keydown',\n listener: (event: Event) => {\n if ((event as KeyboardEvent).key === 'Escape') {\n setOpen(false, event);\n focus((anchorRef.current || anchorFallbackRef.current) as HTMLElement, { preventScroll: true });\n }\n }\n });\n\n // effects\n React.useEffect(() => {\n if (props.anchor !== undefined) {\n anchorRef.current = props.anchor;\n setAnchorElement(props.anchor);\n }\n }, [props.anchor]);\n\n React.useEffect(() => {\n if (openState) {\n setRendered(true);\n }\n }, [openState]);\n\n React.useEffect(() => {\n if (openState) {\n bindOutsideClickListener();\n\n if (props.closeOnEscape) {\n bindEscapeListener();\n }\n } else {\n unbindOutsideClickListener();\n unbindEscapeListener();\n }\n }, [openState, props.closeOnEscape, bindOutsideClickListener, unbindOutsideClickListener, bindEscapeListener, unbindEscapeListener]);\n\n React.useEffect(() => {\n const positionerNode = positionerRef.current;\n\n if (!openState || !positionerNode || props.trapped || isControlled) return;\n\n positionerNode.addEventListener('focusout', handleFocusOut);\n\n return () => {\n positionerNode.removeEventListener('focusout', handleFocusOut);\n };\n }, [openState, props.trapped, isControlled, handleFocusOut]);\n\n // prop getters\n const triggerProps = {\n 'data-scope': 'popover',\n 'data-part': 'trigger',\n ref: setAnchorRef,\n onClick: onTriggerClick,\n ...(openState ? { 'data-positioner-open': '' } : {})\n };\n\n const positionerProps = {\n 'data-scope': 'popover',\n 'data-part': 'positioner',\n ref: setPositionerRef\n };\n\n const arrowProps = {\n 'data-scope': 'popover',\n 'data-part': 'arrow',\n ref: setArrowRef\n };\n\n const popupProps = {\n 'data-scope': 'popover',\n 'data-part': 'popup',\n ref: setPopupRef,\n tabIndex: -1,\n ...(openState ? { 'data-open': '' } : {})\n };\n\n const closeProps = {\n 'data-scope': 'popover',\n 'data-part': 'close',\n type: 'button' as const,\n onClick: onCloseClick\n };\n\n return {\n state,\n focusTrap,\n // refs\n setArrowRef,\n setAnchorRef,\n setAnchorFallbackRef,\n setPopupRef,\n setPositionerRef,\n // prop getters\n triggerProps,\n popupProps,\n closeProps,\n positionerProps,\n arrowProps,\n // methods\n setOpen,\n setRendered,\n onOpenComplete,\n onCloseComplete\n };\n }\n});\n","import type { UsePopoverProps } from '@primereact/types/headless/popover';\n\nexport const defaultProps: UsePopoverProps = {\n anchor: undefined,\n defaultOpen: undefined,\n open: undefined,\n trapped: false,\n autoFocus: true,\n closeOnEscape: true,\n onOpenChange: undefined,\n onExitComplete: undefined\n};\n"],"mappings":"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","names":["withHeadless","OverlayEventBus","useFocusTrap","useControlledState","useEventListener","focus","getFirstFocusableElement","toElement","React","defaultProps","usePopover","withHeadless","defaultProps","props","_a","openState","setOpenState","isControlled","useControlledState","rendered","setRendered","anchorElement","setAnchorElement","positionerElement","setPositionerElement","popupElement","setPopupElement","arrowElement","setArrowElement","state","anchorRef","anchorFallbackRef","positionerRef","popupRef","arrowRef","focusTrap","useFocusTrap","setAnchorRef","node","element","toElement","setAnchorFallbackRef","setPositionerRef","setPopupRef","setArrowRef","isAutoFocusingRef","setOpen","open","originalEvent","handleFocusOut","event","_b","_c","relatedTarget","onTriggerClick","onCloseClick","onOpenComplete","popupNode","activeElement","anchorNode","firstFocusable","getFirstFocusableElement","focus","onCloseComplete","overlaySelfClickRef","bindOutsideClickListener","unbindOutsideClickListener","useEventListener","target","positionerNode","anchorFallbackNode","listener","payload","emittedTarget","OverlayEventBus","bindEscapeListener","unbindEscapeListener","triggerProps","__spreadValues","positionerProps","arrowProps","popupProps"]}
|
package/popover/usePopover.d.ts
CHANGED
|
@@ -1,15 +1,68 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
export declare const usePopover: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/
|
|
2
|
+
export declare const usePopover: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/headless/popover").UsePopoverProps, unknown, {
|
|
3
3
|
state: {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
4
|
+
open: boolean | undefined;
|
|
5
|
+
rendered: boolean;
|
|
6
|
+
trapped: boolean;
|
|
7
|
+
anchorElement: HTMLElement | null;
|
|
8
|
+
positionerElement: HTMLDivElement | null;
|
|
9
|
+
popupElement: HTMLElement | null;
|
|
10
|
+
arrowElement: HTMLDivElement | null;
|
|
11
|
+
};
|
|
12
|
+
focusTrap: import("@primereact/types/core").HeadlessInstance<import("@primereact/headless/focustrap").UseFocusTrapProps, unknown, {
|
|
13
|
+
containerRef: React.RefObject<HTMLElement | null>;
|
|
14
|
+
firstHiddenElementRef: React.RefObject<HTMLSpanElement | null>;
|
|
15
|
+
lastHiddenElementRef: React.RefObject<HTMLSpanElement | null>;
|
|
16
|
+
firstHiddenProps: {
|
|
17
|
+
role: "presentation";
|
|
18
|
+
'aria-hidden': true;
|
|
19
|
+
'data-focus-guard': string;
|
|
20
|
+
onFocus: (event: React.FocusEvent<HTMLSpanElement>) => void;
|
|
21
|
+
};
|
|
22
|
+
lastHiddenProps: {
|
|
23
|
+
role: "presentation";
|
|
24
|
+
'aria-hidden': true;
|
|
25
|
+
'data-focus-guard': string;
|
|
26
|
+
onFocus: (event: React.FocusEvent<HTMLSpanElement>) => void;
|
|
27
|
+
};
|
|
28
|
+
}>;
|
|
29
|
+
setArrowRef: (node: HTMLDivElement | null) => void;
|
|
30
|
+
setAnchorRef: (node: HTMLElement | null) => void;
|
|
31
|
+
setAnchorFallbackRef: (node: HTMLElement | null) => void;
|
|
32
|
+
setPopupRef: (node: HTMLElement | null) => void;
|
|
33
|
+
setPositionerRef: (node: HTMLDivElement | null) => void;
|
|
34
|
+
triggerProps: {
|
|
35
|
+
'data-positioner-open'?: string | undefined;
|
|
36
|
+
'data-scope': string;
|
|
37
|
+
'data-part': string;
|
|
38
|
+
ref: (node: HTMLElement | null) => void;
|
|
39
|
+
onClick: (event: React.MouseEvent) => void;
|
|
40
|
+
};
|
|
41
|
+
popupProps: {
|
|
42
|
+
'data-open'?: string | undefined;
|
|
43
|
+
'data-scope': string;
|
|
44
|
+
'data-part': string;
|
|
45
|
+
ref: (node: HTMLElement | null) => void;
|
|
46
|
+
tabIndex: number;
|
|
47
|
+
};
|
|
48
|
+
closeProps: {
|
|
49
|
+
'data-scope': string;
|
|
50
|
+
'data-part': string;
|
|
51
|
+
type: "button";
|
|
52
|
+
onClick: (event: React.MouseEvent) => void;
|
|
53
|
+
};
|
|
54
|
+
positionerProps: {
|
|
55
|
+
'data-scope': string;
|
|
56
|
+
'data-part': string;
|
|
57
|
+
ref: (node: HTMLDivElement | null) => void;
|
|
58
|
+
};
|
|
59
|
+
arrowProps: {
|
|
60
|
+
'data-scope': string;
|
|
61
|
+
'data-part': string;
|
|
62
|
+
ref: (node: HTMLDivElement | null) => void;
|
|
63
|
+
};
|
|
64
|
+
setOpen: (open: boolean, originalEvent?: Event) => void;
|
|
65
|
+
setRendered: React.Dispatch<React.SetStateAction<boolean>>;
|
|
66
|
+
onOpenComplete: () => void;
|
|
67
|
+
onCloseComplete: () => void;
|
|
15
68
|
}>;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare const defaultProps:
|
|
1
|
+
import type { UsePopoverProps } from '@primereact/types/headless/popover';
|
|
2
|
+
export declare const defaultProps: UsePopoverProps;
|
package/portal/index.d.ts
CHANGED
package/portal/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{withHeadless as
|
|
1
|
+
import{withHeadless as t}from"@primereact/core/headless";import{useMounted as r}from"@primereact/hooks";var o={onMounted:void 0,onUnmounted:void 0};var a=t({name:"usePortal",defaultProps:o,setup({props:e}){return{state:{mounted:r({onMounted:e.onMounted,onUnmounted:e.onUnmounted})}}}});export{o as defaultProps,a as usePortal};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|
package/portal/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/portal/usePortal.ts","../../src/portal/usePortal.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport {
|
|
1
|
+
{"version":3,"sources":["../../src/portal/usePortal.ts","../../src/portal/usePortal.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useMounted } from '@primereact/hooks';\nimport { defaultProps } from './usePortal.props';\n\nexport const usePortal = withHeadless({\n name: 'usePortal',\n defaultProps,\n setup({ props }) {\n const mounted = useMounted({\n onMounted: props.onMounted,\n onUnmounted: props.onUnmounted\n });\n\n const state = {\n mounted\n };\n\n return {\n state\n };\n }\n});\n","import type { UsePortalProps } from '@primereact/types/headless/portal';\n\nexport const defaultProps: UsePortalProps = {\n onMounted: undefined,\n onUnmounted: undefined\n};\n"],"mappings":"AAAA,OAAS,gBAAAA,MAAoB,4BAC7B,OAAS,cAAAC,MAAkB,oBCCpB,IAAMC,EAA+B,CACxC,UAAW,OACX,YAAa,MACjB,EDDO,IAAMC,EAAYC,EAAa,CAClC,KAAM,YACN,aAAAC,EACA,MAAM,CAAE,MAAAC,CAAM,EAAG,CAUb,MAAO,CACH,MALU,CACV,QANYC,EAAW,CACvB,UAAWD,EAAM,UACjB,YAAaA,EAAM,WACvB,CAAC,CAID,CAIA,CACJ,CACJ,CAAC","names":["withHeadless","useMounted","defaultProps","usePortal","withHeadless","defaultProps","props","useMounted"]}
|
package/portal/usePortal.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
export declare const usePortal: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/
|
|
2
|
-
|
|
1
|
+
export declare const usePortal: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/headless/portal").UsePortalProps, unknown, {
|
|
2
|
+
state: {
|
|
3
|
+
mounted: boolean;
|
|
4
|
+
};
|
|
3
5
|
}>;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare const defaultProps:
|
|
1
|
+
import type { UsePortalProps } from '@primereact/types/headless/portal';
|
|
2
|
+
export declare const defaultProps: UsePortalProps;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var bt=Object.defineProperty,wt=Object.defineProperties;var St=Object.getOwnPropertyDescriptors;var ot=Object.getOwnPropertySymbols;var Pt=Object.prototype.hasOwnProperty,Tt=Object.prototype.propertyIsEnumerable;var rt=(e,t,n)=>t in e?bt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,nt=(e,t)=>{for(var n in t||(t={}))Pt.call(t,n)&&rt(e,n,t[n]);if(ot)for(var n of ot(t))Tt.call(t,n)&&rt(e,n,t[n]);return e},it=(e,t)=>wt(e,St(t));import{withHeadless as $t}from"@primereact/core/headless";import{getScrollableParents as Mt}from"@primeuix/utils/dom";import{ZIndex as gt}from"@primeuix/utils/zindex";import*as u from"react";function st(e,t){let n=e.left+e.width/2,i=e.top+e.height/2,m=t.left+t.width/2,l=t.top+t.height/2,f=m-n,s=l-i,g={top:e.top-t.bottom,bottom:t.top-e.bottom,left:e.left-t.right,right:t.left-e.right},S=Object.entries(g).filter(([,v])=>v>=0),F=S.length>0?S.sort((v,X)=>v[1]-X[1])[0][0]:Math.abs(f)>Math.abs(s)?f>0?"right":"left":s>0?"bottom":"top",L=4,w="center";return F==="top"||F==="bottom"?Math.abs(t.left-e.left)<=L?w="start":Math.abs(t.right-e.right)<=L&&(w="end"):Math.abs(t.top-e.top)<=L?w="start":Math.abs(t.bottom-e.bottom)<=L&&(w="end"),{side:F,align:w}}function at(e,t,n,i,m,l,f){let s={left:"",right:"",top:"",bottom:"",marginTop:"",marginRight:"",marginBottom:"",marginLeft:"",positionTryFallbacks:""};s.positionArea=e!=null?e:"";let g={top:"marginBottom",bottom:"marginTop",left:"marginRight",right:"marginLeft"};return n&&(s[g[e]]=`${n}px`),t!=="center"&&(e==="top"||e==="bottom"?t==="start"?s.left=`calc(anchor(start) + ${i}px)`:s.right=`calc(anchor(end) - ${i}px)`:t==="start"?s.top=`calc(anchor(start) + ${i}px)`:s.bottom=`calc(anchor(end) - ${i}px)`),(m||l)&&(s.positionTryFallbacks="flip-block, flip-inline, flip-block flip-inline"),f?s.positionVisibility="anchors-visible":s.positionVisibility="always",s}import{isCssSupported as Ct}from"@primeuix/utils";var U=null;function I(){return U===null&&(U=Ct("anchor-name","--a")),U}function H(e,t,n){return Math.min(Math.max(e,t),n)}function lt(e){if(e){let t=e.getBoundingClientRect();return{x:t.left,y:t.top,width:t.width,height:t.height}}return{x:0,y:0,width:window.innerWidth,height:window.innerHeight}}function ct(e,t){let n=e.offsetWidth||t.width,i=e.offsetHeight||t.height;if(!n||!i)return t;let m=t.width/n||1,l=t.height/i||1,f=t.left-(n*m-n)/2,s=t.top-(i*l-i)/2;return{left:f,top:s,width:n,height:i}}function _(e,t,n,i,m,l,f){let s=l/2;return f?e==="top"?`${t}px calc(${m}px + ${s}px)`:e==="bottom"?`${t}px calc(0px - ${s}px)`:e==="left"?`calc(${i}px + ${s}px) ${n}px`:`calc(0px - ${s}px) ${n}px`:`${t}px ${n}px`}var vt={top:"bottom",bottom:"top",left:"right",right:"left"};function ft(e,t,n,i,m,l,f){let s=0,g=0,S=i==="top"||i==="bottom";return i==="top"?g=e.y-n-l:i==="bottom"?g=e.y+e.height+l:i==="left"?s=e.x-t-l:s=e.x+e.width+l,S?m==="start"?s=e.x+f:m==="end"?s=e.x+e.width-t-f:s=e.x+(e.width-t)/2:m==="start"?g=e.y+f:m==="end"?g=e.y+e.height-n-f:g=e.y+(e.height-n)/2,{x:s,y:g}}function pt(e,t,n,i,m,l){let f=vt[i],s={top:e.y-l.y-m,bottom:l.y+l.height-(e.y+e.height)-m,left:e.x-l.x-m,right:l.x+l.width-(e.x+e.width)-m},g=i==="top"||i==="bottom"?n:t;return s[i]>=g?i:s[f]>=g||s[f]>s[i]?f:i}var At=5;function mt(e,t,n,i,m,l,f=At){return m==="top"||m==="bottom"?e=H(e,l.x+f,l.x+l.width-n-f):t=H(t,l.y+f,l.y+l.height-i-f),{x:e,y:t}}function dt(e,t,n,i,m,l,f){let s=l/2,g=Math.max(8,s),S=f==="top"||f==="bottom",F=e.x+e.width/2,L=e.y+e.height/2,w,v;return S?(w=H(F-t,g,i-g),v=f==="bottom"?0:m):(w=f==="right"?0:i,v=H(L-n,g,m-g)),{arrowX:w,arrowY:v,arrowLeft:w-s,arrowTop:v-s}}function ut(e,t){return e.x+e.width<=t.x||e.y+e.height<=t.y||e.x>=t.x+t.width||e.y>=t.y+t.height}function ht(e,t,n,i,m,l){if(l==="top"||l==="bottom"){if(Math.abs(e-n.x)<=4)return"start";if(Math.abs(e+i-(n.x+n.width))<=4)return"end"}else{if(Math.abs(t-n.y)<=4)return"start";if(Math.abs(t+m-(n.y+n.height))<=4)return"end"}return"center"}var yt={side:"bottom",align:"center",sideOffset:void 0,alignOffset:0,flip:!0,shift:!0,hideWhenDetached:!1,strategy:"fixed",boundary:void 0,anchor:void 0,content:void 0,arrow:void 0,autoZIndex:!0,baseZIndex:0,onPlacementChange:void 0};var Nt=$t({name:"usePositioner",defaultProps:yt,setup({id:e,props:t,$primereact:n}){var tt,et;let[i,m]=u.useState(),[l,f]=u.useState(),s=`--positioner-trigger-${e}`,g=`--positioner-content-${e}`,S=u.useRef(t);S.current=t;let F=u.useRef(i);F.current=i;let L=u.useCallback(()=>{var x;let r=S.current,a=r.arrow;if(!a)return 0;let o=window.getComputedStyle(a),p=(x=F.current)!=null?x:r.side,c=p==="top"||p==="bottom"?parseFloat(o.height||"0")||a.offsetHeight:parseFloat(o.width||"0")||a.offsetWidth,d=parseFloat(o.borderTopWidth||"0");return Math.ceil(c/2+d)},[]),w=u.useCallback(()=>{let r=S.current;return r.sideOffset!=null?r.sideOffset:r.arrow?L():0},[L]),v=u.useRef(t.side),X=u.useRef(t.align);(v.current!==t.side||X.current!==t.align)&&(v.current=t.side,X.current=t.align,m(void 0),f(void 0));let G=u.useCallback(()=>{var d;let r=S.current,a=(d=F.current)!=null?d:r.side,o=l!=null?l:r.align,p=a==="top"||a==="bottom",h={top:"bottom",bottom:"top",left:"right",right:"left"}[a],c;return p?c=o==="start"?"left":o==="end"?"right":"center":c=o==="start"?"top":o==="end"?"bottom":"center",`${c} ${h}`},[l]),J=u.useCallback(()=>{if(!I())return{};let r=S.current;return at(r.side,r.align,w(),r.alignOffset,r.flip,r.shift,r.hideWhenDetached)},[w]),K=u.useCallback(()=>{let r=S.current,a=r.anchor,o=r.content;if(!a||!o)return;let p=a.getBoundingClientRect(),h=o.getBoundingClientRect(),c=ct(o,h),{side:d,align:x}=st(p,h);o.dataset.side!==d&&(o.dataset.side=d),o.dataset.align!==x&&(o.dataset.align=x),r.arrow&&(r.arrow.dataset.side!==d&&(r.arrow.dataset.side=d),r.arrow.dataset.align!==x&&(r.arrow.dataset.align=x)),m(C=>C===d?C:d),f(C=>C===x?C:x);let $=w(),O=window.innerWidth,T=window.innerHeight,j=d==="top"||d==="bottom",b=j?d==="bottom"?T-(p.bottom+$):p.top-$:T,M=j?O:d==="right"?O-(p.right+$):p.left-$;o.style.setProperty("--px-available-height",`${Math.max(0,b)}px`),o.style.setProperty("--px-available-width",`${Math.max(0,M)}px`);let A=p.left+p.width/2,R=p.top+p.height/2,V=r.arrow;if(V){let C=window.getComputedStyle(V),k=parseFloat(C.width||"0")||parseFloat(C.height||"0")||0,q=Math.max(V.offsetWidth,V.offsetHeight,k),B=q/2,P=Math.max(8,B),D=H(A-c.left,P,c.width-P),y=H(R-c.top,P,c.height-P),W=D-B,z=y-B;o.style.setProperty("--px-placer-arrow-x",`${D}px`),o.style.setProperty("--px-placer-arrow-y",`${y}px`),o.style.setProperty("--px-placer-arrow-left",`${W}px`),o.style.setProperty("--px-placer-arrow-top",`${z}px`);let E=_(d,D,y,c.width,c.height,q,!0);o.style.setProperty("--px-transform-origin",E)}else{let C=A-c.left,k=R-c.top;o.style.removeProperty("--px-placer-arrow-x"),o.style.removeProperty("--px-placer-arrow-y"),o.style.removeProperty("--px-placer-arrow-left"),o.style.removeProperty("--px-placer-arrow-top"),o.style.setProperty("--px-transform-origin",`${C}px ${k}px`)}},[w]),Q=u.useCallback(()=>{var D;let r=S.current,a=r.anchor,o=r.content;if(!a||!o)return;let p=lt(r.boundary),h=a.getBoundingClientRect(),c={x:h.left,y:h.top,width:h.width,height:h.height},d=o.offsetWidth,x=o.offsetHeight,$=r.side,O=r.align,T=w(),j=(D=r.alignOffset)!=null?D:0;if(r.hideWhenDetached&&ut(c,p)){o.style.visibility="hidden";return}else o.style.visibility="";let b=$;r.flip&&(b=pt(c,d,x,$,T,p));let{x:M,y:A}=ft(c,d,x,b,O,T,j),R=O;if(r.shift){let y=mt(M,A,d,x,b,p);M=y.x,A=y.y,R=ht(M,A,c,d,x,b)}if(r.strategy==="absolute"){let y=o.offsetParent||document.documentElement,W=y.getBoundingClientRect();M=M-W.left+y.scrollLeft,A=A-W.top+y.scrollTop}let V=window.innerWidth,C=window.innerHeight,k=b==="top"||b==="bottom",q=k?b==="bottom"?C-(c.y+c.height+T):c.y-T:C,B=k?V:b==="right"?V-(c.x+c.width+T):c.x-T;o.style.setProperty("--px-available-height",`${Math.max(0,q)}px`),o.style.setProperty("--px-available-width",`${Math.max(0,B)}px`),o.style.top=`${A}px`,o.style.left=`${M}px`,o.dataset.side!==b&&(o.dataset.side=b),o.dataset.align!==R&&(o.dataset.align=R);let P=r.arrow;if(P&&(P.dataset.side!==b&&(P.dataset.side=b),P.dataset.align!==R&&(P.dataset.align=R)),m(y=>y===b?y:b),f(y=>y===R?y:R),P){let y=window.getComputedStyle(P),W=parseFloat(y.width||"0")||parseFloat(y.height||"0")||0,z=Math.max(P.offsetWidth,P.offsetHeight,W),E=dt(c,M,A,d,x,z,b);o.style.setProperty("--px-placer-arrow-x",`${E.arrowX}px`),o.style.setProperty("--px-placer-arrow-y",`${E.arrowY}px`),o.style.setProperty("--px-placer-arrow-left",`${E.arrowLeft}px`),o.style.setProperty("--px-placer-arrow-top",`${E.arrowTop}px`);let xt=_(b,E.arrowX,E.arrowY,d,x,z,!0);o.style.setProperty("--px-transform-origin",xt)}else{let y=c.x+c.width/2,W=c.y+c.height/2,z=y-M,E=W-A;o.style.removeProperty("--px-placer-arrow-x"),o.style.removeProperty("--px-placer-arrow-y"),o.style.removeProperty("--px-placer-arrow-left"),o.style.removeProperty("--px-placer-arrow-top"),o.style.setProperty("--px-transform-origin",`${z}px ${E}px`)}},[w]),N=u.useCallback(()=>{let r=S.current,a=r.anchor,o=r.content;if(!a||!o)return;let p=a.getBoundingClientRect().width;o.style.setProperty("--px-positioner-anchor-width",`${p}px`),I()?K():Q()},[K,Q]),Y=u.useRef(N);Y.current=N,u.useEffect(()=>{var p;let r=t.anchor,a=t.content;if(!r||!a)return;let o=(p=t.strategy)!=null?p:"fixed";return I()?(Object.assign(a.style,it(nt({position:o,positionAnchor:s,anchorName:g},J()),{"--px-transform-origin":G()})),Object.assign(r.style,{anchorName:s})):Object.assign(a.style,{position:o,top:"0",left:"0",margin:"0"}),()=>{a.style.position="",a.style.top="",a.style.left="",a.style.right="",a.style.bottom="",a.style.margin="",a.style.visibility="",["--px-transform-origin","--px-positioner-anchor-width","--px-available-height","--px-available-width","--px-placer-arrow-x","--px-placer-arrow-y","--px-placer-arrow-left","--px-placer-arrow-top"].forEach(h=>a.style.removeProperty(h)),I()&&(["position-anchor","anchor-name","position-area","position-try-fallbacks","position-visibility"].forEach(h=>a.style.removeProperty(h)),a.style.marginTop="",a.style.marginRight="",a.style.marginBottom="",a.style.marginLeft="",r.style.removeProperty("anchor-name"))}},[t.anchor,t.content,t.strategy,t.side,t.align,t.sideOffset,t.alignOffset,t.flip,t.shift,t.hideWhenDetached]),u.useEffect(()=>{var r,a,o,p;if(t.content)return t.autoZIndex&>.set("overlay",t.content,((r=t.baseZIndex)!=null?r:0)+((p=(o=(a=n.config)==null?void 0:a.zIndex)==null?void 0:o.overlay)!=null?p:1e3)),()=>{t.autoZIndex&&t.content&>.clear(t.content)}},[t.content,t.autoZIndex,t.baseZIndex,(et=(tt=n.config)==null?void 0:tt.zIndex)==null?void 0:et.overlay]),u.useLayoutEffect(()=>{if(!t.anchor||!t.content)return;let r=0,a=0,o=!1,p=!1,h=()=>{o||p||(o=!0,r=requestAnimationFrame(()=>{o=!1,p||Y.current()}))},c=new ResizeObserver(h);t.anchor instanceof Element&&c.observe(t.anchor),t.content instanceof Element&&c.observe(t.content),window.addEventListener("resize",h,{passive:!0});let d=null;if(I())window.addEventListener("scroll",h,{capture:!0,passive:!0});else{d=Mt(t.anchor);for(let T of d)T.addEventListener("scroll",h,{passive:!0})}let x=I()?5:3,$=0,O=()=>{p||(Y.current(),$+=1,$<x&&(a=requestAnimationFrame(O)))};return a=requestAnimationFrame(O),()=>{if(p=!0,window.removeEventListener("resize",h),I())window.removeEventListener("scroll",h,{capture:!0});else if(d)for(let T of d)T.removeEventListener("scroll",h);c.disconnect(),cancelAnimationFrame(r),cancelAnimationFrame(a)}},[t.anchor,t.content]),u.useEffect(()=>{!t.anchor||!t.content||Y.current()},[t.anchor,t.content,t.arrow,t.side,t.align,t.sideOffset,t.alignOffset,t.flip,t.shift,t.hideWhenDetached,t.boundary,t.strategy]);let Z=u.useRef(t.onPlacementChange);return Z.current=t.onPlacementChange,u.useEffect(()=>{var r;i!==void 0&&l!==void 0&&((r=Z.current)==null||r.call(Z,{side:i,align:l}))},[i,l]),{state:{actualSide:i,actualAlign:l},getTransformOrigin:G,computePosition:J,updatePlacement:N}}});export{yt as defaultProps,Nt as usePositioner};
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/positioner/usePositioner.ts","../../src/positioner/usePositioner.anchor.ts","../../src/positioner/usePositioner.utils.ts","../../src/positioner/usePositioner.fallback.ts","../../src/positioner/usePositioner.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { AlignType, SideType } from '@primereact/types/headless/positioner';\nimport { getScrollableParents } from '@primeuix/utils/dom';\nimport { ZIndex } from '@primeuix/utils/zindex';\nimport * as React from 'react';\nimport { computeCSSPosition, getPlacementFromRects } from './usePositioner.anchor';\nimport { computeArrowPosition, computeCoordsFromPlacement, deriveAlignFromCoords, getFlippedSide, isAnchorDetached, shiftCoords } from './usePositioner.fallback';\nimport { defaultProps } from './usePositioner.props';\nimport { Rect, clamp, computeTransformOrigin, getBoundaryRect, getLayoutRect, isCssAnchorSupported } from './usePositioner.utils';\n\nexport const usePositioner = withHeadless({\n name: 'usePositioner',\n defaultProps,\n setup({ id, props, $primereact }) {\n const [actualSide, setActualSide] = React.useState<SideType>();\n const [actualAlign, setActualAlign] = React.useState<AlignType>();\n\n const anchorName = `--positioner-trigger-${id}`;\n const contentAnchor = `--positioner-content-${id}`;\n\n // ── Stable refs for props accessed in updatePlacement ──\n\n const propsRef = React.useRef(props);\n\n propsRef.current = props;\n\n const actualSideRef = React.useRef(actualSide);\n\n actualSideRef.current = actualSide;\n\n // ── Helper: getArrowOffset ──\n\n const getArrowOffset = React.useCallback((): number => {\n const p = propsRef.current;\n const arrow = p.arrow;\n\n if (!arrow) return 0;\n\n const computed = window.getComputedStyle(arrow);\n const side = actualSideRef.current ?? p.side;\n const isVertical = side === 'top' || side === 'bottom';\n const size = isVertical ? parseFloat(computed.height || '0') || arrow.offsetHeight : parseFloat(computed.width || '0') || arrow.offsetWidth;\n const borderTop = parseFloat(computed.borderTopWidth || '0');\n\n return Math.ceil(size / 2 + borderTop);\n }, []);\n\n const resolveSideOffset = React.useCallback((): number => {\n const p = propsRef.current;\n\n if (p.sideOffset != null) return p.sideOffset;\n\n return p.arrow ? getArrowOffset() : 0;\n }, [getArrowOffset]);\n\n // ── Reset actual placement when desired placement changes ──\n\n const prevSideRef = React.useRef(props.side);\n const prevAlignRef = React.useRef(props.align);\n\n if (prevSideRef.current !== props.side || prevAlignRef.current !== props.align) {\n prevSideRef.current = props.side;\n prevAlignRef.current = props.align;\n setActualSide(undefined);\n setActualAlign(undefined);\n }\n\n // ── CSS Anchor Mode: getTransformOrigin ──\n\n const getTransformOrigin = React.useCallback((): string => {\n const p = propsRef.current;\n const originSide = actualSideRef.current ?? p.side;\n const originAlign = actualAlign ?? p.align;\n const isVertical = originSide === 'top' || originSide === 'bottom';\n\n const primary = {\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left'\n }[originSide as SideType];\n\n let secondary: string;\n\n if (isVertical) {\n secondary = originAlign === 'start' ? 'left' : originAlign === 'end' ? 'right' : 'center';\n } else {\n secondary = originAlign === 'start' ? 'top' : originAlign === 'end' ? 'bottom' : 'center';\n }\n\n return `${secondary} ${primary}`;\n }, [actualAlign]);\n\n // ── CSS Anchor Mode: computePosition ──\n\n const computePosition = React.useCallback((): React.CSSProperties => {\n if (!isCssAnchorSupported()) {\n return {};\n }\n\n const p = propsRef.current;\n\n return computeCSSPosition(p.side as SideType, p.align as AlignType, resolveSideOffset(), p.alignOffset, p.flip, p.shift, p.hideWhenDetached) as React.CSSProperties;\n }, [resolveSideOffset]);\n\n // ── CSS Anchor Mode: updatePlacement ──\n\n const updatePlacementCSS = React.useCallback(() => {\n const p = propsRef.current;\n const trigger = p.anchor;\n const content = p.content;\n\n if (!trigger || !content) return;\n\n const triggerRect = trigger.getBoundingClientRect();\n const contentRect = content.getBoundingClientRect();\n const positionerLayout = getLayoutRect(content, contentRect);\n const { side: nextSide, align: nextAlign } = getPlacementFromRects(triggerRect, contentRect);\n\n if (content.dataset.side !== nextSide) content.dataset.side = nextSide;\n\n if (content.dataset.align !== nextAlign) content.dataset.align = nextAlign;\n\n if (p.arrow) {\n if (p.arrow.dataset.side !== nextSide) p.arrow.dataset.side = nextSide;\n\n if (p.arrow.dataset.align !== nextAlign) p.arrow.dataset.align = nextAlign;\n }\n\n setActualSide((prev) => (prev === nextSide ? prev : nextSide));\n setActualAlign((prev) => (prev === nextAlign ? prev : nextAlign));\n\n // Available space\n const sOffset = resolveSideOffset();\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n const isVertical = nextSide === 'top' || nextSide === 'bottom';\n const availableHeight = isVertical ? (nextSide === 'bottom' ? viewportHeight - (triggerRect.bottom + sOffset) : triggerRect.top - sOffset) : viewportHeight;\n const availableWidth = isVertical ? viewportWidth : nextSide === 'right' ? viewportWidth - (triggerRect.right + sOffset) : triggerRect.left - sOffset;\n\n content.style.setProperty('--px-available-height', `${Math.max(0, availableHeight)}px`);\n content.style.setProperty('--px-available-width', `${Math.max(0, availableWidth)}px`);\n\n const triggerCenterX = triggerRect.left + triggerRect.width / 2;\n const triggerCenterY = triggerRect.top + triggerRect.height / 2;\n const arrow = p.arrow;\n\n if (arrow) {\n const computed = window.getComputedStyle(arrow);\n const cssArrowSize = parseFloat(computed.width || '0') || parseFloat(computed.height || '0') || 0;\n const arrowSize = Math.max(arrow.offsetWidth, arrow.offsetHeight, cssArrowSize);\n const arrowHalf = arrowSize / 2;\n const arrowInset = Math.max(8, arrowHalf);\n const arrowX = clamp(triggerCenterX - positionerLayout.left, arrowInset, positionerLayout.width - arrowInset);\n const arrowY = clamp(triggerCenterY - positionerLayout.top, arrowInset, positionerLayout.height - arrowInset);\n const arrowLeft = arrowX - arrowHalf;\n const arrowTop = arrowY - arrowHalf;\n\n content.style.setProperty('--px-placer-arrow-x', `${arrowX}px`);\n content.style.setProperty('--px-placer-arrow-y', `${arrowY}px`);\n content.style.setProperty('--px-placer-arrow-left', `${arrowLeft}px`);\n content.style.setProperty('--px-placer-arrow-top', `${arrowTop}px`);\n\n const transformOrigin = computeTransformOrigin(nextSide, arrowX, arrowY, positionerLayout.width, positionerLayout.height, arrowSize, true);\n\n content.style.setProperty('--px-transform-origin', transformOrigin);\n } else {\n const originX = triggerCenterX - positionerLayout.left;\n const originY = triggerCenterY - positionerLayout.top;\n\n content.style.removeProperty('--px-placer-arrow-x');\n content.style.removeProperty('--px-placer-arrow-y');\n content.style.removeProperty('--px-placer-arrow-left');\n content.style.removeProperty('--px-placer-arrow-top');\n content.style.setProperty('--px-transform-origin', `${originX}px ${originY}px`);\n }\n }, [resolveSideOffset]);\n\n // ── JS Fallback Mode: updatePlacement ──\n\n const updatePlacementJS = React.useCallback(() => {\n const p = propsRef.current;\n const anchor = p.anchor;\n const content = p.content;\n\n if (!anchor || !content) return;\n\n const boundary = getBoundaryRect(p.boundary);\n const anchorDomRect = anchor.getBoundingClientRect();\n const anchorRect: Rect = { x: anchorDomRect.left, y: anchorDomRect.top, width: anchorDomRect.width, height: anchorDomRect.height };\n const contentWidth = content.offsetWidth;\n const contentHeight = content.offsetHeight;\n const side = p.side as SideType;\n const align = p.align as AlignType;\n const sideOffset = resolveSideOffset();\n const alignOffset = p.alignOffset ?? 0;\n\n // hideWhenDetached\n if (p.hideWhenDetached && isAnchorDetached(anchorRect, boundary)) {\n content.style.visibility = 'hidden';\n\n return;\n } else {\n content.style.visibility = '';\n }\n\n // Flip\n let resolvedSide = side;\n\n if (p.flip) {\n resolvedSide = getFlippedSide(anchorRect, contentWidth, contentHeight, side, sideOffset, boundary);\n }\n\n // Compute coords\n let { x, y } = computeCoordsFromPlacement(anchorRect, contentWidth, contentHeight, resolvedSide, align, sideOffset, alignOffset);\n\n // Shift\n let resolvedAlign = align;\n\n if (p.shift) {\n const shifted = shiftCoords(x, y, contentWidth, contentHeight, resolvedSide, boundary);\n\n x = shifted.x;\n y = shifted.y;\n resolvedAlign = deriveAlignFromCoords(x, y, anchorRect, contentWidth, contentHeight, resolvedSide);\n }\n\n // Convert to offsetParent-relative coords for absolute strategy\n if (p.strategy === 'absolute') {\n const offsetParent = (content.offsetParent as HTMLElement) || document.documentElement;\n const parentRect = offsetParent.getBoundingClientRect();\n\n x = x - parentRect.left + offsetParent.scrollLeft;\n y = y - parentRect.top + offsetParent.scrollTop;\n }\n\n // Available space\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n const isVertical = resolvedSide === 'top' || resolvedSide === 'bottom';\n const availableHeight = isVertical ? (resolvedSide === 'bottom' ? viewportHeight - (anchorRect.y + anchorRect.height + sideOffset) : anchorRect.y - sideOffset) : viewportHeight;\n const availableWidth = isVertical ? viewportWidth : resolvedSide === 'right' ? viewportWidth - (anchorRect.x + anchorRect.width + sideOffset) : anchorRect.x - sideOffset;\n\n content.style.setProperty('--px-available-height', `${Math.max(0, availableHeight)}px`);\n content.style.setProperty('--px-available-width', `${Math.max(0, availableWidth)}px`);\n\n // Apply position\n content.style.top = `${y}px`;\n content.style.left = `${x}px`;\n\n // Update data attributes\n if (content.dataset.side !== resolvedSide) content.dataset.side = resolvedSide;\n\n if (content.dataset.align !== resolvedAlign) content.dataset.align = resolvedAlign;\n\n const arrow = p.arrow;\n\n if (arrow) {\n if (arrow.dataset.side !== resolvedSide) arrow.dataset.side = resolvedSide;\n\n if (arrow.dataset.align !== resolvedAlign) arrow.dataset.align = resolvedAlign;\n }\n\n setActualSide((prev) => (prev === resolvedSide ? prev : resolvedSide));\n setActualAlign((prev) => (prev === resolvedAlign ? prev : resolvedAlign));\n\n if (arrow) {\n const computed = window.getComputedStyle(arrow);\n const cssArrowSize = parseFloat(computed.width || '0') || parseFloat(computed.height || '0') || 0;\n const arrowSize = Math.max(arrow.offsetWidth, arrow.offsetHeight, cssArrowSize);\n const arrowPos = computeArrowPosition(anchorRect, x, y, contentWidth, contentHeight, arrowSize, resolvedSide);\n\n content.style.setProperty('--px-placer-arrow-x', `${arrowPos.arrowX}px`);\n content.style.setProperty('--px-placer-arrow-y', `${arrowPos.arrowY}px`);\n content.style.setProperty('--px-placer-arrow-left', `${arrowPos.arrowLeft}px`);\n content.style.setProperty('--px-placer-arrow-top', `${arrowPos.arrowTop}px`);\n\n const transformOrigin = computeTransformOrigin(resolvedSide, arrowPos.arrowX, arrowPos.arrowY, contentWidth, contentHeight, arrowSize, true);\n\n content.style.setProperty('--px-transform-origin', transformOrigin);\n } else {\n const anchorCenterX = anchorRect.x + anchorRect.width / 2;\n const anchorCenterY = anchorRect.y + anchorRect.height / 2;\n const originX = anchorCenterX - x;\n const originY = anchorCenterY - y;\n\n content.style.removeProperty('--px-placer-arrow-x');\n content.style.removeProperty('--px-placer-arrow-y');\n content.style.removeProperty('--px-placer-arrow-left');\n content.style.removeProperty('--px-placer-arrow-top');\n content.style.setProperty('--px-transform-origin', `${originX}px ${originY}px`);\n }\n }, [resolveSideOffset]);\n\n // ── Unified updatePlacement (stable - reads from ref) ──\n\n const updatePlacement = React.useCallback(() => {\n const p = propsRef.current;\n const anchor = p.anchor;\n const content = p.content;\n\n if (!anchor || !content) return;\n\n const anchorWidth = anchor.getBoundingClientRect().width;\n\n content.style.setProperty('--px-positioner-anchor-width', `${anchorWidth}px`);\n\n if (isCssAnchorSupported()) {\n updatePlacementCSS();\n } else {\n updatePlacementJS();\n }\n }, [updatePlacementCSS, updatePlacementJS]);\n\n // Keep a stable ref for updatePlacement so listener effects don't re-run\n const updatePlacementRef = React.useRef(updatePlacement);\n\n updatePlacementRef.current = updatePlacement;\n\n // ── Effect: Initial style setup (branched by mode) ──\n\n React.useEffect(() => {\n const anchor = props.anchor;\n const content = props.content;\n\n if (!anchor || !content) return;\n\n const position = props.strategy ?? 'fixed';\n\n if (isCssAnchorSupported()) {\n Object.assign(content.style, {\n position,\n positionAnchor: anchorName,\n anchorName: contentAnchor,\n ...(computePosition() as React.CSSProperties | undefined),\n ['--px-transform-origin' as keyof React.CSSProperties]: getTransformOrigin()\n });\n\n Object.assign(anchor.style, {\n anchorName\n });\n } else {\n Object.assign(content.style, {\n position,\n top: '0',\n left: '0',\n margin: '0'\n });\n }\n\n return () => {\n // Reset positioning styles\n content.style.position = '';\n content.style.top = '';\n content.style.left = '';\n content.style.right = '';\n content.style.bottom = '';\n content.style.margin = '';\n content.style.visibility = '';\n\n // Clear CSS custom properties\n ['--px-transform-origin', '--px-positioner-anchor-width', '--px-available-height', '--px-available-width', '--px-placer-arrow-x', '--px-placer-arrow-y', '--px-placer-arrow-left', '--px-placer-arrow-top'].forEach((prop) =>\n content.style.removeProperty(prop)\n );\n\n // Clear CSS Anchor properties\n if (isCssAnchorSupported()) {\n ['position-anchor', 'anchor-name', 'position-area', 'position-try-fallbacks', 'position-visibility'].forEach((prop) => content.style.removeProperty(prop));\n content.style.marginTop = '';\n content.style.marginRight = '';\n content.style.marginBottom = '';\n content.style.marginLeft = '';\n anchor.style.removeProperty('anchor-name');\n }\n };\n }, [props.anchor, props.content, props.strategy, props.side, props.align, props.sideOffset, props.alignOffset, props.flip, props.shift, props.hideWhenDetached]);\n\n // ── Effect: ZIndex management ──\n\n React.useEffect(() => {\n if (!props.content) return;\n\n if (props.autoZIndex) {\n ZIndex.set('overlay', props.content, (props.baseZIndex ?? 0) + ($primereact.config?.zIndex?.overlay ?? 1000));\n }\n\n return () => {\n if (props.autoZIndex && props.content) {\n ZIndex.clear(props.content);\n }\n };\n }, [props.content, props.autoZIndex, props.baseZIndex, $primereact.config?.zIndex?.overlay]);\n\n // ── Effect: Scroll/Resize listeners (stable - uses ref) ──\n\n React.useLayoutEffect(() => {\n if (!props.anchor || !props.content) return;\n\n let scheduleRafId = 0;\n let tickRafId = 0;\n let rafScheduled = false;\n let disposed = false;\n\n const scheduleUpdate = () => {\n if (rafScheduled || disposed) return;\n\n rafScheduled = true;\n scheduleRafId = requestAnimationFrame(() => {\n rafScheduled = false;\n\n if (!disposed) {\n updatePlacementRef.current();\n }\n });\n };\n\n // ResizeObserver for both anchor and content\n const resizeObserver = new ResizeObserver(scheduleUpdate);\n\n if (props.anchor instanceof Element) resizeObserver.observe(props.anchor);\n\n if (props.content instanceof Element) resizeObserver.observe(props.content);\n\n // Window resize (passive)\n window.addEventListener('resize', scheduleUpdate, { passive: true });\n\n // Scroll listeners\n let scrollParents: Element[] | null = null;\n\n if (isCssAnchorSupported()) {\n // CSS mode: capture-phase scroll on window\n window.addEventListener('scroll', scheduleUpdate, { capture: true, passive: true });\n } else {\n // JS mode: targeted scroll parents only\n scrollParents = getScrollableParents(props.anchor);\n\n for (const parent of scrollParents) {\n parent.addEventListener('scroll', scheduleUpdate, { passive: true });\n }\n }\n\n // Initial placement frames\n const maxFrames = isCssAnchorSupported() ? 5 : 3;\n let frame = 0;\n\n const tick = () => {\n if (disposed) return;\n\n updatePlacementRef.current();\n frame += 1;\n\n if (frame < maxFrames) {\n tickRafId = requestAnimationFrame(tick);\n }\n };\n\n tickRafId = requestAnimationFrame(tick);\n\n return () => {\n disposed = true;\n\n window.removeEventListener('resize', scheduleUpdate);\n\n if (isCssAnchorSupported()) {\n window.removeEventListener('scroll', scheduleUpdate, { capture: true } as EventListenerOptions);\n } else if (scrollParents) {\n for (const parent of scrollParents) {\n parent.removeEventListener('scroll', scheduleUpdate);\n }\n }\n\n resizeObserver.disconnect();\n cancelAnimationFrame(scheduleRafId);\n cancelAnimationFrame(tickRafId);\n };\n }, [props.anchor, props.content]);\n\n // ── Effect: trigger update on prop changes ──\n\n React.useEffect(() => {\n if (!props.anchor || !props.content) return;\n\n updatePlacementRef.current();\n }, [props.anchor, props.content, props.arrow, props.side, props.align, props.sideOffset, props.alignOffset, props.flip, props.shift, props.hideWhenDetached, props.boundary, props.strategy]);\n\n // ── Effect: onPlacementChange callback ──\n\n const onPlacementChangeRef = React.useRef(props.onPlacementChange);\n\n onPlacementChangeRef.current = props.onPlacementChange;\n\n React.useEffect(() => {\n if (actualSide !== undefined && actualAlign !== undefined) {\n onPlacementChangeRef.current?.({ side: actualSide, align: actualAlign });\n }\n }, [actualSide, actualAlign]);\n\n const state = {\n actualSide,\n actualAlign\n };\n\n return {\n state,\n getTransformOrigin,\n computePosition,\n updatePlacement\n };\n }\n});\n","import { AlignType, SideType } from '@primereact/types/headless/positioner';\n\n// ── CSS Anchor Mode: Detect actual placement from rendered rects ──\n\nexport function getPlacementFromRects(triggerRect: DOMRect, contentRect: DOMRect): { side: SideType; align: AlignType } {\n const triggerCenterX = triggerRect.left + triggerRect.width / 2;\n const triggerCenterY = triggerRect.top + triggerRect.height / 2;\n const contentCenterX = contentRect.left + contentRect.width / 2;\n const contentCenterY = contentRect.top + contentRect.height / 2;\n const dx = contentCenterX - triggerCenterX;\n const dy = contentCenterY - triggerCenterY;\n\n const separations: Record<SideType, number> = {\n top: triggerRect.top - contentRect.bottom,\n bottom: contentRect.top - triggerRect.bottom,\n left: triggerRect.left - contentRect.right,\n right: contentRect.left - triggerRect.right\n };\n\n const separated = (Object.entries(separations) as Array<[SideType, number]>).filter(([, value]) => value >= 0);\n const side: SideType = separated.length > 0 ? separated.sort((a, b) => a[1] - b[1])[0][0] : Math.abs(dx) > Math.abs(dy) ? (dx > 0 ? 'right' : 'left') : dy > 0 ? 'bottom' : 'top';\n const epsilon = 4;\n let align: AlignType = 'center';\n\n if (side === 'top' || side === 'bottom') {\n if (Math.abs(contentRect.left - triggerRect.left) <= epsilon) align = 'start';\n else if (Math.abs(contentRect.right - triggerRect.right) <= epsilon) align = 'end';\n } else {\n if (Math.abs(contentRect.top - triggerRect.top) <= epsilon) align = 'start';\n else if (Math.abs(contentRect.bottom - triggerRect.bottom) <= epsilon) align = 'end';\n }\n\n return { side, align };\n}\n\n// ── CSS Anchor Mode: Generate CSS Anchor positioning styles ──\n\nexport type CSSPositionStyle = Record<string, string | undefined>;\n\nexport function computeCSSPosition(side?: SideType, align?: AlignType, sideOffset?: number, alignOffset?: number, flip?: boolean, shift?: boolean, hideWhenDetached?: boolean): CSSPositionStyle {\n const style: Record<string, string> = {\n left: '',\n right: '',\n top: '',\n bottom: '',\n marginTop: '',\n marginRight: '',\n marginBottom: '',\n marginLeft: '',\n positionTryFallbacks: ''\n };\n\n style.positionArea = side ?? '';\n\n const sideMarginMap: Record<SideType, string> = {\n top: 'marginBottom',\n bottom: 'marginTop',\n left: 'marginRight',\n right: 'marginLeft'\n };\n\n if (sideOffset) {\n style[sideMarginMap[side as SideType]] = `${sideOffset}px`;\n }\n\n if (align !== 'center') {\n const isVertical = side === 'top' || side === 'bottom';\n\n if (isVertical) {\n if (align === 'start') {\n style.left = `calc(anchor(start) + ${alignOffset}px)`;\n } else {\n style.right = `calc(anchor(end) - ${alignOffset}px)`;\n }\n } else {\n if (align === 'start') {\n style.top = `calc(anchor(start) + ${alignOffset}px)`;\n } else {\n style.bottom = `calc(anchor(end) - ${alignOffset}px)`;\n }\n }\n }\n\n if (flip || shift) {\n style.positionTryFallbacks = 'flip-block, flip-inline, flip-block flip-inline';\n }\n\n if (hideWhenDetached) {\n style.positionVisibility = 'anchors-visible';\n } else {\n style.positionVisibility = 'always';\n }\n\n return style;\n}\n","import { SideType } from '@primereact/types/headless/positioner';\nimport { isCssSupported } from '@primeuix/utils';\n\n// ── Feature Detection (lazy, cached — SSR-safe) ──\n\nlet _cssAnchorSupported: boolean | null = null;\n\nexport function isCssAnchorSupported(): boolean {\n if (_cssAnchorSupported === null) {\n _cssAnchorSupported = isCssSupported('anchor-name', '--a');\n }\n\n return _cssAnchorSupported;\n}\n\n// ── Shared Types ──\n\nexport interface Rect {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nexport interface ComputedCoords {\n x: number;\n y: number;\n}\n\n// ── Shared Utilities ──\n\nexport function clamp(value: number, min: number, max: number) {\n return Math.min(Math.max(value, min), max);\n}\n\nexport function getBoundaryRect(boundary?: HTMLElement | null): Rect {\n if (boundary) {\n const rect = boundary.getBoundingClientRect();\n\n return { x: rect.left, y: rect.top, width: rect.width, height: rect.height };\n }\n\n return { x: 0, y: 0, width: window.innerWidth, height: window.innerHeight };\n}\n\nexport function getLayoutRect(element: HTMLElement, rect: DOMRect) {\n const layoutWidth = element.offsetWidth || rect.width;\n const layoutHeight = element.offsetHeight || rect.height;\n\n if (!layoutWidth || !layoutHeight) {\n return rect;\n }\n\n const scaleX = rect.width / layoutWidth || 1;\n const scaleY = rect.height / layoutHeight || 1;\n const left = rect.left - (layoutWidth * scaleX - layoutWidth) / 2;\n const top = rect.top - (layoutHeight * scaleY - layoutHeight) / 2;\n\n return {\n left,\n top,\n width: layoutWidth,\n height: layoutHeight\n };\n}\n\n// ── Transform Origin (shared by both modes) ──\n\nexport function computeTransformOrigin(side: SideType, arrowX: number, arrowY: number, contentWidth: number, contentHeight: number, arrowSize: number, hasArrow: boolean): string {\n const arrowTip = arrowSize / 2;\n\n if (hasArrow) {\n if (side === 'top') {\n return `${arrowX}px calc(${contentHeight}px + ${arrowTip}px)`;\n }\n\n if (side === 'bottom') {\n return `${arrowX}px calc(0px - ${arrowTip}px)`;\n }\n\n if (side === 'left') {\n return `calc(${contentWidth}px + ${arrowTip}px) ${arrowY}px`;\n }\n\n return `calc(0px - ${arrowTip}px) ${arrowY}px`;\n }\n\n return `${arrowX}px ${arrowY}px`;\n}\n","import { AlignType, SideType } from '@primereact/types/headless/positioner';\nimport { ComputedCoords, Rect, clamp } from './usePositioner.utils';\n\n// ── Opposite Side Map ──\n\nconst OPPOSITE_SIDE: Record<SideType, SideType> = {\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left'\n};\n\n// ── Compute Initial Coords ──\n\nexport function computeCoordsFromPlacement(anchorRect: Rect, contentWidth: number, contentHeight: number, side: SideType, align: AlignType, sideOffset: number, alignOffset: number): ComputedCoords {\n let x = 0;\n let y = 0;\n const isVertical = side === 'top' || side === 'bottom';\n\n // Primary axis (side)\n if (side === 'top') {\n y = anchorRect.y - contentHeight - sideOffset;\n } else if (side === 'bottom') {\n y = anchorRect.y + anchorRect.height + sideOffset;\n } else if (side === 'left') {\n x = anchorRect.x - contentWidth - sideOffset;\n } else {\n x = anchorRect.x + anchorRect.width + sideOffset;\n }\n\n // Cross axis (align)\n if (isVertical) {\n if (align === 'start') {\n x = anchorRect.x + alignOffset;\n } else if (align === 'end') {\n x = anchorRect.x + anchorRect.width - contentWidth - alignOffset;\n } else {\n x = anchorRect.x + (anchorRect.width - contentWidth) / 2;\n }\n } else {\n if (align === 'start') {\n y = anchorRect.y + alignOffset;\n } else if (align === 'end') {\n y = anchorRect.y + anchorRect.height - contentHeight - alignOffset;\n } else {\n y = anchorRect.y + (anchorRect.height - contentHeight) / 2;\n }\n }\n\n return { x, y };\n}\n\n// ── Flip Side ──\n\nexport function getFlippedSide(anchorRect: Rect, contentWidth: number, contentHeight: number, side: SideType, sideOffset: number, boundary: Rect): SideType {\n const opposite = OPPOSITE_SIDE[side];\n\n const spaceMap: Record<SideType, number> = {\n top: anchorRect.y - boundary.y - sideOffset,\n bottom: boundary.y + boundary.height - (anchorRect.y + anchorRect.height) - sideOffset,\n left: anchorRect.x - boundary.x - sideOffset,\n right: boundary.x + boundary.width - (anchorRect.x + anchorRect.width) - sideOffset\n };\n\n const neededSize = side === 'top' || side === 'bottom' ? contentHeight : contentWidth;\n\n // Preferred side has enough space\n if (spaceMap[side] >= neededSize) return side;\n\n // Opposite side has enough space\n if (spaceMap[opposite] >= neededSize) return opposite;\n\n // Pick side with most available space\n if (spaceMap[opposite] > spaceMap[side]) return opposite;\n\n return side;\n}\n\n// ── Shift Coords ──\n\nconst VIEWPORT_PADDING = 5;\n\nexport function shiftCoords(x: number, y: number, contentWidth: number, contentHeight: number, side: SideType, boundary: Rect, padding: number = VIEWPORT_PADDING): ComputedCoords {\n const isVertical = side === 'top' || side === 'bottom';\n\n if (isVertical) {\n // Clamp horizontal (cross axis)\n x = clamp(x, boundary.x + padding, boundary.x + boundary.width - contentWidth - padding);\n } else {\n // Clamp vertical (cross axis)\n y = clamp(y, boundary.y + padding, boundary.y + boundary.height - contentHeight - padding);\n }\n\n return { x, y };\n}\n\n// ── Arrow Position ──\n\nexport function computeArrowPosition(anchorRect: Rect, contentX: number, contentY: number, contentWidth: number, contentHeight: number, arrowSize: number, side: SideType): { arrowX: number; arrowY: number; arrowLeft: number; arrowTop: number } {\n const arrowHalf = arrowSize / 2;\n const arrowInset = Math.max(8, arrowHalf);\n const isVertical = side === 'top' || side === 'bottom';\n\n const anchorCenterX = anchorRect.x + anchorRect.width / 2;\n const anchorCenterY = anchorRect.y + anchorRect.height / 2;\n\n let arrowX: number;\n let arrowY: number;\n\n if (isVertical) {\n arrowX = clamp(anchorCenterX - contentX, arrowInset, contentWidth - arrowInset);\n arrowY = side === 'bottom' ? 0 : contentHeight;\n } else {\n arrowX = side === 'right' ? 0 : contentWidth;\n arrowY = clamp(anchorCenterY - contentY, arrowInset, contentHeight - arrowInset);\n }\n\n return {\n arrowX,\n arrowY,\n arrowLeft: arrowX - arrowHalf,\n arrowTop: arrowY - arrowHalf\n };\n}\n\n// ── Anchor Detached Check ──\n\nexport function isAnchorDetached(anchorRect: Rect, boundary: Rect): boolean {\n return anchorRect.x + anchorRect.width <= boundary.x || anchorRect.y + anchorRect.height <= boundary.y || anchorRect.x >= boundary.x + boundary.width || anchorRect.y >= boundary.y + boundary.height;\n}\n\n// ── Derive Align from Final Coords ──\n\nexport function deriveAlignFromCoords(x: number, y: number, anchorRect: Rect, contentWidth: number, contentHeight: number, side: SideType): AlignType {\n const epsilon = 4;\n const isVertical = side === 'top' || side === 'bottom';\n\n if (isVertical) {\n if (Math.abs(x - anchorRect.x) <= epsilon) {\n return 'start';\n }\n\n if (Math.abs(x + contentWidth - (anchorRect.x + anchorRect.width)) <= epsilon) {\n return 'end';\n }\n } else {\n if (Math.abs(y - anchorRect.y) <= epsilon) {\n return 'start';\n }\n\n if (Math.abs(y + contentHeight - (anchorRect.y + anchorRect.height)) <= epsilon) {\n return 'end';\n }\n }\n\n return 'center';\n}\n","import type { UsePositionerProps } from '@primereact/types/headless/positioner';\n\nexport const defaultProps: UsePositionerProps = {\n side: 'bottom',\n align: 'center',\n sideOffset: undefined,\n alignOffset: 0,\n flip: true,\n shift: true,\n hideWhenDetached: false,\n strategy: 'fixed',\n boundary: undefined,\n anchor: undefined,\n content: undefined,\n arrow: undefined,\n autoZIndex: true,\n baseZIndex: 0,\n onPlacementChange: undefined\n};\n"],"mappings":"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","names":["withHeadless","getScrollableParents","ZIndex","React","getPlacementFromRects","triggerRect","contentRect","triggerCenterX","triggerCenterY","contentCenterX","contentCenterY","dx","dy","separations","separated","value","side","a","b","epsilon","align","computeCSSPosition","sideOffset","alignOffset","flip","shift","hideWhenDetached","style","sideMarginMap","isCssSupported","_cssAnchorSupported","isCssAnchorSupported","clamp","value","min","max","getBoundaryRect","boundary","rect","getLayoutRect","element","layoutWidth","layoutHeight","scaleX","scaleY","left","top","computeTransformOrigin","side","arrowX","arrowY","contentWidth","contentHeight","arrowSize","hasArrow","arrowTip","OPPOSITE_SIDE","computeCoordsFromPlacement","anchorRect","contentWidth","contentHeight","side","align","sideOffset","alignOffset","x","y","isVertical","getFlippedSide","boundary","opposite","spaceMap","neededSize","VIEWPORT_PADDING","shiftCoords","padding","clamp","computeArrowPosition","contentX","contentY","arrowSize","arrowHalf","arrowInset","anchorCenterX","anchorCenterY","arrowX","arrowY","isAnchorDetached","deriveAlignFromCoords","defaultProps","usePositioner","withHeadless","defaultProps","id","props","$primereact","_a","_b","actualSide","setActualSide","actualAlign","setActualAlign","anchorName","contentAnchor","propsRef","actualSideRef","getArrowOffset","p","arrow","computed","side","size","borderTop","resolveSideOffset","prevSideRef","prevAlignRef","getTransformOrigin","originSide","originAlign","isVertical","primary","secondary","computePosition","isCssAnchorSupported","computeCSSPosition","updatePlacementCSS","trigger","content","triggerRect","contentRect","positionerLayout","getLayoutRect","nextSide","nextAlign","getPlacementFromRects","prev","sOffset","viewportWidth","viewportHeight","availableHeight","availableWidth","triggerCenterX","triggerCenterY","cssArrowSize","arrowSize","arrowHalf","arrowInset","arrowX","clamp","arrowY","arrowLeft","arrowTop","transformOrigin","computeTransformOrigin","originX","originY","updatePlacementJS","anchor","boundary","getBoundaryRect","anchorDomRect","anchorRect","contentWidth","contentHeight","align","sideOffset","alignOffset","isAnchorDetached","resolvedSide","getFlippedSide","x","y","computeCoordsFromPlacement","resolvedAlign","shifted","shiftCoords","deriveAlignFromCoords","offsetParent","parentRect","arrowPos","computeArrowPosition","anchorCenterX","anchorCenterY","updatePlacement","anchorWidth","updatePlacementRef","position","__spreadProps","__spreadValues","prop","_c","_d","ZIndex","scheduleRafId","tickRafId","rafScheduled","disposed","scheduleUpdate","resizeObserver","scrollParents","getScrollableParents","parent","maxFrames","frame","tick","onPlacementChangeRef"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { AlignType, SideType } from '@primereact/types/headless/positioner';
|
|
2
|
+
export declare function getPlacementFromRects(triggerRect: DOMRect, contentRect: DOMRect): {
|
|
3
|
+
side: SideType;
|
|
4
|
+
align: AlignType;
|
|
5
|
+
};
|
|
6
|
+
export type CSSPositionStyle = Record<string, string | undefined>;
|
|
7
|
+
export declare function computeCSSPosition(side?: SideType, align?: AlignType, sideOffset?: number, alignOffset?: number, flip?: boolean, shift?: boolean, hideWhenDetached?: boolean): CSSPositionStyle;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AlignType, SideType } from '@primereact/types/headless/positioner';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
export declare const usePositioner: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/headless/positioner").UsePositionerProps, unknown, {
|
|
4
|
+
state: {
|
|
5
|
+
actualSide: SideType | undefined;
|
|
6
|
+
actualAlign: AlignType | undefined;
|
|
7
|
+
};
|
|
8
|
+
getTransformOrigin: () => string;
|
|
9
|
+
computePosition: () => React.CSSProperties;
|
|
10
|
+
updatePlacement: () => void;
|
|
11
|
+
}>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AlignType, SideType } from '@primereact/types/headless/positioner';
|
|
2
|
+
import { ComputedCoords, Rect } from './usePositioner.utils';
|
|
3
|
+
export declare function computeCoordsFromPlacement(anchorRect: Rect, contentWidth: number, contentHeight: number, side: SideType, align: AlignType, sideOffset: number, alignOffset: number): ComputedCoords;
|
|
4
|
+
export declare function getFlippedSide(anchorRect: Rect, contentWidth: number, contentHeight: number, side: SideType, sideOffset: number, boundary: Rect): SideType;
|
|
5
|
+
export declare function shiftCoords(x: number, y: number, contentWidth: number, contentHeight: number, side: SideType, boundary: Rect, padding?: number): ComputedCoords;
|
|
6
|
+
export declare function computeArrowPosition(anchorRect: Rect, contentX: number, contentY: number, contentWidth: number, contentHeight: number, arrowSize: number, side: SideType): {
|
|
7
|
+
arrowX: number;
|
|
8
|
+
arrowY: number;
|
|
9
|
+
arrowLeft: number;
|
|
10
|
+
arrowTop: number;
|
|
11
|
+
};
|
|
12
|
+
export declare function isAnchorDetached(anchorRect: Rect, boundary: Rect): boolean;
|
|
13
|
+
export declare function deriveAlignFromCoords(x: number, y: number, anchorRect: Rect, contentWidth: number, contentHeight: number, side: SideType): AlignType;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { SideType } from '@primereact/types/headless/positioner';
|
|
2
|
+
export declare function isCssAnchorSupported(): boolean;
|
|
3
|
+
export interface Rect {
|
|
4
|
+
x: number;
|
|
5
|
+
y: number;
|
|
6
|
+
width: number;
|
|
7
|
+
height: number;
|
|
8
|
+
}
|
|
9
|
+
export interface ComputedCoords {
|
|
10
|
+
x: number;
|
|
11
|
+
y: number;
|
|
12
|
+
}
|
|
13
|
+
export declare function clamp(value: number, min: number, max: number): number;
|
|
14
|
+
export declare function getBoundaryRect(boundary?: HTMLElement | null): Rect;
|
|
15
|
+
export declare function getLayoutRect(element: HTMLElement, rect: DOMRect): DOMRect | {
|
|
16
|
+
left: number;
|
|
17
|
+
top: number;
|
|
18
|
+
width: number;
|
|
19
|
+
height: number;
|
|
20
|
+
};
|
|
21
|
+
export declare function computeTransformOrigin(side: SideType, arrowX: number, arrowY: number, contentWidth: number, contentHeight: number, arrowSize: number, hasArrow: boolean): string;
|
package/progressbar/index.d.ts
CHANGED
package/progressbar/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{withHeadless as
|
|
1
|
+
import{withHeadless as P}from"@primereact/core/headless";import*as o from"react";var i={value:void 0,max:100,min:0,formatter:e=>new Intl.NumberFormat(void 0,{minimumFractionDigits:0,maximumFractionDigits:2}).format(e)+"%"};var w=P({name:"useProgressBar",defaultProps:i,setup({props:e}){var m,n;let d=a=>{var u,c;let r=(u=e.min)!=null?u:0,s=(c=e.max)!=null?c:100;if(r>=s)return console.error("[ProgressBar] min must be less than max."),0;let b=(Math.min(Math.max(a!=null?a:r,r),s)-r)/(s-r)*100;return Math.min(Math.max(b,0),100)},t=o.useMemo(()=>d(e.value),[e.value,e.min,e.max]),l=o.useMemo(()=>{var a;return(a=e.formatter)==null?void 0:a.call(e,t)},[t,e.formatter]),f={computedValue:t,formattedValue:l},x={"data-scope":"progressbar","data-part":"root"},g={"data-scope":"progressbar","data-part":"track",role:"progressbar","aria-valuemin":(m=e.min)!=null?m:0,"aria-valuenow":t,"aria-valuemax":(n=e.max)!=null?n:100};return{state:f,rootProps:x,trackProps:g}}});export{i as defaultProps,w as useProgressBar};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/progressbar/useProgressBar.ts","../../src/progressbar/useProgressBar.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport * as React from 'react';\nimport { defaultProps } from './useProgressBar.props';\n\nexport const useProgressBar = withHeadless({\n name: 'useProgressBar',\n defaultProps,\n setup({ props }) {\n // methods\n const handleProgressValue = (value: number | undefined): number => {\n const minValue = props.min ?? 0;\n const maxValue = props.max ?? 100;\n\n if (minValue >= maxValue) {\n // eslint-disable-next-line no-console\n console.error('[ProgressBar] min must be less than max.');\n\n return 0;\n }\n\n const clampedValue = Math.min(Math.max(value ?? minValue, minValue), maxValue);\n const newValue = ((clampedValue - minValue) / (maxValue - minValue)) * 100;\n const boundedValue = Math.min(Math.max(newValue, 0), 100);\n\n return boundedValue;\n };\n\n const computedValue = React.useMemo(() => {\n return handleProgressValue(props.value);\n }, [props.value, props.min, props.max]);\n\n const formattedValue = React.useMemo(() => {\n return props.formatter?.(computedValue);\n }, [computedValue, props.formatter]);\n\n const state = {\n computedValue,\n formattedValue\n };\n\n return {\n state\n };\n }\n});\n","import type {
|
|
1
|
+
{"version":3,"sources":["../../src/progressbar/useProgressBar.ts","../../src/progressbar/useProgressBar.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport * as React from 'react';\nimport { defaultProps } from './useProgressBar.props';\n\nexport const useProgressBar = withHeadless({\n name: 'useProgressBar',\n defaultProps,\n setup({ props }) {\n // methods\n const handleProgressValue = (value: number | undefined): number => {\n const minValue = props.min ?? 0;\n const maxValue = props.max ?? 100;\n\n if (minValue >= maxValue) {\n // eslint-disable-next-line no-console\n console.error('[ProgressBar] min must be less than max.');\n\n return 0;\n }\n\n const clampedValue = Math.min(Math.max(value ?? minValue, minValue), maxValue);\n const newValue = ((clampedValue - minValue) / (maxValue - minValue)) * 100;\n const boundedValue = Math.min(Math.max(newValue, 0), 100);\n\n return boundedValue;\n };\n\n const computedValue = React.useMemo(() => {\n return handleProgressValue(props.value);\n }, [props.value, props.min, props.max]);\n\n const formattedValue = React.useMemo(() => {\n return props.formatter?.(computedValue);\n }, [computedValue, props.formatter]);\n\n const state = {\n computedValue,\n formattedValue\n };\n\n // prop getters\n const rootProps = {\n 'data-scope': 'progressbar' as const,\n 'data-part': 'root' as const\n };\n\n const trackProps = {\n 'data-scope': 'progressbar' as const,\n 'data-part': 'track' as const,\n role: 'progressbar' as const,\n 'aria-valuemin': props.min ?? 0,\n 'aria-valuenow': computedValue,\n 'aria-valuemax': props.max ?? 100\n };\n\n return {\n state,\n // prop getters\n rootProps,\n trackProps\n };\n }\n});\n","import type { UseProgressBarProps } from '@primereact/types/headless/progressbar';\n\nexport const defaultProps: UseProgressBarProps = {\n value: undefined,\n max: 100,\n min: 0,\n formatter: (value: number) =>\n new Intl.NumberFormat(undefined, {\n minimumFractionDigits: 0,\n maximumFractionDigits: 2\n }).format(value) + '%'\n};\n"],"mappings":"AAAA,OAAS,gBAAAA,MAAoB,4BAC7B,UAAYC,MAAW,QCChB,IAAMC,EAAoC,CAC7C,MAAO,OACP,IAAK,IACL,IAAK,EACL,UAAYC,GACR,IAAI,KAAK,aAAa,OAAW,CAC7B,sBAAuB,EACvB,sBAAuB,CAC3B,CAAC,EAAE,OAAOA,CAAK,EAAI,GAC3B,EDPO,IAAMC,EAAiBC,EAAa,CACvC,KAAM,iBACN,aAAAC,EACA,MAAM,CAAE,MAAAC,CAAM,EAAG,CAPrB,IAAAC,EAAAC,EASQ,IAAMC,EAAuBC,GAAsC,CAT3E,IAAAH,EAAAC,EAUY,IAAMG,GAAWJ,EAAAD,EAAM,MAAN,KAAAC,EAAa,EACxBK,GAAWJ,EAAAF,EAAM,MAAN,KAAAE,EAAa,IAE9B,GAAIG,GAAYC,EAEZ,eAAQ,MAAM,0CAA0C,EAEjD,EAIX,IAAMC,GADe,KAAK,IAAI,KAAK,IAAIH,GAAA,KAAAA,EAASC,EAAUA,CAAQ,EAAGC,CAAQ,EAC3CD,IAAaC,EAAWD,GAAa,IAGvE,OAFqB,KAAK,IAAI,KAAK,IAAIE,EAAU,CAAC,EAAG,GAAG,CAG5D,EAEMC,EAAsB,UAAQ,IACzBL,EAAoBH,EAAM,KAAK,EACvC,CAACA,EAAM,MAAOA,EAAM,IAAKA,EAAM,GAAG,CAAC,EAEhCS,EAAuB,UAAQ,IAAM,CA/BnD,IAAAR,EAgCY,OAAOA,EAAAD,EAAM,YAAN,YAAAC,EAAA,KAAAD,EAAkBQ,EAC7B,EAAG,CAACA,EAAeR,EAAM,SAAS,CAAC,EAE7BU,EAAQ,CACV,cAAAF,EACA,eAAAC,CACJ,EAGME,EAAY,CACd,aAAc,cACd,YAAa,MACjB,EAEMC,EAAa,CACf,aAAc,cACd,YAAa,QACb,KAAM,cACN,iBAAiBX,EAAAD,EAAM,MAAN,KAAAC,EAAa,EAC9B,gBAAiBO,EACjB,iBAAiBN,EAAAF,EAAM,MAAN,KAAAE,EAAa,GAClC,EAEA,MAAO,CACH,MAAAQ,EAEA,UAAAC,EACA,WAAAC,CACJ,CACJ,CACJ,CAAC","names":["withHeadless","React","defaultProps","value","useProgressBar","withHeadless","defaultProps","props","_a","_b","handleProgressValue","value","minValue","maxValue","newValue","computedValue","formattedValue","state","rootProps","trackProps"]}
|
|
@@ -1,6 +1,18 @@
|
|
|
1
|
-
export declare const useProgressBar: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/
|
|
1
|
+
export declare const useProgressBar: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/headless/progressbar").UseProgressBarProps, unknown, {
|
|
2
2
|
state: {
|
|
3
3
|
computedValue: number;
|
|
4
4
|
formattedValue: string | undefined;
|
|
5
5
|
};
|
|
6
|
+
rootProps: {
|
|
7
|
+
'data-scope': "progressbar";
|
|
8
|
+
'data-part': "root";
|
|
9
|
+
};
|
|
10
|
+
trackProps: {
|
|
11
|
+
'data-scope': "progressbar";
|
|
12
|
+
'data-part': "track";
|
|
13
|
+
role: "progressbar";
|
|
14
|
+
'aria-valuemin': number;
|
|
15
|
+
'aria-valuenow': number;
|
|
16
|
+
'aria-valuemax': number;
|
|
17
|
+
};
|
|
6
18
|
}>;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare const defaultProps:
|
|
1
|
+
import type { UseProgressBarProps } from '@primereact/types/headless/progressbar';
|
|
2
|
+
export declare const defaultProps: UseProgressBarProps;
|