@carbon/web-components 2.39.1 → 2.40.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 (550) hide show
  1. package/custom-elements.json +115 -50
  2. package/dist/accordion.min.js +2 -2
  3. package/dist/ai-label.min.js +2 -2
  4. package/dist/ai-skeleton.min.js +2 -2
  5. package/dist/badge-indicator.min.js +2 -2
  6. package/dist/breadcrumb.min.js +8 -8
  7. package/dist/button-Co3aPX0Y.js +93 -0
  8. package/dist/{button-skeleton-DdBk5C_N.js → button-skeleton-DKiPqzwa.js} +2 -2
  9. package/dist/button.min.js +2 -2
  10. package/dist/chat-button.min.js +4 -4
  11. package/dist/{checkbox-DIG0hVuh.js → checkbox-DVx3ui3h.js} +2 -2
  12. package/dist/checkbox.min.js +2 -2
  13. package/dist/{class-map-n49vbqqp.js → class-map-CJoc5JjN.js} +2 -2
  14. package/dist/code-snippet.min.js +14 -14
  15. package/dist/combo-box.min.js +2 -2
  16. package/dist/combo-button.min.js +3 -3
  17. package/dist/content-switcher-item-BDJMJLCb.js +54 -0
  18. package/dist/content-switcher.min.js +2 -2
  19. package/dist/copy-button.min.js +2 -2
  20. package/dist/data-table.min.js +2 -2
  21. package/dist/date-picker.min.js +2 -2
  22. package/dist/{dropdown-item-PvWtkb2E.js → dropdown-item-B6uTaLa3.js} +2 -2
  23. package/dist/dropdown.min.js +2 -2
  24. package/dist/feature-flags.min.js +2 -2
  25. package/dist/file-uploader.min.js +8 -8
  26. package/dist/floating-menu.min.js +2 -2
  27. package/dist/fluid-text-input.min.js +2 -2
  28. package/dist/{focus-CAqkEBYM.js → focus-JSuV9CsT.js} +2 -2
  29. package/dist/{form-BNblI_Op.js → form-BaYTr2z0.js} +2 -2
  30. package/dist/form-group.min.js +2 -2
  31. package/dist/form.min.js +2 -2
  32. package/dist/grid.min.js +2 -2
  33. package/dist/heading.min.js +2 -2
  34. package/dist/{host-listener-mPtggheY.js → host-listener-BJsBtsIt.js} +2 -2
  35. package/dist/icon-button.min.js +2 -2
  36. package/dist/icon-indicator.min.js +2 -2
  37. package/dist/{icon-loader-3bNrhxYK.js → icon-loader-CqB9WRMP.js} +2 -2
  38. package/dist/{icon-loader-utils-C4QltTKl.js → icon-loader-utils-DUl0vwdh.js} +2 -2
  39. package/dist/icon.min.js +2 -2
  40. package/dist/{if-defined-exabhQMq.js → if-defined-IxozbDOJ.js} +2 -2
  41. package/dist/{if-non-empty-DV7gZi2W.js → if-non-empty-CqQHBHdQ.js} +2 -2
  42. package/dist/inline-loading.min.js +2 -2
  43. package/dist/layer.min.js +2 -2
  44. package/dist/link.min.js +2 -2
  45. package/dist/list.min.js +2 -2
  46. package/dist/{loading-icon-CIx9N4-w.js → loading-icon-DCf6kyWs.js} +2 -2
  47. package/dist/loading.min.js +2 -2
  48. package/dist/menu-button.min.js +3 -3
  49. package/dist/menu.min.js +2 -2
  50. package/dist/modal.min.js +9 -9
  51. package/dist/multi-select.min.js +2 -2
  52. package/dist/notification.min.js +4 -4
  53. package/dist/number-input.min.js +2 -2
  54. package/dist/overflow-menu.min.js +3 -3
  55. package/dist/page-header.min.js +2 -2
  56. package/dist/pagination.min.js +17 -25
  57. package/dist/password-input.min.js +2 -2
  58. package/dist/popover.min.js +2 -2
  59. package/dist/progress-bar.min.js +2 -2
  60. package/dist/progress-indicator.min.js +16 -10
  61. package/dist/{property-lZbmspq2.js → property-B_F7V5eB.js} +2 -2
  62. package/dist/{query-assigned-elements-DkjA2wnD.js → query-assigned-elements-DeMmXVMb.js} +2 -2
  63. package/dist/radio-button.min.js +2 -2
  64. package/dist/{search-xhqtCabY.js → search-DRY-RtlJ.js} +2 -2
  65. package/dist/search.min.js +2 -2
  66. package/dist/{select-CL5lr0mN.js → select-9WcKYA1M.js} +17 -16
  67. package/dist/select.min.js +2 -2
  68. package/dist/shape-indicator.min.js +2 -2
  69. package/dist/side-panel.min.js +2 -2
  70. package/dist/skeleton-icon.min.js +2 -2
  71. package/dist/skeleton-placeholder.min.js +2 -2
  72. package/dist/skeleton-text.min.js +2 -2
  73. package/dist/skip-to-content.min.js +2 -2
  74. package/dist/slider.min.js +2 -2
  75. package/dist/slug.min.js +2 -2
  76. package/dist/stack.min.js +2 -2
  77. package/dist/{state-CocwM4nH.js → state-CJQmj6wG.js} +2 -2
  78. package/dist/structured-list.min.js +2 -2
  79. package/dist/tabs.min.js +6 -6
  80. package/dist/tag.min.js +17 -17
  81. package/dist/tearsheet.min.js +2 -2
  82. package/dist/{text-input-rzf9bVlH.js → text-input-B80oQMaX.js} +2 -2
  83. package/dist/text-input.min.js +2 -2
  84. package/dist/textarea.min.js +2 -2
  85. package/dist/tile.min.js +2 -2
  86. package/dist/time-picker.min.js +2 -2
  87. package/dist/toggle-tip.min.js +4 -4
  88. package/dist/toggle.min.js +5 -5
  89. package/dist/tooltip-content-BZBP-szv.js +30 -0
  90. package/dist/tooltip.min.js +2 -2
  91. package/dist/tree-view.min.js +2 -2
  92. package/dist/ui-shell.min.js +2 -2
  93. package/dist/{unsafe-html-B5l1xysL.js → unsafe-html-Dqv0UqC_.js} +2 -2
  94. package/es/components/accordion/accordion-item.js +4 -4
  95. package/es/components/accordion/accordion-item.js.map +1 -1
  96. package/es/components/accordion/accordion-skeleton.js +3 -3
  97. package/es/components/accordion/accordion-skeleton.js.map +1 -1
  98. package/es/components/accordion/accordion.js +1 -1
  99. package/es/components/accordion/accordion.js.map +1 -1
  100. package/es/components/ai-label/ai-label.js +2 -2
  101. package/es/components/ai-label/ai-label.js.map +1 -1
  102. package/es/components/ai-label/ai-label.scss.js +1 -1
  103. package/es/components/breadcrumb/breadcrumb-item.js +1 -1
  104. package/es/components/breadcrumb/breadcrumb-item.js.map +1 -1
  105. package/es/components/breadcrumb/breadcrumb.js +1 -1
  106. package/es/components/breadcrumb/breadcrumb.js.map +1 -1
  107. package/es/components/breadcrumb/breadcrumb.scss.js +1 -1
  108. package/es/components/button/button.js +7 -7
  109. package/es/components/button/button.js.map +1 -1
  110. package/es/components/button/button.scss.js +1 -1
  111. package/es/components/chat-button/chat-button.js +1 -1
  112. package/es/components/chat-button/chat-button.js.map +1 -1
  113. package/es/components/chat-button/chat-button.scss.js +1 -1
  114. package/es/components/checkbox/checkbox.js +1 -1
  115. package/es/components/checkbox/checkbox.js.map +1 -1
  116. package/es/components/code-snippet/code-snippet.js +16 -16
  117. package/es/components/code-snippet/code-snippet.js.map +1 -1
  118. package/es/components/code-snippet/code-snippet.scss.js +1 -1
  119. package/es/components/combo-box/combo-box.js +7 -7
  120. package/es/components/combo-box/combo-box.js.map +1 -1
  121. package/es/components/combo-button/combo-button.js +2 -2
  122. package/es/components/combo-button/combo-button.js.map +1 -1
  123. package/es/components/combo-button/combo-button.scss.js +1 -1
  124. package/es/components/combo-button/defs.d.ts +4 -0
  125. package/es/components/combo-button/defs.js +4 -0
  126. package/es/components/combo-button/defs.js.map +1 -1
  127. package/es/components/content-switcher/content-switcher.js +2 -2
  128. package/es/components/content-switcher/content-switcher.js.map +1 -1
  129. package/es/components/content-switcher/content-switcher.scss.js +1 -1
  130. package/es/components/copy/copy.js +2 -2
  131. package/es/components/copy/copy.js.map +1 -1
  132. package/es/components/copy-button/copy-button.scss.js +1 -1
  133. package/es/components/data-table/data-table.scss.js +1 -1
  134. package/es/components/data-table/table-expanded-row.js +2 -2
  135. package/es/components/data-table/table-expanded-row.js.map +1 -1
  136. package/es/components/data-table/table-row.js +2 -2
  137. package/es/components/data-table/table-row.js.map +1 -1
  138. package/es/components/data-table/table.js +20 -20
  139. package/es/components/data-table/table.js.map +1 -1
  140. package/es/components/date-picker/append-to-plugin.js +3 -3
  141. package/es/components/date-picker/append-to-plugin.js.map +1 -1
  142. package/es/components/date-picker/css-class-plugin.js +2 -2
  143. package/es/components/date-picker/css-class-plugin.js.map +1 -1
  144. package/es/components/date-picker/date-picker-input.js +1 -1
  145. package/es/components/date-picker/date-picker-input.js.map +1 -1
  146. package/es/components/date-picker/date-picker.js +5 -5
  147. package/es/components/date-picker/date-picker.js.map +1 -1
  148. package/es/components/date-picker/fix-events-plugin.js +1 -1
  149. package/es/components/date-picker/fix-events-plugin.js.map +1 -1
  150. package/es/components/date-picker/range-plugin.js +2 -2
  151. package/es/components/date-picker/range-plugin.js.map +1 -1
  152. package/es/components/date-picker/shadow-dom-events-plugin.js +10 -10
  153. package/es/components/date-picker/shadow-dom-events-plugin.js.map +1 -1
  154. package/es/components/dropdown/dropdown-item.js +1 -1
  155. package/es/components/dropdown/dropdown-item.js.map +1 -1
  156. package/es/components/dropdown/dropdown.js +8 -8
  157. package/es/components/dropdown/dropdown.js.map +1 -1
  158. package/es/components/feature-flags/index.d.ts +4 -0
  159. package/es/components/feature-flags/index.js +20 -9
  160. package/es/components/feature-flags/index.js.map +1 -1
  161. package/es/components/file-uploader/file-uploader-drop-container.js +1 -1
  162. package/es/components/file-uploader/file-uploader-drop-container.js.map +1 -1
  163. package/es/components/file-uploader/file-uploader.scss.js +1 -1
  164. package/es/components/floating-menu/floating-menu.js +9 -9
  165. package/es/components/floating-menu/floating-menu.js.map +1 -1
  166. package/es/components/icon-button/icon-button.scss.js +1 -1
  167. package/es/components/link/link.js +2 -2
  168. package/es/components/link/link.js.map +1 -1
  169. package/es/components/menu/menu-context.js.map +1 -1
  170. package/es/components/menu/menu-item.js +1 -1
  171. package/es/components/menu/menu-item.js.map +1 -1
  172. package/es/components/menu/menu.js +1 -1
  173. package/es/components/menu/menu.js.map +1 -1
  174. package/es/components/menu-button/menu-button.js +2 -2
  175. package/es/components/menu-button/menu-button.js.map +1 -1
  176. package/es/components/menu-button/menu-button.scss.js +1 -1
  177. package/es/components/modal/modal.js +8 -8
  178. package/es/components/modal/modal.js.map +1 -1
  179. package/es/components/modal/modal.scss.js +1 -1
  180. package/es/components/multi-select/multi-select.js +8 -8
  181. package/es/components/multi-select/multi-select.js.map +1 -1
  182. package/es/components/notification/actionable-notification-button.js +1 -1
  183. package/es/components/notification/actionable-notification-button.js.map +1 -1
  184. package/es/components/notification/actionable-notification.js +5 -5
  185. package/es/components/notification/actionable-notification.js.map +1 -1
  186. package/es/components/notification/actionable-notification.scss.js +1 -1
  187. package/es/components/notification/inline-notification.scss.js +1 -1
  188. package/es/components/notification/toast-notification.scss.js +1 -1
  189. package/es/components/overflow-menu/defs.d.ts +4 -0
  190. package/es/components/overflow-menu/defs.js +4 -0
  191. package/es/components/overflow-menu/defs.js.map +1 -1
  192. package/es/components/overflow-menu/overflow-menu-body.js +2 -2
  193. package/es/components/overflow-menu/overflow-menu-body.js.map +1 -1
  194. package/es/components/overflow-menu/overflow-menu.js +4 -8
  195. package/es/components/overflow-menu/overflow-menu.js.map +1 -1
  196. package/es/components/overflow-menu/overflow-menu.scss.js +1 -1
  197. package/es/components/page-header/page-header-tabs.js.map +1 -1
  198. package/es/components/page-header/page-header.js.map +1 -1
  199. package/es/components/pagination/pagination.d.ts +1 -1
  200. package/es/components/pagination/pagination.js +86 -56
  201. package/es/components/pagination/pagination.js.map +1 -1
  202. package/es/components/pagination/pagination.scss.js +1 -1
  203. package/es/components/popover/popover.js +2 -2
  204. package/es/components/popover/popover.js.map +1 -1
  205. package/es/components/popover/popover.scss.js +1 -1
  206. package/es/components/progress-bar/progress-bar.js +1 -1
  207. package/es/components/progress-bar/progress-bar.js.map +1 -1
  208. package/es/components/progress-indicator/progress-indicator.d.ts +16 -2
  209. package/es/components/progress-indicator/progress-indicator.js +75 -4
  210. package/es/components/progress-indicator/progress-indicator.js.map +1 -1
  211. package/es/components/progress-indicator/progress-indicator.scss.js +1 -1
  212. package/es/components/progress-indicator/progress-step.d.ts +34 -9
  213. package/es/components/progress-indicator/progress-step.js +100 -16
  214. package/es/components/progress-indicator/progress-step.js.map +1 -1
  215. package/es/components/radio-button/radio-button-group.js +1 -1
  216. package/es/components/radio-button/radio-button-group.js.map +1 -1
  217. package/es/components/radio-button/radio-button.js +5 -5
  218. package/es/components/radio-button/radio-button.js.map +1 -1
  219. package/es/components/search/search.js +4 -4
  220. package/es/components/search/search.js.map +1 -1
  221. package/es/components/select/select.js +15 -8
  222. package/es/components/select/select.js.map +1 -1
  223. package/es/components/select/select.scss.js +1 -1
  224. package/es/components/side-panel/side-panel.js +6 -6
  225. package/es/components/side-panel/side-panel.js.map +1 -1
  226. package/es/components/skip-to-content/skip-to-content.scss.js +1 -1
  227. package/es/components/slider/slider.js +7 -7
  228. package/es/components/slider/slider.js.map +1 -1
  229. package/es/components/slug/slug.js +2 -2
  230. package/es/components/slug/slug.js.map +1 -1
  231. package/es/components/slug/slug.scss.js +1 -1
  232. package/es/components/structured-list/structured-list-row.js +2 -2
  233. package/es/components/structured-list/structured-list-row.js.map +1 -1
  234. package/es/components/structured-list/structured-list.js +1 -1
  235. package/es/components/structured-list/structured-list.js.map +1 -1
  236. package/es/components/tabs/tabs.js +12 -12
  237. package/es/components/tabs/tabs.js.map +1 -1
  238. package/es/components/tabs/tabs.scss.js +1 -1
  239. package/es/components/tag/dismissible-tag.js +2 -2
  240. package/es/components/tag/dismissible-tag.js.map +1 -1
  241. package/es/components/tag/operational-tag.js +2 -2
  242. package/es/components/tag/operational-tag.js.map +1 -1
  243. package/es/components/tag/selectable-tag.js +2 -2
  244. package/es/components/tag/selectable-tag.js.map +1 -1
  245. package/es/components/tag/tag.js +2 -2
  246. package/es/components/tag/tag.js.map +1 -1
  247. package/es/components/tag/tag.scss.js +1 -1
  248. package/es/components/tearsheet/tearsheet.js +10 -10
  249. package/es/components/tearsheet/tearsheet.js.map +1 -1
  250. package/es/components/tile/clickable-tile.js +1 -1
  251. package/es/components/tile/clickable-tile.js.map +1 -1
  252. package/es/components/tile/expandable-tile.js +2 -2
  253. package/es/components/tile/expandable-tile.js.map +1 -1
  254. package/es/components/tile/tile-group.js +2 -2
  255. package/es/components/tile/tile-group.js.map +1 -1
  256. package/es/components/time-picker/time-picker-select.js +1 -1
  257. package/es/components/time-picker/time-picker-select.js.map +1 -1
  258. package/es/components/time-picker/time-picker.js +2 -2
  259. package/es/components/time-picker/time-picker.js.map +1 -1
  260. package/es/components/toggle/toggle.d.ts +20 -3
  261. package/es/components/toggle/toggle.js +47 -10
  262. package/es/components/toggle/toggle.js.map +1 -1
  263. package/es/components/toggle/toggle.scss.js +1 -1
  264. package/es/components/toggle-tip/toggletip.js +3 -3
  265. package/es/components/toggle-tip/toggletip.js.map +1 -1
  266. package/es/components/toggle-tip/toggletip.scss.js +1 -1
  267. package/es/components/tooltip/tooltip.js +4 -4
  268. package/es/components/tooltip/tooltip.js.map +1 -1
  269. package/es/components/tooltip/tooltip.scss.js +1 -1
  270. package/es/components/tree-view/tree-node.js +1 -1
  271. package/es/components/tree-view/tree-node.js.map +1 -1
  272. package/es/components/tree-view/tree-view.js +7 -7
  273. package/es/components/tree-view/tree-view.js.map +1 -1
  274. package/es/components/ui-shell/header-global-action.js +3 -3
  275. package/es/components/ui-shell/header-global-action.js.map +1 -1
  276. package/es/components/ui-shell/header-menu.js +2 -2
  277. package/es/components/ui-shell/header-menu.js.map +1 -1
  278. package/es/components/ui-shell/header.scss.js +1 -1
  279. package/es/components/ui-shell/side-nav.js +1 -1
  280. package/es/components/ui-shell/side-nav.js.map +1 -1
  281. package/es/globals/controllers/floating-controller.js +2 -2
  282. package/es/globals/controllers/floating-controller.js.map +1 -1
  283. package/es/globals/decorators/carbon-element.js +4 -4
  284. package/es/globals/decorators/carbon-element.js.map +1 -1
  285. package/es/globals/decorators/host-listener.js +2 -2
  286. package/es/globals/decorators/host-listener.js.map +1 -1
  287. package/es/globals/internal/collection-helpers.js +4 -4
  288. package/es/globals/internal/collection-helpers.js.map +1 -1
  289. package/es/globals/internal/feature-flags.js +2 -2
  290. package/es/globals/internal/feature-flags.js.map +1 -1
  291. package/es/globals/mixins/focus.js +2 -2
  292. package/es/globals/mixins/focus.js.map +1 -1
  293. package/es/globals/mixins/host-listener.js +1 -1
  294. package/es/globals/mixins/host-listener.js.map +1 -1
  295. package/es/globals/mixins/on.js +1 -1
  296. package/es/globals/mixins/on.js.map +1 -1
  297. package/es-custom/components/accordion/accordion-item.js +4 -4
  298. package/es-custom/components/accordion/accordion-item.js.map +1 -1
  299. package/es-custom/components/accordion/accordion-skeleton.js +3 -3
  300. package/es-custom/components/accordion/accordion-skeleton.js.map +1 -1
  301. package/es-custom/components/accordion/accordion.js +1 -1
  302. package/es-custom/components/accordion/accordion.js.map +1 -1
  303. package/es-custom/components/ai-label/ai-label.js +2 -2
  304. package/es-custom/components/ai-label/ai-label.js.map +1 -1
  305. package/es-custom/components/ai-label/ai-label.scss.js +1 -1
  306. package/es-custom/components/breadcrumb/breadcrumb-item.js +1 -1
  307. package/es-custom/components/breadcrumb/breadcrumb-item.js.map +1 -1
  308. package/es-custom/components/breadcrumb/breadcrumb.js +1 -1
  309. package/es-custom/components/breadcrumb/breadcrumb.js.map +1 -1
  310. package/es-custom/components/breadcrumb/breadcrumb.scss.js +1 -1
  311. package/es-custom/components/button/button.js +7 -7
  312. package/es-custom/components/button/button.js.map +1 -1
  313. package/es-custom/components/button/button.scss.js +1 -1
  314. package/es-custom/components/chat-button/chat-button.js +1 -1
  315. package/es-custom/components/chat-button/chat-button.js.map +1 -1
  316. package/es-custom/components/chat-button/chat-button.scss.js +1 -1
  317. package/es-custom/components/checkbox/checkbox.js +1 -1
  318. package/es-custom/components/checkbox/checkbox.js.map +1 -1
  319. package/es-custom/components/code-snippet/code-snippet.js +16 -16
  320. package/es-custom/components/code-snippet/code-snippet.js.map +1 -1
  321. package/es-custom/components/code-snippet/code-snippet.scss.js +1 -1
  322. package/es-custom/components/combo-box/combo-box.js +7 -7
  323. package/es-custom/components/combo-box/combo-box.js.map +1 -1
  324. package/es-custom/components/combo-button/combo-button.js +2 -2
  325. package/es-custom/components/combo-button/combo-button.js.map +1 -1
  326. package/es-custom/components/combo-button/combo-button.scss.js +1 -1
  327. package/es-custom/components/combo-button/defs.d.ts +4 -0
  328. package/es-custom/components/combo-button/defs.js +4 -0
  329. package/es-custom/components/combo-button/defs.js.map +1 -1
  330. package/es-custom/components/content-switcher/content-switcher.js +2 -2
  331. package/es-custom/components/content-switcher/content-switcher.js.map +1 -1
  332. package/es-custom/components/content-switcher/content-switcher.scss.js +1 -1
  333. package/es-custom/components/copy/copy.js +2 -2
  334. package/es-custom/components/copy/copy.js.map +1 -1
  335. package/es-custom/components/copy-button/copy-button.scss.js +1 -1
  336. package/es-custom/components/data-table/data-table.scss.js +1 -1
  337. package/es-custom/components/data-table/table-expanded-row.js +2 -2
  338. package/es-custom/components/data-table/table-expanded-row.js.map +1 -1
  339. package/es-custom/components/data-table/table-row.js +2 -2
  340. package/es-custom/components/data-table/table-row.js.map +1 -1
  341. package/es-custom/components/data-table/table.js +20 -20
  342. package/es-custom/components/data-table/table.js.map +1 -1
  343. package/es-custom/components/date-picker/append-to-plugin.js +3 -3
  344. package/es-custom/components/date-picker/append-to-plugin.js.map +1 -1
  345. package/es-custom/components/date-picker/css-class-plugin.js +2 -2
  346. package/es-custom/components/date-picker/css-class-plugin.js.map +1 -1
  347. package/es-custom/components/date-picker/date-picker-input.js +1 -1
  348. package/es-custom/components/date-picker/date-picker-input.js.map +1 -1
  349. package/es-custom/components/date-picker/date-picker.js +5 -5
  350. package/es-custom/components/date-picker/date-picker.js.map +1 -1
  351. package/es-custom/components/date-picker/fix-events-plugin.js +1 -1
  352. package/es-custom/components/date-picker/fix-events-plugin.js.map +1 -1
  353. package/es-custom/components/date-picker/range-plugin.js +2 -2
  354. package/es-custom/components/date-picker/range-plugin.js.map +1 -1
  355. package/es-custom/components/date-picker/shadow-dom-events-plugin.js +10 -10
  356. package/es-custom/components/date-picker/shadow-dom-events-plugin.js.map +1 -1
  357. package/es-custom/components/dropdown/dropdown-item.js +1 -1
  358. package/es-custom/components/dropdown/dropdown-item.js.map +1 -1
  359. package/es-custom/components/dropdown/dropdown.js +8 -8
  360. package/es-custom/components/dropdown/dropdown.js.map +1 -1
  361. package/es-custom/components/feature-flags/index.d.ts +4 -0
  362. package/es-custom/components/feature-flags/index.js +20 -9
  363. package/es-custom/components/feature-flags/index.js.map +1 -1
  364. package/es-custom/components/file-uploader/file-uploader-drop-container.js +1 -1
  365. package/es-custom/components/file-uploader/file-uploader-drop-container.js.map +1 -1
  366. package/es-custom/components/file-uploader/file-uploader.scss.js +1 -1
  367. package/es-custom/components/floating-menu/floating-menu.js +9 -9
  368. package/es-custom/components/floating-menu/floating-menu.js.map +1 -1
  369. package/es-custom/components/icon-button/icon-button.scss.js +1 -1
  370. package/es-custom/components/link/link.js +2 -2
  371. package/es-custom/components/link/link.js.map +1 -1
  372. package/es-custom/components/menu/menu-context.js.map +1 -1
  373. package/es-custom/components/menu/menu-item.js +1 -1
  374. package/es-custom/components/menu/menu-item.js.map +1 -1
  375. package/es-custom/components/menu/menu.js +1 -1
  376. package/es-custom/components/menu/menu.js.map +1 -1
  377. package/es-custom/components/menu-button/menu-button.js +2 -2
  378. package/es-custom/components/menu-button/menu-button.js.map +1 -1
  379. package/es-custom/components/menu-button/menu-button.scss.js +1 -1
  380. package/es-custom/components/modal/modal.js +8 -8
  381. package/es-custom/components/modal/modal.js.map +1 -1
  382. package/es-custom/components/modal/modal.scss.js +1 -1
  383. package/es-custom/components/multi-select/multi-select.js +8 -8
  384. package/es-custom/components/multi-select/multi-select.js.map +1 -1
  385. package/es-custom/components/notification/actionable-notification-button.js +1 -1
  386. package/es-custom/components/notification/actionable-notification-button.js.map +1 -1
  387. package/es-custom/components/notification/actionable-notification.js +5 -5
  388. package/es-custom/components/notification/actionable-notification.js.map +1 -1
  389. package/es-custom/components/notification/actionable-notification.scss.js +1 -1
  390. package/es-custom/components/notification/inline-notification.scss.js +1 -1
  391. package/es-custom/components/notification/toast-notification.scss.js +1 -1
  392. package/es-custom/components/overflow-menu/defs.d.ts +4 -0
  393. package/es-custom/components/overflow-menu/defs.js +4 -0
  394. package/es-custom/components/overflow-menu/defs.js.map +1 -1
  395. package/es-custom/components/overflow-menu/overflow-menu-body.js +2 -2
  396. package/es-custom/components/overflow-menu/overflow-menu-body.js.map +1 -1
  397. package/es-custom/components/overflow-menu/overflow-menu.js +4 -8
  398. package/es-custom/components/overflow-menu/overflow-menu.js.map +1 -1
  399. package/es-custom/components/overflow-menu/overflow-menu.scss.js +1 -1
  400. package/es-custom/components/page-header/page-header-tabs.js.map +1 -1
  401. package/es-custom/components/page-header/page-header.js.map +1 -1
  402. package/es-custom/components/pagination/pagination.d.ts +1 -1
  403. package/es-custom/components/pagination/pagination.js +86 -56
  404. package/es-custom/components/pagination/pagination.js.map +1 -1
  405. package/es-custom/components/pagination/pagination.scss.js +1 -1
  406. package/es-custom/components/popover/popover.js +2 -2
  407. package/es-custom/components/popover/popover.js.map +1 -1
  408. package/es-custom/components/popover/popover.scss.js +1 -1
  409. package/es-custom/components/progress-bar/progress-bar.js +1 -1
  410. package/es-custom/components/progress-bar/progress-bar.js.map +1 -1
  411. package/es-custom/components/progress-indicator/progress-indicator.d.ts +16 -2
  412. package/es-custom/components/progress-indicator/progress-indicator.js +75 -4
  413. package/es-custom/components/progress-indicator/progress-indicator.js.map +1 -1
  414. package/es-custom/components/progress-indicator/progress-indicator.scss.js +1 -1
  415. package/es-custom/components/progress-indicator/progress-step.d.ts +34 -9
  416. package/es-custom/components/progress-indicator/progress-step.js +100 -16
  417. package/es-custom/components/progress-indicator/progress-step.js.map +1 -1
  418. package/es-custom/components/radio-button/radio-button-group.js +1 -1
  419. package/es-custom/components/radio-button/radio-button-group.js.map +1 -1
  420. package/es-custom/components/radio-button/radio-button.js +5 -5
  421. package/es-custom/components/radio-button/radio-button.js.map +1 -1
  422. package/es-custom/components/search/search.js +4 -4
  423. package/es-custom/components/search/search.js.map +1 -1
  424. package/es-custom/components/select/select.js +15 -8
  425. package/es-custom/components/select/select.js.map +1 -1
  426. package/es-custom/components/select/select.scss.js +1 -1
  427. package/es-custom/components/side-panel/side-panel.js +6 -6
  428. package/es-custom/components/side-panel/side-panel.js.map +1 -1
  429. package/es-custom/components/skip-to-content/skip-to-content.scss.js +1 -1
  430. package/es-custom/components/slider/slider.js +7 -7
  431. package/es-custom/components/slider/slider.js.map +1 -1
  432. package/es-custom/components/slug/slug.js +2 -2
  433. package/es-custom/components/slug/slug.js.map +1 -1
  434. package/es-custom/components/slug/slug.scss.js +1 -1
  435. package/es-custom/components/structured-list/structured-list-row.js +2 -2
  436. package/es-custom/components/structured-list/structured-list-row.js.map +1 -1
  437. package/es-custom/components/structured-list/structured-list.js +1 -1
  438. package/es-custom/components/structured-list/structured-list.js.map +1 -1
  439. package/es-custom/components/tabs/tabs.js +12 -12
  440. package/es-custom/components/tabs/tabs.js.map +1 -1
  441. package/es-custom/components/tabs/tabs.scss.js +1 -1
  442. package/es-custom/components/tag/dismissible-tag.js +2 -2
  443. package/es-custom/components/tag/dismissible-tag.js.map +1 -1
  444. package/es-custom/components/tag/operational-tag.js +2 -2
  445. package/es-custom/components/tag/operational-tag.js.map +1 -1
  446. package/es-custom/components/tag/selectable-tag.js +2 -2
  447. package/es-custom/components/tag/selectable-tag.js.map +1 -1
  448. package/es-custom/components/tag/tag.js +2 -2
  449. package/es-custom/components/tag/tag.js.map +1 -1
  450. package/es-custom/components/tag/tag.scss.js +1 -1
  451. package/es-custom/components/tearsheet/tearsheet.js +10 -10
  452. package/es-custom/components/tearsheet/tearsheet.js.map +1 -1
  453. package/es-custom/components/tile/clickable-tile.js +1 -1
  454. package/es-custom/components/tile/clickable-tile.js.map +1 -1
  455. package/es-custom/components/tile/expandable-tile.js +2 -2
  456. package/es-custom/components/tile/expandable-tile.js.map +1 -1
  457. package/es-custom/components/tile/tile-group.js +2 -2
  458. package/es-custom/components/tile/tile-group.js.map +1 -1
  459. package/es-custom/components/time-picker/time-picker-select.js +1 -1
  460. package/es-custom/components/time-picker/time-picker-select.js.map +1 -1
  461. package/es-custom/components/time-picker/time-picker.js +2 -2
  462. package/es-custom/components/time-picker/time-picker.js.map +1 -1
  463. package/es-custom/components/toggle/toggle.d.ts +20 -3
  464. package/es-custom/components/toggle/toggle.js +47 -10
  465. package/es-custom/components/toggle/toggle.js.map +1 -1
  466. package/es-custom/components/toggle/toggle.scss.js +1 -1
  467. package/es-custom/components/toggle-tip/toggletip.js +3 -3
  468. package/es-custom/components/toggle-tip/toggletip.js.map +1 -1
  469. package/es-custom/components/toggle-tip/toggletip.scss.js +1 -1
  470. package/es-custom/components/tooltip/tooltip.js +4 -4
  471. package/es-custom/components/tooltip/tooltip.js.map +1 -1
  472. package/es-custom/components/tooltip/tooltip.scss.js +1 -1
  473. package/es-custom/components/tree-view/tree-node.js +1 -1
  474. package/es-custom/components/tree-view/tree-node.js.map +1 -1
  475. package/es-custom/components/tree-view/tree-view.js +7 -7
  476. package/es-custom/components/tree-view/tree-view.js.map +1 -1
  477. package/es-custom/components/ui-shell/header-global-action.js +3 -3
  478. package/es-custom/components/ui-shell/header-global-action.js.map +1 -1
  479. package/es-custom/components/ui-shell/header-menu.js +2 -2
  480. package/es-custom/components/ui-shell/header-menu.js.map +1 -1
  481. package/es-custom/components/ui-shell/header.scss.js +1 -1
  482. package/es-custom/components/ui-shell/side-nav.js +1 -1
  483. package/es-custom/components/ui-shell/side-nav.js.map +1 -1
  484. package/es-custom/globals/controllers/floating-controller.js +2 -2
  485. package/es-custom/globals/controllers/floating-controller.js.map +1 -1
  486. package/es-custom/globals/decorators/carbon-element.js +4 -4
  487. package/es-custom/globals/decorators/carbon-element.js.map +1 -1
  488. package/es-custom/globals/decorators/host-listener.js +2 -2
  489. package/es-custom/globals/decorators/host-listener.js.map +1 -1
  490. package/es-custom/globals/internal/collection-helpers.js +4 -4
  491. package/es-custom/globals/internal/collection-helpers.js.map +1 -1
  492. package/es-custom/globals/internal/feature-flags.js +2 -2
  493. package/es-custom/globals/internal/feature-flags.js.map +1 -1
  494. package/es-custom/globals/mixins/focus.js +2 -2
  495. package/es-custom/globals/mixins/focus.js.map +1 -1
  496. package/es-custom/globals/mixins/host-listener.js +1 -1
  497. package/es-custom/globals/mixins/host-listener.js.map +1 -1
  498. package/es-custom/globals/mixins/on.js +1 -1
  499. package/es-custom/globals/mixins/on.js.map +1 -1
  500. package/lib/components/combo-button/defs.d.ts +4 -0
  501. package/lib/components/combo-button/defs.js +4 -0
  502. package/lib/components/combo-button/defs.js.map +1 -1
  503. package/lib/components/feature-flags/index.d.ts +4 -0
  504. package/lib/components/overflow-menu/defs.d.ts +4 -0
  505. package/lib/components/overflow-menu/defs.js +4 -0
  506. package/lib/components/overflow-menu/defs.js.map +1 -1
  507. package/lib/components/pagination/pagination.d.ts +1 -1
  508. package/lib/components/progress-indicator/progress-indicator.d.ts +16 -2
  509. package/lib/components/progress-indicator/progress-step.d.ts +34 -9
  510. package/lib/components/toggle/toggle.d.ts +20 -3
  511. package/lib/globals/controllers/floating-controller.js +2 -2
  512. package/lib/globals/controllers/floating-controller.js.map +1 -1
  513. package/package.json +7 -7
  514. package/scss/components/button/button.scss +1 -1
  515. package/scss/components/overflow-menu/overflow-menu.scss +13 -0
  516. package/scss/components/progress-indicator/progress-indicator.scss +27 -6
  517. package/scss/components/select/select.scss +1 -0
  518. package/scss/components/toggle/toggle.scss +7 -0
  519. package/telemetry.yml +7 -9
  520. package/dist/button-CZUc-YJY.js +0 -93
  521. package/dist/content-switcher-item-BwX297Wt.js +0 -54
  522. package/dist/tooltip-content-Dpafcwrj.js +0 -30
  523. package/dist/{16-mnk48Km_.js → 16-B3Yskhl0.js} +1 -1
  524. package/dist/{16-Dm1C38gy.js → 16-B46MLj4i.js} +1 -1
  525. package/dist/{16-D7S2mZfx.js → 16-B7MRS_3W.js} +1 -1
  526. package/dist/{16-D5qURVFK.js → 16-BWlgPBcu.js} +1 -1
  527. package/dist/{16-_VZZTjD5.js → 16-Bf2P7KMJ.js} +1 -1
  528. package/dist/{16-CsCwHiDB.js → 16-Bxm7Omxq.js} +1 -1
  529. package/dist/{16-CBMBwbRd.js → 16-CJNlj_0b.js} +1 -1
  530. package/dist/{16-CUSZxKi3.js → 16-CdxGkvXO.js} +1 -1
  531. package/dist/{16-CpQfhph0.js → 16-DTvjc9uv.js} +1 -1
  532. package/dist/{16-qteMrX0q.js → 16-DhAznVKm.js} +1 -1
  533. package/dist/{16-CvYO9Wcs.js → 16-DoN7q01_.js} +1 -1
  534. package/dist/{16-CDsZibnu.js → 16-GKRs-ALp.js} +1 -1
  535. package/dist/{20-CxH6T12Q.js → 20-CuEbZLGA.js} +1 -1
  536. package/dist/{20-D2L4OBED.js → 20-DlknbFYR.js} +1 -1
  537. package/dist/{carbon-element-Bz4hUejX.js → carbon-element-DDrYm3XO.js} +1 -1
  538. package/dist/{collection-helpers-rDLReFyQ.js → collection-helpers-BslvaZFE.js} +1 -1
  539. package/dist/{consume-D-Uxx41O.js → consume-BeeFGGfo.js} +1 -1
  540. package/dist/{defs-B8Ti5atv.js → defs-CBJRLDfw.js} +1 -1
  541. package/dist/{directive-BnmT0ewj.js → directive-Dlo2OKiC.js} +1 -1
  542. package/dist/{floating-controller-C6KWPbMX.js → floating-controller-CnuSelc_.js} +1 -1
  543. package/dist/{host-listener-DtqTZPgM.js → host-listener-BCnAWDV7.js} +1 -1
  544. package/dist/{lit-element-ClYpehYk.js → lit-element-eFlPHqE1.js} +1 -1
  545. package/dist/{on-DsfjLQFb.js → on-DvnWS_DB.js} +1 -1
  546. package/dist/{query-C6TAHe0V.js → query-BdmT5Ln1.js} +1 -1
  547. package/dist/{radio-group-manager-dJ3qt5K5.js → radio-group-manager-B_pENWmT.js} +1 -1
  548. package/dist/{settings-BPpYX8TV.js → settings-FSuH8xHs.js} +1 -1
  549. package/dist/{shared-enums-DUU0Uftc.js → shared-enums-D8TrS6Ts.js} +1 -1
  550. package/dist/{validity-j3foP4ed.js → validity-BUGyJDQ6.js} +1 -1
@@ -54,7 +54,7 @@ let CDSTreeNode = class CDSTreeNode extends LitElement {
54
54
  }
55
55
  return depth + 2.5;
56
56
  };
57
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20071
57
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452
58
58
  const label = this.shadowRoot.querySelector(`.${prefix}--tree-node__label`);
59
59
  if (label) {
60
60
  label.style.marginInlineStart = `-${calcOffset()}rem`;
@@ -1 +1 @@
1
- {"version":3,"file":"tree-node.js","sources":["../../../src/components/tree-view/tree-node.ts"],"sourcesContent":["/**\n * @license\n *\n * Copyright IBM Corp. 2025, 2025\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { classMap } from 'lit/directives/class-map.js';\nimport { LitElement, html } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { prefix } from '../../globals/settings';\nimport { iconLoader } from '../../globals/internal/icon-loader';\nimport CaretDown16 from '@carbon/icons/es/caret--down/16.js';\n\nimport styles from './tree-view.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\n/**\n * Tree node.\n *\n * @element cds-tree-node\n * @fires eventSelected\n * The name of the custom event fired when node is selected.\n * @fires eventToggled\n * The name of the custom event fired when a node is toggled.\n */\n@customElement(`${prefix}-tree-node`)\nclass CDSTreeNode extends LitElement {\n private _hasChildren = false;\n private _hasIcon = false;\n /**\n * Handles `slotchange` event.\n */\n private _handleSlotChange({ target }: Event) {\n const { _depth: depth, disabled } = this;\n const items = (target as HTMLSlotElement)\n .assignedNodes()\n .filter(\n (node) =>\n node.nodeType === Node.ELEMENT_NODE &&\n (node as Element).tagName.toLowerCase() === `${prefix}-tree-node`\n );\n\n items.forEach((item) => {\n (item as CDSTreeNode)._depth = depth + 1;\n (item as CDSTreeNode).disabled = disabled;\n });\n\n this._hasChildren = items.length > 0;\n if (this._hasChildren) this.setAttribute('parent', '');\n this.requestUpdate();\n }\n\n /**\n * Handles icon's `slotchange` event.\n */\n private _handleIconSlotChange({ target }: Event) {\n this._hasIcon = (target as HTMLSlotElement).assignedNodes().length > 0;\n if (this._hasIcon) this.setAttribute('has-icon', '');\n this.requestUpdate();\n }\n\n /**\n * Handles style updates based on depth\n */\n private _handleStyles = () => {\n const {\n _depth: depth,\n _hasChildren: hasChildren,\n _hasIcon: hasIcon,\n } = this;\n const calcOffset = () => {\n if (hasChildren && hasIcon) {\n return depth + 1 + depth * 0.5;\n }\n\n if (hasChildren) {\n return depth + 1;\n }\n\n if (hasIcon) {\n return depth + 2 + depth * 0.5;\n }\n\n return depth + 2.5;\n };\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20071\n const label = this.shadowRoot!.querySelector(\n `.${prefix}--tree-node__label`\n );\n if (label) {\n (label as HTMLElement).style.marginInlineStart = `-${calcOffset()}rem`;\n (label as HTMLElement).style.paddingInlineStart = `${calcOffset()}rem`;\n }\n };\n\n _handleToggleClick = (event) => {\n const { disabled, href } = this;\n if (disabled) return;\n event.stopPropagation();\n if (href) {\n event.preventDefault();\n }\n this.isExpanded = !this.isExpanded;\n if (this.hasAttribute('aria-expanded')) {\n this.setAttribute('aria-expanded', String(this.isExpanded));\n }\n };\n\n /**\n * sets if tree node is active\n */\n @property({ type: Boolean, reflect: true })\n active = false;\n\n /**\n * disabled property\n */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /**\n * **Note:** this is controlled by the parent TreeView component, do not set manually.\n * TreeNode depth to determine spacing\n */\n @state()\n private _depth = 0;\n\n /**\n * Specify if the TreeNode is expanded (only applicable to parent nodes)\n */\n @property({ type: Boolean, attribute: 'is-expanded' })\n isExpanded = false;\n\n /**\n * Optional: The URL the TreeNode is linking to\n */\n @property({})\n href;\n\n /**\n * Specify the TreeNode's ID. Must be unique in the DOM and is used for props.active, props.selected and aria-owns\n */\n @property({})\n id = Math.random().toString(16).slice(2);\n\n /**\n * Rendered label for the TreeNode\n */\n @property({})\n label!: string;\n\n /**\n * sets if tree node is selected\n */\n @property({ type: Boolean, reflect: true })\n selected = false;\n\n /**\n * when adding an href to control the click functionality\n */\n @property({ type: Function })\n onClick?: (event: Event) => void;\n\n connectedCallback() {\n super.connectedCallback();\n\n // Detect children on first render\n this._hasChildren = Array.from(this.children).some(\n (node) => node.tagName.toLowerCase() === `${prefix}-tree-node`\n );\n\n this._hasIcon = Array.from(this.children).some(\n (node) => node.getAttribute('slot') === 'icon'\n );\n\n if (!this.hasAttribute('role') && !this.href) {\n this.setAttribute('role', 'treeitem');\n }\n\n if (!this.hasAttribute('aria-owns') && this._hasChildren && !this.href) {\n this.setAttribute('aria-owns', `subtree-id-${this.id}`);\n }\n\n if (this._hasChildren && !this.href) {\n this.setAttribute('aria-expanded', String(this.isExpanded));\n }\n\n if (!this.hasAttribute('aria-label')) {\n this.setAttribute('aria-label', this.label);\n }\n }\n\n private _dispatchSelectedEvent(value) {\n const { eventSelected } = this.constructor as typeof CDSTreeNode;\n this.dispatchEvent(\n new CustomEvent(eventSelected, {\n bubbles: true,\n composed: true,\n detail: {\n value,\n },\n })\n );\n }\n\n private _dispatchToggledEvent(value, expanded) {\n const { eventToggled } = this.constructor as typeof CDSTreeNode;\n this.dispatchEvent(\n new CustomEvent(eventToggled, {\n bubbles: true,\n composed: true,\n detail: {\n value,\n expanded: expanded,\n },\n })\n );\n }\n\n updated(changedProperties) {\n if (changedProperties.has('_depth')) {\n this._handleStyles();\n }\n if (changedProperties.has('selected')) {\n if (!this.href) {\n this.setAttribute(\n 'aria-selected',\n String(\n !this.href ? (this.disabled ? undefined : this.selected) : undefined\n )\n );\n }\n\n if (this.selected) {\n this._dispatchSelectedEvent(this.label);\n }\n }\n\n if (changedProperties.has('active') && !this.href) {\n this.setAttribute(\n 'aria-current',\n String(\n !this.href\n ? this.active || undefined\n : this.active\n ? 'page'\n : undefined\n )\n );\n }\n\n if (changedProperties.has('disabled')) {\n this.setAttribute('aria-disabled', String(this.disabled));\n }\n\n if (changedProperties.has('isExpanded')) {\n this._dispatchToggledEvent(this.label, this.isExpanded);\n }\n }\n\n render() {\n const {\n disabled,\n isExpanded,\n href,\n id,\n label,\n onClick,\n _hasChildren: hasChildren,\n _handleIconSlotChange: handleIconSlotChange,\n _handleSlotChange: handleSlotChange,\n _handleToggleClick: handleToggleClick,\n } = this;\n\n let toggleClasses = `${prefix}--tree-parent-node__toggle-icon`;\n if (isExpanded) {\n toggleClasses += `${prefix}--tree-parent-node__toggle-icon--expanded`;\n }\n\n const linkClasses = classMap({\n [`${prefix}--tree-node`]: true,\n [`${prefix}--tree-node--active`]: this.active,\n [`${prefix}--tree-node--disabled`]: disabled,\n [`${prefix}--tree-node--selected`]: this.selected,\n [`${prefix}--tree-node--with-icon`]: this._hasIcon,\n [`${prefix}--tree-leaf-node`]: !this._hasChildren,\n [`${prefix}--tree-parent-node`]: this._hasChildren,\n });\n\n const subTreeClasses = classMap({\n [`${prefix}--tree-node__children`]: true,\n [`${prefix}--tree-node__hidden`]: !isExpanded,\n });\n\n return html`\n ${!hasChildren\n ? html`\n ${href\n ? html`<a\n class=${linkClasses}\n href=${!disabled ? href : undefined}\n role=\"treeitem\"\n ?aria-disabled=${disabled}\n aria-current=${!this.href\n ? this.active || undefined\n : this.active\n ? 'page'\n : undefined}\n tabindex=${disabled ? -1 : undefined}\n @click=${onClick}>\n <div id=\"label\" class=\"${prefix}--tree-node__label\">\n <slot\n name=\"icon\"\n @slotchange=${handleIconSlotChange}></slot>\n ${label}\n </div>\n </a>`\n : html` <div id=\"label\" class=\"${prefix}--tree-node__label\">\n <slot name=\"icon\" @slotchange=${handleIconSlotChange}></slot>\n ${label}\n </div>`}\n `\n : html`\n ${href\n ? html` <a\n role=\"treeitem\"\n class=${linkClasses}\n aria-expanded=${!!isExpanded}\n aria-owns=\"subtree-id-${id}\"\n href=${!disabled ? href : undefined}\n tabindex=${disabled ? -1 : undefined}\n @click=${onClick}>\n <div id=\"label\" class=\"${prefix}--tree-node__label\">\n <span\n class=\"${prefix}--tree-parent-node__toggle\"\n ?disabled=${disabled}\n @click=${handleToggleClick}>\n ${iconLoader(CaretDown16, { class: toggleClasses })}\n </span>\n <span class=\"${prefix}--tree-node__label__details\">\n <slot\n name=\"icon\"\n @slotchange=${handleIconSlotChange}></slot>\n ${label}\n </span>\n </div>\n </a>\n <ul id=\"subtree-id-${id} role=\"group\" class=\"${subTreeClasses}\">\n <slot @slotchange=${handleSlotChange}></slot>\n </ul>`\n : html`<div id=\"label\" class=\"${prefix}--tree-node__label\">\n <span\n class=\"${prefix}--tree-parent-node__toggle\"\n ?disabled=${disabled}\n @click=${handleToggleClick}>\n ${iconLoader(CaretDown16, { class: toggleClasses })}\n </span>\n <span class=\"${prefix}--tree-node__label__details\">\n <slot\n name=\"icon\"\n @slotchange=${handleIconSlotChange}></slot>\n ${label}\n </span>\n </div>\n <ul\n id=\"subtree-id-${id}\"\n role=\"group\"\n class=\"${subTreeClasses}\">\n <slot @slotchange=${handleSlotChange}></slot>\n </ul>`}\n `}\n `;\n }\n\n /**\n * The name of the custom event fired when node is selected.\n */\n static get eventSelected() {\n return `${prefix}-tree-node-selected`;\n }\n\n /**\n * The name of the custom event fired when a node is toggled\n */\n static get eventToggled() {\n return `${prefix}-tree-node-toggled`;\n }\n\n static styles = styles;\n}\n\nexport default CDSTreeNode;\n"],"names":["customElement"],"mappings":"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"}
1
+ {"version":3,"file":"tree-node.js","sources":["../../../src/components/tree-view/tree-node.ts"],"sourcesContent":["/**\n * @license\n *\n * Copyright IBM Corp. 2025, 2025\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { classMap } from 'lit/directives/class-map.js';\nimport { LitElement, html } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { prefix } from '../../globals/settings';\nimport { iconLoader } from '../../globals/internal/icon-loader';\nimport CaretDown16 from '@carbon/icons/es/caret--down/16.js';\n\nimport styles from './tree-view.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\n/**\n * Tree node.\n *\n * @element cds-tree-node\n * @fires eventSelected\n * The name of the custom event fired when node is selected.\n * @fires eventToggled\n * The name of the custom event fired when a node is toggled.\n */\n@customElement(`${prefix}-tree-node`)\nclass CDSTreeNode extends LitElement {\n private _hasChildren = false;\n private _hasIcon = false;\n /**\n * Handles `slotchange` event.\n */\n private _handleSlotChange({ target }: Event) {\n const { _depth: depth, disabled } = this;\n const items = (target as HTMLSlotElement)\n .assignedNodes()\n .filter(\n (node) =>\n node.nodeType === Node.ELEMENT_NODE &&\n (node as Element).tagName.toLowerCase() === `${prefix}-tree-node`\n );\n\n items.forEach((item) => {\n (item as CDSTreeNode)._depth = depth + 1;\n (item as CDSTreeNode).disabled = disabled;\n });\n\n this._hasChildren = items.length > 0;\n if (this._hasChildren) this.setAttribute('parent', '');\n this.requestUpdate();\n }\n\n /**\n * Handles icon's `slotchange` event.\n */\n private _handleIconSlotChange({ target }: Event) {\n this._hasIcon = (target as HTMLSlotElement).assignedNodes().length > 0;\n if (this._hasIcon) this.setAttribute('has-icon', '');\n this.requestUpdate();\n }\n\n /**\n * Handles style updates based on depth\n */\n private _handleStyles = () => {\n const {\n _depth: depth,\n _hasChildren: hasChildren,\n _hasIcon: hasIcon,\n } = this;\n const calcOffset = () => {\n if (hasChildren && hasIcon) {\n return depth + 1 + depth * 0.5;\n }\n\n if (hasChildren) {\n return depth + 1;\n }\n\n if (hasIcon) {\n return depth + 2 + depth * 0.5;\n }\n\n return depth + 2.5;\n };\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n const label = this.shadowRoot!.querySelector(\n `.${prefix}--tree-node__label`\n );\n if (label) {\n (label as HTMLElement).style.marginInlineStart = `-${calcOffset()}rem`;\n (label as HTMLElement).style.paddingInlineStart = `${calcOffset()}rem`;\n }\n };\n\n _handleToggleClick = (event) => {\n const { disabled, href } = this;\n if (disabled) return;\n event.stopPropagation();\n if (href) {\n event.preventDefault();\n }\n this.isExpanded = !this.isExpanded;\n if (this.hasAttribute('aria-expanded')) {\n this.setAttribute('aria-expanded', String(this.isExpanded));\n }\n };\n\n /**\n * sets if tree node is active\n */\n @property({ type: Boolean, reflect: true })\n active = false;\n\n /**\n * disabled property\n */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /**\n * **Note:** this is controlled by the parent TreeView component, do not set manually.\n * TreeNode depth to determine spacing\n */\n @state()\n private _depth = 0;\n\n /**\n * Specify if the TreeNode is expanded (only applicable to parent nodes)\n */\n @property({ type: Boolean, attribute: 'is-expanded' })\n isExpanded = false;\n\n /**\n * Optional: The URL the TreeNode is linking to\n */\n @property({})\n href;\n\n /**\n * Specify the TreeNode's ID. Must be unique in the DOM and is used for props.active, props.selected and aria-owns\n */\n @property({})\n id = Math.random().toString(16).slice(2);\n\n /**\n * Rendered label for the TreeNode\n */\n @property({})\n label!: string;\n\n /**\n * sets if tree node is selected\n */\n @property({ type: Boolean, reflect: true })\n selected = false;\n\n /**\n * when adding an href to control the click functionality\n */\n @property({ type: Function })\n onClick?: (event: Event) => void;\n\n connectedCallback() {\n super.connectedCallback();\n\n // Detect children on first render\n this._hasChildren = Array.from(this.children).some(\n (node) => node.tagName.toLowerCase() === `${prefix}-tree-node`\n );\n\n this._hasIcon = Array.from(this.children).some(\n (node) => node.getAttribute('slot') === 'icon'\n );\n\n if (!this.hasAttribute('role') && !this.href) {\n this.setAttribute('role', 'treeitem');\n }\n\n if (!this.hasAttribute('aria-owns') && this._hasChildren && !this.href) {\n this.setAttribute('aria-owns', `subtree-id-${this.id}`);\n }\n\n if (this._hasChildren && !this.href) {\n this.setAttribute('aria-expanded', String(this.isExpanded));\n }\n\n if (!this.hasAttribute('aria-label')) {\n this.setAttribute('aria-label', this.label);\n }\n }\n\n private _dispatchSelectedEvent(value) {\n const { eventSelected } = this.constructor as typeof CDSTreeNode;\n this.dispatchEvent(\n new CustomEvent(eventSelected, {\n bubbles: true,\n composed: true,\n detail: {\n value,\n },\n })\n );\n }\n\n private _dispatchToggledEvent(value, expanded) {\n const { eventToggled } = this.constructor as typeof CDSTreeNode;\n this.dispatchEvent(\n new CustomEvent(eventToggled, {\n bubbles: true,\n composed: true,\n detail: {\n value,\n expanded: expanded,\n },\n })\n );\n }\n\n updated(changedProperties) {\n if (changedProperties.has('_depth')) {\n this._handleStyles();\n }\n if (changedProperties.has('selected')) {\n if (!this.href) {\n this.setAttribute(\n 'aria-selected',\n String(\n !this.href ? (this.disabled ? undefined : this.selected) : undefined\n )\n );\n }\n\n if (this.selected) {\n this._dispatchSelectedEvent(this.label);\n }\n }\n\n if (changedProperties.has('active') && !this.href) {\n this.setAttribute(\n 'aria-current',\n String(\n !this.href\n ? this.active || undefined\n : this.active\n ? 'page'\n : undefined\n )\n );\n }\n\n if (changedProperties.has('disabled')) {\n this.setAttribute('aria-disabled', String(this.disabled));\n }\n\n if (changedProperties.has('isExpanded')) {\n this._dispatchToggledEvent(this.label, this.isExpanded);\n }\n }\n\n render() {\n const {\n disabled,\n isExpanded,\n href,\n id,\n label,\n onClick,\n _hasChildren: hasChildren,\n _handleIconSlotChange: handleIconSlotChange,\n _handleSlotChange: handleSlotChange,\n _handleToggleClick: handleToggleClick,\n } = this;\n\n let toggleClasses = `${prefix}--tree-parent-node__toggle-icon`;\n if (isExpanded) {\n toggleClasses += `${prefix}--tree-parent-node__toggle-icon--expanded`;\n }\n\n const linkClasses = classMap({\n [`${prefix}--tree-node`]: true,\n [`${prefix}--tree-node--active`]: this.active,\n [`${prefix}--tree-node--disabled`]: disabled,\n [`${prefix}--tree-node--selected`]: this.selected,\n [`${prefix}--tree-node--with-icon`]: this._hasIcon,\n [`${prefix}--tree-leaf-node`]: !this._hasChildren,\n [`${prefix}--tree-parent-node`]: this._hasChildren,\n });\n\n const subTreeClasses = classMap({\n [`${prefix}--tree-node__children`]: true,\n [`${prefix}--tree-node__hidden`]: !isExpanded,\n });\n\n return html`\n ${!hasChildren\n ? html`\n ${href\n ? html`<a\n class=${linkClasses}\n href=${!disabled ? href : undefined}\n role=\"treeitem\"\n ?aria-disabled=${disabled}\n aria-current=${!this.href\n ? this.active || undefined\n : this.active\n ? 'page'\n : undefined}\n tabindex=${disabled ? -1 : undefined}\n @click=${onClick}>\n <div id=\"label\" class=\"${prefix}--tree-node__label\">\n <slot\n name=\"icon\"\n @slotchange=${handleIconSlotChange}></slot>\n ${label}\n </div>\n </a>`\n : html` <div id=\"label\" class=\"${prefix}--tree-node__label\">\n <slot name=\"icon\" @slotchange=${handleIconSlotChange}></slot>\n ${label}\n </div>`}\n `\n : html`\n ${href\n ? html` <a\n role=\"treeitem\"\n class=${linkClasses}\n aria-expanded=${!!isExpanded}\n aria-owns=\"subtree-id-${id}\"\n href=${!disabled ? href : undefined}\n tabindex=${disabled ? -1 : undefined}\n @click=${onClick}>\n <div id=\"label\" class=\"${prefix}--tree-node__label\">\n <span\n class=\"${prefix}--tree-parent-node__toggle\"\n ?disabled=${disabled}\n @click=${handleToggleClick}>\n ${iconLoader(CaretDown16, { class: toggleClasses })}\n </span>\n <span class=\"${prefix}--tree-node__label__details\">\n <slot\n name=\"icon\"\n @slotchange=${handleIconSlotChange}></slot>\n ${label}\n </span>\n </div>\n </a>\n <ul id=\"subtree-id-${id} role=\"group\" class=\"${subTreeClasses}\">\n <slot @slotchange=${handleSlotChange}></slot>\n </ul>`\n : html`<div id=\"label\" class=\"${prefix}--tree-node__label\">\n <span\n class=\"${prefix}--tree-parent-node__toggle\"\n ?disabled=${disabled}\n @click=${handleToggleClick}>\n ${iconLoader(CaretDown16, { class: toggleClasses })}\n </span>\n <span class=\"${prefix}--tree-node__label__details\">\n <slot\n name=\"icon\"\n @slotchange=${handleIconSlotChange}></slot>\n ${label}\n </span>\n </div>\n <ul\n id=\"subtree-id-${id}\"\n role=\"group\"\n class=\"${subTreeClasses}\">\n <slot @slotchange=${handleSlotChange}></slot>\n </ul>`}\n `}\n `;\n }\n\n /**\n * The name of the custom event fired when node is selected.\n */\n static get eventSelected() {\n return `${prefix}-tree-node-selected`;\n }\n\n /**\n * The name of the custom event fired when a node is toggled\n */\n static get eventToggled() {\n return `${prefix}-tree-node-toggled`;\n }\n\n static styles = styles;\n}\n\nexport default CDSTreeNode;\n"],"names":["customElement"],"mappings":"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"}
@@ -53,7 +53,7 @@ let CDSTreeView = CDSTreeView_1 = class CDSTreeView extends HostListenerMixin(Li
53
53
  node.selected = isTarget;
54
54
  node.active = isTarget;
55
55
  if (!isTarget) {
56
- // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- https://github.com/carbon-design-system/carbon/issues/20071
56
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- https://github.com/carbon-design-system/carbon/issues/20452
57
57
  isLink
58
58
  ? element.setAttribute('tabindex', '-1')
59
59
  : element.removeAttribute('tabindex');
@@ -70,7 +70,7 @@ let CDSTreeView = CDSTreeView_1 = class CDSTreeView extends HostListenerMixin(Li
70
70
  const currentIndex = nodes.findIndex((node) => {
71
71
  var _a;
72
72
  return withLinks
73
- ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20071
73
+ ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452
74
74
  ((_a = node.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('a').getAttribute('tabindex')) === '0'
75
75
  : node.getAttribute('tabindex') === '0';
76
76
  });
@@ -122,12 +122,12 @@ let CDSTreeView = CDSTreeView_1 = class CDSTreeView extends HostListenerMixin(Li
122
122
  node.removeAttribute('tabindex');
123
123
  }
124
124
  else {
125
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20071
125
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452
126
126
  (_a = node.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('a').setAttribute('tabindex', '-1');
127
127
  }
128
128
  });
129
129
  const element = withLinks
130
- ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20071
130
+ ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452
131
131
  nodes[nextIndex].shadowRoot.querySelector('a')
132
132
  : nodes[nextIndex];
133
133
  element.setAttribute('tabindex', '0');
@@ -143,7 +143,7 @@ let CDSTreeView = CDSTreeView_1 = class CDSTreeView extends HostListenerMixin(Li
143
143
  const selectedNode = Array.from(nodes).find((node) => node.selected) ||
144
144
  nodes[0];
145
145
  const element = selectedNode.href
146
- ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20071
146
+ ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452
147
147
  selectedNode.shadowRoot.querySelector('a')
148
148
  : selectedNode;
149
149
  element.setAttribute('tabindex', '0');
@@ -205,12 +205,12 @@ __decorate([
205
205
  ], CDSTreeView.prototype, "size", void 0);
206
206
  __decorate([
207
207
  HostListener('click')
208
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20071
208
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452
209
209
  // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to
210
210
  ], CDSTreeView.prototype, "_click", void 0);
211
211
  __decorate([
212
212
  HostListener('keydown')
213
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20071
213
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452
214
214
  // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to
215
215
  ], CDSTreeView.prototype, "_handleKeyDown", void 0);
216
216
  CDSTreeView = CDSTreeView_1 = __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"tree-view.js","sources":["../../../src/components/tree-view/tree-view.ts"],"sourcesContent":["/**\n * @license\n *\n * Copyright IBM Corp. 2025, 2025\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { classMap } from 'lit/directives/class-map.js';\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { prefix } from '../../globals/settings';\nimport { TREE_SIZE } from './defs';\nimport HostListener from '../../globals/decorators/host-listener';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport styles from './tree-view.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport CDSTreeNode from './tree-node';\n\nexport { TREE_SIZE };\n/**\n * Tree view.\n *\n * @element cds-tree-view\n */\n@customElement(`${prefix}-tree-view`)\nclass CDSTreeView extends HostListenerMixin(LitElement) {\n /**\n * Specify whether or not the label should be hidden\n */\n @property({ type: Boolean, attribute: 'hide-label' })\n hideLabel = false;\n\n /**\n * Provide the label text that will be read by a screen reader\n */\n @property()\n label!: string;\n\n /**\n * Specify the size of the tree from a list of available sizes.\n */\n @property({ reflect: true })\n size = TREE_SIZE.SMALL;\n\n @HostListener('click')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20071\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _click = ({ target }) => {\n if ((target as CDSTreeNode).disabled) return;\n\n const nodes = this.querySelectorAll(CDSTreeView.selectorTreeNode);\n nodes.forEach((node) => {\n const isTarget = node === target;\n const isLink = (node as CDSTreeNode).hasAttribute('href');\n const element = isLink ? node.shadowRoot?.querySelector('a') : node;\n (node as CDSTreeNode).selected = isTarget;\n (node as CDSTreeNode).active = isTarget;\n if (!isTarget) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- https://github.com/carbon-design-system/carbon/issues/20071\n isLink\n ? (element as CDSTreeNode).setAttribute('tabindex', '-1')\n : (element as CDSTreeNode).removeAttribute('tabindex');\n } else (element as CDSTreeNode).setAttribute('tabindex', '0');\n });\n };\n\n @HostListener('keydown')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20071\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleKeyDown = (event: KeyboardEvent) => {\n const { key } = event;\n const nodes = Array.from(\n this.querySelectorAll(CDSTreeView.selectorTreeNode)\n ).filter(\n (node) => node.checkVisibility() && !node.hasAttribute('disabled')\n );\n\n const allNodes = Array.from(\n this.querySelectorAll(CDSTreeView.selectorTreeNode)\n ).filter((node) => !node.hasAttribute('disabled'));\n\n const withLinks = (nodes[0] as CDSTreeNode).href;\n\n const currentIndex = nodes.findIndex((node) =>\n withLinks\n ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20071\n node.shadowRoot?.querySelector('a')!.getAttribute('tabindex') === '0'\n : node.getAttribute('tabindex') === '0'\n );\n\n let nextIndex = currentIndex;\n\n switch (key) {\n case 'ArrowDown':\n nextIndex = Math.min(currentIndex + 1, nodes.length - 1);\n break;\n case 'ArrowUp':\n nextIndex = Math.max(currentIndex - 1, 0);\n break;\n case 'Home':\n nextIndex = 0;\n break;\n case 'End':\n nextIndex = nodes.length - 1;\n break;\n case 'Enter':\n case ' ':\n event.preventDefault();\n allNodes.forEach((node) => {\n (node as CDSTreeNode).selected = false;\n (node as CDSTreeNode).active = false;\n });\n (nodes[currentIndex] as CDSTreeNode).selected = true;\n (nodes[currentIndex] as CDSTreeNode).active = true;\n break;\n case 'ArrowRight':\n if ((nodes[currentIndex] as CDSTreeNode).hasAttribute('parent')) {\n (nodes[currentIndex] as CDSTreeNode).isExpanded = true;\n nodes[currentIndex].setAttribute('aria-expanded', 'true');\n }\n break;\n case 'ArrowLeft':\n if (!nodes[currentIndex].hasAttribute('parent')) {\n const temp = nodes.findIndex(\n (node) => node === nodes[currentIndex].parentElement\n );\n nextIndex = temp === -1 ? currentIndex : temp;\n } else {\n (nodes[currentIndex] as CDSTreeNode).isExpanded = false;\n nodes[currentIndex].setAttribute('aria-expanded', 'false');\n }\n break;\n }\n\n if (nextIndex !== currentIndex) {\n nodes.forEach((node) => {\n if (!withLinks) {\n node.removeAttribute('tabindex');\n } else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20071\n node.shadowRoot?.querySelector('a')!.setAttribute('tabindex', '-1');\n }\n });\n const element = withLinks\n ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20071\n (nodes[nextIndex] as CDSTreeNode).shadowRoot!.querySelector('a')\n : nodes[nextIndex];\n (element as CDSTreeNode).setAttribute('tabindex', '0');\n (element as CDSTreeNode).focus();\n event.preventDefault();\n }\n };\n\n private async _setInitialFocus() {\n await this.updateComplete;\n\n const nodes = this.querySelectorAll(CDSTreeView.selectorTreeNode);\n if (nodes.length > 0) {\n const selectedNode =\n Array.from(nodes).find((node) => (node as CDSTreeNode).selected) ||\n nodes[0];\n const element = (selectedNode as CDSTreeNode).href\n ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20071\n (selectedNode as CDSTreeNode).shadowRoot!.querySelector('a')\n : selectedNode;\n (element as CDSTreeNode).setAttribute('tabindex', '0');\n }\n }\n connectedCallback() {\n super.connectedCallback();\n\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'tree');\n }\n\n if (!this.hasAttribute('aria-label')) {\n this.setAttribute('aria-label', this.label);\n }\n }\n\n updated(changedProperties) {\n this._setInitialFocus();\n\n if (changedProperties.has('size')) {\n const items = this.querySelectorAll(CDSTreeView.selectorTreeNode);\n items.forEach((item) => {\n (item as CDSTreeNode).setAttribute('size', this.size);\n });\n }\n }\n\n render() {\n const { hideLabel, label, size } = this;\n const labelId = 'tree-view__label';\n const treeClasses = classMap({\n [`${prefix}--tree`]: true,\n [`${prefix}--tree--${size}`]: size,\n });\n return html`\n ${\n !hideLabel\n ? html`<label id=${labelId} class=${`${prefix}--label`}\n >${label}\n </label>`\n : null\n }\n <ul\n aria-label=${hideLabel ? label : undefined}\n aria-labelledby=${!hideLabel ? labelId : undefined}\n class=${treeClasses}\n role=\"tree\">\n <slot><slot>\n </ul>\n `;\n }\n\n static get selectorTreeNode() {\n return `${prefix}-tree-node`;\n }\n\n static styles = styles;\n}\n\nexport default CDSTreeView;\n"],"names":["customElement"],"mappings":"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"}
1
+ {"version":3,"file":"tree-view.js","sources":["../../../src/components/tree-view/tree-view.ts"],"sourcesContent":["/**\n * @license\n *\n * Copyright IBM Corp. 2025, 2025\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { classMap } from 'lit/directives/class-map.js';\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { prefix } from '../../globals/settings';\nimport { TREE_SIZE } from './defs';\nimport HostListener from '../../globals/decorators/host-listener';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport styles from './tree-view.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport CDSTreeNode from './tree-node';\n\nexport { TREE_SIZE };\n/**\n * Tree view.\n *\n * @element cds-tree-view\n */\n@customElement(`${prefix}-tree-view`)\nclass CDSTreeView extends HostListenerMixin(LitElement) {\n /**\n * Specify whether or not the label should be hidden\n */\n @property({ type: Boolean, attribute: 'hide-label' })\n hideLabel = false;\n\n /**\n * Provide the label text that will be read by a screen reader\n */\n @property()\n label!: string;\n\n /**\n * Specify the size of the tree from a list of available sizes.\n */\n @property({ reflect: true })\n size = TREE_SIZE.SMALL;\n\n @HostListener('click')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _click = ({ target }) => {\n if ((target as CDSTreeNode).disabled) return;\n\n const nodes = this.querySelectorAll(CDSTreeView.selectorTreeNode);\n nodes.forEach((node) => {\n const isTarget = node === target;\n const isLink = (node as CDSTreeNode).hasAttribute('href');\n const element = isLink ? node.shadowRoot?.querySelector('a') : node;\n (node as CDSTreeNode).selected = isTarget;\n (node as CDSTreeNode).active = isTarget;\n if (!isTarget) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- https://github.com/carbon-design-system/carbon/issues/20452\n isLink\n ? (element as CDSTreeNode).setAttribute('tabindex', '-1')\n : (element as CDSTreeNode).removeAttribute('tabindex');\n } else (element as CDSTreeNode).setAttribute('tabindex', '0');\n });\n };\n\n @HostListener('keydown')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleKeyDown = (event: KeyboardEvent) => {\n const { key } = event;\n const nodes = Array.from(\n this.querySelectorAll(CDSTreeView.selectorTreeNode)\n ).filter(\n (node) => node.checkVisibility() && !node.hasAttribute('disabled')\n );\n\n const allNodes = Array.from(\n this.querySelectorAll(CDSTreeView.selectorTreeNode)\n ).filter((node) => !node.hasAttribute('disabled'));\n\n const withLinks = (nodes[0] as CDSTreeNode).href;\n\n const currentIndex = nodes.findIndex((node) =>\n withLinks\n ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n node.shadowRoot?.querySelector('a')!.getAttribute('tabindex') === '0'\n : node.getAttribute('tabindex') === '0'\n );\n\n let nextIndex = currentIndex;\n\n switch (key) {\n case 'ArrowDown':\n nextIndex = Math.min(currentIndex + 1, nodes.length - 1);\n break;\n case 'ArrowUp':\n nextIndex = Math.max(currentIndex - 1, 0);\n break;\n case 'Home':\n nextIndex = 0;\n break;\n case 'End':\n nextIndex = nodes.length - 1;\n break;\n case 'Enter':\n case ' ':\n event.preventDefault();\n allNodes.forEach((node) => {\n (node as CDSTreeNode).selected = false;\n (node as CDSTreeNode).active = false;\n });\n (nodes[currentIndex] as CDSTreeNode).selected = true;\n (nodes[currentIndex] as CDSTreeNode).active = true;\n break;\n case 'ArrowRight':\n if ((nodes[currentIndex] as CDSTreeNode).hasAttribute('parent')) {\n (nodes[currentIndex] as CDSTreeNode).isExpanded = true;\n nodes[currentIndex].setAttribute('aria-expanded', 'true');\n }\n break;\n case 'ArrowLeft':\n if (!nodes[currentIndex].hasAttribute('parent')) {\n const temp = nodes.findIndex(\n (node) => node === nodes[currentIndex].parentElement\n );\n nextIndex = temp === -1 ? currentIndex : temp;\n } else {\n (nodes[currentIndex] as CDSTreeNode).isExpanded = false;\n nodes[currentIndex].setAttribute('aria-expanded', 'false');\n }\n break;\n }\n\n if (nextIndex !== currentIndex) {\n nodes.forEach((node) => {\n if (!withLinks) {\n node.removeAttribute('tabindex');\n } else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n node.shadowRoot?.querySelector('a')!.setAttribute('tabindex', '-1');\n }\n });\n const element = withLinks\n ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n (nodes[nextIndex] as CDSTreeNode).shadowRoot!.querySelector('a')\n : nodes[nextIndex];\n (element as CDSTreeNode).setAttribute('tabindex', '0');\n (element as CDSTreeNode).focus();\n event.preventDefault();\n }\n };\n\n private async _setInitialFocus() {\n await this.updateComplete;\n\n const nodes = this.querySelectorAll(CDSTreeView.selectorTreeNode);\n if (nodes.length > 0) {\n const selectedNode =\n Array.from(nodes).find((node) => (node as CDSTreeNode).selected) ||\n nodes[0];\n const element = (selectedNode as CDSTreeNode).href\n ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n (selectedNode as CDSTreeNode).shadowRoot!.querySelector('a')\n : selectedNode;\n (element as CDSTreeNode).setAttribute('tabindex', '0');\n }\n }\n connectedCallback() {\n super.connectedCallback();\n\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'tree');\n }\n\n if (!this.hasAttribute('aria-label')) {\n this.setAttribute('aria-label', this.label);\n }\n }\n\n updated(changedProperties) {\n this._setInitialFocus();\n\n if (changedProperties.has('size')) {\n const items = this.querySelectorAll(CDSTreeView.selectorTreeNode);\n items.forEach((item) => {\n (item as CDSTreeNode).setAttribute('size', this.size);\n });\n }\n }\n\n render() {\n const { hideLabel, label, size } = this;\n const labelId = 'tree-view__label';\n const treeClasses = classMap({\n [`${prefix}--tree`]: true,\n [`${prefix}--tree--${size}`]: size,\n });\n return html`\n ${\n !hideLabel\n ? html`<label id=${labelId} class=${`${prefix}--label`}\n >${label}\n </label>`\n : null\n }\n <ul\n aria-label=${hideLabel ? label : undefined}\n aria-labelledby=${!hideLabel ? labelId : undefined}\n class=${treeClasses}\n role=\"tree\">\n <slot><slot>\n </ul>\n `;\n }\n\n static get selectorTreeNode() {\n return `${prefix}-tree-node`;\n }\n\n static styles = styles;\n}\n\nexport default CDSTreeView;\n"],"names":["customElement"],"mappings":"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"}
@@ -154,17 +154,17 @@ __decorate([
154
154
  ], CDSHeaderGlobalAction.prototype, "buttonLabelInactive", void 0);
155
155
  __decorate([
156
156
  HostListener('focusout')
157
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20071
157
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452
158
158
  // @ts-ignore
159
159
  ], CDSHeaderGlobalAction.prototype, "_handleFocusOut", null);
160
160
  __decorate([
161
161
  HostListener('click', { capture: true })
162
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20071
162
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452
163
163
  // @ts-ignore
164
164
  ], CDSHeaderGlobalAction.prototype, "_handleClick", null);
165
165
  __decorate([
166
166
  HostListener('keydown', { capture: true })
167
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20071
167
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452
168
168
  // @ts-ignore
169
169
  ], CDSHeaderGlobalAction.prototype, "_handleKeyDown", null);
170
170
  CDSHeaderGlobalAction = __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"header-global-action.js","sources":["../../../src/components/ui-shell/header-global-action.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2023, 2025\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { LitElement } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport {\n BUTTON_TOOLTIP_POSITION,\n BUTTON_KIND,\n BUTTON_SIZE,\n} from '../button/button';\nimport CDSButton from '../button/button';\nimport HostListener from '../../globals/decorators/host-listener';\nimport styles from './header.scss?lit';\nimport { prefix } from '../../globals/settings';\n\n/**\n * Header global action button\n *\n * @element cds-header-global-action\n */\n@customElement(`${prefix}-header-global-action`)\nclass CDSHeaderGlobalAction extends CDSButton {\n @query('button')\n protected _buttonNode!: HTMLButtonElement;\n\n /**\n * Specify whether the action is currently active\n */\n @property({ type: Boolean, reflect: true })\n active;\n\n /**\n * Specify which header panel the button is associated with.\n */\n @property({ type: String, attribute: 'panel-id', reflect: true })\n panelId;\n\n /**\n * The `aria-label` attribute for the button in its active state.\n */\n @property({ attribute: 'button-label-active' })\n buttonLabelActive;\n\n /**\n * The `aria-label` attribute for the button in its inactive state.\n */\n @property({ attribute: 'button-label-inactive' })\n buttonLabelInactive;\n\n connectedCallback() {\n this.tooltipPosition = BUTTON_TOOLTIP_POSITION.BOTTOM;\n this.kind = BUTTON_KIND.GHOST;\n this.size = BUTTON_SIZE.LARGE;\n super.connectedCallback();\n }\n\n firstUpdated() {\n document.addEventListener('click', this._handleDocumentClick, true);\n document.addEventListener('focusin', this._handleDocumentFocusIn, true);\n }\n\n disconnectedCallback() {\n document.removeEventListener('click', this._handleDocumentClick, true);\n document.removeEventListener('focusin', this._handleDocumentFocusIn, true);\n super.disconnectedCallback();\n }\n\n private _handleDocumentClick = (event: MouseEvent) => {\n const path = event.composedPath();\n this._handlePanelCloseIfFocusOutside(path);\n };\n\n private _handleDocumentFocusIn = (event: FocusEvent) => {\n const path = event.composedPath();\n this._handlePanelCloseIfFocusOutside(path);\n };\n\n private _handlePanelCloseIfFocusOutside(path: EventTarget[]) {\n const panel = this.ownerDocument?.querySelector(`#${this.panelId}`);\n const isInside = path.some(\n (el) =>\n el instanceof HTMLElement && (panel?.contains(el) || this.contains(el))\n );\n\n if (panel && !isInside) {\n panel.removeAttribute('expanded');\n this.active = false;\n }\n }\n\n @HostListener('focusout')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20071\n // @ts-ignore\n private _handleFocusOut(event: FocusEvent) {\n const panel = this.ownerDocument?.querySelector(`#${this.panelId}`);\n const relatedTarget = event.relatedTarget as HTMLElement;\n\n if (\n panel &&\n relatedTarget &&\n !this.contains(relatedTarget) &&\n !panel.contains(relatedTarget)\n ) {\n panel.removeAttribute('expanded');\n this.active = false;\n }\n }\n\n @HostListener('click', { capture: true })\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20071\n // @ts-ignore\n private _handleClick(event: Event) {\n const { disabled } = this;\n if (disabled) {\n event.stopPropagation();\n } else {\n const panel = this.ownerDocument?.querySelector(`#${this.panelId}`);\n\n // see if there is related panel for header-global-action button first\n // and then set the expanded attr of it accordingly\n if (panel) {\n const expanded = panel.getAttribute('expanded');\n\n if (expanded) {\n panel.removeAttribute('expanded');\n } else {\n panel.setAttribute('expanded', 'true');\n }\n\n const active = !this.active;\n this.active = active;\n }\n }\n }\n\n @HostListener('keydown', { capture: true })\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20071\n // @ts-ignore\n private _handleKeyDown(event: KeyboardEvent) {\n const { key } = event;\n if (key === 'Enter' || key === ' ') {\n event.preventDefault();\n this._handleClick(event);\n } else if (key === 'Escape') {\n const panel = this.ownerDocument?.querySelector(`#${this.panelId}`);\n if (panel) {\n panel.removeAttribute('expanded');\n }\n this.active = false;\n }\n }\n\n updated() {\n if (this._buttonNode) {\n this._buttonNode.classList.add(`${prefix}--header__action`);\n }\n }\n\n shouldUpdate(changedProperties) {\n if (changedProperties.has('active')) {\n if (this.active) {\n this._buttonNode.classList.add(`${prefix}--header__action--active`);\n\n if (this.buttonLabelActive) {\n this.tooltipText = this.buttonLabelActive;\n }\n } else {\n this._buttonNode.classList.remove(`${prefix}--header__action--active`);\n\n if (this.buttonLabelInactive) {\n this.tooltipText = this.buttonLabelInactive;\n }\n }\n }\n return true;\n }\n\n static shadowRootOptions = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n\n static styles = styles;\n}\n\nexport default CDSHeaderGlobalAction;\n"],"names":["customElement"],"mappings":"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"}
1
+ {"version":3,"file":"header-global-action.js","sources":["../../../src/components/ui-shell/header-global-action.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2023, 2025\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { LitElement } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport {\n BUTTON_TOOLTIP_POSITION,\n BUTTON_KIND,\n BUTTON_SIZE,\n} from '../button/button';\nimport CDSButton from '../button/button';\nimport HostListener from '../../globals/decorators/host-listener';\nimport styles from './header.scss?lit';\nimport { prefix } from '../../globals/settings';\n\n/**\n * Header global action button\n *\n * @element cds-header-global-action\n */\n@customElement(`${prefix}-header-global-action`)\nclass CDSHeaderGlobalAction extends CDSButton {\n @query('button')\n protected _buttonNode!: HTMLButtonElement;\n\n /**\n * Specify whether the action is currently active\n */\n @property({ type: Boolean, reflect: true })\n active;\n\n /**\n * Specify which header panel the button is associated with.\n */\n @property({ type: String, attribute: 'panel-id', reflect: true })\n panelId;\n\n /**\n * The `aria-label` attribute for the button in its active state.\n */\n @property({ attribute: 'button-label-active' })\n buttonLabelActive;\n\n /**\n * The `aria-label` attribute for the button in its inactive state.\n */\n @property({ attribute: 'button-label-inactive' })\n buttonLabelInactive;\n\n connectedCallback() {\n this.tooltipPosition = BUTTON_TOOLTIP_POSITION.BOTTOM;\n this.kind = BUTTON_KIND.GHOST;\n this.size = BUTTON_SIZE.LARGE;\n super.connectedCallback();\n }\n\n firstUpdated() {\n document.addEventListener('click', this._handleDocumentClick, true);\n document.addEventListener('focusin', this._handleDocumentFocusIn, true);\n }\n\n disconnectedCallback() {\n document.removeEventListener('click', this._handleDocumentClick, true);\n document.removeEventListener('focusin', this._handleDocumentFocusIn, true);\n super.disconnectedCallback();\n }\n\n private _handleDocumentClick = (event: MouseEvent) => {\n const path = event.composedPath();\n this._handlePanelCloseIfFocusOutside(path);\n };\n\n private _handleDocumentFocusIn = (event: FocusEvent) => {\n const path = event.composedPath();\n this._handlePanelCloseIfFocusOutside(path);\n };\n\n private _handlePanelCloseIfFocusOutside(path: EventTarget[]) {\n const panel = this.ownerDocument?.querySelector(`#${this.panelId}`);\n const isInside = path.some(\n (el) =>\n el instanceof HTMLElement && (panel?.contains(el) || this.contains(el))\n );\n\n if (panel && !isInside) {\n panel.removeAttribute('expanded');\n this.active = false;\n }\n }\n\n @HostListener('focusout')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore\n private _handleFocusOut(event: FocusEvent) {\n const panel = this.ownerDocument?.querySelector(`#${this.panelId}`);\n const relatedTarget = event.relatedTarget as HTMLElement;\n\n if (\n panel &&\n relatedTarget &&\n !this.contains(relatedTarget) &&\n !panel.contains(relatedTarget)\n ) {\n panel.removeAttribute('expanded');\n this.active = false;\n }\n }\n\n @HostListener('click', { capture: true })\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore\n private _handleClick(event: Event) {\n const { disabled } = this;\n if (disabled) {\n event.stopPropagation();\n } else {\n const panel = this.ownerDocument?.querySelector(`#${this.panelId}`);\n\n // see if there is related panel for header-global-action button first\n // and then set the expanded attr of it accordingly\n if (panel) {\n const expanded = panel.getAttribute('expanded');\n\n if (expanded) {\n panel.removeAttribute('expanded');\n } else {\n panel.setAttribute('expanded', 'true');\n }\n\n const active = !this.active;\n this.active = active;\n }\n }\n }\n\n @HostListener('keydown', { capture: true })\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore\n private _handleKeyDown(event: KeyboardEvent) {\n const { key } = event;\n if (key === 'Enter' || key === ' ') {\n event.preventDefault();\n this._handleClick(event);\n } else if (key === 'Escape') {\n const panel = this.ownerDocument?.querySelector(`#${this.panelId}`);\n if (panel) {\n panel.removeAttribute('expanded');\n }\n this.active = false;\n }\n }\n\n updated() {\n if (this._buttonNode) {\n this._buttonNode.classList.add(`${prefix}--header__action`);\n }\n }\n\n shouldUpdate(changedProperties) {\n if (changedProperties.has('active')) {\n if (this.active) {\n this._buttonNode.classList.add(`${prefix}--header__action--active`);\n\n if (this.buttonLabelActive) {\n this.tooltipText = this.buttonLabelActive;\n }\n } else {\n this._buttonNode.classList.remove(`${prefix}--header__action--active`);\n\n if (this.buttonLabelInactive) {\n this.tooltipText = this.buttonLabelInactive;\n }\n }\n }\n return true;\n }\n\n static shadowRootOptions = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n\n static styles = styles;\n}\n\nexport default CDSHeaderGlobalAction;\n"],"names":["customElement"],"mappings":"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"}
@@ -152,12 +152,12 @@ __decorate([
152
152
  ], CDSHeaderMenu.prototype, "_topMenuItem", void 0);
153
153
  __decorate([
154
154
  HostListener('keydown')
155
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20071
155
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452
156
156
  // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to
157
157
  ], CDSHeaderMenu.prototype, "_handleKeydownTrigger", null);
158
158
  __decorate([
159
159
  HostListener('focusout')
160
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20071
160
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452
161
161
  // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to
162
162
  ], CDSHeaderMenu.prototype, "_handleBlur", null);
163
163
  __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"header-menu.js","sources":["../../../src/components/ui-shell/header-menu.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2019, 2024\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { LitElement, html } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { prefix } from '../../globals/settings';\nimport ChevronDown16 from '@carbon/icons/es/chevron--down/16.js';\nimport { iconLoader } from '../../globals/internal/icon-loader';\nimport FocusMixin from '../../globals/mixins/focus';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport HostListener from '../../globals/decorators/host-listener';\nimport { forEach } from '../../globals/internal/collection-helpers';\nimport CDSHeaderMenuItem from './header-menu-item';\nimport styles from './header.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\n/**\n * Header menu.\n *\n * @element cds-header-menu\n * @csspart trigger The trigger button.\n * @csspart trigger-icon The trigger button icon.\n * @csspart menu-body The menu body.\n */\n@customElement(`${prefix}-header-menu`)\nclass CDSHeaderMenu extends HostListenerMixin(FocusMixin(LitElement)) {\n /**\n * The trigger button.\n */\n @query('[part=\"trigger\"]')\n protected _topMenuItem!: HTMLElement;\n\n /**\n * keeps track if header menu has any active submenus\n */\n private _hasActiveChildren = false;\n\n /**\n * Handles `click` event handler on this element.\n */\n private _handleClick() {\n this._handleUserInitiatedToggle();\n }\n\n /**\n * Handler for the `keydown` event on the trigger button.\n */\n @HostListener('keydown')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20071\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleKeydownTrigger({ key }: KeyboardEvent) {\n if (key === 'Esc' || key === 'Escape') {\n this._handleUserInitiatedToggle(false);\n }\n }\n\n /**\n * Handles user-initiated toggling the open state.\n *\n * @param [force] If specified, forces the open state to the given one.\n */\n private _handleUserInitiatedToggle(force = !this.expanded) {\n this.expanded = force;\n if (!force) {\n this._topMenuItem.focus();\n }\n }\n\n /**\n * Handles `blur` event handler on this element.\n */\n @HostListener('focusout')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20071\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleBlur({ relatedTarget }: FocusEvent) {\n if (!this.contains(relatedTarget as Node)) {\n this.expanded = false;\n }\n }\n\n /**\n * `true` if the menu should be expanded.\n */\n @property({ type: Boolean, reflect: true })\n expanded = false;\n\n /**\n * Applies selected styles to the item if a user sets this to true and `aria-current !== 'page'`.\n */\n @property({ type: Boolean, attribute: 'is-active', reflect: true })\n isActive = false;\n\n /**\n * The content of the trigger button.\n */\n @property({ attribute: 'trigger-content' })\n triggerContent = '';\n\n /**\n * The `aria-label` attribute for the menu UI.\n */\n @property({ attribute: 'menu-label' })\n menuLabel!: string;\n\n connectedCallback() {\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'listitem');\n }\n const { selectorItem } = this.constructor as typeof CDSHeaderMenu;\n forEach(this.querySelectorAll(selectorItem), (elem) => {\n if ((elem as CDSHeaderMenuItem).isActive === true) {\n this._hasActiveChildren = true;\n }\n });\n\n super.connectedCallback();\n }\n\n updated(changedProperties) {\n if (changedProperties.has('expanded')) {\n const { selectorItem } = this.constructor as typeof CDSHeaderMenu;\n const { expanded } = this;\n forEach(this.querySelectorAll(selectorItem), (elem) => {\n (elem as HTMLElement).tabIndex = expanded ? 0 : -1;\n });\n }\n }\n\n render() {\n const {\n expanded,\n isActive,\n triggerContent,\n menuLabel,\n _hasActiveChildren,\n _handleClick: handleClick,\n } = this;\n\n const linkClasses = classMap({\n [`${prefix}--header__menu-item`]: true,\n [`${prefix}--header__menu-title`]: true,\n [`${prefix}--header__menu-item--current`]:\n isActive || (_hasActiveChildren && !expanded),\n });\n\n return html`\n <a\n part=\"trigger\"\n role=\"button\"\n tabindex=\"0\"\n class=\"${linkClasses}\"\n href=\"javascript:void 0\"\n aria-haspopup=\"menu\"\n aria-expanded=\"${String(Boolean(expanded))}\"\n @click=${handleClick}>\n ${triggerContent}${iconLoader(ChevronDown16, {\n part: 'trigger-icon',\n class: `${prefix}--header__menu-arrow`,\n })}\n </a>\n <ul\n part=\"menu-body\"\n class=\"${prefix}--header__menu\"\n aria-label=\"${ifDefined(menuLabel)}\">\n <slot></slot>\n </ul>\n `;\n }\n\n /**\n * A selector that will return the menu items.\n */\n static get selectorItem() {\n return `${prefix}-header-menu-item`;\n }\n\n static shadowRootOptions = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n static styles = styles;\n}\n\nexport default CDSHeaderMenu;\n"],"names":["customElement"],"mappings":"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"}
1
+ {"version":3,"file":"header-menu.js","sources":["../../../src/components/ui-shell/header-menu.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2019, 2024\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { LitElement, html } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { prefix } from '../../globals/settings';\nimport ChevronDown16 from '@carbon/icons/es/chevron--down/16.js';\nimport { iconLoader } from '../../globals/internal/icon-loader';\nimport FocusMixin from '../../globals/mixins/focus';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport HostListener from '../../globals/decorators/host-listener';\nimport { forEach } from '../../globals/internal/collection-helpers';\nimport CDSHeaderMenuItem from './header-menu-item';\nimport styles from './header.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\n/**\n * Header menu.\n *\n * @element cds-header-menu\n * @csspart trigger The trigger button.\n * @csspart trigger-icon The trigger button icon.\n * @csspart menu-body The menu body.\n */\n@customElement(`${prefix}-header-menu`)\nclass CDSHeaderMenu extends HostListenerMixin(FocusMixin(LitElement)) {\n /**\n * The trigger button.\n */\n @query('[part=\"trigger\"]')\n protected _topMenuItem!: HTMLElement;\n\n /**\n * keeps track if header menu has any active submenus\n */\n private _hasActiveChildren = false;\n\n /**\n * Handles `click` event handler on this element.\n */\n private _handleClick() {\n this._handleUserInitiatedToggle();\n }\n\n /**\n * Handler for the `keydown` event on the trigger button.\n */\n @HostListener('keydown')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleKeydownTrigger({ key }: KeyboardEvent) {\n if (key === 'Esc' || key === 'Escape') {\n this._handleUserInitiatedToggle(false);\n }\n }\n\n /**\n * Handles user-initiated toggling the open state.\n *\n * @param [force] If specified, forces the open state to the given one.\n */\n private _handleUserInitiatedToggle(force = !this.expanded) {\n this.expanded = force;\n if (!force) {\n this._topMenuItem.focus();\n }\n }\n\n /**\n * Handles `blur` event handler on this element.\n */\n @HostListener('focusout')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleBlur({ relatedTarget }: FocusEvent) {\n if (!this.contains(relatedTarget as Node)) {\n this.expanded = false;\n }\n }\n\n /**\n * `true` if the menu should be expanded.\n */\n @property({ type: Boolean, reflect: true })\n expanded = false;\n\n /**\n * Applies selected styles to the item if a user sets this to true and `aria-current !== 'page'`.\n */\n @property({ type: Boolean, attribute: 'is-active', reflect: true })\n isActive = false;\n\n /**\n * The content of the trigger button.\n */\n @property({ attribute: 'trigger-content' })\n triggerContent = '';\n\n /**\n * The `aria-label` attribute for the menu UI.\n */\n @property({ attribute: 'menu-label' })\n menuLabel!: string;\n\n connectedCallback() {\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'listitem');\n }\n const { selectorItem } = this.constructor as typeof CDSHeaderMenu;\n forEach(this.querySelectorAll(selectorItem), (elem) => {\n if ((elem as CDSHeaderMenuItem).isActive === true) {\n this._hasActiveChildren = true;\n }\n });\n\n super.connectedCallback();\n }\n\n updated(changedProperties) {\n if (changedProperties.has('expanded')) {\n const { selectorItem } = this.constructor as typeof CDSHeaderMenu;\n const { expanded } = this;\n forEach(this.querySelectorAll(selectorItem), (elem) => {\n (elem as HTMLElement).tabIndex = expanded ? 0 : -1;\n });\n }\n }\n\n render() {\n const {\n expanded,\n isActive,\n triggerContent,\n menuLabel,\n _hasActiveChildren,\n _handleClick: handleClick,\n } = this;\n\n const linkClasses = classMap({\n [`${prefix}--header__menu-item`]: true,\n [`${prefix}--header__menu-title`]: true,\n [`${prefix}--header__menu-item--current`]:\n isActive || (_hasActiveChildren && !expanded),\n });\n\n return html`\n <a\n part=\"trigger\"\n role=\"button\"\n tabindex=\"0\"\n class=\"${linkClasses}\"\n href=\"javascript:void 0\"\n aria-haspopup=\"menu\"\n aria-expanded=\"${String(Boolean(expanded))}\"\n @click=${handleClick}>\n ${triggerContent}${iconLoader(ChevronDown16, {\n part: 'trigger-icon',\n class: `${prefix}--header__menu-arrow`,\n })}\n </a>\n <ul\n part=\"menu-body\"\n class=\"${prefix}--header__menu\"\n aria-label=\"${ifDefined(menuLabel)}\">\n <slot></slot>\n </ul>\n `;\n }\n\n /**\n * A selector that will return the menu items.\n */\n static get selectorItem() {\n return `${prefix}-header-menu-item`;\n }\n\n static shadowRootOptions = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n static styles = styles;\n}\n\nexport default CDSHeaderMenu;\n"],"names":["customElement"],"mappings":"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"}