@carbon/web-components 2.61.0 → 2.62.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 (354) hide show
  1. package/custom-elements.json +455 -13
  2. package/es/components/accordion/accordion-item.d.ts +0 -4
  3. package/es/components/accordion/accordion-item.d.ts.map +1 -1
  4. package/es/components/accordion/accordion-item.js +2 -6
  5. package/es/components/accordion/accordion-item.js.map +1 -1
  6. package/es/components/action-set/action-set.d.ts +107 -0
  7. package/es/components/action-set/action-set.d.ts.map +1 -0
  8. package/es/components/action-set/action-set.js +269 -0
  9. package/es/components/action-set/action-set.js.map +1 -0
  10. package/es/components/action-set/action-set.scss.js +14 -0
  11. package/es/components/action-set/action-set.scss.js.map +1 -0
  12. package/es/components/action-set/index.d.ts +9 -0
  13. package/es/components/action-set/index.d.ts.map +1 -0
  14. package/es/components/action-set/index.js +8 -0
  15. package/es/components/ai-label/ai-label.scss.js +1 -1
  16. package/es/components/breadcrumb/breadcrumb.scss.js +1 -1
  17. package/es/components/button/button.d.ts.map +1 -1
  18. package/es/components/button/button.js +7 -2
  19. package/es/components/button/button.js.map +1 -1
  20. package/es/components/button/button.scss.js +1 -1
  21. package/es/components/code-snippet/code-snippet.scss.js +1 -1
  22. package/es/components/combo-box/combo-box.scss.js +1 -1
  23. package/es/components/combo-button/combo-button.scss.js +1 -1
  24. package/es/components/contained-list/contained-list.scss.js +1 -1
  25. package/es/components/content-switcher/content-switcher.scss.js +1 -1
  26. package/es/components/copy-button/copy-button.scss.js +1 -1
  27. package/es/components/data-table/data-table.scss.js +1 -1
  28. package/es/components/date-picker/date-picker.scss.js +1 -1
  29. package/es/components/date-picker/date-picker.scss.js.map +1 -1
  30. package/es/components/date-picker/next/components/date-picker.scss.js +1 -1
  31. package/es/components/dialog/dialog.scss.js +1 -1
  32. package/es/components/dropdown/dropdown.scss.js +1 -1
  33. package/es/components/file-uploader/file-uploader.scss.js +1 -1
  34. package/es/components/fluid-combo-box/fluid-combo-box.scss.js +1 -1
  35. package/es/components/fluid-date-picker/fluid-date-picker.scss.js +1 -1
  36. package/es/components/fluid-dropdown/fluid-dropdown.scss.js +1 -1
  37. package/es/components/fluid-multi-select/fluid-multi-select.scss.js +1 -1
  38. package/es/components/fluid-number-input/fluid-number-input.scss.js +1 -1
  39. package/es/components/fluid-password-input/fluid-password-input.scss.js +1 -1
  40. package/es/components/fluid-search/fluid-search.scss.js +1 -1
  41. package/es/components/fluid-text-input/fluid-text-input.scss.js +1 -1
  42. package/es/components/fluid-time-picker/fluid-time-picker.scss.js +1 -1
  43. package/es/components/inline-loading/inline-loading.scss.js +1 -1
  44. package/es/components/loading/loading.scss.js +1 -1
  45. package/es/components/menu-button/menu-button.scss.js +1 -1
  46. package/es/components/modal/modal.scss.js +1 -1
  47. package/es/components/multi-select/multi-select.scss.js +1 -1
  48. package/es/components/notification/actionable-notification.scss.js +1 -1
  49. package/es/components/notification/inline-notification.scss.js +1 -1
  50. package/es/components/notification/toast-notification.scss.js +1 -1
  51. package/es/components/overflow-menu/overflow-menu.scss.js +1 -1
  52. package/es/components/overflow-menu/overflow-menu.scss.js.map +1 -1
  53. package/es/components/pagination/pagination.scss.js +1 -1
  54. package/es/components/pagination-nav/pagination-nav.scss.js +1 -1
  55. package/es/components/password-input/password-input.scss.js +1 -1
  56. package/es/components/progress-indicator/progress-indicator.scss.js +1 -1
  57. package/es/components/resizer/defs.d.ts +73 -0
  58. package/es/components/resizer/defs.d.ts.map +1 -0
  59. package/es/components/resizer/defs.js +97 -0
  60. package/es/components/resizer/defs.js.map +1 -0
  61. package/es/components/resizer/index.d.ts +11 -0
  62. package/es/components/resizer/index.d.ts.map +1 -0
  63. package/es/components/resizer/index.js +11 -0
  64. package/es/components/resizer/resizer-grid.d.ts +22 -0
  65. package/es/components/resizer/resizer-grid.d.ts.map +1 -0
  66. package/es/components/resizer/resizer-grid.js +44 -0
  67. package/es/components/resizer/resizer-grid.js.map +1 -0
  68. package/es/components/resizer/resizer-grid.scss.js +14 -0
  69. package/es/components/resizer/resizer-grid.scss.js.map +1 -0
  70. package/es/components/resizer/resizer-handle-pivot.d.ts +31 -0
  71. package/es/components/resizer/resizer-handle-pivot.d.ts.map +1 -0
  72. package/es/components/resizer/resizer-handle-pivot.js +93 -0
  73. package/es/components/resizer/resizer-handle-pivot.js.map +1 -0
  74. package/es/components/resizer/resizer-handle-pivot.scss.js +14 -0
  75. package/es/components/resizer/resizer-handle-pivot.scss.js.map +1 -0
  76. package/es/components/resizer/resizer-handle.d.ts +64 -0
  77. package/es/components/resizer/resizer-handle.d.ts.map +1 -0
  78. package/es/components/resizer/resizer-handle.js +350 -0
  79. package/es/components/resizer/resizer-handle.js.map +1 -0
  80. package/es/components/resizer/resizer-handle.scss.js +14 -0
  81. package/es/components/resizer/resizer-handle.scss.js.map +1 -0
  82. package/es/components/resizer/resizer-panel.d.ts +22 -0
  83. package/es/components/resizer/resizer-panel.d.ts.map +1 -0
  84. package/es/components/resizer/resizer-panel.js +37 -0
  85. package/es/components/resizer/resizer-panel.js.map +1 -0
  86. package/es/components/resizer/resizer-panel.scss.js +14 -0
  87. package/es/components/resizer/resizer-panel.scss.js.map +1 -0
  88. package/es/components/search/search.scss.js +1 -1
  89. package/es/components/side-panel/_story-assets/index.d.ts +9 -0
  90. package/es/components/side-panel/_story-assets/index.d.ts.map +1 -0
  91. package/es/components/side-panel/_story-assets/index.js +246 -0
  92. package/es/components/side-panel/_story-assets/index.js.map +1 -0
  93. package/es/components/side-panel/defs.d.ts +7 -1
  94. package/es/components/side-panel/defs.d.ts.map +1 -1
  95. package/es/components/side-panel/defs.js +7 -1
  96. package/es/components/side-panel/defs.js.map +1 -1
  97. package/es/components/side-panel/index.d.ts +3 -1
  98. package/es/components/side-panel/index.d.ts.map +1 -1
  99. package/es/components/side-panel/index.js +12 -0
  100. package/es/components/side-panel/index.js.map +1 -0
  101. package/es/components/side-panel/side-panel.d.ts +60 -22
  102. package/es/components/side-panel/side-panel.d.ts.map +1 -1
  103. package/es/components/side-panel/side-panel.js +268 -126
  104. package/es/components/side-panel/side-panel.js.map +1 -1
  105. package/es/components/side-panel/side-panel.scss.js +14 -0
  106. package/es/components/side-panel/side-panel.scss.js.map +1 -0
  107. package/es/components/side-panel/story-styles.scss.js +14 -0
  108. package/es/components/side-panel/story-styles.scss.js.map +1 -0
  109. package/es/components/skip-to-content/skip-to-content.scss.js +1 -1
  110. package/es/components/slider/slider.d.ts +14 -0
  111. package/es/components/slider/slider.d.ts.map +1 -1
  112. package/es/components/slider/slider.js +40 -5
  113. package/es/components/slider/slider.js.map +1 -1
  114. package/es/components/slider/slider.scss.js +1 -1
  115. package/es/components/slug/slug.scss.js +1 -1
  116. package/es/components/structured-list/structured-list.scss.js +1 -1
  117. package/es/components/structured-list/structured-list.scss.js.map +1 -1
  118. package/es/components/tabs/tab.d.ts.map +1 -1
  119. package/es/components/tabs/tab.js +4 -1
  120. package/es/components/tabs/tab.js.map +1 -1
  121. package/es/components/tabs/tabs.scss.js +1 -1
  122. package/es/components/tabs/tabs.scss.js.map +1 -1
  123. package/es/components/tag/tag.scss.js +1 -1
  124. package/es/components/tag/tag.scss.js.map +1 -1
  125. package/es/components/text-input/text-input.scss.js +1 -1
  126. package/es/components/textarea/textarea.scss.js +1 -1
  127. package/es/components/textarea/textarea.scss.js.map +1 -1
  128. package/es/components/time-picker/time-picker.scss.js +1 -1
  129. package/es/components/toggle-tip/toggletip.scss.js +1 -1
  130. package/es/components/tree-view/tree-view.scss.js +1 -1
  131. package/es/components/truncated-text/index.d.ts +8 -0
  132. package/es/components/truncated-text/index.d.ts.map +1 -0
  133. package/es/components/truncated-text/index.js +8 -0
  134. package/es/components/truncated-text/truncated-text.d.ts +77 -0
  135. package/es/components/truncated-text/truncated-text.d.ts.map +1 -0
  136. package/es/components/truncated-text/truncated-text.js +216 -0
  137. package/es/components/truncated-text/truncated-text.js.map +1 -0
  138. package/es/components/truncated-text/truncated-text.scss.js +14 -0
  139. package/es/components/truncated-text/truncated-text.scss.js.map +1 -0
  140. package/es/components/ui-shell/header.scss.js +1 -1
  141. package/es/components/ui-shell/side-nav.scss.js +1 -1
  142. package/es/components/ui-shell/side-nav.scss.js.map +1 -1
  143. package/es/globals/internal/icon-loader-utils.d.ts +2 -2
  144. package/es/globals/internal/icon-loader-utils.d.ts.map +1 -1
  145. package/es/globals/internal/icon-loader-utils.js +1 -1
  146. package/es/globals/internal/icon-loader-utils.js.map +1 -1
  147. package/es/index.d.ts.map +1 -1
  148. package/es-custom/components/accordion/accordion-item.d.ts +0 -4
  149. package/es-custom/components/accordion/accordion-item.d.ts.map +1 -1
  150. package/es-custom/components/accordion/accordion-item.js +2 -6
  151. package/es-custom/components/accordion/accordion-item.js.map +1 -1
  152. package/es-custom/components/action-set/action-set.d.ts +107 -0
  153. package/es-custom/components/action-set/action-set.d.ts.map +1 -0
  154. package/es-custom/components/action-set/action-set.js +269 -0
  155. package/es-custom/components/action-set/action-set.js.map +1 -0
  156. package/es-custom/components/action-set/action-set.scss.js +14 -0
  157. package/es-custom/components/action-set/action-set.scss.js.map +1 -0
  158. package/es-custom/components/action-set/index.d.ts +9 -0
  159. package/es-custom/components/action-set/index.d.ts.map +1 -0
  160. package/es-custom/components/action-set/index.js +8 -0
  161. package/es-custom/components/ai-label/ai-label.scss.js +1 -1
  162. package/es-custom/components/breadcrumb/breadcrumb.scss.js +1 -1
  163. package/es-custom/components/button/button.d.ts.map +1 -1
  164. package/es-custom/components/button/button.js +7 -2
  165. package/es-custom/components/button/button.js.map +1 -1
  166. package/es-custom/components/button/button.scss.js +1 -1
  167. package/es-custom/components/code-snippet/code-snippet.scss.js +1 -1
  168. package/es-custom/components/combo-box/combo-box.scss.js +1 -1
  169. package/es-custom/components/combo-button/combo-button.scss.js +1 -1
  170. package/es-custom/components/contained-list/contained-list.scss.js +1 -1
  171. package/es-custom/components/content-switcher/content-switcher.scss.js +1 -1
  172. package/es-custom/components/copy-button/copy-button.scss.js +1 -1
  173. package/es-custom/components/data-table/data-table.scss.js +1 -1
  174. package/es-custom/components/date-picker/date-picker.scss.js +1 -1
  175. package/es-custom/components/date-picker/date-picker.scss.js.map +1 -1
  176. package/es-custom/components/date-picker/next/components/date-picker.scss.js +1 -1
  177. package/es-custom/components/dialog/dialog.scss.js +1 -1
  178. package/es-custom/components/dropdown/dropdown.scss.js +1 -1
  179. package/es-custom/components/file-uploader/file-uploader.scss.js +1 -1
  180. package/es-custom/components/fluid-combo-box/fluid-combo-box.scss.js +1 -1
  181. package/es-custom/components/fluid-date-picker/fluid-date-picker.scss.js +1 -1
  182. package/es-custom/components/fluid-dropdown/fluid-dropdown.scss.js +1 -1
  183. package/es-custom/components/fluid-multi-select/fluid-multi-select.scss.js +1 -1
  184. package/es-custom/components/fluid-number-input/fluid-number-input.scss.js +1 -1
  185. package/es-custom/components/fluid-password-input/fluid-password-input.scss.js +1 -1
  186. package/es-custom/components/fluid-search/fluid-search.scss.js +1 -1
  187. package/es-custom/components/fluid-text-input/fluid-text-input.scss.js +1 -1
  188. package/es-custom/components/fluid-time-picker/fluid-time-picker.scss.js +1 -1
  189. package/es-custom/components/inline-loading/inline-loading.scss.js +1 -1
  190. package/es-custom/components/loading/loading.scss.js +1 -1
  191. package/es-custom/components/menu-button/menu-button.scss.js +1 -1
  192. package/es-custom/components/modal/modal.scss.js +1 -1
  193. package/es-custom/components/multi-select/multi-select.scss.js +1 -1
  194. package/es-custom/components/notification/actionable-notification.scss.js +1 -1
  195. package/es-custom/components/notification/inline-notification.scss.js +1 -1
  196. package/es-custom/components/notification/toast-notification.scss.js +1 -1
  197. package/es-custom/components/overflow-menu/overflow-menu.scss.js +1 -1
  198. package/es-custom/components/overflow-menu/overflow-menu.scss.js.map +1 -1
  199. package/es-custom/components/pagination/pagination.scss.js +1 -1
  200. package/es-custom/components/pagination-nav/pagination-nav.scss.js +1 -1
  201. package/es-custom/components/password-input/password-input.scss.js +1 -1
  202. package/es-custom/components/progress-indicator/progress-indicator.scss.js +1 -1
  203. package/es-custom/components/resizer/defs.d.ts +73 -0
  204. package/es-custom/components/resizer/defs.d.ts.map +1 -0
  205. package/es-custom/components/resizer/defs.js +97 -0
  206. package/es-custom/components/resizer/defs.js.map +1 -0
  207. package/es-custom/components/resizer/index.d.ts +11 -0
  208. package/es-custom/components/resizer/index.d.ts.map +1 -0
  209. package/es-custom/components/resizer/index.js +11 -0
  210. package/es-custom/components/resizer/resizer-grid.d.ts +22 -0
  211. package/es-custom/components/resizer/resizer-grid.d.ts.map +1 -0
  212. package/es-custom/components/resizer/resizer-grid.js +44 -0
  213. package/es-custom/components/resizer/resizer-grid.js.map +1 -0
  214. package/es-custom/components/resizer/resizer-grid.scss.js +14 -0
  215. package/es-custom/components/resizer/resizer-grid.scss.js.map +1 -0
  216. package/es-custom/components/resizer/resizer-handle-pivot.d.ts +31 -0
  217. package/es-custom/components/resizer/resizer-handle-pivot.d.ts.map +1 -0
  218. package/es-custom/components/resizer/resizer-handle-pivot.js +93 -0
  219. package/es-custom/components/resizer/resizer-handle-pivot.js.map +1 -0
  220. package/es-custom/components/resizer/resizer-handle-pivot.scss.js +14 -0
  221. package/es-custom/components/resizer/resizer-handle-pivot.scss.js.map +1 -0
  222. package/es-custom/components/resizer/resizer-handle.d.ts +64 -0
  223. package/es-custom/components/resizer/resizer-handle.d.ts.map +1 -0
  224. package/es-custom/components/resizer/resizer-handle.js +350 -0
  225. package/es-custom/components/resizer/resizer-handle.js.map +1 -0
  226. package/es-custom/components/resizer/resizer-handle.scss.js +14 -0
  227. package/es-custom/components/resizer/resizer-handle.scss.js.map +1 -0
  228. package/es-custom/components/resizer/resizer-panel.d.ts +22 -0
  229. package/es-custom/components/resizer/resizer-panel.d.ts.map +1 -0
  230. package/es-custom/components/resizer/resizer-panel.js +37 -0
  231. package/es-custom/components/resizer/resizer-panel.js.map +1 -0
  232. package/es-custom/components/resizer/resizer-panel.scss.js +14 -0
  233. package/es-custom/components/resizer/resizer-panel.scss.js.map +1 -0
  234. package/es-custom/components/search/search.scss.js +1 -1
  235. package/es-custom/components/side-panel/_story-assets/index.d.ts +9 -0
  236. package/es-custom/components/side-panel/_story-assets/index.d.ts.map +1 -0
  237. package/es-custom/components/side-panel/_story-assets/index.js +246 -0
  238. package/es-custom/components/side-panel/_story-assets/index.js.map +1 -0
  239. package/es-custom/components/side-panel/defs.d.ts +7 -1
  240. package/es-custom/components/side-panel/defs.d.ts.map +1 -1
  241. package/es-custom/components/side-panel/defs.js +7 -1
  242. package/es-custom/components/side-panel/defs.js.map +1 -1
  243. package/es-custom/components/side-panel/index.d.ts +3 -1
  244. package/es-custom/components/side-panel/index.d.ts.map +1 -1
  245. package/es-custom/components/side-panel/index.js +12 -0
  246. package/es-custom/components/side-panel/index.js.map +1 -0
  247. package/es-custom/components/side-panel/side-panel.d.ts +60 -22
  248. package/es-custom/components/side-panel/side-panel.d.ts.map +1 -1
  249. package/es-custom/components/side-panel/side-panel.js +268 -126
  250. package/es-custom/components/side-panel/side-panel.js.map +1 -1
  251. package/es-custom/components/side-panel/side-panel.scss.js +14 -0
  252. package/es-custom/components/side-panel/side-panel.scss.js.map +1 -0
  253. package/es-custom/components/side-panel/story-styles.scss.js +14 -0
  254. package/es-custom/components/side-panel/story-styles.scss.js.map +1 -0
  255. package/es-custom/components/skip-to-content/skip-to-content.scss.js +1 -1
  256. package/es-custom/components/slider/slider.d.ts +14 -0
  257. package/es-custom/components/slider/slider.d.ts.map +1 -1
  258. package/es-custom/components/slider/slider.js +40 -5
  259. package/es-custom/components/slider/slider.js.map +1 -1
  260. package/es-custom/components/slider/slider.scss.js +1 -1
  261. package/es-custom/components/slug/slug.scss.js +1 -1
  262. package/es-custom/components/structured-list/structured-list.scss.js +1 -1
  263. package/es-custom/components/structured-list/structured-list.scss.js.map +1 -1
  264. package/es-custom/components/tabs/tab.d.ts.map +1 -1
  265. package/es-custom/components/tabs/tab.js +4 -1
  266. package/es-custom/components/tabs/tab.js.map +1 -1
  267. package/es-custom/components/tabs/tabs.scss.js +1 -1
  268. package/es-custom/components/tabs/tabs.scss.js.map +1 -1
  269. package/es-custom/components/tag/tag.scss.js +1 -1
  270. package/es-custom/components/tag/tag.scss.js.map +1 -1
  271. package/es-custom/components/text-input/text-input.scss.js +1 -1
  272. package/es-custom/components/textarea/textarea.scss.js +1 -1
  273. package/es-custom/components/textarea/textarea.scss.js.map +1 -1
  274. package/es-custom/components/time-picker/time-picker.scss.js +1 -1
  275. package/es-custom/components/toggle-tip/toggletip.scss.js +1 -1
  276. package/es-custom/components/tree-view/tree-view.scss.js +1 -1
  277. package/es-custom/components/truncated-text/index.d.ts +8 -0
  278. package/es-custom/components/truncated-text/index.d.ts.map +1 -0
  279. package/es-custom/components/truncated-text/index.js +8 -0
  280. package/es-custom/components/truncated-text/truncated-text.d.ts +77 -0
  281. package/es-custom/components/truncated-text/truncated-text.d.ts.map +1 -0
  282. package/es-custom/components/truncated-text/truncated-text.js +216 -0
  283. package/es-custom/components/truncated-text/truncated-text.js.map +1 -0
  284. package/es-custom/components/truncated-text/truncated-text.scss.js +14 -0
  285. package/es-custom/components/truncated-text/truncated-text.scss.js.map +1 -0
  286. package/es-custom/components/ui-shell/header.scss.js +1 -1
  287. package/es-custom/components/ui-shell/side-nav.scss.js +1 -1
  288. package/es-custom/components/ui-shell/side-nav.scss.js.map +1 -1
  289. package/es-custom/globals/internal/icon-loader-utils.d.ts +2 -2
  290. package/es-custom/globals/internal/icon-loader-utils.d.ts.map +1 -1
  291. package/es-custom/globals/internal/icon-loader-utils.js +1 -1
  292. package/es-custom/globals/internal/icon-loader-utils.js.map +1 -1
  293. package/es-custom/index.d.ts.map +1 -1
  294. package/lib/components/accordion/accordion-item.d.ts +0 -4
  295. package/lib/components/accordion/accordion-item.d.ts.map +1 -1
  296. package/lib/components/action-set/action-set.d.ts +107 -0
  297. package/lib/components/action-set/action-set.d.ts.map +1 -0
  298. package/lib/components/action-set/index.d.ts +9 -0
  299. package/lib/components/action-set/index.d.ts.map +1 -0
  300. package/lib/components/button/button.d.ts.map +1 -1
  301. package/lib/components/resizer/defs.d.ts +73 -0
  302. package/lib/components/resizer/defs.d.ts.map +1 -0
  303. package/lib/components/resizer/defs.js +112 -0
  304. package/lib/components/resizer/defs.js.map +1 -0
  305. package/lib/components/resizer/index.d.ts +11 -0
  306. package/lib/components/resizer/index.d.ts.map +1 -0
  307. package/lib/components/resizer/resizer-grid.d.ts +22 -0
  308. package/lib/components/resizer/resizer-grid.d.ts.map +1 -0
  309. package/lib/components/resizer/resizer-handle-pivot.d.ts +31 -0
  310. package/lib/components/resizer/resizer-handle-pivot.d.ts.map +1 -0
  311. package/lib/components/resizer/resizer-handle.d.ts +64 -0
  312. package/lib/components/resizer/resizer-handle.d.ts.map +1 -0
  313. package/lib/components/resizer/resizer-panel.d.ts +22 -0
  314. package/lib/components/resizer/resizer-panel.d.ts.map +1 -0
  315. package/lib/components/side-panel/_story-assets/index.d.ts +9 -0
  316. package/lib/components/side-panel/_story-assets/index.d.ts.map +1 -0
  317. package/lib/components/side-panel/defs.d.ts +7 -1
  318. package/lib/components/side-panel/defs.d.ts.map +1 -1
  319. package/lib/components/side-panel/defs.js +7 -1
  320. package/lib/components/side-panel/defs.js.map +1 -1
  321. package/lib/components/side-panel/index.d.ts +3 -1
  322. package/lib/components/side-panel/index.d.ts.map +1 -1
  323. package/lib/components/side-panel/side-panel.d.ts +60 -22
  324. package/lib/components/side-panel/side-panel.d.ts.map +1 -1
  325. package/lib/components/slider/slider.d.ts +14 -0
  326. package/lib/components/slider/slider.d.ts.map +1 -1
  327. package/lib/components/tabs/tab.d.ts.map +1 -1
  328. package/lib/components/truncated-text/index.d.ts +8 -0
  329. package/lib/components/truncated-text/index.d.ts.map +1 -0
  330. package/lib/components/truncated-text/truncated-text.d.ts +77 -0
  331. package/lib/components/truncated-text/truncated-text.d.ts.map +1 -0
  332. package/lib/globals/internal/icon-loader-utils.d.ts +2 -2
  333. package/lib/globals/internal/icon-loader-utils.d.ts.map +1 -1
  334. package/lib/index.d.ts.map +1 -1
  335. package/package.json +7 -7
  336. package/scss/components/action-set/action-set.scss +93 -0
  337. package/scss/components/data-table/_table-core.scss +73 -20
  338. package/scss/components/data-table/_table-selection.scss +31 -14
  339. package/scss/components/date-picker/date-picker.scss +10 -6
  340. package/scss/components/overflow-menu/overflow-menu.scss +31 -11
  341. package/scss/components/resizer/resizer-grid.scss +34 -0
  342. package/scss/components/resizer/resizer-handle-pivot.scss +39 -0
  343. package/scss/components/resizer/resizer-handle.scss +127 -0
  344. package/scss/components/resizer/resizer-panel.scss +10 -0
  345. package/scss/components/side-panel/side-panel.scss +363 -0
  346. package/scss/components/side-panel/story-styles.scss +51 -0
  347. package/scss/components/structured-list/structured-list.scss +10 -8
  348. package/scss/components/tabs/tabs.scss +4 -0
  349. package/scss/components/tag/tag.scss +11 -7
  350. package/scss/components/textarea/textarea.scss +6 -0
  351. package/scss/components/truncated-text/truncated-text-story.scss +14 -0
  352. package/scss/components/truncated-text/truncated-text.scss +122 -0
  353. package/scss/components/ui-shell/side-nav.scss +9 -7
  354. package/telemetry.yml +26 -0
@@ -11,27 +11,28 @@ import __decorate from "../../_virtual/_@oxc-project_runtime@0.139.0/helpers/esm
11
11
  import iconLoader from "../../globals/internal/icon-loader.js";
12
12
  import HostListener from "../../globals/decorators/host-listener.js";
13
13
  import HostListenerMixin from "../../globals/mixins/host-listener.js";
14
- import "../button/button-set-base.js";
15
14
  import "../button/index.js";
16
15
  import "../icon-button/index.js";
16
+ import "../action-set/index.js";
17
17
  import "../layer/index.js";
18
+ import "../resizer/index.js";
18
19
  import { SIDE_PANEL_PLACEMENT, SIDE_PANEL_SIZE } from "./defs.js";
20
+ import side_panel_default$1 from "./side-panel.scss.js";
19
21
  import { LitElement, html } from "lit";
20
- import { property, query, queryAssignedElements, state } from "lit/decorators.js";
21
- import Close20 from "@carbon/icons/es/close/20.js";
22
- import ArrowLeft16 from "@carbon/icons/es/arrow--left/16.js";
22
+ import { property, query, state } from "lit/decorators.js";
23
+ import ArrowLeft16 from "@carbon/icons/es/arrow--left/16";
24
+ import Close16 from "@carbon/icons/es/close/16";
23
25
  import { moderate02 } from "@carbon/motion";
24
26
  //#region src/components/side-panel/side-panel.ts
25
27
  /**
28
+ * @license
29
+ *
26
30
  * Copyright IBM Corp. 2023, 2026
27
31
  *
28
32
  * This source code is licensed under the Apache-2.0 license found in the
29
33
  * LICENSE file in the root directory of this source tree.
30
34
  */
31
- const PRECEDING = Node.DOCUMENT_POSITION_PRECEDING | Node.DOCUMENT_POSITION_CONTAINS;
32
- const FOLLOWING = Node.DOCUMENT_POSITION_FOLLOWING | Node.DOCUMENT_POSITION_CONTAINED_BY;
33
35
  const blockClass = `cds-custom--side-panel`;
34
- const blockClassActionSet = `cds-custom--action-set`;
35
36
  /**
36
37
  * Observes resize of the given element with the given resize observer.
37
38
  *
@@ -47,32 +48,8 @@ const observeResize = (observer, elem) => {
47
48
  } };
48
49
  };
49
50
  /**
50
- * Tries to focus on the given elements and bails out if one of them is successful.
51
- *
52
- * @param elems The elements.
53
- * @param reverse `true` to go through the list in reverse order.
54
- * @returns `true` if one of the attempts is successful, `false` otherwise.
55
- */
56
- function tryFocusElems(elems, reverse) {
57
- if (!reverse) for (let i = 0; i < elems.length; ++i) {
58
- const elem = elems[i];
59
- elem.focus();
60
- if (elem.ownerDocument.activeElement === elem) return true;
61
- }
62
- else for (let i = elems.length - 1; i >= 0; --i) {
63
- const elem = elems[i];
64
- elem.focus();
65
- if (elem.ownerDocument.activeElement === elem) return true;
66
- }
67
- return false;
68
- }
69
- /**
70
51
  * SidePanel.
71
52
  *
72
- * @deprecated Use Carbon for IBM Products `side-panel` component.
73
- * This component has been deprecated in `@carbon/web-components` and will instead be maintained
74
- * in the Carbon for IBM Products library:
75
- * https://github.com/carbon-design-system/ibm-products/tree/main/packages/ibm-products-web-components
76
53
  * @element cds-custom-side-panel
77
54
  * @csspart dialog The dialog.
78
55
  * @fires cds-custom-side-panel-beingclosed
@@ -93,20 +70,20 @@ let CDSSidePanel = class CDSSidePanel extends HostListenerMixin(LitElement) {
93
70
  this._hasSlug = false;
94
71
  this._hasActionToolbar = false;
95
72
  this._actionsCount = 0;
73
+ this._actionsMultiple = "";
96
74
  this._slugCloseSize = "sm";
97
- this._handleBlur = async ({ target, relatedTarget }) => {
98
- const { open, _startSentinelNode: startSentinelNode, _endSentinelNode: endSentinelNode } = this;
99
- const oldContains = target !== this && this.contains(target);
100
- const currentContains = relatedTarget !== this && (this.contains(relatedTarget) || this.shadowRoot?.contains(relatedTarget) && relatedTarget !== startSentinelNode && relatedTarget !== endSentinelNode);
101
- const { selectorTabbable: selectorTabbableForSidePanel } = this.constructor;
102
- if (open && relatedTarget && oldContains && !currentContains) {
103
- const comparisonResult = target.compareDocumentPosition(relatedTarget);
104
- if (relatedTarget === startSentinelNode || comparisonResult & PRECEDING) {
105
- await this.constructor._delay();
106
- if (!tryFocusElems(this.querySelectorAll(selectorTabbableForSidePanel), true) && relatedTarget !== this) this.focus();
107
- } else if (relatedTarget === endSentinelNode || comparisonResult & FOLLOWING) {
108
- await this.constructor._delay();
109
- if (!tryFocusElems(this.querySelectorAll(selectorTabbableForSidePanel), true)) this.focus();
75
+ this._customHeaderElements = [];
76
+ this._customHeaderHidden = false;
77
+ this._accumulatedDelta = 0;
78
+ this._handleHostKeydown = (event) => {
79
+ if (event.key === "Tab" && !this.slideIn) {
80
+ const { first: _firstElement, last: _lastElement } = this.getFocusable();
81
+ if (event.shiftKey && (this.shadowRoot?.activeElement === _firstElement || document.activeElement === _firstElement)) {
82
+ event.preventDefault();
83
+ _lastElement?.focus();
84
+ } else if (!event.shiftKey && document.activeElement === _lastElement) {
85
+ event.preventDefault();
86
+ _firstElement?.focus();
110
87
  }
111
88
  }
112
89
  };
@@ -130,7 +107,7 @@ let CDSSidePanel = class CDSSidePanel extends HostListenerMixin(LitElement) {
130
107
  if (this.placement === "left") newValues.marginInlineStart = `${this?._sidePanel?.offsetWidth}px`;
131
108
  else newValues.marginInlineEnd = `${this?._sidePanel?.offsetWidth}px`;
132
109
  }
133
- Object.keys(newValues).forEach((key) => {
110
+ if (this.slideIn) Object.keys(newValues).forEach((key) => {
134
111
  pageContentEl.style[key] = newValues[key];
135
112
  });
136
113
  }
@@ -138,28 +115,27 @@ let CDSSidePanel = class CDSSidePanel extends HostListenerMixin(LitElement) {
138
115
  };
139
116
  this._checkSetOpen = () => {
140
117
  const { _sidePanel: sidePanel } = this;
141
- if (sidePanel && this._isOpen) if (this._reducedMotion) this._isOpen = false;
118
+ if (sidePanel && this._isOpen) if (this._reducedMotion?.matches) this._isOpen = false;
142
119
  else sidePanel.addEventListener("transitionend", () => {
143
120
  this._isOpen = false;
144
121
  });
145
- else this._isOpen = this.open;
122
+ else if (this.open) requestAnimationFrame(() => {
123
+ this._isOpen = this.open;
124
+ });
125
+ else this._isOpen = false;
146
126
  };
147
127
  this._checkUpdateIconButtonSizes = () => {
148
128
  const slug = this.querySelector(`cds-custom-slug`);
149
129
  const otherButtons = this?.shadowRoot?.querySelectorAll("#nav-back-button, #close-button");
150
- let iconButtonSize = "sm";
151
- if (slug || otherButtons?.length) {
152
- if ((this?.querySelectorAll?.(`cds-custom-button[slot='actions']`))?.length && /l/.test(this.size)) iconButtonSize = "md";
130
+ const shouldUpgrade = (this?.querySelectorAll?.(`cds-custom-button[slot='actions']`))?.length && /l/.test(this.size);
131
+ if (slug && shouldUpgrade) slug.setAttribute("size", "md");
132
+ if (otherButtons) {
133
+ const iconButtonSize = shouldUpgrade ? "md" : "sm";
134
+ [...otherButtons].forEach((btn) => {
135
+ btn.setAttribute("size", iconButtonSize);
136
+ });
153
137
  }
154
- if (slug) slug?.setAttribute("size", iconButtonSize);
155
- if (otherButtons) [...otherButtons].forEach((btn) => {
156
- btn.setAttribute("size", iconButtonSize);
157
- });
158
138
  };
159
- this._checkUpdateActionSizes = () => {
160
- if (this._actions) for (let i = 0; i < this._actions.length; i++) this._actions[i].setAttribute("size", this.condensedActions ? "lg" : "xl");
161
- };
162
- this._maxActions = 3;
163
139
  this._checkSetDoAnimateTitle = () => {
164
140
  let canDoAnimateTitle = false;
165
141
  if (this._sidePanel && this.open && this.animateTitle && this?.title?.length && !this._reducedMotion.matches) {
@@ -187,7 +163,62 @@ let CDSSidePanel = class CDSSidePanel extends HostListenerMixin(LitElement) {
187
163
  this._scrollObserver = () => {
188
164
  const scrollTop = this._animateScrollWrapper?.scrollTop ?? 0;
189
165
  const scrollAnimationDistance = this._getScrollAnimationDistance();
190
- this?._sidePanel?.style?.setProperty(`--${blockClass}--scroll-animation-progress`, `${Math.min(scrollTop, scrollAnimationDistance) / scrollAnimationDistance}`);
166
+ const animationProgress = Math.min(scrollTop, scrollAnimationDistance) / scrollAnimationDistance;
167
+ this?._sidePanel?.style?.setProperty(`--${blockClass}--scroll-animation-progress`, `${animationProgress}`);
168
+ this._customHeaderHidden = animationProgress === 1;
169
+ };
170
+ this._handleResizeStart = () => {
171
+ this._sidePanelWidth = this._sidePanel?.clientWidth;
172
+ this._accumulatedDelta = 0;
173
+ };
174
+ this._handleResizeDrag = (event) => {
175
+ const { delta, isKeyboard, key } = event.detail;
176
+ if (!this._sidePanelWidth) this._sidePanelWidth = this._sidePanel?.clientWidth;
177
+ if (isKeyboard && (key === "Home" || key === "End")) {
178
+ if (key === "Home") this.style.setProperty("--cds-side-panel-modified-size", "75vw");
179
+ else this.style.setProperty("--cds-side-panel-modified-size", "16rem");
180
+ return;
181
+ }
182
+ let calculatedWidth;
183
+ if (isKeyboard) {
184
+ this._accumulatedDelta += delta;
185
+ calculatedWidth = this._sidePanelWidth - (this.placement === "right" ? this._accumulatedDelta : -this._accumulatedDelta);
186
+ } else calculatedWidth = this._sidePanelWidth - (this.placement === "right" ? delta : -delta);
187
+ if (this._sidePanel?.style) this._sidePanel.style.transition = "none";
188
+ const minWidth = 256;
189
+ const maxWidth = window.innerWidth * .75;
190
+ const newWidth = Math.max(minWidth, Math.min(maxWidth, calculatedWidth));
191
+ this.style.setProperty("--cds-side-panel-modified-size", `${newWidth}px`);
192
+ };
193
+ this._handleResizeEnd = () => {
194
+ this._accumulatedDelta = 0;
195
+ this._sidePanel?.style?.removeProperty("transition");
196
+ this._sidePanelWidth = this._sidePanel?.clientWidth;
197
+ if (this._resizerHandle) {
198
+ this._resizerHandle.setAttribute("aria-label", `side panel is covering ${this._getPanelWidthPercent()}% of screen`);
199
+ this._resizerHandle.setAttribute("aria-valuenow", this._getPanelWidthPercent().toString());
200
+ }
201
+ };
202
+ this._handleResizeReset = () => {
203
+ const sizeMap = {
204
+ xs: "16rem",
205
+ sm: "20rem",
206
+ md: "30rem",
207
+ lg: "40rem",
208
+ xl: "65rem",
209
+ "2xl": "80rem"
210
+ };
211
+ const defaultSize = sizeMap[this.size] || sizeMap.md;
212
+ const defaultSizeInPx = parseFloat(defaultSize) * 16;
213
+ this._sidePanelWidth = Math.min(defaultSizeInPx, window.innerWidth * .75);
214
+ this.style.removeProperty("--cds-side-panel-modified-size");
215
+ };
216
+ this._getPanelWidthPercent = (customWidth) => {
217
+ if (customWidth) {
218
+ const remInPixels = parseFloat(customWidth) * parseFloat(getComputedStyle(document.documentElement).fontSize);
219
+ return Math.round(remInPixels / window.innerWidth * 100);
220
+ }
221
+ return Math.round((this._sidePanel?.clientWidth || 0) / window.innerWidth * 100);
191
222
  };
192
223
  this._handleCurrentStepUpdate = () => {
193
224
  const scrollable = this._animateScrollWrapper ?? this._innerContent;
@@ -195,6 +226,7 @@ let CDSSidePanel = class CDSSidePanel extends HostListenerMixin(LitElement) {
195
226
  };
196
227
  this.animateTitle = true;
197
228
  this.closeIconDescription = "Close";
229
+ this.closeIconTooltipAlignment = "left";
198
230
  this.condensedActions = false;
199
231
  this.includeOverlay = false;
200
232
  this.navigationBackIconDescription = "Back";
@@ -202,8 +234,69 @@ let CDSSidePanel = class CDSSidePanel extends HostListenerMixin(LitElement) {
202
234
  this.placement = "right";
203
235
  this.preventCloseOnClickOutside = false;
204
236
  this.selectorPageContent = "";
237
+ this.hideCloseButton = false;
205
238
  this.size = "md";
206
239
  this.slideIn = false;
240
+ this.resizable = false;
241
+ }
242
+ /**
243
+ * Get focusable elements.
244
+ *
245
+ * Querying all tabbable items.
246
+ *
247
+ * @returns {{first: HTMLElement, last: HTMLElement, all: HTMLElement[]}} Returns an object with various elements.
248
+ */
249
+ getFocusable() {
250
+ const elements = [];
251
+ if (this.currentStep > 0) {
252
+ const backButton = this.shadowRoot?.querySelector(`.${blockClass}__navigation-back-button`);
253
+ if (backButton) elements.push(backButton);
254
+ }
255
+ const aboveTitleSlot = this.shadowRoot?.querySelector("slot[name=\"above-title\"]");
256
+ if (aboveTitleSlot) {
257
+ const aboveTitleElements = aboveTitleSlot.assignedElements({ flatten: true }).flatMap((el) => Array.from(el.querySelectorAll(selectorTabbable)));
258
+ elements.push(...aboveTitleElements);
259
+ }
260
+ const labelText = this.shadowRoot?.querySelector(`.${blockClass}__label-text`);
261
+ if (labelText) elements.push(labelText);
262
+ const titleText = this.shadowRoot?.querySelector(`.${blockClass}__title-text`);
263
+ if (titleText) elements.push(titleText);
264
+ if (this._hasSlug) {
265
+ const slugElements = Array.from(this.querySelectorAll(`cds-custom-slug`));
266
+ elements.push(...slugElements);
267
+ }
268
+ if (!this.hideCloseButton) {
269
+ const closeButton = this.shadowRoot?.querySelector(`.${blockClass}__close-button`);
270
+ if (closeButton) elements.push(closeButton);
271
+ }
272
+ const subtitleText = this.shadowRoot?.querySelector(`.${blockClass}__subtitle-text`);
273
+ if (subtitleText && !subtitleText.hidden) elements.push(subtitleText);
274
+ const belowTitleSlot = this.shadowRoot?.querySelector("slot[name=\"below-title\"]");
275
+ if (belowTitleSlot) {
276
+ const belowTitleElements = belowTitleSlot.assignedElements({ flatten: true }).flatMap((el) => Array.from(el.querySelectorAll(selectorTabbable)));
277
+ elements.push(...belowTitleElements);
278
+ }
279
+ const actionToolbarSlot = this.shadowRoot?.querySelector("slot[name=\"action-toolbar\"]");
280
+ if (actionToolbarSlot) {
281
+ const actionToolbarElements = actionToolbarSlot.assignedElements({ flatten: true }).filter((el) => el instanceof HTMLElement && typeof el.focus === "function");
282
+ elements.push(...actionToolbarElements);
283
+ }
284
+ const defaultSlot = this.shadowRoot?.querySelector("slot:not([name])");
285
+ if (defaultSlot) {
286
+ const bodyElements = defaultSlot.assignedElements({ flatten: true }).flatMap((el) => Array.from(el.querySelectorAll(selectorTabbable)));
287
+ elements.push(...bodyElements);
288
+ }
289
+ const actionsSlot = this.shadowRoot?.querySelector("slot[name=\"actions\"]");
290
+ if (actionsSlot) {
291
+ const actionElements = actionsSlot.assignedElements({ flatten: true }).filter((el) => el instanceof HTMLElement && typeof el.focus === "function");
292
+ elements.push(...actionElements);
293
+ }
294
+ const all = elements.filter((el) => typeof el?.focus === "function");
295
+ return {
296
+ first: all[0],
297
+ last: all[all.length - 1],
298
+ all
299
+ };
207
300
  }
208
301
  /**
209
302
  * Handles `click` event on the side-panel container.
@@ -255,24 +348,33 @@ let CDSSidePanel = class CDSSidePanel extends HostListenerMixin(LitElement) {
255
348
  const subtitle = e.target?.assignedElements();
256
349
  this._hasSubtitle = subtitle.length > 0;
257
350
  }
351
+ _handleCustomHeaderSlotChange(e) {
352
+ (e.target?.assignedElements()).forEach((el) => {
353
+ if (el instanceof HTMLElement) {
354
+ el.style.opacity = `calc(1 - var(--${blockClass}--scroll-animation-progress))`;
355
+ this._customHeaderElements.push(el);
356
+ }
357
+ });
358
+ }
258
359
  _handleActionToolbarChange(e) {
259
360
  const toolbarActions = e.target?.assignedElements();
260
361
  this._hasActionToolbar = toolbarActions && toolbarActions.length > 0;
261
- if (this._hasActionToolbar) for (const toolbarAction of toolbarActions) toolbarAction.setAttribute("size", "sm");
362
+ if (this._hasActionToolbar) for (let i = 0; i < toolbarActions.length; i++) {
363
+ const toolbarAction = toolbarActions[i];
364
+ toolbarAction.setAttribute("size", "sm");
365
+ if (i === 0) toolbarAction.classList.add(`${blockClass}__action-toolbar-leading-button`);
366
+ else toolbarAction.classList.remove(`${blockClass}__action-toolbar-leading-button`);
367
+ }
262
368
  }
263
369
  _handleActionsChange(e) {
264
370
  const actions = e.target?.assignedElements();
265
371
  this._checkUpdateIconButtonSizes();
266
372
  const actionsCount = actions?.length ?? 0;
267
- if (actionsCount > this._maxActions) {
268
- this._actionsCount = this._maxActions;
269
- console.error(`Too many side-panel actions, max ${this._maxActions}.`);
270
- } else this._actionsCount = actionsCount;
271
- for (let i = 0; i < actions?.length; i++) if (i + 1 > this._maxActions) {
272
- actions[i].setAttribute("hidden", "true");
273
- actions[i].setAttribute(`data-actions-limit-${this._maxActions}-exceeded`, `${actions.length}`);
274
- } else actions[i].classList.add(`${blockClassActionSet}__action-button`);
275
- this._checkUpdateActionSizes();
373
+ this._actionsCount = actionsCount;
374
+ if (actionsCount === 1) this._actionsMultiple = "single";
375
+ else if (actionsCount === 2) this._actionsMultiple = "double";
376
+ else if (actionsCount === 3) this._actionsMultiple = "triple";
377
+ else this._actionsMultiple = "";
276
378
  }
277
379
  async connectObservers() {
278
380
  await this.updateComplete;
@@ -285,30 +387,30 @@ let CDSSidePanel = class CDSSidePanel extends HostListenerMixin(LitElement) {
285
387
  super.connectedCallback();
286
388
  this.disconnectObservers();
287
389
  this.connectObservers();
390
+ this.addEventListener("resize-start", this._handleResizeStart);
391
+ this.addEventListener("resize-drag", this._handleResizeDrag);
392
+ this.addEventListener("resize-end", this._handleResizeEnd);
393
+ this.addEventListener("resize-reset", this._handleResizeReset);
288
394
  }
289
395
  disconnectedCallback() {
290
396
  super.disconnectedCallback();
291
397
  this.disconnectObservers();
398
+ this.removeEventListener("resize-start", this._handleResizeStart);
399
+ this.removeEventListener("resize-drag", this._handleResizeDrag);
400
+ this.removeEventListener("resize-end", this._handleResizeEnd);
401
+ this.removeEventListener("resize-reset", this._handleResizeReset);
292
402
  }
293
403
  render() {
294
- const { closeIconDescription, condensedActions, currentStep, includeOverlay, labelText, navigationBackIconDescription, open, placement, size, slideIn, title } = this;
404
+ const { closeIconDescription, closeIconTooltipAlignment, condensedActions, currentStep, includeOverlay, labelText, navigationBackIconDescription, open, placement, hideCloseButton, size, slideIn, title } = this;
295
405
  if (!open && !this._isOpen) return html``;
296
- const actionsMultiple = [
297
- "",
298
- "single",
299
- "double",
300
- "triple"
301
- ][this._actionsCount];
302
- const titleTemplate = html`<div
406
+ const titleTemplate = html` <div
303
407
  class=${`${blockClass}__title`}
304
408
  ?no-label=${!!labelText}>
305
- <h2 class=${title ? `${blockClass}__title-text` : ""} title=${title}>
409
+ <h2 class=${title ? `${blockClass}__title-text` : ""} tabindex="0">
306
410
  ${title}
307
411
  </h2>
308
-
309
412
  ${this._doAnimateTitle ? html`<h2
310
413
  class=${`${blockClass}__collapsed-title-text`}
311
- title=${title}
312
414
  aria-hidden="true">
313
415
  ${title}
314
416
  </h2>` : ""}
@@ -334,8 +436,18 @@ let CDSSidePanel = class CDSSidePanel extends HostListenerMixin(LitElement) {
334
436
  </span>
335
437
  </cds-custom-icon-button>` : ""}
336
438
 
439
+ <!-- slot for custom header components -->
440
+ <div
441
+ class=${`${blockClass}__custom-header-wrapper${this._customHeaderHidden ? ` ${blockClass}__custom-header-wrapper--hidden` : ""}`}>
442
+ <slot
443
+ name="above-title"
444
+ @slotchange=${this._handleCustomHeaderSlotChange}></slot>
445
+ </div>
446
+
337
447
  <!-- render title label -->
338
- ${title?.length && labelText?.length ? html` <p class=${`${blockClass}__label-text`}>${labelText}</p>` : ""}
448
+ ${title?.length && labelText?.length ? html` <p class=${`${blockClass}__label-text`} tabindex="0">
449
+ ${labelText}
450
+ </p>` : ""}
339
451
 
340
452
  <!-- title -->
341
453
  ${title ? titleTemplate : ""}
@@ -344,16 +456,16 @@ let CDSSidePanel = class CDSSidePanel extends HostListenerMixin(LitElement) {
344
456
  <div class=${`${blockClass}__slug-and-close`}>
345
457
  <slot name="slug" @slotchange=${this._handleSlugChange}></slot>
346
458
  <!-- {normalizedSlug} -->
347
- <cds-custom-icon-button
348
- align="bottom-right"
349
- aria-label=${closeIconDescription}
350
- kind="ghost"
351
- size="sm"
352
- class=${`${blockClass}__close-button`}
353
- @click=${this._handleCloseClick}>
354
- ${iconLoader(Close20, { slot: "icon" })}
355
- <span slot="tooltip-content"> ${closeIconDescription} </span>
356
- </cds-custom-icon-button>
459
+ ${!hideCloseButton ? html`<cds-custom-icon-button
460
+ align=${closeIconTooltipAlignment}
461
+ aria-label=${closeIconDescription}
462
+ kind="ghost"
463
+ size="sm"
464
+ class=${`${blockClass}__close-button`}
465
+ @click=${this._handleCloseClick}>
466
+ ${iconLoader(Close16, { slot: "icon" })}
467
+ <span slot="tooltip-content"> ${closeIconDescription} </span>
468
+ </cds-custom-icon-button>` : ""}
357
469
  </div>
358
470
 
359
471
  <!-- render sub title -->
@@ -362,12 +474,21 @@ let CDSSidePanel = class CDSSidePanel extends HostListenerMixin(LitElement) {
362
474
  ?hidden=${!this._hasSubtitle}
363
475
  ?no-title-animation=${!this._doAnimateTitle}
364
476
  ?no-action-toolbar=${!this._hasActionToolbar}
365
- ?no-title=${!title}>
477
+ ?no-title=${!title}
478
+ tabindex="0">
366
479
  <slot
367
480
  name="subtitle"
368
481
  @slotchange=${this._handleSubtitleChange}></slot>
369
482
  </p>
370
483
 
484
+ <!-- slot for custom header components -->
485
+ <div
486
+ class=${`${blockClass}__custom-header-wrapper${this._customHeaderHidden ? ` ${blockClass}__custom-header-wrapper--hidden` : ""}`}>
487
+ <slot
488
+ name="below-title"
489
+ @slotchange=${this._handleCustomHeaderSlotChange}></slot>
490
+ </div>
491
+
371
492
  <div
372
493
  class=${this._hasActionToolbar ? `${blockClass}__action-toolbar` : ""}
373
494
  ?hidden=${!this._hasActionToolbar}
@@ -399,33 +520,31 @@ let CDSSidePanel = class CDSSidePanel extends HostListenerMixin(LitElement) {
399
520
  ?condensed-actions=${condensedActions}
400
521
  ?overlay=${includeOverlay || slideIn}
401
522
  ?slide-in=${slideIn}
523
+ ?resizable=${this.resizable && !slideIn}
402
524
  size=${size}>
403
- <a
404
- id="start-sentinel"
405
- class="sentinel"
406
- hidden
407
- href="javascript:void 0"
408
- role="navigation"></a>
409
-
525
+ ${!slideIn && this.resizable && typeof window !== "undefined" && window.innerWidth > 768 ? html`<cds-custom-resizer-handle
526
+ class="${blockClass}__resizer"
527
+ orientation="horizontal"
528
+ aria-valuemin="${this._getPanelWidthPercent("16rem")}"
529
+ aria-valuemax="75"
530
+ aria-valuenow="${this._getPanelWidthPercent()}"
531
+ aria-label="side panel is covering ${this._getPanelWidthPercent()}% of screen"
532
+ @resize-start=${this._handleResizeStart}
533
+ @resize-drag=${this._handleResizeDrag}
534
+ @resize-end=${this._handleResizeEnd}
535
+ @resize-reset=${this._handleResizeReset}></cds-custom-resizer-handle>` : ""}
410
536
  ${this._doAnimateTitle ? html`<div class=${`${blockClass}__animated-scroll-wrapper`} scrolls>
411
537
  ${headerTemplate} ${mainTemplate}
412
538
  </div>` : html` ${headerTemplate} ${mainTemplate}`}
413
539
 
414
- <cds-custom-button-set-base
540
+ <cds-custom-action-set
415
541
  class=${`${blockClass}__actions-container`}
416
542
  ?hidden=${this._actionsCount === 0}
417
- ?condensed=${condensedActions}
418
- actions-multiple=${actionsMultiple}
419
- size=${size}>
543
+ size=${/^(lg|xl|2xl)$/.test(size) ? "lg" : "md"}
544
+ button-size=${condensedActions ? "md" : "lg"}
545
+ actions-multiple=${this._actionsMultiple}>
420
546
  <slot name="actions" @slotchange=${this._handleActionsChange}></slot>
421
- </cds-custom-button-set-base>
422
-
423
- <a
424
- id="end-sentinel"
425
- class="sentinel"
426
- hidden
427
- href="javascript:void 0"
428
- role="navigation"></a>
547
+ </cds-custom-action-set>
429
548
  </div>
430
549
 
431
550
  ${includeOverlay ? html`<div
@@ -439,7 +558,6 @@ let CDSSidePanel = class CDSSidePanel extends HostListenerMixin(LitElement) {
439
558
  `;
440
559
  }
441
560
  async updated(changedProperties) {
442
- if (changedProperties.has("condensedActions")) this._checkUpdateActionSizes();
443
561
  if (changedProperties.has("currentStep")) this._handleCurrentStepUpdate();
444
562
  if (changedProperties.has("_doAnimateTitle")) {
445
563
  this?._animateScrollWrapper?.removeEventListener("scroll", this._scrollObserver);
@@ -453,16 +571,23 @@ let CDSSidePanel = class CDSSidePanel extends HostListenerMixin(LitElement) {
453
571
  this.disconnectObservers();
454
572
  if (this.open) {
455
573
  this.connectObservers();
456
- this._launcher = this.ownerDocument.activeElement;
457
- const focusNode = this.selectorInitialFocus && this.querySelector(this.selectorInitialFocus);
574
+ this._launcher = this.ownerDocument?.activeElement ?? null;
458
575
  await this.constructor._delay();
459
- if (focusNode) focusNode.focus();
460
- else if (!tryFocusElems(this.querySelectorAll(this.constructor.selectorTabbable), true)) this.focus();
461
- } else if (this._launcher && typeof this._launcher.focus === "function") {
462
- this._launcher.focus();
576
+ if (this.selectorInitialFocus?.trim()?.length) this.querySelector(this.selectorInitialFocus)?.focus();
577
+ else if (!this.slideIn) {
578
+ const { first: _firstElement } = this.getFocusable();
579
+ _firstElement?.focus();
580
+ }
581
+ } else if (this._launcher && typeof this._launcher?.focus === "function") {
582
+ this._launcher?.focus();
463
583
  this._launcher = null;
464
584
  }
465
585
  }
586
+ if (changedProperties.has("size") && this.resizable && !this.slideIn || changedProperties.has("resizable") && !this.resizable) this.style.removeProperty("--cds-side-panel-modified-size");
587
+ if ((changedProperties.has("resizable") || changedProperties.has("open")) && this.resizable && !this.slideIn && this.open) {
588
+ await this.updateComplete;
589
+ this._sidePanelWidth = this._sidePanel?.clientWidth;
590
+ }
466
591
  }
467
592
  /**
468
593
  * @param ms The number of milliseconds.
@@ -498,19 +623,17 @@ let CDSSidePanel = class CDSSidePanel extends HostListenerMixin(LitElement) {
498
623
  static get eventNavigateBack() {
499
624
  return `cds-custom-side-panel-navigate-back`;
500
625
  }
626
+ static {
627
+ this.styles = side_panel_default$1;
628
+ }
501
629
  };
502
- __decorate([query("#start-sentinel")], CDSSidePanel.prototype, "_startSentinelNode", void 0);
503
- __decorate([query("#end-sentinel")], CDSSidePanel.prototype, "_endSentinelNode", void 0);
504
630
  __decorate([query(`.${blockClass}`)], CDSSidePanel.prototype, "_sidePanel", void 0);
505
631
  __decorate([query(`.${blockClass}__animated-scroll-wrapper`)], CDSSidePanel.prototype, "_animateScrollWrapper", void 0);
506
632
  __decorate([query(`.${blockClass}__label-text`)], CDSSidePanel.prototype, "_label", void 0);
507
633
  __decorate([query(`.${blockClass}__title-text`)], CDSSidePanel.prototype, "_title", void 0);
508
634
  __decorate([query(`.${blockClass}__subtitle-text`)], CDSSidePanel.prototype, "_subtitle", void 0);
509
635
  __decorate([query(`.${blockClass}__inner-content`)], CDSSidePanel.prototype, "_innerContent", void 0);
510
- __decorate([queryAssignedElements({
511
- slot: "actions",
512
- selector: `cds-custom-button`
513
- })], CDSSidePanel.prototype, "_actions", void 0);
636
+ __decorate([query(`cds-custom-resizer-handle`)], CDSSidePanel.prototype, "_resizerHandle", void 0);
514
637
  __decorate([state()], CDSSidePanel.prototype, "_doAnimateTitle", void 0);
515
638
  __decorate([state()], CDSSidePanel.prototype, "_isOpen", void 0);
516
639
  __decorate([state()], CDSSidePanel.prototype, "_containerScrollTop", void 0);
@@ -518,8 +641,13 @@ __decorate([state()], CDSSidePanel.prototype, "_hasSubtitle", void 0);
518
641
  __decorate([state()], CDSSidePanel.prototype, "_hasSlug", void 0);
519
642
  __decorate([state()], CDSSidePanel.prototype, "_hasActionToolbar", void 0);
520
643
  __decorate([state()], CDSSidePanel.prototype, "_actionsCount", void 0);
644
+ __decorate([state()], CDSSidePanel.prototype, "_actionsMultiple", void 0);
521
645
  __decorate([state()], CDSSidePanel.prototype, "_slugCloseSize", void 0);
522
- __decorate([HostListener("shadowRoot:focusout")], CDSSidePanel.prototype, "_handleBlur", void 0);
646
+ __decorate([state()], CDSSidePanel.prototype, "_customHeaderElements", void 0);
647
+ __decorate([state()], CDSSidePanel.prototype, "_customHeaderHidden", void 0);
648
+ __decorate([state()], CDSSidePanel.prototype, "_sidePanelWidth", void 0);
649
+ __decorate([state()], CDSSidePanel.prototype, "_accumulatedDelta", void 0);
650
+ __decorate([HostListener("keydown")], CDSSidePanel.prototype, "_handleHostKeydown", void 0);
523
651
  __decorate([HostListener("document:keydown")], CDSSidePanel.prototype, "_handleKeydown", void 0);
524
652
  __decorate([property({
525
653
  reflect: true,
@@ -528,8 +656,14 @@ __decorate([property({
528
656
  })], CDSSidePanel.prototype, "animateTitle", void 0);
529
657
  __decorate([property({
530
658
  reflect: true,
531
- attribute: "close-icon-description"
659
+ attribute: "close-icon-description",
660
+ type: String
532
661
  })], CDSSidePanel.prototype, "closeIconDescription", void 0);
662
+ __decorate([property({
663
+ reflect: true,
664
+ attribute: "close-icon-tooltip-alignment",
665
+ type: String
666
+ })], CDSSidePanel.prototype, "closeIconTooltipAlignment", void 0);
533
667
  __decorate([property({
534
668
  type: Boolean,
535
669
  reflect: true,
@@ -574,6 +708,10 @@ __decorate([property({
574
708
  reflect: true,
575
709
  attribute: "selector-page-content"
576
710
  })], CDSSidePanel.prototype, "selectorPageContent", void 0);
711
+ __decorate([property({
712
+ attribute: "hide-close-button",
713
+ type: Boolean
714
+ })], CDSSidePanel.prototype, "hideCloseButton", void 0);
577
715
  __decorate([property({
578
716
  reflect: true,
579
717
  type: String
@@ -583,6 +721,10 @@ __decorate([property({
583
721
  type: Boolean,
584
722
  reflect: true
585
723
  })], CDSSidePanel.prototype, "slideIn", void 0);
724
+ __decorate([property({
725
+ type: Boolean,
726
+ reflect: true
727
+ })], CDSSidePanel.prototype, "resizable", void 0);
586
728
  __decorate([property({
587
729
  reflect: false,
588
730
  type: String