@ukic/web-components 2.1.0-beta.10 → 2.1.0-beta.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (335) hide show
  1. package/dist/cjs/chevron-icon-2bb3a907.js +10 -0
  2. package/dist/cjs/chevron-icon-2bb3a907.js.map +1 -0
  3. package/dist/cjs/core.cjs.js +1 -1
  4. package/dist/cjs/{helpers-6eb26e7a.js → helpers-2021e212.js} +3 -2
  5. package/dist/cjs/helpers-2021e212.js.map +1 -0
  6. package/dist/cjs/ic-alert.cjs.entry.js +1 -1
  7. package/dist/cjs/ic-back-to-top.cjs.entry.js +1 -1
  8. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js +1 -1
  9. package/dist/cjs/ic-breadcrumb.cjs.entry.js +4 -4
  10. package/dist/cjs/ic-breadcrumb.cjs.entry.js.map +1 -1
  11. package/dist/cjs/ic-button_3.cjs.entry.js +9 -4
  12. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  13. package/dist/cjs/ic-card.cjs.entry.js +4 -4
  14. package/dist/cjs/ic-card.cjs.entry.js.map +1 -1
  15. package/dist/cjs/ic-checkbox-group.cjs.entry.js +1 -1
  16. package/dist/cjs/ic-checkbox.cjs.entry.js +1 -1
  17. package/dist/cjs/ic-chip.cjs.entry.js +1 -1
  18. package/dist/cjs/ic-data-row.cjs.entry.js +1 -1
  19. package/dist/cjs/ic-divider.cjs.entry.js +1 -1
  20. package/dist/cjs/ic-footer-link-group.cjs.entry.js +1 -1
  21. package/dist/cjs/ic-footer-link.cjs.entry.js +2 -2
  22. package/dist/cjs/ic-footer-link.cjs.entry.js.map +1 -1
  23. package/dist/cjs/ic-footer.cjs.entry.js +1 -1
  24. package/dist/cjs/ic-hero.cjs.entry.js +1 -1
  25. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +9 -3
  26. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js.map +1 -1
  27. package/dist/cjs/ic-input-component-container_3.cjs.entry.js +11 -7
  28. package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +1 -1
  29. package/dist/cjs/ic-input-label_2.cjs.entry.js +1 -1
  30. package/dist/cjs/ic-link.cjs.entry.js +3 -3
  31. package/dist/cjs/ic-link.cjs.entry.js.map +1 -1
  32. package/dist/cjs/ic-menu-group.cjs.entry.js +24 -0
  33. package/dist/cjs/ic-menu-group.cjs.entry.js.map +1 -0
  34. package/dist/cjs/ic-menu-item.cjs.entry.js +120 -0
  35. package/dist/cjs/ic-menu-item.cjs.entry.js.map +1 -0
  36. package/dist/cjs/ic-navigation-button.cjs.entry.js +1 -1
  37. package/dist/cjs/ic-navigation-group.cjs.entry.js +3 -3
  38. package/dist/cjs/ic-navigation-group.cjs.entry.js.map +1 -1
  39. package/dist/cjs/ic-navigation-item.cjs.entry.js +3 -3
  40. package/dist/cjs/ic-navigation-item.cjs.entry.js.map +1 -1
  41. package/dist/cjs/ic-navigation-menu.cjs.entry.js +1 -1
  42. package/dist/cjs/ic-page-header.cjs.entry.js +1 -1
  43. package/dist/cjs/ic-popover-menu.cjs.entry.js +236 -0
  44. package/dist/cjs/ic-popover-menu.cjs.entry.js.map +1 -0
  45. package/dist/cjs/ic-radio-group.cjs.entry.js +1 -1
  46. package/dist/cjs/ic-radio-option.cjs.entry.js +1 -1
  47. package/dist/cjs/ic-search-bar.cjs.entry.js +4 -2
  48. package/dist/cjs/ic-search-bar.cjs.entry.js.map +1 -1
  49. package/dist/cjs/ic-select.cjs.entry.js +15 -13
  50. package/dist/cjs/ic-select.cjs.entry.js.map +1 -1
  51. package/dist/cjs/ic-side-navigation.cjs.entry.js +4 -4
  52. package/dist/cjs/ic-side-navigation.cjs.entry.js.map +1 -1
  53. package/dist/cjs/ic-status-tag.cjs.entry.js +1 -1
  54. package/dist/cjs/ic-stepper.cjs.entry.js +1 -1
  55. package/dist/cjs/ic-switch.cjs.entry.js +1 -1
  56. package/dist/cjs/ic-tab-group.cjs.entry.js +1 -1
  57. package/dist/cjs/ic-text-field.cjs.entry.js +1 -1
  58. package/dist/cjs/ic-theme.cjs.entry.js +1 -1
  59. package/dist/cjs/ic-toast.cjs.entry.js +2 -2
  60. package/dist/cjs/ic-toast.cjs.entry.js.map +1 -1
  61. package/dist/cjs/ic-top-navigation.cjs.entry.js +1 -1
  62. package/dist/cjs/index-f79a4e53.js +12 -0
  63. package/dist/cjs/loader.cjs.js +1 -1
  64. package/dist/collection/collection-manifest.json +3 -0
  65. package/dist/collection/components/ic-breadcrumb/ic-breadcrumb.css +19 -4
  66. package/dist/collection/components/ic-button/ic-button.js +2 -1
  67. package/dist/collection/components/ic-button/ic-button.js.map +1 -1
  68. package/dist/collection/components/ic-card/ic-card.css +16 -2
  69. package/dist/collection/components/ic-footer-link/ic-footer-link.css +16 -3
  70. package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.js +8 -2
  71. package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.js.map +1 -1
  72. package/dist/collection/components/ic-link/ic-link.css +16 -3
  73. package/dist/collection/components/ic-link/ic-link.js +6 -3
  74. package/dist/collection/components/ic-link/ic-link.js.map +1 -1
  75. package/dist/collection/components/ic-menu/ic-menu.js +10 -6
  76. package/dist/collection/components/ic-menu/ic-menu.js.map +1 -1
  77. package/dist/collection/components/ic-menu-group/ic-menu-group.css +465 -0
  78. package/dist/collection/components/ic-menu-group/ic-menu-group.js +45 -0
  79. package/dist/collection/components/ic-menu-group/ic-menu-group.js.map +1 -0
  80. package/dist/collection/components/ic-menu-item/ic-menu-item.css +633 -0
  81. package/dist/collection/components/ic-menu-item/ic-menu-item.js +392 -0
  82. package/dist/collection/components/ic-menu-item/ic-menu-item.js.map +1 -0
  83. package/dist/collection/components/ic-menu-item/ic-menu-item.types.js +2 -0
  84. package/dist/collection/components/ic-menu-item/ic-menu-item.types.js.map +1 -0
  85. package/dist/collection/components/ic-popover-menu/ic-popover-menu.css +535 -0
  86. package/dist/collection/components/ic-popover-menu/ic-popover-menu.js +432 -0
  87. package/dist/collection/components/ic-popover-menu/ic-popover-menu.js.map +1 -0
  88. package/dist/collection/components/ic-popover-menu/ic-popover-menu.test.a11y.js +13 -0
  89. package/dist/collection/components/ic-popover-menu/ic-popover-menu.test.a11y.js.map +1 -0
  90. package/dist/collection/components/ic-search-bar/ic-search-bar.js +3 -1
  91. package/dist/collection/components/ic-search-bar/ic-search-bar.js.map +1 -1
  92. package/dist/collection/components/ic-select/ic-select.css +13 -13
  93. package/dist/collection/components/ic-select/ic-select.js +18 -13
  94. package/dist/collection/components/ic-select/ic-select.js.map +1 -1
  95. package/dist/collection/components/ic-side-navigation/ic-side-navigation-test-examples.js +90 -0
  96. package/dist/collection/components/ic-side-navigation/ic-side-navigation-test-examples.js.map +1 -1
  97. package/dist/collection/components/ic-side-navigation/ic-side-navigation.js +1 -1
  98. package/dist/collection/components/ic-side-navigation/ic-side-navigation.js.map +1 -1
  99. package/dist/collection/components/ic-toast/ic-toast.css +5 -0
  100. package/dist/collection/components/ic-tooltip/ic-tooltip.js +6 -2
  101. package/dist/collection/components/ic-tooltip/ic-tooltip.js.map +1 -1
  102. package/dist/collection/utils/helpers.js +1 -1
  103. package/dist/collection/utils/helpers.js.map +1 -1
  104. package/dist/components/helpers.js +2 -2
  105. package/dist/components/helpers.js.map +1 -1
  106. package/dist/components/ic-breadcrumb2.js +1 -1
  107. package/dist/components/ic-breadcrumb2.js.map +1 -1
  108. package/dist/components/ic-button2.js +2 -1
  109. package/dist/components/ic-button2.js.map +1 -1
  110. package/dist/components/ic-card.js +1 -1
  111. package/dist/components/ic-card.js.map +1 -1
  112. package/dist/components/ic-footer-link.js +1 -1
  113. package/dist/components/ic-footer-link.js.map +1 -1
  114. package/dist/components/ic-horizontal-scroll2.js +9 -3
  115. package/dist/components/ic-horizontal-scroll2.js.map +1 -1
  116. package/dist/components/ic-link2.js +2 -2
  117. package/dist/components/ic-link2.js.map +1 -1
  118. package/dist/components/ic-menu-group.d.ts +11 -0
  119. package/dist/components/ic-menu-group.js +46 -0
  120. package/dist/components/ic-menu-group.js.map +1 -0
  121. package/dist/components/ic-menu-item.d.ts +11 -0
  122. package/dist/components/ic-menu-item.js +8 -0
  123. package/dist/components/ic-menu-item.js.map +1 -0
  124. package/dist/components/ic-menu-item2.js +167 -0
  125. package/dist/components/ic-menu-item2.js.map +1 -0
  126. package/dist/components/ic-menu2.js +11 -8
  127. package/dist/components/ic-menu2.js.map +1 -1
  128. package/dist/components/ic-navigation-menu2.js +1 -1
  129. package/dist/components/ic-popover-menu.d.ts +11 -0
  130. package/dist/components/ic-popover-menu.js +290 -0
  131. package/dist/components/ic-popover-menu.js.map +1 -0
  132. package/dist/components/ic-radio-option.js +1 -1
  133. package/dist/components/ic-search-bar.js +4 -2
  134. package/dist/components/ic-search-bar.js.map +1 -1
  135. package/dist/components/ic-select.js +15 -13
  136. package/dist/components/ic-select.js.map +1 -1
  137. package/dist/components/ic-side-navigation.js +2 -2
  138. package/dist/components/ic-side-navigation.js.map +1 -1
  139. package/dist/components/ic-stepper.js +1 -1
  140. package/dist/components/ic-text-field2.js +1 -1
  141. package/dist/components/ic-theme.js +1 -1
  142. package/dist/components/ic-toast.js +2 -2
  143. package/dist/components/ic-toast.js.map +1 -1
  144. package/dist/components/ic-tooltip2.js +6 -2
  145. package/dist/components/ic-tooltip2.js.map +1 -1
  146. package/dist/components/ic-top-navigation.js +1 -1
  147. package/dist/components/index.d.ts +3 -0
  148. package/dist/components/index.js +3 -0
  149. package/dist/components/index.js.map +1 -1
  150. package/dist/core/core.css +2 -2
  151. package/dist/core/core.esm.js +1 -1
  152. package/dist/core/core.esm.js.map +1 -1
  153. package/dist/core/{p-18bf3cb0.entry.js → p-037dfe9d.entry.js} +2 -2
  154. package/dist/core/{p-d86b0d0e.entry.js → p-05c5c6c4.entry.js} +2 -2
  155. package/dist/core/{p-24240e11.js → p-06321d19.js} +2 -2
  156. package/dist/core/{p-284970bc.entry.js → p-0a463a65.entry.js} +2 -2
  157. package/dist/core/{p-7a0bf893.entry.js → p-0faf328a.entry.js} +2 -2
  158. package/dist/core/{p-5b083ce5.entry.js → p-102281fd.entry.js} +2 -2
  159. package/dist/core/{p-18ae4b6d.entry.js → p-1549adc1.entry.js} +2 -2
  160. package/dist/core/{p-3dda76db.entry.js → p-25b208ae.entry.js} +2 -2
  161. package/dist/core/{p-ba8d6c23.entry.js → p-26c9e522.entry.js} +2 -2
  162. package/dist/core/{p-41e239cb.entry.js → p-33a0aabe.entry.js} +2 -2
  163. package/dist/core/p-3d84a743.entry.js +2 -0
  164. package/dist/core/p-3d84a743.entry.js.map +1 -0
  165. package/dist/core/{p-1724000c.js → p-3dea2867.js} +2 -2
  166. package/dist/core/p-3dea2867.js.map +1 -0
  167. package/dist/core/{p-a667e329.entry.js → p-3fd4f8eb.entry.js} +2 -2
  168. package/dist/core/{p-a10da430.entry.js → p-48a5c2a7.entry.js} +2 -2
  169. package/dist/core/p-48a5c2a7.entry.js.map +1 -0
  170. package/dist/core/p-4d8392fe.entry.js +2 -0
  171. package/dist/core/p-4d8392fe.entry.js.map +1 -0
  172. package/dist/core/p-4ee03271.entry.js +2 -0
  173. package/dist/core/p-4ee03271.entry.js.map +1 -0
  174. package/dist/core/p-58ff516f.entry.js +2 -0
  175. package/dist/core/p-58ff516f.entry.js.map +1 -0
  176. package/dist/core/{p-7818d958.entry.js → p-73fddc63.entry.js} +2 -2
  177. package/dist/core/p-73fddc63.entry.js.map +1 -0
  178. package/dist/core/{p-7a9bc7f2.entry.js → p-741b4ea3.entry.js} +2 -2
  179. package/dist/core/{p-cccbf2bf.entry.js → p-7dcb9104.entry.js} +2 -2
  180. package/dist/core/p-81652a98.entry.js +2 -0
  181. package/dist/core/p-81652a98.entry.js.map +1 -0
  182. package/dist/core/p-87c7ba3b.entry.js +2 -0
  183. package/dist/core/p-87c7ba3b.entry.js.map +1 -0
  184. package/dist/core/{p-c4a7c734.entry.js → p-8c9cc4d5.entry.js} +2 -2
  185. package/dist/core/{p-c7b86643.entry.js → p-a2c7dc6c.entry.js} +2 -2
  186. package/dist/core/p-a3742d40.entry.js +2 -0
  187. package/dist/core/p-a3742d40.entry.js.map +1 -0
  188. package/dist/core/p-a44a0500.entry.js +2 -0
  189. package/dist/core/p-a44a0500.entry.js.map +1 -0
  190. package/dist/core/p-a8e969ea.entry.js +2 -0
  191. package/dist/core/p-a8e969ea.entry.js.map +1 -0
  192. package/dist/core/{p-c72e4b75.entry.js → p-ac6ecdb6.entry.js} +2 -2
  193. package/dist/core/{p-eba373bf.entry.js → p-acb08809.entry.js} +2 -2
  194. package/dist/core/p-affb42c7.entry.js +2 -0
  195. package/dist/core/p-affb42c7.entry.js.map +1 -0
  196. package/dist/core/{p-b35ae170.entry.js → p-b7fc1f35.entry.js} +2 -2
  197. package/dist/core/{p-bd819f68.entry.js → p-b8b960a5.entry.js} +2 -2
  198. package/dist/core/{p-91a8db51.entry.js → p-b921bb19.entry.js} +2 -2
  199. package/dist/core/{p-c7c5d2c5.entry.js → p-c996810e.entry.js} +2 -2
  200. package/dist/core/{p-6a397882.entry.js → p-cc62d065.entry.js} +2 -2
  201. package/dist/core/p-cc62d065.entry.js.map +1 -0
  202. package/dist/core/{p-b40bd77c.entry.js → p-d28d7f24.entry.js} +2 -2
  203. package/dist/core/{p-35a03442.entry.js → p-dbfdfa8a.entry.js} +2 -2
  204. package/dist/core/{p-691ea0f2.entry.js → p-dd71a986.entry.js} +2 -2
  205. package/dist/core/{p-e0d88c31.entry.js → p-e4547265.entry.js} +2 -2
  206. package/dist/core/{p-c8f07be6.entry.js → p-ea0c4aca.entry.js} +2 -2
  207. package/dist/core/{p-521be4e2.entry.js → p-f6ddd32f.entry.js} +2 -2
  208. package/dist/core/p-f6ddd32f.entry.js.map +1 -0
  209. package/dist/core/{p-b4234318.entry.js → p-f777679c.entry.js} +2 -2
  210. package/dist/esm/chevron-icon-7927f709.js +8 -0
  211. package/dist/esm/chevron-icon-7927f709.js.map +1 -0
  212. package/dist/esm/core.js +1 -1
  213. package/dist/esm/{helpers-c332acf8.js → helpers-b2b47a7d.js} +3 -3
  214. package/dist/esm/helpers-b2b47a7d.js.map +1 -0
  215. package/dist/esm/ic-alert.entry.js +1 -1
  216. package/dist/esm/ic-back-to-top.entry.js +1 -1
  217. package/dist/esm/ic-breadcrumb-group.entry.js +1 -1
  218. package/dist/esm/ic-breadcrumb.entry.js +4 -4
  219. package/dist/esm/ic-breadcrumb.entry.js.map +1 -1
  220. package/dist/esm/ic-button_3.entry.js +9 -4
  221. package/dist/esm/ic-button_3.entry.js.map +1 -1
  222. package/dist/esm/ic-card.entry.js +4 -4
  223. package/dist/esm/ic-card.entry.js.map +1 -1
  224. package/dist/esm/ic-checkbox-group.entry.js +1 -1
  225. package/dist/esm/ic-checkbox.entry.js +1 -1
  226. package/dist/esm/ic-chip.entry.js +1 -1
  227. package/dist/esm/ic-data-row.entry.js +1 -1
  228. package/dist/esm/ic-divider.entry.js +1 -1
  229. package/dist/esm/ic-footer-link-group.entry.js +1 -1
  230. package/dist/esm/ic-footer-link.entry.js +2 -2
  231. package/dist/esm/ic-footer-link.entry.js.map +1 -1
  232. package/dist/esm/ic-footer.entry.js +1 -1
  233. package/dist/esm/ic-hero.entry.js +1 -1
  234. package/dist/esm/ic-horizontal-scroll.entry.js +9 -3
  235. package/dist/esm/ic-horizontal-scroll.entry.js.map +1 -1
  236. package/dist/esm/ic-input-component-container_3.entry.js +11 -7
  237. package/dist/esm/ic-input-component-container_3.entry.js.map +1 -1
  238. package/dist/esm/ic-input-label_2.entry.js +1 -1
  239. package/dist/esm/ic-link.entry.js +3 -3
  240. package/dist/esm/ic-link.entry.js.map +1 -1
  241. package/dist/esm/ic-menu-group.entry.js +20 -0
  242. package/dist/esm/ic-menu-group.entry.js.map +1 -0
  243. package/dist/esm/ic-menu-item.entry.js +116 -0
  244. package/dist/esm/ic-menu-item.entry.js.map +1 -0
  245. package/dist/esm/ic-navigation-button.entry.js +1 -1
  246. package/dist/esm/ic-navigation-group.entry.js +3 -3
  247. package/dist/esm/ic-navigation-group.entry.js.map +1 -1
  248. package/dist/esm/ic-navigation-item.entry.js +3 -3
  249. package/dist/esm/ic-navigation-item.entry.js.map +1 -1
  250. package/dist/esm/ic-navigation-menu.entry.js +1 -1
  251. package/dist/esm/ic-page-header.entry.js +1 -1
  252. package/dist/esm/ic-popover-menu.entry.js +232 -0
  253. package/dist/esm/ic-popover-menu.entry.js.map +1 -0
  254. package/dist/esm/ic-radio-group.entry.js +1 -1
  255. package/dist/esm/ic-radio-option.entry.js +1 -1
  256. package/dist/esm/ic-search-bar.entry.js +4 -2
  257. package/dist/esm/ic-search-bar.entry.js.map +1 -1
  258. package/dist/esm/ic-select.entry.js +15 -13
  259. package/dist/esm/ic-select.entry.js.map +1 -1
  260. package/dist/esm/ic-side-navigation.entry.js +4 -4
  261. package/dist/esm/ic-side-navigation.entry.js.map +1 -1
  262. package/dist/esm/ic-status-tag.entry.js +1 -1
  263. package/dist/esm/ic-stepper.entry.js +1 -1
  264. package/dist/esm/ic-switch.entry.js +1 -1
  265. package/dist/esm/ic-tab-group.entry.js +1 -1
  266. package/dist/esm/ic-text-field.entry.js +1 -1
  267. package/dist/esm/ic-theme.entry.js +1 -1
  268. package/dist/esm/ic-toast.entry.js +2 -2
  269. package/dist/esm/ic-toast.entry.js.map +1 -1
  270. package/dist/esm/ic-top-navigation.entry.js +1 -1
  271. package/dist/esm/index-90721b3c.js +12 -0
  272. package/dist/esm/loader.js +1 -1
  273. package/dist/types/components/ic-link/ic-link.d.ts +1 -1
  274. package/dist/types/components/ic-menu-group/ic-menu-group.d.ts +8 -0
  275. package/dist/types/components/ic-menu-item/ic-menu-item.d.ts +74 -0
  276. package/dist/types/components/ic-menu-item/ic-menu-item.types.d.ts +1 -0
  277. package/dist/types/components/ic-popover-menu/ic-popover-menu.d.ts +58 -0
  278. package/dist/types/components/ic-popover-menu/ic-popover-menu.test.a11y.d.ts +1 -0
  279. package/dist/types/components/ic-select/ic-select.d.ts +1 -1
  280. package/dist/types/components/ic-side-navigation/ic-side-navigation-test-examples.d.ts +1 -0
  281. package/dist/types/components.d.ts +173 -4
  282. package/hydrate/index.js +454 -33
  283. package/package.json +3 -3
  284. package/dist/cjs/chevron-icon-2645d6b0.js +0 -10
  285. package/dist/cjs/chevron-icon-2645d6b0.js.map +0 -1
  286. package/dist/cjs/helpers-6eb26e7a.js.map +0 -1
  287. package/dist/core/p-1724000c.js.map +0 -1
  288. package/dist/core/p-44c9612c.entry.js +0 -2
  289. package/dist/core/p-44c9612c.entry.js.map +0 -1
  290. package/dist/core/p-4a73728b.entry.js +0 -2
  291. package/dist/core/p-4a73728b.entry.js.map +0 -1
  292. package/dist/core/p-521be4e2.entry.js.map +0 -1
  293. package/dist/core/p-6a397882.entry.js.map +0 -1
  294. package/dist/core/p-7818d958.entry.js.map +0 -1
  295. package/dist/core/p-8f1176c6.entry.js +0 -2
  296. package/dist/core/p-8f1176c6.entry.js.map +0 -1
  297. package/dist/core/p-a09d853e.entry.js +0 -2
  298. package/dist/core/p-a09d853e.entry.js.map +0 -1
  299. package/dist/core/p-a10da430.entry.js.map +0 -1
  300. package/dist/core/p-d37b9695.entry.js +0 -2
  301. package/dist/core/p-d37b9695.entry.js.map +0 -1
  302. package/dist/core/p-dea3d5f0.entry.js +0 -2
  303. package/dist/core/p-dea3d5f0.entry.js.map +0 -1
  304. package/dist/core/p-e9202767.entry.js +0 -2
  305. package/dist/core/p-e9202767.entry.js.map +0 -1
  306. package/dist/esm/chevron-icon-98c98242.js +0 -8
  307. package/dist/esm/chevron-icon-98c98242.js.map +0 -1
  308. package/dist/esm/helpers-c332acf8.js.map +0 -1
  309. /package/dist/core/{p-18bf3cb0.entry.js.map → p-037dfe9d.entry.js.map} +0 -0
  310. /package/dist/core/{p-d86b0d0e.entry.js.map → p-05c5c6c4.entry.js.map} +0 -0
  311. /package/dist/core/{p-24240e11.js.map → p-06321d19.js.map} +0 -0
  312. /package/dist/core/{p-284970bc.entry.js.map → p-0a463a65.entry.js.map} +0 -0
  313. /package/dist/core/{p-7a0bf893.entry.js.map → p-0faf328a.entry.js.map} +0 -0
  314. /package/dist/core/{p-5b083ce5.entry.js.map → p-102281fd.entry.js.map} +0 -0
  315. /package/dist/core/{p-18ae4b6d.entry.js.map → p-1549adc1.entry.js.map} +0 -0
  316. /package/dist/core/{p-3dda76db.entry.js.map → p-25b208ae.entry.js.map} +0 -0
  317. /package/dist/core/{p-ba8d6c23.entry.js.map → p-26c9e522.entry.js.map} +0 -0
  318. /package/dist/core/{p-41e239cb.entry.js.map → p-33a0aabe.entry.js.map} +0 -0
  319. /package/dist/core/{p-a667e329.entry.js.map → p-3fd4f8eb.entry.js.map} +0 -0
  320. /package/dist/core/{p-7a9bc7f2.entry.js.map → p-741b4ea3.entry.js.map} +0 -0
  321. /package/dist/core/{p-cccbf2bf.entry.js.map → p-7dcb9104.entry.js.map} +0 -0
  322. /package/dist/core/{p-c4a7c734.entry.js.map → p-8c9cc4d5.entry.js.map} +0 -0
  323. /package/dist/core/{p-c7b86643.entry.js.map → p-a2c7dc6c.entry.js.map} +0 -0
  324. /package/dist/core/{p-c72e4b75.entry.js.map → p-ac6ecdb6.entry.js.map} +0 -0
  325. /package/dist/core/{p-eba373bf.entry.js.map → p-acb08809.entry.js.map} +0 -0
  326. /package/dist/core/{p-b35ae170.entry.js.map → p-b7fc1f35.entry.js.map} +0 -0
  327. /package/dist/core/{p-bd819f68.entry.js.map → p-b8b960a5.entry.js.map} +0 -0
  328. /package/dist/core/{p-91a8db51.entry.js.map → p-b921bb19.entry.js.map} +0 -0
  329. /package/dist/core/{p-c7c5d2c5.entry.js.map → p-c996810e.entry.js.map} +0 -0
  330. /package/dist/core/{p-b40bd77c.entry.js.map → p-d28d7f24.entry.js.map} +0 -0
  331. /package/dist/core/{p-35a03442.entry.js.map → p-dbfdfa8a.entry.js.map} +0 -0
  332. /package/dist/core/{p-691ea0f2.entry.js.map → p-dd71a986.entry.js.map} +0 -0
  333. /package/dist/core/{p-e0d88c31.entry.js.map → p-e4547265.entry.js.map} +0 -0
  334. /package/dist/core/{p-c8f07be6.entry.js.map → p-ea0c4aca.entry.js.map} +0 -0
  335. /package/dist/core/{p-b4234318.entry.js.map → p-f777679c.entry.js.map} +0 -0
@@ -0,0 +1,432 @@
1
+ import { Host, h, } from "@stencil/core";
2
+ import { getSlotElements } from "../../utils/helpers";
3
+ import { createPopper } from "@popperjs/core";
4
+ export class PopoverMenu {
5
+ constructor() {
6
+ this.setButtonFocus = () => {
7
+ var _a;
8
+ (_a = this.popoverMenuEls[this.currentFocus]) === null || _a === void 0 ? void 0 : _a.focus();
9
+ };
10
+ this.popoverMenuEls = [];
11
+ // Checks that the popover menu has an anchor
12
+ this.findAnchorEl = (anchor) => {
13
+ let anchorElement = null;
14
+ if (anchor === null || anchor === undefined) {
15
+ this.submenuId === undefined &&
16
+ console.error("No anchor specified for popover component");
17
+ }
18
+ else {
19
+ anchorElement = document.querySelector(anchor.indexOf("#") === 0 ? anchor : "#" + anchor);
20
+ if (anchorElement === null) {
21
+ console.error(`Popover anchor element '${anchor}' not found`);
22
+ }
23
+ }
24
+ return anchorElement;
25
+ };
26
+ this.isNotPopoverMenuEl = (ev) => {
27
+ const target = ev.target;
28
+ return (target.id !== this.anchor &&
29
+ target.tagName !== "IC-MENU-ITEM" &&
30
+ target.tagName !== "IC-MENU-GROUP" &&
31
+ target.tagName !== "IC-POPOVER-MENU");
32
+ };
33
+ this.closeMenu = () => {
34
+ this.open = false;
35
+ this.anchorEl.focus();
36
+ };
37
+ this.getNextItemToSelect = (currentItem, movingDown) => {
38
+ const numButtons = this.popoverMenuEls.length - 1;
39
+ if (currentItem < 1) {
40
+ currentItem = 0;
41
+ }
42
+ let nextItem = movingDown ? currentItem + 1 : currentItem - 1;
43
+ // Check if wrap around necessary
44
+ if (nextItem < 0) {
45
+ nextItem = numButtons;
46
+ }
47
+ else if (nextItem > numButtons) {
48
+ nextItem = 0;
49
+ }
50
+ return nextItem;
51
+ };
52
+ this.addMenuItems = (elements) => {
53
+ for (let i = 0; i < elements.length; i++) {
54
+ const el = elements[i];
55
+ if (el.tagName === "IC-MENU-ITEM") {
56
+ this.popoverMenuEls.push(el);
57
+ }
58
+ else if (el.tagName === "IC-MENU-GROUP") {
59
+ const groupSlotWrapper = el.shadowRoot.querySelector("ul");
60
+ const menuGroupElements = getSlotElements(groupSlotWrapper);
61
+ this.addMenuItems(menuGroupElements);
62
+ }
63
+ }
64
+ };
65
+ this.getMenuAriaLabel = () => {
66
+ const ariaLabel = this.host.getAttribute("aria-label");
67
+ if (this.submenuId !== undefined) {
68
+ return `${ariaLabel}, within nested level ${this.submenuLevel} ${this.parentLabel} submenu,`;
69
+ }
70
+ else {
71
+ return ariaLabel;
72
+ }
73
+ };
74
+ this.handleBackButtonClick = () => {
75
+ this.parentPopover.openFromChild();
76
+ this.open = false;
77
+ };
78
+ this.anchor = undefined;
79
+ this.submenuId = undefined;
80
+ this.open = undefined;
81
+ this.parentPopover = undefined;
82
+ this.submenuLevel = 1;
83
+ this.parentLabel = undefined;
84
+ this.openingFromChild = false;
85
+ this.openingFromParent = false;
86
+ }
87
+ handleMenuItemClick(ev) {
88
+ if (!ev.detail.hasSubMenu && ev.detail.label !== "Back") {
89
+ this.closeMenu();
90
+ }
91
+ }
92
+ // This is listening for the event emitted when a menu item is acting as a trigger button
93
+ handleSubmenuChange(ev) {
94
+ // Finds the trigger menu item that has emitted the event
95
+ const target = ev.target;
96
+ this.open = false;
97
+ // Find the popover menu that the menu item triggers (i.e. submenu-trigger-for === submenu-id).
98
+ const childEl = document.querySelector(`ic-popover-menu[submenu-id=${target.submenuTriggerFor}]`);
99
+ // Set the parent popover menu of the submenu and open the submenu
100
+ childEl.parentPopover = this.host;
101
+ childEl.anchor = this.anchor;
102
+ childEl.ariaLabel = this.host.getAttribute("aria-label");
103
+ childEl.openFromParent();
104
+ childEl.submenuLevel = this.submenuLevel + 1;
105
+ // Set the label in the submenu using the label of the menu item that has emitted the event
106
+ childEl.parentLabel = target.label;
107
+ }
108
+ watchOpenHandler() {
109
+ if (this.open) {
110
+ if (this.parentPopover !== undefined &&
111
+ !this.popoverMenuEls.some((menuItem) => menuItem.id)) {
112
+ this.popoverMenuEls.unshift(this.backButton);
113
+ }
114
+ this.currentFocus = this.submenuId !== undefined ? 1 : 0;
115
+ // Needed so that anchorEl isn't always focused
116
+ setTimeout(this.setButtonFocus, 50);
117
+ }
118
+ }
119
+ handleClick(ev) {
120
+ ev.preventDefault();
121
+ if (this.open && this.isNotPopoverMenuEl(ev)) {
122
+ // If menu is open and the next click on the document is not a popover El, close the popover
123
+ this.closeMenu();
124
+ }
125
+ }
126
+ /**
127
+ * @internal Opens the menu from the child menu.
128
+ */
129
+ async openFromChild() {
130
+ this.open = true;
131
+ this.openingFromChild = true;
132
+ setTimeout(() => (this.openingFromChild = false), 1000);
133
+ }
134
+ /**
135
+ * @internal Opens the menu from the parent menu.
136
+ */
137
+ async openFromParent() {
138
+ this.open = true;
139
+ this.openingFromParent = true;
140
+ setTimeout(() => (this.openingFromParent = false), 1000);
141
+ }
142
+ // Manages the keyboard navigation in the popover menu
143
+ handleKeyDown(ev) {
144
+ switch (ev.key) {
145
+ case "ArrowDown":
146
+ ev.preventDefault();
147
+ this.currentFocus = this.getNextItemToSelect(this.currentFocus, true);
148
+ this.setButtonFocus();
149
+ break;
150
+ case "ArrowUp":
151
+ ev.preventDefault();
152
+ this.currentFocus = this.getNextItemToSelect(this.currentFocus, false);
153
+ this.setButtonFocus();
154
+ break;
155
+ case "Home":
156
+ //Sets home focus as first element, or back button
157
+ this.currentFocus = 0;
158
+ this.setButtonFocus();
159
+ break;
160
+ case "End":
161
+ //Sets end focus as last element
162
+ this.currentFocus = this.popoverMenuEls.length - 1;
163
+ this.setButtonFocus();
164
+ break;
165
+ case "Escape":
166
+ case "Tab":
167
+ this.closeMenu();
168
+ this.host.blur();
169
+ break;
170
+ }
171
+ }
172
+ componentDidRender() {
173
+ if (this.open) {
174
+ createPopper(this.anchorEl, this.host, {
175
+ placement: "bottom-start",
176
+ modifiers: [
177
+ {
178
+ name: "offset",
179
+ options: {
180
+ offset: [0, 4],
181
+ },
182
+ },
183
+ ],
184
+ });
185
+ }
186
+ }
187
+ componentWillRender() {
188
+ this.anchorEl = this.findAnchorEl(this.anchor);
189
+ }
190
+ componentDidLoad() {
191
+ const slotWrapper = this.host.shadowRoot.querySelector("ul.button");
192
+ const popoverMenuElements = getSlotElements(slotWrapper);
193
+ if (popoverMenuElements !== null) {
194
+ this.addMenuItems(popoverMenuElements);
195
+ }
196
+ if (this.submenuId === undefined &&
197
+ this.host.getAttribute("aria-label") === null) {
198
+ console.error(`No aria-label specified for popover menu component - aria-label required`);
199
+ }
200
+ }
201
+ render() {
202
+ return (h(Host, { class: {
203
+ open: this.open,
204
+ } }, h("div", { id: this.parentPopover === undefined
205
+ ? `ic-popover-submenu-${this.submenuId}`
206
+ : "", class: {
207
+ menu: true,
208
+ }, tabindex: open ? "0" : "-1" }, h("div", { class: {
209
+ "opening-from-parent": this.openingFromParent,
210
+ "opening-from-child": this.openingFromChild,
211
+ } }, this.submenuId !== undefined && (h("div", null, h("ic-menu-item", { class: "ic-popover-submenu-back-button", ref: (el) => (this.backButton = el), label: "Back", onClick: this.handleBackButtonClick, id: `ic-popover-submenu-back-button-${this.submenuLevel}` }, h("svg", { slot: "icon", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", class: "submenu-back-icon" }, h("path", { d: "M20 11H7.83L13.42 5.41L12 4L4 12L12 20L13.41 18.59L7.83 13H20V11Z", fill: "currentColor" }))), h("ic-typography", { variant: "subtitle-small", class: "parent-label" }, this.parentLabel))), h("ul", { class: "button", "aria-label": this.getMenuAriaLabel(), role: "menu", "aria-owns": this.submenuId !== undefined
212
+ ? `ic-popover-submenu-back-button-${this.submenuLevel}`
213
+ : false, "aria-controls": this.submenuId !== undefined
214
+ ? `ic-popover-submenu-back-button-${this.submenuLevel}`
215
+ : false }, h("slot", null))))));
216
+ }
217
+ static get is() { return "ic-popover-menu"; }
218
+ static get encapsulation() { return "shadow"; }
219
+ static get delegatesFocus() { return true; }
220
+ static get originalStyleUrls() {
221
+ return {
222
+ "$": ["ic-popover-menu.css"]
223
+ };
224
+ }
225
+ static get styleUrls() {
226
+ return {
227
+ "$": ["ic-popover-menu.css"]
228
+ };
229
+ }
230
+ static get properties() {
231
+ return {
232
+ "anchor": {
233
+ "type": "string",
234
+ "mutable": false,
235
+ "complexType": {
236
+ "original": "string",
237
+ "resolved": "string",
238
+ "references": {}
239
+ },
240
+ "required": false,
241
+ "optional": false,
242
+ "docs": {
243
+ "tags": [],
244
+ "text": "The ID of the element the popover menu will anchor itself to. This is required unless the popover is a submenu."
245
+ },
246
+ "attribute": "anchor",
247
+ "reflect": false
248
+ },
249
+ "submenuId": {
250
+ "type": "string",
251
+ "mutable": false,
252
+ "complexType": {
253
+ "original": "string",
254
+ "resolved": "string",
255
+ "references": {}
256
+ },
257
+ "required": false,
258
+ "optional": true,
259
+ "docs": {
260
+ "tags": [],
261
+ "text": "The unique identifier for a popover submenu."
262
+ },
263
+ "attribute": "submenu-id",
264
+ "reflect": false
265
+ },
266
+ "open": {
267
+ "type": "boolean",
268
+ "mutable": true,
269
+ "complexType": {
270
+ "original": "boolean",
271
+ "resolved": "boolean",
272
+ "references": {}
273
+ },
274
+ "required": false,
275
+ "optional": false,
276
+ "docs": {
277
+ "tags": [],
278
+ "text": "If `true`, the popover menu will be displayed."
279
+ },
280
+ "attribute": "open",
281
+ "reflect": true,
282
+ "defaultValue": "undefined"
283
+ },
284
+ "parentPopover": {
285
+ "type": "unknown",
286
+ "mutable": false,
287
+ "complexType": {
288
+ "original": "HTMLIcPopoverMenuElement",
289
+ "resolved": "HTMLIcPopoverMenuElement",
290
+ "references": {
291
+ "HTMLIcPopoverMenuElement": {
292
+ "location": "global"
293
+ }
294
+ }
295
+ },
296
+ "required": false,
297
+ "optional": true,
298
+ "docs": {
299
+ "tags": [{
300
+ "name": "internal",
301
+ "text": "The parent popover menu of a child popover menu."
302
+ }],
303
+ "text": ""
304
+ }
305
+ },
306
+ "submenuLevel": {
307
+ "type": "number",
308
+ "mutable": false,
309
+ "complexType": {
310
+ "original": "number",
311
+ "resolved": "number",
312
+ "references": {}
313
+ },
314
+ "required": false,
315
+ "optional": false,
316
+ "docs": {
317
+ "tags": [{
318
+ "name": "internal",
319
+ "text": "The level of menu being displayed."
320
+ }],
321
+ "text": ""
322
+ },
323
+ "attribute": "submenu-level",
324
+ "reflect": false,
325
+ "defaultValue": "1"
326
+ },
327
+ "parentLabel": {
328
+ "type": "string",
329
+ "mutable": false,
330
+ "complexType": {
331
+ "original": "string",
332
+ "resolved": "string",
333
+ "references": {}
334
+ },
335
+ "required": false,
336
+ "optional": true,
337
+ "docs": {
338
+ "tags": [{
339
+ "name": "internal",
340
+ "text": "The parent popover menu of a child popover menu."
341
+ }],
342
+ "text": ""
343
+ },
344
+ "attribute": "parent-label",
345
+ "reflect": false
346
+ }
347
+ };
348
+ }
349
+ static get states() {
350
+ return {
351
+ "openingFromChild": {},
352
+ "openingFromParent": {}
353
+ };
354
+ }
355
+ static get methods() {
356
+ return {
357
+ "openFromChild": {
358
+ "complexType": {
359
+ "signature": "() => Promise<void>",
360
+ "parameters": [],
361
+ "references": {
362
+ "Promise": {
363
+ "location": "global"
364
+ }
365
+ },
366
+ "return": "Promise<void>"
367
+ },
368
+ "docs": {
369
+ "text": "",
370
+ "tags": [{
371
+ "name": "internal",
372
+ "text": "Opens the menu from the child menu."
373
+ }]
374
+ }
375
+ },
376
+ "openFromParent": {
377
+ "complexType": {
378
+ "signature": "() => Promise<void>",
379
+ "parameters": [],
380
+ "references": {
381
+ "Promise": {
382
+ "location": "global"
383
+ }
384
+ },
385
+ "return": "Promise<void>"
386
+ },
387
+ "docs": {
388
+ "text": "",
389
+ "tags": [{
390
+ "name": "internal",
391
+ "text": "Opens the menu from the parent menu."
392
+ }]
393
+ }
394
+ }
395
+ };
396
+ }
397
+ static get elementRef() { return "host"; }
398
+ static get watchers() {
399
+ return [{
400
+ "propName": "open",
401
+ "methodName": "watchOpenHandler"
402
+ }];
403
+ }
404
+ static get listeners() {
405
+ return [{
406
+ "name": "handleMenuItemClick",
407
+ "method": "handleMenuItemClick",
408
+ "target": undefined,
409
+ "capture": false,
410
+ "passive": false
411
+ }, {
412
+ "name": "triggerPopoverMenuInstance",
413
+ "method": "handleSubmenuChange",
414
+ "target": undefined,
415
+ "capture": true,
416
+ "passive": false
417
+ }, {
418
+ "name": "click",
419
+ "method": "handleClick",
420
+ "target": "document",
421
+ "capture": false,
422
+ "passive": false
423
+ }, {
424
+ "name": "keydown",
425
+ "method": "handleKeyDown",
426
+ "target": "document",
427
+ "capture": false,
428
+ "passive": false
429
+ }];
430
+ }
431
+ }
432
+ //# sourceMappingURL=ic-popover-menu.js.map
@@ -0,0 +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 this.closeMenu();\n this.host.blur();\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\n class={{\n open: this.open,\n }}\n >\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,13 @@
1
+ import { fixture } from "@open-wc/testing-helpers";
2
+ import { axe } from "jest-axe";
3
+ import { checkShadowElementRendersCorrectly } from "../../utils/testa11y.helpers";
4
+ describe("ic-popover-menu", () => {
5
+ it("passes accessibility", async () => {
6
+ const el = await fixture(`
7
+ <ic-button id="buttonEl">Button El</ic-button>
8
+ <ic-popover-menu anchor="#buttonEl" aria-label="Popover menu"></ic-popover-menu>`);
9
+ checkShadowElementRendersCorrectly(el);
10
+ expect(await axe(el)).toHaveNoViolations();
11
+ });
12
+ });
13
+ //# sourceMappingURL=ic-popover-menu.test.a11y.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ic-popover-menu.test.a11y.js","sourceRoot":"","sources":["../../../src/components/ic-popover-menu/ic-popover-menu.test.a11y.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,kCAAkC,EAAE,MAAM,8BAA8B,CAAC;AAElF,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;EAC/B,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;IACpC,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC;;qFAEwD,CAAC,CAAC;IACnF,kCAAkC,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC;EAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { fixture } from \"@open-wc/testing-helpers\";\nimport { axe } from \"jest-axe\";\nimport { checkShadowElementRendersCorrectly } from \"../../utils/testa11y.helpers\";\n\ndescribe(\"ic-popover-menu\", () => {\n it(\"passes accessibility\", async () => {\n const el = await fixture(`\n <ic-button id=\"buttonEl\">Button El</ic-button>\n <ic-popover-menu anchor=\"#buttonEl\" aria-label=\"Popover menu\"></ic-popover-menu>`);\n checkShadowElementRendersCorrectly(el);\n expect(await axe(el)).toHaveNoViolations();\n });\n});\n"]}
@@ -309,7 +309,9 @@ export class SearchBar {
309
309
  }
310
310
  }
311
311
  onComponentRequiredPropUndefined([{ prop: this.label, propName: "label" }], "Search Bar");
312
- this.anchorEl = this.inputEl.shadowRoot.querySelector("ic-input-component-container");
312
+ if (this.inputEl !== undefined) {
313
+ this.anchorEl = this.inputEl.shadowRoot.querySelector("ic-input-component-container");
314
+ }
313
315
  }
314
316
  disconnectedCallback() {
315
317
  if (this.assistiveHintEl) {