@servicetitan/anvil2 3.0.7 → 3.0.9
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 +42 -0
- package/dist/{AiMark-BXL0sWIV.js → AiMark-CS6MvraM.js} +5 -4
- package/dist/{AiMark-BXL0sWIV.js.map → AiMark-CS6MvraM.js.map} +1 -1
- package/dist/AiMark.js +1 -1
- package/dist/{Alert-BNH0UD2s.js → Alert-CNDLoh6b.js} +2 -2
- package/dist/{Alert-BNH0UD2s.js.map → Alert-CNDLoh6b.js.map} +1 -1
- package/dist/Alert.js +1 -1
- package/dist/{AnvilProvider-J9DjoJiB.js → AnvilProvider-BFK29dL5.js} +3 -2
- package/dist/{AnvilProvider-J9DjoJiB.js.map → AnvilProvider-BFK29dL5.js.map} +1 -1
- package/dist/AnvilProvider.js +1 -1
- package/dist/{Avatar-FDHyqiCy.js → Avatar-Bl-Dxbhf.js} +7 -2
- package/dist/Avatar-Bl-Dxbhf.js.map +1 -0
- package/dist/{Avatar-B_cRQqKR.js → Avatar-CdAIJ5VK.js} +2 -2
- package/dist/{Avatar-B_cRQqKR.js.map → Avatar-CdAIJ5VK.js.map} +1 -1
- package/dist/Avatar.js +2 -2
- package/dist/{Breadcrumbs-Bzxbdu-S.js → Breadcrumbs--Xt6l_2L.js} +2 -2
- package/dist/{Breadcrumbs-Bzxbdu-S.js.map → Breadcrumbs--Xt6l_2L.js.map} +1 -1
- package/dist/Breadcrumbs.js +1 -1
- package/dist/{Calendar-DS5eWpGF.js → Calendar-5mAxtdNh.js} +2 -2
- package/dist/{Calendar-DS5eWpGF.js.map → Calendar-5mAxtdNh.js.map} +1 -1
- package/dist/{Calendar-BYNFAWpZ.js → Calendar-rITorBvD.js} +5 -3
- package/dist/{Calendar-BYNFAWpZ.js.map → Calendar-rITorBvD.js.map} +1 -1
- package/dist/Calendar.js +2 -2
- package/dist/{Checkbox-BeIzx_ZX.js → Checkbox-BYWhkYoK.js} +2 -2
- package/dist/{Checkbox-BeIzx_ZX.js.map → Checkbox-BYWhkYoK.js.map} +1 -1
- package/dist/{Checkbox-BB3BDJsK.js → Checkbox-DTzoDcJl.js} +3 -3
- package/dist/{Checkbox-BB3BDJsK.js.map → Checkbox-DTzoDcJl.js.map} +1 -1
- package/dist/Checkbox.js +1 -1
- package/dist/{Chip-D2k5X_wX.js → Chip-CyMNyEPR.js} +3 -3
- package/dist/{Chip-D2k5X_wX.js.map → Chip-CyMNyEPR.js.map} +1 -1
- package/dist/Chip.js +1 -1
- package/dist/Combobox.js +1 -1
- package/dist/{DataTable-E8z0H8c7.js → DataTable-FG0Kjx0d.js} +1206 -445
- package/dist/DataTable-FG0Kjx0d.js.map +1 -0
- package/dist/DataTable.css +301 -233
- package/dist/{DateFieldRange-BN_uIvHI.js → DateFieldRange-BUug1tUy.js} +4 -4
- package/dist/{DateFieldRange-BN_uIvHI.js.map → DateFieldRange-BUug1tUy.js.map} +1 -1
- package/dist/DateFieldRange.js +1 -1
- package/dist/{DateFieldSingle-h3YkdwPo.js → DateFieldSingle-DR7faQGD.js} +4 -4
- package/dist/{DateFieldSingle-h3YkdwPo.js.map → DateFieldSingle-DR7faQGD.js.map} +1 -1
- package/dist/DateFieldSingle.js +1 -1
- package/dist/{DateFieldYearless-m_Hl2gMY.js → DateFieldYearless-7MFcR7L6.js} +4 -4
- package/dist/{DateFieldYearless-m_Hl2gMY.js.map → DateFieldYearless-7MFcR7L6.js.map} +1 -1
- package/dist/DateFieldYearless.js +1 -1
- package/dist/{DateFieldYearlessRange-DNqSTBDr.js → DateFieldYearlessRange-DGtdyISH.js} +3 -3
- package/dist/{DateFieldYearlessRange-DNqSTBDr.js.map → DateFieldYearlessRange-DGtdyISH.js.map} +1 -1
- package/dist/DateFieldYearlessRange.js +1 -1
- package/dist/{DaysOfTheWeek-D58z_eF3.js → DaysOfTheWeek-C7oN9nIe.js} +3 -3
- package/dist/{DaysOfTheWeek-D58z_eF3.js.map → DaysOfTheWeek-C7oN9nIe.js.map} +1 -1
- package/dist/DaysOfTheWeek.js +1 -1
- package/dist/{Dialog-CvYSMvfD.js → Dialog-dE9c90iR.js} +3 -3
- package/dist/{Dialog-CvYSMvfD.js.map → Dialog-dE9c90iR.js.map} +1 -1
- package/dist/Dialog.js +1 -1
- package/dist/{Divider-CxtTyw8_.js → Divider-Dz27DFuE.js} +17 -17
- package/dist/{Divider-CxtTyw8_.js.map → Divider-Dz27DFuE.js.map} +1 -1
- package/dist/Divider.css +21 -24
- package/dist/Divider.js +1 -1
- package/dist/Dnd.js +2 -2
- package/dist/{DndHandleButton-CHTOYRlq.js → DndHandleButton-BW9xLWQm.js} +2 -4
- package/dist/DndHandleButton-BW9xLWQm.js.map +1 -0
- package/dist/DndSort.js +2 -2
- package/dist/{Drawer-s2y0xcgV.js → Drawer-Dk0MsaOU.js} +3 -3
- package/dist/{Drawer-s2y0xcgV.js.map → Drawer-Dk0MsaOU.js.map} +1 -1
- package/dist/Drawer.js +1 -1
- package/dist/DrillDown.js +1 -1
- package/dist/{EditCard-B25pj0Jx.js → EditCard-DV2N7zWr.js} +2 -2
- package/dist/{EditCard-B25pj0Jx.js.map → EditCard-DV2N7zWr.js.map} +1 -1
- package/dist/EditCard.js +1 -1
- package/dist/{FieldLabel-D1qPAGtB.js → FieldLabel-VVn8GR64.js} +3 -3
- package/dist/{FieldLabel-D1qPAGtB.js.map → FieldLabel-VVn8GR64.js.map} +1 -1
- package/dist/FieldLabel.js +1 -1
- package/dist/{FilterBar-B4ZAs73g.js → FilterBar-B3c_VGDk.js} +6 -5
- package/dist/{FilterBar-B4ZAs73g.js.map → FilterBar-B3c_VGDk.js.map} +1 -1
- package/dist/FilterBar.js +1 -1
- package/dist/{InputMask-BDl09V4u.js → InputMask-VBHWGZGN.js} +3 -3
- package/dist/{InputMask-BDl09V4u.js.map → InputMask-VBHWGZGN.js.map} +1 -1
- package/dist/InputMask.js +1 -1
- package/dist/{ListView-DO5psxd4.js → ListView-BUrfz75g.js} +2 -2
- package/dist/{ListView-DO5psxd4.js.map → ListView-BUrfz75g.js.map} +1 -1
- package/dist/ListView.js +1 -1
- package/dist/{Listbox-CvQHBFWb.js → Listbox-CRY-0BkS.js} +2 -2
- package/dist/{Listbox-CvQHBFWb.js.map → Listbox-CRY-0BkS.js.map} +1 -1
- package/dist/Listbox.js +1 -1
- package/dist/{Menu-W0c-xKdX.js → Menu-DNJ0YqjA.js} +11 -7
- package/dist/Menu-DNJ0YqjA.js.map +1 -0
- package/dist/Menu.js +1 -1
- package/dist/MenuFooter-CrsZdXvN.js +115 -0
- package/dist/MenuFooter-CrsZdXvN.js.map +1 -0
- package/dist/MultiSelectField.js +1 -1
- package/dist/{MultiSelectFieldSync-CXX2F0ru.js → MultiSelectFieldSync-CzHj9Qvy.js} +8 -53
- package/dist/MultiSelectFieldSync-CzHj9Qvy.js.map +1 -0
- package/dist/MultiSelectMenu.js +1 -1
- package/dist/{MultiSelectMenuSync-EKtvlL62.js → MultiSelectMenuSync-BGcrYjby.js} +9 -76
- package/dist/MultiSelectMenuSync-BGcrYjby.js.map +1 -0
- package/dist/{NumberField-BymFZhIJ.js → NumberField-bgYX7JGs.js} +3 -3
- package/dist/{NumberField-BymFZhIJ.js.map → NumberField-bgYX7JGs.js.map} +1 -1
- package/dist/NumberField.js +1 -1
- package/dist/{Page-C2_Hm27h.js → Page-BSHydn4p.js} +9 -9
- package/dist/{Page-C2_Hm27h.js.map → Page-BSHydn4p.js.map} +1 -1
- package/dist/Page.js +1 -1
- package/dist/{Pagination-Bmd4JORe.js → Pagination-CAeyJ7Pl.js} +192 -26
- package/dist/Pagination-CAeyJ7Pl.js.map +1 -0
- package/dist/Pagination.css +4 -2
- package/dist/Pagination.js +1 -1
- package/dist/{Popover-8mTJoMy7.js → Popover-Cq5tirFz.js} +11 -5
- package/dist/Popover-Cq5tirFz.js.map +1 -0
- package/dist/Popover.js +1 -1
- package/dist/{ProgressBar-C1CkQHV5.js → ProgressBar-ByR50ln7.js} +2 -2
- package/dist/{ProgressBar-C1CkQHV5.js.map → ProgressBar-ByR50ln7.js.map} +1 -1
- package/dist/ProgressBar.js +1 -1
- package/dist/{Radio-BcHMk8dD.js → Radio-CPuctRpl.js} +2 -2
- package/dist/{Radio-BcHMk8dD.js.map → Radio-CPuctRpl.js.map} +1 -1
- package/dist/{Radio-D5WyQN2i.js → Radio-WlsZFRzX.js} +3 -3
- package/dist/{Radio-D5WyQN2i.js.map → Radio-WlsZFRzX.js.map} +1 -1
- package/dist/Radio.js +1 -1
- package/dist/{RichTextEditor-DstVbYch.js → RichTextEditor-FSWAVmTe.js} +80 -44
- package/dist/RichTextEditor-FSWAVmTe.js.map +1 -0
- package/dist/RichTextEditor.js +1 -1
- package/dist/{SavedFiltersButton-2qba2Cgu.js → SavedFiltersButton-Cr829guv.js} +12 -11
- package/dist/SavedFiltersButton-Cr829guv.js.map +1 -0
- package/dist/SavedFiltersButton.js +1 -1
- package/dist/{SelectCard-BN-LI14f.js → SelectCard-DLWLHi_i.js} +3 -3
- package/dist/{SelectCard-BN-LI14f.js.map → SelectCard-DLWLHi_i.js.map} +1 -1
- package/dist/SelectCard.js +1 -1
- package/dist/SelectField.js +1 -1
- package/dist/{SelectFieldLabel-UbQT7fDD.js → SelectFieldLabel-vemffdmu.js} +2 -2
- package/dist/{SelectFieldLabel-UbQT7fDD.js.map → SelectFieldLabel-vemffdmu.js.map} +1 -1
- package/dist/{SelectFieldSync-DykGkR_w.js → SelectFieldSync-C65VFWGm.js} +5 -4
- package/dist/{SelectFieldSync-DykGkR_w.js.map → SelectFieldSync-C65VFWGm.js.map} +1 -1
- package/dist/SelectMenu.js +1 -1
- package/dist/{SelectMenuSync-DTQ8Ofoz.js → SelectMenuSync-CF49L12-.js} +6 -4
- package/dist/{SelectMenuSync-DTQ8Ofoz.js.map → SelectMenuSync-CF49L12-.js.map} +1 -1
- package/dist/{SelectOptions-DVSOJwRy.js → SelectOptions-C7skDFj2.js} +2 -2
- package/dist/{SelectOptions-DVSOJwRy.js.map → SelectOptions-C7skDFj2.js.map} +1 -1
- package/dist/{SelectTrigger-CHk0KO-P.js → SelectTrigger-BbneVXMz.js} +3 -3
- package/dist/{SelectTrigger-CHk0KO-P.js.map → SelectTrigger-BbneVXMz.js.map} +1 -1
- package/dist/SelectTrigger.js +1 -1
- package/dist/{SelectTriggerBase-B2S5SOZr.js → SelectTriggerBase-BjIOERXr.js} +3 -3
- package/dist/{SelectTriggerBase-B2S5SOZr.js.map → SelectTriggerBase-BjIOERXr.js.map} +1 -1
- package/dist/{Switch-onmiKoRd.js → Switch-B6bKmpwN.js} +3 -3
- package/dist/{Switch-onmiKoRd.js.map → Switch-B6bKmpwN.js.map} +1 -1
- package/dist/Switch.js +1 -1
- package/dist/Table.js +1 -1
- package/dist/{Text-BTzgTpqu.js → Text-w2gWn4K6.js} +2 -2
- package/dist/{Text-BTzgTpqu.js.map → Text-w2gWn4K6.js.map} +1 -1
- package/dist/Text.js +1 -1
- package/dist/{TextField-WTYZJlX3.js → TextField-BQsCh5Nb.js} +2 -2
- package/dist/{TextField-WTYZJlX3.js.map → TextField-BQsCh5Nb.js.map} +1 -1
- package/dist/{TextField-rVfctM1E.js → TextField-DJ3gEIP6.js} +3 -3
- package/dist/{TextField-rVfctM1E.js.map → TextField-DJ3gEIP6.js.map} +1 -1
- package/dist/TextField.js +1 -1
- package/dist/{Textarea-PXjppEQ6.js → Textarea-BK4Vf84K.js} +3 -3
- package/dist/{Textarea-PXjppEQ6.js.map → Textarea-BK4Vf84K.js.map} +1 -1
- package/dist/Textarea.js +1 -1
- package/dist/{ThemeProvider-D4KdGCaP.js → ThemeProvider-BC6wbuLU.js} +4 -9
- package/dist/{ThemeProvider-D4KdGCaP.js.map → ThemeProvider-BC6wbuLU.js.map} +1 -1
- package/dist/ThemeProvider.js +1 -1
- package/dist/ThemeProvider.module-D9pNGYjP.js +8 -0
- package/dist/ThemeProvider.module-D9pNGYjP.js.map +1 -0
- package/dist/{TimeField-BJPXIv6W.js → TimeField-B4IW2B_o.js} +4 -4
- package/dist/{TimeField-BJPXIv6W.js.map → TimeField-B4IW2B_o.js.map} +1 -1
- package/dist/TimeField.js +1 -1
- package/dist/Toast.js +2 -2
- package/dist/{Toaster-CoChsMD0.js → Toaster-BGY2IzF5.js} +53 -48
- package/dist/Toaster-BGY2IzF5.js.map +1 -0
- package/dist/{Toaster-DXLc86VD.js → Toaster-DTF9qnTy.js} +2 -2
- package/dist/{Toaster-DXLc86VD.js.map → Toaster-DTF9qnTy.js.map} +1 -1
- package/dist/{Toolbar-Bt3kShho.js → Toolbar-DObrJ_S5.js} +5 -4
- package/dist/{Toolbar-Bt3kShho.js.map → Toolbar-DObrJ_S5.js.map} +1 -1
- package/dist/{Toolbar-DaUKbbsL.js → Toolbar-DRJGKk8D.js} +6 -5
- package/dist/{Toolbar-DaUKbbsL.js.map → Toolbar-DRJGKk8D.js.map} +1 -1
- package/dist/Toolbar.js +2 -2
- package/dist/{ToolbarButtonToggle-BPu81Wuv.js → ToolbarButtonToggle-BCKgA8FE.js} +2 -2
- package/dist/{ToolbarButtonToggle-BPu81Wuv.js.map → ToolbarButtonToggle-BCKgA8FE.js.map} +1 -1
- package/dist/{Tooltip-yr1D06BE.js → Tooltip-DqS6xDUf.js} +27 -25
- package/dist/Tooltip-DqS6xDUf.js.map +1 -0
- package/dist/Tooltip.js +1 -1
- package/dist/TreeSelectField.d.ts +1 -0
- package/dist/TreeSelectField.js +2 -0
- package/dist/TreeSelectField.js.map +1 -0
- package/dist/TreeSelectFieldSync-Do5ffU0b.js +609 -0
- package/dist/TreeSelectFieldSync-Do5ffU0b.js.map +1 -0
- package/dist/TreeSelectFieldSync.css +173 -0
- package/dist/TreeSelectMenu.d.ts +1 -0
- package/dist/TreeSelectMenu.js +2 -0
- package/dist/TreeSelectMenu.js.map +1 -0
- package/dist/TreeSelectMenuSync-s05Ly6lj.js +413 -0
- package/dist/TreeSelectMenuSync-s05Ly6lj.js.map +1 -0
- package/dist/{YearlessDateInputWithPicker-BIcVgz-J.js → YearlessDateInputWithPicker-BHfFjCqE.js} +2 -2
- package/dist/{YearlessDateInputWithPicker-BIcVgz-J.js.map → YearlessDateInputWithPicker-BHfFjCqE.js.map} +1 -1
- package/dist/beta.js +15 -13
- package/dist/beta.js.map +1 -1
- package/dist/confirmationTypes-CG7xl50f.js +75 -0
- package/dist/confirmationTypes-CG7xl50f.js.map +1 -0
- package/dist/drag_indicator-BRHAPLSJ.js +6 -0
- package/dist/drag_indicator-BRHAPLSJ.js.map +1 -0
- package/dist/{filter-state-Bx3aYS1r.js → filter-state-CE8t3-Q7.js} +324 -84
- package/dist/filter-state-CE8t3-Q7.js.map +1 -0
- package/dist/{floating-ui.react-dom-CHrYz13o.js → floating-ui.react-dom-BIKT960u.js} +2 -2
- package/dist/{floating-ui.react-dom-CHrYz13o.js.map → floating-ui.react-dom-BIKT960u.js.map} +1 -1
- package/dist/{index-CukEaIHB.js → index-CKdC7x1S.js} +2 -2
- package/dist/{index-CukEaIHB.js.map → index-CKdC7x1S.js.map} +1 -1
- package/dist/{index-DVYRUKtW.js → index-DN_iqxhF.js} +79 -109
- package/dist/{index-DVYRUKtW.js.map → index-DN_iqxhF.js.map} +1 -1
- package/dist/index.js +44 -44
- package/dist/keyboard_arrow_left-CiE1n99w.js +6 -0
- package/dist/keyboard_arrow_left-CiE1n99w.js.map +1 -0
- package/dist/keyboard_arrow_right-DMloHg_F.js +6 -0
- package/dist/keyboard_arrow_right-DMloHg_F.js.map +1 -0
- package/dist/portalScopeClassNames-jlZkdug_.js +7 -0
- package/dist/portalScopeClassNames-jlZkdug_.js.map +1 -0
- package/dist/src/beta/components/FilterBar/FilterTextInput.d.ts +29 -0
- package/dist/src/beta/components/FilterBar/index.d.ts +1 -1
- package/dist/src/beta/components/FilterBar/internal/adapters/asyncTree.d.ts +6 -0
- package/dist/src/beta/components/FilterBar/internal/adapters/textInput.d.ts +3 -0
- package/dist/src/beta/components/FilterBar/internal/adapters/tree.d.ts +6 -0
- package/dist/src/beta/components/FilterBar/internal/adapters/types.d.ts +4 -1
- package/dist/src/beta/components/FilterBar/internal/types.d.ts +69 -12
- package/dist/src/beta/components/FilterBar/internal/utils/test.d.ts +4 -1
- package/dist/src/beta/components/Table/DataTable/DataTable.d.ts +8 -31
- package/dist/src/beta/components/Table/DataTable/internal/DataTableBody.d.ts +2 -19
- package/dist/src/beta/components/Table/DataTable/internal/DataTableBodyRow.d.ts +17 -13
- package/dist/src/beta/components/Table/DataTable/internal/context/focus/DTFocusContext.d.ts +1 -11
- package/dist/src/beta/components/Table/DataTable/internal/context/focus/useDTFocusDispatchContext.d.ts +0 -2
- package/dist/src/beta/components/Table/DataTable/internal/context/surface/DataTableSurfaceCoordinatorContext.d.ts +13 -0
- package/dist/src/beta/components/Table/DataTable/internal/context/surface/DataTableSurfaceCoordinatorProvider.d.ts +7 -0
- package/dist/src/beta/components/Table/DataTable/internal/context/surface/useDataTableSurfaceCoordinator.d.ts +1 -0
- package/dist/src/beta/components/Table/DataTable/internal/editable-cells/useCustomEditHelpers.d.ts +8 -6
- package/dist/src/beta/components/Table/DataTable/internal/useColumnOrder.d.ts +1 -0
- package/dist/src/beta/components/Table/createColumnHelper.d.ts +4 -2
- package/dist/src/beta/components/Table/formatters/htmlFormatter.d.ts +4 -2
- package/dist/src/beta/components/Table/formatters/htmlToMarkdown.d.ts +5 -2
- package/dist/src/beta/components/Table/formatters/markdownFormatter.d.ts +3 -2
- package/dist/src/beta/components/Table/types.d.ts +47 -30
- package/dist/src/beta/components/TreeSelectField/TreeSelectField.d.ts +68 -0
- package/dist/src/beta/components/TreeSelectField/TreeSelectFieldSync.d.ts +64 -0
- package/dist/src/beta/components/TreeSelectField/index.d.ts +3 -0
- package/dist/src/beta/components/TreeSelectField/internal/TreeContent.d.ts +31 -0
- package/dist/src/beta/components/TreeSelectField/internal/TreePanel.d.ts +56 -0
- package/dist/src/beta/components/TreeSelectField/internal/TreeRow.d.ts +56 -0
- package/dist/src/beta/components/TreeSelectField/internal/TreeSelectFieldInput.d.ts +82 -0
- package/dist/src/beta/components/TreeSelectField/internal/VirtualizedTreePanel.d.ts +57 -0
- package/dist/src/beta/components/TreeSelectField/internal/treeSync.d.ts +33 -0
- package/dist/src/beta/components/TreeSelectField/internal/treeUtils.d.ts +25 -0
- package/dist/src/beta/components/TreeSelectField/internal/types.d.ts +12 -0
- package/dist/src/beta/components/TreeSelectField/internal/useTree.d.ts +99 -0
- package/dist/src/beta/components/TreeSelectField/internal/useTreeCascade.d.ts +93 -0
- package/dist/src/beta/components/TreeSelectField/internal/useTreeKeyboard.d.ts +42 -0
- package/dist/src/beta/components/TreeSelectField/internal/useTreeLazyCascade.d.ts +56 -0
- package/dist/src/beta/components/TreeSelectField/internal/useTreeLoader.d.ts +58 -0
- package/dist/src/beta/components/TreeSelectField/stories/TreeSelectField.stories.data.d.ts +21 -0
- package/dist/src/beta/components/TreeSelectField/types.d.ts +124 -0
- package/dist/src/beta/components/TreeSelectMenu/TreeSelectMenu.d.ts +29 -0
- package/dist/src/beta/components/TreeSelectMenu/TreeSelectMenuSync.d.ts +65 -0
- package/dist/src/beta/components/TreeSelectMenu/index.d.ts +4 -0
- package/dist/src/beta/components/TreeSelectMenu/types.d.ts +103 -0
- package/dist/src/beta/components/index.d.ts +2 -0
- package/dist/src/components/Pagination/internal/Pagination.d.ts +1 -0
- package/dist/src/components/Pagination/internal/PaginationOverflowMenu.d.ts +12 -1
- package/dist/src/internal/components/Surface/Surface.d.ts +4 -0
- package/dist/src/internal/components/Surface/surfaceGeometry.d.ts +31 -0
- package/dist/src/internal/functions/portalScopeClassNames.d.ts +14 -0
- package/dist/src/internal/utils/arrayIdsEqual.d.ts +10 -0
- package/dist/src/internal/utils/index.d.ts +1 -0
- package/dist/{stripInlineMarkdown-C5DNxxwf.js → stripInlineMarkdown-C0bVmYgG.js} +2 -2
- package/dist/{stripInlineMarkdown-C5DNxxwf.js.map → stripInlineMarkdown-C0bVmYgG.js.map} +1 -1
- package/dist/{syncFilterUtils-BEKek64h.js → syncFilterUtils-CgHB-l6A.js} +35 -410
- package/dist/syncFilterUtils-CgHB-l6A.js.map +1 -0
- package/dist/syncFilterUtils.css +0 -180
- package/dist/treeSync-Cz3H08cr.js +1453 -0
- package/dist/treeSync-Cz3H08cr.js.map +1 -0
- package/dist/treeSync.css +40 -0
- package/dist/useAdaptiveView-CeYKH0Me.js +386 -0
- package/dist/useAdaptiveView-CeYKH0Me.js.map +1 -0
- package/dist/useAdaptiveView.css +181 -0
- package/dist/useChipLayout-BWZfKDgd.js +51 -0
- package/dist/useChipLayout-BWZfKDgd.js.map +1 -0
- package/dist/{useDrilldown-KZ9rRsXQ.js → useDrilldown-BJ2dHHKV.js} +2 -2
- package/dist/{useDrilldown-KZ9rRsXQ.js.map → useDrilldown-BJ2dHHKV.js.map} +1 -1
- package/dist/{useInfiniteCombobox-CknXmqlQ.js → useInfiniteCombobox-BqJm-CdN.js} +24 -24
- package/dist/useInfiniteCombobox-BqJm-CdN.js.map +1 -0
- package/dist/{useMenuInteraction-CpAOHSJu.js → useMenuInteraction-NEJXUD4I.js} +2 -114
- package/dist/useMenuInteraction-NEJXUD4I.js.map +1 -0
- package/dist/{useToggleSelection-B-Z80gy2.js → useToggleSelection-BGc5OiZF.js} +2 -2
- package/dist/{useToggleSelection-B-Z80gy2.js.map → useToggleSelection-BGc5OiZF.js.map} +1 -1
- package/package.json +5 -7
- package/dist/Avatar-FDHyqiCy.js.map +0 -1
- package/dist/DataTable-E8z0H8c7.js.map +0 -1
- package/dist/DndHandleButton-CHTOYRlq.js.map +0 -1
- package/dist/Menu-W0c-xKdX.js.map +0 -1
- package/dist/MultiSelectFieldSync-CXX2F0ru.js.map +0 -1
- package/dist/MultiSelectMenuSync-EKtvlL62.js.map +0 -1
- package/dist/Pagination-Bmd4JORe.js.map +0 -1
- package/dist/Popover-8mTJoMy7.js.map +0 -1
- package/dist/RichTextEditor-DstVbYch.js.map +0 -1
- package/dist/SavedFiltersButton-2qba2Cgu.js.map +0 -1
- package/dist/Toaster-CoChsMD0.js.map +0 -1
- package/dist/Tooltip-yr1D06BE.js.map +0 -1
- package/dist/filter-state-Bx3aYS1r.js.map +0 -1
- package/dist/keyboard_arrow_right-DZWNVytH.js +0 -8
- package/dist/keyboard_arrow_right-DZWNVytH.js.map +0 -1
- package/dist/syncFilterUtils-BEKek64h.js.map +0 -1
- package/dist/useInfiniteCombobox-CknXmqlQ.js.map +0 -1
- package/dist/useMenuInteraction-CpAOHSJu.js.map +0 -1
- /package/dist/{useMenuInteraction.css → MenuFooter.css} +0 -0
package/dist/src/beta/components/Table/DataTable/internal/editable-cells/useCustomEditHelpers.d.ts
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
import { CustomEditConfig, CustomEditController,
|
|
1
|
+
import { CustomEditConfig, CustomEditController, CustomEditDraftValue, CustomEditInitialValue, CustomEditPresentObjectValue, TableRow } from '../../../types';
|
|
2
2
|
type CustomObjectValue = object;
|
|
3
|
-
type CustomEditHelperValue<T, K extends keyof T> =
|
|
3
|
+
type CustomEditHelperValue<T, K extends keyof T> = CustomEditDraftValue<T, K>;
|
|
4
|
+
type CustomEditHelperPresentValue<T, K extends keyof T> = CustomEditPresentObjectValue<T, K>;
|
|
5
|
+
type CustomEditHelperInitialValue<T, K extends keyof T> = CustomEditInitialValue<T, K>;
|
|
4
6
|
/**
|
|
5
7
|
* State returned by custom edit controller helpers.
|
|
6
8
|
* @property {CustomEditController<TValue>} controller - Controller object exposed to custom edit renderers.
|
|
7
9
|
* @property {() => void} runInitialFocus - Runs the initial focus callback registered by the custom editor.
|
|
8
10
|
*/
|
|
9
|
-
export type CustomEditControllerState<TValue extends CustomObjectValue> = {
|
|
10
|
-
controller: CustomEditController<TValue>;
|
|
11
|
+
export type CustomEditControllerState<TValue extends CustomObjectValue, TDraftValue = Partial<TValue>, TInitialValue = TValue> = {
|
|
12
|
+
controller: CustomEditController<TValue, TDraftValue, TInitialValue>;
|
|
11
13
|
runInitialFocus: () => void;
|
|
12
14
|
};
|
|
13
15
|
/**
|
|
@@ -30,7 +32,7 @@ export type UseCustomEditHelperStateOptions<T, K extends keyof T> = UseCustomEdi
|
|
|
30
32
|
* @param options Row, column, edit configuration, and close callback for the editable cell.
|
|
31
33
|
* @returns Controller state with draft value helpers and initial focus runner.
|
|
32
34
|
*/
|
|
33
|
-
export declare function useCustomEditControllerState<T, K extends keyof T>({ row, columnId, editConfig, onCloseEditor, }: UseCustomEditControllerStateOptions<T, K>): CustomEditControllerState<CustomEditHelperValue<T, K>>;
|
|
35
|
+
export declare function useCustomEditControllerState<T, K extends keyof T>({ row, columnId, editConfig, onCloseEditor, }: UseCustomEditControllerStateOptions<T, K>): CustomEditControllerState<CustomEditHelperPresentValue<T, K>, CustomEditHelperValue<T, K>, CustomEditHelperInitialValue<T, K>>;
|
|
34
36
|
/**
|
|
35
37
|
* Backward-compatible alias for the custom edit controller hook.
|
|
36
38
|
*/
|
|
@@ -41,7 +43,7 @@ export declare const useCustomEditHelperState: typeof useCustomEditControllerSta
|
|
|
41
43
|
* @param options Row, column, edit configuration, and close callback for the editable cell.
|
|
42
44
|
* @returns Controller state with mutable draft value helpers and initial focus runner.
|
|
43
45
|
*/
|
|
44
|
-
export declare function createCustomEditControllerState<T, K extends keyof T>({ row, columnId, editConfig, onCloseEditor, }: UseCustomEditControllerStateOptions<T, K>): CustomEditControllerState<CustomEditHelperValue<T, K>>;
|
|
46
|
+
export declare function createCustomEditControllerState<T, K extends keyof T>({ row, columnId, editConfig, onCloseEditor, }: UseCustomEditControllerStateOptions<T, K>): CustomEditControllerState<CustomEditHelperPresentValue<T, K>, CustomEditHelperValue<T, K>, CustomEditHelperInitialValue<T, K>>;
|
|
45
47
|
/**
|
|
46
48
|
* Backward-compatible alias for the imperative custom edit controller factory.
|
|
47
49
|
*/
|
|
@@ -182,8 +182,10 @@ type ColumnConfig<T, K extends keyof T> = ReadOnlyColumnConfig<T, K> | TextEditC
|
|
|
182
182
|
* - `editConfig.mode: "number"` can only be used with number columns
|
|
183
183
|
* - `editConfig.mode: "multiselect"` can only be used with array columns
|
|
184
184
|
* - `editConfig.mode: "select"` options values must match the column's value type
|
|
185
|
-
* - `editConfig.mode: "custom"`
|
|
186
|
-
*
|
|
185
|
+
* - `editConfig.mode: "custom"` can only be used with structured object columns;
|
|
186
|
+
* drafts may be partial objects, plus null/undefined when declared by the row type
|
|
187
|
+
* - non-custom `editConfig.onChange` callbacks receive the correct value type;
|
|
188
|
+
* custom mode uses `onCommit` and `onDraftUpdate`
|
|
187
189
|
* - `getCellText` provides a simple sortable read string when `renderCell` returns rich content
|
|
188
190
|
*
|
|
189
191
|
* @template T - The type of the row data
|
|
@@ -3,8 +3,10 @@ import { ReactNode } from 'react';
|
|
|
3
3
|
* Formats an HTML string value for DataTable cells by converting to markdown
|
|
4
4
|
* and rendering through the markdown formatter.
|
|
5
5
|
*
|
|
6
|
-
* Supported HTML: strong, b, em, i, code, mark,
|
|
7
|
-
*
|
|
6
|
+
* Supported HTML: strong, b, em, i, code, mark, s, strike, del, h1, h2, h3,
|
|
7
|
+
* ul, ol, li, br, p. The u and span tags, along with text-align styling on
|
|
8
|
+
* p/h1-h3, are rendered as plain text (styling ignored, content preserved).
|
|
9
|
+
* Other unsupported tags and their content are dropped entirely.
|
|
8
10
|
* HTML entities are decoded to plain text.
|
|
9
11
|
*
|
|
10
12
|
* @param value - The HTML string to format
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Converts an HTML string to the markdown subset supported by markdownFormatter.
|
|
3
3
|
*
|
|
4
|
-
* Supported tags: strong, b, em, i, code, mark,
|
|
5
|
-
*
|
|
4
|
+
* Supported tags: strong, b, em, i, code, mark, s, strike, del, h1, h2, h3,
|
|
5
|
+
* ul, ol, li, br, p.
|
|
6
|
+
* The u and span tags, along with text-align styling on p/h1-h3, are rendered
|
|
7
|
+
* as plain text: their styling is ignored but their content is preserved.
|
|
8
|
+
* Other unsupported tags and their content are dropped entirely.
|
|
6
9
|
* HTML entities are decoded to plain text.
|
|
7
10
|
*
|
|
8
11
|
* @param value - The HTML string to convert
|
|
@@ -2,8 +2,9 @@ import { ReactNode } from 'react';
|
|
|
2
2
|
/**
|
|
3
3
|
* Formats a string value as markdown content for DataTable cells.
|
|
4
4
|
*
|
|
5
|
-
* Supports inline constructs (bold, italic, bold+italic,
|
|
6
|
-
* and block-level
|
|
5
|
+
* Supports inline constructs (bold, italic, bold+italic, strikethrough, inline
|
|
6
|
+
* code, highlight) and block-level constructs: headings (`# ` through `### `)
|
|
7
|
+
* and flat lists (unordered with `- `, ordered with `N. `).
|
|
7
8
|
*
|
|
8
9
|
* @param value - The markdown string to format
|
|
9
10
|
* @returns Formatted React nodes, or null for empty/null/undefined values
|
|
@@ -61,9 +61,19 @@ type BaseEditConfig<T, K extends keyof T> = {
|
|
|
61
61
|
*/
|
|
62
62
|
onChange: (value: T[K], rowId: string) => void;
|
|
63
63
|
};
|
|
64
|
-
type
|
|
65
|
-
type
|
|
66
|
-
|
|
64
|
+
type CustomEditInvalidPresentValue<TValue> = Extract<NonNullable<TValue>, readonly unknown[]> | Extract<NonNullable<TValue>, (...args: never[]) => unknown> | Exclude<NonNullable<TValue>, object>;
|
|
65
|
+
type CustomEditPresentObjectValueForValue<TValue> = [
|
|
66
|
+
CustomEditInvalidPresentValue<TValue>
|
|
67
|
+
] extends [never] ? NonNullable<TValue> extends object ? NonNullable<TValue> : never : never;
|
|
68
|
+
type CustomEditPartialPresentValue<TValue extends object> = TValue extends object ? Partial<TValue> : never;
|
|
69
|
+
export type CustomEditAllowedNullishValue<TValue> = Extract<TValue, null | undefined>;
|
|
70
|
+
export type CustomEditPresentObjectValue<T, K extends keyof T> = CustomEditPresentObjectValueForValue<T[K]>;
|
|
71
|
+
export type CustomEditDraftValueForValue<TValue> = [
|
|
72
|
+
CustomEditPresentObjectValueForValue<TValue>
|
|
73
|
+
] extends [never] ? never : CustomEditPartialPresentValue<CustomEditPresentObjectValueForValue<TValue>> | CustomEditAllowedNullishValue<TValue>;
|
|
74
|
+
export type CustomEditDraftValue<T, K extends keyof T> = CustomEditDraftValueForValue<T[K]>;
|
|
75
|
+
export type CustomEditInitialValue<T, K extends keyof T> = T[K];
|
|
76
|
+
export type CustomEditFieldValueUpdater<TValue extends object, TField extends keyof TValue> = TValue[TField] | ((previousValue: TValue[TField] | undefined, draftValue: Partial<TValue>) => TValue[TField]);
|
|
67
77
|
export type CustomEditCloseReason = "submit" | "escape" | "outside-click" | "close-button" | "programmatic";
|
|
68
78
|
export type CustomEditValidation<TValue extends object> = {
|
|
69
79
|
/**
|
|
@@ -97,7 +107,7 @@ export type CustomEditSurfaceConfig = {
|
|
|
97
107
|
*/
|
|
98
108
|
onKeyDown?: (event: ReactKeyboardEvent<HTMLDivElement>) => void;
|
|
99
109
|
};
|
|
100
|
-
export type CustomEditCloseRequest<TValue extends object> = {
|
|
110
|
+
export type CustomEditCloseRequest<TValue extends object, TDraftValue = Partial<TValue>, TInitialValue = TValue> = {
|
|
101
111
|
/**
|
|
102
112
|
* Why the close was requested.
|
|
103
113
|
*/
|
|
@@ -105,11 +115,11 @@ export type CustomEditCloseRequest<TValue extends object> = {
|
|
|
105
115
|
/**
|
|
106
116
|
* Draft value at the time the request is evaluated.
|
|
107
117
|
*/
|
|
108
|
-
draftValue:
|
|
118
|
+
draftValue: TDraftValue;
|
|
109
119
|
/**
|
|
110
120
|
* Original committed value when editing began.
|
|
111
121
|
*/
|
|
112
|
-
initialValue:
|
|
122
|
+
initialValue: TInitialValue;
|
|
113
123
|
/**
|
|
114
124
|
* Whether the draft differs from the initial value.
|
|
115
125
|
*/
|
|
@@ -119,21 +129,23 @@ export type CustomEditCloseRequest<TValue extends object> = {
|
|
|
119
129
|
*/
|
|
120
130
|
validation: CustomEditValidation<TValue>;
|
|
121
131
|
};
|
|
122
|
-
export type CustomEditController<TValue extends object> = {
|
|
132
|
+
export type CustomEditController<TValue extends object, TDraftValue = Partial<TValue>, TInitialValue = TValue> = {
|
|
123
133
|
/**
|
|
124
|
-
* Current local draft
|
|
134
|
+
* Current local draft. Custom editors may hold a partial object, or a
|
|
135
|
+
* row-type-supported nullish value.
|
|
125
136
|
*/
|
|
126
|
-
draftValue:
|
|
137
|
+
draftValue: TDraftValue;
|
|
127
138
|
/**
|
|
128
139
|
* Original value before editing began.
|
|
129
140
|
*/
|
|
130
|
-
initialValue:
|
|
141
|
+
initialValue: TInitialValue;
|
|
131
142
|
/**
|
|
132
143
|
* Whether the draft differs from the initial value.
|
|
133
144
|
*/
|
|
134
145
|
isDirty: boolean;
|
|
135
146
|
/**
|
|
136
|
-
* Ordered list of changed fields.
|
|
147
|
+
* Ordered list of changed object fields. Whole-value nullish changes are
|
|
148
|
+
* represented by `isDirty`, not by synthetic field names.
|
|
137
149
|
*/
|
|
138
150
|
changedFields: ReadonlyArray<keyof TValue>;
|
|
139
151
|
/**
|
|
@@ -141,13 +153,15 @@ export type CustomEditController<TValue extends object> = {
|
|
|
141
153
|
*/
|
|
142
154
|
validation: CustomEditValidation<TValue>;
|
|
143
155
|
/**
|
|
144
|
-
* Replace the entire draft value.
|
|
156
|
+
* Replace the entire draft value. Null and undefined are accepted only when
|
|
157
|
+
* the column's row value type includes that nullish value.
|
|
145
158
|
*/
|
|
146
|
-
setDraftValue: (nextValue: SetStateAction<
|
|
159
|
+
setDraftValue: (nextValue: SetStateAction<TDraftValue>) => TDraftValue;
|
|
147
160
|
/**
|
|
148
|
-
* Update a single field in the current draft value.
|
|
161
|
+
* Update a single field in the current draft value. If the current draft is
|
|
162
|
+
* nullish, a partial object containing this field is synthesized.
|
|
149
163
|
*/
|
|
150
|
-
setDraftField: <TField extends keyof TValue>(field: TField, nextValue: CustomEditFieldValueUpdater<TValue, TField>) =>
|
|
164
|
+
setDraftField: <TField extends keyof TValue>(field: TField, nextValue: CustomEditFieldValueUpdater<TValue, TField>) => TDraftValue;
|
|
151
165
|
/**
|
|
152
166
|
* Submit the current draft and close the editor.
|
|
153
167
|
*/
|
|
@@ -197,41 +211,43 @@ export type CustomEditRenderContext<T, K extends keyof T> = {
|
|
|
197
211
|
*/
|
|
198
212
|
rowId: string;
|
|
199
213
|
/**
|
|
200
|
-
*
|
|
214
|
+
* Committed value for the cell, exactly as declared by the row type.
|
|
201
215
|
*/
|
|
202
216
|
value: T[K];
|
|
203
217
|
/**
|
|
204
218
|
* Typed controller for draft mutation, validation, focus, and lifecycle control.
|
|
205
219
|
*/
|
|
206
|
-
controller: CustomEditController<
|
|
220
|
+
controller: CustomEditController<CustomEditPresentObjectValue<T, K>, CustomEditDraftValue<T, K>, CustomEditInitialValue<T, K>>;
|
|
207
221
|
};
|
|
208
222
|
/**
|
|
209
223
|
* Edit configuration for custom mode cells.
|
|
210
|
-
*
|
|
211
|
-
*
|
|
224
|
+
* Custom mode is for structured object-valued columns. The committed read
|
|
225
|
+
* value remains `T[K]`; editable drafts may be partial objects, plus `null`
|
|
226
|
+
* or `undefined` when those values are part of `T[K]`.
|
|
212
227
|
*
|
|
213
228
|
* @template T - The row data type
|
|
214
229
|
* @template K - The column key
|
|
215
230
|
*/
|
|
216
231
|
export type CustomEditConfig<T, K extends keyof T> = [
|
|
217
|
-
|
|
232
|
+
CustomEditPresentObjectValue<T, K>
|
|
218
233
|
] extends [never] ? never : Omit<BaseEditConfig<T, K>, "onChange"> & {
|
|
219
234
|
/**
|
|
220
235
|
* Custom edit mode - renders a multi-field editor surface.
|
|
221
236
|
*/
|
|
222
237
|
mode: "custom";
|
|
223
238
|
/**
|
|
224
|
-
* Callback fired when the draft is committed.
|
|
239
|
+
* Callback fired when the current draft is committed. The value is the
|
|
240
|
+
* exact draft state: partial object, full object, or allowed nullish value.
|
|
225
241
|
*/
|
|
226
|
-
onCommit: (value: T
|
|
242
|
+
onCommit: (value: CustomEditDraftValue<T, K>, rowId: string) => void;
|
|
227
243
|
/**
|
|
228
|
-
* Callback fired on every local draft mutation.
|
|
244
|
+
* Callback fired on every local draft mutation with the exact draft state.
|
|
229
245
|
*/
|
|
230
|
-
onDraftUpdate?: (value: T
|
|
246
|
+
onDraftUpdate?: (value: CustomEditDraftValue<T, K>, rowId: string) => void;
|
|
231
247
|
/**
|
|
232
248
|
* Optional validation metadata derived from the current draft.
|
|
233
249
|
*/
|
|
234
|
-
validateDraft?: (draftValue:
|
|
250
|
+
validateDraft?: (draftValue: CustomEditDraftValue<T, K>, rowId: string) => CustomEditValidation<CustomEditPresentObjectValue<T, K>> | undefined;
|
|
235
251
|
/**
|
|
236
252
|
* When true, submit-style close requests are blocked while validation contains
|
|
237
253
|
* a form error or any field error. Defaults to `false`.
|
|
@@ -241,13 +257,14 @@ export type CustomEditConfig<T, K extends keyof T> = [
|
|
|
241
257
|
* Optional close interception hook.
|
|
242
258
|
* Return `false` to keep the editor open.
|
|
243
259
|
*/
|
|
244
|
-
onRequestClose?: (request: CustomEditCloseRequest<
|
|
260
|
+
onRequestClose?: (request: CustomEditCloseRequest<CustomEditPresentObjectValue<T, K>, CustomEditDraftValue<T, K>, CustomEditInitialValue<T, K>>) => boolean | void;
|
|
245
261
|
/**
|
|
246
262
|
* Optional surface presentation overrides.
|
|
247
263
|
*/
|
|
248
264
|
surface?: CustomEditSurfaceConfig;
|
|
249
265
|
/**
|
|
250
|
-
* Consumer-owned renderer for the custom editor contents.
|
|
266
|
+
* Consumer-owned renderer for the custom editor contents. Editors should
|
|
267
|
+
* handle partial and row-type-supported nullish draft values defensively.
|
|
251
268
|
*/
|
|
252
269
|
renderEditor: (context: CustomEditRenderContext<T, K>) => ReactNode;
|
|
253
270
|
};
|
|
@@ -601,9 +618,9 @@ export type BooleanEditConfig<T, K extends keyof T> = BaseEditConfig<T, K> & {
|
|
|
601
618
|
* // Custom editing keeps renderCell as the read path
|
|
602
619
|
* editConfig: {
|
|
603
620
|
* mode: "custom",
|
|
604
|
-
*
|
|
605
|
-
*
|
|
606
|
-
* renderEditor: ({
|
|
621
|
+
* onCommit: (draft, rowId) => saveDraft(draft, rowId),
|
|
622
|
+
* onDraftUpdate: (draft, rowId) => previewDraft(draft, rowId),
|
|
623
|
+
* renderEditor: ({ controller }) => renderAddressEditor(controller)
|
|
607
624
|
* }
|
|
608
625
|
* ```
|
|
609
626
|
*/
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { TreeSelectFieldHandle, TreeSelectFieldNode } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* TreeSelectField component for selecting one or more nodes from a hierarchical tree structure.
|
|
4
|
+
*
|
|
5
|
+
* Features:
|
|
6
|
+
* - Async tree data loading via loadOptions callback with optional LRU caching
|
|
7
|
+
* - Single-select and multi-select modes
|
|
8
|
+
* - Multi-select chips display with optional singleRow and maxChips limits
|
|
9
|
+
* - Search filtering that preserves tree structure
|
|
10
|
+
* - Cascading parent/child selection (linked mode) or independent node selection
|
|
11
|
+
* - Lazy branch expansion with on-demand children loading
|
|
12
|
+
* - Virtualized rendering for large trees via the virtualize prop
|
|
13
|
+
* - Full keyboard navigation (ArrowDown/Up, ArrowRight/Left, Enter, Home/End, Escape, Backspace)
|
|
14
|
+
* - Imperative handle for clearCache, invalidate, expandAll, collapseAll
|
|
15
|
+
* - Accessible label, error, hint, description, and warning helper text
|
|
16
|
+
* - Prefix and suffix slot support
|
|
17
|
+
* - Supports layout utilities for positioning and spacing
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* <TreeSelectField
|
|
21
|
+
* label="Select Categories"
|
|
22
|
+
* value={selected}
|
|
23
|
+
* onSelectedOptionsChange={setSelected}
|
|
24
|
+
* loadOptions={async (search) => fetchCategories(search)}
|
|
25
|
+
* />
|
|
26
|
+
*/
|
|
27
|
+
export declare const TreeSelectField: import('react').ForwardRefExoticComponent<{
|
|
28
|
+
id?: string;
|
|
29
|
+
label: string;
|
|
30
|
+
labelNode?: import('react').ReactNode;
|
|
31
|
+
hideLabel?: boolean;
|
|
32
|
+
placeholder?: string;
|
|
33
|
+
size?: Extract<import('../../..').Size, "small" | "medium" | "large">;
|
|
34
|
+
displayMenuAs?: "auto" | "popover" | "dialog";
|
|
35
|
+
error?: boolean | string | string[] | import('react').ReactElement;
|
|
36
|
+
hint?: import('react').ReactElement | string;
|
|
37
|
+
moreInfo?: import('react').ReactNode;
|
|
38
|
+
labelAiMark?: import('../../..').AiMarkWithTooltipOrPopoverProps["aiMark"];
|
|
39
|
+
description?: import('react').ReactElement | string;
|
|
40
|
+
warning?: string | string[];
|
|
41
|
+
required?: boolean;
|
|
42
|
+
disabled?: boolean;
|
|
43
|
+
readOnly?: boolean;
|
|
44
|
+
prefix?: string | import('react').ReactElement;
|
|
45
|
+
suffix?: string | import('react').ReactElement;
|
|
46
|
+
className?: string;
|
|
47
|
+
style?: import('react').CSSProperties;
|
|
48
|
+
disableSearch?: boolean;
|
|
49
|
+
debounceMs?: number;
|
|
50
|
+
searchValue?: string;
|
|
51
|
+
onSearchChange?: (v: string) => void;
|
|
52
|
+
singleRow?: boolean;
|
|
53
|
+
maxChips?: number;
|
|
54
|
+
virtualize?: boolean;
|
|
55
|
+
value: import('./types').TreeSelectFieldValue[];
|
|
56
|
+
onSelectedOptionsChange: (nodes: import('./types').TreeSelectFieldValue[]) => void;
|
|
57
|
+
selectionMode?: "single" | "independent" | "linked";
|
|
58
|
+
valueConsistsOf?: import('./types').TreeSelectFieldValueConsistsOf;
|
|
59
|
+
defaultExpandLevel?: number;
|
|
60
|
+
expandedIds?: Set<string | number>;
|
|
61
|
+
onExpandedIdsChange?: (ids: Set<string | number>) => void;
|
|
62
|
+
loadOptions: (searchValue: string, parentNode?: TreeSelectFieldNode) => TreeSelectFieldNode[] | Promise<TreeSelectFieldNode[]>;
|
|
63
|
+
cache?: {
|
|
64
|
+
enabled?: boolean;
|
|
65
|
+
maxSize?: number;
|
|
66
|
+
};
|
|
67
|
+
initialLoad?: "auto" | "immediate" | "open";
|
|
68
|
+
} & import('../../..').LayoutUtilProps & import('react').RefAttributes<TreeSelectFieldHandle>>;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { MatchSorterOptions } from 'match-sorter';
|
|
2
|
+
import { TreeSelectFieldNode, TreeSelectFieldProps } from './types';
|
|
3
|
+
import { TreeSyncFilterFn } from './internal/treeSync';
|
|
4
|
+
export type { TreeSyncFilterFn };
|
|
5
|
+
/**
|
|
6
|
+
* Props for the TreeSelectFieldSync component.
|
|
7
|
+
* @property options - The static tree options to display.
|
|
8
|
+
* @property filter - Custom filter function or MatchSorterOptions to control how nodes are filtered during search.
|
|
9
|
+
* By default, filters by label and searchText using match-sorter, preserving parent nodes of any match.
|
|
10
|
+
* @extends TreeSelectFieldProps
|
|
11
|
+
*/
|
|
12
|
+
export type TreeSelectFieldSyncProps = Omit<TreeSelectFieldProps, "loadOptions" | "debounceMs" | "cache" | "initialLoad"> & {
|
|
13
|
+
/**
|
|
14
|
+
* The static tree options to display in the field.
|
|
15
|
+
*/
|
|
16
|
+
options: TreeSelectFieldNode[];
|
|
17
|
+
/**
|
|
18
|
+
* Controls how options are filtered when the user types a search value.
|
|
19
|
+
* Can be a function that returns nodes in the desired display order,
|
|
20
|
+
* or a MatchSorterOptions object to customize the default match-sorter behavior.
|
|
21
|
+
*
|
|
22
|
+
* By default, nodes are filtered by `label` and `searchText` using match-sorter,
|
|
23
|
+
* and parents of matching nodes are preserved in the tree structure.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* <TreeSelectFieldSync
|
|
27
|
+
* options={options}
|
|
28
|
+
* filter={(nodes, searchValue) => {
|
|
29
|
+
* return nodes.filter((node) =>
|
|
30
|
+
* node.label.toLowerCase().includes(searchValue.toLowerCase())
|
|
31
|
+
* );
|
|
32
|
+
* }}
|
|
33
|
+
* />
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* <TreeSelectFieldSync
|
|
37
|
+
* options={options}
|
|
38
|
+
* filter={{ keys: ["label"] }}
|
|
39
|
+
* />
|
|
40
|
+
*/
|
|
41
|
+
filter?: TreeSyncFilterFn | MatchSorterOptions<TreeSelectFieldNode>;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* TreeSelectFieldSync is a simplified wrapper around TreeSelectField for static (non-async) tree data.
|
|
45
|
+
*
|
|
46
|
+
* Features:
|
|
47
|
+
* - Accepts static `options` instead of `loadOptions`.
|
|
48
|
+
* - Performs client-side filtering with tree-structure awareness (parents of matches are preserved).
|
|
49
|
+
* - Accepts a custom filter function or MatchSorterOptions to customize filtering behavior.
|
|
50
|
+
* - Invalidates the field when the options reference changes.
|
|
51
|
+
* - Supports all other props of TreeSelectField.
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* <TreeSelectFieldSync
|
|
55
|
+
* label="Select location"
|
|
56
|
+
* options={locationTree}
|
|
57
|
+
* value={selected}
|
|
58
|
+
* onSelectedOptionsChange={setSelected}
|
|
59
|
+
* />
|
|
60
|
+
*/
|
|
61
|
+
export declare const TreeSelectFieldSync: {
|
|
62
|
+
(props: TreeSelectFieldSyncProps): import("react/jsx-runtime").JSX.Element;
|
|
63
|
+
displayName: string;
|
|
64
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { TreePanelProps } from './TreePanel';
|
|
2
|
+
/**
|
|
3
|
+
* Props for the TreeContent component.
|
|
4
|
+
*
|
|
5
|
+
* @property loading - Whether the tree is currently loading data; renders a spinner while true.
|
|
6
|
+
* @property hasNoVisibleNodes - True when there are no nodes to render (e.g. a search returned no matches); renders an empty-state message.
|
|
7
|
+
* @property virtualize - When true, renders the virtualized panel; otherwise renders the standard panel.
|
|
8
|
+
* @property panelProps - Props forwarded to the underlying TreePanel or VirtualizedTreePanel.
|
|
9
|
+
*/
|
|
10
|
+
export type TreeContentProps = {
|
|
11
|
+
loading: boolean;
|
|
12
|
+
hasNoVisibleNodes: boolean;
|
|
13
|
+
virtualize?: boolean;
|
|
14
|
+
panelProps: TreePanelProps;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Renders the body of a tree select popover or dialog: a centered spinner
|
|
18
|
+
* while loading, a "No match found" message when there are no visible
|
|
19
|
+
* nodes, or the (optionally virtualized) tree panel.
|
|
20
|
+
*
|
|
21
|
+
* Used by both TreeSelectField and TreeSelectMenu to keep the three
|
|
22
|
+
* states consistent across the field's dialog and popover branches and
|
|
23
|
+
* the menu's render path.
|
|
24
|
+
*
|
|
25
|
+
* Features:
|
|
26
|
+
* - Centered medium Spinner while loading
|
|
27
|
+
* - "No match found" empty state (small, subdued text)
|
|
28
|
+
* - Switches between TreePanel and VirtualizedTreePanel via the `virtualize` flag
|
|
29
|
+
* - Forwards a ref to the underlying tree panel for focus management
|
|
30
|
+
*/
|
|
31
|
+
export declare const TreeContent: import('react').ForwardRefExoticComponent<TreeContentProps & import('react').RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { TreeSelectFieldNode } from '../types';
|
|
2
|
+
import { VisibleNode } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Props for the TreePanel component.
|
|
5
|
+
* @property {VisibleNode[]} visibleNodes - Flat list of nodes currently visible in the tree.
|
|
6
|
+
* @property {(id: string | number) => "checked" | "unchecked" | "indeterminate" | "loading"} getCheckState - Returns the check state for a given node id.
|
|
7
|
+
* @property {(id: string | number) => void} toggleNode - Toggles the selection state of a node.
|
|
8
|
+
* @property {(id: string | number) => void} toggleExpand - Toggles the expanded state of a branch node.
|
|
9
|
+
* @property {(id: string | number) => Record<string, unknown>} getTreeItemProps - Returns ARIA/accessibility props for a tree item.
|
|
10
|
+
* @property {Record<string, unknown>} treeProps - Props to spread onto the tree container element.
|
|
11
|
+
* @property {string | undefined} activeDescendantId - The id of the currently active/focused tree item.
|
|
12
|
+
* @property {boolean} [branchesSelectable] - When true, branch nodes can be selected.
|
|
13
|
+
* @property {boolean} [leavesSelectable] - When true, leaf nodes can be selected.
|
|
14
|
+
* @property {boolean} [emptyBranchesSelectable] - When true, empty branches can be selected.
|
|
15
|
+
* @property {(node: TreeSelectFieldNode) => void} [onLoadChildren] - Callback to trigger lazy loading of children.
|
|
16
|
+
*/
|
|
17
|
+
export type TreePanelProps = {
|
|
18
|
+
visibleNodes: VisibleNode[];
|
|
19
|
+
getCheckState: (id: string | number) => "checked" | "unchecked" | "indeterminate" | "loading";
|
|
20
|
+
toggleNode: (id: string | number) => void;
|
|
21
|
+
toggleExpand: (id: string | number) => void;
|
|
22
|
+
getTreeItemProps: (id: string | number) => Record<string, unknown>;
|
|
23
|
+
treeProps: Record<string, unknown>;
|
|
24
|
+
activeDescendantId: string | undefined;
|
|
25
|
+
branchesSelectable?: boolean;
|
|
26
|
+
leavesSelectable?: boolean;
|
|
27
|
+
emptyBranchesSelectable?: boolean;
|
|
28
|
+
readOnly?: boolean;
|
|
29
|
+
onHover?: (id: string | number) => void;
|
|
30
|
+
onLoadChildren?: (node: TreeSelectFieldNode) => void;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* TreePanel component that renders the tree dropdown content.
|
|
34
|
+
*
|
|
35
|
+
* Features:
|
|
36
|
+
* - Renders a flat list of visible nodes with depth-based indentation
|
|
37
|
+
* - Supports expand/collapse controls for branch nodes
|
|
38
|
+
* - Shows loading indicator for lazily-loaded branches
|
|
39
|
+
* - Checkboxes for multi-select mode (hidden in single-select mode)
|
|
40
|
+
* - Optional breadcrumb display for flattened search results
|
|
41
|
+
* - Optional child count display for branch nodes
|
|
42
|
+
* - Full accessibility support with ARIA tree/treeitem roles
|
|
43
|
+
* - Focusable container via forwardRef
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* <TreePanel
|
|
47
|
+
* visibleNodes={visibleNodes}
|
|
48
|
+
* getCheckState={getCheckState}
|
|
49
|
+
* toggleNode={toggleNode}
|
|
50
|
+
* toggleExpand={toggleExpand}
|
|
51
|
+
* getTreeItemProps={getTreeItemProps}
|
|
52
|
+
* treeProps={treeProps}
|
|
53
|
+
* activeDescendantId={activeDescendantId}
|
|
54
|
+
* />
|
|
55
|
+
*/
|
|
56
|
+
export declare const TreePanel: import('react').ForwardRefExoticComponent<TreePanelProps & import('react').RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { TreeSelectFieldNode } from '../types';
|
|
2
|
+
import { VisibleNode } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Props for the TreeRow component.
|
|
5
|
+
* @property {VisibleNode} visible - The visible node data including depth, expand state, and branch info.
|
|
6
|
+
* @property {"checked" | "unchecked" | "indeterminate"} checkState - The checkbox state for this row.
|
|
7
|
+
* @property {Record<string, unknown>} itemProps - ARIA/accessibility props from getTreeItemProps.
|
|
8
|
+
* @property {boolean} [branchesSelectable] - When true, branch nodes can be selected. Defaults to true.
|
|
9
|
+
* @property {boolean} [leavesSelectable] - When true, leaf nodes can be selected. Defaults to true.
|
|
10
|
+
* @property {boolean} [emptyBranchesSelectable] - When true, empty branches (children: []) can be selected. Defaults to true.
|
|
11
|
+
* @property {boolean} [isActive] - When true, applies a highlight background for keyboard focus.
|
|
12
|
+
* @property {(id: string | number) => void} onToggleNode - Callback to toggle selection of the node.
|
|
13
|
+
* @property {(id: string | number) => void} onToggleExpand - Callback to toggle expansion of a branch node.
|
|
14
|
+
* @property {(node: TreeSelectFieldNode) => void} [onLoadChildren] - Callback to trigger lazy loading of children.
|
|
15
|
+
* @property {number} depth - Depth of the node in the tree, used to calculate indentation.
|
|
16
|
+
*/
|
|
17
|
+
export type TreeRowProps = {
|
|
18
|
+
visible: VisibleNode;
|
|
19
|
+
checkState: "checked" | "unchecked" | "indeterminate" | "loading";
|
|
20
|
+
itemProps: Record<string, unknown>;
|
|
21
|
+
branchesSelectable?: boolean;
|
|
22
|
+
leavesSelectable?: boolean;
|
|
23
|
+
emptyBranchesSelectable?: boolean;
|
|
24
|
+
readOnly?: boolean;
|
|
25
|
+
isActive?: boolean;
|
|
26
|
+
onToggleNode: (id: string | number) => void;
|
|
27
|
+
onToggleExpand: (id: string | number) => void;
|
|
28
|
+
onHover?: (id: string | number) => void;
|
|
29
|
+
onLoadChildren?: (node: TreeSelectFieldNode) => void;
|
|
30
|
+
depth: number;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* TreeRow renders a single row in the tree dropdown.
|
|
34
|
+
*
|
|
35
|
+
* Features:
|
|
36
|
+
* - Depth-based indentation via inline paddingInlineStart
|
|
37
|
+
* - Expand/collapse icon using Icon component with keyboard_arrow_right/down icons
|
|
38
|
+
* - Spinning icon animation for lazy-loading branch nodes
|
|
39
|
+
* - Checkbox in multi-select mode, hidden in single-select mode
|
|
40
|
+
* - Rich content support via node.content (title, description, chips, avatar, icon)
|
|
41
|
+
* - Label text with overflow ellipsis
|
|
42
|
+
* - Disabled state with reduced opacity and default cursor
|
|
43
|
+
* - Active (keyboard focus) state with highlight background
|
|
44
|
+
* - Full ARIA semantics via spread itemProps
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* <TreeRow
|
|
48
|
+
* visible={visibleNode}
|
|
49
|
+
* checkState={getCheckState(visibleNode.node.id)}
|
|
50
|
+
* itemProps={getTreeItemProps(visibleNode.node.id)}
|
|
51
|
+
* onToggleNode={toggleNode}
|
|
52
|
+
* onToggleExpand={toggleExpand}
|
|
53
|
+
* depth={visibleNode.depth}
|
|
54
|
+
* />
|
|
55
|
+
*/
|
|
56
|
+
export declare function TreeRow({ visible, checkState, itemProps, branchesSelectable, leavesSelectable, emptyBranchesSelectable, readOnly, isActive, onToggleNode, onToggleExpand, onHover, onLoadChildren, depth, }: TreeRowProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { ReactElement, RefObject } from 'react';
|
|
2
|
+
import { TreeSelectFieldValue } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Props for the TreeSelectFieldInput component.
|
|
5
|
+
* @property {string} [id] - HTML id attribute for the input element
|
|
6
|
+
* @property {string} [placeholder] - Placeholder text displayed when no options are selected
|
|
7
|
+
* @property {"small" | "medium" | "large"} [size] - Size variant of the input
|
|
8
|
+
* @property {boolean} [disabled] - Disables the input entirely
|
|
9
|
+
* @property {boolean} [readOnly] - Cannot be modified but remains interactive
|
|
10
|
+
* @property {boolean} [error] - Shows error styling on the input when true
|
|
11
|
+
* @property {boolean} [single] - When true, renders single-select text display instead of chips
|
|
12
|
+
* @property {boolean} [singleRow] - When true, restricts chip display to a single row
|
|
13
|
+
* @property {number} [maxChips] - Maximum number of chips to display before showing +N indicator
|
|
14
|
+
* @property {string | ReactElement} [prefix] - Content to display before the input area
|
|
15
|
+
* @property {string | ReactElement} [suffix] - Content to display after the input area
|
|
16
|
+
* @property {TreeSelectFieldValue[]} selectedOptions - Array of currently selected options
|
|
17
|
+
* @property {(option: TreeSelectFieldValue) => void} onRemoveOption - Callback fired when a chip is removed
|
|
18
|
+
* @property {RefObject<HTMLInputElement>} [inputRef] - Ref for the input element
|
|
19
|
+
* @property {RefObject<HTMLDivElement>} [inputWrapperRef] - Ref for the input wrapper div element
|
|
20
|
+
* @property {string} [searchValue] - Current search input value
|
|
21
|
+
* @property {(e: React.ChangeEvent<HTMLInputElement>) => void} [onSearchChange] - Callback fired when search input changes
|
|
22
|
+
* @property {(e: React.KeyboardEvent) => void} [onInputKeyDown] - Callback fired on key down in the search input
|
|
23
|
+
* @property {() => void} [onWrapperClick] - Callback fired when the input wrapper is clicked
|
|
24
|
+
* @property {boolean} [isOpen] - Whether the dropdown is currently open
|
|
25
|
+
* @property {boolean} [disableSearch] - When true, hides the search input
|
|
26
|
+
* @property {Record<string, unknown>} [comboboxProps] - Additional ARIA props for the combobox input role
|
|
27
|
+
*/
|
|
28
|
+
export type TreeSelectFieldInputProps = {
|
|
29
|
+
id?: string;
|
|
30
|
+
placeholder?: string;
|
|
31
|
+
size?: "small" | "medium" | "large";
|
|
32
|
+
disabled?: boolean;
|
|
33
|
+
readOnly?: boolean;
|
|
34
|
+
error?: boolean;
|
|
35
|
+
single?: boolean;
|
|
36
|
+
singleRow?: boolean;
|
|
37
|
+
maxChips?: number;
|
|
38
|
+
prefix?: string | ReactElement;
|
|
39
|
+
suffix?: string | ReactElement;
|
|
40
|
+
selectedOptions: TreeSelectFieldValue[];
|
|
41
|
+
onRemoveOption: (option: TreeSelectFieldValue) => void;
|
|
42
|
+
inputRef?: RefObject<HTMLInputElement>;
|
|
43
|
+
inputWrapperRef?: RefObject<HTMLDivElement>;
|
|
44
|
+
searchValue?: string;
|
|
45
|
+
onSearchChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;
|
|
46
|
+
onInputKeyDown?: (e: React.KeyboardEvent) => void;
|
|
47
|
+
onWrapperClick?: () => void;
|
|
48
|
+
isOpen?: boolean;
|
|
49
|
+
ariaControls?: string;
|
|
50
|
+
disableSearch?: boolean;
|
|
51
|
+
comboboxProps?: Record<string, unknown>;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Internal input component for the TreeSelectField that renders the trigger area
|
|
55
|
+
* with chips, search input, single-select text, and the toggle button.
|
|
56
|
+
*
|
|
57
|
+
* Features:
|
|
58
|
+
* - Chip display for selected options in multi-select mode with remove functionality
|
|
59
|
+
* - Single-row chip overflow detection with +N hidden chip indicator
|
|
60
|
+
* - Text input for filtering tree options when search is enabled
|
|
61
|
+
* - Plain text display for single-select mode
|
|
62
|
+
* - Chevron toggle button to open/close the dropdown
|
|
63
|
+
* - Optional prefix and suffix content slots
|
|
64
|
+
* - Supports small, medium, and large size variants
|
|
65
|
+
* - Error state styling
|
|
66
|
+
* - Disabled and read-only state styling
|
|
67
|
+
* - Accessible combobox role with aria-expanded and aria-haspopup
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* <TreeSelectFieldInput
|
|
71
|
+
* placeholder="Select categories..."
|
|
72
|
+
* size="medium"
|
|
73
|
+
* selectedOptions={[{ id: 1, label: "Category A" }]}
|
|
74
|
+
* onRemoveOption={(option) => handleRemove(option)}
|
|
75
|
+
* isOpen={isOpen}
|
|
76
|
+
* onWrapperClick={() => setIsOpen(true)}
|
|
77
|
+
* />
|
|
78
|
+
*/
|
|
79
|
+
export declare const TreeSelectFieldInput: {
|
|
80
|
+
({ id, placeholder, size, disabled, readOnly, error, single, singleRow, maxChips, prefix, suffix, selectedOptions, onRemoveOption, inputRef, inputWrapperRef, searchValue, onSearchChange, onInputKeyDown, onWrapperClick, isOpen, ariaControls, disableSearch, comboboxProps, }: TreeSelectFieldInputProps): import("react/jsx-runtime").JSX.Element;
|
|
81
|
+
displayName: string;
|
|
82
|
+
};
|