@servicetitan/anvil2 3.0.5 → 3.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +48 -0
- package/dist/{AiMark-DjOf60tj.js → AiMark-BXL0sWIV.js} +2 -2
- package/dist/{AiMark-DjOf60tj.js.map → AiMark-BXL0sWIV.js.map} +1 -1
- package/dist/AiMark.js +1 -1
- package/dist/{Alert-BTesdKK7.js → Alert-BNH0UD2s.js} +2 -2
- package/dist/{Alert-BTesdKK7.js.map → Alert-BNH0UD2s.js.map} +1 -1
- package/dist/Alert.js +1 -1
- package/dist/{Breadcrumbs-DTi5RqT-.js → Breadcrumbs-Bzxbdu-S.js} +2 -2
- package/dist/{Breadcrumbs-DTi5RqT-.js.map → Breadcrumbs-Bzxbdu-S.js.map} +1 -1
- package/dist/Breadcrumbs.js +1 -1
- package/dist/{Calendar-ddGQKSGU.js → Calendar-BYNFAWpZ.js} +2 -2
- package/dist/{Calendar-ddGQKSGU.js.map → Calendar-BYNFAWpZ.js.map} +1 -1
- package/dist/{Calendar-CpCRxcue.js → Calendar-DS5eWpGF.js} +2 -2
- package/dist/{Calendar-CpCRxcue.js.map → Calendar-DS5eWpGF.js.map} +1 -1
- package/dist/Calendar.js +2 -2
- package/dist/{Checkbox-CJ8eYejR.js → Checkbox-BB3BDJsK.js} +4 -4
- package/dist/{Checkbox-CJ8eYejR.js.map → Checkbox-BB3BDJsK.js.map} +1 -1
- package/dist/{Checkbox-CVidv1sO.js → Checkbox-BeIzx_ZX.js} +2 -2
- package/dist/{Checkbox-CVidv1sO.js.map → Checkbox-BeIzx_ZX.js.map} +1 -1
- package/dist/Checkbox.css +40 -37
- package/dist/Checkbox.js +1 -1
- package/dist/Checkbox.module-CURNX27M.js +28 -0
- package/dist/Checkbox.module-CURNX27M.js.map +1 -0
- package/dist/{Chip-0-Yx9SGX.js → Chip-D2k5X_wX.js} +2 -2
- package/dist/{Chip-0-Yx9SGX.js.map → Chip-D2k5X_wX.js.map} +1 -1
- package/dist/Chip.js +1 -1
- package/dist/Combobox.js +1 -2
- package/dist/Combobox.js.map +1 -1
- package/dist/{DataTable-BFzj8cZG.js → DataTable-E8z0H8c7.js} +144 -17
- package/dist/{DataTable-BFzj8cZG.js.map → DataTable-E8z0H8c7.js.map} +1 -1
- package/dist/DataTable.css +47 -5
- package/dist/{DateFieldRange-CO2C776E.js → DateFieldRange-BN_uIvHI.js} +27 -15
- package/dist/DateFieldRange-BN_uIvHI.js.map +1 -0
- package/dist/DateFieldRange.js +1 -1
- package/dist/{DateFieldSingle-DjmHpn1y.js → DateFieldSingle-h3YkdwPo.js} +5 -5
- package/dist/{DateFieldSingle-DjmHpn1y.js.map → DateFieldSingle-h3YkdwPo.js.map} +1 -1
- package/dist/DateFieldSingle.js +1 -1
- package/dist/{DateFieldYearless-CCJAopYd.js → DateFieldYearless-m_Hl2gMY.js} +5 -5
- package/dist/{DateFieldYearless-CCJAopYd.js.map → DateFieldYearless-m_Hl2gMY.js.map} +1 -1
- package/dist/DateFieldYearless.js +1 -1
- package/dist/{DateFieldYearlessRange-BUv1mGJg.js → DateFieldYearlessRange-DNqSTBDr.js} +4 -4
- package/dist/{DateFieldYearlessRange-BUv1mGJg.js.map → DateFieldYearlessRange-DNqSTBDr.js.map} +1 -1
- package/dist/DateFieldYearlessRange.js +1 -1
- package/dist/{DaysOfTheWeek-BihTU2No.js → DaysOfTheWeek-D58z_eF3.js} +10 -9
- package/dist/{DaysOfTheWeek-BihTU2No.js.map → DaysOfTheWeek-D58z_eF3.js.map} +1 -1
- package/dist/DaysOfTheWeek.css +10 -6
- package/dist/DaysOfTheWeek.js +1 -1
- package/dist/{Dialog-BZTo4hbX.js → Dialog-CvYSMvfD.js} +23 -21
- package/dist/{Dialog-BZTo4hbX.js.map → Dialog-CvYSMvfD.js.map} +1 -1
- package/dist/Dialog.css +43 -29
- package/dist/Dialog.js +1 -1
- package/dist/{Drawer-Dg35inxH.js → Drawer-s2y0xcgV.js} +3 -3
- package/dist/{Drawer-Dg35inxH.js.map → Drawer-s2y0xcgV.js.map} +1 -1
- package/dist/Drawer.js +1 -1
- package/dist/DrillDown.js +1 -1
- package/dist/{EditCard-BfNq-T8n.js → EditCard-B25pj0Jx.js} +2 -2
- package/dist/{EditCard-BfNq-T8n.js.map → EditCard-B25pj0Jx.js.map} +1 -1
- package/dist/EditCard.js +1 -1
- package/dist/{FieldLabel-xV6EdVwo.js → FieldLabel-D1qPAGtB.js} +3 -3
- package/dist/{FieldLabel-xV6EdVwo.js.map → FieldLabel-D1qPAGtB.js.map} +1 -1
- package/dist/FieldLabel.js +1 -1
- package/dist/FilterBar-B4ZAs73g.js +412 -0
- package/dist/FilterBar-B4ZAs73g.js.map +1 -0
- package/dist/FilterBar.js +1 -1
- package/dist/{InputMask-8rI6UIb8.js → InputMask-BDl09V4u.js} +3 -3
- package/dist/{InputMask-8rI6UIb8.js.map → InputMask-BDl09V4u.js.map} +1 -1
- package/dist/InputMask.js +1 -1
- package/dist/{ListView-CIa981KJ.js → ListView-DO5psxd4.js} +6 -6
- package/dist/{ListView-CIa981KJ.js.map → ListView-DO5psxd4.js.map} +1 -1
- package/dist/ListView.js +1 -1
- package/dist/{ListView.module-CKUQP3kf.js → ListView.module-DfqtCL3Q.js} +3 -3
- package/dist/ListView.module-DfqtCL3Q.js.map +1 -0
- package/dist/{Listbox-DRznPBCr.js → Listbox-CvQHBFWb.js} +2 -2
- package/dist/{Listbox-DRznPBCr.js.map → Listbox-CvQHBFWb.js.map} +1 -1
- package/dist/Listbox.js +1 -1
- package/dist/MultiSelectField.js +1 -1
- package/dist/{MultiSelectFieldSync-BxyQiVPQ.js → MultiSelectFieldSync-CXX2F0ru.js} +62 -32
- package/dist/MultiSelectFieldSync-CXX2F0ru.js.map +1 -0
- package/dist/MultiSelectFieldSync.css +72 -65
- package/dist/MultiSelectMenu.js +1 -1
- package/dist/{MultiSelectMenuSync-BJfvZGf3.js → MultiSelectMenuSync-EKtvlL62.js} +218 -47
- package/dist/MultiSelectMenuSync-EKtvlL62.js.map +1 -0
- package/dist/{NumberField-D7YYo4Rl.js → NumberField-BymFZhIJ.js} +4 -4
- package/dist/{NumberField-D7YYo4Rl.js.map → NumberField-BymFZhIJ.js.map} +1 -1
- package/dist/NumberField.js +1 -1
- package/dist/{Page-cELP59Hm.js → Page-C2_Hm27h.js} +8 -8
- package/dist/{Page-cELP59Hm.js.map → Page-C2_Hm27h.js.map} +1 -1
- package/dist/Page.js +1 -1
- package/dist/{Pagination-DTN4FovY.js → Pagination-Bmd4JORe.js} +3 -3
- package/dist/{Pagination-DTN4FovY.js.map → Pagination-Bmd4JORe.js.map} +1 -1
- package/dist/Pagination.js +1 -1
- package/dist/{Popover-B3Vw4lDW.js → Popover-8mTJoMy7.js} +2 -2
- package/dist/{Popover-B3Vw4lDW.js.map → Popover-8mTJoMy7.js.map} +1 -1
- package/dist/Popover.js +1 -1
- package/dist/{ProgressBar-kzCNhaCO.js → ProgressBar-C1CkQHV5.js} +2 -2
- package/dist/{ProgressBar-kzCNhaCO.js.map → ProgressBar-C1CkQHV5.js.map} +1 -1
- package/dist/ProgressBar.js +1 -1
- package/dist/{Radio-CSBetBV6.js → Radio-BcHMk8dD.js} +2 -2
- package/dist/{Radio-CSBetBV6.js.map → Radio-BcHMk8dD.js.map} +1 -1
- package/dist/{Radio-BDE1xGel.js → Radio-D5WyQN2i.js} +16 -16
- package/dist/{Radio-BDE1xGel.js.map → Radio-D5WyQN2i.js.map} +1 -1
- package/dist/Radio.css +40 -37
- package/dist/Radio.js +1 -1
- package/dist/{RichTextEditor-BFFXj0zS.js → RichTextEditor-DstVbYch.js} +8 -8
- package/dist/{RichTextEditor-BFFXj0zS.js.map → RichTextEditor-DstVbYch.js.map} +1 -1
- package/dist/RichTextEditor.js +1 -1
- package/dist/SavedFiltersButton-2qba2Cgu.js +650 -0
- package/dist/SavedFiltersButton-2qba2Cgu.js.map +1 -0
- package/dist/SavedFiltersButton.css +8 -0
- package/dist/SavedFiltersButton.d.ts +1 -0
- package/dist/SavedFiltersButton.js +2 -0
- package/dist/SavedFiltersButton.js.map +1 -0
- package/dist/{SearchField-Dl7sh_M4.js → SearchField-BMHJCVFu.js} +2 -2
- package/dist/{SearchField-Dl7sh_M4.js.map → SearchField-BMHJCVFu.js.map} +1 -1
- package/dist/{SearchField-CO9BHCYB.js → SearchField-fXc_vWEr.js} +3 -3
- package/dist/{SearchField-CO9BHCYB.js.map → SearchField-fXc_vWEr.js.map} +1 -1
- package/dist/SearchField.js +1 -1
- package/dist/{SelectCard-CLCLIBoq.js → SelectCard-BN-LI14f.js} +3 -3
- package/dist/{SelectCard-CLCLIBoq.js.map → SelectCard-BN-LI14f.js.map} +1 -1
- package/dist/SelectCard.js +1 -1
- package/dist/SelectField.js +1 -1
- package/dist/{SelectFieldLabel-Db9w6O6r.js → SelectFieldLabel-UbQT7fDD.js} +2 -2
- package/dist/{SelectFieldLabel-Db9w6O6r.js.map → SelectFieldLabel-UbQT7fDD.js.map} +1 -1
- package/dist/{SelectFieldSync-z8b41JZz.js → SelectFieldSync-DykGkR_w.js} +6 -6
- package/dist/SelectFieldSync-DykGkR_w.js.map +1 -0
- package/dist/SelectMenu.js +1 -1
- package/dist/{SelectMenuSync-Cf1Zradm.js → SelectMenuSync-DTQ8Ofoz.js} +21 -9
- package/dist/SelectMenuSync-DTQ8Ofoz.js.map +1 -0
- package/dist/{SelectOptions-BgT1V6qp.js → SelectOptions-DVSOJwRy.js} +2 -2
- package/dist/{SelectOptions-BgT1V6qp.js.map → SelectOptions-DVSOJwRy.js.map} +1 -1
- package/dist/{SelectTrigger-37HzF-VI.js → SelectTrigger-CHk0KO-P.js} +2 -2
- package/dist/{SelectTrigger-37HzF-VI.js.map → SelectTrigger-CHk0KO-P.js.map} +1 -1
- package/dist/SelectTrigger.js +1 -1
- package/dist/{SelectTriggerBase-4o1cqEbR.js → SelectTriggerBase-B2S5SOZr.js} +137 -41
- package/dist/SelectTriggerBase-B2S5SOZr.js.map +1 -0
- package/dist/SelectTriggerBase.css +46 -42
- package/dist/SelectTriggerBase.module-DsPvTQE7.js +37 -0
- package/dist/SelectTriggerBase.module-DsPvTQE7.js.map +1 -0
- package/dist/{Switch-p4yVJTNy.js → Switch-onmiKoRd.js} +2 -2
- package/dist/{Switch-p4yVJTNy.js.map → Switch-onmiKoRd.js.map} +1 -1
- package/dist/Switch.js +1 -1
- package/dist/Table.js +1 -1
- package/dist/{Text-BgPuOXJM.js → Text-BTzgTpqu.js} +2 -2
- package/dist/{Text-BgPuOXJM.js.map → Text-BTzgTpqu.js.map} +1 -1
- package/dist/Text.js +1 -1
- package/dist/{TextField-DzuM8vvd.js → TextField-WTYZJlX3.js} +2 -2
- package/dist/{TextField-DzuM8vvd.js.map → TextField-WTYZJlX3.js.map} +1 -1
- package/dist/{TextField-D7NyaKId.js → TextField-rVfctM1E.js} +4 -4
- package/dist/{TextField-D7NyaKId.js.map → TextField-rVfctM1E.js.map} +1 -1
- package/dist/TextField.css +22 -58
- package/dist/TextField.js +1 -1
- package/dist/TextField.module-C8FsjTpx.js +23 -0
- package/dist/TextField.module-C8FsjTpx.js.map +1 -0
- package/dist/{Textarea-Dks15Zt3.js → Textarea-PXjppEQ6.js} +3 -3
- package/dist/{Textarea-Dks15Zt3.js.map → Textarea-PXjppEQ6.js.map} +1 -1
- package/dist/Textarea.js +1 -1
- package/dist/{TimeField-lN_5V6-X.js → TimeField-BJPXIv6W.js} +4 -4
- package/dist/{TimeField-lN_5V6-X.js.map → TimeField-BJPXIv6W.js.map} +1 -1
- package/dist/TimeField.js +1 -1
- package/dist/Toast.js +2 -2
- package/dist/{Toaster-3GI_qJxj.js → Toaster-CoChsMD0.js} +3 -3
- package/dist/{Toaster-3GI_qJxj.js.map → Toaster-CoChsMD0.js.map} +1 -1
- package/dist/{Toaster-2pAMQXRk.js → Toaster-DXLc86VD.js} +2 -2
- package/dist/{Toaster-2pAMQXRk.js.map → Toaster-DXLc86VD.js.map} +1 -1
- package/dist/{Toolbar-BRQpvj9U.js → Toolbar-Bt3kShho.js} +4 -4
- package/dist/{Toolbar-BRQpvj9U.js.map → Toolbar-Bt3kShho.js.map} +1 -1
- package/dist/{Toolbar-B0WHsX9W.js → Toolbar-DaUKbbsL.js} +6 -6
- package/dist/{Toolbar-B0WHsX9W.js.map → Toolbar-DaUKbbsL.js.map} +1 -1
- package/dist/Toolbar.js +2 -2
- package/dist/{ToolbarButtonToggle-xvMWRxzC.js → ToolbarButtonToggle-BPu81Wuv.js} +5 -4
- package/dist/ToolbarButtonToggle-BPu81Wuv.js.map +1 -0
- package/dist/{Tooltip-DGo3OWqL.js → Tooltip-yr1D06BE.js} +5 -5
- package/dist/{Tooltip-DGo3OWqL.js.map → Tooltip-yr1D06BE.js.map} +1 -1
- package/dist/Tooltip.css +6 -7
- package/dist/Tooltip.js +1 -1
- package/dist/{YearlessDateInputWithPicker-BhbR5F22.js → YearlessDateInputWithPicker-BIcVgz-J.js} +3 -3
- package/dist/{YearlessDateInputWithPicker-BhbR5F22.js.map → YearlessDateInputWithPicker-BIcVgz-J.js.map} +1 -1
- package/dist/assets/icons/st/batch.svg +1 -1
- package/dist/assets/icons/st/call.svg +1 -1
- package/dist/assets/icons/st/customer.svg +1 -1
- package/dist/assets/icons/st/enterprise_hub.svg +1 -1
- package/dist/assets/icons/st/equipment.svg +1 -1
- package/dist/assets/icons/st/estimate.svg +1 -1
- package/dist/assets/icons/st/full_fluid.svg +1 -1
- package/dist/assets/icons/st/gnav_titan_advisor_active.svg +1 -1
- package/dist/assets/icons/st/gnav_titan_advisor_inactive.svg +1 -1
- package/dist/assets/icons/st/job.svg +1 -1
- package/dist/assets/icons/st/leads.svg +1 -1
- package/dist/assets/icons/st/proposal.svg +1 -1
- package/dist/assets/icons/st/roofing.svg +1 -1
- package/dist/beta.js +13 -12
- package/dist/beta.js.map +1 -1
- package/dist/filter-state-Bx3aYS1r.js +1627 -0
- package/dist/filter-state-Bx3aYS1r.js.map +1 -0
- package/dist/{FilterBar.css → filter-state.css} +19 -33
- package/dist/{index-B6Demgr-.js → index-DVYRUKtW.js} +2 -2
- package/dist/{index-B6Demgr-.js.map → index-DVYRUKtW.js.map} +1 -1
- package/dist/index.js +38 -39
- package/dist/index.js.map +1 -1
- package/dist/src/beta/components/FilterBar/FilterBar.d.ts +12 -10
- package/dist/src/beta/components/FilterBar/FilterDateList.d.ts +47 -0
- package/dist/src/beta/components/FilterBar/FilterDateRange.d.ts +34 -29
- package/dist/src/beta/components/FilterBar/FilterDateSingle.d.ts +31 -22
- package/dist/src/beta/components/FilterBar/FilterDrawer.d.ts +1 -1
- package/dist/src/beta/components/FilterBar/FilterItemWrapper.d.ts +4 -12
- package/dist/src/beta/components/FilterBar/FilterNumericRange.d.ts +29 -0
- package/dist/src/beta/components/FilterBar/FilterPopoverButton.d.ts +86 -0
- package/dist/src/beta/components/FilterBar/FilterToggleButton.d.ts +2 -2
- package/dist/src/beta/components/FilterBar/FilterTriggerButton.d.ts +50 -0
- package/dist/src/beta/components/FilterBar/index.d.ts +1 -1
- package/dist/src/beta/components/FilterBar/internal/FilterGroupContext.d.ts +5 -9
- package/dist/src/beta/components/FilterBar/internal/adapters/asyncMultiSelect.d.ts +6 -0
- package/dist/src/beta/components/FilterBar/internal/adapters/asyncSelect.d.ts +6 -0
- package/dist/src/beta/components/FilterBar/internal/adapters/boolean.d.ts +3 -0
- package/dist/src/beta/components/FilterBar/internal/adapters/custom.d.ts +3 -0
- package/dist/src/beta/components/FilterBar/internal/adapters/date.d.ts +5 -0
- package/dist/src/beta/components/FilterBar/internal/adapters/dateList.d.ts +5 -0
- package/dist/src/beta/components/FilterBar/internal/adapters/dateRange.d.ts +8 -0
- package/dist/src/beta/components/FilterBar/internal/adapters/index.d.ts +15 -0
- package/dist/src/beta/components/FilterBar/internal/adapters/multiSelect.d.ts +6 -0
- package/dist/src/beta/components/FilterBar/internal/adapters/numericRange.d.ts +3 -0
- package/dist/src/beta/components/FilterBar/internal/adapters/singleSelect.d.ts +6 -0
- package/dist/src/beta/components/FilterBar/internal/adapters/types.d.ts +78 -0
- package/dist/src/beta/components/FilterBar/internal/types.d.ts +204 -61
- package/dist/src/beta/components/FilterBar/internal/utils/dateListLibraryOptions.d.ts +29 -0
- package/dist/src/beta/components/FilterBar/internal/utils/filter-state.d.ts +2 -38
- package/dist/src/beta/components/FilterBar/internal/utils/test.d.ts +14 -28
- package/dist/src/beta/components/FilterBar/internal/utils/value-compare.d.ts +14 -0
- package/dist/src/beta/components/MultiSelectField/internal/MultiSelectFieldComboboxMode.d.ts +1 -1
- package/dist/src/beta/components/MultiSelectField/internal/MultiSelectFieldSelectMode.d.ts +1 -1
- package/dist/src/beta/components/MultiSelectField/internal/types.d.ts +4 -2
- package/dist/src/beta/components/MultiSelectField/internal/useComboMultiple.d.ts +7 -5
- package/dist/src/beta/components/MultiSelectField/internal/useSelectModeMultiple.d.ts +5 -2
- package/dist/src/beta/components/MultiSelectField/types.d.ts +21 -36
- package/dist/src/beta/components/MultiSelectMenu/MultiSelectMenu.d.ts +1 -0
- package/dist/src/beta/components/MultiSelectMenu/types.d.ts +52 -12
- package/dist/src/beta/components/SavedFiltersButton/SavedFiltersButton.d.ts +40 -0
- package/dist/src/beta/components/SavedFiltersButton/index.d.ts +2 -0
- package/dist/src/beta/components/SavedFiltersButton/internal/AddSavedFilterDrawer.d.ts +27 -0
- package/dist/src/beta/components/SavedFiltersButton/internal/EditSavedFiltersDrawer.d.ts +38 -0
- package/dist/src/beta/components/SavedFiltersButton/types.d.ts +147 -0
- package/dist/src/beta/components/SelectField/types.d.ts +7 -11
- package/dist/src/beta/components/SelectMenu/internal/useMenuInteraction.d.ts +8 -1
- package/dist/src/beta/components/SelectMenu/types.d.ts +21 -1
- package/dist/src/beta/components/Table/DataTable/internal/DataTablePagination.d.ts +6 -0
- package/dist/src/beta/components/Table/DataTable/types.d.ts +43 -10
- package/dist/src/beta/components/Toolbar/internal/ToolbarContext.d.ts +3 -2
- package/dist/src/beta/components/index.d.ts +1 -0
- package/dist/src/internal/components/MenuFooter/MenuFooter.d.ts +43 -0
- package/dist/src/internal/components/OptionCheckbox.d.ts +6 -0
- package/dist/src/internal/components/OptionContentArea.d.ts +8 -0
- package/dist/src/internal/components/OptionRow.d.ts +10 -0
- package/dist/src/internal/components/OptionsPopover/OptionsPopover.d.ts +4 -4
- package/dist/src/internal/hooks/index.d.ts +2 -0
- package/dist/src/internal/hooks/useBulkActionRunner.d.ts +41 -0
- package/dist/src/internal/hooks/useConfirmationDraft.d.ts +21 -0
- package/dist/src/internal/types/bulkActionTypes.d.ts +39 -0
- package/dist/src/internal/types/confirmationTypes.d.ts +19 -0
- package/dist/src/internal/types/optionContent.d.ts +19 -0
- package/dist/src/internal/types/selectFieldInternalTypes.d.ts +2 -0
- package/dist/{stripInlineMarkdown-D_eHogvh.js → stripInlineMarkdown-C5DNxxwf.js} +2 -2
- package/dist/{stripInlineMarkdown-D_eHogvh.js.map → stripInlineMarkdown-C5DNxxwf.js.map} +1 -1
- package/dist/{syncFilterUtils-Dpp7gt05.js → syncFilterUtils-BEKek64h.js} +497 -458
- package/dist/syncFilterUtils-BEKek64h.js.map +1 -0
- package/dist/syncFilterUtils.css +96 -59
- package/dist/{useDrilldown-bIRsbg1m.js → useDrilldown-KZ9rRsXQ.js} +2 -2
- package/dist/{useDrilldown-bIRsbg1m.js.map → useDrilldown-KZ9rRsXQ.js.map} +1 -1
- package/dist/{Combobox-BXQFOwX4.js → useInfiniteCombobox-CknXmqlQ.js} +188 -13
- package/dist/useInfiniteCombobox-CknXmqlQ.js.map +1 -0
- package/dist/{useMenuInteraction-C4RU5Fdq.js → useMenuInteraction-CpAOHSJu.js} +118 -5
- package/dist/useMenuInteraction-CpAOHSJu.js.map +1 -0
- package/dist/useMenuInteraction.css +28 -0
- package/dist/{useToggleSelection-DBqr4HwT.js → useToggleSelection-B-Z80gy2.js} +53 -4
- package/dist/useToggleSelection-B-Z80gy2.js.map +1 -0
- package/package.json +1 -1
- package/dist/Checkbox.module-DVbXNsaN.js +0 -28
- package/dist/Checkbox.module-DVbXNsaN.js.map +0 -1
- package/dist/Combobox-BXQFOwX4.js.map +0 -1
- package/dist/DateFieldRange-CO2C776E.js.map +0 -1
- package/dist/FilterBar-GjMlLOME.js +0 -1442
- package/dist/FilterBar-GjMlLOME.js.map +0 -1
- package/dist/ListView.module-CKUQP3kf.js.map +0 -1
- package/dist/MultiSelectFieldSync-BxyQiVPQ.js.map +0 -1
- package/dist/MultiSelectMenuSync-BJfvZGf3.js.map +0 -1
- package/dist/SelectFieldSync-z8b41JZz.js.map +0 -1
- package/dist/SelectMenuSync-Cf1Zradm.js.map +0 -1
- package/dist/SelectTriggerBase-4o1cqEbR.js.map +0 -1
- package/dist/SelectTriggerBase.module-BgZSNZfE.js +0 -37
- package/dist/SelectTriggerBase.module-BgZSNZfE.js.map +0 -1
- package/dist/TextField.module-DkZwywjf.js +0 -23
- package/dist/TextField.module-DkZwywjf.js.map +0 -1
- package/dist/ToolbarButtonToggle-xvMWRxzC.js.map +0 -1
- package/dist/src/beta/components/FilterBar/FilterButton.d.ts +0 -30
- package/dist/src/beta/components/FilterBar/FilterSelect.d.ts +0 -29
- package/dist/syncFilterUtils-Dpp7gt05.js.map +0 -1
- package/dist/useInfiniteCombobox-WcRgC9p6.js +0 -179
- package/dist/useInfiniteCombobox-WcRgC9p6.js.map +0 -1
- package/dist/useMenuInteraction-C4RU5Fdq.js.map +0 -1
- package/dist/useToggleSelection-DBqr4HwT.js.map +0 -1
- /package/dist/{Combobox.css → useInfiniteCombobox.css} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-state-Bx3aYS1r.js","sources":["../src/beta/components/FilterBar/FilterItemWrapper.tsx","../src/beta/components/FilterBar/FilterTriggerButton.tsx","../src/beta/components/FilterBar/internal/adapters/asyncMultiSelect.tsx","../src/beta/components/FilterBar/internal/adapters/asyncSelect.tsx","../src/beta/components/FilterBar/FilterToggleButton.tsx","../src/beta/components/FilterBar/internal/adapters/boolean.tsx","../src/beta/components/FilterBar/internal/FilterGroupContext.tsx","../src/beta/components/FilterBar/internal/utils/value-compare.ts","../src/beta/components/FilterBar/FilterPopoverButton.tsx","../src/beta/components/FilterBar/internal/adapters/custom.tsx","../src/beta/components/FilterBar/FilterDateSingle.tsx","../src/beta/components/FilterBar/internal/adapters/date.tsx","../src/beta/components/FilterBar/FilterDateRange.tsx","../src/beta/components/FilterBar/internal/utils/dateListLibraryOptions.ts","../src/beta/components/FilterBar/FilterDateList.tsx","../src/beta/components/FilterBar/internal/adapters/dateList.tsx","../src/beta/components/FilterBar/internal/adapters/dateRange.tsx","../src/beta/components/FilterBar/internal/adapters/multiSelect.tsx","../src/beta/components/FilterBar/FilterNumericRange.tsx","../src/beta/components/FilterBar/internal/adapters/numericRange.tsx","../src/beta/components/FilterBar/internal/adapters/singleSelect.tsx","../src/beta/components/FilterBar/internal/adapters/index.ts","../src/beta/components/FilterBar/internal/utils/filter-state.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport {\n ToolbarItemWrapper,\n ToolbarItemWrapperProps,\n} from \"../Toolbar/internal/ToolbarItemWrapper\";\nimport { ToolbarButtonProps } from \"../Toolbar/ToolbarButton\";\n\n/**\n * Props for the FilterItemWrapper component\n */\ntype FilterItemWrapperProps = {\n /** The content to render inside the wrapper */\n children: React.ReactNode;\n};\n\n/**\n * FilterItemWrapper wraps a filter control in ToolbarItemWrapper so it\n * registers with the surrounding toolbar context for keyboard navigation.\n *\n * Features:\n * - Registers the control with the surrounding toolbar context\n */\nexport const FilterItemWrapper = ({ children }: FilterItemWrapperProps) => {\n const props: ToolbarItemWrapperProps = useMemo(\n () => ({\n item: {\n itemType: \"button\",\n itemProps: {\n children: null,\n \"aria-hidden\": true,\n } as ToolbarButtonProps,\n },\n children,\n }),\n [children],\n );\n\n return <ToolbarItemWrapper {...props} />;\n};\n","import { forwardRef, ReactNode } from \"react\";\nimport ArrowDropDown from \"@servicetitan/hammer-icon/mdi/round/keyboard_arrow_down.svg\";\nimport Event from \"@servicetitan/hammer-icon/mdi/round/event.svg\";\nimport cx from \"classnames\";\nimport { Button, ButtonProps } from \"../../../components/Button\";\nimport { useToolbarSize } from \"../Toolbar/internal/ToolbarContext\";\n\nimport styles from \"./FilterBar.module.scss\";\n\n/**\n * Props that drive the visual identity of a filter's bar trigger — shared by\n * any popover/menu primitive that wants the standard filter-trigger styling.\n *\n * All other Button props (ref, onClick, onKeyDown, aria-*, data-state, …) are\n * accepted via spread, which lets this component slot underneath any menu\n * primitive's trigger render-prop (`SelectMenu`, `MultiSelectMenu`,\n * `FilterDateSingle` / `FilterDateRange`'s popover shell) or, for `custom`,\n * `FilterPopoverButton`'s `Popover.Button`.\n */\nexport type FilterTriggerButtonProps = Omit<\n ButtonProps,\n \"children\" | \"icon\"\n> & {\n /** Filter id — emitted as `data-id` for test selectors and analytics. */\n filterId: string;\n /** Label content rendered inside the button. */\n label: ReactNode;\n /** Whether the filter has a committed selection (drives the selected-state class). */\n isSelected: boolean;\n /**\n * Trigger icon.\n * - `calendar` → leading Event icon (used by date-shaped filters)\n * - `dropdown` → trailing chevron (default)\n * @default \"dropdown\"\n */\n icon?: \"calendar\" | \"dropdown\";\n};\n\n/**\n * FilterTriggerButton is the styled trigger primitive used by every popover-\n * or menu-based filter type. It owns the visual identity (ghost appearance,\n * toolbar-sized, selected-state, dropdown/calendar icon, data-id) and nothing\n * else — open state and popover wiring belong to whatever component composes\n * it (a menu's trigger render-prop, the date popover shells, or\n * `FilterPopoverButton` for `custom`).\n */\nexport const FilterTriggerButton = forwardRef<\n HTMLButtonElement,\n FilterTriggerButtonProps\n>(function FilterTriggerButton(\n { filterId, label, isSelected, icon = \"dropdown\", className, ...rest },\n ref,\n) {\n const toolbarSize = useToolbarSize();\n\n const iconOptions =\n icon === \"calendar\" ? { before: Event } : { after: ArrowDropDown };\n\n const buttonClass = cx(\n styles[\"filter-button-trigger\"],\n {\n [styles[\"filter-button-trigger--selected\"]]: isSelected,\n },\n className,\n );\n\n return (\n <Button\n ref={ref}\n appearance=\"ghost\"\n size={toolbarSize}\n icon={iconOptions}\n data-id={filterId}\n data-anv=\"toolbar-button\"\n className={buttonClass}\n {...rest}\n >\n {label}\n </Button>\n );\n});\n","import Chip from \"../../../../../components/Chip\";\nimport { FilterItemWrapper } from \"../../FilterItemWrapper\";\nimport { FilterTriggerButton } from \"../../FilterTriggerButton\";\nimport { MultiSelectField } from \"../../../MultiSelectField\";\nimport {\n MultiSelectMenu,\n MultiSelectMenuOption,\n MultiSelectMenuProps,\n} from \"../../../MultiSelectMenu\";\nimport { AsyncMultiSelectFilter } from \"../types\";\nimport { FilterTypeAdapter } from \"./types\";\n\ntype Value = MultiSelectMenuOption[];\n\nconst isSelected = (filter: AsyncMultiSelectFilter) =>\n !!filter.selectedOptions && filter.selectedOptions.length > 0;\n\nconst formatLabel = (filter: AsyncMultiSelectFilter) => {\n const count = filter.selectedOptions?.length ?? 0;\n if (count === 0) return filter.label;\n const countLabel = count.toString();\n return (\n <>\n {filter.label}\n <Chip\n label={countLabel}\n color=\"#0265DC\"\n size=\"small\"\n aria-label={`${countLabel} selected items`}\n />\n </>\n );\n};\n\n/**\n * Strip the filter-runtime fields so the rest can be spread directly into\n * MultiSelectMenu / MultiSelectField. Both accept the same `BulkActionConfig`\n * for `selectAll` / `selectFiltered`, so no further narrowing is needed.\n * The cast widens the variant-specific shape back to the full\n * MultiSelectMenuProps union — the spread site then re-narrows via the\n * explicit `id`/`label`/etc. props we add.\n */\nconst passThroughMenuProps = (\n filter: AsyncMultiSelectFilter,\n): MultiSelectMenuProps => {\n const {\n id: _id,\n label: _label,\n type: _type,\n selectedOptions: _selectedOptions,\n drawerOnly: _drawerOnly,\n ...rest\n } = filter;\n return rest as unknown as MultiSelectMenuProps;\n};\n\nexport const asyncMultiSelectAdapter: FilterTypeAdapter<\n AsyncMultiSelectFilter,\n Value\n> = {\n getValue: (filter) => filter.selectedOptions ?? [],\n setValue: (filter, value) => ({ ...filter, selectedOptions: value }),\n reset: (filter) => ({ ...filter, selectedOptions: [] }),\n isActive: isSelected,\n preserveState: (newFilter, existingFilter) => ({\n ...newFilter,\n selectedOptions: existingFilter.selectedOptions,\n }),\n // No items array to rebind against — the selectedOptions are canonical.\n cloneWithItemRefs: (filter) => ({ ...filter }),\n\n renderBarControl: ({ filter, updateFilter, controlledFiltering }) => (\n <FilterItemWrapper key={filter.id}>\n <MultiSelectMenu\n {...passThroughMenuProps(filter)}\n id={filter.id}\n label={filter.label}\n value={filter.selectedOptions ?? []}\n onSelectedOptionsChange={(options) =>\n updateFilter(filter.id, options, true)\n }\n confirmation={controlledFiltering}\n clear={{\n onClick: () => updateFilter(filter.id, [], true),\n }}\n trigger={(triggerProps) => (\n <FilterTriggerButton\n {...triggerProps}\n filterId={filter.id}\n label={formatLabel(filter)}\n isSelected={isSelected(filter)}\n />\n )}\n />\n </FilterItemWrapper>\n ),\n\n renderDrawer: ({ originalFilter, draftFilter, onDraftChange }) => (\n <MultiSelectField\n {...passThroughMenuProps(originalFilter)}\n key={draftFilter.id}\n label={originalFilter.label}\n value={draftFilter.selectedOptions ?? []}\n onSelectedOptionsChange={(options) =>\n onDraftChange(draftFilter.id, options)\n }\n />\n ),\n\n formatLabel,\n isSelected,\n};\n","import { FilterItemWrapper } from \"../../FilterItemWrapper\";\nimport { FilterTriggerButton } from \"../../FilterTriggerButton\";\nimport { SelectField } from \"../../../SelectField\";\nimport {\n SelectMenu,\n SelectMenuOption,\n SelectMenuProps,\n} from \"../../../SelectMenu\";\nimport { AsyncSelectFilter } from \"../types\";\nimport { FilterTypeAdapter } from \"./types\";\n\ntype Value = SelectMenuOption | undefined;\n\nconst formatLabel = (filter: AsyncSelectFilter) => {\n if (filter.selectedOption) {\n return `${filter.label}: ${filter.selectedOption.label}`;\n }\n return filter.label;\n};\n\nconst isSelected = (filter: AsyncSelectFilter) =>\n filter.selectedOption !== undefined;\n\n/**\n * Strip the filter-runtime fields so the rest can be spread directly into\n * SelectMenu / SelectField. The cast widens the variant-specific shape (e.g.\n * the `lazy: \"page\"` arm) back to the full SelectMenuProps union — the spread\n * site then re-narrows via the explicit `id`/`label`/etc. props we add.\n */\nconst passThroughMenuProps = (filter: AsyncSelectFilter): SelectMenuProps => {\n const {\n id: _id,\n label: _label,\n type: _type,\n selectedOption: _selectedOption,\n drawerOnly: _drawerOnly,\n ...rest\n } = filter;\n return rest as unknown as SelectMenuProps;\n};\n\nexport const asyncSelectAdapter: FilterTypeAdapter<AsyncSelectFilter, Value> = {\n getValue: (filter) => filter.selectedOption,\n setValue: (filter, value) => ({ ...filter, selectedOption: value }),\n reset: (filter) => ({ ...filter, selectedOption: undefined }),\n isActive: isSelected,\n preserveState: (newFilter, existingFilter) => ({\n ...newFilter,\n selectedOption: existingFilter.selectedOption,\n }),\n // No items array to rebind against — the selectedOption is canonical.\n cloneWithItemRefs: (filter) => ({ ...filter }),\n\n renderBarControl: ({ filter, updateFilter }) => (\n <FilterItemWrapper key={filter.id}>\n <SelectMenu\n {...passThroughMenuProps(filter)}\n id={filter.id}\n label={filter.label}\n value={filter.selectedOption ?? null}\n onSelectedOptionChange={(option) =>\n updateFilter(filter.id, option ?? undefined, true)\n }\n clear={{\n onClick: () => updateFilter(filter.id, undefined, true),\n }}\n trigger={(triggerProps) => (\n <FilterTriggerButton\n {...triggerProps}\n filterId={filter.id}\n label={formatLabel(filter)}\n isSelected={isSelected(filter)}\n />\n )}\n />\n </FilterItemWrapper>\n ),\n\n renderDrawer: ({ originalFilter, draftFilter, onDraftChange }) => (\n <SelectField\n {...passThroughMenuProps(originalFilter)}\n key={draftFilter.id}\n label={originalFilter.label}\n value={draftFilter.selectedOption ?? null}\n onSelectedOptionChange={(option) =>\n onDraftChange(draftFilter.id, option ?? undefined)\n }\n />\n ),\n\n formatLabel,\n isSelected,\n};\n","import {\n ToolbarButtonToggle,\n ToolbarButtonToggleProps,\n} from \"../Toolbar/ToolbarButtonToggle\";\nimport { FilterItemWrapper } from \"./FilterItemWrapper\";\n\nimport styles from \"./FilterBar.module.scss\";\n\n/**\n * Props for the FilterToggleButton component\n *\n * @extends Omit<ToolbarButtonToggleProps, \"checked\">\n */\nexport type FilterToggleButtonProps = Omit<\n ToolbarButtonToggleProps,\n \"checked\"\n> & {\n /** Unique identifier for the filter */\n id: string;\n /** Whether the toggle is checked */\n checked: boolean;\n /** The content to display inside the toggle button */\n children: React.ReactNode;\n};\n\n/**\n * FilterToggleButton wraps ToolbarButtonToggle in a FilterItemWrapper for\n * consistent rendering with other filter types.\n * Built into FilterGroup for boolean filter rendering.\n *\n * Features:\n * - Renders a toggle button for boolean filters\n * - Supports accessibility and keyboard navigation\n */\nexport const FilterToggleButton = ({\n id,\n checked,\n children,\n ...props\n}: FilterToggleButtonProps) => {\n return (\n <FilterItemWrapper>\n <ToolbarButtonToggle\n id={id}\n checked={checked}\n isFilter\n {...props}\n className={styles[\"filter-button-trigger\"]}\n data-anv=\"toolbar-boolean-filter\"\n >\n {children}\n </ToolbarButtonToggle>\n </FilterItemWrapper>\n );\n};\n","import { Checkbox } from \"../../../../../components/Checkbox\";\nimport { FilterToggleButton } from \"../../FilterToggleButton\";\nimport { BooleanFilter } from \"../types\";\nimport { FilterTypeAdapter } from \"./types\";\n\nexport const booleanAdapter: FilterTypeAdapter<BooleanFilter, boolean> = {\n getValue: (filter) => filter.checked,\n setValue: (filter, value) => ({ ...filter, checked: value }),\n reset: (filter) => ({ ...filter, checked: false }),\n isActive: (filter) => filter.checked,\n preserveState: (newFilter, existingFilter) => ({\n ...newFilter,\n checked: existingFilter.checked,\n }),\n cloneWithItemRefs: (filter) => ({ ...filter }),\n\n renderBarControl: ({ filter, updateFilter }) => (\n <FilterToggleButton\n key={filter.id}\n id={filter.id}\n checked={filter.checked}\n onClick={() => updateFilter(filter.id, !filter.checked, true)}\n >\n {filter.label}\n </FilterToggleButton>\n ),\n renderDrawer: ({ draftFilter, onDraftChange }) => (\n <Checkbox\n key={draftFilter.id}\n label={draftFilter.label}\n checked={draftFilter.checked}\n onChange={(e) =>\n onDraftChange(draftFilter.id, e?.target.checked ?? false)\n }\n />\n ),\n formatLabel: (filter) => filter.label,\n isSelected: (filter) => filter.checked,\n};\n","import { createContext, RefObject } from \"react\";\nimport { FilterBarProps } from \"../FilterBar\";\nimport { Filter, FilterValue } from \"./types\";\n\n/**\n * Context for sharing filter state and operations between FilterBar and its children\n *\n * @extends FilterBarProps\n */\ntype FilterGroupContextProps = FilterBarProps & {\n /** Reference to the filter group DOM element\n * @default { current: null }\n */\n filterGroupRef: RefObject<HTMLDivElement>;\n /** Current filters array\n * @default []\n */\n filters: Filter[];\n /** Function to update a single filter and submit if needed\n * @default () => {}\n */\n updateFilter: (filterId: string, value: FilterValue, submit: boolean) => void;\n /** Filters configured as drawer-only — never rendered inline in the toolbar\n * @default []\n */\n drawerOnlyFilters: Filter[];\n /** Whether the container is wide enough to render filters inline in the toolbar\n * @default false\n */\n showInlineFilters: boolean;\n};\n\n/**\n * Context provider for filter-related operations\n * Used to share filter state between FilterBar and FilterDrawer\n */\nexport const FilterGroupContext = createContext<FilterGroupContextProps>({\n filterGroupRef: { current: null },\n filters: [],\n updateFilter: () => {},\n onFilterChange: () => {},\n controlledFiltering: false,\n associatedContent: \"\",\n showInlineFilters: false,\n drawerOnlyFilters: [],\n});\n","/**\n * Determines if two filter values are different.\n * For arrays (multiSelect), compares by id set (order-insensitive, avoids JSON serialization).\n * For singleSelect, compares by id if both are objects with id.\n * For dateList selections (objects with both id and value), compares id AND value\n * so re-picking the same library option with a different date still counts as a change.\n *\n * Intentionally adapter-free — kept here (rather than in filter-state.ts) so that\n * FilterPopoverButton can import it without pulling the adapter registry into\n * the import graph. filter-state.ts depends on the adapter registry; the registry\n * depends on FilterPopoverButton; FilterPopoverButton would otherwise depend on\n * filter-state — closing a runtime-evaluated cycle.\n */\nexport const hasChangedFilter = <T>(a: T, b: T): boolean => {\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return true;\n if (a.length === 0) return false;\n const aItems = a as Array<{ id?: unknown }>;\n const bItems = b as Array<{ id?: unknown }>;\n if (aItems[0] && \"id\" in aItems[0]) {\n const aIds = new Set(aItems.map((item) => item.id));\n return (bItems as Array<{ id: unknown }>).some(\n (item) => !aIds.has(item.id),\n );\n }\n return JSON.stringify(a) !== JSON.stringify(b);\n }\n if (\n a &&\n b &&\n typeof a === \"object\" &&\n typeof b === \"object\" &&\n \"id\" in a &&\n \"id\" in b\n ) {\n if (a.id !== b.id) return true;\n if (\"value\" in a && \"value\" in b) {\n return JSON.stringify(a.value) !== JSON.stringify(b.value);\n }\n return false;\n }\n return a !== b;\n};\n","import {\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useId,\n useRef,\n useState,\n} from \"react\";\nimport { Filter } from \"./internal/types\";\nimport { FilterGroupContext } from \"./internal/FilterGroupContext\";\nimport { hasChangedFilter } from \"./internal/utils/value-compare\";\nimport { FilterItemWrapper } from \"./FilterItemWrapper\";\nimport { FilterTriggerButton } from \"./FilterTriggerButton\";\nimport { OptionsPopover } from \"../../../internal/components/OptionsPopover/OptionsPopover\";\nimport { MenuFooter } from \"../../../internal/components/MenuFooter/MenuFooter\";\n\n/**\n * Render-prop ctx passed to FilterPopoverButton's children. The `custom`\n * adapter (and any consumer using a `custom` filter) uses this to receive the\n * draft (or committed) value and an `onChange` for its rendered body.\n *\n * When commitOnSelect is false (the default), `value` is the in-progress draft\n * and `onChange` updates it; the user must click Apply for it to commit.\n *\n * When commitOnSelect is true, `value` is the filter's currently-committed\n * value and `onChange` commits immediately (and closes the popover).\n */\nexport type FilterPopoverButtonRenderCtx<V = unknown> = {\n value: V;\n onChange: (value: V) => void;\n};\n\n/**\n * Base props shared by both commit modes. `commitOnSelect` is left out so each\n * variant can refine it as a literal; that's what lets `initialValue` be required\n * for the draft branch and absent for the commit-on-select branch.\n */\ntype FilterPopoverButtonBaseProps<V> = {\n /** The filter being edited. Used for id and dispatching commits. */\n filter: Filter;\n /** Trigger button label. Adapters typically pass adapter.formatLabel(filter). */\n label: ReactNode;\n /** Whether the filter currently has a non-default value (drives selected styling). */\n isSelected: boolean;\n /**\n * The filter's currently-committed value. Used to seed the draft on open and\n * to detect parent-provided changes mid-open. Adapters typically pass\n * adapter.getValue(filter).\n */\n committedValue: V;\n /** Body content as a render-prop. Receives draft (or live) value + onChange. */\n children: (ctx: FilterPopoverButtonRenderCtx<V>) => ReactNode;\n};\n\n/**\n * Draft-mode props: requires `initialValue` so each consumer declares what\n * \"empty draft\" means for its V (e.g. an array-shaped custom filter passes\n * `[]`, a nullable scalar passes `null`). Eliminates the `[] as unknown as V`\n * cast and forces non-nullable V consumers to opt in explicitly.\n */\ntype DraftModeProps<V> = FilterPopoverButtonBaseProps<V> & {\n commitOnSelect?: false;\n /**\n * Initial draft value used until the popover opens and the draft is seeded\n * from `committedValue`. Each adapter owns the empty-state for its V.\n */\n initialValue: V;\n /**\n * If true, in uncontrolled mode the popover stays open after a body change\n * instead of closing — for multi-selection workflows.\n * @default false\n */\n keepOpenOnUncontrolledChange?: boolean;\n};\n\n/**\n * Commit-on-select props: no draft state exists, so `initialValue` and\n * `keepOpenOnUncontrolledChange` don't apply.\n */\ntype CommitOnSelectProps<V> = FilterPopoverButtonBaseProps<V> & {\n commitOnSelect: true;\n};\n\ntype FilterPopoverButtonProps<V> = DraftModeProps<V> | CommitOnSelectProps<V>;\n\n/**\n * FilterPopoverButton is the popover-based trigger primitive used by the\n * `custom` filter adapter (and anything else that needs to render an\n * adapter-agnostic popover body with draft / Apply-Cancel semantics).\n *\n * Other filter types (`singleSelect`, `multiSelect`, `asyncSelect`,\n * `asyncMultiSelect`, `date`, `dateRange`, `dateList`) compose menu primitives\n * (`SelectMenu`, `MultiSelectMenu`) or their own popover shells directly and\n * do not go through this component.\n *\n * It owns:\n * - The trigger button (label + icon + selected state)\n * - The OptionsPopover wrapper (open state, outside-press handling)\n * - When commitOnSelect is false: draft state + MenuFooter Apply/Cancel chrome\n *\n * The body is supplied via render-prop children, which receive the\n * appropriate value + onChange for the current commit mode.\n */\nexport const FilterPopoverButton = <V,>(props: FilterPopoverButtonProps<V>) => {\n const { filter, label, isSelected, committedValue, children } = props;\n const commitOnSelect = props.commitOnSelect === true;\n const initialValue = commitOnSelect ? undefined : props.initialValue;\n const keepOpenOnUncontrolledChange =\n !commitOnSelect && (props.keepOpenOnUncontrolledChange ?? false);\n\n const triggerRef = useRef<HTMLButtonElement>(null);\n const popoverId = useId();\n const [isOpen, setIsOpen] = useState(false);\n const { updateFilter, controlledFiltering } = useContext(FilterGroupContext);\n\n // --- Draft branch (commitOnSelect === false) -----------------------------\n // Local draft + Apply/Cancel. Draft is seeded with `initialValue` (the\n // adapter's notion of \"empty\" for V), then re-seeded from `committedValue`\n // each time the popover opens.\n const [draftValue, setDraftValue] = useState<V | undefined>(initialValue);\n\n // Ref to track draftValue without causing handleDraftChange to recreate.\n const draftValueRef = useRef<V | undefined>(draftValue);\n\n useEffect(() => {\n draftValueRef.current = draftValue;\n }, [draftValue]);\n\n const prevIsOpenRef = useRef(isOpen);\n const prevCommittedValueRef = useRef<V>(committedValue);\n\n // Seed/re-sync draft when the popover opens or committedValue changes\n // mid-open. Skipped entirely in commit-on-select mode.\n useEffect(() => {\n if (commitOnSelect) return;\n\n const justOpened = isOpen && !prevIsOpenRef.current;\n prevIsOpenRef.current = isOpen;\n\n if (isOpen) {\n const shouldSync =\n justOpened || prevCommittedValueRef.current !== committedValue;\n\n if (shouldSync) {\n setDraftValue(committedValue);\n }\n\n prevCommittedValueRef.current = committedValue;\n }\n }, [isOpen, committedValue, commitOnSelect]);\n\n const closeAndRestoreFocus = useCallback(() => {\n setIsOpen(false);\n triggerRef.current?.focus();\n }, []);\n\n const handleDraftChange = useCallback(\n (value: V) => {\n if (commitOnSelect) {\n // Commit directly. No draft state to track.\n if (hasChangedFilter(value, committedValue)) {\n updateFilter(filter.id, value, true);\n }\n closeAndRestoreFocus();\n return;\n }\n\n if (!hasChangedFilter(value, draftValueRef.current)) return;\n\n // Sync ref immediately to guard against duplicate calls (e.g. from\n // ListView re-renders).\n draftValueRef.current = value;\n setDraftValue(value);\n\n // In uncontrolled mode, commit immediately. Optionally keep the popover\n // open (multi-select-style workflows).\n if (!controlledFiltering) {\n updateFilter(filter.id, value, true);\n if (!keepOpenOnUncontrolledChange) {\n closeAndRestoreFocus();\n }\n }\n },\n [\n commitOnSelect,\n committedValue,\n controlledFiltering,\n filter.id,\n keepOpenOnUncontrolledChange,\n updateFilter,\n closeAndRestoreFocus,\n ],\n );\n\n const handleApply = useCallback(() => {\n if (hasChangedFilter(draftValue, committedValue)) {\n updateFilter(filter.id, draftValue, true);\n }\n closeAndRestoreFocus();\n }, [\n draftValue,\n committedValue,\n filter.id,\n updateFilter,\n closeAndRestoreFocus,\n ]);\n\n const handleCancel = useCallback(() => {\n // Uncontrolled: clicking outside finalizes changes, doesn't cancel.\n if (!controlledFiltering) {\n closeAndRestoreFocus();\n return;\n }\n setDraftValue(committedValue);\n closeAndRestoreFocus();\n }, [controlledFiltering, committedValue, closeAndRestoreFocus]);\n\n // OptionsPopover invokes this on outside-press, focus-out, and Escape.\n const handlePopoverClose = useCallback(() => {\n if (commitOnSelect) {\n setIsOpen(false);\n return;\n }\n if (controlledFiltering) {\n // Discard the draft and close.\n setDraftValue(committedValue);\n setIsOpen(false);\n } else if (keepOpenOnUncontrolledChange) {\n // Uncontrolled + already-committed-on-change; just close.\n setIsOpen(false);\n } else {\n // Uncontrolled finalize-on-close: commit pending draft (if any) and close.\n if (hasChangedFilter(draftValueRef.current, committedValue)) {\n updateFilter(filter.id, draftValueRef.current as V, true);\n }\n setIsOpen(false);\n }\n }, [\n commitOnSelect,\n controlledFiltering,\n keepOpenOnUncontrolledChange,\n committedValue,\n filter.id,\n updateFilter,\n ]);\n\n // In draft mode `draftValue` is always defined (seeded from `initialValue`,\n // then `committedValue` on open). The `as V` is only to widen the\n // `V | undefined` state type used by the commit-on-select branch.\n const bodyValue: V = commitOnSelect ? committedValue : (draftValue as V);\n\n const showConfirmationFooter = controlledFiltering && !commitOnSelect;\n\n // Enter submits in controlled mode (form-style apply). In uncontrolled mode\n // the body change already commits immediately, so Enter is a no-op there.\n // Bind the listener to the popover element instead of a wrapper div so we\n // don't introduce a non-interactive element with key handlers.\n useEffect(() => {\n if (!isOpen || !showConfirmationFooter) return;\n const popoverEl = document.getElementById(popoverId);\n if (!popoverEl) return;\n const handler = (e: KeyboardEvent) => {\n if (e.key !== \"Enter\" || e.defaultPrevented) return;\n handleApply();\n };\n popoverEl.addEventListener(\"keydown\", handler);\n return () => popoverEl.removeEventListener(\"keydown\", handler);\n }, [isOpen, showConfirmationFooter, popoverId, handleApply]);\n\n return (\n <FilterItemWrapper>\n <FilterTriggerButton\n ref={triggerRef}\n filterId={filter.id}\n label={label}\n isSelected={isSelected}\n aria-haspopup=\"dialog\"\n aria-expanded={isOpen}\n aria-controls={popoverId}\n onClick={() => setIsOpen((prev) => !prev)}\n onKeyDown={(e) => {\n // When focus is still on the trigger after opening the popover (no\n // body element auto-focuses), Escape needs to close from here —\n // OptionsPopover only listens on its own subtree.\n if (e.key === \"Escape\" && isOpen) {\n e.preventDefault();\n handlePopoverClose();\n }\n }}\n />\n <OptionsPopover\n id={popoverId}\n referenceElement={triggerRef}\n open={isOpen}\n onClose={handlePopoverClose}\n footer={\n showConfirmationFooter ? (\n <MenuFooter\n confirmation={{\n onApply: handleApply,\n onCancel: handleCancel,\n }}\n />\n ) : undefined\n }\n >\n {children({ value: bodyValue, onChange: handleDraftChange })}\n </OptionsPopover>\n </FilterItemWrapper>\n );\n};\n","import Chip from \"../../../../../components/Chip\";\nimport { FilterPopoverButton } from \"../../FilterPopoverButton\";\nimport { CustomFilter } from \"../types\";\nimport { FilterTypeAdapter } from \"./types\";\n\nconst formatLabel = (filter: CustomFilter<unknown>) => {\n if (filter.labelChipCount) {\n return (\n <>\n {filter.label}\n <Chip\n label={filter.labelChipCount.toString()}\n color=\"#0265DC\"\n size=\"small\"\n aria-label={`${filter.labelChipCount} selected items`}\n />\n </>\n );\n }\n return filter.label;\n};\n\nexport const customAdapter: FilterTypeAdapter<\n CustomFilter<unknown>,\n unknown\n> = {\n getValue: (filter) => filter.value,\n setValue: (filter, value) => ({ ...filter, value }),\n reset: (filter) => ({ ...filter, value: undefined }),\n isActive: (filter) => filter.value !== undefined,\n preserveState: (newFilter, existingFilter) => ({\n ...newFilter,\n value: existingFilter.value,\n }),\n cloneWithItemRefs: (filter) => {\n const { value } = filter;\n if (value === undefined) return { ...filter, value: undefined };\n if (Array.isArray(value)) return { ...filter, value: [...value] };\n if (typeof value === \"object\" && value !== null) {\n return { ...filter, value: { ...value } };\n }\n return { ...filter, value };\n },\n\n renderBarControl: ({ filter }) => (\n <FilterPopoverButton\n key={filter.id}\n filter={filter}\n label={formatLabel(filter)}\n isSelected={filter.value !== undefined}\n committedValue={filter.value}\n initialValue={undefined}\n >\n {({ value, onChange }) =>\n // drawer-only customs are filtered out before reaching\n // renderBarControl, so this guard is purely for TS narrowing across\n // the CustomFilter union (buttonRender is `never` when drawerOnly).\n filter.drawerOnly ? null : filter.buttonRender({ value, onChange })\n }\n </FilterPopoverButton>\n ),\n renderDrawer: ({ originalFilter, draftFilter, onDraftChange }) => (\n <div key={draftFilter.id}>\n {originalFilter.drawerRender?.({\n value: draftFilter.value,\n onChange: (value) => onDraftChange(draftFilter.id, value),\n })}\n </div>\n ),\n formatLabel,\n isSelected: (filter) => filter.value !== undefined,\n};\n","import { useCallback, useId, useRef, useState } from \"react\";\nimport { DateFilter } from \"./internal/types\";\nimport Flex from \"../../../components/Flex\";\nimport {\n MaskedDateInput,\n MaskedDateInputRef,\n} from \"../../../components/DateFieldSingle/internal/MaskedDateInput\";\nimport { DateFieldSingleChange } from \"../../../components/DateFieldSingle\";\nimport { useDateFieldSingleConversion } from \"../../../components/DateFieldSingle/internal/useDateFieldSingleConversion\";\nimport { useDateFieldSingleState } from \"../../../components/DateFieldSingle/internal/useDateFieldSingleState\";\nimport { DateFieldSingleCalendar } from \"../../../components/DateFieldSingle/internal/DateFieldSingleCalendar\";\nimport { OptionsPopover } from \"../../../internal/components/OptionsPopover/OptionsPopover\";\nimport { MenuFooter } from \"../../../internal/components/MenuFooter/MenuFooter\";\nimport { useConfirmationDraft } from \"../../../internal/hooks/useConfirmationDraft\";\nimport { FilterItemWrapper } from \"./FilterItemWrapper\";\nimport { FilterTriggerButton } from \"./FilterTriggerButton\";\nimport { hasChangedFilter } from \"./internal/utils/value-compare\";\n\ntype Value = string | null;\n\ntype InlineProps = {\n variant: \"inline\";\n filter: DateFilter;\n draftValue: Value;\n onDraftChange: (value: Value) => void;\n};\n\ntype PopoverProps = {\n variant?: \"popover\";\n filter: DateFilter;\n committedValue: Value;\n onCommit: (value: Value) => void;\n controlledFiltering: boolean;\n label: React.ReactNode;\n isSelected: boolean;\n /**\n * Configures a \"Clear\" button in the popover footer. Presence enables it.\n * Clear commits immediately regardless of `controlledFiltering`.\n */\n clear?: {\n onClick: () => void;\n label?: string;\n disabled?: boolean;\n };\n};\n\nexport type FilterDateSingleProps = InlineProps | PopoverProps;\n\n/**\n * FilterDateSingle renders a single-date picker for FilterBar.\n *\n * Two variants:\n * - `popover` (default) owns its trigger + OptionsPopover + (when controlled)\n * Apply/Cancel footer, and commits via `onCommit`.\n * - `inline` renders just the masked input + calendar body, with draft state\n * lifted to the parent via `draftValue` / `onDraftChange`. Used when the\n * component is embedded inside another shell (e.g. DateListDialog).\n */\nexport const FilterDateSingle = (props: FilterDateSingleProps) => {\n if (props.variant === \"inline\") {\n return (\n <Body\n filter={props.filter}\n value={props.draftValue}\n onChange={props.onDraftChange}\n />\n );\n }\n return <PopoverShell {...props} />;\n};\n\ntype BodyProps = {\n filter: DateFilter;\n value: Value;\n onChange: (value: Value) => void;\n};\n\nconst Body = ({\n filter,\n value: draftValue,\n onChange: onDraftChange,\n}: BodyProps) => {\n const maskedDateInputRef = useRef<MaskedDateInputRef>(null);\n\n const handleChange = (change: DateFieldSingleChange) => {\n onDraftChange(change.date);\n };\n\n const { value, onChange } = useDateFieldSingleConversion({\n value: draftValue,\n onChange: handleChange,\n });\n\n const { handleInputChange, handleCalendarSelection } =\n useDateFieldSingleState({\n valueProp: value,\n onChange: (change) => onChange({ ...change, isDateValid: true }),\n });\n\n return (\n <Flex gap={4} direction=\"column\">\n <MaskedDateInput\n mode={filter.mode}\n ref={maskedDateInputRef}\n onChange={handleInputChange}\n lastValidDate={value ?? null}\n autoComplete=\"off\"\n />\n\n <DateFieldSingleCalendar\n value={value ?? null}\n onSelection={handleCalendarSelection}\n />\n </Flex>\n );\n};\n\nconst PopoverShell = ({\n filter,\n committedValue,\n onCommit,\n controlledFiltering,\n label,\n isSelected,\n clear,\n}: PopoverProps) => {\n const triggerRef = useRef<HTMLButtonElement>(null);\n const popoverId = useId();\n const [isOpen, setIsOpen] = useState(false);\n\n const isEqual = useCallback(\n (a: Value, b: Value) => !hasChangedFilter(a, b),\n [],\n );\n\n const { displayValue, setDraft, apply, cancel } = useConfirmationDraft<Value>(\n {\n value: committedValue,\n onCommit,\n isOpen,\n enabled: controlledFiltering,\n isEqual,\n },\n );\n\n const handleClose = useCallback(() => {\n if (controlledFiltering) {\n cancel();\n }\n setIsOpen(false);\n }, [controlledFiltering, cancel]);\n\n const handleApply = useCallback(() => {\n apply();\n setIsOpen(false);\n }, [apply]);\n\n return (\n <FilterItemWrapper>\n <FilterTriggerButton\n ref={triggerRef}\n filterId={filter.id}\n label={label}\n isSelected={isSelected}\n icon=\"calendar\"\n aria-haspopup=\"dialog\"\n aria-expanded={isOpen}\n onClick={() => setIsOpen((prev) => !prev)}\n />\n <OptionsPopover\n id={popoverId}\n referenceElement={triggerRef}\n open={isOpen}\n onClose={handleClose}\n footer={\n clear || controlledFiltering ? (\n <MenuFooter\n clear={\n clear\n ? {\n ...clear,\n onClick: () => {\n clear.onClick();\n // Close directly; the commit already happened, so we\n // skip handleClose's cancel-on-controlled path. Restore\n // focus to the trigger, matching Apply / Cancel.\n setIsOpen(false);\n triggerRef.current?.focus();\n },\n }\n : undefined\n }\n confirmation={\n controlledFiltering\n ? {\n onApply: handleApply,\n onCancel: handleClose,\n }\n : undefined\n }\n />\n ) : undefined\n }\n >\n <Body filter={filter} value={displayValue} onChange={setDraft} />\n </OptionsPopover>\n </FilterItemWrapper>\n );\n};\n","import { DateTime } from \"luxon\";\nimport { DateFieldSingle } from \"../../../../../components/DateFieldSingle\";\nimport { FilterDateSingle } from \"../../FilterDateSingle\";\nimport { DateFilter } from \"../types\";\nimport { FilterTypeAdapter } from \"./types\";\n\ntype Value = string | null;\n\nconst formatLabel = (filter: DateFilter) => {\n if (filter.value) {\n const date = DateTime.fromISO(filter.value, { zone: \"local\" });\n return `${filter.label}: ${date.monthShort} ${date.day}, ${date.year}`;\n }\n return filter.label;\n};\n\nexport const dateAdapter: FilterTypeAdapter<DateFilter, Value> = {\n getValue: (filter) => filter.value ?? null,\n setValue: (filter, value) => ({ ...filter, value }),\n reset: (filter) => ({ ...filter, value: null }),\n isActive: (filter) => filter.value !== null && filter.value !== undefined,\n preserveState: (newFilter, existingFilter) => ({\n ...newFilter,\n value: existingFilter.value,\n }),\n cloneWithItemRefs: (filter) => ({ ...filter, value: filter.value ?? null }),\n\n renderBarControl: ({ filter, updateFilter, controlledFiltering }) => (\n <FilterDateSingle\n key={filter.id}\n filter={filter}\n committedValue={filter.value ?? null}\n onCommit={(value) => updateFilter(filter.id, value, true)}\n controlledFiltering={controlledFiltering}\n label={formatLabel(filter)}\n isSelected={!!filter.value}\n clear={{\n onClick: () => updateFilter(filter.id, null, true),\n }}\n />\n ),\n renderDrawer: ({ draftFilter, onDraftChange }) => (\n <DateFieldSingle\n key={draftFilter.id}\n label={draftFilter.label}\n value={(draftFilter.value as string | null) ?? null}\n onChange={(change) => onDraftChange(draftFilter.id, change.date)}\n mode={draftFilter.mode}\n />\n ),\n formatLabel,\n isSelected: (filter) => !!filter.value,\n};\n","import { useCallback, useId, useRef, useState } from \"react\";\nimport { DateRangeFilter } from \"./internal/types\";\nimport {\n MaskedDateRangeInput,\n MaskedDateRangeInputRef,\n} from \"../../../components/DateFieldRange/internal/MaskedDateRangeInput\";\nimport { DateFieldRangeChange } from \"../../../components/DateFieldRange\";\nimport { useDateFieldRangeConversion } from \"../../../components/DateFieldRange/internal/useDateFieldRangeConversion\";\nimport { useDateFieldRangeState } from \"../../../components/DateFieldRange/internal/useDateFieldRangeState\";\nimport Flex from \"../../../components/Flex\";\nimport { DateFieldRangeCalendar } from \"../../../components/DateFieldRange/internal/DateFieldRangeCalendar\";\nimport { OptionsPopover } from \"../../../internal/components/OptionsPopover/OptionsPopover\";\nimport { MenuFooter } from \"../../../internal/components/MenuFooter/MenuFooter\";\nimport { useConfirmationDraft } from \"../../../internal/hooks/useConfirmationDraft\";\nimport { FilterItemWrapper } from \"./FilterItemWrapper\";\nimport { FilterTriggerButton } from \"./FilterTriggerButton\";\nimport { hasChangedFilter } from \"./internal/utils/value-compare\";\n\ntype Value = { startDate: string | null; endDate: string | null } | null;\n\ntype InlineProps = {\n variant: \"inline\";\n filter: DateRangeFilter;\n draftValue: Value;\n onDraftChange: (value: Value) => void;\n};\n\ntype PopoverProps = {\n variant?: \"popover\";\n filter: DateRangeFilter;\n committedValue: Value;\n onCommit: (value: Value) => void;\n controlledFiltering: boolean;\n label: React.ReactNode;\n isSelected: boolean;\n /**\n * Configures a \"Clear\" button in the popover footer. Presence enables it.\n * Clear commits immediately regardless of `controlledFiltering`.\n */\n clear?: {\n onClick: () => void;\n label?: string;\n disabled?: boolean;\n };\n};\n\nexport type FilterDateRangeProps = InlineProps | PopoverProps;\n\n/**\n * FilterDateRange renders a date-range picker for FilterBar.\n *\n * Two variants:\n * - `popover` (default) owns its trigger + OptionsPopover + (when controlled)\n * Apply/Cancel footer, and commits via `onCommit`.\n * - `inline` renders just the masked input + calendar body, with draft state\n * lifted to the parent via `draftValue` / `onDraftChange`. Used when the\n * component is embedded inside another shell (e.g. DateListDialog).\n */\nexport const FilterDateRange = (props: FilterDateRangeProps) => {\n if (props.variant === \"inline\") {\n return (\n <Body\n filter={props.filter}\n value={props.draftValue}\n onChange={props.onDraftChange}\n />\n );\n }\n return <PopoverShell {...props} />;\n};\n\ntype BodyProps = {\n filter: DateRangeFilter;\n value: Value;\n onChange: (value: Value) => void;\n};\n\nconst Body = ({\n filter,\n value: draftValue,\n onChange: onDraftChange,\n}: BodyProps) => {\n const maskedDateRangeInputRef = useRef<MaskedDateRangeInputRef>(null);\n\n const handleChange = (change: DateFieldRangeChange) => {\n const hasCompleteRange = change.startDate && change.endDate;\n const isClearingRange = !change.startDate && !change.endDate;\n\n if (hasCompleteRange || isClearingRange) {\n onDraftChange({\n startDate: change.startDate,\n endDate: change.endDate,\n });\n }\n };\n\n const { value, onChange } = useDateFieldRangeConversion({\n value: draftValue,\n onChange: handleChange,\n });\n\n const { handleInputChange, handleCalendarSelection } = useDateFieldRangeState(\n {\n valueProp: value,\n onChange: (change) => {\n const hasCompleteRange = change.startDate && change.endDate;\n const isClearingRange = change.isInputEmpty;\n\n if ((change.isInputValid && hasCompleteRange) || isClearingRange) {\n onChange({ ...change, isDateRangeValid: true });\n }\n },\n },\n );\n\n return (\n <Flex gap={4} direction=\"column\">\n <MaskedDateRangeInput\n mode={filter.mode}\n ref={maskedDateRangeInputRef}\n onChange={handleInputChange}\n startDate={value?.startDate ?? null}\n endDate={value?.endDate ?? null}\n autoComplete=\"off\"\n />\n\n <DateFieldRangeCalendar\n startDate={value?.startDate ?? null}\n endDate={value?.endDate ?? null}\n onSelection={handleCalendarSelection}\n />\n </Flex>\n );\n};\n\nconst PopoverShell = ({\n filter,\n committedValue,\n onCommit,\n controlledFiltering,\n label,\n isSelected,\n clear,\n}: PopoverProps) => {\n const triggerRef = useRef<HTMLButtonElement>(null);\n const popoverId = useId();\n const [isOpen, setIsOpen] = useState(false);\n\n const isEqual = useCallback(\n (a: Value, b: Value) => !hasChangedFilter(a, b),\n [],\n );\n\n const { displayValue, setDraft, apply, cancel } = useConfirmationDraft<Value>(\n {\n value: committedValue,\n onCommit,\n isOpen,\n enabled: controlledFiltering,\n isEqual,\n },\n );\n\n const handleClose = useCallback(() => {\n if (controlledFiltering) {\n cancel();\n }\n setIsOpen(false);\n }, [controlledFiltering, cancel]);\n\n const handleApply = useCallback(() => {\n apply();\n setIsOpen(false);\n }, [apply]);\n\n return (\n <FilterItemWrapper>\n <FilterTriggerButton\n ref={triggerRef}\n filterId={filter.id}\n label={label}\n isSelected={isSelected}\n icon=\"calendar\"\n aria-haspopup=\"dialog\"\n aria-expanded={isOpen}\n onClick={() => setIsOpen((prev) => !prev)}\n />\n <OptionsPopover\n id={popoverId}\n referenceElement={triggerRef}\n open={isOpen}\n onClose={handleClose}\n footer={\n clear || controlledFiltering ? (\n <MenuFooter\n clear={\n clear\n ? {\n ...clear,\n onClick: () => {\n clear.onClick();\n // Close directly; the commit already happened, so we\n // skip handleClose's cancel-on-controlled path. Restore\n // focus to the trigger, matching Apply / Cancel.\n setIsOpen(false);\n triggerRef.current?.focus();\n },\n }\n : undefined\n }\n confirmation={\n controlledFiltering\n ? {\n onApply: handleApply,\n onCancel: handleClose,\n }\n : undefined\n }\n />\n ) : undefined\n }\n >\n <Body filter={filter} value={displayValue} onChange={setDraft} />\n </OptionsPopover>\n </FilterItemWrapper>\n );\n};\n","import { DateTime } from \"luxon\";\nimport { DateListLibraryOptionId, DateListOption } from \"../types\";\n\nconst LIBRARY_OPTION_LABELS = {\n on: \"On\",\n before: \"Before\",\n after: \"After\",\n customRange: \"Custom Range\",\n} as const satisfies Record<DateListLibraryOptionId, string>;\n\nconst LIBRARY_OPTION_IDS_ORDERED: ReadonlyArray<DateListLibraryOptionId> = [\n \"on\",\n \"before\",\n \"after\",\n \"customRange\",\n];\n\nconst LIBRARY_OPTION_ID_SET = new Set<string>(LIBRARY_OPTION_IDS_ORDERED);\n\n/** Type guard for the four reserved library option ids. */\nexport const isDateListLibraryOptionId = (\n id: string,\n): id is DateListLibraryOptionId => LIBRARY_OPTION_ID_SET.has(id);\n\n/** Label for a given library option id. */\nexport const getDateListLibraryOptionLabel = (\n id: DateListLibraryOptionId,\n): string => LIBRARY_OPTION_LABELS[id];\n\n/**\n * Library options the dateList filter always renders below the consumer's\n * options. Used by FilterDateList (popover) and FilterDrawer (drawer). The\n * \"…\" suffix signals that picking the option opens a dialog; once a date is\n * committed, the bare label (without \"…\") is what gets stored and shown in\n * the filter trigger.\n */\nexport const dateListLibraryOptions: ReadonlyArray<{\n id: DateListLibraryOptionId;\n label: string;\n}> = LIBRARY_OPTION_IDS_ORDERED.map((id) => ({\n id,\n label: `${LIBRARY_OPTION_LABELS[id]}…`,\n}));\n\n/** True when the library option opens a date-range dialog. */\nexport const isDateListRangeLibraryId = (\n id: DateListLibraryOptionId,\n): boolean => id === \"customRange\";\n\nconst formatDateForLabel = (iso: string): string => {\n const d = DateTime.fromISO(iso, { zone: \"local\" });\n return `${d.monthShort} ${d.day}, ${d.year}`;\n};\n\nconst formatRangeForLabel = (range: {\n startDate: string;\n endDate: string;\n}): string => {\n const start = DateTime.fromISO(range.startDate, { zone: \"local\" });\n const end = DateTime.fromISO(range.endDate, { zone: \"local\" });\n const sameYear = start.year === end.year;\n const formattedStart = sameYear\n ? `${start.monthShort} ${start.day}`\n : `${start.monthShort} ${start.day}, ${start.year}`;\n return `${formattedStart} – ${end.monthShort} ${end.day}, ${end.year}`;\n};\n\n/**\n * Build the display label for a committed dateList selection. Used by both\n * the toolbar `FilterTriggerButton` and the FilterDrawer `SelectField` so the\n * two surfaces stay in sync.\n *\n * - Selection with `value: null` (e.g. \"Any day\") → option label only.\n * - Custom Range library option → just the formatted range (label omitted\n * since the range is self-explanatory).\n * - Other library or consumer options → `\"<label>: <formatted>\"`.\n */\nexport const formatDateListSelectionLabel = (\n selection: DateListOption,\n): string => {\n if (selection.value === null) return selection.label;\n const formatted =\n typeof selection.value === \"string\"\n ? formatDateForLabel(selection.value)\n : formatRangeForLabel(selection.value);\n if (selection.id === \"customRange\") return formatted;\n return `${selection.label}: ${formatted}`;\n};\n","import { ReactNode, useEffect, useMemo, useState } from \"react\";\nimport Dialog from \"../../../components/Dialog\";\nimport Button from \"../../../components/Button\";\nimport Flex from \"../../../components/Flex\";\nimport { DateFieldSingleProps } from \"../../../components/DateFieldSingle\";\nimport { SelectMenuOption, SelectMenuSync } from \"../SelectMenu\";\nimport {\n DateFilter,\n DateRangeFilter,\n DateListFilter,\n DateListLibraryOptionId,\n DateListOption,\n} from \"./internal/types\";\nimport { FilterDateSingle } from \"./FilterDateSingle\";\nimport { FilterDateRange } from \"./FilterDateRange\";\nimport { FilterItemWrapper } from \"./FilterItemWrapper\";\nimport { FilterTriggerButton } from \"./FilterTriggerButton\";\nimport {\n dateListLibraryOptions,\n getDateListLibraryOptionLabel,\n isDateListLibraryOptionId,\n isDateListRangeLibraryId,\n} from \"./internal/utils/dateListLibraryOptions\";\nimport { warnOnce } from \"../../../internal/functions\";\n\ninterface DateListDialogProps {\n /** Library option whose dialog is open; null when closed. */\n libraryId: DateListLibraryOptionId | null;\n /** Parent filter id; used to derive unique DOM ids for the synthetic date pickers inside the dialog. */\n parentFilterId: string;\n /** Pre-seed value when re-opening an already-selected library option. */\n initialValue?: string | { startDate: string; endDate: string };\n mode?: DateFieldSingleProps[\"mode\"];\n /** Primary CTA label. \"Apply\" in popover, \"Save\" in drawer. */\n dialogCtaLabel: \"Apply\" | \"Save\";\n onCommit: (option: DateListOption) => void;\n onCancel: () => void;\n}\n\n/**\n * Dialog shared by FilterDateList (popover) and FilterDrawer's dateList case.\n * Renders a date or range picker for the chosen library option and commits\n * up on Apply/Save.\n */\nexport const DateListDialog = ({\n libraryId,\n parentFilterId,\n initialValue,\n mode,\n dialogCtaLabel,\n onCommit,\n onCancel,\n}: DateListDialogProps) => {\n const [dateDraft, setDateDraft] = useState<string | null>(null);\n const [rangeDraft, setRangeDraft] = useState<{\n startDate: string | null;\n endDate: string | null;\n } | null>(null);\n\n // Re-seed draft each time the dialog opens for a new library option.\n useEffect(() => {\n if (!libraryId) return;\n if (isDateListRangeLibraryId(libraryId)) {\n setRangeDraft(\n initialValue && typeof initialValue === \"object\"\n ? {\n startDate: initialValue.startDate,\n endDate: initialValue.endDate,\n }\n : null,\n );\n setDateDraft(null);\n } else {\n setDateDraft(typeof initialValue === \"string\" ? initialValue : null);\n setRangeDraft(null);\n }\n }, [libraryId, initialValue]);\n\n const dialogOpen = libraryId !== null;\n const dialogLabel = libraryId ? getDateListLibraryOptionLabel(libraryId) : \"\";\n const isRange = libraryId ? isDateListRangeLibraryId(libraryId) : false;\n\n const canCommit = isRange\n ? Boolean(rangeDraft?.startDate && rangeDraft?.endDate)\n : Boolean(dateDraft);\n\n const handleCommit = () => {\n if (!libraryId) return;\n if (isRange) {\n if (!rangeDraft?.startDate || !rangeDraft?.endDate) return;\n onCommit({\n id: libraryId,\n label: dialogLabel,\n value: {\n startDate: rangeDraft.startDate,\n endDate: rangeDraft.endDate,\n },\n });\n } else {\n if (!dateDraft) return;\n onCommit({ id: libraryId, label: dialogLabel, value: dateDraft });\n }\n };\n\n return (\n <Dialog open={dialogOpen} onClose={onCancel}>\n {libraryId && (\n <>\n <Dialog.Header>{dialogLabel}</Dialog.Header>\n <Dialog.Content>\n {isRange ? (\n <FilterDateRange\n variant=\"inline\"\n filter={\n {\n id: `${parentFilterId}--date-list-dialog-range`,\n label: dialogLabel,\n type: \"dateRange\",\n value: rangeDraft,\n mode,\n } satisfies DateRangeFilter\n }\n draftValue={rangeDraft}\n onDraftChange={setRangeDraft}\n />\n ) : (\n <FilterDateSingle\n variant=\"inline\"\n filter={\n {\n id: `${parentFilterId}--date-list-dialog-date`,\n label: dialogLabel,\n type: \"date\",\n value: dateDraft,\n mode,\n } satisfies DateFilter\n }\n draftValue={dateDraft}\n onDraftChange={setDateDraft}\n />\n )}\n </Dialog.Content>\n <Dialog.Footer>\n <Flex gap={2} justifyContent=\"flex-end\">\n <Dialog.CancelButton appearance=\"ghost\" aria-label=\"Cancel\">\n Cancel\n </Dialog.CancelButton>\n <Button\n appearance=\"primary\"\n disabled={!canCommit}\n onClick={handleCommit}\n >\n {dialogCtaLabel}\n </Button>\n </Flex>\n </Dialog.Footer>\n </>\n )}\n </Dialog>\n );\n};\n\ninterface FilterDateListProps {\n filter: DateListFilter;\n committedValue: DateListOption | undefined;\n onCommit: (value: DateListOption | undefined) => void;\n label: ReactNode;\n isSelected: boolean;\n /** Primary CTA label for the library-option dialog. */\n dialogCtaLabel: \"Apply\" | \"Save\";\n /** Configures a \"Clear\" button in the SelectMenu footer. Presence enables it. */\n clear?: {\n onClick: () => void;\n label?: string;\n disabled?: boolean;\n };\n}\n\n/**\n * FilterDateList renders the dateList filter's option list via SelectMenuSync.\n * Consumer options commit immediately; library options open a Dialog whose\n * Apply commits the final picked date or range.\n */\nexport const FilterDateList = ({\n filter,\n committedValue,\n onCommit,\n label,\n isSelected,\n dialogCtaLabel,\n clear,\n}: FilterDateListProps) => {\n const [openLibraryId, setOpenLibraryId] =\n useState<DateListLibraryOptionId | null>(null);\n\n // Dev-only check: warn when a consumer option's id is reserved for a\n // library option, or when its label collides with a library label.\n useEffect(() => {\n const libraryLabels = new Set(dateListLibraryOptions.map((o) => o.label));\n filter.options.forEach((opt) => {\n if (isDateListLibraryOptionId(opt.id)) {\n warnOnce(\n `[FilterDateList] Consumer option id \"${opt.id}\" is reserved for a library option (\"on\", \"before\", \"after\", \"customRange\"). Use a different id.`,\n );\n }\n if (libraryLabels.has(opt.label)) {\n warnOnce(\n `[FilterDateList] Consumer option label \"${opt.label}\" collides with a library option label (\"On…\", \"Before…\", \"After…\", \"Custom Range…\"). Use a different label.`,\n );\n }\n });\n }, [filter.options]);\n\n const options = useMemo<SelectMenuOption[]>(\n () => [\n ...filter.options.map(\n (opt): SelectMenuOption => ({ id: opt.id, label: opt.label }),\n ),\n ...dateListLibraryOptions.map(\n (opt): SelectMenuOption => ({ id: opt.id, label: opt.label }),\n ),\n ],\n [filter.options],\n );\n\n // SelectMenu wants the *original* option reference back through value, so\n // pick the matching options entry by id.\n const selectedOption = useMemo<SelectMenuOption | null>(\n () =>\n committedValue\n ? (options.find((opt) => opt.id === committedValue.id) ?? null)\n : null,\n [options, committedValue],\n );\n\n const handleSelectedOptionChange = (option: SelectMenuOption | null) => {\n if (!option) {\n onCommit(undefined);\n return;\n }\n const id = String(option.id);\n if (isDateListLibraryOptionId(id)) {\n setOpenLibraryId(id);\n return;\n }\n const consumerOption = filter.options.find((opt) => opt.id === id);\n if (!consumerOption) return;\n onCommit({\n id: consumerOption.id,\n label: consumerOption.label,\n value: consumerOption.value,\n });\n };\n\n const dialogInitialValue =\n openLibraryId &&\n committedValue?.id === openLibraryId &&\n committedValue.value !== null\n ? committedValue.value\n : undefined;\n\n return (\n <>\n <FilterItemWrapper>\n <SelectMenuSync\n id={filter.id}\n label={filter.label}\n options={options}\n value={selectedOption}\n onSelectedOptionChange={handleSelectedOptionChange}\n disableSearch\n clear={clear}\n trigger={(triggerProps) => (\n <FilterTriggerButton\n {...triggerProps}\n filterId={filter.id}\n label={label}\n isSelected={isSelected}\n icon=\"calendar\"\n />\n )}\n />\n </FilterItemWrapper>\n <DateListDialog\n libraryId={openLibraryId}\n parentFilterId={filter.id}\n initialValue={dialogInitialValue}\n mode={filter.mode}\n dialogCtaLabel={dialogCtaLabel}\n onCommit={(option) => {\n onCommit(option);\n setOpenLibraryId(null);\n }}\n onCancel={() => setOpenLibraryId(null)}\n />\n </>\n );\n};\n","import { FilterDateList } from \"../../FilterDateList\";\nimport { SelectFieldSync, SelectFieldOption } from \"../../../SelectField\";\nimport {\n dateListLibraryOptions,\n formatDateListSelectionLabel,\n isDateListLibraryOptionId,\n} from \"../utils/dateListLibraryOptions\";\nimport { DateListFilter, DateListOption } from \"../types\";\nimport { FilterTypeAdapter } from \"./types\";\n\ntype Value = DateListOption | undefined;\n\n// \"Any day\" (value === null) is treated as inactive — selecting it\n// is functionally equivalent to clearing the filter.\nconst isSelected = (filter: DateListFilter) =>\n filter.selectedOption !== undefined && filter.selectedOption.value !== null;\n\nconst formatLabel = (filter: DateListFilter) => {\n const selected = filter.selectedOption;\n if (!selected || selected.value === null) return filter.label;\n return formatDateListSelectionLabel(selected);\n};\n\nexport const dateListAdapter: FilterTypeAdapter<DateListFilter, Value> = {\n getValue: (filter) => filter.selectedOption,\n setValue: (filter, value) => ({ ...filter, selectedOption: value }),\n reset: (filter) => ({ ...filter, selectedOption: undefined }),\n isActive: isSelected,\n preserveState: (newFilter, existingFilter) => ({\n ...newFilter,\n selectedOption: existingFilter.selectedOption,\n }),\n cloneWithItemRefs: (filter) => ({ ...filter }),\n\n renderBarControl: ({ filter, updateFilter }) => (\n <FilterDateList\n key={filter.id}\n filter={filter}\n committedValue={filter.selectedOption}\n onCommit={(value) => updateFilter(filter.id, value, true)}\n label={formatLabel(filter)}\n isSelected={isSelected(filter)}\n dialogCtaLabel=\"Apply\"\n clear={{\n onClick: () => updateFilter(filter.id, undefined, true),\n }}\n />\n ),\n renderDrawer: ({\n originalFilter,\n draftFilter,\n onDraftChange,\n requestDateListDialog,\n }) => {\n const consumerSelectOptions: SelectFieldOption[] =\n originalFilter.options.map((opt) => ({\n id: opt.id,\n label: opt.label,\n extra: { value: opt.value },\n }));\n const librarySelectOptions: SelectFieldOption[] =\n dateListLibraryOptions.map((opt) => ({\n id: opt.id,\n label: opt.label,\n extra: { value: null },\n }));\n const allSelectOptions = [\n ...consumerSelectOptions,\n ...librarySelectOptions,\n ];\n\n // Build value directly from selectedOption with the formatted display\n // label so the SelectField trigger matches what the toolbar trigger shows\n // (e.g. \"On: Jan 28, 2026\").\n const selectedSelectOption: SelectFieldOption | null =\n draftFilter.selectedOption\n ? {\n id: draftFilter.selectedOption.id,\n label: formatDateListSelectionLabel(draftFilter.selectedOption),\n extra: {\n value: draftFilter.selectedOption.value,\n },\n }\n : null;\n\n return (\n <SelectFieldSync\n key={draftFilter.id}\n label={originalFilter.label}\n placeholder=\"Select an option...\"\n disableSearch\n options={allSelectOptions}\n value={selectedSelectOption}\n onSelectedOptionChange={(option) => {\n if (!option) {\n onDraftChange(draftFilter.id, undefined);\n return;\n }\n const id = String(option.id);\n if (isDateListLibraryOptionId(id)) {\n requestDateListDialog(draftFilter.id, id);\n return;\n }\n onDraftChange(draftFilter.id, {\n id,\n label: option.label,\n value: (option.extra?.value ?? null) as DateListOption[\"value\"],\n });\n }}\n />\n );\n },\n formatLabel,\n isSelected,\n};\n","import { DateTime } from \"luxon\";\nimport { DateFieldRange } from \"../../../../../components/DateFieldRange\";\nimport { FilterDateRange } from \"../../FilterDateRange\";\nimport { DateRangeFilter } from \"../types\";\nimport { FilterTypeAdapter } from \"./types\";\n\ntype Value = { startDate: string | null; endDate: string | null } | null;\n\nconst formatLabel = (filter: DateRangeFilter) => {\n if (filter.value?.startDate && filter.value?.endDate) {\n const start = DateTime.fromISO(filter.value.startDate as string, {\n zone: \"local\",\n });\n const end = DateTime.fromISO(filter.value.endDate as string, {\n zone: \"local\",\n });\n\n const isSameYear = start.year === end.year;\n const formattedStart = isSameYear\n ? `${start.monthShort} ${start.day}`\n : `${start.monthShort} ${start.day}, ${start.year}`;\n\n return `${filter.label}: ${formattedStart} – ${end.monthShort} ${end.day}, ${end.year}`;\n }\n return filter.label;\n};\n\nconst isSelected = (filter: DateRangeFilter) =>\n !!(filter.value?.startDate && filter.value?.endDate);\n\nexport const dateRangeAdapter: FilterTypeAdapter<DateRangeFilter, Value> = {\n getValue: (filter) => filter.value ?? null,\n setValue: (filter, value) => ({ ...filter, value }),\n reset: (filter) => ({ ...filter, value: null }),\n isActive: (filter) =>\n filter.value !== null &&\n filter.value !== undefined &&\n filter.value.startDate !== null &&\n filter.value.endDate !== null,\n preserveState: (newFilter, existingFilter) => ({\n ...newFilter,\n value: existingFilter.value,\n }),\n cloneWithItemRefs: (filter) => ({\n ...filter,\n value: (filter.value as Value) ?? null,\n }),\n\n renderBarControl: ({ filter, updateFilter, controlledFiltering }) => (\n <FilterDateRange\n key={filter.id}\n filter={filter}\n committedValue={filter.value ?? null}\n onCommit={(value) => updateFilter(filter.id, value, true)}\n controlledFiltering={controlledFiltering}\n label={formatLabel(filter)}\n isSelected={isSelected(filter)}\n clear={{\n onClick: () => updateFilter(filter.id, null, true),\n }}\n />\n ),\n renderDrawer: ({ draftFilter, onDraftChange }) => (\n <DateFieldRange\n key={draftFilter.id}\n label={draftFilter.label}\n value={(draftFilter.value as Value) ?? null}\n onChange={(change) =>\n onDraftChange(draftFilter.id, {\n startDate: change.startDate,\n endDate: change.endDate,\n })\n }\n mode={draftFilter.mode}\n />\n ),\n formatLabel,\n isSelected,\n};\n","import { Checkbox } from \"../../../../../components/Checkbox\";\nimport Chip from \"../../../../../components/Chip\";\nimport { FilterItemWrapper } from \"../../FilterItemWrapper\";\nimport { FilterTriggerButton } from \"../../FilterTriggerButton\";\nimport { MultiSelectFieldSync } from \"../../../MultiSelectField\";\nimport {\n MultiSelectMenuOption,\n MultiSelectMenuSync,\n MultiSelectMenuSyncProps,\n} from \"../../../MultiSelectMenu\";\nimport { MultiSelectFilter } from \"../types\";\nimport { FilterTypeAdapter } from \"./types\";\n\ntype Value = MultiSelectMenuOption[];\n\nconst isSelected = (filter: MultiSelectFilter) =>\n !!filter.selectedOptions && filter.selectedOptions.length > 0;\n\nconst formatLabel = (filter: MultiSelectFilter) => {\n const count = filter.selectedOptions?.length ?? 0;\n if (count === 0) return filter.label;\n const countLabel = count.toString();\n return (\n <>\n {filter.label}\n <Chip\n label={countLabel}\n color=\"#0265DC\"\n size=\"small\"\n aria-label={`${countLabel} selected items`}\n />\n </>\n );\n};\n\n/**\n * Strip the filter-runtime fields so the rest can be spread directly into\n * MultiSelectMenuSync / MultiSelectFieldSync. The cast widens the variant-\n * specific shape back to the full MultiSelectMenuSyncProps union — the spread\n * site then re-narrows via the explicit `id`/`label`/etc. props we add.\n */\nconst passThroughMenuProps = (\n filter: MultiSelectFilter,\n): MultiSelectMenuSyncProps => {\n const {\n id: _id,\n label: _label,\n type: _type,\n selectedOptions: _selectedOptions,\n simpleDrawerVariant: _simpleDrawerVariant,\n drawerOnly: _drawerOnly,\n ...rest\n } = filter;\n return rest as unknown as MultiSelectMenuSyncProps;\n};\n\nexport const multiSelectAdapter: FilterTypeAdapter<MultiSelectFilter, Value> = {\n getValue: (filter) => filter.selectedOptions ?? [],\n setValue: (filter, value) => ({ ...filter, selectedOptions: value }),\n reset: (filter) => ({ ...filter, selectedOptions: [] }),\n isActive: isSelected,\n preserveState: (newFilter, existingFilter) => ({\n ...newFilter,\n selectedOptions: existingFilter.selectedOptions,\n }),\n // Options are owned by the consumer; MultiSelectMenuSync handles identity\n // internally — no rebinding needed.\n cloneWithItemRefs: (filter) => ({ ...filter }),\n\n renderBarControl: ({ filter, updateFilter, controlledFiltering }) => (\n <FilterItemWrapper key={filter.id}>\n <MultiSelectMenuSync\n {...passThroughMenuProps(filter)}\n id={filter.id}\n label={filter.label}\n value={filter.selectedOptions ?? []}\n onSelectedOptionsChange={(options) =>\n updateFilter(filter.id, options, true)\n }\n confirmation={controlledFiltering}\n clear={{\n onClick: () => updateFilter(filter.id, [], true),\n }}\n trigger={(triggerProps) => (\n <FilterTriggerButton\n {...triggerProps}\n filterId={filter.id}\n label={formatLabel(filter)}\n isSelected={isSelected(filter)}\n />\n )}\n />\n </FilterItemWrapper>\n ),\n\n renderDrawer: ({ originalFilter, draftFilter, onDraftChange }) => {\n if (originalFilter.simpleDrawerVariant) {\n return (\n <Checkbox.Group key={draftFilter.id} legend={originalFilter.label}>\n {originalFilter.options.map((option) => (\n <Checkbox\n key={option.id}\n label={option.label}\n checked={\n draftFilter.selectedOptions?.some(\n (selected) => selected.id === option.id,\n ) ?? false\n }\n onChange={(e) => {\n const currentSelected = draftFilter.selectedOptions ?? [];\n if (e?.target.checked) {\n onDraftChange(draftFilter.id, [...currentSelected, option]);\n } else {\n onDraftChange(\n draftFilter.id,\n currentSelected.filter(\n (selected) => selected.id !== option.id,\n ),\n );\n }\n }}\n />\n ))}\n </Checkbox.Group>\n );\n }\n\n return (\n <MultiSelectFieldSync\n {...passThroughMenuProps(originalFilter)}\n key={draftFilter.id}\n label={originalFilter.label}\n value={draftFilter.selectedOptions ?? []}\n onSelectedOptionsChange={(options) =>\n onDraftChange(draftFilter.id, options)\n }\n />\n );\n },\n\n formatLabel,\n isSelected,\n};\n","import { FieldLabel } from \"../../../components/FieldLabel\";\nimport Flex from \"../../../components/Flex\";\nimport Grid from \"../../../components/Grid\";\nimport { NumberField } from \"../../../components/NumberField\";\nimport Text from \"../../../components/Text\";\nimport styles from \"./FilterBar.module.scss\";\nimport { NumericRangeFilter, NumericRangeValue } from \"./internal/types\";\n\nconst clampToBounds = (\n n: number | undefined,\n minValue: number | undefined,\n maxValue: number | undefined,\n): number | undefined => {\n if (n === undefined) return undefined;\n let result = n;\n if (minValue !== undefined) result = Math.max(result, minValue);\n if (maxValue !== undefined) result = Math.min(result, maxValue);\n return result;\n};\n\n/**\n * Props for the FilterNumericRange component.\n */\ninterface FilterNumericRangeProps {\n /** The numeric range filter — drives field labels, decorator props, and clamp bounds. */\n filter: NumericRangeFilter;\n /** Current min/max value (or null when no bounds are set). */\n value: NumericRangeValue;\n /** Callback to update the value. Emits `null` when both bounds are cleared. */\n onChange: (value: NumericRangeValue) => void;\n /**\n * `compact` stacks the inputs vertically (toolbar popover); `grid` places\n * Min / \"to\" / Max side-by-side under a single FieldLabel (drawer cell).\n */\n layout: \"compact\" | \"grid\";\n}\n\n/**\n * Min/Max NumberField inputs for the numericRange filter. Used as the popover\n * body in the toolbar (`layout=\"compact\"`) and as the cell in the drawer\n * (`layout=\"grid\"`).\n *\n * Value-driven: partial input (only one bound filled) flows straight to the\n * caller, so a consumer can keep half-ranges (e.g. `> 100`) without juggling\n * draft state here. Both bounds are clamped to `filter.minValue`/`maxValue`\n * before emitting.\n */\nexport const FilterNumericRange = ({\n filter,\n value,\n onChange,\n layout,\n}: FilterNumericRangeProps) => {\n const inclusive = filter.inclusiveBounds === true;\n const minFieldLabel = inclusive ? \"Min\" : \"Above\";\n const maxFieldLabel = inclusive ? \"Max\" : \"Below\";\n // Mode-derived defaults (overridable via the filter's own digit props).\n const minimumFractionDigits =\n filter.minimumFractionDigits ??\n (filter.mode === \"currency\"\n ? 2\n : filter.mode === \"percentage\"\n ? 0\n : undefined);\n const maximumFractionDigits =\n filter.maximumFractionDigits ??\n (filter.mode === \"currency\"\n ? 2\n : filter.mode === \"percentage\"\n ? 3\n : undefined);\n const decoratorProps = {\n ...(filter.mode === \"currency\" && { prefix: \"$\" }),\n ...(filter.mode === \"percentage\" && { suffix: \"%\" }),\n ...(minimumFractionDigits !== undefined && { minimumFractionDigits }),\n ...(maximumFractionDigits !== undefined && { maximumFractionDigits }),\n };\n\n const update = (next: { min?: number; max?: number }) => {\n const min = clampToBounds(next.min, filter.minValue, filter.maxValue);\n const max = clampToBounds(next.max, filter.minValue, filter.maxValue);\n onChange(min === undefined && max === undefined ? null : { min, max });\n };\n\n // minValue/maxValue are passed through so the NumberField exposes correct\n // aria-valuemin/aria-valuemax and clamps keyboard increments — `update`\n // still clamps the emitted value as a defence-in-depth fallback.\n const sharedNumberFieldProps = {\n hideControls: filter.hideControls ?? true,\n step: filter.step,\n minValue: filter.minValue,\n maxValue: filter.maxValue,\n ...decoratorProps,\n };\n\n const minField = (\n <NumberField\n label={minFieldLabel}\n value={value?.min ?? null}\n onChange={(n) => update({ min: n ?? undefined, max: value?.max })}\n {...sharedNumberFieldProps}\n />\n );\n const maxField = (\n <NumberField\n label={maxFieldLabel}\n value={value?.max ?? null}\n onChange={(n) => update({ min: value?.min, max: n ?? undefined })}\n {...sharedNumberFieldProps}\n />\n );\n\n if (layout === \"compact\") {\n return (\n <Flex direction=\"column\" gap=\"2\" grow={1}>\n {minField}\n {maxField}\n </Flex>\n );\n }\n return (\n <Flex direction=\"column\" gap=\"2\" grow={1}>\n <FieldLabel>{filter.label}</FieldLabel>\n <Grid templateColumns=\"1fr auto 1fr\" gap=\"2\">\n {minField}\n <Flex\n alignItems=\"center\"\n justifyContent=\"center\"\n className={styles[\"filter-numeric-range-separator\"]}\n >\n <Text>to</Text>\n </Flex>\n {maxField}\n </Grid>\n </Flex>\n );\n};\n","import { FilterNumericRange } from \"../../FilterNumericRange\";\nimport { FilterPopoverButton } from \"../../FilterPopoverButton\";\nimport { NumericRangeFilter, NumericRangeValue } from \"../types\";\nimport { FilterTypeAdapter } from \"./types\";\n\n/*\n * Format a single bound for the closed-button label. Mirrors the NumberField\n * decoratorProps so the button summary matches what the user typed —\n * `mode` controls prefix/suffix (currency → `$`, percentage → `%`) and the\n * default fraction-digit range (currency: 2/2, percentage: 0/3, plain:\n * unset). `filter.minimumFractionDigits` / `filter.maximumFractionDigits`\n * override those defaults.\n */\nconst formatBound = (n: number, filter: NumericRangeFilter): string => {\n const minimumFractionDigits =\n filter.minimumFractionDigits ??\n (filter.mode === \"currency\"\n ? 2\n : filter.mode === \"percentage\"\n ? 0\n : undefined);\n const maximumFractionDigits =\n filter.maximumFractionDigits ??\n (filter.mode === \"currency\"\n ? 2\n : filter.mode === \"percentage\"\n ? 3\n : undefined);\n const formatOptions: Intl.NumberFormatOptions = {};\n if (minimumFractionDigits !== undefined) {\n formatOptions.minimumFractionDigits = minimumFractionDigits;\n }\n if (maximumFractionDigits !== undefined) {\n formatOptions.maximumFractionDigits = maximumFractionDigits;\n }\n const formatted = n.toLocaleString(\"en-US\", formatOptions);\n if (filter.mode === \"currency\") return `$${formatted}`;\n if (filter.mode === \"percentage\") return `${formatted}%`;\n return formatted;\n};\n\n/*\n * Swap the closed-button label from the static field name to a value summary\n * when at least one bound is set. Three shapes: `Label: min to max`,\n * `Label: > min`, `Label: < max` (or ≥/≤ when inclusiveBounds is true).\n */\nconst formatLabel = (filter: NumericRangeFilter) => {\n const hasMin = filter.value?.min !== undefined;\n const hasMax = filter.value?.max !== undefined;\n if (!hasMin && !hasMax) return filter.label;\n\n const inclusive = filter.inclusiveBounds === true;\n const minSymbol = inclusive ? \"≥\" : \">\";\n const maxSymbol = inclusive ? \"≤\" : \"<\";\n\n if (hasMin && hasMax) {\n return `${filter.label}: ${formatBound(filter.value!.min!, filter)} to ${formatBound(filter.value!.max!, filter)}`;\n }\n if (hasMin) {\n return `${filter.label}: ${minSymbol} ${formatBound(filter.value!.min!, filter)}`;\n }\n return `${filter.label}: ${maxSymbol} ${formatBound(filter.value!.max!, filter)}`;\n};\n\nconst isSelected = (filter: NumericRangeFilter) =>\n filter.value !== null &&\n filter.value !== undefined &&\n (filter.value.min !== undefined || filter.value.max !== undefined);\n\nexport const numericRangeAdapter: FilterTypeAdapter<\n NumericRangeFilter,\n NumericRangeValue\n> = {\n getValue: (filter) => filter.value ?? null,\n setValue: (filter, value) => ({ ...filter, value }),\n reset: (filter) => ({ ...filter, value: null }),\n isActive: isSelected,\n preserveState: (newFilter, existingFilter) => ({\n ...newFilter,\n value: existingFilter.value,\n }),\n cloneWithItemRefs: (filter) => ({\n ...filter,\n value: filter.value ? { ...filter.value } : null,\n }),\n\n renderBarControl: ({ filter }) => (\n <FilterPopoverButton<NumericRangeValue>\n key={filter.id}\n filter={filter}\n label={formatLabel(filter)}\n isSelected={isSelected(filter)}\n committedValue={filter.value ?? null}\n initialValue={null}\n >\n {({ value, onChange }) => (\n <FilterNumericRange\n filter={filter}\n value={value}\n onChange={onChange}\n layout=\"compact\"\n />\n )}\n </FilterPopoverButton>\n ),\n renderDrawer: ({ draftFilter, onDraftChange }) => (\n <FilterNumericRange\n key={draftFilter.id}\n filter={draftFilter}\n value={draftFilter.value ?? null}\n onChange={(value) => onDraftChange(draftFilter.id, value)}\n layout=\"grid\"\n />\n ),\n formatLabel,\n isSelected,\n};\n","import { Radio } from \"../../../../../components/Radio\";\nimport { FilterItemWrapper } from \"../../FilterItemWrapper\";\nimport { FilterTriggerButton } from \"../../FilterTriggerButton\";\nimport { SelectFieldSync } from \"../../../SelectField\";\nimport {\n SelectMenuOption,\n SelectMenuSync,\n SelectMenuSyncProps,\n} from \"../../../SelectMenu\";\nimport { SingleSelectFilter } from \"../types\";\nimport { FilterTypeAdapter } from \"./types\";\n\ntype Value = SelectMenuOption | undefined;\n\nconst formatLabel = (filter: SingleSelectFilter) => {\n if (filter.selectedOption) {\n return `${filter.label}: ${filter.selectedOption.label}`;\n }\n return filter.label;\n};\n\nconst isSelected = (filter: SingleSelectFilter) =>\n filter.selectedOption !== undefined;\n\n/**\n * Strip the filter-runtime fields so the rest can be spread directly into\n * SelectMenuSync / SelectFieldSync. The cast widens the variant-specific\n * shape back to the full SelectMenuSyncProps union — the spread site then\n * re-narrows via the explicit `id`/`label`/etc. props we add.\n */\nconst passThroughMenuProps = (\n filter: SingleSelectFilter,\n): SelectMenuSyncProps => {\n const {\n id: _id,\n label: _label,\n type: _type,\n selectedOption: _selectedOption,\n simpleDrawerVariant: _simpleDrawerVariant,\n drawerOnly: _drawerOnly,\n ...rest\n } = filter;\n return rest as unknown as SelectMenuSyncProps;\n};\n\nexport const singleSelectAdapter: FilterTypeAdapter<SingleSelectFilter, Value> =\n {\n getValue: (filter) => filter.selectedOption,\n setValue: (filter, value) => ({ ...filter, selectedOption: value }),\n reset: (filter) => ({ ...filter, selectedOption: undefined }),\n isActive: isSelected,\n preserveState: (newFilter, existingFilter) => ({\n ...newFilter,\n selectedOption: existingFilter.selectedOption,\n }),\n // Options are owned by the consumer; SelectMenuSync handles option identity\n // internally — no rebinding needed here.\n cloneWithItemRefs: (filter) => ({ ...filter }),\n\n renderBarControl: ({ filter, updateFilter }) => (\n <FilterItemWrapper key={filter.id}>\n <SelectMenuSync\n {...passThroughMenuProps(filter)}\n id={filter.id}\n label={filter.label}\n value={filter.selectedOption ?? null}\n onSelectedOptionChange={(option) =>\n updateFilter(filter.id, option ?? undefined, true)\n }\n clear={{\n onClick: () => updateFilter(filter.id, undefined, true),\n }}\n trigger={(triggerProps) => (\n <FilterTriggerButton\n {...triggerProps}\n filterId={filter.id}\n label={formatLabel(filter)}\n isSelected={isSelected(filter)}\n />\n )}\n />\n </FilterItemWrapper>\n ),\n\n renderDrawer: ({ originalFilter, draftFilter, onDraftChange }) => {\n if (originalFilter.simpleDrawerVariant) {\n return (\n <div key={draftFilter.id}>\n <Radio.Group legend={originalFilter.label}>\n {originalFilter.options.map((option) => (\n <Radio\n key={option.id}\n name={`${originalFilter.id}-radio`}\n value={String(option.id)}\n label={option.label}\n checked={draftFilter.selectedOption?.id === option.id}\n onChange={(e) => {\n if (e?.target.checked) {\n const selected = originalFilter.options.find(\n (opt) => String(opt.id) === e.target.value,\n );\n onDraftChange(draftFilter.id, selected);\n }\n }}\n />\n ))}\n </Radio.Group>\n </div>\n );\n }\n\n return (\n <SelectFieldSync\n {...passThroughMenuProps(originalFilter)}\n key={draftFilter.id}\n label={originalFilter.label}\n value={draftFilter.selectedOption ?? null}\n onSelectedOptionChange={(option) =>\n onDraftChange(draftFilter.id, option ?? undefined)\n }\n />\n );\n },\n\n formatLabel,\n isSelected,\n };\n","import { Filter } from \"../types\";\nimport { asyncMultiSelectAdapter } from \"./asyncMultiSelect\";\nimport { asyncSelectAdapter } from \"./asyncSelect\";\nimport { booleanAdapter } from \"./boolean\";\nimport { customAdapter } from \"./custom\";\nimport { dateAdapter } from \"./date\";\nimport { dateListAdapter } from \"./dateList\";\nimport { dateRangeAdapter } from \"./dateRange\";\nimport { multiSelectAdapter } from \"./multiSelect\";\nimport { numericRangeAdapter } from \"./numericRange\";\nimport { singleSelectAdapter } from \"./singleSelect\";\nimport { FilterAdapters, FilterTypeAdapter } from \"./types\";\n\n/**\n * Per-type adapters keyed by Filter[\"type\"]. Exhaustive: adding a new Filter\n * variant forces a compile error here until an adapter is provided.\n */\nexport const filterAdapters: FilterAdapters = {\n boolean: booleanAdapter,\n custom: customAdapter,\n singleSelect: singleSelectAdapter,\n multiSelect: multiSelectAdapter,\n date: dateAdapter,\n dateRange: dateRangeAdapter,\n dateList: dateListAdapter,\n asyncSelect: asyncSelectAdapter,\n asyncMultiSelect: asyncMultiSelectAdapter,\n numericRange: numericRangeAdapter,\n};\n\n/**\n * No-op adapter returned when a filter's `type` is not in filterAdapters.\n * Preserves the graceful default-case behavior the original switches had:\n * the filter passes through unchanged, is treated as inactive, and renders nothing.\n * This is only reachable if a caller bypasses TypeScript with `as any`.\n */\nconst unknownAdapter: FilterTypeAdapter<Filter, unknown> = {\n getValue: () => undefined,\n setValue: (filter) => filter,\n reset: (filter) => filter,\n isActive: () => false,\n preserveState: (newFilter) => newFilter,\n cloneWithItemRefs: (filter) => filter,\n renderBarControl: () => null,\n renderDrawer: () => null,\n formatLabel: (filter) => filter.label,\n isSelected: () => false,\n};\n\n/**\n * Looks up the adapter for a given filter. The returned adapter's F and V\n * are widened to Filter / unknown — callers that need narrow typing should pass\n * the filter directly through the adapter methods, which preserves variance.\n * Falls back to a no-op adapter for unknown filter types.\n */\nexport const getAdapter = (\n filter: Filter,\n): FilterTypeAdapter<Filter, unknown> =>\n (filterAdapters[filter.type] as unknown as\n | FilterTypeAdapter<Filter, unknown>\n | undefined) ?? unknownAdapter;\n\nexport type { FilterTypeAdapter } from \"./types\";\n","import { getAdapter } from \"../adapters\";\nimport { Filter, FilterValue } from \"../types\";\n\nexport { hasChangedFilter } from \"./value-compare\";\n\n/**\n * Returns an array of filters that are currently active (i.e., have a value set).\n */\nexport const getActiveFilters = (filters: Filter[]): Filter[] =>\n filters.filter((filter) => getAdapter(filter).isActive(filter));\n\n/**\n * Checks if any filters in the array have active values\n */\nexport const checkActiveFilters = (filters: Filter[]): boolean =>\n getActiveFilters(filters).length > 0;\n\n/**\n * Resets all filters to their default state\n */\nexport const resetFilters = (filters: Filter[]): Filter[] =>\n filters.map((filter) => getAdapter(filter).reset(filter) as Filter);\n\n/**\n * Updates a single filter in an array of filters\n */\nexport const updateSingleFilter = (\n filters: Filter[],\n filterId: string,\n value: FilterValue,\n): Filter[] =>\n filters.map((filter) => {\n if (filter.id !== filterId) return filter;\n return getAdapter(filter).setValue(filter, value) as Filter;\n });\n\n/**\n * Checks if the selection value of a filter has changed by comparing references.\n * Uses reference equality (===) to detect if the parent has provided a new value.\n */\nexport const hasFilterSelectionChanged = (\n existingFilter: Filter,\n newFilter: Filter,\n): boolean => {\n const existingValue = getAdapter(existingFilter).getValue(existingFilter);\n const newValue = getAdapter(newFilter).getValue(newFilter);\n return existingValue !== newValue;\n};\n\n/**\n * Preserves the selection state from an existing filter into a new filter.\n * Used when filter configuration updates but the selection value reference hasn't changed.\n */\nexport const preserveFilterState = (\n newFilter: Filter,\n existingFilter: Filter,\n): Filter =>\n getAdapter(newFilter).preserveState(newFilter, existingFilter) as Filter;\n\n/**\n * Creates a deep clone of filters with updated item references.\n * Ensures that selected items reference the current items array for proper equality checks.\n */\nexport const cloneFiltersWithItemRefs = (filters: Filter[]): Filter[] =>\n filters.map(\n (filter) => getAdapter(filter).cloneWithItemRefs(filter) as Filter,\n );\n"],"names":["FilterTriggerButton","Event","ArrowDropDown","isSelected","formatLabel","passThroughMenuProps","Body","PopoverShell"],"mappings":"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"}
|
|
@@ -1,59 +1,45 @@
|
|
|
1
|
-
.anvil2 {._filter-button-
|
|
1
|
+
.anvil2 {._filter-button-trigger_1kmgt_1 {
|
|
2
2
|
white-space: nowrap;
|
|
3
|
-
}._filter-button-
|
|
3
|
+
}._filter-button-trigger_1kmgt_1[aria-expanded=true]:not(._filter-button-trigger--selected_1kmgt_5) {
|
|
4
4
|
--a2-mod-button-background-color: var(--a2-button-ghost-background-color-hover, var(--a2-background-color-transparent-default-hover, light-dark(rgba(139, 139, 139, 0.0784313725), rgba(255, 255, 255, 0.0784313725))));
|
|
5
|
-
}._filter-button-trigger--
|
|
5
|
+
}._filter-button-trigger--selected_1kmgt_5 {
|
|
6
6
|
--a2-mod-button-background-color: var(--a2-background-color-primary-subdued, light-dark(var(--a2-color-blue-50, #e6f1ff), color-mix(in srgb, var(--a2-color-blue-300, #70b1ff) 20%, transparent)));
|
|
7
7
|
--a2-mod-button-foreground-color: var(--a2-foreground-color-primary, light-dark(var(--a2-color-blue-600, #0265dc), var(--a2-color-blue-300, #70b1ff)));
|
|
8
|
-
}._filter-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}._filter-select-content_1ky9m_19:has(input[type=search]) {
|
|
8
|
+
}._filter-select-content_1kmgt_14 {
|
|
9
|
+
padding-block-end: var(--a2-size-3, 0.75rem);
|
|
10
|
+
}._filter-select-content_1kmgt_14:has(input[type=search]) {
|
|
12
11
|
max-height: 18.75rem;
|
|
13
|
-
}._filter-select-
|
|
12
|
+
}._filter-select-content_1kmgt_14:not(:has(input[type=search])) {
|
|
14
13
|
max-height: 18.5rem;
|
|
15
|
-
}._filter-
|
|
16
|
-
|
|
17
|
-
}._filter-drawer-trigger_1ky9m_29 {
|
|
18
|
-
position: sticky;
|
|
19
|
-
right: 0;
|
|
20
|
-
}._filter-button-trigger_1ky9m_1,
|
|
21
|
-
._filter-drawer-trigger_1ky9m_29 {
|
|
14
|
+
}._filter-button-trigger_1kmgt_1,
|
|
15
|
+
._filter-drawer-trigger_1kmgt_25 {
|
|
22
16
|
border-color: transparent;
|
|
23
17
|
--a2-mod-chip-margin-block-start: calc(-1 * var(--a2-size-1, 0.25rem));
|
|
24
18
|
--a2-mod-chip-margin-block-end: calc(-1 * var(--a2-size-1, 0.25rem));
|
|
25
|
-
}._filter-drawer-trigger--
|
|
19
|
+
}._filter-drawer-trigger--chipped_1kmgt_31 {
|
|
26
20
|
--a2-mod-button-background-color: var(--a2-background-color-primary-subdued, light-dark(var(--a2-color-blue-50, #e6f1ff), color-mix(in srgb, var(--a2-color-blue-300, #70b1ff) 20%, transparent)));
|
|
27
21
|
--a2-mod-button-foreground-color: var(--a2-foreground-color-primary, light-dark(var(--a2-color-blue-600, #0265dc), var(--a2-color-blue-300, #70b1ff)));
|
|
28
22
|
--a2-mod-button-min-width: max-content;
|
|
29
|
-
}._filter-button-buttons_1ky9m_25 {
|
|
30
|
-
background: var(--a2-background-color-strong, light-dark(var(--a2-color-neutral-20, #f9f9f9), var(--a2-color-neutral-800, #292929)));
|
|
31
|
-
bottom: 0;
|
|
32
|
-
padding-block-end: var(--a2-size-4, 1rem);
|
|
33
|
-
padding-block-start: var(--a2-size-2, 0.5rem);
|
|
34
|
-
padding-inline: var(--a2-size-4, 1rem);
|
|
35
|
-
position: sticky;
|
|
36
23
|
}[data-anv=filter-bar] {
|
|
37
24
|
container-type: inline-size;
|
|
38
|
-
|
|
39
|
-
overflow: hidden;
|
|
25
|
+
width: 100%;
|
|
40
26
|
padding-block: var(--a2-size-2, 0.5rem);
|
|
41
27
|
padding-inline: var(--a2-size-1, 0.25rem);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
46
|
-
}._filter-select-search_1ky9m_70[data-anv=SearchField] {
|
|
28
|
+
}[data-anv=filter-bar]:has(button) {
|
|
29
|
+
min-width: 5.625rem;
|
|
30
|
+
}._filter-select-search_1kmgt_47[data-anv=SearchField] {
|
|
47
31
|
background: var(--a2-background-color-strong, light-dark(var(--a2-color-neutral-20, #f9f9f9), var(--a2-color-neutral-800, #292929)));
|
|
48
32
|
padding-block-start: var(--a2-size-4, 1rem);
|
|
49
33
|
padding-inline: var(--a2-size-4, 1rem);
|
|
50
34
|
position: sticky;
|
|
51
35
|
top: 0;
|
|
52
36
|
z-index: 1;
|
|
53
|
-
}._filter-select-
|
|
37
|
+
}._filter-select-search_1kmgt_47[data-anv=SearchField] input[type=search] {
|
|
54
38
|
padding-inline-end: var(--a2-size-2, 0.5rem);
|
|
55
|
-
}._filter-select-
|
|
56
|
-
._filter-select-
|
|
39
|
+
}._filter-select-search_1kmgt_47[data-anv=SearchField] > div[role=presentation],
|
|
40
|
+
._filter-select-search_1kmgt_47[data-anv=SearchField] input[type=search] {
|
|
57
41
|
padding-inline-end: var(--a2-size-4, 1rem);
|
|
42
|
+
}._filter-numeric-range-separator_1kmgt_63 {
|
|
43
|
+
margin-block-start: var(--a2-size-6, 1.5rem);
|
|
58
44
|
}
|
|
59
45
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { P as PluginKey, a as Plugin, S as Slice, F as Fragment, T as TextSelection, A as AllSelection, N as NodeSelection, E as Extension, g as getUpdatedPosition$1, M as MappablePosition, b as NodeRange, c as SelectionRange, d as Selection, D as DecorationSet, e as Decoration, i as isFirefox } from './RichTextEditor-
|
|
1
|
+
import { P as PluginKey, a as Plugin, S as Slice, F as Fragment, T as TextSelection, A as AllSelection, N as NodeSelection, E as Extension, g as getUpdatedPosition$1, M as MappablePosition, b as NodeRange, c as SelectionRange, d as Selection, D as DecorationSet, e as Decoration, i as isFirefox } from './RichTextEditor-DstVbYch.js';
|
|
2
2
|
import { useState, useRef, useMemo, useEffect } from 'react';
|
|
3
3
|
import { jsx } from 'react/jsx-runtime';
|
|
4
4
|
|
|
@@ -17041,4 +17041,4 @@ var DragHandle = (props) => {
|
|
|
17041
17041
|
};
|
|
17042
17042
|
|
|
17043
17043
|
export { DragHandle };
|
|
17044
|
-
//# sourceMappingURL=index-
|
|
17044
|
+
//# sourceMappingURL=index-DVYRUKtW.js.map
|