@carbon/web-components 2.46.0 → 2.47.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (548) hide show
  1. package/custom-elements.json +89 -20
  2. package/es/components/ai-label/ai-label.d.ts +1 -1
  3. package/es/components/ai-label/ai-label.js +11 -2
  4. package/es/components/ai-label/ai-label.js.map +1 -1
  5. package/es/components/ai-label/ai-label.scss.js +1 -1
  6. package/es/components/ai-skeleton/ai-skeleton.scss.js +1 -1
  7. package/es/components/breadcrumb/breadcrumb-overflow-menu.d.ts +1 -1
  8. package/es/components/breadcrumb/breadcrumb-overflow-menu.js +7 -3
  9. package/es/components/breadcrumb/breadcrumb-overflow-menu.js.map +1 -1
  10. package/es/components/breadcrumb/breadcrumb.scss.js +1 -1
  11. package/es/components/button/button.scss.js +1 -1
  12. package/es/components/chat-button/chat-button-skeleton.d.ts +1 -1
  13. package/es/components/chat-button/chat-button-skeleton.js +6 -2
  14. package/es/components/chat-button/chat-button-skeleton.js.map +1 -1
  15. package/es/components/chat-button/chat-button.d.ts +1 -1
  16. package/es/components/chat-button/chat-button.js +6 -2
  17. package/es/components/chat-button/chat-button.js.map +1 -1
  18. package/es/components/chat-button/chat-button.scss.js +1 -1
  19. package/es/components/code-snippet/code-snippet.scss.js +1 -1
  20. package/es/components/combo-box/combo-box.d.ts +5 -1
  21. package/es/components/combo-box/combo-box.js +27 -3
  22. package/es/components/combo-box/combo-box.js.map +1 -1
  23. package/es/components/combo-box/combo-box.scss.js +1 -1
  24. package/es/components/copy/copy.d.ts +1 -1
  25. package/es/components/copy/copy.js +1 -2
  26. package/es/components/copy/copy.js.map +1 -1
  27. package/es/components/copy-button/copy-button.scss.js +1 -1
  28. package/es/components/data-table/data-table.scss.js +1 -1
  29. package/es/components/date-picker/range-plugin.d.ts +1 -1
  30. package/es/components/date-picker/range-plugin.js +1 -3
  31. package/es/components/date-picker/range-plugin.js.map +1 -1
  32. package/es/components/dropdown/dropdown.d.ts +3 -3
  33. package/es/components/dropdown/dropdown.js +1 -3
  34. package/es/components/dropdown/dropdown.js.map +1 -1
  35. package/es/components/dropdown/dropdown.scss.js +1 -1
  36. package/es/components/fluid-number-input/fluid-number-input.scss.js +1 -1
  37. package/es/components/fluid-search/fluid-search.scss.js +1 -1
  38. package/es/components/fluid-text-input/fluid-text-input.scss.js +1 -1
  39. package/es/components/grid/column-hang.d.ts +0 -2
  40. package/es/components/grid/column-hang.js +0 -2
  41. package/es/components/grid/column-hang.js.map +1 -1
  42. package/es/components/grid/column.d.ts +0 -2
  43. package/es/components/grid/column.js +0 -2
  44. package/es/components/grid/column.js.map +1 -1
  45. package/es/components/grid/grid.d.ts +0 -2
  46. package/es/components/grid/grid.js +0 -2
  47. package/es/components/grid/grid.js.map +1 -1
  48. package/es/components/grid/index.d.ts +0 -2
  49. package/es/components/icon-button/icon-button.d.ts +1 -1
  50. package/es/components/icon-button/icon-button.js +12 -3
  51. package/es/components/icon-button/icon-button.js.map +1 -1
  52. package/es/components/icon-button/icon-button.scss.js +2 -2
  53. package/es/components/menu/menu-context.d.ts +3 -2
  54. package/es/components/menu/menu-context.js +1 -1
  55. package/es/components/menu/menu-context.js.map +1 -1
  56. package/es/components/menu/menu.d.ts +3 -2
  57. package/es/components/menu/menu.js +5 -4
  58. package/es/components/menu/menu.js.map +1 -1
  59. package/es/components/menu/menu.scss.js +1 -1
  60. package/es/components/modal/modal-body.d.ts +3 -1
  61. package/es/components/modal/modal-body.js +17 -1
  62. package/es/components/modal/modal-body.js.map +1 -1
  63. package/es/components/modal/modal-close-button.d.ts +2 -1
  64. package/es/components/modal/modal-close-button.js +11 -5
  65. package/es/components/modal/modal-close-button.js.map +1 -1
  66. package/es/components/modal/modal.d.ts +67 -2
  67. package/es/components/modal/modal.js +228 -8
  68. package/es/components/modal/modal.js.map +1 -1
  69. package/es/components/modal/modal.scss.js +1 -1
  70. package/es/components/multi-select/multi-select.d.ts +2 -2
  71. package/es/components/multi-select/multi-select.js +8 -4
  72. package/es/components/multi-select/multi-select.js.map +1 -1
  73. package/es/components/multi-select/multi-select.scss.js +1 -1
  74. package/es/components/notification/actionable-notification.js +8 -1
  75. package/es/components/notification/actionable-notification.js.map +1 -1
  76. package/es/components/notification/actionable-notification.scss.js +1 -1
  77. package/es/components/notification/inline-notification.scss.js +1 -1
  78. package/es/components/notification/toast-notification.scss.js +1 -1
  79. package/es/components/overflow-menu/overflow-menu.d.ts +0 -1
  80. package/es/components/overflow-menu/overflow-menu.js +3 -2
  81. package/es/components/overflow-menu/overflow-menu.js.map +1 -1
  82. package/es/components/page-header/index.d.ts +0 -2
  83. package/es/components/page-header/page-header-breadcrumb.d.ts +0 -2
  84. package/es/components/page-header/page-header-breadcrumb.js +0 -2
  85. package/es/components/page-header/page-header-breadcrumb.js.map +1 -1
  86. package/es/components/page-header/page-header-content-text.d.ts +0 -2
  87. package/es/components/page-header/page-header-content-text.js +0 -2
  88. package/es/components/page-header/page-header-content-text.js.map +1 -1
  89. package/es/components/page-header/page-header-content.d.ts +0 -2
  90. package/es/components/page-header/page-header-content.js +0 -2
  91. package/es/components/page-header/page-header-content.js.map +1 -1
  92. package/es/components/page-header/page-header-hero-image.d.ts +0 -2
  93. package/es/components/page-header/page-header-hero-image.js +0 -2
  94. package/es/components/page-header/page-header-hero-image.js.map +1 -1
  95. package/es/components/page-header/page-header-tabs.d.ts +0 -2
  96. package/es/components/page-header/page-header-tabs.js +0 -2
  97. package/es/components/page-header/page-header-tabs.js.map +1 -1
  98. package/es/components/page-header/page-header.d.ts +0 -2
  99. package/es/components/page-header/page-header.js +0 -2
  100. package/es/components/page-header/page-header.js.map +1 -1
  101. package/es/components/pagination/pagination.js +7 -4
  102. package/es/components/pagination/pagination.js.map +1 -1
  103. package/es/components/password-input/password-input.scss.js +1 -1
  104. package/es/components/popover/popover-content.js +2 -2
  105. package/es/components/popover/popover-content.js.map +1 -1
  106. package/es/components/popover/popover.d.ts +7 -1
  107. package/es/components/popover/popover.js +54 -3
  108. package/es/components/popover/popover.js.map +1 -1
  109. package/es/components/popover/popover.scss.js +2 -2
  110. package/es/components/search/search.scss.js +1 -1
  111. package/es/components/slider/slider.scss.js +1 -1
  112. package/es/components/slug/slug.d.ts +1 -1
  113. package/es/components/slug/slug.js +11 -2
  114. package/es/components/slug/slug.js.map +1 -1
  115. package/es/components/slug/slug.scss.js +1 -1
  116. package/es/components/tabs/defs.d.ts +4 -0
  117. package/es/components/tabs/defs.js +4 -0
  118. package/es/components/tabs/defs.js.map +1 -1
  119. package/es/components/tabs/tabs.d.ts +2 -4
  120. package/es/components/tabs/tabs.js +37 -8
  121. package/es/components/tabs/tabs.js.map +1 -1
  122. package/es/components/tabs/tabs.scss.js +1 -1
  123. package/es/components/tag/dismissible-tag.d.ts +0 -2
  124. package/es/components/tag/dismissible-tag.js +0 -2
  125. package/es/components/tag/dismissible-tag.js.map +1 -1
  126. package/es/components/tag/operational-tag.d.ts +0 -2
  127. package/es/components/tag/operational-tag.js +0 -2
  128. package/es/components/tag/operational-tag.js.map +1 -1
  129. package/es/components/tag/selectable-tag.d.ts +0 -2
  130. package/es/components/tag/selectable-tag.js +0 -2
  131. package/es/components/tag/selectable-tag.js.map +1 -1
  132. package/es/components/tag/tag-skeleton.d.ts +0 -2
  133. package/es/components/tag/tag-skeleton.js +0 -2
  134. package/es/components/tag/tag-skeleton.js.map +1 -1
  135. package/es/components/text-input/text-input.scss.js +1 -1
  136. package/es/components/tile/tile.scss.js +1 -1
  137. package/es/components/time-picker/time-picker.scss.js +1 -1
  138. package/es/components/toggle-tip/toggletip.d.ts +0 -1
  139. package/es/components/toggle-tip/toggletip.js +4 -3
  140. package/es/components/toggle-tip/toggletip.js.map +1 -1
  141. package/es/components/toggle-tip/toggletip.scss.js +2 -2
  142. package/es/components/tooltip/definition-tooltip.js +5 -3
  143. package/es/components/tooltip/definition-tooltip.js.map +1 -1
  144. package/es/components/tooltip/tooltip-content.d.ts +0 -7
  145. package/es/components/tooltip/tooltip-content.js +4 -8
  146. package/es/components/tooltip/tooltip-content.js.map +1 -1
  147. package/es/components/tooltip/tooltip.d.ts +0 -1
  148. package/es/components/tooltip/tooltip.js +4 -7
  149. package/es/components/tooltip/tooltip.js.map +1 -1
  150. package/es/components/tooltip/tooltip.scss.js +2 -2
  151. package/es/components/tree-view/defs.d.ts +0 -2
  152. package/es/components/tree-view/defs.js +0 -2
  153. package/es/components/tree-view/defs.js.map +1 -1
  154. package/es/components/tree-view/index.d.ts +0 -2
  155. package/es/components/tree-view/tree-node.d.ts +0 -2
  156. package/es/components/tree-view/tree-node.js +0 -2
  157. package/es/components/tree-view/tree-node.js.map +1 -1
  158. package/es/components/tree-view/tree-view.d.ts +0 -2
  159. package/es/components/tree-view/tree-view.js +0 -2
  160. package/es/components/tree-view/tree-view.js.map +1 -1
  161. package/es/components/tree-view/tree-view.scss.js +1 -1
  162. package/es/components/ui-shell/header-global-action.d.ts +1 -1
  163. package/es/components/ui-shell/header-global-action.js +16 -2
  164. package/es/components/ui-shell/header-global-action.js.map +1 -1
  165. package/es/components/ui-shell/header-name.js +1 -1
  166. package/es/components/ui-shell/header-name.js.map +1 -1
  167. package/es/components/ui-shell/side-nav-menu-item.d.ts +4 -0
  168. package/es/components/ui-shell/side-nav-menu-item.js +10 -2
  169. package/es/components/ui-shell/side-nav-menu-item.js.map +1 -1
  170. package/es/globals/controllers/floating-controller.d.ts +1 -1
  171. package/es/globals/controllers/floating-controller.js +34 -30
  172. package/es/globals/controllers/floating-controller.js.map +1 -1
  173. package/es/globals/decorators/carbon-element.d.ts +5 -4
  174. package/es/globals/decorators/carbon-element.js +1 -1
  175. package/es/globals/decorators/carbon-element.js.map +1 -1
  176. package/es-custom/components/ai-label/ai-label.d.ts +1 -1
  177. package/es-custom/components/ai-label/ai-label.js +11 -2
  178. package/es-custom/components/ai-label/ai-label.js.map +1 -1
  179. package/es-custom/components/ai-label/ai-label.scss.js +1 -1
  180. package/es-custom/components/ai-skeleton/ai-skeleton.scss.js +1 -1
  181. package/es-custom/components/breadcrumb/breadcrumb-overflow-menu.d.ts +1 -1
  182. package/es-custom/components/breadcrumb/breadcrumb-overflow-menu.js +7 -3
  183. package/es-custom/components/breadcrumb/breadcrumb-overflow-menu.js.map +1 -1
  184. package/es-custom/components/breadcrumb/breadcrumb.scss.js +1 -1
  185. package/es-custom/components/button/button.scss.js +1 -1
  186. package/es-custom/components/chat-button/chat-button-skeleton.d.ts +1 -1
  187. package/es-custom/components/chat-button/chat-button-skeleton.js +6 -2
  188. package/es-custom/components/chat-button/chat-button-skeleton.js.map +1 -1
  189. package/es-custom/components/chat-button/chat-button.d.ts +1 -1
  190. package/es-custom/components/chat-button/chat-button.js +6 -2
  191. package/es-custom/components/chat-button/chat-button.js.map +1 -1
  192. package/es-custom/components/chat-button/chat-button.scss.js +1 -1
  193. package/es-custom/components/code-snippet/code-snippet.scss.js +1 -1
  194. package/es-custom/components/combo-box/combo-box.d.ts +5 -1
  195. package/es-custom/components/combo-box/combo-box.js +27 -3
  196. package/es-custom/components/combo-box/combo-box.js.map +1 -1
  197. package/es-custom/components/combo-box/combo-box.scss.js +1 -1
  198. package/es-custom/components/copy/copy.d.ts +1 -1
  199. package/es-custom/components/copy/copy.js +1 -2
  200. package/es-custom/components/copy/copy.js.map +1 -1
  201. package/es-custom/components/copy-button/copy-button.scss.js +1 -1
  202. package/es-custom/components/data-table/data-table.scss.js +1 -1
  203. package/es-custom/components/date-picker/range-plugin.d.ts +1 -1
  204. package/es-custom/components/date-picker/range-plugin.js +1 -3
  205. package/es-custom/components/date-picker/range-plugin.js.map +1 -1
  206. package/es-custom/components/dropdown/dropdown.d.ts +3 -3
  207. package/es-custom/components/dropdown/dropdown.js +1 -3
  208. package/es-custom/components/dropdown/dropdown.js.map +1 -1
  209. package/es-custom/components/dropdown/dropdown.scss.js +1 -1
  210. package/es-custom/components/fluid-number-input/fluid-number-input.scss.js +1 -1
  211. package/es-custom/components/fluid-search/fluid-search.scss.js +1 -1
  212. package/es-custom/components/fluid-text-input/fluid-text-input.scss.js +1 -1
  213. package/es-custom/components/grid/column-hang.d.ts +0 -2
  214. package/es-custom/components/grid/column-hang.js +0 -2
  215. package/es-custom/components/grid/column-hang.js.map +1 -1
  216. package/es-custom/components/grid/column.d.ts +0 -2
  217. package/es-custom/components/grid/column.js +0 -2
  218. package/es-custom/components/grid/column.js.map +1 -1
  219. package/es-custom/components/grid/grid.d.ts +0 -2
  220. package/es-custom/components/grid/grid.js +0 -2
  221. package/es-custom/components/grid/grid.js.map +1 -1
  222. package/es-custom/components/grid/index.d.ts +0 -2
  223. package/es-custom/components/icon-button/icon-button.d.ts +1 -1
  224. package/es-custom/components/icon-button/icon-button.js +12 -3
  225. package/es-custom/components/icon-button/icon-button.js.map +1 -1
  226. package/es-custom/components/icon-button/icon-button.scss.js +2 -2
  227. package/es-custom/components/menu/menu-context.d.ts +3 -2
  228. package/es-custom/components/menu/menu-context.js +1 -1
  229. package/es-custom/components/menu/menu-context.js.map +1 -1
  230. package/es-custom/components/menu/menu.d.ts +3 -2
  231. package/es-custom/components/menu/menu.js +5 -4
  232. package/es-custom/components/menu/menu.js.map +1 -1
  233. package/es-custom/components/menu/menu.scss.js +1 -1
  234. package/es-custom/components/modal/modal-body.d.ts +3 -1
  235. package/es-custom/components/modal/modal-body.js +17 -1
  236. package/es-custom/components/modal/modal-body.js.map +1 -1
  237. package/es-custom/components/modal/modal-close-button.d.ts +2 -1
  238. package/es-custom/components/modal/modal-close-button.js +11 -5
  239. package/es-custom/components/modal/modal-close-button.js.map +1 -1
  240. package/es-custom/components/modal/modal.d.ts +67 -2
  241. package/es-custom/components/modal/modal.js +228 -8
  242. package/es-custom/components/modal/modal.js.map +1 -1
  243. package/es-custom/components/modal/modal.scss.js +1 -1
  244. package/es-custom/components/multi-select/multi-select.d.ts +2 -2
  245. package/es-custom/components/multi-select/multi-select.js +8 -4
  246. package/es-custom/components/multi-select/multi-select.js.map +1 -1
  247. package/es-custom/components/multi-select/multi-select.scss.js +1 -1
  248. package/es-custom/components/notification/actionable-notification.js +8 -1
  249. package/es-custom/components/notification/actionable-notification.js.map +1 -1
  250. package/es-custom/components/notification/actionable-notification.scss.js +1 -1
  251. package/es-custom/components/notification/inline-notification.scss.js +1 -1
  252. package/es-custom/components/notification/toast-notification.scss.js +1 -1
  253. package/es-custom/components/overflow-menu/overflow-menu.d.ts +0 -1
  254. package/es-custom/components/overflow-menu/overflow-menu.js +3 -2
  255. package/es-custom/components/overflow-menu/overflow-menu.js.map +1 -1
  256. package/es-custom/components/page-header/index.d.ts +0 -2
  257. package/es-custom/components/page-header/page-header-breadcrumb.d.ts +0 -2
  258. package/es-custom/components/page-header/page-header-breadcrumb.js +0 -2
  259. package/es-custom/components/page-header/page-header-breadcrumb.js.map +1 -1
  260. package/es-custom/components/page-header/page-header-content-text.d.ts +0 -2
  261. package/es-custom/components/page-header/page-header-content-text.js +0 -2
  262. package/es-custom/components/page-header/page-header-content-text.js.map +1 -1
  263. package/es-custom/components/page-header/page-header-content.d.ts +0 -2
  264. package/es-custom/components/page-header/page-header-content.js +0 -2
  265. package/es-custom/components/page-header/page-header-content.js.map +1 -1
  266. package/es-custom/components/page-header/page-header-hero-image.d.ts +0 -2
  267. package/es-custom/components/page-header/page-header-hero-image.js +0 -2
  268. package/es-custom/components/page-header/page-header-hero-image.js.map +1 -1
  269. package/es-custom/components/page-header/page-header-tabs.d.ts +0 -2
  270. package/es-custom/components/page-header/page-header-tabs.js +0 -2
  271. package/es-custom/components/page-header/page-header-tabs.js.map +1 -1
  272. package/es-custom/components/page-header/page-header.d.ts +0 -2
  273. package/es-custom/components/page-header/page-header.js +0 -2
  274. package/es-custom/components/page-header/page-header.js.map +1 -1
  275. package/es-custom/components/pagination/pagination.js +7 -4
  276. package/es-custom/components/pagination/pagination.js.map +1 -1
  277. package/es-custom/components/password-input/password-input.scss.js +1 -1
  278. package/es-custom/components/popover/popover-content.js +2 -2
  279. package/es-custom/components/popover/popover-content.js.map +1 -1
  280. package/es-custom/components/popover/popover.d.ts +7 -1
  281. package/es-custom/components/popover/popover.js +54 -3
  282. package/es-custom/components/popover/popover.js.map +1 -1
  283. package/es-custom/components/popover/popover.scss.js +2 -2
  284. package/es-custom/components/search/search.scss.js +1 -1
  285. package/es-custom/components/slider/slider.scss.js +1 -1
  286. package/es-custom/components/slug/slug.d.ts +1 -1
  287. package/es-custom/components/slug/slug.js +11 -2
  288. package/es-custom/components/slug/slug.js.map +1 -1
  289. package/es-custom/components/slug/slug.scss.js +1 -1
  290. package/es-custom/components/tabs/defs.d.ts +4 -0
  291. package/es-custom/components/tabs/defs.js +4 -0
  292. package/es-custom/components/tabs/defs.js.map +1 -1
  293. package/es-custom/components/tabs/tabs.d.ts +2 -4
  294. package/es-custom/components/tabs/tabs.js +37 -8
  295. package/es-custom/components/tabs/tabs.js.map +1 -1
  296. package/es-custom/components/tabs/tabs.scss.js +1 -1
  297. package/es-custom/components/tag/dismissible-tag.d.ts +0 -2
  298. package/es-custom/components/tag/dismissible-tag.js +0 -2
  299. package/es-custom/components/tag/dismissible-tag.js.map +1 -1
  300. package/es-custom/components/tag/operational-tag.d.ts +0 -2
  301. package/es-custom/components/tag/operational-tag.js +0 -2
  302. package/es-custom/components/tag/operational-tag.js.map +1 -1
  303. package/es-custom/components/tag/selectable-tag.d.ts +0 -2
  304. package/es-custom/components/tag/selectable-tag.js +0 -2
  305. package/es-custom/components/tag/selectable-tag.js.map +1 -1
  306. package/es-custom/components/tag/tag-skeleton.d.ts +0 -2
  307. package/es-custom/components/tag/tag-skeleton.js +0 -2
  308. package/es-custom/components/tag/tag-skeleton.js.map +1 -1
  309. package/es-custom/components/text-input/text-input.scss.js +1 -1
  310. package/es-custom/components/tile/tile.scss.js +1 -1
  311. package/es-custom/components/time-picker/time-picker.scss.js +1 -1
  312. package/es-custom/components/toggle-tip/toggletip.d.ts +0 -1
  313. package/es-custom/components/toggle-tip/toggletip.js +4 -3
  314. package/es-custom/components/toggle-tip/toggletip.js.map +1 -1
  315. package/es-custom/components/toggle-tip/toggletip.scss.js +2 -2
  316. package/es-custom/components/tooltip/definition-tooltip.js +5 -3
  317. package/es-custom/components/tooltip/definition-tooltip.js.map +1 -1
  318. package/es-custom/components/tooltip/tooltip-content.d.ts +0 -7
  319. package/es-custom/components/tooltip/tooltip-content.js +4 -8
  320. package/es-custom/components/tooltip/tooltip-content.js.map +1 -1
  321. package/es-custom/components/tooltip/tooltip.d.ts +0 -1
  322. package/es-custom/components/tooltip/tooltip.js +4 -7
  323. package/es-custom/components/tooltip/tooltip.js.map +1 -1
  324. package/es-custom/components/tooltip/tooltip.scss.js +2 -2
  325. package/es-custom/components/tree-view/defs.d.ts +0 -2
  326. package/es-custom/components/tree-view/defs.js +0 -2
  327. package/es-custom/components/tree-view/defs.js.map +1 -1
  328. package/es-custom/components/tree-view/index.d.ts +0 -2
  329. package/es-custom/components/tree-view/tree-node.d.ts +0 -2
  330. package/es-custom/components/tree-view/tree-node.js +0 -2
  331. package/es-custom/components/tree-view/tree-node.js.map +1 -1
  332. package/es-custom/components/tree-view/tree-view.d.ts +0 -2
  333. package/es-custom/components/tree-view/tree-view.js +0 -2
  334. package/es-custom/components/tree-view/tree-view.js.map +1 -1
  335. package/es-custom/components/tree-view/tree-view.scss.js +1 -1
  336. package/es-custom/components/ui-shell/header-global-action.d.ts +1 -1
  337. package/es-custom/components/ui-shell/header-global-action.js +16 -2
  338. package/es-custom/components/ui-shell/header-global-action.js.map +1 -1
  339. package/es-custom/components/ui-shell/header-name.js +1 -1
  340. package/es-custom/components/ui-shell/header-name.js.map +1 -1
  341. package/es-custom/components/ui-shell/side-nav-menu-item.d.ts +4 -0
  342. package/es-custom/components/ui-shell/side-nav-menu-item.js +10 -2
  343. package/es-custom/components/ui-shell/side-nav-menu-item.js.map +1 -1
  344. package/es-custom/globals/controllers/floating-controller.d.ts +1 -1
  345. package/es-custom/globals/controllers/floating-controller.js +34 -30
  346. package/es-custom/globals/controllers/floating-controller.js.map +1 -1
  347. package/es-custom/globals/decorators/carbon-element.d.ts +5 -4
  348. package/es-custom/globals/decorators/carbon-element.js +1 -1
  349. package/es-custom/globals/decorators/carbon-element.js.map +1 -1
  350. package/lib/components/ai-label/ai-label.d.ts +1 -1
  351. package/lib/components/breadcrumb/breadcrumb-overflow-menu.d.ts +1 -1
  352. package/lib/components/chat-button/chat-button-skeleton.d.ts +1 -1
  353. package/lib/components/chat-button/chat-button.d.ts +1 -1
  354. package/lib/components/combo-box/combo-box.d.ts +5 -1
  355. package/lib/components/copy/copy.d.ts +1 -1
  356. package/lib/components/date-picker/range-plugin.d.ts +1 -1
  357. package/lib/components/dropdown/dropdown.d.ts +3 -3
  358. package/lib/components/grid/column-hang.d.ts +0 -2
  359. package/lib/components/grid/column.d.ts +0 -2
  360. package/lib/components/grid/grid.d.ts +0 -2
  361. package/lib/components/grid/index.d.ts +0 -2
  362. package/lib/components/icon-button/icon-button.d.ts +1 -1
  363. package/lib/components/menu/menu-context.d.ts +3 -2
  364. package/lib/components/menu/menu.d.ts +3 -2
  365. package/lib/components/modal/modal-body.d.ts +3 -1
  366. package/lib/components/modal/modal-close-button.d.ts +2 -1
  367. package/lib/components/modal/modal.d.ts +67 -2
  368. package/lib/components/multi-select/multi-select.d.ts +2 -2
  369. package/lib/components/overflow-menu/overflow-menu.d.ts +0 -1
  370. package/lib/components/page-header/index.d.ts +0 -2
  371. package/lib/components/page-header/page-header-breadcrumb.d.ts +0 -2
  372. package/lib/components/page-header/page-header-content-text.d.ts +0 -2
  373. package/lib/components/page-header/page-header-content.d.ts +0 -2
  374. package/lib/components/page-header/page-header-hero-image.d.ts +0 -2
  375. package/lib/components/page-header/page-header-tabs.d.ts +0 -2
  376. package/lib/components/page-header/page-header.d.ts +0 -2
  377. package/lib/components/popover/popover.d.ts +7 -1
  378. package/lib/components/slug/slug.d.ts +1 -1
  379. package/lib/components/tabs/defs.d.ts +4 -0
  380. package/lib/components/tabs/defs.js +4 -0
  381. package/lib/components/tabs/defs.js.map +1 -1
  382. package/lib/components/tabs/tabs.d.ts +2 -4
  383. package/lib/components/tag/dismissible-tag.d.ts +0 -2
  384. package/lib/components/tag/operational-tag.d.ts +0 -2
  385. package/lib/components/tag/selectable-tag.d.ts +0 -2
  386. package/lib/components/tag/tag-skeleton.d.ts +0 -2
  387. package/lib/components/toggle-tip/toggletip.d.ts +0 -1
  388. package/lib/components/tooltip/tooltip-content.d.ts +0 -7
  389. package/lib/components/tooltip/tooltip.d.ts +0 -1
  390. package/lib/components/tree-view/defs.d.ts +0 -2
  391. package/lib/components/tree-view/defs.js +0 -2
  392. package/lib/components/tree-view/defs.js.map +1 -1
  393. package/lib/components/tree-view/index.d.ts +0 -2
  394. package/lib/components/tree-view/tree-node.d.ts +0 -2
  395. package/lib/components/tree-view/tree-view.d.ts +0 -2
  396. package/lib/components/ui-shell/header-global-action.d.ts +1 -1
  397. package/lib/components/ui-shell/side-nav-menu-item.d.ts +4 -0
  398. package/lib/globals/controllers/floating-controller.d.ts +1 -1
  399. package/lib/globals/controllers/floating-controller.js +34 -30
  400. package/lib/globals/controllers/floating-controller.js.map +1 -1
  401. package/lib/globals/decorators/carbon-element.d.ts +5 -4
  402. package/package.json +7 -9
  403. package/scss/components/ai-label/ai-label.scss +11 -12
  404. package/scss/components/ai-skeleton/ai-skeleton.scss +1 -3
  405. package/scss/components/breadcrumb/breadcrumb.scss +0 -1
  406. package/scss/components/button/button.scss +0 -2
  407. package/scss/components/chat-button/chat-button.scss +0 -1
  408. package/scss/components/icon-button/icon-button.scss +0 -2
  409. package/scss/components/menu/menu.scss +11 -2
  410. package/scss/components/modal/modal.scss +27 -7
  411. package/scss/components/multi-select/multi-select.scss +2 -2
  412. package/scss/components/notification/actionable-notification.scss +42 -128
  413. package/scss/components/notification/inline-notification.scss +17 -69
  414. package/scss/components/notification/toast-notification.scss +16 -37
  415. package/scss/components/popover/popover.scss +4 -4
  416. package/scss/components/slug/slug.scss +11 -12
  417. package/scss/components/tabs/tabs.scss +7 -0
  418. package/scss/components/tile/tile.scss +1 -1
  419. package/scss/components/toggle-tip/toggletip.scss +0 -2
  420. package/scss/components/tooltip/tooltip.scss +0 -1
  421. package/telemetry.yml +11 -0
  422. package/dist/16-BXPirV4t.js +0 -28
  423. package/dist/16-BcPXq4VE.js +0 -28
  424. package/dist/16-BiojhJb6.js +0 -28
  425. package/dist/16-BirbARgt.js +0 -28
  426. package/dist/16-CCrV-EKs.js +0 -28
  427. package/dist/16-CNObEOvs.js +0 -28
  428. package/dist/16-CsHohlYG.js +0 -28
  429. package/dist/16-D9rqeJJl.js +0 -28
  430. package/dist/16-DEZ8LNs3.js +0 -28
  431. package/dist/16-DThcsE9v.js +0 -28
  432. package/dist/16-T0hLy__N.js +0 -28
  433. package/dist/16-mUGLFymm.js +0 -28
  434. package/dist/20-BSzLZNRY.js +0 -28
  435. package/dist/20-ZHgmfbqd.js +0 -28
  436. package/dist/accordion.min.js +0 -72
  437. package/dist/ai-label.min.js +0 -54
  438. package/dist/ai-skeleton.min.js +0 -37
  439. package/dist/badge-indicator.min.js +0 -28
  440. package/dist/breadcrumb.min.js +0 -46
  441. package/dist/button-3n7S6dfU.js +0 -94
  442. package/dist/button-skeleton-DE9AxBek.js +0 -48
  443. package/dist/button.min.js +0 -28
  444. package/dist/carbon-element-tFMTVffV.js +0 -28
  445. package/dist/chat-button.min.js +0 -40
  446. package/dist/checkbox-CFU6bnOa.js +0 -67
  447. package/dist/checkbox.min.js +0 -64
  448. package/dist/class-map-BLvVLLRH.js +0 -33
  449. package/dist/code-snippet.min.js +0 -85
  450. package/dist/collection-helpers-C8K_t6zj.js +0 -28
  451. package/dist/combo-box.min.js +0 -65
  452. package/dist/combo-button.min.js +0 -42
  453. package/dist/consume-DNv3sWri.js +0 -64
  454. package/dist/contained-list.min.js +0 -70
  455. package/dist/content-switcher-item-CXc-BbRX.js +0 -54
  456. package/dist/content-switcher.min.js +0 -28
  457. package/dist/copy-button.min.js +0 -44
  458. package/dist/data-table.min.js +0 -185
  459. package/dist/date-picker.min.js +0 -89
  460. package/dist/defs-CcLNpvSO.js +0 -28
  461. package/dist/directive-CwpJ03IP.js +0 -33
  462. package/dist/dropdown-item-CSXYY4Up.js +0 -100
  463. package/dist/dropdown.min.js +0 -31
  464. package/dist/feature-flags.min.js +0 -28
  465. package/dist/file-uploader.min.js +0 -106
  466. package/dist/floating-controller-ClaZwDaj.js +0 -28
  467. package/dist/floating-menu.min.js +0 -28
  468. package/dist/fluid-number-input.min.js +0 -28
  469. package/dist/fluid-search.min.js +0 -33
  470. package/dist/fluid-select.min.js +0 -30
  471. package/dist/fluid-text-input.min.js +0 -28
  472. package/dist/fluid-textarea.min.js +0 -36
  473. package/dist/focus-DCv16lgz.js +0 -28
  474. package/dist/form-D0wM2t2A.js +0 -28
  475. package/dist/form-group.min.js +0 -39
  476. package/dist/form.min.js +0 -30
  477. package/dist/grid.min.js +0 -60
  478. package/dist/heading.min.js +0 -33
  479. package/dist/host-listener-BFnrKETa.js +0 -28
  480. package/dist/host-listener-maKckXVl.js +0 -28
  481. package/dist/icon-button.min.js +0 -42
  482. package/dist/icon-indicator.min.js +0 -28
  483. package/dist/icon-loader-BiaaiIZd.js +0 -28
  484. package/dist/icon-loader-utils-Dw7YsY3n.js +0 -33
  485. package/dist/icon.min.js +0 -28
  486. package/dist/if-defined-B342gMhK.js +0 -33
  487. package/dist/if-non-empty-BXM4sQkm.js +0 -28
  488. package/dist/inline-loading.min.js +0 -39
  489. package/dist/layer.min.js +0 -28
  490. package/dist/link.min.js +0 -52
  491. package/dist/list.min.js +0 -39
  492. package/dist/lit-element-W7dQy3wx.js +0 -50
  493. package/dist/loading-icon-9dSwtpx9.js +0 -43
  494. package/dist/loading.min.js +0 -28
  495. package/dist/menu-button.min.js +0 -37
  496. package/dist/menu.min.js +0 -80
  497. package/dist/modal.min.js +0 -49
  498. package/dist/multi-select.min.js +0 -90
  499. package/dist/notification.min.js +0 -116
  500. package/dist/number-input.min.js +0 -103
  501. package/dist/on-Bh72-1o0.js +0 -28
  502. package/dist/overflow-menu.min.js +0 -49
  503. package/dist/page-header.min.js +0 -142
  504. package/dist/pagination.min.js +0 -104
  505. package/dist/password-input.min.js +0 -93
  506. package/dist/popover.min.js +0 -42
  507. package/dist/progress-bar.min.js +0 -49
  508. package/dist/progress-indicator.min.js +0 -62
  509. package/dist/property-D8KHfsO7.js +0 -33
  510. package/dist/query-DZZk85FD.js +0 -38
  511. package/dist/query-assigned-elements-CuK851Xm.js +0 -33
  512. package/dist/radio-button.min.js +0 -71
  513. package/dist/radio-group-manager-BbeUxJeN.js +0 -28
  514. package/dist/search-BpfBrZ_q.js +0 -58
  515. package/dist/search.min.js +0 -31
  516. package/dist/select-Bu-C3DEh.js +0 -109
  517. package/dist/select-item-CY7ZCgDO.js +0 -28
  518. package/dist/select-skeleton-Bj1W9rv-.js +0 -31
  519. package/dist/select.min.js +0 -28
  520. package/dist/settings-CVGvqY8T.js +0 -28
  521. package/dist/shape-indicator.min.js +0 -28
  522. package/dist/shared-enums-D2BNx9-N.js +0 -28
  523. package/dist/side-panel.min.js +0 -160
  524. package/dist/skeleton-icon.min.js +0 -28
  525. package/dist/skeleton-placeholder.min.js +0 -28
  526. package/dist/skeleton-text.min.js +0 -28
  527. package/dist/skip-to-content.min.js +0 -32
  528. package/dist/slider.min.js +0 -273
  529. package/dist/slug.min.js +0 -54
  530. package/dist/stack.min.js +0 -28
  531. package/dist/state-DVnprZ3A.js +0 -33
  532. package/dist/structured-list.min.js +0 -46
  533. package/dist/tabs.min.js +0 -85
  534. package/dist/tag.min.js +0 -155
  535. package/dist/tearsheet.min.js +0 -141
  536. package/dist/text-input-CMLDDQcE.js +0 -95
  537. package/dist/text-input.min.js +0 -31
  538. package/dist/textarea.min.js +0 -84
  539. package/dist/tile.min.js +0 -101
  540. package/dist/time-picker.min.js +0 -79
  541. package/dist/toggle-tip.min.js +0 -73
  542. package/dist/toggle.min.js +0 -63
  543. package/dist/tooltip-content-eYgOs_c2.js +0 -30
  544. package/dist/tooltip.min.js +0 -50
  545. package/dist/tree-view.min.js +0 -127
  546. package/dist/ui-shell.min.js +0 -156
  547. package/dist/unsafe-html-SGvBIOsG.js +0 -33
  548. package/dist/validity-CzCNnEZK.js +0 -28
@@ -15,9 +15,10 @@ import HostListenerMixin from '../../globals/mixins/host-listener.js';
15
15
  import { MODAL_SIZE } from './defs.js';
16
16
  import styles from './modal.scss.js';
17
17
  import { carbonElement } from '../../globals/decorators/carbon-element.js';
18
+ import '../inline-loading/inline-loading.js';
18
19
 
19
20
  /**
20
- * Copyright IBM Corp. 2019, 2024
21
+ * Copyright IBM Corp. 2019, 2026
21
22
  *
22
23
  * This source code is licensed under the Apache-2.0 license found in the
23
24
  * LICENSE file in the root directory of this source tree.
@@ -39,6 +40,14 @@ let CDSModal = class CDSModal extends HostListenerMixin(LitElement) {
39
40
  * The element that had focus before this modal gets open.
40
41
  */
41
42
  this._launcher = null;
43
+ /**
44
+ * The inline loading element that renders when `loading-status` is not `inactive`
45
+ */
46
+ this._loadingEl = null;
47
+ /**
48
+ * Loading statuses that are not `inactive`
49
+ */
50
+ this.WORKING_LOADING_STATUSES = ['active', 'finished', 'error'];
42
51
  /**
43
52
  * Handles `click` event on this element.
44
53
  *
@@ -59,11 +68,27 @@ let CDSModal = class CDSModal extends HostListenerMixin(LitElement) {
59
68
  * @param {KeyboardEvent} event The keyboard event object.
60
69
  */
61
70
  this._handleHostKeydown = (event) => {
62
- var _a;
71
+ var _a, _b, _c;
72
+ const target = event.target;
73
+ const { primaryButton } = this._getFooterElements();
74
+ if (this.open &&
75
+ this.shouldSubmitOnEnter &&
76
+ event.key === 'Enter' &&
77
+ target &&
78
+ document.activeElement !== primaryButton) {
79
+ const closeButton = this.constructor
80
+ .selectorCloseButton;
81
+ const targetIsCloseButton = !!target.closest(closeButton) ||
82
+ !!((_b = (_a = document.activeElement) === null || _a === void 0 ? void 0 : _a.closest) === null || _b === void 0 ? void 0 : _b.call(_a, closeButton));
83
+ if (!targetIsCloseButton) {
84
+ primaryButton === null || primaryButton === void 0 ? void 0 : primaryButton.click();
85
+ return;
86
+ }
87
+ }
63
88
  if (event.key === 'Tab') {
64
89
  const { first: _firstElement, last: _lastElement } = this.getFocusable();
65
90
  if (event.shiftKey &&
66
- (((_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.activeElement) === _firstElement ||
91
+ (((_c = this.shadowRoot) === null || _c === void 0 ? void 0 : _c.activeElement) === _firstElement ||
67
92
  document.activeElement === _firstElement)) {
68
93
  event.preventDefault();
69
94
  _lastElement === null || _lastElement === void 0 ? void 0 : _lastElement.focus();
@@ -112,6 +137,26 @@ let CDSModal = class CDSModal extends HostListenerMixin(LitElement) {
112
137
  * Prevent closing on click outside of modal
113
138
  */
114
139
  this.preventCloseOnClickOutside = false;
140
+ /**
141
+ * Specify the loading status
142
+ */
143
+ this.loadingStatus = 'inactive';
144
+ /**
145
+ * Specify the description for the loading text
146
+ */
147
+ this.loadingDescription = '';
148
+ /**
149
+ * Provide a delay for the setTimeout for success
150
+ */
151
+ this.loadingSuccessDelay = 1500;
152
+ /**
153
+ * Specify the description for the loading icon
154
+ */
155
+ this.loadingIconDescription = 'Loading';
156
+ /**
157
+ * Specify if Enter key should be used as "submit" action that clicks the primary footer button
158
+ */
159
+ this.shouldSubmitOnEnter = false;
115
160
  /**
116
161
  * Prevent the modal from closing after clicking the close button
117
162
  */
@@ -180,15 +225,145 @@ let CDSModal = class CDSModal extends HostListenerMixin(LitElement) {
180
225
  ? this.setAttribute('has-footer', '')
181
226
  : this.removeAttribute('has-footer');
182
227
  }
183
- firstUpdated() {
228
+ // Initializes the inline-loading element
229
+ _initializeLoadingEl(footer) {
230
+ if (!footer)
231
+ return null;
232
+ if (!this._loadingEl &&
233
+ this.WORKING_LOADING_STATUSES.includes(this.loadingStatus)) {
234
+ const el = document.createElement(`${prefix}-inline-loading`);
235
+ el.setAttribute('controlled', '');
236
+ el.setAttribute('aria-live', 'off');
237
+ footer.appendChild(el);
238
+ this._loadingEl = el;
239
+ }
240
+ return this._loadingEl;
241
+ }
242
+ _getFooterElements() {
243
+ const footer = this.querySelector(`${prefix}-modal-footer`);
244
+ const primaryButton = this.querySelector(`${prefix}-modal-footer-button[kind="primary"]`) ||
245
+ this.querySelector(`${prefix}-modal-footer-button[kind="danger"]`) ||
246
+ null;
247
+ const secondaryButtons = Array.from(this.querySelectorAll(`${prefix}-modal-footer-button[kind="secondary"]`));
248
+ return { footer, primaryButton, secondaryButtons };
249
+ }
250
+ // Updates the inline loading element in the modal footer
251
+ _updateLoadingElement() {
252
+ const { footer, primaryButton, secondaryButtons } = this._getFooterElements();
253
+ const loader = this._initializeLoadingEl(footer);
254
+ if (!footer || !loader || !primaryButton)
255
+ return;
256
+ if (this.WORKING_LOADING_STATUSES.includes(this.loadingStatus)) {
257
+ loader.style.display = 'inline-flex';
258
+ loader.setAttribute('status', String(this.loadingStatus));
259
+ loader.setAttribute('aria-live', 'assertive');
260
+ loader.setAttribute('icon-description', String(this.loadingIconDescription));
261
+ loader.textContent = this.loadingDescription;
262
+ primaryButton.style.display = 'none';
263
+ if (secondaryButtons[0]) {
264
+ if (!footer.hasAttribute('has-three-buttons')) {
265
+ secondaryButtons[0].setAttribute('disabled', '');
266
+ }
267
+ else {
268
+ secondaryButtons.forEach((b) => b.removeAttribute('disabled'));
269
+ }
270
+ }
271
+ if (this.loadingStatus === 'finished') {
272
+ // fire event for successful load
273
+ setTimeout(() => {
274
+ this.dispatchEvent(new CustomEvent(this.constructor.eventOnLoadingSuccess, {
275
+ bubbles: true,
276
+ cancelable: true,
277
+ composed: true,
278
+ }));
279
+ }, this.loadingSuccessDelay);
280
+ }
281
+ }
282
+ else if (this.loadingStatus === 'inactive') {
283
+ loader.style.display = 'none';
284
+ loader.setAttribute('aria-live', 'off');
285
+ if (primaryButton)
286
+ primaryButton.style.display = '';
287
+ if (secondaryButtons)
288
+ secondaryButtons.forEach((b) => b.removeAttribute('disabled'));
289
+ }
290
+ }
291
+ async firstUpdated() {
184
292
  const body = this.querySelector(this.constructor.selectorModalBody);
185
293
  if (!body) {
186
294
  const bodyElement = document.createElement(this.constructor.selectorModalBody);
187
295
  this.appendChild(bodyElement);
188
296
  }
189
297
  }
298
+ /**
299
+ * Computes the aria-label of the modal based on (in order of highest to lowest precedence):
300
+ * - `modal-label`
301
+ * - `aria-label`
302
+ * - `modal-heading`
303
+ */
304
+ _computeAriaLabel() {
305
+ var _a, _b, _c;
306
+ const labelEl = this.querySelector(`${prefix}-modal-label`);
307
+ const label = (_a = labelEl === null || labelEl === void 0 ? void 0 : labelEl.textContent) === null || _a === void 0 ? void 0 : _a.trim();
308
+ if (label)
309
+ return label;
310
+ const ariaLabel = (_b = this.ariaLabel) === null || _b === void 0 ? void 0 : _b.trim();
311
+ if (ariaLabel)
312
+ return ariaLabel;
313
+ const headingEl = this.querySelector(`${prefix}-modal-heading`);
314
+ const heading = (_c = headingEl === null || headingEl === void 0 ? void 0 : headingEl.textContent) === null || _c === void 0 ? void 0 : _c.trim();
315
+ return heading || '';
316
+ }
317
+ /**
318
+ * Observes the modal footer's `has-three-buttons` attribute to account for cases
319
+ * where the loading status and the amount of footer-buttons
320
+ * are being changed dynamically
321
+ */
322
+ _observeFooter() {
323
+ const footer = this.querySelector(`${prefix}-modal-footer`);
324
+ if (!footer)
325
+ return;
326
+ this._footerObserver = new MutationObserver(() => {
327
+ this._updateLoadingElement();
328
+ });
329
+ this._footerObserver.observe(footer, {
330
+ attributes: true,
331
+ childList: true,
332
+ attributeFilter: ['has-three-buttons'],
333
+ });
334
+ }
335
+ /**
336
+ * Observes the modal header to account for cases where the modal-heading,
337
+ * modal-label, and/or `aria-label` are dynamically changing
338
+ * to update the `aria-label` put on the modal
339
+ */
340
+ _observeHeader() {
341
+ const header = this.querySelector(`${prefix}-modal-header`);
342
+ if (!header)
343
+ return;
344
+ this._headerObserver = new MutationObserver(() => {
345
+ this.requestUpdate('ariaLabel');
346
+ });
347
+ this._headerObserver.observe(header, {
348
+ subtree: true,
349
+ characterData: true,
350
+ childList: true,
351
+ });
352
+ }
353
+ connectedCallback() {
354
+ var _a;
355
+ (_a = super.connectedCallback) === null || _a === void 0 ? void 0 : _a.call(this);
356
+ this._observeFooter();
357
+ this._observeHeader();
358
+ }
359
+ disconnectedCallback() {
360
+ var _a, _b, _c;
361
+ (_a = this._footerObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
362
+ (_b = this._headerObserver) === null || _b === void 0 ? void 0 : _b.disconnect();
363
+ (_c = super.disconnectedCallback) === null || _c === void 0 ? void 0 : _c.call(this);
364
+ }
190
365
  render() {
191
- const { alert, ariaLabel, size, hasScrollingContent } = this;
366
+ const { alert, size, hasScrollingContent } = this;
192
367
  const containerClass = this.containerClass
193
368
  .split(' ')
194
369
  .filter(Boolean)
@@ -196,9 +371,10 @@ let CDSModal = class CDSModal extends HostListenerMixin(LitElement) {
196
371
  const containerClasses = classMap(Object.assign({ [`${prefix}--modal-container`]: true, [`${prefix}--modal-container--${size}`]: size }, containerClass));
197
372
  return html `
198
373
  <div
199
- aria-label=${ariaLabel}
374
+ aria-label=${this._computeAriaLabel()}
200
375
  part="dialog"
201
376
  class=${containerClasses}
377
+ aria-modal=${true}
202
378
  role="${alert ? 'alert' : 'dialog'}"
203
379
  tabindex="-1"
204
380
  @click=${this._handleClickContainer}>
@@ -222,8 +398,20 @@ let CDSModal = class CDSModal extends HostListenerMixin(LitElement) {
222
398
  primaryFocusNode.focus();
223
399
  }
224
400
  else {
225
- const { first } = this.getFocusable();
226
- first === null || first === void 0 ? void 0 : first.focus();
401
+ const { primaryButton, secondaryButtons } = this._getFooterElements();
402
+ if (primaryButton) {
403
+ const kind = primaryButton === null || primaryButton === void 0 ? void 0 : primaryButton.getAttribute('kind');
404
+ if (kind === 'danger' && secondaryButtons[0]) {
405
+ secondaryButtons[0].focus();
406
+ }
407
+ else {
408
+ primaryButton.focus();
409
+ }
410
+ }
411
+ else {
412
+ const { first } = this.getFocusable();
413
+ first === null || first === void 0 ? void 0 : first.focus();
414
+ }
227
415
  }
228
416
  }
229
417
  else if (this._launcher &&
@@ -232,6 +420,13 @@ let CDSModal = class CDSModal extends HostListenerMixin(LitElement) {
232
420
  this._launcher = null;
233
421
  }
234
422
  }
423
+ if (changedProperties.has('loadingStatus') ||
424
+ changedProperties.has('loadingDescription') ||
425
+ changedProperties.has('loadingSuccessDelay') ||
426
+ changedProperties.has('loadingIconDescription')) {
427
+ await this.constructor._delay();
428
+ this._updateLoadingElement();
429
+ }
235
430
  }
236
431
  /**
237
432
  * @param ms The number of milliseconds.
@@ -279,6 +474,12 @@ let CDSModal = class CDSModal extends HostListenerMixin(LitElement) {
279
474
  static get eventClose() {
280
475
  return `${prefix}-modal-closed`;
281
476
  }
477
+ /**
478
+ * The name of the custom event fired when this modal reaches a `finished` loading state
479
+ */
480
+ static get eventOnLoadingSuccess() {
481
+ return `${prefix}-modal-on-loadingsuccess`;
482
+ }
282
483
  };
283
484
  CDSModal.styles = styles;
284
485
  __decorate([
@@ -322,6 +523,25 @@ __decorate([
322
523
  __decorate([
323
524
  property({ type: Boolean, attribute: 'prevent-close-on-click-outside' })
324
525
  ], CDSModal.prototype, "preventCloseOnClickOutside", void 0);
526
+ __decorate([
527
+ property({ reflect: true, attribute: 'loading-status' })
528
+ ], CDSModal.prototype, "loadingStatus", void 0);
529
+ __decorate([
530
+ property({ type: String, attribute: 'loading-description' })
531
+ ], CDSModal.prototype, "loadingDescription", void 0);
532
+ __decorate([
533
+ property({ type: Number, attribute: 'loading-success-delay' })
534
+ ], CDSModal.prototype, "loadingSuccessDelay", void 0);
535
+ __decorate([
536
+ property({ type: String, attribute: 'loading-icon-description' })
537
+ ], CDSModal.prototype, "loadingIconDescription", void 0);
538
+ __decorate([
539
+ property({
540
+ type: Boolean,
541
+ reflect: true,
542
+ attribute: 'should-submit-on-enter',
543
+ })
544
+ ], CDSModal.prototype, "shouldSubmitOnEnter", void 0);
325
545
  __decorate([
326
546
  property({ type: Boolean, attribute: 'prevent-close' })
327
547
  ], CDSModal.prototype, "preventClose", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"modal.js","sources":["../../../src/components/modal/modal.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2019, 2024\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { classMap } from 'lit/directives/class-map.js';\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { prefix } from '../../globals/settings';\nimport HostListener from '../../globals/decorators/host-listener';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport { MODAL_SIZE } from './defs';\nimport styles from './modal.scss?lit';\nimport { selectorTabbable } from '../../globals/settings';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\n\nexport { MODAL_SIZE };\n\n/**\n * Modal.\n *\n * @element cds-modal\n * @csspart dialog The dialog.\n * @fires cds-modal-beingclosed\n * The custom event fired before this modal is being closed upon a user gesture.\n * Cancellation of this event stops the user-initiated action of closing this modal.\n * @fires cds-modal-closed - The custom event fired after this modal is closed upon a user gesture.\n */\n@customElement(`${prefix}-modal`)\nclass CDSModal extends HostListenerMixin(LitElement) {\n /**\n * The element that had focus before this modal gets open.\n */\n private _launcher: Element | null = null;\n\n /**\n * Handles `click` event on this element.\n *\n * @param event The event.\n */\n @HostListener('click')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleClick = (event: MouseEvent) => {\n if (\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n event.composedPath().indexOf(this.shadowRoot!) < 0 &&\n !this.preventCloseOnClickOutside\n ) {\n this._handleUserInitiatedClose(event.target);\n }\n };\n\n /**\n * Handle the keydown event.\n * Trap the focus inside the side-panel by tracking keydown.key == `Tab`\n *\n * @param {KeyboardEvent} event The keyboard event object.\n */\n @HostListener('keydown')\n protected _handleHostKeydown = (event: KeyboardEvent) => {\n if (event.key === 'Tab') {\n const { first: _firstElement, last: _lastElement } = this.getFocusable();\n\n if (\n event.shiftKey &&\n (this.shadowRoot?.activeElement === _firstElement ||\n document.activeElement === _firstElement)\n ) {\n event.preventDefault();\n\n _lastElement?.focus();\n } else if (!event.shiftKey && document.activeElement === _lastElement) {\n event.preventDefault();\n\n _firstElement?.focus();\n }\n }\n };\n\n @HostListener('document:keydown')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleKeydown = ({ key, target }: KeyboardEvent) => {\n if (key === 'Esc' || key === 'Escape') {\n this._handleUserInitiatedClose(target);\n }\n };\n\n /**\n * Get focusable elements.\n *\n * Querying all tabbable items.\n *\n * @returns {{first: HTMLElement, last: HTMLElement, all: HTMLElement[]}} Returns an object with various elements.\n */\n private getFocusable(): {\n first: HTMLElement | undefined;\n last: HTMLElement | undefined;\n all: HTMLElement[];\n } {\n const elements: HTMLElement[] = [];\n\n // Add tabbable elements inside light DOM\n const tabbableItems = this.querySelectorAll<HTMLElement>(selectorTabbable);\n if (tabbableItems?.length) {\n elements.push(...tabbableItems);\n }\n\n // Flatten NodeList arrays and filter for focusable items\n const all = elements?.filter(\n (el): el is HTMLElement => typeof el?.focus === 'function'\n );\n\n return {\n first: all[0],\n last: all[all.length - 1],\n all,\n };\n }\n\n /**\n * Handles `click` event on the modal container.\n *\n * @param event The event.\n */\n private _handleClickContainer(event: MouseEvent) {\n if (\n (event.target as Element).matches(\n (this.constructor as typeof CDSModal).selectorCloseButton\n ) &&\n !this.preventClose\n ) {\n this._handleUserInitiatedClose(event.target);\n }\n }\n\n /**\n * Handles user-initiated close request of this modal.\n *\n * @param triggeredBy The element that triggered this close request.\n */\n private _handleUserInitiatedClose(triggeredBy: EventTarget | null) {\n if (this.open) {\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n triggeredBy,\n },\n };\n if (\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSModal).eventBeforeClose,\n init\n )\n )\n ) {\n this.open = false;\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSModal).eventClose,\n init\n )\n );\n }\n }\n }\n\n /**\n * Handles `slotchange` event.\n */\n private _handleSlotChange() {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- https://github.com/carbon-design-system/carbon/issues/20452\n this.querySelector(`${prefix}-modal-footer`)\n ? this.setAttribute('has-footer', '')\n : this.removeAttribute('has-footer');\n }\n\n /**\n * Specify whether the Modal is displaying an alert, error or warning.\n * Should go hand in hand with the danger prop.\n */\n @property({ type: Boolean, reflect: true })\n alert = false;\n\n /**\n * Specify text for the accessibility label of the header\n */\n @property({ attribute: 'aria-label' })\n ariaLabel = '';\n\n /**\n * The additional CSS class names for the container <div> of the element.\n */\n @property({ attribute: 'container-class' })\n containerClass = '';\n\n /**\n * Specify whether or not the Modal content should have any inner padding.\n */\n @property({ type: Boolean, reflect: true, attribute: 'full-width' })\n fullWidth = false;\n\n /**\n * Specify whether the modal contains scrolling content\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'has-scrolling-content',\n })\n hasScrollingContent = false;\n\n /**\n * `true` if the modal should be open.\n */\n @property({ type: Boolean, reflect: true })\n open = false;\n\n /**\n * Modal size.\n */\n @property({ reflect: true })\n size = MODAL_SIZE.MEDIUM;\n\n /**\n * Prevent closing on click outside of modal\n */\n @property({ type: Boolean, attribute: 'prevent-close-on-click-outside' })\n preventCloseOnClickOutside = false;\n\n /**\n * Prevent the modal from closing after clicking the close button\n */\n @property({ type: Boolean, attribute: 'prevent-close' })\n preventClose = false;\n\n firstUpdated() {\n const body = this.querySelector(\n (this.constructor as typeof CDSModal).selectorModalBody\n );\n\n if (!body) {\n const bodyElement = document.createElement(\n (this.constructor as typeof CDSModal).selectorModalBody\n );\n this.appendChild(bodyElement);\n }\n }\n\n render() {\n const { alert, ariaLabel, size, hasScrollingContent } = this;\n const containerClass = this.containerClass\n .split(' ')\n .filter(Boolean)\n .reduce((acc, item) => ({ ...acc, [item]: true }), {});\n const containerClasses = classMap({\n [`${prefix}--modal-container`]: true,\n [`${prefix}--modal-container--${size}`]: size,\n ...containerClass,\n });\n return html`\n <div\n aria-label=${ariaLabel}\n part=\"dialog\"\n class=${containerClasses}\n role=\"${alert ? 'alert' : 'dialog'}\"\n tabindex=\"-1\"\n @click=${this._handleClickContainer}>\n <slot @slotchange=\"${this._handleSlotChange}\"></slot>\n ${hasScrollingContent\n ? html` <div class=\"cds--modal-content--overflow-indicator\"></div> `\n : ``}\n </div>\n `;\n }\n\n async updated(changedProperties) {\n if (changedProperties.has('open')) {\n if (this.open) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n this._launcher = this.ownerDocument!.activeElement;\n const primaryFocusNode = this.querySelector(\n (this.constructor as typeof CDSModal).selectorPrimaryFocus\n );\n await (this.constructor as typeof CDSModal)._delay();\n if (primaryFocusNode) {\n // For cases where a `carbon-web-components` component (e.g. `<cds-button>`) being `primaryFocusNode`,\n // where its first update/render cycle that makes it focusable happens after `<cds-modal>`'s first update/render cycle\n (primaryFocusNode as HTMLElement).focus();\n } else {\n const { first } = this.getFocusable();\n\n first?.focus();\n }\n } else if (\n this._launcher &&\n typeof (this._launcher as HTMLElement).focus === 'function'\n ) {\n (this._launcher as HTMLElement).focus();\n this._launcher = null;\n }\n }\n }\n\n /**\n * @param ms The number of milliseconds.\n * @returns A promise that is resolves after the given milliseconds.\n */\n private static _delay(ms = 0) {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n }\n\n /**\n * A selector selecting buttons that should close this modal.\n */\n static get selectorCloseButton() {\n return `[data-modal-close],${prefix}-modal-close-button`;\n }\n\n /**\n * A selector selecting tabbable nodes.\n */\n static get selectorTabbable() {\n return selectorTabbable;\n }\n\n /**\n * A selector selecting the nodes that should be focused when modal gets open.\n */\n static get selectorPrimaryFocus() {\n return `[data-modal-primary-focus],${prefix}-modal-footer ${prefix}-button[kind=\"primary\"]`;\n }\n\n /**\n * A selector selecting the modal body component\n */\n static get selectorModalBody() {\n return `${prefix}-modal-body`;\n }\n\n /**\n * The name of the custom event fired before this modal is being closed upon a user gesture.\n * Cancellation of this event stops the user-initiated action of closing this modal.\n */\n static get eventBeforeClose() {\n return `${prefix}-modal-beingclosed`;\n }\n\n /**\n * The name of the custom event fired after this modal is closed upon a user gesture.\n */\n static get eventClose() {\n return `${prefix}-modal-closed`;\n }\n\n static styles = styles;\n}\n\nexport default CDSModal;\n"],"names":["customElement"],"mappings":"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"}
1
+ {"version":3,"file":"modal.js","sources":["../../../src/components/modal/modal.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 { classMap } from 'lit/directives/class-map.js';\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { prefix } from '../../globals/settings';\nimport HostListener from '../../globals/decorators/host-listener';\nimport HostListenerMixin from '../../globals/mixins/host-listener';\nimport { MODAL_SIZE } from './defs';\nimport styles from './modal.scss?lit';\nimport { selectorTabbable } from '../../globals/settings';\nimport { carbonElement as customElement } from '../../globals/decorators/carbon-element';\nimport '../inline-loading';\nimport CDSModalFooter from './modal-footer';\n\nexport { MODAL_SIZE };\n\n/**\n * Modal.\n *\n * @element cds-modal\n * @csspart dialog The dialog.\n * @fires cds-modal-beingclosed\n * The custom event fired before this modal is being closed upon a user gesture.\n * Cancellation of this event stops the user-initiated action of closing this modal.\n * @fires cds-modal-closed - The custom event fired after this modal is closed upon a user gesture.\n */\n@customElement(`${prefix}-modal`)\nclass CDSModal extends HostListenerMixin(LitElement) {\n /**\n * The element that had focus before this modal gets open.\n */\n private _launcher: Element | null = null;\n\n /**\n * The inline loading element that renders when `loading-status` is not `inactive`\n */\n private _loadingEl: HTMLElement | null = null;\n\n /**\n * MutationObserver that observes the modal-footer\n */\n private _footerObserver?: MutationObserver;\n\n /**\n * MutationObserver that observes the modal-header\n */\n private _headerObserver?: MutationObserver;\n\n /**\n * Loading statuses that are not `inactive`\n */\n private WORKING_LOADING_STATUSES = ['active', 'finished', 'error'];\n\n /**\n * Handles `click` event on this element.\n *\n * @param event The event.\n */\n @HostListener('click')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleClick = (event: MouseEvent) => {\n if (\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n event.composedPath().indexOf(this.shadowRoot!) < 0 &&\n !this.preventCloseOnClickOutside\n ) {\n this._handleUserInitiatedClose(event.target);\n }\n };\n\n /**\n * Handle the keydown event.\n * Trap the focus inside the side-panel by tracking keydown.key == `Tab`\n *\n * @param {KeyboardEvent} event The keyboard event object.\n */\n @HostListener('keydown')\n protected _handleHostKeydown = (event: KeyboardEvent) => {\n const target = event.target as HTMLElement | null;\n const { primaryButton } = this._getFooterElements();\n\n if (\n this.open &&\n this.shouldSubmitOnEnter &&\n event.key === 'Enter' &&\n target &&\n document.activeElement !== primaryButton\n ) {\n const closeButton = (this.constructor as typeof CDSModal)\n .selectorCloseButton;\n\n const targetIsCloseButton =\n !!target.closest(closeButton) ||\n !!document.activeElement?.closest?.(closeButton);\n\n if (!targetIsCloseButton) {\n primaryButton?.click();\n return;\n }\n }\n if (event.key === 'Tab') {\n const { first: _firstElement, last: _lastElement } = this.getFocusable();\n\n if (\n event.shiftKey &&\n (this.shadowRoot?.activeElement === _firstElement ||\n document.activeElement === _firstElement)\n ) {\n event.preventDefault();\n\n _lastElement?.focus();\n } else if (!event.shiftKey && document.activeElement === _lastElement) {\n event.preventDefault();\n\n _firstElement?.focus();\n }\n }\n };\n\n @HostListener('document:keydown')\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment -- https://github.com/carbon-design-system/carbon/issues/20452\n // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to\n private _handleKeydown = ({ key, target }: KeyboardEvent) => {\n if (key === 'Esc' || key === 'Escape') {\n this._handleUserInitiatedClose(target);\n }\n };\n\n /**\n * Get focusable elements.\n *\n * Querying all tabbable items.\n *\n * @returns {{first: HTMLElement, last: HTMLElement, all: HTMLElement[]}} Returns an object with various elements.\n */\n private getFocusable(): {\n first: HTMLElement | undefined;\n last: HTMLElement | undefined;\n all: HTMLElement[];\n } {\n const elements: HTMLElement[] = [];\n\n // Add tabbable elements inside light DOM\n const tabbableItems = this.querySelectorAll<HTMLElement>(selectorTabbable);\n if (tabbableItems?.length) {\n elements.push(...tabbableItems);\n }\n\n // Flatten NodeList arrays and filter for focusable items\n const all = elements?.filter(\n (el): el is HTMLElement => typeof el?.focus === 'function'\n );\n\n return {\n first: all[0],\n last: all[all.length - 1],\n all,\n };\n }\n\n /**\n * Handles `click` event on the modal container.\n *\n * @param event The event.\n */\n private _handleClickContainer(event: MouseEvent) {\n if (\n (event.target as Element).matches(\n (this.constructor as typeof CDSModal).selectorCloseButton\n ) &&\n !this.preventClose\n ) {\n this._handleUserInitiatedClose(event.target);\n }\n }\n\n /**\n * Handles user-initiated close request of this modal.\n *\n * @param triggeredBy The element that triggered this close request.\n */\n private _handleUserInitiatedClose(triggeredBy: EventTarget | null) {\n if (this.open) {\n const init = {\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {\n triggeredBy,\n },\n };\n if (\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSModal).eventBeforeClose,\n init\n )\n )\n ) {\n this.open = false;\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSModal).eventClose,\n init\n )\n );\n }\n }\n }\n\n /**\n * Handles `slotchange` event.\n */\n private _handleSlotChange() {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions -- https://github.com/carbon-design-system/carbon/issues/20452\n this.querySelector(`${prefix}-modal-footer`)\n ? this.setAttribute('has-footer', '')\n : this.removeAttribute('has-footer');\n }\n\n /**\n * Specify whether the Modal is displaying an alert, error or warning.\n * Should go hand in hand with the danger prop.\n */\n @property({ type: Boolean, reflect: true })\n alert = false;\n\n /**\n * Specify text for the accessibility label of the header\n */\n @property({ attribute: 'aria-label' })\n ariaLabel = '';\n\n /**\n * The additional CSS class names for the container <div> of the element.\n */\n @property({ attribute: 'container-class' })\n containerClass = '';\n\n /**\n * Specify whether or not the Modal content should have any inner padding.\n */\n @property({ type: Boolean, reflect: true, attribute: 'full-width' })\n fullWidth = false;\n\n /**\n * Specify whether the modal contains scrolling content\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'has-scrolling-content',\n })\n hasScrollingContent = false;\n\n /**\n * `true` if the modal should be open.\n */\n @property({ type: Boolean, reflect: true })\n open = false;\n\n /**\n * Modal size.\n */\n @property({ reflect: true })\n size = MODAL_SIZE.MEDIUM;\n\n /**\n * Prevent closing on click outside of modal\n */\n @property({ type: Boolean, attribute: 'prevent-close-on-click-outside' })\n preventCloseOnClickOutside = false;\n\n /**\n * Specify the loading status\n */\n @property({ reflect: true, attribute: 'loading-status' })\n loadingStatus: 'inactive' | 'active' | 'finished' | 'error' = 'inactive';\n\n /**\n * Specify the description for the loading text\n */\n @property({ type: String, attribute: 'loading-description' })\n loadingDescription = '';\n\n /**\n * Provide a delay for the setTimeout for success\n */\n @property({ type: Number, attribute: 'loading-success-delay' })\n loadingSuccessDelay = 1500;\n\n /**\n * Specify the description for the loading icon\n */\n @property({ type: String, attribute: 'loading-icon-description' })\n loadingIconDescription = 'Loading';\n\n /**\n * Specify if Enter key should be used as \"submit\" action that clicks the primary footer button\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'should-submit-on-enter',\n })\n shouldSubmitOnEnter = false;\n\n /**\n * Prevent the modal from closing after clicking the close button\n */\n @property({ type: Boolean, attribute: 'prevent-close' })\n preventClose = false;\n\n // Initializes the inline-loading element\n private _initializeLoadingEl(footer: CDSModalFooter) {\n if (!footer) return null;\n\n if (\n !this._loadingEl &&\n this.WORKING_LOADING_STATUSES.includes(this.loadingStatus)\n ) {\n const el = document.createElement(`${prefix}-inline-loading`);\n el.setAttribute('controlled', '');\n el.setAttribute('aria-live', 'off');\n footer.appendChild(el);\n this._loadingEl = el as HTMLElement;\n }\n return this._loadingEl;\n }\n\n private _getFooterElements() {\n const footer = this.querySelector(`${prefix}-modal-footer`);\n\n const primaryButton =\n this.querySelector<HTMLElement>(\n `${prefix}-modal-footer-button[kind=\"primary\"]`\n ) ||\n this.querySelector<HTMLElement>(\n `${prefix}-modal-footer-button[kind=\"danger\"]`\n ) ||\n null;\n\n const secondaryButtons = Array.from(\n this.querySelectorAll<HTMLElement>(\n `${prefix}-modal-footer-button[kind=\"secondary\"]`\n )\n );\n\n return { footer, primaryButton, secondaryButtons };\n }\n\n // Updates the inline loading element in the modal footer\n private _updateLoadingElement() {\n const { footer, primaryButton, secondaryButtons } =\n this._getFooterElements();\n\n const loader = this._initializeLoadingEl(footer as CDSModalFooter);\n if (!footer || !loader || !primaryButton) return;\n\n if (this.WORKING_LOADING_STATUSES.includes(this.loadingStatus)) {\n loader.style.display = 'inline-flex';\n loader.setAttribute('status', String(this.loadingStatus));\n loader.setAttribute('aria-live', 'assertive');\n loader.setAttribute(\n 'icon-description',\n String(this.loadingIconDescription)\n );\n loader.textContent = this.loadingDescription;\n primaryButton.style.display = 'none';\n\n if (secondaryButtons[0]) {\n if (!footer.hasAttribute('has-three-buttons')) {\n secondaryButtons[0].setAttribute('disabled', '');\n } else {\n secondaryButtons.forEach((b) => b.removeAttribute('disabled'));\n }\n }\n\n if (this.loadingStatus === 'finished') {\n // fire event for successful load\n setTimeout(() => {\n this.dispatchEvent(\n new CustomEvent(\n (this.constructor as typeof CDSModal).eventOnLoadingSuccess,\n {\n bubbles: true,\n cancelable: true,\n composed: true,\n }\n )\n );\n }, this.loadingSuccessDelay);\n }\n } else if (this.loadingStatus === 'inactive') {\n loader.style.display = 'none';\n loader.setAttribute('aria-live', 'off');\n\n if (primaryButton) primaryButton.style.display = '';\n if (secondaryButtons)\n secondaryButtons.forEach((b) => b.removeAttribute('disabled'));\n }\n }\n\n async firstUpdated() {\n const body = this.querySelector(\n (this.constructor as typeof CDSModal).selectorModalBody\n );\n\n if (!body) {\n const bodyElement = document.createElement(\n (this.constructor as typeof CDSModal).selectorModalBody\n );\n this.appendChild(bodyElement);\n }\n }\n\n /**\n * Computes the aria-label of the modal based on (in order of highest to lowest precedence):\n * - `modal-label`\n * - `aria-label`\n * - `modal-heading`\n */\n private _computeAriaLabel(): string {\n const labelEl = this.querySelector(`${prefix}-modal-label`);\n const label = labelEl?.textContent?.trim();\n if (label) return label;\n\n const ariaLabel = this.ariaLabel?.trim();\n if (ariaLabel) return ariaLabel;\n\n const headingEl = this.querySelector(`${prefix}-modal-heading`);\n const heading = headingEl?.textContent?.trim();\n return heading || '';\n }\n\n /**\n * Observes the modal footer's `has-three-buttons` attribute to account for cases\n * where the loading status and the amount of footer-buttons\n * are being changed dynamically\n */\n private _observeFooter() {\n const footer = this.querySelector(`${prefix}-modal-footer`);\n if (!footer) return;\n\n this._footerObserver = new MutationObserver(() => {\n this._updateLoadingElement();\n });\n this._footerObserver.observe(footer, {\n attributes: true,\n childList: true,\n attributeFilter: ['has-three-buttons'],\n });\n }\n\n /**\n * Observes the modal header to account for cases where the modal-heading,\n * modal-label, and/or `aria-label` are dynamically changing\n * to update the `aria-label` put on the modal\n */\n private _observeHeader() {\n const header = this.querySelector(`${prefix}-modal-header`);\n if (!header) return;\n\n this._headerObserver = new MutationObserver(() => {\n this.requestUpdate('ariaLabel');\n });\n this._headerObserver.observe(header, {\n subtree: true,\n characterData: true,\n childList: true,\n });\n }\n\n connectedCallback() {\n super.connectedCallback?.();\n this._observeFooter();\n this._observeHeader();\n }\n\n disconnectedCallback() {\n this._footerObserver?.disconnect();\n this._headerObserver?.disconnect();\n super.disconnectedCallback?.();\n }\n\n render() {\n const { alert, size, hasScrollingContent } = this;\n const containerClass = this.containerClass\n .split(' ')\n .filter(Boolean)\n .reduce((acc, item) => ({ ...acc, [item]: true }), {});\n const containerClasses = classMap({\n [`${prefix}--modal-container`]: true,\n [`${prefix}--modal-container--${size}`]: size,\n ...containerClass,\n });\n return html`\n <div\n aria-label=${this._computeAriaLabel()}\n part=\"dialog\"\n class=${containerClasses}\n aria-modal=${true}\n role=\"${alert ? 'alert' : 'dialog'}\"\n tabindex=\"-1\"\n @click=${this._handleClickContainer}>\n <slot @slotchange=\"${this._handleSlotChange}\"></slot>\n ${hasScrollingContent\n ? html` <div class=\"cds--modal-content--overflow-indicator\"></div> `\n : ``}\n </div>\n `;\n }\n\n async updated(changedProperties) {\n if (changedProperties.has('open')) {\n if (this.open) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- https://github.com/carbon-design-system/carbon/issues/20452\n this._launcher = this.ownerDocument!.activeElement;\n const primaryFocusNode = this.querySelector(\n (this.constructor as typeof CDSModal).selectorPrimaryFocus\n );\n await (this.constructor as typeof CDSModal)._delay();\n if (primaryFocusNode) {\n // For cases where a `carbon-web-components` component (e.g. `<cds-button>`) being `primaryFocusNode`,\n // where its first update/render cycle that makes it focusable happens after `<cds-modal>`'s first update/render cycle\n (primaryFocusNode as HTMLElement).focus();\n } else {\n const { primaryButton, secondaryButtons } = this._getFooterElements();\n\n if (primaryButton) {\n const kind = primaryButton?.getAttribute('kind');\n\n if (kind === 'danger' && secondaryButtons[0]) {\n secondaryButtons[0].focus();\n } else {\n primaryButton.focus();\n }\n } else {\n const { first } = this.getFocusable();\n\n first?.focus();\n }\n }\n } else if (\n this._launcher &&\n typeof (this._launcher as HTMLElement).focus === 'function'\n ) {\n (this._launcher as HTMLElement).focus();\n this._launcher = null;\n }\n }\n if (\n changedProperties.has('loadingStatus') ||\n changedProperties.has('loadingDescription') ||\n changedProperties.has('loadingSuccessDelay') ||\n changedProperties.has('loadingIconDescription')\n ) {\n await (this.constructor as typeof CDSModal)._delay();\n this._updateLoadingElement();\n }\n }\n\n /**\n * @param ms The number of milliseconds.\n * @returns A promise that is resolves after the given milliseconds.\n */\n private static _delay(ms = 0) {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n }\n\n /**\n * A selector selecting buttons that should close this modal.\n */\n static get selectorCloseButton() {\n return `[data-modal-close],${prefix}-modal-close-button`;\n }\n\n /**\n * A selector selecting tabbable nodes.\n */\n static get selectorTabbable() {\n return selectorTabbable;\n }\n\n /**\n * A selector selecting the nodes that should be focused when modal gets open.\n */\n static get selectorPrimaryFocus() {\n return `[data-modal-primary-focus],${prefix}-modal-footer ${prefix}-button[kind=\"primary\"]`;\n }\n\n /**\n * A selector selecting the modal body component\n */\n static get selectorModalBody() {\n return `${prefix}-modal-body`;\n }\n\n /**\n * The name of the custom event fired before this modal is being closed upon a user gesture.\n * Cancellation of this event stops the user-initiated action of closing this modal.\n */\n static get eventBeforeClose() {\n return `${prefix}-modal-beingclosed`;\n }\n\n /**\n * The name of the custom event fired after this modal is closed upon a user gesture.\n */\n static get eventClose() {\n return `${prefix}-modal-closed`;\n }\n\n /**\n * The name of the custom event fired when this modal reaches a `finished` loading state\n */\n static get eventOnLoadingSuccess() {\n return `${prefix}-modal-on-loadingsuccess`;\n }\n\n static styles = styles;\n}\n\nexport default CDSModal;\n"],"names":["customElement"],"mappings":"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"}