@carbon/web-components 2.54.0 → 2.55.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 (475) hide show
  1. package/custom-elements.json +331 -187
  2. package/es/components/accordion/accordion.scss.js +1 -1
  3. package/es/components/ai-label/ai-label.scss.js +1 -1
  4. package/es/components/ai-skeleton/ai-skeleton.scss.js +1 -1
  5. package/es/components/badge-indicator/badge-indicator.scss.js +1 -1
  6. package/es/components/breadcrumb/breadcrumb.scss.js +1 -1
  7. package/es/components/button/button.d.ts +1 -1
  8. package/es/components/button/button.d.ts.map +1 -1
  9. package/es/components/button/button.js +7 -5
  10. package/es/components/button/button.js.map +1 -1
  11. package/es/components/button/button.scss.js +1 -1
  12. package/es/components/checkbox/checkbox.scss.js +1 -1
  13. package/es/components/code-snippet/code-snippet.scss.js +1 -1
  14. package/es/components/combo-box/combo-box.scss.js +1 -1
  15. package/es/components/combo-button/combo-button.scss.js +1 -1
  16. package/es/components/contained-list/contained-list.scss.js +1 -1
  17. package/es/components/content-switcher/content-switcher.scss.js +1 -1
  18. package/es/components/copy-button/copy-button.scss.js +1 -1
  19. package/es/components/data-table/data-table.scss.js +1 -1
  20. package/es/components/date-picker/date-picker.scss.js +1 -1
  21. package/es/components/date-picker/date-picker.scss.js.map +1 -1
  22. package/es/components/dialog/dialog-body.js +1 -1
  23. package/es/components/dialog/dialog-close-button.js +1 -1
  24. package/es/components/dialog/dialog-footer.js +1 -1
  25. package/es/components/dialog/dialog-subtitle.js +1 -1
  26. package/es/components/dialog/dialog-title.js +1 -1
  27. package/es/components/dialog/dialog.d.ts +18 -7
  28. package/es/components/dialog/dialog.d.ts.map +1 -1
  29. package/es/components/dialog/dialog.js +51 -17
  30. package/es/components/dialog/dialog.js.map +1 -1
  31. package/es/components/dialog/dialog.scss.js +1 -1
  32. package/es/components/dialog/dialog.scss.js.map +1 -1
  33. package/es/components/dropdown/dropdown.scss.js +1 -1
  34. package/es/components/feature-flags/index.d.ts.map +1 -1
  35. package/es/components/feature-flags/index.js +8 -3
  36. package/es/components/feature-flags/index.js.map +1 -1
  37. package/es/components/file-uploader/file-uploader-button.d.ts.map +1 -1
  38. package/es/components/file-uploader/file-uploader-button.js +3 -2
  39. package/es/components/file-uploader/file-uploader-button.js.map +1 -1
  40. package/es/components/file-uploader/file-uploader-drop-container.d.ts +1 -1
  41. package/es/components/file-uploader/file-uploader-drop-container.d.ts.map +1 -1
  42. package/es/components/file-uploader/file-uploader-drop-container.js +3 -2
  43. package/es/components/file-uploader/file-uploader-drop-container.js.map +1 -1
  44. package/es/components/file-uploader/file-uploader-item.d.ts +4 -0
  45. package/es/components/file-uploader/file-uploader-item.d.ts.map +1 -1
  46. package/es/components/file-uploader/file-uploader-item.js +6 -0
  47. package/es/components/file-uploader/file-uploader-item.js.map +1 -1
  48. package/es/components/file-uploader/file-uploader.scss.js +1 -1
  49. package/es/components/file-uploader/file-uploader.scss.js.map +1 -1
  50. package/es/components/fluid-combo-box/fluid-combo-box.scss.js +1 -1
  51. package/es/components/fluid-dropdown/fluid-dropdown.scss.js +1 -1
  52. package/es/components/fluid-form/fluid-form.scss.js +1 -1
  53. package/es/components/fluid-multi-select/fluid-multi-select.scss.js +1 -1
  54. package/es/components/fluid-number-input/fluid-number-input.scss.js +1 -1
  55. package/es/components/fluid-password-input/fluid-password-input.scss.js +1 -1
  56. package/es/components/fluid-search/fluid-search.scss.js +1 -1
  57. package/es/components/fluid-select/fluid-select.scss.js +1 -1
  58. package/es/components/fluid-text-input/fluid-text-input.scss.js +1 -1
  59. package/es/components/fluid-textarea/fluid-textarea.scss.js +1 -1
  60. package/es/components/fluid-time-picker/fluid-time-picker.scss.js +1 -1
  61. package/es/components/form/form-item.scss.js +1 -1
  62. package/es/components/form/form.scss.js +1 -1
  63. package/es/components/form-group/form-group.scss.js +1 -1
  64. package/es/components/heading/heading.scss.js +1 -1
  65. package/es/components/icon-button/icon-button.scss.js +1 -1
  66. package/es/components/icon-indicator/icon-indicator.scss.js +1 -1
  67. package/es/components/inline-loading/inline-loading.scss.js +1 -1
  68. package/es/components/link/link.d.ts +1 -1
  69. package/es/components/link/link.d.ts.map +1 -1
  70. package/es/components/link/link.js.map +1 -1
  71. package/es/components/link/link.scss.js +1 -1
  72. package/es/components/list/list.scss.js +1 -1
  73. package/es/components/loading/loading.scss.js +1 -1
  74. package/es/components/menu/menu-item.d.ts.map +1 -1
  75. package/es/components/menu/menu-item.js +3 -3
  76. package/es/components/menu/menu-item.js.map +1 -1
  77. package/es/components/menu/menu-item.scss.js +1 -1
  78. package/es/components/menu/menu.scss.js +1 -1
  79. package/es/components/menu-button/menu-button.scss.js +1 -1
  80. package/es/components/modal/modal-base.d.ts +144 -0
  81. package/es/components/modal/modal-base.d.ts.map +1 -0
  82. package/es/components/modal/modal-base.js +229 -0
  83. package/es/components/modal/modal-base.js.map +1 -0
  84. package/es/components/modal/modal.d.ts +15 -89
  85. package/es/components/modal/modal.d.ts.map +1 -1
  86. package/es/components/modal/modal.js +66 -169
  87. package/es/components/modal/modal.js.map +1 -1
  88. package/es/components/modal/modal.scss.js +1 -1
  89. package/es/components/modal/modal.scss.js.map +1 -1
  90. package/es/components/multi-select/multi-select.d.ts +4 -0
  91. package/es/components/multi-select/multi-select.d.ts.map +1 -1
  92. package/es/components/multi-select/multi-select.js +4 -1
  93. package/es/components/multi-select/multi-select.js.map +1 -1
  94. package/es/components/multi-select/multi-select.scss.js +1 -1
  95. package/es/components/notification/actionable-notification.scss.js +1 -1
  96. package/es/components/notification/inline-notification.scss.js +1 -1
  97. package/es/components/notification/toast-notification.scss.js +1 -1
  98. package/es/components/number-input/number-input.scss.js +1 -1
  99. package/es/components/overflow-menu/overflow-menu-item.d.ts.map +1 -1
  100. package/es/components/overflow-menu/overflow-menu-item.js +4 -3
  101. package/es/components/overflow-menu/overflow-menu-item.js.map +1 -1
  102. package/es/components/overflow-menu/overflow-menu.scss.js +1 -1
  103. package/es/components/page-header/index.d.ts +4 -0
  104. package/es/components/page-header/index.d.ts.map +1 -1
  105. package/es/components/page-header/page-header-breadcrumb.d.ts +7 -0
  106. package/es/components/page-header/page-header-breadcrumb.d.ts.map +1 -1
  107. package/es/components/page-header/page-header-breadcrumb.js +7 -0
  108. package/es/components/page-header/page-header-breadcrumb.js.map +1 -1
  109. package/es/components/page-header/page-header-content-text.d.ts +7 -0
  110. package/es/components/page-header/page-header-content-text.d.ts.map +1 -1
  111. package/es/components/page-header/page-header-content-text.js +7 -0
  112. package/es/components/page-header/page-header-content-text.js.map +1 -1
  113. package/es/components/page-header/page-header-content.d.ts +7 -0
  114. package/es/components/page-header/page-header-content.d.ts.map +1 -1
  115. package/es/components/page-header/page-header-content.js +7 -0
  116. package/es/components/page-header/page-header-content.js.map +1 -1
  117. package/es/components/page-header/page-header-hero-image.d.ts +7 -0
  118. package/es/components/page-header/page-header-hero-image.d.ts.map +1 -1
  119. package/es/components/page-header/page-header-hero-image.js +7 -0
  120. package/es/components/page-header/page-header-hero-image.js.map +1 -1
  121. package/es/components/page-header/page-header-tabs.d.ts +7 -0
  122. package/es/components/page-header/page-header-tabs.d.ts.map +1 -1
  123. package/es/components/page-header/page-header-tabs.js +7 -0
  124. package/es/components/page-header/page-header-tabs.js.map +1 -1
  125. package/es/components/page-header/page-header.d.ts +7 -0
  126. package/es/components/page-header/page-header.d.ts.map +1 -1
  127. package/es/components/page-header/page-header.js +7 -0
  128. package/es/components/page-header/page-header.js.map +1 -1
  129. package/es/components/page-header/page-header.scss.js +1 -1
  130. package/es/components/page-header/page-header.scss.js.map +1 -1
  131. package/es/components/pagination/pagination.scss.js +1 -1
  132. package/es/components/pagination-nav/pagination-nav.scss.js +1 -1
  133. package/es/components/password-input/password-input.scss.js +1 -1
  134. package/es/components/popover/popover.scss.js +1 -1
  135. package/es/components/progress-bar/progress-bar.scss.js +1 -1
  136. package/es/components/progress-indicator/progress-indicator.scss.js +1 -1
  137. package/es/components/radio-button/radio-button.scss.js +1 -1
  138. package/es/components/search/search.d.ts +4 -0
  139. package/es/components/search/search.d.ts.map +1 -1
  140. package/es/components/search/search.js +4 -1
  141. package/es/components/search/search.js.map +1 -1
  142. package/es/components/search/search.scss.js +1 -1
  143. package/es/components/select/select.scss.js +1 -1
  144. package/es/components/shape-indicator/shape-indicator.scss.js +1 -1
  145. package/es/components/side-panel/side-panel.d.ts +1 -1
  146. package/es/components/side-panel/side-panel.js +1 -1
  147. package/es/components/side-panel/side-panel.js.map +1 -1
  148. package/es/components/skeleton-icon/skeleton-icon.scss.js +1 -1
  149. package/es/components/skeleton-placeholder/skeleton-placeholder.scss.js +1 -1
  150. package/es/components/skeleton-text/skeleton-text.scss.js +1 -1
  151. package/es/components/skip-to-content/skip-to-content.scss.js +1 -1
  152. package/es/components/slider/slider.scss.js +1 -1
  153. package/es/components/slug/slug.scss.js +1 -1
  154. package/es/components/stack/stack.scss.js +1 -1
  155. package/es/components/structured-list/structured-list.scss.js +1 -1
  156. package/es/components/tabs/defs.d.ts +26 -0
  157. package/es/components/tabs/defs.d.ts.map +1 -1
  158. package/es/components/tabs/defs.js +28 -1
  159. package/es/components/tabs/defs.js.map +1 -1
  160. package/es/components/tabs/index.d.ts +1 -0
  161. package/es/components/tabs/index.d.ts.map +1 -1
  162. package/es/components/tabs/index.js +1 -0
  163. package/es/components/tabs/stories/tabs-wrapper.d.ts +9 -0
  164. package/es/components/tabs/stories/tabs-wrapper.d.ts.map +1 -1
  165. package/es/components/tabs/stories/tabs-wrapper.js +24 -10
  166. package/es/components/tabs/stories/tabs-wrapper.js.map +1 -1
  167. package/es/components/tabs/tab.d.ts +60 -1
  168. package/es/components/tabs/tab.d.ts.map +1 -1
  169. package/es/components/tabs/tab.js +76 -9
  170. package/es/components/tabs/tab.js.map +1 -1
  171. package/es/components/tabs/tabs-vertical.d.ts +29 -0
  172. package/es/components/tabs/tabs-vertical.d.ts.map +1 -0
  173. package/es/components/tabs/tabs-vertical.js +113 -0
  174. package/es/components/tabs/tabs-vertical.js.map +1 -0
  175. package/es/components/tabs/tabs.d.ts +34 -4
  176. package/es/components/tabs/tabs.d.ts.map +1 -1
  177. package/es/components/tabs/tabs.js +86 -19
  178. package/es/components/tabs/tabs.js.map +1 -1
  179. package/es/components/tabs/tabs.scss.js +1 -1
  180. package/es/components/tabs/tabs.scss.js.map +1 -1
  181. package/es/components/tag/tag.scss.js +1 -1
  182. package/es/components/tearsheet/tearsheet.d.ts +1 -1
  183. package/es/components/tearsheet/tearsheet.js +1 -1
  184. package/es/components/tearsheet/tearsheet.js.map +1 -1
  185. package/es/components/text-input/text-input.scss.js +1 -1
  186. package/es/components/textarea/textarea.scss.js +1 -1
  187. package/es/components/tile/clickable-tile.d.ts +1 -1
  188. package/es/components/tile/clickable-tile.d.ts.map +1 -1
  189. package/es/components/tile/clickable-tile.js +6 -1
  190. package/es/components/tile/clickable-tile.js.map +1 -1
  191. package/es/components/tile/radio-tile.d.ts +4 -1
  192. package/es/components/tile/radio-tile.d.ts.map +1 -1
  193. package/es/components/tile/radio-tile.js +23 -6
  194. package/es/components/tile/radio-tile.js.map +1 -1
  195. package/es/components/tile/tile.scss.js +1 -1
  196. package/es/components/tile/tile.scss.js.map +1 -1
  197. package/es/components/time-picker/time-picker.scss.js +1 -1
  198. package/es/components/toggle/toggle.scss.js +1 -1
  199. package/es/components/toggle-tip/toggletip.scss.js +1 -1
  200. package/es/components/tooltip/tooltip.scss.js +1 -1
  201. package/es/components/tree-view/tree-view.scss.js +1 -1
  202. package/es/components/ui-shell/header.scss.js +1 -1
  203. package/es/components/ui-shell/side-nav.scss.js +1 -1
  204. package/es/globals/decorators/carbon-element.js.map +1 -1
  205. package/es/index.js +1 -1
  206. package/es-custom/components/accordion/accordion.scss.js +1 -1
  207. package/es-custom/components/ai-label/ai-label.scss.js +1 -1
  208. package/es-custom/components/ai-skeleton/ai-skeleton.scss.js +1 -1
  209. package/es-custom/components/badge-indicator/badge-indicator.scss.js +1 -1
  210. package/es-custom/components/breadcrumb/breadcrumb.scss.js +1 -1
  211. package/es-custom/components/button/button.d.ts +1 -1
  212. package/es-custom/components/button/button.d.ts.map +1 -1
  213. package/es-custom/components/button/button.js +7 -5
  214. package/es-custom/components/button/button.js.map +1 -1
  215. package/es-custom/components/button/button.scss.js +1 -1
  216. package/es-custom/components/checkbox/checkbox.scss.js +1 -1
  217. package/es-custom/components/code-snippet/code-snippet.scss.js +1 -1
  218. package/es-custom/components/combo-box/combo-box.scss.js +1 -1
  219. package/es-custom/components/combo-button/combo-button.scss.js +1 -1
  220. package/es-custom/components/contained-list/contained-list.scss.js +1 -1
  221. package/es-custom/components/content-switcher/content-switcher.scss.js +1 -1
  222. package/es-custom/components/copy-button/copy-button.scss.js +1 -1
  223. package/es-custom/components/data-table/data-table.scss.js +1 -1
  224. package/es-custom/components/date-picker/date-picker.scss.js +1 -1
  225. package/es-custom/components/date-picker/date-picker.scss.js.map +1 -1
  226. package/es-custom/components/dialog/dialog-body.js +1 -1
  227. package/es-custom/components/dialog/dialog-close-button.js +1 -1
  228. package/es-custom/components/dialog/dialog-footer.js +1 -1
  229. package/es-custom/components/dialog/dialog-subtitle.js +1 -1
  230. package/es-custom/components/dialog/dialog-title.js +1 -1
  231. package/es-custom/components/dialog/dialog.d.ts +18 -7
  232. package/es-custom/components/dialog/dialog.d.ts.map +1 -1
  233. package/es-custom/components/dialog/dialog.js +51 -17
  234. package/es-custom/components/dialog/dialog.js.map +1 -1
  235. package/es-custom/components/dialog/dialog.scss.js +1 -1
  236. package/es-custom/components/dialog/dialog.scss.js.map +1 -1
  237. package/es-custom/components/dropdown/dropdown.scss.js +1 -1
  238. package/es-custom/components/feature-flags/index.d.ts.map +1 -1
  239. package/es-custom/components/feature-flags/index.js +8 -3
  240. package/es-custom/components/feature-flags/index.js.map +1 -1
  241. package/es-custom/components/file-uploader/file-uploader-button.d.ts.map +1 -1
  242. package/es-custom/components/file-uploader/file-uploader-button.js +3 -2
  243. package/es-custom/components/file-uploader/file-uploader-button.js.map +1 -1
  244. package/es-custom/components/file-uploader/file-uploader-drop-container.d.ts +1 -1
  245. package/es-custom/components/file-uploader/file-uploader-drop-container.d.ts.map +1 -1
  246. package/es-custom/components/file-uploader/file-uploader-drop-container.js +3 -2
  247. package/es-custom/components/file-uploader/file-uploader-drop-container.js.map +1 -1
  248. package/es-custom/components/file-uploader/file-uploader-item.d.ts +4 -0
  249. package/es-custom/components/file-uploader/file-uploader-item.d.ts.map +1 -1
  250. package/es-custom/components/file-uploader/file-uploader-item.js +6 -0
  251. package/es-custom/components/file-uploader/file-uploader-item.js.map +1 -1
  252. package/es-custom/components/file-uploader/file-uploader.scss.js +1 -1
  253. package/es-custom/components/file-uploader/file-uploader.scss.js.map +1 -1
  254. package/es-custom/components/fluid-combo-box/fluid-combo-box.scss.js +1 -1
  255. package/es-custom/components/fluid-dropdown/fluid-dropdown.scss.js +1 -1
  256. package/es-custom/components/fluid-form/fluid-form.scss.js +1 -1
  257. package/es-custom/components/fluid-multi-select/fluid-multi-select.scss.js +1 -1
  258. package/es-custom/components/fluid-number-input/fluid-number-input.scss.js +1 -1
  259. package/es-custom/components/fluid-password-input/fluid-password-input.scss.js +1 -1
  260. package/es-custom/components/fluid-search/fluid-search.scss.js +1 -1
  261. package/es-custom/components/fluid-select/fluid-select.scss.js +1 -1
  262. package/es-custom/components/fluid-text-input/fluid-text-input.scss.js +1 -1
  263. package/es-custom/components/fluid-textarea/fluid-textarea.scss.js +1 -1
  264. package/es-custom/components/fluid-time-picker/fluid-time-picker.scss.js +1 -1
  265. package/es-custom/components/form/form-item.scss.js +1 -1
  266. package/es-custom/components/form/form.scss.js +1 -1
  267. package/es-custom/components/form-group/form-group.scss.js +1 -1
  268. package/es-custom/components/heading/heading.scss.js +1 -1
  269. package/es-custom/components/icon-button/icon-button.scss.js +1 -1
  270. package/es-custom/components/icon-indicator/icon-indicator.scss.js +1 -1
  271. package/es-custom/components/inline-loading/inline-loading.scss.js +1 -1
  272. package/es-custom/components/link/link.d.ts +1 -1
  273. package/es-custom/components/link/link.d.ts.map +1 -1
  274. package/es-custom/components/link/link.js.map +1 -1
  275. package/es-custom/components/link/link.scss.js +1 -1
  276. package/es-custom/components/list/list.scss.js +1 -1
  277. package/es-custom/components/loading/loading.scss.js +1 -1
  278. package/es-custom/components/menu/menu-item.d.ts.map +1 -1
  279. package/es-custom/components/menu/menu-item.js +3 -3
  280. package/es-custom/components/menu/menu-item.js.map +1 -1
  281. package/es-custom/components/menu/menu-item.scss.js +1 -1
  282. package/es-custom/components/menu/menu.scss.js +1 -1
  283. package/es-custom/components/menu-button/menu-button.scss.js +1 -1
  284. package/es-custom/components/modal/modal-base.d.ts +144 -0
  285. package/es-custom/components/modal/modal-base.d.ts.map +1 -0
  286. package/es-custom/components/modal/modal-base.js +229 -0
  287. package/es-custom/components/modal/modal-base.js.map +1 -0
  288. package/es-custom/components/modal/modal.d.ts +15 -89
  289. package/es-custom/components/modal/modal.d.ts.map +1 -1
  290. package/es-custom/components/modal/modal.js +66 -169
  291. package/es-custom/components/modal/modal.js.map +1 -1
  292. package/es-custom/components/modal/modal.scss.js +1 -1
  293. package/es-custom/components/modal/modal.scss.js.map +1 -1
  294. package/es-custom/components/multi-select/multi-select.d.ts +4 -0
  295. package/es-custom/components/multi-select/multi-select.d.ts.map +1 -1
  296. package/es-custom/components/multi-select/multi-select.js +4 -1
  297. package/es-custom/components/multi-select/multi-select.js.map +1 -1
  298. package/es-custom/components/multi-select/multi-select.scss.js +1 -1
  299. package/es-custom/components/notification/actionable-notification.scss.js +1 -1
  300. package/es-custom/components/notification/inline-notification.scss.js +1 -1
  301. package/es-custom/components/notification/toast-notification.scss.js +1 -1
  302. package/es-custom/components/number-input/number-input.scss.js +1 -1
  303. package/es-custom/components/overflow-menu/overflow-menu-item.d.ts.map +1 -1
  304. package/es-custom/components/overflow-menu/overflow-menu-item.js +4 -3
  305. package/es-custom/components/overflow-menu/overflow-menu-item.js.map +1 -1
  306. package/es-custom/components/overflow-menu/overflow-menu.scss.js +1 -1
  307. package/es-custom/components/page-header/index.d.ts +4 -0
  308. package/es-custom/components/page-header/index.d.ts.map +1 -1
  309. package/es-custom/components/page-header/page-header-breadcrumb.d.ts +7 -0
  310. package/es-custom/components/page-header/page-header-breadcrumb.d.ts.map +1 -1
  311. package/es-custom/components/page-header/page-header-breadcrumb.js +7 -0
  312. package/es-custom/components/page-header/page-header-breadcrumb.js.map +1 -1
  313. package/es-custom/components/page-header/page-header-content-text.d.ts +7 -0
  314. package/es-custom/components/page-header/page-header-content-text.d.ts.map +1 -1
  315. package/es-custom/components/page-header/page-header-content-text.js +7 -0
  316. package/es-custom/components/page-header/page-header-content-text.js.map +1 -1
  317. package/es-custom/components/page-header/page-header-content.d.ts +7 -0
  318. package/es-custom/components/page-header/page-header-content.d.ts.map +1 -1
  319. package/es-custom/components/page-header/page-header-content.js +7 -0
  320. package/es-custom/components/page-header/page-header-content.js.map +1 -1
  321. package/es-custom/components/page-header/page-header-hero-image.d.ts +7 -0
  322. package/es-custom/components/page-header/page-header-hero-image.d.ts.map +1 -1
  323. package/es-custom/components/page-header/page-header-hero-image.js +7 -0
  324. package/es-custom/components/page-header/page-header-hero-image.js.map +1 -1
  325. package/es-custom/components/page-header/page-header-tabs.d.ts +7 -0
  326. package/es-custom/components/page-header/page-header-tabs.d.ts.map +1 -1
  327. package/es-custom/components/page-header/page-header-tabs.js +7 -0
  328. package/es-custom/components/page-header/page-header-tabs.js.map +1 -1
  329. package/es-custom/components/page-header/page-header.d.ts +7 -0
  330. package/es-custom/components/page-header/page-header.d.ts.map +1 -1
  331. package/es-custom/components/page-header/page-header.js +7 -0
  332. package/es-custom/components/page-header/page-header.js.map +1 -1
  333. package/es-custom/components/page-header/page-header.scss.js +1 -1
  334. package/es-custom/components/page-header/page-header.scss.js.map +1 -1
  335. package/es-custom/components/pagination/pagination.scss.js +1 -1
  336. package/es-custom/components/pagination-nav/pagination-nav.scss.js +1 -1
  337. package/es-custom/components/password-input/password-input.scss.js +1 -1
  338. package/es-custom/components/popover/popover.scss.js +1 -1
  339. package/es-custom/components/progress-bar/progress-bar.scss.js +1 -1
  340. package/es-custom/components/progress-indicator/progress-indicator.scss.js +1 -1
  341. package/es-custom/components/radio-button/radio-button.scss.js +1 -1
  342. package/es-custom/components/search/search.d.ts +4 -0
  343. package/es-custom/components/search/search.d.ts.map +1 -1
  344. package/es-custom/components/search/search.js +4 -1
  345. package/es-custom/components/search/search.js.map +1 -1
  346. package/es-custom/components/search/search.scss.js +1 -1
  347. package/es-custom/components/select/select.scss.js +1 -1
  348. package/es-custom/components/shape-indicator/shape-indicator.scss.js +1 -1
  349. package/es-custom/components/side-panel/side-panel.d.ts +1 -1
  350. package/es-custom/components/side-panel/side-panel.js +1 -1
  351. package/es-custom/components/side-panel/side-panel.js.map +1 -1
  352. package/es-custom/components/skeleton-icon/skeleton-icon.scss.js +1 -1
  353. package/es-custom/components/skeleton-placeholder/skeleton-placeholder.scss.js +1 -1
  354. package/es-custom/components/skeleton-text/skeleton-text.scss.js +1 -1
  355. package/es-custom/components/skip-to-content/skip-to-content.scss.js +1 -1
  356. package/es-custom/components/slider/slider.scss.js +1 -1
  357. package/es-custom/components/slug/slug.scss.js +1 -1
  358. package/es-custom/components/stack/stack.scss.js +1 -1
  359. package/es-custom/components/structured-list/structured-list.scss.js +1 -1
  360. package/es-custom/components/tabs/defs.d.ts +26 -0
  361. package/es-custom/components/tabs/defs.d.ts.map +1 -1
  362. package/es-custom/components/tabs/defs.js +28 -1
  363. package/es-custom/components/tabs/defs.js.map +1 -1
  364. package/es-custom/components/tabs/index.d.ts +1 -0
  365. package/es-custom/components/tabs/index.d.ts.map +1 -1
  366. package/es-custom/components/tabs/index.js +1 -0
  367. package/es-custom/components/tabs/stories/tabs-wrapper.d.ts +9 -0
  368. package/es-custom/components/tabs/stories/tabs-wrapper.d.ts.map +1 -1
  369. package/es-custom/components/tabs/stories/tabs-wrapper.js +24 -10
  370. package/es-custom/components/tabs/stories/tabs-wrapper.js.map +1 -1
  371. package/es-custom/components/tabs/tab.d.ts +60 -1
  372. package/es-custom/components/tabs/tab.d.ts.map +1 -1
  373. package/es-custom/components/tabs/tab.js +76 -9
  374. package/es-custom/components/tabs/tab.js.map +1 -1
  375. package/es-custom/components/tabs/tabs-vertical.d.ts +29 -0
  376. package/es-custom/components/tabs/tabs-vertical.d.ts.map +1 -0
  377. package/es-custom/components/tabs/tabs-vertical.js +113 -0
  378. package/es-custom/components/tabs/tabs-vertical.js.map +1 -0
  379. package/es-custom/components/tabs/tabs.d.ts +34 -4
  380. package/es-custom/components/tabs/tabs.d.ts.map +1 -1
  381. package/es-custom/components/tabs/tabs.js +86 -19
  382. package/es-custom/components/tabs/tabs.js.map +1 -1
  383. package/es-custom/components/tabs/tabs.scss.js +1 -1
  384. package/es-custom/components/tabs/tabs.scss.js.map +1 -1
  385. package/es-custom/components/tag/tag.scss.js +1 -1
  386. package/es-custom/components/tearsheet/tearsheet.d.ts +1 -1
  387. package/es-custom/components/tearsheet/tearsheet.js +1 -1
  388. package/es-custom/components/tearsheet/tearsheet.js.map +1 -1
  389. package/es-custom/components/text-input/text-input.scss.js +1 -1
  390. package/es-custom/components/textarea/textarea.scss.js +1 -1
  391. package/es-custom/components/tile/clickable-tile.d.ts +1 -1
  392. package/es-custom/components/tile/clickable-tile.d.ts.map +1 -1
  393. package/es-custom/components/tile/clickable-tile.js +6 -1
  394. package/es-custom/components/tile/clickable-tile.js.map +1 -1
  395. package/es-custom/components/tile/radio-tile.d.ts +4 -1
  396. package/es-custom/components/tile/radio-tile.d.ts.map +1 -1
  397. package/es-custom/components/tile/radio-tile.js +23 -6
  398. package/es-custom/components/tile/radio-tile.js.map +1 -1
  399. package/es-custom/components/tile/tile.scss.js +1 -1
  400. package/es-custom/components/tile/tile.scss.js.map +1 -1
  401. package/es-custom/components/time-picker/time-picker.scss.js +1 -1
  402. package/es-custom/components/toggle/toggle.scss.js +1 -1
  403. package/es-custom/components/toggle-tip/toggletip.scss.js +1 -1
  404. package/es-custom/components/tooltip/tooltip.scss.js +1 -1
  405. package/es-custom/components/tree-view/tree-view.scss.js +1 -1
  406. package/es-custom/components/ui-shell/header.scss.js +1 -1
  407. package/es-custom/components/ui-shell/side-nav.scss.js +1 -1
  408. package/es-custom/globals/decorators/carbon-element.js.map +1 -1
  409. package/es-custom/index.js +1 -1
  410. package/lib/components/button/button.d.ts +1 -1
  411. package/lib/components/button/button.d.ts.map +1 -1
  412. package/lib/components/dialog/dialog.d.ts +18 -7
  413. package/lib/components/dialog/dialog.d.ts.map +1 -1
  414. package/lib/components/feature-flags/index.d.ts.map +1 -1
  415. package/lib/components/file-uploader/file-uploader-button.d.ts.map +1 -1
  416. package/lib/components/file-uploader/file-uploader-drop-container.d.ts +1 -1
  417. package/lib/components/file-uploader/file-uploader-drop-container.d.ts.map +1 -1
  418. package/lib/components/file-uploader/file-uploader-item.d.ts +4 -0
  419. package/lib/components/file-uploader/file-uploader-item.d.ts.map +1 -1
  420. package/lib/components/link/link.d.ts +1 -1
  421. package/lib/components/link/link.d.ts.map +1 -1
  422. package/lib/components/menu/menu-item.d.ts.map +1 -1
  423. package/lib/components/modal/modal-base.d.ts +144 -0
  424. package/lib/components/modal/modal-base.d.ts.map +1 -0
  425. package/lib/components/modal/modal.d.ts +15 -89
  426. package/lib/components/modal/modal.d.ts.map +1 -1
  427. package/lib/components/multi-select/multi-select.d.ts +4 -0
  428. package/lib/components/multi-select/multi-select.d.ts.map +1 -1
  429. package/lib/components/overflow-menu/overflow-menu-item.d.ts.map +1 -1
  430. package/lib/components/page-header/index.d.ts +4 -0
  431. package/lib/components/page-header/index.d.ts.map +1 -1
  432. package/lib/components/page-header/page-header-breadcrumb.d.ts +7 -0
  433. package/lib/components/page-header/page-header-breadcrumb.d.ts.map +1 -1
  434. package/lib/components/page-header/page-header-content-text.d.ts +7 -0
  435. package/lib/components/page-header/page-header-content-text.d.ts.map +1 -1
  436. package/lib/components/page-header/page-header-content.d.ts +7 -0
  437. package/lib/components/page-header/page-header-content.d.ts.map +1 -1
  438. package/lib/components/page-header/page-header-hero-image.d.ts +7 -0
  439. package/lib/components/page-header/page-header-hero-image.d.ts.map +1 -1
  440. package/lib/components/page-header/page-header-tabs.d.ts +7 -0
  441. package/lib/components/page-header/page-header-tabs.d.ts.map +1 -1
  442. package/lib/components/page-header/page-header.d.ts +7 -0
  443. package/lib/components/page-header/page-header.d.ts.map +1 -1
  444. package/lib/components/search/search.d.ts +4 -0
  445. package/lib/components/search/search.d.ts.map +1 -1
  446. package/lib/components/side-panel/side-panel.d.ts +1 -1
  447. package/lib/components/tabs/defs.d.ts +26 -0
  448. package/lib/components/tabs/defs.d.ts.map +1 -1
  449. package/lib/components/tabs/defs.js +29 -0
  450. package/lib/components/tabs/defs.js.map +1 -1
  451. package/lib/components/tabs/index.d.ts +1 -0
  452. package/lib/components/tabs/index.d.ts.map +1 -1
  453. package/lib/components/tabs/stories/tabs-wrapper.d.ts +9 -0
  454. package/lib/components/tabs/stories/tabs-wrapper.d.ts.map +1 -1
  455. package/lib/components/tabs/tab.d.ts +60 -1
  456. package/lib/components/tabs/tab.d.ts.map +1 -1
  457. package/lib/components/tabs/tabs-vertical.d.ts +29 -0
  458. package/lib/components/tabs/tabs-vertical.d.ts.map +1 -0
  459. package/lib/components/tabs/tabs.d.ts +34 -4
  460. package/lib/components/tabs/tabs.d.ts.map +1 -1
  461. package/lib/components/tearsheet/tearsheet.d.ts +1 -1
  462. package/lib/components/tile/clickable-tile.d.ts +1 -1
  463. package/lib/components/tile/clickable-tile.d.ts.map +1 -1
  464. package/lib/components/tile/radio-tile.d.ts +4 -1
  465. package/lib/components/tile/radio-tile.d.ts.map +1 -1
  466. package/package.json +9 -9
  467. package/scss/components/date-picker/date-picker.scss +2 -1
  468. package/scss/components/dialog/dialog.scss +10 -4
  469. package/scss/components/file-uploader/file-uploader.scss +4 -0
  470. package/scss/components/modal/modal.scss +28 -1
  471. package/scss/components/page-header/page-header.scss +2 -0
  472. package/scss/components/tabs/tabs-story.scss +5 -0
  473. package/scss/components/tabs/tabs.scss +289 -6
  474. package/scss/components/tile/tile.scss +67 -1
  475. package/telemetry.yml +12 -6
@@ -9,12 +9,14 @@ import "../../globals/settings.js";
9
9
  import { carbonElement } from "../../globals/decorators/carbon-element.js";
10
10
  import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.126.0/helpers/decorate.js";
11
11
  import iconLoader from "../../globals/internal/icon-loader.js";
12
+ import HostListener from "../../globals/decorators/host-listener.js";
13
+ import HostListenerMixin from "../../globals/mixins/host-listener.js";
12
14
  import "../button/button.js";
13
15
  import content_switcher_item_default from "../content-switcher/content-switcher-item.js";
14
16
  import "./defs.js";
15
17
  import tabs_default from "./tabs.scss.js";
16
18
  import { html } from "lit";
17
- import { property, state } from "lit/decorators.js";
19
+ import { property, query, state } from "lit/decorators.js";
18
20
  import { classMap } from "lit/directives/class-map.js";
19
21
  import { ifDefined } from "lit/directives/if-defined.js";
20
22
  import Close16 from "@carbon/icons/es/close/16.js";
@@ -25,22 +27,55 @@ import Close16 from "@carbon/icons/es/close/16.js";
25
27
  * This source code is licensed under the Apache-2.0 license found in the
26
28
  * LICENSE file in the root directory of this source tree.
27
29
  */
28
- let CDSTab = class CDSTab extends content_switcher_item_default {
30
+ let CDSTab = class CDSTab extends HostListenerMixin(content_switcher_item_default) {
29
31
  constructor(..._args) {
30
32
  super(..._args);
31
33
  this.highlighted = false;
32
34
  this.type = "";
35
+ this.vertical = false;
33
36
  this.iconOnly = false;
34
37
  this.badgeIndicator = false;
38
+ this.truncated = false;
35
39
  this._dismissable = false;
36
40
  this._index = -1;
37
41
  }
38
42
  /**
43
+ * Checks if the text overflow ellipsis is currently applied to the label.
44
+ * This is useful for determining if a tooltip should be shown.
45
+ *
46
+ * @returns `true` if text is truncated/clamped, `false` otherwise or if not in vertical mode
47
+ */
48
+ isTextTruncated() {
49
+ if (!this.vertical || !this._labelElement) return false;
50
+ return this._labelElement.scrollHeight > this._labelElement.clientHeight;
51
+ }
52
+ /**
53
+ * Updates the truncated state after the component has rendered.
54
+ */
55
+ updated(changedProperties) {
56
+ super.updated(changedProperties);
57
+ if (this.vertical && this._labelElement) {
58
+ const isTruncated = this.isTextTruncated();
59
+ if (this.truncated !== isTruncated) this.truncated = isTruncated;
60
+ }
61
+ }
62
+ /**
39
63
  * Handles `slotchange` event.
40
64
  */
41
65
  _handleSlotChange({ target }) {
42
- const content = target.assignedNodes();
43
- this.tabTitle = content[0]?.textContent?.trim() || void 0;
66
+ const textContent = target.assignedNodes()[0]?.textContent;
67
+ this.tabTitle = textContent?.trim().replace(/\s+/g, " ") || void 0;
68
+ }
69
+ /**
70
+ * Handles `keydown` event on the tab.
71
+ * Triggers tab close when Delete key is pressed on a dismissable tab.
72
+ */
73
+ _handleKeydown(event) {
74
+ const { key } = event;
75
+ if (this._dismissable && !this.disabled && (key === "Delete" || key === "Backspace")) {
76
+ event.preventDefault();
77
+ this._handleClose(event);
78
+ }
44
79
  }
45
80
  connectedCallback() {
46
81
  if (!this.hasAttribute("role")) this.setAttribute("role", "listitem");
@@ -55,7 +90,7 @@ let CDSTab = class CDSTab extends content_switcher_item_default {
55
90
  [`cds--tabs__nav-item--close`]: this._dismissable,
56
91
  [`cds--tabs__nav-item--close--hidden`]: !this._dismissable
57
92
  });
58
- const { badgeIndicator, disabled, selected, tabTitle, _handleSlotChange: handleSlotChange, _handleClick: handleClick } = this;
93
+ const { badgeIndicator, disabled, secondaryLabel, selected, tabTitle, vertical, truncated, _handleSlotChange: handleSlotChange, _handleClick: handleClick } = this;
59
94
  const iconButton = html`
60
95
  <cds-button
61
96
  title="${this.textContent?.trim() ? `Remove ${this.textContent.trim()} tab` : "Remove tab"}"
@@ -82,9 +117,20 @@ let CDSTab = class CDSTab extends content_switcher_item_default {
82
117
  tabindex="${selected ? 0 : -1}"
83
118
  ?disabled="${disabled}"
84
119
  aria-selected="${selected}">
85
- <span class="${"cds"}--tabs__nav-item-label-wrapper">
86
- <slot @slotchange="${handleSlotChange}"></slot>
87
- </span>
120
+ ${vertical ? html`<span
121
+ class="${"cds"}--tabs__nav-item-label"
122
+ title="${truncated ? tabTitle.trim() : ""}">
123
+ <slot @slotchange="${handleSlotChange}"></slot>
124
+ </span>` : html`
125
+ <span class="${"cds"}--tabs__nav-item-label-wrapper">
126
+ <slot @slotchange="${handleSlotChange}"></slot>
127
+ </span>
128
+ `}
129
+ ${secondaryLabel ? html`<span
130
+ class="${"cds"}--tabs__nav-item-secondary-label"
131
+ title="${secondaryLabel}"
132
+ >${secondaryLabel}</span
133
+ >` : ""}
88
134
  ${!disabled && badgeIndicator ? html`<cds-badge-indicator></cds-badge-indicator>` : ""}
89
135
  </a>
90
136
  ${iconButton}
@@ -97,7 +143,11 @@ let CDSTab = class CDSTab extends content_switcher_item_default {
97
143
  `;
98
144
  return tabLink;
99
145
  }
100
- _handleClick(event) {
146
+ /**
147
+ * Handles the close action for the tab.
148
+ * Dispatches before-close and close events.
149
+ */
150
+ _handleClose(event) {
101
151
  event.stopPropagation();
102
152
  const init = {
103
153
  bubbles: true,
@@ -108,6 +158,12 @@ let CDSTab = class CDSTab extends content_switcher_item_default {
108
158
  if (this.dispatchEvent(new CustomEvent(this.constructor.eventBeforeClose, init))) this.dispatchEvent(new CustomEvent(this.constructor.eventClose, init));
109
159
  }
110
160
  /**
161
+ * Handles click event on the close button.
162
+ */
163
+ _handleClick(event) {
164
+ this._handleClose(event);
165
+ }
166
+ /**
111
167
  * The name of the custom event fired before a tab is closed upon a user gesture.
112
168
  * Cancellation of this event stops changing the user-initiated action.
113
169
  */
@@ -129,6 +185,10 @@ __decorate([property({
129
185
  reflect: true
130
186
  })], CDSTab.prototype, "highlighted", void 0);
131
187
  __decorate([property({ reflect: true })], CDSTab.prototype, "type", void 0);
188
+ __decorate([property({
189
+ type: Boolean,
190
+ reflect: true
191
+ })], CDSTab.prototype, "vertical", void 0);
132
192
  __decorate([property({
133
193
  type: Boolean,
134
194
  reflect: true,
@@ -139,13 +199,20 @@ __decorate([property({
139
199
  reflect: true
140
200
  })], CDSTab.prototype, "iconSize", void 0);
141
201
  __decorate([property()], CDSTab.prototype, "tabTitle", void 0);
202
+ __decorate([property({
203
+ attribute: "secondary-label",
204
+ reflect: true
205
+ })], CDSTab.prototype, "secondaryLabel", void 0);
142
206
  __decorate([property({
143
207
  type: Boolean,
144
208
  reflect: true,
145
209
  attribute: "badge-indicator"
146
210
  })], CDSTab.prototype, "badgeIndicator", void 0);
211
+ __decorate([state()], CDSTab.prototype, "truncated", void 0);
147
212
  __decorate([state()], CDSTab.prototype, "_dismissable", void 0);
148
213
  __decorate([state()], CDSTab.prototype, "_index", void 0);
214
+ __decorate([query(`.cds--tabs__nav-item-label`)], CDSTab.prototype, "_labelElement", void 0);
215
+ __decorate([HostListener("keydown")], CDSTab.prototype, "_handleKeydown", null);
149
216
  CDSTab = __decorate([carbonElement(`cds-tab`)], CDSTab);
150
217
  var tab_default = CDSTab;
151
218
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"tab.js","names":["CDSContentSwitcherItem","styles","customElement"],"sources":["../../../src/components/tabs/tab.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2019, 2026\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 { html } from 'lit';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { property, state } from 'lit/decorators.js';\nimport { prefix } from '../../globals/settings';\nimport CDSContentSwitcherItem from '../content-switcher/content-switcher-item';\nimport { TABS_ICON_SIZE, TABS_TYPE } from './defs';\nimport styles from './tabs.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport '../button/button';\nimport Close16 from '@carbon/icons/es/close/16.js';\nimport iconLoader from '../../globals/internal/icon-loader';\nimport { classMap } from 'lit/directives/class-map.js';\n\n/**\n * Basic tab.\n *\n * @element cds-tab\n * @fires cds-tab-beingclosed\n * The custom event fired before a tab is closed upon a user gesture.\n * Cancellation of this event stops changing the user-initiated action.\n * @fires cds-tab-closed - The custom event fired after a a tab is closed upon a user gesture.\n */\n@customElement(`${prefix}-tab`)\nexport default class CDSTab extends CDSContentSwitcherItem {\n /**\n * `true` if this tab should be highlighted.\n * If `true`, parent `<cds-tabs>` selects/deselects this tab upon keyboard interaction.\n *\n * @private\n */\n @property({ type: Boolean, reflect: true })\n highlighted = false;\n\n /**\n * Tab type.\n */\n @property({ reflect: true })\n type = TABS_TYPE.REGULAR;\n\n /**\n * `true` if this tab is icon-only.\n */\n @property({ type: Boolean, reflect: true, attribute: 'icon-only' })\n iconOnly = false;\n\n /**\n * Specify the icon size used by icon-only tabs.\n */\n @property({ attribute: 'icon-size', reflect: true })\n iconSize?: TABS_ICON_SIZE;\n\n /**\n * The tab text content.\n */\n @property()\n tabTitle;\n\n /**\n * **Experimental**: Display an empty dot badge on the Tab.\n */\n @property({ type: Boolean, reflect: true, attribute: 'badge-indicator' })\n badgeIndicator = false;\n\n /**\n * Whether this tab should be dismissable.\n */\n @state()\n _dismissable = false;\n\n /**\n * The index of the tab component\n */\n @state()\n _index = -1;\n\n /**\n * Handles `slotchange` event.\n */\n protected _handleSlotChange({ target }: Event) {\n // Retrieve content of the slot to use for aria-label.\n const content = (target as HTMLSlotElement).assignedNodes();\n this.tabTitle = content[0]?.textContent?.trim() || undefined;\n }\n\n connectedCallback() {\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'listitem');\n }\n super.connectedCallback();\n }\n\n render() {\n const navLinkClasses = classMap({\n [`${prefix}--tabs__nav-link`]: true,\n [`${prefix}--tabs__nav-link--dismissable`]: this._dismissable,\n });\n const closeButtonClasses = classMap({\n [`${prefix}--tabs__nav-item--close`]: this._dismissable,\n [`${prefix}--tabs__nav-item--close--hidden`]: !this._dismissable,\n });\n const {\n badgeIndicator,\n disabled,\n selected,\n tabTitle,\n _handleSlotChange: handleSlotChange,\n _handleClick: handleClick,\n } = this;\n\n const iconButton = html`\n <cds-button\n title=\"${this.textContent?.trim()\n ? `Remove ${this.textContent.trim()} tab`\n : 'Remove tab'}\"\n class=\"${closeButtonClasses}\"\n kind=\"ghost\"\n size=\"xs\"\n @click=\"${handleClick}\"\n tab-index=\"${-1}\"\n aria-hidden=\"${this.selected && this._dismissable ? 'false' : 'true'}\"\n ?disabled=\"${disabled}\">\n ${iconLoader(Close16, { 'aria-label': 'close', slot: 'icon' })}\n </cds-button>\n `;\n\n const accessibleLabel = tabTitle || this.getAttribute('aria-label');\n const isIconOnly =\n this.iconOnly ||\n this.classList.contains(`${prefix}--tabs__nav-item--icon-only`);\n // No `href`/`tabindex` to not to make this `<a>` click-focusable\n const tabLink = html`\n <a\n class=\"${navLinkClasses}\"\n role=\"tab\"\n aria-label=\"${ifDefined(accessibleLabel || undefined)}\"\n tabindex=\"${selected ? 0 : -1}\"\n ?disabled=\"${disabled}\"\n aria-selected=\"${selected}\">\n <span class=\"${prefix}--tabs__nav-item-label-wrapper\">\n <slot @slotchange=\"${handleSlotChange}\"></slot>\n </span>\n ${!disabled && badgeIndicator\n ? html`<cds-badge-indicator></cds-badge-indicator>`\n : ''}\n </a>\n ${iconButton}\n `;\n\n if (isIconOnly && accessibleLabel && !disabled) {\n return html`\n <cds-tooltip align=\"bottom\" class=\"${prefix}--icon-tooltip\">\n ${tabLink}\n <cds-tooltip-content>${accessibleLabel}</cds-tooltip-content>\n </cds-tooltip>\n `;\n }\n\n return tabLink;\n }\n\n _handleClick(event: Event) {\n event.stopPropagation();\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n index: this._index,\n },\n };\n if (\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSTab).eventBeforeClose,\n init\n )\n )\n ) {\n this.dispatchEvent(\n new CustomEvent((this.constructor as typeof CDSTab).eventClose, init)\n );\n }\n }\n\n /**\n * The name of the custom event fired before a tab is closed upon a user gesture.\n * Cancellation of this event stops changing the user-initiated action.\n */\n static get eventBeforeClose() {\n return `${prefix}-tab-beingclosed`;\n }\n\n /**\n * The name of the custom event fired after a a tab is closed upon a user gesture.\n */\n static get eventClose() {\n return `${prefix}-tab-closed`;\n }\n\n static styles = styles;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA8Be,IAAA,SAAA,MAAM,eAAeA,8BAAuB;;;qBAQ3C;;kBAYH;wBAkBM;sBAMF;gBAMN;;;;;CAKT,kBAA4B,EAAE,UAAiB;EAE7C,MAAM,UAAW,OAA2B,eAAe;AAC3D,OAAK,WAAW,QAAQ,IAAI,aAAa,MAAM,IAAI,KAAA;;CAGrD,oBAAoB;AAClB,MAAI,CAAC,KAAK,aAAa,OAAO,CAC5B,MAAK,aAAa,QAAQ,WAAW;AAEvC,QAAM,mBAAmB;;CAG3B,SAAS;EACP,MAAM,iBAAiB,SAAS;IAC7B,wBAA8B;IAC9B,qCAA2C,KAAK;GAClD,CAAC;EACF,MAAM,qBAAqB,SAAS;IACjC,+BAAqC,KAAK;IAC1C,uCAA6C,CAAC,KAAK;GACrD,CAAC;EACF,MAAM,EACJ,gBACA,UACA,UACA,UACA,mBAAmB,kBACnB,cAAc,gBACZ;EAEJ,MAAM,aAAa,IAAI;;iBAEV,KAAK,aAAa,MAAM,GAC7B,UAAU,KAAK,YAAY,MAAM,CAAC,QAClC,aAAa;iBACR,mBAAmB;;;kBAGlB,YAAY;qBACT,GAAG;uBACD,KAAK,YAAY,KAAK,eAAe,UAAU,OAAO;qBACxD,SAAS;UACpB,WAAW,SAAS;GAAE,cAAc;GAAS,MAAM;GAAQ,CAAC,CAAC;;;EAInE,MAAM,kBAAkB,YAAY,KAAK,aAAa,aAAa;EACnE,MAAM,aACJ,KAAK,YACL,KAAK,UAAU,SAAS,iCAAuC;EAEjE,MAAM,UAAU,IAAI;;iBAEP,eAAe;;sBAEV,UAAU,mBAAmB,KAAA,EAAU,CAAC;oBAC1C,WAAW,IAAI,GAAG;qBACjB,SAAS;yBACL,SAAS;6BACJ;+BACC,iBAAiB;;UAEtC,CAAC,YAAY,iBACX,IAAI,gDACJ,GAAG;;QAEP,WAAW;;AAGf,MAAI,cAAc,mBAAmB,CAAC,SACpC,QAAO,IAAI;mDACmC;YACxC,QAAQ;iCACa,gBAAgB;;;AAK7C,SAAO;;CAGT,aAAa,OAAc;AACzB,QAAM,iBAAiB;EACvB,MAAM,OAAO;GACX,SAAS;GACT,YAAY;GACZ,UAAU;GACV,QAAQ,EACN,OAAO,KAAK,QACb;GACF;AACD,MACE,KAAK,cACH,IAAI,YACD,KAAK,YAA8B,kBACpC,KACD,CACF,CAED,MAAK,cACH,IAAI,YAAa,KAAK,YAA8B,YAAY,KAAK,CACtE;;;;;;CAQL,WAAW,mBAAmB;AAC5B,SAAO;;;;;CAMT,WAAW,aAAa;AACtB,SAAO;;;gBAGOC;;;YAzKf,SAAS;CAAE,MAAM;CAAS,SAAS;CAAM,CAAC,CAAA,EAAA,OAAA,WAAA,eAAA,KAAA,EAAA;YAM1C,SAAS,EAAE,SAAS,MAAM,CAAC,CAAA,EAAA,OAAA,WAAA,QAAA,KAAA,EAAA;YAM3B,SAAS;CAAE,MAAM;CAAS,SAAS;CAAM,WAAW;CAAa,CAAC,CAAA,EAAA,OAAA,WAAA,YAAA,KAAA,EAAA;YAMlE,SAAS;CAAE,WAAW;CAAa,SAAS;CAAM,CAAC,CAAA,EAAA,OAAA,WAAA,YAAA,KAAA,EAAA;YAMnD,UAAU,CAAA,EAAA,OAAA,WAAA,YAAA,KAAA,EAAA;YAMV,SAAS;CAAE,MAAM;CAAS,SAAS;CAAM,WAAW;CAAmB,CAAC,CAAA,EAAA,OAAA,WAAA,kBAAA,KAAA,EAAA;YAMxE,OAAO,CAAA,EAAA,OAAA,WAAA,gBAAA,KAAA,EAAA;YAMP,OAAO,CAAA,EAAA,OAAA,WAAA,UAAA,KAAA,EAAA;qBAlDTC,cAAc,UAAgB,CAAA,EAAA,OAAA"}
1
+ {"version":3,"file":"tab.js","names":["CDSContentSwitcherItem","styles","customElement"],"sources":["../../../src/components/tabs/tab.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2019, 2026\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 { html } from 'lit';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { property, state, query } from 'lit/decorators.js';\nimport { prefix } from '../../globals/settings';\nimport CDSContentSwitcherItem from '../content-switcher/content-switcher-item';\nimport { TABS_ICON_SIZE, TABS_TYPE } from './defs';\nimport styles from './tabs.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport HostListener from '../../globals/decorators/host-listener';\nimport '../button/button';\nimport Close16 from '@carbon/icons/es/close/16.js';\nimport iconLoader from '../../globals/internal/icon-loader';\nimport { classMap } from 'lit/directives/class-map.js';\n\n/**\n * Basic tab.\n *\n * @element cds-tab\n * @fires cds-tab-beingclosed\n * The custom event fired before a tab is closed upon a user gesture.\n * Cancellation of this event stops changing the user-initiated action.\n * @fires cds-tab-closed - The custom event fired after a a tab is closed upon a user gesture.\n */\n@customElement(`${prefix}-tab`)\nexport default class CDSTab extends HostListenerMixin(CDSContentSwitcherItem) {\n /**\n * `true` if this tab should be highlighted.\n * If `true`, parent `<cds-tabs>` selects/deselects this tab upon keyboard interaction.\n *\n * @private\n */\n @property({ type: Boolean, reflect: true })\n highlighted = false;\n\n /**\n * Tab type.\n */\n @property({ reflect: true })\n type = TABS_TYPE.REGULAR;\n\n /**\n * `true` if the tab is in vertical orientation.\n * This is automatically set by the parent `<cds-tabs>` when it's in vertical mode.\n */\n @property({ type: Boolean, reflect: true })\n vertical = false;\n\n /**\n * `true` if this tab is icon-only.\n */\n @property({ type: Boolean, reflect: true, attribute: 'icon-only' })\n iconOnly = false;\n\n /**\n * Specify the icon size used by icon-only tabs.\n */\n @property({ attribute: 'icon-size', reflect: true })\n iconSize?: TABS_ICON_SIZE;\n\n /**\n * The tab text content.\n */\n @property()\n tabTitle;\n\n /**\n * An optional label to render under the primary tab label.\n * Only useful for contained tabs.\n */\n @property({ attribute: 'secondary-label', reflect: true })\n secondaryLabel?: string;\n\n /**\n * **Experimental**: Display an empty dot badge on the Tab.\n */\n @property({ type: Boolean, reflect: true, attribute: 'badge-indicator' })\n badgeIndicator = false;\n\n /**\n * `true` if the tab text is truncated with ellipsis.\n * This state is automatically updated when the component renders in vertical mode.\n */\n @state()\n truncated = false;\n\n /**\n * Whether this tab should be dismissable.\n */\n @state()\n _dismissable = false;\n\n /**\n * The index of the tab component\n */\n @state()\n _index = -1;\n\n /**\n * Reference to the label span element (only present in vertical mode).\n * @private\n */\n @query(`.${prefix}--tabs__nav-item-label`)\n private _labelElement?: HTMLElement;\n\n /**\n * Checks if the text overflow ellipsis is currently applied to the label.\n * This is useful for determining if a tooltip should be shown.\n *\n * @returns `true` if text is truncated/clamped, `false` otherwise or if not in vertical mode\n */\n isTextTruncated(): boolean {\n if (!this.vertical || !this._labelElement) {\n return false;\n }\n\n // Compare scrollHeight with clientHeight to detect if content is overflowing\n // When line-clamp is active and text exceeds 2 lines, scrollHeight > clientHeight\n return this._labelElement.scrollHeight > this._labelElement.clientHeight;\n }\n\n /**\n * Updates the truncated state after the component has rendered.\n */\n updated(changedProperties: Map<PropertyKey, unknown>) {\n super.updated(changedProperties);\n\n // Check if text is truncated and update state when in vertical mode\n if (this.vertical && this._labelElement) {\n const isTruncated = this.isTextTruncated();\n if (this.truncated !== isTruncated) {\n this.truncated = isTruncated;\n }\n }\n }\n\n /**\n * Handles `slotchange` event.\n */\n protected _handleSlotChange({ target }: Event) {\n // Retrieve content of the slot to use for aria-label.\n const content = (target as HTMLSlotElement).assignedNodes();\n const textContent = content[0]?.textContent;\n // Normalize whitespace: trim and replace multiple spaces with single space\n this.tabTitle = textContent?.trim().replace(/\\s+/g, ' ') || undefined;\n }\n\n /**\n * Handles `keydown` event on the tab.\n * Triggers tab close when Delete key is pressed on a dismissable tab.\n */\n @HostListener('keydown')\n protected _handleKeydown(event: KeyboardEvent) {\n const { key } = event;\n if (\n this._dismissable &&\n !this.disabled &&\n (key === 'Delete' || key === 'Backspace')\n ) {\n event.preventDefault();\n this._handleClose(event);\n }\n }\n\n connectedCallback() {\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'listitem');\n }\n super.connectedCallback();\n }\n\n render() {\n const navLinkClasses = classMap({\n [`${prefix}--tabs__nav-link`]: true,\n [`${prefix}--tabs__nav-link--dismissable`]: this._dismissable,\n });\n const closeButtonClasses = classMap({\n [`${prefix}--tabs__nav-item--close`]: this._dismissable,\n [`${prefix}--tabs__nav-item--close--hidden`]: !this._dismissable,\n });\n const {\n badgeIndicator,\n disabled,\n secondaryLabel,\n selected,\n tabTitle,\n vertical,\n truncated,\n _handleSlotChange: handleSlotChange,\n _handleClick: handleClick,\n } = this;\n\n const iconButton = html`\n <cds-button\n title=\"${this.textContent?.trim()\n ? `Remove ${this.textContent.trim()} tab`\n : 'Remove tab'}\"\n class=\"${closeButtonClasses}\"\n kind=\"ghost\"\n size=\"xs\"\n @click=\"${handleClick}\"\n tab-index=\"${-1}\"\n aria-hidden=\"${this.selected && this._dismissable ? 'false' : 'true'}\"\n ?disabled=\"${disabled}\">\n ${iconLoader(Close16, { 'aria-label': 'close', slot: 'icon' })}\n </cds-button>\n `;\n\n const accessibleLabel = tabTitle || this.getAttribute('aria-label');\n const isIconOnly =\n this.iconOnly ||\n this.classList.contains(`${prefix}--tabs__nav-item--icon-only`);\n // No `href`/`tabindex` to not to make this `<a>` click-focusable\n const tabLink = html`\n <a\n class=\"${navLinkClasses}\"\n role=\"tab\"\n aria-label=\"${ifDefined(accessibleLabel || undefined)}\"\n tabindex=\"${selected ? 0 : -1}\"\n ?disabled=\"${disabled}\"\n aria-selected=\"${selected}\">\n ${vertical\n ? html`<span\n class=\"${prefix}--tabs__nav-item-label\"\n title=\"${truncated ? tabTitle.trim() : ''}\">\n <slot @slotchange=\"${handleSlotChange}\"></slot>\n </span>`\n : html`\n <span class=\"${prefix}--tabs__nav-item-label-wrapper\">\n <slot @slotchange=\"${handleSlotChange}\"></slot>\n </span>\n `}\n ${secondaryLabel\n ? html`<span\n class=\"${prefix}--tabs__nav-item-secondary-label\"\n title=\"${secondaryLabel}\"\n >${secondaryLabel}</span\n >`\n : ''}\n ${!disabled && badgeIndicator\n ? html`<cds-badge-indicator></cds-badge-indicator>`\n : ''}\n </a>\n ${iconButton}\n `;\n\n if (isIconOnly && accessibleLabel && !disabled) {\n return html`\n <cds-tooltip align=\"bottom\" class=\"${prefix}--icon-tooltip\">\n ${tabLink}\n <cds-tooltip-content>${accessibleLabel}</cds-tooltip-content>\n </cds-tooltip>\n `;\n }\n\n return tabLink;\n }\n\n /**\n * Handles the close action for the tab.\n * Dispatches before-close and close events.\n */\n protected _handleClose(event: Event) {\n event.stopPropagation();\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n index: this._index,\n },\n };\n if (\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSTab).eventBeforeClose,\n init\n )\n )\n ) {\n this.dispatchEvent(\n new CustomEvent((this.constructor as typeof CDSTab).eventClose, init)\n );\n }\n }\n\n /**\n * Handles click event on the close button.\n */\n _handleClick(event: Event) {\n this._handleClose(event);\n }\n\n /**\n * The name of the custom event fired before a tab is closed upon a user gesture.\n * Cancellation of this event stops changing the user-initiated action.\n */\n static get eventBeforeClose() {\n return `${prefix}-tab-beingclosed`;\n }\n\n /**\n * The name of the custom event fired after a a tab is closed upon a user gesture.\n */\n static get eventClose() {\n return `${prefix}-tab-closed`;\n }\n\n static styles = styles;\n}\n"],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Copyright IBM Corp. 2019, 2026
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import { LitElement } from 'lit';
8
+ /**
9
+ * Vertical tabs container component.
10
+ *
11
+ * @element cds-tabs-vertical
12
+ * @slot tabs - The `<cds-tabs>` navigation element.
13
+ * @slot panel - One or more `<div role="tabpanel">` elements.
14
+ */
15
+ export default class CDSTabsVertical extends LitElement {
16
+ /**
17
+ * Option to set a height style only if using vertical variation.
18
+ */
19
+ customHeight?: string;
20
+ private _mediaQueryList;
21
+ private _handleViewportChange;
22
+ firstUpdated(): void;
23
+ updated(changedProperties: any): void;
24
+ disconnectedCallback(): void;
25
+ private _applyHeight;
26
+ render(): import("lit-html").TemplateResult<1>;
27
+ static styles: any;
28
+ }
29
+ //# sourceMappingURL=tabs-vertical.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs-vertical.d.ts","sourceRoot":"","sources":["../../../src/components/tabs/tabs-vertical.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AAevC;;;;;;GAMG;AAEH,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,UAAU;IACrD;;OAEG;IAEH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,OAAO,CAAC,eAAe,CAA+B;IAEtD,OAAO,CAAC,qBAAqB,CAe3B;IAEF,YAAY;IAeZ,OAAO,CAAC,iBAAiB,KAAA;IAOzB,oBAAoB;IASpB,OAAO,CAAC,YAAY;IA2CpB,MAAM;IASN,MAAM,CAAC,MAAM,MAAU;CACxB"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Copyright IBM Corp. 2026
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import "../../globals/settings.js";
9
+ import { carbonElement } from "../../globals/decorators/carbon-element.js";
10
+ import { __decorate } from "../../_virtual/_@oxc-project_runtime@0.126.0/helpers/decorate.js";
11
+ import tabs_default from "./tabs.scss.js";
12
+ import { LitElement, html } from "lit";
13
+ import { property } from "lit/decorators.js";
14
+ import { breakpoints } from "@carbon/layout";
15
+ //#region src/components/tabs/tabs-vertical.ts
16
+ /**
17
+ * Copyright IBM Corp. 2019, 2026
18
+ *
19
+ * This source code is licensed under the Apache-2.0 license found in the
20
+ * LICENSE file in the root directory of this source tree.
21
+ */
22
+ /**
23
+ * Breakpoint for switching between horizontal and vertical tab layouts.
24
+ * Uses Carbon's md breakpoint (42rem/672px) + 0.01rem offset to avoid overlap
25
+ * with max-width queries. This mirrors the Sass breakpoint behavior.
26
+ * Below this breakpoint, tabs display horizontally.
27
+ */
28
+ const VERTICAL_TABS_BREAKPOINT = `(min-width: calc(${breakpoints.md.width} + 0.01rem))`;
29
+ let CDSTabsVertical = class CDSTabsVertical extends LitElement {
30
+ constructor(..._args) {
31
+ super(..._args);
32
+ this._mediaQueryList = null;
33
+ this._handleViewportChange = (e) => {
34
+ const tabs = this.querySelector(`cds-tabs`);
35
+ if (e.matches) {
36
+ this.classList.add(`cds--css-grid`);
37
+ if (tabs) {
38
+ tabs.setAttribute("vertical", "");
39
+ tabs.removeAttribute("type");
40
+ }
41
+ } else {
42
+ this.classList.remove(`cds--css-grid`);
43
+ if (tabs) {
44
+ tabs.removeAttribute("vertical");
45
+ tabs.setAttribute("type", "contained");
46
+ }
47
+ }
48
+ };
49
+ }
50
+ firstUpdated() {
51
+ this._mediaQueryList = window.matchMedia(VERTICAL_TABS_BREAKPOINT);
52
+ this._handleViewportChange(this._mediaQueryList);
53
+ this._mediaQueryList.addEventListener("change", this._handleViewportChange);
54
+ requestAnimationFrame(() => {
55
+ this._applyHeight();
56
+ });
57
+ (this.shadowRoot?.querySelector("slot[name=\"panel\"]"))?.addEventListener("slotchange", () => {
58
+ this._applyHeight();
59
+ });
60
+ }
61
+ updated(changedProperties) {
62
+ super.updated?.(changedProperties);
63
+ if (changedProperties.has("customHeight")) this._applyHeight();
64
+ }
65
+ disconnectedCallback() {
66
+ super.disconnectedCallback();
67
+ this._mediaQueryList?.removeEventListener("change", this._handleViewportChange);
68
+ this._mediaQueryList = null;
69
+ }
70
+ _applyHeight() {
71
+ const isVertical = this.classList.contains(`cds--css-grid`);
72
+ if (this.customHeight) {
73
+ this.style.height = this.customHeight;
74
+ return;
75
+ }
76
+ if (!isVertical) {
77
+ this.style.removeProperty("height");
78
+ return;
79
+ }
80
+ const panels = Array.from(this.querySelectorAll("[slot=\"panel\"]"));
81
+ if (panels.length === 0) return;
82
+ const hiddenStates = panels.map((panel) => panel.hidden);
83
+ panels.forEach((panel) => {
84
+ panel.hidden = false;
85
+ });
86
+ const tallestPanel = Math.max(...panels.map((panel) => panel.offsetHeight));
87
+ panels.forEach((panel, index) => {
88
+ panel.hidden = hiddenStates[index];
89
+ });
90
+ const tabsHeight = this.querySelector(`cds-tabs`)?.offsetHeight ?? 0;
91
+ const height = Math.max(tallestPanel, tabsHeight);
92
+ if (height > 0) this.style.height = `${height}px`;
93
+ else this.style.removeProperty("height");
94
+ }
95
+ render() {
96
+ return html`
97
+ <slot name="tabs"></slot>
98
+ <div class="${"cds"}-panel-container">
99
+ <slot name="panel"></slot>
100
+ </div>
101
+ `;
102
+ }
103
+ static {
104
+ this.styles = tabs_default;
105
+ }
106
+ };
107
+ __decorate([property({ attribute: "custom-height" })], CDSTabsVertical.prototype, "customHeight", void 0);
108
+ CDSTabsVertical = __decorate([carbonElement(`cds-tabs-vertical`)], CDSTabsVertical);
109
+ var tabs_vertical_default = CDSTabsVertical;
110
+ //#endregion
111
+ export { tabs_vertical_default as default };
112
+
113
+ //# sourceMappingURL=tabs-vertical.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs-vertical.js","names":["styles","customElement"],"sources":["../../../src/components/tabs/tabs-vertical.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2019, 2026\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 } from 'lit/decorators.js';\nimport { breakpoints } from '@carbon/layout';\nimport { prefix } from '../../globals/settings';\nimport styles from './tabs.scss?lit';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\n/**\n * Breakpoint for switching between horizontal and vertical tab layouts.\n * Uses Carbon's md breakpoint (42rem/672px) + 0.01rem offset to avoid overlap\n * with max-width queries. This mirrors the Sass breakpoint behavior.\n * Below this breakpoint, tabs display horizontally.\n */\nconst VERTICAL_TABS_BREAKPOINT = `(min-width: calc(${breakpoints.md.width} + 0.01rem))`;\n\n/**\n * Vertical tabs container component.\n *\n * @element cds-tabs-vertical\n * @slot tabs - The `<cds-tabs>` navigation element.\n * @slot panel - One or more `<div role=\"tabpanel\">` elements.\n */\n@customElement(`${prefix}-tabs-vertical`)\nexport default class CDSTabsVertical extends LitElement {\n /**\n * Option to set a height style only if using vertical variation.\n */\n @property({ attribute: 'custom-height' })\n customHeight?: string;\n\n private _mediaQueryList: MediaQueryList | null = null;\n\n private _handleViewportChange = (e: MediaQueryListEvent | MediaQueryList) => {\n const tabs = this.querySelector(`${prefix}-tabs`);\n if (e.matches) {\n this.classList.add(`${prefix}--css-grid`);\n if (tabs) {\n tabs.setAttribute('vertical', '');\n tabs.removeAttribute('type');\n }\n } else {\n this.classList.remove(`${prefix}--css-grid`);\n if (tabs) {\n tabs.removeAttribute('vertical');\n tabs.setAttribute('type', 'contained');\n }\n }\n };\n\n firstUpdated() {\n this._mediaQueryList = window.matchMedia(VERTICAL_TABS_BREAKPOINT);\n this._handleViewportChange(this._mediaQueryList);\n this._mediaQueryList.addEventListener('change', this._handleViewportChange);\n\n requestAnimationFrame(() => {\n this._applyHeight();\n });\n\n const panelSlot = this.shadowRoot?.querySelector('slot[name=\"panel\"]');\n panelSlot?.addEventListener('slotchange', () => {\n this._applyHeight();\n });\n }\n\n updated(changedProperties) {\n super.updated?.(changedProperties);\n if (changedProperties.has('customHeight')) {\n this._applyHeight();\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this._mediaQueryList?.removeEventListener(\n 'change',\n this._handleViewportChange\n );\n this._mediaQueryList = null;\n }\n\n private _applyHeight() {\n const isVertical = this.classList.contains(`${prefix}--css-grid`);\n\n if (this.customHeight) {\n this.style.height = this.customHeight;\n return;\n }\n\n if (!isVertical) {\n this.style.removeProperty('height');\n return;\n }\n\n const panels = Array.from(\n this.querySelectorAll<HTMLElement>('[slot=\"panel\"]')\n );\n\n if (panels.length === 0) {\n return;\n }\n\n const hiddenStates = panels.map((panel) => panel.hidden);\n panels.forEach((panel) => {\n panel.hidden = false;\n });\n\n const tallestPanel = Math.max(...panels.map((panel) => panel.offsetHeight));\n\n panels.forEach((panel, index) => {\n panel.hidden = hiddenStates[index];\n });\n\n const tabsEl = this.querySelector<HTMLElement>(`${prefix}-tabs`);\n const tabsHeight = tabsEl?.offsetHeight ?? 0;\n\n const height = Math.max(tallestPanel, tabsHeight);\n if (height > 0) {\n this.style.height = `${height}px`;\n } else {\n this.style.removeProperty('height');\n }\n }\n\n render() {\n return html`\n <slot name=\"tabs\"></slot>\n <div class=\"${prefix}-panel-container\">\n <slot name=\"panel\"></slot>\n </div>\n `;\n }\n\n static styles = styles;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBA,MAAM,2BAA2B,oBAAoB,YAAY,GAAG,MAAM;AAU3D,IAAA,kBAAA,MAAM,wBAAwB,WAAW;;;yBAOL;gCAEhB,MAA4C;GAC3E,MAAM,OAAO,KAAK,cAAc,WAAiB;AACjD,OAAI,EAAE,SAAS;AACb,SAAK,UAAU,IAAI,gBAAsB;AACzC,QAAI,MAAM;AACR,UAAK,aAAa,YAAY,GAAG;AACjC,UAAK,gBAAgB,OAAO;;UAEzB;AACL,SAAK,UAAU,OAAO,gBAAsB;AAC5C,QAAI,MAAM;AACR,UAAK,gBAAgB,WAAW;AAChC,UAAK,aAAa,QAAQ,YAAY;;;;;CAK5C,eAAe;AACb,OAAK,kBAAkB,OAAO,WAAW,yBAAyB;AAClE,OAAK,sBAAsB,KAAK,gBAAgB;AAChD,OAAK,gBAAgB,iBAAiB,UAAU,KAAK,sBAAsB;AAE3E,8BAA4B;AAC1B,QAAK,cAAc;IACnB;AAGF,GADkB,KAAK,YAAY,cAAc,uBAAqB,GAC3D,iBAAiB,oBAAoB;AAC9C,QAAK,cAAc;IACnB;;CAGJ,QAAQ,mBAAmB;AACzB,QAAM,UAAU,kBAAkB;AAClC,MAAI,kBAAkB,IAAI,eAAe,CACvC,MAAK,cAAc;;CAIvB,uBAAuB;AACrB,QAAM,sBAAsB;AAC5B,OAAK,iBAAiB,oBACpB,UACA,KAAK,sBACN;AACD,OAAK,kBAAkB;;CAGzB,eAAuB;EACrB,MAAM,aAAa,KAAK,UAAU,SAAS,gBAAsB;AAEjE,MAAI,KAAK,cAAc;AACrB,QAAK,MAAM,SAAS,KAAK;AACzB;;AAGF,MAAI,CAAC,YAAY;AACf,QAAK,MAAM,eAAe,SAAS;AACnC;;EAGF,MAAM,SAAS,MAAM,KACnB,KAAK,iBAA8B,mBAAiB,CACrD;AAED,MAAI,OAAO,WAAW,EACpB;EAGF,MAAM,eAAe,OAAO,KAAK,UAAU,MAAM,OAAO;AACxD,SAAO,SAAS,UAAU;AACxB,SAAM,SAAS;IACf;EAEF,MAAM,eAAe,KAAK,IAAI,GAAG,OAAO,KAAK,UAAU,MAAM,aAAa,CAAC;AAE3E,SAAO,SAAS,OAAO,UAAU;AAC/B,SAAM,SAAS,aAAa;IAC5B;EAGF,MAAM,aADS,KAAK,cAA2B,WAAiB,EACrC,gBAAgB;EAE3C,MAAM,SAAS,KAAK,IAAI,cAAc,WAAW;AACjD,MAAI,SAAS,EACX,MAAK,MAAM,SAAS,GAAG,OAAO;MAE9B,MAAK,MAAM,eAAe,SAAS;;CAIvC,SAAS;AACP,SAAO,IAAI;;0BAEY;;;;;;gBAMTA;;;YAzGf,SAAS,EAAE,WAAW,iBAAiB,CAAC,CAAA,EAAA,gBAAA,WAAA,gBAAA,KAAA,EAAA;8BAL1CC,cAAc,oBAA0B,CAAA,EAAA,gBAAA"}
@@ -6,9 +6,9 @@
6
6
  */
7
7
  import { TemplateResult } from 'lit';
8
8
  import CDSContentSwitcher, { NAVIGATION_DIRECTION } from '../content-switcher/content-switcher';
9
- import { TABS_ICON_SIZE, TABS_KEYBOARD_ACTION, TABS_TYPE } from './defs';
9
+ import { VERTICAL_NAVIGATION_DIRECTION, TABS_ICON_SIZE, TABS_KEYBOARD_ACTION, TABS_TYPE, TABS_SIZE } from './defs';
10
10
  import CDSTab from './tab';
11
- export { NAVIGATION_DIRECTION, TABS_ICON_SIZE, TABS_KEYBOARD_ACTION, TABS_TYPE, };
11
+ export { NAVIGATION_DIRECTION, VERTICAL_NAVIGATION_DIRECTION, TABS_ICON_SIZE, TABS_KEYBOARD_ACTION, TABS_TYPE, TABS_SIZE, };
12
12
  declare const CDSTabs_base: {
13
13
  new (...args: any[]): {
14
14
  _handles: Set<import("../../globals/internal/handle").default>;
@@ -57,6 +57,10 @@ export default class CDSTabs extends CDSTabs_base {
57
57
  * The width of the overflow scroll buttons.
58
58
  */
59
59
  private BUTTON_WIDTH;
60
+ /**
61
+ * Propagates the layout size token to the host and all child tabs.
62
+ */
63
+ private _syncSizeToTabs;
60
64
  /**
61
65
  * Navigates through tabs.
62
66
  *
@@ -77,6 +81,13 @@ export default class CDSTabs extends CDSTabs_base {
77
81
  * If null or undefined, all tabs will have their highlighted state set to false.
78
82
  */
79
83
  protected resetHighlighted(nextItem?: CDSTab | null): void;
84
+ /**
85
+ * Resets the selected state of all tabs, setting only the specified tab as selected.
86
+ *
87
+ * @param nextItem The tab item to be selected. If provided, only this item will be selected.
88
+ * If null or undefined, all tabs will have their selected state set to false.
89
+ */
90
+ protected resetSelected(nextItem?: CDSTab | null): void;
80
91
  protected _handleClick(event: MouseEvent): void;
81
92
  protected _handleKeydown(event: KeyboardEvent): void;
82
93
  protected _handleTabClosed(event: CustomEvent): void;
@@ -90,7 +101,12 @@ export default class CDSTabs extends CDSTabs_base {
90
101
  protected _handleScrollButtonClick(_: any, { direction }: {
91
102
  direction: any;
92
103
  }): void;
104
+ private _syncSecondaryLabels;
93
105
  _handleSlotchange(): void;
106
+ /**
107
+ * Updates the vertical attribute on all child tabs based on the vertical property.
108
+ */
109
+ private _updateTabsVerticalAttribute;
94
110
  protected _selectionDidChange(itemToSelect: CDSTab, interactionType?: 'mouse' | 'keyboard' | undefined): void;
95
111
  /**
96
112
  * The scrolling container.
@@ -130,14 +146,27 @@ export default class CDSTabs extends CDSTabs_base {
130
146
  * Tabs type.
131
147
  */
132
148
  type: TABS_TYPE;
149
+ /**
150
+ * `true` if the tabs are in vertical orientation.
151
+ * This is automatically set by `cds-tabs-vertical`.
152
+ */
153
+ vertical: boolean;
133
154
  /**
134
155
  * Whether the rendered Tab children should be dismissable.
135
156
  */
136
157
  dismissable: any;
158
+ /**
159
+ * Specify the size of contained tabs.
160
+ */
161
+ size?: TABS_SIZE;
137
162
  /**
138
163
  * Specify the icon size used by icon-only tabs.
139
164
  */
140
165
  iconSize?: TABS_ICON_SIZE;
166
+ /**
167
+ * Used for tabs within a grid, this makes it so tabs span the full container width and have the same width. Only available on contained tabs with <9 children
168
+ */
169
+ fullWidth: boolean;
141
170
  /**
142
171
  * `true` if left-hand scroll intersection sentinel intersects with the host element.
143
172
  * In this condition, the left-hand paginator button should be hidden.
@@ -216,8 +245,9 @@ export default class CDSTabs extends CDSTabs_base {
216
245
  static styles: any;
217
246
  /**
218
247
  * @param key The key symbol.
219
- * @returns A action for dropdown for the given key symbol.
248
+ * @param isVertical Whether the tabs are in vertical orientation.
249
+ * @returns A action for tabs for the given key symbol.
220
250
  */
221
- static getAction(key: string): TABS_KEYBOARD_ACTION;
251
+ static getAction(key: string, isVertical?: boolean): TABS_KEYBOARD_ACTION;
222
252
  }
223
253
  //# sourceMappingURL=tabs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../../src/components/tabs/tabs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../../src/components/tabs/tabs.ts"],"names":[],"mappings":"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"}