@carbon/web-components 2.46.0 → 2.47.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 (548) hide show
  1. package/custom-elements.json +89 -20
  2. package/es/components/ai-label/ai-label.d.ts +1 -1
  3. package/es/components/ai-label/ai-label.js +11 -2
  4. package/es/components/ai-label/ai-label.js.map +1 -1
  5. package/es/components/ai-label/ai-label.scss.js +1 -1
  6. package/es/components/ai-skeleton/ai-skeleton.scss.js +1 -1
  7. package/es/components/breadcrumb/breadcrumb-overflow-menu.d.ts +1 -1
  8. package/es/components/breadcrumb/breadcrumb-overflow-menu.js +7 -3
  9. package/es/components/breadcrumb/breadcrumb-overflow-menu.js.map +1 -1
  10. package/es/components/breadcrumb/breadcrumb.scss.js +1 -1
  11. package/es/components/button/button.scss.js +1 -1
  12. package/es/components/chat-button/chat-button-skeleton.d.ts +1 -1
  13. package/es/components/chat-button/chat-button-skeleton.js +6 -2
  14. package/es/components/chat-button/chat-button-skeleton.js.map +1 -1
  15. package/es/components/chat-button/chat-button.d.ts +1 -1
  16. package/es/components/chat-button/chat-button.js +6 -2
  17. package/es/components/chat-button/chat-button.js.map +1 -1
  18. package/es/components/chat-button/chat-button.scss.js +1 -1
  19. package/es/components/code-snippet/code-snippet.scss.js +1 -1
  20. package/es/components/combo-box/combo-box.d.ts +5 -1
  21. package/es/components/combo-box/combo-box.js +27 -3
  22. package/es/components/combo-box/combo-box.js.map +1 -1
  23. package/es/components/combo-box/combo-box.scss.js +1 -1
  24. package/es/components/copy/copy.d.ts +1 -1
  25. package/es/components/copy/copy.js +1 -2
  26. package/es/components/copy/copy.js.map +1 -1
  27. package/es/components/copy-button/copy-button.scss.js +1 -1
  28. package/es/components/data-table/data-table.scss.js +1 -1
  29. package/es/components/date-picker/range-plugin.d.ts +1 -1
  30. package/es/components/date-picker/range-plugin.js +1 -3
  31. package/es/components/date-picker/range-plugin.js.map +1 -1
  32. package/es/components/dropdown/dropdown.d.ts +3 -3
  33. package/es/components/dropdown/dropdown.js +1 -3
  34. package/es/components/dropdown/dropdown.js.map +1 -1
  35. package/es/components/dropdown/dropdown.scss.js +1 -1
  36. package/es/components/fluid-number-input/fluid-number-input.scss.js +1 -1
  37. package/es/components/fluid-search/fluid-search.scss.js +1 -1
  38. package/es/components/fluid-text-input/fluid-text-input.scss.js +1 -1
  39. package/es/components/grid/column-hang.d.ts +0 -2
  40. package/es/components/grid/column-hang.js +0 -2
  41. package/es/components/grid/column-hang.js.map +1 -1
  42. package/es/components/grid/column.d.ts +0 -2
  43. package/es/components/grid/column.js +0 -2
  44. package/es/components/grid/column.js.map +1 -1
  45. package/es/components/grid/grid.d.ts +0 -2
  46. package/es/components/grid/grid.js +0 -2
  47. package/es/components/grid/grid.js.map +1 -1
  48. package/es/components/grid/index.d.ts +0 -2
  49. package/es/components/icon-button/icon-button.d.ts +1 -1
  50. package/es/components/icon-button/icon-button.js +12 -3
  51. package/es/components/icon-button/icon-button.js.map +1 -1
  52. package/es/components/icon-button/icon-button.scss.js +2 -2
  53. package/es/components/menu/menu-context.d.ts +3 -2
  54. package/es/components/menu/menu-context.js +1 -1
  55. package/es/components/menu/menu-context.js.map +1 -1
  56. package/es/components/menu/menu.d.ts +3 -2
  57. package/es/components/menu/menu.js +5 -4
  58. package/es/components/menu/menu.js.map +1 -1
  59. package/es/components/menu/menu.scss.js +1 -1
  60. package/es/components/modal/modal-body.d.ts +3 -1
  61. package/es/components/modal/modal-body.js +17 -1
  62. package/es/components/modal/modal-body.js.map +1 -1
  63. package/es/components/modal/modal-close-button.d.ts +2 -1
  64. package/es/components/modal/modal-close-button.js +11 -5
  65. package/es/components/modal/modal-close-button.js.map +1 -1
  66. package/es/components/modal/modal.d.ts +67 -2
  67. package/es/components/modal/modal.js +228 -8
  68. package/es/components/modal/modal.js.map +1 -1
  69. package/es/components/modal/modal.scss.js +1 -1
  70. package/es/components/multi-select/multi-select.d.ts +2 -2
  71. package/es/components/multi-select/multi-select.js +8 -4
  72. package/es/components/multi-select/multi-select.js.map +1 -1
  73. package/es/components/multi-select/multi-select.scss.js +1 -1
  74. package/es/components/notification/actionable-notification.js +8 -1
  75. package/es/components/notification/actionable-notification.js.map +1 -1
  76. package/es/components/notification/actionable-notification.scss.js +1 -1
  77. package/es/components/notification/inline-notification.scss.js +1 -1
  78. package/es/components/notification/toast-notification.scss.js +1 -1
  79. package/es/components/overflow-menu/overflow-menu.d.ts +0 -1
  80. package/es/components/overflow-menu/overflow-menu.js +3 -2
  81. package/es/components/overflow-menu/overflow-menu.js.map +1 -1
  82. package/es/components/page-header/index.d.ts +0 -2
  83. package/es/components/page-header/page-header-breadcrumb.d.ts +0 -2
  84. package/es/components/page-header/page-header-breadcrumb.js +0 -2
  85. package/es/components/page-header/page-header-breadcrumb.js.map +1 -1
  86. package/es/components/page-header/page-header-content-text.d.ts +0 -2
  87. package/es/components/page-header/page-header-content-text.js +0 -2
  88. package/es/components/page-header/page-header-content-text.js.map +1 -1
  89. package/es/components/page-header/page-header-content.d.ts +0 -2
  90. package/es/components/page-header/page-header-content.js +0 -2
  91. package/es/components/page-header/page-header-content.js.map +1 -1
  92. package/es/components/page-header/page-header-hero-image.d.ts +0 -2
  93. package/es/components/page-header/page-header-hero-image.js +0 -2
  94. package/es/components/page-header/page-header-hero-image.js.map +1 -1
  95. package/es/components/page-header/page-header-tabs.d.ts +0 -2
  96. package/es/components/page-header/page-header-tabs.js +0 -2
  97. package/es/components/page-header/page-header-tabs.js.map +1 -1
  98. package/es/components/page-header/page-header.d.ts +0 -2
  99. package/es/components/page-header/page-header.js +0 -2
  100. package/es/components/page-header/page-header.js.map +1 -1
  101. package/es/components/pagination/pagination.js +7 -4
  102. package/es/components/pagination/pagination.js.map +1 -1
  103. package/es/components/password-input/password-input.scss.js +1 -1
  104. package/es/components/popover/popover-content.js +2 -2
  105. package/es/components/popover/popover-content.js.map +1 -1
  106. package/es/components/popover/popover.d.ts +7 -1
  107. package/es/components/popover/popover.js +54 -3
  108. package/es/components/popover/popover.js.map +1 -1
  109. package/es/components/popover/popover.scss.js +2 -2
  110. package/es/components/search/search.scss.js +1 -1
  111. package/es/components/slider/slider.scss.js +1 -1
  112. package/es/components/slug/slug.d.ts +1 -1
  113. package/es/components/slug/slug.js +11 -2
  114. package/es/components/slug/slug.js.map +1 -1
  115. package/es/components/slug/slug.scss.js +1 -1
  116. package/es/components/tabs/defs.d.ts +4 -0
  117. package/es/components/tabs/defs.js +4 -0
  118. package/es/components/tabs/defs.js.map +1 -1
  119. package/es/components/tabs/tabs.d.ts +2 -4
  120. package/es/components/tabs/tabs.js +37 -8
  121. package/es/components/tabs/tabs.js.map +1 -1
  122. package/es/components/tabs/tabs.scss.js +1 -1
  123. package/es/components/tag/dismissible-tag.d.ts +0 -2
  124. package/es/components/tag/dismissible-tag.js +0 -2
  125. package/es/components/tag/dismissible-tag.js.map +1 -1
  126. package/es/components/tag/operational-tag.d.ts +0 -2
  127. package/es/components/tag/operational-tag.js +0 -2
  128. package/es/components/tag/operational-tag.js.map +1 -1
  129. package/es/components/tag/selectable-tag.d.ts +0 -2
  130. package/es/components/tag/selectable-tag.js +0 -2
  131. package/es/components/tag/selectable-tag.js.map +1 -1
  132. package/es/components/tag/tag-skeleton.d.ts +0 -2
  133. package/es/components/tag/tag-skeleton.js +0 -2
  134. package/es/components/tag/tag-skeleton.js.map +1 -1
  135. package/es/components/text-input/text-input.scss.js +1 -1
  136. package/es/components/tile/tile.scss.js +1 -1
  137. package/es/components/time-picker/time-picker.scss.js +1 -1
  138. package/es/components/toggle-tip/toggletip.d.ts +0 -1
  139. package/es/components/toggle-tip/toggletip.js +4 -3
  140. package/es/components/toggle-tip/toggletip.js.map +1 -1
  141. package/es/components/toggle-tip/toggletip.scss.js +2 -2
  142. package/es/components/tooltip/definition-tooltip.js +5 -3
  143. package/es/components/tooltip/definition-tooltip.js.map +1 -1
  144. package/es/components/tooltip/tooltip-content.d.ts +0 -7
  145. package/es/components/tooltip/tooltip-content.js +4 -8
  146. package/es/components/tooltip/tooltip-content.js.map +1 -1
  147. package/es/components/tooltip/tooltip.d.ts +0 -1
  148. package/es/components/tooltip/tooltip.js +4 -7
  149. package/es/components/tooltip/tooltip.js.map +1 -1
  150. package/es/components/tooltip/tooltip.scss.js +2 -2
  151. package/es/components/tree-view/defs.d.ts +0 -2
  152. package/es/components/tree-view/defs.js +0 -2
  153. package/es/components/tree-view/defs.js.map +1 -1
  154. package/es/components/tree-view/index.d.ts +0 -2
  155. package/es/components/tree-view/tree-node.d.ts +0 -2
  156. package/es/components/tree-view/tree-node.js +0 -2
  157. package/es/components/tree-view/tree-node.js.map +1 -1
  158. package/es/components/tree-view/tree-view.d.ts +0 -2
  159. package/es/components/tree-view/tree-view.js +0 -2
  160. package/es/components/tree-view/tree-view.js.map +1 -1
  161. package/es/components/tree-view/tree-view.scss.js +1 -1
  162. package/es/components/ui-shell/header-global-action.d.ts +1 -1
  163. package/es/components/ui-shell/header-global-action.js +16 -2
  164. package/es/components/ui-shell/header-global-action.js.map +1 -1
  165. package/es/components/ui-shell/header-name.js +1 -1
  166. package/es/components/ui-shell/header-name.js.map +1 -1
  167. package/es/components/ui-shell/side-nav-menu-item.d.ts +4 -0
  168. package/es/components/ui-shell/side-nav-menu-item.js +10 -2
  169. package/es/components/ui-shell/side-nav-menu-item.js.map +1 -1
  170. package/es/globals/controllers/floating-controller.d.ts +1 -1
  171. package/es/globals/controllers/floating-controller.js +34 -30
  172. package/es/globals/controllers/floating-controller.js.map +1 -1
  173. package/es/globals/decorators/carbon-element.d.ts +5 -4
  174. package/es/globals/decorators/carbon-element.js +1 -1
  175. package/es/globals/decorators/carbon-element.js.map +1 -1
  176. package/es-custom/components/ai-label/ai-label.d.ts +1 -1
  177. package/es-custom/components/ai-label/ai-label.js +11 -2
  178. package/es-custom/components/ai-label/ai-label.js.map +1 -1
  179. package/es-custom/components/ai-label/ai-label.scss.js +1 -1
  180. package/es-custom/components/ai-skeleton/ai-skeleton.scss.js +1 -1
  181. package/es-custom/components/breadcrumb/breadcrumb-overflow-menu.d.ts +1 -1
  182. package/es-custom/components/breadcrumb/breadcrumb-overflow-menu.js +7 -3
  183. package/es-custom/components/breadcrumb/breadcrumb-overflow-menu.js.map +1 -1
  184. package/es-custom/components/breadcrumb/breadcrumb.scss.js +1 -1
  185. package/es-custom/components/button/button.scss.js +1 -1
  186. package/es-custom/components/chat-button/chat-button-skeleton.d.ts +1 -1
  187. package/es-custom/components/chat-button/chat-button-skeleton.js +6 -2
  188. package/es-custom/components/chat-button/chat-button-skeleton.js.map +1 -1
  189. package/es-custom/components/chat-button/chat-button.d.ts +1 -1
  190. package/es-custom/components/chat-button/chat-button.js +6 -2
  191. package/es-custom/components/chat-button/chat-button.js.map +1 -1
  192. package/es-custom/components/chat-button/chat-button.scss.js +1 -1
  193. package/es-custom/components/code-snippet/code-snippet.scss.js +1 -1
  194. package/es-custom/components/combo-box/combo-box.d.ts +5 -1
  195. package/es-custom/components/combo-box/combo-box.js +27 -3
  196. package/es-custom/components/combo-box/combo-box.js.map +1 -1
  197. package/es-custom/components/combo-box/combo-box.scss.js +1 -1
  198. package/es-custom/components/copy/copy.d.ts +1 -1
  199. package/es-custom/components/copy/copy.js +1 -2
  200. package/es-custom/components/copy/copy.js.map +1 -1
  201. package/es-custom/components/copy-button/copy-button.scss.js +1 -1
  202. package/es-custom/components/data-table/data-table.scss.js +1 -1
  203. package/es-custom/components/date-picker/range-plugin.d.ts +1 -1
  204. package/es-custom/components/date-picker/range-plugin.js +1 -3
  205. package/es-custom/components/date-picker/range-plugin.js.map +1 -1
  206. package/es-custom/components/dropdown/dropdown.d.ts +3 -3
  207. package/es-custom/components/dropdown/dropdown.js +1 -3
  208. package/es-custom/components/dropdown/dropdown.js.map +1 -1
  209. package/es-custom/components/dropdown/dropdown.scss.js +1 -1
  210. package/es-custom/components/fluid-number-input/fluid-number-input.scss.js +1 -1
  211. package/es-custom/components/fluid-search/fluid-search.scss.js +1 -1
  212. package/es-custom/components/fluid-text-input/fluid-text-input.scss.js +1 -1
  213. package/es-custom/components/grid/column-hang.d.ts +0 -2
  214. package/es-custom/components/grid/column-hang.js +0 -2
  215. package/es-custom/components/grid/column-hang.js.map +1 -1
  216. package/es-custom/components/grid/column.d.ts +0 -2
  217. package/es-custom/components/grid/column.js +0 -2
  218. package/es-custom/components/grid/column.js.map +1 -1
  219. package/es-custom/components/grid/grid.d.ts +0 -2
  220. package/es-custom/components/grid/grid.js +0 -2
  221. package/es-custom/components/grid/grid.js.map +1 -1
  222. package/es-custom/components/grid/index.d.ts +0 -2
  223. package/es-custom/components/icon-button/icon-button.d.ts +1 -1
  224. package/es-custom/components/icon-button/icon-button.js +12 -3
  225. package/es-custom/components/icon-button/icon-button.js.map +1 -1
  226. package/es-custom/components/icon-button/icon-button.scss.js +2 -2
  227. package/es-custom/components/menu/menu-context.d.ts +3 -2
  228. package/es-custom/components/menu/menu-context.js +1 -1
  229. package/es-custom/components/menu/menu-context.js.map +1 -1
  230. package/es-custom/components/menu/menu.d.ts +3 -2
  231. package/es-custom/components/menu/menu.js +5 -4
  232. package/es-custom/components/menu/menu.js.map +1 -1
  233. package/es-custom/components/menu/menu.scss.js +1 -1
  234. package/es-custom/components/modal/modal-body.d.ts +3 -1
  235. package/es-custom/components/modal/modal-body.js +17 -1
  236. package/es-custom/components/modal/modal-body.js.map +1 -1
  237. package/es-custom/components/modal/modal-close-button.d.ts +2 -1
  238. package/es-custom/components/modal/modal-close-button.js +11 -5
  239. package/es-custom/components/modal/modal-close-button.js.map +1 -1
  240. package/es-custom/components/modal/modal.d.ts +67 -2
  241. package/es-custom/components/modal/modal.js +228 -8
  242. package/es-custom/components/modal/modal.js.map +1 -1
  243. package/es-custom/components/modal/modal.scss.js +1 -1
  244. package/es-custom/components/multi-select/multi-select.d.ts +2 -2
  245. package/es-custom/components/multi-select/multi-select.js +8 -4
  246. package/es-custom/components/multi-select/multi-select.js.map +1 -1
  247. package/es-custom/components/multi-select/multi-select.scss.js +1 -1
  248. package/es-custom/components/notification/actionable-notification.js +8 -1
  249. package/es-custom/components/notification/actionable-notification.js.map +1 -1
  250. package/es-custom/components/notification/actionable-notification.scss.js +1 -1
  251. package/es-custom/components/notification/inline-notification.scss.js +1 -1
  252. package/es-custom/components/notification/toast-notification.scss.js +1 -1
  253. package/es-custom/components/overflow-menu/overflow-menu.d.ts +0 -1
  254. package/es-custom/components/overflow-menu/overflow-menu.js +3 -2
  255. package/es-custom/components/overflow-menu/overflow-menu.js.map +1 -1
  256. package/es-custom/components/page-header/index.d.ts +0 -2
  257. package/es-custom/components/page-header/page-header-breadcrumb.d.ts +0 -2
  258. package/es-custom/components/page-header/page-header-breadcrumb.js +0 -2
  259. package/es-custom/components/page-header/page-header-breadcrumb.js.map +1 -1
  260. package/es-custom/components/page-header/page-header-content-text.d.ts +0 -2
  261. package/es-custom/components/page-header/page-header-content-text.js +0 -2
  262. package/es-custom/components/page-header/page-header-content-text.js.map +1 -1
  263. package/es-custom/components/page-header/page-header-content.d.ts +0 -2
  264. package/es-custom/components/page-header/page-header-content.js +0 -2
  265. package/es-custom/components/page-header/page-header-content.js.map +1 -1
  266. package/es-custom/components/page-header/page-header-hero-image.d.ts +0 -2
  267. package/es-custom/components/page-header/page-header-hero-image.js +0 -2
  268. package/es-custom/components/page-header/page-header-hero-image.js.map +1 -1
  269. package/es-custom/components/page-header/page-header-tabs.d.ts +0 -2
  270. package/es-custom/components/page-header/page-header-tabs.js +0 -2
  271. package/es-custom/components/page-header/page-header-tabs.js.map +1 -1
  272. package/es-custom/components/page-header/page-header.d.ts +0 -2
  273. package/es-custom/components/page-header/page-header.js +0 -2
  274. package/es-custom/components/page-header/page-header.js.map +1 -1
  275. package/es-custom/components/pagination/pagination.js +7 -4
  276. package/es-custom/components/pagination/pagination.js.map +1 -1
  277. package/es-custom/components/password-input/password-input.scss.js +1 -1
  278. package/es-custom/components/popover/popover-content.js +2 -2
  279. package/es-custom/components/popover/popover-content.js.map +1 -1
  280. package/es-custom/components/popover/popover.d.ts +7 -1
  281. package/es-custom/components/popover/popover.js +54 -3
  282. package/es-custom/components/popover/popover.js.map +1 -1
  283. package/es-custom/components/popover/popover.scss.js +2 -2
  284. package/es-custom/components/search/search.scss.js +1 -1
  285. package/es-custom/components/slider/slider.scss.js +1 -1
  286. package/es-custom/components/slug/slug.d.ts +1 -1
  287. package/es-custom/components/slug/slug.js +11 -2
  288. package/es-custom/components/slug/slug.js.map +1 -1
  289. package/es-custom/components/slug/slug.scss.js +1 -1
  290. package/es-custom/components/tabs/defs.d.ts +4 -0
  291. package/es-custom/components/tabs/defs.js +4 -0
  292. package/es-custom/components/tabs/defs.js.map +1 -1
  293. package/es-custom/components/tabs/tabs.d.ts +2 -4
  294. package/es-custom/components/tabs/tabs.js +37 -8
  295. package/es-custom/components/tabs/tabs.js.map +1 -1
  296. package/es-custom/components/tabs/tabs.scss.js +1 -1
  297. package/es-custom/components/tag/dismissible-tag.d.ts +0 -2
  298. package/es-custom/components/tag/dismissible-tag.js +0 -2
  299. package/es-custom/components/tag/dismissible-tag.js.map +1 -1
  300. package/es-custom/components/tag/operational-tag.d.ts +0 -2
  301. package/es-custom/components/tag/operational-tag.js +0 -2
  302. package/es-custom/components/tag/operational-tag.js.map +1 -1
  303. package/es-custom/components/tag/selectable-tag.d.ts +0 -2
  304. package/es-custom/components/tag/selectable-tag.js +0 -2
  305. package/es-custom/components/tag/selectable-tag.js.map +1 -1
  306. package/es-custom/components/tag/tag-skeleton.d.ts +0 -2
  307. package/es-custom/components/tag/tag-skeleton.js +0 -2
  308. package/es-custom/components/tag/tag-skeleton.js.map +1 -1
  309. package/es-custom/components/text-input/text-input.scss.js +1 -1
  310. package/es-custom/components/tile/tile.scss.js +1 -1
  311. package/es-custom/components/time-picker/time-picker.scss.js +1 -1
  312. package/es-custom/components/toggle-tip/toggletip.d.ts +0 -1
  313. package/es-custom/components/toggle-tip/toggletip.js +4 -3
  314. package/es-custom/components/toggle-tip/toggletip.js.map +1 -1
  315. package/es-custom/components/toggle-tip/toggletip.scss.js +2 -2
  316. package/es-custom/components/tooltip/definition-tooltip.js +5 -3
  317. package/es-custom/components/tooltip/definition-tooltip.js.map +1 -1
  318. package/es-custom/components/tooltip/tooltip-content.d.ts +0 -7
  319. package/es-custom/components/tooltip/tooltip-content.js +4 -8
  320. package/es-custom/components/tooltip/tooltip-content.js.map +1 -1
  321. package/es-custom/components/tooltip/tooltip.d.ts +0 -1
  322. package/es-custom/components/tooltip/tooltip.js +4 -7
  323. package/es-custom/components/tooltip/tooltip.js.map +1 -1
  324. package/es-custom/components/tooltip/tooltip.scss.js +2 -2
  325. package/es-custom/components/tree-view/defs.d.ts +0 -2
  326. package/es-custom/components/tree-view/defs.js +0 -2
  327. package/es-custom/components/tree-view/defs.js.map +1 -1
  328. package/es-custom/components/tree-view/index.d.ts +0 -2
  329. package/es-custom/components/tree-view/tree-node.d.ts +0 -2
  330. package/es-custom/components/tree-view/tree-node.js +0 -2
  331. package/es-custom/components/tree-view/tree-node.js.map +1 -1
  332. package/es-custom/components/tree-view/tree-view.d.ts +0 -2
  333. package/es-custom/components/tree-view/tree-view.js +0 -2
  334. package/es-custom/components/tree-view/tree-view.js.map +1 -1
  335. package/es-custom/components/tree-view/tree-view.scss.js +1 -1
  336. package/es-custom/components/ui-shell/header-global-action.d.ts +1 -1
  337. package/es-custom/components/ui-shell/header-global-action.js +16 -2
  338. package/es-custom/components/ui-shell/header-global-action.js.map +1 -1
  339. package/es-custom/components/ui-shell/header-name.js +1 -1
  340. package/es-custom/components/ui-shell/header-name.js.map +1 -1
  341. package/es-custom/components/ui-shell/side-nav-menu-item.d.ts +4 -0
  342. package/es-custom/components/ui-shell/side-nav-menu-item.js +10 -2
  343. package/es-custom/components/ui-shell/side-nav-menu-item.js.map +1 -1
  344. package/es-custom/globals/controllers/floating-controller.d.ts +1 -1
  345. package/es-custom/globals/controllers/floating-controller.js +34 -30
  346. package/es-custom/globals/controllers/floating-controller.js.map +1 -1
  347. package/es-custom/globals/decorators/carbon-element.d.ts +5 -4
  348. package/es-custom/globals/decorators/carbon-element.js +1 -1
  349. package/es-custom/globals/decorators/carbon-element.js.map +1 -1
  350. package/lib/components/ai-label/ai-label.d.ts +1 -1
  351. package/lib/components/breadcrumb/breadcrumb-overflow-menu.d.ts +1 -1
  352. package/lib/components/chat-button/chat-button-skeleton.d.ts +1 -1
  353. package/lib/components/chat-button/chat-button.d.ts +1 -1
  354. package/lib/components/combo-box/combo-box.d.ts +5 -1
  355. package/lib/components/copy/copy.d.ts +1 -1
  356. package/lib/components/date-picker/range-plugin.d.ts +1 -1
  357. package/lib/components/dropdown/dropdown.d.ts +3 -3
  358. package/lib/components/grid/column-hang.d.ts +0 -2
  359. package/lib/components/grid/column.d.ts +0 -2
  360. package/lib/components/grid/grid.d.ts +0 -2
  361. package/lib/components/grid/index.d.ts +0 -2
  362. package/lib/components/icon-button/icon-button.d.ts +1 -1
  363. package/lib/components/menu/menu-context.d.ts +3 -2
  364. package/lib/components/menu/menu.d.ts +3 -2
  365. package/lib/components/modal/modal-body.d.ts +3 -1
  366. package/lib/components/modal/modal-close-button.d.ts +2 -1
  367. package/lib/components/modal/modal.d.ts +67 -2
  368. package/lib/components/multi-select/multi-select.d.ts +2 -2
  369. package/lib/components/overflow-menu/overflow-menu.d.ts +0 -1
  370. package/lib/components/page-header/index.d.ts +0 -2
  371. package/lib/components/page-header/page-header-breadcrumb.d.ts +0 -2
  372. package/lib/components/page-header/page-header-content-text.d.ts +0 -2
  373. package/lib/components/page-header/page-header-content.d.ts +0 -2
  374. package/lib/components/page-header/page-header-hero-image.d.ts +0 -2
  375. package/lib/components/page-header/page-header-tabs.d.ts +0 -2
  376. package/lib/components/page-header/page-header.d.ts +0 -2
  377. package/lib/components/popover/popover.d.ts +7 -1
  378. package/lib/components/slug/slug.d.ts +1 -1
  379. package/lib/components/tabs/defs.d.ts +4 -0
  380. package/lib/components/tabs/defs.js +4 -0
  381. package/lib/components/tabs/defs.js.map +1 -1
  382. package/lib/components/tabs/tabs.d.ts +2 -4
  383. package/lib/components/tag/dismissible-tag.d.ts +0 -2
  384. package/lib/components/tag/operational-tag.d.ts +0 -2
  385. package/lib/components/tag/selectable-tag.d.ts +0 -2
  386. package/lib/components/tag/tag-skeleton.d.ts +0 -2
  387. package/lib/components/toggle-tip/toggletip.d.ts +0 -1
  388. package/lib/components/tooltip/tooltip-content.d.ts +0 -7
  389. package/lib/components/tooltip/tooltip.d.ts +0 -1
  390. package/lib/components/tree-view/defs.d.ts +0 -2
  391. package/lib/components/tree-view/defs.js +0 -2
  392. package/lib/components/tree-view/defs.js.map +1 -1
  393. package/lib/components/tree-view/index.d.ts +0 -2
  394. package/lib/components/tree-view/tree-node.d.ts +0 -2
  395. package/lib/components/tree-view/tree-view.d.ts +0 -2
  396. package/lib/components/ui-shell/header-global-action.d.ts +1 -1
  397. package/lib/components/ui-shell/side-nav-menu-item.d.ts +4 -0
  398. package/lib/globals/controllers/floating-controller.d.ts +1 -1
  399. package/lib/globals/controllers/floating-controller.js +34 -30
  400. package/lib/globals/controllers/floating-controller.js.map +1 -1
  401. package/lib/globals/decorators/carbon-element.d.ts +5 -4
  402. package/package.json +7 -9
  403. package/scss/components/ai-label/ai-label.scss +11 -12
  404. package/scss/components/ai-skeleton/ai-skeleton.scss +1 -3
  405. package/scss/components/breadcrumb/breadcrumb.scss +0 -1
  406. package/scss/components/button/button.scss +0 -2
  407. package/scss/components/chat-button/chat-button.scss +0 -1
  408. package/scss/components/icon-button/icon-button.scss +0 -2
  409. package/scss/components/menu/menu.scss +11 -2
  410. package/scss/components/modal/modal.scss +27 -7
  411. package/scss/components/multi-select/multi-select.scss +2 -2
  412. package/scss/components/notification/actionable-notification.scss +42 -128
  413. package/scss/components/notification/inline-notification.scss +17 -69
  414. package/scss/components/notification/toast-notification.scss +16 -37
  415. package/scss/components/popover/popover.scss +4 -4
  416. package/scss/components/slug/slug.scss +11 -12
  417. package/scss/components/tabs/tabs.scss +7 -0
  418. package/scss/components/tile/tile.scss +1 -1
  419. package/scss/components/toggle-tip/toggletip.scss +0 -2
  420. package/scss/components/tooltip/tooltip.scss +0 -1
  421. package/telemetry.yml +11 -0
  422. package/dist/16-BXPirV4t.js +0 -28
  423. package/dist/16-BcPXq4VE.js +0 -28
  424. package/dist/16-BiojhJb6.js +0 -28
  425. package/dist/16-BirbARgt.js +0 -28
  426. package/dist/16-CCrV-EKs.js +0 -28
  427. package/dist/16-CNObEOvs.js +0 -28
  428. package/dist/16-CsHohlYG.js +0 -28
  429. package/dist/16-D9rqeJJl.js +0 -28
  430. package/dist/16-DEZ8LNs3.js +0 -28
  431. package/dist/16-DThcsE9v.js +0 -28
  432. package/dist/16-T0hLy__N.js +0 -28
  433. package/dist/16-mUGLFymm.js +0 -28
  434. package/dist/20-BSzLZNRY.js +0 -28
  435. package/dist/20-ZHgmfbqd.js +0 -28
  436. package/dist/accordion.min.js +0 -72
  437. package/dist/ai-label.min.js +0 -54
  438. package/dist/ai-skeleton.min.js +0 -37
  439. package/dist/badge-indicator.min.js +0 -28
  440. package/dist/breadcrumb.min.js +0 -46
  441. package/dist/button-3n7S6dfU.js +0 -94
  442. package/dist/button-skeleton-DE9AxBek.js +0 -48
  443. package/dist/button.min.js +0 -28
  444. package/dist/carbon-element-tFMTVffV.js +0 -28
  445. package/dist/chat-button.min.js +0 -40
  446. package/dist/checkbox-CFU6bnOa.js +0 -67
  447. package/dist/checkbox.min.js +0 -64
  448. package/dist/class-map-BLvVLLRH.js +0 -33
  449. package/dist/code-snippet.min.js +0 -85
  450. package/dist/collection-helpers-C8K_t6zj.js +0 -28
  451. package/dist/combo-box.min.js +0 -65
  452. package/dist/combo-button.min.js +0 -42
  453. package/dist/consume-DNv3sWri.js +0 -64
  454. package/dist/contained-list.min.js +0 -70
  455. package/dist/content-switcher-item-CXc-BbRX.js +0 -54
  456. package/dist/content-switcher.min.js +0 -28
  457. package/dist/copy-button.min.js +0 -44
  458. package/dist/data-table.min.js +0 -185
  459. package/dist/date-picker.min.js +0 -89
  460. package/dist/defs-CcLNpvSO.js +0 -28
  461. package/dist/directive-CwpJ03IP.js +0 -33
  462. package/dist/dropdown-item-CSXYY4Up.js +0 -100
  463. package/dist/dropdown.min.js +0 -31
  464. package/dist/feature-flags.min.js +0 -28
  465. package/dist/file-uploader.min.js +0 -106
  466. package/dist/floating-controller-ClaZwDaj.js +0 -28
  467. package/dist/floating-menu.min.js +0 -28
  468. package/dist/fluid-number-input.min.js +0 -28
  469. package/dist/fluid-search.min.js +0 -33
  470. package/dist/fluid-select.min.js +0 -30
  471. package/dist/fluid-text-input.min.js +0 -28
  472. package/dist/fluid-textarea.min.js +0 -36
  473. package/dist/focus-DCv16lgz.js +0 -28
  474. package/dist/form-D0wM2t2A.js +0 -28
  475. package/dist/form-group.min.js +0 -39
  476. package/dist/form.min.js +0 -30
  477. package/dist/grid.min.js +0 -60
  478. package/dist/heading.min.js +0 -33
  479. package/dist/host-listener-BFnrKETa.js +0 -28
  480. package/dist/host-listener-maKckXVl.js +0 -28
  481. package/dist/icon-button.min.js +0 -42
  482. package/dist/icon-indicator.min.js +0 -28
  483. package/dist/icon-loader-BiaaiIZd.js +0 -28
  484. package/dist/icon-loader-utils-Dw7YsY3n.js +0 -33
  485. package/dist/icon.min.js +0 -28
  486. package/dist/if-defined-B342gMhK.js +0 -33
  487. package/dist/if-non-empty-BXM4sQkm.js +0 -28
  488. package/dist/inline-loading.min.js +0 -39
  489. package/dist/layer.min.js +0 -28
  490. package/dist/link.min.js +0 -52
  491. package/dist/list.min.js +0 -39
  492. package/dist/lit-element-W7dQy3wx.js +0 -50
  493. package/dist/loading-icon-9dSwtpx9.js +0 -43
  494. package/dist/loading.min.js +0 -28
  495. package/dist/menu-button.min.js +0 -37
  496. package/dist/menu.min.js +0 -80
  497. package/dist/modal.min.js +0 -49
  498. package/dist/multi-select.min.js +0 -90
  499. package/dist/notification.min.js +0 -116
  500. package/dist/number-input.min.js +0 -103
  501. package/dist/on-Bh72-1o0.js +0 -28
  502. package/dist/overflow-menu.min.js +0 -49
  503. package/dist/page-header.min.js +0 -142
  504. package/dist/pagination.min.js +0 -104
  505. package/dist/password-input.min.js +0 -93
  506. package/dist/popover.min.js +0 -42
  507. package/dist/progress-bar.min.js +0 -49
  508. package/dist/progress-indicator.min.js +0 -62
  509. package/dist/property-D8KHfsO7.js +0 -33
  510. package/dist/query-DZZk85FD.js +0 -38
  511. package/dist/query-assigned-elements-CuK851Xm.js +0 -33
  512. package/dist/radio-button.min.js +0 -71
  513. package/dist/radio-group-manager-BbeUxJeN.js +0 -28
  514. package/dist/search-BpfBrZ_q.js +0 -58
  515. package/dist/search.min.js +0 -31
  516. package/dist/select-Bu-C3DEh.js +0 -109
  517. package/dist/select-item-CY7ZCgDO.js +0 -28
  518. package/dist/select-skeleton-Bj1W9rv-.js +0 -31
  519. package/dist/select.min.js +0 -28
  520. package/dist/settings-CVGvqY8T.js +0 -28
  521. package/dist/shape-indicator.min.js +0 -28
  522. package/dist/shared-enums-D2BNx9-N.js +0 -28
  523. package/dist/side-panel.min.js +0 -160
  524. package/dist/skeleton-icon.min.js +0 -28
  525. package/dist/skeleton-placeholder.min.js +0 -28
  526. package/dist/skeleton-text.min.js +0 -28
  527. package/dist/skip-to-content.min.js +0 -32
  528. package/dist/slider.min.js +0 -273
  529. package/dist/slug.min.js +0 -54
  530. package/dist/stack.min.js +0 -28
  531. package/dist/state-DVnprZ3A.js +0 -33
  532. package/dist/structured-list.min.js +0 -46
  533. package/dist/tabs.min.js +0 -85
  534. package/dist/tag.min.js +0 -155
  535. package/dist/tearsheet.min.js +0 -141
  536. package/dist/text-input-CMLDDQcE.js +0 -95
  537. package/dist/text-input.min.js +0 -31
  538. package/dist/textarea.min.js +0 -84
  539. package/dist/tile.min.js +0 -101
  540. package/dist/time-picker.min.js +0 -79
  541. package/dist/toggle-tip.min.js +0 -73
  542. package/dist/toggle.min.js +0 -63
  543. package/dist/tooltip-content-eYgOs_c2.js +0 -30
  544. package/dist/tooltip.min.js +0 -50
  545. package/dist/tree-view.min.js +0 -127
  546. package/dist/ui-shell.min.js +0 -156
  547. package/dist/unsafe-html-SGvBIOsG.js +0 -33
  548. package/dist/validity-CzCNnEZK.js +0 -28
@@ -16,6 +16,10 @@ export declare enum TABS_KEYBOARD_ACTION {
16
16
  * Keyboard action to navigate back/forward.
17
17
  */
18
18
  NAVIGATING = "navigating",
19
+ /**
20
+ * Keyboard action to Enter/Space.
21
+ */
22
+ ACTIVATING = "activating",
19
23
  /**
20
24
  * Keyboard action to navigate to first tab using home key
21
25
  */
@@ -24,6 +24,10 @@ var TABS_KEYBOARD_ACTION;
24
24
  * Keyboard action to navigate back/forward.
25
25
  */
26
26
  TABS_KEYBOARD_ACTION["NAVIGATING"] = "navigating";
27
+ /**
28
+ * Keyboard action to Enter/Space.
29
+ */
30
+ TABS_KEYBOARD_ACTION["ACTIVATING"] = "activating";
27
31
  /**
28
32
  * Keyboard action to navigate to first tab using home key
29
33
  */
@@ -1 +1 @@
1
- {"version":3,"file":"defs.js","sources":["../../../src/components/tabs/defs.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2020, 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\n/**\n * The keyboard action categories for dropdown.\n */\nexport enum TABS_KEYBOARD_ACTION {\n /**\n * Not doing any action.\n */\n NONE = 'none',\n\n /**\n * Keyboard action to navigate back/forward.\n */\n NAVIGATING = 'navigating',\n\n /**\n * Keyboard action to navigate to first tab using home key\n */\n HOME = 'home',\n\n /**\n * Keyboard action to navigate to last tab using end key\n */\n END = 'end',\n}\n\n/**\n * Tabs types.\n */\nexport enum TABS_TYPE {\n /**\n * Regular tabs.\n */\n REGULAR = '',\n\n /**\n * Container type.\n */\n CONTAINER = 'container',\n\n /**\n * Contained type.\n */\n CONTAINED = 'contained',\n}\n"],"names":[],"mappings":";;;;;;;AAAA;;;;;AAKG;AAEH;;AAEG;IACS;AAAZ,CAAA,UAAY,oBAAoB,EAAA;AAC9B;;AAEG;AACH,IAAA,oBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AAEb;;AAEG;AACH,IAAA,oBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AAEzB;;AAEG;AACH,IAAA,oBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AAEb;;AAEG;AACH,IAAA,oBAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACb,CAAC,EApBW,oBAAoB,KAApB,oBAAoB,GAAA,EAAA,CAAA,CAAA;AAsBhC;;AAEG;IACS;AAAZ,CAAA,UAAY,SAAS,EAAA;AACnB;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,EAAY;AAEZ;;AAEG;AACH,IAAA,SAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AAEvB;;AAEG;AACH,IAAA,SAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACzB,CAAC,EAfW,SAAS,KAAT,SAAS,GAAA,EAAA,CAAA,CAAA;;;;"}
1
+ {"version":3,"file":"defs.js","sources":["../../../src/components/tabs/defs.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2020, 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\n/**\n * The keyboard action categories for dropdown.\n */\nexport enum TABS_KEYBOARD_ACTION {\n /**\n * Not doing any action.\n */\n NONE = 'none',\n\n /**\n * Keyboard action to navigate back/forward.\n */\n NAVIGATING = 'navigating',\n\n /**\n * Keyboard action to Enter/Space.\n */\n ACTIVATING = 'activating',\n\n /**\n * Keyboard action to navigate to first tab using home key\n */\n HOME = 'home',\n\n /**\n * Keyboard action to navigate to last tab using end key\n */\n END = 'end',\n}\n\n/**\n * Tabs types.\n */\nexport enum TABS_TYPE {\n /**\n * Regular tabs.\n */\n REGULAR = '',\n\n /**\n * Container type.\n */\n CONTAINER = 'container',\n\n /**\n * Contained type.\n */\n CONTAINED = 'contained',\n}\n"],"names":[],"mappings":";;;;;;;AAAA;;;;;AAKG;AAEH;;AAEG;IACS;AAAZ,CAAA,UAAY,oBAAoB,EAAA;AAC9B;;AAEG;AACH,IAAA,oBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AAEb;;AAEG;AACH,IAAA,oBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AAEzB;;AAEG;AACH,IAAA,oBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AAEzB;;AAEG;AACH,IAAA,oBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AAEb;;AAEG;AACH,IAAA,oBAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACb,CAAC,EAzBW,oBAAoB,KAApB,oBAAoB,GAAA,EAAA,CAAA,CAAA;AA2BhC;;AAEG;IACS;AAAZ,CAAA,UAAY,SAAS,EAAA;AACnB;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,EAAY;AAEZ;;AAEG;AACH,IAAA,SAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AAEvB;;AAEG;AACH,IAAA,SAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACzB,CAAC,EAfW,SAAS,KAAT,SAAS,GAAA,EAAA,CAAA,CAAA;;;;"}
@@ -403,9 +403,7 @@ export default class CDSTabs extends CDSTabs_base {
403
403
  * Starts with the selected item
404
404
  * Going prev/next item immediately changes the selection
405
405
  */
406
- protected _navigate(direction: number, { immediate }?: {
407
- immediate?: boolean;
408
- }): void;
406
+ protected _navigate(direction: number): void;
409
407
  protected _handleClick(event: MouseEvent): void;
410
408
  protected _handleKeydown(event: KeyboardEvent): void;
411
409
  /**
@@ -419,7 +417,7 @@ export default class CDSTabs extends CDSTabs_base {
419
417
  direction: any;
420
418
  }): void;
421
419
  _handleSlotchange(): void;
422
- protected _selectionDidChange(itemToSelect: CDSTab): void;
420
+ protected _selectionDidChange(itemToSelect: CDSTab, interactionType?: 'mouse' | 'keyboard' | undefined): void;
423
421
  /**
424
422
  * The scrolling container.
425
423
  */
@@ -127,17 +127,16 @@ let CDSTabs = class CDSTabs extends HostListenerMixin(CDSContentSwitcher) {
127
127
  * Starts with the selected item
128
128
  * Going prev/next item immediately changes the selection
129
129
  */
130
- _navigate(direction, { immediate = true } = {}) {
130
+ _navigate(direction) {
131
+ const immediate = this.selectionMode === 'automatic';
131
132
  const { selectorItem, selectorItemHighlighted, selectorItemSelected } = this
132
133
  .constructor;
133
134
  const nextItem = this._getNextItem(this.querySelector(immediate ? selectorItemSelected : selectorItemHighlighted), direction);
134
135
  if (!nextItem) {
135
136
  return;
136
137
  }
137
- if (immediate) {
138
- this._handleUserInitiatedSelectItem(nextItem);
139
- }
140
- else {
138
+ this._handleUserInitiatedSelectItem(nextItem, 'keyboard');
139
+ if (!immediate) {
141
140
  forEach(this.querySelectorAll(selectorItem), (item) => {
142
141
  item[immediate ? 'selected' : 'highlighted'] =
143
142
  nextItem === item;
@@ -156,6 +155,14 @@ let CDSTabs = class CDSTabs extends HostListenerMixin(CDSContentSwitcher) {
156
155
  }
157
156
  _handleClick(event) {
158
157
  super._handleClick(event);
158
+ const { selectorItem } = this.constructor;
159
+ const currentItem = this._getCurrentItem(event.target);
160
+ if (currentItem) {
161
+ forEach(this.querySelectorAll(selectorItem), (item) => {
162
+ item.highlighted = false;
163
+ });
164
+ currentItem.highlighted = true;
165
+ }
159
166
  }
160
167
  _handleKeydown(event) {
161
168
  const { key } = event;
@@ -192,6 +199,15 @@ let CDSTabs = class CDSTabs extends HostListenerMixin(CDSContentSwitcher) {
192
199
  }
193
200
  }
194
201
  break;
202
+ case TABS_KEYBOARD_ACTION.ACTIVATING:
203
+ {
204
+ const focusedTab = this.querySelector(`${prefix}-tab[highlighted]`);
205
+ if (focusedTab) {
206
+ this._selectionDidChange(focusedTab);
207
+ this.requestUpdate();
208
+ }
209
+ }
210
+ break;
195
211
  }
196
212
  }
197
213
  /**
@@ -233,8 +249,8 @@ let CDSTabs = class CDSTabs extends HostListenerMixin(CDSContentSwitcher) {
233
249
  nextItem.hideDivider = true;
234
250
  }
235
251
  }
236
- _selectionDidChange(itemToSelect) {
237
- super._selectionDidChange(itemToSelect);
252
+ _selectionDidChange(itemToSelect, interactionType) {
253
+ super._selectionDidChange(itemToSelect, interactionType);
238
254
  this._assistiveStatusText = this.selectedItemAssistiveText;
239
255
  }
240
256
  /**
@@ -284,10 +300,20 @@ let CDSTabs = class CDSTabs extends HostListenerMixin(CDSContentSwitcher) {
284
300
  firstUpdated() {
285
301
  // Call super to run content-switcher init logic (initial selection)
286
302
  super.firstUpdated();
287
- const { selectorTablist } = this.constructor;
303
+ const { selectorTablist, selectorItemEnabled } = this
304
+ .constructor;
305
+ const { selectionMode, selectedIndex } = this;
288
306
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452
289
307
  const tablist = this.shadowRoot.querySelector(selectorTablist);
290
308
  this.tablist = tablist;
309
+ if (selectionMode === 'manual') {
310
+ const firstItem = this.querySelectorAll(selectorItemEnabled)[selectedIndex];
311
+ if (firstItem) {
312
+ firstItem.highlighted = true;
313
+ firstItem.selected = true;
314
+ this.value = firstItem.value;
315
+ }
316
+ }
291
317
  this._cleanAndCreateIntersectionObserverContainer({ create: true });
292
318
  }
293
319
  updated(changedProperties) {
@@ -459,6 +485,9 @@ let CDSTabs = class CDSTabs extends HostListenerMixin(CDSContentSwitcher) {
459
485
  if (key in NAVIGATION_DIRECTION) {
460
486
  return TABS_KEYBOARD_ACTION.NAVIGATING;
461
487
  }
488
+ if (key === 'Enter' || key === ' ') {
489
+ return TABS_KEYBOARD_ACTION.ACTIVATING;
490
+ }
462
491
  return TABS_KEYBOARD_ACTION.NONE;
463
492
  }
464
493
  };
@@ -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/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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"}
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(direction: number) {\n const immediate = this.selectionMode === 'automatic';\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 this._handleUserInitiatedSelectItem(nextItem as CDSTab, 'keyboard');\n if (!immediate) {\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 const { selectorItem } = this.constructor as typeof CDSTabs;\n const currentItem = this._getCurrentItem(event.target as HTMLElement);\n if (currentItem) {\n forEach(this.querySelectorAll(selectorItem), (item) => {\n (item as CDSTab).highlighted = false;\n });\n (currentItem as CDSTab).highlighted = true;\n }\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 case TABS_KEYBOARD_ACTION.ACTIVATING:\n {\n const focusedTab: CDSTab | null = this.querySelector(\n `${prefix}-tab[highlighted]`\n );\n if (focusedTab) {\n this._selectionDidChange(focusedTab);\n this.requestUpdate();\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(\n itemToSelect: CDSTab,\n interactionType?: 'mouse' | 'keyboard' | undefined\n ) {\n super._selectionDidChange(itemToSelect, interactionType);\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 const { selectorTablist, selectorItemEnabled } = this\n .constructor as typeof CDSTabs;\n const { selectionMode, selectedIndex } = this;\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 if (selectionMode === 'manual') {\n const firstItem =\n this.querySelectorAll<CDSTab>(selectorItemEnabled)[selectedIndex];\n if (firstItem) {\n firstItem.highlighted = true;\n firstItem.selected = true;\n this.value = firstItem.value;\n }\n }\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 if (key === 'Enter' || key === ' ') {\n return TABS_KEYBOARD_ACTION.ACTIVATING;\n }\n return TABS_KEYBOARD_ACTION.NONE;\n }\n}\n"],"names":["customElement"],"mappings":"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"}