@servicetitan/anvil2 2.0.1 → 2.0.3
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 +28 -0
- package/dist/{Alert-DREZhnU9.js → Alert-DXoEusod.js} +4 -4
- package/dist/{Alert-DREZhnU9.js.map → Alert-DXoEusod.js.map} +1 -1
- package/dist/Alert.js +1 -1
- package/dist/{Announcement-CRaUI73J.js → Announcement-SAypScAu.js} +4 -4
- package/dist/{Announcement-CRaUI73J.js.map → Announcement-SAypScAu.js.map} +1 -1
- package/dist/Announcement.js +1 -1
- package/dist/{AnvilProvider-bEeSKwNj.js → AnvilProvider-C3pjoStP.js} +4 -4
- package/dist/{AnvilProvider-bEeSKwNj.js.map → AnvilProvider-C3pjoStP.js.map} +1 -1
- package/dist/AnvilProvider.js +1 -1
- package/dist/{Avatar-DQN2dNgB.js → Avatar-COMPK7Ym.js} +2 -2
- package/dist/{Avatar-DQN2dNgB.js.map → Avatar-COMPK7Ym.js.map} +1 -1
- package/dist/{Avatar-B4RLfLCS.js → Avatar-DShevhcs.js} +2 -2
- package/dist/{Avatar-B4RLfLCS.js.map → Avatar-DShevhcs.js.map} +1 -1
- package/dist/Avatar.js +2 -2
- package/dist/{Badge-BrysDYfx.js → Badge-CS-CwcOQ.js} +2 -2
- package/dist/{Badge-BrysDYfx.js.map → Badge-CS-CwcOQ.js.map} +1 -1
- package/dist/Badge.js +1 -1
- package/dist/{Breadcrumbs-CsVxbt4N.js → Breadcrumbs-CEVH4s23.js} +5 -5
- package/dist/{Breadcrumbs-CsVxbt4N.js.map → Breadcrumbs-CEVH4s23.js.map} +1 -1
- package/dist/Breadcrumbs.js +1 -1
- package/dist/{Button-B__Q1BA5.js → Button-l7pTJdPc.js} +3 -3
- package/dist/{Button-B__Q1BA5.js.map → Button-l7pTJdPc.js.map} +1 -1
- package/dist/Button.js +1 -1
- package/dist/{ButtonCompound-BB_WRzP4.js → ButtonCompound-CX2kHgWe.js} +2 -2
- package/dist/{ButtonCompound-BB_WRzP4.js.map → ButtonCompound-CX2kHgWe.js.map} +1 -1
- package/dist/ButtonCompound.js +1 -1
- package/dist/{ButtonLink-Dy0nfK_C.js → ButtonLink-CRlyK750.js} +3 -3
- package/dist/{ButtonLink-Dy0nfK_C.js.map → ButtonLink-CRlyK750.js.map} +1 -1
- package/dist/ButtonLink.js +1 -1
- package/dist/{ButtonToggle-DVwe4l6m.js → ButtonToggle-BOVP_jEN.js} +3 -3
- package/dist/{ButtonToggle-DVwe4l6m.js.map → ButtonToggle-BOVP_jEN.js.map} +1 -1
- package/dist/ButtonToggle.js +1 -1
- package/dist/{Calendar-BO9QiBJG.js → Calendar-BTr5I3t-.js} +2 -2
- package/dist/{Calendar-BO9QiBJG.js.map → Calendar-BTr5I3t-.js.map} +1 -1
- package/dist/{Calendar-BFWJ7Rlq.js → Calendar-DUGQQkga.js} +5 -5
- package/dist/{Calendar-BFWJ7Rlq.js.map → Calendar-DUGQQkga.js.map} +1 -1
- package/dist/Calendar.js +2 -2
- package/dist/{Card-TovA8Io5.js → Card-DDH7gI8m.js} +2 -2
- package/dist/{Card-TovA8Io5.js.map → Card-DDH7gI8m.js.map} +1 -1
- package/dist/Card.js +1 -1
- package/dist/{Checkbox-BrIThtCS.js → Checkbox-9VbydUcM.js} +6 -6
- package/dist/{Checkbox-BrIThtCS.js.map → Checkbox-9VbydUcM.js.map} +1 -1
- package/dist/{Checkbox-Igz3R72o.js → Checkbox-ZXftLNwB.js} +2 -2
- package/dist/{Checkbox-Igz3R72o.js.map → Checkbox-ZXftLNwB.js.map} +1 -1
- package/dist/Checkbox.js +1 -1
- package/dist/{Chip-U9Ly2Ykq.js → Chip-Bc7jiIJ1.js} +4 -4
- package/dist/{Chip-U9Ly2Ykq.js.map → Chip-Bc7jiIJ1.js.map} +1 -1
- package/dist/Chip.js +1 -1
- package/dist/{Combobox-Bb79Jl9I.js → Combobox-CNObHLjp.js} +9 -9
- package/dist/{Combobox-Bb79Jl9I.js.map → Combobox-CNObHLjp.js.map} +1 -1
- package/dist/Combobox.js +1 -1
- package/dist/{DataTable-CLr0j95O.js → DataTable-CQpySyDq.js} +159 -34
- package/dist/DataTable-CQpySyDq.js.map +1 -0
- package/dist/{DateFieldRange-BlpxUPPk.js → DateFieldRange-Cfnw1Chk.js} +5 -5
- package/dist/{DateFieldRange-BlpxUPPk.js.map → DateFieldRange-Cfnw1Chk.js.map} +1 -1
- package/dist/DateFieldRange.js +1 -1
- package/dist/{DateFieldSingle-DanvgyeQ.js → DateFieldSingle-BRuERJAl.js} +5 -5
- package/dist/{DateFieldSingle-DanvgyeQ.js.map → DateFieldSingle-BRuERJAl.js.map} +1 -1
- package/dist/DateFieldSingle.js +1 -1
- package/dist/{DateFieldYearless-rUMXjN0L.js → DateFieldYearless-Dw1k3_PY.js} +5 -5
- package/dist/{DateFieldYearless-rUMXjN0L.js.map → DateFieldYearless-Dw1k3_PY.js.map} +1 -1
- package/dist/DateFieldYearless.js +1 -1
- package/dist/{DateFieldYearlessRange-Cw71mA-Q.js → DateFieldYearlessRange--plyld10.js} +6 -6
- package/dist/{DateFieldYearlessRange-Cw71mA-Q.js.map → DateFieldYearlessRange--plyld10.js.map} +1 -1
- package/dist/DateFieldYearlessRange.js +1 -1
- package/dist/{DaysOfTheWeek-DOsJyEdk.js → DaysOfTheWeek-vE310Rjp.js} +6 -6
- package/dist/{DaysOfTheWeek-DOsJyEdk.js.map → DaysOfTheWeek-vE310Rjp.js.map} +1 -1
- package/dist/DaysOfTheWeek.js +1 -1
- package/dist/{Details-D_Iil6qI.js → Details-BF0-a1by.js} +3 -3
- package/dist/{Details-D_Iil6qI.js.map → Details-BF0-a1by.js.map} +1 -1
- package/dist/Details.js +1 -1
- package/dist/{Dialog-3pjJJiED.js → Dialog-DZPaz84r.js} +7 -6
- package/dist/{Dialog-3pjJJiED.js.map → Dialog-DZPaz84r.js.map} +1 -1
- package/dist/Dialog.js +1 -1
- package/dist/{DialogCancelButton-D0r_OFKS.js → DialogCancelButton-GuN5lgR-.js} +2 -2
- package/dist/{DialogCancelButton-D0r_OFKS.js.map → DialogCancelButton-GuN5lgR-.js.map} +1 -1
- package/dist/DialogContext-DBgtApl9.js.map +1 -1
- package/dist/{Divider-CJvAnDYV.js → Divider-De04mOU6.js} +2 -2
- package/dist/{Divider-CJvAnDYV.js.map → Divider-De04mOU6.js.map} +1 -1
- package/dist/Divider.js +1 -1
- package/dist/Dnd.js +1 -1
- package/dist/DndSort.js +17 -7
- package/dist/DndSort.js.map +1 -1
- package/dist/{Drawer-BPPWM11Z.js → Drawer-pMQOa2jH.js} +9 -10
- package/dist/Drawer-pMQOa2jH.js.map +1 -0
- package/dist/Drawer.js +1 -1
- package/dist/DrawerContext-BSpnzXVZ.js +6 -0
- package/dist/DrawerContext-BSpnzXVZ.js.map +1 -0
- package/dist/DrillDown.js +1 -1
- package/dist/{EditCard-DgHXddkx.js → EditCard-DAiE-Hsc.js} +6 -6
- package/dist/{EditCard-DgHXddkx.js.map → EditCard-DAiE-Hsc.js.map} +1 -1
- package/dist/EditCard.js +1 -1
- package/dist/{FieldDialog-NcMR2ATl.js → FieldDialog-Be54L3E-.js} +381 -18
- package/dist/FieldDialog-Be54L3E-.js.map +1 -0
- package/dist/FieldDialog.css +22 -5
- package/dist/{FieldLabel-EjKzPf0f.js → FieldLabel-DSrHbw9U.js} +3 -3
- package/dist/{FieldLabel-EjKzPf0f.js.map → FieldLabel-DSrHbw9U.js.map} +1 -1
- package/dist/FieldLabel.js +1 -1
- package/dist/{FieldMessage-CRNo4fd5.js → FieldMessage-tEr6rWXS.js} +2 -2
- package/dist/{FieldMessage-CRNo4fd5.js.map → FieldMessage-tEr6rWXS.js.map} +1 -1
- package/dist/FieldMessage.js +1 -1
- package/dist/{Flex-DKS51qTf.js → Flex-CUtXN-C0.js} +2 -2
- package/dist/{Flex-DKS51qTf.js.map → Flex-CUtXN-C0.js.map} +1 -1
- package/dist/Flex.js +1 -1
- package/dist/{Grid-BUmKiLhz.js → Grid-CatFkT0X.js} +2 -2
- package/dist/{Grid-BUmKiLhz.js.map → Grid-CatFkT0X.js.map} +1 -1
- package/dist/Grid.js +1 -1
- package/dist/{Helper-xZuAxaI0.js → Helper-CK-XjpR3.js} +2 -2
- package/dist/{Helper-xZuAxaI0.js.map → Helper-CK-XjpR3.js.map} +1 -1
- package/dist/{Icon-BckjFkbw.js → Icon-Bcil6aBo.js} +2 -2
- package/dist/{Icon-BckjFkbw.js.map → Icon-Bcil6aBo.js.map} +1 -1
- package/dist/Icon.js +1 -1
- package/dist/{InputMask-DS9TWqfO.js → InputMask-DoqWRi3t.js} +2 -2
- package/dist/{InputMask-DS9TWqfO.js.map → InputMask-DoqWRi3t.js.map} +1 -1
- package/dist/InputMask.js +1 -1
- package/dist/{InteractiveCard-CvX95yR4.js → InteractiveCard-OszQGxGw.js} +2 -2
- package/dist/{InteractiveCard-CvX95yR4.js.map → InteractiveCard-OszQGxGw.js.map} +1 -1
- package/dist/InteractiveCard.js +1 -1
- package/dist/{Link-DT8scNJ-.js → Link-B3reiL5f.js} +3 -3
- package/dist/{Link-DT8scNJ-.js.map → Link-B3reiL5f.js.map} +1 -1
- package/dist/Link.js +1 -1
- package/dist/{LinkButton-BMce3lWm.js → LinkButton-D62f2os3.js} +2 -2
- package/dist/{LinkButton-BMce3lWm.js.map → LinkButton-D62f2os3.js.map} +1 -1
- package/dist/LinkButton.js +1 -1
- package/dist/{ListView-CBmaHOY-.js → ListView-CtRhYAls.js} +13 -11
- package/dist/ListView-CtRhYAls.js.map +1 -0
- package/dist/ListView.js +1 -1
- package/dist/{Listbox-BFT6SBf3.js → Listbox-DMyxIokT.js} +5 -5
- package/dist/{Listbox-BFT6SBf3.js.map → Listbox-DMyxIokT.js.map} +1 -1
- package/dist/Listbox.js +1 -1
- package/dist/{LocalizationProvider-u6xdKCBi.js → LocalizationProvider-ay-XWdlo.js} +2 -2
- package/dist/{LocalizationProvider-u6xdKCBi.js.map → LocalizationProvider-ay-XWdlo.js.map} +1 -1
- package/dist/LocalizationProvider.js +1 -1
- package/dist/{Menu-Dh0q__vE.js → Menu-3LIfRdTk.js} +3 -3
- package/dist/{Menu-Dh0q__vE.js.map → Menu-3LIfRdTk.js.map} +1 -1
- package/dist/Menu.js +1 -1
- package/dist/MultiSelectField.js +1 -1
- package/dist/{MultiSelectFieldSync-7nxS5Fdi.js → MultiSelectFieldSync-xj7jXas-.js} +120 -94
- package/dist/MultiSelectFieldSync-xj7jXas-.js.map +1 -0
- package/dist/{NumberField-Dmm1YQNn.js → NumberField-W1k8V5Qq.js} +6 -6
- package/dist/{NumberField-Dmm1YQNn.js.map → NumberField-W1k8V5Qq.js.map} +1 -1
- package/dist/NumberField.js +1 -1
- package/dist/Overflow.js +2 -2
- package/dist/{Page-CjuKnpSO.js → Page-vc7zs4tn.js} +16 -16
- package/dist/{Page-CjuKnpSO.js.map → Page-vc7zs4tn.js.map} +1 -1
- package/dist/Page.js +1 -1
- package/dist/{Pagination-CimQTC7M.js → Pagination-DIatYUXX.js} +7 -7
- package/dist/{Pagination-CimQTC7M.js.map → Pagination-DIatYUXX.js.map} +1 -1
- package/dist/Pagination.js +1 -1
- package/dist/{Popover-U2Eu7v1Q.js → Popover-OOLK0hUz.js} +10 -9
- package/dist/Popover-OOLK0hUz.js.map +1 -0
- package/dist/Popover.js +1 -1
- package/dist/{ProgressBar-CSkAu2F4.js → ProgressBar-HA9RPZfC.js} +6 -6
- package/dist/{ProgressBar-CSkAu2F4.js.map → ProgressBar-HA9RPZfC.js.map} +1 -1
- package/dist/ProgressBar.js +1 -1
- package/dist/{Radio-CRv09Kbt.js → Radio-31wKzlZ4.js} +6 -6
- package/dist/{Radio-CRv09Kbt.js.map → Radio-31wKzlZ4.js.map} +1 -1
- package/dist/{Radio-D_8PAnkC.js → Radio-BwWDJuLF.js} +2 -2
- package/dist/{Radio-D_8PAnkC.js.map → Radio-BwWDJuLF.js.map} +1 -1
- package/dist/Radio.js +1 -1
- package/dist/{SearchField-0DZvPwPZ.js → SearchField-CoeaOip5.js} +3 -3
- package/dist/{SearchField-0DZvPwPZ.js.map → SearchField-CoeaOip5.js.map} +1 -1
- package/dist/SearchField.js +1 -1
- package/dist/{SegmentedControl-CMBQf7uo.js → SegmentedControl-CzTtiYS9.js} +3 -3
- package/dist/{SegmentedControl-CMBQf7uo.js.map → SegmentedControl-CzTtiYS9.js.map} +1 -1
- package/dist/SegmentedControl.js +1 -1
- package/dist/{SelectCard-B9RLpwtX.js → SelectCard-C91twG1S.js} +5 -5
- package/dist/{SelectCard-B9RLpwtX.js.map → SelectCard-C91twG1S.js.map} +1 -1
- package/dist/SelectCard.js +1 -1
- package/dist/SelectField.js +1 -1
- package/dist/{SelectFieldSync-BsDUUM84.js → SelectFieldSync-BFsJssdD.js} +163 -96
- package/dist/SelectFieldSync-BFsJssdD.js.map +1 -0
- package/dist/{SelectTrigger-DVLdDbfd.js → SelectTrigger-Cxhx9IVo.js} +5 -5
- package/dist/{SelectTrigger-DVLdDbfd.js.map → SelectTrigger-Cxhx9IVo.js.map} +1 -1
- package/dist/SelectTrigger.js +1 -1
- package/dist/{SelectTriggerBase-B3vw_qnJ.js → SelectTriggerBase-aaOWep-V.js} +6 -6
- package/dist/{SelectTriggerBase-B3vw_qnJ.js.map → SelectTriggerBase-aaOWep-V.js.map} +1 -1
- package/dist/{SideNav-DzcESFKB.js → SideNav-CbMGsIPM.js} +3 -3
- package/dist/{SideNav-DzcESFKB.js.map → SideNav-CbMGsIPM.js.map} +1 -1
- package/dist/SideNav.js +1 -1
- package/dist/Skeleton.js +1 -1
- package/dist/{Stepper-DXL6Ikux.js → Stepper-Jv9A3Ned.js} +5 -5
- package/dist/{Stepper-DXL6Ikux.js.map → Stepper-Jv9A3Ned.js.map} +1 -1
- package/dist/Stepper.js +1 -1
- package/dist/{Switch-CkZm45S3.js → Switch-DQICcdAv.js} +5 -5
- package/dist/{Switch-CkZm45S3.js.map → Switch-DQICcdAv.js.map} +1 -1
- package/dist/Switch.js +1 -1
- package/dist/{Tab-8a1qCMFA.js → Tab-CeXt6A_D.js} +4 -4
- package/dist/{Tab-8a1qCMFA.js.map → Tab-CeXt6A_D.js.map} +1 -1
- package/dist/Tab.js +1 -1
- package/dist/Table.js +1 -1
- package/dist/{Text-rR4bxNLd.js → Text-DhheKsns.js} +2 -2
- package/dist/{Text-rR4bxNLd.js.map → Text-DhheKsns.js.map} +1 -1
- package/dist/Text.js +1 -1
- package/dist/{TextField-Bm9ElAU1.js → TextField-CDiiYSlT.js} +4 -4
- package/dist/{TextField-Bm9ElAU1.js.map → TextField-CDiiYSlT.js.map} +1 -1
- package/dist/{TextField-B_ciNx06.js → TextField-CnYxS52Y.js} +2 -2
- package/dist/{TextField-B_ciNx06.js.map → TextField-CnYxS52Y.js.map} +1 -1
- package/dist/TextField.js +1 -1
- package/dist/{Textarea-stXDixWH.js → Textarea-BnHIDj2P.js} +4 -4
- package/dist/{Textarea-stXDixWH.js.map → Textarea-BnHIDj2P.js.map} +1 -1
- package/dist/Textarea.js +1 -1
- package/dist/{ThemeProvider-DyYBQz5m.js → ThemeProvider-BEt_iJgf.js} +5 -5
- package/dist/{ThemeProvider-DyYBQz5m.js.map → ThemeProvider-BEt_iJgf.js.map} +1 -1
- package/dist/ThemeProvider.css +14 -14
- package/dist/ThemeProvider.js +1 -1
- package/dist/{TimeField-063-mjFa.js → TimeField-ChqK40k_.js} +6 -6
- package/dist/{TimeField-063-mjFa.js.map → TimeField-ChqK40k_.js.map} +1 -1
- package/dist/TimeField.js +1 -1
- package/dist/Toast.js +2 -2
- package/dist/{Toaster-99KNznN3.js → Toaster-BlycAc63.js} +15 -9
- package/dist/Toaster-BlycAc63.js.map +1 -0
- package/dist/{Toaster-Br0IeKtP.js → Toaster-DW_bi2L9.js} +2 -2
- package/dist/{Toaster-Br0IeKtP.js.map → Toaster-DW_bi2L9.js.map} +1 -1
- package/dist/{Toolbar-DWeZEpeV.js → Toolbar-CUjj2YEZ.js} +20 -20
- package/dist/{Toolbar-DWeZEpeV.js.map → Toolbar-CUjj2YEZ.js.map} +1 -1
- package/dist/Toolbar.js +1 -1
- package/dist/{Tooltip-CIsvQwWo.js → Tooltip-CUiAJXak.js} +2 -2
- package/dist/{Tooltip-CIsvQwWo.js.map → Tooltip-CUiAJXak.js.map} +1 -1
- package/dist/Tooltip.js +1 -1
- package/dist/{YearlessDateInputWithPicker-D6HHhE_H.js → YearlessDateInputWithPicker-DZSb8sPf.js} +5 -5
- package/dist/{YearlessDateInputWithPicker-D6HHhE_H.js.map → YearlessDateInputWithPicker-DZSb8sPf.js.map} +1 -1
- package/dist/beta/components/MultiSelectField/internal/MultiSelectFieldList.d.ts +3 -1
- package/dist/beta/components/MultiSelectField/internal/useComboMultiple.d.ts +13 -6
- package/dist/beta/components/MultiSelectField/stories/MultiSelectField.stories.data.d.ts +10 -1
- package/dist/beta/components/MultiSelectField/types.d.ts +34 -32
- package/dist/beta/components/SelectField/SelectFieldSync.d.ts +11 -1
- package/dist/beta/components/SelectField/internal/FieldListBase.d.ts +27 -0
- package/dist/beta/components/SelectField/internal/SelectFieldList.d.ts +3 -1
- package/dist/beta/components/SelectField/internal/types.d.ts +16 -0
- package/dist/beta/components/SelectField/internal/useCombo.d.ts +8 -3
- package/dist/beta/components/SelectField/internal/useGroupedOptions.d.ts +39 -0
- package/dist/beta/components/SelectField/internal/usePinnedOptions.d.ts +37 -0
- package/dist/beta/components/SelectField/types.d.ts +33 -10
- package/dist/beta/components/Table/columnTypeDefaults.d.ts +51 -0
- package/dist/beta/components/Table/createColumnHelper.d.ts +88 -26
- package/dist/beta/components/Table/formatters/dateFormatter.d.ts +1 -1
- package/dist/beta/components/Table/formatters/dateTimeFormatter.d.ts +1 -1
- package/dist/beta/components/Table/formatters/yearlessDateFormatter.d.ts +2 -2
- package/dist/beta/components/Table/index.d.ts +1 -0
- package/dist/beta/components/Table/types.d.ts +188 -19
- package/dist/beta/hooks/useAdaptiveView/index.d.ts +1 -0
- package/dist/beta.js +8 -8
- package/dist/components/Checkbox/internal/Checkbox.d.ts +1 -1
- package/dist/components/Dialog/internal/DialogContext.d.ts +5 -0
- package/dist/components/DndSort/DndSort.d.ts +1 -0
- package/dist/components/Drawer/internal/DrawerContext.d.ts +5 -0
- package/dist/components/FieldLabel/FieldLabel.d.ts +3 -1
- package/dist/components/Popover/internal/PopoverContext.d.ts +0 -1
- package/dist/components/Popover/internal/usePopoverContext.d.ts +0 -1
- package/dist/{index-DVtI3CrN.js → index-DFvIVS57.js} +3 -3
- package/dist/{index-DVtI3CrN.js.map → index-DFvIVS57.js.map} +1 -1
- package/dist/index.js +64 -64
- package/dist/{primitive-BByug0kD.js → primitive-C3RFDRA8.js} +11 -11
- package/dist/{primitive-BByug0kD.js.map → primitive-C3RFDRA8.js.map} +1 -1
- package/dist/token/core/primitive-variables.scss +10 -10
- package/dist/token/core/primitive.js +10 -10
- package/dist/token/core/primitive.scss +10 -10
- package/dist/token.js +1 -1
- package/dist/{useBreakpoint-BGCsBhQ7.js → useBreakpoint-BP3HZXmh.js} +2 -2
- package/dist/{useBreakpoint-BGCsBhQ7.js.map → useBreakpoint-BP3HZXmh.js.map} +1 -1
- package/dist/useBreakpoint.js +1 -1
- package/dist/{useDrilldown-pzr3387k.js → useDrilldown-lAdB3FFW.js} +4 -4
- package/dist/{useDrilldown-pzr3387k.js.map → useDrilldown-lAdB3FFW.js.map} +1 -1
- package/dist/{useInitialFocus-DfFGsgjO.js → useInitialFocus-nOW12jQ5.js} +20 -17
- package/dist/useInitialFocus-nOW12jQ5.js.map +1 -0
- package/dist/{useLayoutPropsUtil-BlIWftBb.js → useLayoutPropsUtil-loxbyklF.js} +3 -3
- package/dist/{useLayoutPropsUtil-BlIWftBb.js.map → useLayoutPropsUtil-loxbyklF.js.map} +1 -1
- package/package.json +5 -5
- package/dist/DataTable-CLr0j95O.js.map +0 -1
- package/dist/Drawer-BPPWM11Z.js.map +0 -1
- package/dist/FieldDialog-NcMR2ATl.js.map +0 -1
- package/dist/ListView-CBmaHOY-.js.map +0 -1
- package/dist/MultiSelectFieldSync-7nxS5Fdi.js.map +0 -1
- package/dist/Popover-U2Eu7v1Q.js.map +0 -1
- package/dist/SelectFieldSync-BsDUUM84.js.map +0 -1
- package/dist/Toaster-99KNznN3.js.map +0 -1
- package/dist/useInitialFocus-DfFGsgjO.js.map +0 -1
- /package/dist/beta/hooks/{useAdaptiveView.d.ts → useAdaptiveView/useAdaptiveView.d.ts} +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { SelectFieldDownshiftItem, SelectFieldOption } from '../types';
|
|
2
2
|
import { UseComboboxPropGetters } from 'downshift';
|
|
3
3
|
import { CSSProperties } from 'react';
|
|
4
|
+
import { SectionMeta } from './types';
|
|
4
5
|
type GetMenuProps = UseComboboxPropGetters<SelectFieldDownshiftItem>["getMenuProps"];
|
|
5
6
|
type GetItemProps = UseComboboxPropGetters<SelectFieldDownshiftItem>["getItemProps"];
|
|
6
7
|
export type SelectFieldListProps = {
|
|
@@ -18,9 +19,10 @@ export type SelectFieldListProps = {
|
|
|
18
19
|
disabled?: boolean;
|
|
19
20
|
className?: string;
|
|
20
21
|
style?: CSSProperties;
|
|
22
|
+
sectionsMeta?: SectionMeta[];
|
|
21
23
|
};
|
|
22
24
|
export declare const SelectFieldList: {
|
|
23
|
-
({
|
|
25
|
+
({ selectedOption, ...rest }: SelectFieldListProps): import("react/jsx-runtime").JSX.Element;
|
|
24
26
|
displayName: string;
|
|
25
27
|
};
|
|
26
28
|
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Metadata about list sections for rendering purposes.
|
|
3
|
+
* Used by both SelectFieldList and MultiSelectFieldList to render section headers and dividers.
|
|
4
|
+
* @property type - The type of section ("pinned" for pinned options, "group" for grouped options)
|
|
5
|
+
* @property label - Section label (e.g., "Recent", "Favorites", or group name)
|
|
6
|
+
* @property startIndex - Index in downshiftItems where this section starts
|
|
7
|
+
* @property endIndex - Index where this section ends (exclusive)
|
|
8
|
+
* @property loading - Whether this section is still loading its options (pinned sections only)
|
|
9
|
+
*/
|
|
10
|
+
export type SectionMeta = {
|
|
11
|
+
type: "pinned" | "group";
|
|
12
|
+
label: string;
|
|
13
|
+
startIndex: number;
|
|
14
|
+
endIndex: number;
|
|
15
|
+
loading?: boolean;
|
|
16
|
+
};
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { UseComboboxProps } from 'downshift';
|
|
2
|
-
import { SelectFieldDownshiftItem, SelectFieldOption } from '../types';
|
|
2
|
+
import { SelectFieldDownshiftItem, SelectFieldGroupByValue, SelectFieldOption, SelectFieldPinnedOptions } from '../types';
|
|
3
|
+
import { SectionMeta } from './types';
|
|
4
|
+
export type { SectionMeta };
|
|
3
5
|
export type UseComboOptions = {
|
|
4
6
|
options: SelectFieldOption[];
|
|
5
|
-
|
|
7
|
+
pinned?: SelectFieldPinnedOptions;
|
|
8
|
+
groupToString?: (groupValue: SelectFieldGroupByValue) => string;
|
|
9
|
+
groupSorter?: (a: SelectFieldGroupByValue, b: SelectFieldGroupByValue) => number;
|
|
6
10
|
selectAll?: {
|
|
7
11
|
label: string;
|
|
8
12
|
onClick: () => void;
|
|
@@ -16,7 +20,7 @@ export type UseComboOptions = {
|
|
|
16
20
|
/**
|
|
17
21
|
* The purpose of useCombo is to provide an abstraction over the downshift combobox hook.
|
|
18
22
|
*/
|
|
19
|
-
export declare const useCombo: ({ options,
|
|
23
|
+
export declare const useCombo: ({ options, pinned, groupToString, groupSorter, selectAll, selectedOption, onSelectedOptionChange, onInputValueChange, onIsOpenChange, displayAs, disableHighlightOnOpen, disabled, }: UseComboOptions) => {
|
|
20
24
|
inputValue: string;
|
|
21
25
|
wrapperDivRef: import('react').RefObject<HTMLDivElement>;
|
|
22
26
|
getToggleButtonProps: <Options>(options?: import('downshift').UseComboboxGetToggleButtonPropsOptions & Options) => import('downshift').Overwrite<import('downshift').UseComboboxGetToggleButtonPropsReturnValue, Options>;
|
|
@@ -27,6 +31,7 @@ export declare const useCombo: ({ options, pinnedOptions, selectAll, selectedOpt
|
|
|
27
31
|
highlightedIndex: number;
|
|
28
32
|
isOpen: boolean;
|
|
29
33
|
downshiftItems: SelectFieldDownshiftItem[];
|
|
34
|
+
sectionsMeta: SectionMeta[];
|
|
30
35
|
closeMenu: () => void;
|
|
31
36
|
openMenu: () => void;
|
|
32
37
|
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { SelectFieldDownshiftItem, SelectFieldGroupByValue, SelectFieldOption } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Normalized group section structure used internally.
|
|
4
|
+
* @property label - The group label (derived from groupToString or String(groupValue))
|
|
5
|
+
* @property options - The options belonging to this group
|
|
6
|
+
*/
|
|
7
|
+
export type NormalizedGroupSection = {
|
|
8
|
+
label: string;
|
|
9
|
+
options: SelectFieldOption[];
|
|
10
|
+
};
|
|
11
|
+
type UseGroupedOptionsResult = {
|
|
12
|
+
/** Options that have a group property, converted to downshift items */
|
|
13
|
+
groupedItems: SelectFieldDownshiftItem[];
|
|
14
|
+
/** Options that don't have a group property, converted to downshift items */
|
|
15
|
+
ungroupedItems: SelectFieldDownshiftItem[];
|
|
16
|
+
/** Metadata about each group section for rendering */
|
|
17
|
+
groupSections: NormalizedGroupSection[];
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Hook that processes options and groups them by their `group` property.
|
|
21
|
+
*
|
|
22
|
+
* Groups are ordered by insertion order (first occurrence of a group value
|
|
23
|
+
* defines its position in the list).
|
|
24
|
+
*
|
|
25
|
+
* @param options - The options to process
|
|
26
|
+
* @param groupToString - Optional function to convert group values to display labels
|
|
27
|
+
* @returns Grouped items, ungrouped items, and group section metadata
|
|
28
|
+
*/
|
|
29
|
+
export declare function useGroupedOptions(options: SelectFieldOption[], groupToString?: (groupValue: SelectFieldGroupByValue) => string): UseGroupedOptionsResult;
|
|
30
|
+
/**
|
|
31
|
+
* Sorts group sections using the provided comparator function.
|
|
32
|
+
* The group value is extracted from the first option in each section.
|
|
33
|
+
*
|
|
34
|
+
* @param sections - The group sections to sort
|
|
35
|
+
* @param groupSorter - Comparator function for group values
|
|
36
|
+
* @returns A new array of sorted sections
|
|
37
|
+
*/
|
|
38
|
+
export declare function sortGroupSections(sections: NormalizedGroupSection[], groupSorter: (a: SelectFieldGroupByValue, b: SelectFieldGroupByValue) => number): NormalizedGroupSection[];
|
|
39
|
+
export {};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { SelectFieldOption, SelectFieldPinnedOptions } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Normalized pinned section structure used internally.
|
|
4
|
+
* @property label - Section label (e.g., "Recent", "Favorites")
|
|
5
|
+
* @property options - The pinned options for this section
|
|
6
|
+
* @property loading - Whether this section is still loading its options
|
|
7
|
+
*/
|
|
8
|
+
export type NormalizedPinnedSection = {
|
|
9
|
+
label: string;
|
|
10
|
+
options: SelectFieldOption[];
|
|
11
|
+
loading?: boolean;
|
|
12
|
+
};
|
|
13
|
+
type UsePinnedOptionsResult = {
|
|
14
|
+
pinnedSections: NormalizedPinnedSection[];
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Hook that normalizes and loads pinned options from various input formats.
|
|
18
|
+
*
|
|
19
|
+
* Handles:
|
|
20
|
+
* - Labeled pinned options object
|
|
21
|
+
* - Array of labeled pinned options objects
|
|
22
|
+
*
|
|
23
|
+
* Dynamic sections appear immediately with `loading: true` and empty options,
|
|
24
|
+
* then transition to their resolved options once loaded. Results are cached
|
|
25
|
+
* per section per search value so revisiting a previous search term is instant.
|
|
26
|
+
*
|
|
27
|
+
* Per-section configuration:
|
|
28
|
+
* - `searchReactive` (default true): when false, loader is called once and the
|
|
29
|
+
* result is reused for all search values.
|
|
30
|
+
* - `cacheSize` (default 15): max number of search results cached per section.
|
|
31
|
+
*
|
|
32
|
+
* @param pinned - The pinned options configuration from props
|
|
33
|
+
* @param searchValue - Current search input value
|
|
34
|
+
* @returns Normalized pinned sections with per-section loading state
|
|
35
|
+
*/
|
|
36
|
+
export declare function usePinnedOptions(pinned: SelectFieldPinnedOptions | undefined, searchValue: string): UsePinnedOptionsResult;
|
|
37
|
+
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { AriaAttributes, CSSProperties, ReactElement, ReactNode } from 'react';
|
|
2
|
-
import { LayoutUtilProps, Size } from '../../../types';
|
|
2
|
+
import { CheckState, LayoutUtilProps, Size } from '../../../types';
|
|
3
3
|
/**
|
|
4
4
|
* Configuration options for the SelectField cache.
|
|
5
5
|
* @property enabled - Whether caching is enabled. Defaults to true.
|
|
@@ -23,6 +23,7 @@ export type SelectFieldOption = {
|
|
|
23
23
|
searchText?: string;
|
|
24
24
|
group?: SelectFieldGroupByValue;
|
|
25
25
|
disabled?: boolean;
|
|
26
|
+
extra?: Record<string, unknown>;
|
|
26
27
|
content?: {
|
|
27
28
|
title?: string;
|
|
28
29
|
description?: string;
|
|
@@ -82,18 +83,30 @@ type SelectFieldAddNewOptionProps = {
|
|
|
82
83
|
renderDialogContent: (searchValue: string) => React.ReactNode;
|
|
83
84
|
};
|
|
84
85
|
};
|
|
85
|
-
export type
|
|
86
|
+
export type SelectFieldPinnedOptionsSection = {
|
|
86
87
|
options: SelectFieldOption[] | ((searchValue: string) => SelectFieldOption[] | Promise<SelectFieldOption[]>);
|
|
87
88
|
label: string;
|
|
89
|
+
/**
|
|
90
|
+
* Whether to re-call the loader when search value changes.
|
|
91
|
+
* Only applies when `options` is a function. Defaults to true.
|
|
92
|
+
* When false, the loader is called once and the result is reused for all search values.
|
|
93
|
+
*
|
|
94
|
+
* You may wish to use this, for example, if you are loading a set of "favorites" options that should not be re-loaded when the search value changes.
|
|
95
|
+
*/
|
|
96
|
+
searchReactive?: boolean;
|
|
97
|
+
/**
|
|
98
|
+
* Maximum number of search results to cache per section.
|
|
99
|
+
* Only applies when `options` is a function and `searchReactive` is true.
|
|
100
|
+
* Oldest entries are evicted when the limit is reached. Defaults to 15.
|
|
101
|
+
*/
|
|
102
|
+
cacheSize?: number;
|
|
88
103
|
};
|
|
89
104
|
/**
|
|
90
|
-
* There are
|
|
91
|
-
* 1.
|
|
92
|
-
* 2.
|
|
93
|
-
* 3. A labeled pinned options object (e.g. "Favorites", "Recent", "AI Suggestions", etc.)
|
|
94
|
-
* 4. An array of labeled pinned options objects (e.g. [{"label": "Favorites", "options": [...]}])
|
|
105
|
+
* There are two ways to configure pinned options.
|
|
106
|
+
* 1. A labeled pinned options object (e.g. "Favorites", "Recent", "AI Suggestions", etc.)
|
|
107
|
+
* 2. An array of labeled pinned options objects (e.g. [{"label": "Favorites", "options": [...]}])
|
|
95
108
|
*/
|
|
96
|
-
export type SelectFieldPinnedOptions =
|
|
109
|
+
export type SelectFieldPinnedOptions = SelectFieldPinnedOptionsSection | SelectFieldPinnedOptionsSection[];
|
|
97
110
|
type SelectFieldCommonSelectFieldProps = {
|
|
98
111
|
/**
|
|
99
112
|
* The id of the select field.
|
|
@@ -217,6 +230,15 @@ type SelectFieldGroupingProps = {
|
|
|
217
230
|
* @returns The formatted group label
|
|
218
231
|
*/
|
|
219
232
|
groupToString?: (groupValue: SelectFieldGroupByValue) => string;
|
|
233
|
+
/**
|
|
234
|
+
* Function to compare two group values for sorting.
|
|
235
|
+
* When provided, options are sorted by group using this comparator,
|
|
236
|
+
* then by match-sort order within each group.
|
|
237
|
+
* @param a - First group value to compare
|
|
238
|
+
* @param b - Second group value to compare
|
|
239
|
+
* @returns Negative if a < b, positive if a > b, zero if equal
|
|
240
|
+
*/
|
|
241
|
+
groupSorter?: (a: SelectFieldGroupByValue, b: SelectFieldGroupByValue) => number;
|
|
220
242
|
};
|
|
221
243
|
type SelectFieldNonGroupingProps = {
|
|
222
244
|
/**
|
|
@@ -281,13 +303,14 @@ export type SelectFieldPropsEager = SelectFieldCommonSelectFieldProps & {
|
|
|
281
303
|
* Function to load the options.
|
|
282
304
|
*/
|
|
283
305
|
loadOptions: SelectFieldEagerLoader;
|
|
284
|
-
};
|
|
306
|
+
} & SelectFieldGroupingProps;
|
|
285
307
|
export type SelectFieldPropsLazy = SelectFieldPropsLazyPage | SelectFieldPropsLazyOffset | SelectFieldPropsLazyGroup;
|
|
286
308
|
export type SelectFieldProps = SelectFieldPropsLazy | SelectFieldPropsEager;
|
|
287
309
|
export type SelectFieldDownshiftItem = {
|
|
288
310
|
id: string | number;
|
|
289
|
-
type: "option" | "pinned-option" | "select-all";
|
|
311
|
+
type: "option" | "pinned-option" | "grouped-option" | "select-all";
|
|
290
312
|
original: SelectFieldOption;
|
|
291
313
|
disabled?: boolean;
|
|
314
|
+
checkState?: CheckState;
|
|
292
315
|
};
|
|
293
316
|
export {};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { ColumnType, ColumnTypeConfig, ColumnTypeOptionsMap } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Display defaults for a column type.
|
|
5
|
+
* Defines the default formatter and alignment for each column type.
|
|
6
|
+
*/
|
|
7
|
+
export type ColumnTypeDefaults = {
|
|
8
|
+
/**
|
|
9
|
+
* Default horizontal alignment for the column.
|
|
10
|
+
*/
|
|
11
|
+
align: "start" | "center" | "end";
|
|
12
|
+
/**
|
|
13
|
+
* Factory function to create the default renderCell function.
|
|
14
|
+
* Receives formatter options and returns the renderCell function.
|
|
15
|
+
*/
|
|
16
|
+
createRenderCell: (options?: ColumnTypeOptionsMap[ColumnType]) => ((value: unknown, rowDepth: number) => ReactNode) | undefined;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Mapping of column types to their display defaults.
|
|
20
|
+
* Used by the column helper to apply sensible defaults based on data type.
|
|
21
|
+
*/
|
|
22
|
+
export declare const COLUMN_TYPE_DEFAULTS: Record<ColumnType, ColumnTypeDefaults>;
|
|
23
|
+
/**
|
|
24
|
+
* Extracts the column type string and options from a ColumnTypeConfig.
|
|
25
|
+
*
|
|
26
|
+
* @param config - The column type configuration (string or object)
|
|
27
|
+
* @returns Tuple of [type string, options object or undefined]
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```ts
|
|
31
|
+
* resolveColumnTypeConfig("currency")
|
|
32
|
+
* // Returns: ["currency", undefined]
|
|
33
|
+
*
|
|
34
|
+
* resolveColumnTypeConfig({ type: "currency", options: { currency: "EUR" } })
|
|
35
|
+
* // Returns: ["currency", { currency: "EUR" }]
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export declare function resolveColumnTypeConfig<T extends ColumnType>(config: ColumnTypeConfig<T>): [T, ColumnTypeOptionsMap[T] | undefined];
|
|
39
|
+
/**
|
|
40
|
+
* Gets the display defaults for a column type.
|
|
41
|
+
*
|
|
42
|
+
* @param type - The column type
|
|
43
|
+
* @returns The column type defaults (align and createRenderCell)
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```ts
|
|
47
|
+
* const defaults = getColumnTypeDefaults("currency");
|
|
48
|
+
* // Returns: { align: "end", createRenderCell: ... }
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export declare function getColumnTypeDefaults(type: ColumnType): ColumnTypeDefaults;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
|
-
import { ColumnDef } from './types';
|
|
2
|
+
import { ColumnDef, ColumnTypeConfig, TextEditConfig, SelectEditConfig, MultiselectEditConfig } from './types';
|
|
3
3
|
/**
|
|
4
4
|
* Utility type that extracts the element type from an array type
|
|
5
5
|
*/
|
|
6
6
|
type ArrayElement<T> = T extends (infer U)[] ? U : never;
|
|
7
7
|
/**
|
|
8
|
-
* Base column configuration without editMode-specific properties
|
|
8
|
+
* Base column configuration without editMode-specific or editConfig-specific properties
|
|
9
9
|
*/
|
|
10
10
|
type BaseColumnConfig<T, K extends keyof T> = {
|
|
11
11
|
/**
|
|
@@ -13,7 +13,8 @@ type BaseColumnConfig<T, K extends keyof T> = {
|
|
|
13
13
|
*/
|
|
14
14
|
headerLabel: string;
|
|
15
15
|
/**
|
|
16
|
-
* The alignment of the header
|
|
16
|
+
* The alignment of the header.
|
|
17
|
+
* When using `type`, this is set automatically but can be overridden.
|
|
17
18
|
*/
|
|
18
19
|
align?: "start" | "center" | "end";
|
|
19
20
|
/**
|
|
@@ -41,38 +42,74 @@ type BaseColumnConfig<T, K extends keyof T> = {
|
|
|
41
42
|
*/
|
|
42
43
|
resizable?: boolean;
|
|
43
44
|
/**
|
|
44
|
-
* The function to customize how the cell content is rendered
|
|
45
|
+
* The function to customize how the cell content is rendered.
|
|
46
|
+
* When using `type`, a default renderer is provided but can be overridden.
|
|
45
47
|
*/
|
|
46
48
|
renderCell?: (value: T[K], rowDepth: number) => ReactNode;
|
|
47
49
|
/**
|
|
48
50
|
* Whether the column is sortable, or a function to customize the sorting logic
|
|
49
51
|
*/
|
|
50
52
|
sortable?: boolean | ((valueA: T[K], valueB: T[K]) => number);
|
|
53
|
+
/**
|
|
54
|
+
* The column type for automatic display configuration.
|
|
55
|
+
* Sets default `renderCell` (formatter) and `align` based on the data type.
|
|
56
|
+
*/
|
|
57
|
+
type?: ColumnTypeConfig;
|
|
51
58
|
};
|
|
52
59
|
/**
|
|
53
|
-
* Configuration for read-only columns (no
|
|
60
|
+
* Configuration for read-only columns (no editing)
|
|
54
61
|
*/
|
|
55
62
|
type ReadOnlyColumnConfig<T, K extends keyof T> = BaseColumnConfig<T, K> & {
|
|
63
|
+
editConfig?: undefined;
|
|
56
64
|
editMode?: undefined;
|
|
57
65
|
onChange?: never;
|
|
58
66
|
options?: never;
|
|
59
67
|
};
|
|
60
68
|
/**
|
|
61
|
-
* Configuration for text editable columns
|
|
69
|
+
* Configuration for text editable columns using editConfig
|
|
62
70
|
* Valid when T[K] is a string, number, or boolean type
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
71
|
+
*/
|
|
72
|
+
type TextEditConfigColumnConfig<T, K extends keyof T> = NonNullable<T[K]> extends string | number | boolean ? BaseColumnConfig<T, K> & {
|
|
73
|
+
editConfig: TextEditConfig<T, K>;
|
|
74
|
+
editMode?: undefined;
|
|
75
|
+
onChange?: undefined;
|
|
76
|
+
options?: undefined;
|
|
77
|
+
} : never;
|
|
78
|
+
/**
|
|
79
|
+
* Configuration for select editable columns using editConfig
|
|
80
|
+
*/
|
|
81
|
+
type SelectEditConfigColumnConfig<T, K extends keyof T> = BaseColumnConfig<T, K> & {
|
|
82
|
+
editConfig: SelectEditConfig<T, K>;
|
|
83
|
+
editMode?: undefined;
|
|
84
|
+
onChange?: undefined;
|
|
85
|
+
options?: undefined;
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* Configuration for multiselect editable columns using editConfig
|
|
89
|
+
* Only valid when T[K] is an array type
|
|
90
|
+
*/
|
|
91
|
+
type MultiselectEditConfigColumnConfig<T, K extends keyof T> = NonNullable<T[K]> extends unknown[] ? BaseColumnConfig<T, K> & {
|
|
92
|
+
editConfig: MultiselectEditConfig<T, K>;
|
|
93
|
+
editMode?: undefined;
|
|
94
|
+
onChange?: undefined;
|
|
95
|
+
options?: undefined;
|
|
96
|
+
} : never;
|
|
97
|
+
/**
|
|
98
|
+
* Configuration for text editable columns (legacy)
|
|
99
|
+
* @deprecated Use editConfig instead: `editConfig: { mode: "text", onChange: ... }`
|
|
66
100
|
*/
|
|
67
101
|
type TextEditableColumnConfig<T, K extends keyof T> = NonNullable<T[K]> extends string | number | boolean ? BaseColumnConfig<T, K> & {
|
|
102
|
+
editConfig?: undefined;
|
|
68
103
|
editMode: "text";
|
|
69
104
|
onChange?: (value: string, rowId: string) => void;
|
|
70
105
|
options?: never;
|
|
71
106
|
} : never;
|
|
72
107
|
/**
|
|
73
|
-
* Configuration for select editable columns
|
|
108
|
+
* Configuration for select editable columns (legacy)
|
|
109
|
+
* @deprecated Use editConfig instead: `editConfig: { mode: "select", options: [...], onChange: ... }`
|
|
74
110
|
*/
|
|
75
111
|
type SelectEditableColumnConfig<T, K extends keyof T> = BaseColumnConfig<T, K> & {
|
|
112
|
+
editConfig?: undefined;
|
|
76
113
|
editMode: "select";
|
|
77
114
|
onChange?: (value: T[K], rowId: string) => void;
|
|
78
115
|
options: {
|
|
@@ -81,10 +118,11 @@ type SelectEditableColumnConfig<T, K extends keyof T> = BaseColumnConfig<T, K> &
|
|
|
81
118
|
}[];
|
|
82
119
|
};
|
|
83
120
|
/**
|
|
84
|
-
* Configuration for multiselect editable columns
|
|
85
|
-
*
|
|
121
|
+
* Configuration for multiselect editable columns (legacy)
|
|
122
|
+
* @deprecated Use editConfig instead: `editConfig: { mode: "multiselect", options: [...], onChange: ... }`
|
|
86
123
|
*/
|
|
87
124
|
type MultiselectEditableColumnConfig<T, K extends keyof T> = NonNullable<T[K]> extends unknown[] ? BaseColumnConfig<T, K> & {
|
|
125
|
+
editConfig?: undefined;
|
|
88
126
|
editMode: "multiselect";
|
|
89
127
|
onChange?: (value: T[K], rowId: string) => void;
|
|
90
128
|
options: {
|
|
@@ -93,35 +131,59 @@ type MultiselectEditableColumnConfig<T, K extends keyof T> = NonNullable<T[K]> e
|
|
|
93
131
|
}[];
|
|
94
132
|
} : never;
|
|
95
133
|
/**
|
|
96
|
-
* Full column configuration type - union of all possible configurations
|
|
97
|
-
*
|
|
134
|
+
* Full column configuration type - union of all possible configurations.
|
|
135
|
+
* Includes both new editConfig-based and legacy editMode-based configs.
|
|
136
|
+
* TypeScript will enforce that the editMode/editConfig matches the value type constraints.
|
|
98
137
|
*/
|
|
99
|
-
type ColumnConfig<T, K extends keyof T> = ReadOnlyColumnConfig<T, K> | TextEditableColumnConfig<T, K> | SelectEditableColumnConfig<T, K> | MultiselectEditableColumnConfig<T, K>;
|
|
138
|
+
type ColumnConfig<T, K extends keyof T> = ReadOnlyColumnConfig<T, K> | TextEditConfigColumnConfig<T, K> | SelectEditConfigColumnConfig<T, K> | MultiselectEditConfigColumnConfig<T, K> | TextEditableColumnConfig<T, K> | SelectEditableColumnConfig<T, K> | MultiselectEditableColumnConfig<T, K>;
|
|
100
139
|
/**
|
|
101
140
|
* Factory function to create column helper function for defining Table columns.
|
|
102
141
|
*
|
|
103
142
|
* This helper provides type safety by enforcing that:
|
|
104
|
-
* - `
|
|
105
|
-
* - `
|
|
106
|
-
* - `
|
|
107
|
-
* - `
|
|
143
|
+
* - `type` sets display defaults (formatter and alignment) for the column
|
|
144
|
+
* - `editConfig` enables cell editing with proper type constraints
|
|
145
|
+
* - `editConfig.mode: "text"` can only be used with string, number, or boolean columns
|
|
146
|
+
* - `editConfig.mode: "multiselect"` can only be used with array columns
|
|
147
|
+
* - `editConfig.mode: "select"` options values must match the column's value type
|
|
148
|
+
* - `editConfig.onChange` callback receives the correct value type for the column
|
|
108
149
|
*
|
|
109
150
|
* @template T - The type of the row data
|
|
110
151
|
* @returns A function that creates type-safe column definitions
|
|
111
152
|
*
|
|
112
153
|
* @example
|
|
113
154
|
* ```ts
|
|
114
|
-
* type Data = { name: string;
|
|
155
|
+
* type Data = { name: string; amount: number; tags: string[] };
|
|
115
156
|
* const createColumn = createColumnHelper<Data>();
|
|
116
157
|
*
|
|
117
|
-
* //
|
|
118
|
-
* createColumn("
|
|
158
|
+
* // Display-only column with type defaults
|
|
159
|
+
* createColumn("amount", { headerLabel: "Amount", type: "currency" });
|
|
160
|
+
*
|
|
161
|
+
* // Editable column with editConfig
|
|
162
|
+
* createColumn("name", {
|
|
163
|
+
* headerLabel: "Name",
|
|
164
|
+
* type: "text",
|
|
165
|
+
* editConfig: { mode: "text", onChange: (value, rowId) => save(value, rowId) }
|
|
166
|
+
* });
|
|
119
167
|
*
|
|
120
|
-
* //
|
|
121
|
-
* createColumn("
|
|
168
|
+
* // Select editing
|
|
169
|
+
* createColumn("status", {
|
|
170
|
+
* headerLabel: "Status",
|
|
171
|
+
* editConfig: {
|
|
172
|
+
* mode: "select",
|
|
173
|
+
* options: [{ value: "active", label: "Active" }],
|
|
174
|
+
* onChange: (value, rowId) => save(value, rowId)
|
|
175
|
+
* }
|
|
176
|
+
* });
|
|
122
177
|
*
|
|
123
|
-
* //
|
|
124
|
-
* createColumn("tags", {
|
|
178
|
+
* // Multiselect editing with array column
|
|
179
|
+
* createColumn("tags", {
|
|
180
|
+
* headerLabel: "Tags",
|
|
181
|
+
* editConfig: {
|
|
182
|
+
* mode: "multiselect",
|
|
183
|
+
* options: [{ value: "urgent", label: "Urgent" }],
|
|
184
|
+
* onChange: (value, rowId) => save(value, rowId)
|
|
185
|
+
* }
|
|
186
|
+
* });
|
|
125
187
|
* ```
|
|
126
188
|
*/
|
|
127
189
|
export declare function createColumnHelper<T>(): <K extends keyof T>(id: K | {
|
|
@@ -16,7 +16,7 @@ export type DateFormatterOptions = {
|
|
|
16
16
|
* - "long": January 15, 2024
|
|
17
17
|
* - "full": Monday, January 15, 2024
|
|
18
18
|
* - Intl.DateTimeFormatOptions: Custom format (e.g., { weekday: "long", month: "short", day: "numeric" })
|
|
19
|
-
* @default "
|
|
19
|
+
* @default "short"
|
|
20
20
|
*/
|
|
21
21
|
format?: DateFormatPreset | Intl.DateTimeFormatOptions;
|
|
22
22
|
};
|
|
@@ -24,7 +24,7 @@ export type DateTimeFormatterOptions = {
|
|
|
24
24
|
* - "long": January 15, 2024
|
|
25
25
|
* - "full": Monday, January 15, 2024
|
|
26
26
|
* - Intl.DateTimeFormatOptions: Custom format (e.g., { weekday: "long", month: "short", day: "numeric" })
|
|
27
|
-
* @default "
|
|
27
|
+
* @default "short"
|
|
28
28
|
*/
|
|
29
29
|
dateFormat?: DateTimeFormatDatePreset | Intl.DateTimeFormatOptions;
|
|
30
30
|
/**
|
|
@@ -16,8 +16,8 @@ export type YearlessDateFormatterOptions = {
|
|
|
16
16
|
* The format preset or Intl.DateTimeFormatOptions object
|
|
17
17
|
* - "short": Jan 05
|
|
18
18
|
* - "long": January 05
|
|
19
|
-
* - Intl.DateTimeFormatOptions: Custom format (e.g., { month: "
|
|
20
|
-
* @default "
|
|
19
|
+
* - Intl.DateTimeFormatOptions: Custom format (e.g., { month: "long", day: "numeric" })
|
|
20
|
+
* @default "short"
|
|
21
21
|
*/
|
|
22
22
|
format?: YearlessDateFormatPreset | Intl.DateTimeFormatOptions;
|
|
23
23
|
};
|