@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
|
@@ -1,21 +1,34 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import {
|
|
4
|
-
import { g as maskitoTimeOptionsGenerator, a as maskitoWithPlaceholder, u as useMaskito } from './index.esm-
|
|
3
|
+
import { useState, useEffect, forwardRef, useRef, useMemo, useCallback, useImperativeHandle } from 'react';
|
|
4
|
+
import { g as maskitoTimeOptionsGenerator, a as maskitoWithPlaceholder, u as useMaskito } from './index.esm-BwMVvxTV.js';
|
|
5
5
|
import { I as Icon } from './Icon-D8SPKeO4.js';
|
|
6
|
-
import { T as TextField } from './TextField-
|
|
6
|
+
import { T as TextField } from './TextField-D9gD-34Q.js';
|
|
7
7
|
import { c as cx } from './index-tZvMCc77.js';
|
|
8
|
-
import { u as useMergeRefs } from './useMergeRefs-
|
|
9
|
-
import { P as Popover } from './Popover-
|
|
10
|
-
import { L as Listbox } from './Listbox-
|
|
8
|
+
import { u as useMergeRefs } from './useMergeRefs-Dfmtq9cI.js';
|
|
9
|
+
import { P as Popover } from './Popover-v8R920kj.js';
|
|
10
|
+
import { L as Listbox } from './Listbox-DxGx630W.js';
|
|
11
11
|
import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DjD5IMh0.js';
|
|
12
12
|
import { u as useOptionallyControlledState } from './useOptionallyControlledState-DbDuos5L.js';
|
|
13
|
-
import { u as usePopoverSupport } from './usePopoverSupport-
|
|
14
|
-
import { u as usePopoverCloseDelayWorkaround } from './usePopoverCloseDelayWorkaround-BZcjPkvT.js';
|
|
13
|
+
import { u as usePopoverSupport } from './usePopoverSupport-CWTCDfN2.js';
|
|
15
14
|
import { c as childrenToString } from './childrenToString-Bz9MqbHb.js';
|
|
16
15
|
import { useTrackingId } from './useTrackingId.js';
|
|
17
16
|
|
|
18
|
-
import './TimeField.css';const
|
|
17
|
+
import './TimeField.css';const usePopoverCloseDelayWorkaround = (popoverOpen, delay = 300) => {
|
|
18
|
+
const [shouldShowContent, setShouldShowContent] = useState(popoverOpen);
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
if (!popoverOpen) {
|
|
21
|
+
const timeout = setTimeout(() => {
|
|
22
|
+
setShouldShowContent(false);
|
|
23
|
+
}, delay);
|
|
24
|
+
return () => clearTimeout(timeout);
|
|
25
|
+
}
|
|
26
|
+
setShouldShowContent(true);
|
|
27
|
+
}, [popoverOpen, delay]);
|
|
28
|
+
return shouldShowContent;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
const SvgAccessTime = (props) => /* @__PURE__ */ React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", viewBox: "0 0 24 24", ...props }, /* @__PURE__ */ React.createElement("path", { d: "M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm-.22-13h-.06c-.4 0-.72.32-.72.72v4.72c0 .35.18.68.49.86l4.15 2.49c.34.2.78.1.98-.24a.71.71 0 0 0-.25-.99l-3.87-2.3V7.72c0-.4-.32-.72-.72-.72z" }));
|
|
19
32
|
|
|
20
33
|
const TIME_CONSTANTS = {
|
|
21
34
|
/** Minutes in a full day (24 hours * 60 minutes) */
|
|
@@ -528,14 +541,14 @@ const MaskedTimeInput = forwardRef(
|
|
|
528
541
|
},
|
|
529
542
|
[currentParsedData, format, onBlur]
|
|
530
543
|
);
|
|
531
|
-
useImperativeHandle(
|
|
532
|
-
|
|
533
|
-
()
|
|
534
|
-
|
|
535
|
-
|
|
544
|
+
useImperativeHandle(ref, () => {
|
|
545
|
+
const input = inputRef.current;
|
|
546
|
+
if (!input)
|
|
547
|
+
return null;
|
|
548
|
+
return Object.assign(input, {
|
|
536
549
|
resetTypingFlag
|
|
537
|
-
})
|
|
538
|
-
);
|
|
550
|
+
});
|
|
551
|
+
});
|
|
539
552
|
const classNames = useMemo(() => {
|
|
540
553
|
return cx(styles["time-field"], className);
|
|
541
554
|
}, [className]);
|
|
@@ -561,368 +574,358 @@ const MaskedTimeInput = forwardRef(
|
|
|
561
574
|
);
|
|
562
575
|
MaskedTimeInput.displayName = "MaskedTimeInput";
|
|
563
576
|
|
|
564
|
-
const TimeField =
|
|
565
|
-
(props
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
577
|
+
const TimeField = (props) => {
|
|
578
|
+
const { componentProps } = useLayoutPropsUtil(props);
|
|
579
|
+
const {
|
|
580
|
+
label,
|
|
581
|
+
labelProps,
|
|
582
|
+
size,
|
|
583
|
+
value: valueProp,
|
|
584
|
+
defaultValue,
|
|
585
|
+
min,
|
|
586
|
+
max,
|
|
587
|
+
onChange,
|
|
588
|
+
format = 12,
|
|
589
|
+
step = 30,
|
|
590
|
+
required,
|
|
591
|
+
description,
|
|
592
|
+
error: errorProp,
|
|
593
|
+
disableSuggestions = false,
|
|
594
|
+
autoround = false,
|
|
595
|
+
className,
|
|
596
|
+
...rest
|
|
597
|
+
} = componentProps;
|
|
598
|
+
const [isDropdownOpen, setIsDropdownOpenRaw] = useState(false);
|
|
599
|
+
const setIsDropdownOpen = (open) => {
|
|
600
|
+
setIsDropdownOpenRaw(open);
|
|
601
|
+
};
|
|
602
|
+
const [selectedOptionIndex, setSelectedOptionIndex] = useState(0);
|
|
603
|
+
const [inputValueForFiltering, setInputValueForFiltering] = useState("");
|
|
604
|
+
const [currentParsedTime, setCurrentParsedTime] = useState(
|
|
605
|
+
null
|
|
606
|
+
);
|
|
607
|
+
const [selectedTime, setSelectedTime] = useOptionallyControlledState({
|
|
608
|
+
controlledValue: valueProp,
|
|
609
|
+
defaultValue: defaultValue ?? null
|
|
610
|
+
});
|
|
611
|
+
const [inputParsedData, setInputParsedData] = useState({ time: null, isInputValid: false, isInputEmpty: true });
|
|
612
|
+
const lastOnChangeCallRef = useRef(null);
|
|
613
|
+
const isDropdownClickingRef = useRef(false);
|
|
614
|
+
const [justSelected, setJustSelected] = useState(false);
|
|
615
|
+
const tabJustPressedRef = useRef(false);
|
|
616
|
+
const inputRef = useRef(null);
|
|
617
|
+
const popoverContentRef = useRef(null);
|
|
618
|
+
const [popoverTriggerRef, setPopoverTriggerRef] = useState();
|
|
619
|
+
const combinedRef = useMergeRefs([popoverTriggerRef, inputRef]);
|
|
620
|
+
const popoverSupported = usePopoverSupport();
|
|
621
|
+
const placeholder = TIME_FORMAT_PLACEHOLDERS[format];
|
|
622
|
+
const shouldShowOptionsFromHook = usePopoverCloseDelayWorkaround(isDropdownOpen);
|
|
623
|
+
const shouldShowOptions = tabJustPressedRef.current ? false : shouldShowOptionsFromHook;
|
|
624
|
+
const dropdownTimeoutRef = useRef(null);
|
|
625
|
+
useEffect(() => {
|
|
626
|
+
const dropdownRef = dropdownTimeoutRef.current;
|
|
627
|
+
return () => {
|
|
628
|
+
if (dropdownRef) {
|
|
629
|
+
clearTimeout(dropdownRef);
|
|
630
|
+
}
|
|
589
631
|
};
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
632
|
+
}, []);
|
|
633
|
+
const allTimeOptions = useMemo(
|
|
634
|
+
() => generateTimeOptions({ step, min, max, format }),
|
|
635
|
+
[step, min, max, format]
|
|
636
|
+
);
|
|
637
|
+
const baseFilteredOptions = useMemo(() => {
|
|
638
|
+
if (!inputValueForFiltering || inputValueForFiltering.match(/^[–_:]+$/)) {
|
|
639
|
+
return allTimeOptions;
|
|
640
|
+
}
|
|
641
|
+
return filterTimeOptions(allTimeOptions, inputValueForFiltering);
|
|
642
|
+
}, [allTimeOptions, inputValueForFiltering]);
|
|
643
|
+
const autoRoundingOptions = useMemo(() => {
|
|
644
|
+
if (!autoround || baseFilteredOptions.length > 0 || !inputValueForFiltering || inputValueForFiltering.match(/^[–_:]+$/)) {
|
|
645
|
+
return [];
|
|
646
|
+
}
|
|
647
|
+
const currentTime = currentParsedTime || inputParsedData.time;
|
|
648
|
+
const autoRoundedOptions = getAutoRoundingOptions(
|
|
649
|
+
currentTime,
|
|
650
|
+
step ?? 30,
|
|
651
|
+
format,
|
|
652
|
+
inputValueForFiltering,
|
|
653
|
+
min
|
|
594
654
|
);
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
defaultValue: defaultValue ?? null
|
|
598
|
-
});
|
|
599
|
-
const [inputParsedData, setInputParsedData] = useState({ time: null, isInputValid: false, isInputEmpty: true });
|
|
600
|
-
const lastOnChangeCallRef = useRef(null);
|
|
601
|
-
const isDropdownClickingRef = useRef(false);
|
|
602
|
-
const [justSelected, setJustSelected] = useState(false);
|
|
603
|
-
const tabJustPressedRef = useRef(false);
|
|
604
|
-
const inputRef = useRef(null);
|
|
605
|
-
const popoverContentRef = useRef(null);
|
|
606
|
-
const combinedRef = useMergeRefs([inputRef, ref]);
|
|
607
|
-
const popoverSupported = usePopoverSupport();
|
|
608
|
-
const placeholder = TIME_FORMAT_PLACEHOLDERS[format];
|
|
609
|
-
const shouldShowOptionsFromHook = usePopoverCloseDelayWorkaround(isDropdownOpen);
|
|
610
|
-
const shouldShowOptions = tabJustPressedRef.current ? false : shouldShowOptionsFromHook;
|
|
611
|
-
const dropdownTimeoutRef = useRef(null);
|
|
612
|
-
useEffect(() => {
|
|
613
|
-
const dropdownRef = dropdownTimeoutRef.current;
|
|
614
|
-
return () => {
|
|
615
|
-
if (dropdownRef) {
|
|
616
|
-
clearTimeout(dropdownRef);
|
|
617
|
-
}
|
|
618
|
-
};
|
|
619
|
-
}, []);
|
|
620
|
-
const allTimeOptions = useMemo(
|
|
621
|
-
() => generateTimeOptions({ step, min, max, format }),
|
|
622
|
-
[step, min, max, format]
|
|
655
|
+
return autoRoundedOptions.filter(
|
|
656
|
+
(option) => !baseFilteredOptions.includes(option)
|
|
623
657
|
);
|
|
624
|
-
|
|
625
|
-
|
|
658
|
+
}, [
|
|
659
|
+
autoround,
|
|
660
|
+
baseFilteredOptions,
|
|
661
|
+
inputValueForFiltering,
|
|
662
|
+
currentParsedTime,
|
|
663
|
+
inputParsedData.time,
|
|
664
|
+
format,
|
|
665
|
+
min,
|
|
666
|
+
step
|
|
667
|
+
]);
|
|
668
|
+
const filteredOptions = useMemo(() => {
|
|
669
|
+
if (baseFilteredOptions.length === 0 && autoRoundingOptions.length === 0) {
|
|
670
|
+
if (!inputParsedData.isInputValid && inputValueForFiltering && !inputValueForFiltering.match(/^[–_:]+$/)) {
|
|
626
671
|
return allTimeOptions;
|
|
627
672
|
}
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
return autoRoundedOptions.filter(
|
|
643
|
-
(option) => !baseFilteredOptions.includes(option)
|
|
644
|
-
);
|
|
645
|
-
}, [
|
|
646
|
-
autoround,
|
|
647
|
-
baseFilteredOptions,
|
|
648
|
-
inputValueForFiltering,
|
|
649
|
-
currentParsedTime,
|
|
650
|
-
inputParsedData.time,
|
|
651
|
-
format,
|
|
652
|
-
min,
|
|
653
|
-
step
|
|
654
|
-
]);
|
|
655
|
-
const filteredOptions = useMemo(() => {
|
|
656
|
-
if (baseFilteredOptions.length === 0 && autoRoundingOptions.length === 0) {
|
|
657
|
-
if (!inputParsedData.isInputValid && inputValueForFiltering && !inputValueForFiltering.match(/^[–_:]+$/)) {
|
|
658
|
-
return allTimeOptions;
|
|
659
|
-
}
|
|
673
|
+
}
|
|
674
|
+
return [...baseFilteredOptions, ...autoRoundingOptions];
|
|
675
|
+
}, [
|
|
676
|
+
baseFilteredOptions,
|
|
677
|
+
autoRoundingOptions,
|
|
678
|
+
allTimeOptions,
|
|
679
|
+
inputValueForFiltering,
|
|
680
|
+
inputParsedData.isInputValid
|
|
681
|
+
]);
|
|
682
|
+
const handleBlur = useCallback(
|
|
683
|
+
(event) => {
|
|
684
|
+
if (event.relatedTarget && popoverContentRef.current?.contains(event.relatedTarget) && isDropdownClickingRef.current) {
|
|
685
|
+
isDropdownClickingRef.current = false;
|
|
686
|
+
return;
|
|
660
687
|
}
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
}
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
const parsedInputTime = input.dataset.time || null;
|
|
679
|
-
const isInputValid = input.dataset.inputValid === "true";
|
|
680
|
-
const isInputEmpty = input.dataset.inputEmpty === "true";
|
|
681
|
-
let finalTime = parsedInputTime;
|
|
682
|
-
if (autoround && finalTime && isInputValid) {
|
|
683
|
-
const beforeRounding = finalTime;
|
|
684
|
-
finalTime = handleAutoRounding(finalTime, {
|
|
685
|
-
autoround,
|
|
686
|
-
step,
|
|
687
|
-
format
|
|
688
|
-
});
|
|
689
|
-
if (finalTime !== beforeRounding) {
|
|
690
|
-
inputRef.current?.resetTypingFlag?.();
|
|
691
|
-
setSelectedTime(finalTime);
|
|
692
|
-
}
|
|
693
|
-
}
|
|
694
|
-
const currentChange = {
|
|
695
|
-
time: finalTime,
|
|
696
|
-
isInputValid,
|
|
697
|
-
isInputEmpty
|
|
698
|
-
};
|
|
699
|
-
const lastChange = lastOnChangeCallRef.current;
|
|
700
|
-
const isDuplicate = lastChange && lastChange.time === currentChange.time && lastChange.isInputValid === currentChange.isInputValid && lastChange.isInputEmpty === currentChange.isInputEmpty;
|
|
701
|
-
if (!isDuplicate) {
|
|
702
|
-
onChange?.(currentChange);
|
|
703
|
-
lastOnChangeCallRef.current = currentChange;
|
|
688
|
+
setIsDropdownOpen(false);
|
|
689
|
+
setSelectedOptionIndex(0);
|
|
690
|
+
const input = event.target;
|
|
691
|
+
const parsedInputTime = input.dataset.time || null;
|
|
692
|
+
const isInputValid = input.dataset.inputValid === "true";
|
|
693
|
+
const isInputEmpty = input.dataset.inputEmpty === "true";
|
|
694
|
+
let finalTime = parsedInputTime;
|
|
695
|
+
if (autoround && finalTime && isInputValid) {
|
|
696
|
+
const beforeRounding = finalTime;
|
|
697
|
+
finalTime = handleAutoRounding(finalTime, {
|
|
698
|
+
autoround,
|
|
699
|
+
step,
|
|
700
|
+
format
|
|
701
|
+
});
|
|
702
|
+
if (finalTime !== beforeRounding) {
|
|
703
|
+
inputRef.current?.resetTypingFlag?.();
|
|
704
|
+
setSelectedTime(finalTime);
|
|
704
705
|
}
|
|
705
|
-
},
|
|
706
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
707
|
-
[format, step, autoround, onChange]
|
|
708
|
-
);
|
|
709
|
-
const handleFocus = useCallback(() => {
|
|
710
|
-
if (!disableSuggestions && !justSelected) {
|
|
711
|
-
setIsDropdownOpen(true);
|
|
712
|
-
setSelectedOptionIndex(0);
|
|
713
706
|
}
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
}
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
707
|
+
const currentChange = {
|
|
708
|
+
time: finalTime,
|
|
709
|
+
isInputValid,
|
|
710
|
+
isInputEmpty
|
|
711
|
+
};
|
|
712
|
+
const lastChange = lastOnChangeCallRef.current;
|
|
713
|
+
const isDuplicate = lastChange && lastChange.time === currentChange.time && lastChange.isInputValid === currentChange.isInputValid && lastChange.isInputEmpty === currentChange.isInputEmpty;
|
|
714
|
+
if (!isDuplicate) {
|
|
715
|
+
onChange?.(currentChange);
|
|
716
|
+
lastOnChangeCallRef.current = currentChange;
|
|
722
717
|
}
|
|
723
|
-
},
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
718
|
+
},
|
|
719
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
720
|
+
[format, step, autoround, onChange]
|
|
721
|
+
);
|
|
722
|
+
const handleFocus = useCallback(() => {
|
|
723
|
+
if (!disableSuggestions && !justSelected) {
|
|
724
|
+
setIsDropdownOpen(true);
|
|
725
|
+
setSelectedOptionIndex(0);
|
|
726
|
+
}
|
|
727
|
+
}, [disableSuggestions, justSelected]);
|
|
728
|
+
useEffect(() => {
|
|
729
|
+
if (filteredOptions.length <= 1 && isDropdownOpen) {
|
|
730
|
+
setIsDropdownOpen(false);
|
|
731
|
+
}
|
|
732
|
+
if (!disableSuggestions && filteredOptions.length > 1 && document.activeElement && document.activeElement.tagName === "INPUT" && !isDropdownOpen && !justSelected && !tabJustPressedRef.current) {
|
|
733
|
+
setIsDropdownOpen(true);
|
|
734
|
+
setSelectedOptionIndex(0);
|
|
735
|
+
}
|
|
736
|
+
}, [filteredOptions, disableSuggestions, isDropdownOpen, justSelected]);
|
|
737
|
+
const handleInputChange = (change) => {
|
|
738
|
+
setInputValueForFiltering(change.event.target.value);
|
|
739
|
+
setCurrentParsedTime(change.time);
|
|
740
|
+
setInputParsedData({
|
|
741
|
+
time: change.time,
|
|
742
|
+
isInputValid: change.isInputValid,
|
|
743
|
+
isInputEmpty: change.isInputEmpty
|
|
744
|
+
});
|
|
745
|
+
setSelectedOptionIndex(0);
|
|
746
|
+
setJustSelected(false);
|
|
747
|
+
setSelectedTime(null);
|
|
748
|
+
};
|
|
749
|
+
const scrollToSelectedOption = useCallback(() => {
|
|
750
|
+
if (!popoverContentRef.current || selectedOptionIndex < 0) return;
|
|
751
|
+
const optionElements = popoverContentRef.current.querySelectorAll('[role="option"]');
|
|
752
|
+
const targetElement = optionElements[selectedOptionIndex];
|
|
753
|
+
if (targetElement) {
|
|
754
|
+
targetElement.scrollIntoView({
|
|
755
|
+
block: "nearest",
|
|
756
|
+
behavior: "auto"
|
|
731
757
|
});
|
|
758
|
+
}
|
|
759
|
+
}, [selectedOptionIndex]);
|
|
760
|
+
useEffect(() => {
|
|
761
|
+
if (isDropdownOpen && selectedOptionIndex >= 0) {
|
|
762
|
+
scrollToSelectedOption();
|
|
763
|
+
}
|
|
764
|
+
}, [selectedOptionIndex, isDropdownOpen, scrollToSelectedOption]);
|
|
765
|
+
const handleOptionSelect = useCallback(
|
|
766
|
+
(selectedTime2) => {
|
|
767
|
+
if (inputRef.current?.resetTypingFlag) {
|
|
768
|
+
inputRef.current.resetTypingFlag();
|
|
769
|
+
}
|
|
770
|
+
setIsDropdownOpen(false);
|
|
732
771
|
setSelectedOptionIndex(0);
|
|
733
|
-
setJustSelected(
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
772
|
+
setJustSelected(true);
|
|
773
|
+
setCurrentParsedTime(selectedTime2);
|
|
774
|
+
setSelectedTime(selectedTime2);
|
|
775
|
+
const changeData = {
|
|
776
|
+
time: selectedTime2,
|
|
777
|
+
isInputValid: true,
|
|
778
|
+
isInputEmpty: false
|
|
779
|
+
};
|
|
780
|
+
onChange?.(changeData);
|
|
781
|
+
lastOnChangeCallRef.current = changeData;
|
|
782
|
+
requestAnimationFrame(() => {
|
|
783
|
+
inputRef.current?.focus();
|
|
784
|
+
});
|
|
785
|
+
},
|
|
786
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
787
|
+
[onChange]
|
|
788
|
+
);
|
|
789
|
+
const handleKeyDown = useCallback(
|
|
790
|
+
(event) => {
|
|
791
|
+
if (!isDropdownOpen) {
|
|
792
|
+
return;
|
|
745
793
|
}
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
794
|
+
switch (event.key) {
|
|
795
|
+
case "ArrowDown":
|
|
796
|
+
event.preventDefault();
|
|
797
|
+
setSelectedOptionIndex(
|
|
798
|
+
(prev) => prev < filteredOptions.length - 1 ? prev + 1 : 0
|
|
799
|
+
);
|
|
800
|
+
break;
|
|
801
|
+
case "ArrowUp":
|
|
802
|
+
event.preventDefault();
|
|
803
|
+
setSelectedOptionIndex(
|
|
804
|
+
(prev) => prev > 0 ? prev - 1 : filteredOptions.length - 1
|
|
805
|
+
);
|
|
806
|
+
break;
|
|
807
|
+
case "Enter":
|
|
808
|
+
event.preventDefault();
|
|
809
|
+
if (filteredOptions[selectedOptionIndex]) {
|
|
810
|
+
handleOptionSelect(filteredOptions[selectedOptionIndex]);
|
|
811
|
+
}
|
|
812
|
+
break;
|
|
813
|
+
case "Tab":
|
|
814
|
+
tabJustPressedRef.current = true;
|
|
815
|
+
setIsDropdownOpen(false);
|
|
816
|
+
setSelectedOptionIndex(0);
|
|
817
|
+
setTimeout(() => {
|
|
818
|
+
tabJustPressedRef.current = false;
|
|
819
|
+
}, 50);
|
|
820
|
+
break;
|
|
750
821
|
}
|
|
751
|
-
},
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
if (!isDropdownOpen) {
|
|
779
|
-
return;
|
|
780
|
-
}
|
|
781
|
-
switch (event.key) {
|
|
782
|
-
case "ArrowDown":
|
|
783
|
-
event.preventDefault();
|
|
784
|
-
setSelectedOptionIndex(
|
|
785
|
-
(prev) => prev < filteredOptions.length - 1 ? prev + 1 : 0
|
|
786
|
-
);
|
|
787
|
-
break;
|
|
788
|
-
case "ArrowUp":
|
|
789
|
-
event.preventDefault();
|
|
790
|
-
setSelectedOptionIndex(
|
|
791
|
-
(prev) => prev > 0 ? prev - 1 : filteredOptions.length - 1
|
|
792
|
-
);
|
|
793
|
-
break;
|
|
794
|
-
case "Enter":
|
|
795
|
-
event.preventDefault();
|
|
796
|
-
if (filteredOptions[selectedOptionIndex]) {
|
|
797
|
-
handleOptionSelect(filteredOptions[selectedOptionIndex]);
|
|
798
|
-
}
|
|
799
|
-
break;
|
|
800
|
-
case "Tab":
|
|
801
|
-
tabJustPressedRef.current = true;
|
|
802
|
-
setIsDropdownOpen(false);
|
|
803
|
-
setSelectedOptionIndex(0);
|
|
804
|
-
setTimeout(() => {
|
|
805
|
-
tabJustPressedRef.current = false;
|
|
806
|
-
}, 50);
|
|
807
|
-
break;
|
|
808
|
-
}
|
|
809
|
-
},
|
|
810
|
-
[
|
|
811
|
-
isDropdownOpen,
|
|
812
|
-
selectedOptionIndex,
|
|
813
|
-
filteredOptions,
|
|
814
|
-
handleOptionSelect
|
|
815
|
-
]
|
|
816
|
-
);
|
|
817
|
-
const popoverDisabled = disableSuggestions || !popoverSupported;
|
|
818
|
-
const data = {
|
|
819
|
-
label: childrenToString(label),
|
|
820
|
-
labelProps,
|
|
821
|
-
description: childrenToString(description),
|
|
822
|
-
size,
|
|
822
|
+
},
|
|
823
|
+
[isDropdownOpen, selectedOptionIndex, filteredOptions, handleOptionSelect]
|
|
824
|
+
);
|
|
825
|
+
const popoverDisabled = disableSuggestions || !popoverSupported;
|
|
826
|
+
const data = {
|
|
827
|
+
label: childrenToString(label),
|
|
828
|
+
labelProps,
|
|
829
|
+
description: childrenToString(description),
|
|
830
|
+
size,
|
|
831
|
+
format,
|
|
832
|
+
step,
|
|
833
|
+
min,
|
|
834
|
+
max,
|
|
835
|
+
autoround,
|
|
836
|
+
disableSuggestions
|
|
837
|
+
};
|
|
838
|
+
const trackingId = useTrackingId({
|
|
839
|
+
name: "TimeField",
|
|
840
|
+
data,
|
|
841
|
+
hasOverride: !!rest["data-tracking-id"]
|
|
842
|
+
});
|
|
843
|
+
const justTheInput = /* @__PURE__ */ jsx(
|
|
844
|
+
MaskedTimeInput,
|
|
845
|
+
{
|
|
846
|
+
"data-tracking-id": trackingId,
|
|
847
|
+
ref: combinedRef,
|
|
848
|
+
selectedTime,
|
|
823
849
|
format,
|
|
824
|
-
|
|
850
|
+
placeholder,
|
|
825
851
|
min,
|
|
826
852
|
max,
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
ref: combinedRef,
|
|
840
|
-
selectedTime,
|
|
841
|
-
format,
|
|
842
|
-
placeholder,
|
|
843
|
-
min,
|
|
844
|
-
max,
|
|
845
|
-
onInputChange: handleInputChange,
|
|
846
|
-
onKeyDown: handleKeyDown,
|
|
847
|
-
onBlur: handleBlur,
|
|
848
|
-
onFocus: handleFocus,
|
|
849
|
-
label,
|
|
850
|
-
labelProps,
|
|
851
|
-
size,
|
|
852
|
-
description,
|
|
853
|
-
error: errorProp,
|
|
854
|
-
className: popoverDisabled ? className : void 0,
|
|
855
|
-
...rest,
|
|
856
|
-
"data-anv": "time-field"
|
|
857
|
-
}
|
|
858
|
-
);
|
|
859
|
-
if (popoverDisabled) {
|
|
860
|
-
return justTheInput;
|
|
853
|
+
onInputChange: handleInputChange,
|
|
854
|
+
onKeyDown: handleKeyDown,
|
|
855
|
+
onBlur: handleBlur,
|
|
856
|
+
onFocus: handleFocus,
|
|
857
|
+
label,
|
|
858
|
+
labelProps,
|
|
859
|
+
size,
|
|
860
|
+
description,
|
|
861
|
+
error: errorProp,
|
|
862
|
+
className: popoverDisabled ? className : void 0,
|
|
863
|
+
...rest,
|
|
864
|
+
"data-anv": "time-field"
|
|
861
865
|
}
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
open: isDropdownOpen,
|
|
866
|
-
noPadding: true,
|
|
867
|
-
disableCaret: true,
|
|
868
|
-
placement: "bottom-start",
|
|
869
|
-
matchReferenceWidth: true,
|
|
870
|
-
modal: false,
|
|
871
|
-
onClickOutside: () => {
|
|
872
|
-
setIsDropdownOpen(false);
|
|
873
|
-
},
|
|
874
|
-
onClose: () => {
|
|
875
|
-
setIsDropdownOpen(false);
|
|
876
|
-
},
|
|
877
|
-
fitScreen: true,
|
|
878
|
-
maxHeight: 205,
|
|
879
|
-
children: [
|
|
880
|
-
/* @__PURE__ */ jsx(Popover.Trigger, { children: ({ ref: popoverRef }) => /* @__PURE__ */ jsx(
|
|
881
|
-
"div",
|
|
882
|
-
{
|
|
883
|
-
ref: popoverRef,
|
|
884
|
-
className,
|
|
885
|
-
children: justTheInput
|
|
886
|
-
}
|
|
887
|
-
) }),
|
|
888
|
-
/* @__PURE__ */ jsx(
|
|
889
|
-
Popover.Content,
|
|
890
|
-
{
|
|
891
|
-
ref: popoverContentRef,
|
|
892
|
-
"data-open": isDropdownOpen,
|
|
893
|
-
"data-disabled": disableSuggestions,
|
|
894
|
-
onMouseDown: () => {
|
|
895
|
-
isDropdownClickingRef.current = true;
|
|
896
|
-
},
|
|
897
|
-
onTouchStart: () => {
|
|
898
|
-
isDropdownClickingRef.current = true;
|
|
899
|
-
},
|
|
900
|
-
children: shouldShowOptions && /* @__PURE__ */ jsx(
|
|
901
|
-
Listbox,
|
|
902
|
-
{
|
|
903
|
-
selected: filteredOptions[selectedOptionIndex],
|
|
904
|
-
onSelectionChange: (selected) => {
|
|
905
|
-
if (selected) {
|
|
906
|
-
handleOptionSelect(selected);
|
|
907
|
-
} else {
|
|
908
|
-
const currentOption = filteredOptions[selectedOptionIndex];
|
|
909
|
-
if (currentOption) {
|
|
910
|
-
handleOptionSelect(currentOption);
|
|
911
|
-
}
|
|
912
|
-
}
|
|
913
|
-
},
|
|
914
|
-
"aria-label": "Time suggestions",
|
|
915
|
-
children: filteredOptions.map((option) => /* @__PURE__ */ jsx(Listbox.Option, { value: option, label: option, children: option }, option))
|
|
916
|
-
}
|
|
917
|
-
)
|
|
918
|
-
}
|
|
919
|
-
)
|
|
920
|
-
]
|
|
921
|
-
}
|
|
922
|
-
);
|
|
866
|
+
);
|
|
867
|
+
if (popoverDisabled) {
|
|
868
|
+
return justTheInput;
|
|
923
869
|
}
|
|
924
|
-
|
|
870
|
+
return /* @__PURE__ */ jsxs(
|
|
871
|
+
Popover,
|
|
872
|
+
{
|
|
873
|
+
open: isDropdownOpen,
|
|
874
|
+
noPadding: true,
|
|
875
|
+
disableCaret: true,
|
|
876
|
+
placement: "bottom-start",
|
|
877
|
+
matchReferenceWidth: true,
|
|
878
|
+
modal: false,
|
|
879
|
+
onClickOutside: () => {
|
|
880
|
+
setIsDropdownOpen(false);
|
|
881
|
+
},
|
|
882
|
+
onClose: () => {
|
|
883
|
+
setIsDropdownOpen(false);
|
|
884
|
+
},
|
|
885
|
+
fitScreen: true,
|
|
886
|
+
maxHeight: 205,
|
|
887
|
+
children: [
|
|
888
|
+
/* @__PURE__ */ jsx(Popover.Trigger, { children: ({ ref: iRef }) => {
|
|
889
|
+
setPopoverTriggerRef(iRef);
|
|
890
|
+
return justTheInput;
|
|
891
|
+
} }),
|
|
892
|
+
/* @__PURE__ */ jsx(
|
|
893
|
+
Popover.Content,
|
|
894
|
+
{
|
|
895
|
+
ref: popoverContentRef,
|
|
896
|
+
"data-open": isDropdownOpen,
|
|
897
|
+
"data-disabled": disableSuggestions,
|
|
898
|
+
onMouseDown: () => {
|
|
899
|
+
isDropdownClickingRef.current = true;
|
|
900
|
+
},
|
|
901
|
+
onTouchStart: () => {
|
|
902
|
+
isDropdownClickingRef.current = true;
|
|
903
|
+
},
|
|
904
|
+
children: shouldShowOptions && /* @__PURE__ */ jsx(
|
|
905
|
+
Listbox,
|
|
906
|
+
{
|
|
907
|
+
selected: filteredOptions[selectedOptionIndex],
|
|
908
|
+
onSelectionChange: (selected) => {
|
|
909
|
+
if (selected) {
|
|
910
|
+
handleOptionSelect(selected);
|
|
911
|
+
} else {
|
|
912
|
+
const currentOption = filteredOptions[selectedOptionIndex];
|
|
913
|
+
if (currentOption) {
|
|
914
|
+
handleOptionSelect(currentOption);
|
|
915
|
+
}
|
|
916
|
+
}
|
|
917
|
+
},
|
|
918
|
+
"aria-label": "Time suggestions",
|
|
919
|
+
children: filteredOptions.map((option) => /* @__PURE__ */ jsx(Listbox.Option, { value: option, label: option, children: option }, option))
|
|
920
|
+
}
|
|
921
|
+
)
|
|
922
|
+
}
|
|
923
|
+
)
|
|
924
|
+
]
|
|
925
|
+
}
|
|
926
|
+
);
|
|
927
|
+
};
|
|
925
928
|
TimeField.displayName = "TimeField";
|
|
926
929
|
|
|
927
930
|
export { TimeField as T };
|
|
928
|
-
//# sourceMappingURL=TimeField-
|
|
931
|
+
//# sourceMappingURL=TimeField-B5Jgy-Zg.js.map
|