@ds-mo/ui 14.19.0 → 14.20.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 (363) hide show
  1. package/dist/.package-ready.json +1 -1
  2. package/dist/agent-patterns.json +1 -1
  3. package/dist/agent.json +24 -8
  4. package/dist/angular/ds-filter-menu.d.ts +1 -1
  5. package/dist/angular/ds-filter-menu.js +3 -3
  6. package/dist/components/ds-agent-activity.js +1 -1
  7. package/dist/components/ds-agent-questionnaire.js +1 -1
  8. package/dist/components/ds-agent-response.js +1 -1
  9. package/dist/components/ds-agent-source-list.js +1 -1
  10. package/dist/components/ds-agent-tool-call.js +1 -1
  11. package/dist/components/ds-attachment-list.js +1 -1
  12. package/dist/components/ds-avatar.js +1 -1
  13. package/dist/components/ds-badge.js +1 -1
  14. package/dist/components/ds-banner.js +1 -1
  15. package/dist/components/ds-banner.js.map +1 -1
  16. package/dist/components/ds-bar-action.js +1 -1
  17. package/dist/components/ds-bar-action.js.map +1 -1
  18. package/dist/components/ds-bar-nav.js +1 -1
  19. package/dist/components/ds-bar-title.js +1 -1
  20. package/dist/components/ds-bar-workflow.js +1 -1
  21. package/dist/components/ds-bar-workflow.js.map +1 -1
  22. package/dist/components/ds-breadcrumb.js +1 -1
  23. package/dist/components/ds-button-filled.js +1 -1
  24. package/dist/components/ds-button-unfilled.js +1 -1
  25. package/dist/components/ds-card-chart.js +1 -1
  26. package/dist/components/ds-card-chart.js.map +1 -1
  27. package/dist/components/ds-card-overview.js +1 -1
  28. package/dist/components/ds-card-overview.js.map +1 -1
  29. package/dist/components/ds-card-setting.js +1 -1
  30. package/dist/components/ds-card-setting.js.map +1 -1
  31. package/dist/components/ds-chart-legend.js +1 -1
  32. package/dist/components/ds-chart-legend.js.map +1 -1
  33. package/dist/components/ds-chart.js +1 -1
  34. package/dist/components/ds-chart.js.map +1 -1
  35. package/dist/components/ds-checkbox.js +1 -1
  36. package/dist/components/ds-chip.js +1 -1
  37. package/dist/components/ds-chip.js.map +1 -1
  38. package/dist/components/ds-code-block.js +1 -1
  39. package/dist/components/ds-conversation-list-item.js +1 -1
  40. package/dist/components/ds-conversation-list-item.js.map +1 -1
  41. package/dist/components/ds-conversation-list-section.js +1 -1
  42. package/dist/components/ds-conversation-list.js +1 -1
  43. package/dist/components/ds-conversation-list.js.map +1 -1
  44. package/dist/components/ds-divider.js +1 -1
  45. package/dist/components/ds-empty-state.js +1 -1
  46. package/dist/components/ds-field.js +1 -1
  47. package/dist/components/ds-filter-menu.js +1 -1
  48. package/dist/components/ds-icon.js +1 -1
  49. package/dist/components/ds-input.js +1 -1
  50. package/dist/components/ds-loader.js +1 -1
  51. package/dist/components/ds-markdown.js +1 -1
  52. package/dist/components/ds-menu.js +1 -1
  53. package/dist/components/ds-message-actions.js +1 -1
  54. package/dist/components/ds-message-bubble.js +1 -1
  55. package/dist/components/ds-message-bubble.js.map +1 -1
  56. package/dist/components/ds-message-composer.js +1 -1
  57. package/dist/components/ds-message-composer.js.map +1 -1
  58. package/dist/components/ds-message-scroller.js +1 -1
  59. package/dist/components/ds-message-scroller.js.map +1 -1
  60. package/dist/components/ds-message.js +1 -1
  61. package/dist/components/ds-mobile-bar-nav.js +1 -1
  62. package/dist/components/ds-mobile-header.js +1 -1
  63. package/dist/components/ds-mobile-section-switcher.js +1 -1
  64. package/dist/components/ds-mobile-sheet-nav.js +1 -1
  65. package/dist/components/ds-modal.js +1 -1
  66. package/dist/components/ds-pagination.js +1 -1
  67. package/dist/components/ds-panel-nav.js +1 -1
  68. package/dist/components/ds-panel-sub-nav.js +1 -1
  69. package/dist/components/ds-panel-sub-nav.js.map +1 -1
  70. package/dist/components/ds-panel-tool-header.js +1 -1
  71. package/dist/components/ds-panel-tool-search.js +1 -1
  72. package/dist/components/ds-panel-tool-search.js.map +1 -1
  73. package/dist/components/ds-panel-tools.js +1 -1
  74. package/dist/components/ds-radio.js +1 -1
  75. package/dist/components/ds-scroll-overlay.js +1 -1
  76. package/dist/components/ds-scroll-overlay.js.map +1 -1
  77. package/dist/components/ds-select.js +1 -1
  78. package/dist/components/ds-shell-app.js +1 -1
  79. package/dist/components/ds-shell-app.js.map +1 -1
  80. package/dist/components/ds-shell-page.js +1 -1
  81. package/dist/components/ds-shell-tools.js +1 -1
  82. package/dist/components/ds-skeleton.js +1 -1
  83. package/dist/components/ds-slider.js +1 -1
  84. package/dist/components/ds-slider.js.map +1 -1
  85. package/dist/components/ds-swatch-picker.js +1 -1
  86. package/dist/components/ds-switch.js +1 -1
  87. package/dist/components/ds-tab-group.js +1 -1
  88. package/dist/components/ds-table-filter.js +1 -1
  89. package/dist/components/ds-table-filter.js.map +1 -1
  90. package/dist/components/ds-table-saved-views.js +1 -1
  91. package/dist/components/ds-table-sort.js +1 -1
  92. package/dist/components/ds-table-sort.js.map +1 -1
  93. package/dist/components/ds-table-toolbar.js +1 -1
  94. package/dist/components/ds-table.js +1 -1
  95. package/dist/components/ds-table.js.map +1 -1
  96. package/dist/components/ds-tag.js +1 -1
  97. package/dist/components/ds-text.js +1 -1
  98. package/dist/components/ds-toast.js +1 -1
  99. package/dist/components/ds-toast.js.map +1 -1
  100. package/dist/components/ds-tooltip-chart.js +1 -1
  101. package/dist/components/ds-tooltip.js +1 -1
  102. package/dist/components/ds-typing-indicator.js +1 -1
  103. package/dist/components/p-0XTyQNRG.js +2 -0
  104. package/dist/components/{p-JPTkZ3Ji.js.map → p-0XTyQNRG.js.map} +1 -1
  105. package/dist/components/{p-DaAXY-XS.js → p-1UAVanY9.js} +2 -2
  106. package/dist/components/p-1UAVanY9.js.map +1 -0
  107. package/dist/components/{p-BNiuAMeh.js → p-AtUP95E_.js} +2 -2
  108. package/dist/components/p-AtUP95E_.js.map +1 -0
  109. package/dist/components/p-B-HsfQOK.js +2 -0
  110. package/dist/components/p-B-HsfQOK.js.map +1 -0
  111. package/dist/components/{p-B_jZIC9R.js → p-B2FT4Da6.js} +2 -2
  112. package/dist/components/{p-B_jZIC9R.js.map → p-B2FT4Da6.js.map} +1 -1
  113. package/dist/components/p-B4wTnsUL.js +2 -0
  114. package/dist/components/p-B4wTnsUL.js.map +1 -0
  115. package/dist/components/p-B5-R5mb8.js +2 -0
  116. package/dist/components/p-B5-R5mb8.js.map +1 -0
  117. package/dist/components/p-B6rSDhJY.js +2 -0
  118. package/dist/components/p-B6rSDhJY.js.map +1 -0
  119. package/dist/components/{p-B1JRCDHS.js → p-BHhmB9-4.js} +2 -2
  120. package/dist/components/{p-B1JRCDHS.js.map → p-BHhmB9-4.js.map} +1 -1
  121. package/dist/components/p-BUexfjjg.js +2 -0
  122. package/dist/components/{p-DOUDRJbE.js.map → p-BUexfjjg.js.map} +1 -1
  123. package/dist/components/{p-BBG6Sswb.js → p-BYFS2qWb.js} +2 -2
  124. package/dist/components/{p-BBG6Sswb.js.map → p-BYFS2qWb.js.map} +1 -1
  125. package/dist/components/{p-uI6z53BE.js → p-Bb4KnRy0.js} +2 -2
  126. package/dist/components/{p-HB_cf_aR.js → p-BeA6Jv-3.js} +2 -2
  127. package/dist/components/{p-HB_cf_aR.js.map → p-BeA6Jv-3.js.map} +1 -1
  128. package/dist/components/{p-Bbb9A3NV.js → p-BjRD57w3.js} +2 -2
  129. package/dist/components/p-BjRD57w3.js.map +1 -0
  130. package/dist/components/p-BkelrY4-.js +2 -0
  131. package/dist/components/{p-CwjVgUqy.js.map → p-BkelrY4-.js.map} +1 -1
  132. package/dist/components/{p-r8PMqlqm.js → p-BmssRAEZ.js} +2 -2
  133. package/dist/components/p-BmssRAEZ.js.map +1 -0
  134. package/dist/components/{p-BNkU9dcc.js → p-Bv6FSDPR.js} +2 -2
  135. package/dist/components/{p-BNkU9dcc.js.map → p-Bv6FSDPR.js.map} +1 -1
  136. package/dist/components/{p-D3fMaUJ3.js → p-Bx5BSd6F.js} +2 -2
  137. package/dist/components/p-Bx5BSd6F.js.map +1 -0
  138. package/dist/components/{p-B8q-6a03.js → p-C0qN3PSb.js} +1 -1
  139. package/dist/components/{p-B8q-6a03.js.map → p-C0qN3PSb.js.map} +1 -1
  140. package/dist/components/p-CCmgtju-.js +2 -0
  141. package/dist/components/p-CCmgtju-.js.map +1 -0
  142. package/dist/components/p-CDw_WEVt.js +2 -0
  143. package/dist/components/p-CDw_WEVt.js.map +1 -0
  144. package/dist/components/{p-DFQ9mcbK.js → p-CUL5_8JM.js} +2 -2
  145. package/dist/components/p-CUL5_8JM.js.map +1 -0
  146. package/dist/components/{p-BFfLvMZd.js → p-Cea7rROU.js} +2 -2
  147. package/dist/components/{p-BFfLvMZd.js.map → p-Cea7rROU.js.map} +1 -1
  148. package/dist/components/{p-B0Byw6OX.js → p-CgGcgMjs.js} +1 -1
  149. package/dist/components/{p-B0Byw6OX.js.map → p-CgGcgMjs.js.map} +1 -1
  150. package/dist/components/{p-C-Y7gYgz.js → p-ChfVRPHw.js} +2 -2
  151. package/dist/components/p-ChfVRPHw.js.map +1 -0
  152. package/dist/components/{p-CJq3n5kA.js → p-Ck1hgD6g.js} +2 -2
  153. package/dist/components/p-Ck1hgD6g.js.map +1 -0
  154. package/dist/components/{p-BMc0DE59.js → p-CochmPyg.js} +1 -1
  155. package/dist/components/p-CochmPyg.js.map +1 -0
  156. package/dist/components/{p-DDgeXGbB.js → p-CptSB-tA.js} +2 -2
  157. package/dist/components/p-CptSB-tA.js.map +1 -0
  158. package/dist/components/{p-DBue3ISk.js → p-CyZqk196.js} +2 -2
  159. package/dist/components/p-CyZqk196.js.map +1 -0
  160. package/dist/components/{p-Cxr0IQjC.js → p-CzbsTZt7.js} +2 -2
  161. package/dist/components/p-CzbsTZt7.js.map +1 -0
  162. package/dist/components/{p-ZpQBAwZC.js → p-D7QlTWbN.js} +2 -2
  163. package/dist/components/p-D7QlTWbN.js.map +1 -0
  164. package/dist/components/{p-C6DNhlES.js → p-DA5H_Iq_.js} +1 -1
  165. package/dist/components/p-DA5H_Iq_.js.map +1 -0
  166. package/dist/components/p-DBYv7fRq.js +2 -0
  167. package/dist/components/p-DBYv7fRq.js.map +1 -0
  168. package/dist/components/{p-CY4YFAT3.js → p-DCbKsABt.js} +1 -1
  169. package/dist/components/p-DCbKsABt.js.map +1 -0
  170. package/dist/components/{p-C6R5Lft0.js → p-DFC0sRM-.js} +2 -2
  171. package/dist/components/p-DFC0sRM-.js.map +1 -0
  172. package/dist/components/p-DGe5oXR0.js +2 -0
  173. package/dist/components/p-DGe5oXR0.js.map +1 -0
  174. package/dist/components/{p-CsBICYmt.js → p-DGkn8FwV.js} +2 -2
  175. package/dist/components/p-DGkn8FwV.js.map +1 -0
  176. package/dist/components/p-DIlScMvI.js +2 -0
  177. package/dist/components/p-DIlScMvI.js.map +1 -0
  178. package/dist/components/p-DKt_8s-U.js +2 -0
  179. package/dist/components/p-DKt_8s-U.js.map +1 -0
  180. package/dist/components/p-DLbHgbVj.js +2 -0
  181. package/dist/components/p-DLbHgbVj.js.map +1 -0
  182. package/dist/components/{p-Bu3dOjpW.js → p-DM1Z_hh0.js} +2 -2
  183. package/dist/components/{p-Bu3dOjpW.js.map → p-DM1Z_hh0.js.map} +1 -1
  184. package/dist/components/p-DOUk4KoT.js.map +1 -1
  185. package/dist/components/p-DQBT1Jkf.js +2 -0
  186. package/dist/components/p-DQBT1Jkf.js.map +1 -0
  187. package/dist/components/p-DW5Ita-P.js +2 -0
  188. package/dist/components/{p-DUdOmSFR.js.map → p-DW5Ita-P.js.map} +1 -1
  189. package/dist/components/{p-BS0AbMNK.js → p-DWjTOoXs.js} +2 -2
  190. package/dist/components/p-DWjTOoXs.js.map +1 -0
  191. package/dist/components/{p-DNpLDbWY.js → p-DZ58Sg5a.js} +1 -1
  192. package/dist/components/p-DZ58Sg5a.js.map +1 -0
  193. package/dist/components/{p-BknXYAEc.js → p-DdH7b4JF.js} +2 -2
  194. package/dist/components/p-DdH7b4JF.js.map +1 -0
  195. package/dist/components/p-DfDoqOlx.js +2 -0
  196. package/dist/components/p-DfDoqOlx.js.map +1 -0
  197. package/dist/components/p-Do8wbFff.js +2 -0
  198. package/dist/components/p-Do8wbFff.js.map +1 -0
  199. package/dist/components/p-Is1lFmwp.js +2 -0
  200. package/dist/components/p-Is1lFmwp.js.map +1 -0
  201. package/dist/components/p-L8IIeDXM.js +2 -0
  202. package/dist/components/p-L8IIeDXM.js.map +1 -0
  203. package/dist/components/{p-BUDAwJVV.js → p-caLOcQUK.js} +2 -2
  204. package/dist/components/p-caLOcQUK.js.map +1 -0
  205. package/dist/components/{p-D1eEgwcP.js → p-etg-Uk1u.js} +1 -1
  206. package/dist/components/{p-D1eEgwcP.js.map → p-etg-Uk1u.js.map} +1 -1
  207. package/dist/components/{p-C9gC4haA.js → p-fRDzpfi9.js} +2 -2
  208. package/dist/components/p-fRDzpfi9.js.map +1 -0
  209. package/dist/components/{p-C-vRkDyn.js → p-rCeztgVn.js} +1 -1
  210. package/dist/components/{p-C-vRkDyn.js.map → p-rCeztgVn.js.map} +1 -1
  211. package/dist/components/{p-BKp__CQX.js → p-rw0ZxIE4.js} +2 -2
  212. package/dist/components/p-rw0ZxIE4.js.map +1 -0
  213. package/dist/components/p-v4oqkJms.js +2 -0
  214. package/dist/components/p-v4oqkJms.js.map +1 -0
  215. package/dist/docs/components.json +117 -19
  216. package/dist/lib/shell/index.d.ts +2 -2
  217. package/dist/lib/shell/index.js +8 -6
  218. package/dist/lib/shell/index.js.map +2 -2
  219. package/dist/lib/toast/index.js +1 -4
  220. package/dist/lib/toast/index.js.map +2 -2
  221. package/dist/lib/utils/date-filter-value.d.ts +57 -0
  222. package/dist/lib/utils/index.d.ts +3 -1
  223. package/dist/lib/utils/index.js +171 -22
  224. package/dist/lib/utils/index.js.map +3 -3
  225. package/dist/mcp/cli.js +70 -31
  226. package/dist/mcp-data/registry/agent-activity.json +1 -1
  227. package/dist/mcp-data/registry/agent-questionnaire.json +3 -3
  228. package/dist/mcp-data/registry/agent-source-list.json +2 -2
  229. package/dist/mcp-data/registry/agent-tool-call.json +2 -2
  230. package/dist/mcp-data/registry/attachment-list.json +1 -1
  231. package/dist/mcp-data/registry/badge.json +1 -1
  232. package/dist/mcp-data/registry/banner.json +2 -2
  233. package/dist/mcp-data/registry/bar-action.json +1 -1
  234. package/dist/mcp-data/registry/bar-nav.json +3 -3
  235. package/dist/mcp-data/registry/bar-workflow.json +1 -1
  236. package/dist/mcp-data/registry/breadcrumb.json +1 -1
  237. package/dist/mcp-data/registry/button-filled.json +1 -1
  238. package/dist/mcp-data/registry/button-unfilled.json +1 -1
  239. package/dist/mcp-data/registry/card-chart.json +2 -2
  240. package/dist/mcp-data/registry/card-overview.json +3 -3
  241. package/dist/mcp-data/registry/card-setting.json +1 -1
  242. package/dist/mcp-data/registry/chart-legend.json +1 -1
  243. package/dist/mcp-data/registry/chart.json +1 -1
  244. package/dist/mcp-data/registry/checkbox.json +1 -1
  245. package/dist/mcp-data/registry/chip.json +1 -1
  246. package/dist/mcp-data/registry/code-block.json +1 -1
  247. package/dist/mcp-data/registry/conversation-list-item.json +1 -1
  248. package/dist/mcp-data/registry/conversation-list.json +2 -2
  249. package/dist/mcp-data/registry/divider.json +1 -1
  250. package/dist/mcp-data/registry/empty-state.json +1 -1
  251. package/dist/mcp-data/registry/field.json +1 -1
  252. package/dist/mcp-data/registry/filter-menu.json +56 -9
  253. package/dist/mcp-data/registry/icon.json +2 -2
  254. package/dist/mcp-data/registry/input.json +2 -2
  255. package/dist/mcp-data/registry/loader.json +1 -1
  256. package/dist/mcp-data/registry/menu.json +3 -3
  257. package/dist/mcp-data/registry/message-bubble.json +1 -1
  258. package/dist/mcp-data/registry/message-composer.json +2 -2
  259. package/dist/mcp-data/registry/message-scroller.json +3 -3
  260. package/dist/mcp-data/registry/mobile-bar-nav.json +1 -1
  261. package/dist/mcp-data/registry/mobile-header.json +2 -2
  262. package/dist/mcp-data/registry/mobile-section-switcher.json +2 -2
  263. package/dist/mcp-data/registry/mobile-sheet-nav.json +1 -1
  264. package/dist/mcp-data/registry/modal.json +2 -2
  265. package/dist/mcp-data/registry/pagination.json +2 -2
  266. package/dist/mcp-data/registry/panel-nav.json +2 -2
  267. package/dist/mcp-data/registry/panel-sub-nav.json +1 -1
  268. package/dist/mcp-data/registry/panel-tool-header.json +1 -1
  269. package/dist/mcp-data/registry/panel-tool-search.json +1 -1
  270. package/dist/mcp-data/registry/panel-tools.json +2 -2
  271. package/dist/mcp-data/registry/radio.json +1 -1
  272. package/dist/mcp-data/registry/registry.json +23 -7
  273. package/dist/mcp-data/registry/select.json +1 -1
  274. package/dist/mcp-data/registry/shell-app.json +2 -2
  275. package/dist/mcp-data/registry/shell-page.json +1 -1
  276. package/dist/mcp-data/registry/shell-tools.json +1 -1
  277. package/dist/mcp-data/registry/skeleton.json +2 -2
  278. package/dist/mcp-data/registry/slider.json +2 -2
  279. package/dist/mcp-data/registry/swatch-picker.json +3 -3
  280. package/dist/mcp-data/registry/switch.json +2 -2
  281. package/dist/mcp-data/registry/tab-group.json +2 -2
  282. package/dist/mcp-data/registry/table-filter.json +5 -3
  283. package/dist/mcp-data/registry/table-sort.json +1 -1
  284. package/dist/mcp-data/registry/table.json +18 -18
  285. package/dist/mcp-data/registry/tag.json +2 -2
  286. package/dist/mcp-data/registry/text.json +4 -4
  287. package/dist/mcp-data/registry/toast.json +2 -2
  288. package/dist/mcp-data/registry/tooltip-chart.json +2 -2
  289. package/dist/mcp-data/registry/tooltip.json +2 -2
  290. package/dist/styles/prose.css +42 -38
  291. package/dist/styles/table.css +39 -67
  292. package/dist/types/components/CardSetting/index.d.ts +1 -1
  293. package/dist/types/components/FilterMenu/FilterMenu.d.ts +20 -1
  294. package/dist/types/components/FilterMenu/filter-menu-calendar.d.ts +13 -0
  295. package/dist/types/components/TooltipChart/index.d.ts +1 -1
  296. package/dist/types/components.d.ts +26 -4
  297. package/dist/types/shell/index.d.ts +2 -2
  298. package/dist/types/utils/date-filter-value.d.ts +58 -0
  299. package/dist/types/utils/index.d.ts +3 -1
  300. package/dist/vue/ds-filter-menu.js +2 -0
  301. package/package.json +11 -1
  302. package/dist/components/p--CRAu9fJ.js +0 -2
  303. package/dist/components/p--CRAu9fJ.js.map +0 -1
  304. package/dist/components/p-BCOl1x0_.js +0 -2
  305. package/dist/components/p-BCOl1x0_.js.map +0 -1
  306. package/dist/components/p-BHVOiWz5.js +0 -2
  307. package/dist/components/p-BHVOiWz5.js.map +0 -1
  308. package/dist/components/p-BKp__CQX.js.map +0 -1
  309. package/dist/components/p-BMc0DE59.js.map +0 -1
  310. package/dist/components/p-BNiuAMeh.js.map +0 -1
  311. package/dist/components/p-BPG0r_mC.js +0 -2
  312. package/dist/components/p-BPG0r_mC.js.map +0 -1
  313. package/dist/components/p-BS0AbMNK.js.map +0 -1
  314. package/dist/components/p-BUDAwJVV.js.map +0 -1
  315. package/dist/components/p-BZVWmzKf.js +0 -2
  316. package/dist/components/p-BZVWmzKf.js.map +0 -1
  317. package/dist/components/p-Bbb9A3NV.js.map +0 -1
  318. package/dist/components/p-BhYS_Ump.js +0 -2
  319. package/dist/components/p-BhYS_Ump.js.map +0 -1
  320. package/dist/components/p-BknXYAEc.js.map +0 -1
  321. package/dist/components/p-BxGQ3cRJ.js +0 -2
  322. package/dist/components/p-BxGQ3cRJ.js.map +0 -1
  323. package/dist/components/p-BysVBVQv.js +0 -2
  324. package/dist/components/p-BysVBVQv.js.map +0 -1
  325. package/dist/components/p-C-Y7gYgz.js.map +0 -1
  326. package/dist/components/p-C6DNhlES.js.map +0 -1
  327. package/dist/components/p-C6R5Lft0.js.map +0 -1
  328. package/dist/components/p-C9gC4haA.js.map +0 -1
  329. package/dist/components/p-CAnnQL1F.js +0 -2
  330. package/dist/components/p-CAnnQL1F.js.map +0 -1
  331. package/dist/components/p-CJq3n5kA.js.map +0 -1
  332. package/dist/components/p-CY4YFAT3.js.map +0 -1
  333. package/dist/components/p-Cg0kimXZ.js +0 -2
  334. package/dist/components/p-Cg0kimXZ.js.map +0 -1
  335. package/dist/components/p-CsBICYmt.js.map +0 -1
  336. package/dist/components/p-CwjVgUqy.js +0 -2
  337. package/dist/components/p-Cxr0IQjC.js.map +0 -1
  338. package/dist/components/p-D3fMaUJ3.js.map +0 -1
  339. package/dist/components/p-D7R4yE2C.js +0 -2
  340. package/dist/components/p-D7R4yE2C.js.map +0 -1
  341. package/dist/components/p-DAvh38E4.js +0 -2
  342. package/dist/components/p-DAvh38E4.js.map +0 -1
  343. package/dist/components/p-DBue3ISk.js.map +0 -1
  344. package/dist/components/p-DDgeXGbB.js.map +0 -1
  345. package/dist/components/p-DFQ9mcbK.js.map +0 -1
  346. package/dist/components/p-DNpLDbWY.js.map +0 -1
  347. package/dist/components/p-DOUDRJbE.js +0 -2
  348. package/dist/components/p-DUdOmSFR.js +0 -2
  349. package/dist/components/p-DaAXY-XS.js.map +0 -1
  350. package/dist/components/p-DlYw4UGQ.js +0 -2
  351. package/dist/components/p-DlYw4UGQ.js.map +0 -1
  352. package/dist/components/p-DtndC9f1.js +0 -2
  353. package/dist/components/p-DtndC9f1.js.map +0 -1
  354. package/dist/components/p-JPTkZ3Ji.js +0 -2
  355. package/dist/components/p-ZpQBAwZC.js.map +0 -1
  356. package/dist/components/p-ag6Io-kL.js +0 -2
  357. package/dist/components/p-ag6Io-kL.js.map +0 -1
  358. package/dist/components/p-fg9EKoZp.js +0 -2
  359. package/dist/components/p-fg9EKoZp.js.map +0 -1
  360. package/dist/components/p-iMuFgSoM.js +0 -2
  361. package/dist/components/p-iMuFgSoM.js.map +0 -1
  362. package/dist/components/p-r8PMqlqm.js.map +0 -1
  363. /package/dist/components/{p-uI6z53BE.js.map → p-Bb4KnRy0.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"names":["SelectController","constructor","state","this","triggerEl","popupEl","searchEl","typeahead","typeaheadTimer","outsideHandler","setTriggerElement","element","setPopupElement","setSearchElement","handleTriggerKeyDown","event","open","includes","key","preventDefault","openPopup","isTypeaheadKey","searchable","searchTerm","handleTypeahead","handleListKeyDown","focusRingVisible","activeIndex","moveChoiceIndex","options","enabledChoiceIndexes","enabled","length","target","option","selectOption","closePopup","position","AnchoredPositionController","getAnchor","getPopup","measure","trigger","popup","isConnected","host","contains","sectionPadding","resolveCssLengthPx","TOKEN_DEFAULTS","space050","style","minWidth","menuWidthXs","choicePopupMinWidth","offsetWidth","align","popupAlign","anchorRect","getBoundingClientRect","popupWidth","popupHeight","offsetHeight","side","sideOffsetPx","alignOffsetPx","resolveChoicePopupAlignOffset","sectionInsetPx","viewportPadPx","viewportWidth","window","innerWidth","viewportHeight","innerHeight","collisionRect","resolveAnchoredOverlayBoundaryRect","boundary","apply","x","y","positionReady","topLayer","activeOptionId","isLoading","generatedId","undefined","connect","openChanged","disconnect","cancelPositionRetry","unbindPopupListeners","clearTimeout","setFocus","focus","optionsChanged","requestAnimationFrame","updatePosition","loadingChanged","positionChanged","bindPopupListeners","schedulePositionUpdate","scrollActiveOptionIntoView","searchChanged","activeIndexChanged","focusVisible","edge","isDisabled","preferredIndex","restoreFocus","focusSearchOrTrigger","metaKey","ctrlKey","altKey","normalized","toLocaleLowerCase","repeatedCharacter","every","character","match","findChoiceTypeaheadMatch","resetMs","resolveCssTimeMs","animationDurationMedium1","setTimeout","querySelector","scrollIntoView","block","inline","eventIntersectsComposedBoundary","document","addEventListener","observe","removeEventListener","unobserve","cancel","onReady","schedule","update","selectCss","ICON_SIZE","lg","md","sm","xs","OPTION_ACTION_SIZE","selectId","Select","__stencil_proxyCustomElement","HTMLElement","registerHost","sections","multiple","value","disabled","required","requiredMessage","DEFAULT_REQUIRED_MESSAGE","placeholder","triggerLabelPlaceholder","dot","size","width","isInactive","activeFill","collapseLabel","hasBorder","indicator","allowClear","clearLabel","selectedLabel","searchPlaceholder","noResultsText","loadingLabel","error","ariaLabel","formDisabled","compactFooterSummary","captionCompact","listboxId","errorId","initialValue","controller","createController","hasLoaded","clearSelection","stopPropagation","dsChange","emit","dsClear","visibleOptions","activateFooterAction","dsFooterAction","owner","el","findIndex","scalarValue","componentWillLoad","normalizeValueForMode","Array","isArray","syncFormValue","componentDidLoad","observeFooterContent","syncCaptionCompactObserver","connectedCallback","componentDidRender","scheduleFooterSummaryMeasurement","disconnectedCallback","footerResizeObserver","observedFooterContentElement","footerMeasurementFrame","cancelAnimationFrame","disconnectCaptionCompactObserver","onCollapseLabelChange","inactive","values","resolvedValues","setRepeatedFormControlValue","internals","name","hasSelection","setFormControlValue","missing","setRequiredValidity","onLoadingChange","onPopupAlignChange","onOpenChange","dsOpenChange","onSearchTermChange","onActiveIndexChange","formDisabledCallback","formResetCallback","formStateRestoreCallback","restoreStringFormState","restoreStringArrayFormState","allSections","resolveChoiceSections","allOptions","flattenChoiceSections","visibleSections","filterChoiceSections","valid","Set","map","filter","has","selectedOption","find","Boolean","popupRole","some","action","content","footerContentElement","ResizeObserver","measureFooterSummary","summary","footerSummaryMeasureElement","clear","footerClearElement","styles","getComputedStyle","clientWidth","Number","parseFloat","paddingInlineStart","paddingInlineEnd","requiredWidth","columnGap","nextCompact","current","next","renderOption","index","usesIcons","usesSubtext","selected","active","actionId","h","ChoiceOptionRow","id","actionOpen","expanded","leading","class","label","checked","presentation","icon","color","supporting","subtextActions","actionIndex","as","variant","CONTROL_SUPPORTING_TEXT_VARIANT","type","tone","onKeyDown","onClick","dsOptionSubtextAction","actionValue","originalEvent","rounded","haspopup","controls","onDsClick","dsOptionAction","anchorId","detail","onHover","onSelect","captionIconOnly","captionCompactDisconnect","observeTableCaptionCompact","compact","renderCaptionTooltip","render","showPlaceholder","count","triggerLabel","textVariant","CONTROL_TEXT_VARIANT","iconSize","usesOptionIcons","choiceListUsesIcons","usesOptionSubtext","choiceListUsesSubtext","showError","errorMessage","describedBy","ariaDescribedby","join","popupStyle","left","top","transform","Math","round","zIndex","visibility","flatIndex","Host","controlWidthClass","background","ref","inputId","choiceBackgroundClassMap","role","String","ariaLabelledby","shiftKey","getElementById","lineTruncation","hasRing","trim","popover","ChoiceSearch","activeDescendant","inputRef","onValueChange","body","section","sectionIndex","divider","header","emphasis","footerActionLabel","ChoiceActionFooter","onAction","ChoiceFooter","compactSummary","useCompactSummary","contentRef","summaryMeasureRef","clearRef","onClear","textId"],"sources":["src/wc/utils/select-controller.ts","src/wc/components/Select/Select.css?tag=ds-select&encapsulation=scoped","src/wc/components/Select/Select.tsx"],"sourcesContent":["import { AnchoredPositionController } from './anchored-position-controller';\nimport {\n enabledChoiceIndexes,\n findChoiceTypeaheadMatch,\n moveChoiceIndex,\n type ChoiceOption,\n} from './choice-list';\nimport { choicePopupMinWidth, resolveChoicePopupAlignOffset } from './choice-popup-alignment';\nimport { resolveCssLengthPx } from './resolve-css-length-px';\nimport { resolveCssTimeMs } from './resolve-css-time-ms';\nimport { TOKEN_DEFAULTS } from './token-defaults';\nimport { eventIntersectsComposedBoundary } from './anchored-overlay-interaction-controller';\nimport { resolveAnchoredOverlayBoundaryRect } from './anchored-overlay-boundary';\n\ntype PopupPosition = { x: number; y: number };\n\nexport interface SelectControllerState<T extends ChoiceOption> {\n readonly host: HTMLElement;\n readonly generatedId: string;\n readonly options: T[];\n readonly searchable: boolean;\n readonly isLoading: boolean;\n readonly isDisabled: boolean;\n readonly preferredIndex: number;\n readonly popupAlign: 'start' | 'end';\n readonly boundary: HTMLElement | undefined;\n open: boolean;\n activeIndex: number;\n searchTerm: string;\n focusRingVisible: boolean;\n position: PopupPosition;\n positionReady: boolean;\n selectOption(option: T): void;\n}\n\n/**\n * Shared single/multiple Select interaction controller.\n *\n * Decorated Stencil state and scalar/array selection remain in each component;\n * this controller owns only popup lifecycle, focus, positioning, typeahead,\n * and listbox keyboard traversal. Anchored placement is delegated to\n * `AnchoredPositionController`; only the choice-cell measurement stays here.\n */\nexport class SelectController<T extends ChoiceOption> {\n private triggerEl: HTMLButtonElement | null = null;\n private popupEl: HTMLDivElement | null = null;\n private searchEl: HTMLInputElement | null = null;\n private typeahead = '';\n private typeaheadTimer: ReturnType<typeof setTimeout> | null = null;\n private outsideHandler: ((event: MouseEvent) => void) | null = null;\n private readonly position: AnchoredPositionController;\n\n constructor(private readonly state: SelectControllerState<T>) {\n this.position = new AnchoredPositionController({\n getAnchor: () => this.triggerEl,\n getPopup: () => this.popupEl,\n measure: (trigger, popup) => {\n if (!this.state.open || !popup.isConnected || !this.state.host.contains(popup)) return null;\n\n const sectionPadding = resolveCssLengthPx(TOKEN_DEFAULTS.space050, TOKEN_DEFAULTS.space050);\n popup.style.minWidth = `max(var(--ds-choice-popup-min-inline-size, ${TOKEN_DEFAULTS.menuWidthXs}), ${choicePopupMinWidth(trigger.offsetWidth, sectionPadding)}px)`;\n\n const align = this.state.popupAlign;\n return {\n anchorRect: trigger.getBoundingClientRect(),\n popupWidth: popup.offsetWidth,\n popupHeight: popup.offsetHeight,\n side: 'bottom',\n align,\n sideOffsetPx: sectionPadding,\n alignOffsetPx: resolveChoicePopupAlignOffset({\n align,\n alignOffsetPx: 0,\n sectionInsetPx: sectionPadding,\n }),\n viewportPadPx: sectionPadding,\n viewportWidth: window.innerWidth,\n viewportHeight: window.innerHeight,\n collisionRect: resolveAnchoredOverlayBoundaryRect(trigger, this.state.boundary),\n };\n },\n apply: ({ x, y }) => {\n this.state.position = { x, y };\n this.state.positionReady = true;\n },\n topLayer: true,\n });\n }\n\n get activeOptionId(): string | undefined {\n return !this.state.isLoading && this.state.activeIndex >= 0\n ? `${this.state.generatedId}-option-${this.state.activeIndex}`\n : undefined;\n }\n\n setTriggerElement = (element: HTMLButtonElement | null) => {\n this.triggerEl = element;\n };\n\n setPopupElement = (element: HTMLDivElement | null) => {\n this.popupEl = element;\n };\n\n setSearchElement = (element: HTMLInputElement | null) => {\n this.searchEl = element;\n };\n\n connect() {\n if (this.state.open) this.openChanged(true);\n }\n\n disconnect() {\n this.cancelPositionRetry();\n this.unbindPopupListeners();\n if (this.typeaheadTimer) clearTimeout(this.typeaheadTimer);\n }\n\n setFocus() {\n this.triggerEl?.focus();\n }\n\n optionsChanged() {\n if (!this.state.open) return;\n const enabled = enabledChoiceIndexes(this.state.options);\n if (!enabled.includes(this.state.activeIndex)) this.state.activeIndex = enabled[0] ?? -1;\n requestAnimationFrame(() => this.updatePosition());\n }\n\n loadingChanged() {\n if (this.state.open) requestAnimationFrame(() => this.updatePosition());\n }\n\n positionChanged() {\n if (this.state.open) requestAnimationFrame(() => this.updatePosition());\n }\n\n openChanged(open: boolean) {\n if (open) {\n this.bindPopupListeners();\n this.schedulePositionUpdate(() => {\n this.scrollActiveOptionIntoView();\n if (this.state.searchable) this.searchEl?.focus();\n });\n return;\n }\n this.cancelPositionRetry();\n this.unbindPopupListeners();\n this.state.searchTerm = '';\n this.state.positionReady = false;\n }\n\n searchChanged() {\n this.state.activeIndex = enabledChoiceIndexes(this.state.options)[0] ?? -1;\n requestAnimationFrame(() => {\n this.updatePosition();\n this.scrollActiveOptionIntoView();\n });\n }\n\n activeIndexChanged() {\n requestAnimationFrame(() => this.scrollActiveOptionIntoView());\n }\n\n openPopup(focusVisible: boolean, edge?: 'first' | 'last') {\n if (this.state.isDisabled || (!this.state.options.length && !this.state.isLoading)) return;\n const enabled = enabledChoiceIndexes(this.state.options);\n this.state.activeIndex =\n edge === 'last'\n ? (enabled[enabled.length - 1] ?? -1)\n : this.state.preferredIndex >= 0\n ? this.state.preferredIndex\n : (enabled[0] ?? -1);\n this.state.focusRingVisible = focusVisible;\n this.state.open = true;\n }\n\n closePopup(restoreFocus = false) {\n if (!this.state.open) return;\n this.state.open = false;\n if (restoreFocus) requestAnimationFrame(() => this.triggerEl?.focus());\n }\n\n focusSearchOrTrigger() {\n requestAnimationFrame(() =>\n this.state.searchable ? this.searchEl?.focus() : this.triggerEl?.focus()\n );\n }\n\n handleTriggerKeyDown = (event: KeyboardEvent) => {\n if (!this.state.open) {\n if (['ArrowDown', 'ArrowUp', 'Enter', ' '].includes(event.key)) {\n event.preventDefault();\n this.openPopup(true, event.key === 'ArrowUp' ? 'last' : 'first');\n } else if (this.isTypeaheadKey(event)) {\n event.preventDefault();\n this.openPopup(true);\n if (this.state.searchable) this.state.searchTerm = event.key;\n else this.handleTypeahead(event.key);\n }\n return;\n }\n this.handleListKeyDown(event);\n };\n\n handleListKeyDown = (event: KeyboardEvent) => {\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.state.focusRingVisible = true;\n this.state.activeIndex = moveChoiceIndex(this.state.options, this.state.activeIndex, 1);\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.state.focusRingVisible = true;\n this.state.activeIndex = moveChoiceIndex(this.state.options, this.state.activeIndex, -1);\n break;\n case 'Home':\n event.preventDefault();\n this.state.focusRingVisible = true;\n this.state.activeIndex = enabledChoiceIndexes(this.state.options)[0] ?? -1;\n break;\n case 'End': {\n event.preventDefault();\n this.state.focusRingVisible = true;\n const enabled = enabledChoiceIndexes(this.state.options);\n this.state.activeIndex = enabled[enabled.length - 1] ?? -1;\n break;\n }\n case 'Enter':\n case ' ': {\n if (event.key === ' ' && this.state.searchable && event.target === this.searchEl) break;\n event.preventDefault();\n const option = this.state.options[this.state.activeIndex];\n if (option) this.state.selectOption(option);\n break;\n }\n case 'Escape':\n event.preventDefault();\n this.closePopup(true);\n break;\n case 'Tab':\n this.closePopup();\n break;\n default:\n if (!this.state.searchable && this.isTypeaheadKey(event)) {\n this.handleTypeahead(event.key);\n }\n }\n };\n\n private isTypeaheadKey(event: KeyboardEvent) {\n return event.key.length === 1 && !event.metaKey && !event.ctrlKey && !event.altKey;\n }\n\n private handleTypeahead(key: string) {\n if (this.typeaheadTimer) clearTimeout(this.typeaheadTimer);\n this.state.focusRingVisible = true;\n const normalized = key.toLocaleLowerCase();\n const repeatedCharacter =\n this.typeahead.length > 0 && [...this.typeahead].every(character => character === normalized);\n this.typeahead = repeatedCharacter ? normalized : `${this.typeahead}${normalized}`;\n const match = findChoiceTypeaheadMatch(\n this.state.options,\n this.typeahead,\n this.state.activeIndex\n );\n if (match >= 0) this.state.activeIndex = match;\n const resetMs = resolveCssTimeMs(\n TOKEN_DEFAULTS.animationDurationMedium1,\n TOKEN_DEFAULTS.animationDurationMedium1\n );\n this.typeaheadTimer = setTimeout(() => {\n this.typeahead = '';\n this.typeaheadTimer = null;\n }, resetMs);\n }\n\n private scrollActiveOptionIntoView() {\n if (!this.state.open || !this.activeOptionId) return;\n this.state.host\n .querySelector<HTMLElement>(`#${this.activeOptionId}`)\n ?.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n }\n\n private bindPopupListeners() {\n this.unbindPopupListeners();\n this.outsideHandler = event => {\n if (eventIntersectsComposedBoundary(event, this.state.host)) return;\n this.closePopup();\n };\n document.addEventListener('mousedown', this.outsideHandler, true);\n this.position.observe();\n }\n\n private unbindPopupListeners() {\n if (this.outsideHandler) {\n document.removeEventListener('mousedown', this.outsideHandler, true);\n this.outsideHandler = null;\n }\n this.position.unobserve();\n }\n\n private cancelPositionRetry() {\n this.position.cancel();\n }\n\n private schedulePositionUpdate(onReady?: () => void) {\n if (!this.state.open) return;\n this.state.positionReady = false;\n this.position.schedule(onReady);\n }\n\n private updatePosition(): boolean {\n return this.position.update();\n }\n}\n","@import '../../utils/choice-list.css';\n@import '../../utils/control-parts.css';\n@import '../../utils/control-width.css';\n@import '../../utils/field-stack.css';\n@import '../../utils/search-control.css';\n@import '../../utils/select-trigger.css';\n@import '../../utils/table-caption-control.css';\n@import '../../utils/typography.css';\n@import '../../styles/control-elevation.css';\n\n.wrapper--error {\n --ds-interaction-border-width: var(--dimension-stroke-width-018);\n --ds-interaction-border-color: var(--color-border-bold-negative);\n}\n\n.select-popup {\n color: var(--color-foreground-secondary);\n}\n\n.select-option[aria-selected='true'] .ds-choice-item__icon {\n color: var(--color-foreground-primary);\n}\n\n.select-option-row {\n position: relative;\n isolation: isolate;\n}\n\n.select-option-row__action {\n position: absolute;\n top: 50%;\n right: var(--dimension-space-050);\n z-index: var(--dimension-z-index-floating);\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--dimension-radius-half);\n background: var(--color-background-transparent);\n -webkit-backdrop-filter: blur(var(--effect-blur-sm));\n backdrop-filter: blur(var(--effect-blur-sm));\n opacity: 0;\n pointer-events: none;\n transform: translateY(-50%);\n}\n\n.select-option-row:has(:focus-visible) .select-option-row__action,\n.select-option-row--action-open .select-option-row__action,\n.select-option-row--keyboard-active .select-option-row__action {\n opacity: 1;\n pointer-events: auto;\n}\n\n.select-option-row--action-open .select-option::after {\n background: var(--ds-interaction-hover);\n}\n\n.select-option__subtext-actions {\n display: flex;\n align-items: center;\n gap: var(--dimension-space-050);\n min-inline-size: 0;\n color: var(--color-foreground-secondary);\n}\n\n.select-option__subtext-action {\n appearance: none;\n display: inline-flex;\n align-items: center;\n padding: 0;\n border: 0;\n border-radius: var(--dimension-radius-025);\n background: transparent;\n cursor: pointer;\n}\n\n.select-option__subtext-action--negative {\n --ds-text-action-foreground: var(--color-foreground-bold-negative);\n}\n\n.select-option__subtext-action-separator {\n color: var(--color-foreground-tertiary);\n pointer-events: none;\n}\n\n@media (hover: hover) and (pointer: fine) {\n .select-option-row:hover .select-option-row__action {\n opacity: 1;\n pointer-events: auto;\n }\n\n .select-option-row:hover .select-option::after {\n background: var(--ds-interaction-hover);\n }\n}\n\n@media (hover: none) {\n .select-option-row__action {\n opacity: 1;\n pointer-events: auto;\n }\n\n .select-option-row--has-action .ds-choice-item__content {\n padding-inline-end: var(--dimension-size-400);\n }\n}\n\n.error-text {\n width: 100%;\n}\n","import {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n type VNode,\n Watch,\n} from '@stencil/core';\nimport {\n controlWidthClass,\n CONTROL_SUPPORTING_TEXT_VARIANT,\n CONTROL_TEXT_VARIANT,\n DEFAULT_REQUIRED_MESSAGE,\n restoreStringArrayFormState,\n restoreStringFormState,\n setFormControlValue,\n setRepeatedFormControlValue,\n setRequiredValidity,\n type ControlWidth,\n} from '../../utils';\nimport {\n ChoiceActionFooter,\n ChoiceFooter,\n ChoiceOptionRow,\n ChoiceSearch,\n} from '../../utils/choice-list-parts';\nimport {\n choiceBackgroundClassMap,\n choiceListUsesIcons,\n choiceListUsesSubtext,\n enabledChoiceIndexes,\n filterChoiceSections,\n flattenChoiceSections,\n resolveChoiceSections,\n type ChoiceBackground,\n type ChoiceOption,\n type ChoiceSection,\n} from '../../utils/choice-list';\nimport { SelectController } from '../../utils/select-controller';\nimport { observeTableCaptionCompact } from '../../utils/table-caption-compact';\n\nexport type SelectOption = ChoiceOption;\nexport type SelectSection = ChoiceSection;\nexport type SelectBackground = ChoiceBackground;\nexport type SelectSize = 'lg' | 'md' | 'sm' | 'xs';\nexport type SelectWidth = ControlWidth;\nexport type SelectPopupAlign = 'start' | 'end';\nexport type SelectValue = string | string[];\nexport type SelectIndicator = 'down' | 'up-down';\n\nexport interface SelectOptionActionDetail {\n value: string;\n anchorId: string;\n originalEvent: MouseEvent;\n}\n\nexport interface SelectOptionSubtextActionDetail {\n value: string;\n actionValue: string;\n originalEvent: MouseEvent;\n}\n\nconst ICON_SIZE: Record<SelectSize, 'lg' | 'md' | 'sm' | 'xs'> = {\n lg: 'lg',\n md: 'md',\n sm: 'sm',\n xs: 'xs',\n};\n\nconst OPTION_ACTION_SIZE: Record<SelectSize, 'md' | 'sm' | 'xs'> = {\n lg: 'md',\n md: 'sm',\n sm: 'xs',\n xs: 'xs',\n};\n\nlet selectId = 0;\n\n@Component({\n tag: 'ds-select',\n styleUrl: 'Select.css',\n scoped: true,\n formAssociated: true,\n})\nexport class Select {\n @Element() el!: HTMLElement;\n @AttachInternals() internals!: ElementInternals;\n\n /** Flat choices. Assign arrays through the JavaScript property. */\n @Prop() options: SelectOption[] = [];\n /** Grouped choices; takes precedence over options. Assign through JavaScript. */\n @Prop() sections: SelectSection[] = [];\n /** Enable independent multi-value selection while keeping the popup open. */\n @Prop({ reflect: true }) multiple: boolean = false;\n /** Selected scalar or array value according to `multiple`. */\n @Prop({ mutable: true }) value: SelectValue = '';\n /** Controlled popup visibility. */\n @Prop({ mutable: true, reflect: true }) open: boolean = false;\n /** Native form field name. */\n @Prop({ reflect: true }) name: string | undefined;\n /** Native disabled state. */\n @Prop({ reflect: true }) disabled: boolean = false;\n /** Require one valid selected value. */\n @Prop({ reflect: true }) required: boolean = false;\n /** Validation message used when required is missing. */\n @Prop() requiredMessage: string = DEFAULT_REQUIRED_MESSAGE;\n /** Trigger text shown when no valid value is selected. */\n @Prop() placeholder: string = 'Select';\n /** Optional scalar-mode trigger text that does not change the selected option label. */\n @Prop() triggerLabel: string | undefined;\n /** Present triggerLabel with placeholder emphasis while preserving the selected value. */\n @Prop() triggerLabelPlaceholder: boolean = false;\n /** Show a supplemental notification dot beside the trigger label. */\n @Prop() dot: boolean = false;\n /** Control density. */\n @Prop() size: SelectSize = 'md';\n /** Width fit — hug content (default) or fill the parent. */\n @Prop() width: SelectWidth = 'hug';\n /** Align the popup's choice edge to the trigger start or end edge. */\n @Prop() popupAlign: SelectPopupAlign = 'start';\n /** Explicit collision owner; otherwise the nearest data-ds-overlay-boundary ancestor is used. */\n @Prop() boundary: HTMLElement | undefined;\n /** Shared inactive treatment; removes interaction and form submission. */\n @Prop() isInactive: boolean = false;\n /** Replace the prefix with a loader and disable option interaction. */\n @Prop() isLoading: boolean = false;\n /** Show the selected interaction fill when a valid value exists. */\n @Prop() activeFill: boolean = true;\n /**\n * Opt into table-caption icon-only chrome below 900px. The trigger omits its\n * visible label and chevron; keep an accessible name via aria-label.\n */\n @Prop({ reflect: true }) collapseLabel: boolean = false;\n /** Show the surface-aware inset border, including focused and invalid strokes. */\n @Prop() hasBorder: boolean = true;\n /** Optional trigger prefix icon name. */\n @Prop() icon: string | undefined;\n /** Trailing choice indicator. Use up-down for compact value steppers such as page size. */\n @Prop() indicator: SelectIndicator = 'down';\n /** Show the clear footer action when a value exists. */\n @Prop() allowClear: boolean = true;\n /** Localized clear action label. */\n @Prop() clearLabel: string = 'Clear';\n /** Localized noun displayed after the selected count in multiple mode. */\n @Prop() selectedLabel: string = 'selected';\n /** Optional text action shown in the popup footer instead of the clear action. */\n @Prop() footerActionLabel: string | undefined;\n /** Show immediate local filtering over option labels, subtext, and section headings. */\n @Prop() searchable: boolean = false;\n /** Localized search-field placeholder and accessible name. */\n @Prop() searchPlaceholder: string = 'Search';\n /** Localized empty-filter result text. */\n @Prop() noResultsText: string = 'No results found';\n /** Accessible loading status label. */\n @Prop() loadingLabel: string = 'Loading';\n /** Actual parent surface context; omit on primary and secondary surfaces. */\n @Prop() background: SelectBackground | undefined;\n /** Show invalid visual state. */\n @Prop() error: boolean = false;\n /** Error text rendered below the trigger when error is true. */\n @Prop() errorMessage: string | undefined;\n /** ID applied to the internal combobox trigger for external labels. */\n @Prop() inputId: string | undefined;\n /** Direct accessible name when no external label is available. */\n @Prop({ attribute: 'aria-label' }) ariaLabel: string | null = null;\n /** IDs of elements that label the combobox. */\n @Prop({ attribute: 'aria-labelledby' }) ariaLabelledby: string | undefined;\n /** Additional IDs that describe the combobox. */\n @Prop({ attribute: 'aria-describedby' }) ariaDescribedby: string | undefined;\n\n /** Emitted after selection or clearing with the next scalar or array value. */\n @Event() dsChange!: EventEmitter<SelectValue>;\n /** Emitted after the footer clear action. */\n @Event() dsClear!: EventEmitter<void>;\n /** Emitted whenever popup visibility changes. */\n @Event() dsOpenChange!: EventEmitter<boolean>;\n /** Emitted when the optional popup footer action is activated. */\n @Event() dsFooterAction!: EventEmitter<void>;\n /** Emitted when an option's contextual ellipsis action is activated. */\n @Event() dsOptionAction!: EventEmitter<SelectOptionActionDetail>;\n /** Emitted when an option's supporting text action is activated. */\n @Event() dsOptionSubtextAction!: EventEmitter<SelectOptionSubtextActionDetail>;\n\n @State() private activeIndex = -1;\n @State() private searchTerm = '';\n @State() private formDisabled = false;\n @State() private position = { x: 0, y: 0 };\n @State() private positionReady = false;\n @State() private focusRingVisible = false;\n @State() private compactFooterSummary = false;\n @State() private captionCompact = false;\n\n private readonly generatedId = `ds-select-${++selectId}`;\n private readonly listboxId = `${this.generatedId}-listbox`;\n private readonly errorId = `${this.generatedId}-error`;\n private initialValue: SelectValue = '';\n private readonly controller = this.createController();\n private footerContentElement?: HTMLDivElement;\n private footerSummaryMeasureElement?: HTMLElement;\n private footerClearElement?: HTMLButtonElement;\n private footerResizeObserver?: ResizeObserver;\n private observedFooterContentElement?: HTMLDivElement;\n private footerMeasurementFrame?: number;\n private captionCompactDisconnect: (() => void) | undefined;\n private hasLoaded = false;\n\n private createController() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias -- adapter getters preserve reactive component ownership without inheritance.\n const owner = this;\n return new SelectController<SelectOption>({\n get host() {\n return owner.el;\n },\n generatedId: owner.generatedId,\n get options() {\n return owner.visibleOptions;\n },\n get searchable() {\n return owner.searchable;\n },\n get isLoading() {\n return owner.isLoading;\n },\n get isDisabled() {\n return owner.isDisabled;\n },\n get preferredIndex() {\n if (owner.multiple) return -1;\n return owner.visibleOptions.findIndex(\n option => option.value === owner.scalarValue && !option.isInactive\n );\n },\n get popupAlign() {\n return owner.popupAlign;\n },\n get boundary() {\n return owner.boundary;\n },\n get open() {\n return owner.open;\n },\n set open(value) {\n owner.open = value;\n },\n get activeIndex() {\n return owner.activeIndex;\n },\n set activeIndex(value) {\n owner.activeIndex = value;\n },\n get searchTerm() {\n return owner.searchTerm;\n },\n set searchTerm(value) {\n owner.searchTerm = value;\n },\n get focusRingVisible() {\n return owner.focusRingVisible;\n },\n set focusRingVisible(value) {\n owner.focusRingVisible = value;\n },\n get position() {\n return owner.position;\n },\n set position(value) {\n owner.position = value;\n },\n get positionReady() {\n return owner.positionReady;\n },\n set positionReady(value) {\n owner.positionReady = value;\n },\n selectOption: option => owner.selectOption(option),\n });\n }\n\n componentWillLoad() {\n this.value = this.normalizeValueForMode(this.value);\n this.initialValue = Array.isArray(this.value) ? [...this.value] : this.value;\n this.syncFormValue();\n }\n\n componentDidLoad() {\n this.hasLoaded = true;\n this.controller.connect();\n this.observeFooterContent();\n this.syncCaptionCompactObserver();\n }\n\n connectedCallback() {\n if (!this.hasLoaded) return;\n this.controller.connect();\n this.observeFooterContent();\n this.syncCaptionCompactObserver();\n }\n\n componentDidRender() {\n this.observeFooterContent();\n this.scheduleFooterSummaryMeasurement();\n }\n\n disconnectedCallback() {\n this.controller.disconnect();\n this.footerResizeObserver?.disconnect();\n this.observedFooterContentElement = undefined;\n if (this.footerMeasurementFrame !== undefined) {\n cancelAnimationFrame(this.footerMeasurementFrame);\n this.footerMeasurementFrame = undefined;\n }\n this.disconnectCaptionCompactObserver();\n }\n\n @Watch('collapseLabel')\n onCollapseLabelChange() {\n this.syncCaptionCompactObserver();\n }\n\n @Watch('value')\n @Watch('multiple')\n @Watch('disabled')\n @Watch('isInactive')\n @Watch('required')\n @Watch('name')\n @Watch('options')\n @Watch('sections')\n syncFormValue() {\n if (\n (this.multiple && !Array.isArray(this.value)) ||\n (!this.multiple && Array.isArray(this.value))\n ) {\n this.value = this.normalizeValueForMode(this.value);\n }\n const inactive = this.isDisabled;\n if (this.multiple) {\n const values = this.resolvedValues;\n setRepeatedFormControlValue(this.internals, this.name, values, { inactive });\n } else {\n const value = this.hasSelection ? this.scalarValue : '';\n setFormControlValue(this.internals, value, { inactive });\n }\n const missing = this.required && !inactive && !this.hasSelection;\n setRequiredValidity(this.internals, missing, this.requiredMessage);\n this.controller.optionsChanged();\n }\n\n @Watch('isLoading')\n onLoadingChange() {\n this.controller.loadingChanged();\n }\n\n @Watch('popupAlign')\n @Watch('boundary')\n onPopupAlignChange() {\n this.controller.positionChanged();\n }\n\n @Watch('open')\n onOpenChange(open: boolean) {\n this.dsOpenChange.emit(open);\n this.controller.openChanged(open);\n }\n\n @Watch('searchTerm')\n onSearchTermChange() {\n this.controller.searchChanged();\n }\n\n @Watch('activeIndex')\n onActiveIndexChange() {\n this.controller.activeIndexChanged();\n }\n\n formDisabledCallback(disabled: boolean) {\n this.formDisabled = disabled;\n this.syncFormValue();\n }\n\n formResetCallback() {\n this.value = this.normalizeValueForMode(this.initialValue);\n this.closePopup();\n }\n\n formStateRestoreCallback(state: string | File | FormData | null) {\n if (!this.multiple) {\n this.value = restoreStringFormState(state);\n return;\n }\n this.value = restoreStringArrayFormState(state);\n }\n\n @Method()\n async setFocus() {\n this.controller.setFocus();\n }\n\n private get isDisabled(): boolean {\n return this.disabled || this.isInactive || this.formDisabled;\n }\n\n private normalizeValueForMode(value: SelectValue): SelectValue {\n if (this.multiple) {\n return Array.isArray(value) ? [...value] : value ? [value] : [];\n }\n return Array.isArray(value) ? (value[0] ?? '') : value;\n }\n\n private get allSections(): SelectSection[] {\n return resolveChoiceSections(this.options, this.sections);\n }\n\n private get allOptions(): SelectOption[] {\n return flattenChoiceSections(this.allSections);\n }\n\n private get visibleSections(): SelectSection[] {\n return this.searchable\n ? filterChoiceSections(this.allSections, this.searchTerm)\n : this.allSections;\n }\n\n private get visibleOptions(): SelectOption[] {\n return flattenChoiceSections(this.visibleSections);\n }\n\n private get scalarValue(): string {\n return typeof this.value === 'string' ? this.value : '';\n }\n\n private get resolvedValues(): string[] {\n if (!this.multiple || !Array.isArray(this.value)) return [];\n const valid = new Set(this.allOptions.map(option => option.value));\n return [...new Set(this.value.filter(value => valid.has(value)))];\n }\n\n private get selectedOption(): SelectOption | undefined {\n if (this.multiple) return undefined;\n return this.allOptions.find(option => option.value === this.scalarValue);\n }\n\n private get hasSelection(): boolean {\n return this.multiple ? this.resolvedValues.length > 0 : Boolean(this.selectedOption);\n }\n\n private get activeOptionId(): string | undefined {\n return this.controller.activeOptionId;\n }\n\n private get popupRole(): 'listbox' | 'grid' {\n return this.allOptions.some(option => Boolean(option.action)) ? 'grid' : 'listbox';\n }\n\n private observeFooterContent() {\n const content =\n this.open && this.multiple && this.hasSelection ? this.footerContentElement : undefined;\n if (!content?.isConnected) {\n this.footerResizeObserver?.disconnect();\n this.observedFooterContentElement = undefined;\n return;\n }\n if (this.observedFooterContentElement === content) return;\n\n this.footerResizeObserver?.disconnect();\n if (typeof ResizeObserver !== 'undefined') {\n this.footerResizeObserver = new ResizeObserver(() => this.scheduleFooterSummaryMeasurement());\n this.footerResizeObserver.observe(content);\n }\n this.observedFooterContentElement = content;\n }\n\n private scheduleFooterSummaryMeasurement() {\n if (\n !this.open ||\n !this.multiple ||\n !this.hasSelection ||\n this.footerMeasurementFrame !== undefined\n ) {\n return;\n }\n this.footerMeasurementFrame = requestAnimationFrame(() => {\n this.footerMeasurementFrame = undefined;\n this.measureFooterSummary();\n });\n }\n\n private measureFooterSummary() {\n const content = this.footerContentElement;\n const summary = this.footerSummaryMeasureElement;\n const clear = this.footerClearElement;\n if (!content?.isConnected || !summary?.isConnected || !clear?.isConnected) return;\n\n const styles = getComputedStyle(content);\n const innerWidth =\n content.clientWidth -\n Number.parseFloat(styles.paddingInlineStart || '0') -\n Number.parseFloat(styles.paddingInlineEnd || '0');\n const requiredWidth =\n summary.getBoundingClientRect().width +\n clear.getBoundingClientRect().width +\n Number.parseFloat(styles.columnGap || '0');\n const nextCompact = requiredWidth > innerWidth + 0.5;\n if (nextCompact !== this.compactFooterSummary) {\n this.compactFooterSummary = nextCompact;\n }\n }\n\n private closePopup(restoreFocus = false) {\n this.controller.closePopup(restoreFocus);\n }\n\n private openPopup(focusVisible: boolean, edge?: 'first' | 'last') {\n this.controller.openPopup(focusVisible, edge);\n }\n\n private selectOption(option: SelectOption) {\n if (option.isInactive || this.isLoading) return;\n if (this.multiple) {\n const current = this.resolvedValues;\n const next = current.includes(option.value)\n ? current.filter(value => value !== option.value)\n : [...current, option.value];\n this.value = next;\n this.dsChange.emit([...next]);\n return;\n }\n this.value = option.value;\n this.dsChange.emit(option.value);\n this.controller.closePopup(true);\n }\n\n private clearSelection = (event: Event) => {\n event.preventDefault();\n event.stopPropagation();\n this.value = this.multiple ? [] : '';\n this.dsChange.emit(this.multiple ? [] : '');\n this.dsClear.emit();\n if (!this.multiple) {\n const enabled = enabledChoiceIndexes(this.visibleOptions);\n this.activeIndex = enabled[0] ?? -1;\n }\n this.controller.focusSearchOrTrigger();\n };\n\n private activateFooterAction = (event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n this.dsFooterAction.emit();\n this.closePopup();\n };\n\n private readonly handleListKeyDown = this.controller.handleListKeyDown;\n private readonly handleTriggerKeyDown = this.controller.handleTriggerKeyDown;\n\n private renderOption(\n option: SelectOption,\n index: number,\n usesIcons: boolean,\n usesSubtext: boolean\n ) {\n const selected = this.multiple\n ? this.resolvedValues.includes(option.value)\n : option.value === this.scalarValue;\n const active = index === this.activeIndex;\n const actionId = `${this.generatedId}-option-action-${index}`;\n return (\n <ChoiceOptionRow\n size={this.size}\n id={`${this.generatedId}-option-${index}`}\n option={option}\n selected={selected}\n active={active}\n focusRingVisible={this.focusRingVisible}\n usesSubtext={usesSubtext}\n actionOpen={option.action?.expanded}\n popupRole={this.popupRole}\n leading={\n this.multiple ? (\n <span\n class=\"ds-choice-item__icon ds-control-icon-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\n <ds-checkbox\n class=\"select-option__checkbox\"\n label=\"\"\n size={this.size}\n checked={selected}\n presentation\n />\n </span>\n ) : usesIcons && option.icon ? (\n <span\n class=\"ds-choice-item__icon ds-control-icon-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\n <ds-icon name={option.icon} size={this.size} color=\"inherit\" />\n </span>\n ) : undefined\n }\n supporting={\n option.subtextActions?.length ? (\n <span class=\"ds-choice-item__subtext ds-control-label-box select-option__subtext-actions\">\n {option.subtextActions.map((action, actionIndex) => [\n actionIndex > 0 ? (\n <ds-text\n class=\"select-option__subtext-action-separator\"\n as=\"span\"\n variant={CONTROL_SUPPORTING_TEXT_VARIANT[this.size]}\n color=\"inherit\"\n aria-hidden=\"true\"\n >\n ·\n </ds-text>\n ) : null,\n <button\n type=\"button\"\n class={{\n 'select-option__subtext-action': true,\n 'select-option__subtext-action--negative': action.tone === 'negative',\n 'ds-text-action': true,\n 'ds-focus-ring': true,\n }}\n onKeyDown={(event: KeyboardEvent) => event.stopPropagation()}\n onClick={(event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n this.dsOptionSubtextAction.emit({\n value: option.value,\n actionValue: action.value,\n originalEvent: event,\n });\n }}\n >\n <ds-text\n as=\"span\"\n variant={CONTROL_SUPPORTING_TEXT_VARIANT[this.size]}\n color=\"inherit\"\n >\n {action.label}\n </ds-text>\n </button>,\n ])}\n </span>\n ) : undefined\n }\n action={\n option.action ? (\n <ds-tooltip label={option.action.label} side=\"left\" size=\"sm\">\n <ds-button-unfilled\n id={actionId}\n variant=\"icon\"\n size={OPTION_ACTION_SIZE[this.size]}\n icon=\"Ellipses\"\n rounded\n hasBorder={false}\n activeFill={false}\n ariaLabel={option.action.label}\n haspopup=\"menu\"\n controls={option.action.controls}\n expanded={option.action.expanded}\n onKeyDown={event => {\n event.stopPropagation();\n if (event.key === 'Escape' || event.key === 'ArrowLeft') {\n event.preventDefault();\n this.controller.focusSearchOrTrigger();\n }\n }}\n onDsClick={(event: CustomEvent<MouseEvent>) => {\n event.stopPropagation();\n this.dsOptionAction.emit({\n value: option.value,\n anchorId: actionId,\n originalEvent: event.detail,\n });\n }}\n />\n </ds-tooltip>\n ) : undefined\n }\n onHover={() => {\n this.focusRingVisible = false;\n this.activeIndex = index;\n }}\n onSelect={() => this.selectOption(option)}\n />\n );\n }\n\n private get captionIconOnly(): boolean {\n return this.collapseLabel && this.captionCompact && Boolean(this.icon || this.isLoading);\n }\n\n private syncCaptionCompactObserver(): void {\n this.disconnectCaptionCompactObserver();\n if (!this.collapseLabel) {\n if (this.captionCompact) this.captionCompact = false;\n return;\n }\n this.captionCompactDisconnect = observeTableCaptionCompact(this.el, compact => {\n if (this.captionCompact !== compact) this.captionCompact = compact;\n });\n }\n\n private disconnectCaptionCompactObserver(): void {\n this.captionCompactDisconnect?.();\n this.captionCompactDisconnect = undefined;\n }\n\n private renderCaptionTooltip(trigger: VNode, label: string): VNode {\n if (!this.collapseLabel) return trigger;\n return (\n <ds-tooltip label={label} side=\"top\" size=\"sm\">\n {trigger}\n </ds-tooltip>\n );\n }\n\n render() {\n const inactive = this.isDisabled;\n const showPlaceholder = !this.hasSelection;\n const count = this.resolvedValues.length;\n const label = this.multiple\n ? `${this.placeholder}${count > 0 ? ` · ${count}` : ''}`\n : showPlaceholder\n ? this.placeholder\n : (this.triggerLabel ?? this.selectedOption?.label);\n const textVariant = CONTROL_TEXT_VARIANT[this.size];\n const iconSize = ICON_SIZE[this.size];\n const usesOptionIcons = !this.multiple && choiceListUsesIcons(this.allOptions);\n const usesOptionSubtext = choiceListUsesSubtext(this.allOptions);\n const showError = this.error && Boolean(this.errorMessage);\n const describedBy =\n [this.ariaDescribedby, showError ? this.errorId : undefined].filter(Boolean).join(' ') ||\n undefined;\n const popupStyle = {\n position: 'fixed',\n left: '0',\n top: '0',\n transform: `translate(${Math.round(this.position.x)}px, ${Math.round(this.position.y)}px)`,\n zIndex: 'var(--dimension-z-index-floating)',\n visibility: this.positionReady ? 'visible' : 'hidden',\n };\n let flatIndex = 0;\n\n return (\n <Host\n class={{\n 'select-host': true,\n 'ds-select-trigger-host': true,\n 'select-host--multiple': this.multiple,\n 'ds-field-stack': true,\n 'ds-control-inactive': inactive,\n [`ds-control--${this.size}`]: true,\n 'ds-table-caption-control': this.collapseLabel,\n 'ds-table-caption-control--compact': this.captionIconOnly,\n ...controlWidthClass(this.width),\n [`select-host--background-${this.background}`]: !!this.background,\n [`ds-select-trigger-host--background-${this.background}`]: !!this.background,\n }}\n >\n {this.renderCaptionTooltip(\n <button\n ref={element => {\n this.controller.setTriggerElement((element as HTMLButtonElement) ?? null);\n }}\n id={this.inputId ?? this.generatedId}\n type=\"button\"\n class={{\n trigger: true,\n 'ds-control-frame': true,\n 'ds-focus-ring-inset': true,\n 'ds-interaction-fill': true,\n 'ds-interaction-fill--selected': !inactive && this.activeFill && this.hasSelection,\n 'trigger--expanded': !inactive && this.open,\n 'trigger--bordered': this.hasBorder,\n 'trigger--placeholder': showPlaceholder && !this.multiple,\n 'trigger--has-value': this.hasSelection,\n 'trigger--label-placeholder':\n !this.multiple && Boolean(this.triggerLabel) && this.triggerLabelPlaceholder,\n 'wrapper--error': this.hasBorder && this.error,\n [`ds-control--${this.size}`]: true,\n ...choiceBackgroundClassMap(this.background),\n }}\n disabled={inactive}\n role=\"combobox\"\n aria-haspopup={this.popupRole}\n aria-expanded={String(this.open)}\n aria-controls={this.open ? this.listboxId : undefined}\n aria-activedescendant={this.open && !this.searchable ? this.activeOptionId : undefined}\n aria-label={this.ariaLabel ?? (this.captionIconOnly ? label : undefined)}\n aria-labelledby={this.ariaLabelledby}\n aria-describedby={describedBy}\n aria-invalid={this.error ? 'true' : undefined}\n aria-required={this.required || undefined}\n aria-busy={this.isLoading ? 'true' : undefined}\n onClick={() => (this.open ? this.closePopup() : this.openPopup(false))}\n onKeyDown={event => {\n const action = this.visibleOptions[this.activeIndex]?.action;\n if (\n this.open &&\n action &&\n (event.key === 'ArrowRight' || (event.key === 'F10' && event.shiftKey))\n ) {\n event.preventDefault();\n document\n .getElementById(`${this.generatedId}-option-action-${this.activeIndex}`)\n ?.querySelector<HTMLElement>('button')\n ?.focus();\n return;\n }\n this.handleTriggerKeyDown(event);\n }}\n >\n {(this.icon || this.isLoading) && (\n <span\n class=\"trigger__prefix ds-control-icon-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\n {this.isLoading ? (\n <ds-loader size={iconSize} color=\"inherit\" />\n ) : (\n <ds-icon name={this.icon} size={iconSize} color=\"inherit\" />\n )}\n </span>\n )}\n {this.captionIconOnly ? null : (\n <span\n class={{\n 'trigger__label-box': true,\n 'ds-interaction-fill__content': true,\n }}\n >\n <span\n class={{\n 'trigger__label-content': true,\n 'ds-control-label-box': true,\n 'ds-control-label-dot': this.dot,\n 'trigger__label-content--dot': this.dot,\n }}\n >\n <ds-text\n class=\"trigger__label\"\n as=\"span\"\n variant={textVariant}\n color=\"inherit\"\n lineTruncation={1}\n >\n {label}\n </ds-text>\n {this.dot && (\n <ds-badge\n class=\"trigger__dot ds-control-label-dot__badge\"\n variant=\"dot\"\n hasRing={false}\n label=\"\"\n aria-hidden=\"true\"\n />\n )}\n </span>\n </span>\n )}\n {this.captionIconOnly ? null : (\n <span\n class=\"trigger__chevron ds-control-icon-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\n <ds-icon\n name={this.indicator === 'up-down' ? 'ChevronUpDown' : 'ChevronDown'}\n size={iconSize}\n color=\"inherit\"\n />\n </span>\n )}\n </button>,\n this.captionIconOnly ? (this.ariaLabel?.trim() || this.placeholder) : ''\n )}\n\n {this.open && (\n <div\n popover=\"manual\"\n ref={element => {\n this.controller.setPopupElement((element as HTMLDivElement) ?? null);\n }}\n class=\"select-popup ds-choice-popup\"\n style={popupStyle}\n >\n {this.searchable && (\n <ChoiceSearch\n size={this.size}\n value={this.searchTerm}\n placeholder={this.searchPlaceholder}\n controls={this.listboxId}\n activeDescendant={this.activeOptionId}\n inputRef={this.controller.setSearchElement}\n clearLabel={this.clearLabel}\n onValueChange={value => {\n this.searchTerm = value;\n }}\n onKeyDown={event => this.handleListKeyDown(event)}\n />\n )}\n <div\n id={this.listboxId}\n class=\"ds-choice-list\"\n role={this.popupRole}\n aria-multiselectable={this.multiple ? 'true' : undefined}\n aria-label={this.ariaLabel ?? this.placeholder}\n aria-busy={this.isLoading ? 'true' : undefined}\n >\n {this.isLoading ? (\n <div\n class=\"ds-choice-loading ds-empty-region\"\n role={this.popupRole === 'grid' ? 'row' : 'option'}\n aria-selected=\"false\"\n aria-disabled=\"true\"\n aria-label={this.loadingLabel}\n aria-live=\"polite\"\n >\n {this.popupRole === 'grid' ? (\n <span role=\"gridcell\">\n <ds-loader size={this.size} color=\"inherit\" />\n </span>\n ) : (\n <ds-loader size={this.size} color=\"inherit\" />\n )}\n </div>\n ) : this.visibleOptions.length === 0 ? (\n <div\n class=\"ds-choice-empty ds-empty-region\"\n role={this.popupRole === 'grid' ? 'row' : 'option'}\n aria-selected=\"false\"\n aria-disabled=\"true\"\n aria-label={this.noResultsText}\n aria-live=\"polite\"\n >\n {this.popupRole === 'grid' ? (\n <span role=\"gridcell\">\n <ds-empty-state body={this.noResultsText} />\n </span>\n ) : (\n <ds-empty-state body={this.noResultsText} />\n )}\n </div>\n ) : (\n this.visibleSections.map((section, sectionIndex) => (\n <div\n class={{\n 'ds-choice-section': true,\n 'ds-chrome-column': true,\n 'ds-chrome-space--sm': true,\n 'ds-choice-section--divided': !!section.divider,\n 'ds-choice-section--headed-after-first':\n sectionIndex > 0 && Boolean(section.header),\n }}\n role={\n this.popupRole === 'grid' ? 'rowgroup' : section.header ? 'group' : undefined\n }\n aria-label={section.header}\n >\n {section.header && this.popupRole === 'grid' ? (\n <ds-text\n class={`ds-choice-section__header ds-control-section-heading ds-control--${this.size}`}\n as=\"span\"\n variant={CONTROL_SUPPORTING_TEXT_VARIANT[this.size]}\n emphasis\n color=\"primary\"\n role=\"row\"\n >\n <span class=\"ds-choice-section__header-label\" role=\"gridcell\">\n {section.header}\n </span>\n </ds-text>\n ) : section.header ? (\n <ds-text\n class={`ds-choice-section__header ds-control-section-heading ds-control--${this.size}`}\n as=\"span\"\n variant={CONTROL_SUPPORTING_TEXT_VARIANT[this.size]}\n emphasis\n color=\"primary\"\n aria-hidden=\"true\"\n >\n <span class=\"ds-choice-section__header-label\">{section.header}</span>\n </ds-text>\n ) : null}\n {section.options.map(option =>\n this.renderOption(option, flatIndex++, usesOptionIcons, usesOptionSubtext)\n )}\n </div>\n ))\n )}\n </div>\n {this.footerActionLabel && !this.isLoading ? (\n <ChoiceActionFooter\n size={this.size}\n label={this.footerActionLabel}\n onAction={this.activateFooterAction}\n />\n ) : this.allowClear && this.hasSelection && !this.isLoading ? (\n <ChoiceFooter\n size={this.size}\n summary={this.multiple ? `${count} ${this.selectedLabel}` : undefined}\n compactSummary={this.multiple ? String(count) : undefined}\n useCompactSummary={this.compactFooterSummary}\n contentRef={element => {\n this.footerContentElement = element ?? undefined;\n }}\n summaryMeasureRef={element => {\n this.footerSummaryMeasureElement = element ?? undefined;\n }}\n clearRef={element => {\n this.footerClearElement = element ?? undefined;\n }}\n clearLabel={this.clearLabel}\n onClear={this.clearSelection}\n />\n ) : null}\n </div>\n )}\n\n {showError && (\n <ds-text\n class=\"error-text\"\n as=\"div\"\n variant=\"text-body-small\"\n color=\"negative\"\n textId={this.errorId}\n role=\"alert\"\n >\n {this.errorMessage}\n </ds-text>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["SelectController","constructor","state","this","triggerEl","popupEl","searchEl","typeahead","typeaheadTimer","outsideHandler","setTriggerElement","element","setPopupElement","setSearchElement","handleTriggerKeyDown","event","open","includes","key","preventDefault","openPopup","isTypeaheadKey","searchable","searchTerm","handleTypeahead","handleListKeyDown","focusRingVisible","activeIndex","moveChoiceIndex","options","enabledChoiceIndexes","enabled","length","target","option","selectOption","closePopup","position","AnchoredPositionController","getAnchor","getPopup","measure","trigger","popup","isConnected","host","contains","sectionPadding","resolveCssLengthPx","TOKEN_DEFAULTS","space050","style","minWidth","menuWidthXs","choicePopupMinWidth","offsetWidth","align","popupAlign","anchorRect","getBoundingClientRect","popupWidth","popupHeight","offsetHeight","side","sideOffsetPx","alignOffsetPx","resolveChoicePopupAlignOffset","sectionInsetPx","viewportPadPx","viewportWidth","window","innerWidth","viewportHeight","innerHeight","collisionRect","resolveAnchoredOverlayBoundaryRect","boundary","apply","x","y","positionReady","topLayer","activeOptionId","isLoading","generatedId","undefined","connect","openChanged","disconnect","cancelPositionRetry","unbindPopupListeners","clearTimeout","setFocus","focus","optionsChanged","requestAnimationFrame","updatePosition","loadingChanged","positionChanged","bindPopupListeners","schedulePositionUpdate","scrollActiveOptionIntoView","searchChanged","activeIndexChanged","focusVisible","edge","isDisabled","preferredIndex","restoreFocus","focusSearchOrTrigger","metaKey","ctrlKey","altKey","normalized","toLocaleLowerCase","repeatedCharacter","every","character","match","findChoiceTypeaheadMatch","resetMs","resolveCssTimeMs","animationDurationMedium1","setTimeout","querySelector","scrollIntoView","block","inline","eventIntersectsComposedBoundary","document","addEventListener","observe","removeEventListener","unobserve","cancel","onReady","schedule","update","selectCss","ICON_SIZE","lg","md","sm","xs","OPTION_ACTION_SIZE","selectId","Select","__stencil_proxyCustomElement","HTMLElement","registerHost","sections","multiple","value","disabled","required","requiredMessage","DEFAULT_REQUIRED_MESSAGE","placeholder","triggerLabelPlaceholder","dot","size","width","isInactive","activeFill","collapseLabel","hasBorder","indicator","allowClear","clearLabel","selectedLabel","searchPlaceholder","noResultsText","loadingLabel","error","ariaLabel","formDisabled","compactFooterSummary","captionCompact","listboxId","errorId","initialValue","controller","createController","hasLoaded","clearSelection","stopPropagation","dsChange","emit","dsClear","visibleOptions","activateFooterAction","dsFooterAction","owner","el","findIndex","scalarValue","componentWillLoad","normalizeValueForMode","Array","isArray","syncFormValue","componentDidLoad","observeFooterContent","syncCaptionCompactObserver","connectedCallback","componentDidRender","scheduleFooterSummaryMeasurement","disconnectedCallback","footerResizeObserver","observedFooterContentElement","footerMeasurementFrame","cancelAnimationFrame","disconnectCaptionCompactObserver","onCollapseLabelChange","inactive","values","resolvedValues","setRepeatedFormControlValue","internals","name","hasSelection","setFormControlValue","missing","setRequiredValidity","onLoadingChange","onPopupAlignChange","onOpenChange","dsOpenChange","onSearchTermChange","onActiveIndexChange","formDisabledCallback","formResetCallback","formStateRestoreCallback","restoreStringFormState","restoreStringArrayFormState","allSections","resolveChoiceSections","allOptions","flattenChoiceSections","visibleSections","filterChoiceSections","valid","Set","map","filter","has","selectedOption","find","Boolean","popupRole","some","action","content","footerContentElement","ResizeObserver","measureFooterSummary","summary","footerSummaryMeasureElement","clear","footerClearElement","styles","getComputedStyle","clientWidth","Number","parseFloat","paddingInlineStart","paddingInlineEnd","requiredWidth","columnGap","nextCompact","current","next","renderOption","index","usesIcons","usesSubtext","selected","active","actionId","h","ChoiceOptionRow","id","actionOpen","expanded","leading","class","label","checked","presentation","icon","color","supporting","subtextActions","actionIndex","as","variant","CONTROL_SUPPORTING_TEXT_VARIANT","type","tone","onKeyDown","onClick","dsOptionSubtextAction","actionValue","originalEvent","rounded","haspopup","controls","onDsClick","dsOptionAction","anchorId","detail","onHover","onSelect","captionIconOnly","captionCompactDisconnect","observeTableCaptionCompact","compact","renderCaptionTooltip","render","showPlaceholder","count","triggerLabel","textVariant","CONTROL_TEXT_VARIANT","iconSize","usesOptionIcons","choiceListUsesIcons","usesOptionSubtext","choiceListUsesSubtext","showError","errorMessage","describedBy","ariaDescribedby","join","popupStyle","left","top","transform","Math","round","zIndex","visibility","flatIndex","Host","controlWidthClass","background","ref","inputId","choiceBackgroundClassMap","role","String","ariaLabelledby","shiftKey","getElementById","lineTruncation","hasRing","trim","popover","ChoiceSearch","activeDescendant","inputRef","onValueChange","body","section","sectionIndex","divider","header","emphasis","footerActionLabel","ChoiceActionFooter","onAction","ChoiceFooter","compactSummary","useCompactSummary","contentRef","summaryMeasureRef","clearRef","onClear","textId"],"sources":["src/wc/utils/select-controller.ts","src/wc/components/Select/Select.css?tag=ds-select&encapsulation=scoped","src/wc/components/Select/Select.tsx"],"sourcesContent":["import { AnchoredPositionController } from './anchored-position-controller';\nimport {\n enabledChoiceIndexes,\n findChoiceTypeaheadMatch,\n moveChoiceIndex,\n type ChoiceOption,\n} from './choice-list';\nimport { choicePopupMinWidth, resolveChoicePopupAlignOffset } from './choice-popup-alignment';\nimport { resolveCssLengthPx } from './resolve-css-length-px';\nimport { resolveCssTimeMs } from './resolve-css-time-ms';\nimport { TOKEN_DEFAULTS } from './token-defaults';\nimport { eventIntersectsComposedBoundary } from './anchored-overlay-interaction-controller';\nimport { resolveAnchoredOverlayBoundaryRect } from './anchored-overlay-boundary';\n\ntype PopupPosition = { x: number; y: number };\n\nexport interface SelectControllerState<T extends ChoiceOption> {\n readonly host: HTMLElement;\n readonly generatedId: string;\n readonly options: T[];\n readonly searchable: boolean;\n readonly isLoading: boolean;\n readonly isDisabled: boolean;\n readonly preferredIndex: number;\n readonly popupAlign: 'start' | 'end';\n readonly boundary: HTMLElement | undefined;\n open: boolean;\n activeIndex: number;\n searchTerm: string;\n focusRingVisible: boolean;\n position: PopupPosition;\n positionReady: boolean;\n selectOption(option: T): void;\n}\n\n/**\n * Shared single/multiple Select interaction controller.\n *\n * Decorated Stencil state and scalar/array selection remain in each component;\n * this controller owns only popup lifecycle, focus, positioning, typeahead,\n * and listbox keyboard traversal. Anchored placement is delegated to\n * `AnchoredPositionController`; only the choice-cell measurement stays here.\n */\nexport class SelectController<T extends ChoiceOption> {\n private triggerEl: HTMLButtonElement | null = null;\n private popupEl: HTMLDivElement | null = null;\n private searchEl: HTMLInputElement | null = null;\n private typeahead = '';\n private typeaheadTimer: ReturnType<typeof setTimeout> | null = null;\n private outsideHandler: ((event: MouseEvent) => void) | null = null;\n private readonly position: AnchoredPositionController;\n\n constructor(private readonly state: SelectControllerState<T>) {\n this.position = new AnchoredPositionController({\n getAnchor: () => this.triggerEl,\n getPopup: () => this.popupEl,\n measure: (trigger, popup) => {\n if (!this.state.open || !popup.isConnected || !this.state.host.contains(popup)) return null;\n\n const sectionPadding = resolveCssLengthPx(TOKEN_DEFAULTS.space050, TOKEN_DEFAULTS.space050);\n popup.style.minWidth = `max(var(--ds-choice-popup-min-inline-size, ${TOKEN_DEFAULTS.menuWidthXs}), ${choicePopupMinWidth(trigger.offsetWidth, sectionPadding)}px)`;\n\n const align = this.state.popupAlign;\n return {\n anchorRect: trigger.getBoundingClientRect(),\n popupWidth: popup.offsetWidth,\n popupHeight: popup.offsetHeight,\n side: 'bottom',\n align,\n sideOffsetPx: sectionPadding,\n alignOffsetPx: resolveChoicePopupAlignOffset({\n align,\n alignOffsetPx: 0,\n sectionInsetPx: sectionPadding,\n }),\n viewportPadPx: sectionPadding,\n viewportWidth: window.innerWidth,\n viewportHeight: window.innerHeight,\n collisionRect: resolveAnchoredOverlayBoundaryRect(trigger, this.state.boundary),\n };\n },\n apply: ({ x, y }) => {\n this.state.position = { x, y };\n this.state.positionReady = true;\n },\n topLayer: true,\n });\n }\n\n get activeOptionId(): string | undefined {\n return !this.state.isLoading && this.state.activeIndex >= 0\n ? `${this.state.generatedId}-option-${this.state.activeIndex}`\n : undefined;\n }\n\n setTriggerElement = (element: HTMLButtonElement | null) => {\n this.triggerEl = element;\n };\n\n setPopupElement = (element: HTMLDivElement | null) => {\n this.popupEl = element;\n };\n\n setSearchElement = (element: HTMLInputElement | null) => {\n this.searchEl = element;\n };\n\n connect() {\n if (this.state.open) this.openChanged(true);\n }\n\n disconnect() {\n this.cancelPositionRetry();\n this.unbindPopupListeners();\n if (this.typeaheadTimer) clearTimeout(this.typeaheadTimer);\n }\n\n setFocus() {\n this.triggerEl?.focus();\n }\n\n optionsChanged() {\n if (!this.state.open) return;\n const enabled = enabledChoiceIndexes(this.state.options);\n if (!enabled.includes(this.state.activeIndex)) this.state.activeIndex = enabled[0] ?? -1;\n requestAnimationFrame(() => this.updatePosition());\n }\n\n loadingChanged() {\n if (this.state.open) requestAnimationFrame(() => this.updatePosition());\n }\n\n positionChanged() {\n if (this.state.open) requestAnimationFrame(() => this.updatePosition());\n }\n\n openChanged(open: boolean) {\n if (open) {\n this.bindPopupListeners();\n this.schedulePositionUpdate(() => {\n this.scrollActiveOptionIntoView();\n if (this.state.searchable) this.searchEl?.focus();\n });\n return;\n }\n this.cancelPositionRetry();\n this.unbindPopupListeners();\n this.state.searchTerm = '';\n this.state.positionReady = false;\n }\n\n searchChanged() {\n this.state.activeIndex = enabledChoiceIndexes(this.state.options)[0] ?? -1;\n requestAnimationFrame(() => {\n this.updatePosition();\n this.scrollActiveOptionIntoView();\n });\n }\n\n activeIndexChanged() {\n requestAnimationFrame(() => this.scrollActiveOptionIntoView());\n }\n\n openPopup(focusVisible: boolean, edge?: 'first' | 'last') {\n if (this.state.isDisabled || (!this.state.options.length && !this.state.isLoading)) return;\n const enabled = enabledChoiceIndexes(this.state.options);\n this.state.activeIndex =\n edge === 'last'\n ? (enabled[enabled.length - 1] ?? -1)\n : this.state.preferredIndex >= 0\n ? this.state.preferredIndex\n : (enabled[0] ?? -1);\n this.state.focusRingVisible = focusVisible;\n this.state.open = true;\n }\n\n closePopup(restoreFocus = false) {\n if (!this.state.open) return;\n this.state.open = false;\n if (restoreFocus) requestAnimationFrame(() => this.triggerEl?.focus());\n }\n\n focusSearchOrTrigger() {\n requestAnimationFrame(() =>\n this.state.searchable ? this.searchEl?.focus() : this.triggerEl?.focus()\n );\n }\n\n handleTriggerKeyDown = (event: KeyboardEvent) => {\n if (!this.state.open) {\n if (['ArrowDown', 'ArrowUp', 'Enter', ' '].includes(event.key)) {\n event.preventDefault();\n this.openPopup(true, event.key === 'ArrowUp' ? 'last' : 'first');\n } else if (this.isTypeaheadKey(event)) {\n event.preventDefault();\n this.openPopup(true);\n if (this.state.searchable) this.state.searchTerm = event.key;\n else this.handleTypeahead(event.key);\n }\n return;\n }\n this.handleListKeyDown(event);\n };\n\n handleListKeyDown = (event: KeyboardEvent) => {\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.state.focusRingVisible = true;\n this.state.activeIndex = moveChoiceIndex(this.state.options, this.state.activeIndex, 1);\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.state.focusRingVisible = true;\n this.state.activeIndex = moveChoiceIndex(this.state.options, this.state.activeIndex, -1);\n break;\n case 'Home':\n event.preventDefault();\n this.state.focusRingVisible = true;\n this.state.activeIndex = enabledChoiceIndexes(this.state.options)[0] ?? -1;\n break;\n case 'End': {\n event.preventDefault();\n this.state.focusRingVisible = true;\n const enabled = enabledChoiceIndexes(this.state.options);\n this.state.activeIndex = enabled[enabled.length - 1] ?? -1;\n break;\n }\n case 'Enter':\n case ' ': {\n if (event.key === ' ' && this.state.searchable && event.target === this.searchEl) break;\n event.preventDefault();\n const option = this.state.options[this.state.activeIndex];\n if (option) this.state.selectOption(option);\n break;\n }\n case 'Escape':\n event.preventDefault();\n this.closePopup(true);\n break;\n case 'Tab':\n this.closePopup();\n break;\n default:\n if (!this.state.searchable && this.isTypeaheadKey(event)) {\n this.handleTypeahead(event.key);\n }\n }\n };\n\n private isTypeaheadKey(event: KeyboardEvent) {\n return event.key.length === 1 && !event.metaKey && !event.ctrlKey && !event.altKey;\n }\n\n private handleTypeahead(key: string) {\n if (this.typeaheadTimer) clearTimeout(this.typeaheadTimer);\n this.state.focusRingVisible = true;\n const normalized = key.toLocaleLowerCase();\n const repeatedCharacter =\n this.typeahead.length > 0 && [...this.typeahead].every(character => character === normalized);\n this.typeahead = repeatedCharacter ? normalized : `${this.typeahead}${normalized}`;\n const match = findChoiceTypeaheadMatch(\n this.state.options,\n this.typeahead,\n this.state.activeIndex\n );\n if (match >= 0) this.state.activeIndex = match;\n const resetMs = resolveCssTimeMs(\n TOKEN_DEFAULTS.animationDurationMedium1,\n TOKEN_DEFAULTS.animationDurationMedium1\n );\n this.typeaheadTimer = setTimeout(() => {\n this.typeahead = '';\n this.typeaheadTimer = null;\n }, resetMs);\n }\n\n private scrollActiveOptionIntoView() {\n if (!this.state.open || !this.activeOptionId) return;\n this.state.host\n .querySelector<HTMLElement>(`#${this.activeOptionId}`)\n ?.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n }\n\n private bindPopupListeners() {\n this.unbindPopupListeners();\n this.outsideHandler = event => {\n if (eventIntersectsComposedBoundary(event, this.state.host)) return;\n this.closePopup();\n };\n document.addEventListener('mousedown', this.outsideHandler, true);\n this.position.observe();\n }\n\n private unbindPopupListeners() {\n if (this.outsideHandler) {\n document.removeEventListener('mousedown', this.outsideHandler, true);\n this.outsideHandler = null;\n }\n this.position.unobserve();\n }\n\n private cancelPositionRetry() {\n this.position.cancel();\n }\n\n private schedulePositionUpdate(onReady?: () => void) {\n if (!this.state.open) return;\n this.state.positionReady = false;\n this.position.schedule(onReady);\n }\n\n private updatePosition(): boolean {\n return this.position.update();\n }\n}\n","@import '../../utils/choice-list.css';\n@import '../../utils/control-parts.css';\n@import '../../utils/control-width.css';\n@import '../../utils/field-stack.css';\n@import '../../utils/search-control.css';\n@import '../../utils/select-trigger.css';\n@import '../../utils/table-caption-control.css';\n@import '../../utils/typography.css';\n@import '../../styles/control-elevation.css';\n\n.wrapper--error {\n --ds-interaction-border-width: var(--dimension-stroke-width-018);\n --ds-interaction-border-color: var(--color-border-bold-negative);\n}\n\n.select-popup {\n color: var(--color-foreground-secondary);\n}\n\n.select-option[aria-selected='true'] .ds-choice-item__icon {\n color: var(--color-foreground-primary);\n}\n\n.select-option-row {\n position: relative;\n isolation: isolate;\n}\n\n.select-option-row__action {\n position: absolute;\n top: 50%;\n right: var(--dimension-space-050);\n z-index: var(--dimension-z-index-floating);\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--dimension-radius-half);\n background: var(--color-background-transparent);\n -webkit-backdrop-filter: blur(var(--effect-blur-sm));\n backdrop-filter: blur(var(--effect-blur-sm));\n opacity: 0;\n pointer-events: none;\n transform: translateY(-50%);\n}\n\n.select-option-row:has(:focus-visible) .select-option-row__action,\n.select-option-row--action-open .select-option-row__action,\n.select-option-row--keyboard-active .select-option-row__action {\n opacity: 1;\n pointer-events: auto;\n}\n\n.select-option-row--action-open .select-option::after {\n background: var(--ds-interaction-hover);\n}\n\n.select-option__subtext-actions {\n display: flex;\n align-items: center;\n gap: var(--dimension-space-050);\n min-inline-size: 0;\n color: var(--color-foreground-secondary);\n}\n\n.select-option__subtext-action {\n appearance: none;\n display: inline-flex;\n align-items: center;\n padding: 0;\n border: 0;\n border-radius: var(--dimension-radius-025);\n background: transparent;\n cursor: pointer;\n}\n\n.select-option__subtext-action--negative {\n --ds-text-action-foreground: var(--color-foreground-bold-negative);\n}\n\n.select-option__subtext-action-separator {\n color: var(--color-foreground-tertiary);\n pointer-events: none;\n}\n\n@media (hover: hover) and (pointer: fine) {\n .select-option-row:hover .select-option-row__action {\n opacity: 1;\n pointer-events: auto;\n }\n\n .select-option-row:hover .select-option::after {\n background: var(--ds-interaction-hover);\n }\n}\n\n@media (hover: none) {\n .select-option-row__action {\n opacity: 1;\n pointer-events: auto;\n }\n\n .select-option-row--has-action .ds-choice-item__content {\n padding-inline-end: var(--dimension-size-400);\n }\n}\n\n.error-text {\n width: 100%;\n}\n","import {\n AttachInternals,\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n type VNode,\n Watch,\n} from '@stencil/core';\nimport {\n controlWidthClass,\n CONTROL_SUPPORTING_TEXT_VARIANT,\n CONTROL_TEXT_VARIANT,\n DEFAULT_REQUIRED_MESSAGE,\n restoreStringArrayFormState,\n restoreStringFormState,\n setFormControlValue,\n setRepeatedFormControlValue,\n setRequiredValidity,\n type ControlWidth,\n} from '../../utils';\nimport {\n ChoiceActionFooter,\n ChoiceFooter,\n ChoiceOptionRow,\n ChoiceSearch,\n} from '../../utils/choice-list-parts';\nimport {\n choiceBackgroundClassMap,\n choiceListUsesIcons,\n choiceListUsesSubtext,\n enabledChoiceIndexes,\n filterChoiceSections,\n flattenChoiceSections,\n resolveChoiceSections,\n type ChoiceBackground,\n type ChoiceOption,\n type ChoiceSection,\n} from '../../utils/choice-list';\nimport { SelectController } from '../../utils/select-controller';\nimport { observeTableCaptionCompact } from '../../utils/table-caption-compact';\n\nexport type SelectOption = ChoiceOption;\nexport type SelectSection = ChoiceSection;\nexport type SelectBackground = ChoiceBackground;\nexport type SelectSize = 'lg' | 'md' | 'sm' | 'xs';\nexport type SelectWidth = ControlWidth;\nexport type SelectPopupAlign = 'start' | 'end';\nexport type SelectValue = string | string[];\nexport type SelectIndicator = 'down' | 'up-down';\n\nexport interface SelectOptionActionDetail {\n value: string;\n anchorId: string;\n originalEvent: MouseEvent;\n}\n\nexport interface SelectOptionSubtextActionDetail {\n value: string;\n actionValue: string;\n originalEvent: MouseEvent;\n}\n\nconst ICON_SIZE: Record<SelectSize, 'lg' | 'md' | 'sm' | 'xs'> = {\n lg: 'lg',\n md: 'md',\n sm: 'sm',\n xs: 'xs',\n};\n\nconst OPTION_ACTION_SIZE: Record<SelectSize, 'md' | 'sm' | 'xs'> = {\n lg: 'md',\n md: 'sm',\n sm: 'xs',\n xs: 'xs',\n};\n\nlet selectId = 0;\n\n@Component({\n tag: 'ds-select',\n styleUrl: 'Select.css',\n scoped: true,\n formAssociated: true,\n})\nexport class Select {\n @Element() el!: HTMLElement;\n @AttachInternals() internals!: ElementInternals;\n\n /** Flat choices. Assign arrays through the JavaScript property. */\n @Prop() options: SelectOption[] = [];\n /** Grouped choices; takes precedence over options. Assign through JavaScript. */\n @Prop() sections: SelectSection[] = [];\n /** Enable independent multi-value selection while keeping the popup open. */\n @Prop({ reflect: true }) multiple: boolean = false;\n /** Selected scalar or array value according to `multiple`. */\n @Prop({ mutable: true }) value: SelectValue = '';\n /** Controlled popup visibility. */\n @Prop({ mutable: true, reflect: true }) open: boolean = false;\n /** Native form field name. */\n @Prop({ reflect: true }) name: string | undefined;\n /** Native disabled state. */\n @Prop({ reflect: true }) disabled: boolean = false;\n /** Require one valid selected value. */\n @Prop({ reflect: true }) required: boolean = false;\n /** Validation message used when required is missing. */\n @Prop() requiredMessage: string = DEFAULT_REQUIRED_MESSAGE;\n /** Trigger text shown when no valid value is selected. */\n @Prop() placeholder: string = 'Select';\n /** Optional scalar-mode trigger text that does not change the selected option label. */\n @Prop() triggerLabel: string | undefined;\n /** Present triggerLabel with placeholder emphasis while preserving the selected value. */\n @Prop() triggerLabelPlaceholder: boolean = false;\n /** Show a supplemental notification dot beside the trigger label. */\n @Prop() dot: boolean = false;\n /** Control density. */\n @Prop() size: SelectSize = 'md';\n /** Width fit — hug content (default) or fill the parent. */\n @Prop() width: SelectWidth = 'hug';\n /** Align the popup's choice edge to the trigger start or end edge. */\n @Prop() popupAlign: SelectPopupAlign = 'start';\n /** Explicit collision owner; otherwise the nearest data-ds-overlay-boundary ancestor is used. */\n @Prop() boundary: HTMLElement | undefined;\n /** Shared inactive treatment; removes interaction and form submission. */\n @Prop() isInactive: boolean = false;\n /** Replace the prefix with a loader and disable option interaction. */\n @Prop() isLoading: boolean = false;\n /** Show the selected interaction fill when a valid value exists. */\n @Prop() activeFill: boolean = true;\n /**\n * Opt into table-caption icon-only chrome below 900px. The trigger omits its\n * visible label and chevron; keep an accessible name via aria-label.\n */\n @Prop({ reflect: true }) collapseLabel: boolean = false;\n /** Show the surface-aware inset border, including focused and invalid strokes. */\n @Prop() hasBorder: boolean = true;\n /** Optional trigger prefix icon name. */\n @Prop() icon: string | undefined;\n /** Trailing choice indicator. Use up-down for compact value steppers such as page size. */\n @Prop() indicator: SelectIndicator = 'down';\n /** Show the clear footer action when a value exists. */\n @Prop() allowClear: boolean = true;\n /** Localized clear action label. */\n @Prop() clearLabel: string = 'Clear';\n /** Localized noun displayed after the selected count in multiple mode. */\n @Prop() selectedLabel: string = 'selected';\n /** Optional text action shown in the popup footer instead of the clear action. */\n @Prop() footerActionLabel: string | undefined;\n /** Show immediate local filtering over option labels, subtext, and section headings. */\n @Prop() searchable: boolean = false;\n /** Localized search-field placeholder and accessible name. */\n @Prop() searchPlaceholder: string = 'Search';\n /** Localized empty-filter result text. */\n @Prop() noResultsText: string = 'No results found';\n /** Accessible loading status label. */\n @Prop() loadingLabel: string = 'Loading';\n /** Actual parent surface context; omit on primary and secondary surfaces. */\n @Prop() background: SelectBackground | undefined;\n /** Show invalid visual state. */\n @Prop() error: boolean = false;\n /** Error text rendered below the trigger when error is true. */\n @Prop() errorMessage: string | undefined;\n /** ID applied to the internal combobox trigger for external labels. */\n @Prop() inputId: string | undefined;\n /** Direct accessible name when no external label is available. */\n @Prop({ attribute: 'aria-label' }) ariaLabel: string | null = null;\n /** IDs of elements that label the combobox. */\n @Prop({ attribute: 'aria-labelledby' }) ariaLabelledby: string | undefined;\n /** Additional IDs that describe the combobox. */\n @Prop({ attribute: 'aria-describedby' }) ariaDescribedby: string | undefined;\n\n /** Emitted after selection or clearing with the next scalar or array value. */\n @Event() dsChange!: EventEmitter<SelectValue>;\n /** Emitted after the footer clear action. */\n @Event() dsClear!: EventEmitter<void>;\n /** Emitted whenever popup visibility changes. */\n @Event() dsOpenChange!: EventEmitter<boolean>;\n /** Emitted when the optional popup footer action is activated. */\n @Event() dsFooterAction!: EventEmitter<void>;\n /** Emitted when an option's contextual ellipsis action is activated. */\n @Event() dsOptionAction!: EventEmitter<SelectOptionActionDetail>;\n /** Emitted when an option's supporting text action is activated. */\n @Event() dsOptionSubtextAction!: EventEmitter<SelectOptionSubtextActionDetail>;\n\n @State() private activeIndex = -1;\n @State() private searchTerm = '';\n @State() private formDisabled = false;\n @State() private position = { x: 0, y: 0 };\n @State() private positionReady = false;\n @State() private focusRingVisible = false;\n @State() private compactFooterSummary = false;\n @State() private captionCompact = false;\n\n private readonly generatedId = `ds-select-${++selectId}`;\n private readonly listboxId = `${this.generatedId}-listbox`;\n private readonly errorId = `${this.generatedId}-error`;\n private initialValue: SelectValue = '';\n private readonly controller = this.createController();\n private footerContentElement?: HTMLDivElement;\n private footerSummaryMeasureElement?: HTMLElement;\n private footerClearElement?: HTMLButtonElement;\n private footerResizeObserver?: ResizeObserver;\n private observedFooterContentElement?: HTMLDivElement;\n private footerMeasurementFrame?: number;\n private captionCompactDisconnect: (() => void) | undefined;\n private hasLoaded = false;\n\n private createController() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias -- adapter getters preserve reactive component ownership without inheritance.\n const owner = this;\n return new SelectController<SelectOption>({\n get host() {\n return owner.el;\n },\n generatedId: owner.generatedId,\n get options() {\n return owner.visibleOptions;\n },\n get searchable() {\n return owner.searchable;\n },\n get isLoading() {\n return owner.isLoading;\n },\n get isDisabled() {\n return owner.isDisabled;\n },\n get preferredIndex() {\n if (owner.multiple) return -1;\n return owner.visibleOptions.findIndex(\n option => option.value === owner.scalarValue && !option.isInactive\n );\n },\n get popupAlign() {\n return owner.popupAlign;\n },\n get boundary() {\n return owner.boundary;\n },\n get open() {\n return owner.open;\n },\n set open(value) {\n owner.open = value;\n },\n get activeIndex() {\n return owner.activeIndex;\n },\n set activeIndex(value) {\n owner.activeIndex = value;\n },\n get searchTerm() {\n return owner.searchTerm;\n },\n set searchTerm(value) {\n owner.searchTerm = value;\n },\n get focusRingVisible() {\n return owner.focusRingVisible;\n },\n set focusRingVisible(value) {\n owner.focusRingVisible = value;\n },\n get position() {\n return owner.position;\n },\n set position(value) {\n owner.position = value;\n },\n get positionReady() {\n return owner.positionReady;\n },\n set positionReady(value) {\n owner.positionReady = value;\n },\n selectOption: option => owner.selectOption(option),\n });\n }\n\n componentWillLoad() {\n this.value = this.normalizeValueForMode(this.value);\n this.initialValue = Array.isArray(this.value) ? [...this.value] : this.value;\n this.syncFormValue();\n }\n\n componentDidLoad() {\n this.hasLoaded = true;\n this.controller.connect();\n this.observeFooterContent();\n this.syncCaptionCompactObserver();\n }\n\n connectedCallback() {\n if (!this.hasLoaded) return;\n this.controller.connect();\n this.observeFooterContent();\n this.syncCaptionCompactObserver();\n }\n\n componentDidRender() {\n this.observeFooterContent();\n this.scheduleFooterSummaryMeasurement();\n }\n\n disconnectedCallback() {\n this.controller.disconnect();\n this.footerResizeObserver?.disconnect();\n this.observedFooterContentElement = undefined;\n if (this.footerMeasurementFrame !== undefined) {\n cancelAnimationFrame(this.footerMeasurementFrame);\n this.footerMeasurementFrame = undefined;\n }\n this.disconnectCaptionCompactObserver();\n }\n\n @Watch('collapseLabel')\n onCollapseLabelChange() {\n this.syncCaptionCompactObserver();\n }\n\n @Watch('value')\n @Watch('multiple')\n @Watch('disabled')\n @Watch('isInactive')\n @Watch('required')\n @Watch('name')\n @Watch('options')\n @Watch('sections')\n syncFormValue() {\n if (\n (this.multiple && !Array.isArray(this.value)) ||\n (!this.multiple && Array.isArray(this.value))\n ) {\n this.value = this.normalizeValueForMode(this.value);\n }\n const inactive = this.isDisabled;\n if (this.multiple) {\n const values = this.resolvedValues;\n setRepeatedFormControlValue(this.internals, this.name, values, { inactive });\n } else {\n const value = this.hasSelection ? this.scalarValue : '';\n setFormControlValue(this.internals, value, { inactive });\n }\n const missing = this.required && !inactive && !this.hasSelection;\n setRequiredValidity(this.internals, missing, this.requiredMessage);\n this.controller.optionsChanged();\n }\n\n @Watch('isLoading')\n onLoadingChange() {\n this.controller.loadingChanged();\n }\n\n @Watch('popupAlign')\n @Watch('boundary')\n onPopupAlignChange() {\n this.controller.positionChanged();\n }\n\n @Watch('open')\n onOpenChange(open: boolean) {\n this.dsOpenChange.emit(open);\n this.controller.openChanged(open);\n }\n\n @Watch('searchTerm')\n onSearchTermChange() {\n this.controller.searchChanged();\n }\n\n @Watch('activeIndex')\n onActiveIndexChange() {\n this.controller.activeIndexChanged();\n }\n\n formDisabledCallback(disabled: boolean) {\n this.formDisabled = disabled;\n this.syncFormValue();\n }\n\n formResetCallback() {\n this.value = this.normalizeValueForMode(this.initialValue);\n this.closePopup();\n }\n\n formStateRestoreCallback(state: string | File | FormData | null) {\n if (!this.multiple) {\n this.value = restoreStringFormState(state);\n return;\n }\n this.value = restoreStringArrayFormState(state);\n }\n\n @Method()\n async setFocus() {\n this.controller.setFocus();\n }\n\n private get isDisabled(): boolean {\n return this.disabled || this.isInactive || this.formDisabled;\n }\n\n private normalizeValueForMode(value: SelectValue): SelectValue {\n if (this.multiple) {\n return Array.isArray(value) ? [...value] : value ? [value] : [];\n }\n return Array.isArray(value) ? (value[0] ?? '') : value;\n }\n\n private get allSections(): SelectSection[] {\n return resolveChoiceSections(this.options, this.sections);\n }\n\n private get allOptions(): SelectOption[] {\n return flattenChoiceSections(this.allSections);\n }\n\n private get visibleSections(): SelectSection[] {\n return this.searchable\n ? filterChoiceSections(this.allSections, this.searchTerm)\n : this.allSections;\n }\n\n private get visibleOptions(): SelectOption[] {\n return flattenChoiceSections(this.visibleSections);\n }\n\n private get scalarValue(): string {\n return typeof this.value === 'string' ? this.value : '';\n }\n\n private get resolvedValues(): string[] {\n if (!this.multiple || !Array.isArray(this.value)) return [];\n const valid = new Set(this.allOptions.map(option => option.value));\n return [...new Set(this.value.filter(value => valid.has(value)))];\n }\n\n private get selectedOption(): SelectOption | undefined {\n if (this.multiple) return undefined;\n return this.allOptions.find(option => option.value === this.scalarValue);\n }\n\n private get hasSelection(): boolean {\n return this.multiple ? this.resolvedValues.length > 0 : Boolean(this.selectedOption);\n }\n\n private get activeOptionId(): string | undefined {\n return this.controller.activeOptionId;\n }\n\n private get popupRole(): 'listbox' | 'grid' {\n return this.allOptions.some(option => Boolean(option.action)) ? 'grid' : 'listbox';\n }\n\n private observeFooterContent() {\n const content =\n this.open && this.multiple && this.hasSelection ? this.footerContentElement : undefined;\n if (!content?.isConnected) {\n this.footerResizeObserver?.disconnect();\n this.observedFooterContentElement = undefined;\n return;\n }\n if (this.observedFooterContentElement === content) return;\n\n this.footerResizeObserver?.disconnect();\n if (typeof ResizeObserver !== 'undefined') {\n this.footerResizeObserver = new ResizeObserver(() => this.scheduleFooterSummaryMeasurement());\n this.footerResizeObserver.observe(content);\n }\n this.observedFooterContentElement = content;\n }\n\n private scheduleFooterSummaryMeasurement() {\n if (\n !this.open ||\n !this.multiple ||\n !this.hasSelection ||\n this.footerMeasurementFrame !== undefined\n ) {\n return;\n }\n this.footerMeasurementFrame = requestAnimationFrame(() => {\n this.footerMeasurementFrame = undefined;\n this.measureFooterSummary();\n });\n }\n\n private measureFooterSummary() {\n const content = this.footerContentElement;\n const summary = this.footerSummaryMeasureElement;\n const clear = this.footerClearElement;\n if (!content?.isConnected || !summary?.isConnected || !clear?.isConnected) return;\n\n const styles = getComputedStyle(content);\n const innerWidth =\n content.clientWidth -\n Number.parseFloat(styles.paddingInlineStart || '0') -\n Number.parseFloat(styles.paddingInlineEnd || '0');\n const requiredWidth =\n summary.getBoundingClientRect().width +\n clear.getBoundingClientRect().width +\n Number.parseFloat(styles.columnGap || '0');\n const nextCompact = requiredWidth > innerWidth + 0.5;\n if (nextCompact !== this.compactFooterSummary) {\n this.compactFooterSummary = nextCompact;\n }\n }\n\n private closePopup(restoreFocus = false) {\n this.controller.closePopup(restoreFocus);\n }\n\n private openPopup(focusVisible: boolean, edge?: 'first' | 'last') {\n this.controller.openPopup(focusVisible, edge);\n }\n\n private selectOption(option: SelectOption) {\n if (option.isInactive || this.isLoading) return;\n if (this.multiple) {\n const current = this.resolvedValues;\n const next = current.includes(option.value)\n ? current.filter(value => value !== option.value)\n : [...current, option.value];\n this.value = next;\n this.dsChange.emit([...next]);\n return;\n }\n this.value = option.value;\n this.dsChange.emit(option.value);\n this.controller.closePopup(true);\n }\n\n private clearSelection = (event: Event) => {\n event.preventDefault();\n event.stopPropagation();\n this.value = this.multiple ? [] : '';\n this.dsChange.emit(this.multiple ? [] : '');\n this.dsClear.emit();\n if (!this.multiple) {\n const enabled = enabledChoiceIndexes(this.visibleOptions);\n this.activeIndex = enabled[0] ?? -1;\n }\n this.controller.focusSearchOrTrigger();\n };\n\n private activateFooterAction = (event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n this.dsFooterAction.emit();\n this.closePopup();\n };\n\n private readonly handleListKeyDown = this.controller.handleListKeyDown;\n private readonly handleTriggerKeyDown = this.controller.handleTriggerKeyDown;\n\n private renderOption(\n option: SelectOption,\n index: number,\n usesIcons: boolean,\n usesSubtext: boolean\n ) {\n const selected = this.multiple\n ? this.resolvedValues.includes(option.value)\n : option.value === this.scalarValue;\n const active = index === this.activeIndex;\n const actionId = `${this.generatedId}-option-action-${index}`;\n return (\n <ChoiceOptionRow\n size={this.size}\n id={`${this.generatedId}-option-${index}`}\n option={option}\n selected={selected}\n active={active}\n focusRingVisible={this.focusRingVisible}\n usesSubtext={usesSubtext}\n actionOpen={option.action?.expanded}\n popupRole={this.popupRole}\n leading={\n this.multiple ? (\n <span\n class=\"ds-choice-item__icon ds-control-icon-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\n <ds-checkbox\n class=\"select-option__checkbox\"\n label=\"\"\n size={this.size}\n checked={selected}\n presentation\n />\n </span>\n ) : usesIcons && option.icon ? (\n <span\n class=\"ds-choice-item__icon ds-control-icon-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\n <ds-icon name={option.icon} size={this.size} color=\"inherit\" />\n </span>\n ) : undefined\n }\n supporting={\n option.subtextActions?.length ? (\n <span class=\"ds-choice-item__subtext ds-control-label-box select-option__subtext-actions\">\n {option.subtextActions.map((action, actionIndex) => [\n actionIndex > 0 ? (\n <ds-text\n class=\"select-option__subtext-action-separator\"\n as=\"span\"\n variant={CONTROL_SUPPORTING_TEXT_VARIANT[this.size]}\n color=\"inherit\"\n aria-hidden=\"true\"\n >\n ·\n </ds-text>\n ) : null,\n <button\n type=\"button\"\n class={{\n 'select-option__subtext-action': true,\n 'select-option__subtext-action--negative': action.tone === 'negative',\n 'ds-text-action': true,\n 'ds-focus-ring': true,\n }}\n onKeyDown={(event: KeyboardEvent) => event.stopPropagation()}\n onClick={(event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n this.dsOptionSubtextAction.emit({\n value: option.value,\n actionValue: action.value,\n originalEvent: event,\n });\n }}\n >\n <ds-text\n as=\"span\"\n variant={CONTROL_SUPPORTING_TEXT_VARIANT[this.size]}\n color=\"inherit\"\n >\n {action.label}\n </ds-text>\n </button>,\n ])}\n </span>\n ) : undefined\n }\n action={\n option.action ? (\n <ds-tooltip label={option.action.label} side=\"left\" size=\"sm\">\n <ds-button-unfilled\n id={actionId}\n variant=\"icon\"\n size={OPTION_ACTION_SIZE[this.size]}\n icon=\"Ellipses\"\n rounded\n hasBorder={false}\n activeFill={false}\n ariaLabel={option.action.label}\n haspopup=\"menu\"\n controls={option.action.controls}\n expanded={option.action.expanded}\n onKeyDown={event => {\n event.stopPropagation();\n if (event.key === 'Escape' || event.key === 'ArrowLeft') {\n event.preventDefault();\n this.controller.focusSearchOrTrigger();\n }\n }}\n onDsClick={(event: CustomEvent<MouseEvent>) => {\n event.stopPropagation();\n this.dsOptionAction.emit({\n value: option.value,\n anchorId: actionId,\n originalEvent: event.detail,\n });\n }}\n />\n </ds-tooltip>\n ) : undefined\n }\n onHover={() => {\n this.focusRingVisible = false;\n this.activeIndex = index;\n }}\n onSelect={() => this.selectOption(option)}\n />\n );\n }\n\n private get captionIconOnly(): boolean {\n return this.collapseLabel && this.captionCompact && Boolean(this.icon || this.isLoading);\n }\n\n private syncCaptionCompactObserver(): void {\n this.disconnectCaptionCompactObserver();\n if (!this.collapseLabel) {\n if (this.captionCompact) this.captionCompact = false;\n return;\n }\n this.captionCompactDisconnect = observeTableCaptionCompact(this.el, compact => {\n if (this.captionCompact !== compact) this.captionCompact = compact;\n });\n }\n\n private disconnectCaptionCompactObserver(): void {\n this.captionCompactDisconnect?.();\n this.captionCompactDisconnect = undefined;\n }\n\n private renderCaptionTooltip(trigger: VNode, label: string): VNode {\n if (!this.collapseLabel) return trigger;\n return (\n <ds-tooltip label={label} side=\"top\" size=\"sm\">\n {trigger}\n </ds-tooltip>\n );\n }\n\n render() {\n const inactive = this.isDisabled;\n const showPlaceholder = !this.hasSelection;\n const count = this.resolvedValues.length;\n const label = this.multiple\n ? `${this.placeholder}${count > 0 ? ` · ${count}` : ''}`\n : showPlaceholder\n ? this.placeholder\n : (this.triggerLabel ?? this.selectedOption?.label);\n const textVariant = CONTROL_TEXT_VARIANT[this.size];\n const iconSize = ICON_SIZE[this.size];\n const usesOptionIcons = !this.multiple && choiceListUsesIcons(this.allOptions);\n const usesOptionSubtext = choiceListUsesSubtext(this.allOptions);\n const showError = this.error && Boolean(this.errorMessage);\n const describedBy =\n [this.ariaDescribedby, showError ? this.errorId : undefined].filter(Boolean).join(' ') ||\n undefined;\n const popupStyle = {\n position: 'fixed',\n left: '0',\n top: '0',\n transform: `translate(${Math.round(this.position.x)}px, ${Math.round(this.position.y)}px)`,\n zIndex: 'var(--dimension-z-index-floating)',\n visibility: this.positionReady ? 'visible' : 'hidden',\n };\n let flatIndex = 0;\n\n return (\n <Host\n class={{\n 'select-host': true,\n 'ds-select-trigger-host': true,\n 'select-host--multiple': this.multiple,\n 'ds-field-stack': true,\n 'ds-control-inactive': inactive,\n [`ds-control--${this.size}`]: true,\n 'ds-table-caption-control': this.collapseLabel,\n 'ds-table-caption-control--compact': this.captionIconOnly,\n ...controlWidthClass(this.width),\n [`select-host--background-${this.background}`]: !!this.background,\n [`ds-select-trigger-host--background-${this.background}`]: !!this.background,\n }}\n >\n {this.renderCaptionTooltip(\n <button\n ref={element => {\n this.controller.setTriggerElement((element as HTMLButtonElement) ?? null);\n }}\n id={this.inputId ?? this.generatedId}\n type=\"button\"\n class={{\n trigger: true,\n 'ds-control-frame': true,\n 'ds-focus-ring-inset': true,\n 'ds-interaction-fill': true,\n 'ds-interaction-fill--selected': !inactive && this.activeFill && this.hasSelection,\n 'trigger--expanded': !inactive && this.open,\n 'trigger--bordered': this.hasBorder,\n 'trigger--placeholder': showPlaceholder && !this.multiple,\n 'trigger--has-value': this.hasSelection,\n 'trigger--label-placeholder':\n !this.multiple && Boolean(this.triggerLabel) && this.triggerLabelPlaceholder,\n 'wrapper--error': this.hasBorder && this.error,\n [`ds-control--${this.size}`]: true,\n ...choiceBackgroundClassMap(this.background),\n }}\n disabled={inactive}\n role=\"combobox\"\n aria-haspopup={this.popupRole}\n aria-expanded={String(this.open)}\n aria-controls={this.open ? this.listboxId : undefined}\n aria-activedescendant={this.open && !this.searchable ? this.activeOptionId : undefined}\n aria-label={this.ariaLabel ?? (this.captionIconOnly ? label : undefined)}\n aria-labelledby={this.ariaLabelledby}\n aria-describedby={describedBy}\n aria-invalid={this.error ? 'true' : undefined}\n aria-required={this.required || undefined}\n aria-busy={this.isLoading ? 'true' : undefined}\n onClick={() => (this.open ? this.closePopup() : this.openPopup(false))}\n onKeyDown={event => {\n const action = this.visibleOptions[this.activeIndex]?.action;\n if (\n this.open &&\n action &&\n (event.key === 'ArrowRight' || (event.key === 'F10' && event.shiftKey))\n ) {\n event.preventDefault();\n document\n .getElementById(`${this.generatedId}-option-action-${this.activeIndex}`)\n ?.querySelector<HTMLElement>('button')\n ?.focus();\n return;\n }\n this.handleTriggerKeyDown(event);\n }}\n >\n {(this.icon || this.isLoading) && (\n <span\n class=\"trigger__prefix ds-control-icon-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\n {this.isLoading ? (\n <ds-loader size={iconSize} color=\"inherit\" />\n ) : (\n <ds-icon name={this.icon} size={iconSize} color=\"inherit\" />\n )}\n </span>\n )}\n {this.captionIconOnly ? null : (\n <span\n class={{\n 'trigger__label-box': true,\n 'ds-interaction-fill__content': true,\n }}\n >\n <span\n class={{\n 'trigger__label-content': true,\n 'ds-control-label-box': true,\n 'ds-control-label-dot': this.dot,\n 'trigger__label-content--dot': this.dot,\n }}\n >\n <ds-text\n class=\"trigger__label\"\n as=\"span\"\n variant={textVariant}\n color=\"inherit\"\n lineTruncation={1}\n >\n {label}\n </ds-text>\n {this.dot && (\n <ds-badge\n class=\"trigger__dot ds-control-label-dot__badge\"\n variant=\"dot\"\n hasRing={false}\n label=\"\"\n aria-hidden=\"true\"\n />\n )}\n </span>\n </span>\n )}\n {this.captionIconOnly ? null : (\n <span\n class=\"trigger__chevron ds-control-icon-box ds-interaction-fill__content\"\n aria-hidden=\"true\"\n >\n <ds-icon\n name={this.indicator === 'up-down' ? 'ChevronUpDown' : 'ChevronDown'}\n size={iconSize}\n color=\"inherit\"\n />\n </span>\n )}\n </button>,\n this.captionIconOnly ? this.ariaLabel?.trim() || this.placeholder : ''\n )}\n\n {this.open && (\n <div\n popover=\"manual\"\n ref={element => {\n this.controller.setPopupElement((element as HTMLDivElement) ?? null);\n }}\n class=\"select-popup ds-choice-popup\"\n style={popupStyle}\n >\n {this.searchable && (\n <ChoiceSearch\n size={this.size}\n value={this.searchTerm}\n placeholder={this.searchPlaceholder}\n controls={this.listboxId}\n activeDescendant={this.activeOptionId}\n inputRef={this.controller.setSearchElement}\n clearLabel={this.clearLabel}\n onValueChange={value => {\n this.searchTerm = value;\n }}\n onKeyDown={event => this.handleListKeyDown(event)}\n />\n )}\n <div\n id={this.listboxId}\n class=\"ds-choice-list\"\n role={this.popupRole}\n aria-multiselectable={this.multiple ? 'true' : undefined}\n aria-label={this.ariaLabel ?? this.placeholder}\n aria-busy={this.isLoading ? 'true' : undefined}\n >\n {this.isLoading ? (\n <div\n class=\"ds-choice-loading ds-empty-region\"\n role={this.popupRole === 'grid' ? 'row' : 'option'}\n aria-selected=\"false\"\n aria-disabled=\"true\"\n aria-label={this.loadingLabel}\n aria-live=\"polite\"\n >\n {this.popupRole === 'grid' ? (\n <span role=\"gridcell\">\n <ds-loader size={this.size} color=\"inherit\" />\n </span>\n ) : (\n <ds-loader size={this.size} color=\"inherit\" />\n )}\n </div>\n ) : this.visibleOptions.length === 0 ? (\n <div\n class=\"ds-choice-empty ds-empty-region\"\n role={this.popupRole === 'grid' ? 'row' : 'option'}\n aria-selected=\"false\"\n aria-disabled=\"true\"\n aria-label={this.noResultsText}\n aria-live=\"polite\"\n >\n {this.popupRole === 'grid' ? (\n <span role=\"gridcell\">\n <ds-empty-state body={this.noResultsText} />\n </span>\n ) : (\n <ds-empty-state body={this.noResultsText} />\n )}\n </div>\n ) : (\n this.visibleSections.map((section, sectionIndex) => (\n <div\n class={{\n 'ds-choice-section': true,\n 'ds-chrome-column': true,\n 'ds-chrome-space--sm': true,\n 'ds-choice-section--divided': !!section.divider,\n 'ds-choice-section--headed-after-first':\n sectionIndex > 0 && Boolean(section.header),\n }}\n role={\n this.popupRole === 'grid' ? 'rowgroup' : section.header ? 'group' : undefined\n }\n aria-label={section.header}\n >\n {section.header && this.popupRole === 'grid' ? (\n <ds-text\n class={`ds-choice-section__header ds-control-section-heading ds-control--${this.size}`}\n as=\"span\"\n variant={CONTROL_SUPPORTING_TEXT_VARIANT[this.size]}\n emphasis\n color=\"primary\"\n role=\"row\"\n >\n <span class=\"ds-choice-section__header-label\" role=\"gridcell\">\n {section.header}\n </span>\n </ds-text>\n ) : section.header ? (\n <ds-text\n class={`ds-choice-section__header ds-control-section-heading ds-control--${this.size}`}\n as=\"span\"\n variant={CONTROL_SUPPORTING_TEXT_VARIANT[this.size]}\n emphasis\n color=\"primary\"\n aria-hidden=\"true\"\n >\n <span class=\"ds-choice-section__header-label\">{section.header}</span>\n </ds-text>\n ) : null}\n {section.options.map(option =>\n this.renderOption(option, flatIndex++, usesOptionIcons, usesOptionSubtext)\n )}\n </div>\n ))\n )}\n </div>\n {this.footerActionLabel && !this.isLoading ? (\n <ChoiceActionFooter\n size={this.size}\n label={this.footerActionLabel}\n onAction={this.activateFooterAction}\n />\n ) : this.allowClear && this.hasSelection && !this.isLoading ? (\n <ChoiceFooter\n size={this.size}\n summary={this.multiple ? `${count} ${this.selectedLabel}` : undefined}\n compactSummary={this.multiple ? String(count) : undefined}\n useCompactSummary={this.compactFooterSummary}\n contentRef={element => {\n this.footerContentElement = element ?? undefined;\n }}\n summaryMeasureRef={element => {\n this.footerSummaryMeasureElement = element ?? undefined;\n }}\n clearRef={element => {\n this.footerClearElement = element ?? undefined;\n }}\n clearLabel={this.clearLabel}\n onClear={this.clearSelection}\n />\n ) : null}\n </div>\n )}\n\n {showError && (\n <ds-text\n class=\"error-text\"\n as=\"div\"\n variant=\"text-body-small\"\n color=\"negative\"\n textId={this.errorId}\n role=\"alert\"\n >\n {this.errorMessage}\n </ds-text>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import{p as i,H as e,c as s,h as t,a as o,t as n}from"./index.js";import{g as r,i as c}from"./p-BQq26pt9.js";import{d}from"./p-BUDAwJVV.js";import{d as a}from"./p-BFfLvMZd.js";import{d as l}from"./p-BZVWmzKf.js";import{d as h}from"./p-BysVBVQv.js";import{d as f}from"./p-CsBICYmt.js";import{d as u}from"./p-Cg0kimXZ.js";import{d as v}from"./p-CAnnQL1F.js";function b(i,e){const s=r(i);const t=s.findIndex((i=>i.id===e));const o=t>=0?t:0;return{selectedIndex:o,selected:s[o],hasPrevious:o>0,hasNext:o<s.length-1}}const m=()=>`@media (forced-colors: active){.sc-ds-mobile-section-switcher:root,.sc-ds-mobile-section-switcher-h,.ds-forced-colors-scope.sc-ds-mobile-section-switcher{--ds-forced-color-surface:Canvas;--ds-forced-color-content:CanvasText;--ds-forced-color-control-boundary:ButtonText;--ds-forced-color-selected:Highlight;--ds-forced-color-on-selected:HighlightText;--ds-forced-color-disabled:GrayText}}.sc-ds-mobile-section-switcher-h{--ds-focus-ring-width:var(--dimension-stroke-width-025, 2px);--ds-focus-ring-offset:var(--dimension-space-025, 2px);--ds-focus-ring-color:var(--color-interaction-focus)}.ds-focus-ring.sc-ds-mobile-section-switcher-h,.ds-focus-ring.sc-ds-mobile-section-switcher,.ds-focus-ring-inset.sc-ds-mobile-section-switcher-h,.ds-focus-ring-inset.sc-ds-mobile-section-switcher{outline:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.ds-focus-ring.sc-ds-mobile-section-switcher-h:focus-visible,.ds-focus-ring.sc-ds-mobile-section-switcher:focus-visible{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:var(--ds-focus-ring-offset)}.ds-focus-ring.ds-focus-ring--visible.sc-ds-mobile-section-switcher-h,.ds-focus-ring.ds-focus-ring--visible.sc-ds-mobile-section-switcher{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:var(--ds-focus-ring-offset)}.ds-focus-ring-inset.sc-ds-mobile-section-switcher-h:focus-visible,.ds-focus-ring-inset.sc-ds-mobile-section-switcher:focus-visible{outline:none}.ds-focus-ring-inset.sc-ds-mobile-section-switcher-h:focus-visible::after,.ds-focus-ring-inset.sc-ds-mobile-section-switcher:focus-visible::after{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:calc(-1 * var(--ds-focus-ring-width))}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-mobile-section-switcher-h,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-mobile-section-switcher{outline:none}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-mobile-section-switcher-h::after,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-mobile-section-switcher::after{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:calc(-1 * var(--ds-focus-ring-width))}@media (forced-colors: active){.sc-ds-mobile-section-switcher-h{--ds-focus-ring-color:var(--ds-forced-color-selected)}}@media (forced-colors: active){.sc-ds-mobile-section-switcher:root,.sc-ds-mobile-section-switcher-h,.ds-forced-colors-scope.sc-ds-mobile-section-switcher{--ds-forced-color-surface:Canvas;--ds-forced-color-content:CanvasText;--ds-forced-color-control-boundary:ButtonText;--ds-forced-color-selected:Highlight;--ds-forced-color-on-selected:HighlightText;--ds-forced-color-disabled:GrayText}}.ds-interaction-fill.sc-ds-mobile-section-switcher-h,.ds-interaction-fill.sc-ds-mobile-section-switcher{position:var(--ds-interaction-position, relative);z-index:var(--ds-interaction-z-index, 0);cursor:default;--ds-interaction-hover:var(--color-interaction-hover);--ds-interaction-pressed:var(--color-interaction-pressed);--ds-interaction-active:var(--color-interaction-active-brand);--ds-interaction-border-width:0px;--ds-interaction-border-color:transparent;--ds-interaction-divider-width:0px;--ds-interaction-divider-color:transparent;--ds-interaction-divider-inline-start-width:0px;--ds-interaction-divider-inline-start-color:transparent;--ds-interaction-divider-inline-end-width:0px;--ds-interaction-divider-inline-end-color:transparent}.ds-interaction-fill.sc-ds-mobile-section-switcher-h::before,.ds-interaction-fill.sc-ds-mobile-section-switcher::before,.ds-interaction-fill.sc-ds-mobile-section-switcher-h::after,.ds-interaction-fill.sc-ds-mobile-section-switcher::after{content:'';position:absolute;inset:0;border-radius:inherit;background:transparent;pointer-events:none;cursor:inherit;transition:none}.ds-interaction-fill.sc-ds-mobile-section-switcher-h::before,.ds-interaction-fill.sc-ds-mobile-section-switcher::before{z-index:1}.ds-interaction-fill.sc-ds-mobile-section-switcher-h::after,.ds-interaction-fill.sc-ds-mobile-section-switcher::after{z-index:3;box-shadow:inset 0 calc(-1 * var(--ds-interaction-divider-width)) 0 var(--ds-interaction-divider-color), inset var(--ds-interaction-divider-inline-start-width) 0 0 var(--ds-interaction-divider-inline-start-color), inset calc(-1 * var(--ds-interaction-divider-inline-end-width)) 0 0 var(--ds-interaction-divider-inline-end-color), inset 0 0 0 var(--ds-interaction-border-width) var(--ds-interaction-border-color)}.ds-interaction-fill--bordered.sc-ds-mobile-section-switcher-h,.ds-interaction-fill--bordered.sc-ds-mobile-section-switcher{--ds-interaction-border-width:var(--dimension-stroke-width-012);--ds-interaction-border-color:var(--color-border-secondary)}.ds-interaction-fill--selected.sc-ds-mobile-section-switcher-h::before,.ds-interaction-fill--selected.sc-ds-mobile-section-switcher::before{background:var(--ds-interaction-active)}.ds-interaction-fill--selected.sc-ds-mobile-section-switcher-h,.ds-interaction-fill--selected.sc-ds-mobile-section-switcher{--ds-interaction-dot-ring:var(--ds-interaction-active)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill.sc-ds-mobile-section-switcher-h:hover:not(:disabled)::after,.ds-interaction-fill.sc-ds-mobile-section-switcher:hover:not(:disabled)::after{background:var(--ds-interaction-hover)}}.ds-interaction-fill.sc-ds-mobile-section-switcher-h:active:not(:disabled)::after,.ds-interaction-fill.sc-ds-mobile-section-switcher:active:not(:disabled)::after{background:var(--ds-interaction-pressed)}.ds-interaction-fill--grouped.sc-ds-mobile-section-switcher-h::after,.ds-interaction-fill--grouped.sc-ds-mobile-section-switcher::after,.ds-interaction-fill--grouped.sc-ds-mobile-section-switcher-h:active:not(:disabled)::after,.ds-interaction-fill--grouped.sc-ds-mobile-section-switcher:active:not(:disabled)::after{background:var(--ds-interaction-group-fill, transparent)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill--grouped.sc-ds-mobile-section-switcher-h:hover:not(:disabled)::after,.ds-interaction-fill--grouped.sc-ds-mobile-section-switcher:hover:not(:disabled)::after{background:var(--ds-interaction-group-fill, transparent)}}.ds-interaction-fill--grouped.sc-ds-mobile-section-switcher-h,.ds-interaction-fill--grouped.sc-ds-mobile-section-switcher{--ds-interaction-divider-width:var(--ds-interaction-group-divider-width, 0px);--ds-interaction-divider-color:var(--ds-interaction-group-divider-color, transparent);--ds-interaction-divider-inline-start-width:var( --ds-interaction-group-divider-inline-start-width, 0px );--ds-interaction-divider-inline-start-color:var( --ds-interaction-group-divider-inline-start-color, transparent );--ds-interaction-divider-inline-end-width:var( --ds-interaction-group-divider-inline-end-width, 0px );--ds-interaction-divider-inline-end-color:var( --ds-interaction-group-divider-inline-end-color, transparent )}.ds-interaction-fill.sc-ds-mobile-section-switcher-h>.ds-interaction-fill__content.sc-ds-mobile-section-switcher,.ds-interaction-fill.sc-ds-mobile-section-switcher>.ds-interaction-fill__content.sc-ds-mobile-section-switcher,.ds-interaction-fill__content.sc-ds-mobile-section-switcher{position:relative;z-index:2;cursor:inherit}.ds-interaction-fill--on-faint.sc-ds-mobile-section-switcher-h,.ds-interaction-fill--on-faint.sc-ds-mobile-section-switcher{--ds-interaction-active:var(--color-interaction-active)}.ds-interaction-fill--on-medium.sc-ds-mobile-section-switcher-h,.ds-interaction-fill--on-medium.sc-ds-mobile-section-switcher{--ds-interaction-hover:var(--color-interaction-on-medium-background-hover);--ds-interaction-pressed:var(--color-interaction-on-medium-background-pressed);--ds-interaction-active:var(--color-interaction-on-medium-background-active);--ds-focus-ring-color:var(--color-interaction-on-medium-background-focus)}.ds-interaction-fill--on-bold.sc-ds-mobile-section-switcher-h,.ds-interaction-fill--on-bold.sc-ds-mobile-section-switcher{--ds-interaction-hover:var(--color-interaction-on-bold-background-hover);--ds-interaction-pressed:var(--color-interaction-on-bold-background-pressed);--ds-interaction-active:var(--color-interaction-on-bold-background-active);--ds-focus-ring-color:var(--color-interaction-on-bold-background-focus)}.ds-interaction-fill--on-strong.sc-ds-mobile-section-switcher-h,.ds-interaction-fill--on-strong.sc-ds-mobile-section-switcher{--ds-interaction-hover:var(--color-interaction-on-strong-background-hover);--ds-interaction-pressed:var(--color-interaction-on-strong-background-pressed);--ds-interaction-active:var(--color-interaction-on-strong-background-active);--ds-focus-ring-color:var(--color-interaction-on-strong-background-focus)}.ds-interaction-fill--on-translucent.sc-ds-mobile-section-switcher-h,.ds-interaction-fill--on-translucent.sc-ds-mobile-section-switcher{--ds-interaction-hover:var(--color-translucent-interaction-hover);--ds-interaction-pressed:var(--color-translucent-interaction-pressed);--ds-interaction-active:var(--color-translucent-interaction-active-brand);--ds-focus-ring-color:var(--color-translucent-interaction-focus)}.ds-interaction-fill--on-inverted.sc-ds-mobile-section-switcher-h,.ds-interaction-fill--on-inverted.sc-ds-mobile-section-switcher{--ds-interaction-hover:var(--color-inverted-interaction-hover);--ds-interaction-pressed:var(--color-inverted-interaction-pressed);--ds-interaction-active:var(--color-inverted-interaction-active-brand);--ds-focus-ring-color:var(--color-inverted-interaction-focus)}.ds-interaction-fill--on-media.sc-ds-mobile-section-switcher-h,.ds-interaction-fill--on-media.sc-ds-mobile-section-switcher{--ds-interaction-hover:var(--color-media-interaction-hover);--ds-interaction-pressed:var(--color-media-interaction-pressed);--ds-interaction-active:var(--color-media-interaction-active);--ds-focus-ring-color:var(--color-media-interaction-focus)}.ds-interaction-fill--on-always-dark.sc-ds-mobile-section-switcher-h,.ds-interaction-fill--on-always-dark.sc-ds-mobile-section-switcher{--ds-interaction-hover:var(--color-always-dark-interaction-hover);--ds-interaction-pressed:var(--color-always-dark-interaction-pressed);--ds-interaction-active:var(--color-always-dark-interaction-active-brand);--ds-focus-ring-color:var(--color-always-dark-interaction-focus)}.ds-interaction-fill--on-navigation.sc-ds-mobile-section-switcher-h,.ds-interaction-fill--on-navigation.sc-ds-mobile-section-switcher{--ds-interaction-hover:var(--color-navigation-interaction-hover);--ds-interaction-pressed:var(--color-navigation-interaction-pressed);--ds-interaction-active:var(--color-navigation-interaction-active);--ds-focus-ring-color:var(--color-navigation-interaction-focus)}@media (forced-colors: active){.ds-interaction-fill.sc-ds-mobile-section-switcher-h::after,.ds-interaction-fill.sc-ds-mobile-section-switcher::after{box-shadow:none;outline:var(--ds-interaction-border-width) solid var(--ds-forced-color-control-boundary);outline-offset:calc(-1 * var(--ds-interaction-border-width))}.ds-interaction-fill--selected.sc-ds-mobile-section-switcher-h::before,.ds-interaction-fill--selected.sc-ds-mobile-section-switcher::before{background:transparent;outline:var(--dimension-stroke-width-025) solid var(--ds-forced-color-selected);outline-offset:calc(-1 * var(--dimension-stroke-width-025))}}@media (forced-colors: active) and (hover: hover) and (pointer: fine){.ds-interaction-fill.sc-ds-mobile-section-switcher-h:hover:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after,.ds-interaction-fill.sc-ds-mobile-section-switcher:hover:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after{outline-color:var(--ds-forced-color-selected);outline-width:var(--dimension-stroke-width-012)}}.sc-ds-mobile-section-switcher-h{display:block;min-width:0;max-width:100%;color:var(--color-foreground-primary)}.mobile-section-switcher.sc-ds-mobile-section-switcher{appearance:none;display:grid;grid-template-columns:var(--dimension-size-100) minmax(0, auto) var(--dimension-size-100);align-items:center;justify-content:center;gap:var(--dimension-space-050);max-width:100%;min-height:var(--dimension-size-400);padding-inline:var(--dimension-space-100);border:0;border-radius:var(--dimension-radius-100);background:var(--color-background-secondary);color:inherit;box-sizing:border-box;cursor:default}.mobile-section-switcher--expanded.sc-ds-mobile-section-switcher{background:var(--color-background-tertiary)}.mobile-section-switcher__label.sc-ds-mobile-section-switcher{min-width:0;max-width:100%;text-align:center}.mobile-section-switcher__position.sc-ds-mobile-section-switcher{width:var(--dimension-size-050);height:var(--dimension-size-050);border-radius:var(--dimension-radius-half);background:currentColor;opacity:0}.mobile-section-switcher__position--visible.sc-ds-mobile-section-switcher{opacity:1}`;let w=0;const g=i(class i extends e{constructor(i){super();if(i!==false){this.__registerHost()}this.dsChange=s(this,"dsChange",7);this.sections=[];this.value="";this.navigationLabel="Change page section";this.menuOpen=false;this.initialFocusVisible=false;this.instanceId=w++;this.triggerId=`ds-mobile-section-switcher-trigger-${this.instanceId}`;this.menuId=`ds-mobile-section-switcher-menu-${this.instanceId}`;this.triggerEl=null;this.toggleMenu=i=>{if(this.selectableSections.length<=1)return;this.initialFocusVisible=i.detail===0;this.menuOpen=!this.menuOpen};this.closeMenu=()=>{this.menuOpen=false};this.handleSelect=i=>{const e=String(i.detail.value??"");const s=this.selectableSections.find((i=>i.id===e));if(!s||s.isInactive)return;this.closeMenu();if(e!==this.selectedSection?.id)this.dsChange.emit(e);requestAnimationFrame((()=>this.triggerEl?.focus()))}}get resolvedSections(){return this.sections??[]}get selectableSections(){return r(this.resolvedSections)}get selectedIndex(){return b(this.resolvedSections,this.value).selectedIndex}get selectedSection(){return this.selectableSections[this.selectedIndex]}get hasPrevious(){return b(this.resolvedSections,this.value).hasPrevious}get hasNext(){return b(this.resolvedSections,this.value).hasNext}get triggerAriaLabel(){return`${this.navigationLabel}. Current section: ${this.selectedSection?.label??""}`}get menuSections(){const i=[];let e=[];const s=()=>{if(e.length)i.push({items:e});e=[]};for(const i of this.resolvedSections){if(c(i)){s();continue}e.push({label:i.label,value:i.id,dot:i.dot,isSelected:i.id===this.selectedSection?.id,isInactive:i.isInactive})}s();return i}handleSectionsChange(){if(this.selectableSections.length<=1)this.closeMenu()}render(){const i=this.selectedSection;if(!i)return t(o,null);return t(o,null,t("button",{ref:i=>{this.triggerEl=i??null},id:this.triggerId,class:{"mobile-section-switcher":true,"mobile-section-switcher--expanded":this.menuOpen,"ds-focus-ring-inset":true,"ds-interaction-fill":true},type:"button","aria-haspopup":"menu","aria-controls":this.menuId,"aria-expanded":String(this.menuOpen),"aria-label":this.triggerAriaLabel,onClick:this.toggleMenu},t("span",{class:{"mobile-section-switcher__position":true,"mobile-section-switcher__position--visible":this.hasPrevious,"ds-interaction-fill__content":true},"aria-hidden":"true"}),t("ds-text",{class:"mobile-section-switcher__label ds-interaction-fill__content",as:"span",variant:"text-body-medium",emphasis:true,color:"inherit",lineTruncation:1},i.label),t("span",{class:{"mobile-section-switcher__position":true,"mobile-section-switcher__position--visible":this.hasNext,"ds-interaction-fill__content":true},"aria-hidden":"true"})),this.selectableSections.length>1?t("ds-menu",{id:this.menuId,anchorId:this.triggerId,align:"center",menuLabel:this.navigationLabel,open:this.menuOpen,initialFocusVisible:this.initialFocusVisible,sections:this.menuSections,onDsClose:this.closeMenu,onDsSelect:this.handleSelect}):null)}get el(){return this}static get watchers(){return{sections:[{handleSectionsChange:0}]}}static get style(){return m()}},[2,"ds-mobile-section-switcher",{sections:[16],value:[1],navigationLabel:[1,"navigation-label"],menuOpen:[32],initialFocusVisible:[32]},undefined,{sections:[{handleSectionsChange:0}]}]);function p(){if(typeof customElements==="undefined"){return}const i=["ds-mobile-section-switcher","ds-badge","ds-icon","ds-menu","ds-swatch-picker","ds-switch","ds-tag","ds-text"];i.forEach((i=>{switch(i){case"ds-mobile-section-switcher":if(!customElements.get(n(i))){customElements.define(n(i),g)}break;case"ds-badge":if(!customElements.get(n(i))){d()}break;case"ds-icon":if(!customElements.get(n(i))){a()}break;case"ds-menu":if(!customElements.get(n(i))){l()}break;case"ds-swatch-picker":if(!customElements.get(n(i))){h()}break;case"ds-switch":if(!customElements.get(n(i))){f()}break;case"ds-tag":if(!customElements.get(n(i))){u()}break;case"ds-text":if(!customElements.get(n(i))){v()}break}}))}p();export{g as M,p as d};
2
- //# sourceMappingURL=p-r8PMqlqm.js.map
1
+ import{p as i,H as e,c as s,h as t,a as o,t as n}from"./index.js";import{g as r,i as c}from"./p-BQq26pt9.js";import{d}from"./p-caLOcQUK.js";import{d as a}from"./p-Cea7rROU.js";import{d as l}from"./p-DBYv7fRq.js";import{d as h}from"./p-Do8wbFff.js";import{d as f}from"./p-DGkn8FwV.js";import{d as u}from"./p-DQBT1Jkf.js";import{d as v}from"./p-B-HsfQOK.js";function b(i,e){const s=r(i);const t=s.findIndex((i=>i.id===e));const o=t>=0?t:0;return{selectedIndex:o,selected:s[o],hasPrevious:o>0,hasNext:o<s.length-1}}const m=()=>`@media (forced-colors: active){.sc-ds-mobile-section-switcher:root,.sc-ds-mobile-section-switcher-h,.ds-forced-colors-scope.sc-ds-mobile-section-switcher{--ds-forced-color-surface:Canvas;--ds-forced-color-content:CanvasText;--ds-forced-color-control-boundary:ButtonText;--ds-forced-color-selected:Highlight;--ds-forced-color-on-selected:HighlightText;--ds-forced-color-disabled:GrayText}}.sc-ds-mobile-section-switcher-h{--ds-focus-ring-width:var(--dimension-stroke-width-025, 2px);--ds-focus-ring-offset:var(--dimension-space-025, 2px);--ds-focus-ring-color:var(--color-interaction-focus)}.ds-focus-ring.sc-ds-mobile-section-switcher-h,.ds-focus-ring.sc-ds-mobile-section-switcher,.ds-focus-ring-inset.sc-ds-mobile-section-switcher-h,.ds-focus-ring-inset.sc-ds-mobile-section-switcher{outline:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.ds-focus-ring.sc-ds-mobile-section-switcher-h:focus-visible,.ds-focus-ring.sc-ds-mobile-section-switcher:focus-visible{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:var(--ds-focus-ring-offset)}.ds-focus-ring.ds-focus-ring--visible.sc-ds-mobile-section-switcher-h,.ds-focus-ring.ds-focus-ring--visible.sc-ds-mobile-section-switcher{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:var(--ds-focus-ring-offset)}.ds-focus-ring-inset.sc-ds-mobile-section-switcher-h:focus-visible,.ds-focus-ring-inset.sc-ds-mobile-section-switcher:focus-visible{outline:none}.ds-focus-ring-inset.sc-ds-mobile-section-switcher-h:focus-visible::after,.ds-focus-ring-inset.sc-ds-mobile-section-switcher:focus-visible::after{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:calc(-1 * var(--ds-focus-ring-width))}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-mobile-section-switcher-h,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-mobile-section-switcher{outline:none}.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-mobile-section-switcher-h::after,.ds-focus-ring-inset.ds-focus-ring--visible.sc-ds-mobile-section-switcher::after{outline:var(--ds-focus-ring-width) solid var(--ds-focus-ring-color);outline-offset:calc(-1 * var(--ds-focus-ring-width))}@media (forced-colors: active){.sc-ds-mobile-section-switcher-h{--ds-focus-ring-color:var(--ds-forced-color-selected)}}@media (forced-colors: active){.sc-ds-mobile-section-switcher:root,.sc-ds-mobile-section-switcher-h,.ds-forced-colors-scope.sc-ds-mobile-section-switcher{--ds-forced-color-surface:Canvas;--ds-forced-color-content:CanvasText;--ds-forced-color-control-boundary:ButtonText;--ds-forced-color-selected:Highlight;--ds-forced-color-on-selected:HighlightText;--ds-forced-color-disabled:GrayText}}.ds-interaction-fill.sc-ds-mobile-section-switcher-h,.ds-interaction-fill.sc-ds-mobile-section-switcher{position:var(--ds-interaction-position, relative);z-index:var(--ds-interaction-z-index, 0);cursor:default;--ds-interaction-hover:var(--color-interaction-hover);--ds-interaction-pressed:var(--color-interaction-pressed);--ds-interaction-active:var(--color-interaction-active-brand);--ds-interaction-border-width:0px;--ds-interaction-border-color:transparent;--ds-interaction-divider-width:0px;--ds-interaction-divider-color:transparent;--ds-interaction-divider-inline-start-width:0px;--ds-interaction-divider-inline-start-color:transparent;--ds-interaction-divider-inline-end-width:0px;--ds-interaction-divider-inline-end-color:transparent}.ds-interaction-fill.sc-ds-mobile-section-switcher-h::before,.ds-interaction-fill.sc-ds-mobile-section-switcher::before,.ds-interaction-fill.sc-ds-mobile-section-switcher-h::after,.ds-interaction-fill.sc-ds-mobile-section-switcher::after{content:'';position:absolute;inset:0;border-radius:inherit;background:transparent;pointer-events:none;cursor:inherit;transition:none}.ds-interaction-fill.sc-ds-mobile-section-switcher-h::before,.ds-interaction-fill.sc-ds-mobile-section-switcher::before{z-index:1}.ds-interaction-fill.sc-ds-mobile-section-switcher-h::after,.ds-interaction-fill.sc-ds-mobile-section-switcher::after{z-index:3;box-shadow:inset 0 calc(-1 * var(--ds-interaction-divider-width)) 0 var(--ds-interaction-divider-color), inset var(--ds-interaction-divider-inline-start-width) 0 0 var(--ds-interaction-divider-inline-start-color), inset calc(-1 * var(--ds-interaction-divider-inline-end-width)) 0 0 var(--ds-interaction-divider-inline-end-color), inset 0 0 0 var(--ds-interaction-border-width) var(--ds-interaction-border-color)}.ds-interaction-fill--bordered.sc-ds-mobile-section-switcher-h,.ds-interaction-fill--bordered.sc-ds-mobile-section-switcher{--ds-interaction-border-width:var(--dimension-stroke-width-012);--ds-interaction-border-color:var(--color-border-secondary)}.ds-interaction-fill--selected.sc-ds-mobile-section-switcher-h::before,.ds-interaction-fill--selected.sc-ds-mobile-section-switcher::before{background:var(--ds-interaction-active)}.ds-interaction-fill--selected.sc-ds-mobile-section-switcher-h,.ds-interaction-fill--selected.sc-ds-mobile-section-switcher{--ds-interaction-dot-ring:var(--ds-interaction-active)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill.sc-ds-mobile-section-switcher-h:hover:not(:disabled)::after,.ds-interaction-fill.sc-ds-mobile-section-switcher:hover:not(:disabled)::after{background:var(--ds-interaction-hover)}}.ds-interaction-fill.sc-ds-mobile-section-switcher-h:active:not(:disabled)::after,.ds-interaction-fill.sc-ds-mobile-section-switcher:active:not(:disabled)::after{background:var(--ds-interaction-pressed)}.ds-interaction-fill--grouped.sc-ds-mobile-section-switcher-h::after,.ds-interaction-fill--grouped.sc-ds-mobile-section-switcher::after,.ds-interaction-fill--grouped.sc-ds-mobile-section-switcher-h:active:not(:disabled)::after,.ds-interaction-fill--grouped.sc-ds-mobile-section-switcher:active:not(:disabled)::after{background:var(--ds-interaction-group-fill, transparent)}@media (hover: hover) and (pointer: fine){.ds-interaction-fill--grouped.sc-ds-mobile-section-switcher-h:hover:not(:disabled)::after,.ds-interaction-fill--grouped.sc-ds-mobile-section-switcher:hover:not(:disabled)::after{background:var(--ds-interaction-group-fill, transparent)}}.ds-interaction-fill--grouped.sc-ds-mobile-section-switcher-h,.ds-interaction-fill--grouped.sc-ds-mobile-section-switcher{--ds-interaction-divider-width:var(--ds-interaction-group-divider-width, 0px);--ds-interaction-divider-color:var(--ds-interaction-group-divider-color, transparent);--ds-interaction-divider-inline-start-width:var( --ds-interaction-group-divider-inline-start-width, 0px );--ds-interaction-divider-inline-start-color:var( --ds-interaction-group-divider-inline-start-color, transparent );--ds-interaction-divider-inline-end-width:var( --ds-interaction-group-divider-inline-end-width, 0px );--ds-interaction-divider-inline-end-color:var( --ds-interaction-group-divider-inline-end-color, transparent )}.ds-interaction-fill.sc-ds-mobile-section-switcher-h>.ds-interaction-fill__content.sc-ds-mobile-section-switcher,.ds-interaction-fill.sc-ds-mobile-section-switcher>.ds-interaction-fill__content.sc-ds-mobile-section-switcher,.ds-interaction-fill__content.sc-ds-mobile-section-switcher{position:relative;z-index:2;cursor:inherit}.ds-interaction-fill--on-faint.sc-ds-mobile-section-switcher-h,.ds-interaction-fill--on-faint.sc-ds-mobile-section-switcher{--ds-interaction-active:var(--color-interaction-active)}.ds-interaction-fill--on-medium.sc-ds-mobile-section-switcher-h,.ds-interaction-fill--on-medium.sc-ds-mobile-section-switcher{--ds-interaction-hover:var(--color-interaction-on-medium-background-hover);--ds-interaction-pressed:var(--color-interaction-on-medium-background-pressed);--ds-interaction-active:var(--color-interaction-on-medium-background-active);--ds-focus-ring-color:var(--color-interaction-on-medium-background-focus)}.ds-interaction-fill--on-bold.sc-ds-mobile-section-switcher-h,.ds-interaction-fill--on-bold.sc-ds-mobile-section-switcher{--ds-interaction-hover:var(--color-interaction-on-bold-background-hover);--ds-interaction-pressed:var(--color-interaction-on-bold-background-pressed);--ds-interaction-active:var(--color-interaction-on-bold-background-active);--ds-focus-ring-color:var(--color-interaction-on-bold-background-focus)}.ds-interaction-fill--on-strong.sc-ds-mobile-section-switcher-h,.ds-interaction-fill--on-strong.sc-ds-mobile-section-switcher{--ds-interaction-hover:var(--color-interaction-on-strong-background-hover);--ds-interaction-pressed:var(--color-interaction-on-strong-background-pressed);--ds-interaction-active:var(--color-interaction-on-strong-background-active);--ds-focus-ring-color:var(--color-interaction-on-strong-background-focus)}.ds-interaction-fill--on-translucent.sc-ds-mobile-section-switcher-h,.ds-interaction-fill--on-translucent.sc-ds-mobile-section-switcher{--ds-interaction-hover:var(--color-translucent-interaction-hover);--ds-interaction-pressed:var(--color-translucent-interaction-pressed);--ds-interaction-active:var(--color-translucent-interaction-active-brand);--ds-focus-ring-color:var(--color-translucent-interaction-focus)}.ds-interaction-fill--on-inverted.sc-ds-mobile-section-switcher-h,.ds-interaction-fill--on-inverted.sc-ds-mobile-section-switcher{--ds-interaction-hover:var(--color-inverted-interaction-hover);--ds-interaction-pressed:var(--color-inverted-interaction-pressed);--ds-interaction-active:var(--color-inverted-interaction-active-brand);--ds-focus-ring-color:var(--color-inverted-interaction-focus)}.ds-interaction-fill--on-media.sc-ds-mobile-section-switcher-h,.ds-interaction-fill--on-media.sc-ds-mobile-section-switcher{--ds-interaction-hover:var(--color-media-interaction-hover);--ds-interaction-pressed:var(--color-media-interaction-pressed);--ds-interaction-active:var(--color-media-interaction-active);--ds-focus-ring-color:var(--color-media-interaction-focus)}.ds-interaction-fill--on-always-dark.sc-ds-mobile-section-switcher-h,.ds-interaction-fill--on-always-dark.sc-ds-mobile-section-switcher{--ds-interaction-hover:var(--color-always-dark-interaction-hover);--ds-interaction-pressed:var(--color-always-dark-interaction-pressed);--ds-interaction-active:var(--color-always-dark-interaction-active-brand);--ds-focus-ring-color:var(--color-always-dark-interaction-focus)}.ds-interaction-fill--on-navigation.sc-ds-mobile-section-switcher-h,.ds-interaction-fill--on-navigation.sc-ds-mobile-section-switcher{--ds-interaction-hover:var(--color-navigation-interaction-hover);--ds-interaction-pressed:var(--color-navigation-interaction-pressed);--ds-interaction-active:var(--color-navigation-interaction-active);--ds-focus-ring-color:var(--color-navigation-interaction-focus)}@media (forced-colors: active){.ds-interaction-fill.sc-ds-mobile-section-switcher-h::after,.ds-interaction-fill.sc-ds-mobile-section-switcher::after{box-shadow:none;outline:var(--ds-interaction-border-width) solid var(--ds-forced-color-control-boundary);outline-offset:calc(-1 * var(--ds-interaction-border-width))}.ds-interaction-fill--selected.sc-ds-mobile-section-switcher-h::before,.ds-interaction-fill--selected.sc-ds-mobile-section-switcher::before{background:transparent;outline:var(--dimension-stroke-width-025) solid var(--ds-forced-color-selected);outline-offset:calc(-1 * var(--dimension-stroke-width-025))}}@media (forced-colors: active) and (hover: hover) and (pointer: fine){.ds-interaction-fill.sc-ds-mobile-section-switcher-h:hover:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after,.ds-interaction-fill.sc-ds-mobile-section-switcher:hover:not(:disabled):not(:focus-visible):not(:focus-within):not(.ds-focus-ring--visible)::after{outline-color:var(--ds-forced-color-selected);outline-width:var(--dimension-stroke-width-012)}}.sc-ds-mobile-section-switcher-h{display:block;min-width:0;max-width:100%;color:var(--color-foreground-primary)}.mobile-section-switcher.sc-ds-mobile-section-switcher{appearance:none;display:grid;grid-template-columns:var(--dimension-size-100) minmax(0, auto) var(--dimension-size-100);align-items:center;justify-content:center;gap:var(--dimension-space-050);max-width:100%;min-height:var(--dimension-size-400);padding-inline:var(--dimension-space-100);border:0;border-radius:var(--dimension-radius-100);background:var(--color-background-secondary);color:inherit;box-sizing:border-box;cursor:default}.mobile-section-switcher--expanded.sc-ds-mobile-section-switcher{background:var(--color-background-tertiary)}.mobile-section-switcher__label.sc-ds-mobile-section-switcher{min-width:0;max-width:100%;text-align:center}.mobile-section-switcher__position.sc-ds-mobile-section-switcher{width:var(--dimension-size-050);height:var(--dimension-size-050);border-radius:var(--dimension-radius-half);background:currentColor;opacity:0}.mobile-section-switcher__position--visible.sc-ds-mobile-section-switcher{opacity:1}`;let w=0;const g=i(class i extends e{constructor(i){super();if(i!==false){this.__registerHost()}this.dsChange=s(this,"dsChange",7);this.sections=[];this.value="";this.navigationLabel="Change page section";this.menuOpen=false;this.initialFocusVisible=false;this.instanceId=w++;this.triggerId=`ds-mobile-section-switcher-trigger-${this.instanceId}`;this.menuId=`ds-mobile-section-switcher-menu-${this.instanceId}`;this.triggerEl=null;this.toggleMenu=i=>{if(this.selectableSections.length<=1)return;this.initialFocusVisible=i.detail===0;this.menuOpen=!this.menuOpen};this.closeMenu=()=>{this.menuOpen=false};this.handleSelect=i=>{const e=String(i.detail.value??"");const s=this.selectableSections.find((i=>i.id===e));if(!s||s.isInactive)return;this.closeMenu();if(e!==this.selectedSection?.id)this.dsChange.emit(e);requestAnimationFrame((()=>this.triggerEl?.focus()))}}get resolvedSections(){return this.sections??[]}get selectableSections(){return r(this.resolvedSections)}get selectedIndex(){return b(this.resolvedSections,this.value).selectedIndex}get selectedSection(){return this.selectableSections[this.selectedIndex]}get hasPrevious(){return b(this.resolvedSections,this.value).hasPrevious}get hasNext(){return b(this.resolvedSections,this.value).hasNext}get triggerAriaLabel(){return`${this.navigationLabel}. Current section: ${this.selectedSection?.label??""}`}get menuSections(){const i=[];let e=[];const s=()=>{if(e.length)i.push({items:e});e=[]};for(const i of this.resolvedSections){if(c(i)){s();continue}e.push({label:i.label,value:i.id,dot:i.dot,isSelected:i.id===this.selectedSection?.id,isInactive:i.isInactive})}s();return i}handleSectionsChange(){if(this.selectableSections.length<=1)this.closeMenu()}render(){const i=this.selectedSection;if(!i)return t(o,null);return t(o,null,t("button",{ref:i=>{this.triggerEl=i??null},id:this.triggerId,class:{"mobile-section-switcher":true,"mobile-section-switcher--expanded":this.menuOpen,"ds-focus-ring-inset":true,"ds-interaction-fill":true},type:"button","aria-haspopup":"menu","aria-controls":this.menuId,"aria-expanded":String(this.menuOpen),"aria-label":this.triggerAriaLabel,onClick:this.toggleMenu},t("span",{class:{"mobile-section-switcher__position":true,"mobile-section-switcher__position--visible":this.hasPrevious,"ds-interaction-fill__content":true},"aria-hidden":"true"}),t("ds-text",{class:"mobile-section-switcher__label ds-interaction-fill__content",as:"span",variant:"text-body-medium",emphasis:true,color:"inherit",lineTruncation:1},i.label),t("span",{class:{"mobile-section-switcher__position":true,"mobile-section-switcher__position--visible":this.hasNext,"ds-interaction-fill__content":true},"aria-hidden":"true"})),this.selectableSections.length>1?t("ds-menu",{id:this.menuId,anchorId:this.triggerId,align:"center",menuLabel:this.navigationLabel,open:this.menuOpen,initialFocusVisible:this.initialFocusVisible,sections:this.menuSections,onDsClose:this.closeMenu,onDsSelect:this.handleSelect}):null)}get el(){return this}static get watchers(){return{sections:[{handleSectionsChange:0}]}}static get style(){return m()}},[2,"ds-mobile-section-switcher",{sections:[16],value:[1],navigationLabel:[1,"navigation-label"],menuOpen:[32],initialFocusVisible:[32]},undefined,{sections:[{handleSectionsChange:0}]}]);function p(){if(typeof customElements==="undefined"){return}const i=["ds-mobile-section-switcher","ds-badge","ds-icon","ds-menu","ds-swatch-picker","ds-switch","ds-tag","ds-text"];i.forEach((i=>{switch(i){case"ds-mobile-section-switcher":if(!customElements.get(n(i))){customElements.define(n(i),g)}break;case"ds-badge":if(!customElements.get(n(i))){d()}break;case"ds-icon":if(!customElements.get(n(i))){a()}break;case"ds-menu":if(!customElements.get(n(i))){l()}break;case"ds-swatch-picker":if(!customElements.get(n(i))){h()}break;case"ds-switch":if(!customElements.get(n(i))){f()}break;case"ds-tag":if(!customElements.get(n(i))){u()}break;case"ds-text":if(!customElements.get(n(i))){v()}break}}))}p();export{g as M,p as d};
2
+ //# sourceMappingURL=p-BmssRAEZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["resolveMobileSectionPosition","sections","value","selectable","getSelectableTabs","matchedIndex","findIndex","section","id","selectedIndex","selected","hasPrevious","hasNext","length","mobileSectionSwitcherCss","nextMobileSectionSwitcherId","MobileSectionSwitcher","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","navigationLabel","menuOpen","initialFocusVisible","instanceId","triggerId","menuId","triggerEl","toggleMenu","event","selectableSections","detail","closeMenu","handleSelect","String","find","candidate","isInactive","selectedSection","dsChange","emit","requestAnimationFrame","focus","resolvedSections","triggerAriaLabel","label","menuSections","groups","items","commit","push","isTabDivider","dot","isSelected","handleSectionsChange","render","h","Host","ref","element","class","type","onClick","as","variant","emphasis","color","lineTruncation","anchorId","align","menuLabel","open","onDsClose","onDsSelect"],"sources":["src/wc/components/MobileSectionSwitcher/mobile-section-switcher-utils.ts","src/wc/components/MobileSectionSwitcher/MobileSectionSwitcher.css?tag=ds-mobile-section-switcher&encapsulation=scoped","src/wc/components/MobileSectionSwitcher/MobileSectionSwitcher.tsx"],"sourcesContent":["import { getSelectableTabs, type TabItem, type TabItemTab } from '../TabGroup/tab-item-utils';\n\nexport interface MobileSectionPosition {\n selectedIndex: number;\n selected?: TabItemTab;\n hasPrevious: boolean;\n hasNext: boolean;\n}\n\n/** Resolve ordered selectable neighbors while ignoring visual divider entries. */\nexport function resolveMobileSectionPosition(\n sections: TabItem[],\n value: string\n): MobileSectionPosition {\n const selectable = getSelectableTabs(sections);\n const matchedIndex = selectable.findIndex(section => section.id === value);\n const selectedIndex = matchedIndex >= 0 ? matchedIndex : 0;\n return {\n selectedIndex,\n selected: selectable[selectedIndex],\n hasPrevious: selectedIndex > 0,\n hasNext: selectedIndex < selectable.length - 1,\n };\n}\n","@import '../../utils/focus-ring.css';\n@import '../../utils/interaction-fill.css';\n\n:host {\n display: block;\n min-width: 0;\n max-width: 100%;\n color: var(--color-foreground-primary);\n}\n\n.mobile-section-switcher {\n appearance: none;\n display: grid;\n grid-template-columns: var(--dimension-size-100) minmax(0, auto) var(--dimension-size-100);\n align-items: center;\n justify-content: center;\n gap: var(--dimension-space-050);\n max-width: 100%;\n min-height: var(--dimension-size-400);\n padding-inline: var(--dimension-space-100);\n border: 0;\n border-radius: var(--dimension-radius-100);\n background: var(--color-background-secondary);\n color: inherit;\n box-sizing: border-box;\n cursor: default;\n}\n\n.mobile-section-switcher--expanded {\n background: var(--color-background-tertiary);\n}\n\n.mobile-section-switcher__label {\n min-width: 0;\n max-width: 100%;\n text-align: center;\n}\n\n.mobile-section-switcher__position {\n width: var(--dimension-size-050);\n height: var(--dimension-size-050);\n border-radius: var(--dimension-radius-half);\n background: currentColor;\n opacity: 0;\n}\n\n.mobile-section-switcher__position--visible {\n opacity: 1;\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport type { MenuItemData, MenuSection } from '../Menu/menu-types';\nimport {\n getSelectableTabs,\n isTabDivider,\n type TabItem,\n type TabItemTab,\n} from '../TabGroup/tab-item-utils';\nimport { resolveMobileSectionPosition } from './mobile-section-switcher-utils';\n\nlet nextMobileSectionSwitcherId = 0;\n\n@Component({\n tag: 'ds-mobile-section-switcher',\n styleUrl: 'MobileSectionSwitcher.css',\n scoped: true,\n})\nexport class MobileSectionSwitcher {\n @Element() el!: HTMLElement;\n\n /** Ordered controlled sections. Divider entries group the popup menu. */\n @Prop() sections: TabItem[] = [];\n /** Controlled selected section id. */\n @Prop() value: string = '';\n /** Accessible name for the section chooser. */\n @Prop() navigationLabel: string = 'Change page section';\n\n /** Selection intent. The route, tool, or workflow owner updates `value`. */\n @Event() dsChange!: EventEmitter<string>;\n\n @State() private menuOpen = false;\n @State() private initialFocusVisible = false;\n\n private readonly instanceId = nextMobileSectionSwitcherId++;\n private readonly triggerId = `ds-mobile-section-switcher-trigger-${this.instanceId}`;\n private readonly menuId = `ds-mobile-section-switcher-menu-${this.instanceId}`;\n private triggerEl: HTMLButtonElement | null = null;\n\n private get resolvedSections(): TabItem[] {\n return this.sections ?? [];\n }\n\n private get selectableSections(): TabItemTab[] {\n return getSelectableTabs(this.resolvedSections);\n }\n\n private get selectedIndex(): number {\n return resolveMobileSectionPosition(this.resolvedSections, this.value).selectedIndex;\n }\n\n private get selectedSection(): TabItemTab | undefined {\n return this.selectableSections[this.selectedIndex];\n }\n\n private get hasPrevious(): boolean {\n return resolveMobileSectionPosition(this.resolvedSections, this.value).hasPrevious;\n }\n\n private get hasNext(): boolean {\n return resolveMobileSectionPosition(this.resolvedSections, this.value).hasNext;\n }\n\n private get triggerAriaLabel(): string {\n return `${this.navigationLabel}. Current section: ${this.selectedSection?.label ?? ''}`;\n }\n\n private get menuSections(): MenuSection[] {\n const groups: MenuSection[] = [];\n let items: MenuItemData[] = [];\n const commit = () => {\n if (items.length) groups.push({ items });\n items = [];\n };\n\n for (const section of this.resolvedSections) {\n if (isTabDivider(section)) {\n commit();\n continue;\n }\n items.push({\n label: section.label,\n value: section.id,\n dot: section.dot,\n isSelected: section.id === this.selectedSection?.id,\n isInactive: section.isInactive,\n });\n }\n commit();\n return groups;\n }\n\n @Watch('sections')\n handleSectionsChange() {\n if (this.selectableSections.length <= 1) this.closeMenu();\n }\n\n private toggleMenu = (event: MouseEvent) => {\n if (this.selectableSections.length <= 1) return;\n this.initialFocusVisible = event.detail === 0;\n this.menuOpen = !this.menuOpen;\n };\n\n private closeMenu = () => {\n this.menuOpen = false;\n };\n\n private handleSelect = (event: CustomEvent<MenuItemData>) => {\n const id = String(event.detail.value ?? '');\n const section = this.selectableSections.find(candidate => candidate.id === id);\n if (!section || section.isInactive) return;\n this.closeMenu();\n if (id !== this.selectedSection?.id) this.dsChange.emit(id);\n requestAnimationFrame(() => this.triggerEl?.focus());\n };\n\n render() {\n const selected = this.selectedSection;\n if (!selected) return <Host />;\n\n return (\n <Host>\n <button\n ref={element => {\n this.triggerEl = element ?? null;\n }}\n id={this.triggerId}\n class={{\n 'mobile-section-switcher': true,\n 'mobile-section-switcher--expanded': this.menuOpen,\n 'ds-focus-ring-inset': true,\n 'ds-interaction-fill': true,\n }}\n type=\"button\"\n aria-haspopup=\"menu\"\n aria-controls={this.menuId}\n aria-expanded={String(this.menuOpen)}\n aria-label={this.triggerAriaLabel}\n onClick={this.toggleMenu}\n >\n <span\n class={{\n 'mobile-section-switcher__position': true,\n 'mobile-section-switcher__position--visible': this.hasPrevious,\n 'ds-interaction-fill__content': true,\n }}\n aria-hidden=\"true\"\n />\n <ds-text\n class=\"mobile-section-switcher__label ds-interaction-fill__content\"\n as=\"span\"\n variant=\"text-body-medium\"\n emphasis\n color=\"inherit\"\n lineTruncation={1}\n >\n {selected.label}\n </ds-text>\n <span\n class={{\n 'mobile-section-switcher__position': true,\n 'mobile-section-switcher__position--visible': this.hasNext,\n 'ds-interaction-fill__content': true,\n }}\n aria-hidden=\"true\"\n />\n </button>\n\n {this.selectableSections.length > 1 ? (\n <ds-menu\n id={this.menuId}\n anchorId={this.triggerId}\n align=\"center\"\n menuLabel={this.navigationLabel}\n open={this.menuOpen}\n initialFocusVisible={this.initialFocusVisible}\n sections={this.menuSections}\n onDsClose={this.closeMenu}\n onDsSelect={this.handleSelect}\n />\n ) : null}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import{p as d,H as i,h as e,a as r,t as s}from"./index.js";const o=()=>`@media (forced-colors: active){.sc-ds-divider:root,.sc-ds-divider-h,.ds-forced-colors-scope.sc-ds-divider{--ds-forced-color-surface:Canvas;--ds-forced-color-content:CanvasText;--ds-forced-color-control-boundary:ButtonText;--ds-forced-color-selected:Highlight;--ds-forced-color-on-selected:HighlightText;--ds-forced-color-disabled:GrayText}}.sc-ds-divider-h{--_divider-color:var(--color-divider-divider);--_divider-inset:0;--_divider-length:100%;display:block;flex-shrink:0;width:var(--_divider-length);height:var(--dimension-stroke-width-012);margin:0 var(--_divider-inset);border:none;background-color:var(--_divider-color)}.divider--vertical.sc-ds-divider-h{width:var(--dimension-stroke-width-012);height:var(--_divider-length);min-height:var(--dimension-stroke-width-012);margin:var(--_divider-inset) 0;align-self:stretch}.divider--vertical.divider--custom-length.sc-ds-divider-h{align-self:center}[background='bold'].sc-ds-divider-h,.divider--background-bold.sc-ds-divider-h{--_divider-color:var(--color-divider-divider-on-bold-background)}[background='strong'].sc-ds-divider-h,.divider--background-strong.sc-ds-divider-h{--_divider-color:var(--color-divider-divider-on-strong-background)}[background='medium'].sc-ds-divider-h,.divider--background-medium.sc-ds-divider-h{--_divider-color:var(--color-divider-divider-on-medium-background)}[background='translucent'].sc-ds-divider-h,.divider--background-translucent.sc-ds-divider-h{--_divider-color:var(--color-translucent-divider)}[background='navigation'].sc-ds-divider-h,.divider--background-navigation.sc-ds-divider-h{--_divider-color:var(--color-navigation-divider)}[background='media'].sc-ds-divider-h,.divider--background-media.sc-ds-divider-h{--_divider-color:var(--color-media-divider)}[background='always-dark'].sc-ds-divider-h,.divider--background-always-dark.sc-ds-divider-h{--_divider-color:var(--color-always-dark-divider)}[background='inverted'].sc-ds-divider-h,.divider--background-inverted.sc-ds-divider-h{--_divider-color:var(--color-inverted-divider)}@media (forced-colors: active){.sc-ds-divider-h{background-color:var(--ds-forced-color-content)}}`;const c={none:"0","space-000":"var(--dimension-space-000)","space-012":"var(--dimension-space-012)","space-025":"var(--dimension-space-025)","space-050":"var(--dimension-space-050)","space-075":"var(--dimension-space-075)","space-100":"var(--dimension-space-100)","space-125":"var(--dimension-space-125)","space-150":"var(--dimension-space-150)","space-175":"var(--dimension-space-175)","space-200":"var(--dimension-space-200)","space-250":"var(--dimension-space-250)","space-300":"var(--dimension-space-300)","space-400":"var(--dimension-space-400)","space-600":"var(--dimension-space-600)","space-800":"var(--dimension-space-800)"};const a=d(class d extends i{constructor(d){super();if(d!==false){this.__registerHost()}this.orientation="horizontal";this.inset="none";this.length="auto";this.semantic=false}resolveInset(){return Object.prototype.hasOwnProperty.call(c,this.inset)?c[this.inset]:this.inset}resolveLength(){return this.length==="auto"||this.length==="full"?"100%":this.length}render(){const d=this.orientation==="vertical";const i=this.length!=="auto"&&this.length!=="full";return e(r,{key:"bc467db6c914158d4ea17858fc1a8dee79bc8a11",role:this.semantic?"separator":undefined,"aria-orientation":this.semantic?this.orientation:undefined,"aria-hidden":this.semantic?undefined:"true",class:{divider:true,"divider--vertical":d,"divider--custom-length":i,[`divider--background-${this.background}`]:!!this.background},style:{"--_divider-inset":this.resolveInset(),"--_divider-length":this.resolveLength()}})}static get style(){return o()}},[2,"ds-divider",{orientation:[1],background:[1],inset:[1],length:[1],semantic:[4]}]);function n(){if(typeof customElements==="undefined"){return}const d=["ds-divider"];d.forEach((d=>{switch(d){case"ds-divider":if(!customElements.get(s(d))){customElements.define(s(d),a)}break}}))}n();export{a as D,n as d};
2
- //# sourceMappingURL=p-BNkU9dcc.js.map
1
+ import{p as d,H as i,h as e,a as r,t as s}from"./index.js";const o=()=>`@media (forced-colors: active){.sc-ds-divider:root,.sc-ds-divider-h,.ds-forced-colors-scope.sc-ds-divider{--ds-forced-color-surface:Canvas;--ds-forced-color-content:CanvasText;--ds-forced-color-control-boundary:ButtonText;--ds-forced-color-selected:Highlight;--ds-forced-color-on-selected:HighlightText;--ds-forced-color-disabled:GrayText}}.sc-ds-divider-h{--_divider-color:var(--color-divider-divider);--_divider-inset:0;--_divider-length:100%;display:block;flex-shrink:0;width:var(--_divider-length);height:var(--dimension-stroke-width-012);margin:0 var(--_divider-inset);border:none;background-color:var(--_divider-color)}.divider--vertical.sc-ds-divider-h{width:var(--dimension-stroke-width-012);height:var(--_divider-length);min-height:var(--dimension-stroke-width-012);margin:var(--_divider-inset) 0;align-self:stretch}.divider--vertical.divider--custom-length.sc-ds-divider-h{align-self:center}[background='bold'].sc-ds-divider-h,.divider--background-bold.sc-ds-divider-h{--_divider-color:var(--color-divider-divider-on-bold-background)}[background='strong'].sc-ds-divider-h,.divider--background-strong.sc-ds-divider-h{--_divider-color:var(--color-divider-divider-on-strong-background)}[background='medium'].sc-ds-divider-h,.divider--background-medium.sc-ds-divider-h{--_divider-color:var(--color-divider-divider-on-medium-background)}[background='translucent'].sc-ds-divider-h,.divider--background-translucent.sc-ds-divider-h{--_divider-color:var(--color-translucent-divider)}[background='navigation'].sc-ds-divider-h,.divider--background-navigation.sc-ds-divider-h{--_divider-color:var(--color-navigation-divider)}[background='media'].sc-ds-divider-h,.divider--background-media.sc-ds-divider-h{--_divider-color:var(--color-media-divider)}[background='always-dark'].sc-ds-divider-h,.divider--background-always-dark.sc-ds-divider-h{--_divider-color:var(--color-always-dark-divider)}[background='inverted'].sc-ds-divider-h,.divider--background-inverted.sc-ds-divider-h{--_divider-color:var(--color-inverted-divider)}@media (forced-colors: active){.sc-ds-divider-h{background-color:var(--ds-forced-color-content)}}`;const c={none:"0","space-000":"var(--dimension-space-000)","space-012":"var(--dimension-space-012)","space-025":"var(--dimension-space-025)","space-050":"var(--dimension-space-050)","space-075":"var(--dimension-space-075)","space-100":"var(--dimension-space-100)","space-125":"var(--dimension-space-125)","space-150":"var(--dimension-space-150)","space-175":"var(--dimension-space-175)","space-200":"var(--dimension-space-200)","space-250":"var(--dimension-space-250)","space-300":"var(--dimension-space-300)","space-400":"var(--dimension-space-400)","space-600":"var(--dimension-space-600)","space-800":"var(--dimension-space-800)"};const a=d(class d extends i{constructor(d){super();if(d!==false){this.__registerHost()}this.orientation="horizontal";this.inset="none";this.length="auto";this.semantic=false}resolveInset(){return Object.prototype.hasOwnProperty.call(c,this.inset)?c[this.inset]:this.inset}resolveLength(){return this.length==="auto"||this.length==="full"?"100%":this.length}render(){const d=this.orientation==="vertical";const i=this.length!=="auto"&&this.length!=="full";return e(r,{key:"a568a2a9c68bcfdc268fe9bb5c848f88cd7e5ec5",role:this.semantic?"separator":undefined,"aria-orientation":this.semantic?this.orientation:undefined,"aria-hidden":this.semantic?undefined:"true",class:{divider:true,"divider--vertical":d,"divider--custom-length":i,[`divider--background-${this.background}`]:!!this.background},style:{"--_divider-inset":this.resolveInset(),"--_divider-length":this.resolveLength()}})}static get style(){return o()}},[2,"ds-divider",{orientation:[1],background:[1],inset:[1],length:[1],semantic:[4]}]);function n(){if(typeof customElements==="undefined"){return}const d=["ds-divider"];d.forEach((d=>{switch(d){case"ds-divider":if(!customElements.get(s(d))){customElements.define(s(d),a)}break}}))}n();export{a as D,n as d};
2
+ //# sourceMappingURL=p-Bv6FSDPR.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["dividerCss","INSET_VALUE","none","Divider","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","orientation","inset","length","semantic","resolveInset","Object","prototype","hasOwnProperty","call","resolveLength","render","isVertical","hasCustomLength","h","Host","key","role","undefined","class","divider","background","style"],"sources":["src/wc/components/Divider/Divider.css?tag=ds-divider&encapsulation=scoped","src/wc/components/Divider/Divider.tsx"],"sourcesContent":["@import '../../utils/forced-colors.css';\n\n:host {\n --_divider-color: var(--color-divider-divider);\n --_divider-inset: 0;\n --_divider-length: 100%;\n\n display: block;\n flex-shrink: 0;\n width: var(--_divider-length);\n height: var(--dimension-stroke-width-012);\n margin: 0 var(--_divider-inset);\n border: none;\n background-color: var(--_divider-color);\n}\n\n:host(.divider--vertical) {\n width: var(--dimension-stroke-width-012);\n height: var(--_divider-length);\n min-height: var(--dimension-stroke-width-012);\n margin: var(--_divider-inset) 0;\n align-self: stretch;\n}\n\n:host(.divider--vertical.divider--custom-length) {\n align-self: center;\n}\n\n:host([background='bold']),\n:host(.divider--background-bold) {\n --_divider-color: var(--color-divider-divider-on-bold-background);\n}\n\n:host([background='strong']),\n:host(.divider--background-strong) {\n --_divider-color: var(--color-divider-divider-on-strong-background);\n}\n\n:host([background='medium']),\n:host(.divider--background-medium) {\n --_divider-color: var(--color-divider-divider-on-medium-background);\n}\n\n:host([background='translucent']),\n:host(.divider--background-translucent) {\n --_divider-color: var(--color-translucent-divider);\n}\n\n:host([background='navigation']),\n:host(.divider--background-navigation) {\n --_divider-color: var(--color-navigation-divider);\n}\n\n:host([background='media']),\n:host(.divider--background-media) {\n --_divider-color: var(--color-media-divider);\n}\n\n:host([background='always-dark']),\n:host(.divider--background-always-dark) {\n --_divider-color: var(--color-always-dark-divider);\n}\n\n:host([background='inverted']),\n:host(.divider--background-inverted) {\n --_divider-color: var(--color-inverted-divider);\n}\n\n@media (forced-colors: active) {\n :host {\n background-color: var(--ds-forced-color-content);\n }\n}\n","import { Component, Prop, h, Host } from '@stencil/core';\n\nexport type DividerOrientation = 'horizontal' | 'vertical';\nexport type DividerBackground =\n | 'faint'\n | 'medium'\n | 'bold'\n | 'strong'\n | 'translucent'\n | 'inverted'\n | 'media'\n | 'navigation'\n | 'always-dark';\nexport type DividerInsetToken =\n | 'space-000'\n | 'space-012'\n | 'space-025'\n | 'space-050'\n | 'space-075'\n | 'space-100'\n | 'space-125'\n | 'space-150'\n | 'space-175'\n | 'space-200'\n | 'space-250'\n | 'space-300'\n | 'space-400'\n | 'space-600'\n | 'space-800';\nexport type DividerInset = 'none' | DividerInsetToken | (string & {});\nexport type DividerLength = 'auto' | 'full' | (string & {});\n\nconst INSET_VALUE: Record<'none' | DividerInsetToken, string> = {\n none: '0',\n 'space-000': 'var(--dimension-space-000)',\n 'space-012': 'var(--dimension-space-012)',\n 'space-025': 'var(--dimension-space-025)',\n 'space-050': 'var(--dimension-space-050)',\n 'space-075': 'var(--dimension-space-075)',\n 'space-100': 'var(--dimension-space-100)',\n 'space-125': 'var(--dimension-space-125)',\n 'space-150': 'var(--dimension-space-150)',\n 'space-175': 'var(--dimension-space-175)',\n 'space-200': 'var(--dimension-space-200)',\n 'space-250': 'var(--dimension-space-250)',\n 'space-300': 'var(--dimension-space-300)',\n 'space-400': 'var(--dimension-space-400)',\n 'space-600': 'var(--dimension-space-600)',\n 'space-800': 'var(--dimension-space-800)',\n};\n\n@Component({\n tag: 'ds-divider',\n styleUrl: 'Divider.css',\n scoped: true,\n})\nexport class Divider {\n /** Direction of the divider line. Defaults to 'horizontal'. */\n @Prop() orientation: DividerOrientation = 'horizontal';\n\n /** Actual parent surface context. Omit on primary and secondary surfaces. */\n @Prop() background: DividerBackground | undefined;\n\n /** Insets the divider from its start/end edges. Accepts spacing token names or any CSS length. */\n @Prop() inset: DividerInset = 'none';\n\n /** Visual line length. Defaults to filling the available axis. Accepts any CSS length. */\n @Prop() length: DividerLength = 'auto';\n\n /** Expose the divider as a semantic separator. Visual-only dividers are hidden from assistive tech by default. */\n @Prop() semantic: boolean = false;\n\n private resolveInset(): string {\n return Object.prototype.hasOwnProperty.call(INSET_VALUE, this.inset)\n ? INSET_VALUE[this.inset as keyof typeof INSET_VALUE]\n : this.inset;\n }\n\n private resolveLength(): string {\n return this.length === 'auto' || this.length === 'full'\n ? '100%'\n : this.length;\n }\n\n render() {\n const isVertical = this.orientation === 'vertical';\n const hasCustomLength = this.length !== 'auto' && this.length !== 'full';\n\n return (\n <Host\n role={this.semantic ? 'separator' : undefined}\n aria-orientation={this.semantic ? this.orientation : undefined}\n aria-hidden={this.semantic ? undefined : 'true'}\n class={{\n divider: true,\n 'divider--vertical': isVertical,\n 'divider--custom-length': hasCustomLength,\n [`divider--background-${this.background}`]: !!this.background,\n }}\n style={{\n '--_divider-inset': this.resolveInset(),\n '--_divider-length': this.resolveLength(),\n }}\n />\n );\n }\n}\n"],"mappings":"2DAAA,MAAMA,EAAa,IAAM,0kECgCzB,MAAMC,EAA0D,CAC9DC,KAAM,IACN,YAAa,6BACb,YAAa,6BACb,YAAa,6BACb,YAAa,6BACb,YAAa,6BACb,YAAa,6BACb,YAAa,6BACb,YAAa,6BACb,YAAa,6BACb,YAAa,6BACb,YAAa,6BACb,YAAa,6BACb,YAAa,6BACb,YAAa,6BACb,YAAa,8B,MAQFC,EAAOC,EAAA,MAAAD,UAAAE,EALpB,WAAAC,CAAAC,G,4CAOUC,KAAAC,YAAkC,aAMlCD,KAAAE,MAAsB,OAGtBF,KAAAG,OAAwB,OAGxBH,KAAAI,SAAoB,KAoC7B,CAlCS,YAAAC,GACN,OAAOC,OAAOC,UAAUC,eAAeC,KAAKhB,EAAaO,KAAKE,OAC1DT,EAAYO,KAAKE,OACjBF,KAAKE,K,CAGH,aAAAQ,GACN,OAAOV,KAAKG,SAAW,QAAUH,KAAKG,SAAW,OAC7C,OACAH,KAAKG,M,CAGX,MAAAQ,GACE,MAAMC,EAAaZ,KAAKC,cAAgB,WACxC,MAAMY,EAAkBb,KAAKG,SAAW,QAAUH,KAAKG,SAAW,OAElE,OACEW,EAACC,EAAI,CAAAC,IAAA,2CACHC,KAAMjB,KAAKI,SAAW,YAAcc,UAAS,mBAC3BlB,KAAKI,SAAWJ,KAAKC,YAAciB,UAAS,cACjDlB,KAAKI,SAAWc,UAAY,OACzCC,MAAO,CACLC,QAAS,KACT,oBAAqBR,EACrB,yBAA0BC,EAC1B,CAAC,uBAAuBb,KAAKqB,gBAAiBrB,KAAKqB,YAErDC,MAAO,CACL,mBAAoBtB,KAAKK,eACzB,oBAAqBL,KAAKU,kB","ignoreList":[]}
1
+ {"version":3,"names":["dividerCss","INSET_VALUE","none","Divider","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","orientation","inset","length","semantic","resolveInset","Object","prototype","hasOwnProperty","call","resolveLength","render","isVertical","hasCustomLength","h","Host","key","role","undefined","class","divider","background","style"],"sources":["src/wc/components/Divider/Divider.css?tag=ds-divider&encapsulation=scoped","src/wc/components/Divider/Divider.tsx"],"sourcesContent":["@import '../../utils/forced-colors.css';\n\n:host {\n --_divider-color: var(--color-divider-divider);\n --_divider-inset: 0;\n --_divider-length: 100%;\n\n display: block;\n flex-shrink: 0;\n width: var(--_divider-length);\n height: var(--dimension-stroke-width-012);\n margin: 0 var(--_divider-inset);\n border: none;\n background-color: var(--_divider-color);\n}\n\n:host(.divider--vertical) {\n width: var(--dimension-stroke-width-012);\n height: var(--_divider-length);\n min-height: var(--dimension-stroke-width-012);\n margin: var(--_divider-inset) 0;\n align-self: stretch;\n}\n\n:host(.divider--vertical.divider--custom-length) {\n align-self: center;\n}\n\n:host([background='bold']),\n:host(.divider--background-bold) {\n --_divider-color: var(--color-divider-divider-on-bold-background);\n}\n\n:host([background='strong']),\n:host(.divider--background-strong) {\n --_divider-color: var(--color-divider-divider-on-strong-background);\n}\n\n:host([background='medium']),\n:host(.divider--background-medium) {\n --_divider-color: var(--color-divider-divider-on-medium-background);\n}\n\n:host([background='translucent']),\n:host(.divider--background-translucent) {\n --_divider-color: var(--color-translucent-divider);\n}\n\n:host([background='navigation']),\n:host(.divider--background-navigation) {\n --_divider-color: var(--color-navigation-divider);\n}\n\n:host([background='media']),\n:host(.divider--background-media) {\n --_divider-color: var(--color-media-divider);\n}\n\n:host([background='always-dark']),\n:host(.divider--background-always-dark) {\n --_divider-color: var(--color-always-dark-divider);\n}\n\n:host([background='inverted']),\n:host(.divider--background-inverted) {\n --_divider-color: var(--color-inverted-divider);\n}\n\n@media (forced-colors: active) {\n :host {\n background-color: var(--ds-forced-color-content);\n }\n}\n","import { Component, Prop, h, Host } from '@stencil/core';\n\nexport type DividerOrientation = 'horizontal' | 'vertical';\nexport type DividerBackground =\n | 'faint'\n | 'medium'\n | 'bold'\n | 'strong'\n | 'translucent'\n | 'inverted'\n | 'media'\n | 'navigation'\n | 'always-dark';\nexport type DividerInsetToken =\n | 'space-000'\n | 'space-012'\n | 'space-025'\n | 'space-050'\n | 'space-075'\n | 'space-100'\n | 'space-125'\n | 'space-150'\n | 'space-175'\n | 'space-200'\n | 'space-250'\n | 'space-300'\n | 'space-400'\n | 'space-600'\n | 'space-800';\nexport type DividerInset = 'none' | DividerInsetToken | (string & {});\nexport type DividerLength = 'auto' | 'full' | (string & {});\n\nconst INSET_VALUE: Record<'none' | DividerInsetToken, string> = {\n none: '0',\n 'space-000': 'var(--dimension-space-000)',\n 'space-012': 'var(--dimension-space-012)',\n 'space-025': 'var(--dimension-space-025)',\n 'space-050': 'var(--dimension-space-050)',\n 'space-075': 'var(--dimension-space-075)',\n 'space-100': 'var(--dimension-space-100)',\n 'space-125': 'var(--dimension-space-125)',\n 'space-150': 'var(--dimension-space-150)',\n 'space-175': 'var(--dimension-space-175)',\n 'space-200': 'var(--dimension-space-200)',\n 'space-250': 'var(--dimension-space-250)',\n 'space-300': 'var(--dimension-space-300)',\n 'space-400': 'var(--dimension-space-400)',\n 'space-600': 'var(--dimension-space-600)',\n 'space-800': 'var(--dimension-space-800)',\n};\n\n@Component({\n tag: 'ds-divider',\n styleUrl: 'Divider.css',\n scoped: true,\n})\nexport class Divider {\n /** Direction of the divider line. Defaults to 'horizontal'. */\n @Prop() orientation: DividerOrientation = 'horizontal';\n\n /** Actual parent surface context. Omit on primary and secondary surfaces. */\n @Prop() background: DividerBackground | undefined;\n\n /** Insets the divider from its start/end edges. Accepts spacing token names or any CSS length. */\n @Prop() inset: DividerInset = 'none';\n\n /** Visual line length. Defaults to filling the available axis. Accepts any CSS length. */\n @Prop() length: DividerLength = 'auto';\n\n /** Expose the divider as a semantic separator. Visual-only dividers are hidden from assistive tech by default. */\n @Prop() semantic: boolean = false;\n\n private resolveInset(): string {\n return Object.prototype.hasOwnProperty.call(INSET_VALUE, this.inset)\n ? INSET_VALUE[this.inset as keyof typeof INSET_VALUE]\n : this.inset;\n }\n\n private resolveLength(): string {\n return this.length === 'auto' || this.length === 'full' ? '100%' : this.length;\n }\n\n render() {\n const isVertical = this.orientation === 'vertical';\n const hasCustomLength = this.length !== 'auto' && this.length !== 'full';\n\n return (\n <Host\n role={this.semantic ? 'separator' : undefined}\n aria-orientation={this.semantic ? this.orientation : undefined}\n aria-hidden={this.semantic ? undefined : 'true'}\n class={{\n divider: true,\n 'divider--vertical': isVertical,\n 'divider--custom-length': hasCustomLength,\n [`divider--background-${this.background}`]: !!this.background,\n }}\n style={{\n '--_divider-inset': this.resolveInset(),\n '--_divider-length': this.resolveLength(),\n }}\n />\n );\n }\n}\n"],"mappings":"2DAAA,MAAMA,EAAa,IAAM,0kECgCzB,MAAMC,EAA0D,CAC9DC,KAAM,IACN,YAAa,6BACb,YAAa,6BACb,YAAa,6BACb,YAAa,6BACb,YAAa,6BACb,YAAa,6BACb,YAAa,6BACb,YAAa,6BACb,YAAa,6BACb,YAAa,6BACb,YAAa,6BACb,YAAa,6BACb,YAAa,6BACb,YAAa,6BACb,YAAa,8B,MAQFC,EAAOC,EAAA,MAAAD,UAAAE,EALpB,WAAAC,CAAAC,G,4CAOUC,KAAAC,YAAkC,aAMlCD,KAAAE,MAAsB,OAGtBF,KAAAG,OAAwB,OAGxBH,KAAAI,SAAoB,KAkC7B,CAhCS,YAAAC,GACN,OAAOC,OAAOC,UAAUC,eAAeC,KAAKhB,EAAaO,KAAKE,OAC1DT,EAAYO,KAAKE,OACjBF,KAAKE,K,CAGH,aAAAQ,GACN,OAAOV,KAAKG,SAAW,QAAUH,KAAKG,SAAW,OAAS,OAASH,KAAKG,M,CAG1E,MAAAQ,GACE,MAAMC,EAAaZ,KAAKC,cAAgB,WACxC,MAAMY,EAAkBb,KAAKG,SAAW,QAAUH,KAAKG,SAAW,OAElE,OACEW,EAACC,EAAI,CAAAC,IAAA,2CACHC,KAAMjB,KAAKI,SAAW,YAAcc,UAAS,mBAC3BlB,KAAKI,SAAWJ,KAAKC,YAAciB,UAAS,cACjDlB,KAAKI,SAAWc,UAAY,OACzCC,MAAO,CACLC,QAAS,KACT,oBAAqBR,EACrB,yBAA0BC,EAC1B,CAAC,uBAAuBb,KAAKqB,gBAAiBrB,KAAKqB,YAErDC,MAAO,CACL,mBAAoBtB,KAAKK,eACzB,oBAAqBL,KAAKU,kB","ignoreList":[]}