@ds-mo/ui 14.35.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 (577) hide show
  1. package/dist/.package-ready.json +1 -1
  2. package/dist/agent-patterns.json +1 -1
  3. package/dist/agent.json +5733 -4656
  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-conversation-list.d.ts +1 -1
  9. package/dist/angular/ds-conversation-list.js +3 -4
  10. package/dist/angular/ds-data-customize.d.ts +18 -0
  11. package/dist/angular/ds-data-customize.js +46 -0
  12. package/dist/angular/ds-data-filter.d.ts +50 -0
  13. package/dist/angular/{ds-table-filter.js → ds-data-filter.js} +10 -10
  14. package/dist/angular/ds-data-group.d.ts +29 -0
  15. package/dist/angular/{ds-table-group.js → ds-data-group.js} +10 -10
  16. package/dist/angular/ds-data-preferences.d.ts +39 -0
  17. package/dist/angular/{ds-table-preferences.js → ds-data-preferences.js} +15 -15
  18. package/dist/angular/ds-data-saved-views.d.ts +49 -0
  19. package/dist/angular/{ds-table-saved-views.js → ds-data-saved-views.js} +10 -10
  20. package/dist/angular/ds-data-search.d.ts +20 -0
  21. package/dist/angular/{ds-table-search.js → ds-data-search.js} +12 -12
  22. package/dist/angular/ds-data-sort.d.ts +16 -0
  23. package/dist/angular/{ds-table-sort.js → ds-data-sort.js} +12 -12
  24. package/dist/angular/ds-data-toolbar.d.ts +12 -0
  25. package/dist/angular/{ds-table-toolbar.js → ds-data-toolbar.js} +10 -10
  26. package/dist/angular/ds-field.d.ts +1 -1
  27. package/dist/angular/ds-field.js +1 -1
  28. package/dist/angular/ds-input-date.d.ts +15 -0
  29. package/dist/angular/ds-input-date.js +43 -0
  30. package/dist/angular/ds-input-time.d.ts +15 -0
  31. package/dist/angular/ds-input-time.js +43 -0
  32. package/dist/angular/ds-input.d.ts +1 -1
  33. package/dist/angular/ds-input.js +3 -3
  34. package/dist/angular/ds-select.d.ts +1 -1
  35. package/dist/angular/ds-select.js +3 -3
  36. package/dist/angular/ds-table.d.ts +7 -7
  37. package/dist/angular/ds-table.js +6 -6
  38. package/dist/angular/ds-time-picker.d.ts +15 -0
  39. package/dist/angular/ds-time-picker.js +43 -0
  40. package/dist/angular/index.d.ts +1 -1
  41. package/dist/angular/index.js +13 -7
  42. package/dist/angular/proxies.d.ts +13 -7
  43. package/dist/angular/proxies.js +13 -7
  44. package/dist/angular/text-value-accessor.d.ts +1 -1
  45. package/dist/angular/text-value-accessor.js +2 -2
  46. package/dist/components/ds-agent-activity.js +1 -1
  47. package/dist/components/ds-agent-questionnaire.js +1 -1
  48. package/dist/components/ds-agent-response.js +1 -1
  49. package/dist/components/ds-agent-source-list.js +1 -1
  50. package/dist/components/ds-agent-tool-call.js +1 -1
  51. package/dist/components/ds-attachment-list.js +1 -1
  52. package/dist/components/ds-avatar.js +1 -1
  53. package/dist/components/ds-badge.js +1 -1
  54. package/dist/components/ds-banner.js +1 -1
  55. package/dist/components/ds-bar-action.js +1 -1
  56. package/dist/components/ds-bar-nav.js +1 -1
  57. package/dist/components/ds-bar-page-title.js +1 -1
  58. package/dist/components/ds-bar-title.js +1 -1
  59. package/dist/components/ds-bar-workflow.js +1 -1
  60. package/dist/components/ds-breadcrumb.js +1 -1
  61. package/dist/components/ds-button-filled.js +1 -1
  62. package/dist/components/ds-button-inverted.d.ts +11 -0
  63. package/dist/components/ds-button-inverted.js +2 -0
  64. package/dist/components/ds-button-inverted.js.map +1 -0
  65. package/dist/components/ds-button-unfilled.js +1 -1
  66. package/dist/components/{ds-table-search.d.ts → ds-calendar.d.ts} +4 -4
  67. package/dist/components/ds-calendar.js +2 -0
  68. package/dist/components/ds-card-action-center.js +1 -1
  69. package/dist/components/ds-card-chart.js +1 -1
  70. package/dist/components/ds-card-navigation.js +1 -1
  71. package/dist/components/ds-card-navigation.js.map +1 -1
  72. package/dist/components/ds-card-overview.js +1 -1
  73. package/dist/components/ds-card-setting.js +1 -1
  74. package/dist/components/ds-card-settings-scope.js +1 -1
  75. package/dist/components/ds-card-settings-scope.js.map +1 -1
  76. package/dist/components/ds-chart-legend.js +1 -1
  77. package/dist/components/ds-chart.js +1 -1
  78. package/dist/components/ds-checkbox.js +1 -1
  79. package/dist/components/ds-chip.js +1 -1
  80. package/dist/components/ds-code-block.js +1 -1
  81. package/dist/components/ds-conversation-list-item.js +1 -1
  82. package/dist/components/ds-conversation-list-item.js.map +1 -1
  83. package/dist/components/ds-conversation-list-section.js +1 -1
  84. package/dist/components/ds-conversation-list.js +1 -1
  85. package/dist/components/ds-conversation-list.js.map +1 -1
  86. package/dist/components/ds-data-customize.d.ts +11 -0
  87. package/dist/components/ds-data-customize.js +2 -0
  88. package/dist/components/ds-data-customize.js.map +1 -0
  89. package/dist/components/{ds-table-group.d.ts → ds-data-filter.d.ts} +4 -4
  90. package/dist/components/ds-data-filter.js +2 -0
  91. package/dist/components/ds-data-filter.js.map +1 -0
  92. package/dist/components/{ds-table-sort.d.ts → ds-data-group.d.ts} +4 -4
  93. package/dist/components/ds-data-group.js +2 -0
  94. package/dist/components/ds-data-group.js.map +1 -0
  95. package/dist/components/{ds-table-saved-views.d.ts → ds-data-preferences.d.ts} +4 -4
  96. package/dist/components/ds-data-preferences.js +2 -0
  97. package/dist/components/ds-data-preferences.js.map +1 -0
  98. package/dist/components/ds-data-saved-views.d.ts +11 -0
  99. package/dist/components/ds-data-saved-views.js +2 -0
  100. package/dist/components/ds-data-saved-views.js.map +1 -0
  101. package/dist/components/ds-data-search.d.ts +11 -0
  102. package/dist/components/ds-data-search.js +2 -0
  103. package/dist/components/ds-data-search.js.map +1 -0
  104. package/dist/components/ds-data-sort.d.ts +11 -0
  105. package/dist/components/ds-data-sort.js +2 -0
  106. package/dist/components/ds-data-sort.js.map +1 -0
  107. package/dist/components/{ds-table-filter.d.ts → ds-data-toolbar.d.ts} +4 -4
  108. package/dist/components/ds-data-toolbar.js +2 -0
  109. package/dist/components/ds-data-toolbar.js.map +1 -0
  110. package/dist/components/ds-divider.js +1 -1
  111. package/dist/components/ds-empty-state.js +1 -1
  112. package/dist/components/ds-field.js +1 -1
  113. package/dist/components/ds-filter-menu.js +1 -1
  114. package/dist/components/ds-icon.js +1 -1
  115. package/dist/components/ds-input-date.d.ts +11 -0
  116. package/dist/components/ds-input-date.js +2 -0
  117. package/dist/components/ds-input-date.js.map +1 -0
  118. package/dist/components/ds-input-time.d.ts +11 -0
  119. package/dist/components/ds-input-time.js +2 -0
  120. package/dist/components/ds-input-time.js.map +1 -0
  121. package/dist/components/ds-input.js +1 -1
  122. package/dist/components/ds-markdown.js +1 -1
  123. package/dist/components/ds-menu.js +1 -1
  124. package/dist/components/ds-message-actions.js +1 -1
  125. package/dist/components/ds-message-bubble.js +1 -1
  126. package/dist/components/ds-message-bubble.js.map +1 -1
  127. package/dist/components/ds-message-composer.js +1 -1
  128. package/dist/components/ds-message-composer.js.map +1 -1
  129. package/dist/components/ds-message-scroller.js +1 -1
  130. package/dist/components/ds-message.js +1 -1
  131. package/dist/components/ds-mobile-bar-nav.js +1 -1
  132. package/dist/components/ds-mobile-header.js +1 -1
  133. package/dist/components/ds-mobile-section-switcher.js +1 -1
  134. package/dist/components/ds-mobile-sheet-nav.js +1 -1
  135. package/dist/components/ds-modal.js +1 -1
  136. package/dist/components/ds-pagination.js +1 -1
  137. package/dist/components/ds-panel-nav.js +1 -1
  138. package/dist/components/ds-panel-sub-nav.js +1 -1
  139. package/dist/components/ds-panel-tool-header.js +1 -1
  140. package/dist/components/ds-panel-tool-search.js +1 -1
  141. package/dist/components/ds-panel-tools.js +1 -1
  142. package/dist/components/ds-paper-texture.js +1 -1
  143. package/dist/components/ds-radio.js +1 -1
  144. package/dist/components/ds-score.js +1 -1
  145. package/dist/components/ds-scroll-overlay.js +1 -1
  146. package/dist/components/ds-select.js +1 -1
  147. package/dist/components/ds-shell-app.js +1 -1
  148. package/dist/components/ds-shell-page.js +1 -1
  149. package/dist/components/ds-shell-tools.js +1 -1
  150. package/dist/components/ds-skeleton.js +1 -1
  151. package/dist/components/ds-slider.js +1 -1
  152. package/dist/components/ds-slider.js.map +1 -1
  153. package/dist/components/ds-swatch-picker.js +1 -1
  154. package/dist/components/ds-switch.js +1 -1
  155. package/dist/components/ds-tab-group.js +1 -1
  156. package/dist/components/ds-table.js +1 -1
  157. package/dist/components/ds-table.js.map +1 -1
  158. package/dist/components/ds-tag.js +1 -1
  159. package/dist/components/ds-text.js +1 -1
  160. package/dist/components/ds-textarea.js +1 -1
  161. package/dist/components/ds-textarea.js.map +1 -1
  162. package/dist/components/ds-time-picker.d.ts +11 -0
  163. package/dist/components/ds-time-picker.js +2 -0
  164. package/dist/components/ds-time-picker.js.map +1 -0
  165. package/dist/components/ds-toast.js +1 -1
  166. package/dist/components/ds-tooltip-chart.js +1 -1
  167. package/dist/components/ds-tooltip.js +1 -1
  168. package/dist/components/ds-typing-indicator.js +1 -1
  169. package/dist/components/index.d.ts +5 -5
  170. package/dist/components/p-0FYD2bev.js +2 -0
  171. package/dist/components/p-0FYD2bev.js.map +1 -0
  172. package/dist/components/p-0qY_HDId.js +2 -0
  173. package/dist/components/{p-D_u8WhlU.js.map → p-0qY_HDId.js.map} +1 -1
  174. package/dist/components/{p-BQsVI_vO.js → p-5URekSny.js} +2 -2
  175. package/dist/components/{p-eo_pmPqp.js → p-7V1AhetH.js} +2 -2
  176. package/dist/components/{p-yZRXPHDe.js → p-8yBdCXCn.js} +2 -2
  177. package/dist/components/p-BKZdqJQB.js +2 -0
  178. package/dist/components/p-BKZdqJQB.js.map +1 -0
  179. package/dist/components/p-BYrBU_U9.js +2 -0
  180. package/dist/components/p-BYrBU_U9.js.map +1 -0
  181. package/dist/components/{p-D44g2Kw1.js → p-BciTtTwx.js} +2 -2
  182. package/dist/components/p-BciTtTwx.js.map +1 -0
  183. package/dist/components/{p-CZOiTaNa.js → p-BeNa6tw5.js} +2 -2
  184. package/dist/components/{p-CZOiTaNa.js.map → p-BeNa6tw5.js.map} +1 -1
  185. package/dist/components/p-BgQMEHRa.js +2 -0
  186. package/dist/components/{p-CwqFJMvP.js.map → p-BgQMEHRa.js.map} +1 -1
  187. package/dist/components/{p-BQaO7cg_.js → p-BhJXmuRA.js} +2 -2
  188. package/dist/components/{p-n68x-ZKp.js → p-Bm7rqs3C.js} +2 -2
  189. package/dist/components/{p-DdspY23v.js → p-Bn8I7iw6.js} +2 -2
  190. package/dist/components/{p-BnWxbhFP.js → p-Bpd6YCo4.js} +2 -2
  191. package/dist/components/{p-B-9fdIWv.js → p-C-3YqeTb.js} +2 -2
  192. package/dist/components/{p-umAf0fBn.js → p-CD4DZPy_.js} +2 -2
  193. package/dist/components/p-CElUM-xU.js +2 -0
  194. package/dist/components/p-CElUM-xU.js.map +1 -0
  195. package/dist/components/{p-CuwopElg.js → p-CGidq1iC.js} +2 -2
  196. package/dist/components/p-CNxvnQ6A.js +2 -0
  197. package/dist/components/p-CNxvnQ6A.js.map +1 -0
  198. package/dist/components/{p-CI7VfYC3.js → p-CUcUHwI3.js} +2 -2
  199. package/dist/components/p-CYzFfFcH.js +2 -0
  200. package/dist/components/{p-BINSI_KF.js.map → p-CYzFfFcH.js.map} +1 -1
  201. package/dist/components/{p-Dhw_W8nk.js → p-Cc3ZUQlJ.js} +2 -2
  202. package/dist/components/p-Cc3ZUQlJ.js.map +1 -0
  203. package/dist/components/p-CdgOLWX9.js +2 -0
  204. package/dist/components/p-CdgOLWX9.js.map +1 -0
  205. package/dist/components/{p-BcdHgPi5.js → p-CeXf9-X3.js} +2 -2
  206. package/dist/components/{p-CSnsz3Eb.js → p-CiH4GG6r.js} +2 -2
  207. package/dist/components/{p-y06IxxoN.js → p-CiJ1WR11.js} +2 -2
  208. package/dist/components/p-CmexIVnE.js +2 -0
  209. package/dist/components/{p-N5SHSVo2.js.map → p-CmexIVnE.js.map} +1 -1
  210. package/dist/components/{p-BmFeeR4q.js → p-CqW2eyiF.js} +2 -2
  211. package/dist/components/{p-CzbsTZt7.js → p-Cxr0IQjC.js} +2 -2
  212. package/dist/components/{p-CqlBlv55.js → p-CzIpquvw.js} +2 -2
  213. package/dist/components/{p-DC69DgAR.js → p-D0y7Sja6.js} +2 -2
  214. package/dist/components/{p-Cwz9TPVS.js → p-D1vQGJzc.js} +2 -2
  215. package/dist/components/{p-Cwz9TPVS.js.map → p-D1vQGJzc.js.map} +1 -1
  216. package/dist/components/{p-C7CZ9pnP.js → p-D6Wl3dRO.js} +2 -2
  217. package/dist/components/{p-BPhbwXOv.js → p-D922f6Tb.js} +2 -2
  218. package/dist/components/{p-beRFLHbB.js → p-DHICPS4n.js} +2 -2
  219. package/dist/components/{p-omPm8_vx.js → p-DOAybCp0.js} +2 -2
  220. package/dist/components/{p-DEGNrPLe.js → p-DVINzOoK.js} +2 -2
  221. package/dist/components/{p-DEGNrPLe.js.map → p-DVINzOoK.js.map} +1 -1
  222. package/dist/components/p-DVOjjuXc.js +2 -0
  223. package/dist/components/p-DVOjjuXc.js.map +1 -0
  224. package/dist/components/p-Di5FH7eh.js +2 -0
  225. package/dist/components/p-Di5FH7eh.js.map +1 -0
  226. package/dist/components/p-DjkUFlDW.js +2 -0
  227. package/dist/components/p-DjkUFlDW.js.map +1 -0
  228. package/dist/components/{p-BnzsBNUY.js → p-Dn9QHL4O.js} +2 -2
  229. package/dist/components/{p-DGzn4k4h.js → p-Do2FJd1y.js} +2 -2
  230. package/dist/components/{p-DTDLlinw.js → p-DpoTwJAR.js} +2 -2
  231. package/dist/components/{p-Dk-8Ju0Q.js → p-Dpr2y6_S.js} +2 -2
  232. package/dist/components/{p-Dk-8Ju0Q.js.map → p-Dpr2y6_S.js.map} +1 -1
  233. package/dist/components/p-Dw9sE6Iw.js +2 -0
  234. package/dist/components/p-Dw9sE6Iw.js.map +1 -0
  235. package/dist/components/{p-CLGtPE0K.js → p-DwbcNDJF.js} +2 -2
  236. package/dist/components/p-Dzndkdx5.js +2 -0
  237. package/dist/components/{p-xHGqrz_p.js.map → p-Dzndkdx5.js.map} +1 -1
  238. package/dist/components/{p-C8ek-1SP.js → p-E5W27Fu_.js} +2 -2
  239. package/dist/components/{p-mpk_Mm8_.js → p-FIBCluwV.js} +2 -2
  240. package/dist/components/{p-DQQFN2sw.js → p-IEq_06J0.js} +2 -2
  241. package/dist/components/{p-DQQFN2sw.js.map → p-IEq_06J0.js.map} +1 -1
  242. package/dist/components/{p-CE540WZ7.js → p-MG4lcN0D.js} +2 -2
  243. package/dist/components/p-Nc76seSq.js +2 -0
  244. package/dist/components/p-Nc76seSq.js.map +1 -0
  245. package/dist/components/{p-DtLQIMsa.js → p-ZhP2tVmM.js} +2 -2
  246. package/dist/components/p-aD5cw_m2.js +2 -0
  247. package/dist/components/p-aD5cw_m2.js.map +1 -0
  248. package/dist/components/p-etifxiDc.js +2 -0
  249. package/dist/components/{p-beCz9OnD.js.map → p-etifxiDc.js.map} +1 -1
  250. package/dist/components/p-kDZ0sEII.js +2 -0
  251. package/dist/components/p-kDZ0sEII.js.map +1 -0
  252. package/dist/components/{p-BPlWEidl.js → p-ljbw3UMZ.js} +2 -2
  253. package/dist/components/{p-DZ58Sg5a.js → p-vfCu7XSc.js} +2 -2
  254. package/dist/components/p-vfCu7XSc.js.map +1 -0
  255. package/dist/components/{p-DFjIBS5B.js → p-xdmJCPCg.js} +2 -2
  256. package/dist/components/{p-CAxDdYjh.js → p-xtGGIZmU.js} +2 -2
  257. package/dist/docs/components.json +18102 -14568
  258. package/dist/lib/components/Icon/flag-icon-catalog.d.ts +2 -0
  259. package/dist/lib/components/Icon/icon-cache.d.ts +36 -4
  260. package/dist/lib/components/Icon/map-icon-catalog.d.ts +2 -0
  261. package/dist/lib/shell/index.js +2 -2
  262. package/dist/lib/shell/index.js.map +1 -1
  263. package/dist/lib/utils/button-render.d.ts +1 -1
  264. package/dist/lib/utils/clock-time.d.ts +22 -0
  265. package/dist/lib/utils/date-filter-value.d.ts +4 -0
  266. package/dist/lib/utils/index.d.ts +3 -1
  267. package/dist/lib/utils/index.js +201 -5
  268. package/dist/lib/utils/index.js.map +4 -4
  269. package/dist/mcp-data/registry/agent-activity.json +2 -2
  270. package/dist/mcp-data/registry/agent-questionnaire.json +2 -2
  271. package/dist/mcp-data/registry/agent-response.json +1 -1
  272. package/dist/mcp-data/registry/agent-source-list.json +1 -1
  273. package/dist/mcp-data/registry/agent-tool-call.json +2 -2
  274. package/dist/mcp-data/registry/attachment-list.json +1 -1
  275. package/dist/mcp-data/registry/avatar.json +1 -1
  276. package/dist/mcp-data/registry/badge.json +1 -1
  277. package/dist/mcp-data/registry/banner.json +1 -1
  278. package/dist/mcp-data/registry/bar-action.json +1 -1
  279. package/dist/mcp-data/registry/bar-nav.json +1 -1
  280. package/dist/mcp-data/registry/bar-page-title.json +1 -1
  281. package/dist/mcp-data/registry/bar-title.json +3 -3
  282. package/dist/mcp-data/registry/bar-workflow.json +1 -1
  283. package/dist/mcp-data/registry/breadcrumb.json +1 -1
  284. package/dist/mcp-data/registry/button-filled.json +1 -1
  285. package/dist/mcp-data/registry/button-inverted.json +580 -0
  286. package/dist/mcp-data/registry/button-unfilled.json +1 -1
  287. package/dist/mcp-data/registry/calendar.json +273 -0
  288. package/dist/mcp-data/registry/card-action-center.json +1 -1
  289. package/dist/mcp-data/registry/card-chart.json +1 -1
  290. package/dist/mcp-data/registry/card-navigation.json +5 -3
  291. package/dist/mcp-data/registry/card-overview.json +1 -1
  292. package/dist/mcp-data/registry/card-setting.json +1 -1
  293. package/dist/mcp-data/registry/card-settings-scope.json +1 -1
  294. package/dist/mcp-data/registry/chart-legend.json +1 -1
  295. package/dist/mcp-data/registry/chart.json +1 -1
  296. package/dist/mcp-data/registry/checkbox.json +1 -1
  297. package/dist/mcp-data/registry/chip.json +1 -1
  298. package/dist/mcp-data/registry/code-block.json +1 -1
  299. package/dist/mcp-data/registry/conversation-list-item.json +1 -1
  300. package/dist/mcp-data/registry/conversation-list-section.json +1 -1
  301. package/dist/mcp-data/registry/conversation-list.json +10 -32
  302. package/dist/mcp-data/registry/data-customize.json +374 -0
  303. package/dist/mcp-data/registry/{table-filter.json → data-filter.json} +33 -33
  304. package/dist/mcp-data/registry/data-group.json +358 -0
  305. package/dist/mcp-data/registry/data-preferences.json +566 -0
  306. package/dist/mcp-data/registry/data-saved-views.json +433 -0
  307. package/dist/mcp-data/registry/data-search.json +367 -0
  308. package/dist/mcp-data/registry/data-sort.json +254 -0
  309. package/dist/mcp-data/registry/data-toolbar.json +181 -0
  310. package/dist/mcp-data/registry/divider.json +1 -1
  311. package/dist/mcp-data/registry/empty-state.json +1 -1
  312. package/dist/mcp-data/registry/field.json +20 -15
  313. package/dist/mcp-data/registry/filter-menu.json +7 -11
  314. package/dist/mcp-data/registry/icon.json +13 -7
  315. package/dist/mcp-data/registry/input-date.json +516 -0
  316. package/dist/mcp-data/registry/input-time.json +535 -0
  317. package/dist/mcp-data/registry/input.json +57 -9
  318. package/dist/mcp-data/registry/loader.json +1 -1
  319. package/dist/mcp-data/registry/markdown.json +1 -1
  320. package/dist/mcp-data/registry/menu.json +3 -3
  321. package/dist/mcp-data/registry/message-actions.json +1 -1
  322. package/dist/mcp-data/registry/message-bubble.json +1 -1
  323. package/dist/mcp-data/registry/message-composer.json +2 -2
  324. package/dist/mcp-data/registry/message-scroller.json +1 -1
  325. package/dist/mcp-data/registry/message.json +1 -1
  326. package/dist/mcp-data/registry/mobile-bar-nav.json +2 -2
  327. package/dist/mcp-data/registry/mobile-header.json +1 -1
  328. package/dist/mcp-data/registry/mobile-section-switcher.json +1 -1
  329. package/dist/mcp-data/registry/mobile-sheet-nav.json +2 -2
  330. package/dist/mcp-data/registry/modal.json +1 -1
  331. package/dist/mcp-data/registry/pagination.json +1 -1
  332. package/dist/mcp-data/registry/panel-nav.json +1 -1
  333. package/dist/mcp-data/registry/panel-sub-nav.json +1 -1
  334. package/dist/mcp-data/registry/panel-tool-header.json +1 -1
  335. package/dist/mcp-data/registry/panel-tool-search.json +1 -1
  336. package/dist/mcp-data/registry/panel-tools.json +3 -3
  337. package/dist/mcp-data/registry/paper-texture.json +1 -1
  338. package/dist/mcp-data/registry/radio.json +1 -1
  339. package/dist/mcp-data/registry/registry.json +5911 -4816
  340. package/dist/mcp-data/registry/score.json +1 -1
  341. package/dist/mcp-data/registry/scroll-overlay.json +1 -1
  342. package/dist/mcp-data/registry/select.json +64 -8
  343. package/dist/mcp-data/registry/shell-app.json +1 -1
  344. package/dist/mcp-data/registry/shell-page.json +1 -1
  345. package/dist/mcp-data/registry/shell-tools.json +1 -1
  346. package/dist/mcp-data/registry/skeleton.json +1 -1
  347. package/dist/mcp-data/registry/slider.json +1 -1
  348. package/dist/mcp-data/registry/swatch-picker.json +1 -1
  349. package/dist/mcp-data/registry/switch.json +1 -1
  350. package/dist/mcp-data/registry/tab-group.json +1 -1
  351. package/dist/mcp-data/registry/table.json +71 -71
  352. package/dist/mcp-data/registry/tag.json +1 -1
  353. package/dist/mcp-data/registry/text.json +1 -1
  354. package/dist/mcp-data/registry/textarea.json +3 -3
  355. package/dist/mcp-data/registry/time-picker.json +259 -0
  356. package/dist/mcp-data/registry/toast.json +1 -1
  357. package/dist/mcp-data/registry/tooltip-chart.json +1 -1
  358. package/dist/mcp-data/registry/tooltip.json +1 -1
  359. package/dist/mcp-data/registry/typing-indicator.json +1 -1
  360. package/dist/react/components.d.ts +13 -7
  361. package/dist/react/components.js +13 -7
  362. package/dist/react/ds-button-inverted.d.ts +13 -0
  363. package/dist/react/ds-button-inverted.js +15 -0
  364. package/dist/react/ds-calendar.d.ts +12 -0
  365. package/dist/react/ds-calendar.js +12 -0
  366. package/dist/react/ds-data-customize.d.ts +13 -0
  367. package/dist/react/ds-data-customize.js +15 -0
  368. package/dist/react/ds-data-filter.d.ts +18 -0
  369. package/dist/react/{ds-table-filter.js → ds-data-filter.js} +5 -5
  370. package/dist/react/ds-data-group.d.ts +14 -0
  371. package/dist/react/{ds-table-group.js → ds-data-group.js} +5 -5
  372. package/dist/react/ds-data-preferences.d.ts +21 -0
  373. package/dist/react/{ds-table-preferences.js → ds-data-preferences.js} +6 -6
  374. package/dist/react/ds-data-saved-views.d.ts +17 -0
  375. package/dist/react/{ds-table-saved-views.js → ds-data-saved-views.js} +5 -5
  376. package/dist/react/ds-data-search.d.ts +14 -0
  377. package/dist/react/{ds-table-search.js → ds-data-search.js} +5 -5
  378. package/dist/react/ds-data-sort.d.ts +12 -0
  379. package/dist/react/ds-data-sort.js +12 -0
  380. package/dist/react/{ds-table-toolbar.d.ts → ds-data-toolbar.d.ts} +3 -3
  381. package/dist/react/ds-data-toolbar.js +12 -0
  382. package/dist/react/ds-field.d.ts +1 -1
  383. package/dist/react/ds-input-date.d.ts +12 -0
  384. package/dist/react/ds-input-date.js +12 -0
  385. package/dist/react/ds-input-time.d.ts +12 -0
  386. package/dist/react/ds-input-time.js +12 -0
  387. package/dist/react/ds-table.d.ts +3 -3
  388. package/dist/react/ds-table.js +1 -1
  389. package/dist/react/ds-time-picker.d.ts +12 -0
  390. package/dist/react/ds-time-picker.js +12 -0
  391. package/dist/styles/table.css +11 -11
  392. package/dist/types/components/BarTitle/BarTitle.d.ts +1 -0
  393. package/dist/types/components/BarTitle/bar-title-action-chrome.d.ts +2 -0
  394. package/dist/types/components/ButtonInverted/ButtonInverted.d.ts +83 -0
  395. package/dist/types/components/ButtonInverted/index.d.ts +2 -0
  396. package/dist/types/components/Calendar/Calendar.d.ts +32 -0
  397. package/dist/types/components/Calendar/calendar-grid.d.ts +19 -0
  398. package/dist/types/components/ConversationList/ConversationList.d.ts +0 -7
  399. package/dist/types/components/DataCustomize/DataCustomize.d.ts +67 -0
  400. package/dist/types/components/{TableFilter/TableFilter.d.ts → DataFilter/DataFilter.d.ts} +2 -2
  401. package/dist/types/components/{TableGroup/TableGroup.d.ts → DataGroup/DataGroup.d.ts} +8 -8
  402. package/dist/types/components/{TablePreferences/TablePreferences.d.ts → DataPreferences/DataPreferences.d.ts} +29 -13
  403. package/dist/types/components/{TableSavedViews/TableSavedViews.d.ts → DataSavedViews/DataSavedViews.d.ts} +10 -10
  404. package/dist/types/components/DataSavedViews/data-saved-views-types.d.ts +24 -0
  405. package/dist/types/components/DataSavedViews/index.d.ts +2 -0
  406. package/dist/types/components/{TableSearch/TableSearch.d.ts → DataSearch/DataSearch.d.ts} +6 -6
  407. package/dist/types/components/{TableSearch/table-search-model.d.ts → DataSearch/data-search-model.d.ts} +6 -6
  408. package/dist/types/components/{TableSearch/table-search-types.d.ts → DataSearch/data-search-types.d.ts} +3 -3
  409. package/dist/types/components/{TableSort/TableSort.d.ts → DataSort/DataSort.d.ts} +7 -6
  410. package/dist/types/components/DataSort/data-sort-menu.d.ts +15 -0
  411. package/dist/types/components/{TableToolbar/TableToolbar.d.ts → DataToolbar/DataToolbar.d.ts} +3 -3
  412. package/dist/types/components/Field/Field.d.ts +7 -2
  413. package/dist/types/components/FilterMenu/FilterMenu.d.ts +0 -10
  414. package/dist/types/components/Icon/icon-cache.d.ts +36 -4
  415. package/dist/types/components/Icon/map-icon-catalog.d.ts +3 -0
  416. package/dist/types/components/Input/Input.d.ts +10 -0
  417. package/dist/types/components/InputDate/InputDate.d.ts +78 -0
  418. package/dist/types/components/InputTime/InputTime.d.ts +80 -0
  419. package/dist/types/components/PanelTools/PanelTools.d.ts +1 -1
  420. package/dist/types/components/Select/Select.d.ts +8 -1
  421. package/dist/types/components/Table/Table.d.ts +9 -9
  422. package/dist/types/components/Table/index.d.ts +1 -1
  423. package/dist/types/components/Table/table-action-menu.d.ts +1 -1
  424. package/dist/types/components/Table/table-body-renderer.d.ts +2 -2
  425. package/dist/types/components/Table/table-column-customizer.d.ts +9 -9
  426. package/dist/types/components/Table/table-group-load-controller.d.ts +2 -2
  427. package/dist/types/components/Table/table-model.d.ts +7 -7
  428. package/dist/types/components/Table/table-render-model.d.ts +3 -3
  429. package/dist/types/components/Table/table-types.d.ts +17 -36
  430. package/dist/types/components/Table/table-virtual-model.d.ts +2 -2
  431. package/dist/types/components/TimePicker/TimePicker.d.ts +33 -0
  432. package/dist/types/components.d.ts +5461 -4433
  433. package/dist/types/utils/button-render.d.ts +1 -1
  434. package/dist/types/utils/clock-time.d.ts +23 -0
  435. package/dist/types/utils/data-field.d.ts +38 -0
  436. package/dist/types/utils/date-filter-value.d.ts +4 -0
  437. package/dist/types/utils/index.d.ts +3 -1
  438. package/dist/types/utils/list-customizer.d.ts +38 -0
  439. package/dist/types/utils/table-caption-compact.d.ts +1 -1
  440. package/dist/vue/components.d.ts +13 -7
  441. package/dist/vue/components.js +13 -7
  442. package/dist/vue/ds-button-inverted.d.ts +3 -0
  443. package/dist/vue/ds-button-inverted.js +33 -0
  444. package/dist/vue/{ds-table-sort.d.ts → ds-calendar.d.ts} +1 -1
  445. package/dist/vue/ds-calendar.js +16 -0
  446. package/dist/vue/ds-conversation-list.js +1 -3
  447. package/dist/vue/ds-data-customize.d.ts +3 -0
  448. package/dist/vue/ds-data-customize.js +23 -0
  449. package/dist/vue/{ds-table-group.d.ts → ds-data-filter.d.ts} +1 -1
  450. package/dist/vue/{ds-table-filter.js → ds-data-filter.js} +2 -2
  451. package/dist/vue/{ds-table-filter.d.ts → ds-data-group.d.ts} +1 -1
  452. package/dist/vue/{ds-table-group.js → ds-data-group.js} +2 -2
  453. package/dist/vue/{ds-table-saved-views.d.ts → ds-data-preferences.d.ts} +1 -1
  454. package/dist/vue/{ds-table-preferences.js → ds-data-preferences.js} +10 -7
  455. package/dist/vue/ds-data-saved-views.d.ts +3 -0
  456. package/dist/vue/{ds-table-saved-views.js → ds-data-saved-views.js} +2 -2
  457. package/dist/vue/{ds-table-search.d.ts → ds-data-search.d.ts} +1 -1
  458. package/dist/vue/{ds-table-search.js → ds-data-search.js} +3 -3
  459. package/dist/vue/ds-data-sort.d.ts +3 -0
  460. package/dist/vue/{ds-table-sort.js → ds-data-sort.js} +3 -3
  461. package/dist/vue/ds-data-toolbar.d.ts +3 -0
  462. package/dist/vue/ds-data-toolbar.js +9 -0
  463. package/dist/vue/{ds-table-preferences.d.ts → ds-input-date.d.ts} +1 -1
  464. package/dist/vue/ds-input-date.js +31 -0
  465. package/dist/vue/ds-input-time.d.ts +3 -0
  466. package/dist/vue/ds-input-time.js +32 -0
  467. package/dist/vue/ds-input.js +2 -0
  468. package/dist/vue/ds-select.js +3 -0
  469. package/dist/vue/ds-table.js +4 -4
  470. package/dist/vue/ds-time-picker.d.ts +3 -0
  471. package/dist/vue/ds-time-picker.js +16 -0
  472. package/package.json +3 -3
  473. package/dist/angular/ds-table-filter.d.ts +0 -50
  474. package/dist/angular/ds-table-group.d.ts +0 -29
  475. package/dist/angular/ds-table-preferences.d.ts +0 -39
  476. package/dist/angular/ds-table-saved-views.d.ts +0 -49
  477. package/dist/angular/ds-table-search.d.ts +0 -20
  478. package/dist/angular/ds-table-sort.d.ts +0 -16
  479. package/dist/angular/ds-table-toolbar.d.ts +0 -12
  480. package/dist/components/ds-table-filter.js +0 -2
  481. package/dist/components/ds-table-filter.js.map +0 -1
  482. package/dist/components/ds-table-group.js +0 -2
  483. package/dist/components/ds-table-preferences.d.ts +0 -11
  484. package/dist/components/ds-table-preferences.js +0 -2
  485. package/dist/components/ds-table-preferences.js.map +0 -1
  486. package/dist/components/ds-table-saved-views.js +0 -2
  487. package/dist/components/ds-table-saved-views.js.map +0 -1
  488. package/dist/components/ds-table-search.js +0 -2
  489. package/dist/components/ds-table-search.js.map +0 -1
  490. package/dist/components/ds-table-sort.js +0 -2
  491. package/dist/components/ds-table-sort.js.map +0 -1
  492. package/dist/components/ds-table-toolbar.d.ts +0 -11
  493. package/dist/components/ds-table-toolbar.js +0 -2
  494. package/dist/components/ds-table-toolbar.js.map +0 -1
  495. package/dist/components/p-BINSI_KF.js +0 -2
  496. package/dist/components/p-BbfBvMRR.js +0 -2
  497. package/dist/components/p-BbfBvMRR.js.map +0 -1
  498. package/dist/components/p-C1_3CVma.js +0 -2
  499. package/dist/components/p-C1_3CVma.js.map +0 -1
  500. package/dist/components/p-CKarsuR2.js +0 -2
  501. package/dist/components/p-CKarsuR2.js.map +0 -1
  502. package/dist/components/p-Cea7rROU.js +0 -2
  503. package/dist/components/p-Cea7rROU.js.map +0 -1
  504. package/dist/components/p-Cmj04E5Q.js +0 -2
  505. package/dist/components/p-Cmj04E5Q.js.map +0 -1
  506. package/dist/components/p-Cq_Qpe_C.js +0 -2
  507. package/dist/components/p-Cq_Qpe_C.js.map +0 -1
  508. package/dist/components/p-CwqFJMvP.js +0 -2
  509. package/dist/components/p-D44g2Kw1.js.map +0 -1
  510. package/dist/components/p-DZ58Sg5a.js.map +0 -1
  511. package/dist/components/p-D_u8WhlU.js +0 -2
  512. package/dist/components/p-Dhw_W8nk.js.map +0 -1
  513. package/dist/components/p-FPZbS19l.js +0 -2
  514. package/dist/components/p-FPZbS19l.js.map +0 -1
  515. package/dist/components/p-KBrC9IG4.js +0 -2
  516. package/dist/components/p-KBrC9IG4.js.map +0 -1
  517. package/dist/components/p-N5SHSVo2.js +0 -2
  518. package/dist/components/p-QjkufCcn.js +0 -2
  519. package/dist/components/p-QjkufCcn.js.map +0 -1
  520. package/dist/components/p-UAIxh67Q.js +0 -2
  521. package/dist/components/p-UAIxh67Q.js.map +0 -1
  522. package/dist/components/p-beCz9OnD.js +0 -2
  523. package/dist/components/p-xHGqrz_p.js +0 -2
  524. package/dist/mcp-data/registry/table-group.json +0 -358
  525. package/dist/mcp-data/registry/table-preferences.json +0 -511
  526. package/dist/mcp-data/registry/table-saved-views.json +0 -431
  527. package/dist/mcp-data/registry/table-search.json +0 -366
  528. package/dist/mcp-data/registry/table-sort.json +0 -253
  529. package/dist/mcp-data/registry/table-toolbar.json +0 -180
  530. package/dist/react/ds-table-filter.d.ts +0 -18
  531. package/dist/react/ds-table-group.d.ts +0 -14
  532. package/dist/react/ds-table-preferences.d.ts +0 -21
  533. package/dist/react/ds-table-saved-views.d.ts +0 -17
  534. package/dist/react/ds-table-search.d.ts +0 -14
  535. package/dist/react/ds-table-sort.d.ts +0 -12
  536. package/dist/react/ds-table-sort.js +0 -12
  537. package/dist/react/ds-table-toolbar.js +0 -12
  538. package/dist/types/components/FilterMenu/filter-menu-calendar.d.ts +0 -13
  539. package/dist/types/components/TableSavedViews/index.d.ts +0 -2
  540. package/dist/types/components/TableSavedViews/table-saved-views-types.d.ts +0 -24
  541. package/dist/types/components/TableSort/table-sort-menu.d.ts +0 -15
  542. package/dist/vue/ds-table-toolbar.d.ts +0 -3
  543. package/dist/vue/ds-table-toolbar.js +0 -9
  544. /package/dist/components/{ds-table-group.js.map → ds-calendar.js.map} +0 -0
  545. /package/dist/components/{p-BQsVI_vO.js.map → p-5URekSny.js.map} +0 -0
  546. /package/dist/components/{p-eo_pmPqp.js.map → p-7V1AhetH.js.map} +0 -0
  547. /package/dist/components/{p-yZRXPHDe.js.map → p-8yBdCXCn.js.map} +0 -0
  548. /package/dist/components/{p-BQaO7cg_.js.map → p-BhJXmuRA.js.map} +0 -0
  549. /package/dist/components/{p-n68x-ZKp.js.map → p-Bm7rqs3C.js.map} +0 -0
  550. /package/dist/components/{p-DdspY23v.js.map → p-Bn8I7iw6.js.map} +0 -0
  551. /package/dist/components/{p-BnWxbhFP.js.map → p-Bpd6YCo4.js.map} +0 -0
  552. /package/dist/components/{p-B-9fdIWv.js.map → p-C-3YqeTb.js.map} +0 -0
  553. /package/dist/components/{p-umAf0fBn.js.map → p-CD4DZPy_.js.map} +0 -0
  554. /package/dist/components/{p-CuwopElg.js.map → p-CGidq1iC.js.map} +0 -0
  555. /package/dist/components/{p-CI7VfYC3.js.map → p-CUcUHwI3.js.map} +0 -0
  556. /package/dist/components/{p-BcdHgPi5.js.map → p-CeXf9-X3.js.map} +0 -0
  557. /package/dist/components/{p-CSnsz3Eb.js.map → p-CiH4GG6r.js.map} +0 -0
  558. /package/dist/components/{p-y06IxxoN.js.map → p-CiJ1WR11.js.map} +0 -0
  559. /package/dist/components/{p-BmFeeR4q.js.map → p-CqW2eyiF.js.map} +0 -0
  560. /package/dist/components/{p-CzbsTZt7.js.map → p-Cxr0IQjC.js.map} +0 -0
  561. /package/dist/components/{p-CqlBlv55.js.map → p-CzIpquvw.js.map} +0 -0
  562. /package/dist/components/{p-DC69DgAR.js.map → p-D0y7Sja6.js.map} +0 -0
  563. /package/dist/components/{p-C7CZ9pnP.js.map → p-D6Wl3dRO.js.map} +0 -0
  564. /package/dist/components/{p-BPhbwXOv.js.map → p-D922f6Tb.js.map} +0 -0
  565. /package/dist/components/{p-beRFLHbB.js.map → p-DHICPS4n.js.map} +0 -0
  566. /package/dist/components/{p-omPm8_vx.js.map → p-DOAybCp0.js.map} +0 -0
  567. /package/dist/components/{p-BnzsBNUY.js.map → p-Dn9QHL4O.js.map} +0 -0
  568. /package/dist/components/{p-DGzn4k4h.js.map → p-Do2FJd1y.js.map} +0 -0
  569. /package/dist/components/{p-DTDLlinw.js.map → p-DpoTwJAR.js.map} +0 -0
  570. /package/dist/components/{p-CLGtPE0K.js.map → p-DwbcNDJF.js.map} +0 -0
  571. /package/dist/components/{p-C8ek-1SP.js.map → p-E5W27Fu_.js.map} +0 -0
  572. /package/dist/components/{p-mpk_Mm8_.js.map → p-FIBCluwV.js.map} +0 -0
  573. /package/dist/components/{p-CE540WZ7.js.map → p-MG4lcN0D.js.map} +0 -0
  574. /package/dist/components/{p-DtLQIMsa.js.map → p-ZhP2tVmM.js.map} +0 -0
  575. /package/dist/components/{p-BPlWEidl.js.map → p-ljbw3UMZ.js.map} +0 -0
  576. /package/dist/components/{p-DFjIBS5B.js.map → p-xdmJCPCg.js.map} +0 -0
  577. /package/dist/components/{p-CAxDdYjh.js.map → p-xtGGIZmU.js.map} +0 -0
@@ -0,0 +1,358 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema/registry-item.json",
3
+ "name": "data-group",
4
+ "title": "DataGroup",
5
+ "description": "Two-panel toolbar control for choosing one grouping data point and the order of its group sections.",
6
+ "type": "registry:ui",
7
+ "meta": {
8
+ "library": "@ds-mo/ui",
9
+ "distribution": "npm",
10
+ "storybook": "https://zainadeel.github.io/compomo/?path=/story/data-group",
11
+ "source": "src/wc/components/DataGroup/DataGroup.tsx",
12
+ "intentStatus": "complete",
13
+ "intent": {
14
+ "audience": "general",
15
+ "status": "stable",
16
+ "summary": "Two-panel toolbar control for choosing one grouping data point and the order of its group sections.",
17
+ "useWhen": [
18
+ "A data view needs explicit control of one grouping level and its section order.",
19
+ "Grouping data-point labels differ from compact table-header labels."
20
+ ],
21
+ "avoidWhen": [
22
+ "The data view is not groupable.",
23
+ "The application expects the component to rearrange rows or create group sections internally."
24
+ ],
25
+ "alternatives": [
26
+ {
27
+ "when": "The choice is one submitted form value with no dependent order pane.",
28
+ "component": "component:ds-select",
29
+ "reason": "Select owns form-value semantics rather than table grouping state."
30
+ }
31
+ ],
32
+ "commonlyComposedWith": [
33
+ "component:ds-table",
34
+ "component:ds-data-toolbar",
35
+ "component:ds-data-filter",
36
+ "component:ds-data-sort"
37
+ ],
38
+ "patterns": [
39
+ "pattern:menu-trigger"
40
+ ],
41
+ "accessibility": [
42
+ "The trigger opens a named non-modal dialog. Data and Order are independently named single-selection listboxes.",
43
+ "Up and Down move within the focused pane. Right moves from Data to Order when a group is active, Left returns to the selected Data row, and Escape closes the dialog and restores trigger focus.",
44
+ "The right pane remains present before a group is active as one complete empty state without the Order heading, and explains that a group must be selected."
45
+ ],
46
+ "states": [
47
+ "options and grouping are controlled. A data option may supply product-owned orderOptions; otherwise Order defaults to Ascending and Descending. dsGroupChange reports a complete DataGroupingState and dsClear requests null grouping without mutating either input.",
48
+ "Selecting a new data point starts at its first custom order option, or ascending when it has no custom order options. Re-selecting the active data point preserves its complete order state.",
49
+ "Selecting a data point or direction applies immediately and leaves the dialog open so the other pane can be changed.",
50
+ "The grouping picker automatically holds the shared surface-open wash through exit. Opening this picker is separate from expanding an inline table group.",
51
+ "Embedded mode renders the same controlled content inside a parent-owned surface; the parent owns positioning, initial focus, Escape, Tab exit, and dismissal.",
52
+ "Borderless toolbar compositions omit resting control borders while retaining focus and interaction feedback.",
53
+ "Expanded toolbar triggers use an icon and regular-weight text without a trailing chevron.",
54
+ "Vertical presentation stacks grouping data and ordering, with an explicit No grouping choice and no Clear footer."
55
+ ],
56
+ "responsiveBehavior": [
57
+ "Use in the trailing region of ds-data-toolbar.",
58
+ "The trigger uses the shared caption-control button behavior and becomes icon-only in compact table captions or standalone data toolbars.",
59
+ "Both panes remain present and their choice lists scroll within the collision-constrained popup."
60
+ ],
61
+ "frameworkCaveats": {
62
+ "customElements": [
63
+ "Assign options and grouping as JavaScript properties and replace grouping from dsGroupChange or dsClear."
64
+ ],
65
+ "react": [
66
+ "Keep grouping in application state and replace it from dsGroupChange; set it to null from dsClear."
67
+ ],
68
+ "angular": [
69
+ "Import the generated DsDataGroup adapter and bind options and grouping as properties."
70
+ ]
71
+ },
72
+ "references": [
73
+ {
74
+ "label": "Review states",
75
+ "path": "src/wc/components/DataGroup/DataGroup.stories.ts"
76
+ },
77
+ {
78
+ "label": "Toolbar composition owner",
79
+ "path": "src/wc/components/DataToolbar/DataToolbar.agent.json"
80
+ },
81
+ {
82
+ "label": "Surface ownership and trigger state",
83
+ "path": "src/docs/SurfaceOwnership.mdx"
84
+ }
85
+ ]
86
+ },
87
+ "api": {
88
+ "props": {
89
+ "ariaLabel": {
90
+ "type": "string | null",
91
+ "resolvedType": "null | string",
92
+ "attribute": "aria-label",
93
+ "default": "null",
94
+ "required": false,
95
+ "mutable": false,
96
+ "description": "Accessible name for the trigger and non-modal dialog."
97
+ },
98
+ "clearLabel": {
99
+ "type": "string",
100
+ "resolvedType": "string",
101
+ "attribute": "clear-label",
102
+ "default": "'Clear'",
103
+ "required": false,
104
+ "mutable": false,
105
+ "description": "Clear action label."
106
+ },
107
+ "embedded": {
108
+ "type": "boolean",
109
+ "resolvedType": "boolean",
110
+ "attribute": "embedded",
111
+ "default": "false",
112
+ "required": false,
113
+ "mutable": false
114
+ },
115
+ "emptyMessage": {
116
+ "type": "string",
117
+ "resolvedType": "string",
118
+ "attribute": "empty-message",
119
+ "default": "'Select a group to choose its order.'",
120
+ "required": false,
121
+ "mutable": false,
122
+ "description": "Empty message kept in the order pane until a grouping data point is selected."
123
+ },
124
+ "grouping": {
125
+ "type": "DataGroupingState | null",
126
+ "resolvedType": "DataGroupingState | null",
127
+ "default": "null",
128
+ "required": false,
129
+ "mutable": false,
130
+ "description": "Controlled grouping field and the order of its group sections."
131
+ },
132
+ "hasBorder": {
133
+ "type": "boolean",
134
+ "resolvedType": "boolean",
135
+ "attribute": "has-border",
136
+ "default": "true",
137
+ "required": false,
138
+ "mutable": false,
139
+ "description": "Show the trigger border."
140
+ },
141
+ "open": {
142
+ "type": "boolean",
143
+ "resolvedType": "boolean",
144
+ "attribute": "open",
145
+ "default": "false",
146
+ "required": false,
147
+ "mutable": true,
148
+ "description": "Controlled popup visibility."
149
+ },
150
+ "options": {
151
+ "type": "DataGroupOption[]",
152
+ "resolvedType": "DataGroupOption[]",
153
+ "default": "[]",
154
+ "required": false,
155
+ "mutable": false
156
+ },
157
+ "vertical": {
158
+ "type": "boolean",
159
+ "resolvedType": "boolean",
160
+ "attribute": "vertical",
161
+ "default": "false",
162
+ "required": false,
163
+ "mutable": false
164
+ }
165
+ },
166
+ "events": [
167
+ {
168
+ "name": "dsClear",
169
+ "detail": "void",
170
+ "bubbles": true,
171
+ "cancelable": true,
172
+ "composed": true,
173
+ "description": "Requests removal of the controlled grouping state."
174
+ },
175
+ {
176
+ "name": "dsGroupChange",
177
+ "detail": "DataGroupingState",
178
+ "bubbles": true,
179
+ "cancelable": true,
180
+ "composed": true,
181
+ "description": "Requests replacement of the complete controlled grouping state."
182
+ },
183
+ {
184
+ "name": "dsOpenChange",
185
+ "detail": "boolean",
186
+ "bubbles": true,
187
+ "cancelable": true,
188
+ "composed": true,
189
+ "description": "Reports controlled popup visibility changes."
190
+ }
191
+ ],
192
+ "methods": [],
193
+ "slots": []
194
+ },
195
+ "props": {
196
+ "ariaLabel": {
197
+ "type": "string | null",
198
+ "resolvedType": "null | string",
199
+ "attribute": "aria-label",
200
+ "default": "null",
201
+ "required": false,
202
+ "mutable": false,
203
+ "description": "Accessible name for the trigger and non-modal dialog."
204
+ },
205
+ "clearLabel": {
206
+ "type": "string",
207
+ "resolvedType": "string",
208
+ "attribute": "clear-label",
209
+ "default": "'Clear'",
210
+ "required": false,
211
+ "mutable": false,
212
+ "description": "Clear action label."
213
+ },
214
+ "embedded": {
215
+ "type": "boolean",
216
+ "resolvedType": "boolean",
217
+ "attribute": "embedded",
218
+ "default": "false",
219
+ "required": false,
220
+ "mutable": false
221
+ },
222
+ "emptyMessage": {
223
+ "type": "string",
224
+ "resolvedType": "string",
225
+ "attribute": "empty-message",
226
+ "default": "'Select a group to choose its order.'",
227
+ "required": false,
228
+ "mutable": false,
229
+ "description": "Empty message kept in the order pane until a grouping data point is selected."
230
+ },
231
+ "grouping": {
232
+ "type": "DataGroupingState | null",
233
+ "resolvedType": "DataGroupingState | null",
234
+ "default": "null",
235
+ "required": false,
236
+ "mutable": false,
237
+ "description": "Controlled grouping field and the order of its group sections."
238
+ },
239
+ "hasBorder": {
240
+ "type": "boolean",
241
+ "resolvedType": "boolean",
242
+ "attribute": "has-border",
243
+ "default": "true",
244
+ "required": false,
245
+ "mutable": false,
246
+ "description": "Show the trigger border."
247
+ },
248
+ "open": {
249
+ "type": "boolean",
250
+ "resolvedType": "boolean",
251
+ "attribute": "open",
252
+ "default": "false",
253
+ "required": false,
254
+ "mutable": true,
255
+ "description": "Controlled popup visibility."
256
+ },
257
+ "options": {
258
+ "type": "DataGroupOption[]",
259
+ "resolvedType": "DataGroupOption[]",
260
+ "default": "[]",
261
+ "required": false,
262
+ "mutable": false
263
+ },
264
+ "vertical": {
265
+ "type": "boolean",
266
+ "resolvedType": "boolean",
267
+ "attribute": "vertical",
268
+ "default": "false",
269
+ "required": false,
270
+ "mutable": false
271
+ }
272
+ },
273
+ "events": [
274
+ {
275
+ "name": "dsClear",
276
+ "detail": "void",
277
+ "bubbles": true,
278
+ "cancelable": true,
279
+ "composed": true,
280
+ "description": "Requests removal of the controlled grouping state."
281
+ },
282
+ {
283
+ "name": "dsGroupChange",
284
+ "detail": "DataGroupingState",
285
+ "bubbles": true,
286
+ "cancelable": true,
287
+ "composed": true,
288
+ "description": "Requests replacement of the complete controlled grouping state."
289
+ },
290
+ {
291
+ "name": "dsOpenChange",
292
+ "detail": "boolean",
293
+ "bubbles": true,
294
+ "cancelable": true,
295
+ "composed": true,
296
+ "description": "Reports controlled popup visibility changes."
297
+ }
298
+ ],
299
+ "methods": [],
300
+ "slots": [],
301
+ "exports": {
302
+ "customElement": "ds-data-group",
303
+ "react": "DsDataGroup",
304
+ "vue": "DsDataGroup",
305
+ "angular": "DsDataGroup"
306
+ },
307
+ "consumption": {
308
+ "install": "npm install @ds-mo/ui @ds-mo/tokens @ds-mo/icons",
309
+ "cssSetup": "import '@ds-mo/tokens';\nimport '@ds-mo/tokens/reset';\nimport '@ds-mo/tokens/globals';",
310
+ "customElements": {
311
+ "import": "import '@ds-mo/ui/dist/components/ds-data-group.js';",
312
+ "example": "<ds-data-group></ds-data-group>"
313
+ },
314
+ "react": {
315
+ "import": "import { DsDataGroup } from '@ds-mo/ui/react';",
316
+ "example": "<DsDataGroup />"
317
+ },
318
+ "vue": {
319
+ "import": "import { DsDataGroup } from '@ds-mo/ui/vue';",
320
+ "example": "<DsDataGroup />"
321
+ },
322
+ "angular": {
323
+ "import": "import { DsDataGroup } from '@ds-mo/ui/angular/ds-data-group';",
324
+ "example": "<ds-data-group></ds-data-group>"
325
+ },
326
+ "complexPropertyNote": "Assign these non-primitive values as JavaScript properties: grouping, options.",
327
+ "peerDependencies": {
328
+ "required": [
329
+ "@ds-mo/tokens ^6.5.1",
330
+ "@ds-mo/icons ^8.1.0"
331
+ ],
332
+ "frameworks": "Custom Elements; React 18/19 wrappers; Vue 3 wrappers; Angular 19-22 standalone adapters."
333
+ }
334
+ }
335
+ },
336
+ "dependencies": [
337
+ "@ds-mo/ui",
338
+ "@ds-mo/tokens"
339
+ ],
340
+ "registryDependencies": [
341
+ "button-unfilled",
342
+ "empty-state",
343
+ "input",
344
+ "text"
345
+ ],
346
+ "files": [
347
+ {
348
+ "path": "src/wc/components/DataGroup/DataGroup.css",
349
+ "content": "@import '../../utils/radius.css';\n@import '../../utils/choice-list.css';\n@import '../../utils/control-parts.css';\n@import '../../utils/table-caption-control.css';\n\n: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\n.data-group__body {\n display: grid;\n grid-template-columns: var(--dimension-menu-width-xs) var(--dimension-menu-width-sm);\n min-height: calc(var(--dimension-size-800) * 4 + var(--dimension-space-150));\n max-height: calc(100vh - var(--dimension-size-800) - var(--dimension-size-600));\n}\n\n.data-group__data-pane,\n.data-group__order-pane {\n display: flex;\n min-width: 0;\n min-height: 0;\n flex-direction: column;\n}\n\n.data-group__data-pane {\n border-inline-end: var(--dimension-stroke-width-012) solid var(--color-border-tertiary);\n}\n\n.data-group__list {\n flex: 1 1 auto;\n}\n\n.data-group__empty {\n flex: 1 1 auto;\n}\n\n.data-group__footer {\n flex: 0 0 auto;\n}\n\n.data-group__footer .ds-choice-footer__content {\n justify-content: flex-start;\n}\n\n.data-group__footer[aria-hidden='true']::before {\n visibility: hidden;\n}\n\n.data-group__footer[aria-hidden='true'] .ds-choice-footer__content {\n visibility: hidden;\n}\n\n@media (forced-colors: active) {\n .data-group__data-pane {\n border-inline-end-color: var(--ds-forced-color-content);\n }\n}\n\n.data-preferences-embedded {\n display: flex;\n flex-direction: column;\n min-width: 0;\n min-height: 0;\n color: var(--color-foreground-secondary);\n}\n\n:host:has(.data-preferences-embedded) {\n display: block;\n max-inline-size: none;\n}\n.data-preferences-embedded .data-group__body {\n grid-template-columns: min(var(--dimension-menu-width-xs), 40%) minmax(0, 1fr);\n}\n\n:host(.data-group-vertical) .data-group__body {\n grid-template-columns: minmax(0, 1fr);\n}\n:host(.data-group-vertical) .data-group__data-pane {\n border-inline-end: 0;\n}\n\n:host(.data-group-vertical) .data-group__footer {\n display: none;\n}\n",
350
+ "type": "registry:ui"
351
+ },
352
+ {
353
+ "path": "src/wc/components/DataGroup/DataGroup.tsx",
354
+ "content": "import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport {\n resolveChoicePopupAlignOffset,\n resolveCssLengthPx,\n resolveMotionTimeMs,\n TOKEN_CSS_LENGTHS,\n TOKEN_DEFAULTS,\n} from '../../utils';\nimport { AnchoredPositionController } from '../../utils/anchored-position-controller';\nimport { AnchoredOverlayInteractionController } from '../../utils/anchored-overlay-interaction-controller';\nimport { resolveAnchoredOverlayBoundaryRect } from '../../utils/anchored-overlay-boundary';\nimport { ChoiceListSection, ChoiceOptionRow } from '../../utils/choice-list-parts';\nimport type { DataGroupingState, DataSortDirection } from '../Table/table-types';\n\nexport interface TableGroupOrderOption {\n label: string;\n direction: DataSortDirection;\n /** Optional application-owned data point used to order the group sections. */\n orderBy?: string;\n}\n\nexport interface DataGroupOption {\n label: string;\n value: string;\n description?: string;\n isInactive?: boolean;\n /** Product-owned order choices for this grouping data point. */\n orderOptions?: TableGroupOrderOption[];\n}\n\nconst DEFAULT_ORDER_OPTIONS: TableGroupOrderOption[] = [\n { label: 'Ascending', direction: 'asc' },\n { label: 'Descending', direction: 'desc' },\n];\n\nlet tableGroupSeq = 0;\n\n@Component({\n tag: 'ds-data-group',\n styleUrl: 'DataGroup.css',\n scoped: true,\n})\nexport class DataGroup {\n @Element() private el!: HTMLElement;\n\n /** Product-owned data points that may group the table. */\n /** Render content inside a parent-owned surface; the parent owns dismissal and positioning. */\n /** Show the trigger border. */\n @Prop() hasBorder: boolean = true;\n @Prop() vertical: boolean = false;\n @Prop() embedded: boolean = false;\n @Prop() options: DataGroupOption[] = [];\n /** Controlled grouping field and the order of its group sections. */\n @Prop() grouping: DataGroupingState | null = null;\n /** Accessible name for the trigger and non-modal dialog. */\n @Prop({ attribute: 'aria-label' }) ariaLabel: string | null = null;\n /** Controlled popup visibility. */\n @Prop({ mutable: true }) open = false;\n /** Empty message kept in the order pane until a grouping data point is selected. */\n @Prop() emptyMessage = 'Select a group to choose its order.';\n /** Clear action label. */\n @Prop() clearLabel = 'Clear';\n\n /** Requests replacement of the complete controlled grouping state. */\n @Event() dsGroupChange!: EventEmitter<DataGroupingState>;\n /** Requests removal of the controlled grouping state. */\n @Event() dsClear!: EventEmitter<void>;\n /** Reports controlled popup visibility changes. */\n @Event() dsOpenChange!: EventEmitter<boolean>;\n\n @State() private shouldRender = false;\n @State() private closing = false;\n @State() private positionReady = false;\n @State() private pos = { x: 0, y: 0 };\n @State() private focusRingVisible = false;\n\n private readonly componentId = `ds-data-group-${++tableGroupSeq}`;\n private readonly triggerId = `${this.componentId}-trigger`;\n private readonly popupId = `${this.componentId}-popup`;\n private triggerElement: HTMLElement | null = null;\n private pendingInitialFocusVisible = false;\n private closeTimer: ReturnType<typeof setTimeout> | null = null;\n\n private readonly position = new AnchoredPositionController({\n getAnchor: () => this.triggerElement,\n getPopup: () => this.el.querySelector<HTMLElement>('.data-group-popup'),\n getOwnerDocument: () => this.el.ownerDocument,\n measure: (anchor, popup) => {\n if (!this.open) return null;\n const sectionInsetPx = resolveCssLengthPx(TOKEN_DEFAULTS.space050, TOKEN_DEFAULTS.space050);\n return {\n anchorRect: anchor.getBoundingClientRect(),\n popupWidth: popup.offsetWidth || this.popupFallbackWidth,\n popupHeight: popup.offsetHeight || this.popupFallbackHeight,\n side: 'bottom',\n align: 'end',\n sideOffsetPx: resolveCssLengthPx(TOKEN_CSS_LENGTHS.space050, TOKEN_DEFAULTS.space050),\n alignOffsetPx: resolveChoicePopupAlignOffset({\n align: 'end',\n alignOffsetPx: 0,\n sectionInsetPx,\n }),\n viewportPadPx: resolveCssLengthPx(TOKEN_DEFAULTS.space050, TOKEN_DEFAULTS.space050),\n viewportWidth: window.innerWidth,\n viewportHeight: window.innerHeight,\n collisionRect: resolveAnchoredOverlayBoundaryRect(anchor),\n };\n },\n apply: ({ x, y }) => {\n this.pos = { x, y };\n },\n onReady: () => {\n this.positionReady = true;\n },\n liveUpdate: 'double-frame',\n observeResize: true,\n topLayer: true,\n });\n\n private readonly interaction = new AnchoredOverlayInteractionController({\n getAnchor: () => this.triggerElement,\n getPopup: () => this.el.querySelector<HTMLElement>('.data-group-popup'),\n getOwnerDocument: () => this.el.ownerDocument,\n onOutsideActivation: () => this.close(),\n });\n\n componentDidLoad() {\n if (this.open) this.onOpenChange(true);\n }\n\n disconnectedCallback() {\n this.position.unobserve();\n this.interaction.disconnect();\n if (this.closeTimer) clearTimeout(this.closeTimer);\n }\n\n @Watch('open')\n onOpenChange(isOpen: boolean) {\n if (this.embedded) return;\n if (isOpen) {\n this.teardown();\n this.shouldRender = true;\n this.closing = false;\n this.positionReady = false;\n this.focusRingVisible = this.pendingInitialFocusVisible;\n this.interaction.connect();\n this.position.observe();\n this.position.schedule(() => this.focusInitialDataPoint());\n return;\n }\n if (!this.shouldRender) return;\n this.position.cancel();\n this.closing = true;\n this.interaction.disconnect();\n this.position.unobserve();\n const duration = resolveMotionTimeMs(\n TOKEN_DEFAULTS.motionShort2,\n TOKEN_DEFAULTS.animationDurationShort3\n );\n if (duration <= 0) this.finishClose();\n else this.closeTimer = setTimeout(() => this.finishClose(), duration);\n }\n\n @Listen('keydown')\n handleKeyDown(event: KeyboardEvent) {\n if (this.embedded && (event.key === 'Escape' || event.key === 'Tab')) return;\n if ((!this.shouldRender && !this.embedded) || this.closing) return;\n if (event.key === 'Escape') {\n event.preventDefault();\n this.close();\n return;\n }\n if (event.key !== 'Tab' || !this.interaction.tabLeavesPopup(event)) return;\n event.preventDefault();\n this.close(false);\n this.interaction.moveFocusAfterTab(event.shiftKey);\n }\n\n private get popupFallbackWidth(): number {\n return resolveCssLengthPx(TOKEN_DEFAULTS.menuWidthLg, TOKEN_DEFAULTS.menuWidthLg);\n }\n\n private get popupFallbackHeight(): number {\n return resolveCssLengthPx(TOKEN_DEFAULTS.menuFallbackHeight, TOKEN_DEFAULTS.menuFallbackHeight);\n }\n\n private teardown() {\n this.position.unobserve();\n this.interaction.disconnect();\n if (this.closeTimer) {\n clearTimeout(this.closeTimer);\n this.closeTimer = null;\n }\n }\n\n private toggle(fromKeyboard = false) {\n if (this.open) {\n this.close();\n return;\n }\n this.pendingInitialFocusVisible = fromKeyboard;\n this.open = true;\n this.dsOpenChange.emit(true);\n this.onOpenChange(true);\n }\n\n private close(restoreFocus = true) {\n if (restoreFocus) this.interaction.focusAnchor();\n this.open = false;\n this.dsOpenChange.emit(false);\n this.onOpenChange(false);\n }\n\n private finishClose() {\n const popup = this.el.querySelector<HTMLElement>('.data-group-popup');\n if (popup?.matches(':popover-open')) popup.hidePopover();\n this.shouldRender = false;\n this.closing = false;\n this.closeTimer = null;\n }\n\n private focusInitialDataPoint() {\n requestAnimationFrame(() => {\n const selected = this.grouping\n ? this.el.querySelector<HTMLElement>(\n `[data-group-value=\"${CSS.escape(this.grouping.fieldId)}\"] [role=\"option\"]`\n )\n : null;\n const initial =\n selected ??\n this.el.querySelector<HTMLElement>(\n '[data-group-value] [role=\"option\"]:not([aria-disabled=\"true\"])'\n );\n initial?.focus();\n this.pendingInitialFocusVisible = false;\n });\n }\n\n private selectData(option: DataGroupOption) {\n if (option.value === '__none__') {\n this.dsClear.emit();\n return;\n }\n if (option.isInactive) return;\n if (this.grouping?.fieldId === option.value) {\n this.dsGroupChange.emit({ ...this.grouping });\n return;\n }\n const initialOrder = option.orderOptions?.[0];\n this.dsGroupChange.emit({\n fieldId: option.value,\n direction: initialOrder?.direction ?? 'asc',\n ...(initialOrder?.orderBy ? { orderBy: initialOrder.orderBy } : {}),\n });\n }\n\n private get activeOrderOptions(): TableGroupOrderOption[] {\n const configured = this.options.find(\n option => option.value === this.grouping?.fieldId\n )?.orderOptions;\n return configured?.length ? configured : DEFAULT_ORDER_OPTIONS;\n }\n\n private get selectedOrderIndex(): number {\n if (!this.grouping) return -1;\n const exact = this.activeOrderOptions.findIndex(\n option =>\n option.direction === this.grouping?.direction && option.orderBy === this.grouping?.orderBy\n );\n if (exact >= 0) return exact;\n if (this.grouping.orderBy === undefined) {\n return this.activeOrderOptions.findIndex(\n option => option.direction === this.grouping?.direction\n );\n }\n return -1;\n }\n\n private selectOrder(option: TableGroupOrderOption, index: number) {\n if (!this.grouping || this.selectedOrderIndex === index) return;\n const grouping: DataGroupingState = {\n fieldId: this.grouping.fieldId,\n direction: option.direction,\n };\n if (option.orderBy) grouping.orderBy = option.orderBy;\n this.dsGroupChange.emit(grouping);\n }\n\n private moveFocus(\n event: KeyboardEvent,\n selector: string,\n currentIndex: number,\n oppositeSelector?: string\n ) {\n if (oppositeSelector && (event.key === 'ArrowLeft' || event.key === 'ArrowRight')) {\n event.preventDefault();\n this.focusRingVisible = true;\n this.el.querySelector<HTMLElement>(oppositeSelector)?.focus();\n return;\n }\n if (!['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) return;\n event.preventDefault();\n const items = Array.from(this.el.querySelectorAll<HTMLElement>(selector)).filter(\n item => item.getAttribute('aria-disabled') !== 'true'\n );\n if (!items.length) return;\n let next: number;\n if (event.key === 'Home') next = 0;\n else if (event.key === 'End') next = items.length - 1;\n else next = (currentIndex + (event.key === 'ArrowDown' ? 1 : -1) + items.length) % items.length;\n this.focusRingVisible = true;\n items[next]?.focus();\n }\n\n private renderDataOption(option: DataGroupOption, index: number) {\n const selected =\n option.value === '__none__' ? !this.grouping : option.value === this.grouping?.fieldId;\n return (\n <ChoiceOptionRow\n id={`${this.componentId}-data-${index}`}\n option={{ ...option }}\n selected={selected}\n active={selected}\n focusRingVisible={this.focusRingVisible}\n usesSubtext={Boolean(option.description)}\n tabIndex={selected || (!this.grouping && index === 0) ? 0 : -1}\n onHover={() => {\n this.focusRingVisible = false;\n }}\n onSelect={() => this.selectData(option)}\n onKeyDown={(event: KeyboardEvent) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.selectData(option);\n return;\n }\n this.moveFocus(\n event,\n '[data-group-value] [role=\"option\"]',\n this.options\n .filter(candidate => !candidate.isInactive)\n .findIndex(candidate => candidate.value === option.value),\n this.grouping\n ? `[data-group-order-index=\"${this.selectedOrderIndex}\"] [role=\"option\"]`\n : undefined\n );\n }}\n />\n );\n }\n\n private renderOrder(option: TableGroupOrderOption, index: number) {\n const selected = index === this.selectedOrderIndex;\n return (\n <ChoiceOptionRow\n id={`${this.componentId}-order-${index}`}\n option={{ label: option.label, value: String(index) }}\n selected={selected}\n active={selected}\n focusRingVisible={this.focusRingVisible}\n usesSubtext={false}\n tabIndex={selected ? 0 : -1}\n onHover={() => {\n this.focusRingVisible = false;\n }}\n onSelect={() => this.selectOrder(option, index)}\n onKeyDown={(event: KeyboardEvent) => {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.selectOrder(option, index);\n return;\n }\n this.moveFocus(\n event,\n '[data-group-order-index] [role=\"option\"]',\n index,\n `[data-group-value=\"${CSS.escape(this.grouping?.fieldId ?? '')}\"] [role=\"option\"]`\n );\n }}\n />\n );\n }\n\n render() {\n const name = this.ariaLabel?.trim() || 'Group table';\n const popupStyle: Record<string, string> = {\n position: 'fixed',\n left: '0',\n top: '0',\n transform: `translate(${Math.round(this.pos.x)}px, ${Math.round(this.pos.y)}px)`,\n zIndex: '9998',\n visibility: this.positionReady ? 'visible' : 'hidden',\n };\n\n return (\n <Host\n class={{ 'data-group-vertical': this.vertical }}\n hidden={this.options.length === 0 ? true : undefined}\n >\n {this.options.length && !this.embedded ? (\n <ds-button-unfilled\n hasBorder={this.hasBorder}\n ref={element => {\n this.triggerElement = (element as HTMLElement) ?? null;\n }}\n id={this.triggerId}\n variant=\"icon-label\"\n size=\"md\"\n icon=\"SectionList\"\n label=\"Group\"\n labelEmphasis={false}\n pressScale={false}\n aria-label={name}\n haspopup=\"dialog\"\n collapseLabel={true}\n expanded={this.open}\n surfaceOpen={this.open || this.closing}\n controls={this.popupId}\n onDsClick={(event: CustomEvent<MouseEvent>) => this.toggle(event.detail.detail === 0)}\n />\n ) : null}\n\n {this.shouldRender || this.embedded ? (\n <div\n id={this.popupId}\n popover={this.embedded ? undefined : 'manual'}\n class={{\n 'data-group-popup': true,\n 'ds-choice-popup': !this.embedded,\n 'data-preferences-embedded': this.embedded,\n 'ds-choice-popup--closing': this.closing,\n }}\n style={this.embedded ? undefined : popupStyle}\n role=\"dialog\"\n aria-label={name}\n >\n <div class=\"data-group__body\">\n <div class=\"data-group__data-pane\">\n <ChoiceListSection\n heading=\"Data\"\n ariaLabel=\"Group data\"\n className=\"data-group__list\"\n >\n {this.vertical &&\n this.renderDataOption({ label: 'No grouping', value: '__none__' }, -1)}\n {this.options.map((option, index) => (\n <div data-group-value={option.value}>\n {this.renderDataOption(option, index)}\n </div>\n ))}\n </ChoiceListSection>\n <div\n hidden={this.vertical}\n class=\"data-group__footer ds-choice-footer\"\n aria-hidden={!this.grouping ? 'true' : undefined}\n >\n <div class=\"ds-choice-footer__content ds-control--md\">\n {this.grouping ? (\n <button\n class=\"ds-choice-footer__clear ds-text-action ds-focus-ring\"\n type=\"button\"\n onClick={() => this.dsClear.emit()}\n >\n <ds-text as=\"span\" variant=\"text-body-medium\" color=\"inherit\">\n {this.clearLabel}\n </ds-text>\n </button>\n ) : null}\n </div>\n </div>\n </div>\n\n <div class=\"data-group__order-pane\">\n {this.grouping ? (\n <ChoiceListSection\n heading=\"Order\"\n ariaLabel=\"Group order\"\n className=\"data-group__list\"\n >\n {this.activeOrderOptions.map((option, index) => (\n <div data-group-order-index={index}>{this.renderOrder(option, index)}</div>\n ))}\n </ChoiceListSection>\n ) : (\n <div class=\"data-group__empty ds-choice-empty ds-empty-region\">\n <ds-empty-state body={this.emptyMessage} />\n </div>\n )}\n </div>\n </div>\n </div>\n ) : null}\n </Host>\n );\n }\n}\n",
355
+ "type": "registry:ui"
356
+ }
357
+ ]
358
+ }