@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
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { useState, useMemo, useRef, useEffect, useCallback, forwardRef, useId } from 'react';
|
|
3
|
-
import { w as warnDeprecatedErrorUsage } from './utils-
|
|
4
|
-
import { S as SelectOptions } from './SelectOptions-
|
|
5
|
-
import { s as styles } from './SelectTriggerBase.module-
|
|
2
|
+
import { useState, useMemo, useRef, useEffect, useCallback, useLayoutEffect, forwardRef, useId } from 'react';
|
|
3
|
+
import { w as warnDeprecatedErrorUsage } from './utils-DwLrXpmt.js';
|
|
4
|
+
import { S as SelectOptions } from './SelectOptions-DGYYFU8i.js';
|
|
5
|
+
import { s as styles } from './SelectTriggerBase.module-C-NmZbg4.js';
|
|
6
6
|
import { c as cx } from './index-De1g9FRV.js';
|
|
7
7
|
import { C as COMMON_PART, A as ANV_PART_ATTR } from './anvParts-DFVq7-Cm.js';
|
|
8
8
|
import { B as Button } from './Button-B_E6ybA-.js';
|
|
9
9
|
import { S as SvgChevronRight } from './chevron_right-BdpsxX7x.js';
|
|
10
10
|
import { S as SvgClose } from './close-DZj38AEh.js';
|
|
11
|
-
import { S as SelectFieldLabel, p as popoverTargetDomProps } from './SelectFieldLabel-
|
|
11
|
+
import { S as SelectFieldLabel, p as popoverTargetDomProps } from './SelectFieldLabel-DaXwIFZj.js';
|
|
12
12
|
import { u as useDownshiftEnvironment, a as useCombobox, b as useSelect } from './downshift.esm-U4VMqrF-.js';
|
|
13
13
|
import { m as mergeRefs, u as useMergeRefs } from './useMergeRefs-Dfmtq9cI.js';
|
|
14
|
-
import { a as useProcessedOptions, b as buildSelectItems, e as toSelectItem, s as shouldShowAddNewItem, A as AddNewItemButton, u as useSelectOrchestration, d as defaultSyncFilter, t as toSyncFilterFn, c as sortByGroup } from './syncFilterUtils-
|
|
15
|
-
import { O as OptionsDialog, a as OptionsPopover, u as useInvalidateOnOptionsChange } from './useInvalidateOnOptionsChange-
|
|
14
|
+
import { a as useProcessedOptions, b as buildSelectItems, e as toSelectItem, s as shouldShowAddNewItem, A as AddNewItemButton, u as useSelectOrchestration, d as defaultSyncFilter, t as toSyncFilterFn, c as sortByGroup } from './syncFilterUtils-BNbAB0jz.js';
|
|
15
|
+
import { O as OptionsDialog, a as OptionsPopover, u as useInvalidateOnOptionsChange } from './useInvalidateOnOptionsChange-ChrPmbtS.js';
|
|
16
16
|
import { F as FieldMessage } from './FieldMessage-8c9yA_kw.js';
|
|
17
17
|
import { u as useDebouncedCallback } from './useDebouncedCallback-DLkapjcP.js';
|
|
18
18
|
import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DjqeAJZ9.js';
|
|
@@ -43,15 +43,19 @@ const SelectFieldInput = ({
|
|
|
43
43
|
prefix,
|
|
44
44
|
suffix
|
|
45
45
|
}) => {
|
|
46
|
-
const inputWrapperClassNames = cx(
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
46
|
+
const inputWrapperClassNames = cx(
|
|
47
|
+
styles["input-wrapper"],
|
|
48
|
+
styles["fixed-height"],
|
|
49
|
+
{
|
|
50
|
+
[styles["small"]]: size === "small",
|
|
51
|
+
[styles["large"]]: size === "large",
|
|
52
|
+
[styles["no-clear-button"]]: disableClearButton,
|
|
53
|
+
[styles["no-toggle-button"]]: disableToggleButton,
|
|
54
|
+
[styles["disabled"]]: disabled || readOnly,
|
|
55
|
+
[styles["is-disabled"]]: disabled,
|
|
56
|
+
[styles["highlight"]]: isHighlighted
|
|
57
|
+
}
|
|
58
|
+
);
|
|
55
59
|
return /* @__PURE__ */ jsxs(
|
|
56
60
|
"div",
|
|
57
61
|
{
|
|
@@ -337,7 +341,6 @@ const SelectFieldComboboxMode = ({
|
|
|
337
341
|
loadMore,
|
|
338
342
|
initialLoad,
|
|
339
343
|
initialLoadPerformed,
|
|
340
|
-
setInitialLoadPerformed,
|
|
341
344
|
inputWrapperRef,
|
|
342
345
|
debounceMs,
|
|
343
346
|
addItemLabel,
|
|
@@ -379,37 +382,21 @@ const SelectFieldComboboxMode = ({
|
|
|
379
382
|
selectedOption,
|
|
380
383
|
virtualize,
|
|
381
384
|
onSelectedOptionChange: (opt) => onSelectedOptionChange(opt),
|
|
382
|
-
async onIsOpenChange(changes) {
|
|
383
|
-
if (initialLoad === "open" && !initialLoadPerformed && changes.isOpen) {
|
|
384
|
-
await loadOptions(adjustInputValueForSelectedOption(inputValue), {
|
|
385
|
-
initial: true
|
|
386
|
-
});
|
|
387
|
-
setInitialLoadPerformed(true);
|
|
388
|
-
}
|
|
389
|
-
},
|
|
390
385
|
onInputValueChange: ({ inputValue: iv }) => {
|
|
391
386
|
debouncedOptionLoader(iv ?? "");
|
|
392
387
|
},
|
|
393
388
|
onScrollToHighlight: (i) => listRef.current?.scrollToIndex(i)
|
|
394
389
|
});
|
|
390
|
+
const initialSearchRef = useRef("");
|
|
391
|
+
useLayoutEffect(() => {
|
|
392
|
+
initialSearchRef.current = adjustInputValueForSelectedOption(inputValue);
|
|
393
|
+
});
|
|
394
|
+
const wantsInitialLoad = initialLoad === "immediate" || initialLoad === "open" && isOpen;
|
|
395
395
|
useEffect(() => {
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
});
|
|
401
|
-
setInitialLoadPerformed(true);
|
|
402
|
-
}
|
|
403
|
-
};
|
|
404
|
-
performInitialLoad();
|
|
405
|
-
}, [
|
|
406
|
-
loadOptions,
|
|
407
|
-
initialLoadPerformed,
|
|
408
|
-
initialLoad,
|
|
409
|
-
inputValue,
|
|
410
|
-
adjustInputValueForSelectedOption,
|
|
411
|
-
setInitialLoadPerformed
|
|
412
|
-
]);
|
|
396
|
+
if (wantsInitialLoad && !initialLoadPerformed) {
|
|
397
|
+
loadOptions(initialSearchRef.current, { initial: true });
|
|
398
|
+
}
|
|
399
|
+
}, [loadOptions, initialLoadPerformed, wantsInitialLoad]);
|
|
413
400
|
const handleLoadMore = async () => {
|
|
414
401
|
await loadMore(adjustInputValueForSelectedOption(inputValue));
|
|
415
402
|
};
|
|
@@ -645,14 +632,18 @@ const SelectFieldTrigger = ({
|
|
|
645
632
|
}) => {
|
|
646
633
|
const { ref: downshiftRef, ...restToggleButtonProps } = toggleButtonProps ?? {};
|
|
647
634
|
const mergedRef = useMergeRefs([inputWrapperRef, downshiftRef]);
|
|
648
|
-
const inputWrapperClassNames = cx(
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
635
|
+
const inputWrapperClassNames = cx(
|
|
636
|
+
styles["input-wrapper"],
|
|
637
|
+
styles["fixed-height"],
|
|
638
|
+
{
|
|
639
|
+
[styles["small"]]: size === "small",
|
|
640
|
+
[styles["large"]]: size === "large",
|
|
641
|
+
[styles["no-clear-button"]]: disableClearButton,
|
|
642
|
+
[styles["disabled"]]: disabled || readOnly,
|
|
643
|
+
[styles["is-disabled"]]: disabled,
|
|
644
|
+
[styles["highlight"]]: isHighlighted
|
|
645
|
+
}
|
|
646
|
+
);
|
|
656
647
|
return /* @__PURE__ */ jsxs("div", { style: { position: "relative" }, children: [
|
|
657
648
|
/* @__PURE__ */ jsxs(
|
|
658
649
|
"div",
|
|
@@ -893,7 +884,6 @@ const SelectFieldSelectMode = ({
|
|
|
893
884
|
loadMore,
|
|
894
885
|
initialLoad,
|
|
895
886
|
initialLoadPerformed,
|
|
896
|
-
setInitialLoadPerformed,
|
|
897
887
|
inputWrapperRef,
|
|
898
888
|
required,
|
|
899
889
|
addItemLabel,
|
|
@@ -922,23 +912,14 @@ const SelectFieldSelectMode = ({
|
|
|
922
912
|
selectedOption,
|
|
923
913
|
virtualize,
|
|
924
914
|
onSelectedOptionChange: (opt) => onSelectedOptionChange(opt),
|
|
925
|
-
async onIsOpenChange(changes) {
|
|
926
|
-
if (initialLoad === "open" && !initialLoadPerformed && changes.isOpen) {
|
|
927
|
-
await loadOptions("", { initial: true });
|
|
928
|
-
setInitialLoadPerformed(true);
|
|
929
|
-
}
|
|
930
|
-
},
|
|
931
915
|
onScrollToHighlight: (i) => listRef.current?.scrollToIndex(i)
|
|
932
916
|
});
|
|
917
|
+
const wantsInitialLoad = initialLoad === "immediate" || initialLoad === "open" && isOpen;
|
|
933
918
|
useEffect(() => {
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
}
|
|
939
|
-
};
|
|
940
|
-
performInitialLoad();
|
|
941
|
-
}, [loadOptions, initialLoadPerformed, initialLoad, setInitialLoadPerformed]);
|
|
919
|
+
if (wantsInitialLoad && !initialLoadPerformed) {
|
|
920
|
+
loadOptions("", { initial: true });
|
|
921
|
+
}
|
|
922
|
+
}, [loadOptions, initialLoadPerformed, wantsInitialLoad]);
|
|
942
923
|
const handleLoadMore = async () => {
|
|
943
924
|
await loadMore("");
|
|
944
925
|
};
|
|
@@ -1192,7 +1173,6 @@ const SelectFieldInner = (propsWithLayout, ref) => {
|
|
|
1192
1173
|
displayAs,
|
|
1193
1174
|
initialLoad,
|
|
1194
1175
|
initialLoadPerformed,
|
|
1195
|
-
setInitialLoadPerformed,
|
|
1196
1176
|
options,
|
|
1197
1177
|
loading,
|
|
1198
1178
|
loadingMore,
|
|
@@ -1253,7 +1233,6 @@ const SelectFieldInner = (propsWithLayout, ref) => {
|
|
|
1253
1233
|
loadMore,
|
|
1254
1234
|
initialLoad,
|
|
1255
1235
|
initialLoadPerformed,
|
|
1256
|
-
setInitialLoadPerformed,
|
|
1257
1236
|
inputWrapperRef,
|
|
1258
1237
|
dataAttributes
|
|
1259
1238
|
};
|
|
@@ -1297,4 +1276,4 @@ const SelectFieldSync = (props) => {
|
|
|
1297
1276
|
};
|
|
1298
1277
|
|
|
1299
1278
|
export { SelectField as S, SelectFieldSync as a };
|
|
1300
|
-
//# sourceMappingURL=SelectFieldSync-
|
|
1279
|
+
//# sourceMappingURL=SelectFieldSync-DpZL4wDo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelectFieldSync-DpZL4wDo.js","sources":["../src/components/SelectField/parts.ts","../src/components/SelectField/internal/SelectFieldInput.tsx","../src/components/SelectField/internal/useCombo.tsx","../src/components/SelectField/internal/SelectFieldComboboxMode.tsx","../src/components/SelectField/internal/SelectFieldTrigger.tsx","../src/components/SelectField/internal/useSelectMode.ts","../src/components/SelectField/internal/SelectFieldSelectMode.tsx","../src/components/SelectField/SelectField.tsx","../src/components/SelectField/SelectFieldSync.tsx"],"sourcesContent":["import { COMMON_PART } from \"../../internal/constants/anvParts\";\n\n/**\n * `data-anv-part` names for SelectField's interactive sub-elements.\n *\n * Scope a query by the consumer's `data-cy` on the field root\n * (`[data-cy=\"x\"] [data-anv-part=\"input\"]`). Portaled parts (`menu`, `option`,\n * `dialog`, `popover`) come from the shared option internals and render in the\n * top layer — target them by part attribute or the field's `#{id}-popover` /\n * `#{id}-dialog`.\n *\n * Every role SelectField needs is a shared one, so all values come from\n * `COMMON_PART`.\n */\nexport const PARTS = {\n trigger: COMMON_PART.trigger,\n input: COMMON_PART.input,\n clearButton: COMMON_PART.clearButton,\n toggleButton: COMMON_PART.toggleButton,\n} as const;\n","import styles from \"../../../components/SelectTrigger/internal/SelectTriggerBase.module.scss\";\nimport cx from \"classnames\";\nimport type { PassThroughProps, Size } from \"../../../types\";\nimport { ANV_PART_ATTR } from \"../../../internal/constants/anvParts\";\nimport { PARTS } from \"../parts\";\nimport { Button } from \"../../../components/Button\";\nimport Chevron_Right from \"@servicetitan/hammer-icon/mdi/round/chevron_right.svg\";\nimport Close from \"@servicetitan/hammer-icon/mdi/round/close.svg\";\nimport type { ReactElement, RefObject } from \"react\";\n\nexport type SelectFieldInputProps = {\n placeholder?: string;\n size?: Extract<Size, \"small\" | \"medium\" | \"large\">;\n disableClearButton?: boolean;\n disableToggleButton?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n isHighlighted?: boolean;\n required?: boolean;\n error?: boolean;\n onClear?: () => void;\n id?: string;\n inputWrapperRef?: RefObject<HTMLDivElement>;\n htmlInputWrapperProps?: PassThroughProps<\"div\">;\n inputProps?: PassThroughProps<\"input\">;\n toggleButtonProps?: PassThroughProps<\"button\">;\n prefix?: string | ReactElement;\n suffix?: string | ReactElement;\n};\n\n/** Combobox input, clear, and toggle chrome for searchable SelectField. */\nexport const SelectFieldInput = ({\n placeholder,\n size,\n disableClearButton,\n disableToggleButton,\n disabled,\n readOnly,\n isHighlighted,\n required,\n error,\n onClear,\n id,\n inputWrapperRef,\n htmlInputWrapperProps,\n inputProps,\n toggleButtonProps,\n prefix,\n suffix,\n}: SelectFieldInputProps) => {\n const inputWrapperClassNames = cx(\n styles[\"input-wrapper\"],\n styles[\"fixed-height\"],\n {\n [styles[\"small\"]]: size === \"small\",\n [styles[\"large\"]]: size === \"large\",\n [styles[\"no-clear-button\"]]: disableClearButton,\n [styles[\"no-toggle-button\"]]: disableToggleButton,\n [styles[\"disabled\"]]: disabled || readOnly,\n [styles[\"is-disabled\"]]: disabled,\n [styles[\"highlight\"]]: isHighlighted,\n },\n );\n\n return (\n <div\n ref={inputWrapperRef}\n {...htmlInputWrapperProps}\n className={cx(inputWrapperClassNames, htmlInputWrapperProps?.className)}\n aria-disabled={disabled || undefined}\n >\n {prefix ? <div className={styles[\"prefix\"]}>{prefix}</div> : null}\n <input\n type=\"text\"\n id={id}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n required={required}\n {...inputProps}\n {...{ [ANV_PART_ATTR]: PARTS.input }}\n className={cx(styles[\"input\"], inputProps?.className, {\n [styles[\"error\"]]: error,\n })}\n />\n {suffix ? <div className={styles[\"suffix\"]}>{suffix}</div> : null}\n <div className={styles[\"buttons-wrapper\"]}>\n {disableClearButton ? null : (\n <div className={styles[\"close-button-wrapper\"]}>\n <Button\n icon={Close}\n aria-label=\"clear selection\"\n appearance=\"ghost\"\n size=\"small\"\n className={styles[\"close-button\"]}\n {...{ [ANV_PART_ATTR]: PARTS.clearButton }}\n onClick={() => {\n onClear?.();\n }}\n />\n </div>\n )}\n {disableToggleButton ? null : (\n <div className={styles[\"toggle-button-wrapper\"]}>\n <Button\n icon={Chevron_Right}\n aria-label=\"toggle menu\"\n appearance=\"ghost\"\n size=\"small\"\n {...toggleButtonProps}\n disabled={disabled}\n {...{ [ANV_PART_ATTR]: PARTS.toggleButton }}\n className={cx(\n styles[\"toggle-button\"],\n toggleButtonProps?.className,\n )}\n />\n </div>\n )}\n </div>\n </div>\n );\n};\n\nSelectFieldInput.displayName = \"SelectFieldInput\";\n","import {\n useCombobox,\n type UseComboboxProps,\n type UseComboboxState,\n type UseComboboxStateChangeOptions,\n} from \"downshift\";\nimport { useDownshiftEnvironment } from \"../../../internal/hooks\";\nimport { mergeRefs } from \"../../../hooks/useMergeRefs/useMergeRefs\";\nimport type {\n SelectFieldGroupByValue,\n SelectFieldOption,\n SelectFieldPinnedOptions,\n} from \"../types\";\nimport { useEffect, useMemo, useRef, useState, type Ref } from \"react\";\nimport type {\n SectionMeta,\n SelectItem,\n} from \"../../../internal/types/selectFieldInternalTypes\";\nimport { useProcessedOptions } from \"../../../internal/hooks/useProcessedOptions\";\nimport {\n buildSelectItems,\n toSelectItem,\n} from \"../../../internal/functions/buildSelectItems\";\n\nexport type { SectionMeta };\n\nexport type UseComboOptions<TID extends string | number> = {\n options: SelectFieldOption<TID>[];\n pinned?: SelectFieldPinnedOptions<TID>;\n groupToString?: (groupValue: SelectFieldGroupByValue) => string;\n groupSorter?: (\n a: SelectFieldGroupByValue,\n b: SelectFieldGroupByValue,\n ) => number;\n selectedOption: SelectFieldOption<TID> | null;\n onSelectedOptionChange: (option: SelectFieldOption<TID> | null) => void;\n displayAs: \"popover\" | \"dialog\";\n disableHighlightOnOpen?: boolean;\n disabled: boolean;\n virtualize?: boolean;\n onScrollToHighlight?: (index: number) => void;\n} & Pick<UseComboboxProps<SelectItem>, \"onInputValueChange\" | \"onIsOpenChange\">;\n\n/** Downshift combobox wiring for searchable SelectField. */\nexport const useCombo = <TID extends string | number>({\n options,\n pinned,\n groupToString,\n groupSorter,\n selectedOption,\n onSelectedOptionChange,\n onInputValueChange,\n onIsOpenChange,\n displayAs = \"popover\",\n disableHighlightOnOpen = false,\n disabled,\n virtualize = false,\n onScrollToHighlight,\n}: UseComboOptions<TID>) => {\n // Owned before useCombobox so pinned loaders can read the same search string.\n const [inputValue, setInputValue] = useState(selectedOption?.label ?? \"\");\n\n // Showing the selected label is not a search; loaders get \"\".\n const effectiveSearchValue =\n selectedOption?.label === inputValue ? \"\" : inputValue;\n\n const { pinnedSections, ungroupedItems, groupSections } = useProcessedOptions(\n {\n options,\n pinned,\n searchValue: effectiveSearchValue,\n groupToString,\n groupSorter,\n },\n );\n\n const { items, sectionsMeta } = useMemo(\n () =>\n buildSelectItems({\n pinnedSections,\n groupSections,\n ungroupedItems,\n }),\n [pinnedSections, groupSections, ungroupedItems],\n );\n\n const selectedDownshiftItem = useMemo(() => {\n return selectedOption ? toSelectItem(selectedOption) : null;\n }, [selectedOption]);\n\n const { ref: wrapperDivRef, environment } = useDownshiftEnvironment();\n const inputRef = useRef<HTMLInputElement>(null);\n\n const {\n isOpen,\n highlightedIndex,\n getToggleButtonProps,\n getLabelProps,\n getMenuProps,\n getInputProps,\n getItemProps,\n closeMenu,\n openMenu,\n setHighlightedIndex,\n } = useCombobox({\n isItemDisabled: (item, _index) => {\n if (!item) {\n return false; // Downshift passes -1 index with an undefined item. Ignore it.\n }\n return (disabled || item.disabled) ?? false;\n },\n environment: environment,\n selectedItem: selectedDownshiftItem,\n // Deliberately uncontrolled: a controlled inputValue lags a render behind\n // each keystroke, so downshift re-renders the stale value and the cursor\n // jumps to the end. https://github.com/downshift-js/downshift/issues/217\n initialInputValue: selectedOption?.label ?? \"\",\n onSelectedItemChange: ({\n selectedItem: si,\n }: {\n selectedItem: SelectItem<TID>;\n }) => {\n if (\n si &&\n (si.type === \"option\" ||\n si.type === \"pinned-option\" ||\n si.type === \"grouped-option\")\n ) {\n onSelectedOptionChange(si.original);\n } else {\n onSelectedOptionChange(null);\n }\n },\n onInputValueChange: (changes) => {\n setInputValue(changes.inputValue ?? \"\");\n onInputValueChange?.(changes);\n },\n onHighlightedIndexChange: ({ type, highlightedIndex: idx }) => {\n if (type !== useCombobox.stateChangeTypes.ItemMouseMove && idx >= 0) {\n onScrollToHighlight?.(idx);\n }\n },\n onIsOpenChange: (changes) => {\n onIsOpenChange?.(changes);\n if (changes.isOpen && !disableHighlightOnOpen) {\n const selectedItemIndex = items.findIndex(\n (item) => item.original.id === selectedOption?.id,\n );\n setHighlightedIndex(selectedItemIndex);\n }\n },\n items: items,\n itemToString(item: SelectItem | null) {\n return item?.original.label ?? \"\";\n },\n // Downshift's default itemToKey is identity, so a parent that rebuilds\n // its `value` object every render reads as a new selection and\n // overwrites in-progress search text with the label.\n itemToKey(item: SelectItem<TID> | null) {\n return item?.original.id ?? null;\n },\n stateReducer: (state, actionAndChanges) =>\n stateReducer(state, actionAndChanges, displayAs),\n // Virtualized list owns scrolling; Downshift's scrollIntoView would fight it.\n ...(virtualize && { scrollIntoView: () => {} }),\n });\n\n useEffect(() => {\n if (disabled) {\n closeMenu();\n }\n }, [disabled, closeMenu]);\n\n useEffect(() => {\n if (!isOpen) {\n return;\n }\n const inputEl = inputRef.current;\n if (inputEl && selectedOption && inputEl.value === selectedOption.label) {\n inputEl.select();\n }\n }, [isOpen, selectedOption]);\n\n const getInputPropsWithRef: typeof getInputProps = (userProps) => {\n const downshiftInputProps = getInputProps(userProps);\n // Downshift's own ref is attached at runtime but, unlike getMenuProps,\n // its getInputProps return type doesn't declare it.\n const downshiftRef = (\n downshiftInputProps as { ref?: Ref<HTMLInputElement> }\n ).ref;\n return {\n ...downshiftInputProps,\n ref: mergeRefs([inputRef, downshiftRef]),\n };\n };\n\n return {\n inputValue,\n wrapperDivRef,\n getToggleButtonProps,\n getLabelProps,\n getMenuProps,\n getInputProps: getInputPropsWithRef,\n getItemProps,\n highlightedIndex,\n isOpen,\n items,\n sectionsMeta,\n closeMenu,\n openMenu,\n };\n};\n\nfunction stateReducer<TID extends string | number>(\n state: UseComboboxState<SelectItem<TID>>,\n actionAndChanges: UseComboboxStateChangeOptions<SelectItem<TID>>,\n displayAs: \"popover\" | \"dialog\",\n) {\n const { type, changes } = actionAndChanges;\n switch (type) {\n case useCombobox.stateChangeTypes.InputBlur:\n // Dialog owns dismiss; Downshift would otherwise close on input blur.\n if (displayAs === \"dialog\" && state.isOpen) {\n return {\n ...changes,\n isOpen: state.isOpen,\n };\n }\n return {\n ...changes,\n inputValue: state.selectedItem?.original.label ?? state.inputValue,\n };\n case useCombobox.stateChangeTypes.InputKeyDownEscape:\n case useCombobox.stateChangeTypes.FunctionCloseMenu:\n return {\n ...changes,\n inputValue: state.selectedItem?.original.label ?? state.inputValue,\n };\n case useCombobox.stateChangeTypes.InputClick:\n if (displayAs === \"dialog\" && state.isOpen) {\n // Clicking the in-dialog search field must not toggle the menu closed.\n return {\n ...changes,\n isOpen: state.isOpen,\n };\n }\n return changes;\n case useCombobox.stateChangeTypes.InputKeyDownEnter:\n case useCombobox.stateChangeTypes.ItemClick:\n return changes;\n default:\n return changes;\n }\n}\n","import { useCallback, useEffect, useLayoutEffect, useRef } from \"react\";\nimport { SelectOptions } from \"../../../internal/components/SelectOptions\";\nimport type { OptionsPanelHandle } from \"../../../internal/components/OptionsPanel\";\nimport { SelectFieldInput } from \"./SelectFieldInput\";\nimport { SelectFieldLabel } from \"./SelectFieldLabel\";\nimport { useDebouncedCallback } from \"../../../internal/hooks/useDebouncedCallback\";\nimport styles from \"../../../components/SelectTrigger/internal/SelectTriggerBase.module.scss\";\nimport { useCombo } from \"./useCombo\";\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 { FieldMessage } from \"../../../components/FieldMessage\";\nimport { popoverTargetDomProps } from \"../../../internal/functions/popoverTargetDomProps\";\nimport type { SelectFieldComboboxInternalProps } from \"../../../internal/types/selectFieldInternalTypes\";\n\n/** Combobox mode. Default when `disableSearch` is false. */\nexport const SelectFieldComboboxMode = <TID extends string | number>({\n id,\n helperUid,\n selectedOption,\n onSelectedOptionChange,\n displayAs,\n isDisabledOrReadOnly,\n disabled,\n labelAiMark,\n readOnly,\n isHighlighted,\n required,\n placeholder,\n size,\n error,\n hasHelperText,\n disableClearButton,\n prefix,\n suffix,\n label,\n hideLabel,\n hint,\n moreInfo,\n moreInfoId,\n errorMessages,\n warning,\n description,\n className,\n style,\n layoutStyles,\n pinned,\n groupToString,\n groupSorter,\n virtualize,\n options,\n loading,\n loadingMore,\n hasMore,\n loadOptions,\n loadMore,\n initialLoad,\n initialLoadPerformed,\n inputWrapperRef,\n debounceMs,\n addItemLabel,\n onAddNewItem,\n dataAttributes,\n}: SelectFieldComboboxInternalProps<TID>) => {\n const listRef = useRef<OptionsPanelHandle>(null);\n\n const debouncedOptionLoader = useDebouncedCallback((inputValue: string) => {\n loadOptions(selectedOption?.label === inputValue ? \"\" : inputValue, {\n initial: true,\n });\n }, debounceMs);\n\n const adjustInputValueForSelectedOption = useCallback(\n (inputValue: string) => {\n return selectedOption?.label === inputValue ? \"\" : inputValue;\n },\n [selectedOption?.label],\n );\n\n const {\n isOpen,\n getToggleButtonProps,\n getLabelProps,\n getMenuProps,\n getInputProps,\n wrapperDivRef,\n highlightedIndex,\n getItemProps,\n inputValue,\n items,\n closeMenu,\n sectionsMeta,\n } = useCombo({\n displayAs,\n disabled: isDisabledOrReadOnly,\n options,\n pinned,\n groupToString,\n groupSorter,\n selectedOption,\n virtualize,\n onSelectedOptionChange: (opt) => onSelectedOptionChange(opt),\n onInputValueChange: ({ inputValue: iv }) => {\n debouncedOptionLoader(iv ?? \"\");\n },\n onScrollToHighlight: (i) => listRef.current?.scrollToIndex(i),\n });\n\n // Read through a ref: as an effect dependency, each keystroke during a\n // pending first load would start another, undebounced load.\n const initialSearchRef = useRef(\"\");\n useLayoutEffect(() => {\n initialSearchRef.current = adjustInputValueForSelectedOption(inputValue);\n });\n\n const wantsInitialLoad =\n initialLoad === \"immediate\" || (initialLoad === \"open\" && isOpen);\n useEffect(() => {\n if (wantsInitialLoad && !initialLoadPerformed) {\n loadOptions(initialSearchRef.current, { initial: true });\n }\n }, [loadOptions, initialLoadPerformed, wantsInitialLoad]);\n\n const handleLoadMore = async () => {\n await loadMore(adjustInputValueForSelectedOption(inputValue));\n };\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={closeMenu}\n />\n ) : null;\n\n if (displayAs === \"dialog\") {\n return (\n <div\n {...dataAttributes}\n data-anv=\"select-field\"\n className={\n className\n ? `${styles[\"search-field\"]} ${className}`\n : styles[\"search-field\"]\n }\n style={{ ...layoutStyles, ...style }}\n ref={wrapperDivRef}\n >\n <SelectFieldLabel\n aiMark={labelAiMark}\n label={label}\n hideLabel={hideLabel}\n getLabelProps={getLabelProps}\n required={required}\n moreInfo={moreInfo}\n moreInfoId={moreInfoId}\n />\n <SelectFieldInput\n disabled={disabled}\n readOnly={readOnly}\n isHighlighted={isHighlighted}\n required={required}\n disableToggleButton={false}\n placeholder={placeholder}\n disableClearButton={disableClearButton}\n toggleButtonProps={getToggleButtonProps({ disabled: !!disabled })}\n onClear={() => onSelectedOptionChange(null)}\n id={`${id}-input`}\n inputProps={getInputProps({\n \"aria-describedby\":\n [hasHelperText && helperUid, moreInfo && moreInfoId]\n .filter(Boolean)\n .join(\" \") || undefined,\n \"aria-invalid\": error ? true : undefined,\n })}\n size={size}\n error={!!error}\n prefix={prefix}\n suffix={suffix}\n />\n {hasHelperText ? (\n <FieldMessage\n id={helperUid}\n hint={hint}\n error={errorMessages}\n warning={warning}\n description={description}\n />\n ) : null}\n <OptionsDialog\n id={`${id}-dialog`}\n isOpen={isOpen}\n onClose={closeMenu}\n title={label}\n field={\n <SelectFieldInput\n disabled={disabled}\n readOnly={readOnly}\n isHighlighted={isHighlighted}\n inputProps={getInputProps()}\n disableToggleButton\n placeholder={placeholder}\n disableClearButton={disableClearButton}\n onClear={() => onSelectedOptionChange(null)}\n id={`${id}-dialog-input`}\n inputWrapperRef={inputWrapperRef}\n size=\"medium\"\n error={!!error}\n prefix={prefix}\n suffix={suffix}\n />\n }\n initialFocusResolver={(elements) => {\n // Dialog default focus would skip the duplicated search field.\n return (\n elements.find((element) => element.tagName === \"INPUT\") ||\n elements[0]\n );\n }}\n footer={addNewItemButton ?? undefined}\n >\n <SelectOptions\n ref={listRef}\n isOpen\n items={items}\n sectionsMeta={sectionsMeta}\n getMenuProps={getMenuProps}\n getItemProps={getItemProps}\n highlightedIndex={highlightedIndex}\n selectedOption={selectedOption}\n hasMore={hasMore}\n onLoadMore={handleLoadMore}\n loading={loading}\n loadingMore={loadingMore}\n disabled={isDisabledOrReadOnly}\n virtualize={virtualize}\n />\n </OptionsDialog>\n </div>\n );\n }\n\n return (\n <div\n {...dataAttributes}\n data-anv=\"select-field\"\n className={\n className\n ? `${styles[\"search-field\"]} ${className}`\n : styles[\"search-field\"]\n }\n style={{ ...layoutStyles, ...style }}\n >\n <SelectFieldLabel\n aiMark={labelAiMark}\n label={label}\n hideLabel={hideLabel}\n getLabelProps={getLabelProps}\n required={required}\n moreInfo={moreInfo}\n moreInfoId={moreInfoId}\n />\n <SelectFieldInput\n disabled={disabled}\n readOnly={readOnly}\n isHighlighted={isHighlighted}\n required={required}\n inputProps={getInputProps({\n ...popoverTargetDomProps(`${id}-popover`),\n \"aria-describedby\":\n [hasHelperText && helperUid, moreInfo && moreInfoId]\n .filter(Boolean)\n .join(\" \") || undefined,\n \"aria-invalid\": error ? true : undefined,\n })}\n toggleButtonProps={getToggleButtonProps({ disabled: !!disabled })}\n disableToggleButton={false}\n placeholder={placeholder}\n disableClearButton={disableClearButton}\n onClear={() => onSelectedOptionChange(null)}\n id={`${id}-input`}\n inputWrapperRef={inputWrapperRef}\n size={size}\n error={!!error}\n prefix={prefix}\n suffix={suffix}\n />\n {hasHelperText ? (\n <FieldMessage\n id={helperUid}\n hint={hint}\n error={errorMessages}\n warning={warning}\n description={description}\n />\n ) : null}\n\n <OptionsPopover\n id={`${id}-popover`}\n referenceElement={inputWrapperRef}\n open={isOpen && displayAs === \"popover\"}\n onClose={closeMenu}\n width=\"reference\"\n footer={addNewItemButton ?? undefined}\n >\n <SelectOptions\n ref={listRef}\n isOpen={isOpen}\n items={items}\n sectionsMeta={sectionsMeta}\n getMenuProps={getMenuProps}\n getItemProps={getItemProps}\n highlightedIndex={highlightedIndex}\n selectedOption={selectedOption}\n hasMore={hasMore}\n onLoadMore={handleLoadMore}\n loading={loading}\n loadingMore={loadingMore}\n disabled={isDisabledOrReadOnly}\n virtualize={virtualize}\n />\n </OptionsPopover>\n </div>\n );\n};\n","import styles from \"../../../components/SelectTrigger/internal/SelectTriggerBase.module.scss\";\nimport cx from \"classnames\";\nimport type { Size } from \"../../../types\";\nimport { Button } from \"../../../components/Button\";\nimport Chevron_Right from \"@servicetitan/hammer-icon/mdi/round/chevron_right.svg\";\nimport Close from \"@servicetitan/hammer-icon/mdi/round/close.svg\";\nimport type { ReactElement, RefObject } from \"react\";\nimport { useMergeRefs } from \"../../../hooks/useMergeRefs/useMergeRefs\";\nimport { ANV_PART_ATTR } from \"../../../internal/constants/anvParts\";\nimport { popoverTargetDomProps } from \"../../../internal/functions/popoverTargetDomProps\";\nimport { PARTS } from \"../parts\";\n\nexport type SelectFieldTriggerProps = {\n placeholder?: string;\n size?: Extract<Size, \"small\" | \"medium\" | \"large\">;\n disableClearButton?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n isHighlighted?: boolean;\n error?: boolean;\n onClear?: () => void;\n id?: string;\n popoverTarget?: string;\n inputWrapperRef?: RefObject<HTMLDivElement>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n toggleButtonProps?: Record<string, any>;\n /** Selected option label, or empty so the placeholder shows. */\n displayValue?: string;\n prefix?: string | ReactElement;\n suffix?: string | ReactElement;\n};\n\n/** Listbox trigger for SelectField when `disableSearch`. */\nexport const SelectFieldTrigger = ({\n placeholder,\n size,\n disableClearButton,\n disabled,\n readOnly,\n isHighlighted,\n error,\n onClear,\n id,\n inputWrapperRef,\n toggleButtonProps,\n displayValue,\n prefix,\n suffix,\n popoverTarget,\n}: SelectFieldTriggerProps) => {\n const { ref: downshiftRef, ...restToggleButtonProps } =\n toggleButtonProps ?? {};\n const mergedRef = useMergeRefs([inputWrapperRef, downshiftRef]);\n\n const inputWrapperClassNames = cx(\n styles[\"input-wrapper\"],\n styles[\"fixed-height\"],\n {\n [styles[\"small\"]]: size === \"small\",\n [styles[\"large\"]]: size === \"large\",\n [styles[\"no-clear-button\"]]: disableClearButton,\n [styles[\"disabled\"]]: disabled || readOnly,\n [styles[\"is-disabled\"]]: disabled,\n [styles[\"highlight\"]]: isHighlighted,\n },\n );\n\n return (\n <div style={{ position: \"relative\" }}>\n <div\n ref={mergedRef}\n {...restToggleButtonProps}\n {...popoverTargetDomProps(popoverTarget)}\n id={id}\n aria-disabled={disabled || undefined}\n onClick={disabled ? undefined : restToggleButtonProps.onClick}\n onKeyDown={disabled ? undefined : restToggleButtonProps.onKeyDown}\n {...{ [ANV_PART_ATTR]: PARTS.trigger }}\n className={cx(inputWrapperClassNames, restToggleButtonProps?.className)}\n >\n {prefix ? <div className={styles[\"prefix\"]}>{prefix}</div> : null}\n <div\n className={cx(styles[\"input\"], {\n [styles[\"error\"]]: error,\n })}\n >\n {displayValue ? (\n <span>{displayValue}</span>\n ) : (\n <span className={styles[\"fake-placeholder\"]}>{placeholder}</span>\n )}\n </div>\n {suffix ? <div className={styles[\"suffix\"]}>{suffix}</div> : null}\n <div className={styles[\"buttons-wrapper\"]}>\n <div className={styles[\"toggle-button-wrapper\"]}>\n <Button\n icon={Chevron_Right}\n aria-label=\"toggle menu\"\n appearance=\"ghost\"\n size=\"small\"\n disabled={disabled}\n tabIndex={-1}\n {...{ [ANV_PART_ATTR]: PARTS.toggleButton }}\n className={styles[\"toggle-button\"]}\n />\n </div>\n </div>\n </div>\n {disableClearButton ? null : (\n <div\n className={styles[\"buttons-wrapper\"]}\n style={{\n insetInlineEnd: \"2rem\",\n ...(size === \"small\"\n ? {}\n : {\n insetBlock: \"0\",\n }),\n }}\n >\n <div className={styles[\"close-button-wrapper\"]}>\n <Button\n icon={Close}\n aria-label=\"clear selection\"\n appearance=\"ghost\"\n size=\"small\"\n className={styles[\"close-button\"]}\n {...{ [ANV_PART_ATTR]: PARTS.clearButton }}\n onClick={(e) => {\n // Nested in the trigger; without this, clear also toggles the menu.\n e.stopPropagation();\n onClear?.();\n }}\n />\n </div>\n </div>\n )}\n </div>\n );\n};\n\nSelectFieldTrigger.displayName = \"SelectFieldTrigger\";\n","import {\n useSelect,\n type UseSelectState,\n type UseSelectStateChangeOptions,\n} from \"downshift\";\nimport { useDownshiftEnvironment } from \"../../../internal/hooks\";\nimport type {\n SelectFieldGroupByValue,\n SelectFieldOption,\n SelectFieldPinnedOptions,\n} from \"../types\";\nimport type { SelectItem } from \"../../../internal/types/selectFieldInternalTypes\";\nimport { useEffect, useMemo } from \"react\";\nimport { useProcessedOptions } from \"../../../internal/hooks/useProcessedOptions\";\nimport {\n buildSelectItems,\n toSelectItem,\n} from \"../../../internal/functions/buildSelectItems\";\n\nexport type UseSelectModeOptions<TID extends string | number> = {\n options: SelectFieldOption<TID>[];\n pinned?: SelectFieldPinnedOptions<TID>;\n groupToString?: (groupValue: SelectFieldGroupByValue) => string;\n groupSorter?: (\n a: SelectFieldGroupByValue,\n b: SelectFieldGroupByValue,\n ) => number;\n selectedOption: SelectFieldOption<TID> | null;\n onSelectedOptionChange: (option: SelectFieldOption<TID> | null) => void;\n onIsOpenChange?: (changes: { isOpen?: boolean }) => void;\n displayAs: \"popover\" | \"dialog\";\n disableHighlightOnOpen?: boolean;\n disabled: boolean;\n virtualize?: boolean;\n onScrollToHighlight?: (index: number) => void;\n};\n\n/** Downshift useSelect wiring for `disableSearch` SelectField. */\nexport const useSelectMode = <TID extends string | number>({\n options,\n pinned,\n groupToString,\n groupSorter,\n selectedOption,\n onSelectedOptionChange,\n onIsOpenChange,\n displayAs = \"popover\",\n disableHighlightOnOpen = false,\n disabled,\n virtualize = false,\n onScrollToHighlight,\n}: UseSelectModeOptions<TID>) => {\n const { pinnedSections, ungroupedItems, groupSections } = useProcessedOptions(\n {\n options,\n pinned,\n searchValue: \"\",\n groupToString,\n groupSorter,\n },\n );\n\n const { items, sectionsMeta } = useMemo(\n () =>\n buildSelectItems<TID>({\n pinnedSections,\n groupSections,\n ungroupedItems,\n }),\n [pinnedSections, groupSections, ungroupedItems],\n );\n\n const selectedDownshiftItem = useMemo(() => {\n return selectedOption ? toSelectItem(selectedOption) : null;\n }, [selectedOption]);\n\n const { ref: wrapperDivRef, environment } = useDownshiftEnvironment();\n\n const {\n isOpen,\n highlightedIndex,\n getToggleButtonProps,\n getLabelProps,\n getMenuProps,\n getItemProps,\n closeMenu,\n openMenu,\n setHighlightedIndex,\n } = useSelect<SelectItem<TID>>({\n isItemDisabled: (item) => {\n if (!item) return false; // Downshift can pass an undefined item. Ignore it.\n return (disabled || item.disabled) ?? false;\n },\n environment,\n selectedItem: selectedDownshiftItem,\n onSelectedItemChange: ({\n selectedItem: si,\n }: {\n selectedItem: SelectItem<TID>;\n }) => {\n if (\n si &&\n (si.type === \"option\" ||\n si.type === \"pinned-option\" ||\n si.type === \"grouped-option\")\n ) {\n onSelectedOptionChange(si.original);\n } else {\n onSelectedOptionChange(null);\n }\n },\n onHighlightedIndexChange: ({ type, highlightedIndex: idx }) => {\n if (type !== useSelect.stateChangeTypes.ItemMouseMove && idx >= 0) {\n onScrollToHighlight?.(idx);\n }\n },\n onIsOpenChange: (changes) => {\n onIsOpenChange?.(changes);\n if (changes.isOpen && !disableHighlightOnOpen) {\n const selectedItemIndex = items.findIndex(\n (item) => item.original.id === selectedOption?.id,\n );\n setHighlightedIndex(selectedItemIndex);\n }\n },\n items: items,\n itemToString(item: SelectItem | null) {\n return item?.original.label ?? \"\";\n },\n stateReducer: (state, actionAndChanges) =>\n stateReducer(state, actionAndChanges, displayAs),\n // Virtualized list owns scrolling; Downshift's scrollIntoView would fight it.\n ...(virtualize && { scrollIntoView: () => {} }),\n });\n\n useEffect(() => {\n if (disabled) {\n closeMenu();\n }\n }, [disabled, closeMenu]);\n\n return {\n wrapperDivRef,\n getToggleButtonProps,\n getLabelProps,\n getMenuProps,\n getItemProps,\n highlightedIndex,\n isOpen,\n items,\n sectionsMeta,\n closeMenu,\n openMenu,\n };\n};\n\nfunction stateReducer<TID extends string | number>(\n state: UseSelectState<SelectItem<TID>>,\n actionAndChanges: UseSelectStateChangeOptions<SelectItem<TID>>,\n displayAs: \"popover\" | \"dialog\",\n) {\n const { type, changes } = actionAndChanges;\n switch (type) {\n case useSelect.stateChangeTypes.ToggleButtonBlur:\n // Dialog owns dismiss; Downshift would otherwise close on trigger blur.\n if (displayAs === \"dialog\" && state.isOpen) {\n return { ...changes, isOpen: state.isOpen };\n }\n return changes;\n case useSelect.stateChangeTypes.ToggleButtonKeyDownEscape:\n case useSelect.stateChangeTypes.FunctionCloseMenu:\n return changes;\n case useSelect.stateChangeTypes.ToggleButtonClick:\n if (displayAs === \"dialog\" && state.isOpen) {\n // Clicking the in-dialog trigger must not toggle the menu closed.\n return { ...changes, isOpen: state.isOpen };\n }\n return changes;\n case useSelect.stateChangeTypes.ToggleButtonKeyDownEnter:\n case useSelect.stateChangeTypes.ItemClick:\n return changes;\n default:\n return changes;\n }\n}\n","import { useEffect, useRef } from \"react\";\nimport { SelectOptions } from \"../../../internal/components/SelectOptions\";\nimport type { OptionsPanelHandle } from \"../../../internal/components/OptionsPanel\";\nimport { SelectFieldTrigger } from \"./SelectFieldTrigger\";\nimport { SelectFieldLabel } from \"./SelectFieldLabel\";\nimport styles from \"../../../components/SelectTrigger/internal/SelectTriggerBase.module.scss\";\nimport { useSelectMode } from \"./useSelectMode\";\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 { FieldMessage } from \"../../../components/FieldMessage\";\nimport type { SelectFieldBaseInternalProps } from \"../../../internal/types/selectFieldInternalTypes\";\n\n/** Listbox mode. Active when `disableSearch` is true. */\nexport const SelectFieldSelectMode = <\n TID extends string | number = string | number,\n>({\n labelAiMark,\n id,\n helperUid,\n selectedOption,\n onSelectedOptionChange,\n displayAs,\n isDisabledOrReadOnly,\n disabled,\n readOnly,\n isHighlighted,\n placeholder,\n size,\n error,\n hasHelperText,\n disableClearButton,\n prefix,\n suffix,\n label,\n hideLabel,\n hint,\n moreInfo,\n moreInfoId,\n errorMessages,\n warning,\n description,\n className,\n style,\n layoutStyles,\n pinned,\n groupToString,\n groupSorter,\n virtualize,\n options,\n loading,\n loadingMore,\n hasMore,\n loadOptions,\n loadMore,\n initialLoad,\n initialLoadPerformed,\n inputWrapperRef,\n required,\n addItemLabel,\n onAddNewItem,\n dataAttributes,\n}: SelectFieldBaseInternalProps<TID>) => {\n const listRef = useRef<OptionsPanelHandle>(null);\n\n const {\n isOpen,\n getToggleButtonProps,\n getLabelProps,\n getMenuProps,\n wrapperDivRef,\n highlightedIndex,\n getItemProps,\n items,\n closeMenu,\n sectionsMeta,\n } = useSelectMode({\n displayAs,\n disabled: isDisabledOrReadOnly,\n options,\n pinned,\n groupToString,\n groupSorter,\n selectedOption,\n virtualize,\n onSelectedOptionChange: (opt) => onSelectedOptionChange(opt),\n onScrollToHighlight: (i) => listRef.current?.scrollToIndex(i),\n });\n\n const wantsInitialLoad =\n initialLoad === \"immediate\" || (initialLoad === \"open\" && isOpen);\n useEffect(() => {\n if (wantsInitialLoad && !initialLoadPerformed) {\n loadOptions(\"\", { initial: true });\n }\n }, [loadOptions, initialLoadPerformed, wantsInitialLoad]);\n\n const handleLoadMore = async () => {\n await loadMore(\"\");\n };\n\n const addNewItemButton = shouldShowAddNewItem(\n onAddNewItem,\n addItemLabel,\n \"\",\n ) ? (\n <AddNewItemButton\n searchText=\"\"\n addItemLabel={addItemLabel}\n onAddNewItem={onAddNewItem}\n onCloseMenu={closeMenu}\n />\n ) : null;\n\n const toggleButtonProps = getToggleButtonProps({\n disabled: !!disabled,\n \"aria-required\": required ? true : undefined,\n \"aria-describedby\":\n [hasHelperText && helperUid, moreInfo && moreInfoId]\n .filter(Boolean)\n .join(\" \") || undefined,\n \"aria-invalid\": error ? true : undefined,\n } as Record<string, unknown>);\n\n if (displayAs === \"dialog\") {\n return (\n <div\n {...dataAttributes}\n data-anv=\"select-field\"\n className={\n className\n ? `${styles[\"search-field\"]} ${className}`\n : styles[\"search-field\"]\n }\n style={{ ...layoutStyles, ...style }}\n ref={wrapperDivRef}\n >\n <SelectFieldLabel\n aiMark={labelAiMark}\n label={label}\n hideLabel={hideLabel}\n getLabelProps={getLabelProps}\n required={required}\n moreInfo={moreInfo}\n moreInfoId={moreInfoId}\n />\n <SelectFieldTrigger\n disabled={disabled}\n readOnly={readOnly}\n isHighlighted={isHighlighted}\n placeholder={placeholder}\n disableClearButton={disableClearButton}\n toggleButtonProps={toggleButtonProps}\n onClear={() => onSelectedOptionChange(null)}\n id={`${id}-trigger`}\n inputWrapperRef={inputWrapperRef}\n displayValue={selectedOption?.label}\n size={size}\n error={!!error}\n prefix={prefix}\n suffix={suffix}\n />\n {hasHelperText ? (\n <FieldMessage\n id={helperUid}\n hint={hint}\n error={errorMessages}\n warning={warning}\n description={description}\n />\n ) : null}\n <OptionsDialog\n id={`${id}-dialog`}\n isOpen={isOpen}\n onClose={closeMenu}\n title={label}\n footer={addNewItemButton ?? undefined}\n >\n <SelectOptions\n ref={listRef}\n isOpen\n items={items}\n sectionsMeta={sectionsMeta}\n getMenuProps={(opts) =>\n getMenuProps({\n ...opts,\n style: { ...opts?.style, outline: \"none\" },\n onKeyDown: toggleButtonProps.onKeyDown,\n tabIndex: 0,\n \"aria-activedescendant\":\n toggleButtonProps[\"aria-activedescendant\"],\n })\n }\n getItemProps={getItemProps}\n highlightedIndex={highlightedIndex}\n selectedOption={selectedOption}\n hasMore={hasMore}\n onLoadMore={handleLoadMore}\n loading={loading}\n loadingMore={loadingMore}\n disabled={isDisabledOrReadOnly}\n virtualize={virtualize}\n />\n </OptionsDialog>\n </div>\n );\n }\n\n return (\n <div\n {...dataAttributes}\n data-anv=\"select-field\"\n className={\n className\n ? `${styles[\"search-field\"]} ${className}`\n : styles[\"search-field\"]\n }\n style={{ ...layoutStyles, ...style }}\n >\n <SelectFieldLabel\n aiMark={labelAiMark}\n label={label}\n hideLabel={hideLabel}\n getLabelProps={getLabelProps}\n required={required}\n moreInfo={moreInfo}\n moreInfoId={moreInfoId}\n />\n <SelectFieldTrigger\n disabled={disabled}\n readOnly={readOnly}\n isHighlighted={isHighlighted}\n placeholder={placeholder}\n disableClearButton={disableClearButton}\n toggleButtonProps={toggleButtonProps}\n onClear={() => onSelectedOptionChange(null)}\n id={`${id}-trigger`}\n popoverTarget={`${id}-popover`}\n inputWrapperRef={inputWrapperRef}\n displayValue={selectedOption?.label}\n size={size}\n error={!!error}\n prefix={prefix}\n suffix={suffix}\n />\n {hasHelperText ? (\n <FieldMessage\n id={helperUid}\n hint={hint}\n error={errorMessages}\n warning={warning}\n description={description}\n />\n ) : null}\n\n <OptionsPopover\n id={`${id}-popover`}\n referenceElement={inputWrapperRef}\n open={isOpen && displayAs === \"popover\"}\n onClose={closeMenu}\n width=\"reference\"\n footer={addNewItemButton ?? undefined}\n >\n <SelectOptions\n ref={listRef}\n isOpen={isOpen}\n items={items}\n sectionsMeta={sectionsMeta}\n getMenuProps={getMenuProps}\n getItemProps={getItemProps}\n highlightedIndex={highlightedIndex}\n selectedOption={selectedOption}\n hasMore={hasMore}\n onLoadMore={handleLoadMore}\n loading={loading}\n loadingMore={loadingMore}\n disabled={isDisabledOrReadOnly}\n virtualize={virtualize}\n />\n </OptionsPopover>\n </div>\n );\n};\n","import type { SelectFieldHandle, SelectFieldProps } from \"./types\";\nimport {\n type ForwardedRef,\n forwardRef,\n type ReactNode,\n useId,\n useRef,\n} from \"react\";\nimport type { DataAttributes } from \"../../types\";\nimport { useLayoutPropsUtil } from \"../../internal/hooks/useLayoutPropsUtil\";\nimport { warnDeprecatedErrorUsage } from \"../../components/FieldMessage\";\nimport { SelectFieldComboboxMode } from \"./internal/SelectFieldComboboxMode\";\nimport { SelectFieldSelectMode } from \"./internal/SelectFieldSelectMode\";\nimport type {\n SelectFieldBaseInternalProps,\n SelectFieldComboboxInternalProps,\n} from \"../../internal/types/selectFieldInternalTypes\";\nimport { useSelectOrchestration } from \"../../internal/hooks/useSelectOrchestration\";\n\nconst SelectFieldInner = <TID extends string | number>(\n propsWithLayout: SelectFieldProps<TID>,\n ref: ForwardedRef<SelectFieldHandle>,\n) => {\n const { layoutStyles, componentProps } = useLayoutPropsUtil(propsWithLayout);\n\n const dataAttributes = Object.fromEntries(\n Object.entries(componentProps).filter(([key]) => key.startsWith(\"data-\")),\n ) as DataAttributes;\n\n const inputWrapperRef = useRef<HTMLDivElement>(null);\n\n const {\n id: idProp,\n value: selectedOption,\n initialLoad: initialLoadProp,\n displayMenuAs: displayMenuAsProp,\n lazy,\n loadOptions: loadOptionsProp,\n label,\n labelAiMark,\n hideLabel,\n placeholder,\n disableClearButton: disableClearButtonProp = false,\n debounceMs = 200,\n onSelectedOptionChange,\n cache,\n size,\n error,\n hint,\n moreInfo,\n description,\n errorAriaLive: _errorAriaLive,\n required,\n disabled,\n readOnly,\n isHighlighted,\n prefix,\n suffix,\n warning,\n className,\n style,\n pinned,\n virtualize,\n disableSearch,\n addItemLabel,\n onAddNewItem,\n } = componentProps;\n\n const groupToString =\n \"groupToString\" in componentProps\n ? componentProps.groupToString\n : undefined;\n const groupSorter =\n \"groupSorter\" in componentProps ? componentProps.groupSorter : undefined;\n\n const autoId = useId();\n const id = idProp ?? autoId;\n const helperUid = useId();\n const moreInfoUid = useId();\n\n warnDeprecatedErrorUsage(\"SelectField\", error);\n\n const errorMessages =\n typeof error === \"boolean\" || error === undefined ? undefined : error;\n const hasHelperText = !!(hint || errorMessages || warning || description);\n const isDisabledOrReadOnly = (disabled || readOnly) ?? false;\n\n const {\n displayAs,\n initialLoad,\n initialLoadPerformed,\n options,\n loading,\n loadingMore,\n hasMore,\n loadOptions,\n loadMore,\n } = useSelectOrchestration<TID>({\n lazy,\n loadOptions: loadOptionsProp,\n cache,\n lazyOptions:\n \"lazyOptions\" in componentProps ? componentProps.lazyOptions : undefined,\n initialLoad: initialLoadProp,\n displayMenuAs: displayMenuAsProp,\n ref,\n });\n\n const disableClearButton =\n disableClearButtonProp || !selectedOption || isDisabledOrReadOnly;\n\n const baseProps: SelectFieldBaseInternalProps<TID> = {\n id,\n helperUid,\n selectedOption,\n onSelectedOptionChange,\n displayAs,\n isDisabledOrReadOnly,\n disabled,\n readOnly,\n isHighlighted,\n required,\n placeholder,\n size,\n error,\n hasHelperText,\n disableClearButton,\n prefix,\n suffix,\n label,\n labelAiMark,\n hideLabel,\n hint,\n moreInfo,\n moreInfoId: moreInfo ? moreInfoUid : undefined,\n errorMessages,\n warning,\n description,\n className,\n style,\n layoutStyles,\n pinned,\n groupToString,\n groupSorter,\n virtualize,\n addItemLabel,\n onAddNewItem,\n options,\n loading,\n loadingMore,\n hasMore,\n loadOptions,\n loadMore,\n initialLoad,\n initialLoadPerformed,\n inputWrapperRef,\n dataAttributes,\n };\n\n if (disableSearch) {\n return <SelectFieldSelectMode {...baseProps} />;\n }\n\n const comboboxProps: SelectFieldComboboxInternalProps<TID> = {\n ...baseProps,\n debounceMs,\n };\n\n return <SelectFieldComboboxMode {...comboboxProps} />;\n};\n\n/** Single-select field. Searchable combobox unless `disableSearch`. Selection is controlled. */\nexport const SelectField = Object.assign(forwardRef(SelectFieldInner), {\n displayName: \"SelectField\",\n}) as <TID extends string | number = string | number>(\n propsWithLayout: SelectFieldProps<TID> & {\n ref?: ForwardedRef<SelectFieldHandle>;\n },\n) => ReactNode;\n","import { useMemo, useRef } from \"react\";\nimport type { MatchSorterOptions } from \"match-sorter\";\nimport { SelectField } from \"./SelectField\";\nimport type {\n SelectFieldHandle,\n SelectFieldProps,\n SelectFieldOption,\n SelectFieldGroupByValue,\n} from \"./types\";\nimport {\n type SyncFilterFn,\n defaultSyncFilter,\n toSyncFilterFn,\n sortByGroup,\n} from \"../../internal/functions/syncFilterUtils\";\nimport { useInvalidateOnOptionsChange } from \"../../internal/hooks/useInvalidateOnOptionsChange\";\n\nexport type SelectFieldSyncProps<\n TID extends string | number = string | number,\n> = Omit<\n SelectFieldProps<TID>,\n \"loadOptions\" | \"lazy\" | \"debounceMs\" | \"cache\" | \"initialLoad\"\n> & {\n /** In-memory options. Search filters this list instead of calling `loadOptions`. */\n options: SelectFieldOption<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. Unfiltered order is\n * the `options` array. Defaults to match-sorter on `label` and `searchText`.\n */\n filter?: SyncFilterFn<TID> | MatchSorterOptions<SelectFieldOption<TID>>;\n /** Orders groups when options include a `group`. */\n groupSorter?: (\n a: SelectFieldGroupByValue,\n b: SelectFieldGroupByValue,\n ) => number;\n};\n\n/** {@link SelectField} for a client-side `options` list. */\nexport const SelectFieldSync = <TID extends string | number>(\n props: SelectFieldSyncProps<TID>,\n) => {\n const {\n options,\n filter: filterProp = defaultSyncFilter,\n groupSorter,\n ...rest\n } = props;\n\n const filter = useMemo(() => toSyncFilterFn<TID>(filterProp), [filterProp]);\n\n const loadOptions = (searchValue: string) => {\n const filtered = filter(options, searchValue);\n return groupSorter ? sortByGroup<TID>(filtered, groupSorter) : filtered;\n };\n\n const fieldRef = useRef<SelectFieldHandle>(null);\n useInvalidateOnOptionsChange(fieldRef, options);\n\n return (\n <SelectField\n ref={fieldRef}\n lazy={false}\n loadOptions={loadOptions}\n debounceMs={0}\n {...rest}\n />\n );\n};\n"],"names":["Close","Chevron_Right","stateReducer","inputValue"],"mappings":"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"}
|
package/dist/SelectMenu.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { S as SelectMenu, a as SelectMenuSync } from './SelectMenuSync-
|
|
1
|
+
export { S as SelectMenu, a as SelectMenuSync } from './SelectMenuSync-Klna2oqs.js';
|
|
2
2
|
//# sourceMappingURL=SelectMenu.js.map
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
-
import { forwardRef, useRef, useId, useState, useMemo, useCallback, useEffect } from 'react';
|
|
3
|
-
import { S as SelectOptions } from './SelectOptions-
|
|
4
|
-
import { O as OptionsDialog, a as OptionsPopover, u as useInvalidateOnOptionsChange } from './useInvalidateOnOptionsChange-
|
|
2
|
+
import { forwardRef, useRef, useId, useState, useLayoutEffect, useMemo, useCallback, useEffect } from 'react';
|
|
3
|
+
import { S as SelectOptions } from './SelectOptions-DGYYFU8i.js';
|
|
4
|
+
import { O as OptionsDialog, a as OptionsPopover, u as useInvalidateOnOptionsChange } from './useInvalidateOnOptionsChange-ChrPmbtS.js';
|
|
5
5
|
import { M as MenuFooter } from './MenuFooter-Dzhv0EfD.js';
|
|
6
|
-
import { u as useSelectOrchestration, a as useProcessedOptions, b as buildSelectItems, s as shouldShowAddNewItem, A as AddNewItemButton, d as defaultSyncFilter, t as toSyncFilterFn, c as sortByGroup } from './syncFilterUtils-
|
|
6
|
+
import { u as useSelectOrchestration, a as useProcessedOptions, b as buildSelectItems, s as shouldShowAddNewItem, A as AddNewItemButton, d as defaultSyncFilter, t as toSyncFilterFn, c as sortByGroup } from './syncFilterUtils-BNbAB0jz.js';
|
|
7
7
|
import { u as useMenuInteraction } from './useMenuInteraction-nNF1dsrp.js';
|
|
8
8
|
import { C as COMMON_PART, A as ANV_PART_ATTR } from './anvParts-DFVq7-Cm.js';
|
|
9
9
|
import { u as useDebouncedCallback } from './useDebouncedCallback-DLkapjcP.js';
|
|
10
|
-
import { S as SearchField } from './SearchField-
|
|
10
|
+
import { S as SearchField } from './SearchField-Bk-Ltu4v.js';
|
|
11
11
|
|
|
12
12
|
const PARTS = {
|
|
13
13
|
trigger: COMMON_PART.trigger,
|
|
@@ -54,7 +54,6 @@ const SelectMenu = forwardRef(
|
|
|
54
54
|
displayAs,
|
|
55
55
|
initialLoad,
|
|
56
56
|
initialLoadPerformed,
|
|
57
|
-
setInitialLoadPerformed,
|
|
58
57
|
options,
|
|
59
58
|
loading,
|
|
60
59
|
loadingMore,
|
|
@@ -72,6 +71,10 @@ const SelectMenu = forwardRef(
|
|
|
72
71
|
});
|
|
73
72
|
const [inputValue, setInputValue] = useState("");
|
|
74
73
|
const searchValue = disableSearch ? "" : inputValue;
|
|
74
|
+
const searchValueRef = useRef(searchValue);
|
|
75
|
+
useLayoutEffect(() => {
|
|
76
|
+
searchValueRef.current = searchValue;
|
|
77
|
+
});
|
|
75
78
|
const { pinnedSections, ungroupedItems, groupSections } = useProcessedOptions({
|
|
76
79
|
options,
|
|
77
80
|
pinned,
|
|
@@ -160,30 +163,17 @@ const SelectMenu = forwardRef(
|
|
|
160
163
|
},
|
|
161
164
|
[getMenuProps, onMenuKeyDown]
|
|
162
165
|
);
|
|
166
|
+
const wantsInitialLoad = initialLoad === "immediate" || initialLoad === "open" && isOpen;
|
|
163
167
|
useEffect(() => {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
}
|
|
169
|
-
};
|
|
170
|
-
performInitialLoad();
|
|
171
|
-
}, [
|
|
172
|
-
loadOptions,
|
|
173
|
-
initialLoadPerformed,
|
|
174
|
-
initialLoad,
|
|
175
|
-
setInitialLoadPerformed
|
|
176
|
-
]);
|
|
168
|
+
if (wantsInitialLoad && !initialLoadPerformed) {
|
|
169
|
+
loadOptions(searchValueRef.current, { initial: true });
|
|
170
|
+
}
|
|
171
|
+
}, [loadOptions, initialLoadPerformed, wantsInitialLoad]);
|
|
177
172
|
const prevIsOpenRef = useRef(false);
|
|
178
173
|
useEffect(() => {
|
|
179
174
|
const wasOpen = prevIsOpenRef.current;
|
|
180
175
|
prevIsOpenRef.current = isOpen;
|
|
181
176
|
if (isOpen && !wasOpen) {
|
|
182
|
-
if (initialLoad === "open" && !initialLoadPerformed) {
|
|
183
|
-
loadOptions("", { initial: true }).then(() => {
|
|
184
|
-
setInitialLoadPerformed(true);
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
177
|
const selectedIdx = items.findIndex(
|
|
188
178
|
(item) => item.original.id === selectedOption?.id
|
|
189
179
|
);
|
|
@@ -195,16 +185,7 @@ const SelectMenu = forwardRef(
|
|
|
195
185
|
setInputValue("");
|
|
196
186
|
loadOptions("", { initial: true });
|
|
197
187
|
}
|
|
198
|
-
}, [
|
|
199
|
-
isOpen,
|
|
200
|
-
initialLoad,
|
|
201
|
-
initialLoadPerformed,
|
|
202
|
-
loadOptions,
|
|
203
|
-
setInitialLoadPerformed,
|
|
204
|
-
items,
|
|
205
|
-
selectedOption?.id,
|
|
206
|
-
setHighlightedIndex
|
|
207
|
-
]);
|
|
188
|
+
}, [isOpen, loadOptions, items, selectedOption?.id, setHighlightedIndex]);
|
|
208
189
|
useEffect(() => {
|
|
209
190
|
if (!isOpen || displayAs !== "popover") return;
|
|
210
191
|
const frameId = requestAnimationFrame(() => {
|
|
@@ -384,4 +365,4 @@ const SelectMenuSync = (props) => {
|
|
|
384
365
|
};
|
|
385
366
|
|
|
386
367
|
export { SelectMenu as S, SelectMenuSync as a };
|
|
387
|
-
//# sourceMappingURL=SelectMenuSync-
|
|
368
|
+
//# sourceMappingURL=SelectMenuSync-Klna2oqs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelectMenuSync-Klna2oqs.js","sources":["../src/components/SelectMenu/parts.ts","../src/components/SelectMenu/SelectMenu.tsx","../src/components/SelectMenu/SelectMenuSync.tsx"],"sourcesContent":["import { COMMON_PART } from \"../../internal/constants/anvParts\";\n\n/**\n * `data-anv-part` names for SelectMenu 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 { SelectMenuHandle, SelectMenuProps } 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 { SelectOptions } from \"../../internal/components/SelectOptions\";\nimport { useDebouncedCallback } from \"../../internal/hooks/useDebouncedCallback\";\nimport { OptionsPopover } from \"../../internal/components/OptionsPopover/OptionsPopover\";\nimport { OptionsDialog } from \"../../internal/components/OptionsDialog/OptionsDialog\";\nimport { MenuFooter } from \"../../internal/components/MenuFooter/MenuFooter\";\nimport { AddNewItemButton } from \"../../internal/components/AddNewItemButton\";\nimport { shouldShowAddNewItem } from \"../../internal/types/addNewItemTypes\";\nimport { useProcessedOptions } from \"../../internal/hooks/useProcessedOptions\";\nimport { buildSelectItems } from \"../../internal/functions/buildSelectItems\";\nimport { useMenuInteraction } from \"./internal/useMenuInteraction\";\nimport type { SelectItem } from \"../../internal/types/selectFieldInternalTypes\";\nimport { useSelectOrchestration } from \"../../internal/hooks/useSelectOrchestration\";\nimport { SearchField } from \"../../components\";\nimport type { DataAttributes } from \"../../types\";\nimport { ANV_PART_ATTR } from \"../../internal/constants/anvParts\";\nimport { PARTS } from \"./parts\";\n\n/** Single-select menu opened from a custom trigger. Selection is controlled. */\nexport const SelectMenu = forwardRef<SelectMenuHandle, SelectMenuProps>(\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: selectedOption,\n initialLoad: initialLoadProp,\n displayMenuAs: displayMenuAsProp,\n lazy,\n loadOptions: loadOptionsProp,\n label,\n searchPlaceholder,\n debounceMs = 200,\n onSelectedOptionChange,\n cache,\n pinned,\n virtualize,\n disableSearch,\n popoverWidth,\n trigger,\n onSearchChange,\n onMenuKeyDown,\n onImplicitClose,\n onExplicitClose,\n addItemLabel,\n onAddNewItem,\n clear,\n } = props;\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 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 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 } =\n useProcessedOptions({\n options,\n pinned,\n searchValue,\n groupToString,\n groupSorter,\n });\n\n const { items, sectionsMeta } = useMemo(\n () =>\n buildSelectItems({\n pinnedSections,\n groupSections,\n ungroupedItems,\n }),\n [pinnedSections, groupSections, ungroupedItems],\n );\n\n const selectedItemIds = useMemo(\n () => new Set(selectedOption ? [selectedOption.id] : []),\n [selectedOption],\n );\n\n const handleItemActivate = useCallback(\n (item: SelectItem) => {\n if (\n item.type === \"option\" ||\n item.type === \"pinned-option\" ||\n item.type === \"grouped-option\"\n ) {\n onSelectedOptionChange(item.original);\n } else {\n onSelectedOptionChange(null);\n }\n },\n [onSelectedOptionChange],\n );\n\n const [isOpen, setIsOpen] = useState(false);\n\n const {\n closeMenu,\n highlightedIndex,\n setHighlightedIndex,\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: true,\n id,\n triggerRef,\n label,\n isOpen,\n setIsOpen,\n onImplicitClose,\n onExplicitClose,\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 const selectedIdx = items.findIndex(\n (item) => item.original.id === selectedOption?.id,\n );\n if (selectedIdx >= 0) {\n setHighlightedIndex(selectedIdx);\n }\n }\n\n if (!isOpen && wasOpen) {\n setInputValue(\"\");\n loadOptions(\"\", { initial: true });\n }\n }, [isOpen, loadOptions, items, selectedOption?.id, setHighlightedIndex]);\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 searchInput = !disableSearch ? (\n <SearchField\n ref={searchRef}\n value={inputValue}\n onChange={\n handleInputChange as React.ChangeEventHandler<HTMLInputElement>\n }\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={() => closeMenu({ restoreFocus: false })}\n />\n ) : null;\n\n const wrappedClear = clear\n ? {\n ...clear,\n onClick: () => {\n clear.onClick();\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's footer divider.\n const hasFooter = !!wrappedClear || !!addNewItemButton;\n const footer = hasFooter ? (\n <MenuFooter clear={wrappedClear} addNew={addNewItemButton} />\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 <SelectOptions\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 selectedOption={selectedOption}\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 <SelectOptions\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 selectedOption={selectedOption}\n hasMore={hasMore}\n onLoadMore={handleLoadMore}\n loading={loading}\n loadingMore={loadingMore}\n virtualize={virtualize}\n />\n </OptionsPopover>\n </>\n );\n },\n);\n\nSelectMenu.displayName = \"SelectMenu\";\n","import { useMemo, useRef } from \"react\";\nimport type { MatchSorterOptions } from \"match-sorter\";\nimport { SelectMenu } from \"./SelectMenu\";\nimport type {\n SelectMenuHandle,\n SelectMenuProps,\n SelectMenuOption,\n SelectMenuGroupByValue,\n} from \"./types\";\nimport {\n type SyncFilterFn,\n defaultSyncFilter,\n toSyncFilterFn,\n sortByGroup,\n} from \"../../internal/functions/syncFilterUtils\";\nimport { useInvalidateOnOptionsChange } from \"../../internal/hooks/useInvalidateOnOptionsChange\";\n\nexport type SelectMenuSyncProps = Omit<\n SelectMenuProps,\n \"loadOptions\" | \"lazy\" | \"debounceMs\" | \"cache\" | \"initialLoad\"\n> & {\n /** In-memory options. Search filters this list instead of calling `loadOptions`. */\n options: SelectMenuOption[];\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?: SyncFilterFn | MatchSorterOptions<SelectMenuOption>;\n /** Orders groups when options include a `group`. */\n groupSorter?: (\n a: SelectMenuGroupByValue,\n b: SelectMenuGroupByValue,\n ) => number;\n};\n\n/** {@link SelectMenu} for a client-side `options` list. */\nexport const SelectMenuSync = (props: SelectMenuSyncProps) => {\n const {\n options,\n filter: filterProp = defaultSyncFilter,\n groupSorter,\n ...rest\n } = props;\n\n const filter = useMemo(() => toSyncFilterFn(filterProp), [filterProp]);\n\n const loadOptions = (searchValue: string) => {\n const filtered = filter(options, searchValue);\n return groupSorter ? sortByGroup(filtered, groupSorter) : filtered;\n };\n\n const fieldRef = useRef<SelectMenuHandle>(null);\n useInvalidateOnOptionsChange(fieldRef, options);\n\n return (\n <SelectMenu\n ref={fieldRef}\n lazy={false}\n loadOptions={loadOptions}\n debounceMs={0}\n {...rest}\n />\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { forwardRef, useCallback } from 'react';
|
|
3
|
-
import { V as VirtualizedOptionsPanel, O as OptionsPanel } from './syncFilterUtils-
|
|
3
|
+
import { V as VirtualizedOptionsPanel, O as OptionsPanel } from './syncFilterUtils-BNbAB0jz.js';
|
|
4
4
|
|
|
5
5
|
const SelectOptions = forwardRef(
|
|
6
6
|
({ selectedOption, virtualize, ...rest }, ref) => {
|
|
@@ -23,4 +23,4 @@ const SelectOptions = forwardRef(
|
|
|
23
23
|
SelectOptions.displayName = "SelectOptions";
|
|
24
24
|
|
|
25
25
|
export { SelectOptions as S };
|
|
26
|
-
//# sourceMappingURL=SelectOptions-
|
|
26
|
+
//# sourceMappingURL=SelectOptions-DGYYFU8i.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectOptions-
|
|
1
|
+
{"version":3,"file":"SelectOptions-DGYYFU8i.js","sources":["../src/internal/components/SelectOptions.tsx"],"sourcesContent":["import type { SelectFieldOption } from \"../../components/SelectField/types\";\nimport { type CSSProperties, forwardRef, useCallback } from \"react\";\nimport type { CheckState } from \"../../types\";\nimport { OptionsPanel, type OptionsPanelHandle } from \"./OptionsPanel\";\nimport { VirtualizedOptionsPanel } from \"./VirtualizedOptionsPanel\";\nimport type {\n GetItemPropsFn,\n GetMenuPropsFn,\n SectionMeta,\n SelectItem,\n} from \"../types/selectFieldInternalTypes\";\n\nexport type SelectOptionsProps = {\n /** When false, option rows stay unmounted inside the menu scroller. */\n isOpen: boolean;\n /** Flattened option, pinned/group, and bulk-action rows. */\n items: SelectItem[];\n /** Downshift getter for the menu scroller. */\n getMenuProps: GetMenuPropsFn;\n /** Downshift getter for each option row. */\n getItemProps: GetItemPropsFn;\n /** Host highlight index into `items`. */\n highlightedIndex: number;\n /** Current single selection; pinned/grouped copies match on `original.id`. */\n selectedOption: SelectFieldOption | null;\n /** When true, shows the load-more control. */\n hasMore: boolean;\n /** Fetches the next page of options. */\n onLoadMore: () => void;\n /** Replaces the list with a spinner while the current page loads. */\n loading: boolean;\n /** Spinner in the load-more slot. */\n loadingMore: boolean;\n /** Skips automatic next-page fetch; the Load more button remains. */\n disableAutoLoadMore?: boolean;\n /** Disables every row, in addition to per-item `disabled`. */\n disabled?: boolean;\n className?: string;\n style?: CSSProperties;\n /** Pinned and group ranges over `items`. */\n sectionsMeta?: SectionMeta[];\n /** Uses the virtualized panel when true. Defaults to the non-virtual list. */\n virtualize?: boolean;\n};\n\n/** Single-select option list. Forwards to {@link OptionsPanel} or the virtualized panel. */\nexport const SelectOptions = forwardRef<OptionsPanelHandle, SelectOptionsProps>(\n ({ selectedOption, virtualize, ...rest }, ref) => {\n const getCheckedState = useCallback(\n (item: SelectItem): CheckState =>\n selectedOption?.id === item.original.id ? \"checked\" : \"unchecked\",\n [selectedOption],\n );\n\n const ListComponent = virtualize ? VirtualizedOptionsPanel : OptionsPanel;\n\n return (\n <ListComponent\n {...rest}\n ref={ref}\n selectionType=\"single\"\n getCheckedState={getCheckedState}\n />\n );\n },\n);\n\nSelectOptions.displayName = \"SelectOptions\";\n"],"names":[],"mappings":";;;;AA8CO,MAAM,aAAA,GAAgB,UAAA;AAAA,EAC3B,CAAC,EAAE,cAAA,EAAgB,YAAY,GAAG,IAAA,IAAQ,GAAA,KAAQ;AAChD,IAAA,MAAM,eAAA,GAAkB,WAAA;AAAA,MACtB,CAAC,IAAA,KACC,cAAA,EAAgB,OAAO,IAAA,CAAK,QAAA,CAAS,KAAK,SAAA,GAAY,WAAA;AAAA,MACxD,CAAC,cAAc;AAAA,KACjB;AAEA,IAAA,MAAM,aAAA,GAAgB,aAAa,uBAAA,GAA0B,YAAA;AAE7D,IAAA,uBACE,GAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACE,GAAG,IAAA;AAAA,QACJ,GAAA;AAAA,QACA,aAAA,EAAc,QAAA;AAAA,QACd;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;AAEA,aAAA,CAAc,WAAA,GAAc,eAAA;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { A as Avatar } from './Avatar-Ba662b3z.js';
|
|
3
3
|
import { I as Icon } from './Icon-B5zwN7GD.js';
|
|
4
|
-
import { S as SelectTriggerBase, d as defaultItemToString, a as defaultItemToKey } from './SelectTriggerBase-
|
|
4
|
+
import { S as SelectTriggerBase, d as defaultItemToString, a as defaultItemToKey } from './SelectTriggerBase-DUYq_L-6.js';
|
|
5
5
|
import { u as useLayoutPropsUtil } from './useLayoutPropsUtil-DjqeAJZ9.js';
|
|
6
6
|
import { c as childrenToString } from './childrenToString-Bz9MqbHb.js';
|
|
7
7
|
import { useTrackingId } from './useTrackingId.js';
|
|
@@ -121,4 +121,4 @@ const SelectTrigger = (props) => {
|
|
|
121
121
|
};
|
|
122
122
|
|
|
123
123
|
export { SelectTrigger as S };
|
|
124
|
-
//# sourceMappingURL=SelectTrigger-
|
|
124
|
+
//# sourceMappingURL=SelectTrigger-DKY7rpZn.js.map
|