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

Sign up to get free protection for your applications and to get access to all the features.
Files changed (584) 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 +2 -2
  7. package/dist/cjs/ic-alert.cjs.entry.js.map +1 -1
  8. package/dist/cjs/ic-back-to-top.cjs.entry.js +2 -2
  9. package/dist/cjs/ic-back-to-top.cjs.entry.js.map +1 -1
  10. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js +1 -1
  11. package/dist/cjs/ic-breadcrumb.cjs.entry.js +4 -4
  12. package/dist/cjs/ic-breadcrumb.cjs.entry.js.map +1 -1
  13. package/dist/cjs/ic-button_3.cjs.entry.js +38 -10
  14. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  15. package/dist/cjs/ic-card.cjs.entry.js +5 -5
  16. package/dist/cjs/ic-card.cjs.entry.js.map +1 -1
  17. package/dist/cjs/ic-checkbox-group.cjs.entry.js +3 -3
  18. package/dist/cjs/ic-checkbox-group.cjs.entry.js.map +1 -1
  19. package/dist/cjs/ic-checkbox.cjs.entry.js +4 -3
  20. package/dist/cjs/ic-checkbox.cjs.entry.js.map +1 -1
  21. package/dist/cjs/ic-chip.cjs.entry.js +2 -2
  22. package/dist/cjs/ic-chip.cjs.entry.js.map +1 -1
  23. package/dist/cjs/ic-data-entity.cjs.entry.js +1 -1
  24. package/dist/cjs/ic-data-entity.cjs.entry.js.map +1 -1
  25. package/dist/cjs/ic-data-row.cjs.entry.js +2 -2
  26. package/dist/cjs/ic-data-row.cjs.entry.js.map +1 -1
  27. package/dist/cjs/ic-divider.cjs.entry.js +2 -2
  28. package/dist/cjs/ic-divider.cjs.entry.js.map +1 -1
  29. package/dist/cjs/ic-footer-link-group.cjs.entry.js +1 -1
  30. package/dist/cjs/ic-footer-link.cjs.entry.js +2 -2
  31. package/dist/cjs/ic-footer-link.cjs.entry.js.map +1 -1
  32. package/dist/cjs/ic-footer.cjs.entry.js +1 -1
  33. package/dist/cjs/ic-hero.cjs.entry.js +4 -2
  34. package/dist/cjs/ic-hero.cjs.entry.js.map +1 -1
  35. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +10 -4
  36. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js.map +1 -1
  37. package/dist/cjs/ic-input-component-container_3.cjs.entry.js +14 -8
  38. package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +1 -1
  39. package/dist/cjs/ic-input-label_2.cjs.entry.js +1 -1
  40. package/dist/cjs/ic-link.cjs.entry.js +3 -3
  41. package/dist/cjs/ic-link.cjs.entry.js.map +1 -1
  42. package/dist/cjs/ic-menu-group.cjs.entry.js +24 -0
  43. package/dist/cjs/ic-menu-group.cjs.entry.js.map +1 -0
  44. package/dist/cjs/ic-menu-item.cjs.entry.js +120 -0
  45. package/dist/cjs/ic-menu-item.cjs.entry.js.map +1 -0
  46. package/dist/cjs/ic-navigation-button.cjs.entry.js +2 -2
  47. package/dist/cjs/ic-navigation-button.cjs.entry.js.map +1 -1
  48. package/dist/cjs/ic-navigation-group.cjs.entry.js +4 -4
  49. package/dist/cjs/ic-navigation-group.cjs.entry.js.map +1 -1
  50. package/dist/cjs/ic-navigation-item.cjs.entry.js +5 -4
  51. package/dist/cjs/ic-navigation-item.cjs.entry.js.map +1 -1
  52. package/dist/cjs/ic-navigation-menu.cjs.entry.js +2 -2
  53. package/dist/cjs/ic-navigation-menu.cjs.entry.js.map +1 -1
  54. package/dist/cjs/ic-page-header.cjs.entry.js +2 -2
  55. package/dist/cjs/ic-page-header.cjs.entry.js.map +1 -1
  56. package/dist/cjs/ic-popover-menu.cjs.entry.js +237 -0
  57. package/dist/cjs/ic-popover-menu.cjs.entry.js.map +1 -0
  58. package/dist/cjs/ic-radio-group.cjs.entry.js +3 -3
  59. package/dist/cjs/ic-radio-group.cjs.entry.js.map +1 -1
  60. package/dist/cjs/ic-radio-option.cjs.entry.js +3 -3
  61. package/dist/cjs/ic-radio-option.cjs.entry.js.map +1 -1
  62. package/dist/cjs/ic-search-bar.cjs.entry.js +5 -3
  63. package/dist/cjs/ic-search-bar.cjs.entry.js.map +1 -1
  64. package/dist/cjs/ic-select.cjs.entry.js +16 -23
  65. package/dist/cjs/ic-select.cjs.entry.js.map +1 -1
  66. package/dist/cjs/ic-side-navigation.cjs.entry.js +5 -5
  67. package/dist/cjs/ic-side-navigation.cjs.entry.js.map +1 -1
  68. package/dist/cjs/ic-status-tag.cjs.entry.js +2 -2
  69. package/dist/cjs/ic-status-tag.cjs.entry.js.map +1 -1
  70. package/dist/cjs/ic-step.cjs.entry.js +1 -1
  71. package/dist/cjs/ic-step.cjs.entry.js.map +1 -1
  72. package/dist/cjs/ic-stepper.cjs.entry.js +1 -1
  73. package/dist/cjs/ic-switch.cjs.entry.js +2 -2
  74. package/dist/cjs/ic-switch.cjs.entry.js.map +1 -1
  75. package/dist/cjs/ic-tab-context.cjs.entry.js +41 -4
  76. package/dist/cjs/ic-tab-context.cjs.entry.js.map +1 -1
  77. package/dist/cjs/ic-tab-group.cjs.entry.js +3 -2
  78. package/dist/cjs/ic-tab-group.cjs.entry.js.map +1 -1
  79. package/dist/cjs/ic-tab-panel.cjs.entry.js +10 -1
  80. package/dist/cjs/ic-tab-panel.cjs.entry.js.map +1 -1
  81. package/dist/cjs/ic-tab.cjs.entry.js +13 -1
  82. package/dist/cjs/ic-tab.cjs.entry.js.map +1 -1
  83. package/dist/cjs/ic-text-field.cjs.entry.js +37 -9
  84. package/dist/cjs/ic-text-field.cjs.entry.js.map +1 -1
  85. package/dist/cjs/ic-theme.cjs.entry.js +1 -1
  86. package/dist/cjs/ic-toast.cjs.entry.js +6 -2
  87. package/dist/cjs/ic-toast.cjs.entry.js.map +1 -1
  88. package/dist/cjs/ic-top-navigation.cjs.entry.js +6 -2
  89. package/dist/cjs/ic-top-navigation.cjs.entry.js.map +1 -1
  90. package/dist/cjs/ic-typography.cjs.entry.js +1 -1
  91. package/dist/cjs/ic-typography.cjs.entry.js.map +1 -1
  92. package/dist/cjs/index-f79a4e53.js +12 -0
  93. package/dist/cjs/loader.cjs.js +1 -1
  94. package/dist/cjs/types-3eb02246.js.map +1 -1
  95. package/dist/collection/collection-manifest.json +3 -0
  96. package/dist/collection/components/ic-alert/ic-alert.css +1 -1
  97. package/dist/collection/components/ic-back-to-top/ic-back-to-top.css +3 -3
  98. package/dist/collection/components/ic-breadcrumb/ic-breadcrumb.css +19 -4
  99. package/dist/collection/components/ic-button/ic-button.css +1 -1
  100. package/dist/collection/components/ic-button/ic-button.js +120 -2
  101. package/dist/collection/components/ic-button/ic-button.js.map +1 -1
  102. package/dist/collection/components/ic-card/ic-card.css +30 -9
  103. package/dist/collection/components/ic-card/ic-card.js +2 -2
  104. package/dist/collection/components/ic-card/ic-card.js.map +1 -1
  105. package/dist/collection/components/ic-checkbox/ic-checkbox.css +7 -7
  106. package/dist/collection/components/ic-checkbox/ic-checkbox.js +20 -1
  107. package/dist/collection/components/ic-checkbox/ic-checkbox.js.map +1 -1
  108. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.css +3 -3
  109. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js +1 -1
  110. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js.map +1 -1
  111. package/dist/collection/components/ic-chip/ic-chip.css +11 -10
  112. package/dist/collection/components/ic-data-entity/ic-data-entity.css +1 -1
  113. package/dist/collection/components/ic-data-row/ic-data-row.css +1 -1
  114. package/dist/collection/components/ic-divider/ic-divider.css +1 -1
  115. package/dist/collection/components/ic-footer-link/ic-footer-link.css +16 -3
  116. package/dist/collection/components/ic-hero/ic-hero.css +23 -22
  117. package/dist/collection/components/ic-hero/ic-hero.js +2 -0
  118. package/dist/collection/components/ic-hero/ic-hero.js.map +1 -1
  119. package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.css +4 -8
  120. package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.js +8 -2
  121. package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.js.map +1 -1
  122. package/dist/collection/components/ic-input-component-container/ic-input-component-container.css +6 -5
  123. package/dist/collection/components/ic-link/ic-link.css +16 -3
  124. package/dist/collection/components/ic-link/ic-link.js +6 -3
  125. package/dist/collection/components/ic-link/ic-link.js.map +1 -1
  126. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.css +4 -4
  127. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.js +11 -3
  128. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.js.map +1 -1
  129. package/dist/collection/components/ic-menu/ic-menu.css +9 -9
  130. package/dist/collection/components/ic-menu/ic-menu.js +12 -6
  131. package/dist/collection/components/ic-menu/ic-menu.js.map +1 -1
  132. package/dist/collection/components/ic-menu-group/ic-menu-group.css +465 -0
  133. package/dist/collection/components/ic-menu-group/ic-menu-group.js +45 -0
  134. package/dist/collection/components/ic-menu-group/ic-menu-group.js.map +1 -0
  135. package/dist/collection/components/ic-menu-item/ic-menu-item.css +633 -0
  136. package/dist/collection/components/ic-menu-item/ic-menu-item.js +392 -0
  137. package/dist/collection/components/ic-menu-item/ic-menu-item.js.map +1 -0
  138. package/dist/collection/components/ic-menu-item/ic-menu-item.types.js +2 -0
  139. package/dist/collection/components/ic-menu-item/ic-menu-item.types.js.map +1 -0
  140. package/dist/collection/components/ic-navigation-button/ic-navigation-button.css +4 -0
  141. package/dist/collection/components/ic-navigation-group/ic-navigation-group.css +2 -2
  142. package/dist/collection/components/ic-navigation-item/ic-navigation-item.css +2 -2
  143. package/dist/collection/components/ic-navigation-item/ic-navigation-item.js +1 -0
  144. package/dist/collection/components/ic-navigation-item/ic-navigation-item.js.map +1 -1
  145. package/dist/collection/components/ic-navigation-menu/ic-navigation-menu.css +18 -14
  146. package/dist/collection/components/ic-page-header/ic-page-header.css +1 -1
  147. package/dist/collection/components/ic-popover-menu/ic-popover-menu.css +535 -0
  148. package/dist/collection/components/ic-popover-menu/ic-popover-menu.js +433 -0
  149. package/dist/collection/components/ic-popover-menu/ic-popover-menu.js.map +1 -0
  150. package/dist/collection/components/ic-popover-menu/ic-popover-menu.test.a11y.js +13 -0
  151. package/dist/collection/components/ic-popover-menu/ic-popover-menu.test.a11y.js.map +1 -0
  152. package/dist/collection/components/ic-radio-group/ic-radio-group.css +4 -4
  153. package/dist/collection/components/ic-radio-group/ic-radio-group.js +1 -1
  154. package/dist/collection/components/ic-radio-group/ic-radio-group.js.map +1 -1
  155. package/dist/collection/components/ic-radio-option/ic-radio-option.css +6 -6
  156. package/dist/collection/components/ic-radio-option/ic-radio-option.js +1 -1
  157. package/dist/collection/components/ic-radio-option/ic-radio-option.js.map +1 -1
  158. package/dist/collection/components/ic-search-bar/ic-search-bar.css +6 -6
  159. package/dist/collection/components/ic-search-bar/ic-search-bar.js +3 -1
  160. package/dist/collection/components/ic-search-bar/ic-search-bar.js.map +1 -1
  161. package/dist/collection/components/ic-select/ic-select.css +17 -17
  162. package/dist/collection/components/ic-select/ic-select.js +19 -23
  163. package/dist/collection/components/ic-select/ic-select.js.map +1 -1
  164. package/dist/collection/components/ic-side-navigation/ic-side-navigation-test-examples.js +90 -0
  165. package/dist/collection/components/ic-side-navigation/ic-side-navigation-test-examples.js.map +1 -1
  166. package/dist/collection/components/ic-side-navigation/ic-side-navigation.css +7 -4
  167. package/dist/collection/components/ic-side-navigation/ic-side-navigation.js +1 -1
  168. package/dist/collection/components/ic-side-navigation/ic-side-navigation.js.map +1 -1
  169. package/dist/collection/components/ic-status-tag/ic-status-tag.css +8 -7
  170. package/dist/collection/components/ic-step/ic-step.css +1 -1
  171. package/dist/collection/components/ic-switch/ic-switch.css +4 -4
  172. package/dist/collection/components/ic-tab/ic-tab.css +4 -4
  173. package/dist/collection/components/ic-tab/ic-tab.js +50 -0
  174. package/dist/collection/components/ic-tab/ic-tab.js.map +1 -1
  175. package/dist/collection/components/ic-tab-context/ic-tab-context.js +79 -4
  176. package/dist/collection/components/ic-tab-context/ic-tab-context.js.map +1 -1
  177. package/dist/collection/components/ic-tab-group/ic-tab-group.css +1 -1
  178. package/dist/collection/components/ic-tab-group/ic-tab-group.js +6 -2
  179. package/dist/collection/components/ic-tab-group/ic-tab-group.js.map +1 -1
  180. package/dist/collection/components/ic-tab-panel/ic-tab-panel.css +0 -4
  181. package/dist/collection/components/ic-tab-panel/ic-tab-panel.js +56 -3
  182. package/dist/collection/components/ic-tab-panel/ic-tab-panel.js.map +1 -1
  183. package/dist/collection/components/ic-text-field/ic-text-field.css +2 -3
  184. package/dist/collection/components/ic-text-field/ic-text-field.js +73 -7
  185. package/dist/collection/components/ic-text-field/ic-text-field.js.map +1 -1
  186. package/dist/collection/components/ic-toast/ic-toast.css +5 -0
  187. package/dist/collection/components/ic-toast/ic-toast.js +7 -3
  188. package/dist/collection/components/ic-toast/ic-toast.js.map +1 -1
  189. package/dist/collection/components/ic-tooltip/ic-tooltip.js +6 -2
  190. package/dist/collection/components/ic-tooltip/ic-tooltip.js.map +1 -1
  191. package/dist/collection/components/ic-top-navigation/ic-top-navigation.css +12 -15
  192. package/dist/collection/components/ic-top-navigation/ic-top-navigation.js +4 -0
  193. package/dist/collection/components/ic-top-navigation/ic-top-navigation.js.map +1 -1
  194. package/dist/collection/components/ic-typography/ic-typography.css +19 -1
  195. package/dist/collection/components/ic-typography/ic-typography.js +1 -1
  196. package/dist/collection/utils/helpers.js +1 -1
  197. package/dist/collection/utils/helpers.js.map +1 -1
  198. package/dist/collection/utils/types.js.map +1 -1
  199. package/dist/components/helpers.js +2 -2
  200. package/dist/components/helpers.js.map +1 -1
  201. package/dist/components/ic-alert.js +1 -1
  202. package/dist/components/ic-alert.js.map +1 -1
  203. package/dist/components/ic-back-to-top.js +1 -1
  204. package/dist/components/ic-back-to-top.js.map +1 -1
  205. package/dist/components/ic-breadcrumb2.js +1 -1
  206. package/dist/components/ic-breadcrumb2.js.map +1 -1
  207. package/dist/components/ic-button2.js +25 -3
  208. package/dist/components/ic-button2.js.map +1 -1
  209. package/dist/components/ic-card.js +3 -3
  210. package/dist/components/ic-card.js.map +1 -1
  211. package/dist/components/ic-checkbox-group.js +2 -2
  212. package/dist/components/ic-checkbox-group.js.map +1 -1
  213. package/dist/components/ic-checkbox.js +4 -2
  214. package/dist/components/ic-checkbox.js.map +1 -1
  215. package/dist/components/ic-chip.js +1 -1
  216. package/dist/components/ic-chip.js.map +1 -1
  217. package/dist/components/ic-data-entity.js +1 -1
  218. package/dist/components/ic-data-entity.js.map +1 -1
  219. package/dist/components/ic-data-row.js +1 -1
  220. package/dist/components/ic-data-row.js.map +1 -1
  221. package/dist/components/ic-divider2.js +1 -1
  222. package/dist/components/ic-divider2.js.map +1 -1
  223. package/dist/components/ic-footer-link.js +1 -1
  224. package/dist/components/ic-footer-link.js.map +1 -1
  225. package/dist/components/ic-hero.js +3 -1
  226. package/dist/components/ic-hero.js.map +1 -1
  227. package/dist/components/ic-horizontal-scroll2.js +10 -4
  228. package/dist/components/ic-horizontal-scroll2.js.map +1 -1
  229. package/dist/components/ic-input-component-container2.js +1 -1
  230. package/dist/components/ic-input-component-container2.js.map +1 -1
  231. package/dist/components/ic-link2.js +2 -2
  232. package/dist/components/ic-link2.js.map +1 -1
  233. package/dist/components/ic-loading-indicator2.js +12 -4
  234. package/dist/components/ic-loading-indicator2.js.map +1 -1
  235. package/dist/components/ic-menu-group.d.ts +11 -0
  236. package/dist/components/ic-menu-group.js +46 -0
  237. package/dist/components/ic-menu-group.js.map +1 -0
  238. package/dist/components/ic-menu-item.d.ts +11 -0
  239. package/dist/components/ic-menu-item.js +8 -0
  240. package/dist/components/ic-menu-item.js.map +1 -0
  241. package/dist/components/ic-menu-item2.js +167 -0
  242. package/dist/components/ic-menu-item2.js.map +1 -0
  243. package/dist/components/ic-menu2.js +13 -8
  244. package/dist/components/ic-menu2.js.map +1 -1
  245. package/dist/components/ic-navigation-button.js +1 -1
  246. package/dist/components/ic-navigation-button.js.map +1 -1
  247. package/dist/components/ic-navigation-group.js +1 -1
  248. package/dist/components/ic-navigation-group.js.map +1 -1
  249. package/dist/components/ic-navigation-item.js +2 -1
  250. package/dist/components/ic-navigation-item.js.map +1 -1
  251. package/dist/components/ic-navigation-menu2.js +2 -2
  252. package/dist/components/ic-navigation-menu2.js.map +1 -1
  253. package/dist/components/ic-page-header.js +1 -1
  254. package/dist/components/ic-page-header.js.map +1 -1
  255. package/dist/components/ic-popover-menu.d.ts +11 -0
  256. package/dist/components/ic-popover-menu.js +291 -0
  257. package/dist/components/ic-popover-menu.js.map +1 -0
  258. package/dist/components/ic-radio-group.js +2 -2
  259. package/dist/components/ic-radio-group.js.map +1 -1
  260. package/dist/components/ic-radio-option.js +3 -3
  261. package/dist/components/ic-radio-option.js.map +1 -1
  262. package/dist/components/ic-search-bar.js +5 -3
  263. package/dist/components/ic-search-bar.js.map +1 -1
  264. package/dist/components/ic-select.js +16 -23
  265. package/dist/components/ic-select.js.map +1 -1
  266. package/dist/components/ic-side-navigation.js +3 -3
  267. package/dist/components/ic-side-navigation.js.map +1 -1
  268. package/dist/components/ic-status-tag.js +1 -1
  269. package/dist/components/ic-status-tag.js.map +1 -1
  270. package/dist/components/ic-step.js +1 -1
  271. package/dist/components/ic-step.js.map +1 -1
  272. package/dist/components/ic-stepper.js +1 -1
  273. package/dist/components/ic-switch.js +1 -1
  274. package/dist/components/ic-switch.js.map +1 -1
  275. package/dist/components/ic-tab-context.js +44 -6
  276. package/dist/components/ic-tab-context.js.map +1 -1
  277. package/dist/components/ic-tab-group.js +2 -1
  278. package/dist/components/ic-tab-group.js.map +1 -1
  279. package/dist/components/ic-tab-panel.js +11 -2
  280. package/dist/components/ic-tab-panel.js.map +1 -1
  281. package/dist/components/ic-tab.js +13 -1
  282. package/dist/components/ic-tab.js.map +1 -1
  283. package/dist/components/ic-text-field2.js +41 -9
  284. package/dist/components/ic-text-field2.js.map +1 -1
  285. package/dist/components/ic-theme.js +1 -1
  286. package/dist/components/ic-toast.js +9 -5
  287. package/dist/components/ic-toast.js.map +1 -1
  288. package/dist/components/ic-tooltip2.js +6 -2
  289. package/dist/components/ic-tooltip2.js.map +1 -1
  290. package/dist/components/ic-top-navigation.js +6 -2
  291. package/dist/components/ic-top-navigation.js.map +1 -1
  292. package/dist/components/ic-typography2.js +1 -1
  293. package/dist/components/ic-typography2.js.map +1 -1
  294. package/dist/components/index.d.ts +3 -0
  295. package/dist/components/index.js +3 -0
  296. package/dist/components/index.js.map +1 -1
  297. package/dist/components/types.js.map +1 -1
  298. package/dist/core/core.css +8 -3
  299. package/dist/core/core.esm.js +1 -1
  300. package/dist/core/core.esm.js.map +1 -1
  301. package/dist/core/{p-24240e11.js → p-06321d19.js} +2 -2
  302. package/dist/core/p-08535d97.entry.js +2 -0
  303. package/dist/core/p-08535d97.entry.js.map +1 -0
  304. package/dist/core/{p-284970bc.entry.js → p-0a463a65.entry.js} +2 -2
  305. package/dist/core/p-0d4ccf6a.entry.js +2 -0
  306. package/dist/core/p-0d4ccf6a.entry.js.map +1 -0
  307. package/dist/core/{p-3dda76db.entry.js → p-0f0dfa16.entry.js} +2 -2
  308. package/dist/core/p-0f0dfa16.entry.js.map +1 -0
  309. package/dist/core/p-186ecccd.entry.js +2 -0
  310. package/dist/core/p-186ecccd.entry.js.map +1 -0
  311. package/dist/core/{p-c9068822.entry.js → p-1bd4d07e.entry.js} +2 -2
  312. package/dist/core/p-1bd4d07e.entry.js.map +1 -0
  313. package/dist/core/{p-7fd50355.entry.js → p-1e0174dc.entry.js} +2 -2
  314. package/dist/core/p-1e0174dc.entry.js.map +1 -0
  315. package/dist/core/p-28b2158b.entry.js +2 -0
  316. package/dist/core/p-28b2158b.entry.js.map +1 -0
  317. package/dist/core/p-3453aa9c.entry.js +2 -0
  318. package/dist/core/p-3453aa9c.entry.js.map +1 -0
  319. package/dist/core/p-3d84a743.entry.js +2 -0
  320. package/dist/core/p-3d84a743.entry.js.map +1 -0
  321. package/dist/core/{p-1724000c.js → p-3dea2867.js} +2 -2
  322. package/dist/core/p-3dea2867.js.map +1 -0
  323. package/dist/core/{p-35a03442.entry.js → p-41459307.entry.js} +2 -2
  324. package/dist/core/p-41459307.entry.js.map +1 -0
  325. package/dist/core/p-4269584a.entry.js +2 -0
  326. package/dist/core/p-4269584a.entry.js.map +1 -0
  327. package/dist/core/p-4d8392fe.entry.js +2 -0
  328. package/dist/core/p-4d8392fe.entry.js.map +1 -0
  329. package/dist/core/p-58ff516f.entry.js +2 -0
  330. package/dist/core/p-58ff516f.entry.js.map +1 -0
  331. package/dist/core/p-65b94ddb.entry.js +2 -0
  332. package/dist/core/p-65b94ddb.entry.js.map +1 -0
  333. package/dist/core/p-68c84039.entry.js +2 -0
  334. package/dist/core/p-68c84039.entry.js.map +1 -0
  335. package/dist/core/p-6c9ce0ec.entry.js +2 -0
  336. package/dist/core/p-6c9ce0ec.entry.js.map +1 -0
  337. package/dist/core/p-6e1f5022.entry.js +2 -0
  338. package/dist/core/p-6e1f5022.entry.js.map +1 -0
  339. package/dist/core/p-6f57b13c.js.map +1 -1
  340. package/dist/core/{p-7a9bc7f2.entry.js → p-741b4ea3.entry.js} +2 -2
  341. package/dist/core/{p-ed6cf9b9.entry.js → p-74a768bc.entry.js} +2 -2
  342. package/dist/core/p-74a768bc.entry.js.map +1 -0
  343. package/dist/core/p-759c80a3.entry.js +2 -0
  344. package/dist/core/p-759c80a3.entry.js.map +1 -0
  345. package/dist/core/p-7c2b09c8.entry.js +2 -0
  346. package/dist/core/p-7c2b09c8.entry.js.map +1 -0
  347. package/dist/core/{p-41e239cb.entry.js → p-7e309c50.entry.js} +2 -2
  348. package/dist/core/p-7e309c50.entry.js.map +1 -0
  349. package/dist/core/p-8959dd7d.entry.js +2 -0
  350. package/dist/core/p-8959dd7d.entry.js.map +1 -0
  351. package/dist/core/{p-c4a7c734.entry.js → p-8c9cc4d5.entry.js} +2 -2
  352. package/dist/core/p-90d6dbd6.entry.js +2 -0
  353. package/dist/core/p-90d6dbd6.entry.js.map +1 -0
  354. package/dist/core/{p-ba8d6c23.entry.js → p-977af213.entry.js} +2 -2
  355. package/dist/core/p-977af213.entry.js.map +1 -0
  356. package/dist/core/p-9daae2ae.entry.js +2 -0
  357. package/dist/core/p-9daae2ae.entry.js.map +1 -0
  358. package/dist/core/p-9e578e82.entry.js +2 -0
  359. package/dist/core/p-9e578e82.entry.js.map +1 -0
  360. package/dist/core/p-a8e969ea.entry.js +2 -0
  361. package/dist/core/p-a8e969ea.entry.js.map +1 -0
  362. package/dist/core/p-b5b03f86.entry.js +2 -0
  363. package/dist/core/p-b5b03f86.entry.js.map +1 -0
  364. package/dist/core/{p-b35ae170.entry.js → p-b7fc1f35.entry.js} +2 -2
  365. package/dist/core/p-bb505d2a.entry.js +2 -0
  366. package/dist/core/p-bb505d2a.entry.js.map +1 -0
  367. package/dist/core/{p-6a397882.entry.js → p-cc62d065.entry.js} +2 -2
  368. package/dist/core/p-cc62d065.entry.js.map +1 -0
  369. package/dist/core/p-ce96a494.entry.js +2 -0
  370. package/dist/core/p-ce96a494.entry.js.map +1 -0
  371. package/dist/core/{p-eba373bf.entry.js → p-d27dbb63.entry.js} +2 -2
  372. package/dist/core/p-d27dbb63.entry.js.map +1 -0
  373. package/dist/core/p-dc4ba6a0.entry.js +2 -0
  374. package/dist/core/p-dc4ba6a0.entry.js.map +1 -0
  375. package/dist/core/{p-691ea0f2.entry.js → p-dd71a986.entry.js} +2 -2
  376. package/dist/core/p-deada16f.entry.js +2 -0
  377. package/dist/core/p-deada16f.entry.js.map +1 -0
  378. package/dist/core/p-e17eea34.entry.js +2 -0
  379. package/dist/core/p-e17eea34.entry.js.map +1 -0
  380. package/dist/core/p-e4390415.entry.js +2 -0
  381. package/dist/core/p-e4390415.entry.js.map +1 -0
  382. package/dist/core/p-eb7599cc.entry.js +2 -0
  383. package/dist/core/p-eb7599cc.entry.js.map +1 -0
  384. package/dist/core/p-eeefddb5.entry.js +2 -0
  385. package/dist/core/p-eeefddb5.entry.js.map +1 -0
  386. package/dist/core/p-f0244b5a.entry.js +2 -0
  387. package/dist/core/p-f0244b5a.entry.js.map +1 -0
  388. package/dist/core/{p-b4234318.entry.js → p-f777679c.entry.js} +2 -2
  389. package/dist/core/p-ff15c756.entry.js +2 -0
  390. package/dist/core/p-ff15c756.entry.js.map +1 -0
  391. package/dist/esm/chevron-icon-7927f709.js +8 -0
  392. package/dist/esm/chevron-icon-7927f709.js.map +1 -0
  393. package/dist/esm/core.js +1 -1
  394. package/dist/esm/{helpers-c332acf8.js → helpers-b2b47a7d.js} +3 -3
  395. package/dist/esm/helpers-b2b47a7d.js.map +1 -0
  396. package/dist/esm/ic-alert.entry.js +2 -2
  397. package/dist/esm/ic-alert.entry.js.map +1 -1
  398. package/dist/esm/ic-back-to-top.entry.js +2 -2
  399. package/dist/esm/ic-back-to-top.entry.js.map +1 -1
  400. package/dist/esm/ic-breadcrumb-group.entry.js +1 -1
  401. package/dist/esm/ic-breadcrumb.entry.js +4 -4
  402. package/dist/esm/ic-breadcrumb.entry.js.map +1 -1
  403. package/dist/esm/ic-button_3.entry.js +38 -10
  404. package/dist/esm/ic-button_3.entry.js.map +1 -1
  405. package/dist/esm/ic-card.entry.js +5 -5
  406. package/dist/esm/ic-card.entry.js.map +1 -1
  407. package/dist/esm/ic-checkbox-group.entry.js +3 -3
  408. package/dist/esm/ic-checkbox-group.entry.js.map +1 -1
  409. package/dist/esm/ic-checkbox.entry.js +4 -3
  410. package/dist/esm/ic-checkbox.entry.js.map +1 -1
  411. package/dist/esm/ic-chip.entry.js +2 -2
  412. package/dist/esm/ic-chip.entry.js.map +1 -1
  413. package/dist/esm/ic-data-entity.entry.js +1 -1
  414. package/dist/esm/ic-data-entity.entry.js.map +1 -1
  415. package/dist/esm/ic-data-row.entry.js +2 -2
  416. package/dist/esm/ic-data-row.entry.js.map +1 -1
  417. package/dist/esm/ic-divider.entry.js +2 -2
  418. package/dist/esm/ic-divider.entry.js.map +1 -1
  419. package/dist/esm/ic-footer-link-group.entry.js +1 -1
  420. package/dist/esm/ic-footer-link.entry.js +2 -2
  421. package/dist/esm/ic-footer-link.entry.js.map +1 -1
  422. package/dist/esm/ic-footer.entry.js +1 -1
  423. package/dist/esm/ic-hero.entry.js +4 -2
  424. package/dist/esm/ic-hero.entry.js.map +1 -1
  425. package/dist/esm/ic-horizontal-scroll.entry.js +10 -4
  426. package/dist/esm/ic-horizontal-scroll.entry.js.map +1 -1
  427. package/dist/esm/ic-input-component-container_3.entry.js +14 -8
  428. package/dist/esm/ic-input-component-container_3.entry.js.map +1 -1
  429. package/dist/esm/ic-input-label_2.entry.js +1 -1
  430. package/dist/esm/ic-link.entry.js +3 -3
  431. package/dist/esm/ic-link.entry.js.map +1 -1
  432. package/dist/esm/ic-menu-group.entry.js +20 -0
  433. package/dist/esm/ic-menu-group.entry.js.map +1 -0
  434. package/dist/esm/ic-menu-item.entry.js +116 -0
  435. package/dist/esm/ic-menu-item.entry.js.map +1 -0
  436. package/dist/esm/ic-navigation-button.entry.js +2 -2
  437. package/dist/esm/ic-navigation-button.entry.js.map +1 -1
  438. package/dist/esm/ic-navigation-group.entry.js +4 -4
  439. package/dist/esm/ic-navigation-group.entry.js.map +1 -1
  440. package/dist/esm/ic-navigation-item.entry.js +5 -4
  441. package/dist/esm/ic-navigation-item.entry.js.map +1 -1
  442. package/dist/esm/ic-navigation-menu.entry.js +2 -2
  443. package/dist/esm/ic-navigation-menu.entry.js.map +1 -1
  444. package/dist/esm/ic-page-header.entry.js +2 -2
  445. package/dist/esm/ic-page-header.entry.js.map +1 -1
  446. package/dist/esm/ic-popover-menu.entry.js +233 -0
  447. package/dist/esm/ic-popover-menu.entry.js.map +1 -0
  448. package/dist/esm/ic-radio-group.entry.js +3 -3
  449. package/dist/esm/ic-radio-group.entry.js.map +1 -1
  450. package/dist/esm/ic-radio-option.entry.js +3 -3
  451. package/dist/esm/ic-radio-option.entry.js.map +1 -1
  452. package/dist/esm/ic-search-bar.entry.js +5 -3
  453. package/dist/esm/ic-search-bar.entry.js.map +1 -1
  454. package/dist/esm/ic-select.entry.js +16 -23
  455. package/dist/esm/ic-select.entry.js.map +1 -1
  456. package/dist/esm/ic-side-navigation.entry.js +5 -5
  457. package/dist/esm/ic-side-navigation.entry.js.map +1 -1
  458. package/dist/esm/ic-status-tag.entry.js +2 -2
  459. package/dist/esm/ic-status-tag.entry.js.map +1 -1
  460. package/dist/esm/ic-step.entry.js +1 -1
  461. package/dist/esm/ic-step.entry.js.map +1 -1
  462. package/dist/esm/ic-stepper.entry.js +1 -1
  463. package/dist/esm/ic-switch.entry.js +2 -2
  464. package/dist/esm/ic-switch.entry.js.map +1 -1
  465. package/dist/esm/ic-tab-context.entry.js +41 -4
  466. package/dist/esm/ic-tab-context.entry.js.map +1 -1
  467. package/dist/esm/ic-tab-group.entry.js +3 -2
  468. package/dist/esm/ic-tab-group.entry.js.map +1 -1
  469. package/dist/esm/ic-tab-panel.entry.js +11 -2
  470. package/dist/esm/ic-tab-panel.entry.js.map +1 -1
  471. package/dist/esm/ic-tab.entry.js +13 -1
  472. package/dist/esm/ic-tab.entry.js.map +1 -1
  473. package/dist/esm/ic-text-field.entry.js +37 -9
  474. package/dist/esm/ic-text-field.entry.js.map +1 -1
  475. package/dist/esm/ic-theme.entry.js +1 -1
  476. package/dist/esm/ic-toast.entry.js +6 -2
  477. package/dist/esm/ic-toast.entry.js.map +1 -1
  478. package/dist/esm/ic-top-navigation.entry.js +6 -2
  479. package/dist/esm/ic-top-navigation.entry.js.map +1 -1
  480. package/dist/esm/ic-typography.entry.js +1 -1
  481. package/dist/esm/ic-typography.entry.js.map +1 -1
  482. package/dist/esm/index-90721b3c.js +12 -0
  483. package/dist/esm/loader.js +1 -1
  484. package/dist/esm/types-dd515332.js.map +1 -1
  485. package/dist/types/components/ic-button/ic-button.d.ts +24 -0
  486. package/dist/types/components/ic-checkbox/ic-checkbox.d.ts +4 -0
  487. package/dist/types/components/ic-link/ic-link.d.ts +1 -1
  488. package/dist/types/components/ic-loading-indicator/ic-loading-indicator.d.ts +2 -0
  489. package/dist/types/components/ic-menu-group/ic-menu-group.d.ts +8 -0
  490. package/dist/types/components/ic-menu-item/ic-menu-item.d.ts +74 -0
  491. package/dist/types/components/ic-menu-item/ic-menu-item.types.d.ts +1 -0
  492. package/dist/types/components/ic-popover-menu/ic-popover-menu.d.ts +58 -0
  493. package/dist/types/components/ic-popover-menu/ic-popover-menu.test.a11y.d.ts +1 -0
  494. package/dist/types/components/ic-select/ic-select.d.ts +1 -3
  495. package/dist/types/components/ic-side-navigation/ic-side-navigation-test-examples.d.ts +1 -0
  496. package/dist/types/components/ic-tab/ic-tab.d.ts +11 -0
  497. package/dist/types/components/ic-tab-context/ic-tab-context.d.ts +13 -6
  498. package/dist/types/components/ic-tab-group/ic-tab-group.d.ts +2 -1
  499. package/dist/types/components/ic-tab-panel/ic-tab-panel.d.ts +25 -5
  500. package/dist/types/components/ic-text-field/ic-text-field.d.ts +10 -0
  501. package/dist/types/components/ic-toast/ic-toast.d.ts +1 -0
  502. package/dist/types/components.d.ts +254 -8
  503. package/dist/types/utils/types.d.ts +1 -1
  504. package/hydrate/index.js +649 -100
  505. package/package.json +3 -3
  506. package/dist/cjs/chevron-icon-2645d6b0.js +0 -10
  507. package/dist/cjs/chevron-icon-2645d6b0.js.map +0 -1
  508. package/dist/cjs/helpers-6eb26e7a.js.map +0 -1
  509. package/dist/core/p-1724000c.js.map +0 -1
  510. package/dist/core/p-18ae4b6d.entry.js +0 -2
  511. package/dist/core/p-18ae4b6d.entry.js.map +0 -1
  512. package/dist/core/p-18bf3cb0.entry.js +0 -2
  513. package/dist/core/p-18bf3cb0.entry.js.map +0 -1
  514. package/dist/core/p-31a595c1.entry.js +0 -2
  515. package/dist/core/p-31a595c1.entry.js.map +0 -1
  516. package/dist/core/p-35a03442.entry.js.map +0 -1
  517. package/dist/core/p-360adc51.entry.js +0 -2
  518. package/dist/core/p-360adc51.entry.js.map +0 -1
  519. package/dist/core/p-3dda76db.entry.js.map +0 -1
  520. package/dist/core/p-41e239cb.entry.js.map +0 -1
  521. package/dist/core/p-44c9612c.entry.js +0 -2
  522. package/dist/core/p-44c9612c.entry.js.map +0 -1
  523. package/dist/core/p-4a73728b.entry.js +0 -2
  524. package/dist/core/p-4a73728b.entry.js.map +0 -1
  525. package/dist/core/p-521be4e2.entry.js +0 -2
  526. package/dist/core/p-521be4e2.entry.js.map +0 -1
  527. package/dist/core/p-5b083ce5.entry.js +0 -2
  528. package/dist/core/p-5b083ce5.entry.js.map +0 -1
  529. package/dist/core/p-6a397882.entry.js.map +0 -1
  530. package/dist/core/p-7818d958.entry.js +0 -2
  531. package/dist/core/p-7818d958.entry.js.map +0 -1
  532. package/dist/core/p-7a0bf893.entry.js +0 -2
  533. package/dist/core/p-7a0bf893.entry.js.map +0 -1
  534. package/dist/core/p-7fd50355.entry.js.map +0 -1
  535. package/dist/core/p-897e967a.entry.js +0 -2
  536. package/dist/core/p-897e967a.entry.js.map +0 -1
  537. package/dist/core/p-8f1176c6.entry.js +0 -2
  538. package/dist/core/p-8f1176c6.entry.js.map +0 -1
  539. package/dist/core/p-91a8db51.entry.js +0 -2
  540. package/dist/core/p-91a8db51.entry.js.map +0 -1
  541. package/dist/core/p-a09d853e.entry.js +0 -2
  542. package/dist/core/p-a09d853e.entry.js.map +0 -1
  543. package/dist/core/p-a10da430.entry.js +0 -2
  544. package/dist/core/p-a10da430.entry.js.map +0 -1
  545. package/dist/core/p-a667e329.entry.js +0 -2
  546. package/dist/core/p-a667e329.entry.js.map +0 -1
  547. package/dist/core/p-b40bd77c.entry.js +0 -2
  548. package/dist/core/p-b40bd77c.entry.js.map +0 -1
  549. package/dist/core/p-ba8d6c23.entry.js.map +0 -1
  550. package/dist/core/p-bd819f68.entry.js +0 -2
  551. package/dist/core/p-bd819f68.entry.js.map +0 -1
  552. package/dist/core/p-c72e4b75.entry.js +0 -2
  553. package/dist/core/p-c72e4b75.entry.js.map +0 -1
  554. package/dist/core/p-c7b86643.entry.js +0 -2
  555. package/dist/core/p-c7b86643.entry.js.map +0 -1
  556. package/dist/core/p-c7c5d2c5.entry.js +0 -2
  557. package/dist/core/p-c7c5d2c5.entry.js.map +0 -1
  558. package/dist/core/p-c8f07be6.entry.js +0 -2
  559. package/dist/core/p-c8f07be6.entry.js.map +0 -1
  560. package/dist/core/p-c9068822.entry.js.map +0 -1
  561. package/dist/core/p-cccbf2bf.entry.js +0 -2
  562. package/dist/core/p-cccbf2bf.entry.js.map +0 -1
  563. package/dist/core/p-d37b9695.entry.js +0 -2
  564. package/dist/core/p-d37b9695.entry.js.map +0 -1
  565. package/dist/core/p-d86b0d0e.entry.js +0 -2
  566. package/dist/core/p-d86b0d0e.entry.js.map +0 -1
  567. package/dist/core/p-dea3d5f0.entry.js +0 -2
  568. package/dist/core/p-dea3d5f0.entry.js.map +0 -1
  569. package/dist/core/p-e0d88c31.entry.js +0 -2
  570. package/dist/core/p-e0d88c31.entry.js.map +0 -1
  571. package/dist/core/p-e9202767.entry.js +0 -2
  572. package/dist/core/p-e9202767.entry.js.map +0 -1
  573. package/dist/core/p-eba373bf.entry.js.map +0 -1
  574. package/dist/core/p-ed6cf9b9.entry.js.map +0 -1
  575. package/dist/esm/chevron-icon-98c98242.js +0 -8
  576. package/dist/esm/chevron-icon-98c98242.js.map +0 -1
  577. package/dist/esm/helpers-c332acf8.js.map +0 -1
  578. /package/dist/core/{p-24240e11.js.map → p-06321d19.js.map} +0 -0
  579. /package/dist/core/{p-284970bc.entry.js.map → p-0a463a65.entry.js.map} +0 -0
  580. /package/dist/core/{p-7a9bc7f2.entry.js.map → p-741b4ea3.entry.js.map} +0 -0
  581. /package/dist/core/{p-c4a7c734.entry.js.map → p-8c9cc4d5.entry.js.map} +0 -0
  582. /package/dist/core/{p-b35ae170.entry.js.map → p-b7fc1f35.entry.js.map} +0 -0
  583. /package/dist/core/{p-691ea0f2.entry.js.map → p-dd71a986.entry.js.map} +0 -0
  584. /package/dist/core/{p-b4234318.entry.js.map → p-f777679c.entry.js.map} +0 -0
@@ -0,0 +1,433 @@
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
+ var _a;
35
+ this.open = false;
36
+ (_a = this.anchorEl) === null || _a === void 0 ? void 0 : _a.focus();
37
+ };
38
+ this.getNextItemToSelect = (currentItem, movingDown) => {
39
+ const numButtons = this.popoverMenuEls.length - 1;
40
+ if (currentItem < 1) {
41
+ currentItem = 0;
42
+ }
43
+ let nextItem = movingDown ? currentItem + 1 : currentItem - 1;
44
+ // Check if wrap around necessary
45
+ if (nextItem < 0) {
46
+ nextItem = numButtons;
47
+ }
48
+ else if (nextItem > numButtons) {
49
+ nextItem = 0;
50
+ }
51
+ return nextItem;
52
+ };
53
+ this.addMenuItems = (elements) => {
54
+ for (let i = 0; i < elements.length; i++) {
55
+ const el = elements[i];
56
+ if (el.tagName === "IC-MENU-ITEM") {
57
+ this.popoverMenuEls.push(el);
58
+ }
59
+ else if (el.tagName === "IC-MENU-GROUP") {
60
+ const groupSlotWrapper = el.shadowRoot.querySelector("ul");
61
+ const menuGroupElements = getSlotElements(groupSlotWrapper);
62
+ this.addMenuItems(menuGroupElements);
63
+ }
64
+ }
65
+ };
66
+ this.getMenuAriaLabel = () => {
67
+ const ariaLabel = this.host.getAttribute("aria-label");
68
+ if (this.submenuId !== undefined) {
69
+ return `${ariaLabel}, within nested level ${this.submenuLevel} ${this.parentLabel} submenu,`;
70
+ }
71
+ else {
72
+ return ariaLabel;
73
+ }
74
+ };
75
+ this.handleBackButtonClick = () => {
76
+ this.parentPopover.openFromChild();
77
+ this.open = false;
78
+ };
79
+ this.anchor = undefined;
80
+ this.submenuId = undefined;
81
+ this.open = undefined;
82
+ this.parentPopover = undefined;
83
+ this.submenuLevel = 1;
84
+ this.parentLabel = undefined;
85
+ this.openingFromChild = false;
86
+ this.openingFromParent = false;
87
+ }
88
+ handleMenuItemClick(ev) {
89
+ if (!ev.detail.hasSubMenu && ev.detail.label !== "Back") {
90
+ this.closeMenu();
91
+ }
92
+ }
93
+ // This is listening for the event emitted when a menu item is acting as a trigger button
94
+ handleSubmenuChange(ev) {
95
+ // Finds the trigger menu item that has emitted the event
96
+ const target = ev.target;
97
+ this.open = false;
98
+ // Find the popover menu that the menu item triggers (i.e. submenu-trigger-for === submenu-id).
99
+ const childEl = document.querySelector(`ic-popover-menu[submenu-id=${target.submenuTriggerFor}]`);
100
+ // Set the parent popover menu of the submenu and open the submenu
101
+ childEl.parentPopover = this.host;
102
+ childEl.anchor = this.anchor;
103
+ childEl.ariaLabel = this.host.getAttribute("aria-label");
104
+ childEl.openFromParent();
105
+ childEl.submenuLevel = this.submenuLevel + 1;
106
+ // Set the label in the submenu using the label of the menu item that has emitted the event
107
+ childEl.parentLabel = target.label;
108
+ }
109
+ watchOpenHandler() {
110
+ if (this.open) {
111
+ if (this.parentPopover !== undefined &&
112
+ !this.popoverMenuEls.some((menuItem) => menuItem.id)) {
113
+ this.popoverMenuEls.unshift(this.backButton);
114
+ }
115
+ this.currentFocus = this.submenuId !== undefined ? 1 : 0;
116
+ // Needed so that anchorEl isn't always focused
117
+ setTimeout(this.setButtonFocus, 50);
118
+ }
119
+ }
120
+ handleClick(ev) {
121
+ ev.preventDefault();
122
+ if (this.open && this.isNotPopoverMenuEl(ev)) {
123
+ // If menu is open and the next click on the document is not a popover El, close the popover
124
+ this.closeMenu();
125
+ }
126
+ }
127
+ /**
128
+ * @internal Opens the menu from the child menu.
129
+ */
130
+ async openFromChild() {
131
+ this.open = true;
132
+ this.openingFromChild = true;
133
+ setTimeout(() => (this.openingFromChild = false), 1000);
134
+ }
135
+ /**
136
+ * @internal Opens the menu from the parent menu.
137
+ */
138
+ async openFromParent() {
139
+ this.open = true;
140
+ this.openingFromParent = true;
141
+ setTimeout(() => (this.openingFromParent = false), 1000);
142
+ }
143
+ // Manages the keyboard navigation in the popover menu
144
+ handleKeyDown(ev) {
145
+ switch (ev.key) {
146
+ case "ArrowDown":
147
+ ev.preventDefault();
148
+ this.currentFocus = this.getNextItemToSelect(this.currentFocus, true);
149
+ this.setButtonFocus();
150
+ break;
151
+ case "ArrowUp":
152
+ ev.preventDefault();
153
+ this.currentFocus = this.getNextItemToSelect(this.currentFocus, false);
154
+ this.setButtonFocus();
155
+ break;
156
+ case "Home":
157
+ //Sets home focus as first element, or back button
158
+ this.currentFocus = 0;
159
+ this.setButtonFocus();
160
+ break;
161
+ case "End":
162
+ //Sets end focus as last element
163
+ this.currentFocus = this.popoverMenuEls.length - 1;
164
+ this.setButtonFocus();
165
+ break;
166
+ case "Escape":
167
+ case "Tab":
168
+ if (this.open) {
169
+ this.closeMenu();
170
+ this.host.blur();
171
+ }
172
+ break;
173
+ }
174
+ }
175
+ componentDidRender() {
176
+ if (this.open) {
177
+ createPopper(this.anchorEl, this.host, {
178
+ placement: "bottom-start",
179
+ modifiers: [
180
+ {
181
+ name: "offset",
182
+ options: {
183
+ offset: [0, 4],
184
+ },
185
+ },
186
+ ],
187
+ });
188
+ }
189
+ }
190
+ componentWillRender() {
191
+ this.anchorEl = this.findAnchorEl(this.anchor);
192
+ }
193
+ componentDidLoad() {
194
+ const slotWrapper = this.host.shadowRoot.querySelector("ul.button");
195
+ const popoverMenuElements = getSlotElements(slotWrapper);
196
+ if (popoverMenuElements !== null) {
197
+ this.addMenuItems(popoverMenuElements);
198
+ }
199
+ if (this.submenuId === undefined &&
200
+ this.host.getAttribute("aria-label") === null) {
201
+ console.error(`No aria-label specified for popover menu component - aria-label required`);
202
+ }
203
+ }
204
+ render() {
205
+ return (h(Host, { class: { open: this.open } }, h("div", { id: this.parentPopover === undefined
206
+ ? `ic-popover-submenu-${this.submenuId}`
207
+ : "", class: {
208
+ menu: true,
209
+ }, tabindex: open ? "0" : "-1" }, h("div", { class: {
210
+ "opening-from-parent": this.openingFromParent,
211
+ "opening-from-child": this.openingFromChild,
212
+ } }, 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
213
+ ? `ic-popover-submenu-back-button-${this.submenuLevel}`
214
+ : false, "aria-controls": this.submenuId !== undefined
215
+ ? `ic-popover-submenu-back-button-${this.submenuLevel}`
216
+ : false }, h("slot", null))))));
217
+ }
218
+ static get is() { return "ic-popover-menu"; }
219
+ static get encapsulation() { return "shadow"; }
220
+ static get delegatesFocus() { return true; }
221
+ static get originalStyleUrls() {
222
+ return {
223
+ "$": ["ic-popover-menu.css"]
224
+ };
225
+ }
226
+ static get styleUrls() {
227
+ return {
228
+ "$": ["ic-popover-menu.css"]
229
+ };
230
+ }
231
+ static get properties() {
232
+ return {
233
+ "anchor": {
234
+ "type": "string",
235
+ "mutable": false,
236
+ "complexType": {
237
+ "original": "string",
238
+ "resolved": "string",
239
+ "references": {}
240
+ },
241
+ "required": false,
242
+ "optional": false,
243
+ "docs": {
244
+ "tags": [],
245
+ "text": "The ID of the element the popover menu will anchor itself to. This is required unless the popover is a submenu."
246
+ },
247
+ "attribute": "anchor",
248
+ "reflect": false
249
+ },
250
+ "submenuId": {
251
+ "type": "string",
252
+ "mutable": false,
253
+ "complexType": {
254
+ "original": "string",
255
+ "resolved": "string",
256
+ "references": {}
257
+ },
258
+ "required": false,
259
+ "optional": true,
260
+ "docs": {
261
+ "tags": [],
262
+ "text": "The unique identifier for a popover submenu."
263
+ },
264
+ "attribute": "submenu-id",
265
+ "reflect": false
266
+ },
267
+ "open": {
268
+ "type": "boolean",
269
+ "mutable": true,
270
+ "complexType": {
271
+ "original": "boolean",
272
+ "resolved": "boolean",
273
+ "references": {}
274
+ },
275
+ "required": false,
276
+ "optional": false,
277
+ "docs": {
278
+ "tags": [],
279
+ "text": "If `true`, the popover menu will be displayed."
280
+ },
281
+ "attribute": "open",
282
+ "reflect": true,
283
+ "defaultValue": "undefined"
284
+ },
285
+ "parentPopover": {
286
+ "type": "unknown",
287
+ "mutable": false,
288
+ "complexType": {
289
+ "original": "HTMLIcPopoverMenuElement",
290
+ "resolved": "HTMLIcPopoverMenuElement",
291
+ "references": {
292
+ "HTMLIcPopoverMenuElement": {
293
+ "location": "global"
294
+ }
295
+ }
296
+ },
297
+ "required": false,
298
+ "optional": true,
299
+ "docs": {
300
+ "tags": [{
301
+ "name": "internal",
302
+ "text": "The parent popover menu of a child popover menu."
303
+ }],
304
+ "text": ""
305
+ }
306
+ },
307
+ "submenuLevel": {
308
+ "type": "number",
309
+ "mutable": false,
310
+ "complexType": {
311
+ "original": "number",
312
+ "resolved": "number",
313
+ "references": {}
314
+ },
315
+ "required": false,
316
+ "optional": false,
317
+ "docs": {
318
+ "tags": [{
319
+ "name": "internal",
320
+ "text": "The level of menu being displayed."
321
+ }],
322
+ "text": ""
323
+ },
324
+ "attribute": "submenu-level",
325
+ "reflect": false,
326
+ "defaultValue": "1"
327
+ },
328
+ "parentLabel": {
329
+ "type": "string",
330
+ "mutable": false,
331
+ "complexType": {
332
+ "original": "string",
333
+ "resolved": "string",
334
+ "references": {}
335
+ },
336
+ "required": false,
337
+ "optional": true,
338
+ "docs": {
339
+ "tags": [{
340
+ "name": "internal",
341
+ "text": "The parent popover menu of a child popover menu."
342
+ }],
343
+ "text": ""
344
+ },
345
+ "attribute": "parent-label",
346
+ "reflect": false
347
+ }
348
+ };
349
+ }
350
+ static get states() {
351
+ return {
352
+ "openingFromChild": {},
353
+ "openingFromParent": {}
354
+ };
355
+ }
356
+ static get methods() {
357
+ return {
358
+ "openFromChild": {
359
+ "complexType": {
360
+ "signature": "() => Promise<void>",
361
+ "parameters": [],
362
+ "references": {
363
+ "Promise": {
364
+ "location": "global"
365
+ }
366
+ },
367
+ "return": "Promise<void>"
368
+ },
369
+ "docs": {
370
+ "text": "",
371
+ "tags": [{
372
+ "name": "internal",
373
+ "text": "Opens the menu from the child menu."
374
+ }]
375
+ }
376
+ },
377
+ "openFromParent": {
378
+ "complexType": {
379
+ "signature": "() => Promise<void>",
380
+ "parameters": [],
381
+ "references": {
382
+ "Promise": {
383
+ "location": "global"
384
+ }
385
+ },
386
+ "return": "Promise<void>"
387
+ },
388
+ "docs": {
389
+ "text": "",
390
+ "tags": [{
391
+ "name": "internal",
392
+ "text": "Opens the menu from the parent menu."
393
+ }]
394
+ }
395
+ }
396
+ };
397
+ }
398
+ static get elementRef() { return "host"; }
399
+ static get watchers() {
400
+ return [{
401
+ "propName": "open",
402
+ "methodName": "watchOpenHandler"
403
+ }];
404
+ }
405
+ static get listeners() {
406
+ return [{
407
+ "name": "handleMenuItemClick",
408
+ "method": "handleMenuItemClick",
409
+ "target": undefined,
410
+ "capture": false,
411
+ "passive": false
412
+ }, {
413
+ "name": "triggerPopoverMenuInstance",
414
+ "method": "handleSubmenuChange",
415
+ "target": undefined,
416
+ "capture": true,
417
+ "passive": false
418
+ }, {
419
+ "name": "click",
420
+ "method": "handleClick",
421
+ "target": "document",
422
+ "capture": false,
423
+ "passive": false
424
+ }, {
425
+ "name": "keydown",
426
+ "method": "handleKeyDown",
427
+ "target": "document",
428
+ "capture": false,
429
+ "passive": false
430
+ }];
431
+ }
432
+ }
433
+ //# 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 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"]}
@@ -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"]}
@@ -453,7 +453,7 @@ ic-input-validation {
453
453
  margin-top: var(--ic-space-sm);
454
454
  }
455
455
 
456
- :host([small]) ic-input-validation {
456
+ :host(.small) ic-input-validation {
457
457
  margin-top: calc(var(--ic-space-sm) / 2);
458
458
  }
459
459
 
@@ -461,7 +461,7 @@ ic-input-label ic-typography {
461
461
  margin-bottom: var(--ic-space-sm);
462
462
  }
463
463
 
464
- :host([small]) ic-input-label ic-typography {
464
+ :host(.small) ic-input-label ic-typography {
465
465
  margin-bottom: calc(var(--ic-space-sm) / 2);
466
466
  }
467
467
 
@@ -471,7 +471,7 @@ ic-input-label ic-typography {
471
471
  gap: var(--ic-space-xxs);
472
472
  }
473
473
 
474
- :host([small]) .radio-buttons-container {
474
+ :host(.small) .radio-buttons-container {
475
475
  gap: var(--ic-space-xxxs);
476
476
  }
477
477
 
@@ -481,6 +481,6 @@ ic-input-label ic-typography {
481
481
  gap: calc(var(--ic-space-xl) + var(--ic-space-xs));
482
482
  }
483
483
 
484
- :host([small][orientation="horizontal"]) .radio-buttons-container {
484
+ :host(.small[orientation="horizontal"]) .radio-buttons-container {
485
485
  gap: var(--ic-space-xl);
486
486
  }
@@ -91,7 +91,7 @@ export class RadioGroup {
91
91
  }
92
92
  render() {
93
93
  renderHiddenInput(true, this.host, this.name, this.checkedValue, this.disabled);
94
- return (h(Host, { onKeyDown: this.handleKeyDown }, h("div", { role: "radiogroup", "aria-label": `${this.label}${this.required ? ", required" : ""}` }, !this.hideLabel && (h("ic-input-label", { class: { [`${this.validationStatus}`]: true }, label: this.label, helperText: this.helperText, required: this.required, disabled: this.disabled })), h("div", { class: "radio-buttons-container" }, h("slot", null))), hasValidationStatus(this.validationStatus, this.disabled) && (h("ic-input-validation", { ariaLiveMode: "polite", status: this.validationStatus, message: this.validationText }))));
94
+ return (h(Host, { onKeyDown: this.handleKeyDown, class: { small: this.small } }, h("div", { role: "radiogroup", "aria-label": `${this.label}${this.required ? ", required" : ""}` }, !this.hideLabel && (h("ic-input-label", { class: { [`${this.validationStatus}`]: true }, label: this.label, helperText: this.helperText, required: this.required, disabled: this.disabled })), h("div", { class: "radio-buttons-container" }, h("slot", null))), hasValidationStatus(this.validationStatus, this.disabled) && (h("ic-input-validation", { ariaLiveMode: "polite", status: this.validationStatus, message: this.validationText }))));
95
95
  }
96
96
  static get is() { return "ic-radio-group"; }
97
97
  static get encapsulation() { return "shadow"; }
@@ -1 +1 @@
1
- {"version":3,"file":"ic-radio-group.js","sourceRoot":"","sources":["../../../src/components/ic-radio-group/ic-radio-group.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Host,\n h,\n Prop,\n State,\n Listen,\n Element,\n Event,\n EventEmitter,\n} from \"@stencil/core\";\nimport {\n hasValidationStatus,\n isSlotUsed,\n onComponentRequiredPropUndefined,\n renderHiddenInput,\n} from \"../../utils/helpers\";\nimport { IcInformationStatusOrEmpty, IcOrientation } from \"../../utils/types\";\nimport { IcValueEventDetail } from \"../../interface\";\n\n@Component({\n tag: \"ic-radio-group\",\n styleUrl: \"ic-radio-group.css\",\n shadow: true,\n})\nexport class RadioGroup {\n private radioOptions: HTMLIcRadioOptionElement[];\n\n @Element() host: HTMLIcRadioGroupElement;\n\n /**\n * The label for the radio group to be displayed.\n */\n @Prop() label!: string;\n\n /**\n * The name for the radio group to differentiate from other groups.\n */\n @Prop() name!: string;\n\n /**\n * If `true`, the radio group will require a value.\n */\n @Prop() required: boolean = false;\n\n /**\n * The orientation of the radio buttons in the radio group. If there are more than two radio buttons in a radio group or either of the radio buttons use the `additional-field` slot, then the orientation will always be vertical.\n */\n @Prop({ reflect: true, mutable: true }) orientation: IcOrientation =\n \"vertical\";\n\n /**\n * If `true`, the label will be hidden and the required label value will be applied as an aria-label.\n */\n @Prop() hideLabel: boolean = false;\n\n /**\n * If `true`, the disabled state will be set.\n */\n @Prop() disabled: boolean = false;\n\n /**\n * The helper text that will be displayed for additional field guidance.\n */\n @Prop() helperText: string;\n\n /**\n * If `true`, the small styling will be applied to the radio group.\n */\n @Prop() small: boolean = false;\n /**\n * The validation status - e.g. 'error' | 'warning' | 'success'.\n */\n @Prop() validationStatus: IcInformationStatusOrEmpty = \"\";\n /**\n * The validation text - e.g. 'error' | 'warning' | 'success'.\n */\n @Prop() validationText: string = \"\";\n /**\n * The checked state.\n */\n @State() checkedValue: string = \"\";\n @State() selectedChild: number = -1;\n\n /**\n * Emitted when a user selects a radio.\n */\n @Event() icChange: EventEmitter<IcValueEventDetail>;\n\n @Listen(\"icCheck\")\n selectHandler(event: CustomEvent<IcValueEventDetail>): void {\n this.checkedValue = event.detail.value;\n this.icChange.emit({ value: this.checkedValue });\n\n if (this.radioOptions !== undefined) {\n this.radioOptions.forEach((radioOption, index) => {\n radioOption.selected = this.checkedValue === radioOption.value;\n if (radioOption.selected) {\n this.selectedChild = index;\n }\n });\n this.radioOptions[0].shadowRoot.querySelector(\"input\").tabIndex =\n this.selectedChild > 0 ? -1 : 0;\n }\n }\n\n private handleKeyDown = (event: KeyboardEvent): void => {\n switch (event.key) {\n case \"ArrowDown\":\n case \"ArrowRight\":\n this.radioOptions[\n this.getNextItemToSelect(this.selectedChild, true)\n ].selected = true;\n event.preventDefault();\n break;\n case \"ArrowUp\":\n case \"ArrowLeft\":\n this.radioOptions[\n this.getNextItemToSelect(this.selectedChild, false)\n ].selected = true;\n event.preventDefault();\n }\n };\n\n private getNextItemToSelect = (\n currentItem: number,\n movingDown: boolean\n ): number => {\n const numRadios = this.radioOptions.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 = numRadios;\n } else if (nextItem > numRadios) {\n nextItem = 0;\n }\n\n //if next item is disabled then find next\n if (this.radioOptions[nextItem].disabled) {\n nextItem = this.getNextItemToSelect(nextItem, movingDown);\n }\n\n return nextItem;\n };\n\n componentDidLoad(): void {\n this.radioOptions = Array.from(\n this.host.querySelectorAll(\"ic-radio-option\")\n );\n\n this.radioOptions.forEach((radioOption, index) => {\n if (!radioOption.selected) {\n radioOption.selected = this.checkedValue === radioOption.value;\n }\n radioOption.name = this.name;\n radioOption.groupLabel = this.label;\n if (radioOption.selected) {\n this.selectedChild = index;\n this.checkedValue = radioOption.value;\n }\n });\n this.radioOptions[0].shadowRoot.querySelector(\"input\").tabIndex =\n this.selectedChild > 0 ? -1 : 0;\n\n if (\n this.orientation === \"horizontal\" &&\n this.radioOptions !== undefined &&\n (this.radioOptions.length > 2 ||\n (this.radioOptions.length === 2 &&\n (isSlotUsed(this.radioOptions[0], \"additional-field\") ||\n isSlotUsed(this.radioOptions[1], \"additional-field\"))))\n ) {\n this.orientation = \"vertical\";\n }\n\n onComponentRequiredPropUndefined(\n [\n { prop: this.label, propName: \"label\" },\n { prop: this.name, propName: \"name\" },\n ],\n \"Radio Group\"\n );\n }\n\n render() {\n renderHiddenInput(\n true,\n this.host,\n this.name,\n this.checkedValue,\n this.disabled\n );\n\n return (\n <Host onKeyDown={this.handleKeyDown}>\n <div\n role=\"radiogroup\"\n aria-label={`${this.label}${this.required ? \", required\" : \"\"}`}\n >\n {!this.hideLabel && (\n <ic-input-label\n class={{ [`${this.validationStatus}`]: true }}\n label={this.label}\n helperText={this.helperText}\n required={this.required}\n disabled={this.disabled}\n ></ic-input-label>\n )}\n <div class=\"radio-buttons-container\">\n <slot></slot>\n </div>\n </div>\n {hasValidationStatus(this.validationStatus, this.disabled) && (\n <ic-input-validation\n ariaLiveMode=\"polite\"\n status={this.validationStatus}\n message={this.validationText}\n ></ic-input-validation>\n )}\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ic-radio-group.js","sourceRoot":"","sources":["../../../src/components/ic-radio-group/ic-radio-group.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Host,\n h,\n Prop,\n State,\n Listen,\n Element,\n Event,\n EventEmitter,\n} from \"@stencil/core\";\nimport {\n hasValidationStatus,\n isSlotUsed,\n onComponentRequiredPropUndefined,\n renderHiddenInput,\n} from \"../../utils/helpers\";\nimport { IcInformationStatusOrEmpty, IcOrientation } from \"../../utils/types\";\nimport { IcValueEventDetail } from \"../../interface\";\n\n@Component({\n tag: \"ic-radio-group\",\n styleUrl: \"ic-radio-group.css\",\n shadow: true,\n})\nexport class RadioGroup {\n private radioOptions: HTMLIcRadioOptionElement[];\n\n @Element() host: HTMLIcRadioGroupElement;\n\n /**\n * The label for the radio group to be displayed.\n */\n @Prop() label!: string;\n\n /**\n * The name for the radio group to differentiate from other groups.\n */\n @Prop() name!: string;\n\n /**\n * If `true`, the radio group will require a value.\n */\n @Prop() required: boolean = false;\n\n /**\n * The orientation of the radio buttons in the radio group. If there are more than two radio buttons in a radio group or either of the radio buttons use the `additional-field` slot, then the orientation will always be vertical.\n */\n @Prop({ reflect: true, mutable: true }) orientation: IcOrientation =\n \"vertical\";\n\n /**\n * If `true`, the label will be hidden and the required label value will be applied as an aria-label.\n */\n @Prop() hideLabel: boolean = false;\n\n /**\n * If `true`, the disabled state will be set.\n */\n @Prop() disabled: boolean = false;\n\n /**\n * The helper text that will be displayed for additional field guidance.\n */\n @Prop() helperText: string;\n\n /**\n * If `true`, the small styling will be applied to the radio group.\n */\n @Prop() small: boolean = false;\n /**\n * The validation status - e.g. 'error' | 'warning' | 'success'.\n */\n @Prop() validationStatus: IcInformationStatusOrEmpty = \"\";\n /**\n * The validation text - e.g. 'error' | 'warning' | 'success'.\n */\n @Prop() validationText: string = \"\";\n /**\n * The checked state.\n */\n @State() checkedValue: string = \"\";\n @State() selectedChild: number = -1;\n\n /**\n * Emitted when a user selects a radio.\n */\n @Event() icChange: EventEmitter<IcValueEventDetail>;\n\n @Listen(\"icCheck\")\n selectHandler(event: CustomEvent<IcValueEventDetail>): void {\n this.checkedValue = event.detail.value;\n this.icChange.emit({ value: this.checkedValue });\n\n if (this.radioOptions !== undefined) {\n this.radioOptions.forEach((radioOption, index) => {\n radioOption.selected = this.checkedValue === radioOption.value;\n if (radioOption.selected) {\n this.selectedChild = index;\n }\n });\n this.radioOptions[0].shadowRoot.querySelector(\"input\").tabIndex =\n this.selectedChild > 0 ? -1 : 0;\n }\n }\n\n private handleKeyDown = (event: KeyboardEvent): void => {\n switch (event.key) {\n case \"ArrowDown\":\n case \"ArrowRight\":\n this.radioOptions[\n this.getNextItemToSelect(this.selectedChild, true)\n ].selected = true;\n event.preventDefault();\n break;\n case \"ArrowUp\":\n case \"ArrowLeft\":\n this.radioOptions[\n this.getNextItemToSelect(this.selectedChild, false)\n ].selected = true;\n event.preventDefault();\n }\n };\n\n private getNextItemToSelect = (\n currentItem: number,\n movingDown: boolean\n ): number => {\n const numRadios = this.radioOptions.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 = numRadios;\n } else if (nextItem > numRadios) {\n nextItem = 0;\n }\n\n //if next item is disabled then find next\n if (this.radioOptions[nextItem].disabled) {\n nextItem = this.getNextItemToSelect(nextItem, movingDown);\n }\n\n return nextItem;\n };\n\n componentDidLoad(): void {\n this.radioOptions = Array.from(\n this.host.querySelectorAll(\"ic-radio-option\")\n );\n\n this.radioOptions.forEach((radioOption, index) => {\n if (!radioOption.selected) {\n radioOption.selected = this.checkedValue === radioOption.value;\n }\n radioOption.name = this.name;\n radioOption.groupLabel = this.label;\n if (radioOption.selected) {\n this.selectedChild = index;\n this.checkedValue = radioOption.value;\n }\n });\n this.radioOptions[0].shadowRoot.querySelector(\"input\").tabIndex =\n this.selectedChild > 0 ? -1 : 0;\n\n if (\n this.orientation === \"horizontal\" &&\n this.radioOptions !== undefined &&\n (this.radioOptions.length > 2 ||\n (this.radioOptions.length === 2 &&\n (isSlotUsed(this.radioOptions[0], \"additional-field\") ||\n isSlotUsed(this.radioOptions[1], \"additional-field\"))))\n ) {\n this.orientation = \"vertical\";\n }\n\n onComponentRequiredPropUndefined(\n [\n { prop: this.label, propName: \"label\" },\n { prop: this.name, propName: \"name\" },\n ],\n \"Radio Group\"\n );\n }\n\n render() {\n renderHiddenInput(\n true,\n this.host,\n this.name,\n this.checkedValue,\n this.disabled\n );\n\n return (\n <Host onKeyDown={this.handleKeyDown} class={{ small: this.small }}>\n <div\n role=\"radiogroup\"\n aria-label={`${this.label}${this.required ? \", required\" : \"\"}`}\n >\n {!this.hideLabel && (\n <ic-input-label\n class={{ [`${this.validationStatus}`]: true }}\n label={this.label}\n helperText={this.helperText}\n required={this.required}\n disabled={this.disabled}\n ></ic-input-label>\n )}\n <div class=\"radio-buttons-container\">\n <slot></slot>\n </div>\n </div>\n {hasValidationStatus(this.validationStatus, this.disabled) && (\n <ic-input-validation\n ariaLiveMode=\"polite\"\n status={this.validationStatus}\n message={this.validationText}\n ></ic-input-validation>\n )}\n </Host>\n );\n }\n}\n"]}
@@ -454,7 +454,7 @@ video {
454
454
  }
455
455
 
456
456
  /* The label turns grey when disabled */
457
- :host([disabled]) {
457
+ :host(.disabled) {
458
458
  color: var(--ic-architectural-200);
459
459
  }
460
460
 
@@ -503,7 +503,7 @@ video {
503
503
  height: var(--ic-space-lg);
504
504
  width: var(--ic-space-lg);
505
505
  background-color: transparent;
506
- border: 0.063rem solid #a7acb3;
506
+ border: var(--ic-space-1px) solid #a7acb3;
507
507
  border-radius: 50%;
508
508
  transition: var(--ic-easing-transition-fast);
509
509
  box-sizing: border-box;
@@ -518,13 +518,13 @@ video {
518
518
  .container:hover input ~ .checkmark {
519
519
  background-color: var(--ic-action-default-bg-hover);
520
520
  box-shadow: 0 0 0 0.25rem var(--ic-action-default-bg-hover);
521
- border: 0.063rem solid var(--ic-action-default);
521
+ border: var(--ic-space-1px) solid var(--ic-action-default);
522
522
  }
523
523
 
524
524
  /* When pressed, adds the active colours */
525
525
  .container:active input ~ .checkmark {
526
526
  background-color: var(--ic-action-default-bg-active);
527
- border: 0.063rem solid var(--ic-action-default-active);
527
+ border: var(--ic-space-1px) solid var(--ic-action-default-active);
528
528
  box-shadow: 0 0 0 0.25rem var(--ic-action-default-bg-active);
529
529
  }
530
530
 
@@ -553,7 +553,7 @@ video {
553
553
 
554
554
  /* When the radio button is disabled */
555
555
  .container input:disabled ~ .checkmark {
556
- border: 0.063rem dashed var(--ic-architectural-200);
556
+ border: var(--ic-space-1px) dashed var(--ic-architectural-200);
557
557
  }
558
558
 
559
559
  /* When the radio button is disabled */
@@ -601,7 +601,7 @@ video {
601
601
  border-radius: 0 0 0 0.188rem;
602
602
  border-bottom: 0.125rem solid var(--ic-action-default);
603
603
  border-left: 0.125rem solid var(--ic-action-default);
604
- margin-left: -0.063rem;
604
+ margin-left: calc(-1 * var(--ic-space-1px));
605
605
  }
606
606
 
607
607
  /* The dynamic container */
@@ -109,7 +109,7 @@ export class RadioOption {
109
109
  }
110
110
  render() {
111
111
  const id = `ic-radio-option-${this.label !== undefined ? this.label : this.value}-${this.groupLabel}`;
112
- return (h(Host, { onClick: this.handleClick }, h("div", { class: { ["container"]: true, ["disabled"]: this.disabled } }, h("div", null, h("input", { role: "radio", tabindex: this.selected ? "0" : "-1", type: "radio", name: this.name, id: id, value: this.value, disabled: this.disabled ? true : null, checked: this.selected, ref: (el) => (this.radioElement = el) }), h("span", { class: "checkmark" })), h("ic-typography", { class: "radio-label", variant: "body" }, h("label", { htmlFor: id }, this.label))), this.hasAdditionalField && (h("div", { onClick: this.swallowClick, class: {
112
+ return (h(Host, { onClick: this.handleClick, class: { disabled: this.disabled } }, h("div", { class: { ["container"]: true, ["disabled"]: this.disabled } }, h("div", null, h("input", { role: "radio", tabindex: this.selected ? "0" : "-1", type: "radio", name: this.name, id: id, value: this.value, disabled: this.disabled ? true : null, checked: this.selected, ref: (el) => (this.radioElement = el) }), h("span", { class: "checkmark" })), h("ic-typography", { class: "radio-label", variant: "body" }, h("label", { htmlFor: id }, this.label))), this.hasAdditionalField && (h("div", { onClick: this.swallowClick, class: {
113
113
  "dynamic-container": true,
114
114
  hidden: this.additionalFieldDisplay === "dynamic" && !this.selected,
115
115
  } }, this.additionalFieldDisplay === "dynamic" && (h("div", { class: "branch-corner" })), h("div", null, this.additionalFieldDisplay === "dynamic" && (h("ic-typography", { variant: "caption" }, h("p", { class: "dynamic-text" }, this.dynamicText))), h("div", { class: {