@servicetitan/anvil2 3.15.0 → 3.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/dist/{AiMark-D57s1e0T.js → AiMark-BfmK30vL.js} +3 -3
- package/dist/{AiMark-D57s1e0T.js.map → AiMark-BfmK30vL.js.map} +1 -1
- package/dist/AiMark.js +1 -1
- package/dist/{Alert-DExHiAbM.js → Alert-lLo1N7Tj.js} +3 -3
- package/dist/{Alert-DExHiAbM.js.map → Alert-lLo1N7Tj.js.map} +1 -1
- package/dist/Alert.js +1 -1
- package/dist/{Announcement-CGTv6M31.js → Announcement-Cnz80WGx.js} +2 -2
- package/dist/{Announcement-CGTv6M31.js.map → Announcement-Cnz80WGx.js.map} +1 -1
- package/dist/Announcement.js +1 -1
- package/dist/{Breadcrumbs-DtLSS0PJ.js → Breadcrumbs-RdL4Fvmu.js} +2 -2
- package/dist/{Breadcrumbs-DtLSS0PJ.js.map → Breadcrumbs-RdL4Fvmu.js.map} +1 -1
- package/dist/Breadcrumbs.js +1 -1
- package/dist/{Button-Dwh_Nd4l.js → Button-Dn6-01xl.js} +230 -67
- package/dist/Button-Dn6-01xl.js.map +1 -0
- package/dist/Button.js +1 -1
- package/dist/{ButtonToggle-DKDBD1g3.js → ButtonToggle-BSU8GBxr.js} +2 -2
- package/dist/{ButtonToggle-DKDBD1g3.js.map → ButtonToggle-BSU8GBxr.js.map} +1 -1
- package/dist/ButtonToggle.js +1 -1
- package/dist/{Calendar-BUFPc5UN.js → Calendar-DoLRAWLp.js} +2 -2
- package/dist/Calendar-DoLRAWLp.js.map +1 -0
- package/dist/{Calendar-CEf7ke8X.js → Calendar-IzXG1aJw.js} +3 -3
- package/dist/Calendar-IzXG1aJw.js.map +1 -0
- package/dist/Calendar.js +2 -2
- package/dist/{Checkbox-DVy-QESI.js → Checkbox-CVxbe-iN.js} +3 -3
- package/dist/{Checkbox-DVy-QESI.js.map → Checkbox-CVxbe-iN.js.map} +1 -1
- package/dist/{Checkbox-DBE35nMv.js → Checkbox-U-kuWhgc.js} +2 -2
- package/dist/{Checkbox-DBE35nMv.js.map → Checkbox-U-kuWhgc.js.map} +1 -1
- package/dist/Checkbox.js +1 -1
- package/dist/{Chip-B4G4zaP-.js → Chip-2OydLs66.js} +2 -2
- package/dist/{Chip-B4G4zaP-.js.map → Chip-2OydLs66.js.map} +1 -1
- package/dist/Chip.js +1 -1
- package/dist/Combobox.js +1 -1
- package/dist/{DataTable-DbuXfDNJ.js → DataTable-DkEpJ_Op.js} +16 -41
- package/dist/DataTable-DkEpJ_Op.js.map +1 -0
- package/dist/{DateFieldRange-nyj8mtUP.js → DateFieldRange-X2jdOTYY.js} +4 -4
- package/dist/{DateFieldRange-nyj8mtUP.js.map → DateFieldRange-X2jdOTYY.js.map} +1 -1
- package/dist/DateFieldRange.js +1 -1
- package/dist/{DateFieldSingle-BmCghXba.js → DateFieldSingle-BJ16tpOz.js} +4 -4
- package/dist/{DateFieldSingle-BmCghXba.js.map → DateFieldSingle-BJ16tpOz.js.map} +1 -1
- package/dist/DateFieldSingle.js +1 -1
- package/dist/{DateFieldYearless-Df7fA85i.js → DateFieldYearless-CMm8vtz_.js} +4 -4
- package/dist/{DateFieldYearless-Df7fA85i.js.map → DateFieldYearless-CMm8vtz_.js.map} +1 -1
- package/dist/DateFieldYearless.js +1 -1
- package/dist/{DateFieldYearlessRange-DYpY4K1c.js → DateFieldYearlessRange-BHHs-Z1Q.js} +3 -3
- package/dist/{DateFieldYearlessRange-DYpY4K1c.js.map → DateFieldYearlessRange-BHHs-Z1Q.js.map} +1 -1
- package/dist/DateFieldYearlessRange.js +1 -1
- package/dist/{DaysOfTheWeek-CyWGRqFG.js → DaysOfTheWeek-BHXxs0Bo.js} +3 -3
- package/dist/{DaysOfTheWeek-CyWGRqFG.js.map → DaysOfTheWeek-BHXxs0Bo.js.map} +1 -1
- package/dist/DaysOfTheWeek.js +1 -1
- package/dist/{Details-oM-nR4ju.js → Details-BxqP-5vp.js} +11 -9
- package/dist/Details-BxqP-5vp.js.map +1 -0
- package/dist/Details.css +18 -14
- package/dist/Details.js +1 -1
- package/dist/{Dialog-vSiZAR1y.js → Dialog-B9llUKJz.js} +5 -5
- package/dist/{Dialog-vSiZAR1y.js.map → Dialog-B9llUKJz.js.map} +1 -1
- package/dist/Dialog.js +1 -1
- package/dist/{DialogCancelButton-DBL0aKTK.js → DialogCancelButton-C0r8hJ8Z.js} +2 -2
- package/dist/{DialogCancelButton-DBL0aKTK.js.map → DialogCancelButton-C0r8hJ8Z.js.map} +1 -1
- package/dist/{Drawer-B4pxj_2P.js → Drawer-Bjd2XLUX.js} +6 -6
- package/dist/{Drawer-B4pxj_2P.js.map → Drawer-Bjd2XLUX.js.map} +1 -1
- package/dist/Drawer.js +1 -1
- package/dist/DrillDown.js +1 -1
- package/dist/{EditCard-CX1G7G2Q.js → EditCard-B6l2vhBS.js} +3 -3
- package/dist/{EditCard-CX1G7G2Q.js.map → EditCard-B6l2vhBS.js.map} +1 -1
- package/dist/EditCard.js +1 -1
- package/dist/{FieldLabel-CAusaqUY.js → FieldLabel-ThEmUiAq.js} +2 -2
- package/dist/{FieldLabel-CAusaqUY.js.map → FieldLabel-ThEmUiAq.js.map} +1 -1
- package/dist/FieldLabel.js +1 -1
- package/dist/{FilterBar-CKYf-1oU.js → FilterBar-ecqJDraA.js} +7 -7
- package/dist/FilterBar-ecqJDraA.js.map +1 -0
- package/dist/FilterBar.js +1 -1
- package/dist/{InputMask-xMpquXPU.js → InputMask-BQigi5oW.js} +3 -3
- package/dist/{InputMask-xMpquXPU.js.map → InputMask-BQigi5oW.js.map} +1 -1
- package/dist/InputMask.js +1 -1
- package/dist/{InteractiveCard-C0g5PxB6.js → InteractiveCard-C2CYRtgQ.js} +3 -3
- package/dist/InteractiveCard-C2CYRtgQ.js.map +1 -0
- package/dist/InteractiveCard.js +1 -1
- package/dist/{ListView-D6l1KY92.js → ListView-YJscfG4x.js} +2 -2
- package/dist/{ListView-D6l1KY92.js.map → ListView-YJscfG4x.js.map} +1 -1
- package/dist/ListView.js +1 -1
- package/dist/{Listbox-Dep1eJ3u.js → Listbox-CD9ZptSZ.js} +2 -2
- package/dist/{Listbox-Dep1eJ3u.js.map → Listbox-CD9ZptSZ.js.map} +1 -1
- package/dist/Listbox.js +1 -1
- package/dist/{Menu-eLxQwmZk.js → Menu-Da2OEN0o.js} +2 -2
- package/dist/{Menu-eLxQwmZk.js.map → Menu-Da2OEN0o.js.map} +1 -1
- package/dist/Menu.js +1 -1
- package/dist/{MenuFooter-fGSZYh8e.js → MenuFooter-D__gg92C.js} +2 -2
- package/dist/{MenuFooter-fGSZYh8e.js.map → MenuFooter-D__gg92C.js.map} +1 -1
- package/dist/MultiSelectField.js +1 -1
- package/dist/{MultiSelectFieldSync-ZNoNOm6d.js → MultiSelectFieldSync-DpPO0cya.js} +7 -7
- package/dist/{MultiSelectFieldSync-ZNoNOm6d.js.map → MultiSelectFieldSync-DpPO0cya.js.map} +1 -1
- package/dist/MultiSelectMenu.js +1 -1
- package/dist/{MultiSelectMenuSync-DrgqaUJj.js → MultiSelectMenuSync-BN_3moW_.js} +5 -5
- package/dist/{MultiSelectMenuSync-DrgqaUJj.js.map → MultiSelectMenuSync-BN_3moW_.js.map} +1 -1
- package/dist/{NumberField-D5ZzEHg1.js → NumberField-CxmJx4gs.js} +4 -4
- package/dist/{NumberField-D5ZzEHg1.js.map → NumberField-CxmJx4gs.js.map} +1 -1
- package/dist/NumberField.js +1 -1
- package/dist/{Page-B2HZzNGP.js → Page-IZ4p51iJ.js} +19 -188
- package/dist/Page-IZ4p51iJ.js.map +1 -0
- package/dist/Page.js +1 -1
- package/dist/{Pagination-CAgXtt9t.js → Pagination-Su4VBAhT.js} +5 -5
- package/dist/{Pagination-CAgXtt9t.js.map → Pagination-Su4VBAhT.js.map} +1 -1
- package/dist/Pagination.js +1 -1
- package/dist/{Popover-CjL2ixjB.js → Popover-CIh1CsoJ.js} +3 -3
- package/dist/{Popover-CjL2ixjB.js.map → Popover-CIh1CsoJ.js.map} +1 -1
- package/dist/Popover.js +1 -1
- package/dist/{ProgressBar-ClKcOcXq.js → ProgressBar-TQ0fPmn9.js} +2 -2
- package/dist/{ProgressBar-ClKcOcXq.js.map → ProgressBar-TQ0fPmn9.js.map} +1 -1
- package/dist/ProgressBar.js +1 -1
- package/dist/{Radio-_ftIQSru.js → Radio-BYowelK2.js} +3 -3
- package/dist/{Radio-_ftIQSru.js.map → Radio-BYowelK2.js.map} +1 -1
- package/dist/{Radio-C2BJqWlV.js → Radio-C1VnatcL.js} +2 -2
- package/dist/{Radio-C2BJqWlV.js.map → Radio-C1VnatcL.js.map} +1 -1
- package/dist/Radio.js +1 -1
- package/dist/{RichTextEditor-TcZUnqcp.js → RichTextEditor-BpzUo8dB.js} +12 -17
- package/dist/RichTextEditor-BpzUo8dB.js.map +1 -0
- package/dist/RichTextEditor.js +1 -1
- package/dist/{SavedFiltersButton-B8lf3L2T.js → SavedFiltersButton-D9GJbJQu.js} +10 -24
- package/dist/SavedFiltersButton-D9GJbJQu.js.map +1 -0
- package/dist/SavedFiltersButton.js +1 -1
- package/dist/{SegmentedControl-CtKoYHoO.js → SegmentedControl-BHVJmmTH.js} +3 -3
- package/dist/{SegmentedControl-CtKoYHoO.js.map → SegmentedControl-BHVJmmTH.js.map} +1 -1
- package/dist/SegmentedControl.js +1 -1
- package/dist/{SelectCard-BwIbfore.js → SelectCard-DrmMU_GD.js} +3 -3
- package/dist/{SelectCard-BwIbfore.js.map → SelectCard-DrmMU_GD.js.map} +1 -1
- package/dist/SelectCard.js +1 -1
- package/dist/SelectField.js +1 -1
- package/dist/{SelectFieldLabel-7VTZ83QJ.js → SelectFieldLabel-BxsKvfqo.js} +2 -2
- package/dist/{SelectFieldLabel-7VTZ83QJ.js.map → SelectFieldLabel-BxsKvfqo.js.map} +1 -1
- package/dist/{SelectFieldSync-CB75kkka.js → SelectFieldSync-BN2ebLWT.js} +6 -6
- package/dist/{SelectFieldSync-CB75kkka.js.map → SelectFieldSync-BN2ebLWT.js.map} +1 -1
- package/dist/SelectMenu.js +1 -1
- package/dist/{SelectMenuSync-DIMfovCI.js → SelectMenuSync-DuPf8KCc.js} +5 -5
- package/dist/{SelectMenuSync-DIMfovCI.js.map → SelectMenuSync-DuPf8KCc.js.map} +1 -1
- package/dist/{SelectOptions-si_rVLEZ.js → SelectOptions-BK7kNjYM.js} +2 -2
- package/dist/{SelectOptions-si_rVLEZ.js.map → SelectOptions-BK7kNjYM.js.map} +1 -1
- package/dist/{SelectTrigger-C3-Cne3D.js → SelectTrigger-B5h-aqhl.js} +2 -2
- package/dist/{SelectTrigger-C3-Cne3D.js.map → SelectTrigger-B5h-aqhl.js.map} +1 -1
- package/dist/SelectTrigger.js +1 -1
- package/dist/{SelectTriggerBase-BnsTYWVb.js → SelectTriggerBase-SML2Mlt-.js} +4 -4
- package/dist/{SelectTriggerBase-BnsTYWVb.js.map → SelectTriggerBase-SML2Mlt-.js.map} +1 -1
- package/dist/{Stepper-C-QC9QHx.js → Stepper-l_P6VPOv.js} +3 -3
- package/dist/{Stepper-C-QC9QHx.js.map → Stepper-l_P6VPOv.js.map} +1 -1
- package/dist/Stepper.js +1 -1
- package/dist/{Switch-DWq4QI8M.js → Switch-1iNdXTik.js} +2 -2
- package/dist/{Switch-DWq4QI8M.js.map → Switch-1iNdXTik.js.map} +1 -1
- package/dist/Switch.js +1 -1
- package/dist/{Tab-mXEQ0ifM.js → Tab-DR5YYXkq.js} +124 -19
- package/dist/Tab-DR5YYXkq.js.map +1 -0
- package/dist/Tab.js +1 -1
- package/dist/Table.js +1 -1
- package/dist/{Text-dONmlARH.js → Text-rihxXHSe.js} +2 -2
- package/dist/{Text-dONmlARH.js.map → Text-rihxXHSe.js.map} +1 -1
- package/dist/Text.js +1 -1
- package/dist/{TextField-CtXjbtqa.js → TextField-Bxd-Qzoi.js} +2 -2
- package/dist/{TextField-CtXjbtqa.js.map → TextField-Bxd-Qzoi.js.map} +1 -1
- package/dist/{TextField-CQ7e3mC4.js → TextField-vuS7xeo-.js} +3 -3
- package/dist/{TextField-CQ7e3mC4.js.map → TextField-vuS7xeo-.js.map} +1 -1
- package/dist/TextField.js +1 -1
- package/dist/{Textarea-DGVHQktZ.js → Textarea-ppapJUwh.js} +3 -3
- package/dist/{Textarea-DGVHQktZ.js.map → Textarea-ppapJUwh.js.map} +1 -1
- package/dist/Textarea.js +1 -1
- package/dist/{TimeField-AttXPsQw.js → TimeField-Hwt_oRbg.js} +4 -4
- package/dist/{TimeField-AttXPsQw.js.map → TimeField-Hwt_oRbg.js.map} +1 -1
- package/dist/TimeField.js +1 -1
- package/dist/Toast.js +2 -2
- package/dist/{Toaster-CNtAl-tF.js → Toaster-BryQmKe1.js} +4 -4
- package/dist/{Toaster-CNtAl-tF.js.map → Toaster-BryQmKe1.js.map} +1 -1
- package/dist/{Toaster-DYO8NLTo.js → Toaster-BtP_HezK.js} +2 -2
- package/dist/{Toaster-DYO8NLTo.js.map → Toaster-BtP_HezK.js.map} +1 -1
- package/dist/{Toolbar-BIbbaCxh.js → Toolbar-CMulzswf.js} +5 -5
- package/dist/{Toolbar-BIbbaCxh.js.map → Toolbar-CMulzswf.js.map} +1 -1
- package/dist/{Toolbar-B_lHD0c2.js → Toolbar-DGHZpFi9.js} +11 -105
- package/dist/Toolbar-DGHZpFi9.js.map +1 -0
- package/dist/Toolbar.js +2 -2
- package/dist/{ToolbarButtonToggle-BMBmBdw1.js → ToolbarButtonToggle-T8YnSJ5x.js} +2 -3
- package/dist/ToolbarButtonToggle-T8YnSJ5x.js.map +1 -0
- package/dist/TreeSelectField.js +1 -1
- package/dist/{TreeSelectFieldSync-CKnFwROC.js → TreeSelectFieldSync-C0mXwYZL.js} +7 -7
- package/dist/TreeSelectFieldSync-C0mXwYZL.js.map +1 -0
- package/dist/TreeSelectMenu.js +1 -1
- package/dist/{TreeSelectMenuSync-CK-x2_ne.js → TreeSelectMenuSync-D2TvKxP-.js} +4 -4
- package/dist/TreeSelectMenuSync-D2TvKxP-.js.map +1 -0
- package/dist/{TypeaheadTextField-DqnUGXj0.js → TypeaheadTextField-DgazozK7.js} +10 -19
- package/dist/TypeaheadTextField-DgazozK7.js.map +1 -0
- package/dist/TypeaheadTextField.js +1 -1
- package/dist/{YearlessDateInputWithPicker-aI4UIyMD.js → YearlessDateInputWithPicker-Bc8a33D5.js} +2 -2
- package/dist/{YearlessDateInputWithPicker-aI4UIyMD.js.map → YearlessDateInputWithPicker-Bc8a33D5.js.map} +1 -1
- package/dist/beta.js +18 -18
- package/dist/{bulkActionTypes-sbwWLsDi.js → bulkActionTypes-D5y3Acn1.js} +2 -2
- package/dist/{bulkActionTypes-sbwWLsDi.js.map → bulkActionTypes-D5y3Acn1.js.map} +1 -1
- package/dist/{filter-state-DW8YmRHb.js → filter-state-Do862BNr.js} +55 -37
- package/dist/filter-state-Do862BNr.js.map +1 -0
- package/dist/{index-Cw2HFh0a.js → index-Dt0zG4YB.js} +2 -2
- package/dist/{index-Cw2HFh0a.js.map → index-Dt0zG4YB.js.map} +1 -1
- package/dist/index.js +49 -49
- package/dist/{proxy-DEehATlA.js → react-ORV84FjM.js} +6862 -5814
- package/dist/react-ORV84FjM.js.map +1 -0
- package/dist/src/beta/components/Calendar/Calendar.d.ts +8 -17
- package/dist/src/beta/components/Calendar/CalendarBetaPropsContext.d.ts +1 -0
- package/dist/src/beta/components/Calendar/useCalendarBetaProps.d.ts +1 -0
- package/dist/src/beta/components/FilterBar/FilterBar.d.ts +12 -53
- package/dist/src/beta/components/FilterBar/FilterDateList.d.ts +8 -0
- package/dist/src/beta/components/FilterBar/FilterDateRange.d.ts +15 -9
- package/dist/src/beta/components/FilterBar/FilterDateSingle.d.ts +15 -9
- package/dist/src/beta/components/FilterBar/FilterDrawer.d.ts +1 -14
- package/dist/src/beta/components/FilterBar/FilterItemWrapper.d.ts +0 -7
- package/dist/src/beta/components/FilterBar/FilterNumericRange.d.ts +4 -13
- package/dist/src/beta/components/FilterBar/FilterPopoverButton.d.ts +6 -8
- package/dist/src/beta/components/FilterBar/FilterSearchField.d.ts +3 -6
- package/dist/src/beta/components/FilterBar/FilterTextInput.d.ts +4 -13
- package/dist/src/beta/components/FilterBar/FilterToggleButton.d.ts +3 -14
- package/dist/src/beta/components/FilterBar/FilterTriggerButton.d.ts +3 -3
- package/dist/src/beta/components/FilterBar/internal/FilterGroupContext.d.ts +6 -20
- package/dist/src/beta/components/FilterBar/internal/adapters/index.d.ts +3 -8
- package/dist/src/beta/components/FilterBar/internal/adapters/types.d.ts +7 -19
- package/dist/src/beta/components/FilterBar/internal/types.d.ts +48 -57
- package/dist/src/beta/components/FilterBar/internal/utils/dateConstraints.d.ts +3 -3
- package/dist/src/beta/components/FilterBar/internal/utils/dateListLibraryOptions.d.ts +4 -7
- package/dist/src/beta/components/FilterBar/internal/utils/filter-state.d.ts +3 -24
- package/dist/src/beta/components/InteractiveCard/InteractiveCard.d.ts +2 -47
- package/dist/src/beta/components/InteractiveCard/types.d.ts +13 -71
- package/dist/src/beta/components/Page/Page.d.ts +8 -166
- package/dist/src/beta/components/Page/PageContent.d.ts +3 -17
- package/dist/src/beta/components/Page/PageContext.d.ts +9 -0
- package/dist/src/beta/components/Page/PageFooter.d.ts +2 -15
- package/dist/src/beta/components/Page/PageHeader.d.ts +38 -91
- package/dist/src/beta/components/Page/PagePanel.d.ts +17 -115
- package/dist/src/beta/components/Page/PagePanelContent.d.ts +5 -37
- package/dist/src/beta/components/Page/PagePanelFooter.d.ts +4 -27
- package/dist/src/beta/components/Page/PagePanelHeader.d.ts +3 -16
- package/dist/src/beta/components/Page/PageSidebar.d.ts +8 -41
- package/dist/src/beta/components/Page/PageSidebarHeader.d.ts +2 -20
- package/dist/src/beta/components/Page/internal/PagePanelContext.d.ts +1 -6
- package/dist/src/beta/components/Page/pageBreakpoint.d.ts +5 -18
- package/dist/src/beta/components/RichTextEditor/RichTextEditor.d.ts +2 -25
- package/dist/src/beta/components/RichTextEditor/internal/LinkPopover.d.ts +1 -0
- package/dist/src/beta/components/RichTextEditor/internal/MentionList.d.ts +1 -0
- package/dist/src/beta/components/RichTextEditor/internal/MentionPopover.d.ts +1 -0
- package/dist/src/beta/components/RichTextEditor/internal/RichTextEditorToolbar.d.ts +1 -0
- package/dist/src/beta/components/RichTextEditor/internal/YouTubeEmbedPrompt.d.ts +1 -0
- package/dist/src/beta/components/RichTextEditor/internal/YouTubePopover.d.ts +1 -0
- package/dist/src/beta/components/RichTextEditor/internal/extensions/ImageUploadExtension.d.ts +1 -0
- package/dist/src/beta/components/RichTextEditor/internal/extensions/LinkKeyboardShortcutExtension.d.ts +1 -0
- package/dist/src/beta/components/RichTextEditor/internal/extensions/MentionExtension.d.ts +5 -0
- package/dist/src/beta/components/RichTextEditor/internal/extensions/SafeImageExtension.d.ts +3 -10
- package/dist/src/beta/components/RichTextEditor/internal/extensions/YoutubeExtension.d.ts +4 -0
- package/dist/src/beta/components/RichTextEditor/internal/useRichTextEditor.d.ts +3 -17
- package/dist/src/beta/components/RichTextEditor/types.d.ts +46 -71
- package/dist/src/beta/components/SavedFiltersButton/SavedFiltersButton.d.ts +2 -33
- package/dist/src/beta/components/SavedFiltersButton/internal/AddSavedFilterDrawer.d.ts +2 -12
- package/dist/src/beta/components/SavedFiltersButton/internal/EditSavedFiltersDrawer.d.ts +2 -20
- package/dist/src/beta/components/SavedFiltersButton/parts.d.ts +0 -23
- package/dist/src/beta/components/SavedFiltersButton/types.d.ts +36 -85
- package/dist/src/beta/components/Table/DataTable/DataTable.d.ts +34 -84
- package/dist/src/beta/components/Table/DataTable/internal/DataTableBody.d.ts +15 -22
- package/dist/src/beta/components/Table/DataTable/internal/DataTableBodyRow.d.ts +47 -18
- package/dist/src/beta/components/Table/DataTable/internal/DataTableCellAffordance.d.ts +8 -0
- package/dist/src/beta/components/Table/DataTable/internal/DataTableFooter.d.ts +17 -23
- package/dist/src/beta/components/Table/DataTable/internal/DataTableHeader.d.ts +6 -9
- package/dist/src/beta/components/Table/DataTable/internal/DataTablePagination.d.ts +16 -0
- package/dist/src/beta/components/Table/DataTable/internal/cells/CellFocusContext.d.ts +2 -11
- package/dist/src/beta/components/Table/DataTable/internal/cells/CellStatus.d.ts +7 -5
- package/dist/src/beta/components/Table/DataTable/internal/cells/DataTableBodyCell.d.ts +4 -8
- package/dist/src/beta/components/Table/DataTable/internal/cells/DataTableBodyImmutableCell.d.ts +4 -17
- package/dist/src/beta/components/Table/DataTable/internal/cells/DataTableBodyMutableCell.d.ts +4 -18
- package/dist/src/beta/components/Table/DataTable/internal/cells/DataTableFooterCell.d.ts +3 -10
- package/dist/src/beta/components/Table/DataTable/internal/cells/DataTableHeaderCell.d.ts +3 -15
- package/dist/src/beta/components/Table/DataTable/internal/cells/DataTableOverflowCell.d.ts +4 -0
- package/dist/src/beta/components/Table/DataTable/internal/cells/useCellFocusListener.d.ts +2 -6
- package/dist/src/beta/components/Table/DataTable/internal/constants.d.ts +13 -30
- package/dist/src/beta/components/Table/DataTable/internal/context/focus/DTFocusContext.d.ts +1 -6
- package/dist/src/beta/components/Table/DataTable/internal/context/focus/DTFocusProvider.d.ts +3 -0
- package/dist/src/beta/components/Table/DataTable/internal/context/focus/useDTFocusDispatchContext.d.ts +1 -0
- package/dist/src/beta/components/Table/DataTable/internal/context/focus/useDTFocusStateContext.d.ts +1 -0
- package/dist/src/beta/components/Table/DataTable/internal/context/rowClick/DataTableRowClickContext.d.ts +2 -5
- package/dist/src/beta/components/Table/DataTable/internal/context/rowClick/DataTableRowClickProvider.d.ts +2 -5
- package/dist/src/beta/components/Table/DataTable/internal/context/rowClick/useDataTableRowClick.d.ts +1 -0
- package/dist/src/beta/components/Table/DataTable/internal/context/surface/DataTableSurfaceCoordinatorContext.d.ts +4 -0
- package/dist/src/beta/components/Table/DataTable/internal/context/surface/DataTableSurfaceCoordinatorProvider.d.ts +1 -0
- package/dist/src/beta/components/Table/DataTable/internal/context/surface/useDataTableSurfaceCoordinator.d.ts +1 -0
- package/dist/src/beta/components/Table/DataTable/internal/dataTableCellAffordanceHostClassName.d.ts +1 -0
- package/dist/src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableBooleanCell.d.ts +6 -0
- package/dist/src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableCellEditIcon.d.ts +1 -4
- package/dist/src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableCustomCell.d.ts +4 -0
- package/dist/src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableMultiselectAsyncCell.d.ts +5 -25
- package/dist/src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableMultiselectCell.d.ts +3 -13
- package/dist/src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableNumberCell.d.ts +4 -0
- package/dist/src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableSelectAsyncCell.d.ts +5 -0
- package/dist/src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableSelectCell.d.ts +4 -0
- package/dist/src/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableTextCell.d.ts +4 -0
- package/dist/src/beta/components/Table/DataTable/internal/editable-cells/types.d.ts +7 -20
- package/dist/src/beta/components/Table/DataTable/internal/editable-cells/useCustomEditHelpers.d.ts +13 -26
- package/dist/src/beta/components/Table/DataTable/internal/editable-cells/useEditableMenuCell.d.ts +2 -10
- package/dist/src/beta/components/Table/DataTable/internal/useAsyncData.d.ts +8 -0
- package/dist/src/beta/components/Table/DataTable/internal/useColumnOrder.d.ts +2 -2
- package/dist/src/beta/components/Table/DataTable/internal/useDataTableVirtualizer.d.ts +7 -18
- package/dist/src/beta/components/Table/DataTable/internal/usePageDataCache.d.ts +6 -10
- package/dist/src/beta/components/Table/DataTable/internal/util/cellPositionHelpers.d.ts +0 -3
- package/dist/src/beta/components/Table/DataTable/internal/util/cellTypeHelpers.d.ts +7 -24
- package/dist/src/beta/components/Table/DataTable/internal/util/getCellInteractives.d.ts +4 -17
- package/dist/src/beta/components/Table/DataTable/internal/util/getTanStackColumnDef.d.ts +5 -29
- package/dist/src/beta/components/Table/DataTable/internal/util/shallowSortingEqual.d.ts +1 -0
- package/dist/src/beta/components/Table/DataTable/parts.d.ts +3 -17
- package/dist/src/beta/components/Table/DataTable/types.d.ts +41 -64
- package/dist/src/beta/components/Table/base/TableBase.d.ts +8 -26
- package/dist/src/beta/components/Table/base/TableBody.d.ts +5 -14
- package/dist/src/beta/components/Table/base/TableContainer.d.ts +1 -11
- package/dist/src/beta/components/Table/base/TableFooter.d.ts +5 -14
- package/dist/src/beta/components/Table/base/TableHeader.d.ts +5 -14
- package/dist/src/beta/components/Table/base/cells/TableBodyCell.d.ts +4 -13
- package/dist/src/beta/components/Table/base/cells/TableEmptyCellContent.d.ts +1 -1
- package/dist/src/beta/components/Table/base/cells/TableFooterCell.d.ts +5 -13
- package/dist/src/beta/components/Table/base/cells/TableHeaderCell.d.ts +8 -25
- package/dist/src/beta/components/Table/base/cells/types.d.ts +2 -6
- package/dist/src/beta/components/Table/columnTypeDefaults.d.ts +7 -36
- package/dist/src/beta/components/Table/createColumnHelper.d.ts +38 -153
- package/dist/src/beta/components/Table/formatters/booleanFormatter.d.ts +4 -15
- package/dist/src/beta/components/Table/formatters/chipsFormatter.d.ts +7 -9
- package/dist/src/beta/components/Table/formatters/currencyFormatter.d.ts +3 -15
- package/dist/src/beta/components/Table/formatters/dateFormatter.d.ts +10 -23
- package/dist/src/beta/components/Table/formatters/dateTimeFormatter.d.ts +23 -46
- package/dist/src/beta/components/Table/formatters/htmlFormatter.d.ts +2 -11
- package/dist/src/beta/components/Table/formatters/htmlToMarkdown.d.ts +5 -10
- package/dist/src/beta/components/Table/formatters/markdownFormatter.d.ts +3 -8
- package/dist/src/beta/components/Table/formatters/numberFormatter.d.ts +8 -27
- package/dist/src/beta/components/Table/formatters/percentFormatter.d.ts +4 -15
- package/dist/src/beta/components/Table/formatters/presets.d.ts +4 -12
- package/dist/src/beta/components/Table/formatters/timeFormatter.d.ts +7 -17
- package/dist/src/beta/components/Table/formatters/yearlessDateFormatter.d.ts +9 -21
- package/dist/src/beta/components/Table/internal/ResizeHandle.d.ts +5 -9
- package/dist/src/beta/components/Table/internal/TruncateChips.d.ts +2 -11
- package/dist/src/beta/components/Table/internal/getCommonPinningClasses.d.ts +2 -1
- package/dist/src/beta/components/Table/internal/getCommonPinningStyles.d.ts +6 -2
- package/dist/src/beta/components/Table/internal/scrollCellIntoView.d.ts +3 -7
- package/dist/src/beta/components/Table/internal/types.d.ts +2 -7
- package/dist/src/beta/components/Table/types.d.ts +183 -462
- package/dist/src/beta/components/Toolbar/Toolbar.d.ts +35 -267
- package/dist/src/beta/components/Toolbar/ToolbarButton.d.ts +5 -26
- package/dist/src/beta/components/Toolbar/ToolbarButtonLink.d.ts +5 -28
- package/dist/src/beta/components/Toolbar/ToolbarButtonToggle.d.ts +5 -27
- package/dist/src/beta/components/Toolbar/ToolbarControlGroup.d.ts +6 -8
- package/dist/src/beta/components/Toolbar/ToolbarSearchField.d.ts +3 -14
- package/dist/src/beta/components/Toolbar/ToolbarSelect.d.ts +13 -65
- package/dist/src/beta/components/Toolbar/internal/ToolbarContext.d.ts +0 -32
- package/dist/src/beta/components/Toolbar/internal/ToolbarItemOverflowContext.d.ts +0 -13
- package/dist/src/beta/components/Toolbar/internal/ToolbarItemWrapper.d.ts +2 -28
- package/dist/src/beta/components/Toolbar/internal/ToolbarOverflowMenu.d.ts +4 -21
- package/dist/src/beta/components/Toolbar/internal/utils/accessibility.d.ts +7 -15
- package/dist/src/beta/components/Toolbar/types.d.ts +7 -26
- package/dist/src/beta/components/TreeSelectField/TreeSelectField.d.ts +2 -23
- package/dist/src/beta/components/TreeSelectField/TreeSelectFieldSync.d.ts +10 -46
- package/dist/src/beta/components/TreeSelectField/internal/TreeContent.d.ts +5 -21
- package/dist/src/beta/components/TreeSelectField/internal/TreePanel.d.ts +1 -38
- package/dist/src/beta/components/TreeSelectField/internal/TreeRow.d.ts +6 -38
- package/dist/src/beta/components/TreeSelectField/internal/TreeSelectFieldInput.d.ts +2 -50
- package/dist/src/beta/components/TreeSelectField/internal/VirtualizedTreePanel.d.ts +2 -39
- package/dist/src/beta/components/TreeSelectField/internal/treeSync.d.ts +6 -21
- package/dist/src/beta/components/TreeSelectField/internal/treeUtils.d.ts +3 -19
- package/dist/src/beta/components/TreeSelectField/internal/useTree.d.ts +9 -50
- package/dist/src/beta/components/TreeSelectField/internal/useTreeCascade.d.ts +8 -79
- package/dist/src/beta/components/TreeSelectField/internal/useTreeKeyboard.d.ts +3 -29
- package/dist/src/beta/components/TreeSelectField/internal/useTreeLazyCascade.d.ts +8 -36
- package/dist/src/beta/components/TreeSelectField/internal/useTreeLoader.d.ts +10 -34
- package/dist/src/beta/components/TreeSelectField/parts.d.ts +3 -9
- package/dist/src/beta/components/TreeSelectField/types.d.ts +82 -68
- package/dist/src/beta/components/TreeSelectMenu/TreeSelectMenu.d.ts +4 -18
- package/dist/src/beta/components/TreeSelectMenu/TreeSelectMenuSync.d.ts +9 -47
- package/dist/src/beta/components/TreeSelectMenu/parts.d.ts +4 -4
- package/dist/src/beta/components/TreeSelectMenu/types.d.ts +44 -54
- package/dist/src/beta/components/TypeaheadTextField/TypeaheadTextField.d.ts +15 -43
- package/dist/src/beta/components/TypeaheadTextField/internal/SuggestionItem.d.ts +1 -18
- package/dist/src/beta/hooks/useAdaptiveView/useAdaptiveView.d.ts +6 -41
- package/dist/src/integration-testing/stepper-panel-flicker.spec.d.ts +1 -0
- package/dist/{stripInlineMarkdown-DmU2adBb.js → stripInlineMarkdown-BhYLEiXu.js} +2 -2
- package/dist/{stripInlineMarkdown-DmU2adBb.js.map → stripInlineMarkdown-BhYLEiXu.js.map} +1 -1
- package/dist/{syncFilterUtils-CP4dhWVs.js → syncFilterUtils-ClEj4Oeg.js} +4 -4
- package/dist/{syncFilterUtils-CP4dhWVs.js.map → syncFilterUtils-ClEj4Oeg.js.map} +1 -1
- package/dist/{treeSync-CDrgjuw8.js → treeSync-B38r1dRQ.js} +5 -11
- package/dist/treeSync-B38r1dRQ.js.map +1 -0
- package/dist/{use-reduced-motion-CqjZZ5QB.js → use-reduced-motion-yYB9Tb0D.js} +2 -2
- package/dist/use-reduced-motion-yYB9Tb0D.js.map +1 -0
- package/dist/{useDrilldown-DV4qyVOI.js → useDrilldown-BOeeNUsy.js} +4 -4
- package/dist/{useDrilldown-DV4qyVOI.js.map → useDrilldown-BOeeNUsy.js.map} +1 -1
- package/dist/{useInfiniteCombobox-DvyQpdwv.js → useInfiniteCombobox-7oIT2Mzn.js} +4 -4
- package/dist/{useInfiniteCombobox-DvyQpdwv.js.map → useInfiniteCombobox-7oIT2Mzn.js.map} +1 -1
- package/dist/{useInitialFocus-0TZ78bPz.js → useInitialFocus-CGybEc6x.js} +2 -2
- package/dist/{useInitialFocus-0TZ78bPz.js.map → useInitialFocus-CGybEc6x.js.map} +1 -1
- package/dist/{useInvalidateOnOptionsChange-D3KWg4qK.js → useInvalidateOnOptionsChange-BD2VBpbK.js} +5 -5
- package/dist/useInvalidateOnOptionsChange-BD2VBpbK.js.map +1 -0
- package/dist/{usePopoverTransitionStates-B1opfxxn.js → usePopoverTransitionStates-CDXCdyKa.js} +2 -1
- package/dist/{usePopoverTransitionStates-B1opfxxn.js.map → usePopoverTransitionStates-CDXCdyKa.js.map} +1 -1
- package/package.json +6 -4
- package/dist/Button-Dwh_Nd4l.js.map +0 -1
- package/dist/Calendar-BUFPc5UN.js.map +0 -1
- package/dist/Calendar-CEf7ke8X.js.map +0 -1
- package/dist/DataTable-DbuXfDNJ.js.map +0 -1
- package/dist/Details-oM-nR4ju.js.map +0 -1
- package/dist/FilterBar-CKYf-1oU.js.map +0 -1
- package/dist/InteractiveCard-C0g5PxB6.js.map +0 -1
- package/dist/Page-B2HZzNGP.js.map +0 -1
- package/dist/RichTextEditor-TcZUnqcp.js.map +0 -1
- package/dist/SavedFiltersButton-B8lf3L2T.js.map +0 -1
- package/dist/Tab-mXEQ0ifM.js.map +0 -1
- package/dist/Toolbar-B_lHD0c2.js.map +0 -1
- package/dist/ToolbarButtonToggle-BMBmBdw1.js.map +0 -1
- package/dist/TreeSelectFieldSync-CKnFwROC.js.map +0 -1
- package/dist/TreeSelectMenuSync-CK-x2_ne.js.map +0 -1
- package/dist/TypeaheadTextField-DqnUGXj0.js.map +0 -1
- package/dist/filter-state-DW8YmRHb.js.map +0 -1
- package/dist/proxy-DEehATlA.js.map +0 -1
- package/dist/treeSync-CDrgjuw8.js.map +0 -1
- package/dist/use-reduced-motion-CqjZZ5QB.js.map +0 -1
- package/dist/useInvalidateOnOptionsChange-D3KWg4qK.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"YearlessDateInputWithPicker-aI4UIyMD.js","sources":["../src/components/DateFieldYearless/parts.ts","../src/components/DateFieldYearless/internal/PickerListOption.tsx","../src/components/DateFieldYearless/internal/PickerList.tsx","../src/components/DateFieldYearless/internal/utils.ts","../src/components/DateFieldYearless/internal/YearlessDateSelectionPopover.tsx","../src/components/DateFieldYearless/internal/maskito/yearlessDateSegmentsStepping.ts","../src/components/DateFieldYearless/internal/maskito/yearlessDatePlaceholderMask.ts","../src/components/DateFieldYearless/internal/YearlessDateInput.tsx","../src/components/DateFieldYearless/internal/YearlessDateInputWithPicker.tsx"],"sourcesContent":["import { COMMON_PART } from \"../../internal/constants/anvParts\";\n\n/**\n * `data-anv-part` names for DateFieldYearless interactive sub-elements.\n *\n * The picker popover and month/day lists render in the top layer outside the\n * input subtree, so consumers must target their part attributes directly.\n */\nexport const PARTS = {\n input: COMMON_PART.dateInput,\n popover: COMMON_PART.popover,\n monthList: \"month-list\",\n dayList: \"day-list\",\n option: COMMON_PART.option,\n} as const;\n","import {\n type ComponentPropsWithoutRef,\n forwardRef,\n type MouseEvent,\n} from \"react\";\nimport { Icon } from \"../../Icon\";\nimport { Flex, type FlexProps } from \"../../Flex\";\nimport Check from \"@servicetitan/hammer-icon/mdi/round/check.svg\";\nimport { ANV_PART_ATTR } from \"../../../internal/constants/anvParts\";\nimport type { DataTrackingId } from \"../../../types\";\nimport { PARTS } from \"../parts\";\n\nimport cx from \"classnames\";\nimport styles from \"./PickerList.module.scss\";\n\nexport type PickerListOptionProps = ComponentPropsWithoutRef<\"li\"> & {\n /** Option label, numeric value, and whether it cannot be chosen. */\n item: { label: string; value: number; disabled?: boolean };\n isSelected: boolean;\n /** Called with the item, or `undefined` when a selected option is clicked again. */\n onSelectionChange: (\n selected: { label: string; value: number } | undefined,\n ) => void;\n alignItems?: FlexProps[\"alignItems\"];\n justifyItems?: FlexProps[\"justifyItems\"];\n alignContent?: FlexProps[\"alignContent\"];\n justifyContent?: FlexProps[\"justifyContent\"];\n placeItems?: FlexProps[\"placeItems\"];\n placeContent?: FlexProps[\"placeContent\"];\n} & DataTrackingId;\n\n/** One month or day option in a {@link PickerList}. */\nexport const PickerListOption = forwardRef<\n HTMLLIElement,\n PickerListOptionProps\n>((props, ref) => {\n const {\n className,\n children,\n onClick,\n item,\n isSelected,\n onSelectionChange,\n alignItems,\n justifyItems,\n alignContent,\n justifyContent,\n placeItems,\n placeContent,\n ...rest\n } = props;\n\n const disabled = item.disabled || false;\n\n const handleSelection = () => {\n if (disabled) return;\n\n if (isSelected) {\n onSelectionChange(undefined);\n } else {\n onSelectionChange(item);\n }\n };\n\n const onClickHandler = (e: MouseEvent<HTMLLIElement>) => {\n onClick?.(e);\n handleSelection();\n };\n\n const onKeyDownHandler = (e: React.KeyboardEvent<HTMLLIElement>) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleSelection();\n }\n };\n\n const PickerListOptionClassNames = cx(\n styles[\"picker-list-option\"],\n className,\n );\n\n return (\n <li\n className={PickerListOptionClassNames}\n data-anv=\"picker-list-option\"\n role=\"option\"\n aria-disabled={disabled}\n aria-selected={isSelected}\n data-item-label={item.label}\n data-id={item.value}\n onClick={onClickHandler}\n onKeyDown={onKeyDownHandler}\n tabIndex={-1}\n ref={ref}\n {...rest}\n {...{ [ANV_PART_ATTR]: PARTS.option }}\n >\n <Flex\n className={styles[\"children\"]}\n grow={1}\n shrink={1}\n alignItems={alignItems}\n justifyItems={justifyItems}\n alignContent={alignContent}\n justifyContent={justifyContent}\n placeItems={placeItems}\n placeContent={placeContent}\n >\n {children || item.label}\n </Flex>\n <Icon\n aria-hidden\n svg={Check}\n inherit\n className={styles[\"Icon\"]}\n style={{ opacity: isSelected ? 1 : 0 }}\n />\n </li>\n );\n});\n\nPickerListOption.displayName = \"PickerListOption\";\n","import {\n forwardRef,\n type ComponentPropsWithoutRef,\n useRef,\n useImperativeHandle,\n} from \"react\";\nimport type { LayoutUtilProps } from \"../../../types\";\nimport { PickerListOption } from \"./PickerListOption\";\nimport { useLayoutPropsUtil } from \"../../../internal/hooks\";\n\nimport cx from \"classnames\";\nimport styles from \"./PickerList.module.scss\";\n\nexport type PickerListItem = {\n /** Visible option label. */\n label: string;\n /** Numeric value used for selection and scroll-to. */\n value: number;\n /** Prevents selecting this option. */\n disabled?: boolean;\n};\n\nexport type PickerListProps = Omit<ComponentPropsWithoutRef<\"ul\">, \"children\"> &\n LayoutUtilProps & {\n /** Options rendered as listbox items. */\n items: PickerListItem[];\n /** Controlled selected option. */\n selected?: PickerListItem;\n /** Called after click or keyboard selection; `undefined` when toggling off. */\n onSelectionChange?: (selected: PickerListItem | undefined) => void;\n };\n\nexport type PickerListRef = {\n /** Scrolls the matching label to the vertical center of the list. */\n scrollToItem: (label: string, behavior?: ScrollBehavior) => void;\n /** Scrolls the matching value to the vertical center of the list. */\n scrollToValue: (value: number, behavior?: ScrollBehavior) => void;\n};\n\n/** Single-select list used by the yearless month/day pickers. */\nexport const PickerList = forwardRef<PickerListRef, PickerListProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n items,\n onSelectionChange,\n selected: selectedProp,\n style,\n ...rest\n } = componentProps;\n\n const listRef = useRef<HTMLUListElement>(null);\n\n const scrollToItem = (\n label: string,\n behavior: ScrollBehavior = \"smooth\",\n ) => {\n const listElement = listRef.current;\n const itemElement = listElement?.querySelector(\n `li[data-item-label=\"${label}\"]`,\n ) as HTMLLIElement | null;\n\n if (listElement && itemElement) {\n const itemTop = itemElement.offsetTop;\n const itemHeight = itemElement.offsetHeight;\n const listHeight = listElement.clientHeight;\n\n const targetScrollTop = itemTop - listHeight / 2 + itemHeight / 2;\n\n const maxScrollTop = listElement.scrollHeight - listHeight;\n const clampedScrollTop = Math.max(\n 0,\n Math.min(targetScrollTop, maxScrollTop),\n );\n\n listElement.scrollTo({\n top: clampedScrollTop,\n behavior,\n });\n }\n };\n\n const scrollToValue = (\n value: number,\n behavior: ScrollBehavior = \"smooth\",\n ) => {\n const item = items.find((item) => item.value === value);\n if (item) {\n scrollToItem(item.label, behavior);\n }\n };\n\n useImperativeHandle(ref, () => ({\n scrollToItem,\n scrollToValue,\n }));\n\n const handleSelectionChange = (item: PickerListItem | undefined) => {\n onSelectionChange?.(item);\n };\n\n const PickerListClassNames = cx(styles[\"picker-list\"], className);\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <ul\n role=\"listbox\"\n style={styleCombined}\n className={PickerListClassNames}\n data-anv=\"picker-list\"\n ref={listRef}\n {...rest}\n tabIndex={-1}\n >\n {items.map((item) => (\n <PickerListOption\n key={item.label}\n item={item}\n isSelected={selectedProp?.value === item.value}\n onSelectionChange={handleSelectionChange}\n />\n ))}\n </ul>\n );\n },\n);\n\nPickerList.displayName = \"PickerList\";\n","import type { YearlessDate, YearlessDateMode } from \"../types\";\n\n/** Empty dates pass unless `required`. Incomplete, unavailable, or out-of-range dates fail. */\nexport function validateYearlessDate({\n value,\n constraints,\n}: {\n value: YearlessDate | null;\n constraints: {\n required?: boolean;\n unavailable?: {\n dates?: YearlessDate[];\n };\n minDate?: YearlessDate | null;\n maxDate?: YearlessDate | null;\n };\n}): boolean {\n const { required, unavailable, minDate, maxDate } = constraints;\n if (!value || (!value?.day && !value?.month)) {\n return required ? false : true;\n }\n if (value.day === null || value.month === null) {\n return false;\n }\n if (\n unavailable?.dates?.some(\n (d) => d.day === value.day && d.month === value.month,\n )\n ) {\n return false;\n }\n const minDateMonth = minDate?.month ?? 1;\n const minDateDay = minDate?.day ?? 1;\n const maxDateMonth = maxDate?.month ?? 12;\n const maxDateDay = maxDate?.day ?? 31;\n if (\n value.month < minDateMonth ||\n (value.month === minDateMonth && value.day < minDateDay)\n ) {\n return false;\n }\n if (\n value.month > maxDateMonth ||\n (value.month === maxDateMonth && value.day > maxDateDay)\n ) {\n return false;\n }\n return true;\n}\n\n/** Localized month names for the picker, using UTC so the calendar month does not shift. */\nexport function getMonthNames({\n locale,\n format,\n}: {\n locale: string;\n format: Intl.DateTimeFormatOptions[\"month\"];\n}): string[] {\n const formatFn = new Intl.DateTimeFormat(locale, {\n month: format,\n timeZone: \"UTC\",\n }).format;\n return [...Array(12).keys()].map((m) =>\n formatFn(new Date(Date.UTC(2021, m, 1))),\n );\n}\n\n/** Parses masked text into month/day; incomplete segments become `null`. */\nexport function parseInputValue(\n value: string,\n mode: YearlessDateMode,\n removePlaceholder: (value: string) => string,\n): {\n value: YearlessDate | null;\n isInputValid: boolean;\n isInputEmpty: boolean;\n} {\n const valueMinusPlaceholder = removePlaceholder(value);\n const [segment1, segment2] = valueMinusPlaceholder.split(\"/\");\n const incompleteFirstSegment = segment1?.length !== 2;\n const incompleteSecondSegment = segment2?.length !== 2;\n if (mode === \"dd/mm\") {\n return {\n value: {\n day: incompleteFirstSegment ? null : parseInt(segment1),\n month: incompleteSecondSegment ? null : parseInt(segment2),\n },\n isInputValid: !incompleteFirstSegment && !incompleteSecondSegment,\n isInputEmpty: valueMinusPlaceholder === \"\",\n };\n }\n return {\n value: {\n day: incompleteSecondSegment ? null : parseInt(segment2),\n month: incompleteFirstSegment ? null : parseInt(segment1),\n },\n isInputValid: !incompleteFirstSegment && !incompleteSecondSegment,\n isInputEmpty: valueMinusPlaceholder === \"\",\n };\n}\n\n/** Reorders existing month/day digits when `mode` changes. */\nexport function swapMode(\n inputString: string,\n previousMode: YearlessDateMode,\n mode: YearlessDateMode,\n) {\n const { day, month } = divideSegments(inputString, previousMode);\n return stringifyYearlessDate(day, month, mode);\n}\n\nfunction divideSegments(\n value: string,\n mode: YearlessDateMode,\n): {\n day: string;\n month: string;\n} {\n const [segment1, segment2] = value.split(\"/\");\n if (mode === \"dd/mm\") {\n return { day: segment1, month: segment2 };\n }\n return { day: segment2, month: segment1 };\n}\n\n/** Formats month/day into the masked string, using `__` for a missing segment. */\nexport function stringifyYearlessDate(\n day: number | string | null,\n month: number | string | null,\n mode: YearlessDateMode,\n) {\n const dd = (day ?? \"__\").toString().padStart(2, \"0\");\n const mm = (month ?? \"__\").toString().padStart(2, \"0\");\n if (mode === \"dd/mm\") {\n return `${dd}/${mm}`;\n }\n return `${mm}/${dd}`;\n}\n\n/** Days in `month` (1–12), using a leap year so February is 29. */\nexport function getDaysInMonth(month: number): number {\n return new Date(2024, month, 0).getDate();\n}\n\n/** Months that cannot contain `day` (for example 31 in April). */\nexport function getInvalidMonthsForDay(day: number): number[] {\n const invalidMonths: number[] = [];\n\n for (let month = 1; month <= 12; month++) {\n const daysInMonth = getDaysInMonth(month);\n if (day > daysInMonth) {\n invalidMonths.push(month);\n }\n }\n\n return invalidMonths;\n}\n","import { type Ref, type RefObject, useEffect, useMemo, useRef } from \"react\";\nimport Popover from \"../../../internal/components/Popover\";\nimport { ANV_PART_ATTR } from \"../../../internal/constants/anvParts\";\nimport { PickerList, type PickerListRef } from \"./PickerList\";\nimport { getMonthNames, getDaysInMonth, getInvalidMonthsForDay } from \"./utils\";\nimport { Flex } from \"../../Flex\";\nimport type { YearlessDateMode } from \"..\";\nimport dateFieldYearlessStyles from \"../DateFieldYearless.module.scss\";\nimport { PARTS } from \"../parts\";\nimport type { PopoverTriggerProps } from \"../../../internal/components/Popover/PopoverTrigger\";\n\nexport type YearlessDateSelectionPopoverProps = {\n popoverRef: RefObject<{\n openPopover: () => void;\n closePopover: () => void;\n }>;\n popoverContentRef: Ref<HTMLDivElement>;\n /** Currently selected month, or `null` while unset. */\n month: number | null;\n /** Currently selected day, or `null` while unset. */\n day: number | null;\n /** Called after a month is chosen; may clear an impossible day. */\n onMonthChange: (month: number | null) => void;\n /** Called after a day is chosen; may clear an impossible month. */\n onDayChange: (day: number | null) => void;\n onClose: () => void;\n /** Controls whether the day list or month list comes first. */\n mode: YearlessDateMode;\n onFocus?: (event: React.FocusEvent) => void;\n onBlur?: (event: React.FocusEvent) => void;\n} & PopoverTriggerProps;\n\n/** Month and day lists in a popover, ordered to match `mode`. */\nexport function YearlessDateSelectionPopover({\n children,\n popoverRef,\n popoverContentRef,\n month,\n day,\n onMonthChange,\n onDayChange,\n onClose,\n mode,\n onFocus,\n onBlur,\n}: YearlessDateSelectionPopoverProps) {\n const monthListboxRef = useRef<PickerListRef>(null);\n const dayListboxRef = useRef<PickerListRef>(null);\n\n const months = useMemo(() => {\n return getMonthNames({ locale: \"en-US\", format: \"short\" }).map(\n (name, index) => ({\n label: name,\n value: index + 1,\n }),\n );\n }, []);\n\n const days = useMemo(() => {\n return Array.from({ length: 31 }, (_, i) => ({\n label: `${i + 1}`,\n value: i + 1,\n }));\n }, []);\n\n const invalidDays = useMemo(() => {\n if (!month) {\n return [];\n }\n const daysInMonth = getDaysInMonth(month);\n return Array.from(\n { length: 31 - daysInMonth },\n (_, i) => daysInMonth + i + 1,\n );\n }, [month]);\n\n const invalidMonths = useMemo(() => {\n if (!day) {\n return [];\n }\n return getInvalidMonthsForDay(day);\n }, [day]);\n\n const scrollToSelectedOption = (\n value: number | null,\n ref: RefObject<PickerListRef>,\n behavior: ScrollBehavior = \"smooth\",\n ) => {\n if (value && ref.current) {\n ref.current.scrollToValue(value, behavior);\n }\n };\n\n useEffect(() => {\n scrollToSelectedOption(month, monthListboxRef, \"smooth\");\n }, [month]);\n\n useEffect(() => {\n scrollToSelectedOption(day, dayListboxRef, \"smooth\");\n }, [day]);\n\n const handleMonthChange = (\n selected: { label: string; value: number } | undefined,\n ) => {\n if (selected?.value) {\n onMonthChange?.(selected.value);\n\n if (day && invalidDays.includes(day)) {\n onDayChange?.(null);\n }\n }\n };\n\n const handleDayChange = (\n selected: { label: string; value: number } | undefined,\n ) => {\n if (selected?.value) {\n onDayChange?.(selected.value);\n\n if (month && invalidMonths.includes(month)) {\n onMonthChange?.(null);\n }\n }\n };\n\n const monthPicker = (\n <PickerList\n ref={monthListboxRef}\n items={months.map((item) => ({\n ...item,\n disabled: invalidMonths.includes(item.value),\n }))}\n selected={months.find((m) => m.value === month)}\n style={{ maxHeight: \"240px\", overflow: \"auto\" }}\n className={dateFieldYearlessStyles[\"scrolling-container\"]}\n onSelectionChange={handleMonthChange}\n {...{ [ANV_PART_ATTR]: PARTS.monthList }}\n />\n );\n\n const dayPicker = (\n <PickerList\n ref={dayListboxRef}\n items={days.map((item) => ({\n ...item,\n disabled: invalidDays.includes(item.value),\n }))}\n selected={days.find((d) => d.value === day)}\n className={dateFieldYearlessStyles[\"scrolling-container\"]}\n onSelectionChange={handleDayChange}\n {...{ [ANV_PART_ATTR]: PARTS.dayList }}\n />\n );\n\n return (\n <Popover\n ref={popoverRef}\n placement=\"bottom-start\"\n role=\"listbox\"\n onClose={onClose}\n onOpenAnimationStart={() => {\n scrollToSelectedOption(month, monthListboxRef, \"instant\");\n scrollToSelectedOption(day, dayListboxRef, \"instant\");\n }}\n >\n <Popover.Trigger>\n {(triggerProps) => <>{children(triggerProps)}</>}\n </Popover.Trigger>\n <Popover.Content\n ref={popoverContentRef}\n onFocus={onFocus}\n onBlur={onBlur}\n hideWhileClosed\n {...{ [ANV_PART_ATTR]: PARTS.popover }}\n >\n <Flex gap={2} style={{ maxHeight: \"240px\" }}>\n {mode === \"dd/mm\" ? (\n <>\n {dayPicker}\n {monthPicker}\n </>\n ) : (\n <>\n {monthPicker}\n {dayPicker}\n </>\n )}\n </Flex>\n </Popover.Content>\n </Popover>\n );\n}\n","import type { MaskitoPlugin, MaskitoElement } from \"@maskito/core\";\nimport { maskitoUpdateElement } from \"@maskito/core\";\n\nimport type { YearlessDateMode } from \"../../types\";\nimport { getDaysInMonth } from \"../utils\";\n\ntype YearlessDateSegments = {\n month: number;\n day: number;\n};\n\ntype SegmentRange = [number, number];\n\n// Constants\nconst MIN_MONTH = 1;\nconst MAX_MONTH = 12;\nconst MIN_DAY = 1;\nconst MAX_DAY = 31;\nconst SEGMENT_LENGTH = 2;\n\n/**\n * ArrowUp decreases and ArrowDown increases the focused month or day;\n * ArrowRight inserts `/` after the first segment when the placeholder is\n * still present. Changing the month clamps an impossible day.\n */\nexport function createYearlessDateSegmentsSteppingPlugin({\n mode,\n}: {\n mode: YearlessDateMode;\n}): MaskitoPlugin {\n const segmentsIndexes = createSegmentIndexes(mode);\n\n return (element) => {\n const listener = (event: KeyboardEvent): void => {\n if (event.key === \"ArrowRight\") {\n handleArrowRight(element, event);\n return;\n }\n\n if (event.key !== \"ArrowUp\" && event.key !== \"ArrowDown\") {\n return;\n }\n\n event.preventDefault();\n\n const selectionStart = element.selectionStart ?? 0;\n const activeSegment = getActiveSegment({\n segmentsIndexes,\n selectionStart,\n });\n\n if (!activeSegment) {\n return;\n }\n\n const segmentSelection = segmentsIndexes.get(activeSegment);\n if (!segmentSelection) {\n return;\n }\n\n const maxValue = getMaxValueForSegment(\n activeSegment,\n element.value,\n segmentsIndexes,\n );\n\n const updatedValue = updateSegmentValue({\n selection: segmentSelection,\n value: element.value,\n increment: event.key === \"ArrowUp\" ? -1 : 1,\n min: MIN_DAY,\n max: maxValue,\n });\n\n const finalValue =\n activeSegment === \"month\"\n ? adjustDayForNewMonth(updatedValue, segmentsIndexes)\n : updatedValue;\n\n maskitoUpdateElement(element, {\n value: finalValue,\n selection: [selectionStart, selectionStart],\n });\n };\n\n element.addEventListener(\"keydown\", listener);\n return () => element.removeEventListener(\"keydown\", listener);\n };\n}\n\nfunction createSegmentIndexes(\n mode: YearlessDateMode,\n): Map<keyof YearlessDateSegments, SegmentRange> {\n const map = new Map<keyof YearlessDateSegments, SegmentRange>();\n\n if (mode === \"mm/dd\") {\n map.set(\"month\", [0, SEGMENT_LENGTH]);\n map.set(\"day\", [SEGMENT_LENGTH + 1, SEGMENT_LENGTH * 2 + 1]);\n } else if (mode === \"dd/mm\") {\n map.set(\"day\", [0, SEGMENT_LENGTH]);\n map.set(\"month\", [SEGMENT_LENGTH + 1, SEGMENT_LENGTH * 2 + 1]);\n }\n\n return map;\n}\n\nfunction handleArrowRight(element: MaskitoElement, event: KeyboardEvent): void {\n const selectionStart = element.selectionStart ?? 0;\n const value = element.value;\n\n if (selectionStart === SEGMENT_LENGTH && value.includes(\"__\")) {\n event.preventDefault();\n maskitoUpdateElement(element, {\n value: value + \"/\",\n selection: [selectionStart + 1, selectionStart + 1],\n });\n }\n}\n\nfunction adjustDayForNewMonth(\n value: string,\n segmentsIndexes: Map<keyof YearlessDateSegments, SegmentRange>,\n): string {\n const monthSelection = segmentsIndexes.get(\"month\");\n const daySelection = segmentsIndexes.get(\"day\");\n\n if (!monthSelection || !daySelection) {\n return value;\n }\n\n const monthValue = parseSegmentValue(value, monthSelection);\n const dayValue = parseSegmentValue(value, daySelection);\n\n if (monthValue < MIN_MONTH || monthValue > MAX_MONTH || dayValue < MIN_DAY) {\n return value;\n }\n\n const maxDaysInMonth = getDaysInMonth(monthValue);\n\n if (dayValue <= maxDaysInMonth) {\n return value;\n }\n\n const [dayFrom, dayTo] = daySelection;\n const adjustedDay = String(maxDaysInMonth).padStart(dayTo - dayFrom, \"0\");\n\n return (\n value.slice(0, dayFrom) + adjustedDay + value.slice(dayTo, value.length)\n );\n}\n\nfunction parseSegmentValue(value: string, selection: SegmentRange): number {\n const [from, to] = selection;\n const segmentText = value.slice(from, to);\n if (segmentText.includes(\"_\")) return 0;\n return Number(segmentText.padEnd(to - from, \"0\"));\n}\n\nfunction getMaxValueForSegment(\n segment: keyof YearlessDateSegments,\n value: string,\n segmentsIndexes: Map<keyof YearlessDateSegments, SegmentRange>,\n): number {\n if (segment === \"month\") {\n return MAX_MONTH;\n }\n\n const monthSelection = segmentsIndexes.get(\"month\");\n if (!monthSelection) {\n return MAX_DAY;\n }\n\n const monthValue = parseSegmentValue(value, monthSelection);\n\n if (monthValue < MIN_MONTH || monthValue > MAX_MONTH) {\n return MAX_DAY;\n }\n\n return getDaysInMonth(monthValue);\n}\n\nfunction getActiveSegment({\n segmentsIndexes,\n selectionStart,\n}: {\n segmentsIndexes: Map<keyof YearlessDateSegments, SegmentRange>;\n selectionStart: number;\n}): keyof YearlessDateSegments | null {\n for (const [segmentName, segmentRange] of segmentsIndexes.entries()) {\n const [from, to] = segmentRange;\n if (from <= selectionStart && selectionStart <= to) {\n return segmentName;\n }\n }\n return null;\n}\n\nfunction updateSegmentValue({\n selection,\n value,\n increment,\n min,\n max,\n}: {\n selection: SegmentRange;\n value: string;\n increment: number;\n min: number;\n max: number;\n}): string {\n const [from, to] = selection;\n const segmentValue = parseSegmentValue(value, selection);\n // Prevent decrementing 0 losing negative and rolling up to 1.\n if (segmentValue === 0 && increment < 0) return value;\n const newSegmentValue = Math.max(\n min,\n Math.min(max, segmentValue + increment),\n );\n\n return (\n value.slice(0, from) +\n String(newSegmentValue).padStart(to - from, \"0\") +\n value.slice(to, value.length)\n );\n}\n","import { maskitoTransform, type MaskitoOptions } from \"@maskito/core\";\nimport {\n maskitoDateOptionsGenerator,\n maskitoWithPlaceholder,\n} from \"@maskito/kit\";\n\nimport type { YearlessDateMode } from \"../../types\";\nimport { makeZeroShortcutPreprocessor } from \"../../../DateFieldSingle/internal/maskito/makeZeroShortcutPreprocessor\";\nimport { createYearlessDateSegmentsSteppingPlugin } from \"./yearlessDateSegmentsStepping\";\n\n/** Builds Maskito month/day options with a persistent placeholder, zero shortcut, and optional stepping. */\nconst yearlessDatePlaceholderMask = ({\n mode,\n separator = \"/\",\n placeholder,\n enableStepping = false,\n}: {\n mode: YearlessDateMode;\n enableStepping: boolean;\n separator?: string;\n placeholder: string;\n}) => {\n const dateOptions = maskitoDateOptionsGenerator({\n mode,\n separator,\n });\n\n const { plugins, removePlaceholder, ...placeholderOptions } =\n maskitoWithPlaceholder(placeholder);\n\n const datePlaceholderMask = {\n ...dateOptions,\n plugins: plugins.concat([\n ...(dateOptions.plugins || []),\n ...(enableStepping\n ? [createYearlessDateSegmentsSteppingPlugin({ mode })]\n : []),\n ]),\n preprocessors: [\n ...placeholderOptions.preprocessors,\n ...dateOptions.preprocessors,\n makeZeroShortcutPreprocessor(mode, separator),\n ],\n postprocessors: [\n ...dateOptions.postprocessors,\n ...placeholderOptions.postprocessors,\n ],\n } satisfies Required<MaskitoOptions>;\n\n const transform = (value: string) => {\n return maskitoTransform(value, datePlaceholderMask);\n };\n\n return { options: datePlaceholderMask, removePlaceholder, transform };\n};\n\nexport default yearlessDatePlaceholderMask;\n","import { useMaskito } from \"@maskito/react\";\nimport {\n forwardRef,\n type InputHTMLAttributes,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useMergeRefs } from \"@floating-ui/react\";\nimport type { YearlessDateMode, YearlessDate } from \"../types\";\nimport { usePrevious } from \"../../../internal/hooks\";\nimport yearlessDatePlaceholderMask from \"./maskito/yearlessDatePlaceholderMask\";\nimport { swapMode, stringifyYearlessDate, parseInputValue } from \"./utils\";\nimport textFieldStyles from \"../../TextField/TextField.module.scss\";\nimport dateFieldYearlessStyles from \"../DateFieldYearless.module.scss\";\nimport cx from \"classnames\";\nimport type { PassThroughPropsWithRef, Size } from \"../../../types\";\nimport { Spinner } from \"../../Spinner\";\n\nexport type YearlessDateInputChange = {\n /** Native change event, or `null` when the value was set programmatically. */\n event: React.ChangeEvent<HTMLInputElement> | null;\n /** Parsed month/day, including `null` segments while incomplete. */\n value: YearlessDate | null;\n /** Whether both segments are two digits. */\n isInputValid: boolean;\n /** Whether no date digits remain after removing the placeholder. */\n isInputEmpty: boolean;\n};\n\n/** Receives parsed input changes, including incomplete segments. */\nexport type YearlessDateInputChangeHandler = (\n change: YearlessDateInputChange,\n) => void;\n\nexport type YearlessDateInputProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"onChange\" | \"value\" | \"ref\" | \"size\"\n> & {\n /** Called when the parsed month/day changes. */\n onChange: YearlessDateInputChangeHandler;\n /** Order of the month and day segments. Defaults to `mm/dd`. */\n mode?: YearlessDateMode;\n /** Date displayed after an external update. */\n value?: YearlessDate | null;\n /** Applies error styling on the input. */\n error?: boolean;\n /** Field height. Defaults to `medium`. */\n size?: Extract<Size, \"small\" | \"medium\" | \"large\">;\n wrapperProps?: PassThroughPropsWithRef<\"div\">;\n rootProps?: PassThroughPropsWithRef<\"div\">;\n /** Shows a spinner after the input. Defaults to `false`. */\n loading?: boolean;\n /** Enables ArrowUp/ArrowDown stepping of the focused segment. Defaults to `false`. */\n enableStepping?: boolean;\n};\n\nexport type YearlessDateInputRef = HTMLInputElement & {\n /** Updates the displayed date without firing a native input event. */\n setValue: (value: YearlessDate | null) => {\n value: YearlessDate | null;\n isInputValid: boolean;\n isInputEmpty: boolean;\n };\n /** Strips the mask placeholder so remaining digits can be parsed. */\n removePlaceholder: (value: string) => string;\n};\n\n/**\n * Masked month/day input used by DateFieldYearless.\n *\n * @internal\n */\nexport const YearlessDateInput = forwardRef<\n YearlessDateInputRef,\n YearlessDateInputProps\n>(\n (\n {\n onChange,\n mode = \"mm/dd\",\n value,\n error,\n size,\n wrapperProps,\n rootProps,\n loading = false,\n enableStepping = false,\n className: classNameProp,\n ...restProps\n },\n ref,\n ) => {\n const placeholder = \"__/__\";\n const [inputValue, setInputValue] = useState(placeholder);\n const { options, removePlaceholder, transform } =\n yearlessDatePlaceholderMask({\n mode,\n placeholder,\n enableStepping,\n });\n const maskedInputRef = useMaskito({ options });\n const inputRef = useRef<HTMLInputElement>(null);\n const combinedRef = useMergeRefs([maskedInputRef, inputRef, ref]);\n const previousValue = usePrevious(value);\n const previousMode = usePrevious(mode);\n\n useEffect(() => {\n if (mode !== previousMode) {\n setInputValue((oldInputValue) =>\n swapMode(oldInputValue, previousMode ?? mode, mode),\n );\n }\n }, [mode, previousMode]);\n\n const triggerAutoChange = useCallback(\n (stringValue: string) => {\n const {\n value: v,\n isInputValid,\n isInputEmpty,\n } = parseInputValue(stringValue, mode, removePlaceholder);\n onChange?.({\n event: null,\n value: v,\n isInputValid,\n isInputEmpty,\n });\n },\n [mode, removePlaceholder, onChange],\n );\n\n useEffect(() => {\n if (\n previousValue?.day !== value?.day ||\n previousValue?.month !== value?.month\n ) {\n if (value?.day && value?.month) {\n const stringValue = stringifyYearlessDate(\n value.day,\n value.month,\n mode,\n );\n const transformedValue = transform(stringValue);\n setInputValue(transformedValue);\n if (transformedValue !== stringValue) {\n triggerAutoChange(transformedValue);\n }\n } else if (\n previousValue !== null &&\n previousValue !== undefined &&\n (value === null || (value?.day === null && value?.month === null))\n ) {\n setInputValue(placeholder);\n } else {\n return;\n }\n }\n }, [value, mode, previousValue, transform, triggerAutoChange]);\n\n const currentParsedData = useMemo(() => {\n return parseInputValue(inputValue, mode, removePlaceholder);\n }, [inputValue, mode, removePlaceholder]);\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(event.target.value);\n const {\n value: v,\n isInputValid,\n isInputEmpty,\n } = parseInputValue(event.target.value, mode, removePlaceholder);\n\n const isDateDifferent =\n (v === null) !== (currentParsedData.value === null) ||\n v?.day !== currentParsedData.value?.day ||\n v?.month !== currentParsedData.value?.month;\n if (!isDateDifferent) {\n return;\n }\n\n onChange?.({\n event,\n value: v ?? currentParsedData.value ?? null,\n isInputValid,\n isInputEmpty,\n });\n };\n\n useImperativeHandle(ref, () => {\n const input = inputRef.current;\n if (!input) return null as unknown as YearlessDateInputRef;\n return Object.assign(input, {\n setValue: (value: YearlessDate | null) => {\n if (!value) {\n setInputValue(placeholder);\n return parseInputValue(placeholder, mode, removePlaceholder);\n }\n const valueAsString = stringifyYearlessDate(\n value.day ?? null,\n value.month ?? null,\n mode,\n );\n const transformedValue = transform(valueAsString);\n setInputValue(transformedValue);\n return parseInputValue(transformedValue, mode, removePlaceholder);\n },\n removePlaceholder,\n });\n }, [mode, placeholder, removePlaceholder, transform]);\n\n return (\n <div\n className={cx(textFieldStyles[\"textfield\"])}\n data-anv=\"yearless-date-input\"\n {...rootProps}\n >\n <div\n {...wrapperProps}\n className={cx(\n textFieldStyles[\"input-wrapper\"],\n wrapperProps?.className,\n {\n [textFieldStyles[\"small\"]]: size === \"small\",\n [textFieldStyles[\"large\"]]: size === \"large\",\n [dateFieldYearlessStyles[\"small\"]]: size === \"small\",\n [dateFieldYearlessStyles[\"large\"]]: size === \"large\",\n },\n )}\n >\n {/* anv-parts-allow-interactive -- PARTS.input forwarded via restProps from DateFieldYearless */}\n <input\n {...restProps}\n ref={combinedRef}\n data-month-value={value?.month}\n data-day-value={value?.day}\n data-input-valid={currentParsedData.isInputValid}\n data-input-empty={currentParsedData.isInputEmpty}\n value={inputValue}\n onChange={handleChange}\n type=\"text\"\n className={cx(\n textFieldStyles[\"input\"],\n dateFieldYearlessStyles[\"input\"],\n {\n [textFieldStyles[\"error\"]]: error ?? false,\n },\n classNameProp,\n )}\n />\n {loading ? (\n <div className={textFieldStyles[\"loading-spinner-wrapper\"]}>\n <Spinner />\n </div>\n ) : null}\n </div>\n </div>\n );\n },\n);\n\nYearlessDateInput.displayName = \"YearlessDateInput\";\n","import {\n forwardRef,\n type InputHTMLAttributes,\n type Ref,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type { YearlessDateMode, YearlessDate } from \"../types\";\nimport { YearlessDateSelectionPopover } from \"./YearlessDateSelectionPopover\";\nimport type { DateFieldYearlessChangeHandler } from \"../DateFieldYearless\";\nimport {\n YearlessDateInput,\n type YearlessDateInputChange,\n type YearlessDateInputRef,\n} from \"./YearlessDateInput\";\nimport { validateYearlessDate } from \"./utils\";\nimport {\n useFocusWithin,\n useOptionallyControlledState,\n} from \"../../../internal\";\nimport type { Size } from \"../../../types\";\nimport { mergeRefs } from \"../../../hooks/useMergeRefs/useMergeRefs\";\n\nexport type YearlessDateInputWithPickerProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"onChange\" | \"value\" | \"ref\" | \"size\" | \"defaultValue\" | \"onFocus\" | \"onBlur\"\n> & {\n /** Controlled month/day. Pass `null` to clear the field. */\n value?: YearlessDate | null;\n /** Initial month/day for uncontrolled use. */\n defaultValue?: YearlessDate | null;\n /** Reports the date plus separate input-format and constraint validity. */\n onChange?: DateFieldYearlessChangeHandler;\n /** Order of the month and day segments. Defaults to `mm/dd`. */\n mode?: YearlessDateMode;\n /** Makes an empty date fail constraint validation. */\n required?: boolean;\n /** Earliest valid month/day. */\n minDate?: YearlessDate | null;\n /** Latest valid month/day. */\n maxDate?: YearlessDate | null;\n /** Dates that fail constraint validation. */\n unavailable?: {\n /** 1-based month/day objects, not ISO strings. */\n dates?: YearlessDate[];\n };\n /** Renders only the masked input without its month/day picker. */\n disablePicker?: boolean;\n /** Field height. Defaults to `medium`. */\n size?: Extract<Size, \"small\" | \"medium\" | \"large\">;\n /** Applies error styling on the input. */\n error?: boolean;\n /** Shows a spinner after the input. Defaults to `false`. */\n loading?: boolean;\n onFocus?: (event: React.FocusEvent) => void;\n onBlur?: (event: React.FocusEvent) => void;\n};\n\nexport type YearlessDateInputWithPickerRef = {\n focus: () => void;\n /** Updates the displayed date without firing a native input event. */\n setValue: (value: YearlessDate | null) => void;\n};\n\n/**\n * Masked month/day input with an optional picker. Commits a picker change once\n * the first segment for the current `mode` is set.\n */\nexport const YearlessDateInputWithPicker = forwardRef<\n YearlessDateInputWithPickerRef,\n YearlessDateInputWithPickerProps\n>((props, ref) => {\n const {\n value: valueProp,\n defaultValue: defaultValueProp,\n onChange: onChangeProp,\n minDate,\n maxDate,\n unavailable,\n required,\n disablePicker = false,\n mode = \"mm/dd\",\n size = \"medium\",\n error = false,\n loading = false,\n onFocus: onFocusProp,\n onBlur: onBlurProp,\n disabled,\n ...restProps\n } = props;\n\n const inputRef = useRef<YearlessDateInputRef>(null);\n const popoverRef = useRef<{\n openPopover: () => void;\n closePopover: () => void;\n }>(null);\n // Tracked as state, not a ref: the focus-within guard below needs the element\n // during render, and a ref is still null on the render that attaches the blur\n // handler — leaving the guard empty for the first option click.\n const [popoverContent, setPopoverContent] = useState<HTMLDivElement | null>(\n null,\n );\n\n useEffect(() => {\n if (disabled) {\n popoverRef.current?.closePopover();\n }\n }, [disabled]);\n\n const [value, setValue] = useOptionallyControlledState<YearlessDate | null>({\n controlledValue: valueProp,\n defaultValue: defaultValueProp,\n });\n const [tempPickerValue, setTempPickerValue] = useState<YearlessDate | null>(\n value,\n );\n\n useImperativeHandle(\n ref,\n (): YearlessDateInputWithPickerRef => ({\n focus: () => {\n if (!inputRef.current) return;\n return inputRef.current.focus();\n },\n setValue: (value: YearlessDate | null) => {\n if (!inputRef.current) return;\n inputRef.current.setValue(value);\n },\n }),\n [inputRef],\n );\n\n const currentValidity = useMemo(\n () =>\n validateYearlessDate({\n value: value ?? null,\n constraints: {\n required: required,\n unavailable: unavailable,\n minDate: minDate,\n maxDate: maxDate,\n },\n }),\n [value, required, unavailable, minDate, maxDate],\n );\n\n const handleInputChange = (change: YearlessDateInputChange) => {\n const { event, value, ...restChange } = change;\n setValue(value);\n setTempPickerValue(value);\n onChangeProp?.({\n ...restChange,\n value,\n isValid: validateYearlessDate({\n value,\n constraints: {\n required: required,\n unavailable: unavailable,\n minDate: minDate,\n maxDate: maxDate,\n },\n }),\n });\n };\n\n const inputProps = {\n required,\n mode,\n autoComplete: \"off\",\n ...restProps,\n disabled,\n value: value,\n onChange: handleInputChange,\n \"data-valid\": currentValidity,\n size,\n error,\n loading,\n };\n\n const { props: focusWithinProps } = useFocusWithin({\n onFocus: (e) => {\n requestAnimationFrame(() => {\n onFocusProp?.(e);\n });\n },\n onBlur: (e) => {\n requestAnimationFrame(() => {\n onBlurProp?.(e);\n });\n popoverRef.current?.closePopover();\n },\n otherRelatedElements: popoverContent ? [popoverContent] : [],\n });\n\n if (disablePicker) {\n return <YearlessDateInput ref={inputRef} {...inputProps} />;\n }\n\n const handlePickerChange = (newValue: YearlessDate) => {\n setTempPickerValue(newValue);\n if (!inputRef.current) return;\n if (\n (mode === \"mm/dd\" && newValue.month) ||\n (mode === \"dd/mm\" && newValue.day)\n ) {\n const valueSet = inputRef.current.setValue(newValue);\n setValue(valueSet.value);\n onChangeProp?.({\n ...valueSet,\n isValid: validateYearlessDate({\n value: valueSet.value,\n constraints: {\n required: required,\n unavailable: unavailable,\n minDate: minDate,\n maxDate: maxDate,\n },\n }),\n });\n }\n };\n\n const handlePickerMonthChange = (month: number | null) => {\n handlePickerChange({\n day: value?.day ?? tempPickerValue?.day ?? null,\n month,\n });\n };\n\n const handlePickerDayChange = (day: number | null) => {\n handlePickerChange({\n day,\n month: value?.month ?? tempPickerValue?.month ?? null,\n });\n };\n\n const handlePickerClose = () => {\n setTempPickerValue(null);\n };\n\n const handleInputFocus = (event: React.FocusEvent) => {\n focusWithinProps.onFocus?.(event as React.FocusEvent<HTMLElement>);\n };\n const handleInputBlur = (event: React.FocusEvent) => {\n focusWithinProps.onBlur?.(event as React.FocusEvent<HTMLElement>);\n };\n\n const handlePopoverBlur = (event: React.FocusEvent) => {\n focusWithinProps.onBlur?.(event as React.FocusEvent<HTMLElement>);\n };\n\n return (\n <YearlessDateSelectionPopover\n popoverRef={popoverRef}\n popoverContentRef={setPopoverContent}\n month={value?.month ?? tempPickerValue?.month ?? null}\n day={value?.day ?? tempPickerValue?.day ?? null}\n onMonthChange={handlePickerMonthChange}\n onDayChange={handlePickerDayChange}\n onClose={handlePickerClose}\n mode={mode}\n onBlur={handlePopoverBlur}\n >\n {({ ref, onKeyDown }) => (\n <YearlessDateInput\n {...inputProps}\n ref={mergeRefs([\n inputRef,\n ref as unknown as Ref<YearlessDateInputRef>,\n ])}\n onKeyDown={(ev) => {\n onKeyDown?.(ev);\n inputProps.onKeyDown?.(ev);\n }}\n onClick={(ev) => {\n inputProps.onClick?.(ev);\n popoverRef.current?.openPopover();\n }}\n onFocus={handleInputFocus}\n onBlur={handleInputBlur}\n enableStepping\n />\n )}\n </YearlessDateSelectionPopover>\n );\n});\n\nYearlessDateInputWithPicker.displayName = \"YearlessDateInputWithPicker\";\n"],"names":["Check","item","value","ref"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"YearlessDateInputWithPicker-Bc8a33D5.js","sources":["../src/components/DateFieldYearless/parts.ts","../src/components/DateFieldYearless/internal/PickerListOption.tsx","../src/components/DateFieldYearless/internal/PickerList.tsx","../src/components/DateFieldYearless/internal/utils.ts","../src/components/DateFieldYearless/internal/YearlessDateSelectionPopover.tsx","../src/components/DateFieldYearless/internal/maskito/yearlessDateSegmentsStepping.ts","../src/components/DateFieldYearless/internal/maskito/yearlessDatePlaceholderMask.ts","../src/components/DateFieldYearless/internal/YearlessDateInput.tsx","../src/components/DateFieldYearless/internal/YearlessDateInputWithPicker.tsx"],"sourcesContent":["import { COMMON_PART } from \"../../internal/constants/anvParts\";\n\n/**\n * `data-anv-part` names for DateFieldYearless interactive sub-elements.\n *\n * The picker popover and month/day lists render in the top layer outside the\n * input subtree, so consumers must target their part attributes directly.\n */\nexport const PARTS = {\n input: COMMON_PART.dateInput,\n popover: COMMON_PART.popover,\n monthList: \"month-list\",\n dayList: \"day-list\",\n option: COMMON_PART.option,\n} as const;\n","import {\n type ComponentPropsWithoutRef,\n forwardRef,\n type MouseEvent,\n} from \"react\";\nimport { Icon } from \"../../Icon\";\nimport { Flex, type FlexProps } from \"../../Flex\";\nimport Check from \"@servicetitan/hammer-icon/mdi/round/check.svg\";\nimport { ANV_PART_ATTR } from \"../../../internal/constants/anvParts\";\nimport type { DataTrackingId } from \"../../../types\";\nimport { PARTS } from \"../parts\";\n\nimport cx from \"classnames\";\nimport styles from \"./PickerList.module.scss\";\n\nexport type PickerListOptionProps = ComponentPropsWithoutRef<\"li\"> & {\n /** Option label, numeric value, and whether it cannot be chosen. */\n item: { label: string; value: number; disabled?: boolean };\n isSelected: boolean;\n /** Called with the item, or `undefined` when a selected option is clicked again. */\n onSelectionChange: (\n selected: { label: string; value: number } | undefined,\n ) => void;\n alignItems?: FlexProps[\"alignItems\"];\n justifyItems?: FlexProps[\"justifyItems\"];\n alignContent?: FlexProps[\"alignContent\"];\n justifyContent?: FlexProps[\"justifyContent\"];\n placeItems?: FlexProps[\"placeItems\"];\n placeContent?: FlexProps[\"placeContent\"];\n} & DataTrackingId;\n\n/** One month or day option in a {@link PickerList}. */\nexport const PickerListOption = forwardRef<\n HTMLLIElement,\n PickerListOptionProps\n>((props, ref) => {\n const {\n className,\n children,\n onClick,\n item,\n isSelected,\n onSelectionChange,\n alignItems,\n justifyItems,\n alignContent,\n justifyContent,\n placeItems,\n placeContent,\n ...rest\n } = props;\n\n const disabled = item.disabled || false;\n\n const handleSelection = () => {\n if (disabled) return;\n\n if (isSelected) {\n onSelectionChange(undefined);\n } else {\n onSelectionChange(item);\n }\n };\n\n const onClickHandler = (e: MouseEvent<HTMLLIElement>) => {\n onClick?.(e);\n handleSelection();\n };\n\n const onKeyDownHandler = (e: React.KeyboardEvent<HTMLLIElement>) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleSelection();\n }\n };\n\n const PickerListOptionClassNames = cx(\n styles[\"picker-list-option\"],\n className,\n );\n\n return (\n <li\n className={PickerListOptionClassNames}\n data-anv=\"picker-list-option\"\n role=\"option\"\n aria-disabled={disabled}\n aria-selected={isSelected}\n data-item-label={item.label}\n data-id={item.value}\n onClick={onClickHandler}\n onKeyDown={onKeyDownHandler}\n tabIndex={-1}\n ref={ref}\n {...rest}\n {...{ [ANV_PART_ATTR]: PARTS.option }}\n >\n <Flex\n className={styles[\"children\"]}\n grow={1}\n shrink={1}\n alignItems={alignItems}\n justifyItems={justifyItems}\n alignContent={alignContent}\n justifyContent={justifyContent}\n placeItems={placeItems}\n placeContent={placeContent}\n >\n {children || item.label}\n </Flex>\n <Icon\n aria-hidden\n svg={Check}\n inherit\n className={styles[\"Icon\"]}\n style={{ opacity: isSelected ? 1 : 0 }}\n />\n </li>\n );\n});\n\nPickerListOption.displayName = \"PickerListOption\";\n","import {\n forwardRef,\n type ComponentPropsWithoutRef,\n useRef,\n useImperativeHandle,\n} from \"react\";\nimport type { LayoutUtilProps } from \"../../../types\";\nimport { PickerListOption } from \"./PickerListOption\";\nimport { useLayoutPropsUtil } from \"../../../internal/hooks\";\n\nimport cx from \"classnames\";\nimport styles from \"./PickerList.module.scss\";\n\nexport type PickerListItem = {\n /** Visible option label. */\n label: string;\n /** Numeric value used for selection and scroll-to. */\n value: number;\n /** Prevents selecting this option. */\n disabled?: boolean;\n};\n\nexport type PickerListProps = Omit<ComponentPropsWithoutRef<\"ul\">, \"children\"> &\n LayoutUtilProps & {\n /** Options rendered as listbox items. */\n items: PickerListItem[];\n /** Controlled selected option. */\n selected?: PickerListItem;\n /** Called after click or keyboard selection; `undefined` when toggling off. */\n onSelectionChange?: (selected: PickerListItem | undefined) => void;\n };\n\nexport type PickerListRef = {\n /** Scrolls the matching label to the vertical center of the list. */\n scrollToItem: (label: string, behavior?: ScrollBehavior) => void;\n /** Scrolls the matching value to the vertical center of the list. */\n scrollToValue: (value: number, behavior?: ScrollBehavior) => void;\n};\n\n/** Single-select list used by the yearless month/day pickers. */\nexport const PickerList = forwardRef<PickerListRef, PickerListProps>(\n (props, ref) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n const {\n className,\n items,\n onSelectionChange,\n selected: selectedProp,\n style,\n ...rest\n } = componentProps;\n\n const listRef = useRef<HTMLUListElement>(null);\n\n const scrollToItem = (\n label: string,\n behavior: ScrollBehavior = \"smooth\",\n ) => {\n const listElement = listRef.current;\n const itemElement = listElement?.querySelector(\n `li[data-item-label=\"${label}\"]`,\n ) as HTMLLIElement | null;\n\n if (listElement && itemElement) {\n const itemTop = itemElement.offsetTop;\n const itemHeight = itemElement.offsetHeight;\n const listHeight = listElement.clientHeight;\n\n const targetScrollTop = itemTop - listHeight / 2 + itemHeight / 2;\n\n const maxScrollTop = listElement.scrollHeight - listHeight;\n const clampedScrollTop = Math.max(\n 0,\n Math.min(targetScrollTop, maxScrollTop),\n );\n\n listElement.scrollTo({\n top: clampedScrollTop,\n behavior,\n });\n }\n };\n\n const scrollToValue = (\n value: number,\n behavior: ScrollBehavior = \"smooth\",\n ) => {\n const item = items.find((item) => item.value === value);\n if (item) {\n scrollToItem(item.label, behavior);\n }\n };\n\n useImperativeHandle(ref, () => ({\n scrollToItem,\n scrollToValue,\n }));\n\n const handleSelectionChange = (item: PickerListItem | undefined) => {\n onSelectionChange?.(item);\n };\n\n const PickerListClassNames = cx(styles[\"picker-list\"], className);\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n };\n\n return (\n <ul\n role=\"listbox\"\n style={styleCombined}\n className={PickerListClassNames}\n data-anv=\"picker-list\"\n ref={listRef}\n {...rest}\n tabIndex={-1}\n >\n {items.map((item) => (\n <PickerListOption\n key={item.label}\n item={item}\n isSelected={selectedProp?.value === item.value}\n onSelectionChange={handleSelectionChange}\n />\n ))}\n </ul>\n );\n },\n);\n\nPickerList.displayName = \"PickerList\";\n","import type { YearlessDate, YearlessDateMode } from \"../types\";\n\n/** Empty dates pass unless `required`. Incomplete, unavailable, or out-of-range dates fail. */\nexport function validateYearlessDate({\n value,\n constraints,\n}: {\n value: YearlessDate | null;\n constraints: {\n required?: boolean;\n unavailable?: {\n dates?: YearlessDate[];\n };\n minDate?: YearlessDate | null;\n maxDate?: YearlessDate | null;\n };\n}): boolean {\n const { required, unavailable, minDate, maxDate } = constraints;\n if (!value || (!value?.day && !value?.month)) {\n return required ? false : true;\n }\n if (value.day === null || value.month === null) {\n return false;\n }\n if (\n unavailable?.dates?.some(\n (d) => d.day === value.day && d.month === value.month,\n )\n ) {\n return false;\n }\n const minDateMonth = minDate?.month ?? 1;\n const minDateDay = minDate?.day ?? 1;\n const maxDateMonth = maxDate?.month ?? 12;\n const maxDateDay = maxDate?.day ?? 31;\n if (\n value.month < minDateMonth ||\n (value.month === minDateMonth && value.day < minDateDay)\n ) {\n return false;\n }\n if (\n value.month > maxDateMonth ||\n (value.month === maxDateMonth && value.day > maxDateDay)\n ) {\n return false;\n }\n return true;\n}\n\n/** Localized month names for the picker, using UTC so the calendar month does not shift. */\nexport function getMonthNames({\n locale,\n format,\n}: {\n locale: string;\n format: Intl.DateTimeFormatOptions[\"month\"];\n}): string[] {\n const formatFn = new Intl.DateTimeFormat(locale, {\n month: format,\n timeZone: \"UTC\",\n }).format;\n return [...Array(12).keys()].map((m) =>\n formatFn(new Date(Date.UTC(2021, m, 1))),\n );\n}\n\n/** Parses masked text into month/day; incomplete segments become `null`. */\nexport function parseInputValue(\n value: string,\n mode: YearlessDateMode,\n removePlaceholder: (value: string) => string,\n): {\n value: YearlessDate | null;\n isInputValid: boolean;\n isInputEmpty: boolean;\n} {\n const valueMinusPlaceholder = removePlaceholder(value);\n const [segment1, segment2] = valueMinusPlaceholder.split(\"/\");\n const incompleteFirstSegment = segment1?.length !== 2;\n const incompleteSecondSegment = segment2?.length !== 2;\n if (mode === \"dd/mm\") {\n return {\n value: {\n day: incompleteFirstSegment ? null : parseInt(segment1),\n month: incompleteSecondSegment ? null : parseInt(segment2),\n },\n isInputValid: !incompleteFirstSegment && !incompleteSecondSegment,\n isInputEmpty: valueMinusPlaceholder === \"\",\n };\n }\n return {\n value: {\n day: incompleteSecondSegment ? null : parseInt(segment2),\n month: incompleteFirstSegment ? null : parseInt(segment1),\n },\n isInputValid: !incompleteFirstSegment && !incompleteSecondSegment,\n isInputEmpty: valueMinusPlaceholder === \"\",\n };\n}\n\n/** Reorders existing month/day digits when `mode` changes. */\nexport function swapMode(\n inputString: string,\n previousMode: YearlessDateMode,\n mode: YearlessDateMode,\n) {\n const { day, month } = divideSegments(inputString, previousMode);\n return stringifyYearlessDate(day, month, mode);\n}\n\nfunction divideSegments(\n value: string,\n mode: YearlessDateMode,\n): {\n day: string;\n month: string;\n} {\n const [segment1, segment2] = value.split(\"/\");\n if (mode === \"dd/mm\") {\n return { day: segment1, month: segment2 };\n }\n return { day: segment2, month: segment1 };\n}\n\n/** Formats month/day into the masked string, using `__` for a missing segment. */\nexport function stringifyYearlessDate(\n day: number | string | null,\n month: number | string | null,\n mode: YearlessDateMode,\n) {\n const dd = (day ?? \"__\").toString().padStart(2, \"0\");\n const mm = (month ?? \"__\").toString().padStart(2, \"0\");\n if (mode === \"dd/mm\") {\n return `${dd}/${mm}`;\n }\n return `${mm}/${dd}`;\n}\n\n/** Days in `month` (1–12), using a leap year so February is 29. */\nexport function getDaysInMonth(month: number): number {\n return new Date(2024, month, 0).getDate();\n}\n\n/** Months that cannot contain `day` (for example 31 in April). */\nexport function getInvalidMonthsForDay(day: number): number[] {\n const invalidMonths: number[] = [];\n\n for (let month = 1; month <= 12; month++) {\n const daysInMonth = getDaysInMonth(month);\n if (day > daysInMonth) {\n invalidMonths.push(month);\n }\n }\n\n return invalidMonths;\n}\n","import { type Ref, type RefObject, useEffect, useMemo, useRef } from \"react\";\nimport Popover from \"../../../internal/components/Popover\";\nimport { ANV_PART_ATTR } from \"../../../internal/constants/anvParts\";\nimport { PickerList, type PickerListRef } from \"./PickerList\";\nimport { getMonthNames, getDaysInMonth, getInvalidMonthsForDay } from \"./utils\";\nimport { Flex } from \"../../Flex\";\nimport type { YearlessDateMode } from \"..\";\nimport dateFieldYearlessStyles from \"../DateFieldYearless.module.scss\";\nimport { PARTS } from \"../parts\";\nimport type { PopoverTriggerProps } from \"../../../internal/components/Popover/PopoverTrigger\";\n\nexport type YearlessDateSelectionPopoverProps = {\n popoverRef: RefObject<{\n openPopover: () => void;\n closePopover: () => void;\n }>;\n popoverContentRef: Ref<HTMLDivElement>;\n /** Currently selected month, or `null` while unset. */\n month: number | null;\n /** Currently selected day, or `null` while unset. */\n day: number | null;\n /** Called after a month is chosen; may clear an impossible day. */\n onMonthChange: (month: number | null) => void;\n /** Called after a day is chosen; may clear an impossible month. */\n onDayChange: (day: number | null) => void;\n onClose: () => void;\n /** Controls whether the day list or month list comes first. */\n mode: YearlessDateMode;\n onFocus?: (event: React.FocusEvent) => void;\n onBlur?: (event: React.FocusEvent) => void;\n} & PopoverTriggerProps;\n\n/** Month and day lists in a popover, ordered to match `mode`. */\nexport function YearlessDateSelectionPopover({\n children,\n popoverRef,\n popoverContentRef,\n month,\n day,\n onMonthChange,\n onDayChange,\n onClose,\n mode,\n onFocus,\n onBlur,\n}: YearlessDateSelectionPopoverProps) {\n const monthListboxRef = useRef<PickerListRef>(null);\n const dayListboxRef = useRef<PickerListRef>(null);\n\n const months = useMemo(() => {\n return getMonthNames({ locale: \"en-US\", format: \"short\" }).map(\n (name, index) => ({\n label: name,\n value: index + 1,\n }),\n );\n }, []);\n\n const days = useMemo(() => {\n return Array.from({ length: 31 }, (_, i) => ({\n label: `${i + 1}`,\n value: i + 1,\n }));\n }, []);\n\n const invalidDays = useMemo(() => {\n if (!month) {\n return [];\n }\n const daysInMonth = getDaysInMonth(month);\n return Array.from(\n { length: 31 - daysInMonth },\n (_, i) => daysInMonth + i + 1,\n );\n }, [month]);\n\n const invalidMonths = useMemo(() => {\n if (!day) {\n return [];\n }\n return getInvalidMonthsForDay(day);\n }, [day]);\n\n const scrollToSelectedOption = (\n value: number | null,\n ref: RefObject<PickerListRef>,\n behavior: ScrollBehavior = \"smooth\",\n ) => {\n if (value && ref.current) {\n ref.current.scrollToValue(value, behavior);\n }\n };\n\n useEffect(() => {\n scrollToSelectedOption(month, monthListboxRef, \"smooth\");\n }, [month]);\n\n useEffect(() => {\n scrollToSelectedOption(day, dayListboxRef, \"smooth\");\n }, [day]);\n\n const handleMonthChange = (\n selected: { label: string; value: number } | undefined,\n ) => {\n if (selected?.value) {\n onMonthChange?.(selected.value);\n\n if (day && invalidDays.includes(day)) {\n onDayChange?.(null);\n }\n }\n };\n\n const handleDayChange = (\n selected: { label: string; value: number } | undefined,\n ) => {\n if (selected?.value) {\n onDayChange?.(selected.value);\n\n if (month && invalidMonths.includes(month)) {\n onMonthChange?.(null);\n }\n }\n };\n\n const monthPicker = (\n <PickerList\n ref={monthListboxRef}\n items={months.map((item) => ({\n ...item,\n disabled: invalidMonths.includes(item.value),\n }))}\n selected={months.find((m) => m.value === month)}\n style={{ maxHeight: \"240px\", overflow: \"auto\" }}\n className={dateFieldYearlessStyles[\"scrolling-container\"]}\n onSelectionChange={handleMonthChange}\n {...{ [ANV_PART_ATTR]: PARTS.monthList }}\n />\n );\n\n const dayPicker = (\n <PickerList\n ref={dayListboxRef}\n items={days.map((item) => ({\n ...item,\n disabled: invalidDays.includes(item.value),\n }))}\n selected={days.find((d) => d.value === day)}\n className={dateFieldYearlessStyles[\"scrolling-container\"]}\n onSelectionChange={handleDayChange}\n {...{ [ANV_PART_ATTR]: PARTS.dayList }}\n />\n );\n\n return (\n <Popover\n ref={popoverRef}\n placement=\"bottom-start\"\n role=\"listbox\"\n onClose={onClose}\n onOpenAnimationStart={() => {\n scrollToSelectedOption(month, monthListboxRef, \"instant\");\n scrollToSelectedOption(day, dayListboxRef, \"instant\");\n }}\n >\n <Popover.Trigger>\n {(triggerProps) => <>{children(triggerProps)}</>}\n </Popover.Trigger>\n <Popover.Content\n ref={popoverContentRef}\n onFocus={onFocus}\n onBlur={onBlur}\n hideWhileClosed\n {...{ [ANV_PART_ATTR]: PARTS.popover }}\n >\n <Flex gap={2} style={{ maxHeight: \"240px\" }}>\n {mode === \"dd/mm\" ? (\n <>\n {dayPicker}\n {monthPicker}\n </>\n ) : (\n <>\n {monthPicker}\n {dayPicker}\n </>\n )}\n </Flex>\n </Popover.Content>\n </Popover>\n );\n}\n","import type { MaskitoPlugin, MaskitoElement } from \"@maskito/core\";\nimport { maskitoUpdateElement } from \"@maskito/core\";\n\nimport type { YearlessDateMode } from \"../../types\";\nimport { getDaysInMonth } from \"../utils\";\n\ntype YearlessDateSegments = {\n month: number;\n day: number;\n};\n\ntype SegmentRange = [number, number];\n\n// Constants\nconst MIN_MONTH = 1;\nconst MAX_MONTH = 12;\nconst MIN_DAY = 1;\nconst MAX_DAY = 31;\nconst SEGMENT_LENGTH = 2;\n\n/**\n * ArrowUp decreases and ArrowDown increases the focused month or day;\n * ArrowRight inserts `/` after the first segment when the placeholder is\n * still present. Changing the month clamps an impossible day.\n */\nexport function createYearlessDateSegmentsSteppingPlugin({\n mode,\n}: {\n mode: YearlessDateMode;\n}): MaskitoPlugin {\n const segmentsIndexes = createSegmentIndexes(mode);\n\n return (element) => {\n const listener = (event: KeyboardEvent): void => {\n if (event.key === \"ArrowRight\") {\n handleArrowRight(element, event);\n return;\n }\n\n if (event.key !== \"ArrowUp\" && event.key !== \"ArrowDown\") {\n return;\n }\n\n event.preventDefault();\n\n const selectionStart = element.selectionStart ?? 0;\n const activeSegment = getActiveSegment({\n segmentsIndexes,\n selectionStart,\n });\n\n if (!activeSegment) {\n return;\n }\n\n const segmentSelection = segmentsIndexes.get(activeSegment);\n if (!segmentSelection) {\n return;\n }\n\n const maxValue = getMaxValueForSegment(\n activeSegment,\n element.value,\n segmentsIndexes,\n );\n\n const updatedValue = updateSegmentValue({\n selection: segmentSelection,\n value: element.value,\n increment: event.key === \"ArrowUp\" ? -1 : 1,\n min: MIN_DAY,\n max: maxValue,\n });\n\n const finalValue =\n activeSegment === \"month\"\n ? adjustDayForNewMonth(updatedValue, segmentsIndexes)\n : updatedValue;\n\n maskitoUpdateElement(element, {\n value: finalValue,\n selection: [selectionStart, selectionStart],\n });\n };\n\n element.addEventListener(\"keydown\", listener);\n return () => element.removeEventListener(\"keydown\", listener);\n };\n}\n\nfunction createSegmentIndexes(\n mode: YearlessDateMode,\n): Map<keyof YearlessDateSegments, SegmentRange> {\n const map = new Map<keyof YearlessDateSegments, SegmentRange>();\n\n if (mode === \"mm/dd\") {\n map.set(\"month\", [0, SEGMENT_LENGTH]);\n map.set(\"day\", [SEGMENT_LENGTH + 1, SEGMENT_LENGTH * 2 + 1]);\n } else if (mode === \"dd/mm\") {\n map.set(\"day\", [0, SEGMENT_LENGTH]);\n map.set(\"month\", [SEGMENT_LENGTH + 1, SEGMENT_LENGTH * 2 + 1]);\n }\n\n return map;\n}\n\nfunction handleArrowRight(element: MaskitoElement, event: KeyboardEvent): void {\n const selectionStart = element.selectionStart ?? 0;\n const value = element.value;\n\n if (selectionStart === SEGMENT_LENGTH && value.includes(\"__\")) {\n event.preventDefault();\n maskitoUpdateElement(element, {\n value: value + \"/\",\n selection: [selectionStart + 1, selectionStart + 1],\n });\n }\n}\n\nfunction adjustDayForNewMonth(\n value: string,\n segmentsIndexes: Map<keyof YearlessDateSegments, SegmentRange>,\n): string {\n const monthSelection = segmentsIndexes.get(\"month\");\n const daySelection = segmentsIndexes.get(\"day\");\n\n if (!monthSelection || !daySelection) {\n return value;\n }\n\n const monthValue = parseSegmentValue(value, monthSelection);\n const dayValue = parseSegmentValue(value, daySelection);\n\n if (monthValue < MIN_MONTH || monthValue > MAX_MONTH || dayValue < MIN_DAY) {\n return value;\n }\n\n const maxDaysInMonth = getDaysInMonth(monthValue);\n\n if (dayValue <= maxDaysInMonth) {\n return value;\n }\n\n const [dayFrom, dayTo] = daySelection;\n const adjustedDay = String(maxDaysInMonth).padStart(dayTo - dayFrom, \"0\");\n\n return (\n value.slice(0, dayFrom) + adjustedDay + value.slice(dayTo, value.length)\n );\n}\n\nfunction parseSegmentValue(value: string, selection: SegmentRange): number {\n const [from, to] = selection;\n const segmentText = value.slice(from, to);\n if (segmentText.includes(\"_\")) return 0;\n return Number(segmentText.padEnd(to - from, \"0\"));\n}\n\nfunction getMaxValueForSegment(\n segment: keyof YearlessDateSegments,\n value: string,\n segmentsIndexes: Map<keyof YearlessDateSegments, SegmentRange>,\n): number {\n if (segment === \"month\") {\n return MAX_MONTH;\n }\n\n const monthSelection = segmentsIndexes.get(\"month\");\n if (!monthSelection) {\n return MAX_DAY;\n }\n\n const monthValue = parseSegmentValue(value, monthSelection);\n\n if (monthValue < MIN_MONTH || monthValue > MAX_MONTH) {\n return MAX_DAY;\n }\n\n return getDaysInMonth(monthValue);\n}\n\nfunction getActiveSegment({\n segmentsIndexes,\n selectionStart,\n}: {\n segmentsIndexes: Map<keyof YearlessDateSegments, SegmentRange>;\n selectionStart: number;\n}): keyof YearlessDateSegments | null {\n for (const [segmentName, segmentRange] of segmentsIndexes.entries()) {\n const [from, to] = segmentRange;\n if (from <= selectionStart && selectionStart <= to) {\n return segmentName;\n }\n }\n return null;\n}\n\nfunction updateSegmentValue({\n selection,\n value,\n increment,\n min,\n max,\n}: {\n selection: SegmentRange;\n value: string;\n increment: number;\n min: number;\n max: number;\n}): string {\n const [from, to] = selection;\n const segmentValue = parseSegmentValue(value, selection);\n // Prevent decrementing 0 losing negative and rolling up to 1.\n if (segmentValue === 0 && increment < 0) return value;\n const newSegmentValue = Math.max(\n min,\n Math.min(max, segmentValue + increment),\n );\n\n return (\n value.slice(0, from) +\n String(newSegmentValue).padStart(to - from, \"0\") +\n value.slice(to, value.length)\n );\n}\n","import { maskitoTransform, type MaskitoOptions } from \"@maskito/core\";\nimport {\n maskitoDateOptionsGenerator,\n maskitoWithPlaceholder,\n} from \"@maskito/kit\";\n\nimport type { YearlessDateMode } from \"../../types\";\nimport { makeZeroShortcutPreprocessor } from \"../../../DateFieldSingle/internal/maskito/makeZeroShortcutPreprocessor\";\nimport { createYearlessDateSegmentsSteppingPlugin } from \"./yearlessDateSegmentsStepping\";\n\n/** Builds Maskito month/day options with a persistent placeholder, zero shortcut, and optional stepping. */\nconst yearlessDatePlaceholderMask = ({\n mode,\n separator = \"/\",\n placeholder,\n enableStepping = false,\n}: {\n mode: YearlessDateMode;\n enableStepping: boolean;\n separator?: string;\n placeholder: string;\n}) => {\n const dateOptions = maskitoDateOptionsGenerator({\n mode,\n separator,\n });\n\n const { plugins, removePlaceholder, ...placeholderOptions } =\n maskitoWithPlaceholder(placeholder);\n\n const datePlaceholderMask = {\n ...dateOptions,\n plugins: plugins.concat([\n ...(dateOptions.plugins || []),\n ...(enableStepping\n ? [createYearlessDateSegmentsSteppingPlugin({ mode })]\n : []),\n ]),\n preprocessors: [\n ...placeholderOptions.preprocessors,\n ...dateOptions.preprocessors,\n makeZeroShortcutPreprocessor(mode, separator),\n ],\n postprocessors: [\n ...dateOptions.postprocessors,\n ...placeholderOptions.postprocessors,\n ],\n } satisfies Required<MaskitoOptions>;\n\n const transform = (value: string) => {\n return maskitoTransform(value, datePlaceholderMask);\n };\n\n return { options: datePlaceholderMask, removePlaceholder, transform };\n};\n\nexport default yearlessDatePlaceholderMask;\n","import { useMaskito } from \"@maskito/react\";\nimport {\n forwardRef,\n type InputHTMLAttributes,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useMergeRefs } from \"@floating-ui/react\";\nimport type { YearlessDateMode, YearlessDate } from \"../types\";\nimport { usePrevious } from \"../../../internal/hooks\";\nimport yearlessDatePlaceholderMask from \"./maskito/yearlessDatePlaceholderMask\";\nimport { swapMode, stringifyYearlessDate, parseInputValue } from \"./utils\";\nimport textFieldStyles from \"../../TextField/TextField.module.scss\";\nimport dateFieldYearlessStyles from \"../DateFieldYearless.module.scss\";\nimport cx from \"classnames\";\nimport type { PassThroughPropsWithRef, Size } from \"../../../types\";\nimport { Spinner } from \"../../Spinner\";\n\nexport type YearlessDateInputChange = {\n /** Native change event, or `null` when the value was set programmatically. */\n event: React.ChangeEvent<HTMLInputElement> | null;\n /** Parsed month/day, including `null` segments while incomplete. */\n value: YearlessDate | null;\n /** Whether both segments are two digits. */\n isInputValid: boolean;\n /** Whether no date digits remain after removing the placeholder. */\n isInputEmpty: boolean;\n};\n\n/** Receives parsed input changes, including incomplete segments. */\nexport type YearlessDateInputChangeHandler = (\n change: YearlessDateInputChange,\n) => void;\n\nexport type YearlessDateInputProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"onChange\" | \"value\" | \"ref\" | \"size\"\n> & {\n /** Called when the parsed month/day changes. */\n onChange: YearlessDateInputChangeHandler;\n /** Order of the month and day segments. Defaults to `mm/dd`. */\n mode?: YearlessDateMode;\n /** Date displayed after an external update. */\n value?: YearlessDate | null;\n /** Applies error styling on the input. */\n error?: boolean;\n /** Field height. Defaults to `medium`. */\n size?: Extract<Size, \"small\" | \"medium\" | \"large\">;\n wrapperProps?: PassThroughPropsWithRef<\"div\">;\n rootProps?: PassThroughPropsWithRef<\"div\">;\n /** Shows a spinner after the input. Defaults to `false`. */\n loading?: boolean;\n /** Enables ArrowUp/ArrowDown stepping of the focused segment. Defaults to `false`. */\n enableStepping?: boolean;\n};\n\nexport type YearlessDateInputRef = HTMLInputElement & {\n /** Updates the displayed date without firing a native input event. */\n setValue: (value: YearlessDate | null) => {\n value: YearlessDate | null;\n isInputValid: boolean;\n isInputEmpty: boolean;\n };\n /** Strips the mask placeholder so remaining digits can be parsed. */\n removePlaceholder: (value: string) => string;\n};\n\n/**\n * Masked month/day input used by DateFieldYearless.\n *\n * @internal\n */\nexport const YearlessDateInput = forwardRef<\n YearlessDateInputRef,\n YearlessDateInputProps\n>(\n (\n {\n onChange,\n mode = \"mm/dd\",\n value,\n error,\n size,\n wrapperProps,\n rootProps,\n loading = false,\n enableStepping = false,\n className: classNameProp,\n ...restProps\n },\n ref,\n ) => {\n const placeholder = \"__/__\";\n const [inputValue, setInputValue] = useState(placeholder);\n const { options, removePlaceholder, transform } =\n yearlessDatePlaceholderMask({\n mode,\n placeholder,\n enableStepping,\n });\n const maskedInputRef = useMaskito({ options });\n const inputRef = useRef<HTMLInputElement>(null);\n const combinedRef = useMergeRefs([maskedInputRef, inputRef, ref]);\n const previousValue = usePrevious(value);\n const previousMode = usePrevious(mode);\n\n useEffect(() => {\n if (mode !== previousMode) {\n setInputValue((oldInputValue) =>\n swapMode(oldInputValue, previousMode ?? mode, mode),\n );\n }\n }, [mode, previousMode]);\n\n const triggerAutoChange = useCallback(\n (stringValue: string) => {\n const {\n value: v,\n isInputValid,\n isInputEmpty,\n } = parseInputValue(stringValue, mode, removePlaceholder);\n onChange?.({\n event: null,\n value: v,\n isInputValid,\n isInputEmpty,\n });\n },\n [mode, removePlaceholder, onChange],\n );\n\n useEffect(() => {\n if (\n previousValue?.day !== value?.day ||\n previousValue?.month !== value?.month\n ) {\n if (value?.day && value?.month) {\n const stringValue = stringifyYearlessDate(\n value.day,\n value.month,\n mode,\n );\n const transformedValue = transform(stringValue);\n setInputValue(transformedValue);\n if (transformedValue !== stringValue) {\n triggerAutoChange(transformedValue);\n }\n } else if (\n previousValue !== null &&\n previousValue !== undefined &&\n (value === null || (value?.day === null && value?.month === null))\n ) {\n setInputValue(placeholder);\n } else {\n return;\n }\n }\n }, [value, mode, previousValue, transform, triggerAutoChange]);\n\n const currentParsedData = useMemo(() => {\n return parseInputValue(inputValue, mode, removePlaceholder);\n }, [inputValue, mode, removePlaceholder]);\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(event.target.value);\n const {\n value: v,\n isInputValid,\n isInputEmpty,\n } = parseInputValue(event.target.value, mode, removePlaceholder);\n\n const isDateDifferent =\n (v === null) !== (currentParsedData.value === null) ||\n v?.day !== currentParsedData.value?.day ||\n v?.month !== currentParsedData.value?.month;\n if (!isDateDifferent) {\n return;\n }\n\n onChange?.({\n event,\n value: v ?? currentParsedData.value ?? null,\n isInputValid,\n isInputEmpty,\n });\n };\n\n useImperativeHandle(ref, () => {\n const input = inputRef.current;\n if (!input) return null as unknown as YearlessDateInputRef;\n return Object.assign(input, {\n setValue: (value: YearlessDate | null) => {\n if (!value) {\n setInputValue(placeholder);\n return parseInputValue(placeholder, mode, removePlaceholder);\n }\n const valueAsString = stringifyYearlessDate(\n value.day ?? null,\n value.month ?? null,\n mode,\n );\n const transformedValue = transform(valueAsString);\n setInputValue(transformedValue);\n return parseInputValue(transformedValue, mode, removePlaceholder);\n },\n removePlaceholder,\n });\n }, [mode, placeholder, removePlaceholder, transform]);\n\n return (\n <div\n className={cx(textFieldStyles[\"textfield\"])}\n data-anv=\"yearless-date-input\"\n {...rootProps}\n >\n <div\n {...wrapperProps}\n className={cx(\n textFieldStyles[\"input-wrapper\"],\n wrapperProps?.className,\n {\n [textFieldStyles[\"small\"]]: size === \"small\",\n [textFieldStyles[\"large\"]]: size === \"large\",\n [dateFieldYearlessStyles[\"small\"]]: size === \"small\",\n [dateFieldYearlessStyles[\"large\"]]: size === \"large\",\n },\n )}\n >\n {/* anv-parts-allow-interactive -- PARTS.input forwarded via restProps from DateFieldYearless */}\n <input\n {...restProps}\n ref={combinedRef}\n data-month-value={value?.month}\n data-day-value={value?.day}\n data-input-valid={currentParsedData.isInputValid}\n data-input-empty={currentParsedData.isInputEmpty}\n value={inputValue}\n onChange={handleChange}\n type=\"text\"\n className={cx(\n textFieldStyles[\"input\"],\n dateFieldYearlessStyles[\"input\"],\n {\n [textFieldStyles[\"error\"]]: error ?? false,\n },\n classNameProp,\n )}\n />\n {loading ? (\n <div className={textFieldStyles[\"loading-spinner-wrapper\"]}>\n <Spinner />\n </div>\n ) : null}\n </div>\n </div>\n );\n },\n);\n\nYearlessDateInput.displayName = \"YearlessDateInput\";\n","import {\n forwardRef,\n type InputHTMLAttributes,\n type Ref,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type { YearlessDateMode, YearlessDate } from \"../types\";\nimport { YearlessDateSelectionPopover } from \"./YearlessDateSelectionPopover\";\nimport type { DateFieldYearlessChangeHandler } from \"../DateFieldYearless\";\nimport {\n YearlessDateInput,\n type YearlessDateInputChange,\n type YearlessDateInputRef,\n} from \"./YearlessDateInput\";\nimport { validateYearlessDate } from \"./utils\";\nimport {\n useFocusWithin,\n useOptionallyControlledState,\n} from \"../../../internal\";\nimport type { Size } from \"../../../types\";\nimport { mergeRefs } from \"../../../hooks/useMergeRefs/useMergeRefs\";\n\nexport type YearlessDateInputWithPickerProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"onChange\" | \"value\" | \"ref\" | \"size\" | \"defaultValue\" | \"onFocus\" | \"onBlur\"\n> & {\n /** Controlled month/day. Pass `null` to clear the field. */\n value?: YearlessDate | null;\n /** Initial month/day for uncontrolled use. */\n defaultValue?: YearlessDate | null;\n /** Reports the date plus separate input-format and constraint validity. */\n onChange?: DateFieldYearlessChangeHandler;\n /** Order of the month and day segments. Defaults to `mm/dd`. */\n mode?: YearlessDateMode;\n /** Makes an empty date fail constraint validation. */\n required?: boolean;\n /** Earliest valid month/day. */\n minDate?: YearlessDate | null;\n /** Latest valid month/day. */\n maxDate?: YearlessDate | null;\n /** Dates that fail constraint validation. */\n unavailable?: {\n /** 1-based month/day objects, not ISO strings. */\n dates?: YearlessDate[];\n };\n /** Renders only the masked input without its month/day picker. */\n disablePicker?: boolean;\n /** Field height. Defaults to `medium`. */\n size?: Extract<Size, \"small\" | \"medium\" | \"large\">;\n /** Applies error styling on the input. */\n error?: boolean;\n /** Shows a spinner after the input. Defaults to `false`. */\n loading?: boolean;\n onFocus?: (event: React.FocusEvent) => void;\n onBlur?: (event: React.FocusEvent) => void;\n};\n\nexport type YearlessDateInputWithPickerRef = {\n focus: () => void;\n /** Updates the displayed date without firing a native input event. */\n setValue: (value: YearlessDate | null) => void;\n};\n\n/**\n * Masked month/day input with an optional picker. Commits a picker change once\n * the first segment for the current `mode` is set.\n */\nexport const YearlessDateInputWithPicker = forwardRef<\n YearlessDateInputWithPickerRef,\n YearlessDateInputWithPickerProps\n>((props, ref) => {\n const {\n value: valueProp,\n defaultValue: defaultValueProp,\n onChange: onChangeProp,\n minDate,\n maxDate,\n unavailable,\n required,\n disablePicker = false,\n mode = \"mm/dd\",\n size = \"medium\",\n error = false,\n loading = false,\n onFocus: onFocusProp,\n onBlur: onBlurProp,\n disabled,\n ...restProps\n } = props;\n\n const inputRef = useRef<YearlessDateInputRef>(null);\n const popoverRef = useRef<{\n openPopover: () => void;\n closePopover: () => void;\n }>(null);\n // Tracked as state, not a ref: the focus-within guard below needs the element\n // during render, and a ref is still null on the render that attaches the blur\n // handler — leaving the guard empty for the first option click.\n const [popoverContent, setPopoverContent] = useState<HTMLDivElement | null>(\n null,\n );\n\n useEffect(() => {\n if (disabled) {\n popoverRef.current?.closePopover();\n }\n }, [disabled]);\n\n const [value, setValue] = useOptionallyControlledState<YearlessDate | null>({\n controlledValue: valueProp,\n defaultValue: defaultValueProp,\n });\n const [tempPickerValue, setTempPickerValue] = useState<YearlessDate | null>(\n value,\n );\n\n useImperativeHandle(\n ref,\n (): YearlessDateInputWithPickerRef => ({\n focus: () => {\n if (!inputRef.current) return;\n return inputRef.current.focus();\n },\n setValue: (value: YearlessDate | null) => {\n if (!inputRef.current) return;\n inputRef.current.setValue(value);\n },\n }),\n [inputRef],\n );\n\n const currentValidity = useMemo(\n () =>\n validateYearlessDate({\n value: value ?? null,\n constraints: {\n required: required,\n unavailable: unavailable,\n minDate: minDate,\n maxDate: maxDate,\n },\n }),\n [value, required, unavailable, minDate, maxDate],\n );\n\n const handleInputChange = (change: YearlessDateInputChange) => {\n const { event, value, ...restChange } = change;\n setValue(value);\n setTempPickerValue(value);\n onChangeProp?.({\n ...restChange,\n value,\n isValid: validateYearlessDate({\n value,\n constraints: {\n required: required,\n unavailable: unavailable,\n minDate: minDate,\n maxDate: maxDate,\n },\n }),\n });\n };\n\n const inputProps = {\n required,\n mode,\n autoComplete: \"off\",\n ...restProps,\n disabled,\n value: value,\n onChange: handleInputChange,\n \"data-valid\": currentValidity,\n size,\n error,\n loading,\n };\n\n const { props: focusWithinProps } = useFocusWithin({\n onFocus: (e) => {\n requestAnimationFrame(() => {\n onFocusProp?.(e);\n });\n },\n onBlur: (e) => {\n requestAnimationFrame(() => {\n onBlurProp?.(e);\n });\n popoverRef.current?.closePopover();\n },\n otherRelatedElements: popoverContent ? [popoverContent] : [],\n });\n\n if (disablePicker) {\n return <YearlessDateInput ref={inputRef} {...inputProps} />;\n }\n\n const handlePickerChange = (newValue: YearlessDate) => {\n setTempPickerValue(newValue);\n if (!inputRef.current) return;\n if (\n (mode === \"mm/dd\" && newValue.month) ||\n (mode === \"dd/mm\" && newValue.day)\n ) {\n const valueSet = inputRef.current.setValue(newValue);\n setValue(valueSet.value);\n onChangeProp?.({\n ...valueSet,\n isValid: validateYearlessDate({\n value: valueSet.value,\n constraints: {\n required: required,\n unavailable: unavailable,\n minDate: minDate,\n maxDate: maxDate,\n },\n }),\n });\n }\n };\n\n const handlePickerMonthChange = (month: number | null) => {\n handlePickerChange({\n day: value?.day ?? tempPickerValue?.day ?? null,\n month,\n });\n };\n\n const handlePickerDayChange = (day: number | null) => {\n handlePickerChange({\n day,\n month: value?.month ?? tempPickerValue?.month ?? null,\n });\n };\n\n const handlePickerClose = () => {\n setTempPickerValue(null);\n };\n\n const handleInputFocus = (event: React.FocusEvent) => {\n focusWithinProps.onFocus?.(event as React.FocusEvent<HTMLElement>);\n };\n const handleInputBlur = (event: React.FocusEvent) => {\n focusWithinProps.onBlur?.(event as React.FocusEvent<HTMLElement>);\n };\n\n const handlePopoverBlur = (event: React.FocusEvent) => {\n focusWithinProps.onBlur?.(event as React.FocusEvent<HTMLElement>);\n };\n\n return (\n <YearlessDateSelectionPopover\n popoverRef={popoverRef}\n popoverContentRef={setPopoverContent}\n month={value?.month ?? tempPickerValue?.month ?? null}\n day={value?.day ?? tempPickerValue?.day ?? null}\n onMonthChange={handlePickerMonthChange}\n onDayChange={handlePickerDayChange}\n onClose={handlePickerClose}\n mode={mode}\n onBlur={handlePopoverBlur}\n >\n {({ ref, onKeyDown }) => (\n <YearlessDateInput\n {...inputProps}\n ref={mergeRefs([\n inputRef,\n ref as unknown as Ref<YearlessDateInputRef>,\n ])}\n onKeyDown={(ev) => {\n onKeyDown?.(ev);\n inputProps.onKeyDown?.(ev);\n }}\n onClick={(ev) => {\n inputProps.onClick?.(ev);\n popoverRef.current?.openPopover();\n }}\n onFocus={handleInputFocus}\n onBlur={handleInputBlur}\n enableStepping\n />\n )}\n </YearlessDateSelectionPopover>\n );\n});\n\nYearlessDateInputWithPicker.displayName = \"YearlessDateInputWithPicker\";\n"],"names":["Check","item","value","ref"],"mappings":"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"}
|
package/dist/beta.js
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
export { F as FilterBar } from './FilterBar-
|
|
2
|
-
export { C as COLUMN_TYPE_DEFAULTS, D as DataTable, b as booleanFormatter, a as chipsFormatter, c as createColumnHelper, d as currencyFormatter, i as dateFormatPresets, e as dateFormatter, f as dateTimeFormatter, g as getColumnTypeDefaults, h as htmlFormatter, m as markdownFormatter, n as numberFormatter, p as percentFormatter, r as resolveColumnTypeConfig, t as timeFormatPresets, j as timeFormatter, y as yearlessDateFormatter } from './DataTable-
|
|
3
|
-
export { T as Toolbar, a as ToolbarButton, b as ToolbarButtonLink, d as ToolbarControlGroup, f as ToolbarElement, e as ToolbarSearchField, c as ToolbarSelect } from './Toolbar-
|
|
4
|
-
export { T as ToolbarButtonToggle } from './ToolbarButtonToggle-
|
|
5
|
-
export { u as useCalendarBetaProps } from './Calendar-
|
|
6
|
-
export { C as Calendar } from './Calendar-
|
|
7
|
-
import { S as SelectField$1, a as SelectFieldSync$1 } from './SelectFieldSync-
|
|
1
|
+
export { F as FilterBar } from './FilterBar-ecqJDraA.js';
|
|
2
|
+
export { C as COLUMN_TYPE_DEFAULTS, D as DataTable, b as booleanFormatter, a as chipsFormatter, c as createColumnHelper, d as currencyFormatter, i as dateFormatPresets, e as dateFormatter, f as dateTimeFormatter, g as getColumnTypeDefaults, h as htmlFormatter, m as markdownFormatter, n as numberFormatter, p as percentFormatter, r as resolveColumnTypeConfig, t as timeFormatPresets, j as timeFormatter, y as yearlessDateFormatter } from './DataTable-DkEpJ_Op.js';
|
|
3
|
+
export { T as Toolbar, a as ToolbarButton, b as ToolbarButtonLink, d as ToolbarControlGroup, f as ToolbarElement, e as ToolbarSearchField, c as ToolbarSelect } from './Toolbar-DGHZpFi9.js';
|
|
4
|
+
export { T as ToolbarButtonToggle } from './ToolbarButtonToggle-T8YnSJ5x.js';
|
|
5
|
+
export { u as useCalendarBetaProps } from './Calendar-IzXG1aJw.js';
|
|
6
|
+
export { C as Calendar } from './Calendar-DoLRAWLp.js';
|
|
7
|
+
import { S as SelectField$1, a as SelectFieldSync$1 } from './SelectFieldSync-BN2ebLWT.js';
|
|
8
8
|
import { forwardRef, createElement } from 'react';
|
|
9
9
|
import { w as warnOnce } from './warnOnce-Y9PRHcU4.js';
|
|
10
|
-
import { M as MultiSelectField$1, a as MultiSelectFieldSync$1 } from './MultiSelectFieldSync-
|
|
11
|
-
import { S as SelectMenu$1, a as SelectMenuSync$1 } from './SelectMenuSync-
|
|
12
|
-
import { M as MultiSelectMenu$1, a as MultiSelectMenuSync$1 } from './MultiSelectMenuSync-
|
|
13
|
-
export { T as TreeSelectField, a as TreeSelectFieldSync } from './TreeSelectFieldSync-
|
|
14
|
-
export { a as TreeSelectMenu, T as TreeSelectMenuSync } from './TreeSelectMenuSync-
|
|
15
|
-
export { I as InteractiveCard } from './InteractiveCard-
|
|
16
|
-
export { R as RichTextEditor } from './RichTextEditor-
|
|
17
|
-
export { S as SavedFiltersButton } from './SavedFiltersButton-
|
|
18
|
-
export { T as TypeaheadTextField } from './TypeaheadTextField-
|
|
19
|
-
export { P as Page } from './Page-
|
|
20
|
-
export { b as useAdaptiveView } from './useInvalidateOnOptionsChange-
|
|
10
|
+
import { M as MultiSelectField$1, a as MultiSelectFieldSync$1 } from './MultiSelectFieldSync-DpPO0cya.js';
|
|
11
|
+
import { S as SelectMenu$1, a as SelectMenuSync$1 } from './SelectMenuSync-DuPf8KCc.js';
|
|
12
|
+
import { M as MultiSelectMenu$1, a as MultiSelectMenuSync$1 } from './MultiSelectMenuSync-BN_3moW_.js';
|
|
13
|
+
export { T as TreeSelectField, a as TreeSelectFieldSync } from './TreeSelectFieldSync-C0mXwYZL.js';
|
|
14
|
+
export { a as TreeSelectMenu, T as TreeSelectMenuSync } from './TreeSelectMenuSync-D2TvKxP-.js';
|
|
15
|
+
export { I as InteractiveCard } from './InteractiveCard-C2CYRtgQ.js';
|
|
16
|
+
export { R as RichTextEditor } from './RichTextEditor-BpzUo8dB.js';
|
|
17
|
+
export { S as SavedFiltersButton } from './SavedFiltersButton-D9GJbJQu.js';
|
|
18
|
+
export { T as TypeaheadTextField } from './TypeaheadTextField-DgazozK7.js';
|
|
19
|
+
export { P as Page } from './Page-IZ4p51iJ.js';
|
|
20
|
+
export { b as useAdaptiveView } from './useInvalidateOnOptionsChange-BD2VBpbK.js';
|
|
21
21
|
|
|
22
22
|
const BETA_EXPORT_REMOVED_VERSION = "4.0";
|
|
23
23
|
const STABLE_PROMOTION_PATHS = {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useState, useRef, useEffect, useCallback, forwardRef, useMemo } from 'react';
|
|
2
2
|
import { jsx } from 'react/jsx-runtime';
|
|
3
|
-
import { V as VirtualizedOptionsPanel, O as OptionsPanel } from './syncFilterUtils-
|
|
3
|
+
import { V as VirtualizedOptionsPanel, O as OptionsPanel } from './syncFilterUtils-ClEj4Oeg.js';
|
|
4
4
|
|
|
5
5
|
function useBulkActionRunner({
|
|
6
6
|
setDraft
|
|
@@ -118,4 +118,4 @@ function resolveBulkActionLabel(label, current, fallback = "Select All") {
|
|
|
118
118
|
}
|
|
119
119
|
|
|
120
120
|
export { MultiSelectOptions as M, useToggleSelection as a, resolveBulkActionLabel as b, resolveBulkActionCheckState as r, useBulkActionRunner as u };
|
|
121
|
-
//# sourceMappingURL=bulkActionTypes-
|
|
121
|
+
//# sourceMappingURL=bulkActionTypes-D5y3Acn1.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bulkActionTypes-sbwWLsDi.js","sources":["../src/internal/hooks/useBulkActionRunner.ts","../src/internal/components/MultiSelectOptions.tsx","../src/internal/hooks/useToggleSelection.ts","../src/internal/types/bulkActionTypes.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\";\n\ntype BulkComputeResult<T> = T[] | Promise<T[]>;\n\nexport type UseBulkActionRunnerOptions<T> = {\n setDraft: (next: T[]) => void;\n};\n\nexport type UseBulkActionRunnerResult<T> = {\n pending: boolean;\n runBulk: (\n compute: (current: T[]) => BulkComputeResult<T>,\n current: T[],\n ) => void;\n setDraftAndBump: (next: T[]) => void;\n reset: () => void;\n};\n\n/**\n * Applies Select-All / Select-Filtered computes through `setDraft`, discarding\n * stale async results with a generation counter. Synchronous arrays apply\n * immediately. `setDraftAndBump` and `reset` also advance the generation;\n * `reset` clears `pending` but does not revert the last `setDraft`.\n */\nexport function useBulkActionRunner<T>({\n setDraft,\n}: UseBulkActionRunnerOptions<T>): UseBulkActionRunnerResult<T> {\n const [pending, setPending] = useState(false);\n const genRef = useRef(0);\n const isMountedRef = useRef(true);\n\n useEffect(() => {\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n\n const runBulk = useCallback(\n (compute: (current: T[]) => BulkComputeResult<T>, current: T[]) => {\n const result = compute(current);\n\n genRef.current += 1;\n const myGen = genRef.current;\n\n if (Array.isArray(result)) {\n setDraft(result);\n // The superseded async branch will skip setPending(false).\n if (pending) setPending(false);\n return;\n }\n\n setPending(true);\n result\n .then((next) => {\n if (!isMountedRef.current) return;\n if (genRef.current !== myGen) return;\n setDraft(next);\n setPending(false);\n })\n .catch(() => {\n if (!isMountedRef.current) return;\n if (genRef.current !== myGen) return;\n // Swallows the rejection; callers own error UI.\n setPending(false);\n });\n },\n [pending, setDraft],\n );\n\n const setDraftAndBump = useCallback(\n (next: T[]) => {\n genRef.current += 1;\n setDraft(next);\n },\n [setDraft],\n );\n\n const reset = useCallback(() => {\n genRef.current += 1;\n setPending(false);\n }, []);\n\n return { pending, runBulk, setDraftAndBump, reset };\n}\n","import type { MultiSelectFieldOption } from \"../../components/MultiSelectField/types\";\nimport type { CheckState } from \"../../types\";\nimport { type CSSProperties, forwardRef, useCallback, useMemo } from \"react\";\nimport { OptionsPanel, type OptionsPanelHandle } from \"./OptionsPanel\";\nimport { VirtualizedOptionsPanel } from \"./VirtualizedOptionsPanel\";\nimport type {\n GetItemPropsFn,\n GetMenuPropsFn,\n SectionMeta,\n SelectItem,\n} from \"../types/selectFieldInternalTypes\";\n\nexport type MultiSelectOptionsProps = {\n /** When false, option rows stay unmounted inside the menu scroller. */\n isOpen: boolean;\n /** Flattened option, pinned/group, and bulk-action rows. */\n items: SelectItem[];\n /** Downshift getter for the menu scroller. */\n getMenuProps: GetMenuPropsFn;\n /** Downshift getter for each option row. */\n getItemProps: GetItemPropsFn;\n /** Host highlight index into `items`. */\n highlightedIndex: number;\n /** Current multi selection used to derive each row's check state. */\n selectedOptions: MultiSelectFieldOption[];\n /** When true, shows the load-more control. */\n hasMore: boolean;\n /** Fetches the next page of options. */\n onLoadMore: () => void;\n /** Replaces the list with a spinner while the current page loads. */\n loading: boolean;\n /** Spinner in the load-more slot. */\n loadingMore: boolean;\n /** Skips automatic next-page fetch; the Load more button remains. */\n disableAutoLoadMore?: boolean;\n /** Disables every row, in addition to per-item `disabled`. */\n disabled?: boolean;\n className?: string;\n style?: CSSProperties;\n /** Pinned and group ranges over `items`. */\n sectionsMeta?: SectionMeta[];\n /** Uses the virtualized panel when true. Defaults to the non-virtual list. */\n virtualize?: boolean;\n};\n\n/** Multi-select option list. Forwards to {@link OptionsPanel} or the virtualized panel. */\nexport const MultiSelectOptions = forwardRef<\n OptionsPanelHandle,\n MultiSelectOptionsProps\n>(({ selectedOptions, items, virtualize, ...rest }, ref) => {\n const selectedIds = useMemo(\n () => new Set(selectedOptions.map((opt) => opt.id)),\n [selectedOptions],\n );\n\n const getCheckedState = useCallback(\n (item: SelectItem): CheckState => {\n if (item.type === \"select-all\" || item.type === \"select-filtered\") {\n return item.checkState ?? \"indeterminate\";\n }\n // Pinned copies share the source option's id; other rows key off item.id.\n const checkId =\n item.type === \"pinned-option\" ? item.original.id : item.id;\n return selectedIds.has(checkId) ? \"checked\" : \"unchecked\";\n },\n [selectedIds],\n );\n\n const ListComponent = virtualize ? VirtualizedOptionsPanel : OptionsPanel;\n\n return (\n <ListComponent\n {...rest}\n ref={ref}\n items={items}\n selectionType=\"multiple\"\n getCheckedState={getCheckedState}\n />\n );\n});\n\nMultiSelectOptions.displayName = \"MultiSelectOptions\";\n","import { useCallback, useMemo } from \"react\";\nimport type { SelectFieldOption } from \"../../components/SelectField/types\";\nimport type { NormalizedPinnedSection } from \"./usePinnedOptions\";\n\ntype UseToggleSelectionParams<TID extends string | number> = {\n options: SelectFieldOption<TID>[];\n pinnedSections: NormalizedPinnedSection<TID>[];\n selectedOptions: SelectFieldOption<TID>[];\n onSelectedOptionsChange: (options: SelectFieldOption<TID>[]) => void;\n};\n\n/**\n * Toggles an option in a multi-select list. Adding looks up the full option in\n * `options`, then pinned sections; ids in neither are not added. Removing\n * matches by id only.\n */\nexport const useToggleSelection = <TID extends string | number>({\n options,\n pinnedSections,\n selectedOptions,\n onSelectedOptionsChange,\n}: UseToggleSelectionParams<TID>) => {\n const allPinnedOptions = useMemo(() => {\n return pinnedSections.flatMap((section) => section.options);\n }, [pinnedSections]);\n\n const handleItemClick = useCallback(\n (option: { id: TID; label: string }) => {\n const isSelected = selectedOptions.some((opt) => opt.id === option.id);\n if (isSelected) {\n onSelectedOptionsChange(\n selectedOptions.filter((opt) => opt.id !== option.id),\n );\n } else {\n const fullOption =\n options.find((opt) => opt.id === option.id) ||\n allPinnedOptions.find((opt) => opt.id === option.id);\n if (fullOption) {\n onSelectedOptionsChange([...selectedOptions, fullOption]);\n }\n }\n },\n [selectedOptions, onSelectedOptionsChange, options, allPinnedOptions],\n );\n\n return { handleItemClick, allPinnedOptions };\n};\n","import type { CheckState } from \"../../types\";\nimport type { SelectFieldOption } from \"../../components/SelectField/types\";\n\n/**\n * Row checkbox state, or a function of the current selection. Boolean\n * shorthand is resolved by {@link resolveBulkActionCheckState}.\n */\nexport type BulkActionCheckState<\n TID extends string | number = string | number,\n> =\n | boolean\n | CheckState\n | ((current: SelectFieldOption<TID>[]) => boolean | CheckState);\n\n/**\n * Static text or derived from the current selection. Omitted config labels\n * become `\"Select All\"`.\n */\nexport type BulkActionLabel<TID extends string | number = string | number> =\n | string\n | ((current: SelectFieldOption<TID>[]) => string);\n\n/**\n * Select-All / Select-Filtered row. Exactly one of `onClick` or `compute`.\n */\nexport type BulkActionConfig<TID extends string | number> =\n | {\n label?: BulkActionLabel<TID>;\n checkState: BulkActionCheckState<TID>;\n /** Consumer commits the next selection. */\n onClick: () => void;\n compute?: never;\n }\n | {\n label?: BulkActionLabel<TID>;\n checkState: BulkActionCheckState<TID>;\n /** Next selection from the current one; may be async. */\n compute: (\n current: SelectFieldOption<TID>[],\n ) => SelectFieldOption<TID>[] | Promise<SelectFieldOption<TID>[]>;\n onClick?: never;\n };\n\n/**\n * Normalized form after `checkState`'s boolean shorthand is a `CheckState`.\n */\nexport type ResolvedBulkAction<TID extends string | number = string | number> =\n {\n label?: string;\n checkState: CheckState;\n onClick?: () => void;\n compute?: (\n current: SelectFieldOption<TID>[],\n ) => SelectFieldOption<TID>[] | Promise<SelectFieldOption<TID>[]>;\n };\n\n/**\n * Resolves {@link BulkActionCheckState} to a {@link CheckState}.\n * `true` → `\"checked\"`, `false` → `\"unchecked\"`; other values pass through,\n * defaulting to `\"indeterminate\"`.\n */\nexport function resolveBulkActionCheckState<TID extends string | number>(\n checkState: BulkActionCheckState<TID>,\n current: SelectFieldOption<TID>[],\n): CheckState {\n const value =\n typeof checkState === \"function\" ? checkState(current) : checkState;\n return value === true\n ? \"checked\"\n : value === false\n ? \"unchecked\"\n : (value ?? \"indeterminate\");\n}\n\n/** Resolves {@link BulkActionLabel} to a string. */\nexport function resolveBulkActionLabel<TID extends string | number>(\n label: BulkActionLabel<TID> | undefined,\n current: SelectFieldOption<TID>[],\n fallback = \"Select All\",\n): string {\n if (label === undefined) return fallback;\n return typeof label === \"function\" ? label(current) : label;\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bulkActionTypes-D5y3Acn1.js","sources":["../src/internal/hooks/useBulkActionRunner.ts","../src/internal/components/MultiSelectOptions.tsx","../src/internal/hooks/useToggleSelection.ts","../src/internal/types/bulkActionTypes.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\";\n\ntype BulkComputeResult<T> = T[] | Promise<T[]>;\n\nexport type UseBulkActionRunnerOptions<T> = {\n setDraft: (next: T[]) => void;\n};\n\nexport type UseBulkActionRunnerResult<T> = {\n pending: boolean;\n runBulk: (\n compute: (current: T[]) => BulkComputeResult<T>,\n current: T[],\n ) => void;\n setDraftAndBump: (next: T[]) => void;\n reset: () => void;\n};\n\n/**\n * Applies Select-All / Select-Filtered computes through `setDraft`, discarding\n * stale async results with a generation counter. Synchronous arrays apply\n * immediately. `setDraftAndBump` and `reset` also advance the generation;\n * `reset` clears `pending` but does not revert the last `setDraft`.\n */\nexport function useBulkActionRunner<T>({\n setDraft,\n}: UseBulkActionRunnerOptions<T>): UseBulkActionRunnerResult<T> {\n const [pending, setPending] = useState(false);\n const genRef = useRef(0);\n const isMountedRef = useRef(true);\n\n useEffect(() => {\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n\n const runBulk = useCallback(\n (compute: (current: T[]) => BulkComputeResult<T>, current: T[]) => {\n const result = compute(current);\n\n genRef.current += 1;\n const myGen = genRef.current;\n\n if (Array.isArray(result)) {\n setDraft(result);\n // The superseded async branch will skip setPending(false).\n if (pending) setPending(false);\n return;\n }\n\n setPending(true);\n result\n .then((next) => {\n if (!isMountedRef.current) return;\n if (genRef.current !== myGen) return;\n setDraft(next);\n setPending(false);\n })\n .catch(() => {\n if (!isMountedRef.current) return;\n if (genRef.current !== myGen) return;\n // Swallows the rejection; callers own error UI.\n setPending(false);\n });\n },\n [pending, setDraft],\n );\n\n const setDraftAndBump = useCallback(\n (next: T[]) => {\n genRef.current += 1;\n setDraft(next);\n },\n [setDraft],\n );\n\n const reset = useCallback(() => {\n genRef.current += 1;\n setPending(false);\n }, []);\n\n return { pending, runBulk, setDraftAndBump, reset };\n}\n","import type { MultiSelectFieldOption } from \"../../components/MultiSelectField/types\";\nimport type { CheckState } from \"../../types\";\nimport { type CSSProperties, forwardRef, useCallback, useMemo } from \"react\";\nimport { OptionsPanel, type OptionsPanelHandle } from \"./OptionsPanel\";\nimport { VirtualizedOptionsPanel } from \"./VirtualizedOptionsPanel\";\nimport type {\n GetItemPropsFn,\n GetMenuPropsFn,\n SectionMeta,\n SelectItem,\n} from \"../types/selectFieldInternalTypes\";\n\nexport type MultiSelectOptionsProps = {\n /** When false, option rows stay unmounted inside the menu scroller. */\n isOpen: boolean;\n /** Flattened option, pinned/group, and bulk-action rows. */\n items: SelectItem[];\n /** Downshift getter for the menu scroller. */\n getMenuProps: GetMenuPropsFn;\n /** Downshift getter for each option row. */\n getItemProps: GetItemPropsFn;\n /** Host highlight index into `items`. */\n highlightedIndex: number;\n /** Current multi selection used to derive each row's check state. */\n selectedOptions: MultiSelectFieldOption[];\n /** When true, shows the load-more control. */\n hasMore: boolean;\n /** Fetches the next page of options. */\n onLoadMore: () => void;\n /** Replaces the list with a spinner while the current page loads. */\n loading: boolean;\n /** Spinner in the load-more slot. */\n loadingMore: boolean;\n /** Skips automatic next-page fetch; the Load more button remains. */\n disableAutoLoadMore?: boolean;\n /** Disables every row, in addition to per-item `disabled`. */\n disabled?: boolean;\n className?: string;\n style?: CSSProperties;\n /** Pinned and group ranges over `items`. */\n sectionsMeta?: SectionMeta[];\n /** Uses the virtualized panel when true. Defaults to the non-virtual list. */\n virtualize?: boolean;\n};\n\n/** Multi-select option list. Forwards to {@link OptionsPanel} or the virtualized panel. */\nexport const MultiSelectOptions = forwardRef<\n OptionsPanelHandle,\n MultiSelectOptionsProps\n>(({ selectedOptions, items, virtualize, ...rest }, ref) => {\n const selectedIds = useMemo(\n () => new Set(selectedOptions.map((opt) => opt.id)),\n [selectedOptions],\n );\n\n const getCheckedState = useCallback(\n (item: SelectItem): CheckState => {\n if (item.type === \"select-all\" || item.type === \"select-filtered\") {\n return item.checkState ?? \"indeterminate\";\n }\n // Pinned copies share the source option's id; other rows key off item.id.\n const checkId =\n item.type === \"pinned-option\" ? item.original.id : item.id;\n return selectedIds.has(checkId) ? \"checked\" : \"unchecked\";\n },\n [selectedIds],\n );\n\n const ListComponent = virtualize ? VirtualizedOptionsPanel : OptionsPanel;\n\n return (\n <ListComponent\n {...rest}\n ref={ref}\n items={items}\n selectionType=\"multiple\"\n getCheckedState={getCheckedState}\n />\n );\n});\n\nMultiSelectOptions.displayName = \"MultiSelectOptions\";\n","import { useCallback, useMemo } from \"react\";\nimport type { SelectFieldOption } from \"../../components/SelectField/types\";\nimport type { NormalizedPinnedSection } from \"./usePinnedOptions\";\n\ntype UseToggleSelectionParams<TID extends string | number> = {\n options: SelectFieldOption<TID>[];\n pinnedSections: NormalizedPinnedSection<TID>[];\n selectedOptions: SelectFieldOption<TID>[];\n onSelectedOptionsChange: (options: SelectFieldOption<TID>[]) => void;\n};\n\n/**\n * Toggles an option in a multi-select list. Adding looks up the full option in\n * `options`, then pinned sections; ids in neither are not added. Removing\n * matches by id only.\n */\nexport const useToggleSelection = <TID extends string | number>({\n options,\n pinnedSections,\n selectedOptions,\n onSelectedOptionsChange,\n}: UseToggleSelectionParams<TID>) => {\n const allPinnedOptions = useMemo(() => {\n return pinnedSections.flatMap((section) => section.options);\n }, [pinnedSections]);\n\n const handleItemClick = useCallback(\n (option: { id: TID; label: string }) => {\n const isSelected = selectedOptions.some((opt) => opt.id === option.id);\n if (isSelected) {\n onSelectedOptionsChange(\n selectedOptions.filter((opt) => opt.id !== option.id),\n );\n } else {\n const fullOption =\n options.find((opt) => opt.id === option.id) ||\n allPinnedOptions.find((opt) => opt.id === option.id);\n if (fullOption) {\n onSelectedOptionsChange([...selectedOptions, fullOption]);\n }\n }\n },\n [selectedOptions, onSelectedOptionsChange, options, allPinnedOptions],\n );\n\n return { handleItemClick, allPinnedOptions };\n};\n","import type { CheckState } from \"../../types\";\nimport type { SelectFieldOption } from \"../../components/SelectField/types\";\n\n/**\n * Row checkbox state, or a function of the current selection. Boolean\n * shorthand is resolved by {@link resolveBulkActionCheckState}.\n */\nexport type BulkActionCheckState<\n TID extends string | number = string | number,\n> =\n | boolean\n | CheckState\n | ((current: SelectFieldOption<TID>[]) => boolean | CheckState);\n\n/**\n * Static text or derived from the current selection. Omitted config labels\n * become `\"Select All\"`.\n */\nexport type BulkActionLabel<TID extends string | number = string | number> =\n | string\n | ((current: SelectFieldOption<TID>[]) => string);\n\n/**\n * Select-All / Select-Filtered row. Exactly one of `onClick` or `compute`.\n */\nexport type BulkActionConfig<TID extends string | number> =\n | {\n label?: BulkActionLabel<TID>;\n checkState: BulkActionCheckState<TID>;\n /** Consumer commits the next selection. */\n onClick: () => void;\n compute?: never;\n }\n | {\n label?: BulkActionLabel<TID>;\n checkState: BulkActionCheckState<TID>;\n /** Next selection from the current one; may be async. */\n compute: (\n current: SelectFieldOption<TID>[],\n ) => SelectFieldOption<TID>[] | Promise<SelectFieldOption<TID>[]>;\n onClick?: never;\n };\n\n/**\n * Normalized form after `checkState`'s boolean shorthand is a `CheckState`.\n */\nexport type ResolvedBulkAction<TID extends string | number = string | number> =\n {\n label?: string;\n checkState: CheckState;\n onClick?: () => void;\n compute?: (\n current: SelectFieldOption<TID>[],\n ) => SelectFieldOption<TID>[] | Promise<SelectFieldOption<TID>[]>;\n };\n\n/**\n * Resolves {@link BulkActionCheckState} to a {@link CheckState}.\n * `true` → `\"checked\"`, `false` → `\"unchecked\"`; other values pass through,\n * defaulting to `\"indeterminate\"`.\n */\nexport function resolveBulkActionCheckState<TID extends string | number>(\n checkState: BulkActionCheckState<TID>,\n current: SelectFieldOption<TID>[],\n): CheckState {\n const value =\n typeof checkState === \"function\" ? checkState(current) : checkState;\n return value === true\n ? \"checked\"\n : value === false\n ? \"unchecked\"\n : (value ?? \"indeterminate\");\n}\n\n/** Resolves {@link BulkActionLabel} to a string. */\nexport function resolveBulkActionLabel<TID extends string | number>(\n label: BulkActionLabel<TID> | undefined,\n current: SelectFieldOption<TID>[],\n fallback = \"Select All\",\n): string {\n if (label === undefined) return fallback;\n return typeof label === \"function\" ? label(current) : label;\n}\n"],"names":[],"mappings":"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"}
|