@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.
Files changed (361) hide show
  1. package/CHANGELOG.md +52 -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 -2
  33. package/dist/Combobox.js.map +1 -1
  34. package/dist/{DataTable-0kOuVgSB.js → DataTable-Dwhwvm6R.js} +205 -78
  35. package/dist/DataTable-Dwhwvm6R.js.map +1 -0
  36. package/dist/DataTable.css +47 -5
  37. package/dist/{DateFieldRange-Be_I9GTp.js → DateFieldRange-BUug1tUy.js} +27 -15
  38. package/dist/DateFieldRange-BUug1tUy.js.map +1 -0
  39. package/dist/DateFieldRange.js +1 -1
  40. package/dist/{DateFieldSingle-CsrsY9i8.js → DateFieldSingle-DR7faQGD.js} +5 -5
  41. package/dist/{DateFieldSingle-CsrsY9i8.js.map → DateFieldSingle-DR7faQGD.js.map} +1 -1
  42. package/dist/DateFieldSingle.js +1 -1
  43. package/dist/{DateFieldYearless-m_Hl2gMY.js → DateFieldYearless-7MFcR7L6.js} +4 -4
  44. package/dist/{DateFieldYearless-m_Hl2gMY.js.map → DateFieldYearless-7MFcR7L6.js.map} +1 -1
  45. package/dist/DateFieldYearless.js +1 -1
  46. package/dist/{DateFieldYearlessRange-DNqSTBDr.js → DateFieldYearlessRange-DGtdyISH.js} +3 -3
  47. package/dist/{DateFieldYearlessRange-DNqSTBDr.js.map → DateFieldYearlessRange-DGtdyISH.js.map} +1 -1
  48. package/dist/DateFieldYearlessRange.js +1 -1
  49. package/dist/{DaysOfTheWeek-D58z_eF3.js → DaysOfTheWeek-C7oN9nIe.js} +3 -3
  50. package/dist/{DaysOfTheWeek-D58z_eF3.js.map → DaysOfTheWeek-C7oN9nIe.js.map} +1 -1
  51. package/dist/DaysOfTheWeek.js +1 -1
  52. package/dist/{Dialog-CD-SDfPT.js → Dialog-dE9c90iR.js} +4 -4
  53. package/dist/{Dialog-CD-SDfPT.js.map → Dialog-dE9c90iR.js.map} +1 -1
  54. package/dist/Dialog.js +1 -1
  55. package/dist/{Drawer-s2y0xcgV.js → Drawer-Dk0MsaOU.js} +3 -3
  56. package/dist/{Drawer-s2y0xcgV.js.map → Drawer-Dk0MsaOU.js.map} +1 -1
  57. package/dist/Drawer.js +1 -1
  58. package/dist/DrillDown.js +1 -1
  59. package/dist/{EditCard-B25pj0Jx.js → EditCard-DV2N7zWr.js} +2 -2
  60. package/dist/{EditCard-B25pj0Jx.js.map → EditCard-DV2N7zWr.js.map} +1 -1
  61. package/dist/EditCard.js +1 -1
  62. package/dist/{FieldLabel-D1qPAGtB.js → FieldLabel-VVn8GR64.js} +3 -3
  63. package/dist/{FieldLabel-D1qPAGtB.js.map → FieldLabel-VVn8GR64.js.map} +1 -1
  64. package/dist/FieldLabel.js +1 -1
  65. package/dist/FilterBar-CXGsoWw5.js +413 -0
  66. package/dist/FilterBar-CXGsoWw5.js.map +1 -0
  67. package/dist/FilterBar.js +1 -1
  68. package/dist/{InputMask-BDl09V4u.js → InputMask-VBHWGZGN.js} +3 -3
  69. package/dist/{InputMask-BDl09V4u.js.map → InputMask-VBHWGZGN.js.map} +1 -1
  70. package/dist/InputMask.js +1 -1
  71. package/dist/{ListView-CcRRh1ap.js → ListView-BUrfz75g.js} +6 -6
  72. package/dist/{ListView-CcRRh1ap.js.map → ListView-BUrfz75g.js.map} +1 -1
  73. package/dist/ListView.js +1 -1
  74. package/dist/{ListView.module-CKUQP3kf.js → ListView.module-DfqtCL3Q.js} +3 -3
  75. package/dist/ListView.module-DfqtCL3Q.js.map +1 -0
  76. package/dist/{Listbox-CvQHBFWb.js → Listbox-CRY-0BkS.js} +2 -2
  77. package/dist/{Listbox-CvQHBFWb.js.map → Listbox-CRY-0BkS.js.map} +1 -1
  78. package/dist/Listbox.js +1 -1
  79. package/dist/{Menu-W0c-xKdX.js → Menu-DNJ0YqjA.js} +11 -7
  80. package/dist/Menu-DNJ0YqjA.js.map +1 -0
  81. package/dist/Menu.js +1 -1
  82. package/dist/MenuFooter-CrsZdXvN.js +115 -0
  83. package/dist/MenuFooter-CrsZdXvN.js.map +1 -0
  84. package/dist/MenuFooter.css +28 -0
  85. package/dist/MultiSelectField.js +1 -1
  86. package/dist/{MultiSelectFieldSync-BMVROOjy.js → MultiSelectFieldSync-CIuy3aRD.js} +64 -79
  87. package/dist/MultiSelectFieldSync-CIuy3aRD.js.map +1 -0
  88. package/dist/MultiSelectFieldSync.css +72 -69
  89. package/dist/MultiSelectMenu.js +1 -1
  90. package/dist/{MultiSelectMenuSync-BNPp_2Bm.js → MultiSelectMenuSync-Drz8SEk9.js} +150 -46
  91. package/dist/MultiSelectMenuSync-Drz8SEk9.js.map +1 -0
  92. package/dist/{NumberField-BymFZhIJ.js → NumberField-bgYX7JGs.js} +3 -3
  93. package/dist/{NumberField-BymFZhIJ.js.map → NumberField-bgYX7JGs.js.map} +1 -1
  94. package/dist/NumberField.js +1 -1
  95. package/dist/{Page-SBy27-Wv.js → Page-BSHydn4p.js} +9 -9
  96. package/dist/{Page-SBy27-Wv.js.map → Page-BSHydn4p.js.map} +1 -1
  97. package/dist/Page.js +1 -1
  98. package/dist/{Pagination-Cm8-K6VH.js → Pagination-CAeyJ7Pl.js} +193 -27
  99. package/dist/Pagination-CAeyJ7Pl.js.map +1 -0
  100. package/dist/Pagination.css +4 -2
  101. package/dist/Pagination.js +1 -1
  102. package/dist/{Popover-8mTJoMy7.js → Popover-Cq5tirFz.js} +11 -5
  103. package/dist/Popover-Cq5tirFz.js.map +1 -0
  104. package/dist/Popover.js +1 -1
  105. package/dist/{ProgressBar-C1CkQHV5.js → ProgressBar-ByR50ln7.js} +2 -2
  106. package/dist/{ProgressBar-C1CkQHV5.js.map → ProgressBar-ByR50ln7.js.map} +1 -1
  107. package/dist/ProgressBar.js +1 -1
  108. package/dist/{Radio-BcHMk8dD.js → Radio-CPuctRpl.js} +2 -2
  109. package/dist/{Radio-BcHMk8dD.js.map → Radio-CPuctRpl.js.map} +1 -1
  110. package/dist/{Radio-D5WyQN2i.js → Radio-WlsZFRzX.js} +3 -3
  111. package/dist/{Radio-D5WyQN2i.js.map → Radio-WlsZFRzX.js.map} +1 -1
  112. package/dist/Radio.js +1 -1
  113. package/dist/{RichTextEditor-DstVbYch.js → RichTextEditor-CoPXdaWI.js} +78 -42
  114. package/dist/RichTextEditor-CoPXdaWI.js.map +1 -0
  115. package/dist/RichTextEditor.js +1 -1
  116. package/dist/SavedFiltersButton-DzJijqHz.js +651 -0
  117. package/dist/SavedFiltersButton-DzJijqHz.js.map +1 -0
  118. package/dist/SavedFiltersButton.css +8 -0
  119. package/dist/SavedFiltersButton.d.ts +1 -0
  120. package/dist/SavedFiltersButton.js +2 -0
  121. package/dist/SavedFiltersButton.js.map +1 -0
  122. package/dist/{SearchField-3tUPU8hH.js → SearchField-BMHJCVFu.js} +2 -2
  123. package/dist/{SearchField-3tUPU8hH.js.map → SearchField-BMHJCVFu.js.map} +1 -1
  124. package/dist/{SearchField-BcQZ5e0x.js → SearchField-fXc_vWEr.js} +2 -2
  125. package/dist/{SearchField-BcQZ5e0x.js.map → SearchField-fXc_vWEr.js.map} +1 -1
  126. package/dist/SearchField.js +1 -1
  127. package/dist/{SelectCard-BN-LI14f.js → SelectCard-DLWLHi_i.js} +3 -3
  128. package/dist/{SelectCard-BN-LI14f.js.map → SelectCard-DLWLHi_i.js.map} +1 -1
  129. package/dist/SelectCard.js +1 -1
  130. package/dist/SelectField.js +1 -1
  131. package/dist/{SelectFieldLabel-UbQT7fDD.js → SelectFieldLabel-vemffdmu.js} +2 -2
  132. package/dist/{SelectFieldLabel-UbQT7fDD.js.map → SelectFieldLabel-vemffdmu.js.map} +1 -1
  133. package/dist/{SelectFieldSync-BeDYbJ2M.js → SelectFieldSync-DlGiJ-Iy.js} +5 -4
  134. package/dist/{SelectFieldSync-BeDYbJ2M.js.map → SelectFieldSync-DlGiJ-Iy.js.map} +1 -1
  135. package/dist/SelectMenu.js +1 -1
  136. package/dist/{SelectMenuSync-C-PFemsQ.js → SelectMenuSync-CAweNjRL.js} +23 -9
  137. package/dist/SelectMenuSync-CAweNjRL.js.map +1 -0
  138. package/dist/{SelectOptions-Tr11Ckqw.js → SelectOptions-BGCap9fZ.js} +2 -2
  139. package/dist/{SelectOptions-Tr11Ckqw.js.map → SelectOptions-BGCap9fZ.js.map} +1 -1
  140. package/dist/{SelectTrigger-DTz7V-Xx.js → SelectTrigger-BbneVXMz.js} +3 -3
  141. package/dist/{SelectTrigger-DTz7V-Xx.js.map → SelectTrigger-BbneVXMz.js.map} +1 -1
  142. package/dist/SelectTrigger.js +1 -1
  143. package/dist/{SelectTriggerBase-Ds6I7Qbr.js → SelectTriggerBase-BjIOERXr.js} +136 -40
  144. package/dist/SelectTriggerBase-BjIOERXr.js.map +1 -0
  145. package/dist/{Switch-onmiKoRd.js → Switch-B6bKmpwN.js} +3 -3
  146. package/dist/{Switch-onmiKoRd.js.map → Switch-B6bKmpwN.js.map} +1 -1
  147. package/dist/Switch.js +1 -1
  148. package/dist/Table.js +1 -1
  149. package/dist/{Text-BTzgTpqu.js → Text-w2gWn4K6.js} +2 -2
  150. package/dist/{Text-BTzgTpqu.js.map → Text-w2gWn4K6.js.map} +1 -1
  151. package/dist/Text.js +1 -1
  152. package/dist/{TextField-WTYZJlX3.js → TextField-BQsCh5Nb.js} +2 -2
  153. package/dist/{TextField-WTYZJlX3.js.map → TextField-BQsCh5Nb.js.map} +1 -1
  154. package/dist/{TextField-rVfctM1E.js → TextField-DJ3gEIP6.js} +3 -3
  155. package/dist/{TextField-rVfctM1E.js.map → TextField-DJ3gEIP6.js.map} +1 -1
  156. package/dist/TextField.js +1 -1
  157. package/dist/{Textarea-PXjppEQ6.js → Textarea-BK4Vf84K.js} +3 -3
  158. package/dist/{Textarea-PXjppEQ6.js.map → Textarea-BK4Vf84K.js.map} +1 -1
  159. package/dist/Textarea.js +1 -1
  160. package/dist/{ThemeProvider-D4KdGCaP.js → ThemeProvider-BC6wbuLU.js} +4 -9
  161. package/dist/{ThemeProvider-D4KdGCaP.js.map → ThemeProvider-BC6wbuLU.js.map} +1 -1
  162. package/dist/ThemeProvider.js +1 -1
  163. package/dist/ThemeProvider.module-D9pNGYjP.js +8 -0
  164. package/dist/ThemeProvider.module-D9pNGYjP.js.map +1 -0
  165. package/dist/{TimeField-BJPXIv6W.js → TimeField-B4IW2B_o.js} +4 -4
  166. package/dist/{TimeField-BJPXIv6W.js.map → TimeField-B4IW2B_o.js.map} +1 -1
  167. package/dist/TimeField.js +1 -1
  168. package/dist/Toast.js +2 -2
  169. package/dist/{Toaster-CoChsMD0.js → Toaster-BGY2IzF5.js} +53 -48
  170. package/dist/Toaster-BGY2IzF5.js.map +1 -0
  171. package/dist/{Toaster-DXLc86VD.js → Toaster-DTF9qnTy.js} +2 -2
  172. package/dist/{Toaster-DXLc86VD.js.map → Toaster-DTF9qnTy.js.map} +1 -1
  173. package/dist/{Toolbar-Bt3kShho.js → Toolbar-DObrJ_S5.js} +5 -4
  174. package/dist/{Toolbar-Bt3kShho.js.map → Toolbar-DObrJ_S5.js.map} +1 -1
  175. package/dist/{Toolbar-BUd9eNkq.js → Toolbar-DRJGKk8D.js} +7 -6
  176. package/dist/{Toolbar-BUd9eNkq.js.map → Toolbar-DRJGKk8D.js.map} +1 -1
  177. package/dist/Toolbar.js +2 -2
  178. package/dist/{ToolbarButtonToggle-C06cqJ6F.js → ToolbarButtonToggle-BCKgA8FE.js} +5 -4
  179. package/dist/ToolbarButtonToggle-BCKgA8FE.js.map +1 -0
  180. package/dist/{Tooltip-yr1D06BE.js → Tooltip-DqS6xDUf.js} +27 -25
  181. package/dist/Tooltip-DqS6xDUf.js.map +1 -0
  182. package/dist/Tooltip.js +1 -1
  183. package/dist/TreeSelectField.d.ts +1 -0
  184. package/dist/TreeSelectField.js +2 -0
  185. package/dist/TreeSelectField.js.map +1 -0
  186. package/dist/TreeSelectFieldSync-Do5ffU0b.js +609 -0
  187. package/dist/TreeSelectFieldSync-Do5ffU0b.js.map +1 -0
  188. package/dist/TreeSelectFieldSync.css +173 -0
  189. package/dist/TreeSelectMenu.d.ts +1 -0
  190. package/dist/TreeSelectMenu.js +2 -0
  191. package/dist/TreeSelectMenu.js.map +1 -0
  192. package/dist/TreeSelectMenuSync-s05Ly6lj.js +413 -0
  193. package/dist/TreeSelectMenuSync-s05Ly6lj.js.map +1 -0
  194. package/dist/{YearlessDateInputWithPicker-BIcVgz-J.js → YearlessDateInputWithPicker-BHfFjCqE.js} +2 -2
  195. package/dist/{YearlessDateInputWithPicker-BIcVgz-J.js.map → YearlessDateInputWithPicker-BHfFjCqE.js.map} +1 -1
  196. package/dist/beta.js +15 -12
  197. package/dist/beta.js.map +1 -1
  198. package/dist/confirmationTypes-CG7xl50f.js +75 -0
  199. package/dist/confirmationTypes-CG7xl50f.js.map +1 -0
  200. package/dist/filter-state-DyMDjdRS.js +1867 -0
  201. package/dist/filter-state-DyMDjdRS.js.map +1 -0
  202. package/dist/{FilterBar.css → filter-state.css} +19 -33
  203. package/dist/{floating-ui.react-dom-CHrYz13o.js → floating-ui.react-dom-BIKT960u.js} +2 -2
  204. package/dist/{floating-ui.react-dom-CHrYz13o.js.map → floating-ui.react-dom-BIKT960u.js.map} +1 -1
  205. package/dist/{index-DVYRUKtW.js → index-fSKD4ey4.js} +79 -109
  206. package/dist/{index-DVYRUKtW.js.map → index-fSKD4ey4.js.map} +1 -1
  207. package/dist/index.js +43 -44
  208. package/dist/index.js.map +1 -1
  209. package/dist/keyboard_arrow_left-CiE1n99w.js +6 -0
  210. package/dist/keyboard_arrow_left-CiE1n99w.js.map +1 -0
  211. package/dist/keyboard_arrow_right-DMloHg_F.js +6 -0
  212. package/dist/keyboard_arrow_right-DMloHg_F.js.map +1 -0
  213. package/dist/portalScopeClassNames-jlZkdug_.js +7 -0
  214. package/dist/portalScopeClassNames-jlZkdug_.js.map +1 -0
  215. package/dist/src/beta/components/FilterBar/FilterBar.d.ts +12 -10
  216. package/dist/src/beta/components/FilterBar/FilterDateList.d.ts +15 -5
  217. package/dist/src/beta/components/FilterBar/FilterDateRange.d.ts +34 -29
  218. package/dist/src/beta/components/FilterBar/FilterDateSingle.d.ts +31 -22
  219. package/dist/src/beta/components/FilterBar/FilterDrawer.d.ts +1 -1
  220. package/dist/src/beta/components/FilterBar/FilterItemWrapper.d.ts +4 -12
  221. package/dist/src/beta/components/FilterBar/FilterNumericRange.d.ts +29 -0
  222. package/dist/src/beta/components/FilterBar/FilterPopoverButton.d.ts +86 -0
  223. package/dist/src/beta/components/FilterBar/FilterTextInput.d.ts +29 -0
  224. package/dist/src/beta/components/FilterBar/FilterToggleButton.d.ts +2 -2
  225. package/dist/src/beta/components/FilterBar/FilterTriggerButton.d.ts +50 -0
  226. package/dist/src/beta/components/FilterBar/index.d.ts +1 -1
  227. package/dist/src/beta/components/FilterBar/internal/FilterGroupContext.d.ts +5 -9
  228. package/dist/src/beta/components/FilterBar/internal/adapters/asyncMultiSelect.d.ts +6 -0
  229. package/dist/src/beta/components/FilterBar/internal/adapters/asyncSelect.d.ts +6 -0
  230. package/dist/src/beta/components/FilterBar/internal/adapters/asyncTree.d.ts +6 -0
  231. package/dist/src/beta/components/FilterBar/internal/adapters/boolean.d.ts +3 -0
  232. package/dist/src/beta/components/FilterBar/internal/adapters/custom.d.ts +3 -0
  233. package/dist/src/beta/components/FilterBar/internal/adapters/date.d.ts +5 -0
  234. package/dist/src/beta/components/FilterBar/internal/adapters/dateList.d.ts +5 -0
  235. package/dist/src/beta/components/FilterBar/internal/adapters/dateRange.d.ts +8 -0
  236. package/dist/src/beta/components/FilterBar/internal/adapters/index.d.ts +15 -0
  237. package/dist/src/beta/components/FilterBar/internal/adapters/multiSelect.d.ts +6 -0
  238. package/dist/src/beta/components/FilterBar/internal/adapters/numericRange.d.ts +3 -0
  239. package/dist/src/beta/components/FilterBar/internal/adapters/singleSelect.d.ts +6 -0
  240. package/dist/src/beta/components/FilterBar/internal/adapters/textInput.d.ts +3 -0
  241. package/dist/src/beta/components/FilterBar/internal/adapters/tree.d.ts +6 -0
  242. package/dist/src/beta/components/FilterBar/internal/adapters/types.d.ts +81 -0
  243. package/dist/src/beta/components/FilterBar/internal/types.d.ts +223 -61
  244. package/dist/src/beta/components/FilterBar/internal/utils/dateListLibraryOptions.d.ts +2 -2
  245. package/dist/src/beta/components/FilterBar/internal/utils/filter-state.d.ts +2 -40
  246. package/dist/src/beta/components/FilterBar/internal/utils/test.d.ts +16 -28
  247. package/dist/src/beta/components/FilterBar/internal/utils/value-compare.d.ts +14 -0
  248. package/dist/src/beta/components/MultiSelectField/internal/MultiSelectFieldComboboxMode.d.ts +1 -1
  249. package/dist/src/beta/components/MultiSelectField/internal/MultiSelectFieldSelectMode.d.ts +1 -1
  250. package/dist/src/beta/components/MultiSelectField/internal/types.d.ts +4 -2
  251. package/dist/src/beta/components/MultiSelectField/internal/useComboMultiple.d.ts +7 -5
  252. package/dist/src/beta/components/MultiSelectField/internal/useSelectModeMultiple.d.ts +5 -2
  253. package/dist/src/beta/components/MultiSelectField/types.d.ts +21 -36
  254. package/dist/src/beta/components/MultiSelectMenu/MultiSelectMenu.d.ts +1 -0
  255. package/dist/src/beta/components/MultiSelectMenu/types.d.ts +52 -12
  256. package/dist/src/beta/components/SavedFiltersButton/SavedFiltersButton.d.ts +40 -0
  257. package/dist/src/beta/components/SavedFiltersButton/index.d.ts +2 -0
  258. package/dist/src/beta/components/SavedFiltersButton/internal/AddSavedFilterDrawer.d.ts +27 -0
  259. package/dist/src/beta/components/SavedFiltersButton/internal/EditSavedFiltersDrawer.d.ts +38 -0
  260. package/dist/src/beta/components/SavedFiltersButton/types.d.ts +147 -0
  261. package/dist/src/beta/components/SelectField/types.d.ts +7 -11
  262. package/dist/src/beta/components/SelectMenu/internal/useMenuInteraction.d.ts +8 -1
  263. package/dist/src/beta/components/SelectMenu/types.d.ts +21 -1
  264. package/dist/src/beta/components/Table/DataTable/DataTable.d.ts +4 -6
  265. package/dist/src/beta/components/Table/DataTable/internal/DataTableBodyRow.d.ts +6 -1
  266. package/dist/src/beta/components/Table/DataTable/internal/DataTablePagination.d.ts +6 -0
  267. package/dist/src/beta/components/Table/DataTable/internal/context/focus/DTFocusContext.d.ts +1 -11
  268. package/dist/src/beta/components/Table/DataTable/internal/context/focus/useDTFocusDispatchContext.d.ts +0 -2
  269. package/dist/src/beta/components/Table/DataTable/internal/useColumnOrder.d.ts +1 -0
  270. package/dist/src/beta/components/Table/DataTable/types.d.ts +43 -10
  271. package/dist/src/beta/components/Toolbar/internal/ToolbarContext.d.ts +3 -2
  272. package/dist/src/beta/components/TreeSelectField/TreeSelectField.d.ts +68 -0
  273. package/dist/src/beta/components/TreeSelectField/TreeSelectFieldSync.d.ts +64 -0
  274. package/dist/src/beta/components/TreeSelectField/index.d.ts +3 -0
  275. package/dist/src/beta/components/TreeSelectField/internal/TreeContent.d.ts +31 -0
  276. package/dist/src/beta/components/TreeSelectField/internal/TreePanel.d.ts +56 -0
  277. package/dist/src/beta/components/TreeSelectField/internal/TreeRow.d.ts +56 -0
  278. package/dist/src/beta/components/TreeSelectField/internal/TreeSelectFieldInput.d.ts +82 -0
  279. package/dist/src/beta/components/TreeSelectField/internal/VirtualizedTreePanel.d.ts +57 -0
  280. package/dist/src/beta/components/TreeSelectField/internal/treeSync.d.ts +33 -0
  281. package/dist/src/beta/components/TreeSelectField/internal/treeUtils.d.ts +25 -0
  282. package/dist/src/beta/components/TreeSelectField/internal/types.d.ts +12 -0
  283. package/dist/src/beta/components/TreeSelectField/internal/useTree.d.ts +99 -0
  284. package/dist/src/beta/components/TreeSelectField/internal/useTreeCascade.d.ts +93 -0
  285. package/dist/src/beta/components/TreeSelectField/internal/useTreeKeyboard.d.ts +42 -0
  286. package/dist/src/beta/components/TreeSelectField/internal/useTreeLazyCascade.d.ts +56 -0
  287. package/dist/src/beta/components/TreeSelectField/internal/useTreeLoader.d.ts +58 -0
  288. package/dist/src/beta/components/TreeSelectField/stories/TreeSelectField.stories.data.d.ts +21 -0
  289. package/dist/src/beta/components/TreeSelectField/types.d.ts +124 -0
  290. package/dist/src/beta/components/TreeSelectMenu/TreeSelectMenu.d.ts +29 -0
  291. package/dist/src/beta/components/TreeSelectMenu/TreeSelectMenuSync.d.ts +65 -0
  292. package/dist/src/beta/components/TreeSelectMenu/index.d.ts +4 -0
  293. package/dist/src/beta/components/TreeSelectMenu/types.d.ts +103 -0
  294. package/dist/src/beta/components/index.d.ts +3 -0
  295. package/dist/src/components/Pagination/internal/Pagination.d.ts +1 -0
  296. package/dist/src/components/Pagination/internal/PaginationOverflowMenu.d.ts +12 -1
  297. package/dist/src/internal/components/MenuFooter/MenuFooter.d.ts +43 -0
  298. package/dist/src/internal/components/OptionCheckbox.d.ts +6 -0
  299. package/dist/src/internal/components/OptionContentArea.d.ts +8 -0
  300. package/dist/src/internal/components/OptionRow.d.ts +10 -0
  301. package/dist/src/internal/components/OptionsPopover/OptionsPopover.d.ts +4 -4
  302. package/dist/src/internal/functions/portalScopeClassNames.d.ts +14 -0
  303. package/dist/src/internal/hooks/index.d.ts +2 -0
  304. package/dist/src/internal/hooks/useBulkActionRunner.d.ts +41 -0
  305. package/dist/src/internal/hooks/useConfirmationDraft.d.ts +21 -0
  306. package/dist/src/internal/types/bulkActionTypes.d.ts +39 -0
  307. package/dist/src/internal/types/confirmationTypes.d.ts +19 -0
  308. package/dist/src/internal/types/optionContent.d.ts +19 -0
  309. package/dist/src/internal/types/selectFieldInternalTypes.d.ts +2 -0
  310. package/dist/src/internal/utils/arrayIdsEqual.d.ts +10 -0
  311. package/dist/src/internal/utils/index.d.ts +1 -0
  312. package/dist/{stripInlineMarkdown-C5DNxxwf.js → stripInlineMarkdown-C0bVmYgG.js} +2 -2
  313. package/dist/{stripInlineMarkdown-C5DNxxwf.js.map → stripInlineMarkdown-C0bVmYgG.js.map} +1 -1
  314. package/dist/{syncFilterUtils-COxBIkt6.js → syncFilterUtils-DZqeVWTS.js} +49 -385
  315. package/dist/syncFilterUtils-DZqeVWTS.js.map +1 -0
  316. package/dist/syncFilterUtils.css +21 -164
  317. package/dist/treeSync-Cz3H08cr.js +1453 -0
  318. package/dist/treeSync-Cz3H08cr.js.map +1 -0
  319. package/dist/treeSync.css +40 -0
  320. package/dist/useAdaptiveView-CeYKH0Me.js +386 -0
  321. package/dist/useAdaptiveView-CeYKH0Me.js.map +1 -0
  322. package/dist/useAdaptiveView.css +181 -0
  323. package/dist/useChipLayout-BWZfKDgd.js +51 -0
  324. package/dist/useChipLayout-BWZfKDgd.js.map +1 -0
  325. package/dist/{useDrilldown-KZ9rRsXQ.js → useDrilldown-BJ2dHHKV.js} +2 -2
  326. package/dist/{useDrilldown-KZ9rRsXQ.js.map → useDrilldown-BJ2dHHKV.js.map} +1 -1
  327. package/dist/{Combobox-Cp7M4-4r.js → useInfiniteCombobox-C6TDFfds.js} +206 -31
  328. package/dist/useInfiniteCombobox-C6TDFfds.js.map +1 -0
  329. package/dist/{useMenuInteraction-C4RU5Fdq.js → useMenuInteraction-NEJXUD4I.js} +5 -4
  330. package/dist/useMenuInteraction-NEJXUD4I.js.map +1 -0
  331. package/dist/{useToggleSelection-B5PnTuT2.js → useToggleSelection-Bn7h-gGD.js} +53 -4
  332. package/dist/useToggleSelection-Bn7h-gGD.js.map +1 -0
  333. package/package.json +3 -5
  334. package/dist/Avatar-FDHyqiCy.js.map +0 -1
  335. package/dist/Combobox-Cp7M4-4r.js.map +0 -1
  336. package/dist/DataTable-0kOuVgSB.js.map +0 -1
  337. package/dist/DateFieldRange-Be_I9GTp.js.map +0 -1
  338. package/dist/FilterBar-yysyZ-t1.js +0 -1797
  339. package/dist/FilterBar-yysyZ-t1.js.map +0 -1
  340. package/dist/ListView.module-CKUQP3kf.js.map +0 -1
  341. package/dist/Menu-W0c-xKdX.js.map +0 -1
  342. package/dist/MultiSelectFieldSync-BMVROOjy.js.map +0 -1
  343. package/dist/MultiSelectMenuSync-BNPp_2Bm.js.map +0 -1
  344. package/dist/Pagination-Cm8-K6VH.js.map +0 -1
  345. package/dist/Popover-8mTJoMy7.js.map +0 -1
  346. package/dist/RichTextEditor-DstVbYch.js.map +0 -1
  347. package/dist/SelectMenuSync-C-PFemsQ.js.map +0 -1
  348. package/dist/SelectTriggerBase-Ds6I7Qbr.js.map +0 -1
  349. package/dist/Toaster-CoChsMD0.js.map +0 -1
  350. package/dist/ToolbarButtonToggle-C06cqJ6F.js.map +0 -1
  351. package/dist/Tooltip-yr1D06BE.js.map +0 -1
  352. package/dist/keyboard_arrow_right-DZWNVytH.js +0 -8
  353. package/dist/keyboard_arrow_right-DZWNVytH.js.map +0 -1
  354. package/dist/src/beta/components/FilterBar/FilterButton.d.ts +0 -33
  355. package/dist/src/beta/components/FilterBar/FilterSelect.d.ts +0 -29
  356. package/dist/syncFilterUtils-COxBIkt6.js.map +0 -1
  357. package/dist/useInfiniteCombobox-WcRgC9p6.js +0 -179
  358. package/dist/useInfiniteCombobox-WcRgC9p6.js.map +0 -1
  359. package/dist/useMenuInteraction-C4RU5Fdq.js.map +0 -1
  360. package/dist/useToggleSelection-B5PnTuT2.js.map +0 -1
  361. /package/dist/{Combobox.css → useInfiniteCombobox.css} +0 -0
@@ -1,6 +1,10 @@
1
1
  import { ReactNode } from 'react';
2
2
  import { DateFieldSingleProps } from '../../../../components/DateFieldSingle';
3
3
  import { DateFieldRangeProps } from '../../../../components/DateFieldRange';
4
+ import { SelectMenuOption, SelectMenuProps, SelectMenuSyncProps } from '../../SelectMenu';
5
+ import { MultiSelectMenuOption, MultiSelectMenuProps, MultiSelectMenuSyncProps } from '../../MultiSelectMenu';
6
+ import { TreeSelectMenuProps, TreeSelectMenuSyncProps, TreeSelectMenuValue } from '../../TreeSelectMenu';
7
+ import { DistributiveOmit } from '../../../../types';
4
8
  /**
5
9
  * Base properties shared by all filter types
6
10
  */
@@ -9,6 +13,8 @@ export type BaseFilter = {
9
13
  id: string;
10
14
  /** Display label for the filter */
11
15
  label: string;
16
+ /** When true, the filter is only reachable via the drawer and never rendered inline in the toolbar */
17
+ drawerOnly?: boolean;
12
18
  };
13
19
  /**
14
20
  * Built-in boolean filter type
@@ -29,14 +35,9 @@ export type FilterRenderProps<T = unknown> = {
29
35
  /** Callback to update the filter value */
30
36
  onChange: (value?: T) => void;
31
37
  };
32
- /**
33
- * Custom filter type allowing for complex filter implementations
34
- */
35
- export type CustomFilter<T = unknown> = BaseFilter & {
38
+ type CustomFilterShared<T> = BaseFilter & {
36
39
  /** Identifies this as a custom filter */
37
40
  type: "custom";
38
- /** Function to render the filter content in the button/popover */
39
- buttonRender: (props: FilterRenderProps<T>) => ReactNode;
40
41
  /** Function to render the filter content in the drawer */
41
42
  drawerRender: (props: FilterRenderProps<T>) => ReactNode;
42
43
  /** Current value of the custom filter */
@@ -45,68 +46,62 @@ export type CustomFilter<T = unknown> = BaseFilter & {
45
46
  labelChipCount?: number;
46
47
  };
47
48
  /**
48
- * Single select filter type using Listbox component with optional search
49
+ * Custom filter type allowing for complex filter implementations.
50
+ *
51
+ * `buttonRender` is required for filters that can appear inline in the
52
+ * toolbar, and forbidden when `drawerOnly: true` since the filter never
53
+ * renders inline.
49
54
  */
50
- export type SingleSelectFilter<Item = {
51
- id: string;
52
- label: string;
53
- }> = BaseFilter & {
55
+ export type CustomFilter<T = unknown> = (CustomFilterShared<T> & {
56
+ drawerOnly: true;
57
+ buttonRender?: never;
58
+ }) | (CustomFilterShared<T> & {
59
+ drawerOnly?: false;
60
+ /** Function to render the filter content in the button/popover */
61
+ buttonRender: (props: FilterRenderProps<T>) => ReactNode;
62
+ });
63
+ /**
64
+ * Single select filter type backed by SelectMenuSync (toolbar) and
65
+ * SelectFieldSync (drawer). The consumer supplies a fixed `options` array;
66
+ * client-side filtering happens automatically via match-sorter (override with
67
+ * a custom `filter` function or MatchSorterOptions config).
68
+ *
69
+ * Uses DistributiveOmit so variant-specific fields survive — see AsyncSelectFilter.
70
+ *
71
+ * Filter-runtime concerns (`label`, `id`, `selectedOption`, `trigger`,
72
+ * `value`/`onSelectedOptionChange`, focus-lifecycle callbacks) are owned by
73
+ * FilterBar and the singleSelect adapter — consumers don't pass them.
74
+ */
75
+ export type SingleSelectFilter = BaseFilter & {
54
76
  /** Identifies this as a single select filter */
55
77
  type: "singleSelect";
56
- /** Array of items to select from */
57
- items: Item[];
58
- /** Currently selected item */
59
- selectedItem?: Item;
60
- } & ({
61
- /** Whether to show the search field */
62
- hasSearch: true;
63
- /** Required callback for search functionality when hasSearch is true */
64
- onSearch: (searchTerm: string) => void;
65
- /** Optional callback when search is cleared (only used when hasSearch is true) */
66
- onSearchClear: () => void;
67
- simpleDrawerVariant?: never;
68
- } | {
69
- /** Whether to show the search field */
70
- hasSearch?: false;
71
- onSearch?: never;
72
- onSearchClear?: never;
73
- /** Whether to use simplified drawer rendering */
78
+ /** Currently selected option */
79
+ selectedOption?: SelectMenuOption;
80
+ /**
81
+ * When true, the drawer cell renders a Radio.Group over the full option set
82
+ * instead of the default SelectFieldSync combobox. The toolbar still uses
83
+ * SelectMenuSync regardless.
84
+ */
74
85
  simpleDrawerVariant?: boolean;
75
- });
86
+ } & DistributiveOmit<SelectMenuSyncProps, "id" | "label" | "value" | "onSelectedOptionChange" | "trigger" | "onMenuKeyDown" | "onImplicitClose" | "onExplicitClose" | "clear">;
76
87
  /**
77
- * Multi select filter type using ListView component with optional search
88
+ * Multi select filter type backed by MultiSelectMenuSync (toolbar) and
89
+ * MultiSelectFieldSync (drawer). Same option/filter model as SingleSelectFilter.
90
+ * Inherits MultiSelectMenuSync's simplified `selectAll` / `selectFiltered`
91
+ * (boolean | { label }) — click handling and check state are managed automatically.
78
92
  */
79
- export type MultiSelectFilter<Item = {
80
- id: string;
81
- label: string;
82
- }> = BaseFilter & {
93
+ export type MultiSelectFilter = BaseFilter & {
83
94
  /** Identifies this as a multi select filter */
84
95
  type: "multiSelect";
85
- /** Array of items to select from */
86
- items: Item[];
87
- /** Currently selected items array */
88
- selectedItems: Item[] | [];
89
- /** Whether to use simplified drawer rendering */
90
- simpleDrawerVariant?: boolean;
91
- } & ({
92
- /** Whether to show the search field */
93
- hasSearch: true;
94
- /** Current search value */
95
- searchValue?: string;
96
- /** Required callback for search functionality when hasSearch is true */
97
- onSearch: (searchTerm: string) => void;
98
- /** Optional callback when search is cleared (only used when hasSearch is true) */
99
- onSearchClear: () => void;
100
- simpleDrawerVariant?: never;
101
- } | {
102
- /** Whether to show the search field */
103
- hasSearch?: false;
104
- searchValue?: never;
105
- onSearch?: never;
106
- onSearchClear?: never;
107
- /** Whether to use simplified drawer rendering */
96
+ /** Currently selected options */
97
+ selectedOptions?: MultiSelectMenuOption[];
98
+ /**
99
+ * When true, the drawer cell renders a Checkbox.Group over the full option
100
+ * set instead of the default MultiSelectFieldSync combobox. The toolbar
101
+ * still uses MultiSelectMenuSync regardless.
102
+ */
108
103
  simpleDrawerVariant?: boolean;
109
- });
104
+ } & DistributiveOmit<MultiSelectMenuSyncProps, "id" | "label" | "value" | "onSelectedOptionsChange" | "trigger" | "onMenuKeyDown" | "onImplicitClose" | "onExplicitClose" | "clear">;
110
105
  /**
111
106
  * Single date filter type using DateFieldSingle component
112
107
  * Used for selecting a single date with calendar support
@@ -159,10 +154,177 @@ export type DateListFilter = BaseFilter & Pick<DateFieldSingleProps, "mode"> & {
159
154
  /** The currently selected option (consumer or library) */
160
155
  selectedOption?: DateListOption;
161
156
  };
157
+ /**
158
+ * Async select filter type. Backed by SelectMenu in the toolbar and SelectField
159
+ * in the drawer, so the consumer supplies a `loadOptions` function instead of a
160
+ * static `items` array. Carries the full SelectMenu loader union (eager + lazy
161
+ * page/offset/group) plus pass-through configuration (pinned, cache, virtualize,
162
+ * search, displayMenuAs, etc.).
163
+ *
164
+ * Uses DistributiveOmit so variant-specific fields like `lazyOptions` and
165
+ * `groupToString` survive the omit — plain `Omit<SelectMenuProps, …>` would
166
+ * silently drop them, since it reduces unions to their common keys.
167
+ *
168
+ * Filter-runtime concerns (`label`, `id`, `selectedOption`, `trigger`,
169
+ * `value`/`onSelectedOptionChange`, focus-lifecycle callbacks) are owned by
170
+ * FilterBar and the asyncSelect adapter — consumers don't pass them.
171
+ */
172
+ export type AsyncSelectFilter = BaseFilter & {
173
+ /** Identifies this as an async select filter */
174
+ type: "asyncSelect";
175
+ /** The currently selected option */
176
+ selectedOption?: SelectMenuOption;
177
+ } & DistributiveOmit<SelectMenuProps, "id" | "label" | "value" | "onSelectedOptionChange" | "trigger" | "onMenuKeyDown" | "onImplicitClose" | "onExplicitClose" | "clear">;
178
+ /**
179
+ * Async multi-select filter type. The multi-selection counterpart of
180
+ * AsyncSelectFilter — backed by MultiSelectMenu in the toolbar and
181
+ * MultiSelectField in the drawer, so the consumer supplies a `loadOptions`
182
+ * function instead of a static `items` array. Carries the full
183
+ * MultiSelectMenu loader union and pass-through configuration, including the
184
+ * `selectAll` and `selectFiltered` checkbox affordances.
185
+ *
186
+ * Filter-runtime concerns (`label`, `id`, `selectedOptions`, `trigger`,
187
+ * `value`/`onSelectedOptionsChange`, focus-lifecycle callbacks) are owned by
188
+ * FilterBar and the asyncMultiSelect adapter — consumers don't pass them.
189
+ */
190
+ export type AsyncMultiSelectFilter = BaseFilter & {
191
+ /** Identifies this as an async multi-select filter */
192
+ type: "asyncMultiSelect";
193
+ /** The currently selected options */
194
+ selectedOptions?: MultiSelectMenuOption[];
195
+ } & DistributiveOmit<MultiSelectMenuProps, "id" | "label" | "value" | "onSelectedOptionsChange" | "trigger" | "onMenuKeyDown" | "onImplicitClose" | "onExplicitClose" | "clear">;
196
+ /**
197
+ * Value shape for a numeric range filter. Both bounds are optional —
198
+ * consumers may set only `min`, only `max`, or both. `null` represents
199
+ * "no filter applied" (treated as inactive).
200
+ */
201
+ export type NumericRangeValue = {
202
+ min?: number;
203
+ max?: number;
204
+ } | null;
205
+ /**
206
+ * Numeric min/max range filter. Renders two NumberField inputs (compact
207
+ * stacked layout in the toolbar popover, side-by-side grid in the drawer).
208
+ *
209
+ * - `mode` toggles currency ($ prefix, 2dp) or percentage (% suffix, up to 3dp)
210
+ * decorators on both inputs and on the formatted label.
211
+ * - `minValue` / `maxValue` clamp entered bounds to a valid range.
212
+ * - `inclusiveBounds` switches the field labels between Min/Max (inclusive)
213
+ * and Above/Below (exclusive), and the label symbols between `≥`/`≤` and
214
+ * `>`/`<`.
215
+ */
216
+ export type NumericRangeFilter = BaseFilter & {
217
+ /** Identifies this as a numeric range filter */
218
+ type: "numericRange";
219
+ /** Current min/max value (or null when inactive) */
220
+ value?: NumericRangeValue;
221
+ /** Optional decorator mode applied to both inputs and the formatted label */
222
+ mode?: "currency" | "percentage";
223
+ /** Clamps entered values from below */
224
+ minValue?: number;
225
+ /** Clamps entered values from above */
226
+ maxValue?: number;
227
+ /** When true, label uses ≥/≤ and Min/Max; otherwise >/< and Above/Below */
228
+ inclusiveBounds?: boolean;
229
+ /** Increment for arrow-key / scroll adjustments on the NumberFields. */
230
+ step?: number;
231
+ /**
232
+ * Override the minimum fraction digits applied to both inputs and the
233
+ * formatted label. Defaults derived from `mode`: `2` for currency, `0`
234
+ * for percentage, unset for plain.
235
+ */
236
+ minimumFractionDigits?: number;
237
+ /**
238
+ * Override the maximum fraction digits applied to both inputs and the
239
+ * formatted label. Defaults derived from `mode`: `2` for currency, `3`
240
+ * for percentage, unset for plain.
241
+ */
242
+ maximumFractionDigits?: number;
243
+ /**
244
+ * Hide the increment/decrement controls on the NumberFields.
245
+ * @default true
246
+ */
247
+ hideControls?: boolean;
248
+ };
249
+ type TextInputFilterShared = BaseFilter & {
250
+ /** Identifies this as a text input filter */
251
+ type: "textInput";
252
+ /** Current text value (undefined or empty means inactive) */
253
+ value?: string;
254
+ /** Placeholder shown when the field is empty */
255
+ placeholder?: string;
256
+ };
257
+ /**
258
+ * Single text input filter. Renders a TextField — the field's own label is
259
+ * hidden inline in the toolbar (the filter button doubles as the label) and
260
+ * shown in the drawer cell.
261
+ *
262
+ * `placeholder` is shown when the field is empty; `maxLength` clamps entered
263
+ * text to that many characters. Set `showCounter: true` to render a
264
+ * `current/max` character counter under the input — `maxLength` is required
265
+ * (and must be a concrete `number`, not `undefined`) in that case, otherwise
266
+ * the counter renders with an empty denominator.
267
+ */
268
+ export type TextInputFilter = (TextInputFilterShared & {
269
+ /** Show a `current/max` character counter under the input. */
270
+ showCounter: true;
271
+ /** Max character length; required when `showCounter` is true. */
272
+ maxLength: number;
273
+ }) | (TextInputFilterShared & {
274
+ /** Show a `current/max` character counter under the input. */
275
+ showCounter?: false;
276
+ /** Optional max character length; entered text is truncated to this length. */
277
+ maxLength?: number;
278
+ });
279
+ /**
280
+ * Sync tree filter type. Backed by TreeSelectMenuSync in the toolbar and
281
+ * TreeSelectFieldSync in the drawer, so the consumer supplies a static
282
+ * `options` tree (with optional client-side `filter` override) instead of a
283
+ * `loadOptions` function. Selection is always an array of node values, even in
284
+ * `selectionMode: "single"`.
285
+ *
286
+ * Uses DistributiveOmit so variant-specific fields survive the omit, matching
287
+ * the select-family filters.
288
+ *
289
+ * Filter-runtime concerns (`label`, `id`, `selectedNodes`, `trigger`,
290
+ * `value`/`onSelectedOptionsChange`, focus-lifecycle callbacks) are owned by
291
+ * FilterBar and the tree adapter — consumers don't pass them. Like the
292
+ * select-family filters, the inline menu honors `controlledFiltering`: when it
293
+ * is on, selections are buffered as a draft and commit only on Apply; when off,
294
+ * they commit immediately.
295
+ */
296
+ export type TreeFilter = BaseFilter & {
297
+ /** Identifies this as a tree filter */
298
+ type: "tree";
299
+ /** Currently selected tree node values */
300
+ selectedNodes?: TreeSelectMenuValue[];
301
+ } & DistributiveOmit<TreeSelectMenuSyncProps, "id" | "label" | "value" | "onSelectedOptionsChange" | "trigger" | "onMenuKeyDown" | "onImplicitClose" | "onExplicitClose">;
302
+ /**
303
+ * Async tree filter type. The async counterpart of TreeFilter — backed by
304
+ * TreeSelectMenu in the toolbar and TreeSelectField in the drawer, so the
305
+ * consumer supplies a `loadOptions` function (with `parentNode` for lazy branch
306
+ * loading) instead of a static `options` tree. Carries the full TreeSelectMenu
307
+ * pass-through configuration (cache, virtualize, displayMenuAs, initialLoad,
308
+ * selectionMode, valueConsistsOf, etc.).
309
+ *
310
+ * Filter-runtime concerns (`label`, `id`, `selectedNodes`, `trigger`,
311
+ * `value`/`onSelectedOptionsChange`, focus-lifecycle callbacks) are owned by
312
+ * FilterBar and the asyncTree adapter — consumers don't pass them. Like
313
+ * TreeFilter, the inline menu honors `controlledFiltering`: when it is on,
314
+ * selections are buffered as a draft and commit only on Apply; when off, they
315
+ * commit immediately.
316
+ */
317
+ export type AsyncTreeFilter = BaseFilter & {
318
+ /** Identifies this as an async tree filter */
319
+ type: "asyncTree";
320
+ /** Currently selected tree node values */
321
+ selectedNodes?: TreeSelectMenuValue[];
322
+ } & DistributiveOmit<TreeSelectMenuProps, "id" | "label" | "value" | "onSelectedOptionsChange" | "trigger" | "onMenuKeyDown" | "onImplicitClose" | "onExplicitClose">;
162
323
  /**
163
324
  * Union type of all available filter types
164
325
  * Uses unknown instead of any for better type safety
165
326
  */
166
- export type Filter = BooleanFilter | CustomFilter<any> | SingleSelectFilter<any> | MultiSelectFilter<any> | DateFilter | DateRangeFilter | DateListFilter;
327
+ export type Filter = BooleanFilter | CustomFilter<any> | SingleSelectFilter | MultiSelectFilter | DateFilter | DateRangeFilter | DateListFilter | AsyncSelectFilter | AsyncMultiSelectFilter | TreeFilter | AsyncTreeFilter | NumericRangeFilter | TextInputFilter;
167
328
  /** Type representing all possible filter values */
168
- export type FilterValue = boolean | CustomFilter["value"] | SingleSelectFilter["selectedItem"] | MultiSelectFilter["selectedItems"] | DateFilter["value"] | DateRangeFilter["value"] | DateListFilter["selectedOption"];
329
+ export type FilterValue = boolean | CustomFilter["value"] | SingleSelectFilter["selectedOption"] | MultiSelectFilter["selectedOptions"] | DateFilter["value"] | DateRangeFilter["value"] | DateListFilter["selectedOption"] | AsyncSelectFilter["selectedOption"] | AsyncMultiSelectFilter["selectedOptions"] | TreeFilter["selectedNodes"] | AsyncTreeFilter["selectedNodes"] | NumericRangeFilter["value"] | TextInputFilter["value"];
330
+ export {};
@@ -18,8 +18,8 @@ export declare const dateListLibraryOptions: ReadonlyArray<{
18
18
  export declare const isDateListRangeLibraryId: (id: DateListLibraryOptionId) => boolean;
19
19
  /**
20
20
  * Build the display label for a committed dateList selection. Used by both
21
- * the FilterButton trigger and the FilterDrawer SelectField so the two
22
- * surfaces stay in sync.
21
+ * the toolbar `FilterTriggerButton` and the FilterDrawer `SelectField` so the
22
+ * two surfaces stay in sync.
23
23
  *
24
24
  * - Selection with `value: null` (e.g. "Any day") → option label only.
25
25
  * - Custom Range library option → just the formatted range (label omitted
@@ -1,71 +1,33 @@
1
1
  import { Filter, FilterValue } from '../types';
2
+ export { hasChangedFilter } from './value-compare';
2
3
  /**
3
4
  * Returns an array of filters that are currently active (i.e., have a value set).
4
- *
5
- * @param {Filter[]} filters - Array of filter objects to check
6
- * @returns {Filter[]} Array of active filters
7
5
  */
8
6
  export declare const getActiveFilters: (filters: Filter[]) => Filter[];
9
7
  /**
10
8
  * Checks if any filters in the array have active values
11
- *
12
- * @param {Filter[]} filters - Array of filter objects to check
13
- * @returns {boolean} True if any filter has an active value
14
9
  */
15
10
  export declare const checkActiveFilters: (filters: Filter[]) => boolean;
16
11
  /**
17
12
  * Resets all filters to their default state
18
- *
19
- * @param {Filter[]} filters - Array of filter objects to reset
20
- * @returns {Filter[]} New array with reset filters
21
13
  */
22
14
  export declare const resetFilters: (filters: Filter[]) => Filter[];
23
15
  /**
24
16
  * Updates a single filter in an array of filters
25
- *
26
- * @param {Filter[]} filters - Array of filter objects
27
- * @param {string} filterId - ID of the filter to update
28
- * @param {FilterValue} value - New value for the filter
29
- * @returns {Filter[]} New array with updated filter
30
17
  */
31
18
  export declare const updateSingleFilter: (filters: Filter[], filterId: string, value: FilterValue) => Filter[];
32
- /**
33
- * Determines if two filter values are different.
34
- * For arrays (multiSelect), compares by id set (order-insensitive, avoids JSON serialization).
35
- * For singleSelect, compares by id if both are objects with id.
36
- * For dateList selections (objects with both id and value), compares id AND value
37
- * so re-picking the same library option with a different date still counts as a change.
38
- *
39
- * @param {T} a - First value to compare
40
- * @param {T} b - Second value to compare
41
- * @returns {boolean} True if the values are different
42
- */
43
- export declare const hasChangedFilter: <T>(a: T, b: T) => boolean;
44
19
  /**
45
20
  * Checks if the selection value of a filter has changed by comparing references.
46
21
  * Uses reference equality (===) to detect if the parent has provided a new value.
47
- *
48
- * @param {Filter} existingFilter - The current filter state
49
- * @param {Filter} newFilter - The incoming filter from props
50
- * @returns {boolean} True if the selection value reference has changed
51
22
  */
52
23
  export declare const hasFilterSelectionChanged: (existingFilter: Filter, newFilter: Filter) => boolean;
53
24
  /**
54
25
  * Preserves the selection state from an existing filter into a new filter.
55
- * Used when filter configuration updates but the selection value reference hasn't changed,
56
- * allowing us to maintain user selections through configuration updates.
57
- *
58
- * @param {Filter} newFilter - The new filter configuration from props
59
- * @param {Filter} existingFilter - The existing filter with user's selections
60
- * @returns {Filter} New filter with configuration from newFilter and selection from existingFilter
26
+ * Used when filter configuration updates but the selection value reference hasn't changed.
61
27
  */
62
28
  export declare const preserveFilterState: (newFilter: Filter, existingFilter: Filter) => Filter;
63
29
  /**
64
30
  * Creates a deep clone of filters with updated item references.
65
31
  * Ensures that selected items reference the current items array for proper equality checks.
66
- * Used when initializing draft state to ensure selections use current item references.
67
- *
68
- * @param {Filter[]} filters - Array of filter objects to clone
69
- * @returns {Filter[]} New array with cloned filters and updated item references
70
32
  */
71
33
  export declare const cloneFiltersWithItemRefs: (filters: Filter[]) => Filter[];
@@ -1,4 +1,4 @@
1
- import { Filter, BooleanFilter, CustomFilter, SingleSelectFilter, MultiSelectFilter, DateFilter, DateListFilter, DateRangeFilter } from '../types';
1
+ import { AsyncMultiSelectFilter, AsyncSelectFilter, Filter, BooleanFilter, CustomFilter, SingleSelectFilter, MultiSelectFilter, DateFilter, DateListFilter, DateRangeFilter, NumericRangeFilter, TextInputFilter, TreeFilter, AsyncTreeFilter } from '../types';
2
2
  export type TestValue = {
3
3
  id: number;
4
4
  label: string;
@@ -11,24 +11,12 @@ export declare const mockFilterOptions: {
11
11
  }[];
12
12
  export declare const defaultMockBooleanFilter: BooleanFilter;
13
13
  export declare const defaultMockCustomFilter: CustomFilter<TestValue>;
14
- export declare const defaultMockSingleSelectFilter: SingleSelectFilter<{
15
- id: string;
16
- label: string;
17
- }>;
18
- export declare const defaultMockMultiSelectFilter: MultiSelectFilter<{
19
- id: string;
20
- label: string;
21
- }>;
14
+ export declare const defaultMockSingleSelectFilter: SingleSelectFilter;
15
+ export declare const defaultMockMultiSelectFilter: MultiSelectFilter;
22
16
  export declare const defaultMockDateFilter: DateFilter;
23
17
  export declare const defaultMockDateRangeFilter: DateRangeFilter;
24
- export declare const defaultMockFilters: (BooleanFilter | DateFilter | DateRangeFilter | CustomFilter<TestValue> | SingleSelectFilter<{
25
- id: string;
26
- label: string;
27
- }> | MultiSelectFilter<{
28
- id: string;
29
- label: string;
30
- }>)[];
31
- export declare function createMockFilter<T = unknown>(overrides?: Partial<Filter | CustomFilter<T> | SingleSelectFilter<T>>): Filter | CustomFilter<T> | SingleSelectFilter<T>;
18
+ export declare const defaultMockFilters: (BooleanFilter | SingleSelectFilter | MultiSelectFilter | DateFilter | DateRangeFilter | CustomFilter<TestValue>)[];
19
+ export declare function createMockFilter<T = unknown>(overrides?: Partial<Filter | CustomFilter<T> | SingleSelectFilter>): Filter | CustomFilter<T> | SingleSelectFilter;
32
20
  export declare function createMockFilterContext(filters?: Filter[], contextOverrides?: {}): {
33
21
  filterGroupRef: {
34
22
  current: HTMLDivElement;
@@ -36,24 +24,24 @@ export declare function createMockFilterContext(filters?: Filter[], contextOverr
36
24
  filters: Filter[];
37
25
  updateFilter: import('vitest').Mock<(...args: any[]) => any>;
38
26
  onFilterChange: import('vitest').Mock<(...args: any[]) => any>;
39
- hiddenFilters: never[];
40
- addHiddenFilter: import('vitest').Mock<(...args: any[]) => any>;
41
- removeHiddenFilter: import('vitest').Mock<(...args: any[]) => any>;
27
+ drawerOnlyFilters: never[];
42
28
  controlledFiltering: boolean;
43
29
  associatedContent: string;
30
+ showInlineFilters: boolean;
44
31
  };
45
32
  export declare function createMockBooleanFilter(overrides?: Partial<BooleanFilter>): BooleanFilter;
46
33
  export declare function createMockCustomFilter<T = unknown>(overrides?: Partial<CustomFilter<T>>): CustomFilter<T>;
47
- export declare function createMockSingleSelectFilter<T = {
48
- id: string;
49
- label: string;
50
- }>(overrides?: Partial<SingleSelectFilter<T>>): SingleSelectFilter<T>;
51
- export declare function createMockMultiSelectFilter<T = {
52
- id: string;
53
- label: string;
54
- }>(overrides?: Partial<MultiSelectFilter<T>>): MultiSelectFilter<T>;
34
+ export declare function createMockSingleSelectFilter(overrides?: Partial<SingleSelectFilter>): SingleSelectFilter;
35
+ export declare function createMockMultiSelectFilter(overrides?: Partial<MultiSelectFilter>): MultiSelectFilter;
55
36
  export declare function createMockDateFilter(overrides?: Partial<DateFilter>): DateFilter;
56
37
  export declare function createMockDateRangeFilter(overrides?: Partial<DateRangeFilter>): DateRangeFilter;
57
38
  export declare function createMockDateListFilter(overrides?: Partial<DateListFilter>): DateListFilter;
39
+ export declare function createMockAsyncSelectFilter(overrides?: Partial<AsyncSelectFilter>): AsyncSelectFilter;
40
+ export declare function createMockAsyncMultiSelectFilter(overrides?: Partial<AsyncMultiSelectFilter>): AsyncMultiSelectFilter;
41
+ export declare function createMockTreeFilter(overrides?: Partial<TreeFilter>): TreeFilter;
42
+ export declare function createMockAsyncTreeFilter(overrides?: Partial<AsyncTreeFilter>): AsyncTreeFilter;
43
+ export declare function createMockNumericRangeFilter(overrides?: Partial<NumericRangeFilter>): NumericRangeFilter;
44
+ export declare function createMockTextInputFilter(overrides?: Partial<TextInputFilter>): TextInputFilter;
58
45
  export declare const setupDesktopContainer: () => void;
59
46
  export declare const setupMobileContainer: () => void;
47
+ export declare const setupSmContainer: () => void;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Determines if two filter values are different.
3
+ * For arrays (multiSelect), compares by id set (order-insensitive, avoids JSON serialization).
4
+ * For singleSelect, compares by id if both are objects with id.
5
+ * For dateList selections (objects with both id and value), compares id AND value
6
+ * so re-picking the same library option with a different date still counts as a change.
7
+ *
8
+ * Intentionally adapter-free — kept here (rather than in filter-state.ts) so that
9
+ * FilterPopoverButton can import it without pulling the adapter registry into
10
+ * the import graph. filter-state.ts depends on the adapter registry; the registry
11
+ * depends on FilterPopoverButton; FilterPopoverButton would otherwise depend on
12
+ * filter-state — closing a runtime-evaluated cycle.
13
+ */
14
+ export declare const hasChangedFilter: <T>(a: T, b: T) => boolean;
@@ -2,4 +2,4 @@ import { MultiSelectFieldComboboxInternalProps } from './types';
2
2
  /**
3
3
  * Combobox mode: searchable multi-select using useCombobox.
4
4
  */
5
- export declare const MultiSelectFieldComboboxMode: ({ labelAiMark, id, helperUid, selectedOptions, onSelectedOptionsChange, displayAs, isDisabledOrReadOnly, disabled, readOnly, required, placeholder, size, error, hasHelperText, disableClearButton, prefix, suffix, label, hideLabel, hint, moreInfo, moreInfoId, errorMessages, warning, description, className, style, layoutStyles, pinned, groupToString, groupSorter, virtualize, options, loading, loadingMore, hasMore, loadOptions, loadMore, initialLoad, initialLoadPerformed, setInitialLoadPerformed, inputWrapperRef, debounceMs, selectAll, selectFiltered, singleRow, maxChips, getChipProps, onSearchChange, addItemLabel, onAddNewItem, handleRemoveOption, handleClear, }: MultiSelectFieldComboboxInternalProps) => import("react/jsx-runtime").JSX.Element;
5
+ export declare const MultiSelectFieldComboboxMode: ({ labelAiMark, id, helperUid, selectedOptions, onSelectedOptionsChange, displayAs, isDisabledOrReadOnly, disabled, readOnly, required, placeholder, size, error, hasHelperText, disableClearButton, prefix, suffix, label, hideLabel, hint, moreInfo, moreInfoId, errorMessages, warning, description, className, style, layoutStyles, pinned, groupToString, groupSorter, virtualize, options, loading, loadingMore, hasMore, loadOptions, loadMore, initialLoad, initialLoadPerformed, setInitialLoadPerformed, inputWrapperRef, debounceMs, selectAll, selectFiltered, bulkPending, onBulkActivate, singleRow, maxChips, getChipProps, onSearchChange, addItemLabel, onAddNewItem, handleRemoveOption, handleClear, }: MultiSelectFieldComboboxInternalProps) => import("react/jsx-runtime").JSX.Element;
@@ -3,4 +3,4 @@ import { MultiSelectFieldBaseInternalProps } from './types';
3
3
  * Select mode: non-searchable multi-select using useSelect.
4
4
  * Active when disableSearch is true.
5
5
  */
6
- export declare const MultiSelectFieldSelectMode: ({ labelAiMark, id, helperUid, selectedOptions, onSelectedOptionsChange, displayAs, isDisabledOrReadOnly, disabled, readOnly, required, placeholder, size, error, hasHelperText, disableClearButton, prefix, suffix, label, hideLabel, hint, moreInfo, moreInfoId, errorMessages, warning, description, className, style, layoutStyles, pinned, groupToString, groupSorter, virtualize, options, loading, loadingMore, hasMore, loadOptions, loadMore, initialLoad, initialLoadPerformed, setInitialLoadPerformed, inputWrapperRef, selectAll, singleRow, maxChips, getChipProps, addItemLabel, onAddNewItem, handleRemoveOption, handleClear, }: MultiSelectFieldBaseInternalProps) => import("react/jsx-runtime").JSX.Element;
6
+ export declare const MultiSelectFieldSelectMode: ({ labelAiMark, id, helperUid, selectedOptions, onSelectedOptionsChange, displayAs, isDisabledOrReadOnly, disabled, readOnly, required, placeholder, size, error, hasHelperText, disableClearButton, prefix, suffix, label, hideLabel, hint, moreInfo, moreInfoId, errorMessages, warning, description, className, style, layoutStyles, pinned, groupToString, groupSorter, virtualize, options, loading, loadingMore, hasMore, loadOptions, loadMore, initialLoad, initialLoadPerformed, setInitialLoadPerformed, inputWrapperRef, selectAll, bulkPending, onBulkActivate, singleRow, maxChips, getChipProps, addItemLabel, onAddNewItem, handleRemoveOption, handleClear, }: MultiSelectFieldBaseInternalProps) => import("react/jsx-runtime").JSX.Element;
@@ -49,9 +49,12 @@ export type MultiSelectFieldBaseInternalProps = {
49
49
  inputWrapperRef: RefObject<HTMLDivElement>;
50
50
  selectAll?: {
51
51
  label: string;
52
- onClick: () => void;
53
52
  checkState: CheckState;
54
53
  };
54
+ /** True while a `compute`-driven bulk action's promise is in flight. */
55
+ bulkPending: boolean;
56
+ /** Called when the user activates the select-all or select-filtered row. */
57
+ onBulkActivate: (kind: "selectAll" | "selectFiltered", searchValue: string) => void;
55
58
  singleRow?: boolean;
56
59
  maxChips?: number;
57
60
  getChipProps?: (option: MultiSelectFieldOption) => MultiSelectFieldChipProps;
@@ -64,7 +67,6 @@ export type MultiSelectFieldComboboxInternalProps = MultiSelectFieldBaseInternal
64
67
  debounceMs: number;
65
68
  selectFiltered?: (searchValue: string) => {
66
69
  label?: string;
67
- onClick: () => void;
68
70
  checkState: CheckState;
69
71
  };
70
72
  onSearchChange?: (searchValue: string) => void;
@@ -11,18 +11,20 @@ export type UseComboMultipleOptions = {
11
11
  groupToString?: (groupValue: MultiSelectFieldGroupByValue) => string;
12
12
  /** Function to sort group sections */
13
13
  groupSorter?: (a: MultiSelectFieldGroupByValue, b: MultiSelectFieldGroupByValue) => number;
14
- /** Configuration for the "Select All" option (shown when search is empty) */
14
+ /** Configuration for the "Select All" option (shown when search is empty). */
15
15
  selectAll?: {
16
16
  label: string;
17
- onClick: () => void;
18
17
  checkState: CheckState;
19
18
  };
20
- /** Function that receives the search value and returns config for "Select Filtered" */
19
+ /** Function that receives the search value and returns config for "Select Filtered". */
21
20
  selectFiltered?: (searchValue: string) => {
22
21
  label?: string;
23
- onClick: () => void;
24
22
  checkState: CheckState;
25
23
  };
24
+ /** True while a `compute`-driven bulk action is in flight. Disables option rows. */
25
+ bulkPending: boolean;
26
+ /** Called when the user activates the select-all or select-filtered row. */
27
+ onBulkActivate: (kind: "selectAll" | "selectFiltered", searchValue: string) => void;
26
28
  /** The currently selected options (controlled from outside) */
27
29
  selectedOptions: MultiSelectFieldOption[];
28
30
  onSelectedOptionsChange: (options: MultiSelectFieldOption[]) => void;
@@ -43,7 +45,7 @@ export type UseComboMultipleOptions = {
43
45
  * @param options - Configuration options for the hook
44
46
  * @returns Downshift combobox props and state
45
47
  */
46
- export declare const useComboMultiple: ({ options, pinned, groupToString, groupSorter, selectAll, selectFiltered, selectedOptions, onSelectedOptionsChange, onInputValueChange, onIsOpenChange, displayAs, disabled, loading, virtualize, onScrollToHighlight, }: UseComboMultipleOptions) => {
48
+ export declare const useComboMultiple: ({ options, pinned, groupToString, groupSorter, selectAll, selectFiltered, bulkPending, onBulkActivate, selectedOptions, onSelectedOptionsChange, onInputValueChange, onIsOpenChange, displayAs, disabled, loading, virtualize, onScrollToHighlight, }: UseComboMultipleOptions) => {
47
49
  inputValue: string;
48
50
  wrapperDivRef: import('react').RefObject<HTMLDivElement>;
49
51
  getToggleButtonProps: <Options>(options?: import('downshift').UseComboboxGetToggleButtonPropsOptions & Options) => import('downshift').Overwrite<import('downshift').UseComboboxGetToggleButtonPropsReturnValue, Options>;
@@ -8,9 +8,12 @@ export type UseSelectModeMultipleOptions = {
8
8
  groupSorter?: (a: MultiSelectFieldGroupByValue, b: MultiSelectFieldGroupByValue) => number;
9
9
  selectAll?: {
10
10
  label: string;
11
- onClick: () => void;
12
11
  checkState: CheckState;
13
12
  };
13
+ /** True while a `compute`-driven bulk action is in flight. Disables option rows. */
14
+ bulkPending: boolean;
15
+ /** Called when the user activates the select-all row. */
16
+ onBulkActivate: (kind: "selectAll" | "selectFiltered", searchValue: string) => void;
14
17
  selectedOptions: MultiSelectFieldOption[];
15
18
  onSelectedOptionsChange: (options: MultiSelectFieldOption[]) => void;
16
19
  onIsOpenChange?: (changes: {
@@ -25,7 +28,7 @@ export type UseSelectModeMultipleOptions = {
25
28
  * Wraps downshift's useSelect for non-searchable multi-select fields.
26
29
  * Keeps menu open after selection and handles bulk actions.
27
30
  */
28
- export declare const useSelectModeMultiple: ({ options, pinned, groupToString, groupSorter, selectAll, selectedOptions, onSelectedOptionsChange, onIsOpenChange, displayAs, disabled, virtualize, onScrollToHighlight, }: UseSelectModeMultipleOptions) => {
31
+ export declare const useSelectModeMultiple: ({ options, pinned, groupToString, groupSorter, selectAll, bulkPending, onBulkActivate, selectedOptions, onSelectedOptionsChange, onIsOpenChange, displayAs, disabled, virtualize, onScrollToHighlight, }: UseSelectModeMultipleOptions) => {
29
32
  wrapperDivRef: import('react').RefObject<HTMLDivElement>;
30
33
  getToggleButtonProps: <Options>(options?: import('downshift').UseSelectGetToggleButtonPropsOptions & Options, otherOptions?: import('downshift').GetPropsCommonOptions) => import('downshift').Overwrite<import('downshift').UseSelectGetToggleButtonReturnValue, Options>;
31
34
  getLabelProps: <Options>(options?: import('downshift').UseSelectGetLabelPropsOptions & Options) => import('downshift').Overwrite<import('downshift').UseSelectGetLabelPropsReturnValue, Options>;