@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
@@ -192,12 +192,12 @@ __decorate([
192
192
  ], CDSStructuredListRow.prototype, "_inputNode", void 0);
193
193
  __decorate([
194
194
  HostListener('click')
195
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20071
195
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452
196
196
  // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to
197
197
  ], CDSStructuredListRow.prototype, "_handleClick", void 0);
198
198
  __decorate([
199
199
  HostListener('keydown')
200
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20071
200
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452
201
201
  // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to
202
202
  ], CDSStructuredListRow.prototype, "_handleKeydown", void 0);
203
203
  __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"structured-list-row.js","sources":["../../../src/components/structured-list/structured-list-row.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2019, 2023\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, html } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { prefix } from '../../globals/settings';\nimport { iconLoader } from '../../globals/internal/icon-loader';\nimport CheckmarkFilled16 from '@carbon/icons/es/checkmark--filled/16.js';\nimport HostListener from '../../globals/decorators/host-listener';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport RadioGroupManager, {\n NAVIGATION_DIRECTION,\n ManagedRadioButtonDelegate,\n} from '../../globals/internal/radio-group-manager';\nimport styles from './structured-list.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\n/**\n * Map of navigation direction by key.\n */\nconst navigationDirectionForKey = {\n ArrowUp: NAVIGATION_DIRECTION.BACKWARD,\n Up: NAVIGATION_DIRECTION.BACKWARD, // IE\n ArrowDown: NAVIGATION_DIRECTION.FORWARD,\n Down: NAVIGATION_DIRECTION.FORWARD, // IE\n};\n\n/**\n * The interface for `RadioGroupManager` for structured list row.\n */\nclass StructuredListRowRadioButtonDelegate\n implements ManagedRadioButtonDelegate\n{\n /**\n * The structured list row to target.\n */\n private _row: CDSStructuredListRow;\n\n constructor(row: CDSStructuredListRow) {\n this._row = row;\n }\n\n get checked() {\n return this._row.selected;\n }\n\n set checked(checked) {\n this._row.selected = checked;\n this._row.tabIndex = checked ? 0 : -1;\n }\n\n get tabIndex() {\n return this._row.tabIndex;\n }\n\n set tabIndex(tabIndex) {\n this._row.tabIndex = tabIndex;\n }\n\n get name() {\n return this._row.selectionName;\n }\n\n compareDocumentPosition(other: StructuredListRowRadioButtonDelegate) {\n return this._row.compareDocumentPosition(other._row);\n }\n\n focus() {\n this._row.focus();\n }\n}\n\n/**\n * Structured list row.\n *\n * @element cds-structured-list-row\n */\n@customElement(`${prefix}-structured-list-row`)\nclass CDSStructuredListRow extends HostListenerMixin(LitElement) {\n /**\n * The radio group manager associated with the radio button.\n */\n private _manager: RadioGroupManager | null = null;\n\n /**\n * The interface for `RadioGroupManager` for structured list row.\n */\n private _radioButtonDelegate = new StructuredListRowRadioButtonDelegate(this);\n\n /**\n * The hidden radio button.\n */\n @query('#input')\n private _inputNode!: HTMLInputElement;\n\n /**\n * Handles `click` event on this element.\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 _handleClick = () => {\n const { _inputNode: inputNode } = this;\n if (inputNode) {\n this.selected = true;\n if (this._manager) {\n this._manager.select(this._radioButtonDelegate);\n }\n }\n };\n\n /**\n * Handles `keydown` event on this element.\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 { _inputNode: inputNode } = this;\n const manager = this._manager;\n if (inputNode && manager) {\n const navigationDirection = navigationDirectionForKey[event.key];\n if (navigationDirection) {\n manager.select(\n manager.navigate(this._radioButtonDelegate, navigationDirection)\n );\n }\n if (event.key === ' ' || event.key === 'Enter') {\n manager.select(this._radioButtonDelegate);\n }\n }\n };\n\n /**\n * `true` if this structured list row should be selectable and selected.\n */\n @property({ type: Boolean, reflect: true })\n selected = false;\n\n /**\n * The `name` attribute for the `<input>` for selection.\n * If present, this structured list row will be a selectable one.\n */\n @property({ attribute: 'selection-name' })\n selectionName = '';\n\n /**\n * The `value` attribute for the `<input>` for selection.\n */\n @property({ attribute: 'selection-value' })\n selectionValue = '';\n\n /**\n * The content to put into the `<title>` attribute of the selection icon.\n */\n @property({ attribute: 'selection-icon-title' })\n selectionIconTitle = '';\n\n connectedCallback() {\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'row');\n }\n super.connectedCallback();\n if (!this._manager) {\n this._manager = RadioGroupManager.get(\n this.getRootNode({ composed: true }) as Document\n );\n const { selectionName } = this;\n if (selectionName) {\n this._manager?.add(this._radioButtonDelegate);\n }\n }\n }\n\n disconnectedCallback() {\n if (this._manager) {\n this._manager.delete(this._radioButtonDelegate);\n }\n super.disconnectedCallback();\n }\n\n updated(changedProperties) {\n const { _manager: manager, selectionName } = this;\n if (changedProperties.has('selectionName')) {\n if (manager) {\n manager.delete(\n this._radioButtonDelegate,\n changedProperties.get('selectionName')\n );\n if (selectionName) {\n manager.add(this._radioButtonDelegate);\n }\n }\n this.setAttribute(\n 'tabindex',\n !selectionName ||\n !manager ||\n !manager.shouldBeFocusable(this._radioButtonDelegate)\n ? '-1'\n : '0'\n );\n }\n }\n\n render() {\n const { selected, selectionName, selectionValue, selectionIconTitle } =\n this;\n if (selectionName) {\n // \"Selected\" style with `.${prefix}--structured-list-td` does not work somehow - Need investigation\n return html`\n <slot></slot>\n <input\n id=\"input\"\n type=\"radio\"\n class=\"${prefix}--structured-list-input ${prefix}--visually-hidden\"\n .checked=${selected}\n name=${selectionName}\n value=${ifDefined(selectionValue)} />\n <div\n class=\"${prefix}--structured-list-td ${prefix}--structured-list-cell\">\n ${iconLoader(CheckmarkFilled16, {\n class: `${prefix}--structured-list-svg`,\n title: selectionIconTitle,\n })}\n </div>\n `;\n }\n return html` <slot></slot> `;\n }\n\n static styles = styles;\n}\n\nexport default CDSStructuredListRow;\n"],"names":["customElement"],"mappings":"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"}
1
+ {"version":3,"file":"structured-list-row.js","sources":["../../../src/components/structured-list/structured-list-row.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2019, 2023\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, html } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { prefix } from '../../globals/settings';\nimport { iconLoader } from '../../globals/internal/icon-loader';\nimport CheckmarkFilled16 from '@carbon/icons/es/checkmark--filled/16.js';\nimport HostListener from '../../globals/decorators/host-listener';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport RadioGroupManager, {\n NAVIGATION_DIRECTION,\n ManagedRadioButtonDelegate,\n} from '../../globals/internal/radio-group-manager';\nimport styles from './structured-list.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\n/**\n * Map of navigation direction by key.\n */\nconst navigationDirectionForKey = {\n ArrowUp: NAVIGATION_DIRECTION.BACKWARD,\n Up: NAVIGATION_DIRECTION.BACKWARD, // IE\n ArrowDown: NAVIGATION_DIRECTION.FORWARD,\n Down: NAVIGATION_DIRECTION.FORWARD, // IE\n};\n\n/**\n * The interface for `RadioGroupManager` for structured list row.\n */\nclass StructuredListRowRadioButtonDelegate\n implements ManagedRadioButtonDelegate\n{\n /**\n * The structured list row to target.\n */\n private _row: CDSStructuredListRow;\n\n constructor(row: CDSStructuredListRow) {\n this._row = row;\n }\n\n get checked() {\n return this._row.selected;\n }\n\n set checked(checked) {\n this._row.selected = checked;\n this._row.tabIndex = checked ? 0 : -1;\n }\n\n get tabIndex() {\n return this._row.tabIndex;\n }\n\n set tabIndex(tabIndex) {\n this._row.tabIndex = tabIndex;\n }\n\n get name() {\n return this._row.selectionName;\n }\n\n compareDocumentPosition(other: StructuredListRowRadioButtonDelegate) {\n return this._row.compareDocumentPosition(other._row);\n }\n\n focus() {\n this._row.focus();\n }\n}\n\n/**\n * Structured list row.\n *\n * @element cds-structured-list-row\n */\n@customElement(`${prefix}-structured-list-row`)\nclass CDSStructuredListRow extends HostListenerMixin(LitElement) {\n /**\n * The radio group manager associated with the radio button.\n */\n private _manager: RadioGroupManager | null = null;\n\n /**\n * The interface for `RadioGroupManager` for structured list row.\n */\n private _radioButtonDelegate = new StructuredListRowRadioButtonDelegate(this);\n\n /**\n * The hidden radio button.\n */\n @query('#input')\n private _inputNode!: HTMLInputElement;\n\n /**\n * Handles `click` event on this element.\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 _handleClick = () => {\n const { _inputNode: inputNode } = this;\n if (inputNode) {\n this.selected = true;\n if (this._manager) {\n this._manager.select(this._radioButtonDelegate);\n }\n }\n };\n\n /**\n * Handles `keydown` event on this element.\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 { _inputNode: inputNode } = this;\n const manager = this._manager;\n if (inputNode && manager) {\n const navigationDirection = navigationDirectionForKey[event.key];\n if (navigationDirection) {\n manager.select(\n manager.navigate(this._radioButtonDelegate, navigationDirection)\n );\n }\n if (event.key === ' ' || event.key === 'Enter') {\n manager.select(this._radioButtonDelegate);\n }\n }\n };\n\n /**\n * `true` if this structured list row should be selectable and selected.\n */\n @property({ type: Boolean, reflect: true })\n selected = false;\n\n /**\n * The `name` attribute for the `<input>` for selection.\n * If present, this structured list row will be a selectable one.\n */\n @property({ attribute: 'selection-name' })\n selectionName = '';\n\n /**\n * The `value` attribute for the `<input>` for selection.\n */\n @property({ attribute: 'selection-value' })\n selectionValue = '';\n\n /**\n * The content to put into the `<title>` attribute of the selection icon.\n */\n @property({ attribute: 'selection-icon-title' })\n selectionIconTitle = '';\n\n connectedCallback() {\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'row');\n }\n super.connectedCallback();\n if (!this._manager) {\n this._manager = RadioGroupManager.get(\n this.getRootNode({ composed: true }) as Document\n );\n const { selectionName } = this;\n if (selectionName) {\n this._manager?.add(this._radioButtonDelegate);\n }\n }\n }\n\n disconnectedCallback() {\n if (this._manager) {\n this._manager.delete(this._radioButtonDelegate);\n }\n super.disconnectedCallback();\n }\n\n updated(changedProperties) {\n const { _manager: manager, selectionName } = this;\n if (changedProperties.has('selectionName')) {\n if (manager) {\n manager.delete(\n this._radioButtonDelegate,\n changedProperties.get('selectionName')\n );\n if (selectionName) {\n manager.add(this._radioButtonDelegate);\n }\n }\n this.setAttribute(\n 'tabindex',\n !selectionName ||\n !manager ||\n !manager.shouldBeFocusable(this._radioButtonDelegate)\n ? '-1'\n : '0'\n );\n }\n }\n\n render() {\n const { selected, selectionName, selectionValue, selectionIconTitle } =\n this;\n if (selectionName) {\n // \"Selected\" style with `.${prefix}--structured-list-td` does not work somehow - Need investigation\n return html`\n <slot></slot>\n <input\n id=\"input\"\n type=\"radio\"\n class=\"${prefix}--structured-list-input ${prefix}--visually-hidden\"\n .checked=${selected}\n name=${selectionName}\n value=${ifDefined(selectionValue)} />\n <div\n class=\"${prefix}--structured-list-td ${prefix}--structured-list-cell\">\n ${iconLoader(CheckmarkFilled16, {\n class: `${prefix}--structured-list-svg`,\n title: selectionIconTitle,\n })}\n </div>\n `;\n }\n return html` <slot></slot> `;\n }\n\n static styles = styles;\n}\n\nexport default CDSStructuredListRow;\n"],"names":["customElement"],"mappings":"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"}
@@ -65,7 +65,7 @@ let CDSStructuredList = class CDSStructuredList extends FocusMixin(LitElement) {
65
65
  // Propagate watched attribute to descendants until `:host-context()` gets supported in all major browsers
66
66
  forEach(this.querySelectorAll(this.constructor
67
67
  .selectorRowsWithHeader), (elem) => {
68
- // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- https://github.com/carbon-design-system/carbon/issues/20071
68
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- https://github.com/carbon-design-system/carbon/issues/20452
69
69
  this[`${attr}`]
70
70
  ? elem.setAttribute(attr, '')
71
71
  : elem.removeAttribute(attr);
@@ -1 +1 @@
1
- {"version":3,"file":"structured-list.js","sources":["../../../src/components/structured-list/structured-list.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2019, 2023\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 { forEach } from '../../globals/internal/collection-helpers';\nimport FocusMixin from '../../globals/mixins/focus';\nimport CDSStructuredListRow from './structured-list-row';\nimport styles from './structured-list.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\n/**\n * Structured list wrapper.\n *\n * @element cds-structured-list\n */\n@customElement(`${prefix}-structured-list`)\nclass CDSStructuredList extends FocusMixin(LitElement) {\n /**\n * The `name` attribute for the `<input>` for selection.\n * If present, this structured list will be a selectable one.\n */\n @property({ attribute: 'selection-name' })\n selectionName = '';\n\n /**\n * Specify if structured list is condensed, default is false\n */\n @property({ type: Boolean, reflect: true })\n condensed = false;\n\n /**\n * Specify if structured list is flush, default is false\n */\n @property({ type: Boolean, reflect: true })\n flush = false;\n\n connectedCallback() {\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'table');\n }\n super.connectedCallback();\n }\n\n shouldUpdate(changedProperties) {\n if (changedProperties.has('selectionName')) {\n // Propagate `selectionName` attribute to descendants until `:host-context()` gets supported in all major browsers\n forEach(\n this.querySelectorAll(\n (this.constructor as typeof CDSStructuredList).selectorRowsWithHeader\n ),\n (elem) => {\n (elem as CDSStructuredListRow).selectionName = this.selectionName;\n }\n );\n }\n return true;\n }\n\n updated(changedProperties) {\n const attributes = ['condensed', 'flush'];\n attributes.forEach((attr) => {\n if (changedProperties.has(attr)) {\n // Propagate watched attribute to descendants until `:host-context()` gets supported in all major browsers\n forEach(\n this.querySelectorAll(\n (this.constructor as typeof CDSStructuredList)\n .selectorRowsWithHeader\n ),\n (elem) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- https://github.com/carbon-design-system/carbon/issues/20071\n this[`${attr}`]\n ? elem.setAttribute(attr, '')\n : elem.removeAttribute(attr);\n }\n );\n }\n });\n }\n\n render() {\n const { condensed, flush, selectionName } = this;\n const classes = classMap({\n [`${prefix}--structured-list`]: true,\n [`${prefix}--structured-list--selection`]: Boolean(selectionName),\n [`${prefix}--structured-list--condensed`]: condensed,\n [`${prefix}--structured-list--flush`]: flush,\n });\n return html`\n <section id=\"section\" class=${classes}><slot></slot></section>\n `;\n }\n\n /**\n * The CSS selector to find the rows, including header rows.\n */\n static selectorRowsWithHeader = `${prefix}-structured-list-row,${prefix}-structured-list-header-row`;\n static shadowRootOptions = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n static styles = styles;\n}\n\nexport default CDSStructuredList;\n"],"names":["customElement"],"mappings":"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"}
1
+ {"version":3,"file":"structured-list.js","sources":["../../../src/components/structured-list/structured-list.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2019, 2023\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 { forEach } from '../../globals/internal/collection-helpers';\nimport FocusMixin from '../../globals/mixins/focus';\nimport CDSStructuredListRow from './structured-list-row';\nimport styles from './structured-list.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\n/**\n * Structured list wrapper.\n *\n * @element cds-structured-list\n */\n@customElement(`${prefix}-structured-list`)\nclass CDSStructuredList extends FocusMixin(LitElement) {\n /**\n * The `name` attribute for the `<input>` for selection.\n * If present, this structured list will be a selectable one.\n */\n @property({ attribute: 'selection-name' })\n selectionName = '';\n\n /**\n * Specify if structured list is condensed, default is false\n */\n @property({ type: Boolean, reflect: true })\n condensed = false;\n\n /**\n * Specify if structured list is flush, default is false\n */\n @property({ type: Boolean, reflect: true })\n flush = false;\n\n connectedCallback() {\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'table');\n }\n super.connectedCallback();\n }\n\n shouldUpdate(changedProperties) {\n if (changedProperties.has('selectionName')) {\n // Propagate `selectionName` attribute to descendants until `:host-context()` gets supported in all major browsers\n forEach(\n this.querySelectorAll(\n (this.constructor as typeof CDSStructuredList).selectorRowsWithHeader\n ),\n (elem) => {\n (elem as CDSStructuredListRow).selectionName = this.selectionName;\n }\n );\n }\n return true;\n }\n\n updated(changedProperties) {\n const attributes = ['condensed', 'flush'];\n attributes.forEach((attr) => {\n if (changedProperties.has(attr)) {\n // Propagate watched attribute to descendants until `:host-context()` gets supported in all major browsers\n forEach(\n this.querySelectorAll(\n (this.constructor as typeof CDSStructuredList)\n .selectorRowsWithHeader\n ),\n (elem) => {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- https://github.com/carbon-design-system/carbon/issues/20452\n this[`${attr}`]\n ? elem.setAttribute(attr, '')\n : elem.removeAttribute(attr);\n }\n );\n }\n });\n }\n\n render() {\n const { condensed, flush, selectionName } = this;\n const classes = classMap({\n [`${prefix}--structured-list`]: true,\n [`${prefix}--structured-list--selection`]: Boolean(selectionName),\n [`${prefix}--structured-list--condensed`]: condensed,\n [`${prefix}--structured-list--flush`]: flush,\n });\n return html`\n <section id=\"section\" class=${classes}><slot></slot></section>\n `;\n }\n\n /**\n * The CSS selector to find the rows, including header rows.\n */\n static selectorRowsWithHeader = `${prefix}-structured-list-row,${prefix}-structured-list-header-row`;\n static shadowRootOptions = {\n ...LitElement.shadowRootOptions,\n delegatesFocus: true,\n };\n static styles = styles;\n}\n\nexport default CDSStructuredList;\n"],"names":["customElement"],"mappings":"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"}
@@ -43,7 +43,7 @@ let CDSTabs = class CDSTabs extends HostListenerMixin(CDSContentSwitcher) {
43
43
  /**
44
44
  * The currently selected index
45
45
  */
46
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20071
46
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452
47
47
  // @ts-ignore: TS thinks this method is not referred to
48
48
  this._currentIndex = 0;
49
49
  /**
@@ -53,7 +53,7 @@ let CDSTabs = class CDSTabs extends HostListenerMixin(CDSContentSwitcher) {
53
53
  /**
54
54
  * `true` if the tablist is scrollable
55
55
  */
56
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20071
56
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452
57
57
  // @ts-ignore: TS thinks this method is not referred to
58
58
  this._isScrollable = false;
59
59
  /**
@@ -206,15 +206,15 @@ let CDSTabs = class CDSTabs extends HostListenerMixin(CDSContentSwitcher) {
206
206
  return;
207
207
  }
208
208
  const { scrollLeft, clientWidth, scrollWidth } =
209
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20071
209
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452
210
210
  this._contentContainerNode;
211
211
  switch (direction) {
212
212
  case -1:
213
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20071
213
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452
214
214
  this._contentContainerNode.scrollLeft = Math.max(scrollLeft - (scrollWidth / this._totalTabs) * 1.5, 0);
215
215
  break;
216
216
  case 1:
217
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20071
217
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452
218
218
  this._contentContainerNode.scrollLeft =
219
219
  Math.min(scrollLeft + (scrollWidth / this._totalTabs) * 1.5, scrollWidth - clientWidth) + 1;
220
220
  break;
@@ -285,7 +285,7 @@ let CDSTabs = class CDSTabs extends HostListenerMixin(CDSContentSwitcher) {
285
285
  // Call super to run content-switcher init logic (initial selection)
286
286
  super.firstUpdated();
287
287
  const { selectorTablist } = this.constructor;
288
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20071
288
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452
289
289
  const tablist = this.shadowRoot.querySelector(selectorTablist);
290
290
  this.tablist = tablist;
291
291
  this._cleanAndCreateIntersectionObserverContainer({ create: true });
@@ -301,24 +301,24 @@ let CDSTabs = class CDSTabs extends HostListenerMixin(CDSContentSwitcher) {
301
301
  const start = (_c = tab.offsetLeft) !== null && _c !== void 0 ? _c : 0;
302
302
  const end = tab.offsetLeft + tabWidth;
303
303
  // The start and end of the visible area of the tablist
304
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20071
304
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452
305
305
  const visibleStart = this.tablist.scrollLeft + this.BUTTON_WIDTH;
306
306
  const visibleEnd =
307
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20071
307
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452
308
308
  this.tablist.scrollLeft +
309
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20071
309
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452
310
310
  this.tablist.clientWidth -
311
311
  this.BUTTON_WIDTH;
312
312
  // The beginning of the tab is clipped and not visible
313
313
  if (start < visibleStart) {
314
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20071
314
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452
315
315
  this.tablist.scrollLeft = start - this.BUTTON_WIDTH;
316
316
  }
317
317
  // The end of the tab is clipped and not visible
318
318
  if (end > visibleEnd) {
319
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20071
319
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452
320
320
  this.tablist.scrollLeft =
321
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20071
321
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452
322
322
  end + this.BUTTON_WIDTH - this.tablist.clientWidth;
323
323
  }
324
324
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.js","sources":["../../../src/components/tabs/tabs.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 { TemplateResult, html } from 'lit';\nimport { property, state, query } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { prefix } from '../../globals/settings';\nimport { iconLoader } from '../../globals/internal/icon-loader';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport HostListener from '../../globals/decorators/host-listener';\nimport { forEach } from '../../globals/internal/collection-helpers';\nimport ChevronLeft16 from '@carbon/icons/es/chevron--left/16.js';\nimport ChevronRight16 from '@carbon/icons/es/chevron--right/16.js';\nimport CDSContentSwitcher, {\n NAVIGATION_DIRECTION,\n} from '../content-switcher/content-switcher';\nimport { TABS_KEYBOARD_ACTION, TABS_TYPE } from './defs';\nimport CDSTab from './tab';\nimport styles from './tabs.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\nexport { NAVIGATION_DIRECTION, TABS_KEYBOARD_ACTION, TABS_TYPE };\n\n/**\n * Tabs.\n *\n * @element cds-tabs\n * @fires cds-tabs-beingselected\n * The custom event fired before a tab is selected upon a user gesture.\n * Cancellation of this event stops changing the user-initiated selection.\n * @fires cds-tabs-selected - The custom event fired after a a tab is selected upon a user gesture.\n */\n@customElement(`${prefix}-tabs`)\nexport default class CDSTabs extends HostListenerMixin(CDSContentSwitcher) {\n /**\n * The latest status of this dropdown, for screen reader to accounce.\n */\n private _assistiveStatusText?: string;\n\n /**\n * The currently selected index\n */\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20071\n // @ts-ignore: TS thinks this method is not referred to\n private _currentIndex = 0;\n\n /**\n * Total number of tabs in the component\n */\n private _totalTabs = 0;\n\n /**\n * `true` if the tablist is scrollable\n */\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20071\n // @ts-ignore: TS thinks this method is not referred to\n private _isScrollable = false;\n\n /**\n * The DOM element for the tablist.\n */\n private tablist: Element | null = null;\n\n /**\n * The width of the overflow scroll buttons.\n */\n private BUTTON_WIDTH = 44;\n\n /**\n * Navigates through tabs.\n *\n * @param direction `-1` to navigate backward, `1` to navigate forward.\n * @param [options] The options.\n * @param [options.immediate]\n * Defaults to `true`\n * `true` to make it \"immediate selection change\" mode, which does:\n *\n * Starts with the selected item\n * Going prev/next item immediately changes the selection\n */\n protected _navigate(\n direction: number,\n { immediate = true }: { immediate?: boolean } = {}\n ) {\n const { selectorItem, selectorItemHighlighted, selectorItemSelected } = this\n .constructor as typeof CDSTabs;\n const nextItem = this._getNextItem(\n this.querySelector(\n immediate ? selectorItemSelected : selectorItemHighlighted\n ) as CDSTab,\n direction\n );\n if (!nextItem) {\n return;\n }\n\n if (immediate) {\n this._handleUserInitiatedSelectItem(nextItem as CDSTab);\n } else {\n forEach(this.querySelectorAll(selectorItem), (item) => {\n (item as CDSTab)[immediate ? 'selected' : 'highlighted'] =\n nextItem === item;\n });\n }\n\n // Using `{ block: 'nearest' }` to prevent scrolling unless scrolling is absolutely necessary.\n // `scrollIntoViewOptions` seems to work in latest Safari despite of MDN/caniuse table.\n // IE falls back to the old behavior.\n nextItem.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n\n const nextItemText = nextItem.textContent;\n if (nextItemText) {\n this._assistiveStatusText = nextItemText;\n }\n this._currentIndex += direction;\n this.requestUpdate();\n }\n\n @HostListener('click')\n protected _handleClick(event: MouseEvent) {\n super._handleClick(event);\n }\n\n @HostListener('keydown')\n protected _handleKeydown(event: KeyboardEvent) {\n const { key } = event;\n const action = (this.constructor as typeof CDSTabs).getAction(key);\n const enabledTabs = this.querySelectorAll(`${prefix}-tab:not([disabled])`);\n switch (action) {\n case TABS_KEYBOARD_ACTION.HOME:\n {\n const [firstEnabledTab] = enabledTabs;\n firstEnabledTab.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n });\n this._handleUserInitiatedSelectItem(firstEnabledTab as CDSTab);\n this.requestUpdate();\n }\n break;\n case TABS_KEYBOARD_ACTION.END:\n {\n const lastEnabledTab = enabledTabs[enabledTabs.length - 1];\n lastEnabledTab.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n });\n this._handleUserInitiatedSelectItem(lastEnabledTab as CDSTab);\n this.requestUpdate();\n }\n break;\n case TABS_KEYBOARD_ACTION.NAVIGATING:\n {\n const direction = NAVIGATION_DIRECTION[key];\n if (direction) {\n this._navigate(direction);\n }\n }\n break;\n default:\n break;\n }\n }\n\n /**\n * Handles click on overflow scroll buttons.\n *\n * @param _ Event object\n * @param [options] The options.\n * @param [options.direction] `-1` to scroll forward, `1` to scroll backward.\n */\n protected _handleScrollButtonClick(_, { direction }) {\n if (!this.tablist) {\n return;\n }\n const { scrollLeft, clientWidth, scrollWidth } =\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20071\n this._contentContainerNode!;\n switch (direction) {\n case -1:\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20071\n this._contentContainerNode!.scrollLeft = Math.max(\n scrollLeft - (scrollWidth / this._totalTabs) * 1.5,\n 0\n );\n break;\n case 1:\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20071\n this._contentContainerNode!.scrollLeft =\n Math.min(\n scrollLeft + (scrollWidth / this._totalTabs) * 1.5,\n scrollWidth - clientWidth\n ) + 1;\n break;\n default:\n break;\n }\n }\n\n _handleSlotchange() {\n // Call super to preserve content-switcher slot handling\n super._handleSlotchange?.();\n const { selectorItemSelected } = this.constructor as typeof CDSTabs;\n const selectedItem = this.querySelector(selectorItemSelected);\n const nextItem = this._getNextItem(selectedItem as CDSTab, 1);\n\n // Specifies child `<cds-tab>` to hide its divider instead of using CSS,\n // until `:host-context()` gets supported in all major browsers\n if (nextItem) {\n (nextItem as CDSTab).hideDivider = true;\n }\n }\n\n protected _selectionDidChange(itemToSelect: CDSTab) {\n super._selectionDidChange(itemToSelect);\n this._assistiveStatusText = this.selectedItemAssistiveText;\n }\n\n /**\n * The scrolling container.\n */\n @query(`.${prefix}--tabs-nav-content-container`)\n private _contentContainerNode?: HTMLElement;\n\n /**\n * The scrolling content.\n */\n @query(`.${prefix}--tabs-nav-content`)\n private _contentNode?: HTMLElement;\n\n /**\n * The current scroll position.\n */\n @state()\n private _currentScrollPosition = 0;\n\n /**\n * The left-hand sentinel to track intersection with the host element.\n * If they intersect, the left-hand paginator button should be hidden.\n */\n @query(`.${prefix}--sub-content-left`)\n private _intersectionLeftSentinelNode?: HTMLElement;\n\n /**\n * The right-hand sentinel to track intersection with the host element.\n * If they intersect, the right-hand paginator button should be hidden.\n */\n @query(`.${prefix}--sub-content-right`)\n private _intersectionRightSentinelNode?: HTMLElement;\n\n /**\n * An assistive text for screen reader to announce, telling the open state.\n */\n @property({ attribute: 'selecting-items-assistive-text' })\n selectingItemsAssistiveText =\n 'Selecting items. Use up and down arrow keys to navigate.';\n\n /**\n * An assistive text for screen reader to announce, telling that an item is selected.\n */\n @property({ attribute: 'selected-item-assistive-text' })\n selectedItemAssistiveText = 'Selected an item.';\n\n /**\n * The content of the trigger button for narrow mode.\n */\n @property({ attribute: 'trigger-content' })\n triggerContent = '';\n\n /**\n * Tabs type.\n */\n @property({ reflect: true })\n type = TABS_TYPE.REGULAR;\n\n /**\n * `true` if left-hand scroll intersection sentinel intersects with the host element.\n * In this condition, the left-hand paginator button should be hidden.\n */\n @state()\n private _isIntersectionLeftTrackerInContent = true;\n\n /**\n * `true` if right-hand scroll intersection sentinel intersects with the host element.\n * In this condition, the right-hand paginator button should be hidden.\n */\n @state()\n private _isIntersectionRightTrackerInContent = true;\n\n /**\n * The observer for the intersection of left-side content edge.\n */\n private _observerIntersection: IntersectionObserver | null = null;\n\n /**\n * The intersection observer callback for the scrolling container.\n *\n * @param records The intersection observer records.\n */\n private _observeIntersectionContainer = (records) => {\n const {\n _intersectionLeftSentinelNode: intersectionLeftSentinelNode,\n _intersectionRightSentinelNode: intersectionRightSentinelNode,\n } = this;\n\n records.forEach(({ isIntersecting, target }) => {\n if (target === intersectionLeftSentinelNode) {\n this._isIntersectionLeftTrackerInContent = isIntersecting;\n }\n if (target === intersectionRightSentinelNode) {\n this._isIntersectionRightTrackerInContent = isIntersecting;\n }\n });\n };\n\n /**\n * Cleans-up and creates the intersection observer for the scrolling container.\n *\n * @param [options] The options.\n * @param [options.create] `true` to create the new intersection observer.\n */\n private _cleanAndCreateIntersectionObserverContainer({\n create,\n }: { create?: boolean } = {}) {\n const {\n _intersectionLeftSentinelNode: intersectionLeftSentinelNode,\n _intersectionRightSentinelNode: intersectionRightSentinelNode,\n } = this;\n\n if (this._observerIntersection) {\n this._observerIntersection.disconnect();\n this._observerIntersection = null;\n }\n\n if (create) {\n this._observerIntersection = new IntersectionObserver(\n this._observeIntersectionContainer,\n {\n root: this,\n threshold: 0,\n }\n );\n\n if (intersectionLeftSentinelNode) {\n this._observerIntersection.observe(intersectionLeftSentinelNode);\n }\n if (intersectionRightSentinelNode) {\n this._observerIntersection.observe(intersectionRightSentinelNode);\n }\n }\n }\n\n disconnectedCallback() {\n this._cleanAndCreateIntersectionObserverContainer();\n super.disconnectedCallback();\n }\n\n shouldUpdate(changedProperties) {\n super.shouldUpdate(changedProperties);\n if (this.tablist) {\n const { clientWidth, scrollWidth } = this.tablist;\n this._isScrollable = scrollWidth > clientWidth;\n }\n const { selectorItem } = this.constructor as typeof CDSTabs;\n if (changedProperties.has('type')) {\n forEach(this.querySelectorAll(selectorItem), (elem) => {\n this._totalTabs++;\n (elem as CDSTab).type = this.type;\n });\n }\n return true;\n }\n\n firstUpdated() {\n // Call super to run content-switcher init logic (initial selection)\n super.firstUpdated();\n\n const { selectorTablist } = this.constructor as typeof CDSTabs;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20071\n const tablist = this.shadowRoot!.querySelector(selectorTablist)!;\n this.tablist = tablist;\n this._cleanAndCreateIntersectionObserverContainer({ create: true });\n }\n\n updated(changedProperties) {\n // Call super to keep selection/value in sync\n super.updated?.(changedProperties);\n\n if (changedProperties.has('value')) {\n const tab = this.querySelector(\n `${prefix}-tab[value=\"${this.value}\"]`\n ) as HTMLElement;\n if (tab) {\n const { width: tabWidth } = tab?.getBoundingClientRect() ?? {};\n const start = tab.offsetLeft ?? 0;\n const end = tab.offsetLeft + tabWidth;\n\n // The start and end of the visible area of the tablist\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20071\n const visibleStart = this.tablist!.scrollLeft + this.BUTTON_WIDTH;\n const visibleEnd =\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20071\n this.tablist!.scrollLeft +\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20071\n this.tablist!.clientWidth -\n this.BUTTON_WIDTH;\n\n // The beginning of the tab is clipped and not visible\n if (start < visibleStart) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20071\n this.tablist!.scrollLeft = start - this.BUTTON_WIDTH;\n }\n\n // The end of the tab is clipped and not visible\n if (end > visibleEnd) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20071\n this.tablist!.scrollLeft =\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20071\n end + this.BUTTON_WIDTH - this.tablist!.clientWidth;\n }\n }\n }\n\n if (changedProperties.has('_currentScrollPosition')) {\n if (this._contentNode) {\n this._contentNode.style.insetInlineStart = `-${this._currentScrollPosition}px`;\n }\n }\n }\n\n /**\n * Render the previous button if tablist is wider than container.\n */\n protected renderPreviousButton(): TemplateResult | null {\n const {\n _isIntersectionLeftTrackerInContent: isIntersectionLeftTrackerInContent,\n } = this;\n const previousButtonClasses = classMap({\n [`${prefix}--tab--overflow-nav-button`]: true,\n [`${prefix}--tabs__nav-caret-left`]: true,\n [`${prefix}--tab--overflow-nav-button--previous`]: true,\n [`${prefix}--tab--overflow-nav-button--hidden`]:\n isIntersectionLeftTrackerInContent,\n });\n return html`\n <button\n part=\"prev-button\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n class=\"${previousButtonClasses}\"\n @click=${(_) =>\n this._handleScrollButtonClick(_, {\n direction: NAVIGATION_DIRECTION.Left,\n })}>\n ${iconLoader(ChevronLeft16)}\n </button>\n `;\n }\n\n /**\n * Render the next button if tablist is wider than container.\n */\n protected renderNextButton(): TemplateResult | null {\n const {\n _isIntersectionRightTrackerInContent: isIntersectionRightTrackerInContent,\n } = this;\n const nextButtonClasses = classMap({\n [`${prefix}--tab--overflow-nav-button`]: true,\n [`${prefix}--tabs__nav-caret-right`]: true,\n [`${prefix}--tab--overflow-nav-button--next`]: true,\n [`${prefix}--tab--overflow-nav-button--hidden`]:\n isIntersectionRightTrackerInContent,\n });\n return html`\n <button\n part=\"next-button\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n class=\"${nextButtonClasses}\"\n @click=${(_) =>\n this._handleScrollButtonClick(_, {\n direction: NAVIGATION_DIRECTION.Right,\n })}>\n ${iconLoader(ChevronRight16)}\n </button>\n `;\n }\n\n render() {\n const {\n _assistiveStatusText: assistiveStatusText,\n _handleSlotchange: handleSlotchange,\n } = this;\n\n return html`\n ${this.renderPreviousButton()}\n <div class=\"${prefix}--tabs-nav-content-container\">\n <div class=\"${prefix}--tabs-nav-content\">\n <div class=\"${prefix}--tabs-nav\">\n <div id=\"tablist\" role=\"tablist\" class=\"${prefix}--tab--list\">\n <div class=\"${prefix}--sub-content-left\"></div>\n <slot @slotchange=${handleSlotchange}></slot>\n <div class=\"${prefix}--sub-content-right\"></div>\n </div>\n </div>\n </div>\n </div>\n ${this.renderNextButton()}\n <div\n class=\"${prefix}--assistive-text\"\n role=\"status\"\n aria-live=\"assertive\"\n aria-relevant=\"additions text\">\n ${assistiveStatusText}\n </div>\n `;\n }\n\n /**\n * Symbols of keys that triggers opening/closing menu and selecting/deselecting menu item.\n */\n static TRIGGER_KEYS = new Set([' ', 'Enter']);\n\n /**\n * A selector that will return tabs.\n */\n static get selectorItem() {\n return `${prefix}-tab`;\n }\n\n /**\n * A selector that will return enabled tabs.\n */\n static get selectorItemEnabled() {\n return `${prefix}-tab:not([disabled])`;\n }\n\n /**\n * A selector that will return highlighted tabs.\n */\n static get selectorItemHighlighted() {\n return `${prefix}-tab[highlighted]`;\n }\n\n /**\n * A selector that will return selected tabs.\n */\n static get selectorItemSelected() {\n return `${prefix}-tab[selected]`;\n }\n\n /**\n * A selector that returns the tablist\n */\n static get selectorTablist() {\n return `.${prefix}--tab--list`;\n }\n\n /**\n * The name of the custom event fired before a tab is selected upon a user gesture.\n * Cancellation of this event stops changing the user-initiated selection.\n */\n static get eventBeforeSelect() {\n return `${prefix}-tabs-beingselected`;\n }\n\n /**\n * The name of the custom event fired after a a tab is selected upon a user gesture.\n */\n static get eventSelect() {\n return `${prefix}-tabs-selected`;\n }\n\n static styles = styles;\n\n /**\n * @param key The key symbol.\n * @returns A action for dropdown for the given key symbol.\n */\n static getAction(key: string) {\n if (key === 'Home') {\n return TABS_KEYBOARD_ACTION.HOME;\n }\n if (key === 'End') {\n return TABS_KEYBOARD_ACTION.END;\n }\n if (key in NAVIGATION_DIRECTION) {\n return TABS_KEYBOARD_ACTION.NAVIGATING;\n }\n return TABS_KEYBOARD_ACTION.NONE;\n }\n}\n"],"names":["customElement"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;AAKG;AAsBH;;;;;;;;AAQG;AAEY,IAAM,OAAO,GAAb,MAAM,OAAQ,SAAQ,iBAAiB,CAAC,kBAAkB,CAAC,CAAA;AAA3D,IAAA,WAAA,GAAA;;AAMb;;AAEG;;;QAGK,IAAa,CAAA,aAAA,GAAG,CAAC;AAEzB;;AAEG;QACK,IAAU,CAAA,UAAA,GAAG,CAAC;AAEtB;;AAEG;;;QAGK,IAAa,CAAA,aAAA,GAAG,KAAK;AAE7B;;AAEG;QACK,IAAO,CAAA,OAAA,GAAmB,IAAI;AAEtC;;AAEG;QACK,IAAY,CAAA,YAAA,GAAG,EAAE;AAoKzB;;AAEG;QAEK,IAAsB,CAAA,sBAAA,GAAG,CAAC;AAgBlC;;AAEG;QAEH,IAA2B,CAAA,2BAAA,GACzB,0DAA0D;AAE5D;;AAEG;QAEH,IAAyB,CAAA,yBAAA,GAAG,mBAAmB;AAE/C;;AAEG;QAEH,IAAc,CAAA,cAAA,GAAG,EAAE;AAEnB;;AAEG;AAEH,QAAA,IAAA,CAAA,IAAI,GAAG,SAAS,CAAC,OAAO;AAExB;;;AAGG;QAEK,IAAmC,CAAA,mCAAA,GAAG,IAAI;AAElD;;;AAGG;QAEK,IAAoC,CAAA,oCAAA,GAAG,IAAI;AAEnD;;AAEG;QACK,IAAqB,CAAA,qBAAA,GAAgC,IAAI;AAEjE;;;;AAIG;AACK,QAAA,IAAA,CAAA,6BAA6B,GAAG,CAAC,OAAO,KAAI;YAClD,MAAM,EACJ,6BAA6B,EAAE,4BAA4B,EAC3D,8BAA8B,EAAE,6BAA6B,GAC9D,GAAG,IAAI;YAER,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,KAAI;AAC7C,gBAAA,IAAI,MAAM,KAAK,4BAA4B,EAAE;AAC3C,oBAAA,IAAI,CAAC,mCAAmC,GAAG,cAAc;;AAE3D,gBAAA,IAAI,MAAM,KAAK,6BAA6B,EAAE;AAC5C,oBAAA,IAAI,CAAC,oCAAoC,GAAG,cAAc;;AAE9D,aAAC,CAAC;AACJ,SAAC;;AArPD;;;;;;;;;;;AAWG;IACO,SAAS,CACjB,SAAiB,EACjB,EAAE,SAAS,GAAG,IAAI,KAA8B,EAAE,EAAA;QAElD,MAAM,EAAE,YAAY,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,GAAG;AACrE,aAAA,WAA6B;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAChC,IAAI,CAAC,aAAa,CAChB,SAAS,GAAG,oBAAoB,GAAG,uBAAuB,CACjD,EACX,SAAS,CACV;QACD,IAAI,CAAC,QAAQ,EAAE;YACb;;QAGF,IAAI,SAAS,EAAE;AACb,YAAA,IAAI,CAAC,8BAA8B,CAAC,QAAkB,CAAC;;aAClD;YACL,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,KAAI;gBACnD,IAAe,CAAC,SAAS,GAAG,UAAU,GAAG,aAAa,CAAC;oBACtD,QAAQ,KAAK,IAAI;AACrB,aAAC,CAAC;;;;;AAMJ,QAAA,QAAQ,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAEhE,QAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,WAAW;QACzC,IAAI,YAAY,EAAE;AAChB,YAAA,IAAI,CAAC,oBAAoB,GAAG,YAAY;;AAE1C,QAAA,IAAI,CAAC,aAAa,IAAI,SAAS;QAC/B,IAAI,CAAC,aAAa,EAAE;;AAIZ,IAAA,YAAY,CAAC,KAAiB,EAAA;AACtC,QAAA,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC;;AAIjB,IAAA,cAAc,CAAC,KAAoB,EAAA;AAC3C,QAAA,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK;QACrB,MAAM,MAAM,GAAI,IAAI,CAAC,WAA8B,CAAC,SAAS,CAAC,GAAG,CAAC;QAClE,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAG,EAAA,MAAM,CAAsB,oBAAA,CAAA,CAAC;QAC1E,QAAQ,MAAM;YACZ,KAAK,oBAAoB,CAAC,IAAI;gBAC5B;AACE,oBAAA,MAAM,CAAC,eAAe,CAAC,GAAG,WAAW;oBACrC,eAAe,CAAC,cAAc,CAAC;AAC7B,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,MAAM,EAAE,SAAS;AAClB,qBAAA,CAAC;AACF,oBAAA,IAAI,CAAC,8BAA8B,CAAC,eAAyB,CAAC;oBAC9D,IAAI,CAAC,aAAa,EAAE;;gBAEtB;YACF,KAAK,oBAAoB,CAAC,GAAG;gBAC3B;oBACE,MAAM,cAAc,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;oBAC1D,cAAc,CAAC,cAAc,CAAC;AAC5B,wBAAA,KAAK,EAAE,SAAS;AAChB,wBAAA,MAAM,EAAE,SAAS;AAClB,qBAAA,CAAC;AACF,oBAAA,IAAI,CAAC,8BAA8B,CAAC,cAAwB,CAAC;oBAC7D,IAAI,CAAC,aAAa,EAAE;;gBAEtB;YACF,KAAK,oBAAoB,CAAC,UAAU;gBAClC;AACE,oBAAA,MAAM,SAAS,GAAG,oBAAoB,CAAC,GAAG,CAAC;oBAC3C,IAAI,SAAS,EAAE;AACb,wBAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;;;gBAG7B;;;AAMN;;;;;;AAMG;AACO,IAAA,wBAAwB,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,EAAA;AACjD,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB;;AAEF,QAAA,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE;;QAE5C,IAAI,CAAC,qBAAsB;QAC7B,QAAQ,SAAS;AACf,YAAA,KAAK,EAAE;;gBAEL,IAAI,CAAC,qBAAsB,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAC/C,UAAU,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,IAAI,GAAG,EAClD,CAAC,CACF;gBACD;AACF,YAAA,KAAK,CAAC;;gBAEJ,IAAI,CAAC,qBAAsB,CAAC,UAAU;oBACpC,IAAI,CAAC,GAAG,CACN,UAAU,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,IAAI,GAAG,EAClD,WAAW,GAAG,WAAW,CAC1B,GAAG,CAAC;gBACP;;;IAMN,iBAAiB,GAAA;;;AAEf,QAAA,CAAA,EAAA,GAAA,KAAK,CAAC,iBAAiB,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,IAAA,CAAI;AAC3B,QAAA,MAAM,EAAE,oBAAoB,EAAE,GAAG,IAAI,CAAC,WAA6B;QACnE,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC;QAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,YAAsB,EAAE,CAAC,CAAC;;;QAI7D,IAAI,QAAQ,EAAE;AACX,YAAA,QAAmB,CAAC,WAAW,GAAG,IAAI;;;AAIjC,IAAA,mBAAmB,CAAC,YAAoB,EAAA;AAChD,QAAA,KAAK,CAAC,mBAAmB,CAAC,YAAY,CAAC;AACvC,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,yBAAyB;;AAoG5D;;;;;AAKG;AACK,IAAA,4CAA4C,CAAC,EACnD,MAAM,GAAA,GACkB,EAAE,EAAA;QAC1B,MAAM,EACJ,6BAA6B,EAAE,4BAA4B,EAC3D,8BAA8B,EAAE,6BAA6B,GAC9D,GAAG,IAAI;AAER,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC9B,YAAA,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE;AACvC,YAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI;;QAGnC,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,qBAAqB,GAAG,IAAI,oBAAoB,CACnD,IAAI,CAAC,6BAA6B,EAClC;AACE,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,SAAS,EAAE,CAAC;AACb,aAAA,CACF;YAED,IAAI,4BAA4B,EAAE;AAChC,gBAAA,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,4BAA4B,CAAC;;YAElE,IAAI,6BAA6B,EAAE;AACjC,gBAAA,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,6BAA6B,CAAC;;;;IAKvE,oBAAoB,GAAA;QAClB,IAAI,CAAC,4CAA4C,EAAE;QACnD,KAAK,CAAC,oBAAoB,EAAE;;AAG9B,IAAA,YAAY,CAAC,iBAAiB,EAAA;AAC5B,QAAA,KAAK,CAAC,YAAY,CAAC,iBAAiB,CAAC;AACrC,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,OAAO;AACjD,YAAA,IAAI,CAAC,aAAa,GAAG,WAAW,GAAG,WAAW;;AAEhD,QAAA,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,WAA6B;AAC3D,QAAA,IAAI,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YACjC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,KAAI;gBACpD,IAAI,CAAC,UAAU,EAAE;AAChB,gBAAA,IAAe,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;AACnC,aAAC,CAAC;;AAEJ,QAAA,OAAO,IAAI;;IAGb,YAAY,GAAA;;QAEV,KAAK,CAAC,YAAY,EAAE;AAEpB,QAAA,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,WAA6B;;QAE9D,MAAM,OAAO,GAAG,IAAI,CAAC,UAAW,CAAC,aAAa,CAAC,eAAe,CAAE;AAChE,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;QACtB,IAAI,CAAC,4CAA4C,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;;AAGrE,IAAA,OAAO,CAAC,iBAAiB,EAAA;;;AAEvB,QAAA,CAAA,EAAA,GAAA,KAAK,CAAC,OAAO,MAAG,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,IAAA,EAAA,iBAAiB,CAAC;AAElC,QAAA,IAAI,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;AAClC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAC5B,CAAA,EAAG,MAAM,CAAA,YAAA,EAAe,IAAI,CAAC,KAAK,CAAA,EAAA,CAAI,CACxB;YAChB,IAAI,GAAG,EAAE;AACP,gBAAA,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAA,EAAA,GAAA,GAAG,KAAH,IAAA,IAAA,GAAG,uBAAH,GAAG,CAAE,qBAAqB,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,EAAE;gBAC9D,MAAM,KAAK,GAAG,CAAA,EAAA,GAAA,GAAG,CAAC,UAAU,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,CAAC;AACjC,gBAAA,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,GAAG,QAAQ;;;gBAIrC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY;AACjE,gBAAA,MAAM,UAAU;;gBAEd,IAAI,CAAC,OAAQ,CAAC,UAAU;;oBAExB,IAAI,CAAC,OAAQ,CAAC,WAAW;oBACzB,IAAI,CAAC,YAAY;;AAGnB,gBAAA,IAAI,KAAK,GAAG,YAAY,EAAE;;oBAExB,IAAI,CAAC,OAAQ,CAAC,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC,YAAY;;;AAItD,gBAAA,IAAI,GAAG,GAAG,UAAU,EAAE;;oBAEpB,IAAI,CAAC,OAAQ,CAAC,UAAU;;wBAEtB,GAAG,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAQ,CAAC,WAAW;;;;AAK3D,QAAA,IAAI,iBAAiB,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE;AACnD,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,gBAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,gBAAgB,GAAG,CAAA,CAAA,EAAI,IAAI,CAAC,sBAAsB,CAAA,EAAA,CAAI;;;;AAKpF;;AAEG;IACO,oBAAoB,GAAA;AAC5B,QAAA,MAAM,EACJ,mCAAmC,EAAE,kCAAkC,GACxE,GAAG,IAAI;QACR,MAAM,qBAAqB,GAAG,QAAQ,CAAC;AACrC,YAAA,CAAC,CAAG,EAAA,MAAM,CAA4B,0BAAA,CAAA,GAAG,IAAI;AAC7C,YAAA,CAAC,CAAG,EAAA,MAAM,CAAwB,sBAAA,CAAA,GAAG,IAAI;AACzC,YAAA,CAAC,CAAG,EAAA,MAAM,CAAsC,oCAAA,CAAA,GAAG,IAAI;AACvD,YAAA,CAAC,CAAG,EAAA,MAAM,CAAoC,kCAAA,CAAA,GAC5C,kCAAkC;AACrC,SAAA,CAAC;AACF,QAAA,OAAO,IAAI,CAAA;;;;;iBAKE,qBAAqB,CAAA;iBACrB,CAAC,CAAC,KACT,IAAI,CAAC,wBAAwB,CAAC,CAAC,EAAE;YAC/B,SAAS,EAAE,oBAAoB,CAAC,IAAI;SACrC,CAAC,CAAA;UACF,UAAU,CAAC,aAAa,CAAC;;KAE9B;;AAGH;;AAEG;IACO,gBAAgB,GAAA;AACxB,QAAA,MAAM,EACJ,oCAAoC,EAAE,mCAAmC,GAC1E,GAAG,IAAI;QACR,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AACjC,YAAA,CAAC,CAAG,EAAA,MAAM,CAA4B,0BAAA,CAAA,GAAG,IAAI;AAC7C,YAAA,CAAC,CAAG,EAAA,MAAM,CAAyB,uBAAA,CAAA,GAAG,IAAI;AAC1C,YAAA,CAAC,CAAG,EAAA,MAAM,CAAkC,gCAAA,CAAA,GAAG,IAAI;AACnD,YAAA,CAAC,CAAG,EAAA,MAAM,CAAoC,kCAAA,CAAA,GAC5C,mCAAmC;AACtC,SAAA,CAAC;AACF,QAAA,OAAO,IAAI,CAAA;;;;;iBAKE,iBAAiB,CAAA;iBACjB,CAAC,CAAC,KACT,IAAI,CAAC,wBAAwB,CAAC,CAAC,EAAE;YAC/B,SAAS,EAAE,oBAAoB,CAAC,KAAK;SACtC,CAAC,CAAA;UACF,UAAU,CAAC,cAAc,CAAC;;KAE/B;;IAGH,MAAM,GAAA;QACJ,MAAM,EACJ,oBAAoB,EAAE,mBAAmB,EACzC,iBAAiB,EAAE,gBAAgB,GACpC,GAAG,IAAI;AAER,QAAA,OAAO,IAAI,CAAA;QACP,IAAI,CAAC,oBAAoB,EAAE;oBACf,MAAM,CAAA;sBACJ,MAAM,CAAA;wBACJ,MAAM,CAAA;sDACwB,MAAM,CAAA;4BAChC,MAAM,CAAA;kCACA,gBAAgB,CAAA;4BACtB,MAAM,CAAA;;;;;QAK1B,IAAI,CAAC,gBAAgB,EAAE;;iBAEd,MAAM,CAAA;;;;UAIb,mBAAmB;;KAExB;;AAQH;;AAEG;AACH,IAAA,WAAW,YAAY,GAAA;QACrB,OAAO,CAAA,EAAG,MAAM,CAAA,IAAA,CAAM;;AAGxB;;AAEG;AACH,IAAA,WAAW,mBAAmB,GAAA;QAC5B,OAAO,CAAA,EAAG,MAAM,CAAA,oBAAA,CAAsB;;AAGxC;;AAEG;AACH,IAAA,WAAW,uBAAuB,GAAA;QAChC,OAAO,CAAA,EAAG,MAAM,CAAA,iBAAA,CAAmB;;AAGrC;;AAEG;AACH,IAAA,WAAW,oBAAoB,GAAA;QAC7B,OAAO,CAAA,EAAG,MAAM,CAAA,cAAA,CAAgB;;AAGlC;;AAEG;AACH,IAAA,WAAW,eAAe,GAAA;QACxB,OAAO,CAAA,CAAA,EAAI,MAAM,CAAA,WAAA,CAAa;;AAGhC;;;AAGG;AACH,IAAA,WAAW,iBAAiB,GAAA;QAC1B,OAAO,CAAA,EAAG,MAAM,CAAA,mBAAA,CAAqB;;AAGvC;;AAEG;AACH,IAAA,WAAW,WAAW,GAAA;QACpB,OAAO,CAAA,EAAG,MAAM,CAAA,cAAA,CAAgB;;AAKlC;;;AAGG;IACH,OAAO,SAAS,CAAC,GAAW,EAAA;AAC1B,QAAA,IAAI,GAAG,KAAK,MAAM,EAAE;YAClB,OAAO,oBAAoB,CAAC,IAAI;;AAElC,QAAA,IAAI,GAAG,KAAK,KAAK,EAAE;YACjB,OAAO,oBAAoB,CAAC,GAAG;;AAEjC,QAAA,IAAI,GAAG,IAAI,oBAAoB,EAAE;YAC/B,OAAO,oBAAoB,CAAC,UAAU;;QAExC,OAAO,oBAAoB,CAAC,IAAI;;;AAvElC;;AAEG;AACI,OAAY,CAAA,YAAA,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAzB;AAoDZ,OAAM,CAAA,MAAA,GAAG,MAAH;AAtcH,UAAA,CAAA;IADT,YAAY,CAAC,OAAO;AAGpB,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,cAAA,EAAA,IAAA,CAAA;AAGS,UAAA,CAAA;IADT,YAAY,CAAC,SAAS;AAuCtB,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,IAAA,CAAA;AA4DO,UAAA,CAAA;AADP,IAAA,KAAK,CAAC,CAAA,CAAA,EAAI,MAAM,CAAA,4BAAA,CAA8B;AACH,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,uBAAA,EAAA,MAAA,CAAA;AAMpC,UAAA,CAAA;AADP,IAAA,KAAK,CAAC,CAAA,CAAA,EAAI,MAAM,CAAA,kBAAA,CAAoB;AACF,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,cAAA,EAAA,MAAA,CAAA;AAM3B,UAAA,CAAA;AADP,IAAA,KAAK;AAC6B,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,wBAAA,EAAA,MAAA,CAAA;AAO3B,UAAA,CAAA;AADP,IAAA,KAAK,CAAC,CAAA,CAAA,EAAI,MAAM,CAAA,kBAAA,CAAoB;AACe,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,+BAAA,EAAA,MAAA,CAAA;AAO5C,UAAA,CAAA;AADP,IAAA,KAAK,CAAC,CAAA,CAAA,EAAI,MAAM,CAAA,mBAAA,CAAqB;AACe,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,gCAAA,EAAA,MAAA,CAAA;AAMrD,UAAA,CAAA;AADC,IAAA,QAAQ,CAAC,EAAE,SAAS,EAAE,gCAAgC,EAAE;AAEI,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,6BAAA,EAAA,MAAA,CAAA;AAM7D,UAAA,CAAA;AADC,IAAA,QAAQ,CAAC,EAAE,SAAS,EAAE,8BAA8B,EAAE;AACP,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,2BAAA,EAAA,MAAA,CAAA;AAMhD,UAAA,CAAA;AADC,IAAA,QAAQ,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE;AACtB,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,MAAA,CAAA;AAMpB,UAAA,CAAA;AADC,IAAA,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;AACF,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA;AAOjB,UAAA,CAAA;AADP,IAAA,KAAK;AAC6C,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,qCAAA,EAAA,MAAA,CAAA;AAO3C,UAAA,CAAA;AADP,IAAA,KAAK;AAC8C,CAAA,EAAA,OAAA,CAAA,SAAA,EAAA,sCAAA,EAAA,MAAA,CAAA;AA9PjC,OAAO,GAAA,UAAA,CAAA;AAD3B,IAAAA,aAAa,CAAC,CAAA,EAAG,MAAM,CAAA,KAAA,CAAO;AACV,CAAA,EAAA,OAAO,CA8iB3B;gBA9iBoB,OAAO;;;;"}
1
+ {"version":3,"file":"tabs.js","sources":["../../../src/components/tabs/tabs.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 { TemplateResult, html } from 'lit';\nimport { property, state, query } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { prefix } from '../../globals/settings';\nimport { iconLoader } from '../../globals/internal/icon-loader';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport HostListener from '../../globals/decorators/host-listener';\nimport { forEach } from '../../globals/internal/collection-helpers';\nimport ChevronLeft16 from '@carbon/icons/es/chevron--left/16.js';\nimport ChevronRight16 from '@carbon/icons/es/chevron--right/16.js';\nimport CDSContentSwitcher, {\n NAVIGATION_DIRECTION,\n} from '../content-switcher/content-switcher';\nimport { TABS_KEYBOARD_ACTION, TABS_TYPE } from './defs';\nimport CDSTab from './tab';\nimport styles from './tabs.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\nexport { NAVIGATION_DIRECTION, TABS_KEYBOARD_ACTION, TABS_TYPE };\n\n/**\n * Tabs.\n *\n * @element cds-tabs\n * @fires cds-tabs-beingselected\n * The custom event fired before a tab is selected upon a user gesture.\n * Cancellation of this event stops changing the user-initiated selection.\n * @fires cds-tabs-selected - The custom event fired after a a tab is selected upon a user gesture.\n */\n@customElement(`${prefix}-tabs`)\nexport default class CDSTabs extends HostListenerMixin(CDSContentSwitcher) {\n /**\n * The latest status of this dropdown, for screen reader to accounce.\n */\n private _assistiveStatusText?: string;\n\n /**\n * The currently selected index\n */\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: TS thinks this method is not referred to\n private _currentIndex = 0;\n\n /**\n * Total number of tabs in the component\n */\n private _totalTabs = 0;\n\n /**\n * `true` if the tablist is scrollable\n */\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: TS thinks this method is not referred to\n private _isScrollable = false;\n\n /**\n * The DOM element for the tablist.\n */\n private tablist: Element | null = null;\n\n /**\n * The width of the overflow scroll buttons.\n */\n private BUTTON_WIDTH = 44;\n\n /**\n * Navigates through tabs.\n *\n * @param direction `-1` to navigate backward, `1` to navigate forward.\n * @param [options] The options.\n * @param [options.immediate]\n * Defaults to `true`\n * `true` to make it \"immediate selection change\" mode, which does:\n *\n * Starts with the selected item\n * Going prev/next item immediately changes the selection\n */\n protected _navigate(\n direction: number,\n { immediate = true }: { immediate?: boolean } = {}\n ) {\n const { selectorItem, selectorItemHighlighted, selectorItemSelected } = this\n .constructor as typeof CDSTabs;\n const nextItem = this._getNextItem(\n this.querySelector(\n immediate ? selectorItemSelected : selectorItemHighlighted\n ) as CDSTab,\n direction\n );\n if (!nextItem) {\n return;\n }\n\n if (immediate) {\n this._handleUserInitiatedSelectItem(nextItem as CDSTab);\n } else {\n forEach(this.querySelectorAll(selectorItem), (item) => {\n (item as CDSTab)[immediate ? 'selected' : 'highlighted'] =\n nextItem === item;\n });\n }\n\n // Using `{ block: 'nearest' }` to prevent scrolling unless scrolling is absolutely necessary.\n // `scrollIntoViewOptions` seems to work in latest Safari despite of MDN/caniuse table.\n // IE falls back to the old behavior.\n nextItem.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n\n const nextItemText = nextItem.textContent;\n if (nextItemText) {\n this._assistiveStatusText = nextItemText;\n }\n this._currentIndex += direction;\n this.requestUpdate();\n }\n\n @HostListener('click')\n protected _handleClick(event: MouseEvent) {\n super._handleClick(event);\n }\n\n @HostListener('keydown')\n protected _handleKeydown(event: KeyboardEvent) {\n const { key } = event;\n const action = (this.constructor as typeof CDSTabs).getAction(key);\n const enabledTabs = this.querySelectorAll(`${prefix}-tab:not([disabled])`);\n switch (action) {\n case TABS_KEYBOARD_ACTION.HOME:\n {\n const [firstEnabledTab] = enabledTabs;\n firstEnabledTab.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n });\n this._handleUserInitiatedSelectItem(firstEnabledTab as CDSTab);\n this.requestUpdate();\n }\n break;\n case TABS_KEYBOARD_ACTION.END:\n {\n const lastEnabledTab = enabledTabs[enabledTabs.length - 1];\n lastEnabledTab.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n });\n this._handleUserInitiatedSelectItem(lastEnabledTab as CDSTab);\n this.requestUpdate();\n }\n break;\n case TABS_KEYBOARD_ACTION.NAVIGATING:\n {\n const direction = NAVIGATION_DIRECTION[key];\n if (direction) {\n this._navigate(direction);\n }\n }\n break;\n default:\n break;\n }\n }\n\n /**\n * Handles click on overflow scroll buttons.\n *\n * @param _ Event object\n * @param [options] The options.\n * @param [options.direction] `-1` to scroll forward, `1` to scroll backward.\n */\n protected _handleScrollButtonClick(_, { direction }) {\n if (!this.tablist) {\n return;\n }\n const { scrollLeft, clientWidth, scrollWidth } =\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n this._contentContainerNode!;\n switch (direction) {\n case -1:\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n this._contentContainerNode!.scrollLeft = Math.max(\n scrollLeft - (scrollWidth / this._totalTabs) * 1.5,\n 0\n );\n break;\n case 1:\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n this._contentContainerNode!.scrollLeft =\n Math.min(\n scrollLeft + (scrollWidth / this._totalTabs) * 1.5,\n scrollWidth - clientWidth\n ) + 1;\n break;\n default:\n break;\n }\n }\n\n _handleSlotchange() {\n // Call super to preserve content-switcher slot handling\n super._handleSlotchange?.();\n const { selectorItemSelected } = this.constructor as typeof CDSTabs;\n const selectedItem = this.querySelector(selectorItemSelected);\n const nextItem = this._getNextItem(selectedItem as CDSTab, 1);\n\n // Specifies child `<cds-tab>` to hide its divider instead of using CSS,\n // until `:host-context()` gets supported in all major browsers\n if (nextItem) {\n (nextItem as CDSTab).hideDivider = true;\n }\n }\n\n protected _selectionDidChange(itemToSelect: CDSTab) {\n super._selectionDidChange(itemToSelect);\n this._assistiveStatusText = this.selectedItemAssistiveText;\n }\n\n /**\n * The scrolling container.\n */\n @query(`.${prefix}--tabs-nav-content-container`)\n private _contentContainerNode?: HTMLElement;\n\n /**\n * The scrolling content.\n */\n @query(`.${prefix}--tabs-nav-content`)\n private _contentNode?: HTMLElement;\n\n /**\n * The current scroll position.\n */\n @state()\n private _currentScrollPosition = 0;\n\n /**\n * The left-hand sentinel to track intersection with the host element.\n * If they intersect, the left-hand paginator button should be hidden.\n */\n @query(`.${prefix}--sub-content-left`)\n private _intersectionLeftSentinelNode?: HTMLElement;\n\n /**\n * The right-hand sentinel to track intersection with the host element.\n * If they intersect, the right-hand paginator button should be hidden.\n */\n @query(`.${prefix}--sub-content-right`)\n private _intersectionRightSentinelNode?: HTMLElement;\n\n /**\n * An assistive text for screen reader to announce, telling the open state.\n */\n @property({ attribute: 'selecting-items-assistive-text' })\n selectingItemsAssistiveText =\n 'Selecting items. Use up and down arrow keys to navigate.';\n\n /**\n * An assistive text for screen reader to announce, telling that an item is selected.\n */\n @property({ attribute: 'selected-item-assistive-text' })\n selectedItemAssistiveText = 'Selected an item.';\n\n /**\n * The content of the trigger button for narrow mode.\n */\n @property({ attribute: 'trigger-content' })\n triggerContent = '';\n\n /**\n * Tabs type.\n */\n @property({ reflect: true })\n type = TABS_TYPE.REGULAR;\n\n /**\n * `true` if left-hand scroll intersection sentinel intersects with the host element.\n * In this condition, the left-hand paginator button should be hidden.\n */\n @state()\n private _isIntersectionLeftTrackerInContent = true;\n\n /**\n * `true` if right-hand scroll intersection sentinel intersects with the host element.\n * In this condition, the right-hand paginator button should be hidden.\n */\n @state()\n private _isIntersectionRightTrackerInContent = true;\n\n /**\n * The observer for the intersection of left-side content edge.\n */\n private _observerIntersection: IntersectionObserver | null = null;\n\n /**\n * The intersection observer callback for the scrolling container.\n *\n * @param records The intersection observer records.\n */\n private _observeIntersectionContainer = (records) => {\n const {\n _intersectionLeftSentinelNode: intersectionLeftSentinelNode,\n _intersectionRightSentinelNode: intersectionRightSentinelNode,\n } = this;\n\n records.forEach(({ isIntersecting, target }) => {\n if (target === intersectionLeftSentinelNode) {\n this._isIntersectionLeftTrackerInContent = isIntersecting;\n }\n if (target === intersectionRightSentinelNode) {\n this._isIntersectionRightTrackerInContent = isIntersecting;\n }\n });\n };\n\n /**\n * Cleans-up and creates the intersection observer for the scrolling container.\n *\n * @param [options] The options.\n * @param [options.create] `true` to create the new intersection observer.\n */\n private _cleanAndCreateIntersectionObserverContainer({\n create,\n }: { create?: boolean } = {}) {\n const {\n _intersectionLeftSentinelNode: intersectionLeftSentinelNode,\n _intersectionRightSentinelNode: intersectionRightSentinelNode,\n } = this;\n\n if (this._observerIntersection) {\n this._observerIntersection.disconnect();\n this._observerIntersection = null;\n }\n\n if (create) {\n this._observerIntersection = new IntersectionObserver(\n this._observeIntersectionContainer,\n {\n root: this,\n threshold: 0,\n }\n );\n\n if (intersectionLeftSentinelNode) {\n this._observerIntersection.observe(intersectionLeftSentinelNode);\n }\n if (intersectionRightSentinelNode) {\n this._observerIntersection.observe(intersectionRightSentinelNode);\n }\n }\n }\n\n disconnectedCallback() {\n this._cleanAndCreateIntersectionObserverContainer();\n super.disconnectedCallback();\n }\n\n shouldUpdate(changedProperties) {\n super.shouldUpdate(changedProperties);\n if (this.tablist) {\n const { clientWidth, scrollWidth } = this.tablist;\n this._isScrollable = scrollWidth > clientWidth;\n }\n const { selectorItem } = this.constructor as typeof CDSTabs;\n if (changedProperties.has('type')) {\n forEach(this.querySelectorAll(selectorItem), (elem) => {\n this._totalTabs++;\n (elem as CDSTab).type = this.type;\n });\n }\n return true;\n }\n\n firstUpdated() {\n // Call super to run content-switcher init logic (initial selection)\n super.firstUpdated();\n\n const { selectorTablist } = this.constructor as typeof CDSTabs;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n const tablist = this.shadowRoot!.querySelector(selectorTablist)!;\n this.tablist = tablist;\n this._cleanAndCreateIntersectionObserverContainer({ create: true });\n }\n\n updated(changedProperties) {\n // Call super to keep selection/value in sync\n super.updated?.(changedProperties);\n\n if (changedProperties.has('value')) {\n const tab = this.querySelector(\n `${prefix}-tab[value=\"${this.value}\"]`\n ) as HTMLElement;\n if (tab) {\n const { width: tabWidth } = tab?.getBoundingClientRect() ?? {};\n const start = tab.offsetLeft ?? 0;\n const end = tab.offsetLeft + tabWidth;\n\n // The start and end of the visible area of the tablist\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n const visibleStart = this.tablist!.scrollLeft + this.BUTTON_WIDTH;\n const visibleEnd =\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n this.tablist!.scrollLeft +\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n this.tablist!.clientWidth -\n this.BUTTON_WIDTH;\n\n // The beginning of the tab is clipped and not visible\n if (start < visibleStart) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n this.tablist!.scrollLeft = start - this.BUTTON_WIDTH;\n }\n\n // The end of the tab is clipped and not visible\n if (end > visibleEnd) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n this.tablist!.scrollLeft =\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n end + this.BUTTON_WIDTH - this.tablist!.clientWidth;\n }\n }\n }\n\n if (changedProperties.has('_currentScrollPosition')) {\n if (this._contentNode) {\n this._contentNode.style.insetInlineStart = `-${this._currentScrollPosition}px`;\n }\n }\n }\n\n /**\n * Render the previous button if tablist is wider than container.\n */\n protected renderPreviousButton(): TemplateResult | null {\n const {\n _isIntersectionLeftTrackerInContent: isIntersectionLeftTrackerInContent,\n } = this;\n const previousButtonClasses = classMap({\n [`${prefix}--tab--overflow-nav-button`]: true,\n [`${prefix}--tabs__nav-caret-left`]: true,\n [`${prefix}--tab--overflow-nav-button--previous`]: true,\n [`${prefix}--tab--overflow-nav-button--hidden`]:\n isIntersectionLeftTrackerInContent,\n });\n return html`\n <button\n part=\"prev-button\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n class=\"${previousButtonClasses}\"\n @click=${(_) =>\n this._handleScrollButtonClick(_, {\n direction: NAVIGATION_DIRECTION.Left,\n })}>\n ${iconLoader(ChevronLeft16)}\n </button>\n `;\n }\n\n /**\n * Render the next button if tablist is wider than container.\n */\n protected renderNextButton(): TemplateResult | null {\n const {\n _isIntersectionRightTrackerInContent: isIntersectionRightTrackerInContent,\n } = this;\n const nextButtonClasses = classMap({\n [`${prefix}--tab--overflow-nav-button`]: true,\n [`${prefix}--tabs__nav-caret-right`]: true,\n [`${prefix}--tab--overflow-nav-button--next`]: true,\n [`${prefix}--tab--overflow-nav-button--hidden`]:\n isIntersectionRightTrackerInContent,\n });\n return html`\n <button\n part=\"next-button\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n class=\"${nextButtonClasses}\"\n @click=${(_) =>\n this._handleScrollButtonClick(_, {\n direction: NAVIGATION_DIRECTION.Right,\n })}>\n ${iconLoader(ChevronRight16)}\n </button>\n `;\n }\n\n render() {\n const {\n _assistiveStatusText: assistiveStatusText,\n _handleSlotchange: handleSlotchange,\n } = this;\n\n return html`\n ${this.renderPreviousButton()}\n <div class=\"${prefix}--tabs-nav-content-container\">\n <div class=\"${prefix}--tabs-nav-content\">\n <div class=\"${prefix}--tabs-nav\">\n <div id=\"tablist\" role=\"tablist\" class=\"${prefix}--tab--list\">\n <div class=\"${prefix}--sub-content-left\"></div>\n <slot @slotchange=${handleSlotchange}></slot>\n <div class=\"${prefix}--sub-content-right\"></div>\n </div>\n </div>\n </div>\n </div>\n ${this.renderNextButton()}\n <div\n class=\"${prefix}--assistive-text\"\n role=\"status\"\n aria-live=\"assertive\"\n aria-relevant=\"additions text\">\n ${assistiveStatusText}\n </div>\n `;\n }\n\n /**\n * Symbols of keys that triggers opening/closing menu and selecting/deselecting menu item.\n */\n static TRIGGER_KEYS = new Set([' ', 'Enter']);\n\n /**\n * A selector that will return tabs.\n */\n static get selectorItem() {\n return `${prefix}-tab`;\n }\n\n /**\n * A selector that will return enabled tabs.\n */\n static get selectorItemEnabled() {\n return `${prefix}-tab:not([disabled])`;\n }\n\n /**\n * A selector that will return highlighted tabs.\n */\n static get selectorItemHighlighted() {\n return `${prefix}-tab[highlighted]`;\n }\n\n /**\n * A selector that will return selected tabs.\n */\n static get selectorItemSelected() {\n return `${prefix}-tab[selected]`;\n }\n\n /**\n * A selector that returns the tablist\n */\n static get selectorTablist() {\n return `.${prefix}--tab--list`;\n }\n\n /**\n * The name of the custom event fired before a tab is selected upon a user gesture.\n * Cancellation of this event stops changing the user-initiated selection.\n */\n static get eventBeforeSelect() {\n return `${prefix}-tabs-beingselected`;\n }\n\n /**\n * The name of the custom event fired after a a tab is selected upon a user gesture.\n */\n static get eventSelect() {\n return `${prefix}-tabs-selected`;\n }\n\n static styles = styles;\n\n /**\n * @param key The key symbol.\n * @returns A action for dropdown for the given key symbol.\n */\n static getAction(key: string) {\n if (key === 'Home') {\n return TABS_KEYBOARD_ACTION.HOME;\n }\n if (key === 'End') {\n return TABS_KEYBOARD_ACTION.END;\n }\n if (key in NAVIGATION_DIRECTION) {\n return TABS_KEYBOARD_ACTION.NAVIGATING;\n }\n return TABS_KEYBOARD_ACTION.NONE;\n }\n}\n"],"names":["customElement"],"mappings":"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"}