@servicetitan/anvil2 3.0.6 → 3.0.8
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 +52 -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 -2
- package/dist/Combobox.js.map +1 -1
- package/dist/{DataTable-0kOuVgSB.js → DataTable-Dwhwvm6R.js} +205 -78
- package/dist/DataTable-Dwhwvm6R.js.map +1 -0
- package/dist/DataTable.css +47 -5
- package/dist/{DateFieldRange-Be_I9GTp.js → DateFieldRange-BUug1tUy.js} +27 -15
- package/dist/DateFieldRange-BUug1tUy.js.map +1 -0
- package/dist/DateFieldRange.js +1 -1
- package/dist/{DateFieldSingle-CsrsY9i8.js → DateFieldSingle-DR7faQGD.js} +5 -5
- package/dist/{DateFieldSingle-CsrsY9i8.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-CD-SDfPT.js → Dialog-dE9c90iR.js} +4 -4
- package/dist/{Dialog-CD-SDfPT.js.map → Dialog-dE9c90iR.js.map} +1 -1
- package/dist/Dialog.js +1 -1
- 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-CXGsoWw5.js +413 -0
- package/dist/FilterBar-CXGsoWw5.js.map +1 -0
- 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-CcRRh1ap.js → ListView-BUrfz75g.js} +6 -6
- package/dist/{ListView-CcRRh1ap.js.map → ListView-BUrfz75g.js.map} +1 -1
- package/dist/ListView.js +1 -1
- package/dist/{ListView.module-CKUQP3kf.js → ListView.module-DfqtCL3Q.js} +3 -3
- package/dist/ListView.module-DfqtCL3Q.js.map +1 -0
- 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/MenuFooter.css +28 -0
- package/dist/MultiSelectField.js +1 -1
- package/dist/{MultiSelectFieldSync-BMVROOjy.js → MultiSelectFieldSync-CIuy3aRD.js} +64 -79
- package/dist/MultiSelectFieldSync-CIuy3aRD.js.map +1 -0
- package/dist/MultiSelectFieldSync.css +72 -69
- package/dist/MultiSelectMenu.js +1 -1
- package/dist/{MultiSelectMenuSync-BNPp_2Bm.js → MultiSelectMenuSync-Drz8SEk9.js} +150 -46
- package/dist/MultiSelectMenuSync-Drz8SEk9.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-SBy27-Wv.js → Page-BSHydn4p.js} +9 -9
- package/dist/{Page-SBy27-Wv.js.map → Page-BSHydn4p.js.map} +1 -1
- package/dist/Page.js +1 -1
- package/dist/{Pagination-Cm8-K6VH.js → Pagination-CAeyJ7Pl.js} +193 -27
- 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-CoPXdaWI.js} +78 -42
- package/dist/RichTextEditor-CoPXdaWI.js.map +1 -0
- package/dist/RichTextEditor.js +1 -1
- package/dist/SavedFiltersButton-DzJijqHz.js +651 -0
- package/dist/SavedFiltersButton-DzJijqHz.js.map +1 -0
- package/dist/SavedFiltersButton.css +8 -0
- package/dist/SavedFiltersButton.d.ts +1 -0
- package/dist/SavedFiltersButton.js +2 -0
- package/dist/SavedFiltersButton.js.map +1 -0
- package/dist/{SearchField-3tUPU8hH.js → SearchField-BMHJCVFu.js} +2 -2
- package/dist/{SearchField-3tUPU8hH.js.map → SearchField-BMHJCVFu.js.map} +1 -1
- package/dist/{SearchField-BcQZ5e0x.js → SearchField-fXc_vWEr.js} +2 -2
- package/dist/{SearchField-BcQZ5e0x.js.map → SearchField-fXc_vWEr.js.map} +1 -1
- package/dist/SearchField.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-BeDYbJ2M.js → SelectFieldSync-DlGiJ-Iy.js} +5 -4
- package/dist/{SelectFieldSync-BeDYbJ2M.js.map → SelectFieldSync-DlGiJ-Iy.js.map} +1 -1
- package/dist/SelectMenu.js +1 -1
- package/dist/{SelectMenuSync-C-PFemsQ.js → SelectMenuSync-CAweNjRL.js} +23 -9
- package/dist/SelectMenuSync-CAweNjRL.js.map +1 -0
- package/dist/{SelectOptions-Tr11Ckqw.js → SelectOptions-BGCap9fZ.js} +2 -2
- package/dist/{SelectOptions-Tr11Ckqw.js.map → SelectOptions-BGCap9fZ.js.map} +1 -1
- package/dist/{SelectTrigger-DTz7V-Xx.js → SelectTrigger-BbneVXMz.js} +3 -3
- package/dist/{SelectTrigger-DTz7V-Xx.js.map → SelectTrigger-BbneVXMz.js.map} +1 -1
- package/dist/SelectTrigger.js +1 -1
- package/dist/{SelectTriggerBase-Ds6I7Qbr.js → SelectTriggerBase-BjIOERXr.js} +136 -40
- package/dist/SelectTriggerBase-BjIOERXr.js.map +1 -0
- 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-BUd9eNkq.js → Toolbar-DRJGKk8D.js} +7 -6
- package/dist/{Toolbar-BUd9eNkq.js.map → Toolbar-DRJGKk8D.js.map} +1 -1
- package/dist/Toolbar.js +2 -2
- package/dist/{ToolbarButtonToggle-C06cqJ6F.js → ToolbarButtonToggle-BCKgA8FE.js} +5 -4
- package/dist/ToolbarButtonToggle-BCKgA8FE.js.map +1 -0
- 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 -12
- package/dist/beta.js.map +1 -1
- package/dist/confirmationTypes-CG7xl50f.js +75 -0
- package/dist/confirmationTypes-CG7xl50f.js.map +1 -0
- package/dist/filter-state-DyMDjdRS.js +1867 -0
- package/dist/filter-state-DyMDjdRS.js.map +1 -0
- package/dist/{FilterBar.css → filter-state.css} +19 -33
- 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-DVYRUKtW.js → index-fSKD4ey4.js} +79 -109
- package/dist/{index-DVYRUKtW.js.map → index-fSKD4ey4.js.map} +1 -1
- package/dist/index.js +43 -44
- package/dist/index.js.map +1 -1
- 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/FilterBar.d.ts +12 -10
- package/dist/src/beta/components/FilterBar/FilterDateList.d.ts +15 -5
- package/dist/src/beta/components/FilterBar/FilterDateRange.d.ts +34 -29
- package/dist/src/beta/components/FilterBar/FilterDateSingle.d.ts +31 -22
- package/dist/src/beta/components/FilterBar/FilterDrawer.d.ts +1 -1
- package/dist/src/beta/components/FilterBar/FilterItemWrapper.d.ts +4 -12
- package/dist/src/beta/components/FilterBar/FilterNumericRange.d.ts +29 -0
- package/dist/src/beta/components/FilterBar/FilterPopoverButton.d.ts +86 -0
- package/dist/src/beta/components/FilterBar/FilterTextInput.d.ts +29 -0
- package/dist/src/beta/components/FilterBar/FilterToggleButton.d.ts +2 -2
- package/dist/src/beta/components/FilterBar/FilterTriggerButton.d.ts +50 -0
- package/dist/src/beta/components/FilterBar/index.d.ts +1 -1
- package/dist/src/beta/components/FilterBar/internal/FilterGroupContext.d.ts +5 -9
- package/dist/src/beta/components/FilterBar/internal/adapters/asyncMultiSelect.d.ts +6 -0
- package/dist/src/beta/components/FilterBar/internal/adapters/asyncSelect.d.ts +6 -0
- package/dist/src/beta/components/FilterBar/internal/adapters/asyncTree.d.ts +6 -0
- package/dist/src/beta/components/FilterBar/internal/adapters/boolean.d.ts +3 -0
- package/dist/src/beta/components/FilterBar/internal/adapters/custom.d.ts +3 -0
- package/dist/src/beta/components/FilterBar/internal/adapters/date.d.ts +5 -0
- package/dist/src/beta/components/FilterBar/internal/adapters/dateList.d.ts +5 -0
- package/dist/src/beta/components/FilterBar/internal/adapters/dateRange.d.ts +8 -0
- package/dist/src/beta/components/FilterBar/internal/adapters/index.d.ts +15 -0
- package/dist/src/beta/components/FilterBar/internal/adapters/multiSelect.d.ts +6 -0
- package/dist/src/beta/components/FilterBar/internal/adapters/numericRange.d.ts +3 -0
- package/dist/src/beta/components/FilterBar/internal/adapters/singleSelect.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 +81 -0
- package/dist/src/beta/components/FilterBar/internal/types.d.ts +223 -61
- package/dist/src/beta/components/FilterBar/internal/utils/dateListLibraryOptions.d.ts +2 -2
- package/dist/src/beta/components/FilterBar/internal/utils/filter-state.d.ts +2 -40
- package/dist/src/beta/components/FilterBar/internal/utils/test.d.ts +16 -28
- package/dist/src/beta/components/FilterBar/internal/utils/value-compare.d.ts +14 -0
- package/dist/src/beta/components/MultiSelectField/internal/MultiSelectFieldComboboxMode.d.ts +1 -1
- package/dist/src/beta/components/MultiSelectField/internal/MultiSelectFieldSelectMode.d.ts +1 -1
- package/dist/src/beta/components/MultiSelectField/internal/types.d.ts +4 -2
- package/dist/src/beta/components/MultiSelectField/internal/useComboMultiple.d.ts +7 -5
- package/dist/src/beta/components/MultiSelectField/internal/useSelectModeMultiple.d.ts +5 -2
- package/dist/src/beta/components/MultiSelectField/types.d.ts +21 -36
- package/dist/src/beta/components/MultiSelectMenu/MultiSelectMenu.d.ts +1 -0
- package/dist/src/beta/components/MultiSelectMenu/types.d.ts +52 -12
- package/dist/src/beta/components/SavedFiltersButton/SavedFiltersButton.d.ts +40 -0
- package/dist/src/beta/components/SavedFiltersButton/index.d.ts +2 -0
- package/dist/src/beta/components/SavedFiltersButton/internal/AddSavedFilterDrawer.d.ts +27 -0
- package/dist/src/beta/components/SavedFiltersButton/internal/EditSavedFiltersDrawer.d.ts +38 -0
- package/dist/src/beta/components/SavedFiltersButton/types.d.ts +147 -0
- package/dist/src/beta/components/SelectField/types.d.ts +7 -11
- package/dist/src/beta/components/SelectMenu/internal/useMenuInteraction.d.ts +8 -1
- package/dist/src/beta/components/SelectMenu/types.d.ts +21 -1
- package/dist/src/beta/components/Table/DataTable/DataTable.d.ts +4 -6
- package/dist/src/beta/components/Table/DataTable/internal/DataTableBodyRow.d.ts +6 -1
- package/dist/src/beta/components/Table/DataTable/internal/DataTablePagination.d.ts +6 -0
- 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/useColumnOrder.d.ts +1 -0
- package/dist/src/beta/components/Table/DataTable/types.d.ts +43 -10
- package/dist/src/beta/components/Toolbar/internal/ToolbarContext.d.ts +3 -2
- 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 +3 -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/MenuFooter/MenuFooter.d.ts +43 -0
- package/dist/src/internal/components/OptionCheckbox.d.ts +6 -0
- package/dist/src/internal/components/OptionContentArea.d.ts +8 -0
- package/dist/src/internal/components/OptionRow.d.ts +10 -0
- package/dist/src/internal/components/OptionsPopover/OptionsPopover.d.ts +4 -4
- package/dist/src/internal/functions/portalScopeClassNames.d.ts +14 -0
- package/dist/src/internal/hooks/index.d.ts +2 -0
- package/dist/src/internal/hooks/useBulkActionRunner.d.ts +41 -0
- package/dist/src/internal/hooks/useConfirmationDraft.d.ts +21 -0
- package/dist/src/internal/types/bulkActionTypes.d.ts +39 -0
- package/dist/src/internal/types/confirmationTypes.d.ts +19 -0
- package/dist/src/internal/types/optionContent.d.ts +19 -0
- package/dist/src/internal/types/selectFieldInternalTypes.d.ts +2 -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-COxBIkt6.js → syncFilterUtils-DZqeVWTS.js} +49 -385
- package/dist/syncFilterUtils-DZqeVWTS.js.map +1 -0
- package/dist/syncFilterUtils.css +21 -164
- 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/{Combobox-Cp7M4-4r.js → useInfiniteCombobox-C6TDFfds.js} +206 -31
- package/dist/useInfiniteCombobox-C6TDFfds.js.map +1 -0
- package/dist/{useMenuInteraction-C4RU5Fdq.js → useMenuInteraction-NEJXUD4I.js} +5 -4
- package/dist/useMenuInteraction-NEJXUD4I.js.map +1 -0
- package/dist/{useToggleSelection-B5PnTuT2.js → useToggleSelection-Bn7h-gGD.js} +53 -4
- package/dist/useToggleSelection-Bn7h-gGD.js.map +1 -0
- package/package.json +3 -5
- package/dist/Avatar-FDHyqiCy.js.map +0 -1
- package/dist/Combobox-Cp7M4-4r.js.map +0 -1
- package/dist/DataTable-0kOuVgSB.js.map +0 -1
- package/dist/DateFieldRange-Be_I9GTp.js.map +0 -1
- package/dist/FilterBar-yysyZ-t1.js +0 -1797
- package/dist/FilterBar-yysyZ-t1.js.map +0 -1
- package/dist/ListView.module-CKUQP3kf.js.map +0 -1
- package/dist/Menu-W0c-xKdX.js.map +0 -1
- package/dist/MultiSelectFieldSync-BMVROOjy.js.map +0 -1
- package/dist/MultiSelectMenuSync-BNPp_2Bm.js.map +0 -1
- package/dist/Pagination-Cm8-K6VH.js.map +0 -1
- package/dist/Popover-8mTJoMy7.js.map +0 -1
- package/dist/RichTextEditor-DstVbYch.js.map +0 -1
- package/dist/SelectMenuSync-C-PFemsQ.js.map +0 -1
- package/dist/SelectTriggerBase-Ds6I7Qbr.js.map +0 -1
- package/dist/Toaster-CoChsMD0.js.map +0 -1
- package/dist/ToolbarButtonToggle-C06cqJ6F.js.map +0 -1
- package/dist/Tooltip-yr1D06BE.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/src/beta/components/FilterBar/FilterButton.d.ts +0 -33
- package/dist/src/beta/components/FilterBar/FilterSelect.d.ts +0 -29
- package/dist/syncFilterUtils-COxBIkt6.js.map +0 -1
- package/dist/useInfiniteCombobox-WcRgC9p6.js +0 -179
- package/dist/useInfiniteCombobox-WcRgC9p6.js.map +0 -1
- package/dist/useMenuInteraction-C4RU5Fdq.js.map +0 -1
- package/dist/useToggleSelection-B5PnTuT2.js.map +0 -1
- /package/dist/{Combobox.css → useInfiniteCombobox.css} +0 -0
|
@@ -53,9 +53,12 @@ export type DataTableCacheOptions = {
|
|
|
53
53
|
maxSize?: number;
|
|
54
54
|
};
|
|
55
55
|
/**
|
|
56
|
-
*
|
|
56
|
+
* Pagination behavior for DataTable.
|
|
57
|
+
* "offset" uses numbered pages with a known total row count.
|
|
58
|
+
* "cursor" uses previous/next availability for unknown-total pagination.
|
|
57
59
|
*/
|
|
58
|
-
export type
|
|
60
|
+
export type DataTablePaginationMode = "offset" | "cursor";
|
|
61
|
+
type DataTablePaginationBaseConfig<T> = {
|
|
59
62
|
/**
|
|
60
63
|
* Number of rows displayed per page
|
|
61
64
|
* @default 25
|
|
@@ -96,28 +99,57 @@ export type DataTablePaginationConfig<T> = {
|
|
|
96
99
|
* Callback when page changes. Receives the new page index (0-based)
|
|
97
100
|
*/
|
|
98
101
|
onPageChange?: (pageIndex: number) => void;
|
|
102
|
+
/**
|
|
103
|
+
* Key that triggers data refetch when changed.
|
|
104
|
+
* Useful for forcing refetch when external filters change.
|
|
105
|
+
* When changed, the page index automatically resets to 0.
|
|
106
|
+
*/
|
|
107
|
+
refreshKey?: string | number;
|
|
108
|
+
/**
|
|
109
|
+
* Configuration for caching loadPageData results.
|
|
110
|
+
* Caching is enabled by default. Set `{ enabled: false }` to disable.
|
|
111
|
+
*/
|
|
112
|
+
cache?: DataTableCacheOptions;
|
|
113
|
+
};
|
|
114
|
+
export type DataTableOffsetPaginationConfig<T> = DataTablePaginationBaseConfig<T> & {
|
|
115
|
+
/**
|
|
116
|
+
* Offset pagination mode.
|
|
117
|
+
* @default "offset"
|
|
118
|
+
*/
|
|
119
|
+
mode?: "offset";
|
|
99
120
|
/**
|
|
100
121
|
* Whether to display the item count information in pagination
|
|
101
122
|
* @default true
|
|
102
123
|
*/
|
|
103
124
|
showCount?: boolean;
|
|
104
125
|
/**
|
|
105
|
-
* Total number of rows across all pages. Falls back to data.length if not provided.
|
|
126
|
+
* Total number of rows across all pages in offset mode. Falls back to data.length if not provided.
|
|
106
127
|
* Useful for server-side pagination scenarios where totalRowCount may differ from data array length.
|
|
107
128
|
*/
|
|
108
129
|
totalRowCount?: number;
|
|
130
|
+
hasNextPage?: never;
|
|
131
|
+
hasPrevPage?: never;
|
|
132
|
+
};
|
|
133
|
+
export type DataTableCursorPaginationConfig<T> = DataTablePaginationBaseConfig<T> & {
|
|
109
134
|
/**
|
|
110
|
-
*
|
|
111
|
-
* Useful for forcing refetch when external filters change.
|
|
112
|
-
* When changed, the page index automatically resets to 0.
|
|
135
|
+
* Cursor pagination mode for datasets where the total row count is unknown.
|
|
113
136
|
*/
|
|
114
|
-
|
|
137
|
+
mode: "cursor";
|
|
115
138
|
/**
|
|
116
|
-
*
|
|
117
|
-
* Caching is enabled by default. Set `{ enabled: false }` to disable.
|
|
139
|
+
* Whether another page is available.
|
|
118
140
|
*/
|
|
119
|
-
|
|
141
|
+
hasNextPage: boolean;
|
|
142
|
+
/**
|
|
143
|
+
* Whether a previous page is available.
|
|
144
|
+
*/
|
|
145
|
+
hasPrevPage: boolean;
|
|
146
|
+
showCount?: never;
|
|
147
|
+
totalRowCount?: never;
|
|
120
148
|
};
|
|
149
|
+
/**
|
|
150
|
+
* Configuration for pagination in DataTable
|
|
151
|
+
*/
|
|
152
|
+
export type DataTablePaginationConfig<T> = DataTableOffsetPaginationConfig<T> | DataTableCursorPaginationConfig<T>;
|
|
121
153
|
/**
|
|
122
154
|
* Ref handle for DataTable component
|
|
123
155
|
* @property {function} refresh - Triggers a data refetch and resets the page index to 0. Useful for manually refreshing data after external changes (e.g., after a mutation).
|
|
@@ -135,3 +167,4 @@ export type DataTableRef = {
|
|
|
135
167
|
*/
|
|
136
168
|
clearCache: () => void;
|
|
137
169
|
};
|
|
170
|
+
export {};
|
|
@@ -25,9 +25,10 @@ export type ToolbarContextProps = {
|
|
|
25
25
|
*/
|
|
26
26
|
orderedIds?: string[];
|
|
27
27
|
/**
|
|
28
|
-
* Overflow behavior type
|
|
28
|
+
* Overflow behavior type. Defaults to wrap behavior when omitted.
|
|
29
|
+
* @default "wrap"
|
|
29
30
|
*/
|
|
30
|
-
overflow
|
|
31
|
+
overflow?: ToolbarOverflowTypes;
|
|
31
32
|
/**
|
|
32
33
|
* Size of toolbar child components
|
|
33
34
|
*/
|
|
@@ -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
|
+
};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { TreeSelectFieldNode } from '../types';
|
|
2
|
+
import { VisibleNode } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Props for the VirtualizedTreePanel component.
|
|
5
|
+
* @property visibleNodes - Flat list of currently visible tree nodes.
|
|
6
|
+
* @property getCheckState - Returns the visual check state for a node ID.
|
|
7
|
+
* @property toggleNode - Toggles selection for the given node ID.
|
|
8
|
+
* @property toggleExpand - Expands or collapses the given branch node ID.
|
|
9
|
+
* @property getTreeItemProps - Returns ARIA props for a given node ID.
|
|
10
|
+
* @property treeProps - ARIA props for the tree container element.
|
|
11
|
+
* @property activeDescendantId - The id attribute of the focused treeitem, for aria-activedescendant.
|
|
12
|
+
* @property branchesSelectable - When true, branch nodes can be selected.
|
|
13
|
+
* @property leavesSelectable - When true, leaf nodes can be selected.
|
|
14
|
+
* @property onLoadChildren - Callback to lazily load children for a node with children===null.
|
|
15
|
+
*/
|
|
16
|
+
export type VirtualizedTreePanelProps = {
|
|
17
|
+
visibleNodes: VisibleNode[];
|
|
18
|
+
getCheckState: (id: string | number) => "checked" | "unchecked" | "indeterminate" | "loading";
|
|
19
|
+
toggleNode: (id: string | number) => void;
|
|
20
|
+
toggleExpand: (id: string | number) => void;
|
|
21
|
+
getTreeItemProps: (id: string | number) => Record<string, unknown>;
|
|
22
|
+
treeProps: Record<string, unknown>;
|
|
23
|
+
activeDescendantId: string | undefined;
|
|
24
|
+
branchesSelectable?: boolean;
|
|
25
|
+
leavesSelectable?: boolean;
|
|
26
|
+
emptyBranchesSelectable?: boolean;
|
|
27
|
+
readOnly?: boolean;
|
|
28
|
+
onHover?: (id: string | number) => void;
|
|
29
|
+
onLoadChildren?: (node: TreeSelectFieldNode) => void;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* VirtualizedTreePanel renders a virtualized tree list using @tanstack/react-virtual,
|
|
33
|
+
* only mounting DOM nodes for visible rows. Intended for large tree datasets.
|
|
34
|
+
*
|
|
35
|
+
* Features:
|
|
36
|
+
* - Only renders visible rows via @tanstack/react-virtual for performance
|
|
37
|
+
* - Same visual output and interaction model as a non-virtualized tree panel
|
|
38
|
+
* - Supports multi-select checkboxes and single-select modes
|
|
39
|
+
* - Expand/collapse branch nodes with optional lazy loading
|
|
40
|
+
* - Keyboard navigation via onKeyDown handler
|
|
41
|
+
* - Full ARIA tree semantics (role, aria-level, aria-expanded, etc.)
|
|
42
|
+
* - Optional child count display on branch nodes
|
|
43
|
+
* - Breadcrumb display for flattened search results
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* <VirtualizedTreePanel
|
|
47
|
+
* visibleNodes={visibleNodes}
|
|
48
|
+
* getCheckState={getCheckState}
|
|
49
|
+
* toggleNode={toggleNode}
|
|
50
|
+
* toggleExpand={toggleExpand}
|
|
51
|
+
* getTreeItemProps={getTreeItemProps}
|
|
52
|
+
* treeProps={treeProps}
|
|
53
|
+
* onKeyDown={onKeyDown}
|
|
54
|
+
* activeDescendantId={activeDescendantId}
|
|
55
|
+
* />
|
|
56
|
+
*/
|
|
57
|
+
export declare const VirtualizedTreePanel: import('react').ForwardRefExoticComponent<VirtualizedTreePanelProps & import('react').RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { MatchSorterOptions } from 'match-sorter';
|
|
2
|
+
import { TreeSelectFieldNode } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Filter function for narrowing tree options against a search value.
|
|
5
|
+
* Receives the full options tree and returns the (possibly pruned) tree to display.
|
|
6
|
+
*/
|
|
7
|
+
export type TreeSyncFilterFn = (options: TreeSelectFieldNode[], searchValue: string) => TreeSelectFieldNode[];
|
|
8
|
+
/**
|
|
9
|
+
* Recursively populates `childCount` (number of immediate children) on every
|
|
10
|
+
* loaded branch that doesn't already declare one, returning a new tree.
|
|
11
|
+
*
|
|
12
|
+
* This is computed from the full static `options` *before* any search filter
|
|
13
|
+
* runs, so the count reflects the real child set rather than the filtered
|
|
14
|
+
* subset. `computeCheckStates` relies on `childCount` to detect that a branch
|
|
15
|
+
* is only partially represented (e.g. during search) and avoid showing a
|
|
16
|
+
* partially-selected branch as fully checked.
|
|
17
|
+
*
|
|
18
|
+
* @param nodes - The tree nodes to process.
|
|
19
|
+
* @returns A new array of nodes with childCount set on branch nodes.
|
|
20
|
+
*/
|
|
21
|
+
export declare function applyChildCounts(nodes: TreeSelectFieldNode[]): TreeSelectFieldNode[];
|
|
22
|
+
/**
|
|
23
|
+
* Default tree-aware filter. Matches on label and searchText, preserving
|
|
24
|
+
* ancestors of matched nodes.
|
|
25
|
+
*/
|
|
26
|
+
export declare function defaultTreeSyncFilter(nodes: TreeSelectFieldNode[], searchValue: string): TreeSelectFieldNode[];
|
|
27
|
+
/**
|
|
28
|
+
* Coerces a `TreeSyncFilterFn` or `MatchSorterOptions` into a
|
|
29
|
+
* `TreeSyncFilterFn`. When given options, the resulting filter flattens the
|
|
30
|
+
* tree, runs match-sorter, and prunes the original tree to keep ancestors of
|
|
31
|
+
* matched nodes.
|
|
32
|
+
*/
|
|
33
|
+
export declare function toTreeSyncFilterFn(filter: TreeSyncFilterFn | MatchSorterOptions<TreeSelectFieldNode>): TreeSyncFilterFn;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { TreeSelectFieldNode } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Recursively finds the first node in the tree matching the given id.
|
|
4
|
+
*
|
|
5
|
+
* @param nodes - The tree nodes to search.
|
|
6
|
+
* @param id - The id of the node to find.
|
|
7
|
+
* @returns The matching node, or undefined if no node has the given id.
|
|
8
|
+
*/
|
|
9
|
+
export declare function findNode(nodes: TreeSelectFieldNode[], id: string | number): TreeSelectFieldNode | undefined;
|
|
10
|
+
/**
|
|
11
|
+
* Returns true when the given node or any of its descendants still need to
|
|
12
|
+
* be lazy-loaded (i.e. has `children: null`).
|
|
13
|
+
*
|
|
14
|
+
* @param node - The node to inspect.
|
|
15
|
+
* @returns Whether any descendant branch is still unloaded.
|
|
16
|
+
*/
|
|
17
|
+
export declare function hasUnloadedDescendants(node: TreeSelectFieldNode): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Returns all descendant branches of the given node whose children have not
|
|
20
|
+
* yet been loaded (i.e. `children: null`). The node itself is not included.
|
|
21
|
+
*
|
|
22
|
+
* @param node - The ancestor node to walk.
|
|
23
|
+
* @returns Every descendant branch that still requires lazy loading.
|
|
24
|
+
*/
|
|
25
|
+
export declare function findUnloadedDescendants(node: TreeSelectFieldNode): TreeSelectFieldNode[];
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { TreeSelectFieldNode } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Internal representation of a visible node in the flattened tree.
|
|
4
|
+
*/
|
|
5
|
+
export type VisibleNode = {
|
|
6
|
+
node: TreeSelectFieldNode;
|
|
7
|
+
depth: number;
|
|
8
|
+
isExpanded: boolean;
|
|
9
|
+
isBranch: boolean;
|
|
10
|
+
isLoading: boolean;
|
|
11
|
+
isEmptyPlaceholder?: boolean;
|
|
12
|
+
};
|