@ds-mo/ui 14.34.0 → 14.36.0

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 (397) hide show
  1. package/dist/.package-ready.json +1 -1
  2. package/dist/agent-patterns.json +1 -1
  3. package/dist/agent.json +1423 -218
  4. package/dist/angular/ds-button-inverted.d.ts +17 -0
  5. package/dist/angular/ds-button-inverted.js +46 -0
  6. package/dist/angular/ds-calendar.d.ts +15 -0
  7. package/dist/angular/ds-calendar.js +43 -0
  8. package/dist/angular/ds-field.d.ts +1 -1
  9. package/dist/angular/ds-field.js +1 -1
  10. package/dist/angular/ds-filter-menu.d.ts +1 -1
  11. package/dist/angular/ds-filter-menu.js +3 -3
  12. package/dist/angular/ds-input-date.d.ts +15 -0
  13. package/dist/angular/ds-input-date.js +43 -0
  14. package/dist/angular/ds-input-time.d.ts +15 -0
  15. package/dist/angular/ds-input-time.js +43 -0
  16. package/dist/angular/ds-input.d.ts +1 -1
  17. package/dist/angular/ds-input.js +3 -3
  18. package/dist/angular/ds-menu.d.ts +1 -1
  19. package/dist/angular/ds-menu.js +3 -3
  20. package/dist/angular/ds-select.d.ts +1 -1
  21. package/dist/angular/ds-select.js +3 -3
  22. package/dist/angular/ds-tab-group.d.ts +1 -1
  23. package/dist/angular/ds-tab-group.js +3 -3
  24. package/dist/angular/ds-table-filter.d.ts +1 -1
  25. package/dist/angular/ds-table-filter.js +3 -3
  26. package/dist/angular/ds-table-group.d.ts +1 -1
  27. package/dist/angular/ds-table-group.js +3 -3
  28. package/dist/angular/ds-table-preferences.d.ts +39 -0
  29. package/dist/angular/ds-table-preferences.js +69 -0
  30. package/dist/angular/ds-table-saved-views.d.ts +1 -1
  31. package/dist/angular/ds-table-saved-views.js +3 -3
  32. package/dist/angular/ds-table-search.d.ts +1 -1
  33. package/dist/angular/ds-table-search.js +3 -3
  34. package/dist/angular/ds-table-sort.d.ts +1 -1
  35. package/dist/angular/ds-table-sort.js +3 -3
  36. package/dist/angular/ds-table-toolbar.d.ts +1 -1
  37. package/dist/angular/ds-table-toolbar.js +3 -3
  38. package/dist/angular/ds-table.d.ts +3 -1
  39. package/dist/angular/ds-table.js +8 -5
  40. package/dist/angular/ds-time-picker.d.ts +15 -0
  41. package/dist/angular/ds-time-picker.js +43 -0
  42. package/dist/angular/index.d.ts +1 -1
  43. package/dist/angular/index.js +6 -0
  44. package/dist/angular/proxies.d.ts +6 -0
  45. package/dist/angular/proxies.js +6 -0
  46. package/dist/angular/text-value-accessor.d.ts +1 -1
  47. package/dist/angular/text-value-accessor.js +2 -2
  48. package/dist/components/ds-agent-activity.js +1 -1
  49. package/dist/components/ds-agent-questionnaire.js +1 -1
  50. package/dist/components/ds-agent-response.js +1 -1
  51. package/dist/components/ds-agent-source-list.js +1 -1
  52. package/dist/components/ds-agent-tool-call.js +1 -1
  53. package/dist/components/ds-attachment-list.js +1 -1
  54. package/dist/components/ds-badge.js +1 -1
  55. package/dist/components/ds-banner.js +1 -1
  56. package/dist/components/ds-bar-action.js +1 -1
  57. package/dist/components/ds-bar-nav.js +1 -1
  58. package/dist/components/ds-bar-page-title.js +1 -1
  59. package/dist/components/ds-bar-title.js +1 -1
  60. package/dist/components/ds-bar-workflow.js +1 -1
  61. package/dist/components/ds-breadcrumb.js +1 -1
  62. package/dist/components/ds-button-filled.js +1 -1
  63. package/dist/components/ds-button-inverted.d.ts +11 -0
  64. package/dist/components/ds-button-inverted.js +2 -0
  65. package/dist/components/ds-button-inverted.js.map +1 -0
  66. package/dist/components/ds-button-unfilled.js +1 -1
  67. package/dist/components/ds-calendar.d.ts +11 -0
  68. package/dist/components/ds-calendar.js +2 -0
  69. package/dist/components/ds-calendar.js.map +1 -0
  70. package/dist/components/ds-card-action-center.js +1 -1
  71. package/dist/components/ds-card-chart.js +1 -1
  72. package/dist/components/ds-card-navigation.js +1 -1
  73. package/dist/components/ds-card-navigation.js.map +1 -1
  74. package/dist/components/ds-card-overview.js +1 -1
  75. package/dist/components/ds-card-setting.js +1 -1
  76. package/dist/components/ds-card-settings-scope.js +1 -1
  77. package/dist/components/ds-card-settings-scope.js.map +1 -1
  78. package/dist/components/ds-chart-legend.js +1 -1
  79. package/dist/components/ds-chart.js +1 -1
  80. package/dist/components/ds-checkbox.js +1 -1
  81. package/dist/components/ds-chip.js +1 -1
  82. package/dist/components/ds-code-block.js +1 -1
  83. package/dist/components/ds-conversation-list-item.js +1 -1
  84. package/dist/components/ds-conversation-list-item.js.map +1 -1
  85. package/dist/components/ds-conversation-list-section.js +1 -1
  86. package/dist/components/ds-conversation-list.js +1 -1
  87. package/dist/components/ds-divider.js +1 -1
  88. package/dist/components/ds-empty-state.js +1 -1
  89. package/dist/components/ds-field.js +1 -1
  90. package/dist/components/ds-filter-menu.js +1 -1
  91. package/dist/components/ds-input-date.d.ts +11 -0
  92. package/dist/components/ds-input-date.js +2 -0
  93. package/dist/components/ds-input-date.js.map +1 -0
  94. package/dist/components/ds-input-time.d.ts +11 -0
  95. package/dist/components/ds-input-time.js +2 -0
  96. package/dist/components/ds-input-time.js.map +1 -0
  97. package/dist/components/ds-input.js +1 -1
  98. package/dist/components/ds-markdown.js +1 -1
  99. package/dist/components/ds-menu.js +1 -1
  100. package/dist/components/ds-message-actions.js +1 -1
  101. package/dist/components/ds-message-bubble.js +1 -1
  102. package/dist/components/ds-message-composer.js +1 -1
  103. package/dist/components/ds-message-scroller.js +1 -1
  104. package/dist/components/ds-message.js +1 -1
  105. package/dist/components/ds-mobile-bar-nav.js +1 -1
  106. package/dist/components/ds-mobile-header.js +1 -1
  107. package/dist/components/ds-mobile-section-switcher.js +1 -1
  108. package/dist/components/ds-mobile-sheet-nav.js +1 -1
  109. package/dist/components/ds-modal.js +1 -1
  110. package/dist/components/ds-pagination.js +1 -1
  111. package/dist/components/ds-panel-nav.js +1 -1
  112. package/dist/components/ds-panel-sub-nav.js +1 -1
  113. package/dist/components/ds-panel-tool-header.js +1 -1
  114. package/dist/components/ds-panel-tool-search.js +1 -1
  115. package/dist/components/ds-panel-tools.js +1 -1
  116. package/dist/components/ds-paper-texture.js +1 -1
  117. package/dist/components/ds-radio.js +1 -1
  118. package/dist/components/ds-score.js +1 -1
  119. package/dist/components/ds-scroll-overlay.js +1 -1
  120. package/dist/components/ds-select.js +1 -1
  121. package/dist/components/ds-shell-app.js +1 -1
  122. package/dist/components/ds-shell-app.js.map +1 -1
  123. package/dist/components/ds-shell-page.js +1 -1
  124. package/dist/components/ds-shell-tools.js +1 -1
  125. package/dist/components/ds-skeleton.js +1 -1
  126. package/dist/components/ds-slider.js +1 -1
  127. package/dist/components/ds-slider.js.map +1 -1
  128. package/dist/components/ds-swatch-picker.js +1 -1
  129. package/dist/components/ds-switch.js +1 -1
  130. package/dist/components/ds-tab-group.js +1 -1
  131. package/dist/components/ds-table-filter.js +1 -1
  132. package/dist/components/ds-table-filter.js.map +1 -1
  133. package/dist/components/ds-table-group.js +1 -1
  134. package/dist/components/ds-table-group.js.map +1 -1
  135. package/dist/components/ds-table-preferences.d.ts +11 -0
  136. package/dist/components/ds-table-preferences.js +2 -0
  137. package/dist/components/ds-table-preferences.js.map +1 -0
  138. package/dist/components/ds-table-saved-views.js +1 -1
  139. package/dist/components/ds-table-saved-views.js.map +1 -1
  140. package/dist/components/ds-table-search.js +1 -1
  141. package/dist/components/ds-table-search.js.map +1 -1
  142. package/dist/components/ds-table-sort.js +1 -1
  143. package/dist/components/ds-table-sort.js.map +1 -1
  144. package/dist/components/ds-table-toolbar.js +1 -1
  145. package/dist/components/ds-table-toolbar.js.map +1 -1
  146. package/dist/components/ds-table.js +1 -1
  147. package/dist/components/ds-table.js.map +1 -1
  148. package/dist/components/ds-tag.js +1 -1
  149. package/dist/components/ds-text.js +1 -1
  150. package/dist/components/ds-textarea.js +1 -1
  151. package/dist/components/ds-textarea.js.map +1 -1
  152. package/dist/components/ds-time-picker.d.ts +11 -0
  153. package/dist/components/ds-time-picker.js +2 -0
  154. package/dist/components/ds-time-picker.js.map +1 -0
  155. package/dist/components/ds-toast.js +1 -1
  156. package/dist/components/ds-tooltip-chart.js +1 -1
  157. package/dist/components/ds-tooltip.js +1 -1
  158. package/dist/components/ds-typing-indicator.js +1 -1
  159. package/dist/components/{p-B5QVra1K.js → p-2GVGhrh0.js} +2 -2
  160. package/dist/components/p-7O-2D29W.js +2 -0
  161. package/dist/components/p-7O-2D29W.js.map +1 -0
  162. package/dist/components/{p-BqGdNrVl.js → p-8oRkhvjy.js} +2 -2
  163. package/dist/components/p-B27_chI7.js +2 -0
  164. package/dist/components/p-B27_chI7.js.map +1 -0
  165. package/dist/components/{p-ya8A_SMw.js → p-BOhpMUwO.js} +2 -2
  166. package/dist/components/{p-ya8A_SMw.js.map → p-BOhpMUwO.js.map} +1 -1
  167. package/dist/components/{p-CqeMumqy.js → p-BV5T1hzN.js} +2 -2
  168. package/dist/components/{p-CIoeHcCk.js → p-BWfzaSc3.js} +2 -2
  169. package/dist/components/{p-AkSwrAKR.js → p-BgLI9JoT.js} +2 -2
  170. package/dist/components/{p-BwsS_Hyr.js → p-C-dHtQMi.js} +2 -2
  171. package/dist/components/p-C0CE2v5D.js +2 -0
  172. package/dist/components/{p-CHBuzAYH.js.map → p-C0CE2v5D.js.map} +1 -1
  173. package/dist/components/{p-CoE7yza3.js → p-C2JnoaWI.js} +2 -2
  174. package/dist/components/{p-lv4YQEsa.js → p-C4m8y9ki.js} +2 -2
  175. package/dist/components/{p-BEttT0UB.js → p-CDJ2Ntcq.js} +2 -2
  176. package/dist/components/p-CKarsuR2.js +2 -0
  177. package/dist/components/p-CKarsuR2.js.map +1 -0
  178. package/dist/components/{p-Dj296RmE.js → p-CMQUuGvl.js} +2 -2
  179. package/dist/components/{p-DyyfWSLB.js → p-CQ5RwY2C.js} +2 -2
  180. package/dist/components/p-CQIh2yRP.js +2 -0
  181. package/dist/components/p-CQIh2yRP.js.map +1 -0
  182. package/dist/components/{p-CQqZgTYk.js → p-CWPT3aOB.js} +2 -2
  183. package/dist/components/p-CWog26I_.js +2 -0
  184. package/dist/components/p-CWog26I_.js.map +1 -0
  185. package/dist/components/{p-LZ8F08Fj.js → p-CaNCGKEJ.js} +2 -2
  186. package/dist/components/p-CaNCGKEJ.js.map +1 -0
  187. package/dist/components/p-CbSUyv5B.js +2 -0
  188. package/dist/components/{p-CnK36Be0.js.map → p-CbSUyv5B.js.map} +1 -1
  189. package/dist/components/{p-Dhw_W8nk.js → p-Cc3ZUQlJ.js} +2 -2
  190. package/dist/components/p-Cc3ZUQlJ.js.map +1 -0
  191. package/dist/components/{p-OxdAzO4v.js → p-Ce4zy8q1.js} +2 -2
  192. package/dist/components/p-CeXf9-X3.js +2 -0
  193. package/dist/components/p-CeXf9-X3.js.map +1 -0
  194. package/dist/components/{p-CNDTHTf6.js → p-Cga6Ex0E.js} +2 -2
  195. package/dist/components/{p-CBQzTgvI.js → p-Cl9phSf0.js} +2 -2
  196. package/dist/components/{p-DzbEJN1A.js → p-ClJhuG5Y.js} +2 -2
  197. package/dist/components/{p-D_QtZZR8.js → p-CqW2eyiF.js} +2 -2
  198. package/dist/components/{p-CHUdAW1Q.js → p-Cus1Sigh.js} +2 -2
  199. package/dist/components/{p-CzbsTZt7.js → p-Cxr0IQjC.js} +2 -2
  200. package/dist/components/p-D7yBIPB6.js +2 -0
  201. package/dist/components/{p-DEyvEIYL.js.map → p-D7yBIPB6.js.map} +1 -1
  202. package/dist/components/p-D8rpKod8.js +2 -0
  203. package/dist/components/p-D8rpKod8.js.map +1 -0
  204. package/dist/components/{p-Da9VpZX2.js → p-DBwa1OXP.js} +2 -2
  205. package/dist/components/{p-Br0dx2uP.js → p-DK9Ex3aY.js} +2 -2
  206. package/dist/components/{p-CweS0FfJ.js → p-DLXXGgmf.js} +2 -2
  207. package/dist/components/{p-CvplapTD.js → p-DVd1TIxi.js} +2 -2
  208. package/dist/components/p-DZ58Sg5a.js.map +1 -1
  209. package/dist/components/{p-Dx7WcWW1.js → p-DgG9W9N4.js} +2 -2
  210. package/dist/components/{p-4DNyCYKM.js → p-DkfM55x8.js} +2 -2
  211. package/dist/components/p-DkikNSSO.js +2 -0
  212. package/dist/components/p-DkikNSSO.js.map +1 -0
  213. package/dist/components/{p-DjCnGxSd.js → p-Dryt3COt.js} +2 -2
  214. package/dist/components/{p-eo_pmPqp.js → p-Ds51RgCi.js} +2 -2
  215. package/dist/components/p-DtkLtKY0.js +2 -0
  216. package/dist/components/p-DtkLtKY0.js.map +1 -0
  217. package/dist/components/{p-DBZwI7HY.js → p-DvzI2A_M.js} +2 -2
  218. package/dist/components/p-J5x-QtlD.js +2 -0
  219. package/dist/components/{p-CIYJhyKt.js.map → p-J5x-QtlD.js.map} +1 -1
  220. package/dist/components/{p-C51ytXM6.js → p-Jaqdfw4E.js} +2 -2
  221. package/dist/components/{p-BMERUCe1.js → p-KBrC9IG4.js} +2 -2
  222. package/dist/components/p-MQ36mEgn.js +2 -0
  223. package/dist/components/p-MQ36mEgn.js.map +1 -0
  224. package/dist/components/{p-CXAa9TUM.js → p-PmcUwTQ_.js} +2 -2
  225. package/dist/components/p-TjXGRPik.js +2 -0
  226. package/dist/components/{p-ByoywoBH.js.map → p-TjXGRPik.js.map} +1 -1
  227. package/dist/components/{p-zZuAAiiI.js → p-bM3LH3kc.js} +2 -2
  228. package/dist/components/{p-CK2S28gU.js → p-ji09W9el.js} +2 -2
  229. package/dist/components/{p-DrjY8Mpy.js → p-neWTRxmf.js} +2 -2
  230. package/dist/components/{p-CMq-jKEI.js → p-rYePOPbJ.js} +2 -2
  231. package/dist/components/{p-C1QHxVvP.js → p-su6y4hLK.js} +2 -2
  232. package/dist/components/p-su6y4hLK.js.map +1 -0
  233. package/dist/components/{p-CKo2nySr.js → p-tNQ0YulU.js} +2 -2
  234. package/dist/components/{p-C8XJgV1n.js → p-x1wf38q3.js} +2 -2
  235. package/dist/docs/components.json +17368 -12812
  236. package/dist/lib/components/ShellApp/shell-app-types.d.ts +3 -1
  237. package/dist/lib/utils/button-render.d.ts +1 -1
  238. package/dist/lib/utils/clock-time.d.ts +22 -0
  239. package/dist/lib/utils/date-filter-value.d.ts +4 -0
  240. package/dist/lib/utils/index.d.ts +3 -1
  241. package/dist/lib/utils/index.js +133 -0
  242. package/dist/lib/utils/index.js.map +4 -4
  243. package/dist/mcp-data/registry/bar-title.json +2 -2
  244. package/dist/mcp-data/registry/button-inverted.json +580 -0
  245. package/dist/mcp-data/registry/calendar.json +273 -0
  246. package/dist/mcp-data/registry/card-navigation.json +4 -2
  247. package/dist/mcp-data/registry/field.json +19 -14
  248. package/dist/mcp-data/registry/filter-menu.json +106 -23
  249. package/dist/mcp-data/registry/input-date.json +516 -0
  250. package/dist/mcp-data/registry/input-time.json +535 -0
  251. package/dist/mcp-data/registry/input.json +56 -8
  252. package/dist/mcp-data/registry/menu.json +22 -3
  253. package/dist/mcp-data/registry/registry.json +1434 -211
  254. package/dist/mcp-data/registry/select.json +105 -14
  255. package/dist/mcp-data/registry/shell-app.json +4 -3
  256. package/dist/mcp-data/registry/tab-group.json +20 -3
  257. package/dist/mcp-data/registry/table-filter.json +26 -6
  258. package/dist/mcp-data/registry/table-group.json +59 -7
  259. package/dist/mcp-data/registry/table-preferences.json +511 -0
  260. package/dist/mcp-data/registry/table-saved-views.json +50 -10
  261. package/dist/mcp-data/registry/table-search.json +24 -6
  262. package/dist/mcp-data/registry/table-sort.json +22 -4
  263. package/dist/mcp-data/registry/table-toolbar.json +26 -6
  264. package/dist/mcp-data/registry/table.json +70 -4
  265. package/dist/mcp-data/registry/textarea.json +2 -2
  266. package/dist/mcp-data/registry/time-picker.json +259 -0
  267. package/dist/react/components.d.ts +6 -0
  268. package/dist/react/components.js +6 -0
  269. package/dist/react/ds-button-inverted.d.ts +13 -0
  270. package/dist/react/ds-button-inverted.js +15 -0
  271. package/dist/react/ds-calendar.d.ts +12 -0
  272. package/dist/react/ds-calendar.js +12 -0
  273. package/dist/react/ds-field.d.ts +1 -1
  274. package/dist/react/ds-input-date.d.ts +12 -0
  275. package/dist/react/ds-input-date.js +12 -0
  276. package/dist/react/ds-input-time.d.ts +12 -0
  277. package/dist/react/ds-input-time.js +12 -0
  278. package/dist/react/ds-table-preferences.d.ts +21 -0
  279. package/dist/react/ds-table-preferences.js +23 -0
  280. package/dist/react/ds-table.d.ts +1 -0
  281. package/dist/react/ds-table.js +1 -0
  282. package/dist/react/ds-time-picker.d.ts +12 -0
  283. package/dist/react/ds-time-picker.js +12 -0
  284. package/dist/types/components/BarTitle/BarTitle.d.ts +1 -0
  285. package/dist/types/components/BarTitle/bar-title-action-chrome.d.ts +2 -0
  286. package/dist/types/components/ButtonInverted/ButtonInverted.d.ts +83 -0
  287. package/dist/types/components/ButtonInverted/index.d.ts +2 -0
  288. package/dist/types/components/Calendar/Calendar.d.ts +32 -0
  289. package/dist/types/components/Calendar/calendar-grid.d.ts +19 -0
  290. package/dist/types/components/Field/Field.d.ts +7 -2
  291. package/dist/types/components/FilterMenu/FilterMenu.d.ts +16 -10
  292. package/dist/types/components/Input/Input.d.ts +10 -0
  293. package/dist/types/components/InputDate/InputDate.d.ts +78 -0
  294. package/dist/types/components/InputTime/InputTime.d.ts +80 -0
  295. package/dist/types/components/Menu/Menu.d.ts +2 -0
  296. package/dist/types/components/Select/Select.d.ts +13 -2
  297. package/dist/types/components/ShellApp/shell-app-types.d.ts +3 -1
  298. package/dist/types/components/TabGroup/TabGroup.d.ts +1 -0
  299. package/dist/types/components/Table/Table.d.ts +8 -0
  300. package/dist/types/components/TableFilter/TableFilter.d.ts +2 -0
  301. package/dist/types/components/TableGroup/TableGroup.d.ts +5 -0
  302. package/dist/types/components/TablePreferences/TablePreferences.d.ts +56 -0
  303. package/dist/types/components/TableSavedViews/TableSavedViews.d.ts +4 -0
  304. package/dist/types/components/TableSearch/TableSearch.d.ts +2 -0
  305. package/dist/types/components/TableSort/TableSort.d.ts +2 -0
  306. package/dist/types/components/TableToolbar/TableToolbar.d.ts +2 -0
  307. package/dist/types/components/TimePicker/TimePicker.d.ts +33 -0
  308. package/dist/types/components.d.ts +1299 -66
  309. package/dist/types/utils/button-render.d.ts +1 -1
  310. package/dist/types/utils/clock-time.d.ts +23 -0
  311. package/dist/types/utils/date-filter-value.d.ts +4 -0
  312. package/dist/types/utils/index.d.ts +3 -1
  313. package/dist/vue/components.d.ts +6 -0
  314. package/dist/vue/components.js +6 -0
  315. package/dist/vue/ds-button-inverted.d.ts +3 -0
  316. package/dist/vue/ds-button-inverted.js +33 -0
  317. package/dist/vue/ds-calendar.d.ts +3 -0
  318. package/dist/vue/ds-calendar.js +16 -0
  319. package/dist/vue/ds-filter-menu.js +5 -0
  320. package/dist/vue/ds-input-date.d.ts +3 -0
  321. package/dist/vue/ds-input-date.js +31 -0
  322. package/dist/vue/ds-input-time.d.ts +3 -0
  323. package/dist/vue/ds-input-time.js +32 -0
  324. package/dist/vue/ds-input.js +2 -0
  325. package/dist/vue/ds-menu.js +1 -0
  326. package/dist/vue/ds-select.js +5 -0
  327. package/dist/vue/ds-tab-group.js +1 -0
  328. package/dist/vue/ds-table-filter.js +1 -0
  329. package/dist/vue/ds-table-group.js +3 -0
  330. package/dist/vue/ds-table-preferences.d.ts +3 -0
  331. package/dist/vue/ds-table-preferences.js +45 -0
  332. package/dist/vue/ds-table-saved-views.js +2 -0
  333. package/dist/vue/ds-table-search.js +1 -0
  334. package/dist/vue/ds-table-sort.js +1 -0
  335. package/dist/vue/ds-table-toolbar.js +2 -1
  336. package/dist/vue/ds-table.js +5 -0
  337. package/dist/vue/ds-time-picker.d.ts +3 -0
  338. package/dist/vue/ds-time-picker.js +16 -0
  339. package/package.json +1 -1
  340. package/dist/components/p-B_nPct4G.js +0 -2
  341. package/dist/components/p-B_nPct4G.js.map +0 -1
  342. package/dist/components/p-BlWNMytv.js +0 -2
  343. package/dist/components/p-BlWNMytv.js.map +0 -1
  344. package/dist/components/p-ByoywoBH.js +0 -2
  345. package/dist/components/p-C1QHxVvP.js.map +0 -1
  346. package/dist/components/p-CHBuzAYH.js +0 -2
  347. package/dist/components/p-CIYJhyKt.js +0 -2
  348. package/dist/components/p-CUL5_8JM.js +0 -2
  349. package/dist/components/p-CUL5_8JM.js.map +0 -1
  350. package/dist/components/p-CnK36Be0.js +0 -2
  351. package/dist/components/p-Cw_npFwN.js +0 -2
  352. package/dist/components/p-Cw_npFwN.js.map +0 -1
  353. package/dist/components/p-DEyvEIYL.js +0 -2
  354. package/dist/components/p-DVWOUQfT.js +0 -2
  355. package/dist/components/p-DVWOUQfT.js.map +0 -1
  356. package/dist/components/p-Dhw_W8nk.js.map +0 -1
  357. package/dist/components/p-LZ8F08Fj.js.map +0 -1
  358. package/dist/components/p-xxuHxP3u.js +0 -2
  359. package/dist/components/p-xxuHxP3u.js.map +0 -1
  360. package/dist/types/components/FilterMenu/filter-menu-calendar.d.ts +0 -13
  361. /package/dist/components/{p-B5QVra1K.js.map → p-2GVGhrh0.js.map} +0 -0
  362. /package/dist/components/{p-BqGdNrVl.js.map → p-8oRkhvjy.js.map} +0 -0
  363. /package/dist/components/{p-CqeMumqy.js.map → p-BV5T1hzN.js.map} +0 -0
  364. /package/dist/components/{p-CIoeHcCk.js.map → p-BWfzaSc3.js.map} +0 -0
  365. /package/dist/components/{p-AkSwrAKR.js.map → p-BgLI9JoT.js.map} +0 -0
  366. /package/dist/components/{p-BwsS_Hyr.js.map → p-C-dHtQMi.js.map} +0 -0
  367. /package/dist/components/{p-CoE7yza3.js.map → p-C2JnoaWI.js.map} +0 -0
  368. /package/dist/components/{p-lv4YQEsa.js.map → p-C4m8y9ki.js.map} +0 -0
  369. /package/dist/components/{p-BEttT0UB.js.map → p-CDJ2Ntcq.js.map} +0 -0
  370. /package/dist/components/{p-Dj296RmE.js.map → p-CMQUuGvl.js.map} +0 -0
  371. /package/dist/components/{p-DyyfWSLB.js.map → p-CQ5RwY2C.js.map} +0 -0
  372. /package/dist/components/{p-CQqZgTYk.js.map → p-CWPT3aOB.js.map} +0 -0
  373. /package/dist/components/{p-OxdAzO4v.js.map → p-Ce4zy8q1.js.map} +0 -0
  374. /package/dist/components/{p-CNDTHTf6.js.map → p-Cga6Ex0E.js.map} +0 -0
  375. /package/dist/components/{p-CBQzTgvI.js.map → p-Cl9phSf0.js.map} +0 -0
  376. /package/dist/components/{p-DzbEJN1A.js.map → p-ClJhuG5Y.js.map} +0 -0
  377. /package/dist/components/{p-D_QtZZR8.js.map → p-CqW2eyiF.js.map} +0 -0
  378. /package/dist/components/{p-CHUdAW1Q.js.map → p-Cus1Sigh.js.map} +0 -0
  379. /package/dist/components/{p-CzbsTZt7.js.map → p-Cxr0IQjC.js.map} +0 -0
  380. /package/dist/components/{p-Da9VpZX2.js.map → p-DBwa1OXP.js.map} +0 -0
  381. /package/dist/components/{p-Br0dx2uP.js.map → p-DK9Ex3aY.js.map} +0 -0
  382. /package/dist/components/{p-CweS0FfJ.js.map → p-DLXXGgmf.js.map} +0 -0
  383. /package/dist/components/{p-CvplapTD.js.map → p-DVd1TIxi.js.map} +0 -0
  384. /package/dist/components/{p-Dx7WcWW1.js.map → p-DgG9W9N4.js.map} +0 -0
  385. /package/dist/components/{p-4DNyCYKM.js.map → p-DkfM55x8.js.map} +0 -0
  386. /package/dist/components/{p-DjCnGxSd.js.map → p-Dryt3COt.js.map} +0 -0
  387. /package/dist/components/{p-eo_pmPqp.js.map → p-Ds51RgCi.js.map} +0 -0
  388. /package/dist/components/{p-DBZwI7HY.js.map → p-DvzI2A_M.js.map} +0 -0
  389. /package/dist/components/{p-C51ytXM6.js.map → p-Jaqdfw4E.js.map} +0 -0
  390. /package/dist/components/{p-BMERUCe1.js.map → p-KBrC9IG4.js.map} +0 -0
  391. /package/dist/components/{p-CXAa9TUM.js.map → p-PmcUwTQ_.js.map} +0 -0
  392. /package/dist/components/{p-zZuAAiiI.js.map → p-bM3LH3kc.js.map} +0 -0
  393. /package/dist/components/{p-CK2S28gU.js.map → p-ji09W9el.js.map} +0 -0
  394. /package/dist/components/{p-DrjY8Mpy.js.map → p-neWTRxmf.js.map} +0 -0
  395. /package/dist/components/{p-CMq-jKEI.js.map → p-rYePOPbJ.js.map} +0 -0
  396. /package/dist/components/{p-CKo2nySr.js.map → p-tNQ0YulU.js.map} +0 -0
  397. /package/dist/components/{p-C8XJgV1n.js.map → p-x1wf38q3.js.map} +0 -0
@@ -0,0 +1,511 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "table-preferences",
4
+ "title": "TablePreferences",
5
+ "description": "Compact table preferences dialog with Filters, Sort, Group, and Customize tabs.",
6
+ "type": "registry:ui",
7
+ "meta": {
8
+ "library": "@ds-mo/ui",
9
+ "distribution": "npm",
10
+ "storybook": "https://zainadeel.github.io/compomo/?path=/story/table-preferences",
11
+ "source": "src/wc/components/TablePreferences/TablePreferences.tsx",
12
+ "intentStatus": "complete",
13
+ "intent": {
14
+ "audience": "general",
15
+ "status": "experimental",
16
+ "summary": "Compact table preferences dialog with Filters, Sort, Group, and Customize tabs.",
17
+ "useWhen": [
18
+ "A narrow table toolbar or a user preference calls for one result-shaping control."
19
+ ],
20
+ "avoidWhen": [
21
+ "The application needs unrelated actions or a submitted form."
22
+ ],
23
+ "states": [
24
+ "The application owns all filter, sort, grouping, and column configuration values. Apply emitted changes to the table and replace the matching preferences inputs.",
25
+ "The component owns popup visibility, active tab, positioning, and dismissal; embedded controls reuse the same content as their standalone popups.",
26
+ "Borderless toolbar compositions omit resting control borders while retaining focus and interaction feedback.",
27
+ "Apply-required filtering stages edits locally, including match mode. Clear immediately clears all filters and discards pending edits. The footer appears when filters are selected or applied; Apply stays in place and inactive without pending changes; applying emits controlled changes. Closing discards unapplied edits.",
28
+ "Embedded presentation delegates its active tab, draft state, Apply, Reset, and dismissal to the owning panel; it renders vertical filter and grouping content without a popup trigger."
29
+ ],
30
+ "accessibility": [
31
+ "An icon-only Preferences trigger opens a named dialog. TabGroup owns section keyboard navigation; Escape and outside activation dismiss, returning focus to the trigger."
32
+ ],
33
+ "responsiveBehavior": [
34
+ "The popup fits the viewport and scrolls internally. The application chooses whether to show it instead of separate controls. Hide the table-owned Customize trigger while retaining column customization."
35
+ ],
36
+ "patterns": [],
37
+ "commonlyComposedWith": [
38
+ "component:ds-table",
39
+ "component:ds-table-toolbar",
40
+ "component:ds-filter-menu",
41
+ "component:ds-menu",
42
+ "component:ds-table-group",
43
+ "component:ds-tab-group"
44
+ ]
45
+ },
46
+ "api": {
47
+ "props": {
48
+ "activeFilterId": {
49
+ "type": "string | undefined",
50
+ "resolvedType": "string | undefined",
51
+ "attribute": "active-filter-id",
52
+ "required": false,
53
+ "mutable": false
54
+ },
55
+ "activeTab": {
56
+ "type": "PreferencesTab",
57
+ "resolvedType": "\"customize\" | \"filters\" | \"group\" | \"sort\"",
58
+ "attribute": "active-tab",
59
+ "default": "'filters'",
60
+ "required": false,
61
+ "mutable": false
62
+ },
63
+ "columnOrder": {
64
+ "type": "string[]",
65
+ "resolvedType": "string[]",
66
+ "default": "[]",
67
+ "required": false,
68
+ "mutable": false
69
+ },
70
+ "columns": {
71
+ "type": "TableColumn[]",
72
+ "resolvedType": "TableColumn[]",
73
+ "default": "[]",
74
+ "required": false,
75
+ "mutable": false
76
+ },
77
+ "customizeOptions": {
78
+ "type": "MenuItemData[]",
79
+ "resolvedType": "MenuItemData[]",
80
+ "default": "[]",
81
+ "required": false,
82
+ "mutable": false,
83
+ "description": "Additional toggle options in the column customizer."
84
+ },
85
+ "customizeSections": {
86
+ "type": "MenuSection[]",
87
+ "resolvedType": "MenuSection[]",
88
+ "default": "[]",
89
+ "required": false,
90
+ "mutable": false
91
+ },
92
+ "embedded": {
93
+ "type": "boolean",
94
+ "resolvedType": "boolean",
95
+ "attribute": "embedded",
96
+ "default": "false",
97
+ "required": false,
98
+ "mutable": false,
99
+ "description": "Render shared content without its popup or trigger."
100
+ },
101
+ "filters": {
102
+ "type": "FilterMenuFilter[]",
103
+ "resolvedType": "FilterMenuFilter[]",
104
+ "default": "[]",
105
+ "required": false,
106
+ "mutable": false
107
+ },
108
+ "grouping": {
109
+ "type": "TableGroupingState | null",
110
+ "resolvedType": "TableGroupingState | null",
111
+ "default": "null",
112
+ "required": false,
113
+ "mutable": false
114
+ },
115
+ "groupingOptions": {
116
+ "type": "TableGroupOption[]",
117
+ "resolvedType": "TableGroupOption[]",
118
+ "default": "[]",
119
+ "required": false,
120
+ "mutable": false
121
+ },
122
+ "hasBorder": {
123
+ "type": "boolean",
124
+ "resolvedType": "boolean",
125
+ "attribute": "has-border",
126
+ "default": "true",
127
+ "required": false,
128
+ "mutable": false,
129
+ "description": "Show the trigger border."
130
+ },
131
+ "hiddenColumnIds": {
132
+ "type": "string[]",
133
+ "resolvedType": "string[]",
134
+ "default": "[]",
135
+ "required": false,
136
+ "mutable": false
137
+ },
138
+ "label": {
139
+ "type": "string",
140
+ "resolvedType": "string",
141
+ "attribute": "label",
142
+ "default": "'Configure view'",
143
+ "required": false,
144
+ "mutable": false
145
+ },
146
+ "matchModes": {
147
+ "type": "FilterMenuMatchModes",
148
+ "resolvedType": "{ [x: string]: FilterMenuMatchMode | undefined; }",
149
+ "default": "{}",
150
+ "required": false,
151
+ "mutable": false
152
+ },
153
+ "sort": {
154
+ "type": "TableSortState | null",
155
+ "resolvedType": "TableSortState | null",
156
+ "default": "null",
157
+ "required": false,
158
+ "mutable": false
159
+ },
160
+ "sortColumns": {
161
+ "type": "TableColumn[]",
162
+ "resolvedType": "TableColumn[] | undefined",
163
+ "required": false,
164
+ "mutable": false,
165
+ "description": "Optional sort fields when they differ from customizable content."
166
+ },
167
+ "values": {
168
+ "type": "FilterMenuValues",
169
+ "resolvedType": "{ [x: string]: FilterMenuValue | undefined; }",
170
+ "default": "{}",
171
+ "required": false,
172
+ "mutable": false
173
+ }
174
+ },
175
+ "events": [
176
+ {
177
+ "name": "dsActiveFilterChange",
178
+ "detail": "string",
179
+ "bubbles": true,
180
+ "cancelable": true,
181
+ "composed": true
182
+ },
183
+ {
184
+ "name": "dsColumnsConfigChange",
185
+ "detail": "TableColumnsConfigChangeDetail",
186
+ "bubbles": true,
187
+ "cancelable": true,
188
+ "composed": true
189
+ },
190
+ {
191
+ "name": "dsCustomizeOptionChange",
192
+ "detail": "string",
193
+ "bubbles": true,
194
+ "cancelable": true,
195
+ "composed": true
196
+ },
197
+ {
198
+ "name": "dsFilterChange",
199
+ "detail": "FilterMenuChangeDetail",
200
+ "bubbles": true,
201
+ "cancelable": true,
202
+ "composed": true
203
+ },
204
+ {
205
+ "name": "dsFilterMatchModeChange",
206
+ "detail": "FilterMenuMatchModeChangeDetail",
207
+ "bubbles": true,
208
+ "cancelable": true,
209
+ "composed": true
210
+ },
211
+ {
212
+ "name": "dsFiltersClear",
213
+ "detail": "void",
214
+ "bubbles": true,
215
+ "cancelable": true,
216
+ "composed": true
217
+ },
218
+ {
219
+ "name": "dsGroupChange",
220
+ "detail": "TableGroupingState",
221
+ "bubbles": true,
222
+ "cancelable": true,
223
+ "composed": true
224
+ },
225
+ {
226
+ "name": "dsGroupClear",
227
+ "detail": "void",
228
+ "bubbles": true,
229
+ "cancelable": true,
230
+ "composed": true
231
+ },
232
+ {
233
+ "name": "dsPreferencesTabChange",
234
+ "detail": "PreferencesTab",
235
+ "bubbles": true,
236
+ "cancelable": true,
237
+ "composed": true
238
+ },
239
+ {
240
+ "name": "dsSortChange",
241
+ "detail": "TableSortChangeDetail",
242
+ "bubbles": true,
243
+ "cancelable": true,
244
+ "composed": true
245
+ }
246
+ ],
247
+ "methods": [],
248
+ "slots": []
249
+ },
250
+ "props": {
251
+ "activeFilterId": {
252
+ "type": "string | undefined",
253
+ "resolvedType": "string | undefined",
254
+ "attribute": "active-filter-id",
255
+ "required": false,
256
+ "mutable": false
257
+ },
258
+ "activeTab": {
259
+ "type": "PreferencesTab",
260
+ "resolvedType": "\"customize\" | \"filters\" | \"group\" | \"sort\"",
261
+ "attribute": "active-tab",
262
+ "default": "'filters'",
263
+ "required": false,
264
+ "mutable": false
265
+ },
266
+ "columnOrder": {
267
+ "type": "string[]",
268
+ "resolvedType": "string[]",
269
+ "default": "[]",
270
+ "required": false,
271
+ "mutable": false
272
+ },
273
+ "columns": {
274
+ "type": "TableColumn[]",
275
+ "resolvedType": "TableColumn[]",
276
+ "default": "[]",
277
+ "required": false,
278
+ "mutable": false
279
+ },
280
+ "customizeOptions": {
281
+ "type": "MenuItemData[]",
282
+ "resolvedType": "MenuItemData[]",
283
+ "default": "[]",
284
+ "required": false,
285
+ "mutable": false,
286
+ "description": "Additional toggle options in the column customizer."
287
+ },
288
+ "customizeSections": {
289
+ "type": "MenuSection[]",
290
+ "resolvedType": "MenuSection[]",
291
+ "default": "[]",
292
+ "required": false,
293
+ "mutable": false
294
+ },
295
+ "embedded": {
296
+ "type": "boolean",
297
+ "resolvedType": "boolean",
298
+ "attribute": "embedded",
299
+ "default": "false",
300
+ "required": false,
301
+ "mutable": false,
302
+ "description": "Render shared content without its popup or trigger."
303
+ },
304
+ "filters": {
305
+ "type": "FilterMenuFilter[]",
306
+ "resolvedType": "FilterMenuFilter[]",
307
+ "default": "[]",
308
+ "required": false,
309
+ "mutable": false
310
+ },
311
+ "grouping": {
312
+ "type": "TableGroupingState | null",
313
+ "resolvedType": "TableGroupingState | null",
314
+ "default": "null",
315
+ "required": false,
316
+ "mutable": false
317
+ },
318
+ "groupingOptions": {
319
+ "type": "TableGroupOption[]",
320
+ "resolvedType": "TableGroupOption[]",
321
+ "default": "[]",
322
+ "required": false,
323
+ "mutable": false
324
+ },
325
+ "hasBorder": {
326
+ "type": "boolean",
327
+ "resolvedType": "boolean",
328
+ "attribute": "has-border",
329
+ "default": "true",
330
+ "required": false,
331
+ "mutable": false,
332
+ "description": "Show the trigger border."
333
+ },
334
+ "hiddenColumnIds": {
335
+ "type": "string[]",
336
+ "resolvedType": "string[]",
337
+ "default": "[]",
338
+ "required": false,
339
+ "mutable": false
340
+ },
341
+ "label": {
342
+ "type": "string",
343
+ "resolvedType": "string",
344
+ "attribute": "label",
345
+ "default": "'Configure view'",
346
+ "required": false,
347
+ "mutable": false
348
+ },
349
+ "matchModes": {
350
+ "type": "FilterMenuMatchModes",
351
+ "resolvedType": "{ [x: string]: FilterMenuMatchMode | undefined; }",
352
+ "default": "{}",
353
+ "required": false,
354
+ "mutable": false
355
+ },
356
+ "sort": {
357
+ "type": "TableSortState | null",
358
+ "resolvedType": "TableSortState | null",
359
+ "default": "null",
360
+ "required": false,
361
+ "mutable": false
362
+ },
363
+ "sortColumns": {
364
+ "type": "TableColumn[]",
365
+ "resolvedType": "TableColumn[] | undefined",
366
+ "required": false,
367
+ "mutable": false,
368
+ "description": "Optional sort fields when they differ from customizable content."
369
+ },
370
+ "values": {
371
+ "type": "FilterMenuValues",
372
+ "resolvedType": "{ [x: string]: FilterMenuValue | undefined; }",
373
+ "default": "{}",
374
+ "required": false,
375
+ "mutable": false
376
+ }
377
+ },
378
+ "events": [
379
+ {
380
+ "name": "dsActiveFilterChange",
381
+ "detail": "string",
382
+ "bubbles": true,
383
+ "cancelable": true,
384
+ "composed": true
385
+ },
386
+ {
387
+ "name": "dsColumnsConfigChange",
388
+ "detail": "TableColumnsConfigChangeDetail",
389
+ "bubbles": true,
390
+ "cancelable": true,
391
+ "composed": true
392
+ },
393
+ {
394
+ "name": "dsCustomizeOptionChange",
395
+ "detail": "string",
396
+ "bubbles": true,
397
+ "cancelable": true,
398
+ "composed": true
399
+ },
400
+ {
401
+ "name": "dsFilterChange",
402
+ "detail": "FilterMenuChangeDetail",
403
+ "bubbles": true,
404
+ "cancelable": true,
405
+ "composed": true
406
+ },
407
+ {
408
+ "name": "dsFilterMatchModeChange",
409
+ "detail": "FilterMenuMatchModeChangeDetail",
410
+ "bubbles": true,
411
+ "cancelable": true,
412
+ "composed": true
413
+ },
414
+ {
415
+ "name": "dsFiltersClear",
416
+ "detail": "void",
417
+ "bubbles": true,
418
+ "cancelable": true,
419
+ "composed": true
420
+ },
421
+ {
422
+ "name": "dsGroupChange",
423
+ "detail": "TableGroupingState",
424
+ "bubbles": true,
425
+ "cancelable": true,
426
+ "composed": true
427
+ },
428
+ {
429
+ "name": "dsGroupClear",
430
+ "detail": "void",
431
+ "bubbles": true,
432
+ "cancelable": true,
433
+ "composed": true
434
+ },
435
+ {
436
+ "name": "dsPreferencesTabChange",
437
+ "detail": "PreferencesTab",
438
+ "bubbles": true,
439
+ "cancelable": true,
440
+ "composed": true
441
+ },
442
+ {
443
+ "name": "dsSortChange",
444
+ "detail": "TableSortChangeDetail",
445
+ "bubbles": true,
446
+ "cancelable": true,
447
+ "composed": true
448
+ }
449
+ ],
450
+ "methods": [],
451
+ "slots": [],
452
+ "exports": {
453
+ "customElement": "ds-table-preferences",
454
+ "react": "DsTablePreferences",
455
+ "vue": "DsTablePreferences",
456
+ "angular": "DsTablePreferences"
457
+ },
458
+ "consumption": {
459
+ "install": "npm install @ds-mo/ui @ds-mo/tokens @ds-mo/icons",
460
+ "cssSetup": "import '@ds-mo/tokens';\nimport '@ds-mo/tokens/reset';\nimport '@ds-mo/tokens/globals';",
461
+ "customElements": {
462
+ "import": "import '@ds-mo/ui/dist/components/ds-table-preferences.js';",
463
+ "example": "<ds-table-preferences></ds-table-preferences>"
464
+ },
465
+ "react": {
466
+ "import": "import { DsTablePreferences } from '@ds-mo/ui/react';",
467
+ "example": "<DsTablePreferences />"
468
+ },
469
+ "vue": {
470
+ "import": "import { DsTablePreferences } from '@ds-mo/ui/vue';",
471
+ "example": "<DsTablePreferences />"
472
+ },
473
+ "angular": {
474
+ "import": "import { DsTablePreferences } from '@ds-mo/ui/angular/ds-table-preferences';",
475
+ "example": "<ds-table-preferences></ds-table-preferences>"
476
+ },
477
+ "complexPropertyNote": "Assign these non-primitive values as JavaScript properties: columnOrder, columns, customizeOptions, customizeSections, filters, grouping, groupingOptions, hiddenColumnIds, matchModes, sort, sortColumns, values.",
478
+ "peerDependencies": {
479
+ "required": [
480
+ "@ds-mo/tokens ^6.5.1",
481
+ "@ds-mo/icons ^7.0.0"
482
+ ],
483
+ "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
484
+ }
485
+ }
486
+ },
487
+ "dependencies": [
488
+ "@ds-mo/ui",
489
+ "@ds-mo/tokens"
490
+ ],
491
+ "registryDependencies": [
492
+ "button-unfilled",
493
+ "filter-menu",
494
+ "menu",
495
+ "tab-group",
496
+ "table-group",
497
+ "tooltip"
498
+ ],
499
+ "files": [
500
+ {
501
+ "path": "src/wc/components/TablePreferences/TablePreferences.css",
502
+ "content": "@import '../../utils/radius.css';\n\n:host {\n display: inline-flex;\n}\n\n.table-preferences {\n position: fixed;\n margin: 0;\n padding: 0;\n border: 0;\n border-radius: var(--ds-radius-menu);\n width: min(var(--dimension-menu-width-lg), calc(100vw - var(--dimension-space-200)));\n max-height: calc(100dvh - var(--dimension-space-400));\n display: flex;\n flex-direction: column;\n overflow: hidden;\n background: var(--color-background-primary);\n color: var(--color-foreground-secondary);\n box-shadow: var(--effect-shadow-elevated-floating);\n}\n\n.table-preferences::after {\n content: '';\n position: absolute;\n inset: 0;\n border-radius: inherit;\n box-shadow: var(--effect-highlight-elevated-floating);\n pointer-events: none;\n z-index: 4;\n}\n\n.table-preferences__tabs {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n box-sizing: border-box;\n flex: 0 0 var(--dimension-size-500);\n min-block-size: var(--dimension-size-500);\n padding: var(--dimension-space-050);\n background: var(--color-background-primary);\n border-bottom: var(--dimension-stroke-width-012) solid var(--color-border-tertiary);\n}\n\n.table-preferences__body {\n min-height: 0;\n overflow: auto;\n overscroll-behavior: contain;\n}\n\n:host:has(.table-preferences-panel) {\n display: flex;\n flex: 1;\n min-height: 0;\n}\n.table-preferences-panel {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n min-width: 0;\n}\n.table-preferences-panel .table-preferences__tabs {\n flex: 0 0 auto;\n padding: var(--dimension-space-200);\n}\n",
503
+ "type": "registry:ui"
504
+ },
505
+ {
506
+ "path": "src/wc/components/TablePreferences/TablePreferences.tsx",
507
+ "content": "import type { MenuItemData, MenuSection } from '../Menu/menu-types';\nimport { resolveAnchoredOverlayBoundaryRect } from '../../utils/anchored-overlay-boundary';\nimport {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Prop,\n State,\n} from '@stencil/core';\nimport type {\n FilterMenuFilter,\n FilterMenuValues,\n FilterMenuMatchModes,\n FilterMenuChangeDetail,\n FilterMenuMatchModeChangeDetail,\n} from '../FilterMenu/FilterMenu';\nimport type {\n TableColumn,\n TableSortState,\n TableSortChangeDetail,\n TableGroupingState,\n TableColumnsConfigChangeDetail,\n} from '../Table/table-types';\nimport type { TableGroupOption } from '../TableGroup/TableGroup';\nimport {\n tableSortMenuSections,\n nextTableSortStateFromMenuItem,\n} from '../TableSort/table-sort-menu';\nimport {\n tableColumnCustomizerMenuItems,\n toggleTableColumnHidden,\n resolveTableColumnOrder,\n} from '../Table/table-column-customizer';\nimport { AnchoredPositionController } from '../../utils/anchored-position-controller';\nimport { AnchoredOverlayInteractionController } from '../../utils/anchored-overlay-interaction-controller';\nimport { resolveCssLengthPx } from '../../utils/resolve-css-length-px';\nimport { TOKEN_DEFAULTS } from '../../utils/token-defaults';\n\nexport type PreferencesTab = 'filters' | 'sort' | 'group' | 'customize';\nlet preferencesSequence = 0;\n\n@Component({ tag: 'ds-table-preferences', styleUrl: 'TablePreferences.css', scoped: true })\nexport class TablePreferences {\n @Element() el!: HTMLElement;\n /** Show the trigger border. */\n @Prop() hasBorder: boolean = true;\n @Prop() filters: FilterMenuFilter[] = [];\n @Prop() values: FilterMenuValues = {};\n @Prop() matchModes: FilterMenuMatchModes = {};\n @Prop() activeFilterId: string | undefined;\n @Prop() columns: TableColumn[] = [];\n /** Additional toggle options in the column customizer. */\n @Prop() customizeOptions: MenuItemData[] = [];\n @Prop() customizeSections: MenuSection[] = [];\n @Event() dsCustomizeOptionChange!: EventEmitter<string>;\n /** Optional sort fields when they differ from customizable content. */\n @Prop() sortColumns?: TableColumn[];\n @Prop() sort: TableSortState | null = null;\n @Prop() groupingOptions: TableGroupOption[] = [];\n @Prop() grouping: TableGroupingState | null = null;\n @Prop() hiddenColumnIds: string[] = [];\n @Prop() columnOrder: string[] = [];\n /** Render shared content without its popup or trigger. */\n @Prop() embedded = false;\n @Prop() activeTab: PreferencesTab = 'filters';\n @Event() dsPreferencesTabChange!: EventEmitter<PreferencesTab>;\n @Prop() label = 'Configure view';\n @Event() dsFilterChange!: EventEmitter<FilterMenuChangeDetail>;\n @Event() dsFilterMatchModeChange!: EventEmitter<FilterMenuMatchModeChangeDetail>;\n @Event() dsActiveFilterChange!: EventEmitter<string>;\n @Event() dsFiltersClear!: EventEmitter<void>;\n @Event() dsSortChange!: EventEmitter<TableSortChangeDetail>;\n @Event() dsGroupChange!: EventEmitter<TableGroupingState>;\n @Event() dsGroupClear!: EventEmitter<void>;\n @Event() dsColumnsConfigChange!: EventEmitter<TableColumnsConfigChangeDetail>;\n @State() private open = false;\n @State() private tab: PreferencesTab = 'filters';\n @State() private pos = { x: 0, y: 0 };\n @State() private ready = false;\n private readonly popupId = `ds-table-preferences-${++preferencesSequence}`;\n private trigger?: HTMLDsButtonUnfilledElement;\n private popup?: HTMLElement;\n private readonly position = new AnchoredPositionController({\n getAnchor: () => this.trigger ?? null,\n getPopup: () => this.popup ?? null,\n getOwnerDocument: () => this.el.ownerDocument,\n measure: (anchor, popup) => {\n const collisionRect = resolveAnchoredOverlayBoundaryRect(anchor);\n const pad = resolveCssLengthPx(TOKEN_DEFAULTS.space100, 8);\n popup.style.maxWidth = `${Math.max(0, Math.min(window.innerWidth, collisionRect?.width ?? window.innerWidth) - pad * 2)}px`;\n popup.style.maxHeight = `${Math.max(0, Math.min(window.innerHeight, collisionRect?.height ?? window.innerHeight) - pad * 2)}px`;\n return {\n anchorRect: anchor.getBoundingClientRect(),\n popupWidth: popup.offsetWidth,\n popupHeight: popup.offsetHeight,\n side: 'bottom',\n align: 'end',\n sideOffsetPx: resolveCssLengthPx(TOKEN_DEFAULTS.space050, 4),\n alignOffsetPx: 0,\n viewportPadPx: resolveCssLengthPx(TOKEN_DEFAULTS.space100, 8),\n viewportWidth: window.innerWidth,\n viewportHeight: window.innerHeight,\n collisionRect,\n };\n },\n apply: ({ x, y }) => {\n this.pos = { x, y };\n },\n onReady: () => {\n this.ready = true;\n },\n topLayer: true,\n observeResize: true,\n observeAnchorMotion: true,\n liveUpdate: 'double-frame',\n });\n private readonly interaction = new AnchoredOverlayInteractionController({\n getAnchor: () => this.trigger ?? null,\n getPopup: () => this.popup ?? null,\n getOwnerDocument: () => this.el.ownerDocument,\n onOutsideActivation: () => this.close(),\n });\n disconnectedCallback() {\n this.position.unobserve();\n this.interaction.disconnect();\n }\n private close() {\n this.position.unobserve();\n this.interaction.disconnect();\n if (this.popup?.matches(':popover-open')) this.popup.hidePopover();\n this.open = false;\n void this.trigger?.setFocus();\n }\n private toggle() {\n if (this.open) {\n this.close();\n return;\n }\n this.open = true;\n this.ready = false;\n this.position.observe();\n this.interaction.connect();\n this.position.schedule(async () => {\n await this.popup?.querySelector('ds-tab-group')?.componentOnReady?.();\n requestAnimationFrame(() => {\n if (this.open)\n this.popup?.querySelector<HTMLElement>('[role=\"tab\"][aria-selected=\"true\"]')?.focus();\n });\n });\n }\n @Listen('keydown')\n onKeydown(event: KeyboardEvent) {\n if (this.embedded || !this.open || event.defaultPrevented) return;\n if (event.key === 'Escape') {\n event.preventDefault();\n event.stopPropagation();\n this.close();\n } else if (event.key === 'Tab' && this.interaction.tabLeavesPopup(event)) {\n event.preventDefault();\n this.close();\n this.interaction.moveFocusAfterTab(event.shiftKey);\n }\n }\n private forward<T>(event: CustomEvent<T>, emitter: EventEmitter<T>) {\n event.stopPropagation();\n emitter.emit(event.detail);\n }\n render() {\n const currentTab = this.embedded ? this.activeTab : this.tab;\n const tabs = ['filters', 'sort', 'group', 'customize'].map(id => ({\n id,\n label: id === 'filters' ? 'Filters' : id[0].toUpperCase() + id.slice(1),\n panelId: `${this.popupId}-${id}`,\n }));\n return (\n <Host>\n {!this.embedded && (\n <ds-tooltip label={this.label} side=\"bottom\" size=\"sm\">\n <ds-button-unfilled\n hasBorder={this.hasBorder}\n ref={el => {\n this.trigger = el;\n }}\n variant=\"icon\"\n icon=\"Preferences\"\n size=\"md\"\n ariaLabel={this.label}\n haspopup=\"dialog\"\n expanded={this.open}\n surfaceOpen={this.open}\n controls={this.popupId}\n onDsClick={() => this.toggle()}\n />\n </ds-tooltip>\n )}\n {(this.open || this.embedded) && (\n <div\n ref={el => {\n this.popup = el;\n }}\n id={this.popupId}\n popover={this.embedded ? undefined : 'manual'}\n role={this.embedded ? undefined : 'dialog'}\n aria-label={this.label}\n class={{\n 'table-preferences': !this.embedded,\n 'table-preferences-panel': this.embedded,\n }}\n style={\n this.embedded\n ? undefined\n : {\n left: `${this.pos.x}px`,\n top: `${this.pos.y}px`,\n visibility: this.ready ? 'visible' : 'hidden',\n }\n }\n >\n <div class=\"table-preferences__tabs\">\n <ds-tab-group\n ariaLabel=\"Table preference sections\"\n size=\"md\"\n presentation={this.embedded ? 'segmented' : 'tabs'}\n width={this.embedded ? 'fill' : 'hug'}\n tabs={tabs}\n value={currentTab}\n onDsChange={event => {\n event.stopPropagation();\n this.tab = event.detail as PreferencesTab;\n this.dsPreferencesTabChange.emit(this.tab);\n }}\n />\n </div>\n <div\n class=\"table-preferences__body\"\n id={`${this.popupId}-${currentTab}`}\n role=\"tabpanel\"\n aria-label={tabs.find(tab => tab.id === currentTab)?.label}\n >\n <div hidden={currentTab !== 'filters'}>\n <ds-filter-menu\n embedded\n vertical={this.embedded}\n applyRequired={!this.embedded}\n filters={this.filters}\n values={this.values}\n matchModes={this.matchModes}\n activeFilterId={this.activeFilterId}\n footerLayout=\"categories-clear\"\n onDsChange={e => this.forward(e, this.dsFilterChange)}\n onDsMatchModeChange={e => this.forward(e, this.dsFilterMatchModeChange)}\n onDsActiveFilterChange={e => this.forward(e, this.dsActiveFilterChange)}\n onDsClear={e => this.forward(e, this.dsFiltersClear)}\n />\n </div>\n {currentTab === 'sort' && (\n <ds-menu\n embedded\n menuLabel=\"Sort table\"\n sections={tableSortMenuSections(this.sortColumns ?? this.columns, this.sort)}\n onDsSelect={e => {\n e.stopPropagation();\n this.dsSortChange.emit({\n sort: nextTableSortStateFromMenuItem(\n this.sortColumns ?? this.columns,\n this.sort,\n e.detail\n ),\n });\n }}\n />\n )}\n {currentTab === 'group' && (\n <ds-table-group\n embedded\n vertical={this.embedded}\n options={this.groupingOptions}\n grouping={this.grouping}\n onDsGroupChange={e => this.forward(e, this.dsGroupChange)}\n onDsClear={e => this.forward(e, this.dsGroupClear)}\n />\n )}\n {currentTab === 'customize' && (\n <ds-menu\n embedded\n menuLabel=\"Customize table\"\n sections={[\n ...(this.columns.length\n ? [\n {\n header: this.customizeOptions.length ? 'Columns' : undefined,\n items: tableColumnCustomizerMenuItems(\n this.columns,\n this.hiddenColumnIds,\n this.columnOrder\n ),\n },\n ]\n : []),\n ...this.customizeSections,\n ...(this.customizeOptions.length\n ? [{ header: 'Options', items: this.customizeOptions }]\n : []),\n ]}\n onDsSelect={e => {\n e.stopPropagation();\n if (!e.detail.value || e.detail.isInactive) return;\n if (\n [\n ...this.customizeOptions,\n ...this.customizeSections.flatMap(section =>\n 'items' in section ? section.items : []\n ),\n ].some(option => option.value === e.detail.value)\n ) {\n this.dsCustomizeOptionChange.emit(e.detail.value);\n return;\n }\n this.dsColumnsConfigChange.emit({\n hiddenColumnIds: toggleTableColumnHidden(\n this.columns,\n this.hiddenColumnIds,\n e.detail.value\n ),\n columnOrder: resolveTableColumnOrder(this.columns, this.columnOrder),\n });\n }}\n onDsReorder={e => {\n e.stopPropagation();\n this.dsColumnsConfigChange.emit({\n hiddenColumnIds: this.hiddenColumnIds,\n columnOrder: e.detail.items\n .filter(item => item.reorderable)\n .map(item => item.value!)\n .filter(Boolean),\n });\n }}\n />\n )}\n </div>\n </div>\n )}\n </Host>\n );\n }\n}\n",
508
+ "type": "registry:ui"
509
+ }
510
+ ]
511
+ }