@servicetitan/anvil2 3.17.0 → 3.18.0
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 +51 -0
- package/dist/{AiMark-CYXbKuCA.js → AiMark-Ca7WmL-9.js} +113 -32
- package/dist/AiMark-Ca7WmL-9.js.map +1 -0
- package/dist/AiMark.js +1 -1
- package/dist/{Alert-CYpl0czJ.js → Alert-BOqBFMUV.js} +2 -2
- package/dist/{Alert-CYpl0czJ.js.map → Alert-BOqBFMUV.js.map} +1 -1
- package/dist/Alert.js +1 -1
- package/dist/{AnvilProvider-DagOuc9c.js → AnvilProvider-BVTxXzoS.js} +3 -3
- package/dist/{AnvilProvider-DagOuc9c.js.map → AnvilProvider-BVTxXzoS.js.map} +1 -1
- package/dist/AnvilProvider.js +1 -1
- package/dist/{Breadcrumbs-C0CXs9Ma.js → Breadcrumbs-1MCqy-gU.js} +2 -2
- package/dist/{Breadcrumbs-C0CXs9Ma.js.map → Breadcrumbs-1MCqy-gU.js.map} +1 -1
- package/dist/Breadcrumbs.js +1 -1
- package/dist/{Calendar-BAIyDHX9.js → Calendar-BcsuV4Xv.js} +2 -2
- package/dist/{Calendar-BAIyDHX9.js.map → Calendar-BcsuV4Xv.js.map} +1 -1
- package/dist/{Calendar-C_NPqjx3.js → Calendar-oBRbQqnG.js} +2 -2
- package/dist/{Calendar-C_NPqjx3.js.map → Calendar-oBRbQqnG.js.map} +1 -1
- package/dist/Calendar.js +2 -2
- package/dist/{Checkbox-4Ow8rCbD.js → Checkbox-BCaUzwF_.js} +2 -2
- package/dist/{Checkbox-4Ow8rCbD.js.map → Checkbox-BCaUzwF_.js.map} +1 -1
- package/dist/{Checkbox-f1vutjn0.js → Checkbox-BocPrjKC.js} +4 -4
- package/dist/{Checkbox-f1vutjn0.js.map → Checkbox-BocPrjKC.js.map} +1 -1
- package/dist/Checkbox.js +1 -1
- package/dist/{Chip-AIF0WiNS.js → Chip-BWqgUX71.js} +11 -24
- package/dist/Chip-BWqgUX71.js.map +1 -0
- package/dist/Chip.js +1 -1
- package/dist/Combobox.js +1 -1
- package/dist/{DataTableEditColumnsDrawer-DRgJgso9.js → DataTableEditColumnsDrawer-C7OHRsJU.js} +101 -42
- package/dist/DataTableEditColumnsDrawer-C7OHRsJU.js.map +1 -0
- package/dist/DataTableEditColumnsDrawer.css +49 -33
- package/dist/{DateFieldRange-D9PA985Z.js → DateFieldRange-BPcsS6TW.js} +5 -5
- package/dist/{DateFieldRange-D9PA985Z.js.map → DateFieldRange-BPcsS6TW.js.map} +1 -1
- package/dist/DateFieldRange.js +1 -1
- package/dist/{DateFieldSingle-CMLojOb3.js → DateFieldSingle-BRMhe0OM.js} +5 -5
- package/dist/{DateFieldSingle-CMLojOb3.js.map → DateFieldSingle-BRMhe0OM.js.map} +1 -1
- package/dist/DateFieldSingle.js +1 -1
- package/dist/{DateFieldYearless-B5IyR75v.js → DateFieldYearless-NOgDKzrJ.js} +6 -6
- package/dist/{DateFieldYearless-B5IyR75v.js.map → DateFieldYearless-NOgDKzrJ.js.map} +1 -1
- package/dist/DateFieldYearless.js +1 -1
- package/dist/{DateFieldYearlessRange-8yXILjx7.js → DateFieldYearlessRange-ChvypgXC.js} +5 -5
- package/dist/{DateFieldYearlessRange-8yXILjx7.js.map → DateFieldYearlessRange-ChvypgXC.js.map} +1 -1
- package/dist/DateFieldYearlessRange.js +1 -1
- package/dist/{DaysOfTheWeek-Cxp5VdYK.js → DaysOfTheWeek-nYitIKnQ.js} +3 -3
- package/dist/{DaysOfTheWeek-Cxp5VdYK.js.map → DaysOfTheWeek-nYitIKnQ.js.map} +1 -1
- package/dist/DaysOfTheWeek.js +1 -1
- package/dist/Details-B2F3auTX.js +216 -0
- package/dist/Details-B2F3auTX.js.map +1 -0
- package/dist/{Details-BxqP-5vp.js → Details-DQ-_Mg4o.js} +3 -3
- package/dist/{Details-BxqP-5vp.js.map → Details-DQ-_Mg4o.js.map} +1 -1
- package/dist/Details.css +92 -68
- package/dist/Details.js +1 -1
- package/dist/Details2.css +137 -0
- package/dist/{Dialog-KDAJphrA.js → Dialog-BgWoV2on.js} +6 -4
- package/dist/Dialog-BgWoV2on.js.map +1 -0
- package/dist/Dialog.js +1 -1
- package/dist/{Drawer-C7E2NNnH.js → Drawer-BVBLtGn_.js} +7 -5
- package/dist/Drawer-BVBLtGn_.js.map +1 -0
- package/dist/Drawer.js +1 -1
- package/dist/DrillDown.js +1 -1
- package/dist/{EditCard-CutlsXfK.js → EditCard-hivZDPZh.js} +2 -2
- package/dist/{EditCard-CutlsXfK.js.map → EditCard-hivZDPZh.js.map} +1 -1
- package/dist/EditCard.js +1 -1
- package/dist/{FieldLabel-DYcUS3A4.js → FieldLabel-Cn559Brf.js} +8 -58
- package/dist/FieldLabel-Cn559Brf.js.map +1 -0
- package/dist/FieldLabel.css +1 -12
- package/dist/FieldLabel.js +1 -1
- package/dist/FieldMessage.js +1 -1
- package/dist/{FilterBar-DbDfZph-.js → FilterBar-COd38Ent.js} +5 -5
- package/dist/{FilterBar-DbDfZph-.js.map → FilterBar-COd38Ent.js.map} +1 -1
- package/dist/FilterBar.js +1 -1
- package/dist/InlineMarkdown-CL1tKR01.js +87 -0
- package/dist/InlineMarkdown-CL1tKR01.js.map +1 -0
- package/dist/InlineMarkdown.css +12 -0
- package/dist/{InputMask-BxdQc1ld.js → InputMask-DICWdeiF.js} +3 -3
- package/dist/{InputMask-BxdQc1ld.js.map → InputMask-DICWdeiF.js.map} +1 -1
- package/dist/InputMask.js +1 -1
- package/dist/{ListView-BVanVvBk.js → ListView-BeGBn5Vk.js} +2 -2
- package/dist/{ListView-BVanVvBk.js.map → ListView-BeGBn5Vk.js.map} +1 -1
- package/dist/ListView.js +1 -1
- package/dist/{Listbox-BR0YQIee.js → Listbox-n1CmJ2gh.js} +2 -2
- package/dist/{Listbox-BR0YQIee.js.map → Listbox-n1CmJ2gh.js.map} +1 -1
- package/dist/Listbox.js +1 -1
- package/dist/MultiSelectField.js +1 -1
- package/dist/{MultiSelectFieldSync-9253tott.js → MultiSelectFieldSync-CWsOdu-o.js} +44 -62
- package/dist/MultiSelectFieldSync-CWsOdu-o.js.map +1 -0
- package/dist/MultiSelectFieldSync.css +107 -69
- package/dist/MultiSelectMenu.js +1 -1
- package/dist/{MultiSelectMenuSync-BUJbWN2I.js → MultiSelectMenuSync-AVcf8ZUZ.js} +16 -29
- package/dist/MultiSelectMenuSync-AVcf8ZUZ.js.map +1 -0
- package/dist/{NumberField-DhxywJVp.js → NumberField-DjOvcCa1.js} +5 -5
- package/dist/{NumberField-DhxywJVp.js.map → NumberField-DjOvcCa1.js.map} +1 -1
- package/dist/NumberField.js +1 -1
- package/dist/{Page-D_KL2tdK.js → Page-_dh-JesM.js} +128 -80
- package/dist/Page-_dh-JesM.js.map +1 -0
- package/dist/Page.css +85 -80
- package/dist/Page.js +1 -1
- package/dist/{Pagination-DYpUtMha.js → Pagination-CsSpaTCs.js} +2 -2
- package/dist/{Pagination-DYpUtMha.js.map → Pagination-CsSpaTCs.js.map} +1 -1
- package/dist/Pagination.js +1 -1
- package/dist/{Popover-B2ix8Ji4.js → Popover-CEKl0WY3.js} +3 -3
- package/dist/{Popover-B2ix8Ji4.js.map → Popover-CEKl0WY3.js.map} +1 -1
- package/dist/Popover.js +1 -1
- package/dist/{ProgressBar-CjoOuJCi.js → ProgressBar-ubCKKewC.js} +3 -3
- package/dist/{ProgressBar-CjoOuJCi.js.map → ProgressBar-ubCKKewC.js.map} +1 -1
- package/dist/ProgressBar.js +1 -1
- package/dist/{Radio-Bz36_d0V.js → Radio-DkB6zFsS.js} +2 -2
- package/dist/{Radio-Bz36_d0V.js.map → Radio-DkB6zFsS.js.map} +1 -1
- package/dist/{Radio-DOD1d9Vw.js → Radio-q1Vp_ZQG.js} +4 -4
- package/dist/{Radio-DOD1d9Vw.js.map → Radio-q1Vp_ZQG.js.map} +1 -1
- package/dist/Radio.js +1 -1
- package/dist/{RichTextEditor-BORVXVDw.js → RichTextEditor-BHt6sWMA.js} +8 -8
- package/dist/{RichTextEditor-BORVXVDw.js.map → RichTextEditor-BHt6sWMA.js.map} +1 -1
- package/dist/RichTextEditor.js +1 -1
- package/dist/{SavedFiltersButton-vq_Kt4Qc.js → SavedFiltersButton-Cl58iHZe.js} +9 -9
- package/dist/{SavedFiltersButton-vq_Kt4Qc.js.map → SavedFiltersButton-Cl58iHZe.js.map} +1 -1
- package/dist/SavedFiltersButton.js +1 -1
- package/dist/{SearchField-ChoNtw8w.js → SearchField-Bk-Ltu4v.js} +2 -2
- package/dist/{SearchField-ChoNtw8w.js.map → SearchField-Bk-Ltu4v.js.map} +1 -1
- package/dist/{SearchField-DX8hZyo2.js → SearchField-INVftpNM.js} +2 -2
- package/dist/{SearchField-DX8hZyo2.js.map → SearchField-INVftpNM.js.map} +1 -1
- package/dist/SearchField.js +1 -1
- package/dist/{SelectCard-CJwetC1k.js → SelectCard-DeAUW1bL.js} +3 -3
- package/dist/{SelectCard-CJwetC1k.js.map → SelectCard-DeAUW1bL.js.map} +1 -1
- package/dist/SelectCard.js +1 -1
- package/dist/SelectField.js +1 -1
- package/dist/{SelectFieldLabel-BTKqybZm.js → SelectFieldLabel-DaXwIFZj.js} +2 -2
- package/dist/{SelectFieldLabel-BTKqybZm.js.map → SelectFieldLabel-DaXwIFZj.js.map} +1 -1
- package/dist/{SelectFieldSync-CoUi-BYw.js → SelectFieldSync-DpZL4wDo.js} +47 -68
- package/dist/SelectFieldSync-DpZL4wDo.js.map +1 -0
- package/dist/SelectMenu.js +1 -1
- package/dist/{SelectMenuSync-CvXx-6uU.js → SelectMenuSync-Klna2oqs.js} +16 -35
- package/dist/SelectMenuSync-Klna2oqs.js.map +1 -0
- package/dist/{SelectOptions-CGRUCyf4.js → SelectOptions-DGYYFU8i.js} +2 -2
- package/dist/{SelectOptions-CGRUCyf4.js.map → SelectOptions-DGYYFU8i.js.map} +1 -1
- package/dist/{SelectTrigger-CRbl804u.js → SelectTrigger-DKY7rpZn.js} +2 -2
- package/dist/{SelectTrigger-CRbl804u.js.map → SelectTrigger-DKY7rpZn.js.map} +1 -1
- package/dist/SelectTrigger.js +1 -1
- package/dist/{SelectTriggerBase-BRUW_Zgc.js → SelectTriggerBase-DUYq_L-6.js} +5 -5
- package/dist/{SelectTriggerBase-BRUW_Zgc.js.map → SelectTriggerBase-DUYq_L-6.js.map} +1 -1
- package/dist/SelectTriggerBase.css +94 -56
- package/dist/SelectTriggerBase.module-C-NmZbg4.js +41 -0
- package/dist/SelectTriggerBase.module-C-NmZbg4.js.map +1 -0
- package/dist/{Switch-rPPL4yEa.js → Switch-C9yQgF4w.js} +2 -2
- package/dist/{Switch-rPPL4yEa.js.map → Switch-C9yQgF4w.js.map} +1 -1
- package/dist/Switch.js +1 -1
- package/dist/Table.js +1 -1
- package/dist/{Text-BRbkPr5s.js → Text-D4SWT4u-.js} +2 -2
- package/dist/{Text-BRbkPr5s.js.map → Text-D4SWT4u-.js.map} +1 -1
- package/dist/Text.js +1 -1
- package/dist/{TextField-B9hivHsD.js → TextField-CKXSxube.js} +5 -5
- package/dist/{TextField-B9hivHsD.js.map → TextField-CKXSxube.js.map} +1 -1
- package/dist/{TextField-DGRVg_Cw.js → TextField-DmdT2k0w.js} +2 -2
- package/dist/{TextField-DGRVg_Cw.js.map → TextField-DmdT2k0w.js.map} +1 -1
- package/dist/TextField.css +38 -23
- package/dist/TextField.js +1 -1
- package/dist/TextField.module-B3y6caP9.js +25 -0
- package/dist/TextField.module-B3y6caP9.js.map +1 -0
- package/dist/{Textarea-DNqfV8rJ.js → Textarea-Dv__veBJ.js} +11 -11
- package/dist/{Textarea-DNqfV8rJ.js.map → Textarea-Dv__veBJ.js.map} +1 -1
- package/dist/Textarea.css +26 -11
- package/dist/Textarea.js +1 -1
- package/dist/{ThemeProvider-DW-Mflv6.js → ThemeProvider-DS2aL89d.js} +2 -2
- package/dist/{ThemeProvider-DW-Mflv6.js.map → ThemeProvider-DS2aL89d.js.map} +1 -1
- package/dist/ThemeProvider.css +6 -4
- package/dist/ThemeProvider.js +1 -1
- package/dist/ThemeProvider.module-BkKwAw2f.js +8 -0
- package/dist/ThemeProvider.module-BkKwAw2f.js.map +1 -0
- package/dist/{TimeField-DldMBNAj.js → TimeField-De9qBimk.js} +48 -10
- package/dist/TimeField-De9qBimk.js.map +1 -0
- package/dist/TimeField.js +1 -1
- package/dist/{TimezoneMessage-CgVNxYpM.js → TimezoneMessage-DEJX87S3.js} +2 -2
- package/dist/{TimezoneMessage-CgVNxYpM.js.map → TimezoneMessage-DEJX87S3.js.map} +1 -1
- package/dist/Toast.js +2 -2
- package/dist/{Toaster-Bcy9XN3c.js → Toaster-BlwTxTLf.js} +2 -2
- package/dist/{Toaster-Bcy9XN3c.js.map → Toaster-BlwTxTLf.js.map} +1 -1
- package/dist/{Toaster-C66ra4BK.js → Toaster-sO16N9b5.js} +23 -9
- package/dist/Toaster-sO16N9b5.js.map +1 -0
- package/dist/{Toolbar-DgPah7M3.js → Toolbar-BhrHuIN7.js} +6 -6
- package/dist/{Toolbar-DgPah7M3.js.map → Toolbar-BhrHuIN7.js.map} +1 -1
- package/dist/{Toolbar-Br-5yBxq.js → Toolbar-Buq2zze0.js} +4 -4
- package/dist/{Toolbar-Br-5yBxq.js.map → Toolbar-Buq2zze0.js.map} +1 -1
- package/dist/Toolbar.js +2 -2
- package/dist/{ToolbarButtonToggle-BDfoHeie.js → ToolbarButtonToggle-CNIaqVWl.js} +2 -2
- package/dist/{ToolbarButtonToggle-BDfoHeie.js.map → ToolbarButtonToggle-CNIaqVWl.js.map} +1 -1
- package/dist/{Tooltip-C_VcYS9P.js → Tooltip-CsTkZqMg.js} +3 -3
- package/dist/{Tooltip-C_VcYS9P.js.map → Tooltip-CsTkZqMg.js.map} +1 -1
- package/dist/Tooltip.js +1 -1
- package/dist/TreeSelectField.js +1 -1
- package/dist/{TreeSelectFieldSync-1psUeqtG.js → TreeSelectFieldSync-B7w31kbz.js} +22 -22
- package/dist/{TreeSelectFieldSync-1psUeqtG.js.map → TreeSelectFieldSync-B7w31kbz.js.map} +1 -1
- package/dist/TreeSelectFieldSync.css +57 -34
- package/dist/TreeSelectMenu.js +1 -1
- package/dist/{TreeSelectMenuSync-DIPSYUnE.js → TreeSelectMenuSync-EjxlvDZp.js} +4 -4
- package/dist/{TreeSelectMenuSync-DIPSYUnE.js.map → TreeSelectMenuSync-EjxlvDZp.js.map} +1 -1
- package/dist/{TypeaheadTextField-Di9ulOBl.js → TypeaheadTextField-DTOkaJda.js} +3 -3
- package/dist/{TypeaheadTextField-Di9ulOBl.js.map → TypeaheadTextField-DTOkaJda.js.map} +1 -1
- package/dist/TypeaheadTextField.js +1 -1
- package/dist/{YearlessDateInputWithPicker-CQ2-6Uj4.js → YearlessDateInputWithPicker-DJUQypnF.js} +3 -3
- package/dist/{YearlessDateInputWithPicker-CQ2-6Uj4.js.map → YearlessDateInputWithPicker-DJUQypnF.js.map} +1 -1
- package/dist/beta.js +19 -18
- package/dist/beta.js.map +1 -1
- package/dist/{bulkActionTypes-B71ZHjVu.js → bulkActionTypes-bznuvizE.js} +2 -2
- package/dist/{bulkActionTypes-B71ZHjVu.js.map → bulkActionTypes-bznuvizE.js.map} +1 -1
- package/dist/{filter-state-Lw9qL0zP.js → filter-state-DxwL15y1.js} +23 -23
- package/dist/{filter-state-Lw9qL0zP.js.map → filter-state-DxwL15y1.js.map} +1 -1
- package/dist/{index-B3WhDZeI.js → index-Bn56UnMm.js} +2 -2
- package/dist/{index-B3WhDZeI.js.map → index-Bn56UnMm.js.map} +1 -1
- package/dist/index.js +157 -115
- package/dist/index.js.map +1 -1
- package/dist/index2.css +78 -73
- package/dist/{portalScopeClassNames-DA28LrXe.js → portalScopeClassNames-CMdDYHE0.js} +2 -2
- package/dist/{portalScopeClassNames-DA28LrXe.js.map → portalScopeClassNames-CMdDYHE0.js.map} +1 -1
- package/dist/src/beta/components/Details/Details.d.ts +25 -0
- package/dist/src/beta/components/Details/DetailsSummary.d.ts +121 -0
- package/dist/src/beta/components/Details/index.d.ts +4 -0
- package/dist/src/beta/components/Details/internal/DetailsArrow.d.ts +11 -0
- package/dist/src/beta/components/Details/internal/DetailsSummaryCells.d.ts +5 -0
- package/dist/src/beta/components/Page/Page.d.ts +1 -0
- package/dist/src/beta/components/Page/PageSidebar.d.ts +12 -0
- package/dist/src/beta/components/Table/DataTable/internal/DataTablePagination.d.ts +3 -3
- package/dist/src/beta/components/Table/DataTable/internal/context/tabbables/CellTabbablesQueue.d.ts +23 -0
- package/dist/src/beta/components/Table/DataTable/types.d.ts +11 -0
- package/dist/src/beta/components/deprecatedReexports/MultiSelectField.d.ts +4 -4
- package/dist/src/beta/components/deprecatedReexports/MultiSelectMenu.d.ts +4 -4
- package/dist/src/beta/components/deprecatedReexports/SelectField.d.ts +4 -4
- package/dist/src/beta/components/deprecatedReexports/SelectMenu.d.ts +4 -4
- package/dist/src/beta/components/index.d.ts +1 -0
- package/dist/src/components/MultiSelectField/internal/MultiSelectFieldComboboxMode.d.ts +1 -1
- package/dist/src/components/MultiSelectField/internal/MultiSelectFieldSelectMode.d.ts +1 -1
- package/dist/src/components/MultiSelectField/internal/types.d.ts +0 -1
- package/dist/src/components/Page/Page.d.ts +1 -0
- package/dist/src/components/Page/PageSidebar.d.ts +12 -0
- package/dist/src/components/SelectField/internal/SelectFieldComboboxMode.d.ts +1 -1
- package/dist/src/components/SelectField/internal/SelectFieldSelectMode.d.ts +1 -1
- package/dist/src/internal/components/InlineMarkdown/InlineMarkdown.d.ts +8 -1
- package/dist/src/internal/components/InlineMarkdown/index.d.ts +1 -1
- package/dist/src/internal/components/Popover/Popover.d.ts +10 -5
- package/dist/src/internal/components/Popover/internal/verticalPlacement.d.ts +9 -0
- package/dist/src/internal/contexts/DisableConditionalUnmountWarningContext.d.ts +6 -0
- package/dist/src/internal/contexts/SuppressPanelSwapWarningContext.d.ts +13 -0
- package/dist/src/internal/functions/inlineMarkdown.d.ts +5 -2
- package/dist/src/internal/functions/stripInlineMarkdown.d.ts +4 -2
- package/dist/src/internal/hooks/index.d.ts +1 -0
- package/dist/src/internal/hooks/useSelectFieldLoading/useSelectFieldLoading.d.ts +9 -1
- package/dist/src/internal/hooks/useSelectOrchestration.d.ts +0 -1
- package/dist/src/internal/hooks/useWarnOnConditionalUnmount/index.d.ts +1 -0
- package/dist/src/internal/hooks/useWarnOnConditionalUnmount/useWarnOnConditionalUnmount.d.ts +1 -0
- package/dist/src/internal/testing/keepMutationObserversAlive.d.ts +9 -0
- package/dist/src/internal/types/selectFieldInternalTypes.d.ts +0 -1
- package/dist/src/internal/utils/inlineMarkdownRegex.d.ts +5 -0
- package/dist/stripInlineMarkdown-BV12XXzl.js +35 -0
- package/dist/stripInlineMarkdown-BV12XXzl.js.map +1 -0
- package/dist/{syncFilterUtils-DnhuqY1S.js → syncFilterUtils-BNbAB0jz.js} +109 -38
- package/dist/syncFilterUtils-BNbAB0jz.js.map +1 -0
- package/dist/token/core/component-variables.scss +3 -0
- package/dist/token/core/component.d.ts +2 -0
- package/dist/token/core/component.js +17 -0
- package/dist/token/core/component.scss +2 -0
- package/dist/token/core/semantic-variables.scss +2 -0
- package/dist/token/core/semantic.d.ts +1 -0
- package/dist/token/core/semantic.js +13 -0
- package/dist/token/core/semantic.scss +1 -0
- package/dist/token.js +33 -0
- package/dist/token.js.map +1 -1
- package/dist/{treeSync-BDwht_1r.js → treeSync-BELsX1gY.js} +3 -3
- package/dist/{treeSync-BDwht_1r.js.map → treeSync-BELsX1gY.js.map} +1 -1
- package/dist/{useDrilldown-CGdhHs8L.js → useDrilldown-B8pIhfWa.js} +3 -3
- package/dist/{useDrilldown-CGdhHs8L.js.map → useDrilldown-B8pIhfWa.js.map} +1 -1
- package/dist/{useInfiniteCombobox-Db0kaxCj.js → useInfiniteCombobox-ZZalag0-.js} +4 -4
- package/dist/{useInfiniteCombobox-Db0kaxCj.js.map → useInfiniteCombobox-ZZalag0-.js.map} +1 -1
- package/dist/{useInitialFocus-fBiTU9l8.js → useInitialFocus-KdirjHEb.js} +45 -13
- package/dist/useInitialFocus-KdirjHEb.js.map +1 -0
- package/dist/{useInvalidateOnOptionsChange-PweyDORd.js → useInvalidateOnOptionsChange-ChrPmbtS.js} +5 -5
- package/dist/{useInvalidateOnOptionsChange-PweyDORd.js.map → useInvalidateOnOptionsChange-ChrPmbtS.js.map} +1 -1
- package/dist/{usePopoverTransitionStates-CDXCdyKa.js → usePopoverTransitionStates-B1opfxxn.js} +1 -2
- package/dist/{usePopoverTransitionStates-CDXCdyKa.js.map → usePopoverTransitionStates-B1opfxxn.js.map} +1 -1
- package/dist/{utils-CM48ODEJ.js → utils-DwLrXpmt.js} +2 -2
- package/dist/{utils-CM48ODEJ.js.map → utils-DwLrXpmt.js.map} +1 -1
- package/package.json +3 -3
- package/dist/AiMark-CYXbKuCA.js.map +0 -1
- package/dist/Chip-AIF0WiNS.js.map +0 -1
- package/dist/DataTableEditColumnsDrawer-DRgJgso9.js.map +0 -1
- package/dist/Dialog-KDAJphrA.js.map +0 -1
- package/dist/Drawer-C7E2NNnH.js.map +0 -1
- package/dist/FieldLabel-DYcUS3A4.js.map +0 -1
- package/dist/MultiSelectFieldSync-9253tott.js.map +0 -1
- package/dist/MultiSelectMenuSync-BUJbWN2I.js.map +0 -1
- package/dist/Page-D_KL2tdK.js.map +0 -1
- package/dist/SelectFieldSync-CoUi-BYw.js.map +0 -1
- package/dist/SelectMenuSync-CvXx-6uU.js.map +0 -1
- package/dist/SelectTriggerBase.module-Dt4-6YvC.js +0 -40
- package/dist/SelectTriggerBase.module-Dt4-6YvC.js.map +0 -1
- package/dist/TextField.module-DklyLNKz.js +0 -25
- package/dist/TextField.module-DklyLNKz.js.map +0 -1
- package/dist/ThemeProvider.module-B9qgsQ8S.js +0 -8
- package/dist/ThemeProvider.module-B9qgsQ8S.js.map +0 -1
- package/dist/TimeField-DldMBNAj.js.map +0 -1
- package/dist/Toaster-C66ra4BK.js.map +0 -1
- package/dist/stripInlineMarkdown-B6lAJb4-.js +0 -25
- package/dist/stripInlineMarkdown-B6lAJb4-.js.map +0 -1
- package/dist/syncFilterUtils-DnhuqY1S.js.map +0 -1
- package/dist/useInitialFocus-fBiTU9l8.js.map +0 -1
package/dist/Textarea.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
.anvil2 {.
|
|
1
|
+
.anvil2 {._textarea_10cvz_1 {
|
|
2
2
|
font-family: var(--a2-font-family-base, "Nunito Sans", sans-serif);
|
|
3
3
|
font-size: 100%;
|
|
4
4
|
color: inherit;
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
flex-direction: column;
|
|
13
13
|
font-size: var(--a2-typography-paragraph-size-default, var(--a2-font-size-400, 1rem));
|
|
14
14
|
gap: var(--a2-size-2, 0.5rem);
|
|
15
|
-
}textarea.
|
|
15
|
+
}textarea._input_10cvz_17 {
|
|
16
16
|
--a2-internal-textarea-background-color: var(
|
|
17
17
|
--a2-mod-textarea-background-color
|
|
18
18
|
);
|
|
@@ -45,28 +45,43 @@
|
|
|
45
45
|
padding-inline: var(--a2-size-3, 0.75rem);
|
|
46
46
|
width: 100%;
|
|
47
47
|
transition: background-color var(--a2-duration-default, 200ms) var(--a2-transition-ease-out, cubic-bezier(0, 0, 0.4, 1)), outline-color var(--a2-duration-default, 200ms) var(--a2-transition-ease-out, cubic-bezier(0, 0, 0.4, 1));
|
|
48
|
-
}textarea.
|
|
48
|
+
}textarea._input_10cvz_17:-webkit-autofill, textarea._input_10cvz_17:-webkit-autofill:hover, textarea._input_10cvz_17:-webkit-autofill:focus, textarea._input_10cvz_17:-webkit-autofill:active {
|
|
49
|
+
-webkit-text-fill-color: var(--a2-internal-textarea-foreground-color);
|
|
50
|
+
border-radius: var(--a2-border-radius-medium, var(--a2-radius-2, 0.375rem));
|
|
51
|
+
box-shadow: inset 0 0 0 1000px var(--a2-internal-textarea-background-color);
|
|
52
|
+
caret-color: var(--a2-internal-textarea-foreground-color);
|
|
53
|
+
}textarea._input_10cvz_17:autofill, textarea._input_10cvz_17:autofill:hover, textarea._input_10cvz_17:autofill:focus, textarea._input_10cvz_17:autofill:active {
|
|
54
|
+
-webkit-text-fill-color: var(--a2-internal-textarea-foreground-color);
|
|
55
|
+
border-radius: var(--a2-border-radius-medium, var(--a2-radius-2, 0.375rem));
|
|
56
|
+
box-shadow: inset 0 0 0 1000px var(--a2-internal-textarea-background-color);
|
|
57
|
+
caret-color: var(--a2-internal-textarea-foreground-color);
|
|
58
|
+
}textarea._input_10cvz_17:-webkit-autofill, textarea._input_10cvz_17:-webkit-autofill:hover, textarea._input_10cvz_17:-webkit-autofill:focus, textarea._input_10cvz_17:-webkit-autofill:active {
|
|
59
|
+
-webkit-text-fill-color: var(--a2-internal-textarea-foreground-color);
|
|
60
|
+
border-radius: var(--a2-border-radius-medium, var(--a2-radius-2, 0.375rem));
|
|
61
|
+
box-shadow: inset 0 0 0 1000px var(--a2-internal-textarea-background-color);
|
|
62
|
+
caret-color: var(--a2-internal-textarea-foreground-color);
|
|
63
|
+
}textarea._input_10cvz_17::-moz-placeholder {
|
|
49
64
|
color: var(--a2-text-field-input-placeholder-foreground-color, var(--a2-foreground-color-subdued, light-dark(var(--a2-color-neutral-500, #707070), var(--a2-color-neutral-200, #c4c4c4))));
|
|
50
|
-
}textarea.
|
|
65
|
+
}textarea._input_10cvz_17::placeholder {
|
|
51
66
|
color: var(--a2-text-field-input-placeholder-foreground-color, var(--a2-foreground-color-subdued, light-dark(var(--a2-color-neutral-500, #707070), var(--a2-color-neutral-200, #c4c4c4))));
|
|
52
|
-
}textarea.
|
|
67
|
+
}textarea._input_10cvz_17:focus-visible {
|
|
53
68
|
outline: var(--a2-size-half, 0.125rem) solid var(--a2-internal-textarea-focus-ring-color);
|
|
54
69
|
outline-offset: var(--a2-size-half, 0.125rem);
|
|
55
|
-
}._has-
|
|
70
|
+
}._has-cols_10cvz_71 ._input_10cvz_17 {
|
|
56
71
|
align-self: flex-start;
|
|
57
72
|
min-width: unset;
|
|
58
73
|
width: unset;
|
|
59
|
-
}.
|
|
74
|
+
}._error_10cvz_77 ._input_10cvz_17 {
|
|
60
75
|
--a2-internal-textarea-border-color: var(--a2-text-field-input-wrapper-border-color-danger, var(--a2-border-color-danger, light-dark(var(--a2-color-red-600, #d62100), var(--a2-color-red-200, #ffac9e))));
|
|
61
76
|
--a2-internal-textarea-focus-ring-color: var(--a2-text-field-focus-ring-color-danger, var(--a2-focus-ring-color-danger, var(--a2-status-color-danger, light-dark(var(--a2-color-red-600, #d62100), var(--a2-color-red-400, #ff5b3d)))));
|
|
62
|
-
}.
|
|
77
|
+
}._disabled_10cvz_82 ._input_10cvz_17 {
|
|
63
78
|
--a2-internal-textarea-background-color: var(--a2-text-field-input-wrapper-background-color-disabled, var(--a2-background-color-strong, light-dark(var(--a2-color-neutral-20, #f9f9f9), var(--a2-color-neutral-800, #292929))));
|
|
64
79
|
opacity: var(--a2-opacity-disabled-strong, 0.4);
|
|
65
|
-
}.
|
|
80
|
+
}._disabled_10cvz_82 ._input_10cvz_17:hover {
|
|
66
81
|
cursor: not-allowed;
|
|
67
|
-
}.
|
|
82
|
+
}._readonly_10cvz_90 ._input_10cvz_17 {
|
|
68
83
|
--a2-mod-textarea-background-color: var(--a2-text-field-input-wrapper-background-color-disabled, var(--a2-background-color-strong, light-dark(var(--a2-color-neutral-20, #f9f9f9), var(--a2-color-neutral-800, #292929))));
|
|
69
|
-
}._disable-
|
|
84
|
+
}._disable-resize_10cvz_94 ._input_10cvz_17 {
|
|
70
85
|
resize: none;
|
|
71
86
|
}
|
|
72
87
|
}
|
package/dist/Textarea.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { T as Textarea, T as default } from './Textarea-
|
|
1
|
+
export { T as Textarea, T as default } from './Textarea-Dv__veBJ.js';
|
|
2
2
|
//# sourceMappingURL=Textarea.js.map
|
|
@@ -2,7 +2,7 @@ import { jsx } from 'react/jsx-runtime';
|
|
|
2
2
|
import { useContext, useMemo } from 'react';
|
|
3
3
|
import { c as cx } from './index-De1g9FRV.js';
|
|
4
4
|
import { T as ThemeProviderContext } from './ThemeProviderContext-l52GohYT.js';
|
|
5
|
-
import { t as themeStyles } from './ThemeProvider.module-
|
|
5
|
+
import { t as themeStyles } from './ThemeProvider.module-BkKwAw2f.js';
|
|
6
6
|
import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DjqeAJZ9.js';
|
|
7
7
|
|
|
8
8
|
function kebabize(str) {
|
|
@@ -75,4 +75,4 @@ const ThemeProvider = (props) => {
|
|
|
75
75
|
ThemeProvider.displayName = "ThemeProvider";
|
|
76
76
|
|
|
77
77
|
export { ThemeProvider as T };
|
|
78
|
-
//# sourceMappingURL=ThemeProvider-
|
|
78
|
+
//# sourceMappingURL=ThemeProvider-DS2aL89d.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeProvider-
|
|
1
|
+
{"version":3,"file":"ThemeProvider-DS2aL89d.js","sources":["../src/internal/functions/kebabize.ts","../src/providers/ThemeProvider/themeToCssVars.ts","../src/providers/ThemeProvider/ThemeProvider.tsx"],"sourcesContent":["/**\n * Inserts hyphens before uppercase letters and digits (except consecutive\n * digits and the first character), then lowercases. Adjacent capitals each\n * get a hyphen (`HTTP` → `h-t-t-p`).\n */\nexport function kebabize(str: string) {\n return str\n .split(\"\")\n .map((letter, idx) => {\n const prevChar = str[idx - 1];\n\n if (!isNaN(parseFloat(letter))) {\n if (!isNaN(parseFloat(prevChar))) {\n return letter;\n }\n return `${idx !== 0 ? \"-\" : \"\"}${letter.toLowerCase()}`;\n }\n\n return letter.toUpperCase() === letter\n ? `${idx !== 0 ? \"-\" : \"\"}${letter.toLowerCase()}`\n : letter;\n })\n .join(\"\");\n}\n","import type { TokenObj } from \"@servicetitan/hammer-token\";\n\nimport { kebabize } from \"../../internal/functions\";\n\ntype ThemeTokenBags = {\n primitive?: Record<string, TokenObj>;\n semantic?: Record<string, TokenObj>;\n component?: Record<string, TokenObj>;\n};\n\ntype TokenObjType = {\n [key: string]: TokenObj;\n};\n\n/**\n * Converts custom theme tokens into CSS custom properties, including\n * `light-dark()` pairs when a dark appearance is available.\n * Returns `undefined` when no theme is provided.\n */\nexport function themeToCssVars(\n theme: ThemeTokenBags | undefined,\n prefix = \"a2\",\n): { [key: string]: string } | undefined {\n if (!theme) return;\n const styleObj: { [key: string]: string } = {};\n const themeTokens = {\n ...theme.primitive,\n ...theme.semantic,\n ...theme.component,\n };\n Object.keys(themeTokens).forEach((token) => {\n // Coerce to string so numeric token values (e.g. font-weight) are not\n // treated as unitless CSS lengths by React's style serializer.\n const light = String((themeTokens as TokenObjType)[token].value);\n const dark = (themeTokens as TokenObjType)[token].extensions?.appearance\n ?.dark.value;\n const tokenName = [prefix, kebabize(token)].join(\"-\");\n if (dark == null) {\n styleObj[`--${tokenName}`] = light;\n return;\n }\n styleObj[`--${tokenName}`] = `light-dark(${light}, ${String(dark)})`;\n });\n\n return styleObj;\n}\n","import {\n type ComponentPropsWithoutRef,\n type FC,\n type ReactNode,\n useContext,\n useMemo,\n} from \"react\";\nimport cx from \"classnames\";\nimport type { LayoutUtilProps } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks\";\nimport { ThemeProviderContext } from \"./internal/ThemeProviderContext\";\nimport type { Token } from \"@servicetitan/hammer-token\";\n\nimport styles from \"./ThemeProvider.module.scss\";\nimport { themeToCssVars } from \"./themeToCssVars\";\n\nexport type CustomThemeType = {\n /** Overrides foundational token values. */\n primitive?: Partial<Token[\"primitive\"]>;\n /** Overrides semantic token values consumed across components. */\n semantic?: Partial<Token[\"semantic\"]>;\n /** Overrides tokens scoped to individual components. */\n component?: Partial<Token[\"component\"]>;\n};\n\nexport type ThemeProviderProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"prefix\"\n> &\n LayoutUtilProps & {\n /**\n * Partial Hammer token values emitted as CSS custom properties. Inherits\n * the nearest theme when omitted.\n */\n theme?: CustomThemeType;\n /**\n * Color mode for this subtree. Inherits the nearest mode; otherwise no\n * mode class is applied.\n */\n mode?: \"light\" | \"dark\";\n children?: ReactNode;\n /** Prefix for generated CSS custom properties. Defaults to `\"a2\"`. */\n prefix?: string;\n };\n\n/**\n * Scopes Hammer token overrides and color mode to a wrapper element. Nested\n * providers inherit an omitted theme or mode.\n */\nexport const ThemeProvider: FC<ThemeProviderProps> = (props) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(props);\n\n const {\n theme: themeProp,\n mode: modeProp,\n children,\n className: classNameProp,\n prefix = \"a2\",\n style,\n ...rest\n } = componentProps;\n\n const { mode: modeContext, theme: themeContext } =\n useContext(ThemeProviderContext);\n\n const mode = modeProp ?? modeContext;\n const theme = themeProp ?? themeContext;\n\n const classNameCombined = cx(styles[\"theme-provider\"], classNameProp, {\n [styles[\"mode-dark\"]]: mode === \"dark\",\n [styles[\"mode-light\"]]: mode === \"light\",\n });\n\n const createCustomThemeStyle = useMemo(\n () => themeToCssVars(theme, prefix),\n [prefix, theme],\n );\n\n const styleCombined = {\n ...style,\n ...layoutStyles,\n ...createCustomThemeStyle,\n };\n\n const value = useMemo(\n () => ({ theme, mode, themeStyle: createCustomThemeStyle }),\n [theme, mode, createCustomThemeStyle],\n );\n\n return (\n <ThemeProviderContext.Provider value={value}>\n <div className={classNameCombined} style={styleCombined} {...rest}>\n {children}\n </div>\n </ThemeProviderContext.Provider>\n );\n};\n\nThemeProvider.displayName = \"ThemeProvider\";\n"],"names":["styles"],"mappings":";;;;;;;AAKO,SAAS,SAAS,GAAA,EAAa;AACpC,EAAA,OAAO,IACJ,KAAA,CAAM,EAAE,EACR,GAAA,CAAI,CAAC,QAAQ,GAAA,KAAQ;AACpB,IAAA,MAAM,QAAA,GAAW,GAAA,CAAI,GAAA,GAAM,CAAC,CAAA;AAE5B,IAAA,IAAI,CAAC,KAAA,CAAM,UAAA,CAAW,MAAM,CAAC,CAAA,EAAG;AAC9B,MAAA,IAAI,CAAC,KAAA,CAAM,UAAA,CAAW,QAAQ,CAAC,CAAA,EAAG;AAChC,QAAA,OAAO,MAAA;AAAA,MACT;AACA,MAAA,OAAO,CAAA,EAAG,QAAQ,CAAA,GAAI,GAAA,GAAM,EAAE,CAAA,EAAG,MAAA,CAAO,aAAa,CAAA,CAAA;AAAA,IACvD;AAEA,IAAA,OAAO,MAAA,CAAO,WAAA,EAAY,KAAM,MAAA,GAC5B,CAAA,EAAG,GAAA,KAAQ,CAAA,GAAI,GAAA,GAAM,EAAE,CAAA,EAAG,MAAA,CAAO,WAAA,EAAa,CAAA,CAAA,GAC9C,MAAA;AAAA,EACN,CAAC,CAAA,CACA,IAAA,CAAK,EAAE,CAAA;AACZ;;ACJO,SAAS,cAAA,CACd,KAAA,EACA,MAAA,GAAS,IAAA,EAC8B;AACvC,EAAA,IAAI,CAAC,KAAA,EAAO;AACZ,EAAA,MAAM,WAAsC,EAAC;AAC7C,EAAA,MAAM,WAAA,GAAc;AAAA,IAClB,GAAG,KAAA,CAAM,SAAA;AAAA,IACT,GAAG,KAAA,CAAM,QAAA;AAAA,IACT,GAAG,KAAA,CAAM;AAAA,GACX;AACA,EAAA,MAAA,CAAO,IAAA,CAAK,WAAW,CAAA,CAAE,OAAA,CAAQ,CAAC,KAAA,KAAU;AAG1C,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAQ,WAAA,CAA6B,KAAK,EAAE,KAAK,CAAA;AAC/D,IAAA,MAAM,OAAQ,WAAA,CAA6B,KAAK,CAAA,CAAE,UAAA,EAAY,YAC1D,IAAA,CAAK,KAAA;AACT,IAAA,MAAM,SAAA,GAAY,CAAC,MAAA,EAAQ,QAAA,CAAS,KAAK,CAAC,CAAA,CAAE,KAAK,GAAG,CAAA;AACpD,IAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,MAAA,QAAA,CAAS,CAAA,EAAA,EAAK,SAAS,CAAA,CAAE,CAAA,GAAI,KAAA;AAC7B,MAAA;AAAA,IACF;AACA,IAAA,QAAA,CAAS,CAAA,EAAA,EAAK,SAAS,CAAA,CAAE,CAAA,GAAI,cAAc,KAAK,CAAA,EAAA,EAAK,MAAA,CAAO,IAAI,CAAC,CAAA,CAAA,CAAA;AAAA,EACnE,CAAC,CAAA;AAED,EAAA,OAAO,QAAA;AACT;;ACIO,MAAM,aAAA,GAAwC,CAAC,KAAA,KAAU;AAC9D,EAAA,MAAM,EAAE,YAAA,EAAc,cAAA,EAAe,GAAI,mBAAmB,KAAK,CAAA;AAEjE,EAAA,MAAM;AAAA,IACJ,KAAA,EAAO,SAAA;AAAA,IACP,IAAA,EAAM,QAAA;AAAA,IACN,QAAA;AAAA,IACA,SAAA,EAAW,aAAA;AAAA,IACX,MAAA,GAAS,IAAA;AAAA,IACT,KAAA;AAAA,IACA,GAAG;AAAA,GACL,GAAI,cAAA;AAEJ,EAAA,MAAM,EAAE,IAAA,EAAM,WAAA,EAAa,OAAO,YAAA,EAAa,GAC7C,WAAW,oBAAoB,CAAA;AAEjC,EAAA,MAAM,OAAO,QAAA,IAAY,WAAA;AACzB,EAAA,MAAM,QAAQ,SAAA,IAAa,YAAA;AAE3B,EAAA,MAAM,iBAAA,GAAoB,EAAA,CAAGA,WAAA,CAAO,gBAAgB,GAAG,aAAA,EAAe;AAAA,IACpE,CAACA,WAAA,CAAO,WAAW,CAAC,GAAG,IAAA,KAAS,MAAA;AAAA,IAChC,CAACA,WAAA,CAAO,YAAY,CAAC,GAAG,IAAA,KAAS;AAAA,GAClC,CAAA;AAED,EAAA,MAAM,sBAAA,GAAyB,OAAA;AAAA,IAC7B,MAAM,cAAA,CAAe,KAAA,EAAO,MAAM,CAAA;AAAA,IAClC,CAAC,QAAQ,KAAK;AAAA,GAChB;AAEA,EAAA,MAAM,aAAA,GAAgB;AAAA,IACpB,GAAG,KAAA;AAAA,IACH,GAAG,YAAA;AAAA,IACH,GAAG;AAAA,GACL;AAEA,EAAA,MAAM,KAAA,GAAQ,OAAA;AAAA,IACZ,OAAO,EAAE,KAAA,EAAO,IAAA,EAAM,YAAY,sBAAA,EAAuB,CAAA;AAAA,IACzD,CAAC,KAAA,EAAO,IAAA,EAAM,sBAAsB;AAAA,GACtC;AAEA,EAAA,uBACE,GAAA,CAAC,oBAAA,CAAqB,QAAA,EAArB,EAA8B,OAC7B,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,iBAAA,EAAmB,KAAA,EAAO,aAAA,EAAgB,GAAG,IAAA,EAC1D,UACH,CAAA,EACF,CAAA;AAEJ;AAEA,aAAA,CAAc,WAAA,GAAc,eAAA;;;;"}
|
package/dist/ThemeProvider.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
.anvil2._theme-
|
|
1
|
+
.anvil2._theme-core_sxp74_1 {
|
|
2
2
|
font-size: initial;
|
|
3
3
|
font-weight: initial;
|
|
4
4
|
line-height: initial;
|
|
@@ -156,6 +156,7 @@
|
|
|
156
156
|
--a2-illustration-color-character-ink: var(--a2-color-neutral-800, #292929);
|
|
157
157
|
--a2-shadow-color-default: color-mix(in srgb, var(--a2-color-neutral-900, #1a1a1a) 8%, transparent);
|
|
158
158
|
--a2-shadow-color-strong: color-mix(in srgb, var(--a2-color-neutral-950, #040404) 24%, transparent);
|
|
159
|
+
--a2-shadow-color-stronger: color-mix(in srgb, var(--a2-color-neutral-950, #040404) 50%, transparent);
|
|
159
160
|
--a2-border-radius-none: var(--a2-radius-0, 0rem);
|
|
160
161
|
--a2-border-radius-small: var(--a2-radius-1, 0.1875rem);
|
|
161
162
|
--a2-border-radius-medium: var(--a2-radius-2, 0.375rem);
|
|
@@ -451,7 +452,7 @@
|
|
|
451
452
|
--a2-transition-ease-in-out: cubic-bezier(.4, 0, .6, 1);
|
|
452
453
|
}
|
|
453
454
|
@supports (color: light-dark(#fff, #000)) {
|
|
454
|
-
.anvil2._theme-
|
|
455
|
+
.anvil2._theme-core_sxp74_1 {
|
|
455
456
|
--a2-status-color-info: light-dark(var(--a2-color-blue-600, #0265dc), var(--a2-color-blue-300, #70b1ff));
|
|
456
457
|
--a2-status-color-danger: light-dark(var(--a2-color-red-600, #d62100), var(--a2-color-red-400, #ff5b3d));
|
|
457
458
|
--a2-status-color-success: light-dark(var(--a2-color-green-600, #077e50), var(--a2-color-green-400, #0bd085));
|
|
@@ -605,13 +606,14 @@
|
|
|
605
606
|
--a2-illustration-color-character-ink: light-dark(var(--a2-color-neutral-800, #292929), var(--a2-color-neutral-0, #ffffff));
|
|
606
607
|
--a2-shadow-color-default: light-dark(color-mix(in srgb, var(--a2-color-neutral-900, #1a1a1a) 8%, transparent), color-mix(in srgb, var(--a2-color-neutral-0, #ffffff) 8%, transparent));
|
|
607
608
|
--a2-shadow-color-strong: light-dark(color-mix(in srgb, var(--a2-color-neutral-950, #040404) 24%, transparent), color-mix(in srgb, var(--a2-color-neutral-0, #ffffff) 24%, transparent));
|
|
609
|
+
--a2-shadow-color-stronger: light-dark(color-mix(in srgb, var(--a2-color-neutral-950, #040404) 50%, transparent), color-mix(in srgb, var(--a2-color-neutral-0, #ffffff) 50%, transparent));
|
|
608
610
|
}
|
|
609
611
|
}
|
|
610
612
|
|
|
611
|
-
._mode-
|
|
613
|
+
._mode-light_sxp74_613 {
|
|
612
614
|
color-scheme: light;
|
|
613
615
|
}
|
|
614
616
|
|
|
615
|
-
._mode-
|
|
617
|
+
._mode-dark_sxp74_617 {
|
|
616
618
|
color-scheme: dark;
|
|
617
619
|
}
|
package/dist/ThemeProvider.js
CHANGED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import './ThemeProvider.css';const themeStyles = {
|
|
2
|
+
"theme-core": "_theme-core_sxp74_1",
|
|
3
|
+
"mode-light": "_mode-light_sxp74_613",
|
|
4
|
+
"mode-dark": "_mode-dark_sxp74_617"
|
|
5
|
+
};
|
|
6
|
+
|
|
7
|
+
export { themeStyles as t };
|
|
8
|
+
//# sourceMappingURL=ThemeProvider.module-BkKwAw2f.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeProvider.module-BkKwAw2f.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
|
|
@@ -3,15 +3,15 @@ import * as React from 'react';
|
|
|
3
3
|
import { useState, useEffect, forwardRef, useRef, useMemo, useCallback, useImperativeHandle } from 'react';
|
|
4
4
|
import { i as maskitoTimeOptionsGenerator, a as maskitoWithPlaceholder, u as useMaskito } from './index.esm-CQXMoq5w.js';
|
|
5
5
|
import { I as Icon } from './Icon-B5zwN7GD.js';
|
|
6
|
-
import { T as TextField } from './TextField-
|
|
6
|
+
import { T as TextField } from './TextField-CKXSxube.js';
|
|
7
7
|
import { c as cx } from './index-De1g9FRV.js';
|
|
8
8
|
import { u as useMergeRefs } from './useMergeRefs-Dfmtq9cI.js';
|
|
9
|
-
import { L as Listbox } from './Listbox-
|
|
9
|
+
import { L as Listbox } from './Listbox-n1CmJ2gh.js';
|
|
10
10
|
import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DjqeAJZ9.js';
|
|
11
11
|
import { u as useOptionallyControlledState } from './useOptionallyControlledState-DbDuos5L.js';
|
|
12
12
|
import { c as childrenToString } from './childrenToString-Bz9MqbHb.js';
|
|
13
13
|
import { useTrackingId } from './useTrackingId.js';
|
|
14
|
-
import { P as Popover } from './AiMark-
|
|
14
|
+
import { P as Popover } from './AiMark-Ca7WmL-9.js';
|
|
15
15
|
|
|
16
16
|
import './TimeField.css';const usePopoverCloseDelayWorkaround = (popoverOpen, delay = 300) => {
|
|
17
17
|
const [shouldShowContent, setShouldShowContent] = useState(popoverOpen);
|
|
@@ -580,6 +580,8 @@ const TimeField = (props) => {
|
|
|
580
580
|
min,
|
|
581
581
|
max,
|
|
582
582
|
onChange,
|
|
583
|
+
onClick,
|
|
584
|
+
onKeyDownCapture,
|
|
583
585
|
format = 12,
|
|
584
586
|
step = 30,
|
|
585
587
|
required,
|
|
@@ -688,6 +690,7 @@ const TimeField = (props) => {
|
|
|
688
690
|
}
|
|
689
691
|
setIsDropdownOpen(false);
|
|
690
692
|
setSelectedOptionIndex(0);
|
|
693
|
+
setJustSelected(false);
|
|
691
694
|
const input = event.target;
|
|
692
695
|
const parsedInputTime = input.dataset.time || null;
|
|
693
696
|
const isInputValid = input.dataset.inputValid === "true";
|
|
@@ -720,12 +723,35 @@ const TimeField = (props) => {
|
|
|
720
723
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
721
724
|
[format, step, autoround, onChange]
|
|
722
725
|
);
|
|
723
|
-
const
|
|
724
|
-
if (
|
|
725
|
-
|
|
726
|
+
const openSuggestions = useCallback(() => {
|
|
727
|
+
if (disabled || disableSuggestions) {
|
|
728
|
+
return;
|
|
729
|
+
}
|
|
730
|
+
const input = inputRef.current;
|
|
731
|
+
if (input?.dataset.inputValid === "true") {
|
|
732
|
+
setInputValueForFiltering("");
|
|
733
|
+
const value = input.value.replace(/\s/g, " ");
|
|
734
|
+
setSelectedOptionIndex(allTimeOptions.indexOf(value));
|
|
735
|
+
} else {
|
|
726
736
|
setSelectedOptionIndex(0);
|
|
727
737
|
}
|
|
728
|
-
|
|
738
|
+
setJustSelected(false);
|
|
739
|
+
setIsDropdownOpen(true);
|
|
740
|
+
}, [disabled, disableSuggestions, allTimeOptions]);
|
|
741
|
+
const handleFocus = useCallback(() => {
|
|
742
|
+
if (!justSelected) {
|
|
743
|
+
openSuggestions();
|
|
744
|
+
}
|
|
745
|
+
}, [justSelected, openSuggestions]);
|
|
746
|
+
const handleClick = useCallback(
|
|
747
|
+
(event) => {
|
|
748
|
+
onClick?.(event);
|
|
749
|
+
if (!isDropdownOpen) {
|
|
750
|
+
openSuggestions();
|
|
751
|
+
}
|
|
752
|
+
},
|
|
753
|
+
[onClick, isDropdownOpen, openSuggestions]
|
|
754
|
+
);
|
|
729
755
|
useEffect(() => {
|
|
730
756
|
if (!disabled) {
|
|
731
757
|
return;
|
|
@@ -744,7 +770,7 @@ const TimeField = (props) => {
|
|
|
744
770
|
if (filteredOptions.length <= 1 && isDropdownOpen) {
|
|
745
771
|
setIsDropdownOpen(false);
|
|
746
772
|
}
|
|
747
|
-
if (!disabled && !disableSuggestions && filteredOptions.length > 1 && document.activeElement
|
|
773
|
+
if (!disabled && !disableSuggestions && filteredOptions.length > 1 && document.activeElement === inputRef.current && !isDropdownOpen && !justSelected && !tabJustPressedRef.current && !closeJustTriggeredRef.current) {
|
|
748
774
|
setIsDropdownOpen(true);
|
|
749
775
|
setSelectedOptionIndex(0);
|
|
750
776
|
}
|
|
@@ -843,6 +869,16 @@ const TimeField = (props) => {
|
|
|
843
869
|
},
|
|
844
870
|
[isDropdownOpen, selectedOptionIndex, filteredOptions, handleOptionSelect]
|
|
845
871
|
);
|
|
872
|
+
const handleKeyDownCapture = useCallback(
|
|
873
|
+
(event) => {
|
|
874
|
+
onKeyDownCapture?.(event);
|
|
875
|
+
if (isDropdownOpen && (event.key === "ArrowUp" || event.key === "ArrowDown" || event.key === "Enter")) {
|
|
876
|
+
event.stopPropagation();
|
|
877
|
+
handleKeyDown(event);
|
|
878
|
+
}
|
|
879
|
+
},
|
|
880
|
+
[onKeyDownCapture, isDropdownOpen, handleKeyDown]
|
|
881
|
+
);
|
|
846
882
|
const popoverDisabled = disableSuggestions;
|
|
847
883
|
const { aiMark, ...labelPropsWithoutAiMark } = labelProps || {};
|
|
848
884
|
const data = {
|
|
@@ -874,8 +910,10 @@ const TimeField = (props) => {
|
|
|
874
910
|
max,
|
|
875
911
|
onInputChange: handleInputChange,
|
|
876
912
|
onKeyDown: handleKeyDown,
|
|
913
|
+
onKeyDownCapture: handleKeyDownCapture,
|
|
877
914
|
onBlur: handleBlur,
|
|
878
915
|
onFocus: handleFocus,
|
|
916
|
+
onClick: handleClick,
|
|
879
917
|
label,
|
|
880
918
|
labelProps,
|
|
881
919
|
size,
|
|
@@ -909,8 +947,8 @@ const TimeField = (props) => {
|
|
|
909
947
|
closeJustTriggeredRef.current = false;
|
|
910
948
|
}, 50);
|
|
911
949
|
},
|
|
912
|
-
fitScreen: true,
|
|
913
950
|
maxHeight: 205,
|
|
951
|
+
sizeAfterPlacement: true,
|
|
914
952
|
children: [
|
|
915
953
|
/* @__PURE__ */ jsx(Popover.Trigger, { children: ({ ref: setReference }) => {
|
|
916
954
|
popoverRefSetter.current = setReference;
|
|
@@ -955,4 +993,4 @@ const TimeField = (props) => {
|
|
|
955
993
|
TimeField.displayName = "TimeField";
|
|
956
994
|
|
|
957
995
|
export { TimeField as T };
|
|
958
|
-
//# sourceMappingURL=TimeField-
|
|
996
|
+
//# sourceMappingURL=TimeField-De9qBimk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TimeField-De9qBimk.js","sources":["../src/internal/hooks/usePopoverCloseDelayWorkaround/usePopoverCloseDelayWorkaround.ts","../../hammer-icon/mdi/round/access_time.svg","../src/components/TimeField/internal/constants.ts","../src/components/TimeField/internal/utils/timeFormatting.ts","../src/components/TimeField/internal/utils/timeParsing.ts","../src/components/TimeField/internal/utils/timeOptions.ts","../src/components/TimeField/internal/utils/timeValidation.ts","../src/components/TimeField/internal/utils/timeRounding.ts","../src/components/TimeField/internal/maskito/timePlaceholderMask.ts","../src/components/TimeField/internal/MaskedTimeInput.tsx","../src/components/TimeField/TimeField.tsx"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\n/**\n * Keeps content visible after close so the mounted popover does not appear\n * empty during its closing delay. Defaults to 300 ms.\n */\nexport const usePopoverCloseDelayWorkaround = (\n popoverOpen: boolean,\n delay: number = 300,\n) => {\n const [shouldShowContent, setShouldShowContent] = useState(popoverOpen);\n\n useEffect(() => {\n if (!popoverOpen) {\n const timeout = setTimeout(() => {\n setShouldShowContent(false);\n }, delay);\n return () => clearTimeout(timeout);\n }\n setShouldShowContent(true);\n }, [popoverOpen, delay]);\n\n return shouldShowContent;\n};\n","import * as React from \"react\";\nconst SvgAccessTime = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm-.22-13h-.06c-.4 0-.72.32-.72.72v4.72c0 .35.18.68.49.86l4.15 2.49c.34.2.78.1.98-.24a.71.71 0 0 0-.25-.99l-3.87-2.3V7.72c0-.4-.32-.72-.72-.72z\" }));\nexport default SvgAccessTime;\n","import type { TimeFormat } from \"./types\";\nimport IconAccessTime from \"@servicetitan/hammer-icon/mdi/round/access_time.svg\";\n\nexport const TIME_CONSTANTS = {\n MINUTES_IN_DAY: 1440,\n MAX_HOUR_24: 23,\n MAX_MINUTE: 59,\n /** Delay before treating Maskito input as finished so an external `selectedTime` can apply. */\n INPUT_DEBOUNCE_TIMEOUT: 100,\n} as const;\n\nexport const FORMAT_CONSTANTS = {\n TWELVE_HOUR: 12 as const,\n TWENTY_FOUR_HOUR: 24 as const,\n} as const;\n\n/** Mask placeholders keyed by {@link TimeFormat}. */\nexport const TIME_FORMAT_PLACEHOLDERS: Record<TimeFormat, string> = {\n 12: \"––:–– ––\",\n 24: \"––:––\",\n};\n\nexport const CLOCK_ICON = IconAccessTime;\n","import type { TimeFormat } from \"../types\";\n\n/** Formats 0–23 hours into 12-hour (`02:30 PM`) or 24-hour (`14:30`) text. `24:00` becomes midnight. */\nexport function formatTimeString(\n hours: number,\n minutes: number,\n format: TimeFormat,\n): string {\n if (hours === 24) {\n hours = 0;\n }\n\n if (format === 12) {\n let displayHours = hours;\n let period = \"AM\";\n\n if (hours === 0) {\n displayHours = 12;\n } else if (hours > 12) {\n displayHours = hours - 12;\n period = \"PM\";\n } else if (hours === 12) {\n period = \"PM\";\n }\n\n return `${displayHours.toString().padStart(2, \"0\")}:${minutes.toString().padStart(2, \"0\")} ${period}`;\n } else {\n return `${hours.toString().padStart(2, \"0\")}:${minutes.toString().padStart(2, \"0\")}`;\n }\n}\n","import type { TimeFormat } from \"../types\";\nimport { formatTimeString } from \"./timeFormatting\";\nimport { TIME_CONSTANTS } from \"../constants\";\n\nexport const MAX_HOUR = TIME_CONSTANTS.MAX_HOUR_24;\n\nexport const MAX_MINUTE = TIME_CONSTANTS.MAX_MINUTE;\n\nfunction getConstraintMinutes(min?: string, max?: string) {\n const minMinutes = min ? timeToMinutes(convertTimeFormat(min, 24)) : 0;\n const maxMinutes = max\n ? timeToMinutes(convertTimeFormat(max, 24))\n : TIME_CONSTANTS.MINUTES_IN_DAY;\n return { minMinutes, maxMinutes };\n}\n\nfunction isWithinConstraints(\n timeMinutes: number,\n minMinutes: number,\n maxMinutes: number,\n): boolean {\n return timeMinutes >= minMinutes && timeMinutes <= maxMinutes;\n}\n\n/** Minutes since midnight. Failed parses and midnight (`00:00` / `12:00 AM`) both return `0`. */\nexport const timeToMinutes = (timeStr: string): number => {\n const match = timeStr.match(/^(\\d{1,2}):(\\d{2})(?:\\s*(AM|PM))?$/i);\n if (!match) return 0;\n\n let hours = parseInt(match[1], 10);\n const minutes = parseInt(match[2], 10);\n const period = match[3]?.toUpperCase();\n\n if (minutes > MAX_MINUTE) return 0;\n\n if (period === \"PM\" && hours !== 12) {\n hours += 12;\n } else if (period === \"AM\" && hours === 12) {\n hours = 0;\n }\n\n if (hours > MAX_HOUR) return 0;\n\n return hours * 60 + minutes;\n};\n\n/** Rewrites a time string into 12-hour or 24-hour display. Unparsed input is returned unchanged. */\nexport function convertTimeFormat(\n time: string,\n targetFormat: TimeFormat,\n): string {\n if (!time) return time;\n\n const minutes = timeToMinutes(time);\n\n // `0` is either midnight or a failed parse; only midnight formats.\n if (minutes === 0 && time !== \"00:00\" && time !== \"12:00 AM\") {\n return time;\n }\n\n const hours = Math.floor(minutes / 60);\n const mins = minutes % 60;\n\n return formatTimeString(hours, mins, targetFormat);\n}\n\nfunction normalizePartialInput(value: string): string {\n const cleanValue = value.replace(/[–_:]/g, \"\").replace(/\\s+/g, \"\");\n\n if (/^\\d{1,2}$/.test(cleanValue)) {\n const result = `${cleanValue}:00`;\n return result;\n } else if (/^\\d{1,2}:\\d{1}$/.test(cleanValue)) {\n const result = `${cleanValue}0`;\n return result;\n } else if (/^\\d{4}$/.test(cleanValue)) {\n const result = `${cleanValue.slice(0, 2)}:${cleanValue.slice(2)}`;\n return result;\n } else if (/^\\d{4}(AM|PM)$/i.test(cleanValue)) {\n const digits = cleanValue.slice(0, 4);\n const ampm = cleanValue.slice(4);\n const result = `${digits.slice(0, 2)}:${digits.slice(2)} ${ampm}`;\n return result;\n }\n\n return value;\n}\n\nfunction parse12HourFormat(\n normalizedValue: string,\n min?: string,\n max?: string,\n): { hours: number; minutes: number } | null {\n const match = normalizedValue.match(/^(\\d{1,2}):(\\d{1,2})(?:\\s*(AM|PM))?$/i);\n if (!match) return null;\n\n let hours = parseInt(match[1], 10);\n let minutes = parseInt(match[2], 10);\n const ampm = match[3]?.toUpperCase();\n\n // \"10:5\" is 10:50, not 10:05.\n if (minutes < 10 && normalizedValue.match(/^(\\d{1,2}):(\\d{1})$/)) {\n minutes *= 10;\n }\n\n if (ampm === \"PM\") {\n if (hours !== 12) {\n hours += 12;\n }\n } else if (ampm === \"AM\") {\n if (hours === 12) {\n hours = 0;\n }\n } else {\n if (hours === 12) {\n hours = 12;\n } else {\n if (min || max) {\n const amHours = hours;\n const pmHours = hours + 12;\n\n const { minMinutes, maxMinutes } = getConstraintMinutes(min, max);\n\n const amMinutes = amHours * 60 + minutes;\n const pmMinutes = pmHours * 60 + minutes;\n\n const amValid = isWithinConstraints(amMinutes, minMinutes, maxMinutes);\n const pmValid = isWithinConstraints(pmMinutes, minMinutes, maxMinutes);\n\n if (amValid && pmValid) {\n // Prefer AM when both fit.\n } else if (pmValid) {\n hours = pmHours;\n } else if (amValid) {\n } else {\n // Leave AM; constraint validation rejects later.\n }\n }\n }\n }\n\n return { hours, minutes };\n}\n\nfunction parse24HourFormat(\n normalizedValue: string,\n): { hours: number; minutes: number } | null {\n const match = normalizedValue.match(/^(\\d{1,2}):(\\d{1,2})$/);\n\n if (!match) {\n return null;\n }\n\n const hours = parseInt(match[1], 10);\n let minutes = parseInt(match[2], 10);\n\n // \"10:5\" is 10:50, not 10:05.\n if (minutes < 10 && normalizedValue.match(/^(\\d{1,2}):(\\d{1})$/)) {\n minutes *= 10;\n }\n\n const result = { hours, minutes };\n return result;\n}\n\nfunction validate12HourConstraints(\n timeString: string,\n value: string,\n min?: string,\n max?: string,\n): boolean {\n if (!min && !max) return true;\n\n const originalHasAMPM =\n value.toUpperCase().includes(\"AM\") || value.toUpperCase().includes(\"PM\");\n\n if (!originalHasAMPM) {\n const timePart = timeString.replace(/\\s*(AM|PM)$/i, \"\");\n const amTime = `${timePart} AM`;\n const pmTime = `${timePart} PM`;\n\n const amMinutes = timeToMinutes(convertTimeFormat(amTime, 24));\n const pmMinutes = timeToMinutes(convertTimeFormat(pmTime, 24));\n\n const { minMinutes, maxMinutes } = getConstraintMinutes(min, max);\n\n return (\n isWithinConstraints(amMinutes, minMinutes, maxMinutes) ||\n isWithinConstraints(pmMinutes, minMinutes, maxMinutes)\n );\n } else {\n const timeMinutes = timeToMinutes(convertTimeFormat(timeString, 24));\n const { minMinutes, maxMinutes } = getConstraintMinutes(min, max);\n\n return isWithinConstraints(timeMinutes, minMinutes, maxMinutes);\n }\n}\n\nfunction validate24HourConstraints(\n timeString: string,\n min?: string,\n max?: string,\n): boolean {\n if (!min && !max) return true;\n\n const timeMinutes = timeToMinutes(timeString);\n const { minMinutes, maxMinutes } = getConstraintMinutes(min, max);\n\n if (isWithinConstraints(timeMinutes, minMinutes, maxMinutes)) {\n return true;\n }\n\n // \"1:00\" can still become \"14:00\" inside a 09:00–17:00 window.\n const hours = Math.floor(timeMinutes / 60);\n const minutes = timeMinutes % 60;\n\n if (minutes === 0) {\n for (let h = minMinutes; h <= maxMinutes; h += 60) {\n const potentialHour = Math.floor(h / 60);\n if (potentialHour.toString().startsWith(hours.toString())) {\n return true;\n }\n }\n }\n\n if (\n hours >= Math.floor(minMinutes / 60) &&\n hours <= Math.floor(maxMinutes / 60)\n ) {\n const hourMinutes = hours * 60;\n const hourMinMinutes = Math.max(minMinutes, hourMinutes);\n const hourMaxMinutes = Math.min(maxMinutes, hourMinutes + 59);\n\n for (let m = hourMinMinutes; m <= hourMaxMinutes; m++) {\n const potentialMinutes = m % 60;\n if (potentialMinutes.toString().startsWith(minutes.toString())) {\n return true;\n }\n }\n }\n\n return false;\n}\n\n/** Parses masked text into a complete time; min/max failures report as invalid, not a separate flag. */\nexport function parseInputValue(\n value: string,\n format: TimeFormat,\n removePlaceholder: (value: string) => string,\n min?: string,\n max?: string,\n) {\n const valueMinusPlaceholder = removePlaceholder(value);\n\n if (valueMinusPlaceholder === \"\") {\n return {\n time: null,\n isInputValid: false,\n isInputEmpty: true,\n };\n }\n\n const normalizedValue = normalizePartialInput(valueMinusPlaceholder);\n\n const parsed =\n format === 12\n ? parse12HourFormat(normalizedValue, min, max)\n : parse24HourFormat(normalizedValue);\n\n if (!parsed) {\n return {\n time: null,\n isInputValid: false,\n isInputEmpty: false,\n };\n }\n\n const { hours, minutes } = parsed;\n\n if (hours < 0 || hours > MAX_HOUR || minutes < 0 || minutes > MAX_MINUTE) {\n return {\n time: null,\n isInputValid: false,\n isInputEmpty: false,\n };\n }\n\n const timeString = formatTimeString(hours, minutes, format);\n\n const isValid =\n format === 12\n ? validate12HourConstraints(timeString, value, min, max)\n : validate24HourConstraints(timeString, min, max);\n\n if (!isValid) {\n return {\n time: null,\n isInputValid: false,\n isInputEmpty: false,\n };\n }\n\n return {\n time: timeString,\n isInputValid: true,\n isInputEmpty: false,\n };\n}\n","import type { TimeFormat } from \"../types\";\nimport { timeToMinutes } from \"./timeParsing\";\nimport { formatTimeString } from \"./timeFormatting\";\nimport { TIME_CONSTANTS, TIME_FORMAT_PLACEHOLDERS } from \"../constants\";\n\n/** Step-aligned times between `min` and `max`, formatted for the current clock. */\nexport function generateTimeOptions({\n step = 30,\n min,\n max,\n format,\n}: {\n step?: number;\n min?: string;\n max?: string;\n format: TimeFormat;\n}): string[] {\n const options: string[] = [];\n\n const minMinutes = min ? timeToMinutes(min) : 0;\n const maxMinutes = max\n ? timeToMinutes(max)\n : TIME_CONSTANTS.MINUTES_IN_DAY - 1;\n\n for (\n let minutes = 0;\n minutes < TIME_CONSTANTS.MINUTES_IN_DAY;\n minutes += step\n ) {\n if (minutes < minMinutes || minutes > maxMinutes) {\n continue;\n }\n\n const hours = Math.floor(minutes / 60);\n const mins = minutes % 60;\n\n options.push(formatTimeString(hours, mins, format));\n }\n\n return options;\n}\n\nfunction normalizeTimeString(str: string): string {\n return str.replace(/[–_:]/g, \"\").replace(/\\s+/g, \"\").toLowerCase();\n}\n\n/** Prefix-matches options against typed text after stripping mask punctuation. */\nexport function filterTimeOptions(\n options: string[],\n userInput: string,\n): string[] {\n if (\n !userInput ||\n userInput === TIME_FORMAT_PLACEHOLDERS[12] ||\n userInput === TIME_FORMAT_PLACEHOLDERS[24]\n ) {\n return options;\n }\n\n const normalizedInput = normalizeTimeString(userInput);\n\n const filtered = options.filter((option) => {\n const normalizedOption = normalizeTimeString(option);\n return normalizedOption.startsWith(normalizedInput);\n });\n\n return filtered;\n}\n","import { timeToMinutes } from \"./timeParsing\";\nimport type { TimeFormat } from \"../types\";\n\n/** Whether `time` falls on a `step` boundary. A missing or non-positive step always passes. */\nexport function isTimeOnStep(time: string, step: number): boolean {\n if (!step || step <= 0) return true;\n\n const totalMinutes = timeToMinutes(time);\n return totalMinutes % step === 0;\n}\n\n/** True when `timeToMinutes` is positive, or the string is exactly `00:00`. */\nexport function isValidTime(time: string | null): boolean {\n if (!time) return false;\n return timeToMinutes(time) > 0 || time === \"00:00\";\n}\n\n/**\n * Whether a still-incomplete value could finish inside `min`/`max`.\n * Only inspects a single typed digit, and only when both bounds are set.\n */\nexport function isPartialInputPotentiallyValid(\n inputValue: string,\n format: TimeFormat,\n min?: string,\n max?: string,\n): boolean {\n if (!min || !max) return false;\n\n const digits = inputValue.replace(/[^\\d]/g, \"\");\n\n if (digits.length === 1) {\n const digit = parseInt(digits, 10);\n\n const minMinutes = timeToMinutes(min);\n const maxMinutes = timeToMinutes(max);\n\n for (let h = 0; h <= 23; h++) {\n const hourStr = h.toString().padStart(2, \"0\");\n const hourStrNoPad = h.toString();\n\n const startsWithDigit =\n hourStr.startsWith(digit.toString()) ||\n hourStrNoPad.startsWith(digit.toString());\n\n if (!startsWithDigit) continue;\n\n if (format === 24) {\n const hourMinutes = h * 60;\n if (hourMinutes >= minMinutes && hourMinutes <= maxMinutes) {\n return true;\n }\n } else {\n if (h === 0) {\n if (digit === 1) {\n const midnightMinutes = 0;\n if (\n midnightMinutes >= minMinutes &&\n midnightMinutes <= maxMinutes\n ) {\n return true;\n }\n }\n } else if (h >= 1 && h <= 12) {\n const amHour24 = h === 12 ? 0 : h;\n const amMinutes = amHour24 * 60;\n if (amMinutes >= minMinutes && amMinutes <= maxMinutes) {\n return true;\n }\n\n const pmHour24 = h === 12 ? 12 : h + 12;\n const pmMinutes = pmHour24 * 60;\n if (pmMinutes >= minMinutes && pmMinutes <= maxMinutes) {\n return true;\n }\n }\n }\n }\n }\n\n return false;\n}\n","import type { TimeFormat } from \"../types\";\nimport { timeToMinutes } from \"./timeParsing\";\nimport { isTimeOnStep, isValidTime } from \"./timeValidation\";\nimport { formatTimeString } from \"./timeFormatting\";\n\nexport interface AutoRoundingOptions {\n autoround: boolean;\n step?: number;\n format: TimeFormat;\n}\n\n/** Next `step` at or after `time`. A missing or non-positive step returns `time`. */\nexport function getNextFutureStep(\n time: string,\n step: number,\n format: TimeFormat,\n): string {\n if (!step || step <= 0) return time;\n\n const totalMinutes = timeToMinutes(time);\n\n const nextStep = Math.ceil(totalMinutes / step) * step;\n\n const hours = Math.floor(nextStep / 60);\n const minutes = nextStep % 60;\n\n return formatTimeString(hours, minutes, format);\n}\n\n/** Snaps off-step times up to the next `step` when `autoround` is on. */\nexport function handleAutoRounding(\n time: string | null,\n options: AutoRoundingOptions,\n): string | null {\n const { autoround, step, format } = options;\n\n if (!autoround || !time) return time;\n\n const stepValue = step ?? 30;\n\n if (isTimeOnStep(time, stepValue)) {\n return time;\n }\n\n return getNextFutureStep(time, stepValue, format);\n}\n\n/** Next-step suggestions for 12-hour input: both AM and PM unless the text already names one. */\nexport function generateAmPmVariants(\n currentTime: string,\n step: number,\n inputValue: string,\n): string[] {\n const hasAM = inputValue.toUpperCase().includes(\"AM\");\n const hasPM = inputValue.toUpperCase().includes(\"PM\");\n\n const getNextStepForTime = (time: string) => {\n const currentMinutes = timeToMinutes(time);\n const nextStepMinutes = Math.ceil(currentMinutes / step) * step;\n const finalMinutes =\n nextStepMinutes === currentMinutes\n ? nextStepMinutes + step\n : nextStepMinutes;\n\n const hours = Math.floor(finalMinutes / 60);\n const minutes = finalMinutes % 60;\n return formatTimeString(hours, minutes, 12);\n };\n\n const nextStep = getNextFutureStep(currentTime, step, 12);\n\n if (hasAM || hasPM) {\n return [nextStep];\n } else {\n const currentMinutes = timeToMinutes(currentTime);\n const pmMinutes = currentMinutes + 12 * 60;\n const pmHours = Math.floor(pmMinutes / 60);\n const pmMins = pmMinutes % 60;\n const pmVersion = getNextStepForTime(formatTimeString(pmHours, pmMins, 24));\n return [nextStep, pmVersion];\n }\n}\n\n/** PM next-step when 12-hour text has no period and the AM parse is not a valid time. */\nexport function generatePmInterpretation(\n currentTime: string,\n step: number,\n inputValue: string,\n): string[] {\n if (\n inputValue.toUpperCase().includes(\"AM\") ||\n inputValue.toUpperCase().includes(\"PM\")\n ) {\n return [];\n }\n\n const currentMinutes = timeToMinutes(currentTime);\n const pmMinutes = currentMinutes + 12 * 60;\n const pmHours = Math.floor(pmMinutes / 60);\n const pmMins = pmMinutes % 60;\n const pmTime = formatTimeString(pmHours, pmMins, 12);\n\n if (isValidTime(pmTime)) {\n const pmNextStep = getNextFutureStep(pmTime, step, 12);\n return [pmNextStep];\n }\n\n return [];\n}\n\n/** Next-step suggestion rows, including 12-hour AM/PM variants when `min` is unset. */\nexport function getAutoRoundingOptions(\n currentTime: string | null,\n step: number,\n format: TimeFormat,\n inputValue: string,\n min?: string,\n): string[] {\n if (!currentTime) {\n return [];\n }\n\n if (!isValidTime(currentTime)) {\n if (format === 12) {\n return generatePmInterpretation(currentTime, step, inputValue);\n }\n return [];\n }\n\n const nextStep = getNextFutureStep(currentTime, step, format);\n\n if (format === 12 && !min) {\n return generateAmPmVariants(currentTime, step, inputValue);\n }\n\n return [nextStep];\n}\n","import type { MaskitoOptions } from \"@maskito/core\";\nimport {\n maskitoTimeOptionsGenerator,\n maskitoWithPlaceholder,\n} from \"@maskito/kit\";\nimport type { TimeFormat } from \"../types\";\n\n/** Builds Maskito time options with a persistent placeholder. Stepping stays off. */\nconst timePlaceholderMask = ({\n format,\n placeholder,\n}: {\n format: TimeFormat;\n placeholder: string;\n}) => {\n const timeOptions = maskitoTimeOptionsGenerator({\n mode: format === 12 ? \"HH:MM AA\" : \"HH:MM\",\n step: 0,\n });\n\n const { plugins, removePlaceholder, ...placeholderOptions } =\n maskitoWithPlaceholder(placeholder);\n\n const timePlaceholderMask = {\n ...timeOptions,\n plugins: plugins.concat(timeOptions.plugins || []),\n preprocessors: [\n ...placeholderOptions.preprocessors,\n ...timeOptions.preprocessors,\n ],\n postprocessors: [\n ...timeOptions.postprocessors,\n ...placeholderOptions.postprocessors,\n ],\n } satisfies Required<MaskitoOptions>;\n\n return { options: timePlaceholderMask, removePlaceholder };\n};\n\nexport default timePlaceholderMask;\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport type { TimeFormat } from \"./types\";\nimport timePlaceholderMask from \"./maskito/timePlaceholderMask\";\nimport { useMaskito } from \"@maskito/react\";\nimport { useMergeRefs } from \"../../../hooks\";\nimport {\n CLOCK_ICON,\n TIME_CONSTANTS,\n TIME_FORMAT_PLACEHOLDERS,\n} from \"./constants\";\nimport { Icon } from \"../../Icon\";\nimport { convertTimeFormat, parseInputValue } from \"./utils/timeParsing\";\nimport { isPartialInputPotentiallyValid } from \"./utils/timeValidation\";\nimport {\n TextField,\n type TextFieldProps,\n} from \"../../TextField/internal/TextField\";\n\nimport cx from \"classnames\";\nimport styles from \"../TimeField.module.scss\";\n\nexport type MaskedTimeInputChange = {\n event: React.ChangeEvent<HTMLInputElement>;\n /** Parsed time in the current `format`, or `null` when empty or unparseable. */\n time: string | null;\n /** Whether the text is a complete time that also satisfies `min`/`max`. */\n isInputValid: boolean;\n /** Whether no time digits remain after removing the placeholder. */\n isInputEmpty: boolean;\n};\n\nexport interface MaskedTimeInputProps\n extends Omit<\n TextFieldProps,\n | \"onChange\"\n | \"value\"\n | \"ref\"\n | \"showCounter\"\n | \"prefix\"\n | \"type\"\n | \"maxLength\"\n | \"hint\"\n > {\n /** Value to display from the parent, ignored while the user is typing. */\n selectedTime?: string | null;\n /** 12-hour with AM/PM, or 24-hour. */\n format: TimeFormat;\n placeholder: string;\n /** Earliest allowed time. */\n min?: string;\n /** Latest allowed time. */\n max?: string;\n /** Called as the mask parses each keystroke. */\n onInputChange?: (change: MaskedTimeInputChange) => void;\n onKeyDown?: (event: React.KeyboardEvent<HTMLInputElement>) => void;\n onFocus?: (event: React.FocusEvent<HTMLInputElement>) => void;\n \"data-input-valid\"?: boolean;\n}\n\n/**\n * Masked time input used by TimeField. Completes a valid parse on blur.\n *\n * @internal\n */\nexport const MaskedTimeInput = forwardRef<\n HTMLInputElement,\n MaskedTimeInputProps\n>(\n (\n {\n selectedTime,\n format,\n placeholder,\n min,\n max,\n onInputChange,\n onKeyDown,\n onFocus,\n onBlur,\n className,\n ...props\n },\n ref,\n ) => {\n const [inputValue, setInputValue] = useState(placeholder);\n\n const { options, removePlaceholder } = timePlaceholderMask({\n format,\n placeholder,\n });\n const maskedInputRef = useMaskito({ options });\n const inputRef = useRef<HTMLInputElement>(null);\n const combinedRef = useMergeRefs([maskedInputRef, inputRef, ref]);\n const isUserTypingRef = useRef(false);\n const inputValueRef = useRef<string>(placeholder);\n const previousPlaceholderRef = useRef<string>(placeholder);\n\n const currentParsedData = useMemo(() => {\n return parseInputValue(inputValue, format, removePlaceholder, min, max);\n }, [inputValue, format, removePlaceholder, min, max]);\n\n useEffect(() => {\n inputValueRef.current = inputValue;\n }, [inputValue]);\n\n useEffect(() => {\n previousPlaceholderRef.current = placeholder;\n }, [placeholder]);\n\n useEffect(() => {\n if (selectedTime !== undefined && !isUserTypingRef.current) {\n const newInputValue = selectedTime\n ? convertTimeFormat(selectedTime, format)\n : placeholder;\n\n setInputValue(newInputValue);\n inputValueRef.current = newInputValue;\n }\n }, [selectedTime, format, placeholder]);\n\n useEffect(() => {\n if (placeholder === previousPlaceholderRef.current) return;\n\n const isOldPlaceholder =\n inputValue === TIME_FORMAT_PLACEHOLDERS[12] ||\n inputValue === TIME_FORMAT_PLACEHOLDERS[24];\n\n if (isOldPlaceholder) {\n setInputValue(placeholder);\n }\n\n previousPlaceholderRef.current = placeholder;\n }, [placeholder, inputValue]);\n\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n isUserTypingRef.current = true;\n\n const { time, isInputValid, isInputEmpty } = parseInputValue(\n event.target.value,\n format,\n removePlaceholder,\n min,\n max,\n );\n\n const isPotentiallyValidPartial =\n !isInputValid &&\n !isInputEmpty &&\n event.target.value.length >= placeholder.length && // User is typing, not deleting\n isPartialInputPotentiallyValid(event.target.value, format, min, max);\n\n if (isInputValid || isInputEmpty || isPotentiallyValidPartial) {\n setInputValue(event.target.value);\n } else {\n // Invalid keystrokes would otherwise stick in Maskito's buffer.\n setInputValue(placeholder);\n }\n\n onInputChange?.({\n event,\n time,\n isInputValid,\n isInputEmpty,\n });\n\n setTimeout(() => {\n isUserTypingRef.current = false;\n }, TIME_CONSTANTS.INPUT_DEBOUNCE_TIMEOUT);\n },\n [format, removePlaceholder, onInputChange, min, max, placeholder],\n );\n\n const resetTypingFlag = useCallback(() => {\n isUserTypingRef.current = false;\n }, []);\n\n const handleBlur = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n if (currentParsedData.time && currentParsedData.isInputValid) {\n const completedValue = convertTimeFormat(\n currentParsedData.time,\n format,\n );\n setInputValue(completedValue);\n }\n\n onBlur?.(event);\n },\n [currentParsedData, format, onBlur],\n );\n\n useImperativeHandle(ref, () => {\n const input = inputRef.current;\n if (!input)\n return null as unknown as HTMLInputElement & {\n resetTypingFlag: () => void;\n };\n return Object.assign(input, {\n resetTypingFlag,\n });\n });\n\n const classNames = useMemo(() => {\n return cx(styles[\"time-field\"], className);\n }, [className]);\n\n return (\n <TextField\n ref={combinedRef}\n data-input-valid={currentParsedData.isInputValid}\n data-input-empty={currentParsedData.isInputEmpty}\n data-time={currentParsedData.time ?? \"\"}\n value={inputValue}\n onChange={handleChange}\n prefix={<Icon svg={CLOCK_ICON} />}\n autoComplete=\"off\"\n onKeyDown={onKeyDown}\n onFocus={onFocus}\n onBlur={handleBlur}\n className={classNames}\n {...props}\n />\n );\n },\n);\n\nMaskedTimeInput.displayName = \"MaskedTimeInput\";\n","import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { useTrackingId, useMergeRefs } from \"../../hooks\";\nimport type { DataTrackingId } from \"../../types\";\nimport type { TextFieldProps } from \"../TextField\";\nimport type { TimeFieldChangeHandler, TimeFormat } from \"./internal/types\";\nimport { childrenToString } from \"../../internal/functions\";\nimport {\n useLayoutPropsUtil,\n useOptionallyControlledState,\n usePopoverCloseDelayWorkaround,\n} from \"../../internal/hooks\";\nimport { TIME_FORMAT_PLACEHOLDERS } from \"./internal/constants\";\nimport {\n filterTimeOptions,\n generateTimeOptions,\n} from \"./internal/utils/timeOptions\";\nimport {\n getAutoRoundingOptions,\n handleAutoRounding,\n} from \"./internal/utils/timeRounding\";\nimport {\n MaskedTimeInput,\n type MaskedTimeInputChange,\n} from \"./internal/MaskedTimeInput\";\nimport { Popover } from \"../../internal/components/Popover\";\nimport Listbox from \"../Listbox\";\n\n/**\n * `min` and `max` must both be set or both omitted.\n * @extends Omit<TextFieldProps, \"onChange\" | \"value\" | \"defaultValue\" | \"type\" | \"min\" | \"max\" | \"step\" | \"maxLength\" | \"showCounter\" | \"prefix\">\n */\nexport type TimeFieldProps = Omit<\n TextFieldProps,\n | \"onChange\"\n | \"value\"\n | \"defaultValue\"\n | \"type\"\n | \"min\"\n | \"max\"\n | \"step\"\n | \"maxLength\"\n | \"showCounter\"\n | \"prefix\"\n> & {\n /** Controlled time in the current `format`. Pass `null` to clear the field. */\n value?: string | null;\n /** Initial time for uncontrolled use. */\n defaultValue?: string | null;\n /** Reports {@link TimeFieldChange} after parse, blur, or a suggestion pick. */\n onChange?: TimeFieldChangeHandler;\n /** 12-hour with AM/PM, or 24-hour. Defaults to `12`. */\n format?: TimeFormat;\n /** Suggestion interval and `autoround` increment, in minutes. Defaults to `30`. */\n step?: number;\n /**\n * On blur, snaps a complete time up to the next `step`. Applies even when\n * suggestions are disabled. Defaults to `false`.\n */\n autoround?: boolean;\n /** Renders only the masked input without its suggestion popover. Defaults to `false`. */\n disableSuggestions?: boolean;\n} & (\n | {\n /** Earliest allowed time; requires `max`. */\n min: string;\n /** Latest allowed time; requires `min`. */\n max: string;\n }\n | {\n min?: never;\n max?: never;\n }\n ) &\n DataTrackingId;\n\n/**\n * Masked time field with optional step suggestions. Completeness and min/max\n * share `isInputValid`; `step` / `autoround` are separate.\n */\nexport const TimeField = (props: TimeFieldProps) => {\n const { componentProps } = useLayoutPropsUtil(props);\n const {\n label,\n labelProps,\n size,\n value: valueProp,\n defaultValue,\n min,\n max,\n onChange,\n onClick,\n onKeyDownCapture,\n format = 12,\n step = 30,\n required,\n description,\n error: errorProp,\n disableSuggestions = false,\n autoround = false,\n className,\n disabled,\n ...rest\n } = componentProps;\n\n const [isDropdownOpen, setIsDropdownOpenRaw] = useState(false);\n\n const setIsDropdownOpen = (open: boolean) => {\n setIsDropdownOpenRaw(open);\n };\n\n const [selectedOptionIndex, setSelectedOptionIndex] = useState(0);\n const [inputValueForFiltering, setInputValueForFiltering] = useState(\"\");\n const [currentParsedTime, setCurrentParsedTime] = useState<string | null>(\n null,\n );\n\n const [selectedTime, setSelectedTime] = useOptionallyControlledState<\n string | null\n >({\n controlledValue: valueProp,\n defaultValue: defaultValue ?? null,\n });\n\n const [inputParsedData, setInputParsedData] = useState<{\n time: string | null;\n isInputValid: boolean;\n isInputEmpty: boolean;\n }>({ time: null, isInputValid: false, isInputEmpty: true });\n\n const lastOnChangeCallRef = useRef<{\n time: string | null;\n isInputValid: boolean;\n isInputEmpty: boolean;\n } | null>(null);\n\n const isDropdownClickingRef = useRef(false);\n\n // Blocks the focus handler from reopening the list after a click/Enter pick.\n const [justSelected, setJustSelected] = useState(false);\n\n const tabJustPressedRef = useRef(false);\n // Escape/`useDismiss` closes the popover while the input still has focus;\n // the auto-reopen effect would otherwise open it again on the next render.\n const closeJustTriggeredRef = useRef(false);\n\n const inputRef = useRef<\n HTMLInputElement & {\n resetTypingFlag?: () => void;\n }\n >(null);\n const popoverContentRef = useRef<HTMLDivElement>(null);\n // Popover.Trigger supplies a callback ref, not a RefObject. Hold it and\n // forward through a stable callback so `useMergeRefs` does not churn.\n const popoverRefSetter = useRef<((node: Element | null) => void) | null>(\n null,\n );\n const popoverCallbackRef = useCallback((node: HTMLInputElement | null) => {\n popoverRefSetter.current?.(node);\n }, []);\n const combinedRef = useMergeRefs([popoverCallbackRef, inputRef]);\n\n const placeholder = TIME_FORMAT_PLACEHOLDERS[format];\n\n const shouldShowOptionsFromHook =\n usePopoverCloseDelayWorkaround(isDropdownOpen);\n\n // Skip the close-delay frame on Tab so the list is not painted empty.\n const shouldShowOptions = tabJustPressedRef.current\n ? false\n : shouldShowOptionsFromHook;\n\n const dropdownTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n\n useEffect(() => {\n const dropdownRef = dropdownTimeoutRef.current;\n return () => {\n if (dropdownRef) {\n clearTimeout(dropdownRef);\n }\n };\n }, []);\n\n const allTimeOptions = useMemo(\n () => generateTimeOptions({ step, min, max, format }),\n [step, min, max, format],\n );\n\n const baseFilteredOptions = useMemo(() => {\n if (!inputValueForFiltering || inputValueForFiltering.match(/^[–_:]+$/)) {\n return allTimeOptions;\n }\n\n return filterTimeOptions(allTimeOptions, inputValueForFiltering);\n }, [allTimeOptions, inputValueForFiltering]);\n\n const autoRoundingOptions = useMemo(() => {\n if (\n !autoround ||\n baseFilteredOptions.length > 0 ||\n !inputValueForFiltering ||\n inputValueForFiltering.match(/^[–_:]+$/)\n ) {\n return [];\n }\n\n const currentTime = currentParsedTime || inputParsedData.time;\n\n const autoRoundedOptions = getAutoRoundingOptions(\n currentTime,\n step ?? 30,\n format,\n inputValueForFiltering,\n min,\n );\n\n return autoRoundedOptions.filter(\n (option) => !baseFilteredOptions.includes(option),\n );\n }, [\n autoround,\n baseFilteredOptions,\n inputValueForFiltering,\n currentParsedTime,\n inputParsedData.time,\n format,\n min,\n step,\n ]);\n\n const filteredOptions = useMemo(() => {\n if (baseFilteredOptions.length === 0 && autoRoundingOptions.length === 0) {\n if (\n !inputParsedData.isInputValid &&\n inputValueForFiltering &&\n !inputValueForFiltering.match(/^[–_:]+$/)\n ) {\n return allTimeOptions;\n }\n }\n\n return [...baseFilteredOptions, ...autoRoundingOptions];\n }, [\n baseFilteredOptions,\n autoRoundingOptions,\n allTimeOptions,\n inputValueForFiltering,\n inputParsedData.isInputValid,\n ]);\n\n const handleBlur = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n // List mousedown would otherwise fire blur → onChange, then the click\n // would fire onChange again.\n if (\n event.relatedTarget &&\n popoverContentRef.current?.contains(event.relatedTarget as Node) &&\n isDropdownClickingRef.current\n ) {\n isDropdownClickingRef.current = false;\n return;\n }\n\n setIsDropdownOpen(false);\n setSelectedOptionIndex(0);\n setJustSelected(false);\n\n const input = event.target as HTMLInputElement;\n const parsedInputTime = input.dataset.time || null;\n const isInputValid = input.dataset.inputValid === \"true\";\n const isInputEmpty = input.dataset.inputEmpty === \"true\";\n\n let finalTime = parsedInputTime;\n\n if (autoround && finalTime && isInputValid) {\n const beforeRounding = finalTime;\n finalTime = handleAutoRounding(finalTime, {\n autoround,\n step,\n format,\n });\n\n if (finalTime !== beforeRounding) {\n inputRef.current?.resetTypingFlag?.();\n setSelectedTime(finalTime);\n }\n }\n\n const currentChange = {\n time: finalTime,\n isInputValid,\n isInputEmpty,\n };\n\n const lastChange = lastOnChangeCallRef.current;\n const isDuplicate =\n lastChange &&\n lastChange.time === currentChange.time &&\n lastChange.isInputValid === currentChange.isInputValid &&\n lastChange.isInputEmpty === currentChange.isInputEmpty;\n\n if (!isDuplicate) {\n onChange?.(currentChange);\n lastOnChangeCallRef.current = currentChange;\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [format, step, autoround, onChange],\n );\n\n const openSuggestions = useCallback(() => {\n if (disabled || disableSuggestions) {\n return;\n }\n\n // A complete value filters the list to itself; clear the filter to show all\n // options and select the current time. The mask can render a non-breaking\n // space before AM/PM, so normalize it to match the option labels.\n const input = inputRef.current;\n if (input?.dataset.inputValid === \"true\") {\n setInputValueForFiltering(\"\");\n const value = input.value.replace(/\\s/g, \" \");\n setSelectedOptionIndex(allTimeOptions.indexOf(value));\n } else {\n setSelectedOptionIndex(0);\n }\n\n setJustSelected(false);\n setIsDropdownOpen(true);\n }, [disabled, disableSuggestions, allTimeOptions]);\n\n const handleFocus = useCallback(() => {\n if (!justSelected) {\n openSuggestions();\n }\n }, [justSelected, openSuggestions]);\n\n // Focus doesn't refire on an already-focused field, so reopen on click too.\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLInputElement>) => {\n onClick?.(event);\n if (!isDropdownOpen) {\n openSuggestions();\n }\n },\n [onClick, isDropdownOpen, openSuggestions],\n );\n\n useEffect(() => {\n if (!disabled) {\n return;\n }\n\n // Keep the auto-reopen effect from opening while focus is still on the\n // now-disabled input.\n closeJustTriggeredRef.current = true;\n setIsDropdownOpen(false);\n const timeoutId = window.setTimeout(() => {\n closeJustTriggeredRef.current = false;\n }, 50);\n\n return () => {\n window.clearTimeout(timeoutId);\n closeJustTriggeredRef.current = false;\n };\n }, [disabled]);\n\n useEffect(() => {\n // A single remaining option is not a choice; close instead of listing it.\n if (filteredOptions.length <= 1 && isDropdownOpen) {\n setIsDropdownOpen(false);\n }\n\n if (\n !disabled &&\n !disableSuggestions &&\n filteredOptions.length > 1 &&\n document.activeElement === inputRef.current &&\n !isDropdownOpen &&\n !justSelected &&\n !tabJustPressedRef.current &&\n !closeJustTriggeredRef.current\n ) {\n setIsDropdownOpen(true);\n setSelectedOptionIndex(0);\n }\n }, [\n filteredOptions,\n disabled,\n disableSuggestions,\n isDropdownOpen,\n justSelected,\n ]);\n\n const handleInputChange = (change: MaskedTimeInputChange) => {\n setInputValueForFiltering(change.event.target.value);\n\n setCurrentParsedTime(change.time);\n\n setInputParsedData({\n time: change.time,\n isInputValid: change.isInputValid,\n isInputEmpty: change.isInputEmpty,\n });\n\n setSelectedOptionIndex(0);\n\n setJustSelected(false);\n\n // Clear so a later blur can autoround again after this edit.\n setSelectedTime(null);\n };\n\n const scrollToSelectedOption = useCallback(() => {\n if (!popoverContentRef.current || selectedOptionIndex < 0) return;\n\n const optionElements =\n popoverContentRef.current.querySelectorAll('[role=\"option\"]');\n const targetElement = optionElements[selectedOptionIndex];\n\n if (targetElement) {\n targetElement.scrollIntoView({\n block: \"nearest\",\n behavior: \"auto\",\n });\n }\n }, [selectedOptionIndex]);\n\n useEffect(() => {\n if (isDropdownOpen && selectedOptionIndex >= 0) {\n scrollToSelectedOption();\n }\n }, [selectedOptionIndex, isDropdownOpen, scrollToSelectedOption]);\n\n const handleOptionSelect = useCallback(\n (selectedTime: string) => {\n // Clear the typing lock so MaskedTimeInput applies this value.\n if (inputRef.current?.resetTypingFlag) {\n inputRef.current.resetTypingFlag();\n }\n\n setIsDropdownOpen(false);\n setSelectedOptionIndex(0);\n\n setJustSelected(true);\n\n setCurrentParsedTime(selectedTime);\n setSelectedTime(selectedTime);\n\n const changeData = {\n time: selectedTime,\n isInputValid: true,\n isInputEmpty: false,\n };\n\n onChange?.(changeData);\n\n lastOnChangeCallRef.current = changeData;\n\n requestAnimationFrame(() => {\n inputRef.current?.focus();\n });\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [onChange],\n );\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (!isDropdownOpen) {\n return;\n }\n\n switch (event.key) {\n case \"ArrowDown\":\n event.preventDefault();\n setSelectedOptionIndex((prev) =>\n prev < filteredOptions.length - 1 ? prev + 1 : 0,\n );\n break;\n case \"ArrowUp\":\n event.preventDefault();\n setSelectedOptionIndex((prev) =>\n prev > 0 ? prev - 1 : filteredOptions.length - 1,\n );\n break;\n case \"Enter\":\n event.preventDefault();\n if (filteredOptions[selectedOptionIndex]) {\n handleOptionSelect(filteredOptions[selectedOptionIndex]);\n }\n break;\n case \"Tab\":\n tabJustPressedRef.current = true;\n\n setIsDropdownOpen(false);\n setSelectedOptionIndex(0);\n\n setTimeout(() => {\n tabJustPressedRef.current = false;\n }, 50);\n break;\n }\n },\n [isDropdownOpen, selectedOptionIndex, filteredOptions, handleOptionSelect],\n );\n\n // While the list is open it owns the arrow keys and Enter. The mask's native\n // listener runs before React's and would otherwise step AM/PM on the arrows\n // (changing the value and closing the list) and swallow Enter, so take these\n // keys in the capture phase.\n const handleKeyDownCapture = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n onKeyDownCapture?.(event);\n if (\n isDropdownOpen &&\n (event.key === \"ArrowUp\" ||\n event.key === \"ArrowDown\" ||\n event.key === \"Enter\")\n ) {\n event.stopPropagation();\n handleKeyDown(event);\n }\n },\n [onKeyDownCapture, isDropdownOpen, handleKeyDown],\n );\n\n const popoverDisabled = disableSuggestions;\n\n const { aiMark, ...labelPropsWithoutAiMark } = labelProps || {};\n\n const data = {\n label: childrenToString(label),\n labelProps: labelPropsWithoutAiMark,\n description: childrenToString(description),\n size,\n format,\n step,\n min,\n max,\n autoround,\n disableSuggestions,\n };\n const trackingId = useTrackingId({\n name: \"TimeField\",\n data,\n hasOverride: !!rest[\"data-tracking-id\"],\n });\n\n const justTheInput = (\n <MaskedTimeInput\n data-tracking-id={trackingId}\n ref={combinedRef}\n selectedTime={selectedTime}\n format={format}\n placeholder={placeholder}\n min={min}\n max={max}\n onInputChange={handleInputChange}\n onKeyDown={handleKeyDown}\n onKeyDownCapture={handleKeyDownCapture}\n onBlur={handleBlur}\n onFocus={handleFocus}\n onClick={handleClick}\n label={label}\n labelProps={labelProps}\n size={size}\n description={description}\n error={errorProp}\n className={popoverDisabled ? className : undefined}\n disabled={disabled}\n {...rest}\n aria-label={label ? undefined : \"Select a time\"}\n data-anv=\"time-field\"\n />\n );\n\n if (popoverDisabled) {\n return justTheInput;\n }\n\n return (\n <Popover\n open={isDropdownOpen}\n role=\"listbox\"\n noPadding\n placement=\"bottom-start\"\n matchReferenceWidth\n onClickOutside={() => {\n setIsDropdownOpen(false);\n }}\n onClose={() => {\n closeJustTriggeredRef.current = true;\n setIsDropdownOpen(false);\n setTimeout(() => {\n closeJustTriggeredRef.current = false;\n }, 50);\n }}\n maxHeight={205}\n sizeAfterPlacement\n >\n <Popover.Trigger>\n {({ ref: setReference }) => {\n popoverRefSetter.current = setReference;\n return justTheInput;\n }}\n </Popover.Trigger>\n\n <Popover.Content\n ref={popoverContentRef}\n data-open={isDropdownOpen}\n data-disabled={disableSuggestions}\n onMouseDown={() => {\n isDropdownClickingRef.current = true;\n }}\n onTouchStart={() => {\n isDropdownClickingRef.current = true;\n }}\n >\n {shouldShowOptions && (\n <Listbox\n selected={filteredOptions[selectedOptionIndex]}\n onSelectionChange={(selected: string | undefined) => {\n if (selected) {\n handleOptionSelect(selected);\n } else {\n // Listbox treats a second click as deselect; re-commit instead.\n const currentOption = filteredOptions[selectedOptionIndex];\n if (currentOption) {\n handleOptionSelect(currentOption);\n }\n }\n }}\n aria-label=\"Time suggestions\"\n >\n {filteredOptions.map((option) => (\n <Listbox.Option key={option} value={option} label={option}>\n {option}\n </Listbox.Option>\n ))}\n </Listbox>\n )}\n </Popover.Content>\n </Popover>\n );\n};\n\nTimeField.displayName = \"TimeField\";\n"],"names":["IconAccessTime","timePlaceholderMask","selectedTime"],"mappings":"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"}
|
package/dist/TimeField.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { T as TimeField, T as default } from './TimeField-
|
|
1
|
+
export { T as TimeField, T as default } from './TimeField-De9qBimk.js';
|
|
2
2
|
//# sourceMappingURL=TimeField.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { useMemo } from 'react';
|
|
3
|
-
import { D as DateTime } from './Calendar-
|
|
3
|
+
import { D as DateTime } from './Calendar-BcsuV4Xv.js';
|
|
4
4
|
import { jsxs } from 'react/jsx-runtime';
|
|
5
5
|
|
|
6
6
|
import './TimezoneMessage.css';const SvgEvent = (props) => /* @__PURE__ */ React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "1em", height: "1em", viewBox: "0 0 24 24", ...props }, /* @__PURE__ */ React.createElement("path", { d: "M16 13h-3c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-3c0-.55-.45-1-1-1zm0-10v1H8V3c0-.55-.45-1-1-1s-1 .45-1 1v1H5c-1.11 0-1.99.9-1.99 2L3 20a2 2 0 0 0 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2h-1V3c0-.55-.45-1-1-1s-1 .45-1 1zm2 17H6c-.55 0-1-.45-1-1V9h14v10c0 .55-.45 1-1 1z" }));
|
|
@@ -81,4 +81,4 @@ function TimezoneMessage({ timezone }) {
|
|
|
81
81
|
}
|
|
82
82
|
|
|
83
83
|
export { DateModeToPlaceholderMap as D, SvgEvent as S, TimezoneMessage as T, DateModeToFormatMap as a, convertStringToDate as c, isoToUtcDate as i, jsDateToUtcDateTime as j, validateDate as v };
|
|
84
|
-
//# sourceMappingURL=TimezoneMessage-
|
|
84
|
+
//# sourceMappingURL=TimezoneMessage-DEJX87S3.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimezoneMessage-
|
|
1
|
+
{"version":3,"file":"TimezoneMessage-DEJX87S3.js","sources":["../../hammer-icon/mdi/round/event.svg","../src/components/DateFieldSingle/internal/constants.ts","../src/components/DateFieldSingle/internal/utils.ts","../src/components/DateFieldSingle/internal/TimezoneMessage.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgEvent = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M16 13h-3c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-3c0-.55-.45-1-1-1zm0-10v1H8V3c0-.55-.45-1-1-1s-1 .45-1 1v1H5c-1.11 0-1.99.9-1.99 2L3 20a2 2 0 0 0 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2h-1V3c0-.55-.45-1-1-1s-1 .45-1 1zm2 17H6c-.55 0-1-.45-1-1V9h14v10c0 .55-.45 1-1 1z\" }));\nexport default SvgEvent;\n","import type { DateMode } from \"../types\";\n\nexport const DateModeToFormatMap: Record<DateMode, string> = {\n \"mm/dd/yyyy\": \"MM/dd/yyyy\",\n \"dd/mm/yyyy\": \"dd/MM/yyyy\",\n \"yyyy/mm/dd\": \"yyyy/MM/dd\",\n};\n\nexport const DateModeToPlaceholderMap: Record<DateMode, string> = {\n \"dd/mm/yyyy\": \"__/__/____\",\n \"mm/dd/yyyy\": \"__/__/____\",\n \"yyyy/mm/dd\": \"____/__/__\",\n};\n","import { DateTime } from \"luxon\";\n\n/**\n * Converts Maskito's local-midnight `Date` to UTC while preserving its calendar\n * fields. A direct zone conversion can shift the intended day.\n */\nexport function jsDateToUtcDateTime(jsDate: Date): DateTime {\n return DateTime.utc(\n jsDate.getFullYear(),\n jsDate.getMonth() + 1,\n jsDate.getDate(),\n );\n}\n\n/**\n * Converts Calendar's zoned ISO value to UTC while preserving its calendar\n * fields, avoiding day shifts across positive offsets.\n */\nexport function isoToUtcDate(isoString: string): DateTime {\n const parsed = DateTime.fromISO(isoString, { setZone: true });\n return DateTime.utc(parsed.year, parsed.month, parsed.day);\n}\n\n/** Parses an ISO value at start of day, preserving absent values and rejecting invalid ones. */\nexport function convertStringToDate(\n v: string | null | undefined,\n): DateTime | null | undefined {\n if (v === undefined || v === null) {\n return v;\n }\n const date = DateTime.fromISO(v, { setZone: true, zone: \"utc\" }).startOf(\n \"day\",\n );\n if (date.isValid) {\n return date;\n }\n return null;\n}\n\n/** Checks a date against required, availability, and min/max constraints. */\nexport function validateDate({\n date,\n constraints,\n}: {\n date: DateTime | null;\n constraints: {\n required?: boolean;\n unavailable?: {\n dates?: DateTime[];\n daysOfWeek?: number[];\n };\n minDate?: DateTime;\n maxDate?: DateTime;\n };\n}) {\n const { required, unavailable, minDate, maxDate } = constraints;\n if (!date) {\n return required ? false : true;\n }\n if (unavailable?.dates?.some((d) => d.equals(date))) {\n return false;\n }\n if (unavailable?.daysOfWeek?.includes(date.weekday)) {\n return false;\n }\n if (minDate && date < minDate) {\n return false;\n }\n if (maxDate && date > maxDate) {\n return false;\n }\n return true;\n}\n","import { DateTime } from \"luxon\";\nimport { useMemo } from \"react\";\nimport type { IanaZone } from \"../../../types\";\nimport styles from \"./TimezoneMessage.module.scss\";\n\ntype TimezoneMessageProps = {\n /** Calendar zone to identify when it differs from the browser's zone. */\n timezone?: IanaZone;\n};\n\n/** Identifies the calendar's non-local time zone by its current abbreviation. */\nexport function TimezoneMessage({ timezone }: TimezoneMessageProps) {\n const localTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n const showMessage = timezone && timezone !== localTimezone;\n\n const abbreviation = useMemo(() => {\n if (!timezone) return \"\";\n return DateTime.now().setZone(timezone).offsetNameShort ?? \"\";\n }, [timezone]);\n\n if (!showMessage) return null;\n\n return (\n <span className={styles[\"timezone-message\"]} data-testid=\"timezone-message\">\n Dates shown in {abbreviation}\n </span>\n );\n}\n"],"names":[],"mappings":"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"}
|
package/dist/Toast.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { T as Toaster } from './Toaster-
|
|
2
|
-
export { t as default, t as toast } from './Toaster-
|
|
1
|
+
export { T as Toaster } from './Toaster-BlwTxTLf.js';
|
|
2
|
+
export { t as default, t as toast } from './Toaster-sO16N9b5.js';
|
|
3
3
|
//# sourceMappingURL=Toast.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { forwardRef, useRef, useState, useEffect, useCallback } from 'react';
|
|
3
|
-
import { T as Toaster$1 } from './Toaster-
|
|
3
|
+
import { T as Toaster$1 } from './Toaster-sO16N9b5.js';
|
|
4
4
|
import { u as useMergeRefs } from './useMergeRefs-Dfmtq9cI.js';
|
|
5
5
|
|
|
6
6
|
const SHADOW_HOST_DATA_ATTRS = "[data-mfe-portal-name], [data-mfe-name]";
|
|
@@ -99,4 +99,4 @@ const Toaster = forwardRef(
|
|
|
99
99
|
Toaster.displayName = "Toaster";
|
|
100
100
|
|
|
101
101
|
export { Toaster as T };
|
|
102
|
-
//# sourceMappingURL=Toaster-
|
|
102
|
+
//# sourceMappingURL=Toaster-BlwTxTLf.js.map
|