@servicetitan/anvil2 2.5.1 → 2.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +24 -0
- package/dist/{Alert-D9mBPs6z.js → Alert-C_o2f78C.js} +5 -5
- package/dist/{Alert-D9mBPs6z.js.map → Alert-C_o2f78C.js.map} +1 -1
- package/dist/Alert.js +1 -1
- package/dist/{Announcement-B34cD6BC.js → Announcement-CyrTvgP4.js} +5 -5
- package/dist/{Announcement-B34cD6BC.js.map → Announcement-CyrTvgP4.js.map} +1 -1
- package/dist/Announcement.js +1 -1
- package/dist/{AnvilProvider-C3pjoStP.js → AnvilProvider-ClfmLl_6.js} +5 -5
- package/dist/{AnvilProvider-C3pjoStP.js.map → AnvilProvider-ClfmLl_6.js.map} +1 -1
- package/dist/AnvilProvider.js +1 -1
- package/dist/{Avatar-DShevhcs.js → Avatar--CnTAnfD.js} +2 -2
- package/dist/{Avatar-DShevhcs.js.map → Avatar--CnTAnfD.js.map} +1 -1
- package/dist/{Avatar-COMPK7Ym.js → Avatar-CCnbKkCm.js} +4 -4
- package/dist/{Avatar-COMPK7Ym.js.map → Avatar-CCnbKkCm.js.map} +1 -1
- package/dist/Avatar.js +2 -2
- package/dist/{Badge-CS-CwcOQ.js → Badge-C2W7Dls9.js} +4 -4
- package/dist/{Badge-CS-CwcOQ.js.map → Badge-C2W7Dls9.js.map} +1 -1
- package/dist/Badge.js +1 -1
- package/dist/{Breadcrumbs-CEVH4s23.js → Breadcrumbs-3Y7jnj-F.js} +6 -6
- package/dist/{Breadcrumbs-CEVH4s23.js.map → Breadcrumbs-3Y7jnj-F.js.map} +1 -1
- package/dist/Breadcrumbs.js +1 -1
- package/dist/{Button-DrNDkO2f.js → Button-CVsGhVJz.js} +6 -6
- package/dist/{Button-DrNDkO2f.js.map → Button-CVsGhVJz.js.map} +1 -1
- package/dist/Button.css +49 -49
- package/dist/Button.js +1 -1
- package/dist/Button.module-wCtFYGVD.js +26 -0
- package/dist/Button.module-wCtFYGVD.js.map +1 -0
- package/dist/{ButtonCompound-D9VTKcL4.js → ButtonCompound-Cmw3cgMY.js} +4 -4
- package/dist/{ButtonCompound-D9VTKcL4.js.map → ButtonCompound-Cmw3cgMY.js.map} +1 -1
- package/dist/ButtonCompound.js +1 -1
- package/dist/{ButtonLink-DDtrmbVM.js → ButtonLink-BJKTJER8.js} +6 -6
- package/dist/{ButtonLink-DDtrmbVM.js.map → ButtonLink-BJKTJER8.js.map} +1 -1
- package/dist/ButtonLink.js +1 -1
- package/dist/{ButtonToggle-DrFewgOG.js → ButtonToggle-DaYJWso_.js} +5 -5
- package/dist/{ButtonToggle-DrFewgOG.js.map → ButtonToggle-DaYJWso_.js.map} +1 -1
- package/dist/ButtonToggle.js +1 -1
- package/dist/{Calendar-CtkL4zYU.js → Calendar-B0u3EgCY.js} +7 -7
- package/dist/{Calendar-CtkL4zYU.js.map → Calendar-B0u3EgCY.js.map} +1 -1
- package/dist/{Calendar-CkgpKD7Q.js → Calendar-B5d2SUrH.js} +2 -2
- package/dist/{Calendar-CkgpKD7Q.js.map → Calendar-B5d2SUrH.js.map} +1 -1
- package/dist/Calendar.js +2 -2
- package/dist/{Card-DDH7gI8m.js → Card-wz71dEVA.js} +3 -3
- package/dist/{Card-DDH7gI8m.js.map → Card-wz71dEVA.js.map} +1 -1
- package/dist/Card.js +1 -1
- package/dist/{Checkbox-CxjZpzPp.js → Checkbox-BwULIo4D.js} +26 -36
- package/dist/Checkbox-BwULIo4D.js.map +1 -0
- package/dist/{Checkbox-CFgjreAl.js → Checkbox-CIj37_vY.js} +2 -2
- package/dist/{Checkbox-CFgjreAl.js.map → Checkbox-CIj37_vY.js.map} +1 -1
- package/dist/Checkbox.css +71 -66
- package/dist/Checkbox.js +1 -1
- package/dist/Checkbox.module-EkRZO48Y.js +28 -0
- package/dist/Checkbox.module-EkRZO48Y.js.map +1 -0
- package/dist/{Chip-Bc7jiIJ1.js → Chip-DjTAR0va.js} +6 -6
- package/dist/{Chip-Bc7jiIJ1.js.map → Chip-DjTAR0va.js.map} +1 -1
- package/dist/Chip.js +1 -1
- package/dist/{Combobox-Drqb3GVU.js → Combobox-Clymsgli.js} +16 -19
- package/dist/Combobox-Clymsgli.js.map +1 -0
- package/dist/Combobox.js +1 -1
- package/dist/{DataTable-BLuJ4FtH.js → DataTable-qoseu_e2.js} +83 -48
- package/dist/DataTable-qoseu_e2.js.map +1 -0
- package/dist/DataTable.css +68 -55
- package/dist/{DateFieldRange-CvlOeE4v.js → DateFieldRange-rks7jQor.js} +45 -54
- package/dist/DateFieldRange-rks7jQor.js.map +1 -0
- package/dist/DateFieldRange.js +1 -1
- package/dist/{DateFieldSingle-9UHxIxIA.js → DateFieldSingle-C0WXU7H1.js} +43 -52
- package/dist/DateFieldSingle-C0WXU7H1.js.map +1 -0
- package/dist/DateFieldSingle.js +1 -1
- package/dist/{DateFieldYearless-HNydELvO.js → DateFieldYearless-2p3a7Xgo.js} +15 -23
- package/dist/DateFieldYearless-2p3a7Xgo.js.map +1 -0
- package/dist/DateFieldYearless.js +1 -1
- package/dist/{DateFieldYearlessRange-COb8v2CG.js → DateFieldYearlessRange-DLmhPug8.js} +18 -25
- package/dist/DateFieldYearlessRange-DLmhPug8.js.map +1 -0
- package/dist/DateFieldYearlessRange.js +1 -1
- package/dist/{DaysOfTheWeek-D-WPj18i.js → DaysOfTheWeek-BR32AA32.js} +6 -6
- package/dist/{DaysOfTheWeek-D-WPj18i.js.map → DaysOfTheWeek-BR32AA32.js.map} +1 -1
- package/dist/DaysOfTheWeek.js +1 -1
- package/dist/{Details-BF0-a1by.js → Details-Dxq_v3Qg.js} +4 -4
- package/dist/{Details-BF0-a1by.js.map → Details-Dxq_v3Qg.js.map} +1 -1
- package/dist/Details.js +1 -1
- package/dist/{Dialog-DEAR058v.js → Dialog-CMhypnCD.js} +5 -5
- package/dist/{Dialog-DEAR058v.js.map → Dialog-CMhypnCD.js.map} +1 -1
- package/dist/Dialog.js +1 -1
- package/dist/{DialogCancelButton-BfI9K4a4.js → DialogCancelButton-DQDMzGeT.js} +2 -2
- package/dist/{DialogCancelButton-BfI9K4a4.js.map → DialogCancelButton-DQDMzGeT.js.map} +1 -1
- package/dist/{Divider-De04mOU6.js → Divider-B1UoK8ho.js} +3 -3
- package/dist/{Divider-De04mOU6.js.map → Divider-B1UoK8ho.js.map} +1 -1
- package/dist/Divider.js +1 -1
- package/dist/Dnd.js +1 -1
- package/dist/DndSort.js +6 -6
- package/dist/{Drawer-CnMskBQl.js → Drawer-CSelPi8t.js} +5 -5
- package/dist/{Drawer-CnMskBQl.js.map → Drawer-CSelPi8t.js.map} +1 -1
- package/dist/Drawer.js +1 -1
- package/dist/DrillDown.js +1 -1
- package/dist/{EditCard-CH-JE4ba.js → EditCard-CLN0GBN_.js} +7 -7
- package/dist/{EditCard-CH-JE4ba.js.map → EditCard-CLN0GBN_.js.map} +1 -1
- package/dist/EditCard.js +1 -1
- package/dist/FieldLabel-DbMosKtd.js +125 -0
- package/dist/FieldLabel-DbMosKtd.js.map +1 -0
- package/dist/FieldLabel.css +80 -10
- package/dist/FieldLabel.js +1 -1
- package/dist/{FieldMessage-OeP_xSUE.js → FieldMessage-COHqUdj5.js} +3 -3
- package/dist/{FieldMessage-OeP_xSUE.js.map → FieldMessage-COHqUdj5.js.map} +1 -1
- package/dist/FieldMessage.js +2 -2
- package/dist/{Flex-CUtXN-C0.js → Flex-WyyZm1bf.js} +3 -3
- package/dist/{Flex-CUtXN-C0.js.map → Flex-WyyZm1bf.js.map} +1 -1
- package/dist/Flex.js +1 -1
- package/dist/{Grid-CatFkT0X.js → Grid-ONcUpb__.js} +3 -3
- package/dist/{Grid-CatFkT0X.js.map → Grid-ONcUpb__.js.map} +1 -1
- package/dist/Grid.js +1 -1
- package/dist/{Helper-B2UrgJvr.js → Helper-B_FIOlhy.js} +3 -3
- package/dist/{Helper-B2UrgJvr.js.map → Helper-B_FIOlhy.js.map} +1 -1
- package/dist/{Icon-Bcil6aBo.js → Icon-DuIlne4x.js} +3 -3
- package/dist/{Icon-Bcil6aBo.js.map → Icon-DuIlne4x.js.map} +1 -1
- package/dist/Icon.js +1 -1
- package/dist/{InputMask-B7ZnJoR5.js → InputMask-BKs-x6ds.js} +3 -3
- package/dist/{InputMask-B7ZnJoR5.js.map → InputMask-BKs-x6ds.js.map} +1 -1
- package/dist/InputMask.js +1 -1
- package/dist/{InteractiveCard-OszQGxGw.js → InteractiveCard-GTYbR6Xy.js} +3 -3
- package/dist/{InteractiveCard-OszQGxGw.js.map → InteractiveCard-GTYbR6Xy.js.map} +1 -1
- package/dist/InteractiveCard.js +1 -1
- package/dist/{Layout-DTAU7jS5.js → Layout-VfhlilMG.js} +2 -2
- package/dist/{Layout-DTAU7jS5.js.map → Layout-VfhlilMG.js.map} +1 -1
- package/dist/Layout.js +1 -1
- package/dist/{Link-B3reiL5f.js → Link-jTvzyXca.js} +4 -4
- package/dist/{Link-B3reiL5f.js.map → Link-jTvzyXca.js.map} +1 -1
- package/dist/Link.js +1 -1
- package/dist/{LinkButton-D62f2os3.js → LinkButton-DGyHR1E7.js} +3 -3
- package/dist/{LinkButton-D62f2os3.js.map → LinkButton-DGyHR1E7.js.map} +1 -1
- package/dist/LinkButton.js +1 -1
- package/dist/{List-CtdOo1dv.js → List-CJZjElAQ.js} +3 -3
- package/dist/{List-CtdOo1dv.js.map → List-CJZjElAQ.js.map} +1 -1
- package/dist/List.js +1 -1
- package/dist/{ListView-CN8zu-cq.js → ListView-CeGwrRbt.js} +4 -4
- package/dist/{ListView-CN8zu-cq.js.map → ListView-CeGwrRbt.js.map} +1 -1
- package/dist/ListView.js +1 -1
- package/dist/{Listbox-DMyxIokT.js → Listbox-BtAgBDRS.js} +7 -7
- package/dist/{Listbox-DMyxIokT.js.map → Listbox-BtAgBDRS.js.map} +1 -1
- package/dist/Listbox.css +29 -29
- package/dist/Listbox.js +1 -1
- package/dist/Listbox.module-HAXMOKvC.js +18 -0
- package/dist/Listbox.module-HAXMOKvC.js.map +1 -0
- package/dist/{LocalizationProvider-ay-XWdlo.js → LocalizationProvider-DWCyga_d.js} +2 -2
- package/dist/{LocalizationProvider-ay-XWdlo.js.map → LocalizationProvider-DWCyga_d.js.map} +1 -1
- package/dist/LocalizationProvider.js +1 -1
- package/dist/{Menu-CpRnsr0v.js → Menu-BXsmCP20.js} +6 -5
- package/dist/{Menu-CpRnsr0v.js.map → Menu-BXsmCP20.js.map} +1 -1
- package/dist/Menu.js +1 -1
- package/dist/MultiSelectField.js +1 -1
- package/dist/{MultiSelectFieldSync-BnPzYM72.js → MultiSelectFieldSync-EELhdoD6.js} +92 -177
- package/dist/MultiSelectFieldSync-EELhdoD6.js.map +1 -0
- package/dist/MultiSelectMenu.d.ts +2 -0
- package/dist/MultiSelectMenu.js +2 -0
- package/dist/MultiSelectMenu.js.map +1 -0
- package/dist/MultiSelectMenuSync-CAPhhkK1.js +432 -0
- package/dist/MultiSelectMenuSync-CAPhhkK1.js.map +1 -0
- package/dist/{NumberField-ecubQsaf.js → NumberField-svhZp1kB.js} +14 -15
- package/dist/NumberField-svhZp1kB.js.map +1 -0
- package/dist/NumberField.js +1 -1
- package/dist/Overflow.js +3 -3
- package/dist/{Page-qOkG6psI.js → Page-BpV1yHkm.js} +16 -16
- package/dist/{Page-qOkG6psI.js.map → Page-BpV1yHkm.js.map} +1 -1
- package/dist/Page.js +1 -1
- package/dist/{Pagination-BuiyhZlJ.js → Pagination-BAwqfl_2.js} +8 -8
- package/dist/{Pagination-BuiyhZlJ.js.map → Pagination-BAwqfl_2.js.map} +1 -1
- package/dist/Pagination.js +1 -1
- package/dist/{Popover-CYWYCj7l.js → Popover-Br6qPgKe.js} +7 -26
- package/dist/Popover-Br6qPgKe.js.map +1 -0
- package/dist/Popover-Dkw_8dZx.js +535 -0
- package/dist/Popover-Dkw_8dZx.js.map +1 -0
- package/dist/Popover.js +1 -1
- package/dist/Popover2.css +68 -0
- package/dist/{ProgressBar-CBhVZIzK.js → ProgressBar-JpRDW5vG.js} +8 -8
- package/dist/{ProgressBar-CBhVZIzK.js.map → ProgressBar-JpRDW5vG.js.map} +1 -1
- package/dist/ProgressBar.js +1 -1
- package/dist/{Radio-DtYoRq3m.js → Radio-8DmfWHYq.js} +38 -46
- package/dist/Radio-8DmfWHYq.js.map +1 -0
- package/dist/{Radio-BMFwnzyz.js → Radio-M7lc0BsU.js} +2 -2
- package/dist/{Radio-BMFwnzyz.js.map → Radio-M7lc0BsU.js.map} +1 -1
- package/dist/Radio.css +52 -47
- package/dist/Radio.js +1 -1
- package/dist/{SearchField-CtdtcrVV.js → SearchField-im7AHGYo.js} +5 -5
- package/dist/{SearchField-CtdtcrVV.js.map → SearchField-im7AHGYo.js.map} +1 -1
- package/dist/SearchField.js +1 -1
- package/dist/{SegmentedControl-CzTtiYS9.js → SegmentedControl-7fDLhgvh.js} +3 -3
- package/dist/{SegmentedControl-CzTtiYS9.js.map → SegmentedControl-7fDLhgvh.js.map} +1 -1
- package/dist/SegmentedControl.js +1 -1
- package/dist/{SelectCard-yWBNnm7t.js → SelectCard-D5dcOIuf.js} +6 -6
- package/dist/{SelectCard-yWBNnm7t.js.map → SelectCard-D5dcOIuf.js.map} +1 -1
- package/dist/SelectCard.js +1 -1
- package/dist/SelectField.js +1 -1
- package/dist/SelectFieldLabel-Dr8HeW3N.js +31 -0
- package/dist/SelectFieldLabel-Dr8HeW3N.js.map +1 -0
- package/dist/{SelectFieldSync-DCrafdbx.js → SelectFieldSync-BPopU0om.js} +80 -169
- package/dist/SelectFieldSync-BPopU0om.js.map +1 -0
- package/dist/SelectMenu.d.ts +2 -0
- package/dist/SelectMenu.js +2 -0
- package/dist/SelectMenu.js.map +1 -0
- package/dist/SelectMenuSync-DeMYO1m_.js +327 -0
- package/dist/SelectMenuSync-DeMYO1m_.js.map +1 -0
- package/dist/SelectOptions-DBe5ZN_-.js +26 -0
- package/dist/SelectOptions-DBe5ZN_-.js.map +1 -0
- package/dist/{SelectTrigger-Cs5CGc4D.js → SelectTrigger-ObsnAKNp.js} +6 -9
- package/dist/SelectTrigger-ObsnAKNp.js.map +1 -0
- package/dist/SelectTrigger.js +1 -1
- package/dist/{SelectTriggerBase-Cs827tDp.js → SelectTriggerBase-DKfOL2RJ.js} +8 -8
- package/dist/{SelectTriggerBase-Cs827tDp.js.map → SelectTriggerBase-DKfOL2RJ.js.map} +1 -1
- package/dist/{SideNav-CbMGsIPM.js → SideNav-KksbSQn7.js} +4 -4
- package/dist/{SideNav-CbMGsIPM.js.map → SideNav-KksbSQn7.js.map} +1 -1
- package/dist/SideNav.js +1 -1
- package/dist/Skeleton.js +2 -2
- package/dist/{Spinner-CpEm3Lud.js → Spinner-BqmcE2pb.js} +2 -2
- package/dist/{Spinner-CpEm3Lud.js.map → Spinner-BqmcE2pb.js.map} +1 -1
- package/dist/Spinner.js +1 -1
- package/dist/{SrOnly-CrdBTl6E.js → SrOnly-eUpYGpAT.js} +2 -2
- package/dist/{SrOnly-CrdBTl6E.js.map → SrOnly-eUpYGpAT.js.map} +1 -1
- package/dist/SrOnly.js +1 -1
- package/dist/{Stepper-CzVKDg-N.js → Stepper-Dt8_ImvJ.js} +5 -5
- package/dist/{Stepper-CzVKDg-N.js.map → Stepper-Dt8_ImvJ.js.map} +1 -1
- package/dist/Stepper.js +1 -1
- package/dist/{Switch-CEmjmSiL.js → Switch-DpPHr3G3.js} +6 -6
- package/dist/{Switch-CEmjmSiL.js.map → Switch-DpPHr3G3.js.map} +1 -1
- package/dist/Switch.js +1 -1
- package/dist/{Tab-DXivEqur.js → Tab-DO7LaUbw.js} +4 -4
- package/dist/{Tab-DXivEqur.js.map → Tab-DO7LaUbw.js.map} +1 -1
- package/dist/Tab.js +1 -1
- package/dist/Table.js +1 -1
- package/dist/{Text-DhheKsns.js → Text-BJo4oMI2.js} +3 -3
- package/dist/{Text-DhheKsns.js.map → Text-BJo4oMI2.js.map} +1 -1
- package/dist/Text.js +1 -1
- package/dist/{TextField-D9VWORek.js → TextField--co7QJ4r.js} +2 -2
- package/dist/{TextField-D9VWORek.js.map → TextField--co7QJ4r.js.map} +1 -1
- package/dist/{TextField-atI4M79b.js → TextField-Cax4UeNl.js} +12 -16
- package/dist/TextField-Cax4UeNl.js.map +1 -0
- package/dist/TextField.js +1 -1
- package/dist/{Textarea-D-kPIsIN.js → Textarea-DyqdMTvQ.js} +11 -15
- package/dist/Textarea-DyqdMTvQ.js.map +1 -0
- package/dist/Textarea.js +1 -1
- package/dist/{ThemeProvider-BEt_iJgf.js → ThemeProvider-CaYW3RuA.js} +3 -3
- package/dist/{ThemeProvider-BEt_iJgf.js.map → ThemeProvider-CaYW3RuA.js.map} +1 -1
- package/dist/ThemeProvider.js +1 -1
- package/dist/{TimeField-DREFzFkw.js → TimeField-BfcLCWMG.js} +23 -13
- package/dist/TimeField-BfcLCWMG.js.map +1 -0
- package/dist/TimeField.js +1 -1
- package/dist/Toast.js +2 -2
- package/dist/{Toaster-Bisc1mlh.js → Toaster-DikGo_hR.js} +2 -2
- package/dist/{Toaster-Bisc1mlh.js.map → Toaster-DikGo_hR.js.map} +1 -1
- package/dist/{Toaster-B652KIzq.js → Toaster-b0-Ub3yt.js} +7 -7
- package/dist/{Toaster-B652KIzq.js.map → Toaster-b0-Ub3yt.js.map} +1 -1
- package/dist/{Toolbar-jfZ-CupZ.js → Toolbar-DqYMc_w8.js} +39 -126
- package/dist/Toolbar-DqYMc_w8.js.map +1 -0
- package/dist/Toolbar.js +1 -1
- package/dist/{Tooltip-Bt62hC5J.js → Tooltip-Bupqao9B.js} +13 -6
- package/dist/Tooltip-Bupqao9B.js.map +1 -0
- package/dist/Tooltip.js +1 -1
- package/dist/{YearlessDateInputWithPicker-mW5KykHZ.js → YearlessDateInputWithPicker-aq99rKJU.js} +14 -15
- package/dist/YearlessDateInputWithPicker-aq99rKJU.js.map +1 -0
- package/dist/YearlessDateInputWithPicker.css +33 -33
- package/dist/assets/icons/st/resize_window_alt.svg +1 -0
- package/dist/assets/icons/st.ts +1 -0
- package/dist/beta/components/MultiSelectField/MultiSelectFieldSync.d.ts +2 -3
- package/dist/beta/components/MultiSelectField/internal/useComboMultiple.d.ts +8 -7
- package/dist/beta/components/MultiSelectField/internal/useSelectModeMultiple.d.ts +6 -4
- package/dist/beta/components/MultiSelectField/types.d.ts +2 -3
- package/dist/beta/components/MultiSelectMenu/MultiSelectMenu.d.ts +30 -0
- package/dist/beta/components/MultiSelectMenu/MultiSelectMenuSync.d.ts +54 -0
- package/dist/beta/components/MultiSelectMenu/index.d.ts +3 -0
- package/dist/beta/components/MultiSelectMenu/types.d.ts +170 -0
- package/dist/beta/components/SelectField/SelectFieldSync.d.ts +2 -3
- package/dist/beta/components/SelectField/internal/SelectFieldComboboxMode.d.ts +1 -1
- package/dist/beta/components/SelectField/internal/SelectFieldSelectMode.d.ts +1 -1
- package/dist/beta/components/SelectField/internal/useCombo.d.ts +7 -7
- package/dist/beta/components/SelectField/internal/useSelectMode.d.ts +7 -6
- package/dist/beta/components/SelectField/types.d.ts +2 -9
- package/dist/beta/components/SelectMenu/SelectMenu.d.ts +27 -0
- package/dist/beta/components/SelectMenu/SelectMenuSync.d.ts +41 -0
- package/dist/beta/components/SelectMenu/index.d.ts +3 -0
- package/dist/beta/components/SelectMenu/internal/useMenuInteraction.d.ts +72 -0
- package/dist/beta/components/SelectMenu/types.d.ts +153 -0
- package/dist/beta/components/Table/DataTable/internal/cells/CellFocusContext.d.ts +1 -1
- package/dist/beta/components/Table/DataTable/internal/cells/CellStatus.d.ts +12 -0
- package/dist/beta/components/Table/types.d.ts +14 -0
- package/dist/beta/components/Toolbar/ToolbarSelect.d.ts +3 -3
- package/dist/beta/components/index.d.ts +2 -0
- package/dist/beta.js +10 -8
- package/dist/beta.js.map +1 -1
- package/dist/components/Avatar/Avatar.figma.d.ts +1 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.figma.d.ts +1 -0
- package/dist/components/Card/Card.figma.d.ts +1 -0
- package/dist/components/Checkbox/Checkbox.figma.d.ts +1 -0
- package/dist/components/Chip/Chip.figma.d.ts +1 -0
- package/dist/components/Combobox/ComboboxTypes.d.ts +1 -1
- package/dist/components/DateFieldYearless/internal/YearlessDateSelectionPopover.d.ts +1 -1
- package/dist/components/FieldLabel/FieldLabel.d.ts +3 -0
- package/dist/components/FieldLabel/internal/FieldLabelButton.d.ts +22 -0
- package/dist/components/FieldLabel/internal/FieldLabelMoreInfoIcon.d.ts +4 -6
- package/dist/components/Link/Link.figma.d.ts +1 -0
- package/dist/components/ProgressBar/ProgressBar.figma.d.ts +1 -0
- package/dist/components/SelectTrigger/SelectTrigger.d.ts +1 -1
- package/dist/components/Spinner/Spinner.figma.d.ts +1 -0
- package/dist/components/Textarea/Textarea.d.ts +1 -1
- package/dist/components/Toolbar/ToolbarSelect.d.ts +3 -3
- package/dist/components/Tooltip/Tooltip.figma.d.ts +1 -0
- package/dist/{match-sorter.esm-adzV1NDp.js → downshift.esm-xtSnQp44.js} +3 -907
- package/dist/downshift.esm-xtSnQp44.js.map +1 -0
- package/dist/floating-ui.react-aKYfs-aw.js +2374 -0
- package/dist/floating-ui.react-aKYfs-aw.js.map +1 -0
- package/dist/{floating-ui.react-dom-BZbDMh89.js → floating-ui.react-dom-imrk9N49.js} +237 -19
- package/dist/floating-ui.react-dom-imrk9N49.js.map +1 -0
- package/dist/hooks/useBreakpoint/useBreakpoint.d.ts +3 -3
- package/dist/{index-ClUtwV8V.js → index-D6ag_WQW.js} +4 -4
- package/dist/{index-ClUtwV8V.js.map → index-D6ag_WQW.js.map} +1 -1
- package/dist/{index-SvGbrGuT.js → index-De1g9FRV.js} +2 -2
- package/dist/{index-SvGbrGuT.js.map → index-De1g9FRV.js.map} +1 -1
- package/dist/index.js +73 -99
- package/dist/index.js.map +1 -1
- package/dist/internal/components/MultiSelectOptions.d.ts +23 -0
- package/dist/{beta/components/SelectField/internal/FieldDialog/FieldDialog.d.ts → internal/components/OptionsDialog/OptionsDialog.d.ts} +2 -2
- package/dist/internal/components/OptionsPanel.d.ts +26 -0
- package/dist/internal/components/OptionsPopover/OptionsPopover.d.ts +16 -0
- package/dist/internal/components/Popover/Popover.d.ts +267 -0
- package/dist/internal/components/Popover/PopoverButton.d.ts +24 -0
- package/dist/internal/components/Popover/PopoverClose.d.ts +24 -0
- package/dist/internal/components/Popover/PopoverContent.d.ts +34 -0
- package/dist/internal/components/Popover/PopoverTrigger.d.ts +46 -0
- package/dist/internal/components/Popover/index.d.ts +6 -0
- package/dist/internal/components/Popover/internal/PopoverContext.d.ts +45 -0
- package/dist/internal/components/Popover/internal/usePopoverContext.d.ts +6 -0
- package/dist/internal/components/SelectOption.d.ts +13 -0
- package/dist/internal/components/SelectOptions.d.ts +23 -0
- package/dist/internal/components/VirtualizedOptionsPanel.d.ts +2 -0
- package/dist/internal/functions/buildSelectItems.d.ts +22 -0
- package/dist/internal/functions/syncFilterUtils.d.ts +10 -0
- package/dist/{beta/components/SelectField/internal → internal/hooks}/useGroupedOptions.d.ts +4 -3
- package/dist/{beta/components/SelectField/internal/useFieldListSections.d.ts → internal/hooks/useOptionsSections.d.ts} +7 -8
- package/dist/{beta/components/SelectField/internal → internal/hooks}/usePinnedOptions.d.ts +1 -1
- package/dist/{beta/components/SelectField/internal → internal/hooks}/useProcessedOptions.d.ts +2 -2
- package/dist/internal/hooks/useSelectOrchestration.d.ts +38 -0
- package/dist/{beta/components/MultiSelectField/internal → internal/hooks}/useToggleSelection.d.ts +2 -2
- package/dist/{beta/components/SelectField/internal/types.d.ts → internal/types/selectFieldInternalTypes.d.ts} +11 -3
- package/dist/match-sorter.esm-CGAauEiU.js +908 -0
- package/dist/match-sorter.esm-CGAauEiU.js.map +1 -0
- package/dist/safePopover-BDso-xSH.js +17 -0
- package/dist/safePopover-BDso-xSH.js.map +1 -0
- package/dist/{FieldDialog-C5mwMjrr.js → syncFilterUtils-BRKjFwxk.js} +287 -146
- package/dist/syncFilterUtils-BRKjFwxk.js.map +1 -0
- package/dist/{FieldDialog.css → syncFilterUtils.css} +18 -11
- package/dist/{useBreakpoint-BP3HZXmh.js → useBreakpoint-okJ64T1D.js} +4 -3
- package/dist/useBreakpoint-okJ64T1D.js.map +1 -0
- package/dist/useBreakpoint.js +1 -1
- package/dist/{useDrilldown-hUxMOdnz.js → useDrilldown-CqBBB_r1.js} +5 -5
- package/dist/{useDrilldown-hUxMOdnz.js.map → useDrilldown-CqBBB_r1.js.map} +1 -1
- package/dist/{useLayoutPropsUtil-loxbyklF.js → useLayoutPropsUtil-DMDdfIah.js} +2 -2
- package/dist/{useLayoutPropsUtil-loxbyklF.js.map → useLayoutPropsUtil-DMDdfIah.js.map} +1 -1
- package/dist/useMenuInteraction-zR_78KQC.js +249 -0
- package/dist/useMenuInteraction-zR_78KQC.js.map +1 -0
- package/dist/usePopoverTransitionStates-CDIoNUuf.js +24 -0
- package/dist/usePopoverTransitionStates-CDIoNUuf.js.map +1 -0
- package/dist/useToggleSelection-JD62Jzqu.js +63 -0
- package/dist/useToggleSelection-JD62Jzqu.js.map +1 -0
- package/dist/{utils-pudAMGnO.js → utils-CM48ODEJ.js} +3 -13
- package/dist/utils-CM48ODEJ.js.map +1 -0
- package/dist/warnOnce-Y9PRHcU4.js +13 -0
- package/dist/warnOnce-Y9PRHcU4.js.map +1 -0
- package/package.json +1 -1
- package/dist/Button.module-DwCq9XU0.js +0 -26
- package/dist/Button.module-DwCq9XU0.js.map +0 -1
- package/dist/Checkbox-CxjZpzPp.js.map +0 -1
- package/dist/Checkbox.module-D4EgXL0i.js +0 -27
- package/dist/Checkbox.module-D4EgXL0i.js.map +0 -1
- package/dist/Combobox-Drqb3GVU.js.map +0 -1
- package/dist/DataTable-BLuJ4FtH.js.map +0 -1
- package/dist/DateFieldRange-CvlOeE4v.js.map +0 -1
- package/dist/DateFieldSingle-9UHxIxIA.js.map +0 -1
- package/dist/DateFieldYearless-HNydELvO.js.map +0 -1
- package/dist/DateFieldYearlessRange-COb8v2CG.js.map +0 -1
- package/dist/FieldDialog-C5mwMjrr.js.map +0 -1
- package/dist/FieldLabel-DL0D6fvc.js +0 -95
- package/dist/FieldLabel-DL0D6fvc.js.map +0 -1
- package/dist/Listbox.module-XuKszT3X.js +0 -18
- package/dist/Listbox.module-XuKszT3X.js.map +0 -1
- package/dist/MultiSelectFieldSync-BnPzYM72.js.map +0 -1
- package/dist/NumberField-ecubQsaf.js.map +0 -1
- package/dist/Popover-CYWYCj7l.js.map +0 -1
- package/dist/Radio-DtYoRq3m.js.map +0 -1
- package/dist/SelectFieldSync-DCrafdbx.js.map +0 -1
- package/dist/SelectTrigger-Cs5CGc4D.js.map +0 -1
- package/dist/TextField-atI4M79b.js.map +0 -1
- package/dist/Textarea-D-kPIsIN.js.map +0 -1
- package/dist/TimeField-DREFzFkw.js.map +0 -1
- package/dist/Toolbar-jfZ-CupZ.js.map +0 -1
- package/dist/Tooltip-Bt62hC5J.js.map +0 -1
- package/dist/YearlessDateInputWithPicker-mW5KykHZ.js.map +0 -1
- package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldList.d.ts +0 -24
- package/dist/beta/components/SelectField/internal/FieldListBase.d.ts +0 -27
- package/dist/beta/components/SelectField/internal/FieldPopover/FieldPopover.d.ts +0 -9
- package/dist/beta/components/SelectField/internal/SelectFieldList.d.ts +0 -26
- package/dist/beta/components/SelectField/internal/SelectFieldListItem.d.ts +0 -14
- package/dist/beta/components/SelectField/internal/VirtualizedFieldListBase.d.ts +0 -2
- package/dist/beta/components/SelectField/internal/buildDownshiftItems.d.ts +0 -22
- package/dist/beta/components/Table/DataTable/internal/cells/CellError.d.ts +0 -10
- package/dist/floating-ui.react-P5949bpO.js +0 -28
- package/dist/floating-ui.react-P5949bpO.js.map +0 -1
- package/dist/floating-ui.react-dom-BZbDMh89.js.map +0 -1
- package/dist/match-sorter.esm-adzV1NDp.js.map +0 -1
- package/dist/useBreakpoint-BP3HZXmh.js.map +0 -1
- package/dist/utils-pudAMGnO.js.map +0 -1
- /package/dist/{beta/components/SelectField/internal → internal/components}/InView.d.ts +0 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { UseComboboxProps } from 'downshift';
|
|
2
|
-
import {
|
|
2
|
+
import { MultiSelectFieldGroupByValue, MultiSelectFieldOption, MultiSelectFieldPinnedOptions } from '../types';
|
|
3
|
+
import { SelectItem } from '../../../../internal/types/selectFieldInternalTypes';
|
|
3
4
|
import { CheckState } from '../../../../types';
|
|
4
5
|
export type UseComboMultipleOptions = {
|
|
5
6
|
/** An array of currently loaded options */
|
|
@@ -31,7 +32,8 @@ export type UseComboMultipleOptions = {
|
|
|
31
32
|
loading?: boolean;
|
|
32
33
|
/** Whether the list is virtualized (disables built-in scroll behavior) */
|
|
33
34
|
virtualize?: boolean;
|
|
34
|
-
|
|
35
|
+
onScrollToHighlight?: (index: number) => void;
|
|
36
|
+
} & Pick<UseComboboxProps<SelectItem>, "onInputValueChange" | "onIsOpenChange">;
|
|
35
37
|
/**
|
|
36
38
|
* Hook that wraps downshift's useCombobox for multi-select behavior.
|
|
37
39
|
* Unlike useCombo, this hook:
|
|
@@ -41,19 +43,18 @@ export type UseComboMultipleOptions = {
|
|
|
41
43
|
* @param options - Configuration options for the hook
|
|
42
44
|
* @returns Downshift combobox props and state
|
|
43
45
|
*/
|
|
44
|
-
export declare const useComboMultiple: ({ options, pinned, groupToString, groupSorter, selectAll, selectFiltered, selectedOptions, onSelectedOptionsChange, onInputValueChange, onIsOpenChange, displayAs, disabled, loading, virtualize, }: UseComboMultipleOptions) => {
|
|
46
|
+
export declare const useComboMultiple: ({ options, pinned, groupToString, groupSorter, selectAll, selectFiltered, selectedOptions, onSelectedOptionsChange, onInputValueChange, onIsOpenChange, displayAs, disabled, loading, virtualize, onScrollToHighlight, }: UseComboMultipleOptions) => {
|
|
45
47
|
inputValue: string;
|
|
46
48
|
wrapperDivRef: import('react').RefObject<HTMLDivElement>;
|
|
47
49
|
getToggleButtonProps: <Options>(options?: import('downshift').UseComboboxGetToggleButtonPropsOptions & Options) => import('downshift').Overwrite<import('downshift').UseComboboxGetToggleButtonPropsReturnValue, Options>;
|
|
48
50
|
getLabelProps: <Options>(options?: import('downshift').UseComboboxGetLabelPropsOptions & Options) => import('downshift').Overwrite<import('downshift').UseComboboxGetLabelPropsReturnValue, Options>;
|
|
49
51
|
getMenuProps: <Options>(options?: import('downshift').UseComboboxGetMenuPropsOptions & Options, otherOptions?: import('downshift').GetPropsCommonOptions) => import('downshift').Overwrite<import('downshift').UseComboboxGetMenuPropsReturnValue, Options>;
|
|
50
52
|
getInputProps: <Options>(options?: import('downshift').UseComboboxGetInputPropsOptions & Options, otherOptions?: import('downshift').GetPropsCommonOptions) => import('downshift').Overwrite<import('downshift').UseComboboxGetInputPropsReturnValue, Options>;
|
|
51
|
-
getItemProps: <Options>(options: import('downshift').UseComboboxGetItemPropsOptions<
|
|
53
|
+
getItemProps: <Options>(options: import('downshift').UseComboboxGetItemPropsOptions<SelectItem> & Options) => Omit<import('downshift').Overwrite<import('downshift').UseComboboxGetItemPropsReturnValue, Options>, "item" | "index">;
|
|
52
54
|
highlightedIndex: number;
|
|
53
|
-
highlightChangeTypeRef: import('react').MutableRefObject<string>;
|
|
54
55
|
isOpen: boolean;
|
|
55
|
-
|
|
56
|
-
sectionsMeta: import('../../SelectField/internal/
|
|
56
|
+
items: SelectItem[];
|
|
57
|
+
sectionsMeta: import('../../SelectField/internal/useCombo').SectionMeta[];
|
|
57
58
|
closeMenu: () => void;
|
|
58
59
|
openMenu: () => void;
|
|
59
60
|
toggleMenu: () => void;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { MultiSelectFieldGroupByValue, MultiSelectFieldOption, MultiSelectFieldPinnedOptions } from '../types';
|
|
2
|
+
import { SelectItem } from '../../../../internal/types/selectFieldInternalTypes';
|
|
2
3
|
import { CheckState } from '../../../../types';
|
|
3
4
|
export type UseSelectModeMultipleOptions = {
|
|
4
5
|
options: MultiSelectFieldOption[];
|
|
@@ -18,21 +19,22 @@ export type UseSelectModeMultipleOptions = {
|
|
|
18
19
|
displayAs: "popover" | "dialog";
|
|
19
20
|
disabled: boolean;
|
|
20
21
|
virtualize?: boolean;
|
|
22
|
+
onScrollToHighlight?: (index: number) => void;
|
|
21
23
|
};
|
|
22
24
|
/**
|
|
23
25
|
* Wraps downshift's useSelect for non-searchable multi-select fields.
|
|
24
26
|
* Keeps menu open after selection and handles bulk actions.
|
|
25
27
|
*/
|
|
26
|
-
export declare const useSelectModeMultiple: ({ options, pinned, groupToString, groupSorter, selectAll, selectedOptions, onSelectedOptionsChange, onIsOpenChange, displayAs, disabled, virtualize, }: UseSelectModeMultipleOptions) => {
|
|
28
|
+
export declare const useSelectModeMultiple: ({ options, pinned, groupToString, groupSorter, selectAll, selectedOptions, onSelectedOptionsChange, onIsOpenChange, displayAs, disabled, virtualize, onScrollToHighlight, }: UseSelectModeMultipleOptions) => {
|
|
27
29
|
wrapperDivRef: import('react').RefObject<HTMLDivElement>;
|
|
28
30
|
getToggleButtonProps: <Options>(options?: import('downshift').UseSelectGetToggleButtonPropsOptions & Options, otherOptions?: import('downshift').GetPropsCommonOptions) => import('downshift').Overwrite<import('downshift').UseSelectGetToggleButtonReturnValue, Options>;
|
|
29
31
|
getLabelProps: <Options>(options?: import('downshift').UseSelectGetLabelPropsOptions & Options) => import('downshift').Overwrite<import('downshift').UseSelectGetLabelPropsReturnValue, Options>;
|
|
30
32
|
getMenuProps: <Options>(options?: import('downshift').UseSelectGetMenuPropsOptions & Options, otherOptions?: import('downshift').GetPropsCommonOptions) => import('downshift').Overwrite<import('downshift').UseSelectGetMenuReturnValue, Options>;
|
|
31
|
-
getItemProps: <Options>(options: import('downshift').UseSelectGetItemPropsOptions<
|
|
33
|
+
getItemProps: <Options>(options: import('downshift').UseSelectGetItemPropsOptions<SelectItem> & Options) => Omit<import('downshift').Overwrite<import('downshift').UseSelectGetItemPropsReturnValue, Options>, "item" | "index">;
|
|
32
34
|
highlightedIndex: number;
|
|
33
35
|
isOpen: boolean;
|
|
34
|
-
|
|
35
|
-
sectionsMeta: import('../../SelectField/internal/
|
|
36
|
+
items: SelectItem[];
|
|
37
|
+
sectionsMeta: import('../../SelectField/internal/useCombo').SectionMeta[];
|
|
36
38
|
closeMenu: () => void;
|
|
37
39
|
openMenu: () => void;
|
|
38
40
|
toggleMenu: () => void;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { AriaAttributes, CSSProperties, ReactElement, ReactNode } from 'react';
|
|
2
2
|
import { CheckState, LayoutUtilProps, Size } from '../../../types';
|
|
3
|
-
import {
|
|
3
|
+
import { SelectFieldGroupByValue, SelectFieldOption } from '../SelectField/types';
|
|
4
4
|
/**
|
|
5
5
|
* Configuration options for the MultiSelectField cache.
|
|
6
6
|
* @property enabled - Whether caching is enabled. Defaults to true.
|
|
7
|
-
* @property maxSize - Maximum number of cached entries before clearing the cache. Defaults to
|
|
7
|
+
* @property maxSize - Maximum number of cached entries before clearing the cache. Defaults to 15.
|
|
8
8
|
*/
|
|
9
9
|
export type MultiSelectFieldCacheOptions = {
|
|
10
10
|
enabled?: boolean;
|
|
@@ -360,5 +360,4 @@ export type MultiSelectFieldPropsEager = MultiSelectFieldCommonProps & {
|
|
|
360
360
|
} & MultiSelectFieldGroupingProps;
|
|
361
361
|
export type MultiSelectFieldPropsLazy = MultiSelectFieldPropsLazyPage | MultiSelectFieldPropsLazyOffset | MultiSelectFieldPropsLazyGroup;
|
|
362
362
|
export type MultiSelectFieldProps = MultiSelectFieldPropsLazy | MultiSelectFieldPropsEager;
|
|
363
|
-
export type MultiSelectFieldDownshiftItem = SelectFieldDownshiftItem;
|
|
364
363
|
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { MultiSelectMenuHandle, MultiSelectMenuProps } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* MultiSelectMenu component for selecting multiple options from a dropdown triggered by any element.
|
|
4
|
+
*
|
|
5
|
+
* Features:
|
|
6
|
+
* - Attaches to any trigger element via a render prop
|
|
7
|
+
* - Multiple selection with checkbox indicators
|
|
8
|
+
* - Optional search input rendered inside the popover/dialog
|
|
9
|
+
* - Lazy loading with pagination (page, offset, or group modes)
|
|
10
|
+
* - Optional "Select All" functionality
|
|
11
|
+
* - Optional "Select Filtered" functionality
|
|
12
|
+
* - Pinned options support
|
|
13
|
+
* - Grouped options support
|
|
14
|
+
* - Supports both popover and dialog display modes
|
|
15
|
+
* - Adaptive display based on device (mobile uses dialog)
|
|
16
|
+
* - Cache support for loadOptions results
|
|
17
|
+
* - Full accessibility support with ARIA attributes
|
|
18
|
+
* - Controlled selection state
|
|
19
|
+
* - Configurable popover width
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* <MultiSelectMenu
|
|
23
|
+
* trigger={(props) => <Button {...props}>Select books</Button>}
|
|
24
|
+
* label="Books"
|
|
25
|
+
* value={selectedOptions}
|
|
26
|
+
* onSelectedOptionsChange={setSelectedOptions}
|
|
27
|
+
* loadOptions={loadOptions}
|
|
28
|
+
* />
|
|
29
|
+
*/
|
|
30
|
+
export declare const MultiSelectMenu: import('react').ForwardRefExoticComponent<MultiSelectMenuProps & import('react').RefAttributes<MultiSelectMenuHandle>>;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { MatchSorterOptions } from 'match-sorter';
|
|
2
|
+
import { MultiSelectMenuProps, MultiSelectMenuOption } from './types';
|
|
3
|
+
import { SyncFilterFn } from '../../../internal/functions/syncFilterUtils';
|
|
4
|
+
export type MultiSelectMenuSyncProps = Omit<MultiSelectMenuProps, "loadOptions" | "lazy" | "debounceMs" | "cache" | "initialLoad" | "selectAll" | "selectFiltered"> & {
|
|
5
|
+
/**
|
|
6
|
+
* The options to display in the multi-select menu.
|
|
7
|
+
*/
|
|
8
|
+
options: MultiSelectMenuOption[];
|
|
9
|
+
/**
|
|
10
|
+
* Controls how options are filtered and sorted when the user types a search value.
|
|
11
|
+
* Can be a function that returns options in the desired display order,
|
|
12
|
+
* or a MatchSorterOptions object to customize the default match-sorter behavior.
|
|
13
|
+
*
|
|
14
|
+
* By default, options are filtered by `label` and `searchText` using match-sorter.
|
|
15
|
+
*/
|
|
16
|
+
filter?: SyncFilterFn<MultiSelectMenuOption> | MatchSorterOptions<MultiSelectMenuOption>;
|
|
17
|
+
/**
|
|
18
|
+
* Enables the "Select All" option at the top of the list.
|
|
19
|
+
* Can be a boolean to enable with default label, or an object to customize the label.
|
|
20
|
+
* Click handling and check state are managed automatically.
|
|
21
|
+
*/
|
|
22
|
+
selectAll?: boolean | {
|
|
23
|
+
label?: string | ((checked: boolean) => string);
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Enables the "Select Filtered" option when a search term is active.
|
|
27
|
+
* Can be a boolean to enable with default label, or a function returning a config with a custom label.
|
|
28
|
+
* Click handling and check state are managed automatically.
|
|
29
|
+
*/
|
|
30
|
+
selectFiltered?: boolean | ((searchValue: string) => {
|
|
31
|
+
label?: string;
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* MultiSelectMenuSync is a simplified version of MultiSelectMenu for client-side option sets.
|
|
36
|
+
*
|
|
37
|
+
* Features:
|
|
38
|
+
* - Accepts `options` instead of `loadOptions` and `lazy`
|
|
39
|
+
* - Performs client-side filtering of the options
|
|
40
|
+
* - Simplified `selectAll` prop that automatically handles click and check state
|
|
41
|
+
* - Simplified `selectFiltered` prop that automatically selects/deselects filtered options
|
|
42
|
+
* - Supports all other props of MultiSelectMenu
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* <MultiSelectMenuSync
|
|
46
|
+
* trigger={(props) => <Button {...props}>Pick books</Button>}
|
|
47
|
+
* label="Books"
|
|
48
|
+
* options={bookOptions}
|
|
49
|
+
* value={selectedOptions}
|
|
50
|
+
* onSelectedOptionsChange={setSelectedOptions}
|
|
51
|
+
* selectAll
|
|
52
|
+
* />
|
|
53
|
+
*/
|
|
54
|
+
export declare const MultiSelectMenuSync: (props: MultiSelectMenuSyncProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { KeyboardEvent, ReactElement, RefObject } from 'react';
|
|
2
|
+
import { CheckState } from '../../../types';
|
|
3
|
+
import { SelectFieldGroupByValue, SelectFieldOption } from '../SelectField/types';
|
|
4
|
+
import { MultiSelectFieldCacheOptions, MultiSelectFieldEagerLoader, MultiSelectFieldGroupLazyLoader, MultiSelectFieldOffsetLazyLoader, MultiSelectFieldPageLazyLoader, MultiSelectFieldPinnedOptions, MultiSelectFieldSearchProps } from '../MultiSelectField/types';
|
|
5
|
+
export type MultiSelectMenuOption = SelectFieldOption;
|
|
6
|
+
export type MultiSelectMenuGroupByValue = SelectFieldGroupByValue;
|
|
7
|
+
/**
|
|
8
|
+
* Configuration options for the MultiSelectMenu cache.
|
|
9
|
+
* @property enabled - Whether caching is enabled. Defaults to true.
|
|
10
|
+
* @property maxSize - Maximum number of cached entries before clearing the cache. Defaults to 15.
|
|
11
|
+
*/
|
|
12
|
+
export type MultiSelectMenuCacheOptions = MultiSelectFieldCacheOptions;
|
|
13
|
+
/**
|
|
14
|
+
* Imperative handle for the MultiSelectMenu component.
|
|
15
|
+
* @property clearCache - Clears the options cache.
|
|
16
|
+
* @property invalidate - Clears the cache and triggers a fresh options load from the data source.
|
|
17
|
+
*/
|
|
18
|
+
export type MultiSelectMenuHandle = {
|
|
19
|
+
clearCache: () => void;
|
|
20
|
+
invalidate: () => void;
|
|
21
|
+
};
|
|
22
|
+
export type MultiSelectMenuEagerLoader = MultiSelectFieldEagerLoader;
|
|
23
|
+
export type MultiSelectMenuPageLazyLoader = MultiSelectFieldPageLazyLoader;
|
|
24
|
+
export type MultiSelectMenuOffsetLazyLoader = MultiSelectFieldOffsetLazyLoader;
|
|
25
|
+
export type MultiSelectMenuGroupLazyLoader = MultiSelectFieldGroupLazyLoader;
|
|
26
|
+
export type MultiSelectMenuPinnedOptions = MultiSelectFieldPinnedOptions;
|
|
27
|
+
export type MultiSelectMenuSearchProps = MultiSelectFieldSearchProps;
|
|
28
|
+
/**
|
|
29
|
+
* Props provided to the trigger render function.
|
|
30
|
+
* @property ref - Ref to attach to the trigger element for positioning
|
|
31
|
+
* @property onClick - Click handler to toggle the menu
|
|
32
|
+
* @property onKeyDown - Key handler for keyboard navigation
|
|
33
|
+
* @property aria-haspopup - ARIA attribute indicating the trigger opens a listbox
|
|
34
|
+
* @property aria-controls - ARIA attribute linking to the menu element
|
|
35
|
+
* @property aria-expanded - ARIA attribute indicating whether the menu is open
|
|
36
|
+
* @property data-state - Data attribute indicating the open/close state
|
|
37
|
+
*/
|
|
38
|
+
export type MultiSelectMenuTriggerProps = {
|
|
39
|
+
ref: RefObject<HTMLButtonElement>;
|
|
40
|
+
onClick: () => void;
|
|
41
|
+
onKeyDown: (e: KeyboardEvent<HTMLButtonElement>) => void;
|
|
42
|
+
"aria-haspopup": "listbox";
|
|
43
|
+
"aria-controls": string;
|
|
44
|
+
"aria-expanded": boolean;
|
|
45
|
+
"data-state": "open" | "close";
|
|
46
|
+
};
|
|
47
|
+
type MultiSelectMenuCommonProps = {
|
|
48
|
+
/**
|
|
49
|
+
* The id of the multi-select menu.
|
|
50
|
+
*/
|
|
51
|
+
id?: string;
|
|
52
|
+
/**
|
|
53
|
+
* Render function that receives trigger props and returns the element that opens the menu.
|
|
54
|
+
*/
|
|
55
|
+
trigger: (props: MultiSelectMenuTriggerProps) => ReactElement;
|
|
56
|
+
/**
|
|
57
|
+
* Accessible label for the menu. Used by screen readers but not rendered visually.
|
|
58
|
+
*/
|
|
59
|
+
label: string;
|
|
60
|
+
/**
|
|
61
|
+
* Placeholder text shown in the search input inside the menu.
|
|
62
|
+
*/
|
|
63
|
+
searchPlaceholder?: string;
|
|
64
|
+
/**
|
|
65
|
+
* The selected options. Must be controlled state.
|
|
66
|
+
*/
|
|
67
|
+
value: MultiSelectMenuOption[];
|
|
68
|
+
/**
|
|
69
|
+
* Callback fired when the selected options change.
|
|
70
|
+
* @param options - The new array of selected options.
|
|
71
|
+
*/
|
|
72
|
+
onSelectedOptionsChange: (options: MultiSelectMenuOption[]) => void;
|
|
73
|
+
/**
|
|
74
|
+
* Defines the initial loading behavior of the options.
|
|
75
|
+
* @default "auto"
|
|
76
|
+
*/
|
|
77
|
+
initialLoad?: "auto" | "immediate" | "open";
|
|
78
|
+
/**
|
|
79
|
+
* Options to pin to the top of the list.
|
|
80
|
+
*/
|
|
81
|
+
pinned?: MultiSelectMenuPinnedOptions;
|
|
82
|
+
/**
|
|
83
|
+
* Configuration for caching loadOptions results.
|
|
84
|
+
* Caching is enabled by default. Set `{ enabled: false }` to disable.
|
|
85
|
+
*/
|
|
86
|
+
cache?: MultiSelectMenuCacheOptions;
|
|
87
|
+
/**
|
|
88
|
+
* Controls how the menu is displayed.
|
|
89
|
+
* @default "auto"
|
|
90
|
+
* @description "auto" uses a popover on desktop and a dialog on mobile.
|
|
91
|
+
* @description "popover" always uses a popover.
|
|
92
|
+
* @description "dialog" always uses a dialog.
|
|
93
|
+
*/
|
|
94
|
+
displayMenuAs?: "auto" | "popover" | "dialog";
|
|
95
|
+
/**
|
|
96
|
+
* Whether to virtualize the list using windowed rendering.
|
|
97
|
+
* @default false
|
|
98
|
+
*/
|
|
99
|
+
virtualize?: boolean;
|
|
100
|
+
/**
|
|
101
|
+
* Whether to disable the search input inside the menu.
|
|
102
|
+
* @default false
|
|
103
|
+
*/
|
|
104
|
+
disableSearch?: boolean;
|
|
105
|
+
/**
|
|
106
|
+
* Configuration for the "Select All" option at the top of the list.
|
|
107
|
+
* Shown when the search input is empty.
|
|
108
|
+
*/
|
|
109
|
+
selectAll?: {
|
|
110
|
+
label?: string;
|
|
111
|
+
onClick: () => void;
|
|
112
|
+
checkState: boolean | CheckState;
|
|
113
|
+
};
|
|
114
|
+
/**
|
|
115
|
+
* Function that receives the current search value and returns configuration for
|
|
116
|
+
* the "Select Filtered" option at the top of the list.
|
|
117
|
+
* Shown when a search term is active (instead of Select All).
|
|
118
|
+
*/
|
|
119
|
+
selectFiltered?: (searchValue: string) => {
|
|
120
|
+
label?: string;
|
|
121
|
+
onClick: () => void;
|
|
122
|
+
checkState: boolean | CheckState;
|
|
123
|
+
};
|
|
124
|
+
/**
|
|
125
|
+
* Width of the popover. Only applies when `displayMenuAs="popover"` (or when the adaptive mode resolves to popover). Has no effect in dialog mode.
|
|
126
|
+
* Accepts a CSS width value or "reference" to match the trigger element's width.
|
|
127
|
+
* @default 320
|
|
128
|
+
*/
|
|
129
|
+
popoverWidth?: "reference" | number | string;
|
|
130
|
+
} & MultiSelectMenuSearchProps;
|
|
131
|
+
type MultiSelectMenuGroupingProps = {
|
|
132
|
+
/**
|
|
133
|
+
* Function to convert a group value to a display label.
|
|
134
|
+
*/
|
|
135
|
+
groupToString?: (groupValue: MultiSelectMenuGroupByValue) => string;
|
|
136
|
+
/**
|
|
137
|
+
* Custom comparator function to sort groups.
|
|
138
|
+
*/
|
|
139
|
+
groupSorter?: (a: MultiSelectMenuGroupByValue, b: MultiSelectMenuGroupByValue) => number;
|
|
140
|
+
};
|
|
141
|
+
type MultiSelectMenuNonGroupingProps = {
|
|
142
|
+
groupToString?: never;
|
|
143
|
+
groupSorter?: never;
|
|
144
|
+
};
|
|
145
|
+
export type MultiSelectMenuPropsLazyPage = MultiSelectMenuCommonProps & {
|
|
146
|
+
lazy: "page";
|
|
147
|
+
lazyOptions?: {
|
|
148
|
+
pageSize?: number;
|
|
149
|
+
};
|
|
150
|
+
loadOptions: MultiSelectMenuPageLazyLoader;
|
|
151
|
+
} & MultiSelectMenuNonGroupingProps;
|
|
152
|
+
export type MultiSelectMenuPropsLazyOffset = MultiSelectMenuCommonProps & {
|
|
153
|
+
lazy: "offset";
|
|
154
|
+
lazyOptions?: {
|
|
155
|
+
limit?: number;
|
|
156
|
+
};
|
|
157
|
+
loadOptions: MultiSelectMenuOffsetLazyLoader;
|
|
158
|
+
} & MultiSelectMenuNonGroupingProps;
|
|
159
|
+
export type MultiSelectMenuPropsLazyGroup = MultiSelectMenuCommonProps & {
|
|
160
|
+
lazy: "group";
|
|
161
|
+
lazyOptions?: object;
|
|
162
|
+
loadOptions: MultiSelectMenuGroupLazyLoader;
|
|
163
|
+
} & MultiSelectMenuGroupingProps;
|
|
164
|
+
export type MultiSelectMenuPropsEager = MultiSelectMenuCommonProps & {
|
|
165
|
+
lazy?: false;
|
|
166
|
+
loadOptions: MultiSelectMenuEagerLoader;
|
|
167
|
+
} & MultiSelectMenuGroupingProps;
|
|
168
|
+
export type MultiSelectMenuPropsLazy = MultiSelectMenuPropsLazyPage | MultiSelectMenuPropsLazyOffset | MultiSelectMenuPropsLazyGroup;
|
|
169
|
+
export type MultiSelectMenuProps = MultiSelectMenuPropsLazy | MultiSelectMenuPropsEager;
|
|
170
|
+
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MatchSorterOptions } from 'match-sorter';
|
|
2
2
|
import { SelectFieldProps, SelectFieldOption, SelectFieldGroupByValue } from './types';
|
|
3
|
-
|
|
3
|
+
import { SyncFilterFn } from '../../../internal/functions/syncFilterUtils';
|
|
4
4
|
export type SelectFieldSyncProps = Omit<SelectFieldProps, "loadOptions" | "lazy" | "debounceMs" | "cache" | "initialLoad"> & {
|
|
5
5
|
/**
|
|
6
6
|
* The options to display in the select field.
|
|
@@ -31,7 +31,7 @@ export type SelectFieldSyncProps = Omit<SelectFieldProps, "loadOptions" | "lazy"
|
|
|
31
31
|
* filter={{ keys: ["label"] }}
|
|
32
32
|
* />
|
|
33
33
|
*/
|
|
34
|
-
filter?:
|
|
34
|
+
filter?: SyncFilterFn | MatchSorterOptions<SelectFieldOption>;
|
|
35
35
|
/**
|
|
36
36
|
* Function to compare two group values for sorting.
|
|
37
37
|
* When provided, options are sorted by group using this comparator,
|
|
@@ -53,4 +53,3 @@ export type SelectFieldSyncProps = Omit<SelectFieldProps, "loadOptions" | "lazy"
|
|
|
53
53
|
* - Supports all the other props of SelectField.
|
|
54
54
|
*/
|
|
55
55
|
export declare const SelectFieldSync: (props: SelectFieldSyncProps) => import("react/jsx-runtime").JSX.Element;
|
|
56
|
-
export {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SelectFieldComboboxInternalProps } from '
|
|
1
|
+
import { SelectFieldComboboxInternalProps } from '../../../../internal/types/selectFieldInternalTypes';
|
|
2
2
|
/**
|
|
3
3
|
* Combobox mode: searchable select using useCombobox.
|
|
4
4
|
* This is the default behavior when disableSearch is false.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { UseComboboxProps } from 'downshift';
|
|
2
|
-
import {
|
|
3
|
-
import { SectionMeta } from '
|
|
2
|
+
import { SelectFieldGroupByValue, SelectFieldOption, SelectFieldPinnedOptions } from '../types';
|
|
3
|
+
import { SectionMeta, SelectItem } from '../../../../internal/types/selectFieldInternalTypes';
|
|
4
4
|
export type { SectionMeta };
|
|
5
5
|
export type UseComboOptions = {
|
|
6
6
|
options: SelectFieldOption[];
|
|
@@ -13,22 +13,22 @@ export type UseComboOptions = {
|
|
|
13
13
|
disableHighlightOnOpen?: boolean;
|
|
14
14
|
disabled: boolean;
|
|
15
15
|
virtualize?: boolean;
|
|
16
|
-
|
|
16
|
+
onScrollToHighlight?: (index: number) => void;
|
|
17
|
+
} & Pick<UseComboboxProps<SelectItem>, "onInputValueChange" | "onIsOpenChange">;
|
|
17
18
|
/**
|
|
18
19
|
* The purpose of useCombo is to provide an abstraction over the downshift combobox hook.
|
|
19
20
|
*/
|
|
20
|
-
export declare const useCombo: ({ options, pinned, groupToString, groupSorter, selectedOption, onSelectedOptionChange, onInputValueChange, onIsOpenChange, displayAs, disableHighlightOnOpen, disabled, virtualize, }: UseComboOptions) => {
|
|
21
|
+
export declare const useCombo: ({ options, pinned, groupToString, groupSorter, selectedOption, onSelectedOptionChange, onInputValueChange, onIsOpenChange, displayAs, disableHighlightOnOpen, disabled, virtualize, onScrollToHighlight, }: UseComboOptions) => {
|
|
21
22
|
inputValue: string;
|
|
22
23
|
wrapperDivRef: import('react').RefObject<HTMLDivElement>;
|
|
23
24
|
getToggleButtonProps: <Options>(options?: import('downshift').UseComboboxGetToggleButtonPropsOptions & Options) => import('downshift').Overwrite<import('downshift').UseComboboxGetToggleButtonPropsReturnValue, Options>;
|
|
24
25
|
getLabelProps: <Options>(options?: import('downshift').UseComboboxGetLabelPropsOptions & Options) => import('downshift').Overwrite<import('downshift').UseComboboxGetLabelPropsReturnValue, Options>;
|
|
25
26
|
getMenuProps: <Options>(options?: import('downshift').UseComboboxGetMenuPropsOptions & Options, otherOptions?: import('downshift').GetPropsCommonOptions) => import('downshift').Overwrite<import('downshift').UseComboboxGetMenuPropsReturnValue, Options>;
|
|
26
27
|
getInputProps: <Options>(options?: import('downshift').UseComboboxGetInputPropsOptions & Options, otherOptions?: import('downshift').GetPropsCommonOptions) => import('downshift').Overwrite<import('downshift').UseComboboxGetInputPropsReturnValue, Options>;
|
|
27
|
-
getItemProps: <Options>(options: import('downshift').UseComboboxGetItemPropsOptions<
|
|
28
|
+
getItemProps: <Options>(options: import('downshift').UseComboboxGetItemPropsOptions<SelectItem> & Options) => Omit<import('downshift').Overwrite<import('downshift').UseComboboxGetItemPropsReturnValue, Options>, "item" | "index">;
|
|
28
29
|
highlightedIndex: number;
|
|
29
|
-
highlightChangeTypeRef: import('react').MutableRefObject<string>;
|
|
30
30
|
isOpen: boolean;
|
|
31
|
-
|
|
31
|
+
items: SelectItem[];
|
|
32
32
|
sectionsMeta: SectionMeta[];
|
|
33
33
|
closeMenu: () => void;
|
|
34
34
|
openMenu: () => void;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SelectFieldGroupByValue, SelectFieldOption, SelectFieldPinnedOptions } from '../types';
|
|
2
|
+
import { SelectItem } from '../../../../internal/types/selectFieldInternalTypes';
|
|
2
3
|
export type UseSelectModeOptions = {
|
|
3
4
|
options: SelectFieldOption[];
|
|
4
5
|
pinned?: SelectFieldPinnedOptions;
|
|
@@ -13,22 +14,22 @@ export type UseSelectModeOptions = {
|
|
|
13
14
|
disableHighlightOnOpen?: boolean;
|
|
14
15
|
disabled: boolean;
|
|
15
16
|
virtualize?: boolean;
|
|
17
|
+
onScrollToHighlight?: (index: number) => void;
|
|
16
18
|
};
|
|
17
19
|
/**
|
|
18
20
|
* Wraps downshift's useSelect for non-searchable select fields.
|
|
19
21
|
* Returns a compatible interface to useCombo (minus getInputProps/inputValue).
|
|
20
22
|
*/
|
|
21
|
-
export declare const useSelectMode: ({ options, pinned, groupToString, groupSorter, selectedOption, onSelectedOptionChange, onIsOpenChange, displayAs, disableHighlightOnOpen, disabled, virtualize, }: UseSelectModeOptions) => {
|
|
23
|
+
export declare const useSelectMode: ({ options, pinned, groupToString, groupSorter, selectedOption, onSelectedOptionChange, onIsOpenChange, displayAs, disableHighlightOnOpen, disabled, virtualize, onScrollToHighlight, }: UseSelectModeOptions) => {
|
|
22
24
|
wrapperDivRef: import('react').RefObject<HTMLDivElement>;
|
|
23
25
|
getToggleButtonProps: <Options>(options?: import('downshift').UseSelectGetToggleButtonPropsOptions & Options, otherOptions?: import('downshift').GetPropsCommonOptions) => import('downshift').Overwrite<import('downshift').UseSelectGetToggleButtonReturnValue, Options>;
|
|
24
26
|
getLabelProps: <Options>(options?: import('downshift').UseSelectGetLabelPropsOptions & Options) => import('downshift').Overwrite<import('downshift').UseSelectGetLabelPropsReturnValue, Options>;
|
|
25
27
|
getMenuProps: <Options>(options?: import('downshift').UseSelectGetMenuPropsOptions & Options, otherOptions?: import('downshift').GetPropsCommonOptions) => import('downshift').Overwrite<import('downshift').UseSelectGetMenuReturnValue, Options>;
|
|
26
|
-
getItemProps: <Options>(options: import('downshift').UseSelectGetItemPropsOptions<
|
|
28
|
+
getItemProps: <Options>(options: import('downshift').UseSelectGetItemPropsOptions<SelectItem> & Options) => Omit<import('downshift').Overwrite<import('downshift').UseSelectGetItemPropsReturnValue, Options>, "item" | "index">;
|
|
27
29
|
highlightedIndex: number;
|
|
28
|
-
highlightChangeTypeRef: import('react').MutableRefObject<string>;
|
|
29
30
|
isOpen: boolean;
|
|
30
|
-
|
|
31
|
-
sectionsMeta: import('./
|
|
31
|
+
items: SelectItem[];
|
|
32
|
+
sectionsMeta: import('./useCombo').SectionMeta[];
|
|
32
33
|
closeMenu: () => void;
|
|
33
34
|
openMenu: () => void;
|
|
34
35
|
};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { AriaAttributes, CSSProperties, ReactElement, ReactNode } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { LayoutUtilProps, Size } from '../../../types';
|
|
3
3
|
import { AvatarProps, ChipProps, IconProps } from '../../..';
|
|
4
4
|
/**
|
|
5
5
|
* Configuration options for the SelectField cache.
|
|
6
6
|
* @property enabled - Whether caching is enabled. Defaults to true.
|
|
7
|
-
* @property maxSize - Maximum number of cached entries before clearing the cache. Defaults to
|
|
7
|
+
* @property maxSize - Maximum number of cached entries before clearing the cache. Defaults to 15.
|
|
8
8
|
*/
|
|
9
9
|
export type SelectFieldCacheOptions = {
|
|
10
10
|
enabled?: boolean;
|
|
@@ -331,11 +331,4 @@ export type SelectFieldPropsEager = SelectFieldCommonSelectFieldProps & {
|
|
|
331
331
|
} & SelectFieldGroupingProps;
|
|
332
332
|
export type SelectFieldPropsLazy = SelectFieldPropsLazyPage | SelectFieldPropsLazyOffset | SelectFieldPropsLazyGroup;
|
|
333
333
|
export type SelectFieldProps = SelectFieldPropsLazy | SelectFieldPropsEager;
|
|
334
|
-
export type SelectFieldDownshiftItem = {
|
|
335
|
-
id: string | number;
|
|
336
|
-
type: "option" | "pinned-option" | "grouped-option" | "select-all" | "select-filtered";
|
|
337
|
-
original: SelectFieldOption;
|
|
338
|
-
disabled?: boolean;
|
|
339
|
-
checkState?: CheckState;
|
|
340
|
-
};
|
|
341
334
|
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { SelectMenuHandle, SelectMenuProps } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* SelectMenu component for selecting a single option from a dropdown triggered by any element.
|
|
4
|
+
*
|
|
5
|
+
* Features:
|
|
6
|
+
* - Attaches to any trigger element via a render prop
|
|
7
|
+
* - Optional search input rendered inside the popover/dialog
|
|
8
|
+
* - Lazy loading with pagination (page, offset, or group modes)
|
|
9
|
+
* - Pinned options support
|
|
10
|
+
* - Grouped options support
|
|
11
|
+
* - Supports both popover and dialog display modes
|
|
12
|
+
* - Adaptive display based on device (mobile uses dialog)
|
|
13
|
+
* - Cache support for loadOptions results
|
|
14
|
+
* - Full accessibility support with ARIA attributes
|
|
15
|
+
* - Controlled selection state
|
|
16
|
+
* - Configurable popover width
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* <SelectMenu
|
|
20
|
+
* trigger={(props) => <Button {...props}>Select a book</Button>}
|
|
21
|
+
* label="Books"
|
|
22
|
+
* value={selectedOption}
|
|
23
|
+
* onSelectedOptionChange={setSelectedOption}
|
|
24
|
+
* loadOptions={loadOptions}
|
|
25
|
+
* />
|
|
26
|
+
*/
|
|
27
|
+
export declare const SelectMenu: import('react').ForwardRefExoticComponent<SelectMenuProps & import('react').RefAttributes<SelectMenuHandle>>;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { MatchSorterOptions } from 'match-sorter';
|
|
2
|
+
import { SelectMenuProps, SelectMenuOption, SelectMenuGroupByValue } from './types';
|
|
3
|
+
import { SyncFilterFn } from '../../../internal/functions/syncFilterUtils';
|
|
4
|
+
export type SelectMenuSyncProps = Omit<SelectMenuProps, "loadOptions" | "lazy" | "debounceMs" | "cache" | "initialLoad"> & {
|
|
5
|
+
/**
|
|
6
|
+
* The options to display in the select menu.
|
|
7
|
+
*/
|
|
8
|
+
options: SelectMenuOption[];
|
|
9
|
+
/**
|
|
10
|
+
* Controls how options are filtered and sorted when the user types a search value.
|
|
11
|
+
* Can be a function that returns options in the desired display order,
|
|
12
|
+
* or a MatchSorterOptions object to customize the default match-sorter behavior.
|
|
13
|
+
*
|
|
14
|
+
* By default, options are filtered by `label` and `searchText` using match-sorter.
|
|
15
|
+
*/
|
|
16
|
+
filter?: SyncFilterFn | MatchSorterOptions<SelectMenuOption>;
|
|
17
|
+
/**
|
|
18
|
+
* Custom comparator function to sort groups.
|
|
19
|
+
*/
|
|
20
|
+
groupSorter?: (a: SelectMenuGroupByValue, b: SelectMenuGroupByValue) => number;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* SelectMenuSync is a simplified version of SelectMenu for client-side option sets.
|
|
24
|
+
*
|
|
25
|
+
* Features:
|
|
26
|
+
* - Accepts `options` instead of `loadOptions` and `lazy`
|
|
27
|
+
* - Performs client-side filtering of the options
|
|
28
|
+
* - Optionally accepts a custom filter function or MatchSorterOptions
|
|
29
|
+
* - Supports grouping with optional group sorting via `groupSorter`
|
|
30
|
+
* - Supports all other props of SelectMenu
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* <SelectMenuSync
|
|
34
|
+
* trigger={(props) => <Button {...props}>Pick a book</Button>}
|
|
35
|
+
* label="Books"
|
|
36
|
+
* options={bookOptions}
|
|
37
|
+
* value={selectedOption}
|
|
38
|
+
* onSelectedOptionChange={setSelectedOption}
|
|
39
|
+
* />
|
|
40
|
+
*/
|
|
41
|
+
export declare const SelectMenuSync: (props: SelectMenuSyncProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { CSSProperties, KeyboardEvent, RefObject } from 'react';
|
|
2
|
+
import { SelectItem, SectionMeta } from '../../../../internal/types/selectFieldInternalTypes';
|
|
3
|
+
import { OptionsPanelHandle } from '../../../../internal/components/OptionsPanel';
|
|
4
|
+
export type UseMenuInteractionConfig = {
|
|
5
|
+
items: SelectItem[];
|
|
6
|
+
sectionsMeta: SectionMeta[];
|
|
7
|
+
onItemActivate: (item: SelectItem) => void;
|
|
8
|
+
selectedItemIds: Set<string | number>;
|
|
9
|
+
displayAs: "popover" | "dialog";
|
|
10
|
+
closeOnActivate: boolean;
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
id: string;
|
|
13
|
+
triggerRef: RefObject<HTMLButtonElement>;
|
|
14
|
+
label: string;
|
|
15
|
+
};
|
|
16
|
+
export type MenuTriggerProps = {
|
|
17
|
+
ref: RefObject<HTMLButtonElement>;
|
|
18
|
+
onClick: () => void;
|
|
19
|
+
onKeyDown: (e: KeyboardEvent) => void;
|
|
20
|
+
"aria-haspopup": "listbox";
|
|
21
|
+
"aria-controls": string;
|
|
22
|
+
"aria-expanded": boolean;
|
|
23
|
+
"data-state": "open" | "close";
|
|
24
|
+
};
|
|
25
|
+
type MenuPropsArg = {
|
|
26
|
+
className?: string;
|
|
27
|
+
style?: CSSProperties;
|
|
28
|
+
};
|
|
29
|
+
type MenuReturnProps = MenuPropsArg & {
|
|
30
|
+
role: "listbox";
|
|
31
|
+
id: string;
|
|
32
|
+
"aria-label": string;
|
|
33
|
+
"aria-labelledby"?: string;
|
|
34
|
+
tabIndex?: number;
|
|
35
|
+
"aria-activedescendant"?: string;
|
|
36
|
+
ref: RefObject<HTMLDivElement>;
|
|
37
|
+
onKeyDown: (e: KeyboardEvent) => void;
|
|
38
|
+
};
|
|
39
|
+
type ItemPropsArg = {
|
|
40
|
+
item: SelectItem;
|
|
41
|
+
index: number;
|
|
42
|
+
className?: string;
|
|
43
|
+
"data-type"?: string;
|
|
44
|
+
};
|
|
45
|
+
type ItemReturnProps = {
|
|
46
|
+
role: "option";
|
|
47
|
+
id: string;
|
|
48
|
+
"aria-selected": boolean;
|
|
49
|
+
"aria-disabled"?: boolean;
|
|
50
|
+
onClick: () => void;
|
|
51
|
+
onMouseMove: () => void;
|
|
52
|
+
className?: string;
|
|
53
|
+
"data-type"?: string;
|
|
54
|
+
};
|
|
55
|
+
export type GetMenuPropsFn = (opts?: MenuPropsArg) => MenuReturnProps;
|
|
56
|
+
export type GetItemPropsFn = (opts: ItemPropsArg) => ItemReturnProps;
|
|
57
|
+
export declare const useMenuInteraction: ({ items, sectionsMeta: _sectionsMeta, onItemActivate, selectedItemIds, displayAs: _displayAs, closeOnActivate, disabled, id, triggerRef, label, }: UseMenuInteractionConfig) => {
|
|
58
|
+
isOpen: boolean;
|
|
59
|
+
openMenu: () => void;
|
|
60
|
+
closeMenu: (options?: {
|
|
61
|
+
restoreFocus?: boolean;
|
|
62
|
+
}) => void;
|
|
63
|
+
highlightedIndex: number;
|
|
64
|
+
setHighlightedIndex: import('react').Dispatch<import('react').SetStateAction<number>>;
|
|
65
|
+
getTriggerProps: () => MenuTriggerProps;
|
|
66
|
+
getMenuProps: GetMenuPropsFn;
|
|
67
|
+
getItemProps: GetItemPropsFn;
|
|
68
|
+
listRef: RefObject<OptionsPanelHandle>;
|
|
69
|
+
menuContainerRef: RefObject<HTMLDivElement>;
|
|
70
|
+
handleKeyDown: (e: KeyboardEvent) => void;
|
|
71
|
+
};
|
|
72
|
+
export {};
|