@servicetitan/anvil2 3.16.1 → 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 +88 -0
- package/dist/{AiMark-BfmK30vL.js → AiMark-Ca7WmL-9.js} +114 -33
- package/dist/AiMark-Ca7WmL-9.js.map +1 -0
- package/dist/AiMark.js +1 -1
- package/dist/{Alert-lLo1N7Tj.js → Alert-BOqBFMUV.js} +3 -3
- package/dist/{Alert-lLo1N7Tj.js.map → Alert-BOqBFMUV.js.map} +1 -1
- package/dist/Alert.js +1 -1
- package/dist/{Announcement-PfnsVVz1.js → Announcement-AN9HnhZ-.js} +2 -2
- package/dist/{Announcement-PfnsVVz1.js.map → Announcement-AN9HnhZ-.js.map} +1 -1
- package/dist/Announcement.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-RdL4Fvmu.js → Breadcrumbs-1MCqy-gU.js} +2 -2
- package/dist/{Breadcrumbs-RdL4Fvmu.js.map → Breadcrumbs-1MCqy-gU.js.map} +1 -1
- package/dist/Breadcrumbs.js +1 -1
- package/dist/{Button-Dn6-01xl.js → Button-B_E6ybA-.js} +3 -3
- package/dist/{Button-Dn6-01xl.js.map → Button-B_E6ybA-.js.map} +1 -1
- package/dist/Button.js +1 -1
- package/dist/{ButtonToggle-BSU8GBxr.js → ButtonToggle-D0eXySEM.js} +2 -2
- package/dist/{ButtonToggle-BSU8GBxr.js.map → ButtonToggle-D0eXySEM.js.map} +1 -1
- package/dist/ButtonToggle.js +1 -1
- package/dist/{luxon-wpz4A-OQ.js → Calendar-BcsuV4Xv.js} +1761 -3
- package/dist/Calendar-BcsuV4Xv.js.map +1 -0
- package/dist/{Calendar-DoLRAWLp.js → Calendar-oBRbQqnG.js} +2 -2
- package/dist/{Calendar-DoLRAWLp.js.map → Calendar-oBRbQqnG.js.map} +1 -1
- package/dist/Calendar.js +2 -2
- package/dist/{Checkbox-U-kuWhgc.js → Checkbox-BCaUzwF_.js} +2 -2
- package/dist/{Checkbox-U-kuWhgc.js.map → Checkbox-BCaUzwF_.js.map} +1 -1
- package/dist/{Checkbox-CVxbe-iN.js → Checkbox-BocPrjKC.js} +4 -4
- package/dist/{Checkbox-CVxbe-iN.js.map → Checkbox-BocPrjKC.js.map} +1 -1
- package/dist/Checkbox.js +1 -1
- package/dist/{Chip-2OydLs66.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/{DataTable-DIXP9-Bx.js → DataTableEditColumnsDrawer-C7OHRsJU.js} +1373 -289
- package/dist/DataTableEditColumnsDrawer-C7OHRsJU.js.map +1 -0
- package/dist/{DataTable.css → DataTableEditColumnsDrawer.css} +90 -33
- package/dist/{DateFieldRange-X2jdOTYY.js → DateFieldRange-BPcsS6TW.js} +6 -7
- package/dist/{DateFieldRange-X2jdOTYY.js.map → DateFieldRange-BPcsS6TW.js.map} +1 -1
- package/dist/DateFieldRange.js +1 -1
- package/dist/{DateFieldSingle-BJ16tpOz.js → DateFieldSingle-BRMhe0OM.js} +6 -7
- package/dist/{DateFieldSingle-BJ16tpOz.js.map → DateFieldSingle-BRMhe0OM.js.map} +1 -1
- package/dist/DateFieldSingle.js +1 -1
- package/dist/{DateFieldYearless-CMm8vtz_.js → DateFieldYearless-NOgDKzrJ.js} +6 -6
- package/dist/{DateFieldYearless-CMm8vtz_.js.map → DateFieldYearless-NOgDKzrJ.js.map} +1 -1
- package/dist/DateFieldYearless.js +1 -1
- package/dist/{DateFieldYearlessRange-BHHs-Z1Q.js → DateFieldYearlessRange-ChvypgXC.js} +5 -5
- package/dist/{DateFieldYearlessRange-BHHs-Z1Q.js.map → DateFieldYearlessRange-ChvypgXC.js.map} +1 -1
- package/dist/DateFieldYearlessRange.js +1 -1
- package/dist/{DaysOfTheWeek-BHXxs0Bo.js → DaysOfTheWeek-nYitIKnQ.js} +4 -4
- package/dist/{DaysOfTheWeek-BHXxs0Bo.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-_tHqOsbr.js → Dialog-BgWoV2on.js} +10 -7
- package/dist/Dialog-BgWoV2on.js.map +1 -0
- package/dist/Dialog.js +1 -1
- package/dist/{DialogCancelButton-C0r8hJ8Z.js → DialogCancelButton-CplrFu69.js} +2 -2
- package/dist/{DialogCancelButton-C0r8hJ8Z.js.map → DialogCancelButton-CplrFu69.js.map} +1 -1
- package/dist/Dnd.js +2 -2
- package/dist/{DndHandleButton-BRlodkDO.js → DndHandleButton-BJqj2hc0.js} +6 -4
- package/dist/DndHandleButton-BJqj2hc0.js.map +1 -0
- package/dist/DndSort.js +2 -2
- package/dist/{Drawer-D-ThWNp0.js → Drawer-BVBLtGn_.js} +12 -9
- package/dist/Drawer-BVBLtGn_.js.map +1 -0
- package/dist/Drawer.js +1 -1
- package/dist/DrillDown.css +41 -34
- package/dist/DrillDown.js +1 -1
- package/dist/DrillDown.module-BFE5BcJB.js +28 -0
- package/dist/DrillDown.module-BFE5BcJB.js.map +1 -0
- package/dist/{EditCard-B6l2vhBS.js → EditCard-hivZDPZh.js} +3 -3
- package/dist/{EditCard-B6l2vhBS.js.map → EditCard-hivZDPZh.js.map} +1 -1
- package/dist/EditCard.js +1 -1
- package/dist/{FieldLabel-ThEmUiAq.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-CGsDg6Hy.js → FilterBar-COd38Ent.js} +7 -7
- package/dist/{FilterBar-CGsDg6Hy.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-BQigi5oW.js → InputMask-DICWdeiF.js} +3 -3
- package/dist/{InputMask-BQigi5oW.js.map → InputMask-DICWdeiF.js.map} +1 -1
- package/dist/InputMask.js +1 -1
- package/dist/{ListView-YJscfG4x.js → ListView-BeGBn5Vk.js} +87 -108
- package/dist/ListView-BeGBn5Vk.js.map +1 -0
- package/dist/ListView.js +1 -1
- package/dist/{Listbox-CD9ZptSZ.js → Listbox-n1CmJ2gh.js} +2 -2
- package/dist/{Listbox-CD9ZptSZ.js.map → Listbox-n1CmJ2gh.js.map} +1 -1
- package/dist/Listbox.js +1 -1
- package/dist/{Menu-Da2OEN0o.js → Menu-DqP7YQgE.js} +2 -2
- package/dist/{Menu-Da2OEN0o.js.map → Menu-DqP7YQgE.js.map} +1 -1
- package/dist/Menu.js +1 -1
- package/dist/{MenuFooter-D__gg92C.js → MenuFooter-Dzhv0EfD.js} +2 -2
- package/dist/{MenuFooter-D__gg92C.js.map → MenuFooter-Dzhv0EfD.js.map} +1 -1
- package/dist/MultiSelectField.js +1 -1
- package/dist/{MultiSelectFieldSync-Cq5sena6.js → MultiSelectFieldSync-CWsOdu-o.js} +45 -63
- package/dist/MultiSelectFieldSync-CWsOdu-o.js.map +1 -0
- package/dist/MultiSelectFieldSync.css +107 -69
- package/dist/MultiSelectMenu.js +1 -1
- package/dist/{MultiSelectMenuSync-BhNXsgAN.js → MultiSelectMenuSync-AVcf8ZUZ.js} +17 -30
- package/dist/MultiSelectMenuSync-AVcf8ZUZ.js.map +1 -0
- package/dist/{useNumberField-CXFYUZ_n.js → NumberField-DjOvcCa1.js} +251 -5
- package/dist/NumberField-DjOvcCa1.js.map +1 -0
- package/dist/NumberField.js +1 -1
- package/dist/{Page-ZSHNJs7z.js → Page-_dh-JesM.js} +134 -85
- package/dist/Page-_dh-JesM.js.map +1 -0
- package/dist/Page.css +85 -80
- package/dist/Page.js +1 -1
- package/dist/{Pagination-Bsl99RRI.js → Pagination-CsSpaTCs.js} +5 -5
- package/dist/{Pagination-Bsl99RRI.js.map → Pagination-CsSpaTCs.js.map} +1 -1
- package/dist/Pagination.js +1 -1
- package/dist/{Popover-CIh1CsoJ.js → Popover-CEKl0WY3.js} +4 -4
- package/dist/{Popover-CIh1CsoJ.js.map → Popover-CEKl0WY3.js.map} +1 -1
- package/dist/Popover.js +1 -1
- package/dist/{ProgressBar-zPKYv4Il.js → ProgressBar-ubCKKewC.js} +3 -3
- package/dist/{ProgressBar-zPKYv4Il.js.map → ProgressBar-ubCKKewC.js.map} +1 -1
- package/dist/ProgressBar.js +1 -1
- package/dist/{Radio-C1VnatcL.js → Radio-DkB6zFsS.js} +2 -2
- package/dist/{Radio-C1VnatcL.js.map → Radio-DkB6zFsS.js.map} +1 -1
- package/dist/{Radio-BYowelK2.js → Radio-q1Vp_ZQG.js} +4 -4
- package/dist/{Radio-BYowelK2.js.map → Radio-q1Vp_ZQG.js.map} +1 -1
- package/dist/Radio.js +1 -1
- package/dist/{RichTextEditor-DcAVqd2d.js → RichTextEditor-BHt6sWMA.js} +11 -11
- package/dist/{RichTextEditor-DcAVqd2d.js.map → RichTextEditor-BHt6sWMA.js.map} +1 -1
- package/dist/RichTextEditor.js +1 -1
- package/dist/{SavedFiltersButton-BLvi8j1T.js → SavedFiltersButton-Cl58iHZe.js} +10 -10
- package/dist/{SavedFiltersButton-BLvi8j1T.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/{SegmentedControl-BHVJmmTH.js → SegmentedControl-BCqWq65N.js} +3 -3
- package/dist/{SegmentedControl-BHVJmmTH.js.map → SegmentedControl-BCqWq65N.js.map} +1 -1
- package/dist/SegmentedControl.js +1 -1
- package/dist/{SelectCard-DrmMU_GD.js → SelectCard-DeAUW1bL.js} +3 -3
- package/dist/{SelectCard-DrmMU_GD.js.map → SelectCard-DeAUW1bL.js.map} +1 -1
- package/dist/SelectCard.js +1 -1
- package/dist/SelectField.js +1 -1
- package/dist/{SelectFieldLabel-BxsKvfqo.js → SelectFieldLabel-DaXwIFZj.js} +2 -2
- package/dist/{SelectFieldLabel-BxsKvfqo.js.map → SelectFieldLabel-DaXwIFZj.js.map} +1 -1
- package/dist/{SelectFieldSync-CeazN-gI.js → SelectFieldSync-DpZL4wDo.js} +48 -69
- package/dist/SelectFieldSync-DpZL4wDo.js.map +1 -0
- package/dist/SelectMenu.js +1 -1
- package/dist/{SelectMenuSync-CPpE6vUG.js → SelectMenuSync-Klna2oqs.js} +17 -36
- package/dist/SelectMenuSync-Klna2oqs.js.map +1 -0
- package/dist/{SelectOptions-BDAu_9dv.js → SelectOptions-DGYYFU8i.js} +2 -2
- package/dist/{SelectOptions-BDAu_9dv.js.map → SelectOptions-DGYYFU8i.js.map} +1 -1
- package/dist/{SelectTrigger-B4OUTO9S.js → SelectTrigger-DKY7rpZn.js} +2 -2
- package/dist/{SelectTrigger-B4OUTO9S.js.map → SelectTrigger-DKY7rpZn.js.map} +1 -1
- package/dist/SelectTrigger.js +1 -1
- package/dist/{SelectTriggerBase-BTWSaiQ-.js → SelectTriggerBase-DUYq_L-6.js} +6 -6
- package/dist/{SelectTriggerBase-BTWSaiQ-.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/{Stepper-l_P6VPOv.js → Stepper-D3SHXfX1.js} +3 -3
- package/dist/{Stepper-l_P6VPOv.js.map → Stepper-D3SHXfX1.js.map} +1 -1
- package/dist/Stepper.js +1 -1
- package/dist/{Switch-1iNdXTik.js → Switch-C9yQgF4w.js} +2 -2
- package/dist/{Switch-1iNdXTik.js.map → Switch-C9yQgF4w.js.map} +1 -1
- package/dist/Switch.js +1 -1
- package/dist/{Tab-DR5YYXkq.js → Tab-CXwVQ5-G.js} +11 -7
- package/dist/Tab-CXwVQ5-G.js.map +1 -0
- package/dist/Tab.js +1 -1
- package/dist/Table.js +1 -1
- package/dist/{Text-rihxXHSe.js → Text-D4SWT4u-.js} +2 -2
- package/dist/{Text-rihxXHSe.js.map → Text-D4SWT4u-.js.map} +1 -1
- package/dist/Text.js +1 -1
- package/dist/{TextField-vuS7xeo-.js → TextField-CKXSxube.js} +5 -5
- package/dist/{TextField-vuS7xeo-.js.map → TextField-CKXSxube.js.map} +1 -1
- package/dist/{TextField-Bxd-Qzoi.js → TextField-DmdT2k0w.js} +2 -2
- package/dist/{TextField-Bxd-Qzoi.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-ppapJUwh.js → Textarea-Dv__veBJ.js} +11 -11
- package/dist/{Textarea-ppapJUwh.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-Hwt_oRbg.js → TimeField-De9qBimk.js} +49 -11
- package/dist/TimeField-De9qBimk.js.map +1 -0
- package/dist/TimeField.js +1 -1
- package/dist/{TimezoneMessage-BrKB_psP.js → TimezoneMessage-DEJX87S3.js} +2 -2
- package/dist/{TimezoneMessage-BrKB_psP.js.map → TimezoneMessage-DEJX87S3.js.map} +1 -1
- package/dist/Toast.js +2 -2
- package/dist/{Toaster-dVGVVcat.js → Toaster-BlwTxTLf.js} +2 -2
- package/dist/{Toaster-dVGVVcat.js.map → Toaster-BlwTxTLf.js.map} +1 -1
- package/dist/{Toaster-SqkX0Kes.js → Toaster-sO16N9b5.js} +26 -14
- package/dist/Toaster-sO16N9b5.js.map +1 -0
- package/dist/{Toolbar-DGHZpFi9.js → Toolbar-BhrHuIN7.js} +7 -7
- package/dist/{Toolbar-DGHZpFi9.js.map → Toolbar-BhrHuIN7.js.map} +1 -1
- package/dist/{Toolbar-CMulzswf.js → Toolbar-Buq2zze0.js} +6 -6
- package/dist/{Toolbar-CMulzswf.js.map → Toolbar-Buq2zze0.js.map} +1 -1
- package/dist/Toolbar.js +2 -2
- package/dist/{ToolbarButtonToggle-T8YnSJ5x.js → ToolbarButtonToggle-CNIaqVWl.js} +3 -3
- package/dist/{ToolbarButtonToggle-T8YnSJ5x.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-DT6uZ3Ca.js → TreeSelectFieldSync-B7w31kbz.js} +23 -23
- package/dist/{TreeSelectFieldSync-DT6uZ3Ca.js.map → TreeSelectFieldSync-B7w31kbz.js.map} +1 -1
- package/dist/TreeSelectFieldSync.css +57 -34
- package/dist/TreeSelectMenu.js +1 -1
- package/dist/{TreeSelectMenuSync-D2TvKxP-.js → TreeSelectMenuSync-EjxlvDZp.js} +5 -5
- package/dist/{TreeSelectMenuSync-D2TvKxP-.js.map → TreeSelectMenuSync-EjxlvDZp.js.map} +1 -1
- package/dist/{TypeaheadTextField-DgazozK7.js → TypeaheadTextField-DTOkaJda.js} +3 -3
- package/dist/{TypeaheadTextField-DgazozK7.js.map → TypeaheadTextField-DTOkaJda.js.map} +1 -1
- package/dist/TypeaheadTextField.js +1 -1
- package/dist/{YearlessDateInputWithPicker-Bc8a33D5.js → YearlessDateInputWithPicker-DJUQypnF.js} +4 -4
- package/dist/{YearlessDateInputWithPicker-Bc8a33D5.js.map → YearlessDateInputWithPicker-DJUQypnF.js.map} +1 -1
- package/dist/assets/icons/st/gnav_messages_active.svg +1 -0
- package/dist/assets/icons/st/gnav_messages_inactive.svg +1 -0
- package/dist/assets/icons/st.ts +2 -0
- package/dist/beta.js +19 -18
- package/dist/beta.js.map +1 -1
- package/dist/{bulkActionTypes-SukoplGV.js → bulkActionTypes-bznuvizE.js} +2 -2
- package/dist/{bulkActionTypes-SukoplGV.js.map → bulkActionTypes-bznuvizE.js.map} +1 -1
- package/dist/{filter-state-D3-SYfuy.js → filter-state-DxwL15y1.js} +25 -25
- package/dist/{filter-state-D3-SYfuy.js.map → filter-state-DxwL15y1.js.map} +1 -1
- package/dist/{index-C2dOrf4N.js → index-Bn56UnMm.js} +2 -2
- package/dist/{index-C2dOrf4N.js.map → index-Bn56UnMm.js.map} +1 -1
- package/dist/{index-Bldaza5t.js → index-CyN5oapA.js} +2 -2
- package/dist/{index-Bldaza5t.js.map → index-CyN5oapA.js.map} +1 -1
- package/dist/index-DfZCfS0S.js +36 -0
- package/dist/index-DfZCfS0S.js.map +1 -0
- package/dist/{index.esm-C2ZhC_8d.js → index.esm-CQXMoq5w.js} +2 -2
- package/dist/{index.esm-C2ZhC_8d.js.map → index.esm-CQXMoq5w.js.map} +1 -1
- package/dist/index.js +171 -127
- 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/{react-ORV84FjM.js → react-CG1BUt2y.js} +5 -38
- package/dist/react-CG1BUt2y.js.map +1 -0
- 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/DataTable.d.ts +31 -4
- package/dist/src/beta/components/Table/DataTable/DataTableEditColumnsDrawer.d.ts +18 -0
- package/dist/src/beta/components/Table/DataTable/index.d.ts +1 -0
- package/dist/src/beta/components/Table/DataTable/internal/DataTableAddRow.d.ts +11 -0
- package/dist/src/beta/components/Table/DataTable/internal/DataTableBulkActionBar.d.ts +23 -0
- package/dist/src/beta/components/Table/DataTable/internal/DataTableFilterToolbar.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/columnEditing/EditColumnsDrawer.d.ts +29 -0
- package/dist/src/beta/components/Table/DataTable/internal/columnEditing/columnLayout.d.ts +43 -0
- package/dist/src/beta/components/Table/DataTable/internal/columnEditing/toEditColumnsSection.d.ts +7 -0
- package/dist/src/beta/components/Table/DataTable/internal/context/tabbables/CellTabbablesQueue.d.ts +23 -0
- package/dist/src/beta/components/Table/DataTable/parts.d.ts +17 -0
- package/dist/src/beta/components/Table/DataTable/types.d.ts +256 -2
- package/dist/src/beta/components/Table/types.d.ts +6 -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/DrillDown/DrillDownHeader.d.ts +11 -2
- package/dist/src/components/DrillDown/index.d.ts +1 -1
- package/dist/src/components/DrillDown/internal/DrillDownContext.d.ts +7 -2
- package/dist/src/components/DrillDown/internal/useDrillDownContextState.d.ts +6 -3
- 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/hooks/usePrefersReducedMotion/index.d.ts +2 -0
- package/dist/src/hooks/usePrefersReducedMotion/prefersReducedMotion.d.ts +6 -0
- package/dist/src/hooks/usePrefersReducedMotion/useReducedMotion.d.ts +5 -0
- 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-SMop8ckR.js → syncFilterUtils-BNbAB0jz.js} +110 -39
- package/dist/syncFilterUtils-BNbAB0jz.js.map +1 -0
- package/dist/token/core/component-variables.scss +52 -49
- package/dist/token/core/component.d.ts +2 -0
- package/dist/token/core/component.js +66 -49
- package/dist/token/core/component.scss +42 -40
- 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 +82 -49
- package/dist/token.js.map +1 -1
- package/dist/{treeSync-B38r1dRQ.js → treeSync-BELsX1gY.js} +3 -3
- package/dist/{treeSync-B38r1dRQ.js.map → treeSync-BELsX1gY.js.map} +1 -1
- package/dist/{use-reduced-motion-yYB9Tb0D.js → use-reduced-motion-CUshwaEW.js} +2 -2
- package/dist/{use-reduced-motion-yYB9Tb0D.js.map → use-reduced-motion-CUshwaEW.js.map} +1 -1
- package/dist/{useDrillDownContext-D5_NjqY4.js → useDrillDownContext-BLDjyNEt.js} +2 -2
- package/dist/{useDrillDownContext-D5_NjqY4.js.map → useDrillDownContext-BLDjyNEt.js.map} +1 -1
- package/dist/{useDrilldown-BOeeNUsy.js → useDrilldown-B8pIhfWa.js} +55 -22
- package/dist/{useDrilldown-BOeeNUsy.js.map → useDrilldown-B8pIhfWa.js.map} +1 -1
- package/dist/{useInfiniteCombobox-ynkeFngn.js → useInfiniteCombobox-ZZalag0-.js} +4 -4
- package/dist/{useInfiniteCombobox-ynkeFngn.js.map → useInfiniteCombobox-ZZalag0-.js.map} +1 -1
- package/dist/{useInitialFocus-CGybEc6x.js → useInitialFocus-KdirjHEb.js} +51 -16
- package/dist/useInitialFocus-KdirjHEb.js.map +1 -0
- package/dist/{useInvalidateOnOptionsChange-BD2VBpbK.js → useInvalidateOnOptionsChange-ChrPmbtS.js} +6 -6
- package/dist/{useInvalidateOnOptionsChange-BD2VBpbK.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/{usePrefersReducedMotion-DR9B_D6w.js → usePrefersReducedMotion-BLoVFiJL.js} +11 -3
- package/dist/usePrefersReducedMotion-BLoVFiJL.js.map +1 -0
- package/dist/usePrefersReducedMotion.js +2 -1
- package/dist/usePrefersReducedMotion.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 +4 -4
- package/dist/AiMark-BfmK30vL.js.map +0 -1
- package/dist/Calendar-IzXG1aJw.js +0 -1761
- package/dist/Calendar-IzXG1aJw.js.map +0 -1
- package/dist/Chip-2OydLs66.js.map +0 -1
- package/dist/DataTable-DIXP9-Bx.js.map +0 -1
- package/dist/Dialog-_tHqOsbr.js.map +0 -1
- package/dist/DndHandleButton-BRlodkDO.js.map +0 -1
- package/dist/Drawer-D-ThWNp0.js.map +0 -1
- package/dist/DrillDown.module-1VBKDZRA.js +0 -27
- package/dist/DrillDown.module-1VBKDZRA.js.map +0 -1
- package/dist/FieldLabel-ThEmUiAq.js.map +0 -1
- package/dist/Lato.css +0 -24
- package/dist/ListView-YJscfG4x.js.map +0 -1
- package/dist/MultiSelectFieldSync-Cq5sena6.js.map +0 -1
- package/dist/MultiSelectMenuSync-BhNXsgAN.js.map +0 -1
- package/dist/NumberField-CxmJx4gs.js +0 -252
- package/dist/NumberField-CxmJx4gs.js.map +0 -1
- package/dist/Page-ZSHNJs7z.js.map +0 -1
- package/dist/SelectFieldSync-CeazN-gI.js.map +0 -1
- package/dist/SelectMenuSync-CPpE6vUG.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/Tab-DR5YYXkq.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-Hwt_oRbg.js.map +0 -1
- package/dist/Toaster-SqkX0Kes.js.map +0 -1
- package/dist/app-css.379821199ec8105f2efd.bundle.css +0 -57579
- package/dist/bugfix-71.1orion.css +0 -491
- package/dist/design-system.859a127fc3b66175f0f0.bundle.css +0 -34599
- package/dist/drag_indicator-BRHAPLSJ.js +0 -6
- package/dist/drag_indicator-BRHAPLSJ.js.map +0 -1
- package/dist/favicon.ico +0 -0
- package/dist/kendo-css.ed976099efbbcc8b0639.bundle.css +0 -20601
- package/dist/luxon-wpz4A-OQ.js.map +0 -1
- package/dist/main.e26f249642be9a4bd747.bundle.css +0 -50386
- package/dist/react-ORV84FjM.js.map +0 -1
- package/dist/stripInlineMarkdown-BhYLEiXu.js +0 -25
- package/dist/stripInlineMarkdown-BhYLEiXu.js.map +0 -1
- package/dist/sui.a9dc22e36a27b7ea1ee8.bundle.css +0 -41149
- package/dist/syncFilterUtils-SMop8ckR.js.map +0 -1
- package/dist/useInitialFocus-CGybEc6x.js.map +0 -1
- package/dist/useNumberField-CXFYUZ_n.js.map +0 -1
- package/dist/usePrefersReducedMotion-DR9B_D6w.js.map +0 -1
- package/dist/vite.svg +0 -1
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
-
import { forwardRef, useRef, useId, useMemo, useEffect, useState, useCallback } from 'react';
|
|
3
|
-
import { u as useBulkActionRunner, a as useToggleSelection, r as resolveBulkActionCheckState, b as resolveBulkActionLabel, M as MultiSelectOptions } from './bulkActionTypes-
|
|
4
|
-
import { O as OptionsDialog, a as OptionsPopover, u as useInvalidateOnOptionsChange } from './useInvalidateOnOptionsChange-
|
|
5
|
-
import { u as useSelectOrchestration, a as useProcessedOptions, b as buildSelectItems, s as shouldShowAddNewItem, A as AddNewItemButton, d as defaultSyncFilter, t as toSyncFilterFn } from './syncFilterUtils-
|
|
6
|
-
import { M as MenuFooter } from './MenuFooter-
|
|
2
|
+
import { forwardRef, useRef, useId, useMemo, useEffect, useState, useLayoutEffect, useCallback } from 'react';
|
|
3
|
+
import { u as useBulkActionRunner, a as useToggleSelection, r as resolveBulkActionCheckState, b as resolveBulkActionLabel, M as MultiSelectOptions } from './bulkActionTypes-bznuvizE.js';
|
|
4
|
+
import { O as OptionsDialog, a as OptionsPopover, u as useInvalidateOnOptionsChange } from './useInvalidateOnOptionsChange-ChrPmbtS.js';
|
|
5
|
+
import { u as useSelectOrchestration, a as useProcessedOptions, b as buildSelectItems, s as shouldShowAddNewItem, A as AddNewItemButton, d as defaultSyncFilter, t as toSyncFilterFn } from './syncFilterUtils-BNbAB0jz.js';
|
|
6
|
+
import { M as MenuFooter } from './MenuFooter-Dzhv0EfD.js';
|
|
7
7
|
import { u as useMenuInteraction } from './useMenuInteraction-nNF1dsrp.js';
|
|
8
8
|
import { r as resolveConfirmation, u as useConfirmationDraft } from './confirmationTypes-DeRtO_Cw.js';
|
|
9
9
|
import { a as arrayIdsEqual } from './arrayIdsEqual-DnevhwqN.js';
|
|
10
10
|
import { C as COMMON_PART, A as ANV_PART_ATTR } from './anvParts-DFVq7-Cm.js';
|
|
11
11
|
import { u as useDebouncedCallback } from './useDebouncedCallback-DLkapjcP.js';
|
|
12
|
-
import { S as SearchField } from './SearchField-
|
|
12
|
+
import { S as SearchField } from './SearchField-Bk-Ltu4v.js';
|
|
13
13
|
import { w as warnOnce } from './warnOnce-Y9PRHcU4.js';
|
|
14
14
|
|
|
15
15
|
const PARTS = {
|
|
@@ -65,7 +65,6 @@ const MultiSelectMenu = forwardRef((props, ref) => {
|
|
|
65
65
|
displayAs,
|
|
66
66
|
initialLoad,
|
|
67
67
|
initialLoadPerformed,
|
|
68
|
-
setInitialLoadPerformed,
|
|
69
68
|
options,
|
|
70
69
|
loading,
|
|
71
70
|
loadingMore,
|
|
@@ -112,6 +111,10 @@ const MultiSelectMenu = forwardRef((props, ref) => {
|
|
|
112
111
|
}, [confirmation.enabled, selectAllProp]);
|
|
113
112
|
const [inputValue, setInputValue] = useState("");
|
|
114
113
|
const searchValue = disableSearch ? "" : inputValue;
|
|
114
|
+
const searchValueRef = useRef(searchValue);
|
|
115
|
+
useLayoutEffect(() => {
|
|
116
|
+
searchValueRef.current = searchValue;
|
|
117
|
+
});
|
|
115
118
|
const { pinnedSections, ungroupedItems, groupSections } = useProcessedOptions(
|
|
116
119
|
{
|
|
117
120
|
options,
|
|
@@ -305,37 +308,21 @@ const MultiSelectMenu = forwardRef((props, ref) => {
|
|
|
305
308
|
},
|
|
306
309
|
[getMenuProps, onMenuKeyDown]
|
|
307
310
|
);
|
|
311
|
+
const wantsInitialLoad = initialLoad === "immediate" || initialLoad === "open" && isOpen;
|
|
308
312
|
useEffect(() => {
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
}
|
|
314
|
-
};
|
|
315
|
-
performInitialLoad();
|
|
316
|
-
}, [loadOptions, initialLoadPerformed, initialLoad, setInitialLoadPerformed]);
|
|
313
|
+
if (wantsInitialLoad && !initialLoadPerformed) {
|
|
314
|
+
loadOptions(searchValueRef.current, { initial: true });
|
|
315
|
+
}
|
|
316
|
+
}, [loadOptions, initialLoadPerformed, wantsInitialLoad]);
|
|
317
317
|
const prevIsOpenRef = useRef(false);
|
|
318
318
|
useEffect(() => {
|
|
319
319
|
const wasOpen = prevIsOpenRef.current;
|
|
320
320
|
prevIsOpenRef.current = isOpen;
|
|
321
|
-
if (isOpen && !wasOpen) {
|
|
322
|
-
if (initialLoad === "open" && !initialLoadPerformed) {
|
|
323
|
-
loadOptions("", { initial: true }).then(() => {
|
|
324
|
-
setInitialLoadPerformed(true);
|
|
325
|
-
});
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
321
|
if (!isOpen && wasOpen) {
|
|
329
322
|
setInputValue("");
|
|
330
323
|
loadOptions("", { initial: true });
|
|
331
324
|
}
|
|
332
|
-
}, [
|
|
333
|
-
isOpen,
|
|
334
|
-
initialLoad,
|
|
335
|
-
initialLoadPerformed,
|
|
336
|
-
loadOptions,
|
|
337
|
-
setInitialLoadPerformed
|
|
338
|
-
]);
|
|
325
|
+
}, [isOpen, loadOptions]);
|
|
339
326
|
useEffect(() => {
|
|
340
327
|
if (!isOpen || displayAs !== "popover") return;
|
|
341
328
|
const frameId = requestAnimationFrame(() => {
|
|
@@ -617,4 +604,4 @@ const MultiSelectMenuSync = (props) => {
|
|
|
617
604
|
};
|
|
618
605
|
|
|
619
606
|
export { MultiSelectMenu as M, MultiSelectMenuSync as a };
|
|
620
|
-
//# sourceMappingURL=MultiSelectMenuSync-
|
|
607
|
+
//# sourceMappingURL=MultiSelectMenuSync-AVcf8ZUZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultiSelectMenuSync-AVcf8ZUZ.js","sources":["../src/components/MultiSelectMenu/parts.ts","../src/components/MultiSelectMenu/MultiSelectMenu.tsx","../src/components/MultiSelectMenu/MultiSelectMenuSync.tsx"],"sourcesContent":["import { COMMON_PART } from \"../../internal/constants/anvParts\";\n\n/**\n * `data-anv-part` names for MultiSelectMenu interactive sub-elements.\n *\n * There is no wrapper root — attach consumer `data-*` (e.g. `data-cy`) via\n * props; they are merged into the trigger render-prop bag. Portaled\n * `menu` / `option` / `popover` / `dialog` / footer buttons come from shared\n * internals (not redeclared here).\n */\nexport const PARTS = {\n trigger: COMMON_PART.trigger,\n input: COMMON_PART.input,\n} as const;\n","import type {\n MultiSelectMenuHandle,\n MultiSelectMenuOption,\n MultiSelectMenuProps,\n} from \"./types\";\nimport {\n type ChangeEvent,\n type KeyboardEvent,\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { warnOnce } from \"../../internal/functions\";\nimport { MultiSelectOptions } from \"../../internal/components/MultiSelectOptions\";\nimport { useDebouncedCallback } from \"../../internal/hooks/useDebouncedCallback\";\nimport { OptionsPopover } from \"../../internal/components/OptionsPopover/OptionsPopover\";\nimport { OptionsDialog } from \"../../internal/components/OptionsDialog/OptionsDialog\";\nimport { AddNewItemButton } from \"../../internal/components/AddNewItemButton\";\nimport { shouldShowAddNewItem } from \"../../internal/types/addNewItemTypes\";\nimport { MenuFooter } from \"../../internal/components/MenuFooter/MenuFooter\";\nimport { useProcessedOptions } from \"../../internal/hooks/useProcessedOptions\";\nimport { buildSelectItems } from \"../../internal/functions/buildSelectItems\";\nimport { useMenuInteraction } from \"../SelectMenu/internal/useMenuInteraction\";\nimport { useToggleSelection } from \"../../internal/hooks/useToggleSelection\";\nimport type { SelectItem } from \"../../internal/types/selectFieldInternalTypes\";\nimport { useSelectOrchestration } from \"../../internal/hooks/useSelectOrchestration\";\nimport { useConfirmationDraft } from \"../../internal/hooks/useConfirmationDraft\";\nimport { useBulkActionRunner } from \"../../internal/hooks/useBulkActionRunner\";\nimport {\n resolveBulkActionCheckState,\n resolveBulkActionLabel,\n} from \"../../internal/types/bulkActionTypes\";\nimport { resolveConfirmation } from \"../../internal/types/confirmationTypes\";\nimport { arrayIdsEqual } from \"../../internal/utils/arrayIdsEqual\";\nimport { SearchField } from \"../../components\";\nimport type { DataAttributes } from \"../../types\";\nimport { ANV_PART_ATTR } from \"../../internal/constants/anvParts\";\nimport { PARTS } from \"./parts\";\n\n/** Multi-select menu opened from a custom trigger. Selection is controlled. */\nexport const MultiSelectMenu = forwardRef<\n MultiSelectMenuHandle,\n MultiSelectMenuProps\n>((props, ref) => {\n const triggerRef = useRef<HTMLButtonElement>(null);\n const searchRef = useRef<HTMLInputElement>(null);\n\n const dataAttributes = Object.fromEntries(\n Object.entries(props).filter(([key]) => key.startsWith(\"data-\")),\n ) as DataAttributes;\n\n const {\n id: idProp,\n value: selectedOptions,\n initialLoad: initialLoadProp,\n displayMenuAs: displayMenuAsProp,\n lazy,\n loadOptions: loadOptionsProp,\n label,\n searchPlaceholder,\n debounceMs = 200,\n onSelectedOptionsChange,\n cache,\n pinned,\n selectAll: selectAllProp,\n selectFiltered: selectFilteredProp,\n virtualize,\n disableSearch,\n popoverWidth,\n trigger,\n onSearchChange,\n onMenuKeyDown,\n onImplicitClose,\n onExplicitClose,\n addItemLabel,\n onAddNewItem,\n confirmation: confirmationProp,\n clear,\n } = props;\n\n const confirmation = resolveConfirmation(confirmationProp);\n\n const groupToString =\n \"groupToString\" in props ? props.groupToString : undefined;\n const groupSorter = \"groupSorter\" in props ? props.groupSorter : undefined;\n\n const autoId = useId();\n const id = idProp ?? autoId;\n\n if (disableSearch && selectFilteredProp) {\n warnOnce(\n \"MultiSelectMenu: `selectFiltered` has no effect when `disableSearch` is true because there is no search input to produce filtered results.\",\n );\n }\n\n const {\n displayAs,\n initialLoad,\n initialLoadPerformed,\n options,\n loading,\n loadingMore,\n hasMore,\n loadOptions,\n loadMore,\n } = useSelectOrchestration({\n lazy,\n loadOptions: loadOptionsProp,\n cache,\n lazyOptions: \"lazyOptions\" in props ? props.lazyOptions : undefined,\n initialLoad: initialLoadProp,\n displayMenuAs: displayMenuAsProp,\n ref,\n });\n\n // Carry the raw `checkState` (which may be a function of the current\n // selection) through here; it is resolved against the live draft in\n // `bulkActionItems` so the row can reflect the current selection.\n const selectAll = useMemo(\n () =>\n selectAllProp\n ? {\n label: selectAllProp.label,\n onClick: selectAllProp.onClick,\n compute: selectAllProp.compute,\n checkState: selectAllProp.checkState,\n }\n : undefined,\n [selectAllProp],\n );\n\n const selectFiltered = useMemo(\n () =>\n selectFilteredProp\n ? (searchValue: string) => {\n const config = selectFilteredProp(searchValue);\n return {\n label: config.label,\n onClick: config.onClick,\n compute: config.compute,\n checkState: config.checkState,\n };\n }\n : undefined,\n [selectFilteredProp],\n );\n\n // Warn once if `selectAll` is configured with `onClick` while confirmation is\n // enabled — that combination bypasses the draft. `selectFiltered` is a\n // function whose returned shape is only known at activation, so its warning\n // lives at the call site (runBulkAction).\n useEffect(() => {\n if (!confirmation.enabled) return;\n if (selectAllProp && !selectAllProp.compute) {\n warnOnce(\n \"MultiSelectMenu: `selectAll.onClick` bypasses confirmation. \" +\n \"Use `selectAll.compute` to integrate the bulk action with the draft.\",\n );\n }\n }, [confirmation.enabled, selectAllProp]);\n\n const [inputValue, setInputValue] = useState(\"\");\n\n const searchValue = disableSearch ? \"\" : inputValue;\n // A reload after `invalidate` searches for the text still in the input.\n // Read through a ref so typing during a pending first load starts no extra load.\n const searchValueRef = useRef(searchValue);\n useLayoutEffect(() => {\n searchValueRef.current = searchValue;\n });\n\n const { pinnedSections, ungroupedItems, groupSections } = useProcessedOptions(\n {\n options,\n pinned,\n searchValue,\n groupToString,\n groupSorter,\n },\n );\n\n const [isOpen, setIsOpen] = useState(false);\n\n const {\n displayValue: draftSelectedOptions,\n setDraft,\n apply,\n cancel,\n } = useConfirmationDraft({\n value: selectedOptions,\n onCommit: onSelectedOptionsChange,\n isOpen,\n enabled: confirmation.enabled,\n isEqual: arrayIdsEqual,\n });\n\n const {\n pending: bulkPending,\n runBulk,\n setDraftAndBump,\n reset: resetBulk,\n } = useBulkActionRunner<MultiSelectMenuOption>({ setDraft });\n\n const { handleItemClick } = useToggleSelection({\n options,\n pinnedSections,\n selectedOptions: draftSelectedOptions,\n // Route per-option toggles through setDraftAndBump so that any in-flight\n // bulk-action promise's resolution is discarded if it arrives after this\n // click.\n onSelectedOptionsChange: setDraftAndBump,\n });\n\n // Run a bulk action against the current draft. If the config provides a\n // `compute` function we run it through the runner (which writes to the\n // draft, supports promises, and discards stale resolutions). If only\n // `onClick` is provided, fire it as-is — the consumer owns the commit.\n const runBulkAction = useCallback(\n (\n config: {\n onClick?: () => void;\n compute?: (\n current: MultiSelectMenuOption[],\n ) => MultiSelectMenuOption[] | Promise<MultiSelectMenuOption[]>;\n },\n kind: \"selectAll\" | \"selectFiltered\",\n ) => {\n if (config.compute) {\n runBulk(config.compute, draftSelectedOptions);\n } else if (config.onClick) {\n if (confirmation.enabled && kind === \"selectFiltered\") {\n warnOnce(\n \"MultiSelectMenu: `selectFiltered.onClick` bypasses confirmation. \" +\n \"Use `selectFiltered.compute` to integrate the bulk action with the draft.\",\n );\n }\n config.onClick();\n }\n },\n [runBulk, draftSelectedOptions, confirmation.enabled],\n );\n\n const bulkActionItems = useMemo(() => {\n const items: SelectItem[] = [];\n if (selectAll && !searchValue) {\n items.push({\n id: \"select-all\",\n type: \"select-all\",\n original: {\n id: \"select-all\",\n label: resolveBulkActionLabel(selectAll.label, draftSelectedOptions),\n },\n checkState: bulkPending\n ? \"loading\"\n : resolveBulkActionCheckState(\n selectAll.checkState,\n draftSelectedOptions,\n ),\n });\n }\n if (selectFiltered && searchValue && !loading) {\n const config = selectFiltered(searchValue);\n items.push({\n id: \"select-filtered\",\n type: \"select-filtered\",\n original: {\n id: \"select-filtered\",\n label: resolveBulkActionLabel(\n config.label,\n draftSelectedOptions,\n `Select items matching \"${searchValue}\"`,\n ),\n },\n checkState: bulkPending\n ? \"loading\"\n : resolveBulkActionCheckState(\n config.checkState,\n draftSelectedOptions,\n ),\n });\n }\n return items;\n }, [\n selectAll,\n selectFiltered,\n searchValue,\n loading,\n bulkPending,\n draftSelectedOptions,\n ]);\n\n const { items, sectionsMeta } = useMemo(\n () =>\n buildSelectItems({\n prefixItems: bulkActionItems,\n pinnedSections,\n groupSections,\n ungroupedItems,\n }),\n [bulkActionItems, pinnedSections, groupSections, ungroupedItems],\n );\n\n const selectedItemIds = useMemo(\n () => new Set(draftSelectedOptions.map((o) => o.id)),\n [draftSelectedOptions],\n );\n\n const handleItemActivate = useCallback(\n (item: SelectItem) => {\n if (item.type === \"select-all\") {\n if (selectAll) runBulkAction(selectAll, \"selectAll\");\n } else if (item.type === \"select-filtered\" && selectFiltered) {\n runBulkAction(selectFiltered(searchValue), \"selectFiltered\");\n } else if (\n item.type === \"option\" ||\n item.type === \"pinned-option\" ||\n item.type === \"grouped-option\"\n ) {\n handleItemClick(item.original);\n }\n },\n [selectAll, selectFiltered, searchValue, handleItemClick, runBulkAction],\n );\n\n // Apply, Clear, and add-new set this so close handlers skip draft cancel.\n const pendingApplyRef = useRef(false);\n\n const {\n closeMenu,\n highlightedIndex,\n getTriggerProps,\n getMenuProps,\n getItemProps,\n listRef,\n menuContainerRef,\n handleKeyDown,\n } = useMenuInteraction({\n items: items,\n sectionsMeta,\n onItemActivate: handleItemActivate,\n selectedItemIds,\n displayAs,\n closeOnActivate: false,\n // While a bulk-action promise is pending, disable all rows but keep the\n // menu open so confirmation/draft UX is not interrupted.\n disabled: bulkPending,\n closeOnDisabled: false,\n id,\n triggerRef,\n label,\n isOpen,\n setIsOpen,\n onImplicitClose: () => {\n if (confirmation.enabled && !pendingApplyRef.current) cancel();\n pendingApplyRef.current = false;\n resetBulk();\n onImplicitClose?.();\n },\n onExplicitClose: () => {\n if (confirmation.enabled && !pendingApplyRef.current) cancel();\n pendingApplyRef.current = false;\n resetBulk();\n onExplicitClose?.();\n },\n });\n\n const debouncedOptionLoader = useDebouncedCallback((value: string) => {\n loadOptions(value, { initial: true });\n }, debounceMs);\n\n const handleInputChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value;\n setInputValue(value);\n debouncedOptionLoader(value);\n onSearchChange?.(value);\n },\n [debouncedOptionLoader, onSearchChange],\n );\n\n const handleInputKeyDown = useCallback(\n (e: KeyboardEvent) => {\n onMenuKeyDown?.(e);\n handleKeyDown(e);\n },\n [handleKeyDown, onMenuKeyDown],\n );\n\n const getMenuPropsWithKeyDown: typeof getMenuProps = useCallback(\n (opts) => {\n const menuProps = getMenuProps(opts);\n if (!onMenuKeyDown) return menuProps;\n return {\n ...menuProps,\n onKeyDown: (e: KeyboardEvent) => {\n onMenuKeyDown(e);\n menuProps.onKeyDown(e);\n },\n };\n },\n [getMenuProps, onMenuKeyDown],\n );\n\n const wantsInitialLoad =\n initialLoad === \"immediate\" || (initialLoad === \"open\" && isOpen);\n useEffect(() => {\n if (wantsInitialLoad && !initialLoadPerformed) {\n loadOptions(searchValueRef.current, { initial: true });\n }\n }, [loadOptions, initialLoadPerformed, wantsInitialLoad]);\n\n const prevIsOpenRef = useRef(false);\n useEffect(() => {\n const wasOpen = prevIsOpenRef.current;\n prevIsOpenRef.current = isOpen;\n\n if (!isOpen && wasOpen) {\n setInputValue(\"\");\n loadOptions(\"\", { initial: true });\n }\n }, [isOpen, loadOptions]);\n\n // Wait a frame so the popover is in the tree before focusing search/list.\n useEffect(() => {\n if (!isOpen || displayAs !== \"popover\") return;\n\n const frameId = requestAnimationFrame(() => {\n if (!disableSearch) {\n searchRef.current?.focus();\n } else {\n menuContainerRef.current?.focus();\n }\n });\n\n return () => cancelAnimationFrame(frameId);\n }, [isOpen, displayAs, disableSearch, menuContainerRef]);\n\n const handleLoadMore = async () => {\n await loadMore(searchValue);\n };\n\n const handleClickOutside = useCallback(() => {\n closeMenu({ restoreFocus: false });\n }, [closeMenu]);\n\n const triggerProps = {\n ...getTriggerProps(),\n ...dataAttributes,\n [ANV_PART_ATTR]: PARTS.trigger,\n };\n\n const menuPropsForAria = getMenuProps();\n const activeDescendant = menuPropsForAria[\"aria-activedescendant\"];\n\n const handleSearchClear = useCallback(() => {\n setInputValue(\"\");\n debouncedOptionLoader(\"\");\n onSearchChange?.(\"\");\n }, [debouncedOptionLoader, onSearchChange]);\n\n const handleApply = useCallback(() => {\n apply();\n pendingApplyRef.current = true;\n closeMenu();\n }, [apply, closeMenu]);\n\n const handleCancel = useCallback(() => {\n closeMenu();\n }, [closeMenu]);\n\n const searchInput = !disableSearch ? (\n <SearchField\n ref={searchRef}\n value={inputValue}\n onChange={handleInputChange as React.ChangeEventHandler<HTMLInputElement>}\n onKeyDown={\n handleInputKeyDown as React.KeyboardEventHandler<HTMLInputElement>\n }\n onClear={handleSearchClear}\n aria-activedescendant={activeDescendant}\n aria-controls={menuPropsForAria.id}\n placeholder={searchPlaceholder}\n type=\"search\"\n {...{ [ANV_PART_ATTR]: PARTS.input }}\n />\n ) : null;\n\n const addNewItemButton = shouldShowAddNewItem(\n onAddNewItem,\n addItemLabel,\n inputValue,\n ) ? (\n <AddNewItemButton\n searchText={inputValue}\n addItemLabel={addItemLabel}\n onAddNewItem={onAddNewItem}\n onCloseMenu={() => {\n pendingApplyRef.current = true;\n closeMenu({ restoreFocus: false });\n }}\n />\n ) : null;\n\n const confirmationConfig = confirmation.enabled\n ? {\n applyLabel: confirmation.applyLabel,\n cancelLabel: confirmation.cancelLabel,\n onApply: handleApply,\n onCancel: handleCancel,\n }\n : undefined;\n // Wrap clear's onClick so clicking Clear always also closes the menu and\n // returns focus to the trigger. In confirmation mode, flag the close as an\n // intentional commit so the implicit-close handler doesn't treat it as a\n // cancel.\n const wrappedClear = clear\n ? {\n ...clear,\n onClick: () => {\n clear.onClick();\n if (confirmation.enabled) pendingApplyRef.current = true;\n closeMenu();\n },\n }\n : undefined;\n // Only render a footer when at least one slot has content; passing an empty\n // <MenuFooter/> would still draw the popover/dialog footer divider.\n const hasFooter =\n !!wrappedClear || !!confirmationConfig || !!addNewItemButton;\n const footer = hasFooter ? (\n <MenuFooter\n clear={wrappedClear}\n confirmation={confirmationConfig}\n addNew={addNewItemButton}\n />\n ) : undefined;\n\n if (displayAs === \"dialog\") {\n return (\n <>\n {trigger(triggerProps)}\n <OptionsDialog\n id={`${id}-dialog`}\n isOpen={isOpen}\n onClose={closeMenu}\n title={label}\n field={searchInput ?? undefined}\n footer={footer ?? undefined}\n initialFocusResolver={\n !disableSearch\n ? (elements) =>\n elements.find((el) => el.tagName === \"INPUT\") || elements[0]\n : undefined\n }\n >\n <MultiSelectOptions\n ref={listRef}\n isOpen\n items={items}\n sectionsMeta={sectionsMeta}\n getMenuProps={(opts) => {\n const menuProps = getMenuPropsWithKeyDown(opts);\n if (disableSearch) {\n return menuProps;\n }\n return { ...menuProps, tabIndex: -1 };\n }}\n getItemProps={getItemProps}\n highlightedIndex={highlightedIndex}\n selectedOptions={draftSelectedOptions}\n hasMore={hasMore}\n onLoadMore={handleLoadMore}\n loading={loading}\n loadingMore={loadingMore}\n virtualize={virtualize}\n />\n </OptionsDialog>\n </>\n );\n }\n\n return (\n <>\n {trigger(triggerProps)}\n <OptionsPopover\n id={`${id}-popover`}\n referenceElement={triggerRef}\n open={isOpen && displayAs === \"popover\"}\n onClose={handleClickOutside}\n width={popoverWidth ?? 320}\n footer={footer ?? undefined}\n >\n {searchInput}\n <MultiSelectOptions\n ref={listRef}\n isOpen={isOpen}\n items={items}\n sectionsMeta={sectionsMeta}\n getMenuProps={(opts) => {\n const menuProps = getMenuPropsWithKeyDown(opts);\n if (disableSearch) {\n return menuProps;\n }\n return { ...menuProps, tabIndex: -1 };\n }}\n getItemProps={getItemProps}\n highlightedIndex={highlightedIndex}\n selectedOptions={draftSelectedOptions}\n hasMore={hasMore}\n onLoadMore={handleLoadMore}\n loading={loading}\n loadingMore={loadingMore}\n virtualize={virtualize}\n />\n </OptionsPopover>\n </>\n );\n});\n\nMultiSelectMenu.displayName = \"MultiSelectMenu\";\n","import { useMemo, useRef } from \"react\";\nimport type { MatchSorterOptions } from \"match-sorter\";\nimport { MultiSelectMenu } from \"./MultiSelectMenu\";\nimport type {\n MultiSelectMenuHandle,\n MultiSelectMenuProps,\n MultiSelectMenuOption,\n} from \"./types\";\nimport type { CheckState } from \"../../types\";\nimport {\n type SyncFilterFn,\n defaultSyncFilter,\n toSyncFilterFn,\n} from \"../../internal/functions/syncFilterUtils\";\nimport { useInvalidateOnOptionsChange } from \"../../internal/hooks/useInvalidateOnOptionsChange\";\n\nconst getEnabledSelectionStats = (\n options: MultiSelectMenuOption[],\n current: MultiSelectMenuOption[],\n) => {\n const enabledOptions = options.filter((opt) => !opt.disabled);\n const enabledIds = new Set(enabledOptions.map((opt) => opt.id));\n const selectedCount = current.filter((v) => enabledIds.has(v.id)).length;\n const totalCount = enabledOptions.length;\n const allSelected = totalCount > 0 && selectedCount === totalCount;\n\n return { enabledOptions, enabledIds, selectedCount, allSelected };\n};\n\nexport type MultiSelectMenuSyncProps<\n TID extends string | number = string | number,\n> = Omit<\n MultiSelectMenuProps<TID>,\n | \"loadOptions\"\n | \"lazy\"\n | \"debounceMs\"\n | \"cache\"\n | \"initialLoad\"\n | \"selectAll\"\n | \"selectFiltered\"\n> & {\n /** In-memory options. Search filters this list instead of calling `loadOptions`. */\n options: MultiSelectMenuOption<TID>[];\n /**\n * Filter and sort as the user types. A function returns the display order;\n * a match-sorter options object customizes the default. Defaults to\n * match-sorter on `label` and `searchText`.\n */\n filter?:\n | SyncFilterFn<TID, MultiSelectMenuOption<TID>>\n | MatchSorterOptions<MultiSelectMenuOption<TID>>;\n /**\n * Select All when search is empty. `true` uses the default label; an object\n * customizes the label. Click and check state are owned by Sync.\n */\n selectAll?: boolean | { label?: string | ((checked: boolean) => string) };\n /**\n * Select Filtered when search is non-empty. `true` uses the default label;\n * a function may return a custom label. Click and check state are owned by\n * Sync.\n */\n selectFiltered?: boolean | ((searchValue: string) => { label?: string });\n};\n\n/** {@link MultiSelectMenu} for a client-side `options` list. */\nexport const MultiSelectMenuSync = (props: MultiSelectMenuSyncProps) => {\n const {\n options,\n filter: filterProp = defaultSyncFilter,\n selectAll: selectAllProp,\n selectFiltered: selectFilteredProp,\n value,\n onSelectedOptionsChange,\n ...rest\n } = props;\n\n const filter = useMemo(() => toSyncFilterFn(filterProp), [filterProp]);\n\n const selectAllConfig = useMemo(() => {\n if (!selectAllProp) return undefined;\n\n const labelProp =\n typeof selectAllProp === \"object\" ? selectAllProp.label : undefined;\n\n const checkState = (current: MultiSelectMenuOption[]): CheckState => {\n const { selectedCount, allSelected } = getEnabledSelectionStats(\n options,\n current,\n );\n return allSelected\n ? \"checked\"\n : selectedCount > 0\n ? \"indeterminate\"\n : \"unchecked\";\n };\n\n const label =\n typeof labelProp === \"function\"\n ? (current: MultiSelectMenuOption[]) =>\n labelProp(getEnabledSelectionStats(options, current).allSelected)\n : labelProp;\n\n const compute = (current: MultiSelectMenuOption[]) => {\n const { enabledOptions, enabledIds } = getEnabledSelectionStats(\n options,\n current,\n );\n const currentIds = new Set(current.map((v) => v.id));\n const allEnabledSelected =\n enabledOptions.length > 0 &&\n enabledOptions.every((o) => currentIds.has(o.id));\n if (allEnabledSelected) {\n return current.filter((v) => !enabledIds.has(v.id));\n }\n const additions = enabledOptions.filter((o) => !currentIds.has(o.id));\n return [...current, ...additions];\n };\n\n return {\n label,\n compute,\n checkState,\n };\n }, [selectAllProp, options]);\n\n const selectFilteredConfig = useMemo(() => {\n if (!selectFilteredProp) return undefined;\n\n return (searchValue: string) => {\n const filteredOptions = filter(options, searchValue);\n const enabledFilteredOptions = filteredOptions.filter(\n (opt) => !opt.disabled,\n );\n const enabledFilteredIds = new Set(\n enabledFilteredOptions.map((o) => o.id),\n );\n\n const label =\n (typeof selectFilteredProp === \"function\"\n ? selectFilteredProp(searchValue).label\n : undefined) ?? `Select items matching \"${searchValue}\"`;\n\n const checkState = (current: MultiSelectMenuOption[]): CheckState => {\n const currentIds = new Set(current.map((v) => v.id));\n const allFilteredSelected =\n enabledFilteredOptions.length > 0 &&\n enabledFilteredOptions.every((opt) => currentIds.has(opt.id));\n const someFilteredSelected = enabledFilteredOptions.some((opt) =>\n currentIds.has(opt.id),\n );\n\n return allFilteredSelected\n ? \"checked\"\n : someFilteredSelected\n ? \"indeterminate\"\n : \"unchecked\";\n };\n\n const compute = (current: MultiSelectMenuOption[]) => {\n const currentIds = new Set(current.map((v) => v.id));\n const allEnabledFilteredSelected =\n enabledFilteredOptions.length > 0 &&\n enabledFilteredOptions.every((o) => currentIds.has(o.id));\n if (allEnabledFilteredSelected) {\n return current.filter((v) => !enabledFilteredIds.has(v.id));\n }\n const additions = enabledFilteredOptions.filter(\n (o) => !currentIds.has(o.id),\n );\n return [...current, ...additions];\n };\n\n return {\n label,\n compute,\n checkState,\n };\n };\n }, [selectFilteredProp, options, filter]);\n\n const fieldRef = useRef<MultiSelectMenuHandle>(null);\n useInvalidateOnOptionsChange(fieldRef, options);\n\n return (\n <MultiSelectMenu\n ref={fieldRef}\n lazy={false}\n loadOptions={(searchValue) => filter(options, searchValue)}\n debounceMs={0}\n value={value}\n onSelectedOptionsChange={onSelectedOptionsChange}\n selectAll={selectAllConfig}\n selectFiltered={selectFilteredConfig}\n {...rest}\n />\n );\n};\n"],"names":["searchValue","items"],"mappings":"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"}
|
|
@@ -1,10 +1,27 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { useState, useEffect, useMemo, useRef, useCallback, forwardRef, useId, isValidElement } from 'react';
|
|
4
|
+
import { c as cx } from './index-De1g9FRV.js';
|
|
5
|
+
import { S as Spinner } from './Spinner-B7tTWcP6.js';
|
|
6
|
+
import { t as textFieldStyles } from './TextField.module-B3y6caP9.js';
|
|
7
|
+
import { w as warnDeprecatedErrorUsage } from './utils-DwLrXpmt.js';
|
|
8
|
+
import { B as Button } from './Button-B_E6ybA-.js';
|
|
9
|
+
import { I as Icon } from './Icon-B5zwN7GD.js';
|
|
10
|
+
import { S as SvgAdd } from './add-BcQkAUip.js';
|
|
11
|
+
import { F as FieldLabel } from './FieldLabel-Cn559Brf.js';
|
|
12
|
+
import { f as maskitoNumberOptionsGenerator, g as maskitoParseNumber, h as maskitoStringifyNumber, u as useMaskito } from './index.esm-CQXMoq5w.js';
|
|
3
13
|
import { u as usePrevious } from './usePrevious-Bvq-5auG.js';
|
|
4
14
|
import { u as useOptionallyControlledState } from './useOptionallyControlledState-DbDuos5L.js';
|
|
5
15
|
import { u as useMergeRefs } from './useMergeRefs-Dfmtq9cI.js';
|
|
16
|
+
import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DjqeAJZ9.js';
|
|
17
|
+
import { u as useFocusWithin } from './useFocusWithin-hi77jsrB.js';
|
|
18
|
+
import { w as warnOnce } from './warnOnce-Y9PRHcU4.js';
|
|
19
|
+
import { c as childrenToString } from './childrenToString-Bz9MqbHb.js';
|
|
20
|
+
import { useTrackingId } from './useTrackingId.js';
|
|
21
|
+
import { s as stripInlineMarkdown } from './stripInlineMarkdown-BV12XXzl.js';
|
|
22
|
+
import { H as Helper } from './Helper-BHpOgh7k.js';
|
|
6
23
|
|
|
7
|
-
function usePlatform() {
|
|
24
|
+
import './NumberField.css';function usePlatform() {
|
|
8
25
|
const [platform, setPlatform] = useState(
|
|
9
26
|
detectPlatform()
|
|
10
27
|
);
|
|
@@ -1562,5 +1579,234 @@ function convertValueProp(v, { maskitoParams }) {
|
|
|
1562
1579
|
);
|
|
1563
1580
|
}
|
|
1564
1581
|
|
|
1565
|
-
|
|
1566
|
-
|
|
1582
|
+
const small = "_small_1n8zj_31";
|
|
1583
|
+
const large = "_large_1n8zj_36";
|
|
1584
|
+
const numberFieldStyles = {
|
|
1585
|
+
"stepper-buttons": "_stepper-buttons_1n8zj_1",
|
|
1586
|
+
"stepper-button": "_stepper-button_1n8zj_1",
|
|
1587
|
+
small: small,
|
|
1588
|
+
large: large
|
|
1589
|
+
};
|
|
1590
|
+
|
|
1591
|
+
const SvgRemove = (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: "M18 13H6c-.55 0-1-.45-1-1s.45-1 1-1h12c.55 0 1 .45 1 1s-.45 1-1 1z" }));
|
|
1592
|
+
|
|
1593
|
+
const NumberField = forwardRef(
|
|
1594
|
+
(props, ref) => {
|
|
1595
|
+
const { layoutStyles, componentProps } = useLayoutPropsUtil(props);
|
|
1596
|
+
const {
|
|
1597
|
+
className,
|
|
1598
|
+
error,
|
|
1599
|
+
errorAriaLive: _errorAriaLive,
|
|
1600
|
+
defaultValue: defaultValueProp,
|
|
1601
|
+
value: valueProp,
|
|
1602
|
+
label,
|
|
1603
|
+
moreInfo,
|
|
1604
|
+
prefix,
|
|
1605
|
+
suffix,
|
|
1606
|
+
size,
|
|
1607
|
+
required,
|
|
1608
|
+
onChange: onChangeProp,
|
|
1609
|
+
onFocus: onFocusProp,
|
|
1610
|
+
onBlur: onBlurProp,
|
|
1611
|
+
id: idProp,
|
|
1612
|
+
description,
|
|
1613
|
+
hint,
|
|
1614
|
+
warning,
|
|
1615
|
+
loading,
|
|
1616
|
+
disabled,
|
|
1617
|
+
readOnly,
|
|
1618
|
+
labelProps,
|
|
1619
|
+
style,
|
|
1620
|
+
placeholder,
|
|
1621
|
+
minValue,
|
|
1622
|
+
maxValue,
|
|
1623
|
+
maximumFractionDigits = 0,
|
|
1624
|
+
minimumFractionDigits = 0,
|
|
1625
|
+
step = 1,
|
|
1626
|
+
hideControls = false,
|
|
1627
|
+
hideLabel = false,
|
|
1628
|
+
isHighlighted = false,
|
|
1629
|
+
...rest
|
|
1630
|
+
} = componentProps;
|
|
1631
|
+
const numberFieldRef = useRef(null);
|
|
1632
|
+
const { props: wrapperProps } = useFocusWithin({
|
|
1633
|
+
onFocus: (e) => {
|
|
1634
|
+
onFocusProp?.(e);
|
|
1635
|
+
},
|
|
1636
|
+
onBlur: (e) => {
|
|
1637
|
+
onBlurProp?.(e);
|
|
1638
|
+
}
|
|
1639
|
+
});
|
|
1640
|
+
const { inputProps, inputRef, incrementButtonProps, decrementButtonProps } = useNumberField({
|
|
1641
|
+
minValue,
|
|
1642
|
+
maxValue,
|
|
1643
|
+
maximumFractionDigits,
|
|
1644
|
+
minimumFractionDigits,
|
|
1645
|
+
step,
|
|
1646
|
+
value: valueProp,
|
|
1647
|
+
defaultValue: defaultValueProp,
|
|
1648
|
+
onChange: onChangeProp,
|
|
1649
|
+
label,
|
|
1650
|
+
readOnly
|
|
1651
|
+
});
|
|
1652
|
+
const combinedInputRef = useMergeRefs([numberFieldRef, inputRef, ref]);
|
|
1653
|
+
const labelUid = useId();
|
|
1654
|
+
const id = idProp ?? labelUid;
|
|
1655
|
+
const prefixUid = useId();
|
|
1656
|
+
const suffixUid = useId();
|
|
1657
|
+
const helperUid = useId();
|
|
1658
|
+
const moreInfoUid = useId();
|
|
1659
|
+
warnDeprecatedErrorUsage("NumberField", error);
|
|
1660
|
+
if (label === void 0) {
|
|
1661
|
+
warnOnce(
|
|
1662
|
+
"NumberField: label will be required in v4.0.0. Use hideLabel to visually hide the label."
|
|
1663
|
+
);
|
|
1664
|
+
}
|
|
1665
|
+
const errorMessages = typeof error === "boolean" || error === void 0 ? void 0 : error;
|
|
1666
|
+
const hasHelperText = hint || errorMessages || warning || description;
|
|
1667
|
+
const ariaDescribedBy = [hasHelperText && helperUid, moreInfo && moreInfoUid].filter(Boolean).join(" ") || void 0;
|
|
1668
|
+
const styleCombined = { ...style, ...layoutStyles };
|
|
1669
|
+
const data = {
|
|
1670
|
+
label: childrenToString(props.label),
|
|
1671
|
+
prefix: childrenToString(props.prefix),
|
|
1672
|
+
suffix: childrenToString(props.suffix),
|
|
1673
|
+
description: childrenToString(props.description),
|
|
1674
|
+
size: props.size,
|
|
1675
|
+
minValue: props.minValue,
|
|
1676
|
+
maxValue: props.maxValue,
|
|
1677
|
+
step: props.step,
|
|
1678
|
+
maximumFractionDigits: props.maximumFractionDigits,
|
|
1679
|
+
minimumFractionDigits: props.minimumFractionDigits
|
|
1680
|
+
};
|
|
1681
|
+
const trackingId = useTrackingId({
|
|
1682
|
+
name: "NumberField",
|
|
1683
|
+
data,
|
|
1684
|
+
hasOverride: !!props["data-tracking-id"]
|
|
1685
|
+
});
|
|
1686
|
+
return /* @__PURE__ */ jsxs(
|
|
1687
|
+
"div",
|
|
1688
|
+
{
|
|
1689
|
+
className: cx(textFieldStyles["textfield"], className),
|
|
1690
|
+
"data-anv": "number-field",
|
|
1691
|
+
style: styleCombined,
|
|
1692
|
+
...wrapperProps,
|
|
1693
|
+
children: [
|
|
1694
|
+
label && !hideLabel && /* @__PURE__ */ jsx(
|
|
1695
|
+
FieldLabel,
|
|
1696
|
+
{
|
|
1697
|
+
moreInfo,
|
|
1698
|
+
moreInfoId: moreInfo ? moreInfoUid : void 0,
|
|
1699
|
+
required,
|
|
1700
|
+
htmlFor: id,
|
|
1701
|
+
...labelProps,
|
|
1702
|
+
children: label
|
|
1703
|
+
}
|
|
1704
|
+
),
|
|
1705
|
+
/* @__PURE__ */ jsxs(
|
|
1706
|
+
"div",
|
|
1707
|
+
{
|
|
1708
|
+
className: cx(textFieldStyles["input-wrapper"], {
|
|
1709
|
+
[textFieldStyles["small"]]: size === "small",
|
|
1710
|
+
[textFieldStyles["large"]]: size === "large",
|
|
1711
|
+
[textFieldStyles["highlight"]]: isHighlighted,
|
|
1712
|
+
[numberFieldStyles["small"]]: size === "small",
|
|
1713
|
+
[numberFieldStyles["large"]]: size === "large"
|
|
1714
|
+
}),
|
|
1715
|
+
role: "presentation",
|
|
1716
|
+
onClick: () => numberFieldRef.current?.focus(),
|
|
1717
|
+
children: [
|
|
1718
|
+
prefix ? /* @__PURE__ */ jsx(
|
|
1719
|
+
"div",
|
|
1720
|
+
{
|
|
1721
|
+
"aria-hidden": true,
|
|
1722
|
+
className: textFieldStyles["prefix"],
|
|
1723
|
+
id: `prefix${prefixUid}`,
|
|
1724
|
+
children: prefix
|
|
1725
|
+
}
|
|
1726
|
+
) : null,
|
|
1727
|
+
/* @__PURE__ */ jsx(
|
|
1728
|
+
"input",
|
|
1729
|
+
{
|
|
1730
|
+
id,
|
|
1731
|
+
className: cx(textFieldStyles["input"], {
|
|
1732
|
+
[textFieldStyles["error"]]: error
|
|
1733
|
+
}),
|
|
1734
|
+
"data-tracking-id": trackingId,
|
|
1735
|
+
...rest,
|
|
1736
|
+
...inputProps,
|
|
1737
|
+
required,
|
|
1738
|
+
placeholder,
|
|
1739
|
+
readOnly,
|
|
1740
|
+
disabled,
|
|
1741
|
+
ref: combinedInputRef,
|
|
1742
|
+
"aria-label": (
|
|
1743
|
+
// TODO(v4.0.0): remove typeof check — label will always be string
|
|
1744
|
+
hideLabel && typeof label === "string" ? stripInlineMarkdown(label) : label ? void 0 : placeholder
|
|
1745
|
+
),
|
|
1746
|
+
"aria-describedby": ariaDescribedBy,
|
|
1747
|
+
"aria-invalid": error ? !!error : void 0
|
|
1748
|
+
}
|
|
1749
|
+
),
|
|
1750
|
+
loading ? /* @__PURE__ */ jsx(
|
|
1751
|
+
"div",
|
|
1752
|
+
{
|
|
1753
|
+
className: textFieldStyles["loading-spinner-wrapper"],
|
|
1754
|
+
"data-testid": "spinner",
|
|
1755
|
+
children: /* @__PURE__ */ jsx(Spinner, { size: "small" })
|
|
1756
|
+
}
|
|
1757
|
+
) : null,
|
|
1758
|
+
suffix ? /* @__PURE__ */ jsx(
|
|
1759
|
+
"div",
|
|
1760
|
+
{
|
|
1761
|
+
className: textFieldStyles["suffix"],
|
|
1762
|
+
"aria-hidden": true,
|
|
1763
|
+
id: `suffix${suffixUid}`,
|
|
1764
|
+
children: suffix
|
|
1765
|
+
}
|
|
1766
|
+
) : null,
|
|
1767
|
+
!hideControls && !disabled && !readOnly && /* @__PURE__ */ jsxs("div", { className: numberFieldStyles["stepper-buttons"], children: [
|
|
1768
|
+
/* @__PURE__ */ jsx(
|
|
1769
|
+
Button,
|
|
1770
|
+
{
|
|
1771
|
+
appearance: "secondary",
|
|
1772
|
+
size: "small",
|
|
1773
|
+
className: numberFieldStyles["stepper-button"],
|
|
1774
|
+
...decrementButtonProps,
|
|
1775
|
+
children: /* @__PURE__ */ jsx(Icon, { svg: SvgRemove })
|
|
1776
|
+
}
|
|
1777
|
+
),
|
|
1778
|
+
/* @__PURE__ */ jsx(
|
|
1779
|
+
Button,
|
|
1780
|
+
{
|
|
1781
|
+
appearance: "secondary",
|
|
1782
|
+
size: "small",
|
|
1783
|
+
className: numberFieldStyles["stepper-button"],
|
|
1784
|
+
...incrementButtonProps,
|
|
1785
|
+
children: /* @__PURE__ */ jsx(Icon, { svg: SvgAdd })
|
|
1786
|
+
}
|
|
1787
|
+
)
|
|
1788
|
+
] })
|
|
1789
|
+
]
|
|
1790
|
+
}
|
|
1791
|
+
),
|
|
1792
|
+
hasHelperText ? /* @__PURE__ */ jsx(
|
|
1793
|
+
Helper,
|
|
1794
|
+
{
|
|
1795
|
+
id: helperUid,
|
|
1796
|
+
hint,
|
|
1797
|
+
showCounter: false,
|
|
1798
|
+
error: typeof errorMessages === "string" || Array.isArray(errorMessages) ? errorMessages : void 0,
|
|
1799
|
+
warning,
|
|
1800
|
+
errorMessage: isValidElement(errorMessages) ? errorMessages : void 0,
|
|
1801
|
+
description
|
|
1802
|
+
}
|
|
1803
|
+
) : null
|
|
1804
|
+
]
|
|
1805
|
+
}
|
|
1806
|
+
);
|
|
1807
|
+
}
|
|
1808
|
+
);
|
|
1809
|
+
NumberField.displayName = "NumberField";
|
|
1810
|
+
|
|
1811
|
+
export { NumberField as N, useNumberField as u };
|
|
1812
|
+
//# sourceMappingURL=NumberField-DjOvcCa1.js.map
|