@ukic/web-components 2.6.0 → 2.8.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 (509) hide show
  1. package/dist/cjs/core.cjs.js +1 -1
  2. package/dist/cjs/{helpers-498eb0e2.js → helpers-0d63359f.js} +36 -105
  3. package/dist/cjs/helpers-0d63359f.js.map +1 -0
  4. package/dist/cjs/ic-accordion.cjs.entry.js +5 -3
  5. package/dist/cjs/ic-accordion.cjs.entry.js.map +1 -1
  6. package/dist/cjs/ic-alert.cjs.entry.js +1 -1
  7. package/dist/cjs/ic-back-to-top.cjs.entry.js +2 -2
  8. package/dist/cjs/ic-back-to-top.cjs.entry.js.map +1 -1
  9. package/dist/cjs/ic-badge.cjs.entry.js +1 -1
  10. package/dist/cjs/ic-badge.cjs.entry.js.map +1 -1
  11. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js +1 -1
  12. package/dist/cjs/ic-breadcrumb.cjs.entry.js +1 -1
  13. package/dist/cjs/ic-button_3.cjs.entry.js +3 -3
  14. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  15. package/dist/cjs/ic-card.cjs.entry.js +2 -2
  16. package/dist/cjs/ic-card.cjs.entry.js.map +1 -1
  17. package/dist/cjs/ic-checkbox-group.cjs.entry.js +8 -1
  18. package/dist/cjs/ic-checkbox-group.cjs.entry.js.map +1 -1
  19. package/dist/cjs/ic-checkbox.cjs.entry.js +2 -11
  20. package/dist/cjs/ic-checkbox.cjs.entry.js.map +1 -1
  21. package/dist/cjs/ic-chip.cjs.entry.js +2 -2
  22. package/dist/cjs/ic-chip.cjs.entry.js.map +1 -1
  23. package/dist/cjs/ic-data-entity.cjs.entry.js +1 -1
  24. package/dist/cjs/ic-data-entity.cjs.entry.js.map +1 -1
  25. package/dist/cjs/ic-data-row.cjs.entry.js +2 -2
  26. package/dist/cjs/ic-data-row.cjs.entry.js.map +1 -1
  27. package/dist/cjs/ic-dialog.cjs.entry.js +88 -66
  28. package/dist/cjs/ic-dialog.cjs.entry.js.map +1 -1
  29. package/dist/cjs/ic-divider.cjs.entry.js +1 -1
  30. package/dist/cjs/ic-empty-state.cjs.entry.js +1 -1
  31. package/dist/cjs/ic-footer-link-group.cjs.entry.js +1 -1
  32. package/dist/cjs/ic-footer-link.cjs.entry.js +1 -1
  33. package/dist/cjs/ic-footer.cjs.entry.js +1 -1
  34. package/dist/cjs/ic-hero.cjs.entry.js +1 -1
  35. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +4 -3
  36. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js.map +1 -1
  37. package/dist/cjs/ic-input-component-container_3.cjs.entry.js +77 -68
  38. package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +1 -1
  39. package/dist/cjs/ic-input-label_2.cjs.entry.js +1 -1
  40. package/dist/cjs/ic-link.cjs.entry.js +1 -1
  41. package/dist/cjs/ic-menu-group.cjs.entry.js +1 -1
  42. package/dist/cjs/ic-menu-item.cjs.entry.js +1 -1
  43. package/dist/cjs/ic-navigation-button.cjs.entry.js +1 -1
  44. package/dist/cjs/ic-navigation-group.cjs.entry.js +2 -2
  45. package/dist/cjs/ic-navigation-group.cjs.entry.js.map +1 -1
  46. package/dist/cjs/ic-navigation-item.cjs.entry.js +2 -2
  47. package/dist/cjs/ic-navigation-item.cjs.entry.js.map +1 -1
  48. package/dist/cjs/ic-navigation-menu.cjs.entry.js +6 -3
  49. package/dist/cjs/ic-navigation-menu.cjs.entry.js.map +1 -1
  50. package/dist/cjs/ic-page-header.cjs.entry.js +1 -1
  51. package/dist/cjs/ic-pagination-item.cjs.entry.js +1 -1
  52. package/dist/cjs/ic-pagination.cjs.entry.js +1 -1
  53. package/dist/cjs/ic-popover-menu.cjs.entry.js +29 -60
  54. package/dist/cjs/ic-popover-menu.cjs.entry.js.map +1 -1
  55. package/dist/cjs/ic-radio-group.cjs.entry.js +1 -1
  56. package/dist/cjs/ic-radio-option.cjs.entry.js +2 -2
  57. package/dist/cjs/ic-radio-option.cjs.entry.js.map +1 -1
  58. package/dist/cjs/ic-search-bar.cjs.entry.js +3 -3
  59. package/dist/cjs/ic-search-bar.cjs.entry.js.map +1 -1
  60. package/dist/cjs/ic-select.cjs.entry.js +20 -16
  61. package/dist/cjs/ic-select.cjs.entry.js.map +1 -1
  62. package/dist/cjs/ic-side-navigation.cjs.entry.js +1 -1
  63. package/dist/cjs/ic-status-tag.cjs.entry.js +2 -2
  64. package/dist/cjs/ic-status-tag.cjs.entry.js.map +1 -1
  65. package/dist/cjs/ic-step.cjs.entry.js +2 -2
  66. package/dist/cjs/ic-step.cjs.entry.js.map +1 -1
  67. package/dist/cjs/ic-stepper.cjs.entry.js +1 -1
  68. package/dist/cjs/ic-switch.cjs.entry.js +8 -2
  69. package/dist/cjs/ic-switch.cjs.entry.js.map +1 -1
  70. package/dist/cjs/ic-tab-group.cjs.entry.js +3 -3
  71. package/dist/cjs/ic-tab-group.cjs.entry.js.map +1 -1
  72. package/dist/cjs/ic-tab-panel.cjs.entry.js +1 -1
  73. package/dist/cjs/ic-tab.cjs.entry.js +1 -1
  74. package/dist/cjs/ic-text-field.cjs.entry.js +17 -25
  75. package/dist/cjs/ic-text-field.cjs.entry.js.map +1 -1
  76. package/dist/cjs/ic-theme.cjs.entry.js +1 -1
  77. package/dist/cjs/ic-toast-region.cjs.entry.js +20 -8
  78. package/dist/cjs/ic-toast-region.cjs.entry.js.map +1 -1
  79. package/dist/cjs/ic-toast.cjs.entry.js +6 -5
  80. package/dist/cjs/ic-toast.cjs.entry.js.map +1 -1
  81. package/dist/cjs/ic-top-navigation.cjs.entry.js +9 -5
  82. package/dist/cjs/ic-top-navigation.cjs.entry.js.map +1 -1
  83. package/dist/cjs/ic-typography.cjs.entry.js +1 -1
  84. package/dist/cjs/loader.cjs.js +1 -1
  85. package/dist/collection/components/ic-accordion/ic-accordion.js +4 -2
  86. package/dist/collection/components/ic-accordion/ic-accordion.js.map +1 -1
  87. package/dist/collection/components/ic-accordion-group/test/basic/ic-accordion-group.e2e.js +3 -0
  88. package/dist/collection/components/ic-accordion-group/test/basic/ic-accordion-group.e2e.js.map +1 -1
  89. package/dist/collection/components/ic-accordion-group/test/basic/ic-accordion-group.spec.js +3 -0
  90. package/dist/collection/components/ic-accordion-group/test/basic/ic-accordion-group.spec.js.map +1 -1
  91. package/dist/collection/components/ic-back-to-top/ic-back-to-top.css +3 -3
  92. package/dist/collection/components/ic-badge/ic-badge.js +4 -1
  93. package/dist/collection/components/ic-badge/ic-badge.js.map +1 -1
  94. package/dist/collection/components/ic-button/ic-button.css +3 -1
  95. package/dist/collection/components/ic-card/ic-card.css +1 -1
  96. package/dist/collection/components/ic-checkbox/ic-checkbox.css +5 -5
  97. package/dist/collection/components/ic-checkbox/ic-checkbox.js +0 -9
  98. package/dist/collection/components/ic-checkbox/ic-checkbox.js.map +1 -1
  99. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js +13 -0
  100. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js.map +1 -1
  101. package/dist/collection/components/ic-chip/ic-chip.css +1 -1
  102. package/dist/collection/components/ic-data-entity/ic-data-entity.css +1 -1
  103. package/dist/collection/components/ic-data-row/ic-data-row.css +1 -1
  104. package/dist/collection/components/ic-data-row/test/a11y/ic-data-row.test.a11y.js +3 -1
  105. package/dist/collection/components/ic-data-row/test/a11y/ic-data-row.test.a11y.js.map +1 -1
  106. package/dist/collection/components/ic-dialog/ic-dialog.css +56 -21
  107. package/dist/collection/components/ic-dialog/ic-dialog.js +122 -64
  108. package/dist/collection/components/ic-dialog/ic-dialog.js.map +1 -1
  109. package/dist/collection/components/ic-dialog/test/basic/ic-dialog.e2e.js +129 -48
  110. package/dist/collection/components/ic-dialog/test/basic/ic-dialog.e2e.js.map +1 -1
  111. package/dist/collection/components/ic-dialog/test/basic/ic-dialog.spec.js +54 -39
  112. package/dist/collection/components/ic-dialog/test/basic/ic-dialog.spec.js.map +1 -1
  113. package/dist/collection/components/ic-footer/test/a11y/ic-footer.test.a11y.js +2 -0
  114. package/dist/collection/components/ic-footer/test/a11y/ic-footer.test.a11y.js.map +1 -1
  115. package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.js +24 -2
  116. package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.js.map +1 -1
  117. package/dist/collection/components/ic-horizontal-scroll/test/a11y/ic-horizontal-scroll.test.a11y.js +2 -0
  118. package/dist/collection/components/ic-horizontal-scroll/test/a11y/ic-horizontal-scroll.test.a11y.js.map +1 -1
  119. package/dist/collection/components/ic-input-component-container/ic-input-component-container.css +4 -4
  120. package/dist/collection/components/ic-menu/ic-menu.css +1 -5
  121. package/dist/collection/components/ic-menu/ic-menu.js +124 -65
  122. package/dist/collection/components/ic-menu/ic-menu.js.map +1 -1
  123. package/dist/collection/components/ic-menu/test/basic/ic-menu.spec.js +17 -0
  124. package/dist/collection/components/ic-menu/test/basic/ic-menu.spec.js.map +1 -1
  125. package/dist/collection/components/ic-navigation-group/ic-navigation-group.css +1 -1
  126. package/dist/collection/components/ic-navigation-group/test/a11y/ic-navigation-group.test.a11y.js +2 -0
  127. package/dist/collection/components/ic-navigation-group/test/a11y/ic-navigation-group.test.a11y.js.map +1 -1
  128. package/dist/collection/components/ic-navigation-item/ic-navigation-item.css +11 -5
  129. package/dist/collection/components/ic-navigation-item/test/a11y/ic-navigation-item.test.a11y.js +2 -0
  130. package/dist/collection/components/ic-navigation-item/test/a11y/ic-navigation-item.test.a11y.js.map +1 -1
  131. package/dist/collection/components/ic-navigation-menu/ic-navigation-menu.css +7 -3
  132. package/dist/collection/components/ic-navigation-menu/ic-navigation-menu.js +4 -1
  133. package/dist/collection/components/ic-navigation-menu/ic-navigation-menu.js.map +1 -1
  134. package/dist/collection/components/ic-pagination/test/a11y/ic-pagination.test.a11y.js +1 -1
  135. package/dist/collection/components/ic-pagination/test/a11y/ic-pagination.test.a11y.js.map +1 -1
  136. package/dist/collection/components/ic-pagination/test/basic/ic-pagination.spec.js +37 -36
  137. package/dist/collection/components/ic-pagination/test/basic/ic-pagination.spec.js.map +1 -1
  138. package/dist/collection/components/ic-popover-menu/ic-popover-menu.js +28 -59
  139. package/dist/collection/components/ic-popover-menu/ic-popover-menu.js.map +1 -1
  140. package/dist/collection/components/ic-popover-menu/test/basic/ic-popover-menu.e2e.js +3 -0
  141. package/dist/collection/components/ic-popover-menu/test/basic/ic-popover-menu.e2e.js.map +1 -1
  142. package/dist/collection/components/ic-radio-option/ic-radio-option.css +3 -3
  143. package/dist/collection/components/ic-search-bar/ic-search-bar.css +1 -1
  144. package/dist/collection/components/ic-search-bar/ic-search-bar.js +1 -1
  145. package/dist/collection/components/ic-search-bar/ic-search-bar.js.map +1 -1
  146. package/dist/collection/components/ic-search-bar/test/basic/ic-search-bar.e2e.js +14 -30
  147. package/dist/collection/components/ic-search-bar/test/basic/ic-search-bar.e2e.js.map +1 -1
  148. package/dist/collection/components/ic-select/ic-select.css +2 -1
  149. package/dist/collection/components/ic-select/ic-select.js +36 -14
  150. package/dist/collection/components/ic-select/ic-select.js.map +1 -1
  151. package/dist/collection/components/ic-select/test/basic/ic-select.e2e.js +25 -0
  152. package/dist/collection/components/ic-select/test/basic/ic-select.e2e.js.map +1 -1
  153. package/dist/collection/components/ic-select/test/basic/ic-select.spec.js +12 -4
  154. package/dist/collection/components/ic-select/test/basic/ic-select.spec.js.map +1 -1
  155. package/dist/collection/components/ic-side-navigation/test/basic/ic-side-navigation.e2e.js +1 -2
  156. package/dist/collection/components/ic-side-navigation/test/basic/ic-side-navigation.e2e.js.map +1 -1
  157. package/dist/collection/components/ic-status-tag/ic-status-tag.css +4 -4
  158. package/dist/collection/components/ic-step/ic-step.css +1 -1
  159. package/dist/collection/components/ic-switch/ic-switch.css +3 -2
  160. package/dist/collection/components/ic-switch/ic-switch.js +9 -0
  161. package/dist/collection/components/ic-switch/ic-switch.js.map +1 -1
  162. package/dist/collection/components/ic-tab-context/test/basic/ic-tab-context.e2e.js +35 -0
  163. package/dist/collection/components/ic-tab-context/test/basic/ic-tab-context.e2e.js.map +1 -1
  164. package/dist/collection/components/ic-tab-group/ic-tab-group.css +1 -1
  165. package/dist/collection/components/ic-tab-group/ic-tab-group.js +1 -1
  166. package/dist/collection/components/ic-tab-group/ic-tab-group.js.map +1 -1
  167. package/dist/collection/components/ic-text-field/ic-text-field.js +16 -24
  168. package/dist/collection/components/ic-text-field/ic-text-field.js.map +1 -1
  169. package/dist/collection/components/ic-toast/ic-toast.js +9 -5
  170. package/dist/collection/components/ic-toast/ic-toast.js.map +1 -1
  171. package/dist/collection/components/ic-toast-region/ic-toast-region.js +53 -17
  172. package/dist/collection/components/ic-toast-region/ic-toast-region.js.map +1 -1
  173. package/dist/collection/components/ic-toast-region/test/basic/ic-toast-region.spec.js +23 -1
  174. package/dist/collection/components/ic-toast-region/test/basic/ic-toast-region.spec.js.map +1 -1
  175. package/dist/collection/components/ic-tooltip/ic-tooltip.css +2 -2
  176. package/dist/collection/components/ic-top-navigation/ic-top-navigation.css +3 -3
  177. package/dist/collection/components/ic-top-navigation/ic-top-navigation.js +8 -3
  178. package/dist/collection/components/ic-top-navigation/ic-top-navigation.js.map +1 -1
  179. package/dist/collection/components/ic-top-navigation/test/a11y/ic-top-navigation.test.a11y.js +2 -0
  180. package/dist/collection/components/ic-top-navigation/test/a11y/ic-top-navigation.test.a11y.js.map +1 -1
  181. package/dist/collection/components/ic-top-navigation/test/basic/ic-top-navigation.spec.js +15 -0
  182. package/dist/collection/components/ic-top-navigation/test/basic/ic-top-navigation.spec.js.map +1 -1
  183. package/dist/collection/utils/helpers.js +35 -104
  184. package/dist/collection/utils/helpers.js.map +1 -1
  185. package/dist/components/helpers.js +35 -104
  186. package/dist/components/helpers.js.map +1 -1
  187. package/dist/components/ic-accordion.js +4 -2
  188. package/dist/components/ic-accordion.js.map +1 -1
  189. package/dist/components/ic-back-to-top.js +1 -1
  190. package/dist/components/ic-back-to-top.js.map +1 -1
  191. package/dist/components/ic-badge.js +1 -1
  192. package/dist/components/ic-badge.js.map +1 -1
  193. package/dist/components/ic-button2.js +1 -1
  194. package/dist/components/ic-button2.js.map +1 -1
  195. package/dist/components/ic-card.js +1 -1
  196. package/dist/components/ic-card.js.map +1 -1
  197. package/dist/components/ic-checkbox-group.js +8 -1
  198. package/dist/components/ic-checkbox-group.js.map +1 -1
  199. package/dist/components/ic-checkbox.js +1 -10
  200. package/dist/components/ic-checkbox.js.map +1 -1
  201. package/dist/components/ic-chip.js +1 -1
  202. package/dist/components/ic-chip.js.map +1 -1
  203. package/dist/components/ic-data-entity.js +1 -1
  204. package/dist/components/ic-data-entity.js.map +1 -1
  205. package/dist/components/ic-data-row.js +1 -1
  206. package/dist/components/ic-data-row.js.map +1 -1
  207. package/dist/components/ic-dialog.js +90 -66
  208. package/dist/components/ic-dialog.js.map +1 -1
  209. package/dist/components/ic-horizontal-scroll2.js +4 -2
  210. package/dist/components/ic-horizontal-scroll2.js.map +1 -1
  211. package/dist/components/ic-input-component-container2.js +1 -1
  212. package/dist/components/ic-input-component-container2.js.map +1 -1
  213. package/dist/components/ic-menu2.js +79 -67
  214. package/dist/components/ic-menu2.js.map +1 -1
  215. package/dist/components/ic-navigation-group.js +1 -1
  216. package/dist/components/ic-navigation-group.js.map +1 -1
  217. package/dist/components/ic-navigation-item.js +1 -1
  218. package/dist/components/ic-navigation-item.js.map +1 -1
  219. package/dist/components/ic-navigation-menu2.js +5 -2
  220. package/dist/components/ic-navigation-menu2.js.map +1 -1
  221. package/dist/components/ic-popover-menu.js +28 -59
  222. package/dist/components/ic-popover-menu.js.map +1 -1
  223. package/dist/components/ic-radio-option.js +1 -1
  224. package/dist/components/ic-radio-option.js.map +1 -1
  225. package/dist/components/ic-search-bar.js +2 -2
  226. package/dist/components/ic-search-bar.js.map +1 -1
  227. package/dist/components/ic-select.js +20 -15
  228. package/dist/components/ic-select.js.map +1 -1
  229. package/dist/components/ic-status-tag.js +1 -1
  230. package/dist/components/ic-status-tag.js.map +1 -1
  231. package/dist/components/ic-step.js +1 -1
  232. package/dist/components/ic-step.js.map +1 -1
  233. package/dist/components/ic-switch.js +9 -1
  234. package/dist/components/ic-switch.js.map +1 -1
  235. package/dist/components/ic-tab-group.js +2 -2
  236. package/dist/components/ic-tab-group.js.map +1 -1
  237. package/dist/components/ic-text-field2.js +16 -24
  238. package/dist/components/ic-text-field2.js.map +1 -1
  239. package/dist/components/ic-toast-region.js +24 -9
  240. package/dist/components/ic-toast-region.js.map +1 -1
  241. package/dist/components/ic-toast.js +6 -5
  242. package/dist/components/ic-toast.js.map +1 -1
  243. package/dist/components/ic-tooltip2.js +1 -1
  244. package/dist/components/ic-tooltip2.js.map +1 -1
  245. package/dist/components/ic-top-navigation.js +8 -4
  246. package/dist/components/ic-top-navigation.js.map +1 -1
  247. package/dist/core/core.css +1 -1
  248. package/dist/core/core.esm.js +1 -1
  249. package/dist/core/core.esm.js.map +1 -1
  250. package/dist/core/{p-e71ec1fe.entry.js → p-025f9d2a.entry.js} +2 -2
  251. package/dist/core/p-025f9d2a.entry.js.map +1 -0
  252. package/dist/core/{p-65715458.entry.js → p-03329fd0.entry.js} +2 -2
  253. package/dist/core/{p-667711a8.entry.js → p-08b59078.entry.js} +2 -2
  254. package/dist/core/{p-f5d1a0d7.entry.js → p-0c82048e.entry.js} +2 -2
  255. package/dist/core/{p-7bc6eb83.entry.js → p-2265e418.entry.js} +2 -2
  256. package/dist/core/p-2265e418.entry.js.map +1 -0
  257. package/dist/core/p-24da56e7.entry.js +2 -0
  258. package/dist/core/p-24da56e7.entry.js.map +1 -0
  259. package/dist/core/{p-09022de8.entry.js → p-2c30b583.entry.js} +2 -2
  260. package/dist/core/{p-7c913098.entry.js → p-345fe84a.entry.js} +2 -2
  261. package/dist/core/{p-8fc9b82b.entry.js → p-39c8111d.entry.js} +2 -2
  262. package/dist/core/{p-a69c8001.entry.js → p-3a15202f.entry.js} +2 -2
  263. package/dist/core/{p-bb3e7ce5.entry.js → p-3a814fc4.entry.js} +2 -2
  264. package/dist/core/{p-1a5353ed.entry.js → p-41c6eaa1.entry.js} +2 -2
  265. package/dist/core/p-43af3cf6.entry.js +2 -0
  266. package/dist/core/p-43af3cf6.entry.js.map +1 -0
  267. package/dist/core/{p-5c722379.entry.js → p-475b7bd2.entry.js} +2 -2
  268. package/dist/core/p-4bc35224.entry.js +2 -0
  269. package/dist/core/p-4bc35224.entry.js.map +1 -0
  270. package/dist/core/{p-f2f8e4aa.entry.js → p-59bdafff.entry.js} +2 -2
  271. package/dist/core/p-5a3ca50a.entry.js +2 -0
  272. package/dist/core/p-5a3ca50a.entry.js.map +1 -0
  273. package/dist/core/{p-522947f5.entry.js → p-5ccbb042.entry.js} +2 -2
  274. package/dist/core/p-5ccbb042.entry.js.map +1 -0
  275. package/dist/core/{p-0dd70d92.entry.js → p-5fcd202e.entry.js} +2 -2
  276. package/dist/core/p-5fcd202e.entry.js.map +1 -0
  277. package/dist/core/p-657513b5.entry.js +2 -0
  278. package/dist/core/p-657513b5.entry.js.map +1 -0
  279. package/dist/core/p-69d15528.entry.js +2 -0
  280. package/dist/core/p-69d15528.entry.js.map +1 -0
  281. package/dist/core/p-6c376756.entry.js +2 -0
  282. package/dist/core/p-6c376756.entry.js.map +1 -0
  283. package/dist/core/p-717907de.entry.js +2 -0
  284. package/dist/core/p-717907de.entry.js.map +1 -0
  285. package/dist/core/p-748159fe.entry.js +2 -0
  286. package/dist/core/p-748159fe.entry.js.map +1 -0
  287. package/dist/core/{p-c08b5a9a.entry.js → p-752f0f9a.entry.js} +2 -2
  288. package/dist/core/{p-f62c902b.entry.js → p-76563540.entry.js} +2 -2
  289. package/dist/core/p-7ce86152.entry.js +2 -0
  290. package/dist/core/p-7ce86152.entry.js.map +1 -0
  291. package/dist/core/{p-027ea4ff.entry.js → p-88ea1e49.entry.js} +2 -2
  292. package/dist/core/{p-c5b6d645.entry.js → p-8b18346a.entry.js} +2 -2
  293. package/dist/core/p-8b18346a.entry.js.map +1 -0
  294. package/dist/core/p-8fb4f0c0.js +2 -0
  295. package/dist/core/p-8fb4f0c0.js.map +1 -0
  296. package/dist/core/{p-72d6619c.entry.js → p-932fb4b7.entry.js} +2 -2
  297. package/dist/core/p-99fad66b.entry.js +2 -0
  298. package/dist/core/p-99fad66b.entry.js.map +1 -0
  299. package/dist/core/p-9f6ffced.entry.js +2 -0
  300. package/dist/core/p-9f6ffced.entry.js.map +1 -0
  301. package/dist/core/{p-af9f1caa.entry.js → p-9ff57f09.entry.js} +2 -2
  302. package/dist/core/p-9ff57f09.entry.js.map +1 -0
  303. package/dist/core/{p-4164e7d5.entry.js → p-a4397df4.entry.js} +2 -2
  304. package/dist/core/p-a76912b0.entry.js +2 -0
  305. package/dist/core/p-a76912b0.entry.js.map +1 -0
  306. package/dist/core/{p-3758c2b5.entry.js → p-b0ce60a0.entry.js} +2 -2
  307. package/dist/core/p-b879fa3e.entry.js +2 -0
  308. package/dist/core/p-b879fa3e.entry.js.map +1 -0
  309. package/dist/core/p-ba495175.entry.js +2 -0
  310. package/dist/core/p-ba495175.entry.js.map +1 -0
  311. package/dist/core/p-c0719bf4.entry.js +2 -0
  312. package/dist/core/p-c0719bf4.entry.js.map +1 -0
  313. package/dist/core/{p-134b407d.entry.js → p-c0c62df4.entry.js} +2 -2
  314. package/dist/core/{p-d8022cec.entry.js → p-c9ef9f5c.entry.js} +2 -2
  315. package/dist/core/{p-c01d43cf.entry.js → p-ca6073be.entry.js} +2 -2
  316. package/dist/core/p-ca6073be.entry.js.map +1 -0
  317. package/dist/core/p-cb5f19ea.entry.js +2 -0
  318. package/dist/core/p-cb5f19ea.entry.js.map +1 -0
  319. package/dist/core/{p-e465a208.entry.js → p-ccac1730.entry.js} +2 -2
  320. package/dist/core/{p-bb085716.entry.js → p-cf4bacee.entry.js} +2 -2
  321. package/dist/core/p-d80f99e0.entry.js +2 -0
  322. package/dist/core/p-d80f99e0.entry.js.map +1 -0
  323. package/dist/core/{p-53533992.entry.js → p-e2fd542e.entry.js} +2 -2
  324. package/dist/core/p-e2fd542e.entry.js.map +1 -0
  325. package/dist/core/{p-09eb825d.entry.js → p-e3bffcae.entry.js} +2 -2
  326. package/dist/core/p-e9ddb8cd.entry.js +2 -0
  327. package/dist/core/p-e9ddb8cd.entry.js.map +1 -0
  328. package/dist/core/p-eb4641a9.entry.js +2 -0
  329. package/dist/core/p-eb4641a9.entry.js.map +1 -0
  330. package/dist/core/{p-b80520e9.entry.js → p-f019219c.entry.js} +2 -2
  331. package/dist/core/{p-27b46a68.entry.js → p-fbc8a739.entry.js} +2 -2
  332. package/dist/esm/core.js +1 -1
  333. package/dist/esm/{helpers-c325e537.js → helpers-24f6e762.js} +36 -105
  334. package/dist/esm/helpers-24f6e762.js.map +1 -0
  335. package/dist/esm/ic-accordion.entry.js +5 -3
  336. package/dist/esm/ic-accordion.entry.js.map +1 -1
  337. package/dist/esm/ic-alert.entry.js +1 -1
  338. package/dist/esm/ic-back-to-top.entry.js +2 -2
  339. package/dist/esm/ic-back-to-top.entry.js.map +1 -1
  340. package/dist/esm/ic-badge.entry.js +1 -1
  341. package/dist/esm/ic-badge.entry.js.map +1 -1
  342. package/dist/esm/ic-breadcrumb-group.entry.js +1 -1
  343. package/dist/esm/ic-breadcrumb.entry.js +1 -1
  344. package/dist/esm/ic-button_3.entry.js +3 -3
  345. package/dist/esm/ic-button_3.entry.js.map +1 -1
  346. package/dist/esm/ic-card.entry.js +2 -2
  347. package/dist/esm/ic-card.entry.js.map +1 -1
  348. package/dist/esm/ic-checkbox-group.entry.js +8 -1
  349. package/dist/esm/ic-checkbox-group.entry.js.map +1 -1
  350. package/dist/esm/ic-checkbox.entry.js +2 -11
  351. package/dist/esm/ic-checkbox.entry.js.map +1 -1
  352. package/dist/esm/ic-chip.entry.js +2 -2
  353. package/dist/esm/ic-chip.entry.js.map +1 -1
  354. package/dist/esm/ic-data-entity.entry.js +1 -1
  355. package/dist/esm/ic-data-entity.entry.js.map +1 -1
  356. package/dist/esm/ic-data-row.entry.js +2 -2
  357. package/dist/esm/ic-data-row.entry.js.map +1 -1
  358. package/dist/esm/ic-dialog.entry.js +88 -66
  359. package/dist/esm/ic-dialog.entry.js.map +1 -1
  360. package/dist/esm/ic-divider.entry.js +1 -1
  361. package/dist/esm/ic-empty-state.entry.js +1 -1
  362. package/dist/esm/ic-footer-link-group.entry.js +1 -1
  363. package/dist/esm/ic-footer-link.entry.js +1 -1
  364. package/dist/esm/ic-footer.entry.js +1 -1
  365. package/dist/esm/ic-hero.entry.js +1 -1
  366. package/dist/esm/ic-horizontal-scroll.entry.js +4 -3
  367. package/dist/esm/ic-horizontal-scroll.entry.js.map +1 -1
  368. package/dist/esm/ic-input-component-container_3.entry.js +77 -68
  369. package/dist/esm/ic-input-component-container_3.entry.js.map +1 -1
  370. package/dist/esm/ic-input-label_2.entry.js +1 -1
  371. package/dist/esm/ic-link.entry.js +1 -1
  372. package/dist/esm/ic-menu-group.entry.js +1 -1
  373. package/dist/esm/ic-menu-item.entry.js +1 -1
  374. package/dist/esm/ic-navigation-button.entry.js +1 -1
  375. package/dist/esm/ic-navigation-group.entry.js +2 -2
  376. package/dist/esm/ic-navigation-group.entry.js.map +1 -1
  377. package/dist/esm/ic-navigation-item.entry.js +2 -2
  378. package/dist/esm/ic-navigation-item.entry.js.map +1 -1
  379. package/dist/esm/ic-navigation-menu.entry.js +6 -3
  380. package/dist/esm/ic-navigation-menu.entry.js.map +1 -1
  381. package/dist/esm/ic-page-header.entry.js +1 -1
  382. package/dist/esm/ic-pagination-item.entry.js +1 -1
  383. package/dist/esm/ic-pagination.entry.js +1 -1
  384. package/dist/esm/ic-popover-menu.entry.js +29 -60
  385. package/dist/esm/ic-popover-menu.entry.js.map +1 -1
  386. package/dist/esm/ic-radio-group.entry.js +1 -1
  387. package/dist/esm/ic-radio-option.entry.js +2 -2
  388. package/dist/esm/ic-radio-option.entry.js.map +1 -1
  389. package/dist/esm/ic-search-bar.entry.js +3 -3
  390. package/dist/esm/ic-search-bar.entry.js.map +1 -1
  391. package/dist/esm/ic-select.entry.js +20 -16
  392. package/dist/esm/ic-select.entry.js.map +1 -1
  393. package/dist/esm/ic-side-navigation.entry.js +1 -1
  394. package/dist/esm/ic-status-tag.entry.js +2 -2
  395. package/dist/esm/ic-status-tag.entry.js.map +1 -1
  396. package/dist/esm/ic-step.entry.js +2 -2
  397. package/dist/esm/ic-step.entry.js.map +1 -1
  398. package/dist/esm/ic-stepper.entry.js +1 -1
  399. package/dist/esm/ic-switch.entry.js +8 -2
  400. package/dist/esm/ic-switch.entry.js.map +1 -1
  401. package/dist/esm/ic-tab-group.entry.js +3 -3
  402. package/dist/esm/ic-tab-group.entry.js.map +1 -1
  403. package/dist/esm/ic-tab-panel.entry.js +1 -1
  404. package/dist/esm/ic-tab.entry.js +1 -1
  405. package/dist/esm/ic-text-field.entry.js +17 -25
  406. package/dist/esm/ic-text-field.entry.js.map +1 -1
  407. package/dist/esm/ic-theme.entry.js +1 -1
  408. package/dist/esm/ic-toast-region.entry.js +20 -8
  409. package/dist/esm/ic-toast-region.entry.js.map +1 -1
  410. package/dist/esm/ic-toast.entry.js +6 -5
  411. package/dist/esm/ic-toast.entry.js.map +1 -1
  412. package/dist/esm/ic-top-navigation.entry.js +9 -5
  413. package/dist/esm/ic-top-navigation.entry.js.map +1 -1
  414. package/dist/esm/ic-typography.entry.js +1 -1
  415. package/dist/esm/loader.js +1 -1
  416. package/dist/types/components/ic-accordion/ic-accordion.d.ts +1 -0
  417. package/dist/types/components/ic-badge/ic-badge.d.ts +3 -0
  418. package/dist/types/components/ic-checkbox/ic-checkbox.d.ts +0 -1
  419. package/dist/types/components/ic-checkbox-group/ic-checkbox-group.d.ts +1 -0
  420. package/dist/types/components/ic-dialog/ic-dialog.d.ts +17 -2
  421. package/dist/types/components/ic-horizontal-scroll/ic-horizontal-scroll.d.ts +4 -0
  422. package/dist/types/components/ic-menu/ic-menu.d.ts +12 -2
  423. package/dist/types/components/ic-popover-menu/ic-popover-menu.d.ts +1 -1
  424. package/dist/types/components/ic-select/ic-select.d.ts +4 -0
  425. package/dist/types/components/ic-switch/ic-switch.d.ts +1 -0
  426. package/dist/types/components/ic-text-field/ic-text-field.d.ts +1 -0
  427. package/dist/types/components/ic-toast/ic-toast.d.ts +1 -1
  428. package/dist/types/components/ic-toast-region/ic-toast-region.d.ts +7 -2
  429. package/dist/types/components/ic-top-navigation/ic-top-navigation.d.ts +1 -0
  430. package/dist/types/components.d.ts +36 -3
  431. package/dist/types/utils/helpers.d.ts +2 -2
  432. package/hydrate/index.js +351 -386
  433. package/package.json +2 -2
  434. package/dist/cjs/helpers-498eb0e2.js.map +0 -1
  435. package/dist/core/p-0baa2141.entry.js +0 -2
  436. package/dist/core/p-0baa2141.entry.js.map +0 -1
  437. package/dist/core/p-0dd70d92.entry.js.map +0 -1
  438. package/dist/core/p-30f9fabc.entry.js +0 -2
  439. package/dist/core/p-30f9fabc.entry.js.map +0 -1
  440. package/dist/core/p-31236329.entry.js +0 -2
  441. package/dist/core/p-31236329.entry.js.map +0 -1
  442. package/dist/core/p-39db6642.entry.js +0 -2
  443. package/dist/core/p-39db6642.entry.js.map +0 -1
  444. package/dist/core/p-409e437f.js +0 -2
  445. package/dist/core/p-409e437f.js.map +0 -1
  446. package/dist/core/p-46053a32.entry.js +0 -2
  447. package/dist/core/p-46053a32.entry.js.map +0 -1
  448. package/dist/core/p-4af7cb4c.entry.js +0 -2
  449. package/dist/core/p-4af7cb4c.entry.js.map +0 -1
  450. package/dist/core/p-500e8584.entry.js +0 -2
  451. package/dist/core/p-500e8584.entry.js.map +0 -1
  452. package/dist/core/p-522947f5.entry.js.map +0 -1
  453. package/dist/core/p-53533992.entry.js.map +0 -1
  454. package/dist/core/p-5c9457e2.entry.js +0 -2
  455. package/dist/core/p-5c9457e2.entry.js.map +0 -1
  456. package/dist/core/p-6286ad7b.entry.js +0 -2
  457. package/dist/core/p-6286ad7b.entry.js.map +0 -1
  458. package/dist/core/p-6991655b.entry.js +0 -2
  459. package/dist/core/p-6991655b.entry.js.map +0 -1
  460. package/dist/core/p-6ce0a089.entry.js +0 -2
  461. package/dist/core/p-6ce0a089.entry.js.map +0 -1
  462. package/dist/core/p-700559ee.entry.js +0 -2
  463. package/dist/core/p-700559ee.entry.js.map +0 -1
  464. package/dist/core/p-78f0118c.entry.js +0 -2
  465. package/dist/core/p-78f0118c.entry.js.map +0 -1
  466. package/dist/core/p-7bc6eb83.entry.js.map +0 -1
  467. package/dist/core/p-8ae11ca6.entry.js +0 -2
  468. package/dist/core/p-8ae11ca6.entry.js.map +0 -1
  469. package/dist/core/p-9ea62161.entry.js +0 -2
  470. package/dist/core/p-9ea62161.entry.js.map +0 -1
  471. package/dist/core/p-ae1ed418.entry.js +0 -2
  472. package/dist/core/p-ae1ed418.entry.js.map +0 -1
  473. package/dist/core/p-af9f1caa.entry.js.map +0 -1
  474. package/dist/core/p-ba25f08a.entry.js +0 -2
  475. package/dist/core/p-ba25f08a.entry.js.map +0 -1
  476. package/dist/core/p-c01d43cf.entry.js.map +0 -1
  477. package/dist/core/p-c5b6d645.entry.js.map +0 -1
  478. package/dist/core/p-d4522596.entry.js +0 -2
  479. package/dist/core/p-d4522596.entry.js.map +0 -1
  480. package/dist/core/p-e71ec1fe.entry.js.map +0 -1
  481. package/dist/core/p-f5947c60.entry.js +0 -2
  482. package/dist/core/p-f5947c60.entry.js.map +0 -1
  483. package/dist/core/p-fee7caf1.entry.js +0 -2
  484. package/dist/core/p-fee7caf1.entry.js.map +0 -1
  485. package/dist/esm/helpers-c325e537.js.map +0 -1
  486. /package/dist/core/{p-65715458.entry.js.map → p-03329fd0.entry.js.map} +0 -0
  487. /package/dist/core/{p-667711a8.entry.js.map → p-08b59078.entry.js.map} +0 -0
  488. /package/dist/core/{p-f5d1a0d7.entry.js.map → p-0c82048e.entry.js.map} +0 -0
  489. /package/dist/core/{p-09022de8.entry.js.map → p-2c30b583.entry.js.map} +0 -0
  490. /package/dist/core/{p-7c913098.entry.js.map → p-345fe84a.entry.js.map} +0 -0
  491. /package/dist/core/{p-8fc9b82b.entry.js.map → p-39c8111d.entry.js.map} +0 -0
  492. /package/dist/core/{p-a69c8001.entry.js.map → p-3a15202f.entry.js.map} +0 -0
  493. /package/dist/core/{p-bb3e7ce5.entry.js.map → p-3a814fc4.entry.js.map} +0 -0
  494. /package/dist/core/{p-1a5353ed.entry.js.map → p-41c6eaa1.entry.js.map} +0 -0
  495. /package/dist/core/{p-5c722379.entry.js.map → p-475b7bd2.entry.js.map} +0 -0
  496. /package/dist/core/{p-f2f8e4aa.entry.js.map → p-59bdafff.entry.js.map} +0 -0
  497. /package/dist/core/{p-c08b5a9a.entry.js.map → p-752f0f9a.entry.js.map} +0 -0
  498. /package/dist/core/{p-f62c902b.entry.js.map → p-76563540.entry.js.map} +0 -0
  499. /package/dist/core/{p-027ea4ff.entry.js.map → p-88ea1e49.entry.js.map} +0 -0
  500. /package/dist/core/{p-72d6619c.entry.js.map → p-932fb4b7.entry.js.map} +0 -0
  501. /package/dist/core/{p-4164e7d5.entry.js.map → p-a4397df4.entry.js.map} +0 -0
  502. /package/dist/core/{p-3758c2b5.entry.js.map → p-b0ce60a0.entry.js.map} +0 -0
  503. /package/dist/core/{p-134b407d.entry.js.map → p-c0c62df4.entry.js.map} +0 -0
  504. /package/dist/core/{p-d8022cec.entry.js.map → p-c9ef9f5c.entry.js.map} +0 -0
  505. /package/dist/core/{p-e465a208.entry.js.map → p-ccac1730.entry.js.map} +0 -0
  506. /package/dist/core/{p-bb085716.entry.js.map → p-cf4bacee.entry.js.map} +0 -0
  507. /package/dist/core/{p-09eb825d.entry.js.map → p-e3bffcae.entry.js.map} +0 -0
  508. /package/dist/core/{p-b80520e9.entry.js.map → p-f019219c.entry.js.map} +0 -0
  509. /package/dist/core/{p-27b46a68.entry.js.map → p-fbc8a739.entry.js.map} +0 -0
@@ -458,6 +458,21 @@ video {
458
458
  transition: opacity var(--ic-easing-transition-slow);
459
459
  }
460
460
 
461
+ :host(.disable-height-constraint) {
462
+ background: none;
463
+ justify-content: unset;
464
+ align-items: unset;
465
+ }
466
+
467
+ .dialog.disable-height-constraint {
468
+ max-height: none;
469
+ position: relative;
470
+ }
471
+
472
+ .dialog.disable-height-constraint .content-area {
473
+ overflow-y: visible;
474
+ }
475
+
461
476
  :host(.fade-in) {
462
477
  opacity: 1;
463
478
  transition: opacity var(--ic-easing-transition-slow);
@@ -471,12 +486,13 @@ video {
471
486
  background-color: var(--ic-architectural-white);
472
487
  border: var(--ic-border-default);
473
488
  border-radius: var(--ic-border-radius);
474
- padding: var(--ic-space-xs) var(--ic-space-md);
489
+ padding: var(--ic-space-xs) 0 var(--ic-space-md);
475
490
  transform: translateY(-3rem);
476
491
  transition: transform 1000s;
477
492
  display: flex;
478
493
  flex-direction: column;
479
494
  box-sizing: border-box;
495
+ overflow-x: visible;
480
496
  }
481
497
 
482
498
  :host(.fade-in) .dialog {
@@ -508,34 +524,23 @@ video {
508
524
  .heading-area {
509
525
  display: flex;
510
526
  margin-bottom: var(--ic-space-xs);
527
+ padding: 0 var(--ic-space-md);
511
528
  }
512
529
 
513
- .close-icon {
514
- margin-left: auto;
530
+ .heading {
531
+ overflow-wrap: break-word;
515
532
  }
516
533
 
517
- .close-icon-svg {
518
- display: flex;
519
- align-items: center;
534
+ .close-icon {
535
+ margin-left: auto;
520
536
  }
521
537
 
522
538
  .content-area {
523
539
  -ms-overflow-style: none;
524
540
  scrollbar-width: none;
525
- padding: 0 var(--ic-space-xs);
526
- margin: 0 calc(-1 * var(--ic-space-xs));
527
- }
528
-
529
- :host([data-overflow="false"]) .content-area {
530
- overflow-y: visible;
531
- }
532
-
533
- :host([data-overflow="true"]) .content-area {
534
- overflow-y: scroll;
535
- }
536
-
537
- :host([data-overflow="false"]) .dialog {
538
- overflow: visible;
541
+ padding: 0 var(--ic-space-md);
542
+ margin: 0;
543
+ overflow-y: auto;
539
544
  }
540
545
 
541
546
  .content-area::-webkit-scrollbar {
@@ -546,13 +551,21 @@ video {
546
551
  margin-bottom: var(--ic-space-sm);
547
552
  }
548
553
 
554
+ #dialog-content ::slotted(ic-typography) {
555
+ overflow-wrap: break-word;
556
+ }
557
+
558
+ #dialog-content ::slotted(*) {
559
+ position: relative;
560
+ }
561
+
549
562
  .status-alert {
550
563
  margin-bottom: var(--ic-space-xs);
551
564
  }
552
565
 
553
566
  .dialog-controls {
554
567
  margin-top: auto;
555
- padding-top: var(--ic-space-xs);
568
+ padding: var(--ic-space-xs) var(--ic-space-md) 0;
556
569
  display: flex;
557
570
  justify-content: flex-end;
558
571
  gap: var(--ic-space-md);
@@ -563,6 +576,19 @@ video {
563
576
  width: fit-content;
564
577
  }
565
578
 
579
+ .backdrop {
580
+ overflow-y: auto;
581
+ position: fixed;
582
+ inset: 0;
583
+ display: flex;
584
+ align-items: center;
585
+ justify-content: center;
586
+ background: rgb(0 0 0 / 60%);
587
+ z-index: var(--ic-z-index-dialog);
588
+ padding-top: 16px;
589
+ padding-bottom: 16px;
590
+ }
591
+
566
592
  @media (min-width: 800px) {
567
593
  :host([size="large"]) .content-area {
568
594
  width: 75%;
@@ -578,6 +604,15 @@ video {
578
604
  max-height: none;
579
605
  box-sizing: border-box;
580
606
  }
607
+
608
+ .backdrop {
609
+ padding: 0;
610
+ }
611
+
612
+ .dialog.disable-height-constraint {
613
+ height: auto;
614
+ min-height: 100vh;
615
+ }
581
616
  }
582
617
 
583
618
  @media (max-width: 364px) {
@@ -9,7 +9,6 @@ import { isSlotUsed, checkResizeObserver, isPropDefined, } from "../../utils/hel
9
9
  */
10
10
  export class Dialog {
11
11
  constructor() {
12
- this.DATA_OVERFLOW = "data-overflow";
13
12
  this.DATA_GETS_FOCUS = "data-gets-focus";
14
13
  this.DATA_GETS_FOCUS_SELECTOR = "[data-gets-focus]";
15
14
  this.DIALOG_CONTROLS = "dialog-controls";
@@ -18,13 +17,35 @@ export class Dialog {
18
17
  this.IC_TEXT_FIELD = "IC-TEXT-FIELD";
19
18
  this.IC_ACCORDION = "IC-ACCORDION";
20
19
  this.resizeObserver = null;
21
- this.setContentOverflow = () => {
22
- if (this.dialogEl.clientHeight < this.dialogEl.scrollHeight) {
23
- this.el.setAttribute(this.DATA_OVERFLOW, "true");
20
+ this.dialogOpened = () => {
21
+ this.dialogRendered = true;
22
+ if (this.disableHeightConstraint) {
23
+ this.dialogEl.show();
24
24
  }
25
25
  else {
26
- this.el.setAttribute(this.DATA_OVERFLOW, "false");
26
+ this.dialogEl.showModal();
27
27
  }
28
+ setTimeout(() => {
29
+ this.fadeIn = true;
30
+ /**
31
+ * This is required to set scroll back to top if:
32
+ * - dialog content goes below the fold
33
+ * - is closed using cancel or confirm and reopened.
34
+ *
35
+ * Without this, the scroll bar will start from the dialog's last scroll-x coordinate.
36
+ */
37
+ if (this.disableHeightConstraint && this.backdropEl.scrollTop !== 0) {
38
+ this.backdropEl.scrollTop = 0;
39
+ }
40
+ }, 10);
41
+ setTimeout(() => {
42
+ this.setInitialFocus();
43
+ checkResizeObserver(this.runResizeObserver);
44
+ }, 75);
45
+ setTimeout(() => {
46
+ this.getFocusedElementIndex();
47
+ this.icDialogOpened.emit();
48
+ }, 80);
28
49
  };
29
50
  this.runResizeObserver = () => {
30
51
  this.resizeObserver = new ResizeObserver(() => {
@@ -35,11 +56,18 @@ export class Dialog {
35
56
  };
36
57
  this.resizeObserverCallback = () => {
37
58
  if (this.dialogEl.clientHeight !== this.dialogHeight) {
38
- this.el.setAttribute(this.DATA_OVERFLOW, "false");
39
- this.setContentOverflow();
40
59
  this.dialogHeight = this.dialogEl.clientHeight;
41
60
  }
42
61
  };
62
+ this.refreshInteractiveElementsOnSlotChange = () => {
63
+ this.contentArea = this.el.shadowRoot.querySelector("#dialog-content slot");
64
+ this.contentArea.addEventListener("slotchange", this.getInteractiveElements);
65
+ };
66
+ this.removeSlotChangeListener = () => {
67
+ if (this.contentArea) {
68
+ this.contentArea.removeEventListener("slotchange", this.getInteractiveElements);
69
+ }
70
+ };
43
71
  this.setInitialFocus = () => {
44
72
  this.sourceElement = document.activeElement;
45
73
  let focusedElement;
@@ -56,7 +84,9 @@ export class Dialog {
56
84
  focusedElement.setFocus();
57
85
  }
58
86
  else {
59
- focusedElement.focus();
87
+ focusedElement.focus({
88
+ preventScroll: this.disableHeightConstraint ? true : false,
89
+ });
60
90
  }
61
91
  };
62
92
  this.getFocusedElementIndex = () => {
@@ -159,6 +189,25 @@ export class Dialog {
159
189
  }
160
190
  }
161
191
  };
192
+ this.renderDialog = () => {
193
+ const { alertHeading, alertMessage, buttons, buttonProps, size, heading, label, status, destructive, dismissLabel, hideCloseButton, } = this;
194
+ return (h("dialog", { class: {
195
+ ["dialog"]: true,
196
+ [`${size}`]: true,
197
+ ["disable-height-constraint"]: this.disableHeightConstraint,
198
+ }, "aria-labelledby": "dialog-label dialog-heading", "aria-describedby": "dialog-alert dialog-content", ref: (el) => (this.dialogEl = el) }, h("div", { class: "heading-area" }, h("div", { class: "heading-content" }, h("div", { class: "label" }, h("slot", { name: "label" }, h("ic-typography", { variant: "label", id: "dialog-label" }, label))), h("div", { class: "heading" }, h("slot", { name: "heading" }, h("ic-typography", { variant: "h4", id: "dialog-heading" }, heading)))), !hideCloseButton && (h("ic-button", { class: "close-icon", variant: "icon", innerHTML: closeIcon, "aria-label": dismissLabel, onClick: this.closeIconClick, "data-gets-focus": destructive || !buttons ? "" : null }))), h("div", { class: "content-area" }, isSlotUsed(this.el, "alert") ? (h("slot", { name: "alert" })) : (status && (h("ic-alert", { variant: status, heading: alertHeading, message: alertMessage, "title-above": true, class: "status-alert", id: "dialog-alert" }))), h("div", { id: "dialog-content" }, h("slot", null))), (buttons || isSlotUsed(this.el, this.DIALOG_CONTROLS)) && (h("div", { class: {
199
+ [this.DIALOG_CONTROLS]: true,
200
+ ["triple-button"]: buttonProps.length === 3,
201
+ } }, h("slot", { name: this.DIALOG_CONTROLS }, !isSlotUsed(this.el, this.DIALOG_CONTROLS) &&
202
+ buttonProps.map((props, index) => {
203
+ if (index > 2) {
204
+ return;
205
+ }
206
+ else {
207
+ return (h("ic-button", { variant: this.getButtonVariant(index), onClick: () => this.getButtonOnclick(index), class: "dialog-control-button", "full-width": buttonProps.length === 3, "data-gets-focus": this.getButtonVariant(index) === "primary" ? "" : null }, props.label));
208
+ }
209
+ }))))));
210
+ };
162
211
  this.dialogRendered = false;
163
212
  this.fadeIn = false;
164
213
  this.alertHeading = undefined;
@@ -167,6 +216,8 @@ export class Dialog {
167
216
  this.closeOnBackdropClick = true;
168
217
  this.destructive = false;
169
218
  this.dismissLabel = "Dismiss";
219
+ this.disableHeightConstraint = false;
220
+ this.hideCloseButton = false;
170
221
  this.heading = undefined;
171
222
  this.label = undefined;
172
223
  this.open = undefined;
@@ -182,19 +233,7 @@ export class Dialog {
182
233
  }
183
234
  watchOpenHandler() {
184
235
  if (this.open) {
185
- this.dialogRendered = true;
186
- this.dialogEl.showModal();
187
- setTimeout(() => {
188
- this.fadeIn = true;
189
- }, 10);
190
- setTimeout(() => {
191
- this.setInitialFocus();
192
- checkResizeObserver(this.runResizeObserver);
193
- }, 75);
194
- setTimeout(() => {
195
- this.getFocusedElementIndex();
196
- this.icDialogOpened.emit();
197
- }, 80);
236
+ this.dialogOpened();
198
237
  }
199
238
  else {
200
239
  this.fadeIn = false;
@@ -206,7 +245,6 @@ export class Dialog {
206
245
  this.dialogRendered = false;
207
246
  this.dialogEl.close();
208
247
  (_a = this.sourceElement) === null || _a === void 0 ? void 0 : _a.focus();
209
- this.el.removeAttribute(this.DATA_OVERFLOW);
210
248
  this.dialogHeight = 0;
211
249
  this.icDialogClosed.emit();
212
250
  }, 80);
@@ -215,12 +253,30 @@ export class Dialog {
215
253
  watchPropHandler() {
216
254
  this.setButtonOnClick();
217
255
  }
256
+ disconnectedCallback() {
257
+ this.removeSlotChangeListener();
258
+ }
218
259
  componentWillLoad() {
219
- this.setButtonOnClick();
260
+ if (this.buttonProps.length) {
261
+ this.setButtonOnClick();
262
+ }
220
263
  }
221
264
  componentDidLoad() {
222
265
  this.getInteractiveElements();
223
266
  this.setAlertVariant();
267
+ this.refreshInteractiveElementsOnSlotChange();
268
+ if (this.open) {
269
+ this.dialogOpened();
270
+ }
271
+ }
272
+ componentDidRender() {
273
+ if (getComputedStyle(this.el).display !== "none" &&
274
+ this.disableHeightConstraint) {
275
+ document.body.style.overflow = "hidden";
276
+ }
277
+ else {
278
+ document.body.style.overflow = "auto";
279
+ }
224
280
  }
225
281
  handleKeyboard(ev) {
226
282
  if (this.dialogRendered) {
@@ -256,37 +312,13 @@ export class Dialog {
256
312
  * @deprecated This method should not be used anymore. Use open prop to set dialog visibility.
257
313
  */
258
314
  async showDialog() {
259
- this.dialogRendered = true;
260
- this.dialogEl.showModal();
261
- setTimeout(() => {
262
- this.fadeIn = true;
263
- }, 10);
264
- setTimeout(() => {
265
- this.setInitialFocus();
266
- checkResizeObserver(this.runResizeObserver);
267
- }, 75);
268
- setTimeout(() => {
269
- this.getFocusedElementIndex();
270
- this.icDialogOpened.emit();
271
- }, 80);
315
+ this.open = true;
272
316
  }
273
317
  /**
274
318
  * @deprecated This method should not be used anymore. Use open prop to set dialog visibility.
275
319
  */
276
320
  async hideDialog() {
277
- this.fadeIn = false;
278
- if (this.resizeObserver !== null) {
279
- this.resizeObserver.disconnect();
280
- }
281
- setTimeout(() => {
282
- var _a;
283
- this.dialogRendered = false;
284
- this.dialogEl.close();
285
- (_a = this.sourceElement) === null || _a === void 0 ? void 0 : _a.focus();
286
- this.el.removeAttribute(this.DATA_OVERFLOW);
287
- this.dialogHeight = 0;
288
- this.icDialogClosed.emit();
289
- }, 80);
321
+ this.open = false;
290
322
  }
291
323
  /**
292
324
  * Cancels the dialog. Used by the default 'Cancel' button or can be called manually to trigger cancelling of dialog.
@@ -317,21 +349,11 @@ export class Dialog {
317
349
  }
318
350
  }
319
351
  render() {
320
- const { alertHeading, alertMessage, buttons, buttonProps, size, heading, label, status, destructive, dismissLabel, } = this;
321
- return (h(Host, { class: { ["hidden"]: !this.dialogRendered, ["fade-in"]: this.fadeIn } }, h("dialog", { class: { ["dialog"]: true, [`${size}`]: true }, "aria-labelledby": "dialog-label dialog-heading", "aria-describedby": "dialog-alert dialog-content", ref: (el) => (this.dialogEl = el) }, h("div", { class: "heading-area" }, h("div", { class: "heading-content" }, h("div", { class: "label" }, h("slot", { name: "label" }, h("ic-typography", { variant: "label", id: "dialog-label" }, label))), h("div", { class: "heading" }, h("slot", { name: "heading" }, h("ic-typography", { variant: "h4", id: "dialog-heading" }, heading)))), h("ic-button", { class: "close-icon", variant: "icon", "aria-label": dismissLabel, onClick: this.closeIconClick, "data-gets-focus": destructive || !buttons ? "" : null }, h("span", { class: "close-icon-svg", innerHTML: closeIcon }))), h("div", { class: "content-area" }, isSlotUsed(this.el, "alert") ? (h("slot", { name: "alert" })) : (status && (h("ic-alert", { variant: status, heading: alertHeading, message: alertMessage, "title-above": true, class: "status-alert", id: "dialog-alert" }))), h("div", { id: "dialog-content" }, h("slot", null))), (buttons || isSlotUsed(this.el, this.DIALOG_CONTROLS)) && (h("div", { class: {
322
- [this.DIALOG_CONTROLS]: true,
323
- ["triple-button"]: buttonProps.length === 3,
324
- } }, h("slot", { name: this.DIALOG_CONTROLS }, !isSlotUsed(this.el, this.DIALOG_CONTROLS) &&
325
- buttonProps.map((props, index) => {
326
- if (index > 2) {
327
- return;
328
- }
329
- else {
330
- return (h("ic-button", { variant: this.getButtonVariant(index), onClick: () => this.getButtonOnclick(index), class: "dialog-control-button", "full-width": buttonProps.length === 3, "data-gets-focus": this.getButtonVariant(index) === "primary"
331
- ? ""
332
- : null }, props.label));
333
- }
334
- })))))));
352
+ return (h(Host, { class: {
353
+ ["hidden"]: !this.dialogRendered,
354
+ ["fade-in"]: this.fadeIn,
355
+ ["disable-height-constraint"]: this.disableHeightConstraint,
356
+ } }, this.disableHeightConstraint ? (h("div", { class: "backdrop", ref: (el) => (this.backdropEl = el) }, this.renderDialog())) : (this.renderDialog())));
335
357
  }
336
358
  static get is() { return "ic-dialog"; }
337
359
  static get encapsulation() { return "shadow"; }
@@ -459,6 +481,42 @@ export class Dialog {
459
481
  "reflect": false,
460
482
  "defaultValue": "\"Dismiss\""
461
483
  },
484
+ "disableHeightConstraint": {
485
+ "type": "boolean",
486
+ "mutable": false,
487
+ "complexType": {
488
+ "original": "boolean",
489
+ "resolved": "boolean",
490
+ "references": {}
491
+ },
492
+ "required": false,
493
+ "optional": true,
494
+ "docs": {
495
+ "tags": [],
496
+ "text": "If set to `true`, the content area max height and overflow properties are removed allowing the dialog to stretch below the fold.\nThis prop also prevents popover elements from being cut off within the content area."
497
+ },
498
+ "attribute": "disable-height-constraint",
499
+ "reflect": false,
500
+ "defaultValue": "false"
501
+ },
502
+ "hideCloseButton": {
503
+ "type": "boolean",
504
+ "mutable": false,
505
+ "complexType": {
506
+ "original": "boolean",
507
+ "resolved": "boolean",
508
+ "references": {}
509
+ },
510
+ "required": false,
511
+ "optional": true,
512
+ "docs": {
513
+ "tags": [],
514
+ "text": "If `true`, the close button will not be displayed."
515
+ },
516
+ "attribute": "hide-close-button",
517
+ "reflect": false,
518
+ "defaultValue": "false"
519
+ },
462
520
  "heading": {
463
521
  "type": "string",
464
522
  "mutable": false,
@@ -1 +1 @@
1
- {"version":3,"file":"ic-dialog.js","sourceRoot":"","sources":["../../../src/components/ic-dialog/ic-dialog.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Prop,\n State,\n Method,\n Listen,\n Watch,\n h,\n} from \"@stencil/core\";\nimport closeIcon from \"../../assets/close-icon.svg\";\nimport {\n isSlotUsed,\n checkResizeObserver,\n isPropDefined,\n} from \"../../utils/helpers\";\n\n/**\n * @slot dialog-controls - Content will be place at the bottom of the dialog.\n * @slot heading - Content will be placed at the top of the dialog.\n * @slot label - Content will be placed above the dialog heading.\n * @slot alert - Content will be placed at the top of the content area of the dialog.\n */\n@Component({\n tag: \"ic-dialog\",\n styleUrl: \"ic-dialog.css\",\n shadow: true,\n})\nexport class Dialog {\n private DATA_OVERFLOW: string = \"data-overflow\";\n private DATA_GETS_FOCUS: string = \"data-gets-focus\";\n private DATA_GETS_FOCUS_SELECTOR: string = \"[data-gets-focus]\";\n private DIALOG_CONTROLS: string = \"dialog-controls\";\n private dialogEl: HTMLDialogElement;\n private dialogHeight: number = 0;\n private focusedElementIndex = 0;\n private IC_TEXT_FIELD: string = \"IC-TEXT-FIELD\";\n private IC_ACCORDION: string = \"IC-ACCORDION\";\n private interactiveElementList: HTMLElement[];\n private resizeObserver: ResizeObserver = null;\n private resizeTimeout: number;\n private sourceElement: HTMLElement;\n\n /* eslint-disable */\n\n private buttonOnclick0: Function;\n private buttonOnclick1: Function;\n private buttonOnclick2: Function;\n\n /* eslint-enable */\n\n @Element() el: HTMLIcDialogElement;\n\n @State() dialogRendered: boolean = false;\n @State() fadeIn: boolean = false;\n\n /**\n * @deprecated This prop should not be used anymore. Use an ic-alert/IcAlert component within an alert slot with a heading instead.\n */\n @Prop() alertHeading?: string;\n\n /**\n * @deprecated This prop should not be used anymore. Use an ic-alert/IcAlert component within an alert slot with a message instead.\n */\n @Prop() alertMessage?: string;\n\n /**\n * If set to `false`, dialog controls will not be displayed overriding buttonProps or slotted dialog controls.\n */\n @Prop() buttons?: boolean = true;\n\n /**\n * If set to `true`, the dialog will not close when the backdrop is clicked.\n */\n @Prop() closeOnBackdropClick?: boolean = true;\n\n /**\n * If default buttons are displayed, sets the 'primary' or rightmost button to the destructive variant. Stops initial focus being set on the 'primary' or rightmost default or slotted button.\n */\n @Prop() destructive?: boolean = false;\n\n /**\n * Sets the dismiss label tooltip and aria label.\n */\n @Prop() dismissLabel?: string = \"Dismiss\";\n\n /**\n * Sets the heading for the dialog.\n */\n @Prop() heading!: string;\n\n /**\n * Sets the optional label for the dialog which appears above the heading.\n */\n @Prop() label?: string;\n\n /**\n * If `true`, the dialog will be displayed.\n */\n @Prop({ reflect: true, mutable: true }) open: boolean = undefined;\n\n @Watch(\"open\")\n watchOpenHandler(): void {\n if (this.open) {\n this.dialogRendered = true;\n this.dialogEl.showModal();\n setTimeout(() => {\n this.fadeIn = true;\n }, 10);\n setTimeout(() => {\n this.setInitialFocus();\n checkResizeObserver(this.runResizeObserver);\n }, 75);\n setTimeout(() => {\n this.getFocusedElementIndex();\n this.icDialogOpened.emit();\n }, 80);\n } else {\n this.fadeIn = false;\n if (this.resizeObserver !== null) {\n this.resizeObserver.disconnect();\n }\n setTimeout(() => {\n this.dialogRendered = false;\n this.dialogEl.close();\n this.sourceElement?.focus();\n this.el.removeAttribute(this.DATA_OVERFLOW);\n this.dialogHeight = 0;\n this.icDialogClosed.emit();\n }, 80);\n }\n }\n\n /**\n * Sets the maximum and minimum height and width for the dialog.\n */\n @Prop() size?: \"small\" | \"medium\" | \"large\" = \"small\";\n\n /**\n * @deprecated This prop should not be used anymore. Use an ic-alert/IcAlert component within an alert slot with a variant instead.\n */\n @Prop() status?: \"neutral\" | \"info\" | \"warning\" | \"error\" | \"success\";\n\n /**\n * Sets the label and onclick functions for default buttons.\n */\n @Prop() buttonProps?: { label: string; onclick: string }[] = [\n {\n label: \"Cancel\",\n onclick: \"this.cancelDialog();\",\n },\n { label: \"Confirm\", onclick: \"this.confirmDialog();\" },\n ];\n\n @Watch(\"buttonProps\")\n watchPropHandler(): void {\n this.setButtonOnClick();\n }\n\n /**\n * Cancelation event emitted when default 'Cancel' button clicked or 'cancelDialog' method is called.\n */\n @Event() icDialogCancelled: EventEmitter<void>;\n\n /**\n * Emitted when dialog has closed.\n */\n @Event() icDialogClosed: EventEmitter<void>;\n\n /**\n * Confirmation event emitted when default 'Confirm' primary button clicked or 'confirmDialog' method is called.\n */\n @Event() icDialogConfirmed: EventEmitter<void>;\n\n /**\n * Emitted when dialog has opened.\n */\n @Event() icDialogOpened: EventEmitter<void>;\n\n componentWillLoad(): void {\n this.setButtonOnClick();\n }\n\n componentDidLoad(): void {\n this.getInteractiveElements();\n this.setAlertVariant();\n }\n\n @Listen(\"keydown\", { target: \"document\" })\n handleKeyboard(ev: KeyboardEvent): void {\n if (this.dialogRendered) {\n switch (ev.key) {\n case \"Tab\":\n ev.preventDefault();\n this.focusNextInteractiveElement(ev.shiftKey);\n break;\n case \"Escape\":\n if (!ev.repeat) {\n this.open = false;\n }\n ev.stopImmediatePropagation();\n break;\n }\n }\n }\n\n @Listen(\"click\", {})\n handleClick(ev: MouseEvent): void {\n const dialogElement = this.el.shadowRoot.querySelector(\"dialog\");\n if (\n this.closeOnBackdropClick &&\n ev.composedPath().indexOf(dialogElement) <= 0\n ) {\n const rect = this.dialogEl.getBoundingClientRect();\n const isInDialog =\n rect.top <= ev.clientY &&\n ev.clientY <= rect.top + rect.height &&\n rect.left <= ev.clientX &&\n ev.clientX <= rect.left + rect.width;\n if (!isInDialog) {\n this.open = false;\n }\n }\n }\n\n /**\n * @deprecated This method should not be used anymore. Use open prop to set dialog visibility.\n */\n @Method()\n async showDialog(): Promise<void> {\n this.dialogRendered = true;\n this.dialogEl.showModal();\n setTimeout(() => {\n this.fadeIn = true;\n }, 10);\n setTimeout(() => {\n this.setInitialFocus();\n checkResizeObserver(this.runResizeObserver);\n }, 75);\n setTimeout(() => {\n this.getFocusedElementIndex();\n this.icDialogOpened.emit();\n }, 80);\n }\n\n /**\n * @deprecated This method should not be used anymore. Use open prop to set dialog visibility.\n */\n @Method()\n async hideDialog(): Promise<void> {\n this.fadeIn = false;\n if (this.resizeObserver !== null) {\n this.resizeObserver.disconnect();\n }\n setTimeout(() => {\n this.dialogRendered = false;\n this.dialogEl.close();\n this.sourceElement?.focus();\n this.el.removeAttribute(this.DATA_OVERFLOW);\n this.dialogHeight = 0;\n this.icDialogClosed.emit();\n }, 80);\n }\n\n /**\n * Cancels the dialog. Used by the default 'Cancel' button or can be called manually to trigger cancelling of dialog.\n */\n @Method()\n async cancelDialog(): Promise<void> {\n this.icDialogCancelled.emit();\n this.open = false;\n }\n\n /**\n * Confirms the dialog. Used by the default 'Confirm' button or can be called manually to trigger confirming of dialog.\n */\n @Method()\n async confirmDialog(): Promise<void> {\n this.icDialogConfirmed.emit();\n }\n\n private setContentOverflow = (): void => {\n if (this.dialogEl.clientHeight < this.dialogEl.scrollHeight) {\n this.el.setAttribute(this.DATA_OVERFLOW, \"true\");\n } else {\n this.el.setAttribute(this.DATA_OVERFLOW, \"false\");\n }\n };\n\n private runResizeObserver = () => {\n this.resizeObserver = new ResizeObserver(() => {\n clearTimeout(this.resizeTimeout);\n this.resizeTimeout = window.setTimeout(this.resizeObserverCallback, 80);\n });\n this.resizeObserver.observe(this.dialogEl);\n };\n\n private resizeObserverCallback = () => {\n if (this.dialogEl.clientHeight !== this.dialogHeight) {\n this.el.setAttribute(this.DATA_OVERFLOW, \"false\");\n this.setContentOverflow();\n this.dialogHeight = this.dialogEl.clientHeight;\n }\n };\n\n private setInitialFocus = () => {\n this.sourceElement = document.activeElement as HTMLElement;\n\n let focusedElement;\n\n if (this.el.querySelector(this.DATA_GETS_FOCUS_SELECTOR) !== null) {\n focusedElement = this.el.querySelector(\n this.DATA_GETS_FOCUS_SELECTOR\n ) as HTMLElement;\n } else {\n focusedElement = this.el.shadowRoot.querySelector(\n this.DATA_GETS_FOCUS_SELECTOR\n ) as HTMLElement;\n }\n if (focusedElement.tagName === this.IC_TEXT_FIELD) {\n (focusedElement as HTMLIcTextFieldElement).setFocus();\n } else if (focusedElement.tagName === this.IC_ACCORDION) {\n (focusedElement as HTMLIcAccordionElement).setFocus();\n } else {\n focusedElement.focus();\n }\n };\n\n private getFocusedElementIndex = () => {\n for (let i = 0; i < this.interactiveElementList.length; i++) {\n if (\n (this.interactiveElementList[i] as HTMLElement) ===\n (this.el.shadowRoot.activeElement || document.activeElement)\n ) {\n this.focusedElementIndex = i;\n }\n }\n };\n\n private setAlertVariant = () => {\n if (isPropDefined(this.status) && this.status !== null) {\n const alert = this.el.shadowRoot.querySelector(\"ic-alert\");\n alert.setAttribute(\"variant\", this.status);\n }\n };\n\n private closeIconClick = () => {\n this.open = false;\n };\n\n private getInteractiveElements = () => {\n this.interactiveElementList = Array.from(\n this.el.shadowRoot.querySelectorAll(\"ic-button\")\n );\n const slottedInteractiveElements = Array.from(\n this.el.querySelectorAll(\n `a[href], button, input:not(.ic-input), textarea, select, details, [tabindex]:not([tabindex=\"-1\"]), \n ic-button, ic-checkbox, ic-select, ic-search-bar, ic-tab-group, ic-radio-group, \n ic-back-to-top, ic-breadcrumb, ic-chip[dismissible=\"true\"], ic-footer-link, ic-link, ic-navigation-button, \n ic-navigation-item, ic-switch, ic-text-field, ic-accordion-group, ic-accordion`\n )\n );\n if (slottedInteractiveElements.length > 0) {\n if (slottedInteractiveElements[0].slot !== this.DIALOG_CONTROLS) {\n slottedInteractiveElements[0].setAttribute(this.DATA_GETS_FOCUS, \"\");\n } else if (!this.destructive) {\n slottedInteractiveElements[\n slottedInteractiveElements.length - 1\n ].setAttribute(this.DATA_GETS_FOCUS, \"\");\n }\n }\n for (let i = 0; i < slottedInteractiveElements.length; i++) {\n this.interactiveElementList.splice(\n 1 + i,\n 0,\n slottedInteractiveElements[i] as HTMLElement\n );\n }\n };\n\n private getNextFocusEl = (focusedElementIndex: number) =>\n this.interactiveElementList[focusedElementIndex];\n\n private focusNextInteractiveElement = (shiftKey: boolean) => {\n this.getFocusedElementIndex();\n this.setFocusIndexBasedOnShiftKey(shiftKey);\n this.loopNextFocusIndexIfLastElement();\n\n let nextFocusEl = this.getNextFocusEl(this.focusedElementIndex);\n\n const isHidden = getComputedStyle(nextFocusEl).visibility === \"hidden\";\n\n if (nextFocusEl.tagName === this.IC_TEXT_FIELD) {\n (nextFocusEl as HTMLIcTextFieldElement).setFocus();\n } else {\n if (isHidden) {\n this.setFocusIndexBasedOnShiftKey(shiftKey);\n this.loopNextFocusIndexIfLastElement();\n\n nextFocusEl = this.getNextFocusEl(this.focusedElementIndex);\n }\n if (nextFocusEl.tagName === this.IC_ACCORDION) {\n (nextFocusEl as HTMLIcAccordionElement).setFocus();\n } else {\n (nextFocusEl as HTMLElement).focus();\n }\n }\n };\n\n private setButtonOnClick = () => {\n if (this.buttons) {\n this.buttonOnclick0 = new Function(this.buttonProps[0]?.onclick);\n this.buttonOnclick1 = new Function(this.buttonProps[1]?.onclick);\n this.buttonOnclick2 = new Function(this.buttonProps[2]?.onclick);\n }\n };\n\n private getButtonOnclick = (index: number) => {\n if (index === 0) {\n return this.buttonOnclick0();\n } else if (index === 1) {\n return this.buttonOnclick1();\n } else {\n return this.buttonOnclick2();\n }\n };\n\n private getButtonVariant = (index: number) => {\n const mainVariant = this.destructive ? \"destructive\" : \"primary\";\n if (this.buttonProps.length === 1) {\n return mainVariant;\n } else if (this.buttonProps.length === 2) {\n if (index === 0) {\n return \"tertiary\";\n } else {\n return mainVariant;\n }\n } else {\n if (index === 2) {\n return mainVariant;\n } else {\n return \"secondary\";\n }\n }\n };\n\n private loopNextFocusIndexIfLastElement() {\n if (this.focusedElementIndex > this.interactiveElementList.length - 1)\n this.focusedElementIndex = 0;\n else if (this.focusedElementIndex < 0) {\n this.focusedElementIndex = this.interactiveElementList.length - 1;\n }\n }\n\n private setFocusIndexBasedOnShiftKey(shiftKey: boolean) {\n if (shiftKey) {\n this.focusedElementIndex -= 1;\n } else {\n this.focusedElementIndex += 1;\n }\n }\n\n render() {\n const {\n alertHeading,\n alertMessage,\n buttons,\n buttonProps,\n size,\n heading,\n label,\n status,\n destructive,\n dismissLabel,\n } = this;\n\n return (\n <Host\n class={{ [\"hidden\"]: !this.dialogRendered, [\"fade-in\"]: this.fadeIn }}\n >\n <dialog\n class={{ [\"dialog\"]: true, [`${size}`]: true }}\n aria-labelledby=\"dialog-label dialog-heading\"\n aria-describedby=\"dialog-alert dialog-content\"\n ref={(el) => (this.dialogEl = el)}\n >\n <div class=\"heading-area\">\n <div class=\"heading-content\">\n <div class=\"label\">\n <slot name=\"label\">\n <ic-typography variant=\"label\" id=\"dialog-label\">\n {label}\n </ic-typography>\n </slot>\n </div>\n <div class=\"heading\">\n <slot name=\"heading\">\n <ic-typography variant=\"h4\" id=\"dialog-heading\">\n {heading}\n </ic-typography>\n </slot>\n </div>\n </div>\n <ic-button\n class=\"close-icon\"\n variant=\"icon\"\n aria-label={dismissLabel}\n onClick={this.closeIconClick}\n data-gets-focus={destructive || !buttons ? \"\" : null}\n >\n <span class=\"close-icon-svg\" innerHTML={closeIcon} />\n </ic-button>\n </div>\n <div class=\"content-area\">\n {isSlotUsed(this.el, \"alert\") ? (\n <slot name=\"alert\"></slot>\n ) : (\n status && (\n <ic-alert\n variant={status}\n heading={alertHeading}\n message={alertMessage}\n title-above\n class=\"status-alert\"\n id=\"dialog-alert\"\n ></ic-alert>\n )\n )}\n <div id=\"dialog-content\">\n <slot></slot>\n </div>\n </div>\n {(buttons || isSlotUsed(this.el, this.DIALOG_CONTROLS)) && (\n <div\n class={{\n [this.DIALOG_CONTROLS]: true,\n [\"triple-button\"]: buttonProps.length === 3,\n }}\n >\n <slot name={this.DIALOG_CONTROLS}>\n {!isSlotUsed(this.el, this.DIALOG_CONTROLS) &&\n buttonProps.map((props, index) => {\n if (index > 2) {\n return;\n } else {\n return (\n <ic-button\n variant={this.getButtonVariant(index)}\n onClick={() => this.getButtonOnclick(index)}\n class=\"dialog-control-button\"\n full-width={buttonProps.length === 3}\n data-gets-focus={\n this.getButtonVariant(index) === \"primary\"\n ? \"\"\n : null\n }\n >\n {props.label}\n </ic-button>\n );\n }\n })}\n </slot>\n </div>\n )}\n </dialog>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ic-dialog.js","sourceRoot":"","sources":["../../../src/components/ic-dialog/ic-dialog.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Prop,\n State,\n Method,\n Listen,\n Watch,\n h,\n} from \"@stencil/core\";\nimport closeIcon from \"../../assets/close-icon.svg\";\nimport {\n isSlotUsed,\n checkResizeObserver,\n isPropDefined,\n} from \"../../utils/helpers\";\n\n/**\n * @slot dialog-controls - Content will be place at the bottom of the dialog.\n * @slot heading - Content will be placed at the top of the dialog.\n * @slot label - Content will be placed above the dialog heading.\n * @slot alert - Content will be placed at the top of the content area of the dialog.\n */\n@Component({\n tag: \"ic-dialog\",\n styleUrl: \"ic-dialog.css\",\n shadow: true,\n})\nexport class Dialog {\n private backdropEl: HTMLDivElement;\n private contentArea: HTMLSlotElement;\n private DATA_GETS_FOCUS: string = \"data-gets-focus\";\n private DATA_GETS_FOCUS_SELECTOR: string = \"[data-gets-focus]\";\n private DIALOG_CONTROLS: string = \"dialog-controls\";\n private dialogEl: HTMLDialogElement;\n private dialogHeight: number = 0;\n private focusedElementIndex = 0;\n private IC_TEXT_FIELD: string = \"IC-TEXT-FIELD\";\n private IC_ACCORDION: string = \"IC-ACCORDION\";\n private interactiveElementList: HTMLElement[];\n private resizeObserver: ResizeObserver = null;\n private resizeTimeout: number;\n private sourceElement: HTMLElement;\n\n /* eslint-disable */\n\n private buttonOnclick0: Function;\n private buttonOnclick1: Function;\n private buttonOnclick2: Function;\n\n /* eslint-enable */\n\n @Element() el: HTMLIcDialogElement;\n\n @State() dialogRendered: boolean = false;\n @State() fadeIn: boolean = false;\n\n /**\n * @deprecated This prop should not be used anymore. Use an ic-alert/IcAlert component within an alert slot with a heading instead.\n */\n @Prop() alertHeading?: string;\n\n /**\n * @deprecated This prop should not be used anymore. Use an ic-alert/IcAlert component within an alert slot with a message instead.\n */\n @Prop() alertMessage?: string;\n\n /**\n * If set to `false`, dialog controls will not be displayed overriding buttonProps or slotted dialog controls.\n */\n @Prop() buttons?: boolean = true;\n\n /**\n * If set to `true`, the dialog will not close when the backdrop is clicked.\n */\n @Prop() closeOnBackdropClick?: boolean = true;\n\n /**\n * If default buttons are displayed, sets the 'primary' or rightmost button to the destructive variant. Stops initial focus being set on the 'primary' or rightmost default or slotted button.\n */\n @Prop() destructive?: boolean = false;\n\n /**\n * Sets the dismiss label tooltip and aria label.\n */\n @Prop() dismissLabel?: string = \"Dismiss\";\n\n /**\n * If set to `true`, the content area max height and overflow properties are removed allowing the dialog to stretch below the fold.\n * This prop also prevents popover elements from being cut off within the content area.\n */\n @Prop() disableHeightConstraint?: boolean = false;\n\n /**\n * If `true`, the close button will not be displayed.\n */\n @Prop() hideCloseButton?: boolean = false;\n\n /**\n * Sets the heading for the dialog.\n */\n @Prop() heading!: string;\n\n /**\n * Sets the optional label for the dialog which appears above the heading.\n */\n @Prop() label?: string;\n\n /**\n * If `true`, the dialog will be displayed.\n */\n @Prop({ reflect: true, mutable: true }) open: boolean = undefined;\n\n @Watch(\"open\")\n watchOpenHandler(): void {\n if (this.open) {\n this.dialogOpened();\n } else {\n this.fadeIn = false;\n if (this.resizeObserver !== null) {\n this.resizeObserver.disconnect();\n }\n setTimeout(() => {\n this.dialogRendered = false;\n this.dialogEl.close();\n this.sourceElement?.focus();\n this.dialogHeight = 0;\n this.icDialogClosed.emit();\n }, 80);\n }\n }\n\n /**\n * Sets the maximum and minimum height and width for the dialog.\n */\n @Prop() size?: \"small\" | \"medium\" | \"large\" = \"small\";\n\n /**\n * @deprecated This prop should not be used anymore. Use an ic-alert/IcAlert component within an alert slot with a variant instead.\n */\n @Prop() status?: \"neutral\" | \"info\" | \"warning\" | \"error\" | \"success\";\n\n /**\n * Sets the label and onclick functions for default buttons.\n */\n @Prop() buttonProps?: { label: string; onclick: string }[] = [\n {\n label: \"Cancel\",\n onclick: \"this.cancelDialog();\",\n },\n { label: \"Confirm\", onclick: \"this.confirmDialog();\" },\n ];\n\n @Watch(\"buttonProps\")\n watchPropHandler(): void {\n this.setButtonOnClick();\n }\n\n /**\n * Cancelation event emitted when default 'Cancel' button clicked or 'cancelDialog' method is called.\n */\n @Event() icDialogCancelled: EventEmitter<void>;\n\n /**\n * Emitted when dialog has closed.\n */\n @Event() icDialogClosed: EventEmitter<void>;\n\n /**\n * Confirmation event emitted when default 'Confirm' primary button clicked or 'confirmDialog' method is called.\n */\n @Event() icDialogConfirmed: EventEmitter<void>;\n\n /**\n * Emitted when dialog has opened.\n */\n @Event() icDialogOpened: EventEmitter<void>;\n\n disconnectedCallback(): void {\n this.removeSlotChangeListener();\n }\n\n componentWillLoad(): void {\n if (this.buttonProps.length) {\n this.setButtonOnClick();\n }\n }\n\n componentDidLoad(): void {\n this.getInteractiveElements();\n this.setAlertVariant();\n\n this.refreshInteractiveElementsOnSlotChange();\n\n if (this.open) {\n this.dialogOpened();\n }\n }\n\n componentDidRender(): void {\n if (\n getComputedStyle(this.el).display !== \"none\" &&\n this.disableHeightConstraint\n ) {\n document.body.style.overflow = \"hidden\";\n } else {\n document.body.style.overflow = \"auto\";\n }\n }\n\n @Listen(\"keydown\", { target: \"document\" })\n handleKeyboard(ev: KeyboardEvent): void {\n if (this.dialogRendered) {\n switch (ev.key) {\n case \"Tab\":\n ev.preventDefault();\n this.focusNextInteractiveElement(ev.shiftKey);\n break;\n case \"Escape\":\n if (!ev.repeat) {\n this.open = false;\n }\n ev.stopImmediatePropagation();\n break;\n }\n }\n }\n\n @Listen(\"click\", {})\n handleClick(ev: MouseEvent): void {\n const dialogElement = this.el.shadowRoot.querySelector(\"dialog\");\n if (\n this.closeOnBackdropClick &&\n ev.composedPath().indexOf(dialogElement) <= 0\n ) {\n const rect = this.dialogEl.getBoundingClientRect();\n const isInDialog =\n rect.top <= ev.clientY &&\n ev.clientY <= rect.top + rect.height &&\n rect.left <= ev.clientX &&\n ev.clientX <= rect.left + rect.width;\n if (!isInDialog) {\n this.open = false;\n }\n }\n }\n\n /**\n * @deprecated This method should not be used anymore. Use open prop to set dialog visibility.\n */\n @Method()\n async showDialog(): Promise<void> {\n this.open = true;\n }\n\n /**\n * @deprecated This method should not be used anymore. Use open prop to set dialog visibility.\n */\n @Method()\n async hideDialog(): Promise<void> {\n this.open = false;\n }\n\n /**\n * Cancels the dialog. Used by the default 'Cancel' button or can be called manually to trigger cancelling of dialog.\n */\n @Method()\n async cancelDialog(): Promise<void> {\n this.icDialogCancelled.emit();\n this.open = false;\n }\n\n /**\n * Confirms the dialog. Used by the default 'Confirm' button or can be called manually to trigger confirming of dialog.\n */\n @Method()\n async confirmDialog(): Promise<void> {\n this.icDialogConfirmed.emit();\n }\n\n private dialogOpened = () => {\n this.dialogRendered = true;\n\n if (this.disableHeightConstraint) {\n this.dialogEl.show();\n } else {\n this.dialogEl.showModal();\n }\n\n setTimeout(() => {\n this.fadeIn = true;\n\n /**\n * This is required to set scroll back to top if:\n * - dialog content goes below the fold\n * - is closed using cancel or confirm and reopened.\n *\n * Without this, the scroll bar will start from the dialog's last scroll-x coordinate.\n */\n if (this.disableHeightConstraint && this.backdropEl.scrollTop !== 0) {\n this.backdropEl.scrollTop = 0;\n }\n }, 10);\n\n setTimeout(() => {\n this.setInitialFocus();\n checkResizeObserver(this.runResizeObserver);\n }, 75);\n\n setTimeout(() => {\n this.getFocusedElementIndex();\n this.icDialogOpened.emit();\n }, 80);\n };\n\n private runResizeObserver = () => {\n this.resizeObserver = new ResizeObserver(() => {\n clearTimeout(this.resizeTimeout);\n this.resizeTimeout = window.setTimeout(this.resizeObserverCallback, 80);\n });\n this.resizeObserver.observe(this.dialogEl);\n };\n\n private resizeObserverCallback = () => {\n if (this.dialogEl.clientHeight !== this.dialogHeight) {\n this.dialogHeight = this.dialogEl.clientHeight;\n }\n };\n\n private refreshInteractiveElementsOnSlotChange = () => {\n this.contentArea = this.el.shadowRoot.querySelector(\"#dialog-content slot\");\n\n this.contentArea.addEventListener(\n \"slotchange\",\n this.getInteractiveElements\n );\n };\n\n private removeSlotChangeListener = () => {\n if (this.contentArea) {\n this.contentArea.removeEventListener(\n \"slotchange\",\n this.getInteractiveElements\n );\n }\n };\n\n private setInitialFocus = () => {\n this.sourceElement = document.activeElement as HTMLElement;\n\n let focusedElement;\n\n if (this.el.querySelector(this.DATA_GETS_FOCUS_SELECTOR) !== null) {\n focusedElement = this.el.querySelector(\n this.DATA_GETS_FOCUS_SELECTOR\n ) as HTMLElement;\n } else {\n focusedElement = this.el.shadowRoot.querySelector(\n this.DATA_GETS_FOCUS_SELECTOR\n ) as HTMLElement;\n }\n if (focusedElement.tagName === this.IC_TEXT_FIELD) {\n (focusedElement as HTMLIcTextFieldElement).setFocus();\n } else if (focusedElement.tagName === this.IC_ACCORDION) {\n (focusedElement as HTMLIcAccordionElement).setFocus();\n } else {\n focusedElement.focus({\n preventScroll: this.disableHeightConstraint ? true : false,\n });\n }\n };\n\n private getFocusedElementIndex = () => {\n for (let i = 0; i < this.interactiveElementList.length; i++) {\n if (\n (this.interactiveElementList[i] as HTMLElement) ===\n (this.el.shadowRoot.activeElement || document.activeElement)\n ) {\n this.focusedElementIndex = i;\n }\n }\n };\n\n private setAlertVariant = () => {\n if (isPropDefined(this.status) && this.status !== null) {\n const alert = this.el.shadowRoot.querySelector(\"ic-alert\");\n alert.setAttribute(\"variant\", this.status);\n }\n };\n\n private closeIconClick = () => {\n this.open = false;\n };\n\n private getInteractiveElements = () => {\n this.interactiveElementList = Array.from(\n this.el.shadowRoot.querySelectorAll(\"ic-button\")\n );\n const slottedInteractiveElements = Array.from(\n this.el.querySelectorAll(\n `a[href], button, input:not(.ic-input), textarea, select, details, [tabindex]:not([tabindex=\"-1\"]), \n ic-button, ic-checkbox, ic-select, ic-search-bar, ic-tab-group, ic-radio-group, \n ic-back-to-top, ic-breadcrumb, ic-chip[dismissible=\"true\"], ic-footer-link, ic-link, ic-navigation-button, \n ic-navigation-item, ic-switch, ic-text-field, ic-accordion-group, ic-accordion`\n )\n );\n if (slottedInteractiveElements.length > 0) {\n if (slottedInteractiveElements[0].slot !== this.DIALOG_CONTROLS) {\n slottedInteractiveElements[0].setAttribute(this.DATA_GETS_FOCUS, \"\");\n } else if (!this.destructive) {\n slottedInteractiveElements[\n slottedInteractiveElements.length - 1\n ].setAttribute(this.DATA_GETS_FOCUS, \"\");\n }\n }\n for (let i = 0; i < slottedInteractiveElements.length; i++) {\n this.interactiveElementList.splice(\n 1 + i,\n 0,\n slottedInteractiveElements[i] as HTMLElement\n );\n }\n };\n\n private getNextFocusEl = (focusedElementIndex: number) =>\n this.interactiveElementList[focusedElementIndex];\n\n private focusNextInteractiveElement = (shiftKey: boolean) => {\n this.getFocusedElementIndex();\n this.setFocusIndexBasedOnShiftKey(shiftKey);\n this.loopNextFocusIndexIfLastElement();\n\n let nextFocusEl = this.getNextFocusEl(this.focusedElementIndex);\n\n const isHidden = getComputedStyle(nextFocusEl).visibility === \"hidden\";\n\n if (nextFocusEl.tagName === this.IC_TEXT_FIELD) {\n (nextFocusEl as HTMLIcTextFieldElement).setFocus();\n } else {\n if (isHidden) {\n this.setFocusIndexBasedOnShiftKey(shiftKey);\n this.loopNextFocusIndexIfLastElement();\n\n nextFocusEl = this.getNextFocusEl(this.focusedElementIndex);\n }\n if (nextFocusEl.tagName === this.IC_ACCORDION) {\n (nextFocusEl as HTMLIcAccordionElement).setFocus();\n } else {\n (nextFocusEl as HTMLElement).focus();\n }\n }\n };\n\n private setButtonOnClick = () => {\n if (this.buttons) {\n this.buttonOnclick0 = new Function(this.buttonProps[0]?.onclick);\n this.buttonOnclick1 = new Function(this.buttonProps[1]?.onclick);\n this.buttonOnclick2 = new Function(this.buttonProps[2]?.onclick);\n }\n };\n\n private getButtonOnclick = (index: number) => {\n if (index === 0) {\n return this.buttonOnclick0();\n } else if (index === 1) {\n return this.buttonOnclick1();\n } else {\n return this.buttonOnclick2();\n }\n };\n\n private getButtonVariant = (index: number) => {\n const mainVariant = this.destructive ? \"destructive\" : \"primary\";\n if (this.buttonProps.length === 1) {\n return mainVariant;\n } else if (this.buttonProps.length === 2) {\n if (index === 0) {\n return \"tertiary\";\n } else {\n return mainVariant;\n }\n } else {\n if (index === 2) {\n return mainVariant;\n } else {\n return \"secondary\";\n }\n }\n };\n\n private loopNextFocusIndexIfLastElement() {\n if (this.focusedElementIndex > this.interactiveElementList.length - 1)\n this.focusedElementIndex = 0;\n else if (this.focusedElementIndex < 0) {\n this.focusedElementIndex = this.interactiveElementList.length - 1;\n }\n }\n\n private setFocusIndexBasedOnShiftKey(shiftKey: boolean) {\n if (shiftKey) {\n this.focusedElementIndex -= 1;\n } else {\n this.focusedElementIndex += 1;\n }\n }\n\n private renderDialog = () => {\n const {\n alertHeading,\n alertMessage,\n buttons,\n buttonProps,\n size,\n heading,\n label,\n status,\n destructive,\n dismissLabel,\n hideCloseButton,\n } = this;\n\n return (\n <dialog\n class={{\n [\"dialog\"]: true,\n [`${size}`]: true,\n [\"disable-height-constraint\"]: this.disableHeightConstraint,\n }}\n aria-labelledby=\"dialog-label dialog-heading\"\n aria-describedby=\"dialog-alert dialog-content\"\n ref={(el) => (this.dialogEl = el)}\n >\n <div class=\"heading-area\">\n <div class=\"heading-content\">\n <div class=\"label\">\n <slot name=\"label\">\n <ic-typography variant=\"label\" id=\"dialog-label\">\n {label}\n </ic-typography>\n </slot>\n </div>\n <div class=\"heading\">\n <slot name=\"heading\">\n <ic-typography variant=\"h4\" id=\"dialog-heading\">\n {heading}\n </ic-typography>\n </slot>\n </div>\n </div>\n {!hideCloseButton && (\n <ic-button\n class=\"close-icon\"\n variant=\"icon\"\n innerHTML={closeIcon}\n aria-label={dismissLabel}\n onClick={this.closeIconClick}\n data-gets-focus={destructive || !buttons ? \"\" : null}\n ></ic-button>\n )}\n </div>\n <div class=\"content-area\">\n {isSlotUsed(this.el, \"alert\") ? (\n <slot name=\"alert\"></slot>\n ) : (\n status && (\n <ic-alert\n variant={status}\n heading={alertHeading}\n message={alertMessage}\n title-above\n class=\"status-alert\"\n id=\"dialog-alert\"\n ></ic-alert>\n )\n )}\n <div id=\"dialog-content\">\n <slot></slot>\n </div>\n </div>\n {(buttons || isSlotUsed(this.el, this.DIALOG_CONTROLS)) && (\n <div\n class={{\n [this.DIALOG_CONTROLS]: true,\n [\"triple-button\"]: buttonProps.length === 3,\n }}\n >\n <slot name={this.DIALOG_CONTROLS}>\n {!isSlotUsed(this.el, this.DIALOG_CONTROLS) &&\n buttonProps.map((props, index) => {\n if (index > 2) {\n return;\n } else {\n return (\n <ic-button\n variant={this.getButtonVariant(index)}\n onClick={() => this.getButtonOnclick(index)}\n class=\"dialog-control-button\"\n full-width={buttonProps.length === 3}\n data-gets-focus={\n this.getButtonVariant(index) === \"primary\" ? \"\" : null\n }\n >\n {props.label}\n </ic-button>\n );\n }\n })}\n </slot>\n </div>\n )}\n </dialog>\n );\n };\n\n render() {\n return (\n <Host\n class={{\n [\"hidden\"]: !this.dialogRendered,\n [\"fade-in\"]: this.fadeIn,\n [\"disable-height-constraint\"]: this.disableHeightConstraint,\n }}\n >\n {this.disableHeightConstraint ? (\n <div class=\"backdrop\" ref={(el) => (this.backdropEl = el)}>\n {this.renderDialog()}\n </div>\n ) : (\n this.renderDialog()\n )}\n </Host>\n );\n }\n}\n"]}