@servicetitan/anvil2 3.0.1 → 3.0.2
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 +33 -0
- package/README.md +8 -6
- package/dist/{AiMark-B1-M3ZgP.js → AiMark-DiMotaq3.js} +3 -3
- package/dist/{AiMark-B1-M3ZgP.js.map → AiMark-DiMotaq3.js.map} +1 -1
- package/dist/AiMark.js +1 -1
- package/dist/{Alert-C04WIw7A.js → Alert-DhhVURcl.js} +2 -2
- package/dist/{Alert-C04WIw7A.js.map → Alert-DhhVURcl.js.map} +1 -1
- package/dist/Alert.js +1 -1
- package/dist/{Breadcrumbs-CAJMeA1D.js → Breadcrumbs-vvKOtFwN.js} +2 -2
- package/dist/{Breadcrumbs-CAJMeA1D.js.map → Breadcrumbs-vvKOtFwN.js.map} +1 -1
- package/dist/Breadcrumbs.js +1 -1
- package/dist/{Calendar-BAbAagIx.js → Calendar-BLvBN8Ou.js} +2 -2
- package/dist/{Calendar-BAbAagIx.js.map → Calendar-BLvBN8Ou.js.map} +1 -1
- package/dist/{Calendar-CaCMa_jq.js → Calendar-Dtn07sfJ.js} +2 -2
- package/dist/{Calendar-CaCMa_jq.js.map → Calendar-Dtn07sfJ.js.map} +1 -1
- package/dist/Calendar.js +2 -2
- package/dist/{Checkbox-BSAS8-DM.js → Checkbox-BngBrjEV.js} +3 -3
- package/dist/{Checkbox-BSAS8-DM.js.map → Checkbox-BngBrjEV.js.map} +1 -1
- package/dist/{Checkbox-Ckl8EFpF.js → Checkbox-lSwl_u26.js} +2 -2
- package/dist/{Checkbox-Ckl8EFpF.js.map → Checkbox-lSwl_u26.js.map} +1 -1
- package/dist/Checkbox.js +1 -1
- package/dist/{Chip-Da8c7tKP.js → Chip-DBn3KRak.js} +2 -2
- package/dist/{Chip-Da8c7tKP.js.map → Chip-DBn3KRak.js.map} +1 -1
- package/dist/Chip.js +1 -1
- package/dist/{Combobox-CBLaT1lU.js → Combobox-BqhvHG9H.js} +4 -4
- package/dist/{Combobox-CBLaT1lU.js.map → Combobox-BqhvHG9H.js.map} +1 -1
- package/dist/Combobox.js +1 -1
- package/dist/{DataTable-BDXdCF7J.js → DataTable-CB-exG-7.js} +1172 -141
- package/dist/DataTable-CB-exG-7.js.map +1 -0
- package/dist/DataTable.css +259 -103
- package/dist/{DateFieldRange-DPTC3EZz.js → DateFieldRange-Ci-OHK6g.js} +4 -4
- package/dist/{DateFieldRange-DPTC3EZz.js.map → DateFieldRange-Ci-OHK6g.js.map} +1 -1
- package/dist/DateFieldRange.js +1 -1
- package/dist/{DateFieldSingle-w1G-zd9G.js → DateFieldSingle-JOEy4kSL.js} +4 -4
- package/dist/{DateFieldSingle-w1G-zd9G.js.map → DateFieldSingle-JOEy4kSL.js.map} +1 -1
- package/dist/DateFieldSingle.js +1 -1
- package/dist/{DateFieldYearless-DHNVc7Sd.js → DateFieldYearless-CIqPup6O.js} +4 -4
- package/dist/{DateFieldYearless-DHNVc7Sd.js.map → DateFieldYearless-CIqPup6O.js.map} +1 -1
- package/dist/DateFieldYearless.js +1 -1
- package/dist/{DateFieldYearlessRange-C5ktVUgG.js → DateFieldYearlessRange-Cf11uZhk.js} +3 -3
- package/dist/{DateFieldYearlessRange-C5ktVUgG.js.map → DateFieldYearlessRange-Cf11uZhk.js.map} +1 -1
- package/dist/DateFieldYearlessRange.js +1 -1
- package/dist/{DaysOfTheWeek-BubWkBZ0.js → DaysOfTheWeek-R2-y7cqh.js} +3 -3
- package/dist/{DaysOfTheWeek-BubWkBZ0.js.map → DaysOfTheWeek-R2-y7cqh.js.map} +1 -1
- package/dist/DaysOfTheWeek.js +1 -1
- package/dist/{Dialog-ByTyuybu.js → Dialog-C3yST7Ly.js} +4 -4
- package/dist/{Dialog-ByTyuybu.js.map → Dialog-C3yST7Ly.js.map} +1 -1
- package/dist/Dialog.js +1 -1
- package/dist/Dnd.js +2 -1
- package/dist/Dnd.js.map +1 -1
- package/dist/DndHandleButton-Dgt9G-dF.js +43 -0
- package/dist/DndHandleButton-Dgt9G-dF.js.map +1 -0
- package/dist/DndHandleButton.css +22 -0
- package/dist/DndSort.js +2 -1
- package/dist/DndSort.js.map +1 -1
- package/dist/{Drawer-CwyfBcwt.js → Drawer-CouIrQ8u.js} +4 -4
- package/dist/{Drawer-CwyfBcwt.js.map → Drawer-CouIrQ8u.js.map} +1 -1
- package/dist/Drawer.js +1 -1
- package/dist/DrillDown.js +1 -1
- package/dist/{EditCard-DqLSnkih.js → EditCard-DFBjxF9l.js} +2 -2
- package/dist/{EditCard-DqLSnkih.js.map → EditCard-DFBjxF9l.js.map} +1 -1
- package/dist/EditCard.js +1 -1
- package/dist/{FieldLabel-DZWu5dMp.js → FieldLabel-rHPbiyR3.js} +3 -3
- package/dist/{FieldLabel-DZWu5dMp.js.map → FieldLabel-rHPbiyR3.js.map} +1 -1
- package/dist/FieldLabel.js +1 -1
- package/dist/{FilterBar-BU8StPPd.js → FilterBar-kVue-bVK.js} +13 -13
- package/dist/{FilterBar-BU8StPPd.js.map → FilterBar-kVue-bVK.js.map} +1 -1
- package/dist/FilterBar.js +1 -1
- package/dist/{InputMask-EwEJlW-t.js → InputMask-DxbFpzo7.js} +3 -3
- package/dist/{InputMask-EwEJlW-t.js.map → InputMask-DxbFpzo7.js.map} +1 -1
- package/dist/InputMask.js +1 -1
- package/dist/InteractiveCard-KGs2b_al.js +119 -0
- package/dist/InteractiveCard-KGs2b_al.js.map +1 -0
- package/dist/InteractiveCard.css +21 -28
- package/dist/InteractiveCard.js +1 -1
- package/dist/{ListView-DBO9Bl1H.js → ListView-CYkuvkAy.js} +2 -2
- package/dist/{ListView-DBO9Bl1H.js.map → ListView-CYkuvkAy.js.map} +1 -1
- package/dist/ListView.js +1 -1
- package/dist/{Listbox-C0tjQFDF.js → Listbox-BBrsMfO3.js} +2 -2
- package/dist/{Listbox-C0tjQFDF.js.map → Listbox-BBrsMfO3.js.map} +1 -1
- package/dist/Listbox.js +1 -1
- package/dist/MultiSelectField.js +1 -1
- package/dist/{MultiSelectFieldSync-ueey5UBM.js → MultiSelectFieldSync-BWZQ4MFC.js} +5 -5
- package/dist/{MultiSelectFieldSync-ueey5UBM.js.map → MultiSelectFieldSync-BWZQ4MFC.js.map} +1 -1
- package/dist/MultiSelectMenu.js +1 -1
- package/dist/{MultiSelectMenuSync-D7hqugcQ.js → MultiSelectMenuSync-Bl4ty0je.js} +3 -3
- package/dist/{MultiSelectMenuSync-D7hqugcQ.js.map → MultiSelectMenuSync-Bl4ty0je.js.map} +1 -1
- package/dist/{NumberField-DJbdyatF.js → NumberField-DMHJ2Cyi.js} +4 -5
- package/dist/NumberField-DMHJ2Cyi.js.map +1 -0
- package/dist/NumberField.js +1 -1
- package/dist/Overflow.js +1 -1
- package/dist/{Page-DbK-JKyB.js → Page-Blw4TE5J.js} +9 -9
- package/dist/{Page-DbK-JKyB.js.map → Page-Blw4TE5J.js.map} +1 -1
- package/dist/Page.js +1 -1
- package/dist/{Pagination-Bg5Nsdik.js → Pagination-DYNH3WeU.js} +2 -2
- package/dist/{Pagination-Bg5Nsdik.js.map → Pagination-DYNH3WeU.js.map} +1 -1
- package/dist/Pagination.js +1 -1
- package/dist/{Popover-CyB7yzSf.js → Popover-C_XdNvAZ.js} +2 -2
- package/dist/{Popover-CyB7yzSf.js.map → Popover-C_XdNvAZ.js.map} +1 -1
- package/dist/Popover.js +1 -1
- package/dist/{ProgressBar-DSrjgLTx.js → ProgressBar-BwHaAD25.js} +2 -2
- package/dist/{ProgressBar-DSrjgLTx.js.map → ProgressBar-BwHaAD25.js.map} +1 -1
- package/dist/ProgressBar.js +1 -1
- package/dist/{Radio-CQaXJ72d.js → Radio-DJ6KgfcS.js} +2 -2
- package/dist/{Radio-CQaXJ72d.js.map → Radio-DJ6KgfcS.js.map} +1 -1
- package/dist/{Radio-DO4UhbBE.js → Radio-IksHWkBl.js} +3 -3
- package/dist/{Radio-DO4UhbBE.js.map → Radio-IksHWkBl.js.map} +1 -1
- package/dist/Radio.js +1 -1
- package/dist/RichTextEditor-C_Boj8QP.js +30852 -0
- package/dist/RichTextEditor-C_Boj8QP.js.map +1 -0
- package/dist/RichTextEditor.css +178 -0
- package/dist/RichTextEditor.d.ts +2 -0
- package/dist/RichTextEditor.js +2 -0
- package/dist/RichTextEditor.js.map +1 -0
- package/dist/{SelectCard-CtXwY8FZ.js → SelectCard-E-13CjHS.js} +3 -3
- package/dist/{SelectCard-CtXwY8FZ.js.map → SelectCard-E-13CjHS.js.map} +1 -1
- package/dist/SelectCard.js +1 -1
- package/dist/SelectField.js +1 -1
- package/dist/{SelectFieldLabel-DLT5dKbx.js → SelectFieldLabel-C-MrQm-n.js} +2 -2
- package/dist/{SelectFieldLabel-DLT5dKbx.js.map → SelectFieldLabel-C-MrQm-n.js.map} +1 -1
- package/dist/{SelectFieldSync-W_-jTf7z.js → SelectFieldSync-BbJFd_bV.js} +4 -4
- package/dist/{SelectFieldSync-W_-jTf7z.js.map → SelectFieldSync-BbJFd_bV.js.map} +1 -1
- package/dist/SelectMenu.js +1 -1
- package/dist/{SelectMenuSync-QcjbQtCO.js → SelectMenuSync-CBMdmGTU.js} +3 -3
- package/dist/{SelectMenuSync-QcjbQtCO.js.map → SelectMenuSync-CBMdmGTU.js.map} +1 -1
- package/dist/{SelectOptions-BsX0f22q.js → SelectOptions-BT9OCfPh.js} +2 -2
- package/dist/{SelectOptions-BsX0f22q.js.map → SelectOptions-BT9OCfPh.js.map} +1 -1
- package/dist/{SelectTrigger-BaDvF9JD.js → SelectTrigger-DtyxYDzP.js} +2 -2
- package/dist/{SelectTrigger-BaDvF9JD.js.map → SelectTrigger-DtyxYDzP.js.map} +1 -1
- package/dist/SelectTrigger.js +1 -1
- package/dist/{SelectTriggerBase-kMRqbXwu.js → SelectTriggerBase-Xwq929Wr.js} +3 -3
- package/dist/{SelectTriggerBase-kMRqbXwu.js.map → SelectTriggerBase-Xwq929Wr.js.map} +1 -1
- package/dist/{Switch-DeBu4Ucg.js → Switch-CElshQ9N.js} +2 -2
- package/dist/{Switch-DeBu4Ucg.js.map → Switch-CElshQ9N.js.map} +1 -1
- package/dist/Switch.js +1 -1
- package/dist/Table.js +1 -1
- package/dist/{Text-BH8gglCL.js → Text-C0F8AkvH.js} +2 -2
- package/dist/{Text-BH8gglCL.js.map → Text-C0F8AkvH.js.map} +1 -1
- package/dist/Text.js +1 -1
- package/dist/{TextField-CRDTnuUN.js → TextField-CLZEj0aI.js} +3 -3
- package/dist/{TextField-CRDTnuUN.js.map → TextField-CLZEj0aI.js.map} +1 -1
- package/dist/{TextField-YlMkDHp-.js → TextField-yL52fx5R.js} +2 -2
- package/dist/{TextField-YlMkDHp-.js.map → TextField-yL52fx5R.js.map} +1 -1
- package/dist/TextField.js +1 -1
- package/dist/{Textarea-CxXmr_Gx.js → Textarea-CGgyvnM8.js} +3 -3
- package/dist/{Textarea-CxXmr_Gx.js.map → Textarea-CGgyvnM8.js.map} +1 -1
- package/dist/Textarea.js +1 -1
- package/dist/{TimeField-Cz4tMYb3.js → TimeField-BEvxjjFp.js} +4 -4
- package/dist/{TimeField-Cz4tMYb3.js.map → TimeField-BEvxjjFp.js.map} +1 -1
- package/dist/TimeField.js +1 -1
- package/dist/Toast.js +2 -2
- package/dist/{Toaster-BV8RjmIN.js → Toaster-DllJAOK8.js} +3 -3
- package/dist/{Toaster-BV8RjmIN.js.map → Toaster-DllJAOK8.js.map} +1 -1
- package/dist/{Toaster-DYGDohJT.js → Toaster-DuadB8pq.js} +2 -2
- package/dist/{Toaster-DYGDohJT.js.map → Toaster-DuadB8pq.js.map} +1 -1
- package/dist/{Toolbar-Dzj2KMEy.js → Toolbar-J5cakHba.js} +5 -5
- package/dist/{Toolbar-Dzj2KMEy.js.map → Toolbar-J5cakHba.js.map} +1 -1
- package/dist/Toolbar-QYRQv45Y.js +780 -0
- package/dist/Toolbar-QYRQv45Y.js.map +1 -0
- package/dist/Toolbar.js +2 -2
- package/dist/{ToolbarButtonToggle--2Ka05N8.js → ToolbarButtonToggle-Ch0SH4oH.js} +5 -4
- package/dist/ToolbarButtonToggle-Ch0SH4oH.js.map +1 -0
- package/dist/{Tooltip-BlStOXN3.js → Tooltip-lBmgi5ZB.js} +7 -6
- package/dist/Tooltip-lBmgi5ZB.js.map +1 -0
- package/dist/Tooltip.css +7 -6
- package/dist/Tooltip.js +1 -1
- package/dist/{YearlessDateInputWithPicker-DyytWt0x.js → YearlessDateInputWithPicker-DryLX8sA.js} +2 -2
- package/dist/{YearlessDateInputWithPicker-DyytWt0x.js.map → YearlessDateInputWithPicker-DryLX8sA.js.map} +1 -1
- package/dist/add-BcQkAUip.js +6 -0
- package/dist/add-BcQkAUip.js.map +1 -0
- package/dist/assets/css-utils/a2-border.css +23 -53
- package/dist/assets/css-utils/a2-color.css +221 -449
- package/dist/assets/css-utils/a2-font.css +21 -47
- package/dist/assets/css-utils/a2-spacing.css +238 -481
- package/dist/assets/css-utils/a2-utils.css +497 -1002
- package/dist/assets/css-utils/border.css +23 -53
- package/dist/assets/css-utils/color.css +221 -449
- package/dist/assets/css-utils/font.css +21 -47
- package/dist/assets/css-utils/spacing.css +238 -481
- package/dist/assets/css-utils/utils.css +497 -1002
- package/dist/beta/components/InteractiveCard/InteractiveCard.d.ts +3 -1
- package/dist/beta/components/RichTextEditor/RichTextEditor.d.ts +27 -0
- package/dist/beta/components/RichTextEditor/index.d.ts +2 -0
- package/dist/beta/components/RichTextEditor/internal/LinkPopover.d.ts +14 -0
- package/dist/beta/components/RichTextEditor/internal/MentionList.d.ts +14 -0
- package/dist/beta/components/RichTextEditor/internal/MentionNodeView.d.ts +11 -0
- package/dist/beta/components/RichTextEditor/internal/MentionPopover.d.ts +16 -0
- package/dist/beta/components/RichTextEditor/internal/RichTextEditorContext.d.ts +57 -0
- package/dist/beta/components/RichTextEditor/internal/RichTextEditorDragHandle.d.ts +6 -0
- package/dist/beta/components/RichTextEditor/internal/RichTextEditorMockData.d.ts +8 -0
- package/dist/beta/components/RichTextEditor/internal/RichTextEditorProvider.d.ts +8 -0
- package/dist/beta/components/RichTextEditor/internal/RichTextEditorToolbar.d.ts +1 -0
- package/dist/beta/components/RichTextEditor/internal/YouTubeEmbedPrompt.d.ts +11 -0
- package/dist/beta/components/RichTextEditor/internal/YouTubePopover.d.ts +11 -0
- package/dist/beta/components/RichTextEditor/internal/extensions/ImageUploadExtension.d.ts +3 -0
- package/dist/beta/components/RichTextEditor/internal/extensions/LinkKeyboardShortcutExtension.d.ts +8 -0
- package/dist/beta/components/RichTextEditor/internal/extensions/MentionExtension.d.ts +18 -0
- package/dist/beta/components/RichTextEditor/internal/extensions/YoutubeExtension.d.ts +8 -0
- package/dist/beta/components/RichTextEditor/internal/useRichTextEditor.d.ts +32 -0
- package/dist/beta/components/RichTextEditor/types.d.ts +103 -0
- package/dist/beta/components/Table/DataTable/DataTable.d.ts +40 -1
- package/dist/beta/components/Table/DataTable/internal/DataTableBody.d.ts +22 -0
- package/dist/beta/components/Table/DataTable/internal/DataTableBodyRow.d.ts +18 -1
- package/dist/beta/components/Table/DataTable/internal/cells/CellFocusContext.d.ts +16 -0
- package/dist/beta/components/Table/DataTable/internal/editable-cells/DataTableEditableCustomCell.d.ts +8 -0
- package/dist/beta/components/Table/DataTable/internal/editable-cells/useCustomEditHelpers.d.ts +49 -0
- package/dist/beta/components/Table/DataTable/internal/useDataTableVirtualizer.d.ts +9 -5
- package/dist/beta/components/Table/DataTable/internal/util/cellTypeHelpers.d.ts +3 -0
- package/dist/beta/components/Table/DataTable/internal/util/getTanStackColumnDef.d.ts +13 -1
- package/dist/beta/components/Table/createColumnHelper.d.ts +48 -22
- package/dist/beta/components/Table/internal/getCommonPinningClasses.d.ts +1 -1
- package/dist/beta/components/Table/types.d.ts +311 -7
- package/dist/beta/components/index.d.ts +1 -0
- package/dist/beta.js +13 -12
- package/dist/beta.js.map +1 -1
- package/dist/components/Toolbar/internal/utils/accessibility.d.ts +5 -0
- package/dist/getKeyboardFocusableElements-B_U9rt6y.js +11 -0
- package/dist/getKeyboardFocusableElements-B_U9rt6y.js.map +1 -0
- package/dist/index-DUzqzmOX.js +17044 -0
- package/dist/index-DUzqzmOX.js.map +1 -0
- package/dist/index-DtsM4pjR.js +71 -0
- package/dist/index-DtsM4pjR.js.map +1 -0
- package/dist/index.css +1 -22
- package/dist/index.js +46 -810
- package/dist/index.js.map +1 -1
- package/dist/internal/components/Surface/Surface.d.ts +141 -0
- package/dist/internal/components/Surface/index.d.ts +1 -0
- package/dist/internal/components/index.d.ts +1 -0
- package/dist/internal/functions/getKeyboardFocusableElements.d.ts +11 -0
- package/dist/{stripInlineMarkdown-BWbMy7r_.js → stripInlineMarkdown-BOi-eJO3.js} +2 -2
- package/dist/{stripInlineMarkdown-BWbMy7r_.js.map → stripInlineMarkdown-BOi-eJO3.js.map} +1 -1
- package/dist/{syncFilterUtils-nJS_tCsu.js → syncFilterUtils-Gvm81gyv.js} +4 -4
- package/dist/{syncFilterUtils-nJS_tCsu.js.map → syncFilterUtils-Gvm81gyv.js.map} +1 -1
- package/dist/token/core/css-utils/a2-border.css +0 -30
- package/dist/token/core/css-utils/a2-color.css +0 -228
- package/dist/token/core/css-utils/a2-font.css +1 -27
- package/dist/token/core/css-utils/a2-spacing.css +1 -244
- package/dist/token/core/css-utils/a2-utils.css +0 -505
- package/dist/token/core/css-utils/border.css +0 -30
- package/dist/token/core/css-utils/color.css +0 -228
- package/dist/token/core/css-utils/font.css +1 -27
- package/dist/token/core/css-utils/spacing.css +1 -244
- package/dist/token/core/css-utils/utils.css +0 -505
- package/dist/{useDrilldown-DwzT0Fse.js → useDrilldown-6SfknQ2s.js} +3 -3
- package/dist/{useDrilldown-DwzT0Fse.js.map → useDrilldown-6SfknQ2s.js.map} +1 -1
- package/dist/{useInitialFocus-BUxEDMEG.js → useInitialFocus-BIvXK1Rp.js} +2 -2
- package/dist/{useInitialFocus-BUxEDMEG.js.map → useInitialFocus-BIvXK1Rp.js.map} +1 -1
- package/dist/{usePopoverTransitionStates-CDXCdyKa.js → usePopoverTransitionStates-B1opfxxn.js} +1 -2
- package/dist/{usePopoverTransitionStates-CDXCdyKa.js.map → usePopoverTransitionStates-B1opfxxn.js.map} +1 -1
- package/dist/{useToggleSelection-CAwGOeXk.js → useToggleSelection-odFvSS5t.js} +2 -2
- package/dist/{useToggleSelection-CAwGOeXk.js.map → useToggleSelection-odFvSS5t.js.map} +1 -1
- package/package.json +18 -3
- package/dist/DataTable-BDXdCF7J.js.map +0 -1
- package/dist/InteractiveCard-CnW0m_F-.js +0 -87
- package/dist/InteractiveCard-CnW0m_F-.js.map +0 -1
- package/dist/NumberField-DJbdyatF.js.map +0 -1
- package/dist/ToolbarButtonToggle--2Ka05N8.js.map +0 -1
- package/dist/Tooltip-BlStOXN3.js.map +0 -1
- package/dist/getKeyboardFocusableElements-QqcABz0D.js +0 -12
- package/dist/getKeyboardFocusableElements-QqcABz0D.js.map +0 -1
- package/dist/index-ByMdotWU.js +0 -107
- package/dist/index-ByMdotWU.js.map +0 -1
- /package/dist/{index2.css → Toolbar2.css} +0 -0
|
@@ -5,25 +5,29 @@ import { Virtualizer } from '@tanstack/react-virtual';
|
|
|
5
5
|
* than this many rows render all rows in the DOM (the pre-virtualization
|
|
6
6
|
* behavior); tables with this many or more are virtualized.
|
|
7
7
|
*
|
|
8
|
-
* Set to
|
|
8
|
+
* Set to 50 so tables with 49 or fewer rows remain non-virtualized (and
|
|
9
9
|
* therefore keep every row — including any editable cells — fully mounted).
|
|
10
10
|
*/
|
|
11
|
-
export declare const VIRTUALIZATION_THRESHOLD =
|
|
11
|
+
export declare const VIRTUALIZATION_THRESHOLD = 50;
|
|
12
12
|
export type DataTableVirtualizer = Virtualizer<HTMLDivElement, HTMLDivElement>;
|
|
13
13
|
/**
|
|
14
14
|
* Create a TanStack virtualizer for DataTable body rows.
|
|
15
15
|
*
|
|
16
16
|
* Returns `undefined` when virtualization is disabled or when `rowCount` is
|
|
17
|
-
* below `VIRTUALIZATION_THRESHOLD
|
|
18
|
-
* render via the non-virtualized flat flow.
|
|
17
|
+
* below `VIRTUALIZATION_THRESHOLD` (and `forced` is not `true`), signaling to
|
|
18
|
+
* the body that rows should render via the non-virtualized flat flow.
|
|
19
|
+
*
|
|
20
|
+
* When both `disabled` and `forced` are `true`, `disabled` wins.
|
|
19
21
|
*
|
|
20
22
|
* @param rowCount Total number of body rows that would render if not virtualized.
|
|
21
23
|
* @param scrollRef Ref to the scrollable container whose scroll position the virtualizer tracks.
|
|
22
24
|
* @param disabled When `true`, virtualization is skipped regardless of row count.
|
|
25
|
+
* @param forced When `true`, virtualization runs regardless of row count (subject to `disabled`).
|
|
23
26
|
* @returns A `Virtualizer` instance when virtualization should run; `undefined` when the body should flat-render.
|
|
24
27
|
*/
|
|
25
|
-
export declare function useDataTableVirtualizer({ rowCount, scrollRef, disabled, }: {
|
|
28
|
+
export declare function useDataTableVirtualizer({ rowCount, scrollRef, disabled, forced, }: {
|
|
26
29
|
rowCount: number;
|
|
27
30
|
scrollRef: RefObject<HTMLDivElement>;
|
|
28
31
|
disabled?: boolean;
|
|
32
|
+
forced?: boolean;
|
|
29
33
|
}): DataTableVirtualizer | undefined;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Cell } from '@tanstack/react-table';
|
|
2
|
+
import { ColumnReadRenderResult } from '../../../types';
|
|
2
3
|
/**
|
|
3
4
|
* Extracts the column ID from a cell, with proper type narrowing.
|
|
4
5
|
* Uses the stored ColumnDef from meta if available, otherwise falls back to column.id.
|
|
@@ -16,6 +17,8 @@ export declare function getColumnId<T>(cell: Cell<T, unknown>): keyof T;
|
|
|
16
17
|
* @returns The cell value, typed as T[K]
|
|
17
18
|
*/
|
|
18
19
|
export declare function getCellValue<T, K extends keyof T>(cell: Cell<T, unknown>, _columnId: K): T[K];
|
|
20
|
+
export declare function getCellReadRenderResult<T>(cell: Cell<T, unknown>): ColumnReadRenderResult | undefined;
|
|
21
|
+
export declare function getCellReadRenderRawString<T>(cell: Cell<T, unknown>): string | undefined;
|
|
19
22
|
/**
|
|
20
23
|
* Gets the onChange callback with proper typing based on column ID.
|
|
21
24
|
* Returns a callback that accepts T[K] instead of the union type T[keyof T].
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ColumnHelper } from '@tanstack/react-table';
|
|
2
2
|
import { ReactNode } from 'react';
|
|
3
|
-
import { ColumnDef, EditMode } from '../../../types';
|
|
3
|
+
import { ColumnDef, ColumnReadRenderResult, EditMode, TableRow } from '../../../types';
|
|
4
4
|
declare module "@tanstack/react-table" {
|
|
5
5
|
interface ColumnMeta<TData, TValue> {
|
|
6
6
|
editMode?: EditMode;
|
|
@@ -9,6 +9,18 @@ declare module "@tanstack/react-table" {
|
|
|
9
9
|
* The original column definition, stored for type narrowing and runtime access
|
|
10
10
|
*/
|
|
11
11
|
columnDef?: ColumnDef<TData>;
|
|
12
|
+
/**
|
|
13
|
+
* Custom read display metadata shared between rendering, editing, and sorting.
|
|
14
|
+
*/
|
|
15
|
+
readRenderResult?: ColumnReadRenderResult;
|
|
16
|
+
getCellText?: (value: TValue, context: {
|
|
17
|
+
row: TableRow<TData>;
|
|
18
|
+
depth: number;
|
|
19
|
+
}) => string;
|
|
20
|
+
getReadRenderResult?: (value: TValue, context: {
|
|
21
|
+
row: TableRow<TData>;
|
|
22
|
+
depth: number;
|
|
23
|
+
}) => ColumnReadRenderResult;
|
|
12
24
|
/**
|
|
13
25
|
* Whether the header action (expand all / select all) is disabled for this column
|
|
14
26
|
*/
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
|
-
import { ColumnDef, ColumnTypeConfig, TextEditConfig, NumberEditConfig, SelectEditConfig, SelectAsyncEditConfig, MultiselectEditConfig, MultiselectAsyncEditConfig, BooleanEditConfig, TableRow, ColumnHeaderConfig } from './types';
|
|
2
|
+
import { ColumnDef, ColumnTypeConfig, TextEditConfig, NumberEditConfig, SelectEditConfig, SelectAsyncEditConfig, MultiselectEditConfig, MultiselectAsyncEditConfig, BooleanEditConfig, CustomEditConfig, TableRow, ColumnHeaderConfig, ColumnReadRenderContext, ColumnReadRenderResult } from './types';
|
|
3
3
|
import { MultiSelectMenuOption } from '../MultiSelectMenu';
|
|
4
4
|
/**
|
|
5
5
|
* Base column configuration shared by all column types
|
|
6
6
|
*/
|
|
7
|
-
type BaseColumnConfig<T
|
|
7
|
+
type BaseColumnConfig<T> = ColumnHeaderConfig & {
|
|
8
8
|
/**
|
|
9
9
|
* The cleaned-up header configuration.
|
|
10
10
|
*/
|
|
@@ -19,10 +19,6 @@ type BaseColumnConfig<T, K extends keyof T> = ColumnHeaderConfig & {
|
|
|
19
19
|
* When using `type`, this is set automatically but can be overridden.
|
|
20
20
|
*/
|
|
21
21
|
align?: "start" | "center" | "end";
|
|
22
|
-
/**
|
|
23
|
-
* Columns of a group column (for grouped columns)
|
|
24
|
-
*/
|
|
25
|
-
columns?: ColumnDef<T>[];
|
|
26
22
|
/**
|
|
27
23
|
* Custom content to display when a cell value is empty (null, undefined, or empty string).
|
|
28
24
|
* Overrides the default em dash. When set on both the column and the DataTable,
|
|
@@ -66,14 +62,26 @@ type BaseColumnConfig<T, K extends keyof T> = ColumnHeaderConfig & {
|
|
|
66
62
|
* Whether the column is resizable
|
|
67
63
|
*/
|
|
68
64
|
resizable?: boolean;
|
|
65
|
+
};
|
|
66
|
+
type BaseDataColumnConfig<T, K extends keyof T> = BaseColumnConfig<T> & {
|
|
69
67
|
/**
|
|
70
68
|
* The function to customize how the cell content is rendered.
|
|
71
69
|
* When using `type`, a default renderer is provided but can be overridden.
|
|
72
70
|
*/
|
|
73
|
-
renderCell?: (value: T[K],
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
71
|
+
renderCell?: (value: T[K], context: ColumnReadRenderContext<TableRow<T>>) => ReactNode;
|
|
72
|
+
/**
|
|
73
|
+
* Optional plain-text extractor for the read path.
|
|
74
|
+
* Useful when `renderCell` returns JSX or multiline content but default sorting
|
|
75
|
+
* should still use a simple string.
|
|
76
|
+
*/
|
|
77
|
+
getCellText?: (value: T[K], context: ColumnReadRenderContext<TableRow<T>>) => string;
|
|
78
|
+
/**
|
|
79
|
+
* Optional advanced read-display extractor.
|
|
80
|
+
* Prefer `getCellText` for the common case where `renderCell` already handles
|
|
81
|
+
* display and sorting only needs a simple string. Use this when you want one
|
|
82
|
+
* hook to return both rendered read content and the sortable raw string.
|
|
83
|
+
*/
|
|
84
|
+
getReadRenderResult?: (value: T[K], context: ColumnReadRenderContext<TableRow<T>>) => ColumnReadRenderResult;
|
|
77
85
|
/**
|
|
78
86
|
* Whether the column is sortable, or a function to customize the sorting logic
|
|
79
87
|
*/
|
|
@@ -84,36 +92,46 @@ type BaseColumnConfig<T, K extends keyof T> = ColumnHeaderConfig & {
|
|
|
84
92
|
*/
|
|
85
93
|
type?: ColumnTypeConfig;
|
|
86
94
|
};
|
|
95
|
+
type GroupColumnConfig<T> = BaseColumnConfig<T> & {
|
|
96
|
+
/**
|
|
97
|
+
* Columns of a group column (for grouped columns)
|
|
98
|
+
*/
|
|
99
|
+
columns: ColumnDef<T>[];
|
|
100
|
+
editConfig?: never;
|
|
101
|
+
renderCell?: never;
|
|
102
|
+
sortable?: never;
|
|
103
|
+
type?: never;
|
|
104
|
+
};
|
|
87
105
|
/**
|
|
88
106
|
* Configuration for read-only columns (no editing)
|
|
89
107
|
*/
|
|
90
|
-
type ReadOnlyColumnConfig<T, K extends keyof T> =
|
|
108
|
+
type ReadOnlyColumnConfig<T, K extends keyof T> = BaseDataColumnConfig<T, K> & {
|
|
91
109
|
editConfig?: undefined;
|
|
92
110
|
};
|
|
93
111
|
/**
|
|
94
112
|
* Configuration for text editable columns using editConfig.
|
|
95
113
|
* Valid when T[K] is a string.
|
|
96
114
|
*/
|
|
97
|
-
type TextEditConfigColumnConfig<T, K extends keyof T> = NonNullable<T[K]> extends string ?
|
|
115
|
+
type TextEditConfigColumnConfig<T, K extends keyof T> = NonNullable<T[K]> extends string ? BaseDataColumnConfig<T, K> & {
|
|
98
116
|
editConfig: TextEditConfig<T, K>;
|
|
99
117
|
} : never;
|
|
100
118
|
/**
|
|
101
119
|
* Configuration for number editable columns using editConfig.
|
|
102
120
|
* Valid when T[K] is a number type.
|
|
103
121
|
*/
|
|
104
|
-
type NumberEditConfigColumnConfig<T, K extends keyof T> = NonNullable<T[K]> extends number ?
|
|
122
|
+
type NumberEditConfigColumnConfig<T, K extends keyof T> = NonNullable<T[K]> extends number ? BaseDataColumnConfig<T, K> & {
|
|
105
123
|
editConfig: NumberEditConfig<T, K>;
|
|
106
124
|
} : never;
|
|
107
125
|
/**
|
|
108
126
|
* Configuration for select editable columns using editConfig
|
|
109
127
|
*/
|
|
110
|
-
type SelectEditConfigColumnConfig<T, K extends keyof T> =
|
|
128
|
+
type SelectEditConfigColumnConfig<T, K extends keyof T> = BaseDataColumnConfig<T, K> & {
|
|
111
129
|
editConfig: SelectEditConfig<T, K>;
|
|
112
130
|
};
|
|
113
131
|
/**
|
|
114
132
|
* Configuration for async select editable columns using editConfig
|
|
115
133
|
*/
|
|
116
|
-
type SelectAsyncEditConfigColumnConfig<T, K extends keyof T> =
|
|
134
|
+
type SelectAsyncEditConfigColumnConfig<T, K extends keyof T> = BaseDataColumnConfig<T, K> & {
|
|
117
135
|
editConfig: SelectAsyncEditConfig<T>;
|
|
118
136
|
};
|
|
119
137
|
type CellArrayItem = object | string | number | boolean | bigint | symbol | null | undefined;
|
|
@@ -122,7 +140,7 @@ type CellArrayValue = readonly CellArrayItem[];
|
|
|
122
140
|
* Configuration for multiselect editable columns using editConfig
|
|
123
141
|
* Only valid when T[K] is an array type
|
|
124
142
|
*/
|
|
125
|
-
type MultiselectEditConfigColumnConfig<T, K extends keyof T> = NonNullable<T[K]> extends CellArrayValue ?
|
|
143
|
+
type MultiselectEditConfigColumnConfig<T, K extends keyof T> = NonNullable<T[K]> extends CellArrayValue ? BaseDataColumnConfig<T, K> & {
|
|
126
144
|
editConfig: MultiselectEditConfig<T, K>;
|
|
127
145
|
} : never;
|
|
128
146
|
/**
|
|
@@ -130,21 +148,24 @@ type MultiselectEditConfigColumnConfig<T, K extends keyof T> = NonNullable<T[K]>
|
|
|
130
148
|
* Only valid when T[K] is MultiSelectMenuOption[] — full option objects,
|
|
131
149
|
* not a plain primitive array like string[].
|
|
132
150
|
*/
|
|
133
|
-
type MultiselectAsyncEditConfigColumnConfig<T, K extends keyof T> = NonNullable<T[K]> extends MultiSelectMenuOption[] ?
|
|
151
|
+
type MultiselectAsyncEditConfigColumnConfig<T, K extends keyof T> = NonNullable<T[K]> extends MultiSelectMenuOption[] ? BaseDataColumnConfig<T, K> & {
|
|
134
152
|
editConfig: MultiselectAsyncEditConfig<T>;
|
|
135
153
|
} : never;
|
|
136
154
|
/**
|
|
137
155
|
* Configuration for boolean editable columns using editConfig.
|
|
138
156
|
* Valid when T[K] is a boolean type.
|
|
139
157
|
*/
|
|
140
|
-
type BooleanEditConfigColumnConfig<T, K extends keyof T> = NonNullable<T[K]> extends boolean ?
|
|
158
|
+
type BooleanEditConfigColumnConfig<T, K extends keyof T> = NonNullable<T[K]> extends boolean ? BaseDataColumnConfig<T, K> & {
|
|
141
159
|
editConfig: BooleanEditConfig<T, K>;
|
|
142
160
|
} : never;
|
|
161
|
+
type CustomEditConfigColumnConfig<T, K extends keyof T> = BaseDataColumnConfig<T, K> & {
|
|
162
|
+
editConfig: CustomEditConfig<T, K>;
|
|
163
|
+
};
|
|
143
164
|
/**
|
|
144
165
|
* Full column configuration type - union of all possible configurations.
|
|
145
166
|
* TypeScript will enforce that the editConfig matches the value type constraints.
|
|
146
167
|
*/
|
|
147
|
-
type ColumnConfig<T, K extends keyof T> = ReadOnlyColumnConfig<T, K> | TextEditConfigColumnConfig<T, K> | NumberEditConfigColumnConfig<T, K> | SelectEditConfigColumnConfig<T, K> | SelectAsyncEditConfigColumnConfig<T, K> | MultiselectEditConfigColumnConfig<T, K> | MultiselectAsyncEditConfigColumnConfig<T, K> | BooleanEditConfigColumnConfig<T, K>;
|
|
168
|
+
type ColumnConfig<T, K extends keyof T> = ReadOnlyColumnConfig<T, K> | TextEditConfigColumnConfig<T, K> | NumberEditConfigColumnConfig<T, K> | SelectEditConfigColumnConfig<T, K> | SelectAsyncEditConfigColumnConfig<T, K> | MultiselectEditConfigColumnConfig<T, K> | MultiselectAsyncEditConfigColumnConfig<T, K> | BooleanEditConfigColumnConfig<T, K> | CustomEditConfigColumnConfig<T, K>;
|
|
148
169
|
/**
|
|
149
170
|
* Factory function to create column helper function for defining Table columns.
|
|
150
171
|
*
|
|
@@ -156,7 +177,9 @@ type ColumnConfig<T, K extends keyof T> = ReadOnlyColumnConfig<T, K> | TextEditC
|
|
|
156
177
|
* - `editConfig.mode: "number"` can only be used with number columns
|
|
157
178
|
* - `editConfig.mode: "multiselect"` can only be used with array columns
|
|
158
179
|
* - `editConfig.mode: "select"` options values must match the column's value type
|
|
180
|
+
* - `editConfig.mode: "custom"` preserves object-valued canonical state and typed draft helpers
|
|
159
181
|
* - `editConfig.onChange` callback receives the correct value type for the column
|
|
182
|
+
* - `getCellText` provides a simple sortable read string when `renderCell` returns rich content
|
|
160
183
|
*
|
|
161
184
|
* @template T - The type of the row data
|
|
162
185
|
* @returns A function that creates type-safe column definitions
|
|
@@ -209,7 +232,10 @@ type ColumnConfig<T, K extends keyof T> = ReadOnlyColumnConfig<T, K> | TextEditC
|
|
|
209
232
|
* });
|
|
210
233
|
* ```
|
|
211
234
|
*/
|
|
212
|
-
export declare function createColumnHelper<T>():
|
|
213
|
-
|
|
214
|
-
|
|
235
|
+
export declare function createColumnHelper<T>(): {
|
|
236
|
+
(id: {
|
|
237
|
+
group: string;
|
|
238
|
+
}, column: GroupColumnConfig<T>): ColumnDef<T>;
|
|
239
|
+
<K extends keyof T>(id: K, column: ColumnConfig<T, K>): ColumnDef<T>;
|
|
240
|
+
};
|
|
215
241
|
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Column } from '@tanstack/react-table';
|
|
2
2
|
/**
|
|
3
|
-
* Get the
|
|
3
|
+
* Get the pinning-related classes for a column (overflow gradient + padding-strip bg extension).
|
|
4
4
|
*/
|
|
5
5
|
export declare const getCommonPinningClasses: <T>(column: Column<T>) => string | undefined;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ReactNode } from 'react';
|
|
1
|
+
import { KeyboardEvent as ReactKeyboardEvent, ReactNode, SetStateAction } from 'react';
|
|
2
2
|
import { BooleanFormatterOptions, CurrencyFormatterOptions, DateFormatterOptions, DateTimeFormatterOptions, NumberFormatterOptions, PercentFormatterOptions, TimeFormatterOptions } from './formatters';
|
|
3
3
|
import { SelectMenuOption, SelectMenuGroupByValue } from '../SelectMenu';
|
|
4
4
|
import { SelectMenuSyncProps } from '../SelectMenu/SelectMenuSync';
|
|
@@ -47,7 +47,7 @@ export type ColumnTypeConfig<T extends ColumnType = ColumnType> = T | {
|
|
|
47
47
|
/**
|
|
48
48
|
* Edit mode literals for editable cells.
|
|
49
49
|
*/
|
|
50
|
-
export type EditMode = "text" | "number" | "select" | "select-async" | "multiselect" | "multiselect-async" | "boolean";
|
|
50
|
+
export type EditMode = "text" | "number" | "select" | "select-async" | "multiselect" | "multiselect-async" | "boolean" | "custom";
|
|
51
51
|
/**
|
|
52
52
|
* Base edit configuration shared by all edit modes.
|
|
53
53
|
* @template T - The row data type
|
|
@@ -61,6 +61,196 @@ type BaseEditConfig<T, K extends keyof T> = {
|
|
|
61
61
|
*/
|
|
62
62
|
onChange: (value: T[K], rowId: string) => void;
|
|
63
63
|
};
|
|
64
|
+
type CustomEditCanonicalValueForValue<TValue> = TValue extends readonly (infer _Element)[] ? never : TValue extends object ? NonNullable<TValue> : never;
|
|
65
|
+
type CustomEditCanonicalValue<T, K extends keyof T> = CustomEditCanonicalValueForValue<NonNullable<T[K]>>;
|
|
66
|
+
export type CustomEditFieldValueUpdater<TValue extends object, TField extends keyof TValue> = TValue[TField] | ((previousValue: TValue[TField], draftValue: TValue) => TValue[TField]);
|
|
67
|
+
export type CustomEditCloseReason = "submit" | "escape" | "outside-click" | "close-button" | "programmatic";
|
|
68
|
+
export type CustomEditValidation<TValue extends object> = {
|
|
69
|
+
/**
|
|
70
|
+
* Form-level validation summary for the entire editor.
|
|
71
|
+
*/
|
|
72
|
+
formError?: ReactNode;
|
|
73
|
+
/**
|
|
74
|
+
* Field-level validation messages keyed by draft field.
|
|
75
|
+
*/
|
|
76
|
+
fieldErrors?: Partial<Record<keyof TValue, ReactNode>>;
|
|
77
|
+
};
|
|
78
|
+
export type CustomEditSurfaceConfig = {
|
|
79
|
+
/**
|
|
80
|
+
* Optional title rendered in the editor surface header.
|
|
81
|
+
*/
|
|
82
|
+
title?: ReactNode;
|
|
83
|
+
/**
|
|
84
|
+
* Optional surface width.
|
|
85
|
+
*/
|
|
86
|
+
width?: number | string;
|
|
87
|
+
/**
|
|
88
|
+
* Optional surface max height.
|
|
89
|
+
*/
|
|
90
|
+
maxHeight?: number | string;
|
|
91
|
+
/**
|
|
92
|
+
* Accessible label for the close button.
|
|
93
|
+
*/
|
|
94
|
+
closeButtonLabel?: string;
|
|
95
|
+
/**
|
|
96
|
+
* Optional keydown handler forwarded to the surface.
|
|
97
|
+
*/
|
|
98
|
+
onKeyDown?: (event: ReactKeyboardEvent<HTMLDivElement>) => void;
|
|
99
|
+
};
|
|
100
|
+
export type CustomEditCloseRequest<TValue extends object> = {
|
|
101
|
+
/**
|
|
102
|
+
* Why the close was requested.
|
|
103
|
+
*/
|
|
104
|
+
reason: CustomEditCloseReason;
|
|
105
|
+
/**
|
|
106
|
+
* Draft value at the time the request is evaluated.
|
|
107
|
+
*/
|
|
108
|
+
draftValue: TValue;
|
|
109
|
+
/**
|
|
110
|
+
* Original committed value when editing began.
|
|
111
|
+
*/
|
|
112
|
+
initialValue: TValue;
|
|
113
|
+
/**
|
|
114
|
+
* Whether the draft differs from the initial value.
|
|
115
|
+
*/
|
|
116
|
+
isDirty: boolean;
|
|
117
|
+
/**
|
|
118
|
+
* Current validation metadata.
|
|
119
|
+
*/
|
|
120
|
+
validation: CustomEditValidation<TValue>;
|
|
121
|
+
};
|
|
122
|
+
export type CustomEditController<TValue extends object> = {
|
|
123
|
+
/**
|
|
124
|
+
* Current local draft value owned by the custom editor.
|
|
125
|
+
*/
|
|
126
|
+
draftValue: TValue;
|
|
127
|
+
/**
|
|
128
|
+
* Original value before editing began.
|
|
129
|
+
*/
|
|
130
|
+
initialValue: TValue;
|
|
131
|
+
/**
|
|
132
|
+
* Whether the draft differs from the initial value.
|
|
133
|
+
*/
|
|
134
|
+
isDirty: boolean;
|
|
135
|
+
/**
|
|
136
|
+
* Ordered list of changed fields.
|
|
137
|
+
*/
|
|
138
|
+
changedFields: ReadonlyArray<keyof TValue>;
|
|
139
|
+
/**
|
|
140
|
+
* Current validation metadata for the draft.
|
|
141
|
+
*/
|
|
142
|
+
validation: CustomEditValidation<TValue>;
|
|
143
|
+
/**
|
|
144
|
+
* Replace the entire draft value.
|
|
145
|
+
*/
|
|
146
|
+
setDraftValue: (nextValue: SetStateAction<TValue>) => TValue;
|
|
147
|
+
/**
|
|
148
|
+
* Update a single field in the current draft value.
|
|
149
|
+
*/
|
|
150
|
+
setDraftField: <TField extends keyof TValue>(field: TField, nextValue: CustomEditFieldValueUpdater<TValue, TField>) => TValue;
|
|
151
|
+
/**
|
|
152
|
+
* Submit the current draft and close the editor.
|
|
153
|
+
*/
|
|
154
|
+
submit: () => void;
|
|
155
|
+
/**
|
|
156
|
+
* Restore the initial value and close the editor.
|
|
157
|
+
*/
|
|
158
|
+
discard: () => void;
|
|
159
|
+
/**
|
|
160
|
+
* Request closure using the configured policy for the supplied reason.
|
|
161
|
+
*/
|
|
162
|
+
requestClose: (reason: CustomEditCloseReason) => void;
|
|
163
|
+
/**
|
|
164
|
+
* Register the one preferred initial-focus action for the editor.
|
|
165
|
+
*/
|
|
166
|
+
setInitialFocus: (focus: (() => void) | null) => void;
|
|
167
|
+
/**
|
|
168
|
+
* Canonical submit handler for form-based editors.
|
|
169
|
+
*/
|
|
170
|
+
handleSubmit: (event?: {
|
|
171
|
+
preventDefault?: () => void;
|
|
172
|
+
}) => void;
|
|
173
|
+
};
|
|
174
|
+
export type ColumnReadRenderContext<T> = {
|
|
175
|
+
row: T;
|
|
176
|
+
depth: number;
|
|
177
|
+
};
|
|
178
|
+
export type ColumnReadRenderResult = {
|
|
179
|
+
/**
|
|
180
|
+
* Advanced read-path rendered content.
|
|
181
|
+
* Most consumers should prefer `renderCell` + `getCellText` and only use
|
|
182
|
+
* this shape when one hook should return both rendered content and sortable text.
|
|
183
|
+
*/
|
|
184
|
+
content: ReactNode;
|
|
185
|
+
/**
|
|
186
|
+
* Optional sortable plain-text representation of the rendered content.
|
|
187
|
+
*/
|
|
188
|
+
rawString?: string;
|
|
189
|
+
};
|
|
190
|
+
export type CustomEditRenderContext<T, K extends keyof T> = {
|
|
191
|
+
/**
|
|
192
|
+
* Full row data for the cell being edited.
|
|
193
|
+
*/
|
|
194
|
+
row: T;
|
|
195
|
+
/**
|
|
196
|
+
* String row id for the cell being edited.
|
|
197
|
+
*/
|
|
198
|
+
rowId: string;
|
|
199
|
+
/**
|
|
200
|
+
* Canonical committed value for the cell.
|
|
201
|
+
*/
|
|
202
|
+
value: T[K];
|
|
203
|
+
/**
|
|
204
|
+
* Typed controller for draft mutation, validation, focus, and lifecycle control.
|
|
205
|
+
*/
|
|
206
|
+
controller: CustomEditController<CustomEditCanonicalValue<T, K>>;
|
|
207
|
+
};
|
|
208
|
+
/**
|
|
209
|
+
* Edit configuration for custom mode cells.
|
|
210
|
+
* Preserves canonical object values while continuing to use `renderCell`
|
|
211
|
+
* for the read path.
|
|
212
|
+
*
|
|
213
|
+
* @template T - The row data type
|
|
214
|
+
* @template K - The column key
|
|
215
|
+
*/
|
|
216
|
+
export type CustomEditConfig<T, K extends keyof T> = [
|
|
217
|
+
CustomEditCanonicalValue<T, K>
|
|
218
|
+
] extends [never] ? never : Omit<BaseEditConfig<T, K>, "onChange"> & {
|
|
219
|
+
/**
|
|
220
|
+
* Custom edit mode - renders a multi-field editor surface.
|
|
221
|
+
*/
|
|
222
|
+
mode: "custom";
|
|
223
|
+
/**
|
|
224
|
+
* Callback fired when the draft is committed.
|
|
225
|
+
*/
|
|
226
|
+
onCommit: (value: T[K], rowId: string) => void;
|
|
227
|
+
/**
|
|
228
|
+
* Callback fired on every local draft mutation.
|
|
229
|
+
*/
|
|
230
|
+
onDraftUpdate?: (value: T[K], rowId: string) => void;
|
|
231
|
+
/**
|
|
232
|
+
* Optional validation metadata derived from the current draft.
|
|
233
|
+
*/
|
|
234
|
+
validateDraft?: (draftValue: CustomEditCanonicalValue<T, K>, rowId: string) => CustomEditValidation<CustomEditCanonicalValue<T, K>> | undefined;
|
|
235
|
+
/**
|
|
236
|
+
* When true, submit-style close requests are blocked while validation contains
|
|
237
|
+
* a form error or any field error. Defaults to `false`.
|
|
238
|
+
*/
|
|
239
|
+
blockOnValidationError?: boolean;
|
|
240
|
+
/**
|
|
241
|
+
* Optional close interception hook.
|
|
242
|
+
* Return `false` to keep the editor open.
|
|
243
|
+
*/
|
|
244
|
+
onRequestClose?: (request: CustomEditCloseRequest<CustomEditCanonicalValue<T, K>>) => boolean | void;
|
|
245
|
+
/**
|
|
246
|
+
* Optional surface presentation overrides.
|
|
247
|
+
*/
|
|
248
|
+
surface?: CustomEditSurfaceConfig;
|
|
249
|
+
/**
|
|
250
|
+
* Consumer-owned renderer for the custom editor contents.
|
|
251
|
+
*/
|
|
252
|
+
renderEditor: (context: CustomEditRenderContext<T, K>) => ReactNode;
|
|
253
|
+
};
|
|
64
254
|
/**
|
|
65
255
|
* Edit configuration for text mode cells.
|
|
66
256
|
* @template T - The row data type
|
|
@@ -407,9 +597,17 @@ export type BooleanEditConfig<T, K extends keyof T> = BaseEditConfig<T, K> & {
|
|
|
407
597
|
* falseLabel: "No",
|
|
408
598
|
* onChange: (value, rowId) => save(value, rowId)
|
|
409
599
|
* }
|
|
600
|
+
*
|
|
601
|
+
* // Custom editing keeps renderCell as the read path
|
|
602
|
+
* editConfig: {
|
|
603
|
+
* mode: "custom",
|
|
604
|
+
* onChange: (value, rowId) => save(value, rowId),
|
|
605
|
+
* onDraftChange: (value, rowId) => saveDraft(value, rowId),
|
|
606
|
+
* renderEditor: ({ helpers }) => renderAddressEditor(helpers)
|
|
607
|
+
* }
|
|
410
608
|
* ```
|
|
411
609
|
*/
|
|
412
|
-
export type EditConfig<T, K extends keyof T> = TextEditConfig<T, K> | NumberEditConfig<T, K> | SelectEditConfig<T, K> | SelectAsyncEditConfig<T> | MultiselectEditConfig<T, K> | MultiselectAsyncEditConfig<T> | BooleanEditConfig<T, K>;
|
|
610
|
+
export type EditConfig<T, K extends keyof T> = TextEditConfig<T, K> | NumberEditConfig<T, K> | SelectEditConfig<T, K> | SelectAsyncEditConfig<T> | MultiselectEditConfig<T, K> | MultiselectAsyncEditConfig<T> | BooleanEditConfig<T, K> | CustomEditConfig<T, K>;
|
|
413
611
|
/**
|
|
414
612
|
* The type for a table row
|
|
415
613
|
* @extends T
|
|
@@ -459,6 +657,101 @@ export type TableRow<T> = T & {
|
|
|
459
657
|
*/
|
|
460
658
|
subRows?: TableRow<T>[];
|
|
461
659
|
};
|
|
660
|
+
export type ColumnBaseDef = {
|
|
661
|
+
/**
|
|
662
|
+
* The label of the header
|
|
663
|
+
*/
|
|
664
|
+
headerLabel: string;
|
|
665
|
+
/**
|
|
666
|
+
* The alignment of the header and cell content.
|
|
667
|
+
* When using `type`, this is set automatically but can be overridden.
|
|
668
|
+
*/
|
|
669
|
+
align?: "start" | "center" | "end";
|
|
670
|
+
/**
|
|
671
|
+
* Custom content to display when a cell value is empty (null, undefined, or empty string).
|
|
672
|
+
* Overrides the default em dash. When set on both the column and the DataTable,
|
|
673
|
+
* the column-level value takes precedence.
|
|
674
|
+
*/
|
|
675
|
+
emptyCellContent?: ReactNode;
|
|
676
|
+
/**
|
|
677
|
+
* The content of the footer cell. An array will display multiple footer rows
|
|
678
|
+
*/
|
|
679
|
+
footerContent?: ReactNode | ReactNode[];
|
|
680
|
+
/**
|
|
681
|
+
* The maximum width of the column, in pixels
|
|
682
|
+
*/
|
|
683
|
+
maxWidth?: number;
|
|
684
|
+
/**
|
|
685
|
+
* The minimum width of the column, in pixels
|
|
686
|
+
*/
|
|
687
|
+
minWidth?: number;
|
|
688
|
+
/**
|
|
689
|
+
* The pinning location of the column
|
|
690
|
+
*/
|
|
691
|
+
pinned?: "left" | "right";
|
|
692
|
+
/**
|
|
693
|
+
* Whether the column is resizable
|
|
694
|
+
*/
|
|
695
|
+
resizable?: boolean;
|
|
696
|
+
};
|
|
697
|
+
export type ColumnGroupDef<T> = ColumnBaseDef & {
|
|
698
|
+
/**
|
|
699
|
+
* Group column id.
|
|
700
|
+
*/
|
|
701
|
+
id: string;
|
|
702
|
+
/**
|
|
703
|
+
* Columns of a group column
|
|
704
|
+
*/
|
|
705
|
+
columns: ColumnDef<T>[];
|
|
706
|
+
editConfig?: never;
|
|
707
|
+
renderCell?: never;
|
|
708
|
+
sortable?: never;
|
|
709
|
+
type?: never;
|
|
710
|
+
};
|
|
711
|
+
export type ColumnDefForKey<T, K extends keyof T> = ColumnBaseDef & {
|
|
712
|
+
/**
|
|
713
|
+
* The id of the column - must be a key of T
|
|
714
|
+
*/
|
|
715
|
+
id: K;
|
|
716
|
+
/**
|
|
717
|
+
* Columns of a group column
|
|
718
|
+
*/
|
|
719
|
+
columns?: undefined;
|
|
720
|
+
/**
|
|
721
|
+
* Configuration for cell editing. Presence enables editing for the column.
|
|
722
|
+
* Consolidates edit mode, options, and onChange into a single object.
|
|
723
|
+
*/
|
|
724
|
+
editConfig?: EditConfig<T, K>;
|
|
725
|
+
/**
|
|
726
|
+
* The function to customize how the cell content is rendered.
|
|
727
|
+
* When using `type`, a default renderer is provided but can be overridden.
|
|
728
|
+
* Custom edit columns continue to use this read-only render path.
|
|
729
|
+
*/
|
|
730
|
+
renderCell?: (value: T[K], context: ColumnReadRenderContext<TableRow<T>>) => ReactNode;
|
|
731
|
+
/**
|
|
732
|
+
* Optional plain-text extractor for the read path.
|
|
733
|
+
* Useful when `renderCell` returns JSX or multiline content but default sorting
|
|
734
|
+
* should still use a simple string.
|
|
735
|
+
*/
|
|
736
|
+
getCellText?: (value: T[K], context: ColumnReadRenderContext<TableRow<T>>) => string;
|
|
737
|
+
/**
|
|
738
|
+
* Optional advanced read-display extractor.
|
|
739
|
+
* Prefer `getCellText` for the common case where `renderCell` already handles
|
|
740
|
+
* display and sorting only needs a simple string. Use this when you want one
|
|
741
|
+
* hook to return both rendered read content and the sortable raw string.
|
|
742
|
+
*/
|
|
743
|
+
getReadRenderResult?: (value: T[K], context: ColumnReadRenderContext<TableRow<T>>) => ColumnReadRenderResult;
|
|
744
|
+
/**
|
|
745
|
+
* Whether the column is sortable, or a function to customize the sorting logic.
|
|
746
|
+
* When a function, receives values of the column's value type.
|
|
747
|
+
*/
|
|
748
|
+
sortable?: boolean | ((valueA: T[K], valueB: T[K]) => number);
|
|
749
|
+
/**
|
|
750
|
+
* The column type for automatic display configuration.
|
|
751
|
+
* Sets default `renderCell` (formatter) and `align` based on the data type.
|
|
752
|
+
*/
|
|
753
|
+
type?: ColumnTypeConfig;
|
|
754
|
+
};
|
|
462
755
|
/**
|
|
463
756
|
* Column definition type for DataTable columns.
|
|
464
757
|
*
|
|
@@ -606,11 +899,22 @@ export type ColumnDef<T> = ColumnHeaderConfig & {
|
|
|
606
899
|
/**
|
|
607
900
|
* The function to customize how the cell content is rendered.
|
|
608
901
|
* When using `type`, a default renderer is provided but can be overridden.
|
|
902
|
+
* Custom edit columns continue to use this read-only render path.
|
|
903
|
+
*/
|
|
904
|
+
renderCell?: (value: T[keyof T], context: ColumnReadRenderContext<TableRow<T>>) => ReactNode;
|
|
905
|
+
/**
|
|
906
|
+
* Optional plain-text extractor for the read path.
|
|
907
|
+
* Useful when `renderCell` returns JSX or multiline content but default sorting
|
|
908
|
+
* should still use a simple string.
|
|
909
|
+
*/
|
|
910
|
+
getCellText?: (value: T[keyof T], context: ColumnReadRenderContext<TableRow<T>>) => string;
|
|
911
|
+
/**
|
|
912
|
+
* Optional advanced read-display extractor.
|
|
913
|
+
* Prefer `getCellText` for the common case where `renderCell` already handles
|
|
914
|
+
* display and sorting only needs a simple string. Use this when you want one
|
|
915
|
+
* hook to return both rendered read content and the sortable raw string.
|
|
609
916
|
*/
|
|
610
|
-
|
|
611
|
-
row?: T;
|
|
612
|
-
depth?: number;
|
|
613
|
-
}) => ReactNode;
|
|
917
|
+
getReadRenderResult?: (value: T[keyof T], context: ColumnReadRenderContext<TableRow<T>>) => ColumnReadRenderResult;
|
|
614
918
|
/**
|
|
615
919
|
* Whether the column is resizable
|
|
616
920
|
*/
|
package/dist/beta.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
export { F as FilterBar } from './FilterBar-
|
|
2
|
-
export { C as COLUMN_TYPE_DEFAULTS, D as DataTable, b as booleanFormatter, a as chipsFormatter, c as createColumnHelper, d as currencyFormatter, i as dateFormatPresets, e as dateFormatter, f as dateTimeFormatter, g as getColumnTypeDefaults, h as htmlFormatter, m as markdownFormatter, n as numberFormatter, p as percentFormatter, r as resolveColumnTypeConfig, t as timeFormatPresets, j as timeFormatter, y as yearlessDateFormatter } from './DataTable-
|
|
3
|
-
export { T as Toolbar, a as ToolbarButton, b as ToolbarButtonLink, d as ToolbarControlGroup, f as ToolbarElement, e as ToolbarSearchField, c as ToolbarSelect } from './Toolbar-
|
|
4
|
-
export { T as ToolbarButtonToggle } from './ToolbarButtonToggle
|
|
5
|
-
export { u as useCalendarBetaProps } from './Calendar-
|
|
6
|
-
export { C as Calendar } from './Calendar-
|
|
7
|
-
export { S as SelectField, a as SelectFieldSync } from './SelectFieldSync-
|
|
8
|
-
export { M as MultiSelectField, a as MultiSelectFieldSync } from './MultiSelectFieldSync-
|
|
9
|
-
export { S as SelectMenu, a as SelectMenuSync } from './SelectMenuSync-
|
|
10
|
-
export { M as MultiSelectMenu, a as MultiSelectMenuSync } from './MultiSelectMenuSync-
|
|
11
|
-
export { I as InteractiveCard } from './InteractiveCard-
|
|
12
|
-
export {
|
|
1
|
+
export { F as FilterBar } from './FilterBar-kVue-bVK.js';
|
|
2
|
+
export { C as COLUMN_TYPE_DEFAULTS, D as DataTable, b as booleanFormatter, a as chipsFormatter, c as createColumnHelper, d as currencyFormatter, i as dateFormatPresets, e as dateFormatter, f as dateTimeFormatter, g as getColumnTypeDefaults, h as htmlFormatter, m as markdownFormatter, n as numberFormatter, p as percentFormatter, r as resolveColumnTypeConfig, t as timeFormatPresets, j as timeFormatter, y as yearlessDateFormatter } from './DataTable-CB-exG-7.js';
|
|
3
|
+
export { T as Toolbar, a as ToolbarButton, b as ToolbarButtonLink, d as ToolbarControlGroup, f as ToolbarElement, e as ToolbarSearchField, c as ToolbarSelect } from './Toolbar-J5cakHba.js';
|
|
4
|
+
export { T as ToolbarButtonToggle } from './ToolbarButtonToggle-Ch0SH4oH.js';
|
|
5
|
+
export { u as useCalendarBetaProps } from './Calendar-Dtn07sfJ.js';
|
|
6
|
+
export { C as Calendar } from './Calendar-BLvBN8Ou.js';
|
|
7
|
+
export { S as SelectField, a as SelectFieldSync } from './SelectFieldSync-BbJFd_bV.js';
|
|
8
|
+
export { M as MultiSelectField, a as MultiSelectFieldSync } from './MultiSelectFieldSync-BWZQ4MFC.js';
|
|
9
|
+
export { S as SelectMenu, a as SelectMenuSync } from './SelectMenuSync-CBMdmGTU.js';
|
|
10
|
+
export { M as MultiSelectMenu, a as MultiSelectMenuSync } from './MultiSelectMenuSync-Bl4ty0je.js';
|
|
11
|
+
export { I as InteractiveCard } from './InteractiveCard-KGs2b_al.js';
|
|
12
|
+
export { R as RichTextEditor } from './RichTextEditor-C_Boj8QP.js';
|
|
13
|
+
export { u as useAdaptiveView } from './syncFilterUtils-Gvm81gyv.js';
|
|
13
14
|
//# sourceMappingURL=beta.js.map
|
package/dist/beta.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beta.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"beta.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import { KeyboardEvent } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Gets all visible focusable elements for a specific toolbar instance.
|
|
4
|
+
* Filters out hidden items and includes the overflow trigger if present.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getToolbarElements(toolbarElement: HTMLElement): Element[];
|
|
2
7
|
/**
|
|
3
8
|
* Updates tabindex values for all items in a toolbar.
|
|
4
9
|
* Sets tabindex="0" for the active item and tabindex="-1" for all others.
|