@ds-mo/ui 14.36.0 → 15.0.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 (479) hide show
  1. package/dist/.package-ready.json +1 -1
  2. package/dist/agent-patterns.json +1 -1
  3. package/dist/agent.json +5083 -4924
  4. package/dist/angular/ds-conversation-list.d.ts +1 -1
  5. package/dist/angular/ds-conversation-list.js +3 -4
  6. package/dist/angular/ds-data-customize.d.ts +18 -0
  7. package/dist/angular/ds-data-customize.js +46 -0
  8. package/dist/angular/ds-data-filter.d.ts +50 -0
  9. package/dist/angular/{ds-table-filter.js → ds-data-filter.js} +10 -10
  10. package/dist/angular/ds-data-group.d.ts +29 -0
  11. package/dist/angular/{ds-table-group.js → ds-data-group.js} +10 -10
  12. package/dist/angular/ds-data-preferences.d.ts +39 -0
  13. package/dist/angular/{ds-table-preferences.js → ds-data-preferences.js} +15 -15
  14. package/dist/angular/ds-data-saved-views.d.ts +49 -0
  15. package/dist/angular/{ds-table-saved-views.js → ds-data-saved-views.js} +10 -10
  16. package/dist/angular/ds-data-search.d.ts +20 -0
  17. package/dist/angular/{ds-table-search.js → ds-data-search.js} +12 -12
  18. package/dist/angular/ds-data-sort.d.ts +16 -0
  19. package/dist/angular/{ds-table-sort.js → ds-data-sort.js} +12 -12
  20. package/dist/angular/ds-data-toolbar.d.ts +12 -0
  21. package/dist/angular/{ds-table-toolbar.js → ds-data-toolbar.js} +10 -10
  22. package/dist/angular/ds-table.d.ts +7 -7
  23. package/dist/angular/ds-table.js +6 -6
  24. package/dist/angular/index.d.ts +1 -1
  25. package/dist/angular/index.js +8 -7
  26. package/dist/angular/proxies.d.ts +8 -7
  27. package/dist/angular/proxies.js +8 -7
  28. package/dist/components/ds-agent-activity.js +1 -1
  29. package/dist/components/ds-agent-questionnaire.js +1 -1
  30. package/dist/components/ds-agent-response.js +1 -1
  31. package/dist/components/ds-agent-source-list.js +1 -1
  32. package/dist/components/ds-agent-tool-call.js +1 -1
  33. package/dist/components/ds-attachment-list.js +1 -1
  34. package/dist/components/ds-avatar.js +1 -1
  35. package/dist/components/ds-badge.js +1 -1
  36. package/dist/components/ds-banner.js +1 -1
  37. package/dist/components/ds-bar-action.js +1 -1
  38. package/dist/components/ds-bar-nav.js +1 -1
  39. package/dist/components/ds-bar-page-title.js +1 -1
  40. package/dist/components/ds-bar-title.js +1 -1
  41. package/dist/components/ds-bar-workflow.js +1 -1
  42. package/dist/components/ds-breadcrumb.js +1 -1
  43. package/dist/components/ds-button-filled.js +1 -1
  44. package/dist/components/ds-button-inverted.js +1 -1
  45. package/dist/components/ds-button-unfilled.js +1 -1
  46. package/dist/components/ds-calendar.js +1 -1
  47. package/dist/components/ds-card-action-center.js +1 -1
  48. package/dist/components/ds-card-chart.js +1 -1
  49. package/dist/components/ds-card-navigation.js +1 -1
  50. package/dist/components/ds-card-overview.js +1 -1
  51. package/dist/components/ds-card-setting.js +1 -1
  52. package/dist/components/ds-card-settings-scope.js +1 -1
  53. package/dist/components/ds-chart-legend.js +1 -1
  54. package/dist/components/ds-chart.js +1 -1
  55. package/dist/components/ds-checkbox.js +1 -1
  56. package/dist/components/ds-chip.js +1 -1
  57. package/dist/components/ds-code-block.js +1 -1
  58. package/dist/components/ds-conversation-list-item.js +1 -1
  59. package/dist/components/ds-conversation-list-section.js +1 -1
  60. package/dist/components/ds-conversation-list.js +1 -1
  61. package/dist/components/ds-conversation-list.js.map +1 -1
  62. package/dist/components/ds-data-customize.d.ts +11 -0
  63. package/dist/components/ds-data-customize.js +2 -0
  64. package/dist/components/ds-data-customize.js.map +1 -0
  65. package/dist/components/{ds-table-group.d.ts → ds-data-filter.d.ts} +4 -4
  66. package/dist/components/ds-data-filter.js +2 -0
  67. package/dist/components/ds-data-filter.js.map +1 -0
  68. package/dist/components/{ds-table-sort.d.ts → ds-data-group.d.ts} +4 -4
  69. package/dist/components/ds-data-group.js +2 -0
  70. package/dist/components/{ds-table-saved-views.d.ts → ds-data-preferences.d.ts} +4 -4
  71. package/dist/components/ds-data-preferences.js +2 -0
  72. package/dist/components/ds-data-preferences.js.map +1 -0
  73. package/dist/components/ds-data-saved-views.d.ts +11 -0
  74. package/dist/components/ds-data-saved-views.js +2 -0
  75. package/dist/components/ds-data-saved-views.js.map +1 -0
  76. package/dist/components/{ds-table-search.d.ts → ds-data-search.d.ts} +4 -4
  77. package/dist/components/ds-data-search.js +2 -0
  78. package/dist/components/ds-data-search.js.map +1 -0
  79. package/dist/components/ds-data-sort.d.ts +11 -0
  80. package/dist/components/ds-data-sort.js +2 -0
  81. package/dist/components/ds-data-sort.js.map +1 -0
  82. package/dist/components/{ds-table-filter.d.ts → ds-data-toolbar.d.ts} +4 -4
  83. package/dist/components/ds-data-toolbar.js +2 -0
  84. package/dist/components/ds-data-toolbar.js.map +1 -0
  85. package/dist/components/ds-divider.js +1 -1
  86. package/dist/components/ds-empty-state.js +1 -1
  87. package/dist/components/ds-field.js +1 -1
  88. package/dist/components/ds-filter-menu.js +1 -1
  89. package/dist/components/ds-icon.js +1 -1
  90. package/dist/components/ds-input-date.js +1 -1
  91. package/dist/components/ds-input-time.js +1 -1
  92. package/dist/components/ds-input-time.js.map +1 -1
  93. package/dist/components/ds-input.js +1 -1
  94. package/dist/components/ds-markdown.js +1 -1
  95. package/dist/components/ds-menu.js +1 -1
  96. package/dist/components/ds-message-actions.js +1 -1
  97. package/dist/components/ds-message-bubble.js +1 -1
  98. package/dist/components/ds-message-composer.js +1 -1
  99. package/dist/components/ds-message-composer.js.map +1 -1
  100. package/dist/components/ds-message-scroller.js +1 -1
  101. package/dist/components/ds-message.js +1 -1
  102. package/dist/components/ds-mobile-bar-nav.js +1 -1
  103. package/dist/components/ds-mobile-header.js +1 -1
  104. package/dist/components/ds-mobile-section-switcher.js +1 -1
  105. package/dist/components/ds-mobile-sheet-nav.js +1 -1
  106. package/dist/components/ds-modal.js +1 -1
  107. package/dist/components/ds-pagination.js +1 -1
  108. package/dist/components/ds-panel-nav.js +1 -1
  109. package/dist/components/ds-panel-sub-nav.js +1 -1
  110. package/dist/components/ds-panel-tool-header.js +1 -1
  111. package/dist/components/ds-panel-tool-search.js +1 -1
  112. package/dist/components/ds-panel-tools.js +1 -1
  113. package/dist/components/ds-paper-texture.js +1 -1
  114. package/dist/components/ds-radio.js +1 -1
  115. package/dist/components/ds-score.js +1 -1
  116. package/dist/components/ds-scroll-overlay.js +1 -1
  117. package/dist/components/ds-select.js +1 -1
  118. package/dist/components/ds-shell-app.js +1 -1
  119. package/dist/components/ds-shell-page.js +1 -1
  120. package/dist/components/ds-shell-tools.js +1 -1
  121. package/dist/components/ds-skeleton.js +1 -1
  122. package/dist/components/ds-slider.js +1 -1
  123. package/dist/components/ds-swatch-picker.js +1 -1
  124. package/dist/components/ds-switch.js +1 -1
  125. package/dist/components/ds-tab-group.js +1 -1
  126. package/dist/components/ds-table.js +1 -1
  127. package/dist/components/ds-table.js.map +1 -1
  128. package/dist/components/ds-tag.js +1 -1
  129. package/dist/components/ds-text.js +1 -1
  130. package/dist/components/ds-textarea.js +1 -1
  131. package/dist/components/ds-time-picker.js +1 -1
  132. package/dist/components/ds-toast.js +1 -1
  133. package/dist/components/ds-tooltip-chart.js +1 -1
  134. package/dist/components/ds-tooltip.js +1 -1
  135. package/dist/components/ds-typing-indicator.js +1 -1
  136. package/dist/components/index.d.ts +5 -5
  137. package/dist/components/{p-D8rpKod8.js → p-0FYD2bev.js} +2 -2
  138. package/dist/components/p-0qY_HDId.js +2 -0
  139. package/dist/components/{p-C0CE2v5D.js.map → p-0qY_HDId.js.map} +1 -1
  140. package/dist/components/{p-DK9Ex3aY.js → p-5URekSny.js} +2 -2
  141. package/dist/components/{p-Ds51RgCi.js → p-7V1AhetH.js} +2 -2
  142. package/dist/components/{p-C2JnoaWI.js → p-8yBdCXCn.js} +2 -2
  143. package/dist/components/{p-CQIh2yRP.js → p-BKZdqJQB.js} +2 -2
  144. package/dist/components/p-BKZdqJQB.js.map +1 -0
  145. package/dist/components/p-BYrBU_U9.js +2 -0
  146. package/dist/components/p-BYrBU_U9.js.map +1 -0
  147. package/dist/components/{p-su6y4hLK.js → p-BciTtTwx.js} +2 -2
  148. package/dist/components/{p-DgG9W9N4.js → p-BeNa6tw5.js} +2 -2
  149. package/dist/components/{p-DgG9W9N4.js.map → p-BeNa6tw5.js.map} +1 -1
  150. package/dist/components/p-BgQMEHRa.js +2 -0
  151. package/dist/components/{p-D7yBIPB6.js.map → p-BgQMEHRa.js.map} +1 -1
  152. package/dist/components/{p-CQ5RwY2C.js → p-BhJXmuRA.js} +2 -2
  153. package/dist/components/{p-neWTRxmf.js → p-Bm7rqs3C.js} +2 -2
  154. package/dist/components/{p-BV5T1hzN.js → p-Bn8I7iw6.js} +2 -2
  155. package/dist/components/{p-PmcUwTQ_.js → p-Bpd6YCo4.js} +2 -2
  156. package/dist/components/p-C-3YqeTb.js +2 -0
  157. package/dist/components/{p-TjXGRPik.js.map → p-C-3YqeTb.js.map} +1 -1
  158. package/dist/components/{p-C4m8y9ki.js → p-CD4DZPy_.js} +2 -2
  159. package/dist/components/{p-B27_chI7.js → p-CElUM-xU.js} +2 -2
  160. package/dist/components/{p-CuwopElg.js → p-CGidq1iC.js} +2 -2
  161. package/dist/components/{p-CWog26I_.js → p-CNxvnQ6A.js} +2 -2
  162. package/dist/components/{p-2GVGhrh0.js → p-CUcUHwI3.js} +2 -2
  163. package/dist/components/{p-CbSUyv5B.js → p-CYzFfFcH.js} +2 -2
  164. package/dist/components/p-CdgOLWX9.js +2 -0
  165. package/dist/components/p-CdgOLWX9.js.map +1 -0
  166. package/dist/components/{p-Jaqdfw4E.js → p-CiH4GG6r.js} +2 -2
  167. package/dist/components/{p-Cl9phSf0.js → p-CiJ1WR11.js} +2 -2
  168. package/dist/components/{p-Cus1Sigh.js → p-CmexIVnE.js} +2 -2
  169. package/dist/components/{p-DLXXGgmf.js → p-CzIpquvw.js} +2 -2
  170. package/dist/components/{p-tNQ0YulU.js → p-D0y7Sja6.js} +2 -2
  171. package/dist/components/{p-x1wf38q3.js → p-D1vQGJzc.js} +2 -2
  172. package/dist/components/{p-x1wf38q3.js.map → p-D1vQGJzc.js.map} +1 -1
  173. package/dist/components/{p-Dryt3COt.js → p-D6Wl3dRO.js} +2 -2
  174. package/dist/components/{p-ji09W9el.js → p-D922f6Tb.js} +2 -2
  175. package/dist/components/{p-CaNCGKEJ.js → p-DHICPS4n.js} +2 -2
  176. package/dist/components/{p-Cga6Ex0E.js → p-DOAybCp0.js} +2 -2
  177. package/dist/components/{p-CWPT3aOB.js → p-DVINzOoK.js} +2 -2
  178. package/dist/components/{p-CWPT3aOB.js.map → p-DVINzOoK.js.map} +1 -1
  179. package/dist/components/{p-7O-2D29W.js → p-DVOjjuXc.js} +2 -2
  180. package/dist/components/{p-DkikNSSO.js → p-Di5FH7eh.js} +2 -2
  181. package/dist/components/{p-DkikNSSO.js.map → p-Di5FH7eh.js.map} +1 -1
  182. package/dist/components/p-DjkUFlDW.js +2 -0
  183. package/dist/components/p-DjkUFlDW.js.map +1 -0
  184. package/dist/components/{p-DVd1TIxi.js → p-Dn9QHL4O.js} +2 -2
  185. package/dist/components/{p-C-dHtQMi.js → p-Do2FJd1y.js} +2 -2
  186. package/dist/components/{p-BWfzaSc3.js → p-DpoTwJAR.js} +2 -2
  187. package/dist/components/{p-ClJhuG5Y.js → p-Dpr2y6_S.js} +2 -2
  188. package/dist/components/{p-ClJhuG5Y.js.map → p-Dpr2y6_S.js.map} +1 -1
  189. package/dist/components/p-Dw9sE6Iw.js +2 -0
  190. package/dist/components/p-Dw9sE6Iw.js.map +1 -0
  191. package/dist/components/{p-BgLI9JoT.js → p-DwbcNDJF.js} +2 -2
  192. package/dist/components/p-Dzndkdx5.js +2 -0
  193. package/dist/components/{p-BOhpMUwO.js.map → p-Dzndkdx5.js.map} +1 -1
  194. package/dist/components/{p-DvzI2A_M.js → p-E5W27Fu_.js} +2 -2
  195. package/dist/components/{p-DkfM55x8.js → p-FIBCluwV.js} +2 -2
  196. package/dist/components/{p-CMQUuGvl.js → p-IEq_06J0.js} +2 -2
  197. package/dist/components/{p-CMQUuGvl.js.map → p-IEq_06J0.js.map} +1 -1
  198. package/dist/components/{p-8oRkhvjy.js → p-MG4lcN0D.js} +2 -2
  199. package/dist/components/{p-DtkLtKY0.js → p-Nc76seSq.js} +2 -2
  200. package/dist/components/p-Nc76seSq.js.map +1 -0
  201. package/dist/components/{p-DBwa1OXP.js → p-ZhP2tVmM.js} +2 -2
  202. package/dist/components/p-aD5cw_m2.js +2 -0
  203. package/dist/components/p-aD5cw_m2.js.map +1 -0
  204. package/dist/components/{p-J5x-QtlD.js → p-etifxiDc.js} +2 -2
  205. package/dist/components/p-kDZ0sEII.js +2 -0
  206. package/dist/components/p-kDZ0sEII.js.map +1 -0
  207. package/dist/components/{p-rYePOPbJ.js → p-ljbw3UMZ.js} +2 -2
  208. package/dist/components/{p-DZ58Sg5a.js → p-vfCu7XSc.js} +2 -2
  209. package/dist/components/{p-Ce4zy8q1.js → p-xdmJCPCg.js} +2 -2
  210. package/dist/components/{p-CDJ2Ntcq.js → p-xtGGIZmU.js} +2 -2
  211. package/dist/docs/components.json +13115 -12615
  212. package/dist/lib/components/Icon/flag-icon-catalog.d.ts +2 -0
  213. package/dist/lib/components/Icon/icon-cache.d.ts +36 -4
  214. package/dist/lib/components/Icon/map-icon-catalog.d.ts +2 -0
  215. package/dist/lib/shell/index.js +2 -2
  216. package/dist/lib/shell/index.js.map +1 -1
  217. package/dist/lib/utils/index.js +68 -5
  218. package/dist/lib/utils/index.js.map +3 -3
  219. package/dist/mcp-data/registry/agent-activity.json +2 -2
  220. package/dist/mcp-data/registry/agent-questionnaire.json +2 -2
  221. package/dist/mcp-data/registry/agent-response.json +1 -1
  222. package/dist/mcp-data/registry/agent-source-list.json +1 -1
  223. package/dist/mcp-data/registry/agent-tool-call.json +2 -2
  224. package/dist/mcp-data/registry/attachment-list.json +1 -1
  225. package/dist/mcp-data/registry/avatar.json +1 -1
  226. package/dist/mcp-data/registry/badge.json +1 -1
  227. package/dist/mcp-data/registry/banner.json +1 -1
  228. package/dist/mcp-data/registry/bar-action.json +1 -1
  229. package/dist/mcp-data/registry/bar-nav.json +1 -1
  230. package/dist/mcp-data/registry/bar-page-title.json +1 -1
  231. package/dist/mcp-data/registry/bar-title.json +1 -1
  232. package/dist/mcp-data/registry/bar-workflow.json +1 -1
  233. package/dist/mcp-data/registry/breadcrumb.json +1 -1
  234. package/dist/mcp-data/registry/button-filled.json +1 -1
  235. package/dist/mcp-data/registry/button-inverted.json +1 -1
  236. package/dist/mcp-data/registry/button-unfilled.json +1 -1
  237. package/dist/mcp-data/registry/calendar.json +1 -1
  238. package/dist/mcp-data/registry/card-action-center.json +1 -1
  239. package/dist/mcp-data/registry/card-chart.json +1 -1
  240. package/dist/mcp-data/registry/card-navigation.json +1 -1
  241. package/dist/mcp-data/registry/card-overview.json +1 -1
  242. package/dist/mcp-data/registry/card-setting.json +1 -1
  243. package/dist/mcp-data/registry/card-settings-scope.json +1 -1
  244. package/dist/mcp-data/registry/chart-legend.json +1 -1
  245. package/dist/mcp-data/registry/chart.json +1 -1
  246. package/dist/mcp-data/registry/checkbox.json +1 -1
  247. package/dist/mcp-data/registry/chip.json +1 -1
  248. package/dist/mcp-data/registry/code-block.json +1 -1
  249. package/dist/mcp-data/registry/conversation-list-item.json +1 -1
  250. package/dist/mcp-data/registry/conversation-list-section.json +1 -1
  251. package/dist/mcp-data/registry/conversation-list.json +10 -32
  252. package/dist/mcp-data/registry/data-customize.json +374 -0
  253. package/dist/mcp-data/registry/{table-filter.json → data-filter.json} +33 -33
  254. package/dist/mcp-data/registry/data-group.json +358 -0
  255. package/dist/mcp-data/registry/data-preferences.json +566 -0
  256. package/dist/mcp-data/registry/data-saved-views.json +433 -0
  257. package/dist/mcp-data/registry/data-search.json +367 -0
  258. package/dist/mcp-data/registry/data-sort.json +254 -0
  259. package/dist/mcp-data/registry/data-toolbar.json +181 -0
  260. package/dist/mcp-data/registry/divider.json +1 -1
  261. package/dist/mcp-data/registry/empty-state.json +1 -1
  262. package/dist/mcp-data/registry/field.json +1 -1
  263. package/dist/mcp-data/registry/filter-menu.json +3 -3
  264. package/dist/mcp-data/registry/icon.json +13 -7
  265. package/dist/mcp-data/registry/input-date.json +1 -1
  266. package/dist/mcp-data/registry/input-time.json +1 -1
  267. package/dist/mcp-data/registry/input.json +2 -2
  268. package/dist/mcp-data/registry/loader.json +1 -1
  269. package/dist/mcp-data/registry/markdown.json +1 -1
  270. package/dist/mcp-data/registry/menu.json +3 -3
  271. package/dist/mcp-data/registry/message-actions.json +1 -1
  272. package/dist/mcp-data/registry/message-bubble.json +1 -1
  273. package/dist/mcp-data/registry/message-composer.json +2 -2
  274. package/dist/mcp-data/registry/message-scroller.json +1 -1
  275. package/dist/mcp-data/registry/message.json +1 -1
  276. package/dist/mcp-data/registry/mobile-bar-nav.json +2 -2
  277. package/dist/mcp-data/registry/mobile-header.json +1 -1
  278. package/dist/mcp-data/registry/mobile-section-switcher.json +1 -1
  279. package/dist/mcp-data/registry/mobile-sheet-nav.json +2 -2
  280. package/dist/mcp-data/registry/modal.json +1 -1
  281. package/dist/mcp-data/registry/pagination.json +1 -1
  282. package/dist/mcp-data/registry/panel-nav.json +1 -1
  283. package/dist/mcp-data/registry/panel-sub-nav.json +1 -1
  284. package/dist/mcp-data/registry/panel-tool-header.json +1 -1
  285. package/dist/mcp-data/registry/panel-tool-search.json +1 -1
  286. package/dist/mcp-data/registry/panel-tools.json +3 -3
  287. package/dist/mcp-data/registry/paper-texture.json +1 -1
  288. package/dist/mcp-data/registry/radio.json +1 -1
  289. package/dist/mcp-data/registry/registry.json +5026 -4864
  290. package/dist/mcp-data/registry/score.json +1 -1
  291. package/dist/mcp-data/registry/scroll-overlay.json +1 -1
  292. package/dist/mcp-data/registry/select.json +1 -1
  293. package/dist/mcp-data/registry/shell-app.json +1 -1
  294. package/dist/mcp-data/registry/shell-page.json +1 -1
  295. package/dist/mcp-data/registry/shell-tools.json +1 -1
  296. package/dist/mcp-data/registry/skeleton.json +1 -1
  297. package/dist/mcp-data/registry/slider.json +1 -1
  298. package/dist/mcp-data/registry/swatch-picker.json +1 -1
  299. package/dist/mcp-data/registry/switch.json +1 -1
  300. package/dist/mcp-data/registry/tab-group.json +1 -1
  301. package/dist/mcp-data/registry/table.json +71 -71
  302. package/dist/mcp-data/registry/tag.json +1 -1
  303. package/dist/mcp-data/registry/text.json +1 -1
  304. package/dist/mcp-data/registry/textarea.json +1 -1
  305. package/dist/mcp-data/registry/time-picker.json +1 -1
  306. package/dist/mcp-data/registry/toast.json +1 -1
  307. package/dist/mcp-data/registry/tooltip-chart.json +1 -1
  308. package/dist/mcp-data/registry/tooltip.json +1 -1
  309. package/dist/mcp-data/registry/typing-indicator.json +1 -1
  310. package/dist/react/components.d.ts +8 -7
  311. package/dist/react/components.js +8 -7
  312. package/dist/react/ds-data-customize.d.ts +13 -0
  313. package/dist/react/ds-data-customize.js +15 -0
  314. package/dist/react/ds-data-filter.d.ts +18 -0
  315. package/dist/react/{ds-table-filter.js → ds-data-filter.js} +5 -5
  316. package/dist/react/ds-data-group.d.ts +14 -0
  317. package/dist/react/{ds-table-group.js → ds-data-group.js} +5 -5
  318. package/dist/react/ds-data-preferences.d.ts +21 -0
  319. package/dist/react/{ds-table-preferences.js → ds-data-preferences.js} +6 -6
  320. package/dist/react/ds-data-saved-views.d.ts +17 -0
  321. package/dist/react/{ds-table-saved-views.js → ds-data-saved-views.js} +5 -5
  322. package/dist/react/ds-data-search.d.ts +14 -0
  323. package/dist/react/{ds-table-search.js → ds-data-search.js} +5 -5
  324. package/dist/react/ds-data-sort.d.ts +12 -0
  325. package/dist/react/ds-data-sort.js +12 -0
  326. package/dist/react/{ds-table-toolbar.d.ts → ds-data-toolbar.d.ts} +3 -3
  327. package/dist/react/ds-data-toolbar.js +12 -0
  328. package/dist/react/ds-table.d.ts +3 -3
  329. package/dist/react/ds-table.js +1 -1
  330. package/dist/styles/table.css +11 -11
  331. package/dist/types/components/ConversationList/ConversationList.d.ts +0 -7
  332. package/dist/types/components/DataCustomize/DataCustomize.d.ts +67 -0
  333. package/dist/types/components/{TableFilter/TableFilter.d.ts → DataFilter/DataFilter.d.ts} +2 -2
  334. package/dist/types/components/{TableGroup/TableGroup.d.ts → DataGroup/DataGroup.d.ts} +8 -8
  335. package/dist/types/components/{TablePreferences/TablePreferences.d.ts → DataPreferences/DataPreferences.d.ts} +29 -13
  336. package/dist/types/components/{TableSavedViews/TableSavedViews.d.ts → DataSavedViews/DataSavedViews.d.ts} +10 -10
  337. package/dist/types/components/DataSavedViews/data-saved-views-types.d.ts +24 -0
  338. package/dist/types/components/DataSavedViews/index.d.ts +2 -0
  339. package/dist/types/components/{TableSearch/TableSearch.d.ts → DataSearch/DataSearch.d.ts} +6 -6
  340. package/dist/types/components/{TableSearch/table-search-model.d.ts → DataSearch/data-search-model.d.ts} +6 -6
  341. package/dist/types/components/{TableSearch/table-search-types.d.ts → DataSearch/data-search-types.d.ts} +3 -3
  342. package/dist/types/components/{TableSort/TableSort.d.ts → DataSort/DataSort.d.ts} +7 -6
  343. package/dist/types/components/DataSort/data-sort-menu.d.ts +15 -0
  344. package/dist/types/components/{TableToolbar/TableToolbar.d.ts → DataToolbar/DataToolbar.d.ts} +3 -3
  345. package/dist/types/components/Icon/icon-cache.d.ts +36 -4
  346. package/dist/types/components/Icon/map-icon-catalog.d.ts +3 -0
  347. package/dist/types/components/PanelTools/PanelTools.d.ts +1 -1
  348. package/dist/types/components/Table/Table.d.ts +9 -9
  349. package/dist/types/components/Table/index.d.ts +1 -1
  350. package/dist/types/components/Table/table-action-menu.d.ts +1 -1
  351. package/dist/types/components/Table/table-body-renderer.d.ts +2 -2
  352. package/dist/types/components/Table/table-column-customizer.d.ts +9 -9
  353. package/dist/types/components/Table/table-group-load-controller.d.ts +2 -2
  354. package/dist/types/components/Table/table-model.d.ts +7 -7
  355. package/dist/types/components/Table/table-render-model.d.ts +3 -3
  356. package/dist/types/components/Table/table-types.d.ts +17 -36
  357. package/dist/types/components/Table/table-virtual-model.d.ts +2 -2
  358. package/dist/types/components.d.ts +3837 -3640
  359. package/dist/types/utils/data-field.d.ts +38 -0
  360. package/dist/types/utils/list-customizer.d.ts +38 -0
  361. package/dist/types/utils/table-caption-compact.d.ts +1 -1
  362. package/dist/vue/components.d.ts +8 -7
  363. package/dist/vue/components.js +8 -7
  364. package/dist/vue/ds-conversation-list.js +1 -3
  365. package/dist/vue/ds-data-customize.d.ts +3 -0
  366. package/dist/vue/ds-data-customize.js +23 -0
  367. package/dist/vue/{ds-table-group.d.ts → ds-data-filter.d.ts} +1 -1
  368. package/dist/vue/{ds-table-filter.js → ds-data-filter.js} +2 -2
  369. package/dist/vue/{ds-table-sort.d.ts → ds-data-group.d.ts} +1 -1
  370. package/dist/vue/{ds-table-group.js → ds-data-group.js} +2 -2
  371. package/dist/vue/{ds-table-saved-views.d.ts → ds-data-preferences.d.ts} +1 -1
  372. package/dist/vue/{ds-table-preferences.js → ds-data-preferences.js} +10 -7
  373. package/dist/vue/ds-data-saved-views.d.ts +3 -0
  374. package/dist/vue/{ds-table-saved-views.js → ds-data-saved-views.js} +2 -2
  375. package/dist/vue/{ds-table-filter.d.ts → ds-data-search.d.ts} +1 -1
  376. package/dist/vue/{ds-table-search.js → ds-data-search.js} +3 -3
  377. package/dist/vue/{ds-table-search.d.ts → ds-data-sort.d.ts} +1 -1
  378. package/dist/vue/{ds-table-sort.js → ds-data-sort.js} +3 -3
  379. package/dist/vue/ds-data-toolbar.d.ts +3 -0
  380. package/dist/vue/ds-data-toolbar.js +9 -0
  381. package/dist/vue/ds-table.js +4 -4
  382. package/package.json +3 -3
  383. package/dist/angular/ds-table-filter.d.ts +0 -50
  384. package/dist/angular/ds-table-group.d.ts +0 -29
  385. package/dist/angular/ds-table-preferences.d.ts +0 -39
  386. package/dist/angular/ds-table-saved-views.d.ts +0 -49
  387. package/dist/angular/ds-table-search.d.ts +0 -20
  388. package/dist/angular/ds-table-sort.d.ts +0 -16
  389. package/dist/angular/ds-table-toolbar.d.ts +0 -12
  390. package/dist/components/ds-table-filter.js +0 -2
  391. package/dist/components/ds-table-filter.js.map +0 -1
  392. package/dist/components/ds-table-group.js +0 -2
  393. package/dist/components/ds-table-preferences.d.ts +0 -11
  394. package/dist/components/ds-table-preferences.js +0 -2
  395. package/dist/components/ds-table-preferences.js.map +0 -1
  396. package/dist/components/ds-table-saved-views.js +0 -2
  397. package/dist/components/ds-table-saved-views.js.map +0 -1
  398. package/dist/components/ds-table-search.js +0 -2
  399. package/dist/components/ds-table-search.js.map +0 -1
  400. package/dist/components/ds-table-sort.js +0 -2
  401. package/dist/components/ds-table-sort.js.map +0 -1
  402. package/dist/components/ds-table-toolbar.d.ts +0 -11
  403. package/dist/components/ds-table-toolbar.js +0 -2
  404. package/dist/components/ds-table-toolbar.js.map +0 -1
  405. package/dist/components/p-BOhpMUwO.js +0 -2
  406. package/dist/components/p-C0CE2v5D.js +0 -2
  407. package/dist/components/p-CKarsuR2.js +0 -2
  408. package/dist/components/p-CKarsuR2.js.map +0 -1
  409. package/dist/components/p-CQIh2yRP.js.map +0 -1
  410. package/dist/components/p-Cea7rROU.js +0 -2
  411. package/dist/components/p-Cea7rROU.js.map +0 -1
  412. package/dist/components/p-D7yBIPB6.js +0 -2
  413. package/dist/components/p-DtkLtKY0.js.map +0 -1
  414. package/dist/components/p-KBrC9IG4.js +0 -2
  415. package/dist/components/p-KBrC9IG4.js.map +0 -1
  416. package/dist/components/p-MQ36mEgn.js +0 -2
  417. package/dist/components/p-MQ36mEgn.js.map +0 -1
  418. package/dist/components/p-TjXGRPik.js +0 -2
  419. package/dist/components/p-bM3LH3kc.js +0 -2
  420. package/dist/components/p-bM3LH3kc.js.map +0 -1
  421. package/dist/mcp-data/registry/table-group.json +0 -358
  422. package/dist/mcp-data/registry/table-preferences.json +0 -511
  423. package/dist/mcp-data/registry/table-saved-views.json +0 -433
  424. package/dist/mcp-data/registry/table-search.json +0 -366
  425. package/dist/mcp-data/registry/table-sort.json +0 -253
  426. package/dist/mcp-data/registry/table-toolbar.json +0 -180
  427. package/dist/react/ds-table-filter.d.ts +0 -18
  428. package/dist/react/ds-table-group.d.ts +0 -14
  429. package/dist/react/ds-table-preferences.d.ts +0 -21
  430. package/dist/react/ds-table-saved-views.d.ts +0 -17
  431. package/dist/react/ds-table-search.d.ts +0 -14
  432. package/dist/react/ds-table-sort.d.ts +0 -12
  433. package/dist/react/ds-table-sort.js +0 -12
  434. package/dist/react/ds-table-toolbar.js +0 -12
  435. package/dist/types/components/TableSavedViews/index.d.ts +0 -2
  436. package/dist/types/components/TableSavedViews/table-saved-views-types.d.ts +0 -24
  437. package/dist/types/components/TableSort/table-sort-menu.d.ts +0 -15
  438. package/dist/vue/ds-table-preferences.d.ts +0 -3
  439. package/dist/vue/ds-table-toolbar.d.ts +0 -3
  440. package/dist/vue/ds-table-toolbar.js +0 -9
  441. /package/dist/components/{ds-table-group.js.map → ds-data-group.js.map} +0 -0
  442. /package/dist/components/{p-D8rpKod8.js.map → p-0FYD2bev.js.map} +0 -0
  443. /package/dist/components/{p-DK9Ex3aY.js.map → p-5URekSny.js.map} +0 -0
  444. /package/dist/components/{p-Ds51RgCi.js.map → p-7V1AhetH.js.map} +0 -0
  445. /package/dist/components/{p-C2JnoaWI.js.map → p-8yBdCXCn.js.map} +0 -0
  446. /package/dist/components/{p-su6y4hLK.js.map → p-BciTtTwx.js.map} +0 -0
  447. /package/dist/components/{p-CQ5RwY2C.js.map → p-BhJXmuRA.js.map} +0 -0
  448. /package/dist/components/{p-neWTRxmf.js.map → p-Bm7rqs3C.js.map} +0 -0
  449. /package/dist/components/{p-BV5T1hzN.js.map → p-Bn8I7iw6.js.map} +0 -0
  450. /package/dist/components/{p-PmcUwTQ_.js.map → p-Bpd6YCo4.js.map} +0 -0
  451. /package/dist/components/{p-C4m8y9ki.js.map → p-CD4DZPy_.js.map} +0 -0
  452. /package/dist/components/{p-B27_chI7.js.map → p-CElUM-xU.js.map} +0 -0
  453. /package/dist/components/{p-CuwopElg.js.map → p-CGidq1iC.js.map} +0 -0
  454. /package/dist/components/{p-CWog26I_.js.map → p-CNxvnQ6A.js.map} +0 -0
  455. /package/dist/components/{p-2GVGhrh0.js.map → p-CUcUHwI3.js.map} +0 -0
  456. /package/dist/components/{p-CbSUyv5B.js.map → p-CYzFfFcH.js.map} +0 -0
  457. /package/dist/components/{p-Jaqdfw4E.js.map → p-CiH4GG6r.js.map} +0 -0
  458. /package/dist/components/{p-Cl9phSf0.js.map → p-CiJ1WR11.js.map} +0 -0
  459. /package/dist/components/{p-Cus1Sigh.js.map → p-CmexIVnE.js.map} +0 -0
  460. /package/dist/components/{p-DLXXGgmf.js.map → p-CzIpquvw.js.map} +0 -0
  461. /package/dist/components/{p-tNQ0YulU.js.map → p-D0y7Sja6.js.map} +0 -0
  462. /package/dist/components/{p-Dryt3COt.js.map → p-D6Wl3dRO.js.map} +0 -0
  463. /package/dist/components/{p-ji09W9el.js.map → p-D922f6Tb.js.map} +0 -0
  464. /package/dist/components/{p-CaNCGKEJ.js.map → p-DHICPS4n.js.map} +0 -0
  465. /package/dist/components/{p-Cga6Ex0E.js.map → p-DOAybCp0.js.map} +0 -0
  466. /package/dist/components/{p-7O-2D29W.js.map → p-DVOjjuXc.js.map} +0 -0
  467. /package/dist/components/{p-DVd1TIxi.js.map → p-Dn9QHL4O.js.map} +0 -0
  468. /package/dist/components/{p-C-dHtQMi.js.map → p-Do2FJd1y.js.map} +0 -0
  469. /package/dist/components/{p-BWfzaSc3.js.map → p-DpoTwJAR.js.map} +0 -0
  470. /package/dist/components/{p-BgLI9JoT.js.map → p-DwbcNDJF.js.map} +0 -0
  471. /package/dist/components/{p-DvzI2A_M.js.map → p-E5W27Fu_.js.map} +0 -0
  472. /package/dist/components/{p-DkfM55x8.js.map → p-FIBCluwV.js.map} +0 -0
  473. /package/dist/components/{p-8oRkhvjy.js.map → p-MG4lcN0D.js.map} +0 -0
  474. /package/dist/components/{p-DBwa1OXP.js.map → p-ZhP2tVmM.js.map} +0 -0
  475. /package/dist/components/{p-J5x-QtlD.js.map → p-etifxiDc.js.map} +0 -0
  476. /package/dist/components/{p-rYePOPbJ.js.map → p-ljbw3UMZ.js.map} +0 -0
  477. /package/dist/components/{p-DZ58Sg5a.js.map → p-vfCu7XSc.js.map} +0 -0
  478. /package/dist/components/{p-Ce4zy8q1.js.map → p-xdmJCPCg.js.map} +0 -0
  479. /package/dist/components/{p-CDJ2Ntcq.js.map → p-xtGGIZmU.js.map} +0 -0
@@ -0,0 +1,374 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "data-customize",
4
+ "title": "DataCustomize",
5
+ "description": "Trigger and menu that shows, hides and optionally reorders the data points a view renders.",
6
+ "type": "registry:ui",
7
+ "meta": {
8
+ "library": "@ds-mo/ui",
9
+ "distribution": "npm",
10
+ "storybook": "https://zainadeel.github.io/compomo/?path=/story/data-customize",
11
+ "source": "src/wc/components/DataCustomize/DataCustomize.tsx",
12
+ "intentStatus": "complete",
13
+ "intent": {
14
+ "audience": "general",
15
+ "status": "stable",
16
+ "summary": "Trigger and menu that shows, hides and optionally reorders the data points a view renders.",
17
+ "useWhen": [
18
+ "A card list, map overlay or other non-table view lets the viewer choose which data points appear.",
19
+ "A toolbar needs Customize as a peer of Filter, Sort and Group rather than a tab inside Preferences."
20
+ ],
21
+ "avoidWhen": [
22
+ "The view is a ds-table. Table owns its column customizer through columnCustomizer, which locks the last visible column and reorders columns."
23
+ ],
24
+ "alternatives": [
25
+ {
26
+ "when": "The choice is one submitted form value.",
27
+ "component": "component:ds-select",
28
+ "reason": "Select owns form-value and listbox semantics rather than view customization."
29
+ }
30
+ ],
31
+ "commonlyComposedWith": [
32
+ "component:ds-data-toolbar",
33
+ "component:ds-menu",
34
+ "component:ds-button-unfilled"
35
+ ],
36
+ "patterns": [
37
+ "pattern:menu-trigger"
38
+ ],
39
+ "accessibility": [
40
+ "The trigger and menu share an accessible name derived from the visible label unless the application supplies a more contextual name.",
41
+ "Rows are switches, so each one announces its own checked state."
42
+ ],
43
+ "states": [
44
+ "reorderable is off by default, so rows are switches with no drag handle. Turn it on only where a display order exists.",
45
+ "minVisible is zero by default, so every field may be hidden. Raise it when the view needs a data point to stay visible.",
46
+ "catalogHeader labels the field rows; it is omitted unless options supply a second section, in which case it defaults to Data.",
47
+ "options render as their own Options section and emit dsOptionChange rather than a field config change.",
48
+ "dsFieldsConfigChange emits hiddenFieldIds and fieldOrder together, so a consumer that never reorders can ignore fieldOrder."
49
+ ],
50
+ "responsiveBehavior": [
51
+ "The owning standalone data toolbar determines when the trigger becomes icon-only; its accessible name and focus tooltip preserve the action label."
52
+ ],
53
+ "frameworkCaveats": {
54
+ "customElements": [
55
+ "Assign the field catalog and configuration arrays as JavaScript properties. Apply field visibility and order changes to the view, then replace the controlled inputs; handle extra option changes separately."
56
+ ],
57
+ "react": [
58
+ "Keep field visibility and display order in application state, pass new array references after changes, and use the same state to render the view."
59
+ ],
60
+ "angular": [
61
+ "Bind the field catalog and configuration arrays as properties through the generated adapter. Replace the controlled configuration from event.detail and keep extra option state in the application."
62
+ ]
63
+ },
64
+ "references": [
65
+ {
66
+ "label": "Storybook review states",
67
+ "path": "src/wc/components/DataCustomize/DataCustomize.stories.ts"
68
+ },
69
+ {
70
+ "label": "Toolbar composition owner",
71
+ "path": "src/wc/components/DataToolbar/DataToolbar.agent.json"
72
+ },
73
+ {
74
+ "label": "Shared catalog state",
75
+ "path": "src/wc/utils/list-customizer.ts"
76
+ }
77
+ ]
78
+ },
79
+ "api": {
80
+ "props": {
81
+ "ariaLabel": {
82
+ "type": "string | null",
83
+ "resolvedType": "null | string",
84
+ "attribute": "aria-label",
85
+ "default": "null",
86
+ "required": false,
87
+ "mutable": false,
88
+ "description": "Accessible name for the trigger and menu."
89
+ },
90
+ "catalogHeader": {
91
+ "type": "string",
92
+ "resolvedType": "string | undefined",
93
+ "attribute": "catalog-header",
94
+ "required": false,
95
+ "mutable": false,
96
+ "description": "Section header above the catalog rows. Omitted when there is no second section."
97
+ },
98
+ "fieldOrder": {
99
+ "type": "string[]",
100
+ "resolvedType": "string[]",
101
+ "default": "[]",
102
+ "required": false,
103
+ "mutable": false,
104
+ "description": "Controlled display order. Ids missing from it keep catalog order."
105
+ },
106
+ "fields": {
107
+ "type": "DataField[]",
108
+ "resolvedType": "DataField[]",
109
+ "default": "[]",
110
+ "required": false,
111
+ "mutable": false,
112
+ "description": "Catalog of data points the view can render."
113
+ },
114
+ "hasBorder": {
115
+ "type": "boolean",
116
+ "resolvedType": "boolean",
117
+ "attribute": "has-border",
118
+ "default": "true",
119
+ "required": false,
120
+ "mutable": false,
121
+ "description": "Show the trigger border."
122
+ },
123
+ "hiddenFieldIds": {
124
+ "type": "string[]",
125
+ "resolvedType": "string[]",
126
+ "default": "[]",
127
+ "required": false,
128
+ "mutable": false,
129
+ "description": "Controlled hidden field ids."
130
+ },
131
+ "label": {
132
+ "type": "string",
133
+ "resolvedType": "string",
134
+ "attribute": "label",
135
+ "default": "'Customize'",
136
+ "required": false,
137
+ "mutable": false,
138
+ "description": "Visible trigger label. Collapses to the icon when space is tight."
139
+ },
140
+ "minVisible": {
141
+ "type": "number",
142
+ "resolvedType": "number",
143
+ "attribute": "min-visible",
144
+ "default": "0",
145
+ "required": false,
146
+ "mutable": false,
147
+ "description": "Fields that must stay visible. Zero by default, so a view whose identity\nlives outside this catalog can hide every entry in it."
148
+ },
149
+ "options": {
150
+ "type": "MenuItemData[]",
151
+ "resolvedType": "MenuItemData[]",
152
+ "default": "[]",
153
+ "required": false,
154
+ "mutable": false,
155
+ "description": "Extra switch rows rendered in their own Options section."
156
+ },
157
+ "optionsHeader": {
158
+ "type": "string",
159
+ "resolvedType": "string",
160
+ "attribute": "options-header",
161
+ "default": "'Options'",
162
+ "required": false,
163
+ "mutable": false,
164
+ "description": "Header for the options section."
165
+ },
166
+ "reorderable": {
167
+ "type": "boolean",
168
+ "resolvedType": "boolean",
169
+ "attribute": "reorderable",
170
+ "default": "false",
171
+ "required": false,
172
+ "mutable": false,
173
+ "description": "Drag-reorder the catalog rows. Off by default: most surfaces only show and\nhide, and a card layout has no column order to express."
174
+ }
175
+ },
176
+ "events": [
177
+ {
178
+ "name": "dsFieldsConfigChange",
179
+ "detail": "DataCustomizeChangeDetail",
180
+ "bubbles": false,
181
+ "cancelable": true,
182
+ "composed": true
183
+ },
184
+ {
185
+ "name": "dsOptionChange",
186
+ "detail": "string",
187
+ "bubbles": false,
188
+ "cancelable": true,
189
+ "composed": true
190
+ }
191
+ ],
192
+ "methods": [
193
+ {
194
+ "name": "setFocus",
195
+ "signature": "setFocus() => Promise<void>"
196
+ }
197
+ ],
198
+ "slots": []
199
+ },
200
+ "props": {
201
+ "ariaLabel": {
202
+ "type": "string | null",
203
+ "resolvedType": "null | string",
204
+ "attribute": "aria-label",
205
+ "default": "null",
206
+ "required": false,
207
+ "mutable": false,
208
+ "description": "Accessible name for the trigger and menu."
209
+ },
210
+ "catalogHeader": {
211
+ "type": "string",
212
+ "resolvedType": "string | undefined",
213
+ "attribute": "catalog-header",
214
+ "required": false,
215
+ "mutable": false,
216
+ "description": "Section header above the catalog rows. Omitted when there is no second section."
217
+ },
218
+ "fieldOrder": {
219
+ "type": "string[]",
220
+ "resolvedType": "string[]",
221
+ "default": "[]",
222
+ "required": false,
223
+ "mutable": false,
224
+ "description": "Controlled display order. Ids missing from it keep catalog order."
225
+ },
226
+ "fields": {
227
+ "type": "DataField[]",
228
+ "resolvedType": "DataField[]",
229
+ "default": "[]",
230
+ "required": false,
231
+ "mutable": false,
232
+ "description": "Catalog of data points the view can render."
233
+ },
234
+ "hasBorder": {
235
+ "type": "boolean",
236
+ "resolvedType": "boolean",
237
+ "attribute": "has-border",
238
+ "default": "true",
239
+ "required": false,
240
+ "mutable": false,
241
+ "description": "Show the trigger border."
242
+ },
243
+ "hiddenFieldIds": {
244
+ "type": "string[]",
245
+ "resolvedType": "string[]",
246
+ "default": "[]",
247
+ "required": false,
248
+ "mutable": false,
249
+ "description": "Controlled hidden field ids."
250
+ },
251
+ "label": {
252
+ "type": "string",
253
+ "resolvedType": "string",
254
+ "attribute": "label",
255
+ "default": "'Customize'",
256
+ "required": false,
257
+ "mutable": false,
258
+ "description": "Visible trigger label. Collapses to the icon when space is tight."
259
+ },
260
+ "minVisible": {
261
+ "type": "number",
262
+ "resolvedType": "number",
263
+ "attribute": "min-visible",
264
+ "default": "0",
265
+ "required": false,
266
+ "mutable": false,
267
+ "description": "Fields that must stay visible. Zero by default, so a view whose identity\nlives outside this catalog can hide every entry in it."
268
+ },
269
+ "options": {
270
+ "type": "MenuItemData[]",
271
+ "resolvedType": "MenuItemData[]",
272
+ "default": "[]",
273
+ "required": false,
274
+ "mutable": false,
275
+ "description": "Extra switch rows rendered in their own Options section."
276
+ },
277
+ "optionsHeader": {
278
+ "type": "string",
279
+ "resolvedType": "string",
280
+ "attribute": "options-header",
281
+ "default": "'Options'",
282
+ "required": false,
283
+ "mutable": false,
284
+ "description": "Header for the options section."
285
+ },
286
+ "reorderable": {
287
+ "type": "boolean",
288
+ "resolvedType": "boolean",
289
+ "attribute": "reorderable",
290
+ "default": "false",
291
+ "required": false,
292
+ "mutable": false,
293
+ "description": "Drag-reorder the catalog rows. Off by default: most surfaces only show and\nhide, and a card layout has no column order to express."
294
+ }
295
+ },
296
+ "events": [
297
+ {
298
+ "name": "dsFieldsConfigChange",
299
+ "detail": "DataCustomizeChangeDetail",
300
+ "bubbles": false,
301
+ "cancelable": true,
302
+ "composed": true
303
+ },
304
+ {
305
+ "name": "dsOptionChange",
306
+ "detail": "string",
307
+ "bubbles": false,
308
+ "cancelable": true,
309
+ "composed": true
310
+ }
311
+ ],
312
+ "methods": [
313
+ {
314
+ "name": "setFocus",
315
+ "signature": "setFocus() => Promise<void>"
316
+ }
317
+ ],
318
+ "slots": [],
319
+ "exports": {
320
+ "customElement": "ds-data-customize",
321
+ "react": "DsDataCustomize",
322
+ "vue": "DsDataCustomize",
323
+ "angular": "DsDataCustomize"
324
+ },
325
+ "consumption": {
326
+ "install": "npm install @ds-mo/ui @ds-mo/tokens @ds-mo/icons",
327
+ "cssSetup": "import '@ds-mo/tokens';\nimport '@ds-mo/tokens/reset';\nimport '@ds-mo/tokens/globals';",
328
+ "customElements": {
329
+ "import": "import '@ds-mo/ui/dist/components/ds-data-customize.js';",
330
+ "example": "<ds-data-customize></ds-data-customize>"
331
+ },
332
+ "react": {
333
+ "import": "import { DsDataCustomize } from '@ds-mo/ui/react';",
334
+ "example": "<DsDataCustomize />"
335
+ },
336
+ "vue": {
337
+ "import": "import { DsDataCustomize } from '@ds-mo/ui/vue';",
338
+ "example": "<DsDataCustomize />"
339
+ },
340
+ "angular": {
341
+ "import": "import { DsDataCustomize } from '@ds-mo/ui/angular/ds-data-customize';",
342
+ "example": "<ds-data-customize></ds-data-customize>"
343
+ },
344
+ "complexPropertyNote": "Assign these non-primitive values as JavaScript properties: fieldOrder, fields, hiddenFieldIds, options.",
345
+ "peerDependencies": {
346
+ "required": [
347
+ "@ds-mo/tokens ^6.5.1",
348
+ "@ds-mo/icons ^8.1.0"
349
+ ],
350
+ "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
351
+ }
352
+ }
353
+ },
354
+ "dependencies": [
355
+ "@ds-mo/ui",
356
+ "@ds-mo/tokens"
357
+ ],
358
+ "registryDependencies": [
359
+ "button-unfilled",
360
+ "menu"
361
+ ],
362
+ "files": [
363
+ {
364
+ "path": "src/wc/components/DataCustomize/DataCustomize.css",
365
+ "content": ":host {\n display: inline-flex;\n min-inline-size: 0;\n max-inline-size: var(--dimension-menu-width-xs);\n}\n\n:host([hidden]) {\n display: none;\n}\n",
366
+ "type": "registry:ui"
367
+ },
368
+ {
369
+ "path": "src/wc/components/DataCustomize/DataCustomize.tsx",
370
+ "content": "import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n} from '@stencil/core';\nimport type { DataField } from '../../utils/data-field';\nimport type { MenuItemData, MenuSection } from '../Menu/menu-types';\nimport {\n listCustomizerMenuItems,\n resolveListOrder,\n toggleListHidden,\n type ListCustomizerOptions,\n} from '../../utils/list-customizer';\n\nexport interface DataCustomizeChangeDetail {\n /** Fields the viewer has hidden, in the order they were hidden. */\n hiddenFieldIds: string[];\n /** Field ids in display order. Unchanged unless the catalog reorders. */\n fieldOrder: string[];\n}\n\nlet dataCustomizeSeq = 0;\n\n/**\n * Show, hide and optionally reorder the data points a view renders.\n *\n * The table owns its own column customizer inside the caption, because a table\n * locks its last visible column and reorders columns. This control is the same\n * catalog for every other surface — a card list, a map overlay — where the\n * fields are independent and usually only show and hide.\n */\n@Component({\n tag: 'ds-data-customize',\n styleUrl: 'DataCustomize.css',\n scoped: true,\n})\nexport class DataCustomize {\n @Element() private el!: HTMLElement;\n\n /** Show the trigger border. */\n @Prop() hasBorder: boolean = true;\n /** Catalog of data points the view can render. */\n @Prop() fields: DataField[] = [];\n /** Controlled hidden field ids. */\n @Prop() hiddenFieldIds: string[] = [];\n /** Controlled display order. Ids missing from it keep catalog order. */\n @Prop() fieldOrder: string[] = [];\n /**\n * Drag-reorder the catalog rows. Off by default: most surfaces only show and\n * hide, and a card layout has no column order to express.\n */\n @Prop() reorderable: boolean = false;\n /**\n * Fields that must stay visible. Zero by default, so a view whose identity\n * lives outside this catalog can hide every entry in it.\n */\n @Prop() minVisible: number = 0;\n /** Section header above the catalog rows. Omitted when there is no second section. */\n @Prop() catalogHeader?: string;\n /** Extra switch rows rendered in their own Options section. */\n @Prop() options: MenuItemData[] = [];\n /** Header for the options section. */\n @Prop() optionsHeader: string = 'Options';\n /** Accessible name for the trigger and menu. */\n @Prop({ attribute: 'aria-label' }) ariaLabel: string | null = null;\n /** Visible trigger label. Collapses to the icon when space is tight. */\n @Prop() label: string = 'Customize';\n\n @Event({ bubbles: false }) dsFieldsConfigChange!: EventEmitter<DataCustomizeChangeDetail>;\n @Event({ bubbles: false }) dsOptionChange!: EventEmitter<string>;\n\n @State() private menuOpen = false;\n @State() private menuSurfaceOpen = false;\n @State() private initialFocusVisible = false;\n\n private readonly componentId = `ds-data-customize-${++dataCustomizeSeq}`;\n private readonly triggerId = `${this.componentId}-trigger`;\n private readonly menuId = `${this.componentId}-menu`;\n\n @Method()\n async setFocus() {\n const trigger = this.el.querySelector<HTMLElement & { setFocus?: () => Promise<void> }>(\n `#${CSS.escape(this.triggerId)}`\n );\n await trigger?.setFocus?.();\n }\n\n private get customizerOptions(): ListCustomizerOptions {\n return { minVisible: this.minVisible, reorderable: this.reorderable };\n }\n\n private get catalog(): { id: string; label: string }[] {\n return this.fields.map(field => ({\n id: field.id,\n label: field.label.trim() || field.accessibleLabel?.trim() || field.id,\n }));\n }\n\n private get sections(): MenuSection[] {\n const rows = listCustomizerMenuItems(\n this.catalog,\n this.hiddenFieldIds,\n this.fieldOrder,\n this.customizerOptions\n );\n\n return [\n ...(rows.length\n ? [\n {\n header: this.catalogHeader ?? (this.options.length ? 'Data' : undefined),\n items: rows,\n },\n ]\n : []),\n ...(this.options.length ? [{ header: this.optionsHeader, items: this.options }] : []),\n ];\n }\n\n render() {\n const name = this.ariaLabel?.trim() || this.label?.trim() || 'Customize';\n const empty = this.fields.length === 0 && this.options.length === 0;\n\n return (\n <Host hidden={empty ? true : undefined}>\n {empty ? null : (\n <ds-button-unfilled\n hasBorder={this.hasBorder}\n id={this.triggerId}\n variant=\"icon-label\"\n size=\"md\"\n icon=\"ViewMenu\"\n label={this.label}\n labelEmphasis={false}\n pressScale={false}\n aria-label={name}\n haspopup=\"menu\"\n collapseLabel={true}\n expanded={this.menuOpen}\n surfaceOpen={this.menuSurfaceOpen}\n controls={this.menuId}\n onDsClick={(event: CustomEvent<MouseEvent>) => {\n this.toggle(event.detail.detail === 0);\n }}\n />\n )}\n {empty ? null : (\n <ds-menu\n id={this.menuId}\n open={this.menuOpen}\n anchorId={this.triggerId}\n align=\"start\"\n side=\"bottom\"\n menuLabel={name}\n selectionMode=\"none\"\n initialFocusVisible={this.initialFocusVisible}\n sections={this.sections}\n onDsClose={() => this.close()}\n onDsAfterClose={() => {\n if (!this.menuOpen) this.menuSurfaceOpen = false;\n }}\n onDsSelect={event => this.handleSelect(event.detail)}\n onDsReorder={event => this.handleReorder(event.detail.items)}\n />\n )}\n </Host>\n );\n }\n\n private toggle(fromKeyboard = false): void {\n if (this.menuOpen) this.close();\n else this.open(fromKeyboard);\n }\n\n private open(fromKeyboard = false): void {\n if (this.menuOpen) return;\n this.initialFocusVisible = fromKeyboard;\n this.menuOpen = true;\n this.menuSurfaceOpen = true;\n }\n\n private close(): void {\n this.menuOpen = false;\n }\n\n private handleSelect(item: MenuItemData): void {\n const value = item.value;\n if (!value || item.isInactive) return;\n\n if (this.options.some(option => option.value === value)) {\n this.dsOptionChange.emit(value);\n return;\n }\n\n const ids = this.catalog.map(entry => entry.id);\n this.dsFieldsConfigChange.emit({\n hiddenFieldIds: toggleListHidden(ids, this.hiddenFieldIds, value, this.customizerOptions),\n fieldOrder: resolveListOrder(ids, this.fieldOrder),\n });\n }\n\n private handleReorder(items: MenuItemData[]): void {\n if (!this.reorderable) return;\n\n // Menu reports the new order of the reorderable run. resolveListOrder\n // rebuilds the full order from it, appending anything the run omitted.\n const next = items\n .filter(item => item.reorderable && item.value)\n .map(item => item.value as string);\n if (next.length === 0) return;\n\n this.dsFieldsConfigChange.emit({\n hiddenFieldIds: this.hiddenFieldIds,\n fieldOrder: resolveListOrder(\n this.catalog.map(entry => entry.id),\n next\n ),\n });\n }\n}\n",
371
+ "type": "registry:ui"
372
+ }
373
+ ]
374
+ }
@@ -1,21 +1,21 @@
1
1
  {
2
2
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
- "name": "table-filter",
4
- "title": "TableFilter",
5
- "description": "Standard table-toolbar Filter control that owns the shared trigger, searchable non-date filter options, accessible defaults, and compact-caption behavior while the application controls data and values.",
3
+ "name": "data-filter",
4
+ "title": "DataFilter",
5
+ "description": "Standard data-toolbar Filter control that owns the shared trigger, searchable non-date filter options, accessible defaults, and compact-caption behavior while the application controls data and values.",
6
6
  "type": "registry:ui",
7
7
  "meta": {
8
8
  "library": "@ds-mo/ui",
9
9
  "distribution": "npm",
10
- "storybook": "https://zainadeel.github.io/compomo/?path=/story/table-filter",
11
- "source": "src/wc/components/TableFilter/TableFilter.tsx",
10
+ "storybook": "https://zainadeel.github.io/compomo/?path=/story/data-filter",
11
+ "source": "src/wc/components/DataFilter/DataFilter.tsx",
12
12
  "intentStatus": "complete",
13
13
  "intent": {
14
14
  "audience": "general",
15
15
  "status": "stable",
16
- "summary": "Standard table-toolbar Filter control that owns the shared trigger, searchable non-date filter options, accessible defaults, and compact-caption behavior while the application controls data and values.",
16
+ "summary": "Standard data-toolbar Filter control that owns the shared trigger, searchable non-date filter options, accessible defaults, and compact-caption behavior while the application controls data and values.",
17
17
  "useWhen": [
18
- "A table toolbar should expose the standard singular Filter control and shared filter-menu interaction.",
18
+ "A data toolbar should expose the standard singular Filter control and shared filter-menu interaction.",
19
19
  "A product supplies filter definitions and controlled values but should not recreate the toolbar trigger, category navigation, or responsive treatment."
20
20
  ],
21
21
  "avoidWhen": [
@@ -25,16 +25,16 @@
25
25
  ],
26
26
  "alternatives": [
27
27
  {
28
- "when": "A non-table surface needs the generic filter interaction or custom trigger recipe.",
28
+ "when": "A surface needs a custom filter trigger recipe.",
29
29
  "component": "component:ds-filter-menu",
30
- "reason": "FilterMenu exposes generic trigger geometry and popup positioning rather than the fixed table-toolbar recipe."
30
+ "reason": "FilterMenu exposes generic trigger geometry and popup positioning rather than the standard data-toolbar recipe."
31
31
  }
32
32
  ],
33
33
  "commonlyComposedWith": [
34
34
  "component:ds-table",
35
- "component:ds-table-toolbar",
36
- "component:ds-table-saved-views",
37
- "component:ds-table-sort",
35
+ "component:ds-data-toolbar",
36
+ "component:ds-data-saved-views",
37
+ "component:ds-data-sort",
38
38
  "component:ds-filter-menu"
39
39
  ],
40
40
  "patterns": [
@@ -59,8 +59,8 @@
59
59
  "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."
60
60
  ],
61
61
  "responsiveBehavior": [
62
- "Place the control in the trailing region of ds-table-toolbar.",
63
- "Inside a named ds-table container narrower than 900px, the trigger becomes icon-only, exposes its visible label through a hover and keyboard-focus tooltip, and the Filters icon remains neutral with active criteria."
62
+ "Place the control in the trailing region of ds-data-toolbar.",
63
+ "In a compact table caption or standalone data toolbar, the trigger becomes icon-only, exposes its visible label through a hover and keyboard-focus tooltip, and the Filters icon remains neutral with active criteria."
64
64
  ],
65
65
  "frameworkCaveats": {
66
66
  "customElements": [
@@ -70,17 +70,17 @@
70
70
  "Keep filters, values, and matchModes in application state and replace them from the typed dsChange, dsMatchModeChange, and dsClear events."
71
71
  ],
72
72
  "angular": [
73
- "Import the generated DsTableFilter adapter, bind filters, values, and matchModes, and handle dsChange, dsMatchModeChange, dsClear, and dsActiveFilterChange."
73
+ "Import the generated DsDataFilter adapter, bind filters, values, and matchModes, and handle dsChange, dsMatchModeChange, dsClear, and dsActiveFilterChange."
74
74
  ]
75
75
  },
76
76
  "references": [
77
77
  {
78
78
  "label": "Storybook review states",
79
- "path": "src/wc/components/TableFilter/TableFilter.stories.ts"
79
+ "path": "src/wc/components/DataFilter/DataFilter.stories.ts"
80
80
  },
81
81
  {
82
82
  "label": "Toolbar composition owner",
83
- "path": "src/wc/components/TableToolbar/TableToolbar.agent.json"
83
+ "path": "src/wc/components/DataToolbar/DataToolbar.agent.json"
84
84
  }
85
85
  ]
86
86
  },
@@ -435,35 +435,35 @@
435
435
  "methods": [],
436
436
  "slots": [],
437
437
  "exports": {
438
- "customElement": "ds-table-filter",
439
- "react": "DsTableFilter",
440
- "vue": "DsTableFilter",
441
- "angular": "DsTableFilter"
438
+ "customElement": "ds-data-filter",
439
+ "react": "DsDataFilter",
440
+ "vue": "DsDataFilter",
441
+ "angular": "DsDataFilter"
442
442
  },
443
443
  "consumption": {
444
444
  "install": "npm install @ds-mo/ui @ds-mo/tokens @ds-mo/icons",
445
445
  "cssSetup": "import '@ds-mo/tokens';\nimport '@ds-mo/tokens/reset';\nimport '@ds-mo/tokens/globals';",
446
446
  "customElements": {
447
- "import": "import '@ds-mo/ui/dist/components/ds-table-filter.js';",
448
- "example": "<ds-table-filter></ds-table-filter>"
447
+ "import": "import '@ds-mo/ui/dist/components/ds-data-filter.js';",
448
+ "example": "<ds-data-filter></ds-data-filter>"
449
449
  },
450
450
  "react": {
451
- "import": "import { DsTableFilter } from '@ds-mo/ui/react';",
452
- "example": "<DsTableFilter />"
451
+ "import": "import { DsDataFilter } from '@ds-mo/ui/react';",
452
+ "example": "<DsDataFilter />"
453
453
  },
454
454
  "vue": {
455
- "import": "import { DsTableFilter } from '@ds-mo/ui/vue';",
456
- "example": "<DsTableFilter />"
455
+ "import": "import { DsDataFilter } from '@ds-mo/ui/vue';",
456
+ "example": "<DsDataFilter />"
457
457
  },
458
458
  "angular": {
459
- "import": "import { DsTableFilter } from '@ds-mo/ui/angular/ds-table-filter';",
460
- "example": "<ds-table-filter></ds-table-filter>"
459
+ "import": "import { DsDataFilter } from '@ds-mo/ui/angular/ds-data-filter';",
460
+ "example": "<ds-data-filter></ds-data-filter>"
461
461
  },
462
462
  "complexPropertyNote": "Assign these non-primitive values as JavaScript properties: filters, matchModes, values.",
463
463
  "peerDependencies": {
464
464
  "required": [
465
465
  "@ds-mo/tokens ^6.5.1",
466
- "@ds-mo/icons ^7.0.0"
466
+ "@ds-mo/icons ^8.1.0"
467
467
  ],
468
468
  "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
469
469
  }
@@ -478,13 +478,13 @@
478
478
  ],
479
479
  "files": [
480
480
  {
481
- "path": "src/wc/components/TableFilter/TableFilter.css",
481
+ "path": "src/wc/components/DataFilter/DataFilter.css",
482
482
  "content": ":host {\n display: inline-flex;\n min-inline-size: 0;\n max-inline-size: var(--dimension-menu-width-xs);\n}\n\nds-filter-menu {\n min-inline-size: 0;\n max-inline-size: 100%;\n --ds-choice-popup-min-inline-size: var(--dimension-menu-width-xs);\n}\n",
483
483
  "type": "registry:ui"
484
484
  },
485
485
  {
486
- "path": "src/wc/components/TableFilter/TableFilter.tsx",
487
- "content": "import { Component, Event, EventEmitter, h, Host, Prop } from '@stencil/core';\nimport type {\n FilterMenuChangeDetail,\n FilterMenuFilter,\n FilterMenuMatchModeChangeDetail,\n FilterMenuMatchModes,\n FilterMenuValues,\n} from '../FilterMenu/FilterMenu';\n\n@Component({\n tag: 'ds-table-filter',\n styleUrl: 'TableFilter.css',\n scoped: true,\n})\nexport class TableFilter {\n /** Controlled popup visibility. */\n @Prop({ mutable: true }) open: boolean = false;\n /** Product-owned filter categories and option definitions. */\n /** Show the trigger border. */\n @Prop() hasBorder: boolean = true;\n @Prop() filters: FilterMenuFilter[] = [];\n /** Controlled values keyed by filter id. */\n @Prop() values: FilterMenuValues = {};\n /** Controlled any/all match mode keyed by multiple-choice filter id. Defaults to any. */\n @Prop() matchModes: FilterMenuMatchModes = {};\n /** Controlled category shown in the option pane. */\n @Prop() activeFilterId: string | undefined;\n /** Visible trigger label. */\n @Prop() label: string = 'Filter';\n /** Accessible name for the trigger. Defaults to Filter table. */\n @Prop({ attribute: 'aria-label' }) ariaLabel: string | null = null;\n /** Accessible name for the non-modal filter dialog. Defaults to the trigger name. */\n @Prop() menuLabel: string | null = null;\n /** Accessible name for the category tab list. */\n @Prop() categoriesLabel: string = 'Filter categories';\n /** Footer action and date-clear accessible label. */\n @Prop() clearLabel: string = 'Clear';\n /** Placeholder shown in each non-date option search header. */\n @Prop() searchPlaceholder: string = 'Search';\n /** Empty-state text shown when an option search has no matches. */\n @Prop() noResultsText: string = 'No results';\n\n /** Requests a controlled value replacement without closing the popup. */\n @Event() dsChange!: EventEmitter<FilterMenuChangeDetail>;\n /** Requests that the consumer clear every filter value. */\n @Event() dsClear!: EventEmitter<void>;\n /** Requests a controlled any/all mode replacement for a multiple-choice filter. */\n @Event() dsMatchModeChange!: EventEmitter<FilterMenuMatchModeChangeDetail>;\n /** Requests a controlled active-category replacement. */\n @Event() dsActiveFilterChange!: EventEmitter<string>;\n /** Requests that the controlled popup close. */\n @Event() dsClose!: EventEmitter<void>;\n /** Emitted whenever trigger activation changes popup visibility. */\n @Event() dsOpenChange!: EventEmitter<boolean>;\n /** Emitted after exit motion and rendered popup removal complete. */\n @Event() dsAfterClose!: EventEmitter<void>;\n\n render() {\n const name = this.ariaLabel?.trim() || 'Filter table';\n const menuName = this.menuLabel?.trim() || name;\n\n return (\n <Host>\n <ds-filter-menu\n neutralTrigger\n applyRequired\n open={this.open}\n triggerLabel={this.label}\n showSelectedCount={false}\n showIndicator={false}\n icon=\"Filters\"\n size=\"md\"\n width=\"hug\"\n hasBorder={this.hasBorder}\n activeFill={false}\n collapseLabel={true}\n align=\"start\"\n aria-label={name}\n filters={this.filters}\n values={this.values}\n matchModes={this.matchModes}\n activeFilterId={this.activeFilterId}\n menuLabel={menuName}\n categoriesLabel={this.categoriesLabel}\n clearLabel={this.clearLabel}\n searchPlaceholder={this.searchPlaceholder}\n noResultsText={this.noResultsText}\n footerLayout=\"categories-clear\"\n onDsChange={event => this.forward(event, this.dsChange)}\n onDsClear={event => this.forward(event, this.dsClear)}\n onDsMatchModeChange={event => this.forward(event, this.dsMatchModeChange)}\n onDsActiveFilterChange={event => this.forward(event, this.dsActiveFilterChange)}\n onDsClose={event => this.forward(event, this.dsClose)}\n onDsOpenChange={event => {\n event.stopPropagation();\n this.open = event.detail;\n this.dsOpenChange.emit(event.detail);\n }}\n onDsAfterClose={event => this.forward(event, this.dsAfterClose)}\n />\n </Host>\n );\n }\n\n private forward<T>(event: CustomEvent<T>, emitter: EventEmitter<T>): void {\n event.stopPropagation();\n emitter.emit(event.detail);\n }\n}\n",
486
+ "path": "src/wc/components/DataFilter/DataFilter.tsx",
487
+ "content": "import { Component, Event, EventEmitter, h, Host, Prop } from '@stencil/core';\nimport type {\n FilterMenuChangeDetail,\n FilterMenuFilter,\n FilterMenuMatchModeChangeDetail,\n FilterMenuMatchModes,\n FilterMenuValues,\n} from '../FilterMenu/FilterMenu';\n\n@Component({\n tag: 'ds-data-filter',\n styleUrl: 'DataFilter.css',\n scoped: true,\n})\nexport class DataFilter {\n /** Controlled popup visibility. */\n @Prop({ mutable: true }) open: boolean = false;\n /** Product-owned filter categories and option definitions. */\n /** Show the trigger border. */\n @Prop() hasBorder: boolean = true;\n @Prop() filters: FilterMenuFilter[] = [];\n /** Controlled values keyed by filter id. */\n @Prop() values: FilterMenuValues = {};\n /** Controlled any/all match mode keyed by multiple-choice filter id. Defaults to any. */\n @Prop() matchModes: FilterMenuMatchModes = {};\n /** Controlled category shown in the option pane. */\n @Prop() activeFilterId: string | undefined;\n /** Visible trigger label. */\n @Prop() label: string = 'Filter';\n /** Accessible name for the trigger. Defaults to Filter table. */\n @Prop({ attribute: 'aria-label' }) ariaLabel: string | null = null;\n /** Accessible name for the non-modal filter dialog. Defaults to the trigger name. */\n @Prop() menuLabel: string | null = null;\n /** Accessible name for the category tab list. */\n @Prop() categoriesLabel: string = 'Filter categories';\n /** Footer action and date-clear accessible label. */\n @Prop() clearLabel: string = 'Clear';\n /** Placeholder shown in each non-date option search header. */\n @Prop() searchPlaceholder: string = 'Search';\n /** Empty-state text shown when an option search has no matches. */\n @Prop() noResultsText: string = 'No results';\n\n /** Requests a controlled value replacement without closing the popup. */\n @Event() dsChange!: EventEmitter<FilterMenuChangeDetail>;\n /** Requests that the consumer clear every filter value. */\n @Event() dsClear!: EventEmitter<void>;\n /** Requests a controlled any/all mode replacement for a multiple-choice filter. */\n @Event() dsMatchModeChange!: EventEmitter<FilterMenuMatchModeChangeDetail>;\n /** Requests a controlled active-category replacement. */\n @Event() dsActiveFilterChange!: EventEmitter<string>;\n /** Requests that the controlled popup close. */\n @Event() dsClose!: EventEmitter<void>;\n /** Emitted whenever trigger activation changes popup visibility. */\n @Event() dsOpenChange!: EventEmitter<boolean>;\n /** Emitted after exit motion and rendered popup removal complete. */\n @Event() dsAfterClose!: EventEmitter<void>;\n\n render() {\n const name = this.ariaLabel?.trim() || 'Filter table';\n const menuName = this.menuLabel?.trim() || name;\n\n return (\n <Host>\n <ds-filter-menu\n neutralTrigger\n applyRequired\n open={this.open}\n triggerLabel={this.label}\n showSelectedCount={false}\n showIndicator={false}\n icon=\"Filters\"\n size=\"md\"\n width=\"hug\"\n hasBorder={this.hasBorder}\n activeFill={false}\n collapseLabel={true}\n align=\"start\"\n aria-label={name}\n filters={this.filters}\n values={this.values}\n matchModes={this.matchModes}\n activeFilterId={this.activeFilterId}\n menuLabel={menuName}\n categoriesLabel={this.categoriesLabel}\n clearLabel={this.clearLabel}\n searchPlaceholder={this.searchPlaceholder}\n noResultsText={this.noResultsText}\n footerLayout=\"categories-clear\"\n onDsChange={event => this.forward(event, this.dsChange)}\n onDsClear={event => this.forward(event, this.dsClear)}\n onDsMatchModeChange={event => this.forward(event, this.dsMatchModeChange)}\n onDsActiveFilterChange={event => this.forward(event, this.dsActiveFilterChange)}\n onDsClose={event => this.forward(event, this.dsClose)}\n onDsOpenChange={event => {\n event.stopPropagation();\n this.open = event.detail;\n this.dsOpenChange.emit(event.detail);\n }}\n onDsAfterClose={event => this.forward(event, this.dsAfterClose)}\n />\n </Host>\n );\n }\n\n private forward<T>(event: CustomEvent<T>, emitter: EventEmitter<T>): void {\n event.stopPropagation();\n emitter.emit(event.detail);\n }\n}\n",
488
488
  "type": "registry:ui"
489
489
  }
490
490
  ]