@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.
Files changed (305) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/dist/{AiMark-BXL0sWIV.js → AiMark-CS6MvraM.js} +5 -4
  3. package/dist/{AiMark-BXL0sWIV.js.map → AiMark-CS6MvraM.js.map} +1 -1
  4. package/dist/AiMark.js +1 -1
  5. package/dist/{Alert-BNH0UD2s.js → Alert-CNDLoh6b.js} +2 -2
  6. package/dist/{Alert-BNH0UD2s.js.map → Alert-CNDLoh6b.js.map} +1 -1
  7. package/dist/Alert.js +1 -1
  8. package/dist/{AnvilProvider-J9DjoJiB.js → AnvilProvider-BFK29dL5.js} +3 -2
  9. package/dist/{AnvilProvider-J9DjoJiB.js.map → AnvilProvider-BFK29dL5.js.map} +1 -1
  10. package/dist/AnvilProvider.js +1 -1
  11. package/dist/{Avatar-FDHyqiCy.js → Avatar-Bl-Dxbhf.js} +7 -2
  12. package/dist/Avatar-Bl-Dxbhf.js.map +1 -0
  13. package/dist/{Avatar-B_cRQqKR.js → Avatar-CdAIJ5VK.js} +2 -2
  14. package/dist/{Avatar-B_cRQqKR.js.map → Avatar-CdAIJ5VK.js.map} +1 -1
  15. package/dist/Avatar.js +2 -2
  16. package/dist/{Breadcrumbs-Bzxbdu-S.js → Breadcrumbs--Xt6l_2L.js} +2 -2
  17. package/dist/{Breadcrumbs-Bzxbdu-S.js.map → Breadcrumbs--Xt6l_2L.js.map} +1 -1
  18. package/dist/Breadcrumbs.js +1 -1
  19. package/dist/{Calendar-DS5eWpGF.js → Calendar-5mAxtdNh.js} +2 -2
  20. package/dist/{Calendar-DS5eWpGF.js.map → Calendar-5mAxtdNh.js.map} +1 -1
  21. package/dist/{Calendar-BYNFAWpZ.js → Calendar-rITorBvD.js} +5 -3
  22. package/dist/{Calendar-BYNFAWpZ.js.map → Calendar-rITorBvD.js.map} +1 -1
  23. package/dist/Calendar.js +2 -2
  24. package/dist/{Checkbox-BeIzx_ZX.js → Checkbox-BYWhkYoK.js} +2 -2
  25. package/dist/{Checkbox-BeIzx_ZX.js.map → Checkbox-BYWhkYoK.js.map} +1 -1
  26. package/dist/{Checkbox-BB3BDJsK.js → Checkbox-DTzoDcJl.js} +3 -3
  27. package/dist/{Checkbox-BB3BDJsK.js.map → Checkbox-DTzoDcJl.js.map} +1 -1
  28. package/dist/Checkbox.js +1 -1
  29. package/dist/{Chip-D2k5X_wX.js → Chip-CyMNyEPR.js} +3 -3
  30. package/dist/{Chip-D2k5X_wX.js.map → Chip-CyMNyEPR.js.map} +1 -1
  31. package/dist/Chip.js +1 -1
  32. package/dist/Combobox.js +1 -1
  33. package/dist/{DataTable-E8z0H8c7.js → DataTable-FG0Kjx0d.js} +1206 -445
  34. package/dist/DataTable-FG0Kjx0d.js.map +1 -0
  35. package/dist/DataTable.css +301 -233
  36. package/dist/{DateFieldRange-BN_uIvHI.js → DateFieldRange-BUug1tUy.js} +4 -4
  37. package/dist/{DateFieldRange-BN_uIvHI.js.map → DateFieldRange-BUug1tUy.js.map} +1 -1
  38. package/dist/DateFieldRange.js +1 -1
  39. package/dist/{DateFieldSingle-h3YkdwPo.js → DateFieldSingle-DR7faQGD.js} +4 -4
  40. package/dist/{DateFieldSingle-h3YkdwPo.js.map → DateFieldSingle-DR7faQGD.js.map} +1 -1
  41. package/dist/DateFieldSingle.js +1 -1
  42. package/dist/{DateFieldYearless-m_Hl2gMY.js → DateFieldYearless-7MFcR7L6.js} +4 -4
  43. package/dist/{DateFieldYearless-m_Hl2gMY.js.map → DateFieldYearless-7MFcR7L6.js.map} +1 -1
  44. package/dist/DateFieldYearless.js +1 -1
  45. package/dist/{DateFieldYearlessRange-DNqSTBDr.js → DateFieldYearlessRange-DGtdyISH.js} +3 -3
  46. package/dist/{DateFieldYearlessRange-DNqSTBDr.js.map → DateFieldYearlessRange-DGtdyISH.js.map} +1 -1
  47. package/dist/DateFieldYearlessRange.js +1 -1
  48. package/dist/{DaysOfTheWeek-D58z_eF3.js → DaysOfTheWeek-C7oN9nIe.js} +3 -3
  49. package/dist/{DaysOfTheWeek-D58z_eF3.js.map → DaysOfTheWeek-C7oN9nIe.js.map} +1 -1
  50. package/dist/DaysOfTheWeek.js +1 -1
  51. package/dist/{Dialog-CvYSMvfD.js → Dialog-dE9c90iR.js} +3 -3
  52. package/dist/{Dialog-CvYSMvfD.js.map → Dialog-dE9c90iR.js.map} +1 -1
  53. package/dist/Dialog.js +1 -1
  54. package/dist/{Divider-CxtTyw8_.js → Divider-Dz27DFuE.js} +17 -17
  55. package/dist/{Divider-CxtTyw8_.js.map → Divider-Dz27DFuE.js.map} +1 -1
  56. package/dist/Divider.css +21 -24
  57. package/dist/Divider.js +1 -1
  58. package/dist/Dnd.js +2 -2
  59. package/dist/{DndHandleButton-CHTOYRlq.js → DndHandleButton-BW9xLWQm.js} +2 -4
  60. package/dist/DndHandleButton-BW9xLWQm.js.map +1 -0
  61. package/dist/DndSort.js +2 -2
  62. package/dist/{Drawer-s2y0xcgV.js → Drawer-Dk0MsaOU.js} +3 -3
  63. package/dist/{Drawer-s2y0xcgV.js.map → Drawer-Dk0MsaOU.js.map} +1 -1
  64. package/dist/Drawer.js +1 -1
  65. package/dist/DrillDown.js +1 -1
  66. package/dist/{EditCard-B25pj0Jx.js → EditCard-DV2N7zWr.js} +2 -2
  67. package/dist/{EditCard-B25pj0Jx.js.map → EditCard-DV2N7zWr.js.map} +1 -1
  68. package/dist/EditCard.js +1 -1
  69. package/dist/{FieldLabel-D1qPAGtB.js → FieldLabel-VVn8GR64.js} +3 -3
  70. package/dist/{FieldLabel-D1qPAGtB.js.map → FieldLabel-VVn8GR64.js.map} +1 -1
  71. package/dist/FieldLabel.js +1 -1
  72. package/dist/{FilterBar-B4ZAs73g.js → FilterBar-B3c_VGDk.js} +6 -5
  73. package/dist/{FilterBar-B4ZAs73g.js.map → FilterBar-B3c_VGDk.js.map} +1 -1
  74. package/dist/FilterBar.js +1 -1
  75. package/dist/{InputMask-BDl09V4u.js → InputMask-VBHWGZGN.js} +3 -3
  76. package/dist/{InputMask-BDl09V4u.js.map → InputMask-VBHWGZGN.js.map} +1 -1
  77. package/dist/InputMask.js +1 -1
  78. package/dist/{ListView-DO5psxd4.js → ListView-BUrfz75g.js} +2 -2
  79. package/dist/{ListView-DO5psxd4.js.map → ListView-BUrfz75g.js.map} +1 -1
  80. package/dist/ListView.js +1 -1
  81. package/dist/{Listbox-CvQHBFWb.js → Listbox-CRY-0BkS.js} +2 -2
  82. package/dist/{Listbox-CvQHBFWb.js.map → Listbox-CRY-0BkS.js.map} +1 -1
  83. package/dist/Listbox.js +1 -1
  84. package/dist/{Menu-W0c-xKdX.js → Menu-DNJ0YqjA.js} +11 -7
  85. package/dist/Menu-DNJ0YqjA.js.map +1 -0
  86. package/dist/Menu.js +1 -1
  87. package/dist/MenuFooter-CrsZdXvN.js +115 -0
  88. package/dist/MenuFooter-CrsZdXvN.js.map +1 -0
  89. package/dist/MultiSelectField.js +1 -1
  90. package/dist/{MultiSelectFieldSync-CXX2F0ru.js → MultiSelectFieldSync-CzHj9Qvy.js} +8 -53
  91. package/dist/MultiSelectFieldSync-CzHj9Qvy.js.map +1 -0
  92. package/dist/MultiSelectMenu.js +1 -1
  93. package/dist/{MultiSelectMenuSync-EKtvlL62.js → MultiSelectMenuSync-BGcrYjby.js} +9 -76
  94. package/dist/MultiSelectMenuSync-BGcrYjby.js.map +1 -0
  95. package/dist/{NumberField-BymFZhIJ.js → NumberField-bgYX7JGs.js} +3 -3
  96. package/dist/{NumberField-BymFZhIJ.js.map → NumberField-bgYX7JGs.js.map} +1 -1
  97. package/dist/NumberField.js +1 -1
  98. package/dist/{Page-C2_Hm27h.js → Page-BSHydn4p.js} +9 -9
  99. package/dist/{Page-C2_Hm27h.js.map → Page-BSHydn4p.js.map} +1 -1
  100. package/dist/Page.js +1 -1
  101. package/dist/{Pagination-Bmd4JORe.js → Pagination-CAeyJ7Pl.js} +192 -26
  102. package/dist/Pagination-CAeyJ7Pl.js.map +1 -0
  103. package/dist/Pagination.css +4 -2
  104. package/dist/Pagination.js +1 -1
  105. package/dist/{Popover-8mTJoMy7.js → Popover-Cq5tirFz.js} +11 -5
  106. package/dist/Popover-Cq5tirFz.js.map +1 -0
  107. package/dist/Popover.js +1 -1
  108. package/dist/{ProgressBar-C1CkQHV5.js → ProgressBar-ByR50ln7.js} +2 -2
  109. package/dist/{ProgressBar-C1CkQHV5.js.map → ProgressBar-ByR50ln7.js.map} +1 -1
  110. package/dist/ProgressBar.js +1 -1
  111. package/dist/{Radio-BcHMk8dD.js → Radio-CPuctRpl.js} +2 -2
  112. package/dist/{Radio-BcHMk8dD.js.map → Radio-CPuctRpl.js.map} +1 -1
  113. package/dist/{Radio-D5WyQN2i.js → Radio-WlsZFRzX.js} +3 -3
  114. package/dist/{Radio-D5WyQN2i.js.map → Radio-WlsZFRzX.js.map} +1 -1
  115. package/dist/Radio.js +1 -1
  116. package/dist/{RichTextEditor-DstVbYch.js → RichTextEditor-FSWAVmTe.js} +80 -44
  117. package/dist/RichTextEditor-FSWAVmTe.js.map +1 -0
  118. package/dist/RichTextEditor.js +1 -1
  119. package/dist/{SavedFiltersButton-2qba2Cgu.js → SavedFiltersButton-Cr829guv.js} +12 -11
  120. package/dist/SavedFiltersButton-Cr829guv.js.map +1 -0
  121. package/dist/SavedFiltersButton.js +1 -1
  122. package/dist/{SelectCard-BN-LI14f.js → SelectCard-DLWLHi_i.js} +3 -3
  123. package/dist/{SelectCard-BN-LI14f.js.map → SelectCard-DLWLHi_i.js.map} +1 -1
  124. package/dist/SelectCard.js +1 -1
  125. package/dist/SelectField.js +1 -1
  126. package/dist/{SelectFieldLabel-UbQT7fDD.js → SelectFieldLabel-vemffdmu.js} +2 -2
  127. package/dist/{SelectFieldLabel-UbQT7fDD.js.map → SelectFieldLabel-vemffdmu.js.map} +1 -1
  128. package/dist/{SelectFieldSync-DykGkR_w.js → SelectFieldSync-C65VFWGm.js} +5 -4
  129. package/dist/{SelectFieldSync-DykGkR_w.js.map → SelectFieldSync-C65VFWGm.js.map} +1 -1
  130. package/dist/SelectMenu.js +1 -1
  131. package/dist/{SelectMenuSync-DTQ8Ofoz.js → SelectMenuSync-CF49L12-.js} +6 -4
  132. package/dist/{SelectMenuSync-DTQ8Ofoz.js.map → SelectMenuSync-CF49L12-.js.map} +1 -1
  133. package/dist/{SelectOptions-DVSOJwRy.js → SelectOptions-C7skDFj2.js} +2 -2
  134. package/dist/{SelectOptions-DVSOJwRy.js.map → SelectOptions-C7skDFj2.js.map} +1 -1
  135. package/dist/{SelectTrigger-CHk0KO-P.js → SelectTrigger-BbneVXMz.js} +3 -3
  136. package/dist/{SelectTrigger-CHk0KO-P.js.map → SelectTrigger-BbneVXMz.js.map} +1 -1
  137. package/dist/SelectTrigger.js +1 -1
  138. package/dist/{SelectTriggerBase-B2S5SOZr.js → SelectTriggerBase-BjIOERXr.js} +3 -3
  139. package/dist/{SelectTriggerBase-B2S5SOZr.js.map → SelectTriggerBase-BjIOERXr.js.map} +1 -1
  140. package/dist/{Switch-onmiKoRd.js → Switch-B6bKmpwN.js} +3 -3
  141. package/dist/{Switch-onmiKoRd.js.map → Switch-B6bKmpwN.js.map} +1 -1
  142. package/dist/Switch.js +1 -1
  143. package/dist/Table.js +1 -1
  144. package/dist/{Text-BTzgTpqu.js → Text-w2gWn4K6.js} +2 -2
  145. package/dist/{Text-BTzgTpqu.js.map → Text-w2gWn4K6.js.map} +1 -1
  146. package/dist/Text.js +1 -1
  147. package/dist/{TextField-WTYZJlX3.js → TextField-BQsCh5Nb.js} +2 -2
  148. package/dist/{TextField-WTYZJlX3.js.map → TextField-BQsCh5Nb.js.map} +1 -1
  149. package/dist/{TextField-rVfctM1E.js → TextField-DJ3gEIP6.js} +3 -3
  150. package/dist/{TextField-rVfctM1E.js.map → TextField-DJ3gEIP6.js.map} +1 -1
  151. package/dist/TextField.js +1 -1
  152. package/dist/{Textarea-PXjppEQ6.js → Textarea-BK4Vf84K.js} +3 -3
  153. package/dist/{Textarea-PXjppEQ6.js.map → Textarea-BK4Vf84K.js.map} +1 -1
  154. package/dist/Textarea.js +1 -1
  155. package/dist/{ThemeProvider-D4KdGCaP.js → ThemeProvider-BC6wbuLU.js} +4 -9
  156. package/dist/{ThemeProvider-D4KdGCaP.js.map → ThemeProvider-BC6wbuLU.js.map} +1 -1
  157. package/dist/ThemeProvider.js +1 -1
  158. package/dist/ThemeProvider.module-D9pNGYjP.js +8 -0
  159. package/dist/ThemeProvider.module-D9pNGYjP.js.map +1 -0
  160. package/dist/{TimeField-BJPXIv6W.js → TimeField-B4IW2B_o.js} +4 -4
  161. package/dist/{TimeField-BJPXIv6W.js.map → TimeField-B4IW2B_o.js.map} +1 -1
  162. package/dist/TimeField.js +1 -1
  163. package/dist/Toast.js +2 -2
  164. package/dist/{Toaster-CoChsMD0.js → Toaster-BGY2IzF5.js} +53 -48
  165. package/dist/Toaster-BGY2IzF5.js.map +1 -0
  166. package/dist/{Toaster-DXLc86VD.js → Toaster-DTF9qnTy.js} +2 -2
  167. package/dist/{Toaster-DXLc86VD.js.map → Toaster-DTF9qnTy.js.map} +1 -1
  168. package/dist/{Toolbar-Bt3kShho.js → Toolbar-DObrJ_S5.js} +5 -4
  169. package/dist/{Toolbar-Bt3kShho.js.map → Toolbar-DObrJ_S5.js.map} +1 -1
  170. package/dist/{Toolbar-DaUKbbsL.js → Toolbar-DRJGKk8D.js} +6 -5
  171. package/dist/{Toolbar-DaUKbbsL.js.map → Toolbar-DRJGKk8D.js.map} +1 -1
  172. package/dist/Toolbar.js +2 -2
  173. package/dist/{ToolbarButtonToggle-BPu81Wuv.js → ToolbarButtonToggle-BCKgA8FE.js} +2 -2
  174. package/dist/{ToolbarButtonToggle-BPu81Wuv.js.map → ToolbarButtonToggle-BCKgA8FE.js.map} +1 -1
  175. package/dist/{Tooltip-yr1D06BE.js → Tooltip-DqS6xDUf.js} +27 -25
  176. package/dist/Tooltip-DqS6xDUf.js.map +1 -0
  177. package/dist/Tooltip.js +1 -1
  178. package/dist/TreeSelectField.d.ts +1 -0
  179. package/dist/TreeSelectField.js +2 -0
  180. package/dist/TreeSelectField.js.map +1 -0
  181. package/dist/TreeSelectFieldSync-Do5ffU0b.js +609 -0
  182. package/dist/TreeSelectFieldSync-Do5ffU0b.js.map +1 -0
  183. package/dist/TreeSelectFieldSync.css +173 -0
  184. package/dist/TreeSelectMenu.d.ts +1 -0
  185. package/dist/TreeSelectMenu.js +2 -0
  186. package/dist/TreeSelectMenu.js.map +1 -0
  187. package/dist/TreeSelectMenuSync-s05Ly6lj.js +413 -0
  188. package/dist/TreeSelectMenuSync-s05Ly6lj.js.map +1 -0
  189. package/dist/{YearlessDateInputWithPicker-BIcVgz-J.js → YearlessDateInputWithPicker-BHfFjCqE.js} +2 -2
  190. package/dist/{YearlessDateInputWithPicker-BIcVgz-J.js.map → YearlessDateInputWithPicker-BHfFjCqE.js.map} +1 -1
  191. package/dist/beta.js +15 -13
  192. package/dist/beta.js.map +1 -1
  193. package/dist/confirmationTypes-CG7xl50f.js +75 -0
  194. package/dist/confirmationTypes-CG7xl50f.js.map +1 -0
  195. package/dist/drag_indicator-BRHAPLSJ.js +6 -0
  196. package/dist/drag_indicator-BRHAPLSJ.js.map +1 -0
  197. package/dist/{filter-state-Bx3aYS1r.js → filter-state-CE8t3-Q7.js} +324 -84
  198. package/dist/filter-state-CE8t3-Q7.js.map +1 -0
  199. package/dist/{floating-ui.react-dom-CHrYz13o.js → floating-ui.react-dom-BIKT960u.js} +2 -2
  200. package/dist/{floating-ui.react-dom-CHrYz13o.js.map → floating-ui.react-dom-BIKT960u.js.map} +1 -1
  201. package/dist/{index-CukEaIHB.js → index-CKdC7x1S.js} +2 -2
  202. package/dist/{index-CukEaIHB.js.map → index-CKdC7x1S.js.map} +1 -1
  203. package/dist/{index-DVYRUKtW.js → index-DN_iqxhF.js} +79 -109
  204. package/dist/{index-DVYRUKtW.js.map → index-DN_iqxhF.js.map} +1 -1
  205. package/dist/index.js +44 -44
  206. package/dist/keyboard_arrow_left-CiE1n99w.js +6 -0
  207. package/dist/keyboard_arrow_left-CiE1n99w.js.map +1 -0
  208. package/dist/keyboard_arrow_right-DMloHg_F.js +6 -0
  209. package/dist/keyboard_arrow_right-DMloHg_F.js.map +1 -0
  210. package/dist/portalScopeClassNames-jlZkdug_.js +7 -0
  211. package/dist/portalScopeClassNames-jlZkdug_.js.map +1 -0
  212. package/dist/src/beta/components/FilterBar/FilterTextInput.d.ts +29 -0
  213. package/dist/src/beta/components/FilterBar/index.d.ts +1 -1
  214. package/dist/src/beta/components/FilterBar/internal/adapters/asyncTree.d.ts +6 -0
  215. package/dist/src/beta/components/FilterBar/internal/adapters/textInput.d.ts +3 -0
  216. package/dist/src/beta/components/FilterBar/internal/adapters/tree.d.ts +6 -0
  217. package/dist/src/beta/components/FilterBar/internal/adapters/types.d.ts +4 -1
  218. package/dist/src/beta/components/FilterBar/internal/types.d.ts +69 -12
  219. package/dist/src/beta/components/FilterBar/internal/utils/test.d.ts +4 -1
  220. package/dist/src/beta/components/Table/DataTable/DataTable.d.ts +8 -31
  221. package/dist/src/beta/components/Table/DataTable/internal/DataTableBody.d.ts +2 -19
  222. package/dist/src/beta/components/Table/DataTable/internal/DataTableBodyRow.d.ts +17 -13
  223. package/dist/src/beta/components/Table/DataTable/internal/context/focus/DTFocusContext.d.ts +1 -11
  224. package/dist/src/beta/components/Table/DataTable/internal/context/focus/useDTFocusDispatchContext.d.ts +0 -2
  225. package/dist/src/beta/components/Table/DataTable/internal/context/surface/DataTableSurfaceCoordinatorContext.d.ts +13 -0
  226. package/dist/src/beta/components/Table/DataTable/internal/context/surface/DataTableSurfaceCoordinatorProvider.d.ts +7 -0
  227. package/dist/src/beta/components/Table/DataTable/internal/context/surface/useDataTableSurfaceCoordinator.d.ts +1 -0
  228. package/dist/src/beta/components/Table/DataTable/internal/editable-cells/useCustomEditHelpers.d.ts +8 -6
  229. package/dist/src/beta/components/Table/DataTable/internal/useColumnOrder.d.ts +1 -0
  230. package/dist/src/beta/components/Table/createColumnHelper.d.ts +4 -2
  231. package/dist/src/beta/components/Table/formatters/htmlFormatter.d.ts +4 -2
  232. package/dist/src/beta/components/Table/formatters/htmlToMarkdown.d.ts +5 -2
  233. package/dist/src/beta/components/Table/formatters/markdownFormatter.d.ts +3 -2
  234. package/dist/src/beta/components/Table/types.d.ts +47 -30
  235. package/dist/src/beta/components/TreeSelectField/TreeSelectField.d.ts +68 -0
  236. package/dist/src/beta/components/TreeSelectField/TreeSelectFieldSync.d.ts +64 -0
  237. package/dist/src/beta/components/TreeSelectField/index.d.ts +3 -0
  238. package/dist/src/beta/components/TreeSelectField/internal/TreeContent.d.ts +31 -0
  239. package/dist/src/beta/components/TreeSelectField/internal/TreePanel.d.ts +56 -0
  240. package/dist/src/beta/components/TreeSelectField/internal/TreeRow.d.ts +56 -0
  241. package/dist/src/beta/components/TreeSelectField/internal/TreeSelectFieldInput.d.ts +82 -0
  242. package/dist/src/beta/components/TreeSelectField/internal/VirtualizedTreePanel.d.ts +57 -0
  243. package/dist/src/beta/components/TreeSelectField/internal/treeSync.d.ts +33 -0
  244. package/dist/src/beta/components/TreeSelectField/internal/treeUtils.d.ts +25 -0
  245. package/dist/src/beta/components/TreeSelectField/internal/types.d.ts +12 -0
  246. package/dist/src/beta/components/TreeSelectField/internal/useTree.d.ts +99 -0
  247. package/dist/src/beta/components/TreeSelectField/internal/useTreeCascade.d.ts +93 -0
  248. package/dist/src/beta/components/TreeSelectField/internal/useTreeKeyboard.d.ts +42 -0
  249. package/dist/src/beta/components/TreeSelectField/internal/useTreeLazyCascade.d.ts +56 -0
  250. package/dist/src/beta/components/TreeSelectField/internal/useTreeLoader.d.ts +58 -0
  251. package/dist/src/beta/components/TreeSelectField/stories/TreeSelectField.stories.data.d.ts +21 -0
  252. package/dist/src/beta/components/TreeSelectField/types.d.ts +124 -0
  253. package/dist/src/beta/components/TreeSelectMenu/TreeSelectMenu.d.ts +29 -0
  254. package/dist/src/beta/components/TreeSelectMenu/TreeSelectMenuSync.d.ts +65 -0
  255. package/dist/src/beta/components/TreeSelectMenu/index.d.ts +4 -0
  256. package/dist/src/beta/components/TreeSelectMenu/types.d.ts +103 -0
  257. package/dist/src/beta/components/index.d.ts +2 -0
  258. package/dist/src/components/Pagination/internal/Pagination.d.ts +1 -0
  259. package/dist/src/components/Pagination/internal/PaginationOverflowMenu.d.ts +12 -1
  260. package/dist/src/internal/components/Surface/Surface.d.ts +4 -0
  261. package/dist/src/internal/components/Surface/surfaceGeometry.d.ts +31 -0
  262. package/dist/src/internal/functions/portalScopeClassNames.d.ts +14 -0
  263. package/dist/src/internal/utils/arrayIdsEqual.d.ts +10 -0
  264. package/dist/src/internal/utils/index.d.ts +1 -0
  265. package/dist/{stripInlineMarkdown-C5DNxxwf.js → stripInlineMarkdown-C0bVmYgG.js} +2 -2
  266. package/dist/{stripInlineMarkdown-C5DNxxwf.js.map → stripInlineMarkdown-C0bVmYgG.js.map} +1 -1
  267. package/dist/{syncFilterUtils-BEKek64h.js → syncFilterUtils-CgHB-l6A.js} +35 -410
  268. package/dist/syncFilterUtils-CgHB-l6A.js.map +1 -0
  269. package/dist/syncFilterUtils.css +0 -180
  270. package/dist/treeSync-Cz3H08cr.js +1453 -0
  271. package/dist/treeSync-Cz3H08cr.js.map +1 -0
  272. package/dist/treeSync.css +40 -0
  273. package/dist/useAdaptiveView-CeYKH0Me.js +386 -0
  274. package/dist/useAdaptiveView-CeYKH0Me.js.map +1 -0
  275. package/dist/useAdaptiveView.css +181 -0
  276. package/dist/useChipLayout-BWZfKDgd.js +51 -0
  277. package/dist/useChipLayout-BWZfKDgd.js.map +1 -0
  278. package/dist/{useDrilldown-KZ9rRsXQ.js → useDrilldown-BJ2dHHKV.js} +2 -2
  279. package/dist/{useDrilldown-KZ9rRsXQ.js.map → useDrilldown-BJ2dHHKV.js.map} +1 -1
  280. package/dist/{useInfiniteCombobox-CknXmqlQ.js → useInfiniteCombobox-BqJm-CdN.js} +24 -24
  281. package/dist/useInfiniteCombobox-BqJm-CdN.js.map +1 -0
  282. package/dist/{useMenuInteraction-CpAOHSJu.js → useMenuInteraction-NEJXUD4I.js} +2 -114
  283. package/dist/useMenuInteraction-NEJXUD4I.js.map +1 -0
  284. package/dist/{useToggleSelection-B-Z80gy2.js → useToggleSelection-BGc5OiZF.js} +2 -2
  285. package/dist/{useToggleSelection-B-Z80gy2.js.map → useToggleSelection-BGc5OiZF.js.map} +1 -1
  286. package/package.json +5 -7
  287. package/dist/Avatar-FDHyqiCy.js.map +0 -1
  288. package/dist/DataTable-E8z0H8c7.js.map +0 -1
  289. package/dist/DndHandleButton-CHTOYRlq.js.map +0 -1
  290. package/dist/Menu-W0c-xKdX.js.map +0 -1
  291. package/dist/MultiSelectFieldSync-CXX2F0ru.js.map +0 -1
  292. package/dist/MultiSelectMenuSync-EKtvlL62.js.map +0 -1
  293. package/dist/Pagination-Bmd4JORe.js.map +0 -1
  294. package/dist/Popover-8mTJoMy7.js.map +0 -1
  295. package/dist/RichTextEditor-DstVbYch.js.map +0 -1
  296. package/dist/SavedFiltersButton-2qba2Cgu.js.map +0 -1
  297. package/dist/Toaster-CoChsMD0.js.map +0 -1
  298. package/dist/Tooltip-yr1D06BE.js.map +0 -1
  299. package/dist/filter-state-Bx3aYS1r.js.map +0 -1
  300. package/dist/keyboard_arrow_right-DZWNVytH.js +0 -8
  301. package/dist/keyboard_arrow_right-DZWNVytH.js.map +0 -1
  302. package/dist/syncFilterUtils-BEKek64h.js.map +0 -1
  303. package/dist/useInfiniteCombobox-CknXmqlQ.js.map +0 -1
  304. package/dist/useMenuInteraction-CpAOHSJu.js.map +0 -1
  305. /package/dist/{useMenuInteraction.css → MenuFooter.css} +0 -0
@@ -1,13 +1,15 @@
1
- import { CustomEditConfig, CustomEditController, CustomEditRenderContext, TableRow } from '../../../types';
1
+ import { CustomEditConfig, CustomEditController, CustomEditDraftValue, CustomEditInitialValue, CustomEditPresentObjectValue, TableRow } from '../../../types';
2
2
  type CustomObjectValue = object;
3
- type CustomEditHelperValue<T, K extends keyof T> = CustomEditRenderContext<T, K>["controller"]["draftValue"];
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
  */
@@ -7,4 +7,5 @@ export declare const useColumnOrder: <T>({ table }: {
7
7
  table: TanstackTable<T>;
8
8
  }) => {
9
9
  columnOrder: number[];
10
+ columnIndexMap: Map<number, number>;
10
11
  };
@@ -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"` preserves object-valued canonical state and typed draft helpers
186
- * - `editConfig.onChange` callback receives the correct value type for the column
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, ul, ol, li, br, p.
7
- * Unsupported tags and their content are dropped entirely.
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, ul, ol, li, br, p.
5
- * Unsupported tags and their content are dropped entirely.
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, inline code, highlight)
6
- * and block-level flat lists (unordered with `- `, ordered with `N. `).
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 CustomEditCanonicalValueForValue<TValue> = TValue extends readonly (infer _Element)[] ? never : TValue extends object ? NonNullable<TValue> : never;
65
- type CustomEditCanonicalValue<T, K extends keyof T> = CustomEditCanonicalValueForValue<NonNullable<T[K]>>;
66
- export type CustomEditFieldValueUpdater<TValue extends object, TField extends keyof TValue> = TValue[TField] | ((previousValue: TValue[TField], draftValue: TValue) => TValue[TField]);
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: TValue;
118
+ draftValue: TDraftValue;
109
119
  /**
110
120
  * Original committed value when editing began.
111
121
  */
112
- initialValue: TValue;
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 value owned by the custom editor.
134
+ * Current local draft. Custom editors may hold a partial object, or a
135
+ * row-type-supported nullish value.
125
136
  */
126
- draftValue: TValue;
137
+ draftValue: TDraftValue;
127
138
  /**
128
139
  * Original value before editing began.
129
140
  */
130
- initialValue: TValue;
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<TValue>) => TValue;
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>) => TValue;
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
- * Canonical committed value for the cell.
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<CustomEditCanonicalValue<T, K>>;
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
- * Preserves canonical object values while continuing to use `renderCell`
211
- * for the read path.
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
- CustomEditCanonicalValue<T, K>
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[K], rowId: string) => void;
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[K], rowId: string) => void;
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: CustomEditCanonicalValue<T, K>, rowId: string) => CustomEditValidation<CustomEditCanonicalValue<T, K>> | undefined;
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<CustomEditCanonicalValue<T, K>>) => boolean | void;
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
- * onChange: (value, rowId) => save(value, rowId),
605
- * onDraftChange: (value, rowId) => saveDraft(value, rowId),
606
- * renderEditor: ({ helpers }) => renderAddressEditor(helpers)
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,3 @@
1
+ export { TreeSelectField } from './TreeSelectField';
2
+ export { TreeSelectFieldSync } from './TreeSelectFieldSync';
3
+ export * from './types';
@@ -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
+ };