@ukic/web-components 2.1.0-beta.14 → 2.1.0-beta.16

Sign up to get free protection for your applications and to get access to all the features.
Files changed (805) hide show
  1. package/dist/cjs/core.cjs.js +10 -3
  2. package/dist/cjs/core.cjs.js.map +1 -1
  3. package/dist/cjs/{helpers-2021e212.js → helpers-eb53c416.js} +25 -25
  4. package/dist/cjs/helpers-eb53c416.js.map +1 -0
  5. package/dist/cjs/ic-alert.cjs.entry.js +2 -2
  6. package/dist/cjs/ic-back-to-top.cjs.entry.js +2 -2
  7. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js +15 -15
  8. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js.map +1 -1
  9. package/dist/cjs/ic-breadcrumb.cjs.entry.js +6 -5
  10. package/dist/cjs/ic-breadcrumb.cjs.entry.js.map +1 -1
  11. package/dist/cjs/ic-button_3.cjs.entry.js +33 -36
  12. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  13. package/dist/cjs/ic-card.cjs.entry.js +4 -3
  14. package/dist/cjs/ic-card.cjs.entry.js.map +1 -1
  15. package/dist/cjs/ic-checkbox-group.cjs.entry.js +5 -2
  16. package/dist/cjs/ic-checkbox-group.cjs.entry.js.map +1 -1
  17. package/dist/cjs/ic-checkbox.cjs.entry.js +7 -5
  18. package/dist/cjs/ic-checkbox.cjs.entry.js.map +1 -1
  19. package/dist/cjs/ic-chip.cjs.entry.js +5 -2
  20. package/dist/cjs/ic-chip.cjs.entry.js.map +1 -1
  21. package/dist/cjs/ic-classification-banner.cjs.entry.js +1 -1
  22. package/dist/cjs/ic-data-entity.cjs.entry.js +1 -1
  23. package/dist/cjs/ic-data-row.cjs.entry.js +2 -2
  24. package/dist/cjs/ic-dialog.cjs.entry.js +296 -0
  25. package/dist/cjs/ic-dialog.cjs.entry.js.map +1 -0
  26. package/dist/cjs/ic-divider.cjs.entry.js +2 -2
  27. package/dist/cjs/ic-footer-link-group.cjs.entry.js +2 -2
  28. package/dist/cjs/ic-footer-link.cjs.entry.js +2 -2
  29. package/dist/cjs/ic-footer.cjs.entry.js +4 -4
  30. package/dist/cjs/ic-footer.cjs.entry.js.map +1 -1
  31. package/dist/cjs/ic-hero.cjs.entry.js +2 -2
  32. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +2 -2
  33. package/dist/cjs/ic-input-component-container_3.cjs.entry.js +69 -27
  34. package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +1 -1
  35. package/dist/cjs/ic-input-label_2.cjs.entry.js +3 -3
  36. package/dist/cjs/ic-input-label_2.cjs.entry.js.map +1 -1
  37. package/dist/cjs/ic-link.cjs.entry.js +2 -2
  38. package/dist/cjs/ic-menu-group.cjs.entry.js +1 -1
  39. package/dist/cjs/ic-menu-item.cjs.entry.js +6 -4
  40. package/dist/cjs/ic-menu-item.cjs.entry.js.map +1 -1
  41. package/dist/cjs/ic-navigation-button.cjs.entry.js +2 -2
  42. package/dist/cjs/ic-navigation-group.cjs.entry.js +50 -21
  43. package/dist/cjs/ic-navigation-group.cjs.entry.js.map +1 -1
  44. package/dist/cjs/ic-navigation-item.cjs.entry.js +3 -3
  45. package/dist/cjs/ic-navigation-item.cjs.entry.js.map +1 -1
  46. package/dist/cjs/ic-navigation-menu.cjs.entry.js +2 -8
  47. package/dist/cjs/ic-navigation-menu.cjs.entry.js.map +1 -1
  48. package/dist/cjs/ic-page-header.cjs.entry.js +12 -15
  49. package/dist/cjs/ic-page-header.cjs.entry.js.map +1 -1
  50. package/dist/cjs/ic-pagination-item.cjs.entry.js +6 -1
  51. package/dist/cjs/ic-pagination-item.cjs.entry.js.map +1 -1
  52. package/dist/cjs/ic-pagination.cjs.entry.js +14 -2
  53. package/dist/cjs/ic-pagination.cjs.entry.js.map +1 -1
  54. package/dist/cjs/ic-popover-menu.cjs.entry.js +7 -6
  55. package/dist/cjs/ic-popover-menu.cjs.entry.js.map +1 -1
  56. package/dist/cjs/ic-radio-group.cjs.entry.js +16 -5
  57. package/dist/cjs/ic-radio-group.cjs.entry.js.map +1 -1
  58. package/dist/cjs/ic-radio-option.cjs.entry.js +5 -11
  59. package/dist/cjs/ic-radio-option.cjs.entry.js.map +1 -1
  60. package/dist/cjs/ic-search-bar.cjs.entry.js +6 -3
  61. package/dist/cjs/ic-search-bar.cjs.entry.js.map +1 -1
  62. package/dist/cjs/ic-section-container.cjs.entry.js +1 -1
  63. package/dist/cjs/ic-select.cjs.entry.js +35 -34
  64. package/dist/cjs/ic-select.cjs.entry.js.map +1 -1
  65. package/dist/cjs/ic-side-navigation.cjs.entry.js +70 -57
  66. package/dist/cjs/ic-side-navigation.cjs.entry.js.map +1 -1
  67. package/dist/cjs/ic-skeleton.cjs.entry.js +1 -1
  68. package/dist/cjs/ic-status-tag.cjs.entry.js +3 -3
  69. package/dist/cjs/ic-status-tag.cjs.entry.js.map +1 -1
  70. package/dist/cjs/ic-step.cjs.entry.js +3 -3
  71. package/dist/cjs/ic-step.cjs.entry.js.map +1 -1
  72. package/dist/cjs/ic-stepper.cjs.entry.js +2 -2
  73. package/dist/cjs/ic-switch.cjs.entry.js +4 -3
  74. package/dist/cjs/ic-switch.cjs.entry.js.map +1 -1
  75. package/dist/cjs/ic-tab-context.cjs.entry.js +8 -6
  76. package/dist/cjs/ic-tab-context.cjs.entry.js.map +1 -1
  77. package/dist/cjs/ic-tab-group.cjs.entry.js +3 -3
  78. package/dist/cjs/ic-tab-group.cjs.entry.js.map +1 -1
  79. package/dist/cjs/ic-tab-panel.cjs.entry.js +4 -2
  80. package/dist/cjs/ic-tab-panel.cjs.entry.js.map +1 -1
  81. package/dist/cjs/ic-tab.cjs.entry.js +8 -2
  82. package/dist/cjs/ic-tab.cjs.entry.js.map +1 -1
  83. package/dist/cjs/ic-text-field.cjs.entry.js +9 -18
  84. package/dist/cjs/ic-text-field.cjs.entry.js.map +1 -1
  85. package/dist/cjs/ic-theme.cjs.entry.js +2 -2
  86. package/dist/cjs/ic-toast-region.cjs.entry.js +1 -1
  87. package/dist/cjs/ic-toast.cjs.entry.js +2 -2
  88. package/dist/cjs/ic-top-navigation.cjs.entry.js +2 -2
  89. package/dist/cjs/ic-typography.cjs.entry.js +96 -4
  90. package/dist/cjs/ic-typography.cjs.entry.js.map +1 -1
  91. package/dist/cjs/{index-a62312a7.js → index-014e3058.js} +222 -43
  92. package/dist/cjs/index-014e3058.js.map +1 -0
  93. package/dist/cjs/loader.cjs.js +4 -3
  94. package/dist/cjs/loader.cjs.js.map +1 -1
  95. package/dist/collection/collection-manifest.json +13 -12
  96. package/dist/collection/components/ic-alert/ic-alert.e2e.js +16 -0
  97. package/dist/collection/components/ic-alert/ic-alert.e2e.js.map +1 -0
  98. package/dist/collection/components/ic-alert/ic-alert.spec.js +182 -0
  99. package/dist/collection/components/ic-alert/ic-alert.spec.js.map +1 -0
  100. package/dist/collection/components/ic-back-to-top/ic-back-to-top.e2e.js +68 -0
  101. package/dist/collection/components/ic-back-to-top/ic-back-to-top.e2e.js.map +1 -0
  102. package/dist/collection/components/ic-back-to-top/ic-back-to-top.spec.js +123 -0
  103. package/dist/collection/components/ic-back-to-top/ic-back-to-top.spec.js.map +1 -0
  104. package/dist/collection/components/ic-breadcrumb/ic-breadcrumb.js +4 -3
  105. package/dist/collection/components/ic-breadcrumb/ic-breadcrumb.js.map +1 -1
  106. package/dist/collection/components/ic-breadcrumb/ic-breadcrumb.spec.js +118 -0
  107. package/dist/collection/components/ic-breadcrumb/ic-breadcrumb.spec.js.map +1 -0
  108. package/dist/collection/components/ic-breadcrumb-group/ic-breadcrumb-group.e2e.js +41 -0
  109. package/dist/collection/components/ic-breadcrumb-group/ic-breadcrumb-group.e2e.js.map +1 -0
  110. package/dist/collection/components/ic-breadcrumb-group/ic-breadcrumb-group.js +13 -13
  111. package/dist/collection/components/ic-breadcrumb-group/ic-breadcrumb-group.js.map +1 -1
  112. package/dist/collection/components/ic-breadcrumb-group/ic-breadcrumb-group.spec.js +181 -0
  113. package/dist/collection/components/ic-breadcrumb-group/ic-breadcrumb-group.spec.js.map +1 -0
  114. package/dist/collection/components/ic-button/ic-button.e2e.js +173 -0
  115. package/dist/collection/components/ic-button/ic-button.e2e.js.map +1 -0
  116. package/dist/collection/components/ic-button/ic-button.js +4 -6
  117. package/dist/collection/components/ic-button/ic-button.js.map +1 -1
  118. package/dist/collection/components/ic-button/ic-button.spec.js +230 -0
  119. package/dist/collection/components/ic-button/ic-button.spec.js.map +1 -0
  120. package/dist/collection/components/ic-card/ic-card.css +3 -2
  121. package/dist/collection/components/ic-card/ic-card.e2e.js +23 -0
  122. package/dist/collection/components/ic-card/ic-card.e2e.js.map +1 -0
  123. package/dist/collection/components/ic-card/ic-card.js +2 -1
  124. package/dist/collection/components/ic-card/ic-card.js.map +1 -1
  125. package/dist/collection/components/ic-card/ic-card.spec.js +152 -0
  126. package/dist/collection/components/ic-card/ic-card.spec.js.map +1 -0
  127. package/dist/collection/components/ic-checkbox/ic-checkbox.js +6 -4
  128. package/dist/collection/components/ic-checkbox/ic-checkbox.js.map +1 -1
  129. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.e2e.js +201 -0
  130. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.e2e.js.map +1 -0
  131. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js +4 -1
  132. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js.map +1 -1
  133. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.spec.js +175 -0
  134. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.spec.js.map +1 -0
  135. package/dist/collection/components/ic-chip/ic-chip.js +4 -1
  136. package/dist/collection/components/ic-chip/ic-chip.js.map +1 -1
  137. package/dist/collection/components/ic-chip/ic-chip.spec.js +110 -0
  138. package/dist/collection/components/ic-chip/ic-chip.spec.js.map +1 -0
  139. package/dist/collection/components/ic-classification-banner/ic-classification-banner.spec.js +140 -0
  140. package/dist/collection/components/ic-classification-banner/ic-classification-banner.spec.js.map +1 -0
  141. package/dist/collection/components/ic-data-entity/ic-data-entity.spec.js +161 -0
  142. package/dist/collection/components/ic-data-entity/ic-data-entity.spec.js.map +1 -0
  143. package/dist/collection/components/ic-data-row/ic-data-row.spec.js +185 -0
  144. package/dist/collection/components/ic-data-row/ic-data-row.spec.js.map +1 -0
  145. package/dist/collection/components/ic-dialog/ic-dialog.css +595 -0
  146. package/dist/collection/components/ic-dialog/ic-dialog.e2e.js +204 -0
  147. package/dist/collection/components/ic-dialog/ic-dialog.e2e.js.map +1 -0
  148. package/dist/collection/components/ic-dialog/ic-dialog.js +641 -0
  149. package/dist/collection/components/ic-dialog/ic-dialog.js.map +1 -0
  150. package/dist/collection/components/ic-dialog/ic-dialog.spec.js +520 -0
  151. package/dist/collection/components/ic-dialog/ic-dialog.spec.js.map +1 -0
  152. package/dist/collection/components/ic-dialog/ic-dialog.test.a11y.js +28 -0
  153. package/dist/collection/components/ic-dialog/ic-dialog.test.a11y.js.map +1 -0
  154. package/dist/collection/components/ic-divider/ic-divider.spec.js +24 -0
  155. package/dist/collection/components/ic-divider/ic-divider.spec.js.map +1 -0
  156. package/dist/collection/components/ic-footer/ic-footer.css +2 -2
  157. package/dist/collection/components/ic-footer/ic-footer.e2e.js +50 -0
  158. package/dist/collection/components/ic-footer/ic-footer.e2e.js.map +1 -0
  159. package/dist/collection/components/ic-footer/ic-footer.js +1 -1
  160. package/dist/collection/components/ic-footer/ic-footer.js.map +1 -1
  161. package/dist/collection/components/ic-footer/ic-footer.spec.js +140 -0
  162. package/dist/collection/components/ic-footer/ic-footer.spec.js.map +1 -0
  163. package/dist/collection/components/ic-footer-link/ic-footer-link.spec.js +62 -0
  164. package/dist/collection/components/ic-footer-link/ic-footer-link.spec.js.map +1 -0
  165. package/dist/collection/components/ic-footer-link-group/ic-footer-link-group.spec.js +98 -0
  166. package/dist/collection/components/ic-footer-link-group/ic-footer-link-group.spec.js.map +1 -0
  167. package/dist/collection/components/ic-hero/ic-hero.spec.js +76 -0
  168. package/dist/collection/components/ic-hero/ic-hero.spec.js.map +1 -0
  169. package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.spec.js +180 -0
  170. package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.spec.js.map +1 -0
  171. package/dist/collection/components/ic-input-component-container/ic-input-component-container.css +32 -4
  172. package/dist/collection/components/ic-input-component-container/ic-input-component-container.spec.js +117 -0
  173. package/dist/collection/components/ic-input-component-container/ic-input-component-container.spec.js.map +1 -0
  174. package/dist/collection/components/ic-input-container/ic-input-container.spec.js +38 -0
  175. package/dist/collection/components/ic-input-container/ic-input-container.spec.js.map +1 -0
  176. package/dist/collection/components/ic-input-label/ic-input-label.spec.js +98 -0
  177. package/dist/collection/components/ic-input-label/ic-input-label.spec.js.map +1 -0
  178. package/dist/collection/components/ic-input-validation/ic-input-validation.css +0 -8
  179. package/dist/collection/components/ic-input-validation/ic-input-validation.spec.js +89 -0
  180. package/dist/collection/components/ic-input-validation/ic-input-validation.spec.js.map +1 -0
  181. package/dist/collection/components/ic-link/ic-link.spec.js +203 -0
  182. package/dist/collection/components/ic-link/ic-link.spec.js.map +1 -0
  183. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.css +1 -1
  184. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.e2e.js +34 -0
  185. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.e2e.js.map +1 -0
  186. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.spec.js +141 -0
  187. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.spec.js.map +1 -0
  188. package/dist/collection/components/ic-menu/ic-menu.css +9 -1
  189. package/dist/collection/components/ic-menu/ic-menu.js +89 -23
  190. package/dist/collection/components/ic-menu/ic-menu.js.map +1 -1
  191. package/dist/collection/components/ic-menu/ic-menu.spec.js +650 -0
  192. package/dist/collection/components/ic-menu/ic-menu.spec.js.map +1 -0
  193. package/dist/collection/components/ic-menu-group/ic-menu-group.spec.js +94 -0
  194. package/dist/collection/components/ic-menu-group/ic-menu-group.spec.js.map +1 -0
  195. package/dist/collection/components/ic-menu-item/ic-menu-item.css +2 -2
  196. package/dist/collection/components/ic-menu-item/ic-menu-item.js +4 -2
  197. package/dist/collection/components/ic-menu-item/ic-menu-item.js.map +1 -1
  198. package/dist/collection/components/ic-menu-item/ic-menu-item.spec.js +105 -0
  199. package/dist/collection/components/ic-menu-item/ic-menu-item.spec.js.map +1 -0
  200. package/dist/collection/components/ic-navigation-button/ic-navigation-button.spec.js +84 -0
  201. package/dist/collection/components/ic-navigation-button/ic-navigation-button.spec.js.map +1 -0
  202. package/dist/collection/components/ic-navigation-group/ic-navigation-group.css +1 -1
  203. package/dist/collection/components/ic-navigation-group/ic-navigation-group.js +47 -18
  204. package/dist/collection/components/ic-navigation-group/ic-navigation-group.js.map +1 -1
  205. package/dist/collection/components/ic-navigation-group/ic-navigation-group.spec.js +309 -0
  206. package/dist/collection/components/ic-navigation-group/ic-navigation-group.spec.js.map +1 -0
  207. package/dist/collection/components/ic-navigation-item/ic-navigation-item.css +13 -7
  208. package/dist/collection/components/ic-navigation-item/ic-navigation-item.spec.js +118 -0
  209. package/dist/collection/components/ic-navigation-item/ic-navigation-item.spec.js.map +1 -0
  210. package/dist/collection/components/ic-navigation-menu/ic-navigation-menu.e2e.js +29 -0
  211. package/dist/collection/components/ic-navigation-menu/ic-navigation-menu.e2e.js.map +1 -0
  212. package/dist/collection/components/ic-navigation-menu/ic-navigation-menu.js +0 -6
  213. package/dist/collection/components/ic-navigation-menu/ic-navigation-menu.js.map +1 -1
  214. package/dist/collection/components/ic-navigation-menu/ic-navigation-menu.spec.js +176 -0
  215. package/dist/collection/components/ic-navigation-menu/ic-navigation-menu.spec.js.map +1 -0
  216. package/dist/collection/components/ic-page-header/ic-page-header.css +1 -1
  217. package/dist/collection/components/ic-page-header/ic-page-header.e2e.js +177 -0
  218. package/dist/collection/components/ic-page-header/ic-page-header.e2e.js.map +1 -0
  219. package/dist/collection/components/ic-page-header/ic-page-header.js +9 -12
  220. package/dist/collection/components/ic-page-header/ic-page-header.js.map +1 -1
  221. package/dist/collection/components/ic-page-header/ic-page-header.spec.js +284 -0
  222. package/dist/collection/components/ic-page-header/ic-page-header.spec.js.map +1 -0
  223. package/dist/collection/components/ic-pagination/ic-pagination.e2e.js +128 -0
  224. package/dist/collection/components/ic-pagination/ic-pagination.e2e.js.map +1 -0
  225. package/dist/collection/components/ic-pagination/ic-pagination.js +55 -3
  226. package/dist/collection/components/ic-pagination/ic-pagination.js.map +1 -1
  227. package/dist/collection/components/ic-pagination/ic-pagination.spec.js +325 -0
  228. package/dist/collection/components/ic-pagination/ic-pagination.spec.js.map +1 -0
  229. package/dist/collection/components/ic-pagination-item/ic-pagination-item.js +5 -1
  230. package/dist/collection/components/ic-pagination-item/ic-pagination-item.js.map +1 -1
  231. package/dist/collection/components/ic-popover-menu/ic-popover-menu.css +1 -1
  232. package/dist/collection/components/ic-popover-menu/ic-popover-menu.e2e.js +30 -0
  233. package/dist/collection/components/ic-popover-menu/ic-popover-menu.e2e.js.map +1 -0
  234. package/dist/collection/components/ic-popover-menu/ic-popover-menu.js +4 -3
  235. package/dist/collection/components/ic-popover-menu/ic-popover-menu.js.map +1 -1
  236. package/dist/collection/components/ic-popover-menu/ic-popover-menu.spec.js +381 -0
  237. package/dist/collection/components/ic-popover-menu/ic-popover-menu.spec.js.map +1 -0
  238. package/dist/collection/components/ic-radio-group/ic-radio-group.e2e.js +343 -0
  239. package/dist/collection/components/ic-radio-group/ic-radio-group.e2e.js.map +1 -0
  240. package/dist/collection/components/ic-radio-group/ic-radio-group.js +19 -8
  241. package/dist/collection/components/ic-radio-group/ic-radio-group.js.map +1 -1
  242. package/dist/collection/components/ic-radio-group/ic-radio-group.spec.js +303 -0
  243. package/dist/collection/components/ic-radio-group/ic-radio-group.spec.js.map +1 -0
  244. package/dist/collection/components/ic-radio-group/ic-radio-group.types.js +2 -0
  245. package/dist/collection/components/ic-radio-group/ic-radio-group.types.js.map +1 -0
  246. package/dist/collection/components/ic-radio-option/ic-radio-option.css +1 -1
  247. package/dist/collection/components/ic-radio-option/ic-radio-option.js +5 -14
  248. package/dist/collection/components/ic-radio-option/ic-radio-option.js.map +1 -1
  249. package/dist/collection/components/ic-search-bar/ic-search-bar.e2e.js +1054 -0
  250. package/dist/collection/components/ic-search-bar/ic-search-bar.e2e.js.map +1 -0
  251. package/dist/collection/components/ic-search-bar/ic-search-bar.js +12 -9
  252. package/dist/collection/components/ic-search-bar/ic-search-bar.js.map +1 -1
  253. package/dist/collection/components/ic-search-bar/ic-search-bar.spec.js +570 -0
  254. package/dist/collection/components/ic-search-bar/ic-search-bar.spec.js.map +1 -0
  255. package/dist/collection/components/ic-search-bar/ic-search-bar.types.js.map +1 -1
  256. package/dist/collection/components/ic-section-container/ic-section-container.spec.js +69 -0
  257. package/dist/collection/components/ic-section-container/ic-section-container.spec.js.map +1 -0
  258. package/dist/collection/components/ic-select/ic-select.e2e.js +1765 -0
  259. package/dist/collection/components/ic-select/ic-select.e2e.js.map +1 -0
  260. package/dist/collection/components/ic-select/ic-select.js +46 -45
  261. package/dist/collection/components/ic-select/ic-select.js.map +1 -1
  262. package/dist/collection/components/ic-select/ic-select.spec.js +1276 -0
  263. package/dist/collection/components/ic-select/ic-select.spec.js.map +1 -0
  264. package/dist/collection/components/ic-side-navigation/ic-side-navigation.css +0 -7
  265. package/dist/collection/components/ic-side-navigation/ic-side-navigation.e2e.js +412 -0
  266. package/dist/collection/components/ic-side-navigation/ic-side-navigation.e2e.js.map +1 -0
  267. package/dist/collection/components/ic-side-navigation/ic-side-navigation.js +67 -54
  268. package/dist/collection/components/ic-side-navigation/ic-side-navigation.js.map +1 -1
  269. package/dist/collection/components/ic-side-navigation/ic-side-navigation.spec.js +470 -0
  270. package/dist/collection/components/ic-side-navigation/ic-side-navigation.spec.js.map +1 -0
  271. package/dist/collection/components/ic-skeleton/ic-skeleton.spec.js +89 -0
  272. package/dist/collection/components/ic-skeleton/ic-skeleton.spec.js.map +1 -0
  273. package/dist/collection/components/ic-status-tag/ic-status-tag.css +2 -6
  274. package/dist/collection/components/ic-status-tag/ic-status-tag.spec.js +43 -0
  275. package/dist/collection/components/ic-status-tag/ic-status-tag.spec.js.map +1 -0
  276. package/dist/collection/components/ic-step/ic-step.css +5 -5
  277. package/dist/collection/components/ic-step/ic-step.js +1 -1
  278. package/dist/collection/components/ic-step/ic-step.js.map +1 -1
  279. package/dist/collection/components/ic-step/ic-step.spec.js +176 -0
  280. package/dist/collection/components/ic-step/ic-step.spec.js.map +1 -0
  281. package/dist/collection/components/ic-stepper/ic-stepper.e2e.js +49 -0
  282. package/dist/collection/components/ic-stepper/ic-stepper.e2e.js.map +1 -0
  283. package/dist/collection/components/ic-stepper/ic-stepper.spec.js +706 -0
  284. package/dist/collection/components/ic-stepper/ic-stepper.spec.js.map +1 -0
  285. package/dist/collection/components/ic-switch/ic-switch.css +1 -1
  286. package/dist/collection/components/ic-switch/ic-switch.js +2 -1
  287. package/dist/collection/components/ic-switch/ic-switch.js.map +1 -1
  288. package/dist/collection/components/ic-switch/ic-switch.spec.js +104 -0
  289. package/dist/collection/components/ic-switch/ic-switch.spec.js.map +1 -0
  290. package/dist/collection/components/ic-tab/ic-tab.e2e.js +32 -0
  291. package/dist/collection/components/ic-tab/ic-tab.e2e.js.map +1 -0
  292. package/dist/collection/components/ic-tab/ic-tab.js +7 -1
  293. package/dist/collection/components/ic-tab/ic-tab.js.map +1 -1
  294. package/dist/collection/components/ic-tab/ic-tab.spec.js +159 -0
  295. package/dist/collection/components/ic-tab/ic-tab.spec.js.map +1 -0
  296. package/dist/collection/components/ic-tab-context/ic-tab-context.e2e.js +317 -0
  297. package/dist/collection/components/ic-tab-context/ic-tab-context.e2e.js.map +1 -0
  298. package/dist/collection/components/ic-tab-context/ic-tab-context.js +7 -5
  299. package/dist/collection/components/ic-tab-context/ic-tab-context.js.map +1 -1
  300. package/dist/collection/components/ic-tab-context/ic-tab-context.spec.js +369 -0
  301. package/dist/collection/components/ic-tab-context/ic-tab-context.spec.js.map +1 -0
  302. package/dist/collection/components/ic-tab-group/ic-tab-group.css +2 -2
  303. package/dist/collection/components/ic-tab-panel/ic-tab-panel.js +3 -1
  304. package/dist/collection/components/ic-tab-panel/ic-tab-panel.js.map +1 -1
  305. package/dist/collection/components/ic-tab-panel/ic-tab-panel.spec.js +65 -0
  306. package/dist/collection/components/ic-tab-panel/ic-tab-panel.spec.js.map +1 -0
  307. package/dist/collection/components/ic-text-field/ic-text-field.css +0 -4
  308. package/dist/collection/components/ic-text-field/ic-text-field.e2e.js +98 -0
  309. package/dist/collection/components/ic-text-field/ic-text-field.e2e.js.map +1 -0
  310. package/dist/collection/components/ic-text-field/ic-text-field.input.spec.js +236 -0
  311. package/dist/collection/components/ic-text-field/ic-text-field.input.spec.js.map +1 -0
  312. package/dist/collection/components/ic-text-field/ic-text-field.js +16 -25
  313. package/dist/collection/components/ic-text-field/ic-text-field.js.map +1 -1
  314. package/dist/collection/components/ic-text-field/ic-text-field.textarea.spec.js +310 -0
  315. package/dist/collection/components/ic-text-field/ic-text-field.textarea.spec.js.map +1 -0
  316. package/dist/collection/components/ic-theme/ic-theme.e2e.js +72 -0
  317. package/dist/collection/components/ic-theme/ic-theme.e2e.js.map +1 -0
  318. package/dist/collection/components/ic-theme/ic-theme.spec.js +77 -0
  319. package/dist/collection/components/ic-theme/ic-theme.spec.js.map +1 -0
  320. package/dist/collection/components/ic-toast/ic-toast.e2e.js +82 -0
  321. package/dist/collection/components/ic-toast/ic-toast.e2e.js.map +1 -0
  322. package/dist/collection/components/ic-toast/ic-toast.spec.js +278 -0
  323. package/dist/collection/components/ic-toast/ic-toast.spec.js.map +1 -0
  324. package/dist/collection/components/ic-toast-region/ic-toast-region.spec.js +62 -0
  325. package/dist/collection/components/ic-toast-region/ic-toast-region.spec.js.map +1 -0
  326. package/dist/collection/components/ic-tooltip/ic-tooltip.css +22 -8
  327. package/dist/collection/components/ic-tooltip/ic-tooltip.e2e.js +115 -0
  328. package/dist/collection/components/ic-tooltip/ic-tooltip.e2e.js.map +1 -0
  329. package/dist/collection/components/ic-tooltip/ic-tooltip.js +26 -27
  330. package/dist/collection/components/ic-tooltip/ic-tooltip.js.map +1 -1
  331. package/dist/collection/components/ic-tooltip/ic-tooltip.spec.js +128 -0
  332. package/dist/collection/components/ic-tooltip/ic-tooltip.spec.js.map +1 -0
  333. package/dist/collection/components/ic-top-navigation/ic-top-navigation.e2e.js +42 -0
  334. package/dist/collection/components/ic-top-navigation/ic-top-navigation.e2e.js.map +1 -0
  335. package/dist/collection/components/ic-top-navigation/ic-top-navigation.mobile.e2e.js +242 -0
  336. package/dist/collection/components/ic-top-navigation/ic-top-navigation.mobile.e2e.js.map +1 -0
  337. package/dist/collection/components/ic-top-navigation/ic-top-navigation.spec.js +286 -0
  338. package/dist/collection/components/ic-top-navigation/ic-top-navigation.spec.js.map +1 -0
  339. package/dist/collection/components/ic-typography/ic-typography.css +39 -0
  340. package/dist/collection/components/ic-typography/ic-typography.e2e.js +36 -0
  341. package/dist/collection/components/ic-typography/ic-typography.e2e.js.map +1 -0
  342. package/dist/collection/components/ic-typography/ic-typography.js +120 -2
  343. package/dist/collection/components/ic-typography/ic-typography.js.map +1 -1
  344. package/dist/collection/components/ic-typography/ic-typography.spec.js +296 -0
  345. package/dist/collection/components/ic-typography/ic-typography.spec.js.map +1 -0
  346. package/dist/collection/testspec.setup.js +11 -0
  347. package/dist/collection/testspec.setup.js.map +1 -1
  348. package/dist/collection/utils/helpers.js +23 -24
  349. package/dist/collection/utils/helpers.js.map +1 -1
  350. package/dist/components/helpers.js +24 -25
  351. package/dist/components/helpers.js.map +1 -1
  352. package/dist/components/ic-alert.js +1 -113
  353. package/dist/components/ic-alert.js.map +1 -1
  354. package/dist/components/ic-alert2.js +117 -0
  355. package/dist/components/ic-alert2.js.map +1 -0
  356. package/dist/components/ic-back-to-top.js +2 -2
  357. package/dist/components/ic-breadcrumb-group.js +15 -15
  358. package/dist/components/ic-breadcrumb-group.js.map +1 -1
  359. package/dist/components/ic-breadcrumb2.js +5 -4
  360. package/dist/components/ic-breadcrumb2.js.map +1 -1
  361. package/dist/components/ic-button2.js +5 -7
  362. package/dist/components/ic-button2.js.map +1 -1
  363. package/dist/components/ic-card.js +4 -3
  364. package/dist/components/ic-card.js.map +1 -1
  365. package/dist/components/ic-checkbox-group.js +5 -2
  366. package/dist/components/ic-checkbox-group.js.map +1 -1
  367. package/dist/components/ic-checkbox.js +7 -5
  368. package/dist/components/ic-checkbox.js.map +1 -1
  369. package/dist/components/ic-chip.js +5 -2
  370. package/dist/components/ic-chip.js.map +1 -1
  371. package/dist/components/ic-classification-banner.js +1 -1
  372. package/dist/components/ic-data-entity.js +1 -1
  373. package/dist/components/ic-data-row.js +2 -2
  374. package/dist/components/ic-dialog.d.ts +11 -0
  375. package/dist/components/ic-dialog.js +357 -0
  376. package/dist/components/ic-dialog.js.map +1 -0
  377. package/dist/components/ic-divider2.js +2 -2
  378. package/dist/components/ic-footer-link-group.js +2 -2
  379. package/dist/components/ic-footer-link.js +2 -2
  380. package/dist/components/ic-footer.js +4 -4
  381. package/dist/components/ic-footer.js.map +1 -1
  382. package/dist/components/ic-hero.js +2 -2
  383. package/dist/components/ic-horizontal-scroll2.js +2 -2
  384. package/dist/components/ic-input-component-container2.js +3 -3
  385. package/dist/components/ic-input-component-container2.js.map +1 -1
  386. package/dist/components/ic-input-container2.js +1 -1
  387. package/dist/components/ic-input-label2.js +2 -2
  388. package/dist/components/ic-input-validation2.js +3 -3
  389. package/dist/components/ic-input-validation2.js.map +1 -1
  390. package/dist/components/ic-link2.js +2 -2
  391. package/dist/components/ic-loading-indicator2.js +2 -2
  392. package/dist/components/ic-loading-indicator2.js.map +1 -1
  393. package/dist/components/ic-menu-group.js +1 -1
  394. package/dist/components/ic-menu-item2.js +6 -4
  395. package/dist/components/ic-menu-item2.js.map +1 -1
  396. package/dist/components/ic-menu2.js +69 -27
  397. package/dist/components/ic-menu2.js.map +1 -1
  398. package/dist/components/ic-navigation-button.js +2 -2
  399. package/dist/components/ic-navigation-group.js +50 -21
  400. package/dist/components/ic-navigation-group.js.map +1 -1
  401. package/dist/components/ic-navigation-item.js +3 -3
  402. package/dist/components/ic-navigation-item.js.map +1 -1
  403. package/dist/components/ic-navigation-menu2.js +2 -8
  404. package/dist/components/ic-navigation-menu2.js.map +1 -1
  405. package/dist/components/ic-page-header.js +12 -15
  406. package/dist/components/ic-page-header.js.map +1 -1
  407. package/dist/components/ic-pagination-item2.js +5 -1
  408. package/dist/components/ic-pagination-item2.js.map +1 -1
  409. package/dist/components/ic-pagination.js +17 -4
  410. package/dist/components/ic-pagination.js.map +1 -1
  411. package/dist/components/ic-popover-menu.js +7 -6
  412. package/dist/components/ic-popover-menu.js.map +1 -1
  413. package/dist/components/ic-radio-group.js +16 -5
  414. package/dist/components/ic-radio-group.js.map +1 -1
  415. package/dist/components/ic-radio-option.js +5 -11
  416. package/dist/components/ic-radio-option.js.map +1 -1
  417. package/dist/components/ic-search-bar.js +6 -3
  418. package/dist/components/ic-search-bar.js.map +1 -1
  419. package/dist/components/ic-section-container2.js +1 -1
  420. package/dist/components/ic-select.js +35 -34
  421. package/dist/components/ic-select.js.map +1 -1
  422. package/dist/components/ic-side-navigation.js +70 -57
  423. package/dist/components/ic-side-navigation.js.map +1 -1
  424. package/dist/components/ic-skeleton.js +1 -1
  425. package/dist/components/ic-status-tag.js +3 -3
  426. package/dist/components/ic-status-tag.js.map +1 -1
  427. package/dist/components/ic-step.js +3 -3
  428. package/dist/components/ic-step.js.map +1 -1
  429. package/dist/components/ic-stepper.js +2 -2
  430. package/dist/components/ic-switch.js +4 -3
  431. package/dist/components/ic-switch.js.map +1 -1
  432. package/dist/components/ic-tab-context.js +8 -6
  433. package/dist/components/ic-tab-context.js.map +1 -1
  434. package/dist/components/ic-tab-group.js +3 -3
  435. package/dist/components/ic-tab-group.js.map +1 -1
  436. package/dist/components/ic-tab-panel.js +4 -2
  437. package/dist/components/ic-tab-panel.js.map +1 -1
  438. package/dist/components/ic-tab.js +8 -2
  439. package/dist/components/ic-tab.js.map +1 -1
  440. package/dist/components/ic-text-field2.js +9 -18
  441. package/dist/components/ic-text-field2.js.map +1 -1
  442. package/dist/components/ic-theme.js +2 -2
  443. package/dist/components/ic-toast-region.js +1 -1
  444. package/dist/components/ic-toast.js +2 -2
  445. package/dist/components/ic-tooltip2.js +29 -30
  446. package/dist/components/ic-tooltip2.js.map +1 -1
  447. package/dist/components/ic-top-navigation.js +2 -2
  448. package/dist/components/ic-typography2.js +100 -5
  449. package/dist/components/ic-typography2.js.map +1 -1
  450. package/dist/components/index.d.ts +9 -60
  451. package/dist/components/index.js +1 -58
  452. package/dist/components/index.js.map +1 -1
  453. package/dist/core/core.css +41 -2
  454. package/dist/core/core.esm.js +1 -1
  455. package/dist/core/core.esm.js.map +1 -1
  456. package/dist/core/index.esm.js.map +1 -1
  457. package/dist/core/{p-de45134c.entry.js → p-04d626ee.entry.js} +2 -2
  458. package/dist/core/p-04d626ee.entry.js.map +1 -0
  459. package/dist/core/p-06321d19.js.map +1 -1
  460. package/dist/core/{p-0575a77f.entry.js → p-0d325b4c.entry.js} +2 -2
  461. package/dist/core/p-0d325b4c.entry.js.map +1 -0
  462. package/dist/core/{p-6a77992e.entry.js → p-249af8ab.entry.js} +2 -2
  463. package/dist/core/p-249af8ab.entry.js.map +1 -0
  464. package/dist/core/{p-d5d9923a.entry.js → p-29d9fea1.entry.js} +2 -2
  465. package/dist/core/p-29d9fea1.entry.js.map +1 -0
  466. package/dist/core/p-2e051e1e.entry.js +2 -0
  467. package/dist/core/p-2e051e1e.entry.js.map +1 -0
  468. package/dist/core/{p-3a67718c.entry.js → p-2ec49a7e.entry.js} +2 -2
  469. package/dist/core/p-2ec49a7e.entry.js.map +1 -0
  470. package/dist/core/{p-223a214f.entry.js → p-3114a4b3.entry.js} +2 -2
  471. package/dist/core/p-3114a4b3.entry.js.map +1 -0
  472. package/dist/core/p-311c38b3.entry.js +2 -0
  473. package/dist/core/p-311c38b3.entry.js.map +1 -0
  474. package/dist/core/p-31ccdd50.entry.js +2 -0
  475. package/dist/core/p-31ccdd50.entry.js.map +1 -0
  476. package/dist/core/p-31e80ccb.entry.js +2 -0
  477. package/dist/core/p-31e80ccb.entry.js.map +1 -0
  478. package/dist/core/p-323bce82.entry.js +2 -0
  479. package/dist/core/p-323bce82.entry.js.map +1 -0
  480. package/dist/core/{p-52fd3533.entry.js → p-3918c27a.entry.js} +2 -2
  481. package/dist/core/p-3918c27a.entry.js.map +1 -0
  482. package/dist/core/p-3ce0aa02.entry.js +2 -0
  483. package/dist/core/p-3ce0aa02.entry.js.map +1 -0
  484. package/dist/core/p-44512ebe.js.map +1 -1
  485. package/dist/core/p-4a385752.js +2 -0
  486. package/dist/core/p-4a385752.js.map +1 -0
  487. package/dist/core/{p-312c10b0.entry.js → p-4c4fa082.entry.js} +2 -2
  488. package/dist/core/p-4c4fa082.entry.js.map +1 -0
  489. package/dist/core/{p-fc7dce3d.entry.js → p-4f7b34ed.entry.js} +2 -2
  490. package/dist/core/p-4f7b34ed.entry.js.map +1 -0
  491. package/dist/core/p-524557bc.entry.js +2 -0
  492. package/dist/core/p-524557bc.entry.js.map +1 -0
  493. package/dist/core/p-551986d1.entry.js +2 -0
  494. package/dist/core/p-551986d1.entry.js.map +1 -0
  495. package/dist/core/p-57460fa3.entry.js +2 -0
  496. package/dist/core/p-57460fa3.entry.js.map +1 -0
  497. package/dist/core/p-5fcd965f.entry.js +2 -0
  498. package/dist/core/p-5fcd965f.entry.js.map +1 -0
  499. package/dist/core/{p-e41e701a.entry.js → p-617950f8.entry.js} +2 -2
  500. package/dist/core/p-617950f8.entry.js.map +1 -0
  501. package/dist/core/{p-e384aaee.entry.js → p-68308ecd.entry.js} +2 -2
  502. package/dist/core/p-68308ecd.entry.js.map +1 -0
  503. package/dist/core/p-6c76c6ba.entry.js +2 -0
  504. package/dist/core/p-6c76c6ba.entry.js.map +1 -0
  505. package/dist/core/p-6f57b13c.js.map +1 -1
  506. package/dist/core/p-79914e0c.entry.js +2 -0
  507. package/dist/core/p-79914e0c.entry.js.map +1 -0
  508. package/dist/core/p-820e4c17.entry.js +2 -0
  509. package/dist/core/p-820e4c17.entry.js.map +1 -0
  510. package/dist/core/{p-3fb307e6.entry.js → p-84c8c4c7.entry.js} +2 -2
  511. package/dist/core/p-84c8c4c7.entry.js.map +1 -0
  512. package/dist/core/p-8911656b.entry.js +2 -0
  513. package/dist/core/p-8911656b.entry.js.map +1 -0
  514. package/dist/core/p-8c7f4343.js.map +1 -1
  515. package/dist/core/p-8d4f7027.js.map +1 -1
  516. package/dist/core/p-97286148.entry.js +2 -0
  517. package/dist/core/p-97286148.entry.js.map +1 -0
  518. package/dist/core/{p-454b1ecd.entry.js → p-97fd0cc1.entry.js} +2 -2
  519. package/dist/core/p-97fd0cc1.entry.js.map +1 -0
  520. package/dist/core/p-a74b8476.entry.js +2 -0
  521. package/dist/core/p-a74b8476.entry.js.map +1 -0
  522. package/dist/core/{p-9413d639.entry.js → p-a9de9aba.entry.js} +2 -2
  523. package/dist/core/p-a9de9aba.entry.js.map +1 -0
  524. package/dist/core/p-ad6c4c02.entry.js +2 -0
  525. package/dist/core/p-ad6c4c02.entry.js.map +1 -0
  526. package/dist/core/{p-a0f4e641.entry.js → p-aeef3c9d.entry.js} +2 -2
  527. package/dist/core/p-aeef3c9d.entry.js.map +1 -0
  528. package/dist/core/p-b03bd9c6.entry.js +2 -0
  529. package/dist/core/p-b03bd9c6.entry.js.map +1 -0
  530. package/dist/core/p-b0685167.entry.js +2 -0
  531. package/dist/core/p-b0685167.entry.js.map +1 -0
  532. package/dist/core/p-b35a9909.entry.js +2 -0
  533. package/dist/core/p-b35a9909.entry.js.map +1 -0
  534. package/dist/core/p-bad10f6c.entry.js +2 -0
  535. package/dist/core/p-bad10f6c.entry.js.map +1 -0
  536. package/dist/core/{p-002a63e9.entry.js → p-bda4414e.entry.js} +2 -2
  537. package/dist/core/p-bda4414e.entry.js.map +1 -0
  538. package/dist/core/p-c0333310.entry.js +2 -0
  539. package/dist/core/p-c0333310.entry.js.map +1 -0
  540. package/dist/core/p-c3f9fb1d.entry.js +2 -0
  541. package/dist/core/p-c3f9fb1d.entry.js.map +1 -0
  542. package/dist/core/{p-5d077cf7.entry.js → p-ca6820dc.entry.js} +2 -2
  543. package/dist/core/p-ca6820dc.entry.js.map +1 -0
  544. package/dist/core/p-d6694b41.entry.js +2 -0
  545. package/dist/core/p-d6694b41.entry.js.map +1 -0
  546. package/dist/core/{p-1eb0992b.entry.js → p-da4c1409.entry.js} +2 -2
  547. package/dist/core/p-da4c1409.entry.js.map +1 -0
  548. package/dist/core/p-dbe06c3b.entry.js +2 -0
  549. package/dist/core/p-dbe06c3b.entry.js.map +1 -0
  550. package/dist/core/{p-28bc3bf0.entry.js → p-df67b151.entry.js} +2 -2
  551. package/dist/core/p-df67b151.entry.js.map +1 -0
  552. package/dist/core/{p-546b620e.entry.js → p-dfd31e28.entry.js} +2 -2
  553. package/dist/core/p-dfd31e28.entry.js.map +1 -0
  554. package/dist/core/{p-dc0b9e80.entry.js → p-e3e6308b.entry.js} +2 -2
  555. package/dist/core/p-e3e6308b.entry.js.map +1 -0
  556. package/dist/core/p-ea233813.entry.js +2 -0
  557. package/dist/core/p-ea233813.entry.js.map +1 -0
  558. package/dist/core/p-ec26fc38.js.map +1 -1
  559. package/dist/core/{p-f3e10149.entry.js → p-ecdcae46.entry.js} +2 -2
  560. package/dist/core/p-ecdcae46.entry.js.map +1 -0
  561. package/dist/core/p-ef91c17e.entry.js +2 -0
  562. package/dist/core/p-ef91c17e.entry.js.map +1 -0
  563. package/dist/core/{p-a33a04b2.entry.js → p-f0714432.entry.js} +2 -2
  564. package/dist/core/p-f0714432.entry.js.map +1 -0
  565. package/dist/core/p-f3053872.js +3 -0
  566. package/dist/core/p-f3053872.js.map +1 -0
  567. package/dist/core/{p-47b0ed42.entry.js → p-f381e93f.entry.js} +2 -2
  568. package/dist/core/p-f381e93f.entry.js.map +1 -0
  569. package/dist/core/p-fd482bd7.entry.js +2 -0
  570. package/dist/core/p-fd482bd7.entry.js.map +1 -0
  571. package/dist/core/p-fe2c4009.entry.js +2 -0
  572. package/dist/core/p-fe2c4009.entry.js.map +1 -0
  573. package/dist/esm/core.js +7 -3
  574. package/dist/esm/core.js.map +1 -1
  575. package/dist/esm/{helpers-b2b47a7d.js → helpers-8e57082b.js} +25 -26
  576. package/dist/esm/helpers-8e57082b.js.map +1 -0
  577. package/dist/esm/ic-alert.entry.js +2 -2
  578. package/dist/esm/ic-back-to-top.entry.js +2 -2
  579. package/dist/esm/ic-breadcrumb-group.entry.js +15 -15
  580. package/dist/esm/ic-breadcrumb-group.entry.js.map +1 -1
  581. package/dist/esm/ic-breadcrumb.entry.js +6 -5
  582. package/dist/esm/ic-breadcrumb.entry.js.map +1 -1
  583. package/dist/esm/ic-button_3.entry.js +33 -36
  584. package/dist/esm/ic-button_3.entry.js.map +1 -1
  585. package/dist/esm/ic-card.entry.js +4 -3
  586. package/dist/esm/ic-card.entry.js.map +1 -1
  587. package/dist/esm/ic-checkbox-group.entry.js +5 -2
  588. package/dist/esm/ic-checkbox-group.entry.js.map +1 -1
  589. package/dist/esm/ic-checkbox.entry.js +7 -5
  590. package/dist/esm/ic-checkbox.entry.js.map +1 -1
  591. package/dist/esm/ic-chip.entry.js +5 -2
  592. package/dist/esm/ic-chip.entry.js.map +1 -1
  593. package/dist/esm/ic-classification-banner.entry.js +1 -1
  594. package/dist/esm/ic-data-entity.entry.js +1 -1
  595. package/dist/esm/ic-data-row.entry.js +2 -2
  596. package/dist/esm/ic-dialog.entry.js +292 -0
  597. package/dist/esm/ic-dialog.entry.js.map +1 -0
  598. package/dist/esm/ic-divider.entry.js +2 -2
  599. package/dist/esm/ic-footer-link-group.entry.js +2 -2
  600. package/dist/esm/ic-footer-link.entry.js +2 -2
  601. package/dist/esm/ic-footer.entry.js +4 -4
  602. package/dist/esm/ic-footer.entry.js.map +1 -1
  603. package/dist/esm/ic-hero.entry.js +2 -2
  604. package/dist/esm/ic-horizontal-scroll.entry.js +2 -2
  605. package/dist/esm/ic-input-component-container_3.entry.js +69 -27
  606. package/dist/esm/ic-input-component-container_3.entry.js.map +1 -1
  607. package/dist/esm/ic-input-label_2.entry.js +3 -3
  608. package/dist/esm/ic-input-label_2.entry.js.map +1 -1
  609. package/dist/esm/ic-link.entry.js +2 -2
  610. package/dist/esm/ic-menu-group.entry.js +1 -1
  611. package/dist/esm/ic-menu-item.entry.js +6 -4
  612. package/dist/esm/ic-menu-item.entry.js.map +1 -1
  613. package/dist/esm/ic-navigation-button.entry.js +2 -2
  614. package/dist/esm/ic-navigation-group.entry.js +50 -21
  615. package/dist/esm/ic-navigation-group.entry.js.map +1 -1
  616. package/dist/esm/ic-navigation-item.entry.js +3 -3
  617. package/dist/esm/ic-navigation-item.entry.js.map +1 -1
  618. package/dist/esm/ic-navigation-menu.entry.js +2 -8
  619. package/dist/esm/ic-navigation-menu.entry.js.map +1 -1
  620. package/dist/esm/ic-page-header.entry.js +12 -15
  621. package/dist/esm/ic-page-header.entry.js.map +1 -1
  622. package/dist/esm/ic-pagination-item.entry.js +6 -1
  623. package/dist/esm/ic-pagination-item.entry.js.map +1 -1
  624. package/dist/esm/ic-pagination.entry.js +14 -2
  625. package/dist/esm/ic-pagination.entry.js.map +1 -1
  626. package/dist/esm/ic-popover-menu.entry.js +7 -6
  627. package/dist/esm/ic-popover-menu.entry.js.map +1 -1
  628. package/dist/esm/ic-radio-group.entry.js +16 -5
  629. package/dist/esm/ic-radio-group.entry.js.map +1 -1
  630. package/dist/esm/ic-radio-option.entry.js +5 -11
  631. package/dist/esm/ic-radio-option.entry.js.map +1 -1
  632. package/dist/esm/ic-search-bar.entry.js +6 -3
  633. package/dist/esm/ic-search-bar.entry.js.map +1 -1
  634. package/dist/esm/ic-section-container.entry.js +1 -1
  635. package/dist/esm/ic-select.entry.js +35 -34
  636. package/dist/esm/ic-select.entry.js.map +1 -1
  637. package/dist/esm/ic-side-navigation.entry.js +70 -57
  638. package/dist/esm/ic-side-navigation.entry.js.map +1 -1
  639. package/dist/esm/ic-skeleton.entry.js +1 -1
  640. package/dist/esm/ic-status-tag.entry.js +3 -3
  641. package/dist/esm/ic-status-tag.entry.js.map +1 -1
  642. package/dist/esm/ic-step.entry.js +3 -3
  643. package/dist/esm/ic-step.entry.js.map +1 -1
  644. package/dist/esm/ic-stepper.entry.js +2 -2
  645. package/dist/esm/ic-switch.entry.js +4 -3
  646. package/dist/esm/ic-switch.entry.js.map +1 -1
  647. package/dist/esm/ic-tab-context.entry.js +8 -6
  648. package/dist/esm/ic-tab-context.entry.js.map +1 -1
  649. package/dist/esm/ic-tab-group.entry.js +3 -3
  650. package/dist/esm/ic-tab-group.entry.js.map +1 -1
  651. package/dist/esm/ic-tab-panel.entry.js +4 -2
  652. package/dist/esm/ic-tab-panel.entry.js.map +1 -1
  653. package/dist/esm/ic-tab.entry.js +8 -2
  654. package/dist/esm/ic-tab.entry.js.map +1 -1
  655. package/dist/esm/ic-text-field.entry.js +9 -18
  656. package/dist/esm/ic-text-field.entry.js.map +1 -1
  657. package/dist/esm/ic-theme.entry.js +2 -2
  658. package/dist/esm/ic-toast-region.entry.js +1 -1
  659. package/dist/esm/ic-toast.entry.js +2 -2
  660. package/dist/esm/ic-top-navigation.entry.js +2 -2
  661. package/dist/esm/ic-typography.entry.js +96 -4
  662. package/dist/esm/ic-typography.entry.js.map +1 -1
  663. package/dist/esm/{index-3b144b17.js → index-a77644e1.js} +222 -44
  664. package/dist/esm/index-a77644e1.js.map +1 -0
  665. package/dist/esm/loader.js +4 -3
  666. package/dist/esm/loader.js.map +1 -1
  667. package/dist/esm/polyfills/css-shim.js +1 -1
  668. package/dist/types/components/ic-breadcrumb/ic-breadcrumb.types.d.ts +1 -1
  669. package/dist/types/components/ic-breadcrumb-group/ic-breadcrumb-group.d.ts +3 -0
  670. package/dist/types/components/ic-button/ic-button.types.d.ts +4 -4
  671. package/dist/types/components/ic-checkbox/ic-checkbox.d.ts +1 -0
  672. package/dist/types/components/ic-checkbox-group/ic-checkbox-group.d.ts +1 -0
  673. package/dist/types/components/ic-chip/ic-chip.d.ts +1 -0
  674. package/dist/types/components/ic-chip/ic-chip.types.d.ts +2 -2
  675. package/dist/types/components/ic-classification-banner/ic-classification-banner.types.d.ts +1 -1
  676. package/dist/types/components/ic-dialog/ic-dialog.d.ts +123 -0
  677. package/dist/types/components/ic-dialog/ic-dialog.test.a11y.d.ts +1 -0
  678. package/dist/types/components/ic-footer/ic-footer.types.d.ts +1 -1
  679. package/dist/types/components/ic-footer-link/ic-footer-link.d.ts +1 -1
  680. package/dist/types/components/ic-hero/ic-hero.types.d.ts +1 -1
  681. package/dist/types/components/ic-input-validation/ic-input-validation.types.d.ts +1 -1
  682. package/dist/types/components/ic-loading-indicator/ic-loading-indicator.types.d.ts +2 -2
  683. package/dist/types/components/ic-menu/ic-menu.d.ts +7 -0
  684. package/dist/types/components/ic-menu-item/ic-menu-item.types.d.ts +1 -1
  685. package/dist/types/components/ic-navigation-button/ic-navigation-button.types.d.ts +1 -1
  686. package/dist/types/components/ic-navigation-group/ic-navigation-group.d.ts +4 -1
  687. package/dist/types/components/ic-pagination/ic-pagination.d.ts +8 -1
  688. package/dist/types/components/ic-pagination/ic-pagination.types.d.ts +1 -1
  689. package/dist/types/components/ic-pagination-item/ic-pagination-item.d.ts +2 -1
  690. package/dist/types/components/ic-pagination-item/ic-pagination-item.types.d.ts +1 -1
  691. package/dist/types/components/ic-popover-menu/ic-popover-menu.d.ts +1 -0
  692. package/dist/types/components/ic-radio-group/ic-radio-group.d.ts +4 -3
  693. package/dist/types/components/ic-radio-group/ic-radio-group.types.d.ts +7 -0
  694. package/dist/types/components/ic-radio-option/ic-radio-option.d.ts +1 -3
  695. package/dist/types/components/ic-search-bar/ic-search-bar.d.ts +1 -1
  696. package/dist/types/components/ic-search-bar/ic-search-bar.types.d.ts +1 -1
  697. package/dist/types/components/ic-select/ic-select.d.ts +14 -14
  698. package/dist/types/components/ic-side-navigation/ic-side-navigation.d.ts +1 -0
  699. package/dist/types/components/ic-skeleton/ic-skeleton.types.d.ts +1 -1
  700. package/dist/types/components/ic-status-tag/ic-status-tag.types.d.ts +2 -2
  701. package/dist/types/components/ic-step/ic-step.types.d.ts +3 -3
  702. package/dist/types/components/ic-stepper/ic-stepper.types.d.ts +1 -1
  703. package/dist/types/components/ic-tab/ic-tab.d.ts +1 -0
  704. package/dist/types/components/ic-text-field/ic-text-field.d.ts +1 -1
  705. package/dist/types/components/ic-text-field/ic-text-field.types.d.ts +3 -3
  706. package/dist/types/components/ic-toast/ic-toast.types.d.ts +1 -1
  707. package/dist/types/components/ic-tooltip/ic-tooltip.types.d.ts +1 -1
  708. package/dist/types/components/ic-typography/ic-typography.d.ts +27 -0
  709. package/dist/types/components.d.ts +222 -42
  710. package/dist/types/stencil-public-runtime.d.ts +72 -15
  711. package/dist/types/testspec.setup.d.ts +9 -0
  712. package/dist/types/utils/helpers.d.ts +1 -0
  713. package/dist/types/utils/types.d.ts +22 -22
  714. package/hydrate/index.d.ts +17 -16
  715. package/hydrate/index.js +920 -384
  716. package/loader/index.d.ts +9 -0
  717. package/package.json +5 -5
  718. package/dist/cjs/helpers-2021e212.js.map +0 -1
  719. package/dist/cjs/index-a62312a7.js.map +0 -1
  720. package/dist/core/p-002a63e9.entry.js.map +0 -1
  721. package/dist/core/p-0575a77f.entry.js.map +0 -1
  722. package/dist/core/p-0a41c3cb.entry.js +0 -2
  723. package/dist/core/p-0a41c3cb.entry.js.map +0 -1
  724. package/dist/core/p-100dbcec.entry.js +0 -2
  725. package/dist/core/p-100dbcec.entry.js.map +0 -1
  726. package/dist/core/p-14835d6f.entry.js +0 -2
  727. package/dist/core/p-14835d6f.entry.js.map +0 -1
  728. package/dist/core/p-1eb0992b.entry.js.map +0 -1
  729. package/dist/core/p-223a214f.entry.js.map +0 -1
  730. package/dist/core/p-276f7ecb.entry.js +0 -2
  731. package/dist/core/p-276f7ecb.entry.js.map +0 -1
  732. package/dist/core/p-28bc3bf0.entry.js.map +0 -1
  733. package/dist/core/p-2e949135.entry.js +0 -2
  734. package/dist/core/p-2e949135.entry.js.map +0 -1
  735. package/dist/core/p-312c10b0.entry.js.map +0 -1
  736. package/dist/core/p-3845b769.entry.js +0 -2
  737. package/dist/core/p-3845b769.entry.js.map +0 -1
  738. package/dist/core/p-3a67718c.entry.js.map +0 -1
  739. package/dist/core/p-3c23f963.entry.js +0 -2
  740. package/dist/core/p-3c23f963.entry.js.map +0 -1
  741. package/dist/core/p-3dc2ff7b.entry.js +0 -2
  742. package/dist/core/p-3dc2ff7b.entry.js.map +0 -1
  743. package/dist/core/p-3dea2867.js +0 -2
  744. package/dist/core/p-3dea2867.js.map +0 -1
  745. package/dist/core/p-3e5eb873.entry.js +0 -2
  746. package/dist/core/p-3e5eb873.entry.js.map +0 -1
  747. package/dist/core/p-3fb307e6.entry.js.map +0 -1
  748. package/dist/core/p-454b1ecd.entry.js.map +0 -1
  749. package/dist/core/p-4595f48f.entry.js +0 -2
  750. package/dist/core/p-4595f48f.entry.js.map +0 -1
  751. package/dist/core/p-47b0ed42.entry.js.map +0 -1
  752. package/dist/core/p-4b87445b.entry.js +0 -2
  753. package/dist/core/p-4b87445b.entry.js.map +0 -1
  754. package/dist/core/p-4c8fcfe6.entry.js +0 -2
  755. package/dist/core/p-4c8fcfe6.entry.js.map +0 -1
  756. package/dist/core/p-52fd3533.entry.js.map +0 -1
  757. package/dist/core/p-546b620e.entry.js.map +0 -1
  758. package/dist/core/p-56fe91ad.entry.js +0 -2
  759. package/dist/core/p-56fe91ad.entry.js.map +0 -1
  760. package/dist/core/p-589f6dd3.js +0 -3
  761. package/dist/core/p-589f6dd3.js.map +0 -1
  762. package/dist/core/p-5d077cf7.entry.js.map +0 -1
  763. package/dist/core/p-6a77992e.entry.js.map +0 -1
  764. package/dist/core/p-6b39f8b4.entry.js +0 -2
  765. package/dist/core/p-6b39f8b4.entry.js.map +0 -1
  766. package/dist/core/p-80eff050.entry.js +0 -2
  767. package/dist/core/p-80eff050.entry.js.map +0 -1
  768. package/dist/core/p-8780890e.entry.js +0 -2
  769. package/dist/core/p-8780890e.entry.js.map +0 -1
  770. package/dist/core/p-895bda21.entry.js +0 -2
  771. package/dist/core/p-895bda21.entry.js.map +0 -1
  772. package/dist/core/p-92c4fa7f.entry.js +0 -2
  773. package/dist/core/p-92c4fa7f.entry.js.map +0 -1
  774. package/dist/core/p-9413d639.entry.js.map +0 -1
  775. package/dist/core/p-a0f4e641.entry.js.map +0 -1
  776. package/dist/core/p-a33a04b2.entry.js.map +0 -1
  777. package/dist/core/p-a5bee11f.entry.js +0 -2
  778. package/dist/core/p-a5bee11f.entry.js.map +0 -1
  779. package/dist/core/p-a7fdb9a8.entry.js +0 -2
  780. package/dist/core/p-a7fdb9a8.entry.js.map +0 -1
  781. package/dist/core/p-b61e76e2.entry.js +0 -2
  782. package/dist/core/p-b61e76e2.entry.js.map +0 -1
  783. package/dist/core/p-c0813424.entry.js +0 -2
  784. package/dist/core/p-c0813424.entry.js.map +0 -1
  785. package/dist/core/p-cb437317.entry.js +0 -2
  786. package/dist/core/p-cb437317.entry.js.map +0 -1
  787. package/dist/core/p-d5d9923a.entry.js.map +0 -1
  788. package/dist/core/p-dc0b9e80.entry.js.map +0 -1
  789. package/dist/core/p-de45134c.entry.js.map +0 -1
  790. package/dist/core/p-de891d3d.entry.js +0 -2
  791. package/dist/core/p-de891d3d.entry.js.map +0 -1
  792. package/dist/core/p-e0f24ccd.entry.js +0 -2
  793. package/dist/core/p-e0f24ccd.entry.js.map +0 -1
  794. package/dist/core/p-e384aaee.entry.js.map +0 -1
  795. package/dist/core/p-e41e701a.entry.js.map +0 -1
  796. package/dist/core/p-e839e5dc.entry.js +0 -2
  797. package/dist/core/p-e839e5dc.entry.js.map +0 -1
  798. package/dist/core/p-ea526b54.entry.js +0 -2
  799. package/dist/core/p-ea526b54.entry.js.map +0 -1
  800. package/dist/core/p-ec8b228c.entry.js +0 -2
  801. package/dist/core/p-ec8b228c.entry.js.map +0 -1
  802. package/dist/core/p-f3e10149.entry.js.map +0 -1
  803. package/dist/core/p-fc7dce3d.entry.js.map +0 -1
  804. package/dist/esm/helpers-b2b47a7d.js.map +0 -1
  805. package/dist/esm/index-3b144b17.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ic-pagination-item.js","sourceRoot":"","sources":["../../../src/components/ic-pagination-item/ic-pagination-item.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,IAAI,EACJ,OAAO,EACP,CAAC,EACD,KAAK,GAEN,MAAM,eAAe,CAAC;AASvB,MAAM,OAAO,cAAc;;IAyCjB,gBAAW,GAAG,GAAG,EAAE;MACzB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC,CAAC;;oBAjC0B,KAAK;;oBAQL,KAAK;;iBAQT,OAAO;wBAIC,KAAK;;;EAerC,MAAM;IACJ,MAAM,EACJ,IAAI,EACJ,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,KAAK,EACL,YAAY,EACZ,KAAK,GACN,GAAG,IAAI,CAAC;IAET,OAAO,CACL,aACG,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CACrB,WACE,KAAK,EAAE;QACL,CAAC,gBAAgB,CAAC,EAAE,IAAI;QACxB,CAAC,UAAU,CAAC,EAAE,IAAI;QAClB,CAAC,UAAU,CAAC,EAAE,QAAQ;OACvB;MAED,qBACE,KAAK,EAAE;UACL,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,IAAI;SACxB,EACD,OAAO,EAAC,OAAO,UAGD,CACZ,CACP,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CACpB,cACE,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAC/B,IAAI,EAAC,QAAQ,kBACC,QAAQ,IAAI,cAAc,gBAC5B,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,cAAc,IAAI,EAAE,EACjE,KAAK,EAAE;QACL,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,IAAI,QAAQ;QACnC,CAAC,UAAU,CAAC,EAAE,QAAQ;QACtB,CAAC,gBAAgB,CAAC,EAAE,IAAI;QACxB,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,IAAI;QACvB,CAAC,MAAM,CAAC,EAAE,IAAI,KAAK,MAAM;OAC1B;MAED,qBACE,OAAO,EAAC,OAAO,EACf,KAAK,EAAE;UACL,CAAC,eAAe,CAAC,EAAE,QAAQ;UAC3B,CAAC,UAAU,CAAC,EAAE,QAAQ;UACtB,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,IAAI;SACxB,IAEA,IAAI,CACS,CACT,CACV,CAAC,CAAC,CAAC,CACF,kCACY,QAAQ,gBAEhB,YAAY,CAAC,CAAC,CAAC,QAAQ,IAAI,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,EAAE,EAEhE,KAAK,EAAE,kBAAkB,UAAU,EAAE,EACrC,OAAO,EAAC,OAAO;MAEd,KAAK;;MAAG,IAAI,CACC,CACjB,CACC,CACL,CAAC;EACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import {\n Component,\n Prop,\n Element,\n h,\n Event,\n EventEmitter,\n} from \"@stencil/core\";\nimport { IcPaginationItemType } from \"./ic-pagination-item.types\";\nimport { IcThemeForeground } from \"../../interface\";\n\n@Component({\n tag: \"ic-pagination-item\",\n styleUrl: \"ic-pagination-item.css\",\n shadow: true,\n})\nexport class PaginationItem {\n @Element() el: HTMLIcPaginationItemElement;\n\n /**\n * The current page number.\n */\n @Prop() page: number | null;\n /**\n * If `true`, the pagination item will be selected.\n */\n @Prop() selected: boolean = false;\n /**\n * The type of pagination item - 'page' or 'ellipsis'.\n */\n @Prop() type: IcPaginationItemType;\n /**\n * If `true`, the pagination item will be disabled.\n */\n @Prop() disabled: boolean = false;\n /**\n * The appearance of the pagination, e.g. dark, light or the default.\n */\n @Prop() appearance: IcThemeForeground;\n /**\n * The label for the pagination item (applicable when simple pagination is being used).\n */\n @Prop() label: string = \"Page \";\n /**\n * If true the aria-label will be set to `Page X of Y`, where X is the current page and Y is the page count.\n */\n @Prop() ariaOverride: boolean = false;\n /**\n * The total number of pages.\n */\n @Prop() pages: number;\n\n /**\n * @internal - Emitted when a pagination item is clicked.\n */\n @Event() paginationItemClick: EventEmitter<{ page: number }>;\n\n private handleClick = () => {\n this.paginationItemClick.emit({ page: this.page });\n };\n\n render() {\n const {\n page,\n selected,\n type,\n disabled,\n appearance,\n label,\n ariaOverride,\n pages,\n } = this;\n\n return (\n <a>\n {type === \"ellipsis\" ? (\n <div\n class={{\n [\"item-container\"]: true,\n [\"ellipsis\"]: true,\n [\"disabled\"]: disabled,\n }}\n >\n <ic-typography\n class={{\n [`${appearance}`]: true,\n }}\n variant=\"label\"\n >\n ...\n </ic-typography>\n </div>\n ) : type === \"page\" ? (\n <button\n disabled={disabled}\n onClick={this.handleClick}\n tabindex={selected ? \"-1\" : \"0\"}\n role=\"button\"\n aria-current={selected && \"Current page\"}\n aria-label={selected ? `${label}: ${page}` : `Go to page ${page}`}\n class={{\n [\"selected\"]: !disabled && selected,\n [\"disabled\"]: disabled,\n [\"item-container\"]: true,\n [`${appearance}`]: true,\n [\"page\"]: type === \"page\",\n }}\n >\n <ic-typography\n variant=\"label\"\n class={{\n [\"page-selected\"]: selected,\n [\"disabled\"]: disabled,\n [`${appearance}`]: true,\n }}\n >\n {page}\n </ic-typography>\n </button>\n ) : (\n <ic-typography\n aria-live=\"polite\"\n aria-label={\n ariaOverride ? `Page ${page} of ${pages}` : `${label} ${page}`\n }\n class={`simple-current ${appearance}`}\n variant=\"label\"\n >\n {label} {page}\n </ic-typography>\n )}\n </a>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ic-pagination-item.js","sourceRoot":"","sources":["../../../src/components/ic-pagination-item/ic-pagination-item.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,IAAI,EACJ,OAAO,EACP,CAAC,EACD,KAAK,GAEN,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAO1D,MAAM,OAAO,cAAc;;IAyCjB,gBAAW,GAAG,GAAG,EAAE;MACzB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC,CAAC;;oBAjC0B,KAAK;;oBAQL,KAAK;;iBAQT,OAAO;wBAIC,KAAK;;;EAerC,iBAAiB;IACf,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;EAC9C,CAAC;EAED,MAAM;IACJ,MAAM,EACJ,IAAI,EACJ,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,KAAK,EACL,YAAY,EACZ,KAAK,GACN,GAAG,IAAI,CAAC;IAET,OAAO,CACL,aACG,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CACrB,WACE,KAAK,EAAE;QACL,CAAC,gBAAgB,CAAC,EAAE,IAAI;QACxB,CAAC,UAAU,CAAC,EAAE,IAAI;QAClB,CAAC,UAAU,CAAC,EAAE,QAAQ;OACvB;MAED,qBACE,KAAK,EAAE;UACL,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,IAAI;SACxB,EACD,OAAO,EAAC,OAAO,UAGD,CACZ,CACP,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CACpB,cACE,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAC/B,IAAI,EAAC,QAAQ,kBACC,QAAQ,IAAI,cAAc,gBAC5B,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,cAAc,IAAI,EAAE,EACjE,KAAK,EAAE;QACL,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,IAAI,QAAQ;QACnC,CAAC,UAAU,CAAC,EAAE,QAAQ;QACtB,CAAC,gBAAgB,CAAC,EAAE,IAAI;QACxB,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,IAAI;QACvB,CAAC,MAAM,CAAC,EAAE,IAAI,KAAK,MAAM;OAC1B;MAED,qBACE,OAAO,EAAC,OAAO,EACf,KAAK,EAAE;UACL,CAAC,eAAe,CAAC,EAAE,QAAQ;UAC3B,CAAC,UAAU,CAAC,EAAE,QAAQ;UACtB,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,IAAI;SACxB,IAEA,IAAI,CACS,CACT,CACV,CAAC,CAAC,CAAC,CACF,kCACY,QAAQ,gBAEhB,YAAY,CAAC,CAAC,CAAC,QAAQ,IAAI,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,EAAE,EAEhE,KAAK,EAAE,kBAAkB,UAAU,EAAE,EACrC,OAAO,EAAC,OAAO;MAEd,KAAK;;MAAG,IAAI,CACC,CACjB,CACC,CACL,CAAC;EACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import {\n Component,\n Prop,\n Element,\n h,\n Event,\n EventEmitter,\n} from \"@stencil/core\";\nimport { IcPaginationItemType } from \"./ic-pagination-item.types\";\nimport { IcThemeForeground } from \"../../utils/types\";\nimport { removeDisabledFalse } from \"../../utils/helpers\";\n\n@Component({\n tag: \"ic-pagination-item\",\n styleUrl: \"ic-pagination-item.css\",\n shadow: true,\n})\nexport class PaginationItem {\n @Element() el: HTMLIcPaginationItemElement;\n\n /**\n * The current page number.\n */\n @Prop() page: number | null;\n /**\n * If `true`, the pagination item will be selected.\n */\n @Prop() selected: boolean = false;\n /**\n * The type of pagination item - 'page' or 'ellipsis'.\n */\n @Prop() type: IcPaginationItemType;\n /**\n * If `true`, the pagination item will be disabled.\n */\n @Prop() disabled: boolean = false;\n /**\n * The appearance of the pagination, e.g. dark, light or the default.\n */\n @Prop() appearance: IcThemeForeground;\n /**\n * The label for the pagination item (applicable when simple pagination is being used).\n */\n @Prop() label: string = \"Page \";\n /**\n * If true the aria-label will be set to `Page X of Y`, where X is the current page and Y is the page count.\n */\n @Prop() ariaOverride: boolean = false;\n /**\n * The total number of pages.\n */\n @Prop() pages: number;\n\n /**\n * @internal - Emitted when a pagination item is clicked.\n */\n @Event() paginationItemClick: EventEmitter<{ page: number }>;\n\n private handleClick = () => {\n this.paginationItemClick.emit({ page: this.page });\n };\n\n componentWillLoad(): void {\n removeDisabledFalse(this.disabled, this.el);\n }\n\n render() {\n const {\n page,\n selected,\n type,\n disabled,\n appearance,\n label,\n ariaOverride,\n pages,\n } = this;\n\n return (\n <a>\n {type === \"ellipsis\" ? (\n <div\n class={{\n [\"item-container\"]: true,\n [\"ellipsis\"]: true,\n [\"disabled\"]: disabled,\n }}\n >\n <ic-typography\n class={{\n [`${appearance}`]: true,\n }}\n variant=\"label\"\n >\n ...\n </ic-typography>\n </div>\n ) : type === \"page\" ? (\n <button\n disabled={disabled}\n onClick={this.handleClick}\n tabindex={selected ? \"-1\" : \"0\"}\n role=\"button\"\n aria-current={selected && \"Current page\"}\n aria-label={selected ? `${label}: ${page}` : `Go to page ${page}`}\n class={{\n [\"selected\"]: !disabled && selected,\n [\"disabled\"]: disabled,\n [\"item-container\"]: true,\n [`${appearance}`]: true,\n [\"page\"]: type === \"page\",\n }}\n >\n <ic-typography\n variant=\"label\"\n class={{\n [\"page-selected\"]: selected,\n [\"disabled\"]: disabled,\n [`${appearance}`]: true,\n }}\n >\n {page}\n </ic-typography>\n </button>\n ) : (\n <ic-typography\n aria-live=\"polite\"\n aria-label={\n ariaOverride ? `Page ${page} of ${pages}` : `${label} ${page}`\n }\n class={`simple-current ${appearance}`}\n variant=\"label\"\n >\n {label} {page}\n </ic-typography>\n )}\n </a>\n );\n }\n}\n"]}
@@ -469,7 +469,7 @@ video {
469
469
  }
470
470
 
471
471
  .menu {
472
- border: 0.063rem solid var(--ic-architectural-400);
472
+ border: var(--ic-border-default);
473
473
  border-radius: var(--ic-border-radius);
474
474
  background-color: var(--ic-architectural-white);
475
475
  visibility: hidden;
@@ -0,0 +1,30 @@
1
+ import { newE2EPage } from "@stencil/core/testing";
2
+ describe("ic-popover-menu component", () => {
3
+ it("renders", async () => {
4
+ const page = await newE2EPage();
5
+ await page.setContent(`<ic-button id="button-1">Anchor button</ic-button><ic-popover-menu anchor="button-1" aria-label="popover" open="true"><ic-menu-item label="Test button" id="test-button"></ic-menu-item></ic-popover-menu>`);
6
+ const element = await page.find("ic-popover-menu");
7
+ expect(element).toHaveClass("hydrated");
8
+ });
9
+ it("should emit triggerPopoverMenuInstance when submenu trigger button is clicked", async () => {
10
+ const page = await newE2EPage();
11
+ await page.setContent(`<ic-button id="button-1">Anchor button</ic-button><ic-popover-menu anchor="button-1" aria-label="popover" open="true"><ic-menu-item label="Test button" id="test-button" submenu-trigger-for="submenu"></ic-menu-item></ic-popover-menu>`);
12
+ await page.waitForChanges();
13
+ const submenuTriggerButton = await page.find("#test-button");
14
+ const triggerPopoverMenuInstance = await page.spyOnEvent("triggerPopoverMenuInstance");
15
+ await submenuTriggerButton.click();
16
+ await page.waitForChanges();
17
+ expect(triggerPopoverMenuInstance).toHaveReceivedEvent();
18
+ });
19
+ it("should emit handleMenuItemClick when menu item is clicked", async () => {
20
+ const page = await newE2EPage();
21
+ await page.setContent(`<ic-button id="button-1">Anchor button</ic-button><ic-popover-menu anchor="button-1" aria-label="popover" open="true"><ic-menu-item label="Test button" id="test-button"></ic-menu-item></ic-popover-menu>`);
22
+ await page.waitForChanges();
23
+ const triggerButton = await page.find("#test-button");
24
+ const handleMenuItemClick = await page.spyOnEvent("handleMenuItemClick");
25
+ await triggerButton.click();
26
+ await page.waitForChanges();
27
+ expect(handleMenuItemClick).toHaveReceivedEvent();
28
+ });
29
+ });
30
+ //# sourceMappingURL=ic-popover-menu.e2e.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ic-popover-menu.e2e.js","sourceRoot":"","sources":["../../../src/components/ic-popover-menu/ic-popover-menu.e2e.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;EACzC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;IACvB,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;IAChC,MAAM,IAAI,CAAC,UAAU,CACnB,4MAA4M,CAC7M,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAEnD,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;EAC1C,CAAC,CAAC,CAAC;EAEH,EAAE,CAAC,+EAA+E,EAAE,KAAK,IAAI,EAAE;IAC7F,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;IAChC,MAAM,IAAI,CAAC,UAAU,CACnB,0OAA0O,CAC3O,CAAC;IAEF,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IAE5B,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAE7D,MAAM,0BAA0B,GAAG,MAAM,IAAI,CAAC,UAAU,CACtD,4BAA4B,CAC7B,CAAC;IAEF,MAAM,oBAAoB,CAAC,KAAK,EAAE,CAAC;IAEnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IAE5B,MAAM,CAAC,0BAA0B,CAAC,CAAC,mBAAmB,EAAE,CAAC;EAC3D,CAAC,CAAC,CAAC;EAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;IACzE,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;IAChC,MAAM,IAAI,CAAC,UAAU,CACnB,4MAA4M,CAC7M,CAAC;IAEF,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IAE5B,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAEtD,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;IAEzE,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC;IAE5B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IAE5B,MAAM,CAAC,mBAAmB,CAAC,CAAC,mBAAmB,EAAE,CAAC;EACpD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { newE2EPage } from \"@stencil/core/testing\";\n\ndescribe(\"ic-popover-menu component\", () => {\n it(\"renders\", async () => {\n const page = await newE2EPage();\n await page.setContent(\n `<ic-button id=\"button-1\">Anchor button</ic-button><ic-popover-menu anchor=\"button-1\" aria-label=\"popover\" open=\"true\"><ic-menu-item label=\"Test button\" id=\"test-button\"></ic-menu-item></ic-popover-menu>`\n );\n\n const element = await page.find(\"ic-popover-menu\");\n\n expect(element).toHaveClass(\"hydrated\");\n });\n\n it(\"should emit triggerPopoverMenuInstance when submenu trigger button is clicked\", async () => {\n const page = await newE2EPage();\n await page.setContent(\n `<ic-button id=\"button-1\">Anchor button</ic-button><ic-popover-menu anchor=\"button-1\" aria-label=\"popover\" open=\"true\"><ic-menu-item label=\"Test button\" id=\"test-button\" submenu-trigger-for=\"submenu\"></ic-menu-item></ic-popover-menu>`\n );\n\n await page.waitForChanges();\n\n const submenuTriggerButton = await page.find(\"#test-button\");\n\n const triggerPopoverMenuInstance = await page.spyOnEvent(\n \"triggerPopoverMenuInstance\"\n );\n\n await submenuTriggerButton.click();\n\n await page.waitForChanges();\n\n expect(triggerPopoverMenuInstance).toHaveReceivedEvent();\n });\n\n it(\"should emit handleMenuItemClick when menu item is clicked\", async () => {\n const page = await newE2EPage();\n await page.setContent(\n `<ic-button id=\"button-1\">Anchor button</ic-button><ic-popover-menu anchor=\"button-1\" aria-label=\"popover\" open=\"true\"><ic-menu-item label=\"Test button\" id=\"test-button\"></ic-menu-item></ic-popover-menu>`\n );\n\n await page.waitForChanges();\n\n const triggerButton = await page.find(\"#test-button\");\n\n const handleMenuItemClick = await page.spyOnEvent(\"handleMenuItemClick\");\n\n await triggerButton.click();\n\n await page.waitForChanges();\n\n expect(handleMenuItemClick).toHaveReceivedEvent();\n });\n});\n"]}
@@ -8,6 +8,7 @@ export class PopoverMenu {
8
8
  (_a = this.popoverMenuEls[this.currentFocus]) === null || _a === void 0 ? void 0 : _a.focus();
9
9
  };
10
10
  this.popoverMenuEls = [];
11
+ this.ARIA_LABEL = "aria-label";
11
12
  // Checks that the popover menu has an anchor
12
13
  this.findAnchorEl = (anchor) => {
13
14
  let anchorElement = null;
@@ -64,7 +65,7 @@ export class PopoverMenu {
64
65
  }
65
66
  };
66
67
  this.getMenuAriaLabel = () => {
67
- const ariaLabel = this.host.getAttribute("aria-label");
68
+ const ariaLabel = this.host.getAttribute(this.ARIA_LABEL);
68
69
  if (this.submenuId !== undefined) {
69
70
  return `${ariaLabel}, within nested level ${this.submenuLevel} ${this.parentLabel} submenu,`;
70
71
  }
@@ -100,7 +101,7 @@ export class PopoverMenu {
100
101
  // Set the parent popover menu of the submenu and open the submenu
101
102
  childEl.parentPopover = this.host;
102
103
  childEl.anchor = this.anchor;
103
- childEl.ariaLabel = this.host.getAttribute("aria-label");
104
+ childEl.ariaLabel = this.host.getAttribute(this.ARIA_LABEL);
104
105
  childEl.openFromParent();
105
106
  childEl.submenuLevel = this.submenuLevel + 1;
106
107
  // Set the label in the submenu using the label of the menu item that has emitted the event
@@ -197,7 +198,7 @@ export class PopoverMenu {
197
198
  this.addMenuItems(popoverMenuElements);
198
199
  }
199
200
  if (this.submenuId === undefined &&
200
- this.host.getAttribute("aria-label") === null) {
201
+ this.host.getAttribute(this.ARIA_LABEL) === null) {
201
202
  console.error(`No aria-label specified for popover menu component - aria-label required`);
202
203
  }
203
204
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ic-popover-menu.js","sourceRoot":"","sources":["../../../src/components/ic-popover-menu/ic-popover-menu.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Host,\n h,\n Prop,\n Listen,\n Watch,\n State,\n Method,\n} from \"@stencil/core\";\nimport { getSlotElements } from \"../../utils/helpers\";\nimport { createPopper } from \"@popperjs/core\";\n\n@Component({\n tag: \"ic-popover-menu\",\n styleUrl: \"ic-popover-menu.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class PopoverMenu {\n @Element() host: HTMLIcPopoverMenuElement;\n\n /**\n * The ID of the element the popover menu will anchor itself to. This is required unless the popover is a submenu.\n */\n @Prop() anchor: string;\n\n /**\n * The unique identifier for a popover submenu.\n */\n @Prop() submenuId?: string;\n\n /**\n * If `true`, the popover menu will be displayed.\n */\n @Prop({ reflect: true, mutable: true }) open: boolean = undefined;\n\n /**\n * @internal The parent popover menu of a child popover menu.\n */\n @Prop() parentPopover?: HTMLIcPopoverMenuElement;\n\n /**\n * @internal The level of menu being displayed.\n */\n @Prop() submenuLevel: number = 1;\n\n /**\n * @internal The parent popover menu of a child popover menu.\n */\n @Prop() parentLabel?: string;\n\n @State() openingFromChild: boolean = false;\n\n @State() openingFromParent: boolean = false;\n\n @Listen(\"handleMenuItemClick\")\n handleMenuItemClick(ev: CustomEvent): void {\n if (!ev.detail.hasSubMenu && ev.detail.label !== \"Back\") {\n this.closeMenu();\n }\n }\n\n // This is listening for the event emitted when a menu item is acting as a trigger button\n @Listen(\"triggerPopoverMenuInstance\", { capture: true })\n handleSubmenuChange(ev: Event): void {\n // Finds the trigger menu item that has emitted the event\n const target = ev.target as HTMLIcMenuItemElement;\n this.open = false;\n\n // Find the popover menu that the menu item triggers (i.e. submenu-trigger-for === submenu-id).\n const childEl = document.querySelector(\n `ic-popover-menu[submenu-id=${target.submenuTriggerFor}]`\n ) as HTMLIcPopoverMenuElement;\n // Set the parent popover menu of the submenu and open the submenu\n childEl.parentPopover = this.host;\n childEl.anchor = this.anchor;\n childEl.ariaLabel = this.host.getAttribute(\"aria-label\");\n childEl.openFromParent();\n childEl.submenuLevel = this.submenuLevel + 1;\n // Set the label in the submenu using the label of the menu item that has emitted the event\n childEl.parentLabel = target.label;\n }\n\n @Watch(\"open\")\n watchOpenHandler(): void {\n if (this.open) {\n if (\n this.parentPopover !== undefined &&\n !this.popoverMenuEls.some((menuItem) => menuItem.id)\n ) {\n this.popoverMenuEls.unshift(this.backButton);\n }\n\n this.currentFocus = this.submenuId !== undefined ? 1 : 0;\n // Needed so that anchorEl isn't always focused\n setTimeout(this.setButtonFocus, 50);\n }\n }\n\n private setButtonFocus = () => {\n this.popoverMenuEls[this.currentFocus]?.focus();\n };\n\n private popoverMenuEls: HTMLIcMenuItemElement[] = [];\n private anchorEl: HTMLElement;\n private currentFocus: number;\n private backButton: HTMLIcMenuItemElement;\n\n // Checks that the popover menu has an anchor\n private findAnchorEl = (anchor: string): HTMLElement => {\n let anchorElement: HTMLElement = null;\n if (anchor === null || anchor === undefined) {\n this.submenuId === undefined &&\n console.error(\"No anchor specified for popover component\");\n } else {\n anchorElement = document.querySelector(\n anchor.indexOf(\"#\") === 0 ? anchor : \"#\" + anchor\n );\n if (anchorElement === null) {\n console.error(`Popover anchor element '${anchor}' not found`);\n }\n }\n return anchorElement;\n };\n\n @Listen(\"click\", { target: \"document\" })\n handleClick(ev: Event): void {\n ev.preventDefault();\n if (this.open && this.isNotPopoverMenuEl(ev)) {\n // If menu is open and the next click on the document is not a popover El, close the popover\n this.closeMenu();\n }\n }\n\n /**\n * @internal Opens the menu from the child menu.\n */\n @Method()\n async openFromChild(): Promise<void> {\n this.open = true;\n this.openingFromChild = true;\n\n setTimeout(() => (this.openingFromChild = false), 1000);\n }\n\n /**\n * @internal Opens the menu from the parent menu.\n */\n @Method()\n async openFromParent(): Promise<void> {\n this.open = true;\n this.openingFromParent = true;\n\n setTimeout(() => (this.openingFromParent = false), 1000);\n }\n\n private isNotPopoverMenuEl = (ev: Event) => {\n const target = ev.target as HTMLElement;\n return (\n target.id !== this.anchor &&\n target.tagName !== \"IC-MENU-ITEM\" &&\n target.tagName !== \"IC-MENU-GROUP\" &&\n target.tagName !== \"IC-POPOVER-MENU\"\n );\n };\n\n private closeMenu = () => {\n this.open = false;\n this.anchorEl?.focus();\n };\n\n private getNextItemToSelect = (\n currentItem: number,\n movingDown: boolean\n ): number => {\n const numButtons = this.popoverMenuEls.length - 1;\n\n if (currentItem < 1) {\n currentItem = 0;\n }\n\n let nextItem = movingDown ? currentItem + 1 : currentItem - 1;\n\n // Check if wrap around necessary\n if (nextItem < 0) {\n nextItem = numButtons;\n } else if (nextItem > numButtons) {\n nextItem = 0;\n }\n\n return nextItem;\n };\n\n // Manages the keyboard navigation in the popover menu\n @Listen(\"keydown\", { target: \"document\" })\n handleKeyDown(ev: KeyboardEvent): void {\n switch (ev.key) {\n case \"ArrowDown\":\n ev.preventDefault();\n this.currentFocus = this.getNextItemToSelect(this.currentFocus, true);\n this.setButtonFocus();\n break;\n case \"ArrowUp\":\n ev.preventDefault();\n this.currentFocus = this.getNextItemToSelect(this.currentFocus, false);\n this.setButtonFocus();\n break;\n case \"Home\":\n //Sets home focus as first element, or back button\n this.currentFocus = 0;\n this.setButtonFocus();\n break;\n case \"End\":\n //Sets end focus as last element\n this.currentFocus = this.popoverMenuEls.length - 1;\n this.setButtonFocus();\n break;\n case \"Escape\":\n case \"Tab\":\n if (this.open) {\n this.closeMenu();\n this.host.blur();\n }\n break;\n }\n }\n\n private addMenuItems = (elements: Element[] | NodeListOf<ChildNode>) => {\n for (let i = 0; i < elements.length; i++) {\n const el = elements[i] as HTMLIcMenuItemElement;\n if (el.tagName === \"IC-MENU-ITEM\") {\n this.popoverMenuEls.push(el);\n } else if (el.tagName === \"IC-MENU-GROUP\") {\n const groupSlotWrapper = el.shadowRoot.querySelector(\"ul\");\n const menuGroupElements = getSlotElements(groupSlotWrapper);\n\n this.addMenuItems(menuGroupElements);\n }\n }\n };\n\n private getMenuAriaLabel = (): string => {\n const ariaLabel = this.host.getAttribute(\"aria-label\");\n\n if (this.submenuId !== undefined) {\n return `${ariaLabel}, within nested level ${this.submenuLevel} ${this.parentLabel} submenu,`;\n } else {\n return ariaLabel;\n }\n };\n\n private handleBackButtonClick = (): void => {\n this.parentPopover.openFromChild();\n this.open = false;\n };\n\n componentDidRender(): void {\n if (this.open) {\n createPopper(this.anchorEl, this.host, {\n placement: \"bottom-start\",\n modifiers: [\n {\n name: \"offset\",\n options: {\n offset: [0, 4],\n },\n },\n ],\n });\n }\n }\n\n componentWillRender(): void {\n this.anchorEl = this.findAnchorEl(this.anchor);\n }\n\n componentDidLoad(): void {\n const slotWrapper = this.host.shadowRoot.querySelector(\"ul.button\");\n const popoverMenuElements = getSlotElements(slotWrapper);\n\n if (popoverMenuElements !== null) {\n this.addMenuItems(popoverMenuElements);\n }\n\n if (\n this.submenuId === undefined &&\n this.host.getAttribute(\"aria-label\") === null\n ) {\n console.error(\n `No aria-label specified for popover menu component - aria-label required`\n );\n }\n }\n\n render() {\n return (\n <Host class={{ open: this.open }}>\n <div\n id={\n this.parentPopover === undefined\n ? `ic-popover-submenu-${this.submenuId}`\n : \"\"\n }\n class={{\n menu: true,\n }}\n tabindex={open ? \"0\" : \"-1\"}\n >\n <div\n class={{\n \"opening-from-parent\": this.openingFromParent,\n \"opening-from-child\": this.openingFromChild,\n }}\n >\n {this.submenuId !== undefined && (\n <div>\n <ic-menu-item\n class=\"ic-popover-submenu-back-button\"\n ref={(el) => (this.backButton = el)}\n label=\"Back\"\n onClick={this.handleBackButtonClick}\n id={`ic-popover-submenu-back-button-${this.submenuLevel}`}\n >\n <svg\n slot=\"icon\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"submenu-back-icon\"\n >\n <path\n d=\"M20 11H7.83L13.42 5.41L12 4L4 12L12 20L13.41 18.59L7.83 13H20V11Z\"\n fill=\"currentColor\"\n />\n </svg>\n </ic-menu-item>\n <ic-typography variant=\"subtitle-small\" class=\"parent-label\">\n {this.parentLabel}\n </ic-typography>\n </div>\n )}\n <ul\n class=\"button\"\n aria-label={this.getMenuAriaLabel()}\n role=\"menu\"\n aria-owns={\n this.submenuId !== undefined\n ? `ic-popover-submenu-back-button-${this.submenuLevel}`\n : false\n }\n aria-controls={\n this.submenuId !== undefined\n ? `ic-popover-submenu-back-button-${this.submenuLevel}`\n : false\n }\n >\n <slot></slot>\n </ul>\n </div>\n </div>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ic-popover-menu.js","sourceRoot":"","sources":["../../../src/components/ic-popover-menu/ic-popover-menu.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Host,\n h,\n Prop,\n Listen,\n Watch,\n State,\n Method,\n} from \"@stencil/core\";\nimport { getSlotElements } from \"../../utils/helpers\";\nimport { createPopper } from \"@popperjs/core\";\n\n@Component({\n tag: \"ic-popover-menu\",\n styleUrl: \"ic-popover-menu.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class PopoverMenu {\n @Element() host: HTMLIcPopoverMenuElement;\n\n /**\n * The ID of the element the popover menu will anchor itself to. This is required unless the popover is a submenu.\n */\n @Prop() anchor: string;\n\n /**\n * The unique identifier for a popover submenu.\n */\n @Prop() submenuId?: string;\n\n /**\n * If `true`, the popover menu will be displayed.\n */\n @Prop({ reflect: true, mutable: true }) open: boolean = undefined;\n\n /**\n * @internal The parent popover menu of a child popover menu.\n */\n @Prop() parentPopover?: HTMLIcPopoverMenuElement;\n\n /**\n * @internal The level of menu being displayed.\n */\n @Prop() submenuLevel: number = 1;\n\n /**\n * @internal The parent popover menu of a child popover menu.\n */\n @Prop() parentLabel?: string;\n\n @State() openingFromChild: boolean = false;\n\n @State() openingFromParent: boolean = false;\n\n @Listen(\"handleMenuItemClick\")\n handleMenuItemClick(ev: CustomEvent): void {\n if (!ev.detail.hasSubMenu && ev.detail.label !== \"Back\") {\n this.closeMenu();\n }\n }\n\n // This is listening for the event emitted when a menu item is acting as a trigger button\n @Listen(\"triggerPopoverMenuInstance\", { capture: true })\n handleSubmenuChange(ev: Event): void {\n // Finds the trigger menu item that has emitted the event\n const target = ev.target as HTMLIcMenuItemElement;\n this.open = false;\n\n // Find the popover menu that the menu item triggers (i.e. submenu-trigger-for === submenu-id).\n const childEl = document.querySelector(\n `ic-popover-menu[submenu-id=${target.submenuTriggerFor}]`\n ) as HTMLIcPopoverMenuElement;\n // Set the parent popover menu of the submenu and open the submenu\n childEl.parentPopover = this.host;\n childEl.anchor = this.anchor;\n childEl.ariaLabel = this.host.getAttribute(this.ARIA_LABEL);\n childEl.openFromParent();\n childEl.submenuLevel = this.submenuLevel + 1;\n // Set the label in the submenu using the label of the menu item that has emitted the event\n childEl.parentLabel = target.label;\n }\n\n @Watch(\"open\")\n watchOpenHandler(): void {\n if (this.open) {\n if (\n this.parentPopover !== undefined &&\n !this.popoverMenuEls.some((menuItem) => menuItem.id)\n ) {\n this.popoverMenuEls.unshift(this.backButton);\n }\n\n this.currentFocus = this.submenuId !== undefined ? 1 : 0;\n // Needed so that anchorEl isn't always focused\n setTimeout(this.setButtonFocus, 50);\n }\n }\n\n private setButtonFocus = () => {\n this.popoverMenuEls[this.currentFocus]?.focus();\n };\n\n private popoverMenuEls: HTMLIcMenuItemElement[] = [];\n private anchorEl: HTMLElement;\n private currentFocus: number;\n private backButton: HTMLIcMenuItemElement;\n private ARIA_LABEL: string = \"aria-label\";\n\n // Checks that the popover menu has an anchor\n private findAnchorEl = (anchor: string): HTMLElement => {\n let anchorElement: HTMLElement = null;\n if (anchor === null || anchor === undefined) {\n this.submenuId === undefined &&\n console.error(\"No anchor specified for popover component\");\n } else {\n anchorElement = document.querySelector(\n anchor.indexOf(\"#\") === 0 ? anchor : \"#\" + anchor\n );\n if (anchorElement === null) {\n console.error(`Popover anchor element '${anchor}' not found`);\n }\n }\n return anchorElement;\n };\n\n @Listen(\"click\", { target: \"document\" })\n handleClick(ev: Event): void {\n ev.preventDefault();\n if (this.open && this.isNotPopoverMenuEl(ev)) {\n // If menu is open and the next click on the document is not a popover El, close the popover\n this.closeMenu();\n }\n }\n\n /**\n * @internal Opens the menu from the child menu.\n */\n @Method()\n async openFromChild(): Promise<void> {\n this.open = true;\n this.openingFromChild = true;\n\n setTimeout(() => (this.openingFromChild = false), 1000);\n }\n\n /**\n * @internal Opens the menu from the parent menu.\n */\n @Method()\n async openFromParent(): Promise<void> {\n this.open = true;\n this.openingFromParent = true;\n\n setTimeout(() => (this.openingFromParent = false), 1000);\n }\n\n private isNotPopoverMenuEl = (ev: Event) => {\n const target = ev.target as HTMLElement;\n return (\n target.id !== this.anchor &&\n target.tagName !== \"IC-MENU-ITEM\" &&\n target.tagName !== \"IC-MENU-GROUP\" &&\n target.tagName !== \"IC-POPOVER-MENU\"\n );\n };\n\n private closeMenu = () => {\n this.open = false;\n this.anchorEl?.focus();\n };\n\n private getNextItemToSelect = (\n currentItem: number,\n movingDown: boolean\n ): number => {\n const numButtons = this.popoverMenuEls.length - 1;\n\n if (currentItem < 1) {\n currentItem = 0;\n }\n\n let nextItem = movingDown ? currentItem + 1 : currentItem - 1;\n\n // Check if wrap around necessary\n if (nextItem < 0) {\n nextItem = numButtons;\n } else if (nextItem > numButtons) {\n nextItem = 0;\n }\n\n return nextItem;\n };\n\n // Manages the keyboard navigation in the popover menu\n @Listen(\"keydown\", { target: \"document\" })\n handleKeyDown(ev: KeyboardEvent): void {\n switch (ev.key) {\n case \"ArrowDown\":\n ev.preventDefault();\n this.currentFocus = this.getNextItemToSelect(this.currentFocus, true);\n this.setButtonFocus();\n break;\n case \"ArrowUp\":\n ev.preventDefault();\n this.currentFocus = this.getNextItemToSelect(this.currentFocus, false);\n this.setButtonFocus();\n break;\n case \"Home\":\n //Sets home focus as first element, or back button\n this.currentFocus = 0;\n this.setButtonFocus();\n break;\n case \"End\":\n //Sets end focus as last element\n this.currentFocus = this.popoverMenuEls.length - 1;\n this.setButtonFocus();\n break;\n case \"Escape\":\n case \"Tab\":\n if (this.open) {\n this.closeMenu();\n this.host.blur();\n }\n break;\n }\n }\n\n private addMenuItems = (elements: Element[] | NodeListOf<ChildNode>) => {\n for (let i = 0; i < elements.length; i++) {\n const el = elements[i] as HTMLIcMenuItemElement;\n if (el.tagName === \"IC-MENU-ITEM\") {\n this.popoverMenuEls.push(el);\n } else if (el.tagName === \"IC-MENU-GROUP\") {\n const groupSlotWrapper = el.shadowRoot.querySelector(\"ul\");\n const menuGroupElements = getSlotElements(groupSlotWrapper);\n\n this.addMenuItems(menuGroupElements);\n }\n }\n };\n\n private getMenuAriaLabel = (): string => {\n const ariaLabel = this.host.getAttribute(this.ARIA_LABEL);\n\n if (this.submenuId !== undefined) {\n return `${ariaLabel}, within nested level ${this.submenuLevel} ${this.parentLabel} submenu,`;\n } else {\n return ariaLabel;\n }\n };\n\n private handleBackButtonClick = (): void => {\n this.parentPopover.openFromChild();\n this.open = false;\n };\n\n componentDidRender(): void {\n if (this.open) {\n createPopper(this.anchorEl, this.host, {\n placement: \"bottom-start\",\n modifiers: [\n {\n name: \"offset\",\n options: {\n offset: [0, 4],\n },\n },\n ],\n });\n }\n }\n\n componentWillRender(): void {\n this.anchorEl = this.findAnchorEl(this.anchor);\n }\n\n componentDidLoad(): void {\n const slotWrapper = this.host.shadowRoot.querySelector(\"ul.button\");\n const popoverMenuElements = getSlotElements(slotWrapper);\n\n if (popoverMenuElements !== null) {\n this.addMenuItems(popoverMenuElements);\n }\n\n if (\n this.submenuId === undefined &&\n this.host.getAttribute(this.ARIA_LABEL) === null\n ) {\n console.error(\n `No aria-label specified for popover menu component - aria-label required`\n );\n }\n }\n\n render() {\n return (\n <Host class={{ open: this.open }}>\n <div\n id={\n this.parentPopover === undefined\n ? `ic-popover-submenu-${this.submenuId}`\n : \"\"\n }\n class={{\n menu: true,\n }}\n tabindex={open ? \"0\" : \"-1\"}\n >\n <div\n class={{\n \"opening-from-parent\": this.openingFromParent,\n \"opening-from-child\": this.openingFromChild,\n }}\n >\n {this.submenuId !== undefined && (\n <div>\n <ic-menu-item\n class=\"ic-popover-submenu-back-button\"\n ref={(el) => (this.backButton = el)}\n label=\"Back\"\n onClick={this.handleBackButtonClick}\n id={`ic-popover-submenu-back-button-${this.submenuLevel}`}\n >\n <svg\n slot=\"icon\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"submenu-back-icon\"\n >\n <path\n d=\"M20 11H7.83L13.42 5.41L12 4L4 12L12 20L13.41 18.59L7.83 13H20V11Z\"\n fill=\"currentColor\"\n />\n </svg>\n </ic-menu-item>\n <ic-typography variant=\"subtitle-small\" class=\"parent-label\">\n {this.parentLabel}\n </ic-typography>\n </div>\n )}\n <ul\n class=\"button\"\n aria-label={this.getMenuAriaLabel()}\n role=\"menu\"\n aria-owns={\n this.submenuId !== undefined\n ? `ic-popover-submenu-back-button-${this.submenuLevel}`\n : false\n }\n aria-controls={\n this.submenuId !== undefined\n ? `ic-popover-submenu-back-button-${this.submenuLevel}`\n : false\n }\n >\n <slot></slot>\n </ul>\n </div>\n </div>\n </Host>\n );\n }\n}\n"]}
@@ -0,0 +1,381 @@
1
+ import { newSpecPage } from "@stencil/core/testing";
2
+ import { MenuItem } from "../ic-menu-item/ic-menu-item";
3
+ import { PopoverMenu } from "./ic-popover-menu";
4
+ import { waitForTimeout } from "../../testspec.setup";
5
+ import { MenuGroup } from "../ic-menu-group/ic-menu-group";
6
+ describe("ic-popover-menu", () => {
7
+ it("should render with anchor", async () => {
8
+ const page = await newSpecPage({
9
+ components: [PopoverMenu, MenuItem],
10
+ html: `<ic-button id="anchorEl"></ic-button><ic-popover-menu anchor="anchorEl" aria-label="popover-menu"><ic-menu-item label="Button 1"></ic-menu-item></ic-popover-menu>`,
11
+ });
12
+ expect(page.root).toMatchSnapshot("should render with anchor");
13
+ });
14
+ it("should render when anchor starts with #", async () => {
15
+ const page = await newSpecPage({
16
+ components: [PopoverMenu, MenuItem],
17
+ html: `<ic-button id="anchorEl"></ic-button><ic-popover-menu anchor="#anchorEl" aria-label="popover-menu"><ic-menu-item label="Button 1"></ic-menu-item></ic-popover-menu>`,
18
+ });
19
+ expect(page.root).toMatchSnapshot("should render when target starts with #");
20
+ });
21
+ it("should render a menu item and menu group", async () => {
22
+ const page = await newSpecPage({
23
+ components: [PopoverMenu, MenuItem, MenuGroup],
24
+ html: `<ic-button id="anchorEl"></ic-button>
25
+ <ic-popover-menu anchor="#anchorEl" aria-label="popover-menu">
26
+ <ic-menu-item label="Button 1"></ic-menu-item>
27
+ <ic-menu-group label="Button group">
28
+ <ic-menu-item label="Group button 1" variant="destructive"></ic-menu-item>
29
+ <ic-menu-item label="Group button 2"></ic-menu-item>
30
+ </ic-menu-group>
31
+ </ic-popover-menu>
32
+ `,
33
+ });
34
+ expect(page.root).toMatchSnapshot("should render a menu item and menu group");
35
+ });
36
+ it("should render a back button when submenu-id is set", async () => {
37
+ const page = await newSpecPage({
38
+ components: [PopoverMenu, MenuItem],
39
+ html: `<ic-button id="anchorEl"></ic-button>
40
+ <ic-popover-menu anchor="#anchorEl" aria-label="popover-menu" submenu-id="submenu">
41
+ <ic-menu-item label="Button 1"></ic-menu-item>
42
+ <ic-menu-item label="Button 2"></ic-menu-item>
43
+ </ic-popover-menu>`,
44
+ });
45
+ expect(page.root).toMatchSnapshot("should render a back button when submenu-id is set");
46
+ });
47
+ it("should set openingFromChild to true when openFromChild method is called", async () => {
48
+ const page = await newSpecPage({
49
+ components: [PopoverMenu, MenuItem],
50
+ html: `<ic-button id="anchorEl"></ic-button>
51
+ <ic-popover-menu anchor="#anchorEl" aria-label="popover-menu" submenu-id="submenu">
52
+ <ic-menu-item label="Button 1"></ic-menu-item>
53
+ <ic-menu-item label="Button 2"></ic-menu-item>
54
+ </ic-popover-menu>`,
55
+ });
56
+ await page.root.openFromChild();
57
+ await page.waitForChanges();
58
+ expect(page.rootInstance.openingFromChild).toBeTruthy();
59
+ expect(page.rootInstance.open).toBeTruthy();
60
+ await waitForTimeout(1000);
61
+ expect(page.rootInstance.openingFromChild).toBeFalsy();
62
+ });
63
+ it("should set openingFromParent to true when openFromParent method is called", async () => {
64
+ const page = await newSpecPage({
65
+ components: [PopoverMenu, MenuItem],
66
+ html: `<ic-button id="anchorEl"></ic-button>
67
+ <ic-popover-menu anchor="#anchorEl" aria-label="popover-menu">
68
+ <ic-menu-item label="Button 1" submenu-trigger-for="submenu" id="trigger-button"></ic-menu-item>
69
+ <ic-menu-item label="Button 2"></ic-menu-item>
70
+ </ic-popover-menu>
71
+ <ic-popover-menu submenu-id="submenu">
72
+ <ic-menu-item label="Button 1"></ic-menu-item>
73
+ <ic-menu-item label="Button 2"></ic-menu-item>
74
+ </ic-popover-menu>`,
75
+ });
76
+ await page.root.openFromParent();
77
+ await page.waitForChanges();
78
+ expect(page.rootInstance.openingFromParent).toBeTruthy();
79
+ expect(page.rootInstance.open).toBeTruthy();
80
+ await waitForTimeout(1000);
81
+ expect(page.rootInstance.openingFromParent).toBeFalsy();
82
+ });
83
+ it("should add focusable menu items to the list of focusable elements", async () => {
84
+ const page = await newSpecPage({
85
+ components: [PopoverMenu, MenuItem],
86
+ html: `<ic-button id="anchorEl"></ic-button>
87
+ <ic-popover-menu anchor="#anchorEl" aria-label="popover-menu">
88
+ <ic-menu-item label="Button 1"></ic-menu-item>
89
+ <ic-menu-item label="Button 2"></ic-menu-item>
90
+ </ic-popover-menu>`,
91
+ });
92
+ expect(page.rootInstance.popoverMenuEls).toEqual([]);
93
+ const menuItems = page.root.querySelectorAll("ic-menu-item");
94
+ await page.rootInstance.addMenuItems(menuItems);
95
+ await page.waitForChanges();
96
+ expect(page.rootInstance.popoverMenuEls).toEqual(menuItems);
97
+ });
98
+ it("should get the next item to select going up and down", async () => {
99
+ const page = await newSpecPage({
100
+ components: [PopoverMenu, MenuItem],
101
+ html: `<ic-button id="anchorEl"></ic-button>
102
+ <ic-popover-menu anchor="#anchorEl" aria-label="popover-menu">
103
+ <ic-menu-item label="Button 1"></ic-menu-item>
104
+ <ic-menu-item label="Button 2"></ic-menu-item>
105
+ </ic-popover-menu>`,
106
+ });
107
+ //populating popoverEls before calling getNextItemToSelect
108
+ const menuItems = page.root.querySelectorAll("ic-menu-item");
109
+ await page.rootInstance.addMenuItems(menuItems);
110
+ await page.waitForChanges();
111
+ const nextItemCalc = page.rootInstance.getNextItemToSelect(0, true);
112
+ await page.waitForChanges();
113
+ expect(nextItemCalc).toBe(1);
114
+ const prevItemCalc = page.rootInstance.getNextItemToSelect(nextItemCalc, false);
115
+ await page.waitForChanges();
116
+ expect(prevItemCalc).toBe(0);
117
+ });
118
+ it("should get the next item to select as last item if next item < 0 and select first item if next item > items length", async () => {
119
+ const page = await newSpecPage({
120
+ components: [PopoverMenu, MenuItem],
121
+ html: `<ic-button id="anchorEl"></ic-button>
122
+ <ic-popover-menu anchor="#anchorEl" aria-label="popover-menu">
123
+ <ic-menu-item label="Button 1"></ic-menu-item>
124
+ <ic-menu-item label="Button 2"></ic-menu-item>
125
+ <ic-menu-item label="Button 3"></ic-menu-item>
126
+ </ic-popover-menu>`,
127
+ });
128
+ //populating popoverEls before calling getNextItemToSelect
129
+ const menuItems = page.root.querySelectorAll("ic-menu-item");
130
+ await page.rootInstance.addMenuItems(menuItems);
131
+ await page.waitForChanges();
132
+ const lastItemCalc = page.rootInstance.getNextItemToSelect(0, false);
133
+ await page.waitForChanges();
134
+ expect(lastItemCalc).toBe(2);
135
+ const firstItemCalc = page.rootInstance.getNextItemToSelect(2, true);
136
+ await page.waitForChanges();
137
+ expect(firstItemCalc).toBe(0);
138
+ });
139
+ it("should console error if an anchor can't be found", async () => {
140
+ console.error = jest.fn();
141
+ const page = await newSpecPage({
142
+ components: [PopoverMenu, MenuItem],
143
+ html: `<ic-button id="anchorEl"></ic-button><ic-popover-menu anchor="wrongAnchor" aria-label="popover-menu"><ic-menu-item label="Button 1"></ic-menu-item></ic-popover-menu>`,
144
+ });
145
+ await page.waitForChanges();
146
+ expect(console.error).toHaveBeenCalledWith("Popover anchor element 'wrongAnchor' not found");
147
+ });
148
+ it("should console error if no anchor is specified for an original popover menu", async () => {
149
+ console.error = jest.fn();
150
+ const page = await newSpecPage({
151
+ components: [PopoverMenu, MenuItem],
152
+ html: `<ic-button id="anchorEl"></ic-button><ic-popover-menu aria-label="popover-menu"><ic-menu-item label="Button 1"></ic-menu-item></ic-popover-menu>`,
153
+ });
154
+ await page.waitForChanges();
155
+ expect(console.error).toHaveBeenCalledWith("No anchor specified for popover component");
156
+ });
157
+ it("should set focus on ArrowDown", async () => {
158
+ const page = await newSpecPage({
159
+ components: [PopoverMenu, MenuItem],
160
+ html: `<ic-button id="anchorEl"></ic-button>
161
+ <ic-popover-menu anchor="#anchorEl" aria-label="popover-menu">
162
+ <ic-menu-item label="Button 1"></ic-menu-item>
163
+ <ic-menu-item label="Button 2"></ic-menu-item>
164
+ <ic-menu-item label="Button 3"></ic-menu-item>
165
+ </ic-popover-menu>`,
166
+ });
167
+ jest.spyOn(page.rootInstance, "setButtonFocus").mockImplementation();
168
+ await page.rootInstance.handleKeyDown({
169
+ key: "ArrowDown",
170
+ preventDefault: () => null,
171
+ });
172
+ await page.waitForChanges();
173
+ expect(page.rootInstance.setButtonFocus).toHaveBeenCalled();
174
+ });
175
+ it("should set focus on ArrowUp", async () => {
176
+ const page = await newSpecPage({
177
+ components: [PopoverMenu, MenuItem],
178
+ html: `<ic-button id="anchorEl"></ic-button>
179
+ <ic-popover-menu anchor="#anchorEl" aria-label="popover-menu">
180
+ <ic-menu-item label="Button 1"></ic-menu-item>
181
+ <ic-menu-item label="Button 2"></ic-menu-item>
182
+ <ic-menu-item label="Button 3"></ic-menu-item>
183
+ </ic-popover-menu>`,
184
+ });
185
+ jest.spyOn(page.rootInstance, "setButtonFocus").mockImplementation();
186
+ await page.rootInstance.handleKeyDown({
187
+ key: "ArrowUp",
188
+ preventDefault: () => null,
189
+ });
190
+ await page.waitForChanges();
191
+ expect(page.rootInstance.setButtonFocus).toHaveBeenCalled();
192
+ });
193
+ it("should set focus on first element for home key", async () => {
194
+ const page = await newSpecPage({
195
+ components: [PopoverMenu, MenuItem],
196
+ html: `<ic-button id="anchorEl"></ic-button>
197
+ <ic-popover-menu anchor="#anchorEl" aria-label="popover-menu">
198
+ <ic-menu-item label="Button 1"></ic-menu-item>
199
+ <ic-menu-item label="Button 2"></ic-menu-item>
200
+ <ic-menu-item label="Button 3"></ic-menu-item>
201
+ </ic-popover-menu>`,
202
+ });
203
+ jest.spyOn(page.rootInstance, "setButtonFocus").mockImplementation();
204
+ await page.rootInstance.handleKeyDown({
205
+ key: "Home",
206
+ preventDefault: () => null,
207
+ });
208
+ await page.waitForChanges();
209
+ expect(page.rootInstance.currentFocus).toBe(0);
210
+ expect(page.rootInstance.setButtonFocus).toHaveBeenCalled();
211
+ });
212
+ it("should set focus on last element for end key", async () => {
213
+ const page = await newSpecPage({
214
+ components: [PopoverMenu, MenuItem],
215
+ html: `<ic-button id="anchorEl"></ic-button>
216
+ <ic-popover-menu anchor="#anchorEl" aria-label="popover-menu">
217
+ <ic-menu-item label="Button 1"></ic-menu-item>
218
+ <ic-menu-item label="Button 2"></ic-menu-item>
219
+ <ic-menu-item label="Button 3"></ic-menu-item>
220
+ </ic-popover-menu>`,
221
+ });
222
+ jest.spyOn(page.rootInstance, "setButtonFocus").mockImplementation();
223
+ //populating popoverEls before handleKeyDown
224
+ const menuItems = page.root.querySelectorAll("ic-menu-item");
225
+ await page.rootInstance.addMenuItems(menuItems);
226
+ await page.waitForChanges();
227
+ await page.rootInstance.handleKeyDown({
228
+ key: "End",
229
+ preventDefault: () => null,
230
+ });
231
+ await page.waitForChanges();
232
+ expect(page.rootInstance.currentFocus).toBe(2);
233
+ expect(page.rootInstance.setButtonFocus).toHaveBeenCalled();
234
+ });
235
+ it("should set close menu on Escape", async () => {
236
+ const page = await newSpecPage({
237
+ components: [PopoverMenu, MenuItem],
238
+ html: `<ic-button id="anchorEl"></ic-button>
239
+ <ic-popover-menu anchor="#anchorEl" aria-label="popover-menu">
240
+ <ic-menu-item label="Button 1"></ic-menu-item>
241
+ <ic-menu-item label="Button 2"></ic-menu-item>
242
+ </ic-popover-menu>`,
243
+ });
244
+ jest.spyOn(page.rootInstance, "closeMenu").mockImplementation();
245
+ // Menu should be open before it can be closed
246
+ page.doc.querySelector("ic-popover-menu").open = true;
247
+ await page.waitForChanges();
248
+ await page.rootInstance.handleKeyDown({
249
+ key: "Escape",
250
+ preventDefault: () => null,
251
+ });
252
+ await page.waitForChanges();
253
+ expect(page.rootInstance.closeMenu).toHaveBeenCalled();
254
+ });
255
+ it("should set close menu on Tab", async () => {
256
+ const page = await newSpecPage({
257
+ components: [PopoverMenu, MenuItem],
258
+ html: `<ic-button id="anchorEl"></ic-button>
259
+ <ic-popover-menu anchor="#anchorEl" aria-label="popover-menu">
260
+ <ic-menu-item label="Button 1"></ic-menu-item>
261
+ <ic-menu-item label="Button 2"></ic-menu-item>
262
+ </ic-popover-menu>`,
263
+ });
264
+ jest.spyOn(page.rootInstance, "closeMenu").mockImplementation();
265
+ // Menu should be open before it can be closed
266
+ page.doc.querySelector("ic-popover-menu").open = true;
267
+ await page.waitForChanges();
268
+ await page.rootInstance.handleKeyDown({
269
+ key: "Tab",
270
+ preventDefault: () => null,
271
+ });
272
+ await page.waitForChanges();
273
+ expect(page.rootInstance.closeMenu).toHaveBeenCalled();
274
+ });
275
+ it("should set the current popover's open prop to false when submenu is triggered", async () => {
276
+ const page = await newSpecPage({
277
+ components: [PopoverMenu, MenuItem],
278
+ html: `<ic-button id="anchorEl"></ic-button>
279
+ <ic-popover-menu anchor="#anchorEl" aria-label="popover-menu" id="initial-popover">
280
+ <ic-menu-item label="Button 1" submenu-trigger-for="submenu" id="trigger-button"></ic-menu-item>
281
+ <ic-menu-item label="Button 2"></ic-menu-item>
282
+ </ic-popover-menu>
283
+ <ic-popover-menu submenu-id="submenu">
284
+ <ic-menu-item label="Button 1"></ic-menu-item>
285
+ <ic-menu-item label="Button 2"></ic-menu-item>
286
+ </ic-popover-menu>`,
287
+ });
288
+ const trigger = page.root.querySelector("#trigger-button");
289
+ const event = new Event("click", {
290
+ bubbles: true,
291
+ cancelable: true,
292
+ });
293
+ expect(page.root.open).toBeUndefined();
294
+ // Make sure the event has a target for handleSubmenuChange
295
+ trigger.dispatchEvent(event);
296
+ page.rootInstance.handleSubmenuChange(event);
297
+ await page.waitForChanges();
298
+ await waitForTimeout(1000);
299
+ expect(page.root.open).toBeFalsy();
300
+ });
301
+ it("should set the current popover's open prop to false when submenu is triggered", async () => {
302
+ const page = await newSpecPage({
303
+ components: [PopoverMenu, MenuItem],
304
+ html: `<ic-button id="anchorEl"></ic-button>
305
+ <ic-popover-menu anchor="#anchorEl" aria-label="popover-menu" id="initial-popover">
306
+ <ic-menu-item label="Button 1" id="trigger-button"></ic-menu-item>
307
+ <ic-menu-item label="Button 2"></ic-menu-item>
308
+ </ic-popover-menu>`,
309
+ });
310
+ const trigger = page.root.querySelector("#trigger-button");
311
+ const event = new CustomEvent("click", {
312
+ bubbles: true,
313
+ cancelable: true,
314
+ detail: { hasSubmenu: false, label: "Button 1" },
315
+ });
316
+ expect(page.root.open).toBeUndefined();
317
+ // Make sure the event has a target for handleMenuItemClick
318
+ trigger.dispatchEvent(event);
319
+ page.rootInstance.handleMenuItemClick(event);
320
+ await page.waitForChanges();
321
+ expect(page.root.open).toBeFalsy();
322
+ });
323
+ it("should close menu when an element that isn't in the popover is clicked", async () => {
324
+ const page = await newSpecPage({
325
+ components: [PopoverMenu, MenuItem],
326
+ html: `<ic-button id="anchorEl"></ic-button>
327
+ <ic-popover-menu anchor="#anchorEl" aria-label="popover-menu" id="initial-popover" open="true">
328
+ <ic-menu-item label="Button 1" submenu-trigger-for="submenu" id="trigger-button"></ic-menu-item>
329
+ <ic-menu-item label="Button 2"></ic-menu-item>
330
+ </ic-popover-menu>
331
+ <ic-popover-menu submenu-id="submenu">
332
+ <ic-menu-item label="Button 1"></ic-menu-item>
333
+ <ic-menu-item label="Button 2"></ic-menu-item>
334
+ </ic-popover-menu>`,
335
+ });
336
+ jest.spyOn(page.rootInstance, "closeMenu").mockImplementation();
337
+ const notPopover = document.body;
338
+ const event = new Event("click", {
339
+ bubbles: true,
340
+ cancelable: true,
341
+ });
342
+ // Make sure the event has a target for handleSubmenuChange
343
+ notPopover.dispatchEvent(event);
344
+ await page.rootInstance.handleClick(event);
345
+ await page.waitForChanges();
346
+ expect(page.rootInstance.closeMenu).toHaveBeenCalled();
347
+ });
348
+ it("should set current popover's open prop to false when back button is clicked", async () => {
349
+ const page = await newSpecPage({
350
+ components: [PopoverMenu, MenuItem],
351
+ html: `<ic-button id="anchorEl"></ic-button>
352
+ <ic-popover-menu anchor="#anchorEl" aria-label="popover-menu" submenu-id="submenu">
353
+ <ic-menu-item label="Button 1"></ic-menu-item>
354
+ <ic-menu-item label="Button 2"></ic-menu-item>
355
+ </ic-popover-menu>`,
356
+ });
357
+ const back = page.root.shadowRoot.querySelector(".ic-popover-submenu-back-button");
358
+ const event = new Event("click", {
359
+ bubbles: true,
360
+ cancelable: true,
361
+ });
362
+ back.dispatchEvent(event);
363
+ await page.waitForChanges();
364
+ expect(page.root.open).toBeFalsy();
365
+ });
366
+ it("should set open to false when menu is closed", async () => {
367
+ const page = await newSpecPage({
368
+ components: [PopoverMenu, MenuItem],
369
+ html: `<ic-button id="anchorEl"></ic-button>
370
+ <ic-popover-menu anchor="#anchorEl" aria-label="popover-menu" open="true">
371
+ <ic-menu-item label="Button 1"></ic-menu-item>
372
+ <ic-menu-item label="Button 2"></ic-menu-item>
373
+ </ic-popover-menu>`,
374
+ });
375
+ expect(page.root.open).toBeTruthy();
376
+ page.rootInstance.closeMenu();
377
+ await page.waitForChanges();
378
+ expect(page.root.open).toBeFalsy();
379
+ });
380
+ });
381
+ //# sourceMappingURL=ic-popover-menu.spec.js.map