@servicetitan/anvil2 1.46.1 → 1.46.3
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/CHANGELOG.md +48 -0
- package/dist/{Alert-BNGvfMAV.js → Alert-CPOBY6O5.js} +2 -2
- package/dist/{Alert-BNGvfMAV.js.map → Alert-CPOBY6O5.js.map} +1 -1
- package/dist/Alert.js +1 -1
- package/dist/{Announcement-CoheCP1i.js → Announcement-BvzAEdx8.js} +2 -2
- package/dist/{Announcement-CoheCP1i.js.map → Announcement-BvzAEdx8.js.map} +1 -1
- package/dist/Announcement.js +1 -1
- package/dist/AnvilProvider-C_qRQnE6.js.map +1 -1
- package/dist/{Avatar-CyGjhToG.js → Avatar-3d5Kv2CF.js} +2 -2
- package/dist/{Avatar-CyGjhToG.js.map → Avatar-3d5Kv2CF.js.map} +1 -1
- package/dist/{Avatar-D07f9NH_.js → Avatar-DJ3oJNsv.js} +2 -2
- package/dist/{Avatar-D07f9NH_.js.map → Avatar-DJ3oJNsv.js.map} +1 -1
- package/dist/Avatar.js +2 -2
- package/dist/Badge-DCA9mfc2.js.map +1 -1
- package/dist/Breadcrumbs-C4_PEolS.js.map +1 -1
- package/dist/{Button-BxFXQ0-n.js → Button-VNQQgZ45.js} +2 -2
- package/dist/{Button-BxFXQ0-n.js.map → Button-VNQQgZ45.js.map} +1 -1
- package/dist/Button.css +48 -48
- package/dist/Button.js +1 -1
- package/dist/Button.module-C1g9rrJs.js +25 -0
- package/dist/Button.module-C1g9rrJs.js.map +1 -0
- package/dist/{ButtonCompound-BF2Q6gGX.js → ButtonCompound-BbPK-Xjj.js} +2 -2
- package/dist/{ButtonCompound-BF2Q6gGX.js.map → ButtonCompound-BbPK-Xjj.js.map} +1 -1
- package/dist/ButtonCompound.js +1 -1
- package/dist/{ButtonLink-CXv65WVV.js → ButtonLink-CqR1F5Wn.js} +3 -3
- package/dist/{ButtonLink-CXv65WVV.js.map → ButtonLink-CqR1F5Wn.js.map} +1 -1
- package/dist/ButtonLink.js +1 -1
- package/dist/{ButtonToggle-pSwg7NvT.js → ButtonToggle-PCeSG-5D.js} +3 -3
- package/dist/{ButtonToggle-pSwg7NvT.js.map → ButtonToggle-PCeSG-5D.js.map} +1 -1
- package/dist/ButtonToggle.js +1 -1
- package/dist/{Calendar-BQ5F2ENO.js → Calendar-Cn0fOgog.js} +366 -169
- package/dist/Calendar-Cn0fOgog.js.map +1 -0
- package/dist/Calendar.js +1 -1
- package/dist/Card-vTYeSkxt.js.map +1 -1
- package/dist/{Checkbox-Dl4KTwEJ.js → Checkbox-C5PX8wur.js} +2 -2
- package/dist/{Checkbox-Dl4KTwEJ.js.map → Checkbox-C5PX8wur.js.map} +1 -1
- package/dist/{Checkbox-DDrmVC-u.js → Checkbox-DAODkzN3.js} +2 -2
- package/dist/{Checkbox-DDrmVC-u.js.map → Checkbox-DAODkzN3.js.map} +1 -1
- package/dist/Checkbox.js +2 -2
- package/dist/{Chip-Bz-vlQ4D.js → Chip-DLU13qe-.js} +2 -2
- package/dist/{Chip-Bz-vlQ4D.js.map → Chip-DLU13qe-.js.map} +1 -1
- package/dist/Chip.js +1 -1
- package/dist/{Combobox-B9nesJuc.js → Combobox-DO8cIvRQ.js} +146 -55
- package/dist/Combobox-DO8cIvRQ.js.map +1 -0
- package/dist/Combobox.js +1 -1
- package/dist/{DateField-DXxPsRtf.js → DateField-qHdgwSlB.js} +36 -102
- package/dist/DateField-qHdgwSlB.js.map +1 -0
- package/dist/DateField.js +1 -1
- package/dist/{DateFieldRange-Xauviu1w.js → DateFieldRange-GNpWV70g.js} +57 -58
- package/dist/DateFieldRange-GNpWV70g.js.map +1 -0
- package/dist/DateFieldRange.js +1 -1
- package/dist/{DateFieldSingle-yLnwpVzd.js → DateFieldSingle-B9caNibj.js} +53 -55
- package/dist/DateFieldSingle-B9caNibj.js.map +1 -0
- package/dist/DateFieldSingle.js +1 -1
- package/dist/{DateFieldYearless-Ba7HiTiI.js → DateFieldYearless-BmeKGaDc.js} +4 -4
- package/dist/{DateFieldYearless-Ba7HiTiI.js.map → DateFieldYearless-BmeKGaDc.js.map} +1 -1
- package/dist/DateFieldYearless.js +1 -1
- package/dist/{DaysOfTheWeek-BYSYZySH.js → DaysOfTheWeek-DPH13VCK.js} +4 -4
- package/dist/{DaysOfTheWeek-BYSYZySH.js.map → DaysOfTheWeek-DPH13VCK.js.map} +1 -1
- package/dist/DaysOfTheWeek.js +1 -1
- package/dist/Details-CF8DImjw.js.map +1 -1
- package/dist/{Dialog-CgkrvrQu.js → Dialog-BHFLnFNQ.js} +7 -7
- package/dist/{Dialog-CgkrvrQu.js.map → Dialog-BHFLnFNQ.js.map} +1 -1
- package/dist/Dialog.js +1 -1
- package/dist/Divider-DJe8kLf2.js.map +1 -1
- package/dist/Dnd.js +1 -1
- package/dist/DndSort.js +2 -2
- package/dist/DndSort.js.map +1 -1
- package/dist/{Drawer-CM4ZbAro.js → Drawer-BDA7Sjj9.js} +7 -7
- package/dist/{Drawer-CM4ZbAro.js.map → Drawer-BDA7Sjj9.js.map} +1 -1
- package/dist/Drawer.js +1 -1
- package/dist/{DrawerContext-DboTgTmo.js → DrawerContext-D4tWTLVf.js} +27 -10
- package/dist/DrawerContext-D4tWTLVf.js.map +1 -0
- package/dist/{EditCard-WKzZ2XCz.js → EditCard-CZzL0nx7.js} +2 -2
- package/dist/{EditCard-WKzZ2XCz.js.map → EditCard-CZzL0nx7.js.map} +1 -1
- package/dist/EditCard.js +1 -1
- package/dist/{FieldLabel-BsbTTyom.js → FieldLabel-Bgl3iu13.js} +2 -2
- package/dist/{FieldLabel-BsbTTyom.js.map → FieldLabel-Bgl3iu13.js.map} +1 -1
- package/dist/FieldLabel.js +1 -1
- package/dist/FieldMessage-B7uQ8vmr.js.map +1 -1
- package/dist/Flex-BdQMekvA.js.map +1 -1
- package/dist/Grid-MGUC698u.js.map +1 -1
- package/dist/Helper-BkIDJqgA.js.map +1 -1
- package/dist/Icon-D8SPKeO4.js.map +1 -1
- package/dist/{InputMask-_F139qFu.js → InputMask-B13KumrK.js} +3 -3
- package/dist/{InputMask-_F139qFu.js.map → InputMask-B13KumrK.js.map} +1 -1
- package/dist/InputMask.js +1 -1
- package/dist/Layout-CUUb2PVr.js.map +1 -1
- package/dist/Link-eRsLWPaQ.js.map +1 -1
- package/dist/LinkButton-2lXfrVoU.js.map +1 -1
- package/dist/{ListView-pb3rIcze.js → ListView-C-cVQZHp.js} +3 -3
- package/dist/{ListView-pb3rIcze.js.map → ListView-C-cVQZHp.js.map} +1 -1
- package/dist/ListView.js +1 -1
- package/dist/{Listbox-CUhMbFm2.js → Listbox-DxGx630W.js} +2 -2
- package/dist/{Listbox-CUhMbFm2.js.map → Listbox-DxGx630W.js.map} +1 -1
- package/dist/Listbox.js +1 -1
- package/dist/LocalizationContext-UsmB5mnR.js.map +1 -1
- package/dist/LocalizationProvider-DEZyjW5d.js.map +1 -1
- package/dist/{Menu-DEVZz9xZ.js → Menu-DUZqzpwg.js} +8 -10
- package/dist/Menu-DUZqzpwg.js.map +1 -0
- package/dist/Menu.js +1 -1
- package/dist/{NumberField-CkZZrkYC.js → NumberField-DWPAy1eG.js} +11 -11
- package/dist/{NumberField-CkZZrkYC.js.map → NumberField-DWPAy1eG.js.map} +1 -1
- package/dist/NumberField.css +9 -6
- package/dist/NumberField.js +1 -1
- package/dist/Overflow.js.map +1 -1
- package/dist/{Page-BMDkbDcU.js → Page-BfH2mGSt.js} +11 -11
- package/dist/Page-BfH2mGSt.js.map +1 -0
- package/dist/Page.js +1 -1
- package/dist/{Pagination-BJsCppgW.js → Pagination-B_G9QcHf.js} +48 -24
- package/dist/Pagination-B_G9QcHf.js.map +1 -0
- package/dist/Pagination.css +6 -6
- package/dist/Pagination.js +1 -1
- package/dist/{Popover-r26xMIfm.js → Popover-v8R920kj.js} +137 -196
- package/dist/Popover-v8R920kj.js.map +1 -0
- package/dist/Popover.js +1 -1
- package/dist/PortalProvider-9lXkQ0xY.js.map +1 -1
- package/dist/{ProgressBar-DXcXZEJ2.js → ProgressBar-BWN2yv1s.js} +2 -2
- package/dist/{ProgressBar-DXcXZEJ2.js.map → ProgressBar-BWN2yv1s.js.map} +1 -1
- package/dist/ProgressBar.js +1 -1
- package/dist/{Radio-C89VCMXd.js → Radio-C5riI-do.js} +2 -2
- package/dist/{Radio-C89VCMXd.js.map → Radio-C5riI-do.js.map} +1 -1
- package/dist/Radio.js +2 -2
- package/dist/{RadioGroup-C_4buUtG.js → RadioGroup-B7O06pVu.js} +2 -2
- package/dist/{RadioGroup-C_4buUtG.js.map → RadioGroup-B7O06pVu.js.map} +1 -1
- package/dist/{SearchField-Bb0uObwG.js → SearchField-CbwGErC4.js} +2 -2
- package/dist/{SearchField-Bb0uObwG.js.map → SearchField-CbwGErC4.js.map} +1 -1
- package/dist/SearchField.js +1 -1
- package/dist/{SegmentedControl-CsjjV1Dz.js → SegmentedControl-CLDdes8W.js} +4 -4
- package/dist/{SegmentedControl-CsjjV1Dz.js.map → SegmentedControl-CLDdes8W.js.map} +1 -1
- package/dist/SegmentedControl.js +1 -1
- package/dist/{SelectCard-BTYZg9TG.js → SelectCard-Ca07K1FW.js} +3 -3
- package/dist/{SelectCard-BTYZg9TG.js.map → SelectCard-Ca07K1FW.js.map} +1 -1
- package/dist/SelectCard.js +1 -1
- package/dist/{SelectTrigger-f1hvRrSC.js → SelectTrigger-CaXX1SHG.js} +3 -3
- package/dist/{SelectTrigger-f1hvRrSC.js.map → SelectTrigger-CaXX1SHG.js.map} +1 -1
- package/dist/SelectTrigger.js +1 -1
- package/dist/{SelectTriggerBase-DP9fmRSo.js → SelectTriggerBase-C7TLCna1.js} +4 -4
- package/dist/{SelectTriggerBase-DP9fmRSo.js.map → SelectTriggerBase-C7TLCna1.js.map} +1 -1
- package/dist/{SideNav-CBAzYyML.js → SideNav-nqq5sAwz.js} +3 -3
- package/dist/SideNav-nqq5sAwz.js.map +1 -0
- package/dist/SideNav.js +1 -1
- package/dist/Skeleton.js.map +1 -1
- package/dist/Spinner-wmO8Epw0.js.map +1 -1
- package/dist/SrOnly-CTsYSuby.js.map +1 -1
- package/dist/{Stepper-D-fOH9TF.js → Stepper-DQ_Hm-AI.js} +4 -4
- package/dist/{Stepper-D-fOH9TF.js.map → Stepper-DQ_Hm-AI.js.map} +1 -1
- package/dist/Stepper.js +1 -1
- package/dist/Switch-C2ddZcr9.js.map +1 -1
- package/dist/{Tab-wNucMTgo.js → Tab-CzNx3IdF.js} +45 -37
- package/dist/Tab-CzNx3IdF.js.map +1 -0
- package/dist/Tab.js +1 -1
- package/dist/Text-BqvcbXyp.js.map +1 -1
- package/dist/{TextField-D8fow9j7.js → TextField-D9gD-34Q.js} +3 -3
- package/dist/{TextField-D8fow9j7.js.map → TextField-D9gD-34Q.js.map} +1 -1
- package/dist/{TextField-BiHxlzE3.js → TextField-uCHgwO5F.js} +2 -2
- package/dist/{TextField-BiHxlzE3.js.map → TextField-uCHgwO5F.js.map} +1 -1
- package/dist/TextField.js +1 -1
- package/dist/{Textarea-BdVJJlbP.js → Textarea-B2-6m291.js} +3 -3
- package/dist/{Textarea-BdVJJlbP.js.map → Textarea-B2-6m291.js.map} +1 -1
- package/dist/Textarea.js +1 -1
- package/dist/ThemeProvider-Be3Pvtpz.js.map +1 -1
- package/dist/ThemeProviderContext-l52GohYT.js.map +1 -1
- package/dist/{TimeField-CmbErrsZ.js → TimeField-B5Jgy-Zg.js} +363 -360
- package/dist/TimeField-B5Jgy-Zg.js.map +1 -0
- package/dist/TimeField.js +1 -1
- package/dist/Toast.js +2 -2
- package/dist/{Toaster-B7zUwJOt.js → Toaster-CHyB-Mxs.js} +3 -3
- package/dist/{Toaster-B7zUwJOt.js.map → Toaster-CHyB-Mxs.js.map} +1 -1
- package/dist/{Toaster-9cpG_tWR.js → Toaster-CyiGDKMh.js} +18 -18
- package/dist/{Toaster-9cpG_tWR.js.map → Toaster-CyiGDKMh.js.map} +1 -1
- package/dist/{Toolbar-D4zuUFhb.js → Toolbar-BXGTrR6o.js} +19 -18
- package/dist/Toolbar-BXGTrR6o.js.map +1 -0
- package/dist/Toolbar.js +1 -1
- package/dist/{Tooltip-BI3Xs75X.js → Tooltip-DhtVlhah.js} +9 -3
- package/dist/{Tooltip-BI3Xs75X.js.map → Tooltip-DhtVlhah.js.map} +1 -1
- package/dist/Tooltip.js +1 -1
- package/dist/TrackingProvider-BtSjkmpM.js.map +1 -1
- package/dist/beta.js +1 -1
- package/dist/childrenToString-Bz9MqbHb.js.map +1 -1
- package/dist/components/Calendar/Calendar.d.ts +5 -0
- package/dist/components/Calendar/CalendarNowButton.d.ts +3 -1
- package/dist/components/Combobox/ComboboxTypes.d.ts +10 -5
- package/dist/components/Combobox/internal/ComboboxGroupContext.d.ts +1 -1
- package/dist/components/Combobox/internal/useGroups.d.ts +2 -2
- package/dist/components/DndSort/internal/test-utils.d.ts +1 -1
- package/dist/components/Popover/Popover.d.ts +136 -1
- package/dist/components/Popover/PopoverTrigger.d.ts +0 -1
- package/dist/components/Popover/internal/PopoverContext.d.ts +5 -3
- package/dist/components/Popover/internal/usePopoverContext.d.ts +6 -4
- package/dist/components/TimeField/TimeField.d.ts +4 -1
- package/dist/extends-Bg2s_OKl.js.map +1 -1
- package/dist/getActiveElement-BcSyVE7S.js.map +1 -1
- package/dist/getKeyboardFocusableElements-QqcABz0D.js.map +1 -1
- package/dist/hooks/useMergeRefs/useMergeRefs.d.ts +11 -0
- package/dist/{index-V5Ez2gq_.js → index-DrM3iid4.js} +2 -2
- package/dist/{index-V5Ez2gq_.js.map → index-DrM3iid4.js.map} +1 -1
- package/dist/index-tZvMCc77.js.map +1 -1
- package/dist/{index.esm-D889iexm.js → index.esm-BwMVvxTV.js} +199 -144
- package/dist/index.esm-BwMVvxTV.js.map +1 -0
- package/dist/index.js +52 -52
- package/dist/index.js.map +1 -1
- package/dist/internal/hooks/useFocusWithin/useFocusWithin.d.ts +2 -1
- package/dist/internal/hooks/useKeyboardFocusables/useKeyboardFocusables.d.ts +0 -1
- package/dist/internal/hooks/useOnClickOutside/useOnClickOutside.d.ts +5 -1
- package/dist/makeZeroShortcutPreprocessor-CxsiGTRW.js.map +1 -1
- package/dist/{proxy-CreWmH-e.js → proxy-BbFHSE6L.js} +8631 -8680
- package/dist/proxy-BbFHSE6L.js.map +1 -0
- package/dist/{use-reduced-motion-znCm41qB.js → use-reduced-motion-DSpxmqyT.js} +3 -3
- package/dist/use-reduced-motion-DSpxmqyT.js.map +1 -0
- package/dist/useAccessibleColor-BYKjkGRg.js.map +1 -1
- package/dist/useBreakpoint-Cv5fnZxs.js.map +1 -1
- package/dist/{useFocusWithin-BhhgRXdZ.js → useFocusWithin-hi77jsrB.js} +6 -3
- package/dist/useFocusWithin-hi77jsrB.js.map +1 -0
- package/dist/useInfiniteCombobox-WcRgC9p6.js.map +1 -1
- package/dist/useIntersectionObserver-BEmMDO3P.js.map +1 -1
- package/dist/{useDialogTransitionStates-2NaE_noq.js → useKeyboardFocusables-ek2mYel-.js} +46 -5
- package/dist/useKeyboardFocusables-ek2mYel-.js.map +1 -0
- package/dist/useLayoutPropsUtil-DjD5IMh0.js.map +1 -1
- package/dist/useMergeRefs-Dfmtq9cI.js +22 -0
- package/dist/useMergeRefs-Dfmtq9cI.js.map +1 -0
- package/dist/useMergeRefs.js +1 -1
- package/dist/{useOnClickOutside-BHEWMLa9.js → useOnClickOutside-C5AZE_I6.js} +6 -62
- package/dist/useOnClickOutside-C5AZE_I6.js.map +1 -0
- package/dist/useOptionallyControlledState-DbDuos5L.js.map +1 -1
- package/dist/{usePopoverSupport-DIjjfodl.js → usePopoverSupport-CWTCDfN2.js} +2 -2
- package/dist/{usePopoverSupport-DIjjfodl.js.map → usePopoverSupport-CWTCDfN2.js.map} +1 -1
- package/dist/usePrefersColorScheme-_hT7dK7_.js.map +1 -1
- package/dist/usePrevious-Bvq-5auG.js.map +1 -1
- package/dist/useSize.js.map +1 -1
- package/dist/{useSwipe-CULmVQEk.js → useSwipe-Cp-CJxLU.js} +2 -2
- package/dist/{useSwipe-CULmVQEk.js.map → useSwipe-Cp-CJxLU.js.map} +1 -1
- package/dist/useSwipe.js +1 -1
- package/dist/useTrackingContext-DRwDL8DE.js.map +1 -1
- package/dist/useTrackingId.js.map +1 -1
- package/dist/utils-CnKBdBNm.js +50 -0
- package/dist/utils-CnKBdBNm.js.map +1 -0
- package/package.json +12 -18
- package/dist/Button.module-pUNSKoVC.js +0 -25
- package/dist/Button.module-pUNSKoVC.js.map +0 -1
- package/dist/Calendar-BQ5F2ENO.js.map +0 -1
- package/dist/Combobox-B9nesJuc.js.map +0 -1
- package/dist/DateField-DXxPsRtf.js.map +0 -1
- package/dist/DateFieldRange-Xauviu1w.js.map +0 -1
- package/dist/DateFieldSingle-yLnwpVzd.js.map +0 -1
- package/dist/DrawerContext-DboTgTmo.js.map +0 -1
- package/dist/Menu-DEVZz9xZ.js.map +0 -1
- package/dist/Page-BMDkbDcU.js.map +0 -1
- package/dist/Pagination-BJsCppgW.js.map +0 -1
- package/dist/Popover-r26xMIfm.js.map +0 -1
- package/dist/SideNav-CBAzYyML.js.map +0 -1
- package/dist/Tab-wNucMTgo.js.map +0 -1
- package/dist/TimeField-CmbErrsZ.js.map +0 -1
- package/dist/Toolbar-D4zuUFhb.js.map +0 -1
- package/dist/components/DateFieldSingle/internal/useDateFieldOrchestration.d.ts +0 -17
- package/dist/index.esm-D889iexm.js.map +0 -1
- package/dist/proxy-CreWmH-e.js.map +0 -1
- package/dist/use-reduced-motion-znCm41qB.js.map +0 -1
- package/dist/useDateFieldOrchestration-BNJCsRkS.js +0 -138
- package/dist/useDateFieldOrchestration-BNJCsRkS.js.map +0 -1
- package/dist/useDialogTransitionStates-2NaE_noq.js.map +0 -1
- package/dist/useFocusWithin-BhhgRXdZ.js.map +0 -1
- package/dist/useMergeRefs-Bde85AWI.js +0 -21
- package/dist/useMergeRefs-Bde85AWI.js.map +0 -1
- package/dist/useOnClickOutside-BHEWMLa9.js.map +0 -1
- package/dist/usePopoverCloseDelayWorkaround-BZcjPkvT.js +0 -18
- package/dist/usePopoverCloseDelayWorkaround-BZcjPkvT.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Pagination-B_G9QcHf.js","sources":["../src/components/Pagination/internal/PaginationItem.tsx","../src/components/Pagination/internal/PaginationOverflowMenu.tsx","../src/components/Pagination/internal/PaginationItemsPerPageMenu.tsx","../src/components/Pagination/internal/PaginationList.tsx","../src/components/Pagination/internal/PaginationTotalCount.tsx","../src/components/Pagination/internal/Pagination.tsx","../src/components/Pagination/internal/usePaginationArray.ts","../src/components/Pagination/Pagination.tsx"],"sourcesContent":["import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { ButtonToggle } from \"../../ButtonToggle\";\n\nimport styles from \"./PaginationItem.module.scss\";\n\n/**\n * Props for the PaginationItem component\n * @extends ComponentPropsWithoutRef<\"li\">\n */\nexport type PaginationItemProps = ComponentPropsWithoutRef<\"li\"> & {\n /**\n * The page number to display.\n */\n page: number;\n /**\n * Whether this page item is currently active/selected.\n * @default false\n */\n isActive?: boolean;\n /**\n * Callback function called when the page item is clicked.\n */\n onClick?: () => void;\n};\n\n/**\n * PaginationItem component for displaying individual page numbers in pagination.\n *\n * Features:\n * - Displays page number as a toggle button\n * - Supports active state styling\n * - Fully accessible with proper ARIA attributes\n * - Integrates with pagination navigation system\n * - Consistent styling with design system\n *\n * @example\n * <PaginationItem\n * page={3}\n * isActive={true}\n * onClick={() => console.log('Page 3 clicked')}\n * />\n */\nexport const PaginationItem = forwardRef<HTMLLIElement, PaginationItemProps>(\n (props, ref) => {\n const { page, isActive, onClick, className, ...rest } = props;\n\n const paginationClassName = cx(styles[\"pagination-item\"], className);\n const paginationButtonClassName = cx(styles[\"pagination-item-button\"], {\n [styles.active]: isActive,\n });\n return (\n <li ref={ref} {...rest} className={paginationClassName}>\n <ButtonToggle\n className={paginationButtonClassName}\n size=\"small\"\n onClick={onClick}\n aria-current={isActive ? \"page\" : undefined}\n aria-label={\n isActive ? `Current page, page ${page}` : `Go to page ${page}`\n }\n checked={isActive}\n >\n {page}\n </ButtonToggle>\n </li>\n );\n },\n);\n\nPaginationItem.displayName = \"PaginationItem\";\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport IconMoreHoriz from \"@servicetitan/hammer-icon/mdi/round/more_horiz.svg\";\n\nimport { Menu } from \"../../Menu\";\n\nimport styles from \"./PaginationOverflowMenu.module.scss\";\n\n/**\n * Props for the PaginationOverflowMenu component\n * @extends ComponentPropsWithoutRef<\"li\">\n */\nexport type PaginationOverflowMenuProps = ComponentPropsWithoutRef<\"li\"> & {\n /**\n * The starting page number for the overflow range.\n */\n startPage: number;\n /**\n * The ending page number for the overflow range.\n */\n endPage: number;\n /**\n * The number of pages in the overflow range.\n */\n length: number;\n /**\n * Callback function called when a page in the overflow menu is selected.\n * @param page The selected page number\n */\n onItemClick: (page: number) => void;\n};\n\n/**\n * PaginationOverflowMenu component for displaying overflow pages in pagination.\n *\n * Features:\n * - Displays ellipsis menu for large page ranges\n * - Shows all pages in the overflow range as menu items\n * - Integrates with pagination navigation system\n * - Fully accessible with proper ARIA labels\n * - Consistent styling with design system\n *\n * @example\n * <PaginationOverflowMenu\n * startPage={4}\n * endPage={8}\n * length={5}\n * onItemClick={(page) => console.log('Page selected:', page)}\n * />\n */\nexport const PaginationOverflowMenu = forwardRef<\n HTMLLIElement,\n PaginationOverflowMenuProps\n>((props, ref) => {\n const { startPage, endPage, length, onItemClick, ...rest } = props;\n return (\n <li className={styles[\"pagination-item-overflow-menu\"]} ref={ref} {...rest}>\n <Menu\n icon={IconMoreHoriz}\n size=\"small\"\n appearance=\"ghost\"\n maxHeight={200}\n key={`${startPage}-${endPage}`}\n contentClassName={styles[\"pagination-item-overflow-menu-content\"]}\n aria-label=\"More pages\"\n >\n {Array.from({ length: length }).map((_, index) => (\n <Menu.Item\n key={index}\n label={`${startPage + index}`}\n onClick={() => {\n const selectedPage = startPage + index;\n onItemClick(selectedPage);\n\n // Focus the active page button after selecting a page since overflow menu is re-rendered in different positions\n setTimeout(() => {\n document\n .querySelector<HTMLElement>('[aria-current=\"page\"]')\n ?.focus();\n }, 100);\n }}\n />\n ))}\n </Menu>\n </li>\n );\n});\n\nPaginationOverflowMenu.displayName = \"PaginationOverflowMenu\";\n","import { forwardRef, KeyboardEvent } from \"react\";\nimport IconKeyboardArrowDown from \"@servicetitan/hammer-icon/mdi/round/keyboard_arrow_down.svg\";\n\nimport { Button } from \"../../Button\";\nimport { Flex } from \"../../Flex\";\nimport { Menu } from \"../../Menu\";\nimport { Text } from \"../../Text\";\n\nimport styles from \"./PaginationItemsPerPageMenu.module.scss\";\n\n/**\n * Props for the PaginationItemsPerPageMenu component\n */\nexport type PaginationItemsPerPageMenuProps = {\n /**\n * The currently selected number of items per page.\n */\n itemsPerPage: number;\n /**\n * Array of available options for items per page.\n */\n itemsPerPageOptions: number[];\n /**\n * Callback function called when the items per page selection changes.\n * @param itemsPerPage The new number of items per page\n */\n onItemsPerPageChange: (itemsPerPage: number) => void;\n};\n\n/**\n * PaginationItemsPerPageMenu component for selecting the number of items per page.\n *\n * Features:\n * - Displays current items per page selection\n * - Provides dropdown menu with available options\n * - Integrates with pagination system\n * - Shows \"Rows per page\" label for clarity\n * - Fully accessible with proper ARIA attributes\n * - Consistent styling with design system\n *\n * @example\n * <PaginationItemsPerPageMenu\n * itemsPerPage={10}\n * itemsPerPageOptions={[5, 10, 25, 50]}\n * onItemsPerPageChange={(itemsPerPage) => console.log('Items per page:', itemsPerPage)}\n * />\n */\nexport const PaginationItemsPerPageMenu = forwardRef<\n HTMLDivElement,\n PaginationItemsPerPageMenuProps\n>((props, ref) => {\n const { itemsPerPage, itemsPerPageOptions, onItemsPerPageChange } = props;\n\n // This is a workaround to focus the first item in the menu when the arrow keys are pressed with the custom menu trigger\n const handleKeyDown = (e: KeyboardEvent<HTMLButtonElement>) => {\n if (e.code === \"ArrowDown\" || e.code === \"ArrowUp\") {\n e.preventDefault();\n const menuId = e.currentTarget.getAttribute(\"aria-controls\");\n\n setTimeout(() => {\n const menu = menuId ? document.getElementById(menuId) : null;\n const menuItems =\n menu?.querySelectorAll('[data-anv=\"menu-item\"]') ||\n document.querySelectorAll('[data-anv=\"menu-item\"]');\n\n (menuItems[0] as HTMLElement)?.focus();\n }, 100);\n }\n };\n\n return (\n <Flex alignItems=\"center\" gap=\"2\" ref={ref}>\n <Text size=\"small\">Rows per page</Text>\n <Menu\n trigger={({ ref, ...rest }) => {\n return (\n <Button\n ref={ref}\n {...rest}\n onKeyDown={handleKeyDown}\n className={styles[\"pagination-items-per-page-button\"]}\n appearance=\"ghost\"\n icon={{ after: IconKeyboardArrowDown }}\n size=\"small\"\n >\n {itemsPerPage}\n </Button>\n );\n }}\n >\n {itemsPerPageOptions.map((option) => (\n <Menu.Item\n key={option}\n label={option}\n onClick={() => {\n onItemsPerPageChange?.(option);\n }}\n />\n ))}\n </Menu>\n </Flex>\n );\n});\n\nPaginationItemsPerPageMenu.displayName = \"PaginationItemsPerPageMenu\";\n","import { forwardRef } from \"react\";\nimport IconKeyboardArrowLeft from \"@servicetitan/hammer-icon/mdi/round/keyboard_arrow_left.svg\";\nimport IconKeyboardArrowRight from \"@servicetitan/hammer-icon/mdi/round/keyboard_arrow_right.svg\";\n\nimport { Button } from \"../../Button\";\n\nimport cx from \"classnames\";\nimport itemStyles from \"./PaginationItem.module.scss\";\nimport styles from \"./PaginationList.module.scss\";\n\ntype PaginationListProps = {\n page: number;\n totalPages: number;\n onPageChange: (page: number) => void;\n children: React.ReactNode;\n className?: string;\n};\n\nexport const PaginationList = forwardRef<HTMLUListElement, PaginationListProps>(\n (props, ref) => {\n const { page, totalPages, children, onPageChange, className } = props;\n\n const paginationListClassName = cx(styles[\"pagination-list\"], className);\n\n return (\n <ul ref={ref} className={paginationListClassName}>\n <li className={itemStyles[\"pagination-item\"]}>\n <Button\n appearance=\"ghost\"\n icon={IconKeyboardArrowLeft}\n size=\"small\"\n aria-label=\"Previous page\"\n disabled={page === 1}\n onClick={() => {\n if (page > 1) {\n onPageChange?.(page - 1);\n }\n }}\n />\n </li>\n {children}\n <li className={itemStyles[\"pagination-item\"]}>\n <Button\n appearance=\"ghost\"\n icon={IconKeyboardArrowRight}\n size=\"small\"\n aria-label=\"Next page\"\n disabled={totalPages > 0 && page === totalPages}\n onClick={() => {\n if (totalPages === 0 || page < totalPages) {\n onPageChange?.(page + 1);\n }\n }}\n />\n </li>\n </ul>\n );\n },\n);\n\nPaginationList.displayName = \"PaginationList\";\n","import cx from \"classnames\";\n\nimport { Text } from \"../../Text\";\n\nimport styles from \"./PaginationTotalCount.module.scss\";\n\nexport const PaginationTotalCount = ({\n firstItem,\n lastItem,\n totalCount,\n className,\n}: {\n firstItem: number;\n lastItem: number;\n totalCount: number;\n className?: string;\n}) => {\n const paginationTotalCountClassName = cx(\n styles[\"pagination-total-count\"],\n className,\n );\n return (\n <Text\n size=\"small\"\n className={paginationTotalCountClassName}\n aria-hidden=\"true\"\n >\n {firstItem} - {lastItem} {totalCount ? `of ${totalCount}` : \"\"} items\n </Text>\n );\n};\n","import { ComponentPropsWithoutRef, forwardRef } from \"react\";\nimport cx from \"classnames\";\n\nimport { PaginationItem } from \"./PaginationItem\";\nimport { PaginationOverflowMenu } from \"./PaginationOverflowMenu\";\nimport { PaginationItemsPerPageMenu } from \"./PaginationItemsPerPageMenu\";\nimport { PaginationList } from \"./PaginationList\";\nimport { PaginationTotalCount } from \"./PaginationTotalCount\";\n\nimport styles from \"./Pagination.module.scss\";\n\n/**\n * Props for the Pagination component\n * @extends ComponentPropsWithoutRef<\"nav\">\n */\nexport type PaginationProps = ComponentPropsWithoutRef<\"nav\">;\n\nconst PaginationElement = forwardRef<HTMLElement, PaginationProps>(\n (props, ref) => {\n const { className, children, ...rest } = props;\n\n const paginationClassName = cx(styles.pagination, className);\n\n return (\n <nav ref={ref} className={paginationClassName} {...rest}>\n {children}\n </nav>\n );\n },\n);\n\nPaginationElement.displayName = \"Pagination\";\n\n/**\n * Pagination component for navigating through paginated content.\n *\n * Features:\n * - Provides navigation controls for paginated data\n * - Supports compound components for flexible pagination layouts\n * - Includes list, items, overflow menu, items per page menu, and total count\n * - Accessible navigation with proper ARIA roles\n * - Customizable styling and layout\n *\n * @example\n * <Pagination>\n * <Pagination.List>\n * <Pagination.Item>1</Pagination.Item>\n * <Pagination.Item>2</Pagination.Item>\n * <Pagination.OverflowMenu />\n * <Pagination.Item>10</Pagination.Item>\n * </Pagination.List>\n * <Pagination.ItemsPerPageMenu />\n * <Pagination.TotalCount />\n * </Pagination>\n */\nexport const Pagination = Object.assign(PaginationElement, {\n List: PaginationList,\n Item: PaginationItem,\n OverflowMenu: PaginationOverflowMenu,\n ItemsPerPageMenu: PaginationItemsPerPageMenu,\n TotalCount: PaginationTotalCount,\n});\n","import { useMemo, useRef } from \"react\";\n\nexport type PageArrayItem =\n | { type: \"page\"; page: number }\n | { type: \"overflow\"; startPage: number; endPage: number; length: number };\n\n/**\n * Custom hook for managing pagination array state and generation.\n *\n * Features:\n * - Automatically generates pagination array based on current page and total pages\n * - Avoids unnecessary regeneration if the current page is already visible\n * - Updates array when page or total pages change and the visible set must change\n * - Handles jumps to first/last page with overflow between current and target\n * - Provides stable reference for the current pagination array\n *\n * @param page The currently selected page\n * @param totalPages Total number of pages\n * @param maxArrayLength Maximum length of the pagination array (including overflows)\n * @returns The current pagination array\n *\n * @example\n * const pageArray = usePaginationArray({\n * page: 5,\n * totalPages: 10,\n * maxArrayLength: 7\n * });\n */\nexport const usePaginationArray = ({\n page,\n totalPages,\n maxArrayLength = 7,\n}: {\n page: number;\n totalPages: number;\n maxArrayLength?: number;\n}): PageArrayItem[] => {\n const prevRef = useRef<{\n array: PageArrayItem[];\n totalPages: number;\n maxArrayLength: number;\n prevPage: number;\n } | null>(null);\n\n return useMemo(() => {\n const maxPagesToShow = maxArrayLength - 2;\n let result: PageArrayItem[] = [];\n const addRange = (start: number, end: number) => {\n const count = end - start + 1;\n if (count === 1) {\n result.push({ type: \"page\", page: start });\n } else if (count >= 2) {\n result.push({\n type: \"overflow\",\n startPage: start,\n endPage: end,\n length: count,\n });\n }\n };\n\n if (totalPages <= maxArrayLength) {\n result = Array.from({ length: totalPages }, (_, i) => ({\n type: \"page\" as const,\n page: i + 1,\n }));\n } else if (page <= maxPagesToShow) {\n // Leading section\n for (let i = 1; i <= maxPagesToShow; i++) {\n result.push({ type: \"page\", page: i });\n }\n addRange(maxArrayLength - 1, totalPages - 1);\n result.push({ type: \"page\", page: totalPages });\n } else if (page >= totalPages - maxPagesToShow + 1) {\n // Trailing section\n result.push({ type: \"page\", page: 1 });\n addRange(2, totalPages - maxPagesToShow);\n for (let i = totalPages - (maxPagesToShow - 1); i <= totalPages; i++) {\n result.push({ type: \"page\", page: i });\n }\n } else {\n // Middle section\n result.push({ type: \"page\", page: 1 });\n addRange(2, page - 2);\n result.push({ type: \"page\", page: page - 1 });\n result.push({ type: \"page\", page: page });\n result.push({ type: \"page\", page: page + 1 });\n addRange(page + 2, totalPages - 1);\n result.push({ type: \"page\", page: totalPages });\n }\n\n const prev = prevRef.current;\n\n // Check if we should remake array due to overflow between pages or new page being in overflow\n let shouldRemakeForJump = false;\n if (\n prev &&\n prev.totalPages === totalPages &&\n prev.maxArrayLength === maxArrayLength\n ) {\n // Check if there is overflow between the new page and the current page\n const start = Math.min(prev.prevPage, page);\n const end = Math.max(prev.prevPage, page);\n const hasOverflowBetween = prev.array.some(\n (item) =>\n item.type === \"overflow\" &&\n // Check if overflow intersects with the range (not completely covers)\n !(item.endPage < start || item.startPage > end),\n );\n\n // Check if the new page is part of an overflow\n const newPageInOverflow = prev.array.some(\n (item) =>\n item.type === \"overflow\" &&\n item.startPage <= page &&\n item.endPage >= page,\n );\n\n shouldRemakeForJump = hasOverflowBetween || newPageInOverflow;\n }\n\n // If we should remake for jump, always return the new array\n if (shouldRemakeForJump) {\n prevRef.current = {\n array: result,\n totalPages,\n maxArrayLength,\n prevPage: page,\n };\n return result;\n }\n\n // Optimization: if the new page is already present in the previous array, reuse the array\n if (\n prev &&\n prev.totalPages === totalPages &&\n prev.maxArrayLength === maxArrayLength &&\n prev.array.some((item) => item.type === \"page\" && item.page === page)\n ) {\n return prev.array;\n }\n\n prevRef.current = {\n array: result,\n totalPages,\n maxArrayLength,\n prevPage: page,\n };\n return result;\n }, [page, totalPages, maxArrayLength]);\n};\n","import { forwardRef, useLayoutEffect, useRef, useState } from \"react\";\nimport { core } from \"@servicetitan/hammer-token\";\n\nimport { DataTrackingId } from \"../../types\";\nimport { SrOnly } from \"../SrOnly\";\nimport { useTrackingId, useMergeRefs } from \"../../hooks\";\n\nimport {\n Pagination as BasePagination,\n type PaginationProps as BasePaginationProps,\n} from \"./internal/Pagination\";\nimport { usePaginationArray } from \"./internal/usePaginationArray\";\n\nimport cx from \"classnames\";\nimport styles from \"./Pagination.module.scss\";\n\n/**\n * Props for the Pagination component\n * @property {number} page - The current page number\n * @property {number} itemsPerPage - Number of items displayed per page\n * @property {number[]} [itemsPerPageOptions] - Available options for items per page selection\n * @property {number} [totalItemCount] - Total number of items across all pages\n * @property {boolean} [showCount] - Whether to display the item count information\n * @property {(page: number) => void} [onPageChange] - Callback when page changes\n * @property {(itemsPerPage: number) => void} [onItemsPerPageChange] - Callback when items per page changes\n * @extends Omit<BasePaginationProps, \"children\">\n * @extends DataTrackingId\n */\nexport type PaginationProps = Omit<BasePaginationProps, \"children\"> &\n DataTrackingId & {\n page: number;\n itemsPerPage: number;\n itemsPerPageOptions?: number[];\n totalItemCount?: number;\n showCount?: boolean;\n onPageChange?: (page: number) => void;\n onItemsPerPageChange?: (itemsPerPage: number) => void;\n };\n\n/**\n * Pagination component for navigating through paginated content with automatic page array generation.\n *\n * Features:\n * - Automatic page array generation with overflow handling\n * - Supports items per page selection with customizable options\n * - Displays item count information with screen reader support\n * - Handles edge cases like invalid page numbers\n * - Includes previous/next navigation buttons\n * - Supports overflow menus for large page ranges\n * - Fully accessible with proper ARIA attributes\n * - Automatic tracking ID generation for analytics\n *\n * @example\n * <Pagination\n * page={1}\n * itemsPerPage={10}\n * totalItemCount={100}\n * itemsPerPageOptions={[10, 20, 50]}\n * showCount={true}\n * onPageChange={(page) => console.log('Page changed to:', page)}\n * onItemsPerPageChange={(itemsPerPage) => console.log('Items per page:', itemsPerPage)}\n * />\n */\nexport const Pagination = forwardRef<HTMLDivElement, PaginationProps>(\n (props, ref) => {\n const {\n \"aria-label\": ariaLabel,\n page,\n itemsPerPage,\n itemsPerPageOptions,\n totalItemCount: totalItemCountProp,\n showCount,\n onPageChange,\n onItemsPerPageChange,\n className,\n ...rest\n } = props;\n\n const data = {\n \"aria-label\": ariaLabel,\n };\n\n const trackingId = useTrackingId({\n name: \"Pagination\",\n data,\n hasOverride: !!rest[\"data-tracking-id\"],\n });\n const totalItemCount = totalItemCountProp ?? 0;\n const totalPages = Math.ceil(totalItemCount / itemsPerPage);\n const elRef = useRef<HTMLDivElement>(null);\n const combinedRef = useMergeRefs([elRef, ref]);\n const [isNarrow, setIsNarrow] = useState(false);\n\n const pageArray = usePaginationArray({\n page,\n totalPages,\n maxArrayLength: 7,\n });\n\n // Check if current page is available in the pageArray, fallback to page 1 if not\n const isPageAvailable = pageArray.some(\n (item) => item.type === \"page\" && item.page === page,\n );\n\n if (!isPageAvailable && page !== 1 && totalPages > 0) {\n // Use requestAnimationFrame to avoid calling onPageChange during render\n requestAnimationFrame(() => {\n onPageChange?.(1);\n });\n }\n\n const firstItem = 1 + (page - 1) * itemsPerPage;\n const lastItem = firstItem - 1 + itemsPerPage;\n const itemRangeText = `${firstItem} - ${lastItem} ${\n totalItemCount ? `of ${totalItemCount}` : \"\"\n } items`;\n\n useLayoutEffect(() => {\n const resizeObserver = new ResizeObserver((entries) => {\n const entry = entries[0];\n if (entry) {\n setIsNarrow(\n entry.contentRect.width <\n Number(core.primitive.BreakpointSm.value.replace(\"px\", \"\")),\n );\n }\n });\n if (elRef.current) {\n resizeObserver.observe(elRef.current);\n }\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n return (\n <BasePagination\n ref={combinedRef}\n data-tracking-id={trackingId}\n className={cx(styles.pagination, className)}\n aria-label={ariaLabel || \"Pagination navigation\"}\n >\n <BasePagination.List\n page={page}\n totalPages={totalPages}\n onPageChange={(page) => onPageChange?.(page)}\n >\n {pageArray.map((item) => {\n if (item.type === \"page\") {\n return (\n <BasePagination.Item\n key={item.page}\n page={item.page}\n isActive={item.page === page}\n onClick={() => onPageChange?.(item.page)}\n />\n );\n }\n return (\n <BasePagination.OverflowMenu\n key={item.startPage}\n startPage={item.startPage}\n endPage={item.endPage}\n length={item.length}\n onItemClick={(item) => onPageChange?.(item)}\n />\n );\n })}\n </BasePagination.List>\n {isNarrow === false && (\n <>\n {itemsPerPageOptions && (\n <BasePagination.ItemsPerPageMenu\n itemsPerPage={itemsPerPage}\n itemsPerPageOptions={itemsPerPageOptions}\n onItemsPerPageChange={(itemsPerPage) =>\n onItemsPerPageChange?.(itemsPerPage)\n }\n />\n )}\n {showCount && (\n <BasePagination.TotalCount\n firstItem={firstItem}\n lastItem={lastItem}\n totalCount={totalItemCount}\n />\n )}\n </>\n )}\n <SrOnly aria-live=\"polite\" aria-atomic=\"true\">\n Page {page} of {totalPages}, {itemRangeText}\n </SrOnly>\n </BasePagination>\n );\n },\n);\n\nPagination.displayName = \"Pagination\";\n"],"names":["styles","IconMoreHoriz","ref","IconKeyboardArrowDown","IconKeyboardArrowLeft","IconKeyboardArrowRight","Pagination","core.primitive.BreakpointSm","BasePagination","page","item","itemsPerPage"],"mappings":"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"}
|
package/dist/Pagination.css
CHANGED
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
}
|
|
61
61
|
}@layer starter, reset, base, state, application;
|
|
62
62
|
@layer reset {
|
|
63
|
-
._pagination-
|
|
63
|
+
._pagination-list_1apvp_2 {
|
|
64
64
|
all: unset;
|
|
65
65
|
font-family: var(--font-family-base, "Nunito Sans", sans-serif);
|
|
66
66
|
font-size: 100%;
|
|
@@ -75,12 +75,12 @@
|
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
@layer base {
|
|
78
|
-
._pagination-
|
|
78
|
+
._pagination-list_1apvp_2 {
|
|
79
79
|
display: flex;
|
|
80
80
|
flex-direction: row;
|
|
81
81
|
align-items: center;
|
|
82
82
|
justify-content: flex-start;
|
|
83
|
-
gap: 0.
|
|
83
|
+
gap: 0.25rem;
|
|
84
84
|
margin: 0;
|
|
85
85
|
}
|
|
86
86
|
}@layer starter, reset, base, state, application;
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
}
|
|
91
91
|
}@layer starter, reset, base, state, application;
|
|
92
92
|
@layer reset {
|
|
93
|
-
.
|
|
93
|
+
._pagination_t09n5_2 {
|
|
94
94
|
all: unset;
|
|
95
95
|
font-family: var(--font-family-base, "Nunito Sans", sans-serif);
|
|
96
96
|
font-size: 100%;
|
|
@@ -105,13 +105,13 @@
|
|
|
105
105
|
}
|
|
106
106
|
}
|
|
107
107
|
@layer base {
|
|
108
|
-
.
|
|
108
|
+
._pagination_t09n5_2 {
|
|
109
109
|
display: flex;
|
|
110
110
|
flex-direction: row;
|
|
111
111
|
align-items: center;
|
|
112
112
|
justify-content: flex-start;
|
|
113
113
|
flex-grow: 1;
|
|
114
|
-
gap: 0.
|
|
114
|
+
gap: 0.25rem;
|
|
115
115
|
}
|
|
116
116
|
}@layer starter, reset, base, state, application;
|
|
117
117
|
nav._pagination_1pkjs_1 {
|
package/dist/Pagination.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { P as Pagination, P as default } from './Pagination-
|
|
1
|
+
export { P as Pagination, P as default } from './Pagination-B_G9QcHf.js';
|
|
2
2
|
//# sourceMappingURL=Pagination.js.map
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
-
import { createContext, useContext, useRef, useLayoutEffect, useState, useMemo, forwardRef, useId, useCallback,
|
|
3
|
-
import { B as Button } from './Button-
|
|
2
|
+
import { createContext, useContext, useRef, useLayoutEffect, useEffect, useState, useMemo, forwardRef, useId, useCallback, useImperativeHandle } from 'react';
|
|
3
|
+
import { B as Button } from './Button-VNQQgZ45.js';
|
|
4
|
+
import { t as tabbable, f as useFloating, o as offset, i as size, g as flip, h as shift, J as arrow$1, l as limitShift, m as useClick, j as useHover, k as safePolygon, p as useDismiss, n as useRole, v as useInteractions, A as autoUpdate, D as DialogContext, a as DrawerContext, y as FloatingPortal, z as FloatingFocusManager, H as FloatingArrow, s as supportsPopover, B as computePosition, C as safeShowPopover, E as safeHidePopover } from './DrawerContext-D4tWTLVf.js';
|
|
4
5
|
import { c as childrenToString } from './childrenToString-Bz9MqbHb.js';
|
|
5
6
|
import { useTrackingId } from './useTrackingId.js';
|
|
6
|
-
import {
|
|
7
|
-
import { u as useMergeRefs } from './useMergeRefs-Bde85AWI.js';
|
|
7
|
+
import { u as useMergeRefs } from './useMergeRefs-Dfmtq9cI.js';
|
|
8
8
|
import { c as cx } from './index-tZvMCc77.js';
|
|
9
|
+
import { u as useFocusWithin } from './useFocusWithin-hi77jsrB.js';
|
|
9
10
|
import { P as PortalProviderContext } from './PortalProvider-9lXkQ0xY.js';
|
|
10
11
|
import { T as ThemeProvider } from './ThemeProvider-Be3Pvtpz.js';
|
|
11
12
|
import { T as ThemeProviderContext } from './ThemeProviderContext-l52GohYT.js';
|
|
12
|
-
import { u as useOpenCloseTransitionStates, a as
|
|
13
|
+
import { u as useOpenCloseTransitionStates, a as useOnClickOutside } from './useOnClickOutside-C5AZE_I6.js';
|
|
14
|
+
import { u as useOptionallyControlledState } from './useOptionallyControlledState-DbDuos5L.js';
|
|
13
15
|
|
|
14
16
|
import './Popover.css';const usePopoverTransitionStates = (popover, openProp, options = {}) => {
|
|
15
17
|
const { onOpenAnimationStart, onCloseAnimationComplete } = options;
|
|
@@ -24,7 +26,7 @@ import './Popover.css';const usePopoverTransitionStates = (popover, openProp, op
|
|
|
24
26
|
onCloseAnimationComplete?.();
|
|
25
27
|
},
|
|
26
28
|
durationMs: () => {
|
|
27
|
-
if (!popover) return 0;
|
|
29
|
+
if (!popover || !window) return 0;
|
|
28
30
|
const duration = window.getComputedStyle(popover).animationDuration;
|
|
29
31
|
return parseFloat(duration) * 1e3;
|
|
30
32
|
}
|
|
@@ -38,6 +40,7 @@ function usePopoverContext() {
|
|
|
38
40
|
const invokerRef = useRef(null);
|
|
39
41
|
const popoverRef = useRef(null);
|
|
40
42
|
const arrowRef = useRef(null);
|
|
43
|
+
const { triggerHovered, setTriggerHovered, contentHovered } = context || {};
|
|
41
44
|
useLayoutEffect(() => {
|
|
42
45
|
if (!invokerRef.current) return;
|
|
43
46
|
context?.setInvoker?.(invokerRef.current);
|
|
@@ -49,22 +52,58 @@ function usePopoverContext() {
|
|
|
49
52
|
if (!arrowRef.current) return;
|
|
50
53
|
context?.setArrowElement?.(arrowRef.current);
|
|
51
54
|
}, [context, popoverRef]);
|
|
55
|
+
useEffect(() => {
|
|
56
|
+
if (!context?.openOnHover) return;
|
|
57
|
+
if (!triggerHovered && !contentHovered) {
|
|
58
|
+
const closeTimeout = setTimeout(() => {
|
|
59
|
+
context?.closePopover();
|
|
60
|
+
}, 100);
|
|
61
|
+
return () => {
|
|
62
|
+
clearTimeout(closeTimeout);
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
if (triggerHovered && !contentHovered) {
|
|
66
|
+
if (context?.delay) {
|
|
67
|
+
const openTimeout = setTimeout(() => {
|
|
68
|
+
context?.openPopover();
|
|
69
|
+
}, context.delay);
|
|
70
|
+
return () => {
|
|
71
|
+
clearTimeout(openTimeout);
|
|
72
|
+
};
|
|
73
|
+
} else {
|
|
74
|
+
context?.openPopover();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}, [context?.delay, context?.openOnHover, triggerHovered, contentHovered]);
|
|
52
78
|
const onMouseEnterHandler = () => {
|
|
53
79
|
if (!context?.openOnHover) return;
|
|
54
|
-
|
|
80
|
+
setTriggerHovered?.(true);
|
|
55
81
|
};
|
|
56
82
|
const onMouseLeaveHandler = () => {
|
|
57
83
|
if (!context?.openOnHover) return;
|
|
58
|
-
|
|
84
|
+
setTriggerHovered?.(false);
|
|
59
85
|
};
|
|
60
|
-
const onFocusHandler = () => {
|
|
61
|
-
if (context?.
|
|
62
|
-
|
|
86
|
+
const onFocusHandler = (_e) => {
|
|
87
|
+
if (context?.openOnHover) {
|
|
88
|
+
context?.openPopover();
|
|
89
|
+
}
|
|
63
90
|
};
|
|
64
|
-
const onBlurHandler = () => {
|
|
65
|
-
if (context?.
|
|
91
|
+
const onBlurHandler = (e) => {
|
|
92
|
+
if (context?.popover?.contains(e.relatedTarget)) return;
|
|
93
|
+
if (context?.modal) {
|
|
94
|
+
e.preventDefault();
|
|
95
|
+
requestAnimationFrame(() => {
|
|
96
|
+
context?.invoker?.focus();
|
|
97
|
+
const focusables = tabbable(context?.popover);
|
|
98
|
+
if (focusables.length > 0) {
|
|
99
|
+
focusables[focusables.length - 1].focus();
|
|
100
|
+
}
|
|
101
|
+
});
|
|
66
102
|
return;
|
|
67
|
-
|
|
103
|
+
}
|
|
104
|
+
if (!context?.disableCloseOnClickOutside) {
|
|
105
|
+
context?.closePopover();
|
|
106
|
+
}
|
|
68
107
|
};
|
|
69
108
|
const onKeyDownHandler = (e) => {
|
|
70
109
|
if (!context?.openState) return;
|
|
@@ -72,12 +111,6 @@ function usePopoverContext() {
|
|
|
72
111
|
context?.closePopover();
|
|
73
112
|
return;
|
|
74
113
|
}
|
|
75
|
-
const focusables = context.focusables;
|
|
76
|
-
if (e.code === "Tab" && e.shiftKey && context?.modal && focusables) {
|
|
77
|
-
focusables[focusables.length - 1].focus();
|
|
78
|
-
e.preventDefault();
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
114
|
};
|
|
82
115
|
const onClickHandler = () => {
|
|
83
116
|
context?.invoker?.focus();
|
|
@@ -121,7 +154,6 @@ function usePopoverContext() {
|
|
|
121
154
|
},
|
|
122
155
|
rootNode: context.rootNode,
|
|
123
156
|
onClose: context.onClose,
|
|
124
|
-
setOpen: context.setOpenState,
|
|
125
157
|
open: context.openState,
|
|
126
158
|
openOnHover: context.openOnHover,
|
|
127
159
|
controlled: context.controlled,
|
|
@@ -138,7 +170,10 @@ function usePopoverContext() {
|
|
|
138
170
|
disableFlipFallback: context.disableFlipFallback,
|
|
139
171
|
disableFocusLock: context.modal,
|
|
140
172
|
disableTriggerFocus: context.disableTriggerFocus,
|
|
141
|
-
|
|
173
|
+
triggerHovered: context.triggerHovered,
|
|
174
|
+
setTriggerHovered: context.setTriggerHovered,
|
|
175
|
+
contentHovered: context.contentHovered,
|
|
176
|
+
setContentHovered: context.setContentHovered
|
|
142
177
|
};
|
|
143
178
|
}
|
|
144
179
|
|
|
@@ -471,14 +506,9 @@ const PopoverClose = forwardRef(
|
|
|
471
506
|
"data-anv": "popover-close",
|
|
472
507
|
...rest,
|
|
473
508
|
onClick: (event) => {
|
|
474
|
-
onClick?.(event);
|
|
475
|
-
if (context?.controlled) {
|
|
476
|
-
setTimeout(() => {
|
|
477
|
-
context?.onClose?.();
|
|
478
|
-
}, 100);
|
|
479
|
-
return;
|
|
480
|
-
}
|
|
481
509
|
context?.popover.close();
|
|
510
|
+
context?.onClose?.();
|
|
511
|
+
onClick?.(event);
|
|
482
512
|
}
|
|
483
513
|
}
|
|
484
514
|
);
|
|
@@ -522,11 +552,11 @@ const PopoverButton = forwardRef(
|
|
|
522
552
|
};
|
|
523
553
|
const onFocusHandler = (e) => {
|
|
524
554
|
onFocus?.(e);
|
|
525
|
-
context?.invoker.onFocus();
|
|
555
|
+
context?.invoker.onFocus(e);
|
|
526
556
|
};
|
|
527
557
|
const onBlurHandler = (e) => {
|
|
528
558
|
onBlur?.(e);
|
|
529
|
-
context?.invoker.onBlur();
|
|
559
|
+
context?.invoker.onBlur(e);
|
|
530
560
|
};
|
|
531
561
|
const onKeyDownHandler = (e) => {
|
|
532
562
|
onKeyDown?.(e);
|
|
@@ -580,52 +610,6 @@ const styles = {
|
|
|
580
610
|
"no-padding": "_no-padding_yo27y_62"
|
|
581
611
|
};
|
|
582
612
|
|
|
583
|
-
function compareElements(el1, el2, excludeAttributes = []) {
|
|
584
|
-
if (!el1 || !el2 || el1.tagName !== el2.tagName) {
|
|
585
|
-
return false;
|
|
586
|
-
}
|
|
587
|
-
const getFilteredAttributes = (attrs) => {
|
|
588
|
-
const filtered = {};
|
|
589
|
-
for (let i = 0; i < attrs.length; i++) {
|
|
590
|
-
const attr = attrs[i];
|
|
591
|
-
if (!excludeAttributes.includes(attr.name)) {
|
|
592
|
-
filtered[attr.name] = attr.value;
|
|
593
|
-
}
|
|
594
|
-
}
|
|
595
|
-
return filtered;
|
|
596
|
-
};
|
|
597
|
-
const filteredAttrs1 = getFilteredAttributes(el1.attributes);
|
|
598
|
-
const filteredAttrs2 = getFilteredAttributes(el2.attributes);
|
|
599
|
-
const keys1 = Object.keys(filteredAttrs1);
|
|
600
|
-
const keys2 = Object.keys(filteredAttrs2);
|
|
601
|
-
if (keys1.length !== keys2.length) return false;
|
|
602
|
-
for (const key of keys1) {
|
|
603
|
-
if (filteredAttrs1[key] !== filteredAttrs2[key]) {
|
|
604
|
-
return false;
|
|
605
|
-
}
|
|
606
|
-
}
|
|
607
|
-
const isOnlyText1 = el1.childNodes.length === 1 && el1.childNodes[0].nodeType === Node.TEXT_NODE;
|
|
608
|
-
const isOnlyText2 = el2.childNodes.length === 1 && el2.childNodes[0].nodeType === Node.TEXT_NODE;
|
|
609
|
-
if (isOnlyText1 && isOnlyText2) {
|
|
610
|
-
if (el1.textContent?.trim() !== el2.textContent?.trim()) {
|
|
611
|
-
return false;
|
|
612
|
-
}
|
|
613
|
-
}
|
|
614
|
-
const children1 = el1.children;
|
|
615
|
-
const children2 = el2.children;
|
|
616
|
-
if (children1.length !== children2.length) return false;
|
|
617
|
-
for (let i = 0; i < children1.length; i++) {
|
|
618
|
-
if (!compareElements(
|
|
619
|
-
children1[i],
|
|
620
|
-
children2[i],
|
|
621
|
-
excludeAttributes
|
|
622
|
-
)) {
|
|
623
|
-
return false;
|
|
624
|
-
}
|
|
625
|
-
}
|
|
626
|
-
return true;
|
|
627
|
-
}
|
|
628
|
-
|
|
629
613
|
const PopoverContent = forwardRef(
|
|
630
614
|
function PopoverContent2(props, ref) {
|
|
631
615
|
const {
|
|
@@ -651,85 +635,40 @@ const PopoverContent = forwardRef(
|
|
|
651
635
|
...style,
|
|
652
636
|
...context?.popover.style
|
|
653
637
|
};
|
|
654
|
-
const
|
|
638
|
+
const { props: wrapperProps } = useFocusWithin({
|
|
639
|
+
otherRelatedElements: context?.invoker.element ? [context?.invoker.element] : [],
|
|
640
|
+
onBlur: (e) => {
|
|
641
|
+
if (context?.modal) {
|
|
642
|
+
e.preventDefault();
|
|
643
|
+
requestAnimationFrame(() => {
|
|
644
|
+
context?.invoker.element?.focus();
|
|
645
|
+
});
|
|
646
|
+
return;
|
|
647
|
+
}
|
|
648
|
+
onBlur?.(e);
|
|
649
|
+
context?.popover.close();
|
|
650
|
+
},
|
|
651
|
+
onFocus: (e) => {
|
|
652
|
+
onFocus?.(e);
|
|
653
|
+
context?.popover.show();
|
|
654
|
+
}
|
|
655
|
+
});
|
|
655
656
|
const onMouseEnterHandler = (e) => {
|
|
656
657
|
onMouseEnter?.(e);
|
|
657
658
|
if (!context?.openOnHover) return;
|
|
658
|
-
context.
|
|
659
|
+
context.setContentHovered(true);
|
|
659
660
|
};
|
|
660
661
|
const onMouseLeaveHandler = (e) => {
|
|
661
662
|
onMouseLeave?.(e);
|
|
662
663
|
if (!context?.openOnHover) return;
|
|
663
|
-
context.
|
|
664
|
-
};
|
|
665
|
-
const onFocusHandler = (e) => {
|
|
666
|
-
onFocus?.(e);
|
|
667
|
-
context?.popover.show();
|
|
668
|
-
};
|
|
669
|
-
const onBlurHandler = (e) => {
|
|
670
|
-
onBlur?.(e);
|
|
664
|
+
context.setContentHovered(false);
|
|
671
665
|
};
|
|
672
666
|
const onKeyDownHandler = (e) => {
|
|
673
667
|
onKeyDown?.(e);
|
|
674
668
|
if (e.code === "Escape" && !context?.disableCloseOnEscape) {
|
|
675
669
|
context?.popover.close();
|
|
676
670
|
}
|
|
677
|
-
if (!context?.modal) {
|
|
678
|
-
if (context?.controlled) {
|
|
679
|
-
return;
|
|
680
|
-
}
|
|
681
|
-
if (e.code === "Tab" && !e.shiftKey) {
|
|
682
|
-
if (focusables && compareElements(
|
|
683
|
-
context.rootNode?.activeElement,
|
|
684
|
-
focusables[focusables.length - 1],
|
|
685
|
-
["tabindex"]
|
|
686
|
-
)) {
|
|
687
|
-
context.popover.close();
|
|
688
|
-
}
|
|
689
|
-
}
|
|
690
|
-
if (e.code === "Tab" && e.shiftKey) {
|
|
691
|
-
if (focusables && compareElements(
|
|
692
|
-
context.rootNode.activeElement,
|
|
693
|
-
focusables[0],
|
|
694
|
-
["tabindex"]
|
|
695
|
-
)) {
|
|
696
|
-
context.popover.close();
|
|
697
|
-
}
|
|
698
|
-
}
|
|
699
|
-
return;
|
|
700
|
-
}
|
|
701
|
-
if (e.code === "Tab" && !e.shiftKey) {
|
|
702
|
-
if (focusables && compareElements(
|
|
703
|
-
context.rootNode?.activeElement,
|
|
704
|
-
focusables[focusables.length - 1],
|
|
705
|
-
["tabindex"]
|
|
706
|
-
)) {
|
|
707
|
-
if (context.disableTriggerFocus) {
|
|
708
|
-
focusables[0].focus();
|
|
709
|
-
} else {
|
|
710
|
-
context.invoker.element?.focus();
|
|
711
|
-
context.popover.show();
|
|
712
|
-
}
|
|
713
|
-
e.preventDefault();
|
|
714
|
-
}
|
|
715
|
-
}
|
|
716
|
-
if (e.code === "Tab" && e.shiftKey) {
|
|
717
|
-
if (focusables && compareElements(
|
|
718
|
-
context.rootNode.activeElement,
|
|
719
|
-
focusables[0],
|
|
720
|
-
["tabindex"]
|
|
721
|
-
)) {
|
|
722
|
-
if (context.disableTriggerFocus) {
|
|
723
|
-
focusables[focusables.length - 1].focus();
|
|
724
|
-
} else {
|
|
725
|
-
context.invoker.element?.focus();
|
|
726
|
-
context.popover.show();
|
|
727
|
-
}
|
|
728
|
-
e.preventDefault();
|
|
729
|
-
}
|
|
730
|
-
}
|
|
731
671
|
};
|
|
732
|
-
const manualPopover = context?.controlled || context?.disableCloseOnClickOutside || context?.disableCloseOnEscape || context?.openOnHover;
|
|
733
672
|
const popoverContentRef = useMergeRefs([context?.popover.ref, ref]);
|
|
734
673
|
const popoverScrollerRef = useMergeRefs([childrenRef, scrollerRef]);
|
|
735
674
|
if (!supportsPopover())
|
|
@@ -743,7 +682,7 @@ const PopoverContent = forwardRef(
|
|
|
743
682
|
return /* @__PURE__ */ jsxs(
|
|
744
683
|
"div",
|
|
745
684
|
{
|
|
746
|
-
popover:
|
|
685
|
+
popover: "manual",
|
|
747
686
|
id: context?.popover.id,
|
|
748
687
|
"data-anv": "popover-content",
|
|
749
688
|
className: popoverClassNames,
|
|
@@ -751,10 +690,10 @@ const PopoverContent = forwardRef(
|
|
|
751
690
|
style: combinedStyles,
|
|
752
691
|
onMouseEnter: onMouseEnterHandler,
|
|
753
692
|
onMouseLeave: onMouseLeaveHandler,
|
|
754
|
-
onBlur: onBlurHandler,
|
|
755
|
-
onFocus: onFocusHandler,
|
|
756
693
|
role: "region",
|
|
757
694
|
...rest,
|
|
695
|
+
onFocus: wrapperProps.onFocus,
|
|
696
|
+
onBlur: wrapperProps.onBlur,
|
|
758
697
|
children: [
|
|
759
698
|
/* @__PURE__ */ jsx(
|
|
760
699
|
"div",
|
|
@@ -788,11 +727,11 @@ function PopoverTrigger(props) {
|
|
|
788
727
|
return /* @__PURE__ */ jsx(PopoverLegacyTrigger, { ...props });
|
|
789
728
|
if (!context) return;
|
|
790
729
|
const { element, ...rest } = context.invoker;
|
|
791
|
-
return children(
|
|
730
|
+
return children(rest);
|
|
792
731
|
}
|
|
793
732
|
PopoverTrigger.displayName = "PopoverTrigger";
|
|
794
733
|
|
|
795
|
-
const PopoverElement = (props) => {
|
|
734
|
+
const PopoverElement = forwardRef((props, ref) => {
|
|
796
735
|
const {
|
|
797
736
|
children,
|
|
798
737
|
openOnHover = false,
|
|
@@ -831,11 +770,14 @@ const PopoverElement = (props) => {
|
|
|
831
770
|
const [popover, setPopover] = useState(void 0);
|
|
832
771
|
const [rootNode, setRootNode] = useState();
|
|
833
772
|
const [arrowElement, setArrowElement] = useState(void 0);
|
|
834
|
-
const [openState, setOpenState] =
|
|
835
|
-
open
|
|
836
|
-
|
|
773
|
+
const [openState, setOpenState] = useOptionallyControlledState({
|
|
774
|
+
controlledValue: open,
|
|
775
|
+
defaultValue: defaultOpen
|
|
776
|
+
});
|
|
837
777
|
const arrowRef = useRef(null);
|
|
838
778
|
const dialogContext = useContext(DialogContext);
|
|
779
|
+
const [triggerHovered, setTriggerHovered] = useState(false);
|
|
780
|
+
const [contentHovered, setContentHovered] = useState(false);
|
|
839
781
|
const processMinHeight = typeof minHeight === "string" ? minHeight : `${minHeight}px`;
|
|
840
782
|
usePopoverTransitionStates(popover, openState, {
|
|
841
783
|
onOpenAnimationStart: useCallback(() => {
|
|
@@ -963,68 +905,58 @@ const PopoverElement = (props) => {
|
|
|
963
905
|
};
|
|
964
906
|
}, [invoker, popover, updatePosition, openState]);
|
|
965
907
|
popover?.getRootNode();
|
|
966
|
-
const { focusables } = useKeyboardFocusables(popover, {
|
|
967
|
-
observeChange: true
|
|
968
|
-
});
|
|
969
908
|
const popoverId = id ?? `popover-${uid.replace(/:/g, "")}`;
|
|
970
909
|
const isControlled = typeof open !== "undefined";
|
|
971
|
-
const openTimeoutRef = useRef(null);
|
|
972
|
-
const closeTimeoutRef = useRef(null);
|
|
973
910
|
const openPopover = useCallback(() => {
|
|
974
|
-
clearTimeout(closeTimeoutRef.current);
|
|
975
|
-
clearTimeout(openTimeoutRef.current);
|
|
976
911
|
if (!popover || !rootNode?.querySelector(`#${popoverId}`))
|
|
977
912
|
return;
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
onOpenChange?.(true);
|
|
982
|
-
dialogContext?.setHasOpenPopover?.(true);
|
|
983
|
-
}, delay);
|
|
984
|
-
}, [popover, rootNode, popoverId, delay, dialogContext]);
|
|
913
|
+
setOpenState(true);
|
|
914
|
+
onOpenChange?.(true);
|
|
915
|
+
}, [popover, rootNode, popoverId, onOpenChange, setOpenState]);
|
|
985
916
|
const closePopover = useCallback(
|
|
986
917
|
(fn) => {
|
|
987
|
-
clearTimeout(openTimeoutRef.current);
|
|
988
|
-
clearTimeout(closeTimeoutRef.current);
|
|
989
918
|
if (!popover || !openState) return;
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
fn?.();
|
|
995
|
-
safeHidePopover(popover);
|
|
996
|
-
dialogContext?.setHasOpenPopover?.(false);
|
|
997
|
-
}, 100);
|
|
919
|
+
if (!openOnHover) onClose?.();
|
|
920
|
+
setOpenState(false);
|
|
921
|
+
onOpenChange?.(false);
|
|
922
|
+
fn?.();
|
|
998
923
|
},
|
|
999
|
-
|
|
1000
|
-
|
|
924
|
+
[popover, openState, openOnHover, onClose, setOpenState, onOpenChange]
|
|
925
|
+
);
|
|
926
|
+
useImperativeHandle(
|
|
927
|
+
ref,
|
|
928
|
+
() => ({
|
|
929
|
+
openPopover,
|
|
930
|
+
closePopover
|
|
931
|
+
}),
|
|
932
|
+
[openPopover, closePopover]
|
|
1001
933
|
);
|
|
1002
|
-
const initialRender = useRef(true);
|
|
1003
|
-
useEffect(() => {
|
|
1004
|
-
if (initialRender.current === true) {
|
|
1005
|
-
if (openState) openPopover();
|
|
1006
|
-
initialRender.current = false;
|
|
1007
|
-
return;
|
|
1008
|
-
}
|
|
1009
|
-
}, [openState, openPopover]);
|
|
1010
934
|
useEffect(() => {
|
|
1011
|
-
if (typeof
|
|
1012
|
-
if (
|
|
1013
|
-
|
|
935
|
+
if (typeof openState === "undefined") return;
|
|
936
|
+
if (openState) {
|
|
937
|
+
if (dialogContext) {
|
|
938
|
+
if (dialogContext?.ref?.current?.open) {
|
|
939
|
+
safeShowPopover(popover);
|
|
940
|
+
dialogContext?.setHasOpenPopover?.(true);
|
|
941
|
+
}
|
|
942
|
+
return;
|
|
943
|
+
}
|
|
944
|
+
safeShowPopover(popover);
|
|
1014
945
|
} else {
|
|
1015
|
-
|
|
946
|
+
safeHidePopover(popover);
|
|
947
|
+
dialogContext?.setHasOpenPopover?.(false);
|
|
1016
948
|
}
|
|
1017
|
-
}, [
|
|
949
|
+
}, [openState, openPopover, closePopover, dialogContext, popover]);
|
|
1018
950
|
useOnClickOutside({
|
|
951
|
+
disable: disableCloseOnClickOutside || !openState,
|
|
1019
952
|
onOutsidePress: (e) => {
|
|
1020
|
-
if (!
|
|
953
|
+
if (!openState) return;
|
|
1021
954
|
onClickOutside?.(e);
|
|
1022
955
|
onOutsidePress?.(e);
|
|
1023
956
|
},
|
|
1024
957
|
targets: [invoker, popover],
|
|
1025
958
|
onClose: () => {
|
|
1026
|
-
if (
|
|
1027
|
-
return;
|
|
959
|
+
if (openOnHover || isControlled) return;
|
|
1028
960
|
closePopover();
|
|
1029
961
|
}
|
|
1030
962
|
});
|
|
@@ -1061,7 +993,11 @@ const PopoverElement = (props) => {
|
|
|
1061
993
|
resetKey: resetKey.current,
|
|
1062
994
|
rootNode,
|
|
1063
995
|
setRootNode,
|
|
1064
|
-
|
|
996
|
+
delay,
|
|
997
|
+
triggerHovered,
|
|
998
|
+
setTriggerHovered,
|
|
999
|
+
contentHovered,
|
|
1000
|
+
setContentHovered
|
|
1065
1001
|
};
|
|
1066
1002
|
}, [
|
|
1067
1003
|
popoverId,
|
|
@@ -1089,12 +1025,17 @@ const PopoverElement = (props) => {
|
|
|
1089
1025
|
isControlled,
|
|
1090
1026
|
modal,
|
|
1091
1027
|
rootNode,
|
|
1092
|
-
|
|
1028
|
+
delay,
|
|
1029
|
+
triggerHovered,
|
|
1030
|
+
setTriggerHovered,
|
|
1031
|
+
contentHovered,
|
|
1032
|
+
setContentHovered
|
|
1093
1033
|
]);
|
|
1094
1034
|
if (!supportsPopover())
|
|
1095
1035
|
return /* @__PURE__ */ jsx(PopoverLegacyElement, { ...props });
|
|
1096
1036
|
return /* @__PURE__ */ jsx(PopoverContext.Provider, { value, children });
|
|
1097
|
-
};
|
|
1037
|
+
});
|
|
1038
|
+
PopoverElement.displayName = "Popover";
|
|
1098
1039
|
const Popover = Object.assign(PopoverElement, {
|
|
1099
1040
|
/**
|
|
1100
1041
|
* PopoverTrigger component for creating custom trigger elements.
|
|
@@ -1179,4 +1120,4 @@ const Popover = Object.assign(PopoverElement, {
|
|
|
1179
1120
|
});
|
|
1180
1121
|
|
|
1181
1122
|
export { Popover as P, PopoverButton as a, PopoverClose as b, PopoverContent as c, PopoverTrigger as d, PopoverLegacy as e, usePopoverContext as f, usePopoverLegacyContext as u };
|
|
1182
|
-
//# sourceMappingURL=Popover-
|
|
1123
|
+
//# sourceMappingURL=Popover-v8R920kj.js.map
|