@ukic/web-components 2.1.0-beta.2 → 2.1.0-beta.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (343) hide show
  1. package/dist/cjs/core.cjs.js +1 -1
  2. package/dist/cjs/ic-alert.cjs.entry.js +2 -0
  3. package/dist/cjs/ic-alert.cjs.entry.js.map +1 -1
  4. package/dist/cjs/ic-button_3.cjs.entry.js +25 -9
  5. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  6. package/dist/cjs/ic-card.cjs.entry.js.map +1 -1
  7. package/dist/cjs/ic-checkbox-group.cjs.entry.js.map +1 -1
  8. package/dist/cjs/ic-checkbox.cjs.entry.js +2 -0
  9. package/dist/cjs/ic-checkbox.cjs.entry.js.map +1 -1
  10. package/dist/cjs/ic-chip.cjs.entry.js +66 -0
  11. package/dist/cjs/ic-chip.cjs.entry.js.map +1 -0
  12. package/dist/cjs/ic-data-row.cjs.entry.js +1 -1
  13. package/dist/cjs/ic-data-row.cjs.entry.js.map +1 -1
  14. package/dist/cjs/ic-divider.cjs.entry.js.map +1 -1
  15. package/dist/cjs/ic-footer-link-group.cjs.entry.js.map +1 -1
  16. package/dist/cjs/ic-footer-link.cjs.entry.js.map +1 -1
  17. package/dist/cjs/ic-footer.cjs.entry.js +2 -2
  18. package/dist/cjs/ic-footer.cjs.entry.js.map +1 -1
  19. package/dist/cjs/ic-hero.cjs.entry.js.map +1 -1
  20. package/dist/cjs/ic-input-component-container_3.cjs.entry.js +16 -16
  21. package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +1 -1
  22. package/dist/cjs/ic-link.cjs.entry.js.map +1 -1
  23. package/dist/cjs/ic-navigation-button.cjs.entry.js.map +1 -1
  24. package/dist/cjs/ic-navigation-group.cjs.entry.js.map +1 -1
  25. package/dist/cjs/ic-navigation-item.cjs.entry.js +2 -2
  26. package/dist/cjs/ic-navigation-item.cjs.entry.js.map +1 -1
  27. package/dist/cjs/ic-navigation-menu.cjs.entry.js.map +1 -1
  28. package/dist/cjs/ic-radio-group.cjs.entry.js.map +1 -1
  29. package/dist/cjs/ic-radio-option.cjs.entry.js +10 -0
  30. package/dist/cjs/ic-radio-option.cjs.entry.js.map +1 -1
  31. package/dist/cjs/ic-search-bar.cjs.entry.js +1 -1
  32. package/dist/cjs/ic-search-bar.cjs.entry.js.map +1 -1
  33. package/dist/cjs/ic-select.cjs.entry.js +2 -2
  34. package/dist/cjs/ic-select.cjs.entry.js.map +1 -1
  35. package/dist/cjs/ic-side-navigation.cjs.entry.js.map +1 -1
  36. package/dist/cjs/ic-step.cjs.entry.js +101 -13
  37. package/dist/cjs/ic-step.cjs.entry.js.map +1 -1
  38. package/dist/cjs/ic-stepper.cjs.entry.js +161 -40
  39. package/dist/cjs/ic-stepper.cjs.entry.js.map +1 -1
  40. package/dist/cjs/ic-tab-context.cjs.entry.js +6 -1
  41. package/dist/cjs/ic-tab-context.cjs.entry.js.map +1 -1
  42. package/dist/cjs/ic-tab.cjs.entry.js.map +1 -1
  43. package/dist/cjs/ic-text-field.cjs.entry.js.map +1 -1
  44. package/dist/cjs/ic-theme.cjs.entry.js +2 -2
  45. package/dist/cjs/ic-theme.cjs.entry.js.map +1 -1
  46. package/dist/cjs/ic-top-navigation.cjs.entry.js.map +1 -1
  47. package/dist/cjs/index-3ef30d9d.js +4 -0
  48. package/dist/cjs/loader.cjs.js +1 -1
  49. package/dist/collection/assets/dismiss-icon.svg +3 -0
  50. package/dist/collection/assets/warning-icon-outline.svg +3 -0
  51. package/dist/collection/collection-manifest.json +1 -0
  52. package/dist/collection/components/ic-alert/ic-alert.js +20 -1
  53. package/dist/collection/components/ic-alert/ic-alert.js.map +1 -1
  54. package/dist/collection/components/ic-button/ic-button.js +2 -2
  55. package/dist/collection/components/ic-button/ic-button.js.map +1 -1
  56. package/dist/collection/components/ic-card/ic-card.js +2 -2
  57. package/dist/collection/components/ic-card/ic-card.js.map +1 -1
  58. package/dist/collection/components/ic-checkbox/ic-checkbox.js +20 -1
  59. package/dist/collection/components/ic-checkbox/ic-checkbox.js.map +1 -1
  60. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js +1 -1
  61. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js.map +1 -1
  62. package/dist/collection/components/ic-chip/ic-chip.css +595 -0
  63. package/dist/collection/components/ic-chip/ic-chip.js +199 -0
  64. package/dist/collection/components/ic-chip/ic-chip.js.map +1 -0
  65. package/dist/collection/components/ic-chip/ic-chip.test.a11y.js +11 -0
  66. package/dist/collection/components/ic-chip/ic-chip.test.a11y.js.map +1 -0
  67. package/dist/collection/components/ic-chip/ic-chip.types.js +2 -0
  68. package/dist/collection/components/ic-chip/ic-chip.types.js.map +1 -0
  69. package/dist/collection/components/ic-data-row/ic-data-row.css +12 -0
  70. package/dist/collection/components/ic-divider/ic-divider.js +1 -1
  71. package/dist/collection/components/ic-divider/ic-divider.js.map +1 -1
  72. package/dist/collection/components/ic-footer/ic-footer.js +9 -6
  73. package/dist/collection/components/ic-footer/ic-footer.js.map +1 -1
  74. package/dist/collection/components/ic-footer-link/ic-footer-link.js +2 -2
  75. package/dist/collection/components/ic-footer-link/ic-footer-link.js.map +1 -1
  76. package/dist/collection/components/ic-footer-link-group/ic-footer-link-group.js +2 -2
  77. package/dist/collection/components/ic-footer-link-group/ic-footer-link-group.js.map +1 -1
  78. package/dist/collection/components/ic-hero/ic-hero.js +1 -1
  79. package/dist/collection/components/ic-hero/ic-hero.js.map +1 -1
  80. package/dist/collection/components/ic-input-component-container/ic-input-component-container.css +0 -2
  81. package/dist/collection/components/ic-link/ic-link.js +1 -1
  82. package/dist/collection/components/ic-link/ic-link.js.map +1 -1
  83. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.css +38 -2
  84. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.js +39 -5
  85. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.js.map +1 -1
  86. package/dist/collection/components/ic-menu/ic-menu.js +23 -20
  87. package/dist/collection/components/ic-menu/ic-menu.js.map +1 -1
  88. package/dist/collection/components/ic-navigation-button/ic-navigation-button.js +1 -1
  89. package/dist/collection/components/ic-navigation-button/ic-navigation-button.js.map +1 -1
  90. package/dist/collection/components/ic-navigation-group/ic-navigation-group.js +2 -2
  91. package/dist/collection/components/ic-navigation-group/ic-navigation-group.js.map +1 -1
  92. package/dist/collection/components/ic-navigation-item/ic-navigation-item.js +4 -4
  93. package/dist/collection/components/ic-navigation-item/ic-navigation-item.js.map +1 -1
  94. package/dist/collection/components/ic-navigation-menu/ic-navigation-menu.js +1 -1
  95. package/dist/collection/components/ic-navigation-menu/ic-navigation-menu.js.map +1 -1
  96. package/dist/collection/components/ic-radio-group/ic-radio-group.js +1 -1
  97. package/dist/collection/components/ic-radio-group/ic-radio-group.js.map +1 -1
  98. package/dist/collection/components/ic-radio-option/ic-radio-option.js +32 -0
  99. package/dist/collection/components/ic-radio-option/ic-radio-option.js.map +1 -1
  100. package/dist/collection/components/ic-search-bar/ic-search-bar.js +12 -6
  101. package/dist/collection/components/ic-search-bar/ic-search-bar.js.map +1 -1
  102. package/dist/collection/components/ic-select/ic-select.css +1 -1
  103. package/dist/collection/components/ic-select/ic-select.js +1 -1
  104. package/dist/collection/components/ic-select/ic-select.js.map +1 -1
  105. package/dist/collection/components/ic-side-navigation/ic-side-navigation.js +6 -3
  106. package/dist/collection/components/ic-side-navigation/ic-side-navigation.js.map +1 -1
  107. package/dist/collection/components/ic-step/ic-step.css +120 -24
  108. package/dist/collection/components/ic-step/ic-step.js +268 -27
  109. package/dist/collection/components/ic-step/ic-step.js.map +1 -1
  110. package/dist/collection/components/ic-step/ic-step.types.js.map +1 -1
  111. package/dist/collection/components/ic-stepper/ic-stepper-test-examples.js +74 -0
  112. package/dist/collection/components/ic-stepper/ic-stepper-test-examples.js.map +1 -0
  113. package/dist/collection/components/ic-stepper/ic-stepper.css +15 -1
  114. package/dist/collection/components/ic-stepper/ic-stepper.js +206 -39
  115. package/dist/collection/components/ic-stepper/ic-stepper.js.map +1 -1
  116. package/dist/collection/components/ic-stepper/ic-stepper.test.a11y.js +13 -1
  117. package/dist/collection/components/ic-stepper/ic-stepper.test.a11y.js.map +1 -1
  118. package/dist/collection/components/ic-tab/ic-tab.js +5 -2
  119. package/dist/collection/components/ic-tab/ic-tab.js.map +1 -1
  120. package/dist/collection/components/ic-tab-context/ic-tab-context.js +29 -2
  121. package/dist/collection/components/ic-tab-context/ic-tab-context.js.map +1 -1
  122. package/dist/collection/components/ic-text-field/ic-text-field.js +2 -2
  123. package/dist/collection/components/ic-text-field/ic-text-field.js.map +1 -1
  124. package/dist/collection/components/ic-theme/ic-theme.js +8 -5
  125. package/dist/collection/components/ic-theme/ic-theme.js.map +1 -1
  126. package/dist/collection/components/ic-tooltip/ic-tooltip.css +1 -1
  127. package/dist/collection/components/ic-tooltip/ic-tooltip.js +22 -1
  128. package/dist/collection/components/ic-tooltip/ic-tooltip.js.map +1 -1
  129. package/dist/collection/components/ic-top-navigation/ic-top-navigation.css +1 -1
  130. package/dist/collection/components/ic-top-navigation/ic-top-navigation.js +1 -1
  131. package/dist/collection/components/ic-top-navigation/ic-top-navigation.js.map +1 -1
  132. package/dist/collection/testspec.setup.js +8 -0
  133. package/dist/collection/testspec.setup.js.map +1 -1
  134. package/dist/components/ic-alert.js +3 -1
  135. package/dist/components/ic-alert.js.map +1 -1
  136. package/dist/components/ic-button2.js +2 -2
  137. package/dist/components/ic-button2.js.map +1 -1
  138. package/dist/components/ic-card.js +1 -1
  139. package/dist/components/ic-card.js.map +1 -1
  140. package/dist/components/ic-checkbox-group.js +1 -1
  141. package/dist/components/ic-checkbox-group.js.map +1 -1
  142. package/dist/components/ic-checkbox.js +2 -0
  143. package/dist/components/ic-checkbox.js.map +1 -1
  144. package/dist/components/ic-chip.d.ts +11 -0
  145. package/dist/components/ic-chip.js +99 -0
  146. package/dist/components/ic-chip.js.map +1 -0
  147. package/dist/components/ic-data-row.js +1 -1
  148. package/dist/components/ic-data-row.js.map +1 -1
  149. package/dist/components/ic-divider2.js +1 -1
  150. package/dist/components/ic-divider2.js.map +1 -1
  151. package/dist/components/ic-footer-link-group.js +1 -1
  152. package/dist/components/ic-footer-link-group.js.map +1 -1
  153. package/dist/components/ic-footer-link.js +1 -1
  154. package/dist/components/ic-footer-link.js.map +1 -1
  155. package/dist/components/ic-footer.js +3 -3
  156. package/dist/components/ic-footer.js.map +1 -1
  157. package/dist/components/ic-hero.js +1 -1
  158. package/dist/components/ic-hero.js.map +1 -1
  159. package/dist/components/ic-input-component-container2.js +1 -1
  160. package/dist/components/ic-input-component-container2.js.map +1 -1
  161. package/dist/components/ic-link2.js +1 -1
  162. package/dist/components/ic-link2.js.map +1 -1
  163. package/dist/components/ic-loading-indicator2.js +21 -6
  164. package/dist/components/ic-loading-indicator2.js.map +1 -1
  165. package/dist/components/ic-menu2.js +15 -15
  166. package/dist/components/ic-menu2.js.map +1 -1
  167. package/dist/components/ic-navigation-button.js +1 -1
  168. package/dist/components/ic-navigation-button.js.map +1 -1
  169. package/dist/components/ic-navigation-group.js +1 -1
  170. package/dist/components/ic-navigation-group.js.map +1 -1
  171. package/dist/components/ic-navigation-item.js +3 -3
  172. package/dist/components/ic-navigation-item.js.map +1 -1
  173. package/dist/components/ic-navigation-menu2.js +1 -1
  174. package/dist/components/ic-navigation-menu2.js.map +1 -1
  175. package/dist/components/ic-radio-group.js +1 -1
  176. package/dist/components/ic-radio-group.js.map +1 -1
  177. package/dist/components/ic-radio-option.js +10 -0
  178. package/dist/components/ic-radio-option.js.map +1 -1
  179. package/dist/components/ic-search-bar.js +2 -2
  180. package/dist/components/ic-search-bar.js.map +1 -1
  181. package/dist/components/ic-select.js +2 -2
  182. package/dist/components/ic-select.js.map +1 -1
  183. package/dist/components/ic-side-navigation.js +1 -1
  184. package/dist/components/ic-side-navigation.js.map +1 -1
  185. package/dist/components/ic-step.js +117 -16
  186. package/dist/components/ic-step.js.map +1 -1
  187. package/dist/components/ic-stepper.js +169 -41
  188. package/dist/components/ic-stepper.js.map +1 -1
  189. package/dist/components/ic-tab-context.js +6 -1
  190. package/dist/components/ic-tab-context.js.map +1 -1
  191. package/dist/components/ic-tab.js.map +1 -1
  192. package/dist/components/ic-text-field2.js +2 -2
  193. package/dist/components/ic-text-field2.js.map +1 -1
  194. package/dist/components/ic-theme.js +2 -2
  195. package/dist/components/ic-theme.js.map +1 -1
  196. package/dist/components/ic-tooltip2.js +7 -3
  197. package/dist/components/ic-tooltip2.js.map +1 -1
  198. package/dist/components/ic-top-navigation.js +1 -1
  199. package/dist/components/ic-top-navigation.js.map +1 -1
  200. package/dist/components/index.d.ts +2 -1
  201. package/dist/components/index.js +1 -0
  202. package/dist/components/index.js.map +1 -1
  203. package/dist/core/core.esm.js +1 -1
  204. package/dist/core/core.esm.js.map +1 -1
  205. package/dist/core/p-0d77bd0c.entry.js +2 -0
  206. package/dist/core/p-0d77bd0c.entry.js.map +1 -0
  207. package/dist/core/p-2b5c9143.entry.js.map +1 -1
  208. package/dist/core/p-31a8595f.entry.js.map +1 -1
  209. package/dist/core/{p-7b39977f.entry.js → p-3a068a45.entry.js} +2 -2
  210. package/dist/core/p-3a068a45.entry.js.map +1 -0
  211. package/dist/core/p-5831bb8e.entry.js.map +1 -1
  212. package/dist/core/p-5d76bbad.entry.js +2 -0
  213. package/dist/core/p-5d76bbad.entry.js.map +1 -0
  214. package/dist/core/p-60ffb73e.entry.js.map +1 -1
  215. package/dist/core/p-6308f1f2.entry.js +2 -0
  216. package/dist/core/p-6308f1f2.entry.js.map +1 -0
  217. package/dist/core/{p-c6dd4f47.entry.js → p-66f3f02b.entry.js} +2 -2
  218. package/dist/core/p-66f3f02b.entry.js.map +1 -0
  219. package/dist/core/p-69650186.entry.js.map +1 -1
  220. package/dist/core/p-6b34d98f.entry.js.map +1 -1
  221. package/dist/core/p-6f6bd657.entry.js.map +1 -1
  222. package/dist/core/{p-558552f8.entry.js → p-7881b94e.entry.js} +2 -2
  223. package/dist/core/p-7881b94e.entry.js.map +1 -0
  224. package/dist/core/p-7f632414.entry.js.map +1 -1
  225. package/dist/core/p-80cd0a2d.entry.js +2 -0
  226. package/dist/core/p-80cd0a2d.entry.js.map +1 -0
  227. package/dist/core/{p-e4551421.entry.js → p-8144e941.entry.js} +2 -2
  228. package/dist/core/p-8144e941.entry.js.map +1 -0
  229. package/dist/core/p-9cd04875.entry.js.map +1 -1
  230. package/dist/core/p-9e684c58.entry.js +2 -0
  231. package/dist/core/p-9e684c58.entry.js.map +1 -0
  232. package/dist/core/p-b24145f7.entry.js +2 -0
  233. package/dist/core/p-b24145f7.entry.js.map +1 -0
  234. package/dist/core/p-b3dec76d.entry.js.map +1 -1
  235. package/dist/core/{p-347ec49e.entry.js → p-bf89bcd3.entry.js} +2 -2
  236. package/dist/core/p-bf89bcd3.entry.js.map +1 -0
  237. package/dist/core/p-c4d3c18c.entry.js.map +1 -1
  238. package/dist/core/p-c85689e3.entry.js +2 -0
  239. package/dist/core/p-c85689e3.entry.js.map +1 -0
  240. package/dist/core/p-c8ce6147.entry.js +2 -0
  241. package/dist/core/p-c8ce6147.entry.js.map +1 -0
  242. package/dist/core/p-cadb531f.entry.js.map +1 -1
  243. package/dist/core/p-cc83692e.entry.js.map +1 -1
  244. package/dist/core/p-dd3c3e3c.entry.js.map +1 -1
  245. package/dist/core/p-ecfb2e6b.entry.js.map +1 -1
  246. package/dist/core/{p-001651fc.entry.js → p-fa7bc907.entry.js} +2 -2
  247. package/dist/core/p-fa7bc907.entry.js.map +1 -0
  248. package/dist/core/p-fbde8a26.entry.js +2 -0
  249. package/dist/core/p-fbde8a26.entry.js.map +1 -0
  250. package/dist/esm/core.js +1 -1
  251. package/dist/esm/ic-alert.entry.js +2 -0
  252. package/dist/esm/ic-alert.entry.js.map +1 -1
  253. package/dist/esm/ic-button_3.entry.js +25 -9
  254. package/dist/esm/ic-button_3.entry.js.map +1 -1
  255. package/dist/esm/ic-card.entry.js.map +1 -1
  256. package/dist/esm/ic-checkbox-group.entry.js.map +1 -1
  257. package/dist/esm/ic-checkbox.entry.js +2 -0
  258. package/dist/esm/ic-checkbox.entry.js.map +1 -1
  259. package/dist/esm/ic-chip.entry.js +62 -0
  260. package/dist/esm/ic-chip.entry.js.map +1 -0
  261. package/dist/esm/ic-data-row.entry.js +1 -1
  262. package/dist/esm/ic-data-row.entry.js.map +1 -1
  263. package/dist/esm/ic-divider.entry.js.map +1 -1
  264. package/dist/esm/ic-footer-link-group.entry.js.map +1 -1
  265. package/dist/esm/ic-footer-link.entry.js.map +1 -1
  266. package/dist/esm/ic-footer.entry.js +2 -2
  267. package/dist/esm/ic-footer.entry.js.map +1 -1
  268. package/dist/esm/ic-hero.entry.js.map +1 -1
  269. package/dist/esm/ic-input-component-container_3.entry.js +16 -16
  270. package/dist/esm/ic-input-component-container_3.entry.js.map +1 -1
  271. package/dist/esm/ic-link.entry.js.map +1 -1
  272. package/dist/esm/ic-navigation-button.entry.js.map +1 -1
  273. package/dist/esm/ic-navigation-group.entry.js.map +1 -1
  274. package/dist/esm/ic-navigation-item.entry.js +2 -2
  275. package/dist/esm/ic-navigation-item.entry.js.map +1 -1
  276. package/dist/esm/ic-navigation-menu.entry.js.map +1 -1
  277. package/dist/esm/ic-radio-group.entry.js.map +1 -1
  278. package/dist/esm/ic-radio-option.entry.js +10 -0
  279. package/dist/esm/ic-radio-option.entry.js.map +1 -1
  280. package/dist/esm/ic-search-bar.entry.js +1 -1
  281. package/dist/esm/ic-search-bar.entry.js.map +1 -1
  282. package/dist/esm/ic-select.entry.js +2 -2
  283. package/dist/esm/ic-select.entry.js.map +1 -1
  284. package/dist/esm/ic-side-navigation.entry.js.map +1 -1
  285. package/dist/esm/ic-step.entry.js +101 -13
  286. package/dist/esm/ic-step.entry.js.map +1 -1
  287. package/dist/esm/ic-stepper.entry.js +161 -40
  288. package/dist/esm/ic-stepper.entry.js.map +1 -1
  289. package/dist/esm/ic-tab-context.entry.js +6 -1
  290. package/dist/esm/ic-tab-context.entry.js.map +1 -1
  291. package/dist/esm/ic-tab.entry.js.map +1 -1
  292. package/dist/esm/ic-text-field.entry.js.map +1 -1
  293. package/dist/esm/ic-theme.entry.js +2 -2
  294. package/dist/esm/ic-theme.entry.js.map +1 -1
  295. package/dist/esm/ic-top-navigation.entry.js.map +1 -1
  296. package/dist/esm/index-1500de1f.js +4 -0
  297. package/dist/esm/loader.js +1 -1
  298. package/dist/types/components/ic-alert/ic-alert.d.ts +5 -1
  299. package/dist/types/components/ic-checkbox/ic-checkbox.d.ts +5 -1
  300. package/dist/types/components/ic-chip/ic-chip.d.ts +40 -0
  301. package/dist/types/components/ic-chip/ic-chip.test.a11y.d.ts +1 -0
  302. package/dist/types/components/ic-chip/ic-chip.types.d.ts +2 -0
  303. package/dist/types/components/ic-footer/ic-footer.d.ts +2 -2
  304. package/dist/types/components/ic-loading-indicator/ic-loading-indicator.d.ts +5 -0
  305. package/dist/types/components/ic-menu/ic-menu.d.ts +4 -4
  306. package/dist/types/components/ic-navigation-item/ic-navigation-item.d.ts +1 -1
  307. package/dist/types/components/ic-radio-option/ic-radio-option.d.ts +5 -1
  308. package/dist/types/components/ic-search-bar/ic-search-bar.d.ts +2 -2
  309. package/dist/types/components/ic-side-navigation/ic-side-navigation.d.ts +1 -1
  310. package/dist/types/components/ic-step/ic-step.d.ts +35 -6
  311. package/dist/types/components/ic-step/ic-step.types.d.ts +2 -0
  312. package/dist/types/components/ic-stepper/ic-stepper-test-examples.d.ts +4 -0
  313. package/dist/types/components/ic-stepper/ic-stepper.d.ts +23 -6
  314. package/dist/types/components/ic-tab/ic-tab.d.ts +1 -1
  315. package/dist/types/components/ic-tab-context/ic-tab-context.d.ts +6 -2
  316. package/dist/types/components/ic-theme/ic-theme.d.ts +2 -2
  317. package/dist/types/components/ic-tooltip/ic-tooltip.d.ts +4 -0
  318. package/dist/types/components.d.ts +134 -40
  319. package/dist/types/testspec.setup.d.ts +1 -0
  320. package/hydrate/index.js +512 -176
  321. package/package.json +3 -3
  322. package/dist/core/p-001651fc.entry.js.map +0 -1
  323. package/dist/core/p-2e9f3011.entry.js +0 -2
  324. package/dist/core/p-2e9f3011.entry.js.map +0 -1
  325. package/dist/core/p-347ec49e.entry.js.map +0 -1
  326. package/dist/core/p-39ae284e.entry.js +0 -2
  327. package/dist/core/p-39ae284e.entry.js.map +0 -1
  328. package/dist/core/p-558552f8.entry.js.map +0 -1
  329. package/dist/core/p-7093d214.entry.js +0 -2
  330. package/dist/core/p-7093d214.entry.js.map +0 -1
  331. package/dist/core/p-7577c6a3.entry.js +0 -2
  332. package/dist/core/p-7577c6a3.entry.js.map +0 -1
  333. package/dist/core/p-7b39977f.entry.js.map +0 -1
  334. package/dist/core/p-88b15005.entry.js +0 -2
  335. package/dist/core/p-88b15005.entry.js.map +0 -1
  336. package/dist/core/p-898607d0.entry.js +0 -2
  337. package/dist/core/p-898607d0.entry.js.map +0 -1
  338. package/dist/core/p-ac43322e.entry.js +0 -2
  339. package/dist/core/p-ac43322e.entry.js.map +0 -1
  340. package/dist/core/p-c6dd4f47.entry.js.map +0 -1
  341. package/dist/core/p-cf5e8a55.entry.js +0 -2
  342. package/dist/core/p-cf5e8a55.entry.js.map +0 -1
  343. package/dist/core/p-e4551421.entry.js.map +0 -1
@@ -502,7 +502,6 @@ video {
502
502
  .ic-loading-circular-outer {
503
503
  height: var(--circular-diameter);
504
504
  width: var(--circular-diameter);
505
-
506
505
  }
507
506
 
508
507
  .ic-loading-circular-outer.indeterminate {
@@ -600,7 +599,38 @@ video {
600
599
 
601
600
  stroke-dasharray: var(--stroke-dasharray), var(--stroke-dasharray);
602
601
  stroke-dashoffset: var(--stroke-dashoffset, var(--circular-indeterminate));
603
- stroke: var(--inner-color);
602
+ stroke: var(--compact-step-inner-color, var(--inner-color));
603
+ }
604
+
605
+ :host([inner-label]) .ic-loading-circular-inner {
606
+ display: grid;
607
+ }
608
+
609
+ :host([inner-label]) .ic-loading-circular-svg,
610
+ .inner-text {
611
+ grid-column: 1;
612
+ grid-row: 1;
613
+ }
614
+
615
+ :host(.not-required.compact-step-progress-indicator)
616
+ .ic-loading-circular-svg
617
+ circle:nth-child(2) {
618
+ stroke: var(--ic-architectural-300);
619
+ }
620
+
621
+ .inner-text {
622
+ display: flex;
623
+ align-items: center;
624
+ justify-content: center;
625
+ width: var(--ic-space-lg);
626
+ height: inherit;
627
+ overflow: hidden;
628
+ margin: auto;
629
+ color: var(--ic-theme-primary);
630
+ }
631
+
632
+ :host(.not-required.compact-step-progress-indicator) .inner-text {
633
+ color: var(--ic-color-tertiary-text);
604
634
  }
605
635
 
606
636
  /** High Contrast **/
@@ -624,4 +654,10 @@ video {
624
654
  .ic-loading-circular-svg circle:nth-child(2) {
625
655
  stroke: canvastext;
626
656
  }
657
+
658
+ :host(.not-required.compact-step-progress-indicator)
659
+ .ic-loading-circular-svg
660
+ circle:nth-child(2) {
661
+ stroke: GrayText;
662
+ }
627
663
  }
@@ -36,9 +36,18 @@ export class LoadingIndicator {
36
36
  // Sets the circular indicator line width - accounting for the circle size being altered using the CSS custom property
37
37
  this.setCircleLineWidth = () => {
38
38
  const { offsetWidth: width } = this.outerElement;
39
- if (width) {
40
- this.circularLineWidth = width * 0.1;
41
- this.circularDiameter = width;
39
+ if (this.host.classList.contains("compact-step-progress-indicator")) {
40
+ this.compactStepCircularLineWidth = 40;
41
+ }
42
+ if (width || this.compactStepCircularLineWidth === 40) {
43
+ this.circularLineWidth =
44
+ (this.compactStepCircularLineWidth === 40
45
+ ? this.compactStepCircularLineWidth
46
+ : width) * 0.1;
47
+ this.circularDiameter =
48
+ this.compactStepCircularLineWidth === 40
49
+ ? this.compactStepCircularLineWidth
50
+ : width;
42
51
  this.outerElement.style.setProperty("--circular-line-width", `${this.circularLineWidth}px`);
43
52
  }
44
53
  };
@@ -75,7 +84,7 @@ export class LoadingIndicator {
75
84
  }
76
85
  };
77
86
  this.setCircleXY = () => {
78
- if (this.circularDiameter) {
87
+ if (this.circularDiameter > 0) {
79
88
  const r = this.circularDiameter / 2;
80
89
  const x = r;
81
90
  const y = r;
@@ -100,6 +109,7 @@ export class LoadingIndicator {
100
109
  this.max = 100;
101
110
  this.label = undefined;
102
111
  this.description = "Loading";
112
+ this.innerLabel = undefined;
103
113
  this.labelDuration = 8000;
104
114
  this.size = "default";
105
115
  this.type = "circular";
@@ -109,6 +119,7 @@ export class LoadingIndicator {
109
119
  this.indeterminate = undefined;
110
120
  this.showSecond = false;
111
121
  this.circularLineWidth = undefined;
122
+ this.compactStepCircularLineWidth = 0;
112
123
  this.circularDiameter = undefined;
113
124
  }
114
125
  watchPropHandler() {
@@ -144,7 +155,9 @@ export class LoadingIndicator {
144
155
  render() {
145
156
  const { appearance, label, description, size } = this;
146
157
  const { x, y, r } = this.setCircleXY();
147
- return (h(Host, { class: { ["light"]: appearance === IcThemeForegroundEnum.Light } }, h("div", { class: "ic-loading-container" }, h("div", { ref: (el) => (this.outerElement = el), class: this.calcOuterClass(), role: "progressbar", "aria-labelledby": this.label && this.size !== "icon" && "ic-loading-label", "aria-label": description, "aria-valuenow": this.progress, "aria-valuemin": this.min, "aria-valuemax": this.max }, h("div", { ref: (el) => (this.innerElement = el), class: `ic-loading-${this.type}-inner` }, this.type === "circular" && (h("svg", { class: "ic-loading-circular-svg", viewBox: `0 0 ${this.circularDiameter || 0} ${this.circularDiameter || 0}` }, h("circle", { cx: `${x}`, cy: `${y}`, r: `${r}` }), h("circle", { cx: `${x}`, cy: `${y}`, r: `${r}` }))))), label && size !== "icon" && (h("ic-typography", { id: "ic-loading-label", class: "ic-loading-label", role: "status", variant: this.getLabelVariant() }, h("p", null, this.indicatorLabel))))));
158
+ return (h(Host, { class: { ["light"]: appearance === IcThemeForegroundEnum.Light } }, h("div", { class: "ic-loading-container" }, h("div", { ref: (el) => (this.outerElement = el), class: this.calcOuterClass(), role: "progressbar", "aria-labelledby": this.label && this.size !== "icon" && "ic-loading-label", "aria-label": description, "aria-valuenow": this.progress, "aria-valuemin": this.min, "aria-valuemax": this.max }, h("div", { ref: (el) => (this.innerElement = el), class: `ic-loading-${this.type}-inner` }, this.innerLabel &&
159
+ this.innerLabel !== undefined &&
160
+ this.size === "small" && (h("ic-typography", { variant: "subtitle-small", class: "inner-text" }, this.innerLabel)), this.type === "circular" && (h("svg", { class: "ic-loading-circular-svg", viewBox: `0 0 ${this.circularDiameter || 0} ${this.circularDiameter || 0}` }, h("circle", { cx: `${x}`, cy: `${y}`, r: `${r}` }), h("circle", { cx: `${x}`, cy: `${y}`, r: `${r}` }))))), label && size !== "icon" && (h("ic-typography", { id: "ic-loading-label", class: "ic-loading-label", role: "status", variant: this.getLabelVariant() }, h("p", null, this.indicatorLabel))))));
148
161
  }
149
162
  static get is() { return "ic-loading-indicator"; }
150
163
  static get encapsulation() { return "shadow"; }
@@ -248,6 +261,26 @@ export class LoadingIndicator {
248
261
  "reflect": false,
249
262
  "defaultValue": "\"Loading\""
250
263
  },
264
+ "innerLabel": {
265
+ "type": "number",
266
+ "mutable": false,
267
+ "complexType": {
268
+ "original": "number",
269
+ "resolved": "number",
270
+ "references": {}
271
+ },
272
+ "required": false,
273
+ "optional": true,
274
+ "docs": {
275
+ "tags": [{
276
+ "name": "internal",
277
+ "text": "The step number of a compact step, managed by ic-step."
278
+ }],
279
+ "text": ""
280
+ },
281
+ "attribute": "inner-label",
282
+ "reflect": false
283
+ },
251
284
  "labelDuration": {
252
285
  "type": "number",
253
286
  "mutable": false,
@@ -361,6 +394,7 @@ export class LoadingIndicator {
361
394
  "indeterminate": {},
362
395
  "showSecond": {},
363
396
  "circularLineWidth": {},
397
+ "compactStepCircularLineWidth": {},
364
398
  "circularDiameter": {}
365
399
  };
366
400
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ic-loading-indicator.js","sourceRoot":"","sources":["../../../src/components/ic-loading-indicator/ic-loading-indicator.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAMhF,OAAO,EACL,qBAAqB,GAEtB,MAAM,mBAAmB,CAAC;AAO3B,MAAM,OAAO,gBAAgB;;IAgFnB,gCAA2B,GAAG,GAAG,EAAE;MACzC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;QACvB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAClC,kBAAkB,EAClB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CACtB,CAAC;OACH;IACH,CAAC,CAAC;IAEM,aAAQ,GAAG,CACjB,UAAkB,EAClB,QAAiC,EACjC,EAAE;MACF,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE;QACtB,WAAW,CAAC,GAAG,EAAE;UACf,IAAI,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1C,UAAU,EAAE,CAAC;WACd;eAAM;YACL,UAAU,GAAG,CAAC,CAAC;WAChB;UACD,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QACvC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;MACzB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEM,oBAAe,GAAG,GAAG,EAAE;;MAC7B,IAAI,OAAO,GAA0B,IAAI,CAAC;MAC1C,MAAM,KAAK,GAAG,MAAA,IAAI,CAAC,YAAY,0CAAE,WAAW,CAAC;MAC7C,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,GAAG,EAAE,CAAC,EAAE;QACrE,OAAO,GAAG,OAAO,CAAC;OACnB;WAAM,IACL,IAAI,CAAC,IAAI,KAAK,OAAO;QACrB,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,IAAI,GAAG,CAAC,EAC1C;QACA,OAAO,GAAG,IAAI,CAAC;OAChB;MACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IAEF,sHAAsH;IAC9G,uBAAkB,GAAG,GAAG,EAAE;MAChC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;MACjD,IAAI,KAAK,EAAE;QACT,IAAI,CAAC,iBAAiB,GAAG,KAAK,GAAG,GAAG,CAAC;QACrC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,CACjC,uBAAuB,EACvB,GAAG,IAAI,CAAC,iBAAiB,IAAI,CAC9B,CAAC;OACH;IACH,CAAC,CAAC;IAEM,8BAAyB,GAAG,GAAG,EAAE;MACvC,IAAI,CAAC,IAAI,CAAC,YAAY;QAAE,OAAO;MAC/B,0CAA0C;MAE1C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;MACvE,MAAM,UAAU,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;MACjE,IAAI,CAAC,UAAU,GAAG,UAAU,GAAG,GAAG,CAAC;MACnC,IAAI,IAAI,CAAC,UAAU,EAAE;QACnB,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;OAC5C;WAAM;QACL,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;OACzC;MACD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,CACjC,gBAAgB,EAChB,GAAG,UAAU,GAAG,GAAG,GAAG,CACvB,CAAC;IACJ,CAAC,CAAC;IAEM,mBAAc,GAAG,GAAW,EAAE;MACpC,IAAI,GAAG,GAAG,cAAc,IAAI,CAAC,IAAI,QAAQ,CAAC;MAC1C,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAc,CAAC;MAC9D,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEM,gBAAW,GAAG,GAAS,EAAE;MAC/B,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;QAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,UAAU,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;UAC7B,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE;YAClC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;UAC9B,CAAC,CAAC,CAAC;SACJ;OACF;IACH,CAAC,CAAC;IAEM,gBAAW,GAAG,GAAuB,EAAE;MAC7C,IAAI,IAAI,CAAC,gBAAgB,EAAE;QACzB,MAAM,CAAC,GAAG,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;QACpC,MAAM,CAAC,GAAG,CAAC,CAAC;QACZ,MAAM,CAAC,GAAG,CAAC,CAAC;QACZ,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAClD,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAE9B,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;OAChC;MACD,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAC9B,CAAC,CAAC;IAEM,iBAAY,GAAG,CAAC,MAAc,EAAE,EAAE;MACxC,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC;MACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;MACvE,MAAM,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;MAEtE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAClC,oBAAoB,EACpB,GAAG,SAAS,IAAI,CACjB,CAAC;MAEF,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;QACvB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAClC,sBAAsB,EACtB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CACjB,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAClC,qBAAqB,EACrB,GAAG,UAAU,GAAG,SAAS,IAAI,CAC9B,CAAC;OACH;IACH,CAAC,CAAC;;eA7LqB,CAAC;eAMD,GAAG;;uBAWK,SAAS;yBAKP,IAAI;gBAKY,SAAS;gBAKT,UAAU;qBAKZ,KAAK;sBAKF,MAAM;;;sBAIzB,KAAK;;;;EAKpC,gBAAgB;IACd,IAAI,CAAC,WAAW,EAAE,CAAC;EACrB,CAAC;EAGD,oBAAoB;IAClB,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;MAC5B,IAAI,CAAC,2BAA2B,EAAE,CAAC;KACpC;EACH,CAAC;EAmID,iBAAiB;IACf,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC;IACjD,IAAI,CAAC,WAAW,EAAE,CAAC;EACrB,CAAC;EAED,gBAAgB;IACd,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;MAC5B,IAAI,CAAC,kBAAkB,EAAE,CAAC;MAC1B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CACrD,8CAA8C,CAC/C,CAAC;MACF,IAAI,CAAC,2BAA2B,EAAE,CAAC;KACpC;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;MACxD,IAAI,CAAC,yBAAyB,EAAE,CAAC;KAClC;EACH,CAAC;EAED,mBAAmB;IACjB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC;EACnD,CAAC;EAED,kBAAkB;IAChB,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;MACxD,IAAI,CAAC,yBAAyB,EAAE,CAAC;KAClC;EACH,CAAC;EAED,MAAM;IACJ,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IACtD,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAEvC,OAAO,CACL,EAAC,IAAI,IAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,UAAU,KAAK,qBAAqB,CAAC,KAAK,EAAE;MACpE,WAAK,KAAK,EAAC,sBAAsB;QAC/B,WACE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,EAAoB,CAAC,EACvD,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,EAC5B,IAAI,EAAC,aAAa,qBAEhB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,kBAAkB,gBAE9C,WAAW,mBACR,IAAI,CAAC,QAAQ,mBACb,IAAI,CAAC,GAAG,mBACR,IAAI,CAAC,GAAG;UAEvB,WACE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,EAAoB,CAAC,EACvD,KAAK,EAAE,cAAc,IAAI,CAAC,IAAI,QAAQ,IAErC,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,CAC3B,WACE,KAAK,EAAC,yBAAyB,EAC/B,OAAO,EAAE,OAAO,IAAI,CAAC,gBAAgB,IAAI,CAAC,IACxC,IAAI,CAAC,gBAAgB,IAAI,CAC3B,EAAE;YAEF,cAAQ,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,GAAW;YACpD,cAAQ,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,GAAW,CAChD,CACP,CACG,CACF;QACL,KAAK,IAAI,IAAI,KAAK,MAAM,IAAI,CAC3B,qBACE,EAAE,EAAC,kBAAkB,EACrB,KAAK,EAAC,kBAAkB,EACxB,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE;UAE/B,aAAI,IAAI,CAAC,cAAc,CAAK,CACd,CACjB,CACG,CACD,CACR,CAAC;EACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Element, h, Host, Prop, State, Watch } from \"@stencil/core\";\nimport {\n IcLoadingCircleXYR,\n IcLoadingSizes,\n IcLoadingTypes,\n} from \"./ic-loading-indicator.types\";\nimport {\n IcThemeForegroundEnum,\n IcThemeForegroundNoDefault,\n} from \"../../utils/types\";\n\n@Component({\n tag: \"ic-loading-indicator\",\n styleUrl: \"ic-loading-indicator.css\",\n shadow: true,\n})\nexport class LoadingIndicator {\n @Element() host: HTMLIcLoadingIndicatorElement;\n\n /**\n * The current amount of progress made.\n * If not provided, component acts as an indeterminate loading indicator.\n */\n @Prop() progress?: number;\n\n /**\n * The minimum value that the progress value can take.\n * Used to calculate the proportional width of the progress bar.\n */\n @Prop() min?: number = 0;\n\n /**\n * The maximum value that the progress value can take.\n * Used to calculate the proportional width of the progress bar.\n */\n @Prop() max?: number = 100;\n\n /**\n * The label to be displayed beneath the loading indicator.\n * Display a changing label by separating multiple messages with forward slashes.\n */\n @Prop() label?: string;\n\n /**\n * The description that will be set as the aria-label of the loading indicator when not using a visible label.\n */\n @Prop() description?: string = \"Loading\";\n\n /**\n * The time in milliseconds before the label changes.\n */\n @Prop() labelDuration?: number = 8000;\n\n /**\n * The size of the loading indicator.\n */\n @Prop({ reflect: true }) size?: IcLoadingSizes = \"default\";\n\n /**\n * The type of indicator, either linear or circular.\n */\n @Prop({ reflect: true }) type?: IcLoadingTypes = \"circular\";\n\n /**\n * If `true`, when linear, the full-width variant (i.e. without a border radius) will be displayed.\n */\n @Prop({ reflect: true }) fullWidth?: boolean = false;\n\n /**\n * The appearance of the loading indicator, e.g. dark or light.\n */\n @Prop() appearance?: IcThemeForegroundNoDefault = \"dark\";\n\n @State() indicatorLabel: string;\n @State() indeterminate: boolean;\n @State() showSecond: boolean = false;\n @State() circularLineWidth: number;\n @State() circularDiameter: number;\n\n @Watch(\"label\")\n watchPropHandler(): void {\n this.updateLabel();\n }\n\n @Watch(\"progress\")\n watchProgressHandler(): void {\n if (this.type === \"circular\") {\n this.updateCircularProgressMeter();\n }\n }\n\n private outerElement?: HTMLDivElement;\n private innerElement?: HTMLDivElement;\n private labelList: string[];\n private circularMeter: SVGCircleElement;\n\n private updateCircularProgressMeter = () => {\n if (!this.indeterminate) {\n this.circularMeter.style.setProperty(\n \"--progress-value\",\n String(this.progress)\n );\n }\n };\n\n private getLabel = (\n labelIndex: number,\n setLabel: (label: string) => void\n ) => {\n return new Promise(() => {\n setInterval(() => {\n if (labelIndex < this.labelList.length - 1) {\n labelIndex++;\n } else {\n labelIndex = 0;\n }\n setLabel(this.labelList[labelIndex]);\n }, this.labelDuration);\n });\n };\n\n private getLabelVariant = () => {\n let variant: \"label\" | \"h4\" | \"h2\" = \"h4\";\n const width = this.outerElement?.offsetWidth;\n if (this.size === \"small\" || (this.type === \"circular\" && width < 60)) {\n variant = \"label\";\n } else if (\n this.size === \"large\" ||\n (this.type === \"circular\" && width >= 120)\n ) {\n variant = \"h2\";\n }\n return variant;\n };\n\n // Sets the circular indicator line width - accounting for the circle size being altered using the CSS custom property\n private setCircleLineWidth = () => {\n const { offsetWidth: width } = this.outerElement;\n if (width) {\n this.circularLineWidth = width * 0.1;\n this.circularDiameter = width;\n this.outerElement.style.setProperty(\n \"--circular-line-width\",\n `${this.circularLineWidth}px`\n );\n }\n };\n\n private setLinearDeterminateWidth = () => {\n if (!this.innerElement) return;\n // Ensure progress cannot be out of bounds\n\n const progress = Math.min(this.max, Math.max(this.min, this.progress));\n const proportion = (progress - this.min) / (this.max - this.min);\n this.showSecond = proportion > 0.5;\n if (this.showSecond) {\n this.innerElement.classList.remove(\"clip\");\n } else {\n this.innerElement.classList.add(\"clip\");\n }\n this.innerElement.style.setProperty(\n \"--linear-width\",\n `${proportion * 100}%`\n );\n };\n\n private calcOuterClass = (): string => {\n let cls = `ic-loading-${this.type}-outer`;\n cls += this.indeterminate ? \" indeterminate\" : \" determinate\";\n return cls;\n };\n\n private updateLabel = (): void => {\n if (this.label !== undefined) {\n this.labelList = this.label.split(\"/\");\n const labelIndex = 0;\n this.indicatorLabel = this.labelList[labelIndex];\n if (this.labelList.length > 1) {\n this.getLabel(labelIndex, (label) => {\n this.indicatorLabel = label;\n });\n }\n }\n };\n\n private setCircleXY = (): IcLoadingCircleXYR => {\n if (this.circularDiameter) {\n const r = this.circularDiameter / 2;\n const x = r;\n const y = r;\n const nextRadius = r - this.circularLineWidth / 2;\n this.setDashSteps(nextRadius);\n\n return { x, y, r: nextRadius };\n }\n return { x: 0, y: 0, r: 0 };\n };\n\n private setDashSteps = (radius: number) => {\n const dashArray = 2 * Math.PI * radius;\n const progress = Math.min(Math.max(this.progress, this.min), this.max);\n const proportion = -1 - (progress - this.min) / (this.max - this.min);\n\n this.circularMeter.style.setProperty(\n \"--stroke-dasharray\",\n `${dashArray}px`\n );\n\n if (!this.indeterminate) {\n this.circularMeter.style.setProperty(\n \"--circular-steps-max\",\n String(this.max)\n );\n this.circularMeter.style.setProperty(\n \"--stroke-dashoffset\",\n `${proportion * dashArray}px`\n );\n }\n };\n\n componentWillLoad(): void {\n this.indeterminate = this.progress === undefined;\n this.updateLabel();\n }\n\n componentDidLoad(): void {\n if (this.type === \"circular\") {\n this.setCircleLineWidth();\n this.circularMeter = this.host.shadowRoot.querySelector(\n \".ic-loading-circular-svg circle:nth-child(2)\"\n );\n this.updateCircularProgressMeter();\n }\n\n if (Number(this.progress) >= 0 && this.type === \"linear\") {\n this.setLinearDeterminateWidth();\n }\n }\n\n componentWillUpdate(): void {\n this.indeterminate = this.progress === undefined;\n }\n\n componentDidUpdate(): void {\n if (Number(this.progress) >= 0 && this.type === \"linear\") {\n this.setLinearDeterminateWidth();\n }\n }\n\n render() {\n const { appearance, label, description, size } = this;\n const { x, y, r } = this.setCircleXY();\n\n return (\n <Host class={{ [\"light\"]: appearance === IcThemeForegroundEnum.Light }}>\n <div class=\"ic-loading-container\">\n <div\n ref={(el) => (this.outerElement = el as HTMLDivElement)}\n class={this.calcOuterClass()}\n role=\"progressbar\"\n aria-labelledby={\n this.label && this.size !== \"icon\" && \"ic-loading-label\"\n }\n aria-label={description}\n aria-valuenow={this.progress}\n aria-valuemin={this.min}\n aria-valuemax={this.max}\n >\n <div\n ref={(el) => (this.innerElement = el as HTMLDivElement)}\n class={`ic-loading-${this.type}-inner`}\n >\n {this.type === \"circular\" && (\n <svg\n class=\"ic-loading-circular-svg\"\n viewBox={`0 0 ${this.circularDiameter || 0} ${\n this.circularDiameter || 0\n }`}\n >\n <circle cx={`${x}`} cy={`${y}`} r={`${r}`}></circle>\n <circle cx={`${x}`} cy={`${y}`} r={`${r}`}></circle>\n </svg>\n )}\n </div>\n </div>\n {label && size !== \"icon\" && (\n <ic-typography\n id=\"ic-loading-label\"\n class=\"ic-loading-label\"\n role=\"status\"\n variant={this.getLabelVariant()}\n >\n <p>{this.indicatorLabel}</p>\n </ic-typography>\n )}\n </div>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ic-loading-indicator.js","sourceRoot":"","sources":["../../../src/components/ic-loading-indicator/ic-loading-indicator.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, h, Host, Prop, State, Watch } from \"@stencil/core\";\nimport {\n IcLoadingCircleXYR,\n IcLoadingSizes,\n IcLoadingTypes,\n} from \"./ic-loading-indicator.types\";\nimport {\n IcThemeForegroundEnum,\n IcThemeForegroundNoDefault,\n} from \"../../utils/types\";\n\n@Component({\n tag: \"ic-loading-indicator\",\n styleUrl: \"ic-loading-indicator.css\",\n shadow: true,\n})\nexport class LoadingIndicator {\n @Element() host: HTMLIcLoadingIndicatorElement;\n\n /**\n * The current amount of progress made.\n * If not provided, component acts as an indeterminate loading indicator.\n */\n @Prop() progress?: number;\n\n /**\n * The minimum value that the progress value can take.\n * Used to calculate the proportional width of the progress bar.\n */\n @Prop() min?: number = 0;\n\n /**\n * The maximum value that the progress value can take.\n * Used to calculate the proportional width of the progress bar.\n */\n @Prop() max?: number = 100;\n\n /**\n * The label to be displayed beneath the loading indicator.\n * Display a changing label by separating multiple messages with forward slashes.\n */\n @Prop() label?: string;\n\n /**\n * The description that will be set as the aria-label of the loading indicator when not using a visible label.\n */\n @Prop() description?: string = \"Loading\";\n\n /**\n * @internal The step number of a compact step, managed by ic-step.\n */\n @Prop() innerLabel?: number;\n\n /**\n * The time in milliseconds before the label changes.\n */\n @Prop() labelDuration?: number = 8000;\n\n /**\n * The size of the loading indicator.\n */\n @Prop({ reflect: true }) size?: IcLoadingSizes = \"default\";\n\n /**\n * The type of indicator, either linear or circular.\n */\n @Prop({ reflect: true }) type?: IcLoadingTypes = \"circular\";\n\n /**\n * If `true`, when linear, the full-width variant (i.e. without a border radius) will be displayed.\n */\n @Prop({ reflect: true }) fullWidth?: boolean = false;\n\n /**\n * The appearance of the loading indicator, e.g. dark or light.\n */\n @Prop() appearance?: IcThemeForegroundNoDefault = \"dark\";\n\n @State() indicatorLabel: string;\n @State() indeterminate: boolean;\n @State() showSecond: boolean = false;\n @State() circularLineWidth: number;\n @State() compactStepCircularLineWidth: number = 0;\n\n @State() circularDiameter: number;\n\n @Watch(\"label\")\n watchPropHandler(): void {\n this.updateLabel();\n }\n\n @Watch(\"progress\")\n watchProgressHandler(): void {\n if (this.type === \"circular\") {\n this.updateCircularProgressMeter();\n }\n }\n\n private outerElement?: HTMLDivElement;\n private innerElement?: HTMLDivElement;\n private labelList: string[];\n private circularMeter: SVGCircleElement;\n\n private updateCircularProgressMeter = () => {\n if (!this.indeterminate) {\n this.circularMeter.style.setProperty(\n \"--progress-value\",\n String(this.progress)\n );\n }\n };\n\n private getLabel = (\n labelIndex: number,\n setLabel: (label: string) => void\n ) => {\n return new Promise(() => {\n setInterval(() => {\n if (labelIndex < this.labelList.length - 1) {\n labelIndex++;\n } else {\n labelIndex = 0;\n }\n setLabel(this.labelList[labelIndex]);\n }, this.labelDuration);\n });\n };\n\n private getLabelVariant = () => {\n let variant: \"label\" | \"h4\" | \"h2\" = \"h4\";\n const width = this.outerElement?.offsetWidth;\n if (this.size === \"small\" || (this.type === \"circular\" && width < 60)) {\n variant = \"label\";\n } else if (\n this.size === \"large\" ||\n (this.type === \"circular\" && width >= 120)\n ) {\n variant = \"h2\";\n }\n return variant;\n };\n\n // Sets the circular indicator line width - accounting for the circle size being altered using the CSS custom property\n private setCircleLineWidth = () => {\n const { offsetWidth: width } = this.outerElement;\n if (this.host.classList.contains(\"compact-step-progress-indicator\")) {\n this.compactStepCircularLineWidth = 40;\n }\n if (width || this.compactStepCircularLineWidth === 40) {\n this.circularLineWidth =\n (this.compactStepCircularLineWidth === 40\n ? this.compactStepCircularLineWidth\n : width) * 0.1;\n this.circularDiameter =\n this.compactStepCircularLineWidth === 40\n ? this.compactStepCircularLineWidth\n : width;\n this.outerElement.style.setProperty(\n \"--circular-line-width\",\n `${this.circularLineWidth}px`\n );\n }\n };\n\n private setLinearDeterminateWidth = () => {\n if (!this.innerElement) return;\n // Ensure progress cannot be out of bounds\n\n const progress = Math.min(this.max, Math.max(this.min, this.progress));\n const proportion = (progress - this.min) / (this.max - this.min);\n this.showSecond = proportion > 0.5;\n if (this.showSecond) {\n this.innerElement.classList.remove(\"clip\");\n } else {\n this.innerElement.classList.add(\"clip\");\n }\n this.innerElement.style.setProperty(\n \"--linear-width\",\n `${proportion * 100}%`\n );\n };\n\n private calcOuterClass = (): string => {\n let cls = `ic-loading-${this.type}-outer`;\n cls += this.indeterminate ? \" indeterminate\" : \" determinate\";\n return cls;\n };\n\n private updateLabel = (): void => {\n if (this.label !== undefined) {\n this.labelList = this.label.split(\"/\");\n const labelIndex = 0;\n this.indicatorLabel = this.labelList[labelIndex];\n if (this.labelList.length > 1) {\n this.getLabel(labelIndex, (label) => {\n this.indicatorLabel = label;\n });\n }\n }\n };\n\n private setCircleXY = (): IcLoadingCircleXYR => {\n if (this.circularDiameter > 0) {\n const r = this.circularDiameter / 2;\n const x = r;\n const y = r;\n const nextRadius = r - this.circularLineWidth / 2;\n this.setDashSteps(nextRadius);\n\n return { x, y, r: nextRadius };\n }\n return { x: 0, y: 0, r: 0 };\n };\n\n private setDashSteps = (radius: number) => {\n const dashArray = 2 * Math.PI * radius;\n const progress = Math.min(Math.max(this.progress, this.min), this.max);\n const proportion = -1 - (progress - this.min) / (this.max - this.min);\n\n this.circularMeter.style.setProperty(\n \"--stroke-dasharray\",\n `${dashArray}px`\n );\n\n if (!this.indeterminate) {\n this.circularMeter.style.setProperty(\n \"--circular-steps-max\",\n String(this.max)\n );\n this.circularMeter.style.setProperty(\n \"--stroke-dashoffset\",\n `${proportion * dashArray}px`\n );\n }\n };\n\n componentWillLoad(): void {\n this.indeterminate = this.progress === undefined;\n this.updateLabel();\n }\n\n componentDidLoad(): void {\n if (this.type === \"circular\") {\n this.setCircleLineWidth();\n this.circularMeter = this.host.shadowRoot.querySelector(\n \".ic-loading-circular-svg circle:nth-child(2)\"\n );\n this.updateCircularProgressMeter();\n }\n\n if (Number(this.progress) >= 0 && this.type === \"linear\") {\n this.setLinearDeterminateWidth();\n }\n }\n\n componentWillUpdate(): void {\n this.indeterminate = this.progress === undefined;\n }\n\n componentDidUpdate(): void {\n if (Number(this.progress) >= 0 && this.type === \"linear\") {\n this.setLinearDeterminateWidth();\n }\n }\n\n render() {\n const { appearance, label, description, size } = this;\n const { x, y, r } = this.setCircleXY();\n\n return (\n <Host class={{ [\"light\"]: appearance === IcThemeForegroundEnum.Light }}>\n <div class=\"ic-loading-container\">\n <div\n ref={(el) => (this.outerElement = el as HTMLDivElement)}\n class={this.calcOuterClass()}\n role=\"progressbar\"\n aria-labelledby={\n this.label && this.size !== \"icon\" && \"ic-loading-label\"\n }\n aria-label={description}\n aria-valuenow={this.progress}\n aria-valuemin={this.min}\n aria-valuemax={this.max}\n >\n <div\n ref={(el) => (this.innerElement = el as HTMLDivElement)}\n class={`ic-loading-${this.type}-inner`}\n >\n {this.innerLabel &&\n this.innerLabel !== undefined &&\n this.size === \"small\" && (\n <ic-typography variant=\"subtitle-small\" class=\"inner-text\">\n {this.innerLabel}\n </ic-typography>\n )}\n {this.type === \"circular\" && (\n <svg\n class=\"ic-loading-circular-svg\"\n viewBox={`0 0 ${this.circularDiameter || 0} ${\n this.circularDiameter || 0\n }`}\n >\n <circle cx={`${x}`} cy={`${y}`} r={`${r}`}></circle>\n <circle cx={`${x}`} cy={`${y}`} r={`${r}`}></circle>\n </svg>\n )}\n </div>\n </div>\n {label && size !== \"icon\" && (\n <ic-typography\n id=\"ic-loading-label\"\n class=\"ic-loading-label\"\n role=\"status\"\n variant={this.getLabelVariant()}\n >\n <p>{this.indicatorLabel}</p>\n </ic-typography>\n )}\n </div>\n </Host>\n );\n }\n}\n"]}
@@ -10,7 +10,7 @@ export class Menu {
10
10
  this.handleMenuChange = (open, focusInput) => {
11
11
  if (!open)
12
12
  this.popperInstance.destroy();
13
- this.menuChange.emit({ open, focusInput });
13
+ this.icMenuStateChange.emit({ open, focusInput });
14
14
  if (!open && focusInput !== false) {
15
15
  this.inputEl.focus();
16
16
  this.preventClickOpen = false;
@@ -18,13 +18,13 @@ export class Menu {
18
18
  };
19
19
  this.setNextOptionValue = (selectedOptionIndex) => {
20
20
  if (this.ungroupedOptions[selectedOptionIndex + 1]) {
21
- this.optionSelect.emit({
21
+ this.icOptionSelect.emit({
22
22
  value: this.ungroupedOptions[selectedOptionIndex + 1].value,
23
23
  optionId: this.getOptionId(this.ungroupedOptions[selectedOptionIndex + 1].value),
24
24
  });
25
25
  }
26
26
  else {
27
- this.optionSelect.emit({
27
+ this.icOptionSelect.emit({
28
28
  value: this.ungroupedOptions[0].value,
29
29
  optionId: this.getOptionId(this.ungroupedOptions[0].value),
30
30
  });
@@ -32,13 +32,13 @@ export class Menu {
32
32
  };
33
33
  this.setPreviousOptionValue = (selectedOptionIndex) => {
34
34
  if (this.ungroupedOptions[selectedOptionIndex - 1]) {
35
- this.optionSelect.emit({
35
+ this.icOptionSelect.emit({
36
36
  value: this.ungroupedOptions[selectedOptionIndex - 1].value,
37
37
  optionId: this.getOptionId(this.ungroupedOptions[selectedOptionIndex - 1].value),
38
38
  });
39
39
  }
40
40
  else {
41
- this.optionSelect.emit({
41
+ this.icOptionSelect.emit({
42
42
  value: this.ungroupedOptions[this.ungroupedOptions.length - 1].value,
43
43
  optionId: this.getOptionId(this.ungroupedOptions[this.ungroupedOptions.length - 1].value),
44
44
  });
@@ -100,7 +100,7 @@ export class Menu {
100
100
  else {
101
101
  this.setHighlightedOption(0);
102
102
  this.menuOptionId.emit({
103
- optionId: getOptionId(0)
103
+ optionId: getOptionId(0),
104
104
  });
105
105
  }
106
106
  this.preventIncorrectTabOrder = false;
@@ -155,7 +155,7 @@ export class Menu {
155
155
  this.setInputValue = (highlightedOptionIndex) => {
156
156
  var _a;
157
157
  if (this.options[highlightedOptionIndex]) {
158
- this.optionSelect.emit({
158
+ this.icOptionSelect.emit({
159
159
  value: (_a = this.options[highlightedOptionIndex]) === null || _a === void 0 ? void 0 : _a.value,
160
160
  });
161
161
  this.optionHighlighted = undefined;
@@ -165,7 +165,7 @@ export class Menu {
165
165
  };
166
166
  this.handleOptionClick = (event) => {
167
167
  const { value, label } = event.target.dataset;
168
- this.optionSelect.emit({ value, label });
168
+ this.icOptionSelect.emit({ value, label });
169
169
  this.handleMenuChange(false);
170
170
  };
171
171
  this.handleBlur = (event) => {
@@ -200,13 +200,13 @@ export class Menu {
200
200
  this.keyboardNav = true;
201
201
  break;
202
202
  case "Home":
203
- this.optionSelect.emit({
203
+ this.icOptionSelect.emit({
204
204
  value: this.ungroupedOptions[0].value,
205
205
  });
206
206
  this.keyboardNav = true;
207
207
  break;
208
208
  case "End":
209
- this.optionSelect.emit({
209
+ this.icOptionSelect.emit({
210
210
  value: this.ungroupedOptions[this.ungroupedOptions.length - 1].value,
211
211
  });
212
212
  this.keyboardNav = true;
@@ -327,11 +327,11 @@ export class Menu {
327
327
  this.setInputValue(highlightedOptionIndex);
328
328
  }
329
329
  /**
330
- * If menu is opened with the mouse, emit menuChange custom event.
330
+ * If menu is opened with the mouse, emit icMenuStateChange custom event.
331
331
  */
332
332
  async handleClickOpen() {
333
333
  if (!this.preventClickOpen) {
334
- this.menuChange.emit({ open: !this.open });
334
+ this.icMenuStateChange.emit({ open: !this.open });
335
335
  this.keyboardNav = false;
336
336
  }
337
337
  this.preventClickOpen = false;
@@ -372,7 +372,7 @@ export class Menu {
372
372
  this.host.shadowRoot
373
373
  .querySelectorAll(".option")
374
374
  .forEach((option) => (optionsHeight += option.clientHeight));
375
- if (optionsHeight > 320) {
375
+ if (optionsHeight >= 320) {
376
376
  this.menu.classList.add("menu-scroll");
377
377
  }
378
378
  onComponentRequiredPropUndefined([
@@ -708,8 +708,8 @@ export class Menu {
708
708
  }
709
709
  static get events() {
710
710
  return [{
711
- "method": "optionSelect",
712
- "name": "optionSelect",
711
+ "method": "icOptionSelect",
712
+ "name": "icOptionSelect",
713
713
  "bubbles": true,
714
714
  "cancelable": true,
715
715
  "composed": true,
@@ -728,8 +728,8 @@ export class Menu {
728
728
  }
729
729
  }
730
730
  }, {
731
- "method": "menuChange",
732
- "name": "menuChange",
731
+ "method": "icMenuStateChange",
732
+ "name": "icMenuStateChange",
733
733
  "bubbles": true,
734
734
  "cancelable": true,
735
735
  "composed": true,
@@ -754,8 +754,11 @@ export class Menu {
754
754
  "cancelable": true,
755
755
  "composed": true,
756
756
  "docs": {
757
- "tags": [],
758
- "text": "Emitted when an option has been highlighted"
757
+ "tags": [{
758
+ "name": "internal",
759
+ "text": "Emitted when an option has been highlighted"
760
+ }],
761
+ "text": ""
759
762
  },
760
763
  "complexType": {
761
764
  "original": "IcMenuOptionIdEventDetail",
@@ -783,7 +786,7 @@ export class Menu {
783
786
  "return": "Promise<void>"
784
787
  },
785
788
  "docs": {
786
- "text": "If menu is opened with the mouse, emit menuChange custom event.",
789
+ "text": "If menu is opened with the mouse, emit icMenuStateChange custom event.",
787
790
  "tags": []
788
791
  }
789
792
  },
@@ -1 +1 @@
1
- {"version":3,"file":"ic-menu.js","sourceRoot":"","sources":["../../../src/components/ic-menu/ic-menu.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,OAAO,EACP,KAAK,EAEL,CAAC,EACD,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,MAAM,EACN,KAAK,EACL,KAAK,GACN,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,YAAY,EAA8B,MAAM,gBAAgB,CAAC;AAG1E,OAAO,KAAK,MAAM,6BAA6B,CAAC;AAChD,OAAO,EAAE,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;AAYvE,MAAM,OAAO,IAAI;;IAyGP,qBAAgB,GAAmB,EAAE,CAAC;IAG9C,sFAAsF;IAC9E,qBAAgB,GAAY,KAAK,CAAC;IAElC,qBAAgB,GAAG,CAAC,IAAa,EAAE,UAAoB,EAAQ,EAAE;MACvE,IAAI,CAAC,IAAI;QAAE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;MACzC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;MAE3C,IAAI,CAAC,IAAI,IAAI,UAAU,KAAK,KAAK,EAAE;QACjC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;OAC/B;IACH,CAAC,CAAC;IAEM,uBAAkB,GAAG,CAAC,mBAA2B,EAAQ,EAAE;MACjE,IAAI,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,GAAG,CAAC,CAAC,EAAE;QAClD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;UACrB,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC,KAAK;UAC3D,QAAQ,EAAE,IAAI,CAAC,WAAW,CACxB,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC,KAAK,CACrD;SACF,CAAC,CAAC;OACJ;WAAM;QACL,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;UACrB,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK;UACrC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;SAC3D,CAAC,CAAC;OACJ;IACH,CAAC,CAAC;IAEM,2BAAsB,GAAG,CAAC,mBAA2B,EAAQ,EAAE;MACrE,IAAI,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,GAAG,CAAC,CAAC,EAAE;QAClD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;UACrB,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC,KAAK;UAC3D,QAAQ,EAAE,IAAI,CAAC,WAAW,CACxB,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC,KAAK,CACrD;SACF,CAAC,CAAC;OACJ;WAAM;QACL,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;UACrB,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK;UACpE,QAAQ,EAAE,IAAI,CAAC,WAAW,CACxB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAC9D;SACF,CAAC,CAAC;OACJ;IACH,CAAC,CAAC;IAuCM,mBAAc,GAAG,CAAC,KAAoB,EAAQ,EAAE;MACtD,KAAK,CAAC,cAAc,EAAE,CAAC;MACvB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC;IAEM,yBAAoB,GAAG,CAAC,gBAAwB,EAAQ,EAAE;MAChE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,KAAK,IAAI,SAAS,CAAC;IAC7E,CAAC,CAAC;IAEM,kCAA6B,GAAG,CAAC,KAAoB,EAAE,EAAE;;MAC/D,MAAM,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CACzD,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CACxC,CAAC;MAEF,MAAM,kBAAkB,GAAG,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,OAAO,MAAK,OAAO,CAAC;MAE7D,QAAQ,KAAK,CAAC,GAAG,EAAE;QACjB,KAAK,WAAW;UACd,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;UACxB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;UAC3B,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;UAC7C,MAAM;QACR,KAAK,SAAS;UACZ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;UACxB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;UAC3B,IAAI,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,CAAC;UACjD,MAAM;QACR,KAAK,GAAG,CAAC;QACT,KAAK,OAAO;UACV,IAAK,KAAK,CAAC,MAAsB,CAAC,EAAE,KAAK,cAAc,EAAE;YACvD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;WAC7B;UACD,MAAM;QACR,KAAK,WAAW;UACd,IAAI,kBAAkB,EAAE;YACtB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;WACtB;UACD,MAAM;QACR;UACE,IAAI,kBAAkB,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;YAC7C,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;WACtB;UACD,MAAM;OACT;IACH,CAAC,CAAC;IAEM,iCAA4B,GAAG,CAAC,KAAoB,EAAE,EAAE;MAC9D,MAAM,sBAAsB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CACnD,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,iBAAiB,CACpD,CAAC;MAEF,MAAM,WAAW,GAAG,CAAC,KAAa,EAAU,EAAE,CAC5C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;MAEpE,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,KAAK,eAAe,CAAC;MAE9D,QAAQ,KAAK,CAAC,GAAG,EAAE;QACjB,KAAK,WAAW;UACd,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;UAC3B,IAAI,sBAAsB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACpD,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,GAAG,CAAC,CAAC,CAAC;YACtD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;cACrB,QAAQ,EAAE,WAAW,CAAC,sBAAsB,GAAG,CAAC,CAAC;aAClD,CAAC,CAAC;WACJ;eAAM;YACL,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;cACrB,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;aACzB,CAAC,CAAC;WACJ;UACD,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;UACtC,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;UACrC,MAAM;QACR,KAAK,SAAS;UACZ,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;UAC3B,IACE,sBAAsB,IAAI,CAAC;YAC3B,sBAAsB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAChD;YACA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACnD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;cACrB,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;aAC/C,CAAC,CAAC;WACJ;eAAM;YACL,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,GAAG,CAAC,CAAC,CAAC;YACtD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;cACrB,QAAQ,EAAE,WAAW,CAAC,sBAAsB,GAAG,CAAC,CAAC;aAClD,CAAC,CAAC;WACJ;UACD,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;UACtC,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;UACrC,MAAM;QACR,KAAK,OAAO;UACV,KAAK,CAAC,cAAc,EAAE,CAAC;UACvB,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC;UAC3C,MAAM;QACR,KAAK,QAAQ;UACX,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;UAC7B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;UAChD,MAAM;QACR,KAAK,OAAO,CAAC;QACb,KAAK,KAAK;UACR,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;UACrC,MAAM;QACR,KAAK,WAAW;UACd,IAAI,WAAW,EAAE;YACd,IAAI,CAAC,QAAmC,CAAC,QAAQ,EAAE,CAAC;YACrD,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;YACpC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;WAC9B;UACD,MAAM;QACR;UACE,IAAI,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;YACrC,IAAI,CAAC,QAAmC,CAAC,QAAQ,EAAE,CAAC;YACrD,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;YACpC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;WAC9B;UACD,MAAM;OACT;IACH,CAAC,CAAC;IAEM,kBAAa,GAAG,CAAC,sBAA8B,EAAE,EAAE;;MACzD,IAAI,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE;QACxC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;UACrB,KAAK,EAAE,MAAA,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,0CAAE,KAAK;SACnD,CAAC,CAAC;QACH,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACnC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;OACjD;MACD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC,CAAC;IAEM,sBAAiB,GAAG,CAAC,KAAY,EAAQ,EAAE;MACjD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAI,KAAK,CAAC,MAAwB,CAAC,OAAO,CAAC;MACjE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;MACzC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC,CAAC;IAEM,eAAU,GAAG,CAAC,KAAiB,EAAQ,EAAE;MAC/C,IAAI,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC,OAAO,EAAE;QACxC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,aAA4B,CAAC,EAAE;UAC3D,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SACrC;OACF;WAAM;QACL,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;OAC9B;IACH,CAAC,CAAC;IAEM,sBAAiB,GAAG,CAAC,KAAoB,EAAE,EAAE;MACnD,IAAI,IAAI,CAAC,cAAc,KAAK,WAAW,EAAE;QACvC,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;OACvC;IACH,CAAC,CAAC;IAEM,8BAAyB,GAAG,CAAC,KAAoB,EAAQ,EAAE;MACjE,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;MAC1B,MAAM,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CACzD,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CACxC,CAAC;MAEF,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC;MAE5D,QAAQ,KAAK,CAAC,GAAG,EAAE;QACjB,KAAK,SAAS;UACZ,KAAK,CAAC,cAAc,EAAE,CAAC;UACvB,IAAI,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,CAAC;UACjD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;UACxB,MAAM;QACR,KAAK,WAAW;UACd,KAAK,CAAC,cAAc,EAAE,CAAC;UACvB,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;UAC7C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;UACxB,MAAM;QACR,KAAK,MAAM;UACT,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YACrB,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK;WACtC,CAAC,CAAC;UACH,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;UACxB,MAAM;QACR,KAAK,KAAK;UACR,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YACrB,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK;WACrE,CAAC,CAAC;UACH,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;UACxB,MAAM;QACR,KAAK,GAAG,CAAC;QACT,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ;UACX,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;UAC7B,MAAM;QACR,KAAK,WAAW;UACd,IAAI,kBAAkB,EAAE;YACtB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;WACtB;UACD,MAAM;QACR,KAAK,OAAO;UACV,MAAM;QACR;UACE,IAAI,kBAAkB,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;YAC7C,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;WACtB;UACD,MAAM;OACT;IACH,CAAC,CAAC;IAEM,oBAAe,GAAG,CAAC,KAAoB,EAAQ,EAAE;MACvD,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE;QACzC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;OAC/B;IACH,CAAC,CAAC;IAEM,gBAAW,GAAG,CAAC,KAAa,EAAU,EAAE;MAC9C,OAAO,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;IACnC,CAAC,CAAC;IAEM,uBAAkB,GAAG,CAC3B,MAAoB,EACpB,YAA0B,EAClB,EAAE;MACV,IAAI,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;MAE7B,IAAI,MAAM,CAAC,WAAW,EAAE;QACtB,SAAS,GAAG,GAAG,SAAS,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC;OACnD;MAED,IAAI,YAAY,EAAE;QAChB,OAAO,GAAG,SAAS,KAAK,YAAY,CAAC,KAAK,QAAQ,CAAC;OACpD;WAAM;QACL,OAAO,SAAS,CAAC;OAClB;IACH,CAAC,CAAC;IAEM,qBAAgB,GAAG,CAAC,OAAuB,EAAkB,EAAE;MACrE,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CACvC,OAAO,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACrD,CAAC;IACJ,CAAC,CAAC;IAEM,iBAAY,GAAG,IAAI,CAAC,cAAc,KAAK,QAAQ,CAAC;IAEhD,qBAAgB,GAAG,CAAC,IAAsB,EAAE,EAAE;MACpD,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CACvC,wBAAwB,CACV,CAAC;MAEjB,IAAI,cAAc,EAAE;QAClB,MAAM,KAAK,GAAG,cAAc,CAAC,SAAS,GAAG,cAAc,CAAC,YAAY,CAAC;QACrE,IACE,KAAK,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY;UAC1C,KAAK,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,EAC1C;UACA,IAAI,CAAC,SAAS,GAAG,cAAc,CAAC,SAAS,CAAC;SAC3C;QACD,cAAc,CAAC,KAAK,EAAE,CAAC;OACxB;IACH,CAAC,CAAC;IAEM,yBAAoB,GAAG,GAAG,EAAE;MAClC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;QAC3B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;UAC1B,IAAI,MAAM,CAAC,QAAQ,EAAE;YACnB,MAAM,CAAC,QAAQ,CAAC,GAAG,CACjB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CACnE,CAAC;WACH;eAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;YAC3B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;WACpC;QACH,CAAC,CAAC,CAAC;OACJ;MACD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACvE,CAAC,CAAC;IAgGM,kBAAa,GAAG,CACtB,MAAoB,EACpB,KAAc,EACd,YAA2B,EACZ,EAAE;MACjB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;MAE7B,OAAO,CACL,UACE,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAClC,KAAK,EAAE;UACL,MAAM,EAAE,IAAI;UACZ,gBAAgB,EAAE,IAAI,CAAC,YAAY;YACjC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,wBAAwB,CAAC;cACnD,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,iBAAiB;YACzC,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK;UAC9C,yBAAyB,EACvB,MAAM,CAAC,WAAW;YAClB,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;YACvB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,WAAW;UACtC,iBAAiB,EAAE,MAAM,CAAC,QAAQ;SACnC,EACD,IAAI,EAAC,QAAQ,EACb,QAAQ,EACN,IAAI;UACJ,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,iBAAiB,CAAC;UACnE,IAAI,CAAC,WAAW;UACd,CAAC,CAAC,GAAG;UACL,CAAC,CAAC,IAAI,gBAEE,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,YAAY,CAAC,mBAC1C,MAAM,CAAC,KAAK,KAAK,KAAK,mBACtB,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EACjD,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAC/B,MAAM,EAAE,IAAI,CAAC,UAAU,EACvB,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,gBAClC,MAAM,CAAC,KAAK,gBACZ,MAAM,CAAC,KAAK;QAExB,WAAK,KAAK,EAAC,uBAAuB;UAChC,qBAAe,OAAO,EAAC,MAAM,iBAAa,MAAM;YAC9C,aAAI,MAAM,CAAC,KAAK,CAAK,CACP;UACf,MAAM,CAAC,WAAW,IAAI,CACrB,qBACE,EAAE,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,EACnD,KAAK,EAAC,oBAAoB,EAC1B,OAAO,EAAC,SAAS,iBACL,MAAM;YAElB,aAAI,MAAM,CAAC,WAAW,CAAK,CACb,CACjB,CACG;QACL,MAAM,CAAC,KAAK,KAAK,KAAK;UACrB,IAAI,CAAC,QAAQ,CAAC,OAAO,KAAK,eAAe,IAAI,CAC3C,YAAM,KAAK,EAAC,YAAY,EAAC,SAAS,EAAE,KAAK,GAAI,CAC9C,CACA,CACN,CAAC;IACJ,CAAC,CAAC;;;iBA3lByC,KAAK;;;0BAeH,WAAW;;;;;qBAyB3B,KAAK;+BAKK,IAAI;uBAEX,KAAK;;mCAEO,KAAK;oCACJ,KAAK;oCACL,KAAK;;EAGlD,mBAAmB;IACjB,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;IAC3B,IAAI,CAAC,oBAAoB,EAAE,CAAC;EAC9B,CAAC;EAkBD,mBAAmB;IACjB,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;EAC9B,CAAC;EAGD,kBAAkB;IAChB,MAAM,sBAAsB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CACnD,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,iBAAiB,CACpD,CAAC;IAEF,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC;EAC7C,CAAC;EAqDD;;KAEG;EAEH,KAAK,CAAC,eAAe;IACnB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;MAC1B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;MAC3C,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC1B;IACD,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;EAChC,CAAC;EAED;;;;KAIG;EAEH,KAAK,CAAC,kBAAkB,CAAC,KAAoB;IAC3C,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAEzB,IAAI,IAAI,CAAC,cAAc,KAAK,WAAW,EAAE;MACvC,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC;KAC3C;SAAM;MACL,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;MACxB,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC;KAC1C;EACH,CAAC;EAED;;KAEG;EAEH,KAAK,CAAC,oBAAoB;IACxB,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;EAC/B,CAAC;EAmRD,iBAAiB;;IACf,IAAI,CAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,OAAO,MAAK,eAAe,EAAE;MAC9C,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;MAC7B,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;KACtC;EACH,CAAC;EAED,iBAAiB;IACf,IAAI,CAAC,oBAAoB,EAAE,CAAC;EAC9B,CAAC;EAED,gBAAgB;IACd,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,CAAC,IAAI,CAAC,UAAU;OACjB,gBAAgB,CAAC,SAAS,CAAC;OAC3B,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,aAAa,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;IAC/D,IAAI,aAAa,GAAG,GAAG,EAAE;MACvB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;KACxC;IAED,gCAAgC,CAC9B;MACE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE;MACrC,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE;MAC3C,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE;MAC1C,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE;MAClD,mHAAmH;KACpH,EACD,MAAM,CACP,CAAC;EACJ,CAAC;EAED,kBAAkB;IAChB,IAAI,IAAI,CAAC,IAAI,EAAE;MACb,IAAI,CAAC,cAAc,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE;QAC3D,SAAS,EAAE,QAAQ;QACnB,SAAS,EAAE;UACT;YACE,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE;cACP,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;aACf;WACF;UACD;YACE,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE;cACP,kBAAkB,EAAE,CAAC,KAAK,CAAC;cAC3B,YAAY,EAAE,UAAU;aACzB;WACF;SACF;OACF,CAAC,CAAC;KACJ;EACH,CAAC;EAED,kBAAkB;IAChB,MAAM,mBAAmB,GAAY,IAAI,CAAC,OAAO,CAAC,IAAI,CACpD,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CACxC,CAAC;IAEF,MAAM,sBAAsB,GAC1B,IAAI,CAAC,iBAAiB,KAAK,IAAI;MAC/B,IAAI,CAAC,iBAAiB,KAAK,SAAS;MACpC,IAAI,CAAC,iBAAiB,KAAK,EAAE,CAAC;IAEhC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;MAC1C,IACE,IAAI,CAAC,KAAK;QACV,IAAI,CAAC,WAAW;QAChB,mBAAmB;QACnB,IAAI,CAAC,mBAAmB,EACxB;QACA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;OAClC;WAAM,IACL,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,eAAe;QACxC,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,OAAO,EAChC;QACA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;OACnB;WAAM,IACL,sBAAsB;QACtB,CAAC,IAAI,CAAC,uBAAuB;QAC7B,CAAC,IAAI,CAAC,wBAAwB,EAC9B;QACA,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CACtD,kBAAkB,IAAI,CAAC,iBAAiB,IAAI,CAC9B,CAAC;QAEjB,IAAI,aAAa,EAAE;UACjB,aAAa,CAAC,KAAK,EAAE,CAAC;SACvB;OACF;KACF;EACH,CAAC;EAgED,MAAM;;IACJ,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IAE/D,OAAO,CACL,EAAC,IAAI,IACH,KAAK,EAAE;QACL,YAAY,EAAE,SAAS;QACvB,UAAU,EAAE,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,OAAO,MAAK,OAAO;OAC9C,IAEA,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CACvB,UACE,EAAE,EAAE,MAAM,EACV,KAAK,EAAC,MAAM,EACZ,IAAI,EAAC,SAAS,gBACF,UAAU,2BAEpB,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAE9D,QAAQ,EACN,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,OAAO,MAAK,OAAO;QAC5D,CAAC,CAAC,GAAG;QACL,CAAC,CAAC,IAAI,EAEV,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,EAC7B,SAAS,EAAE,IAAI,CAAC,iBAAiB,EACjC,OAAO,EAAE,IAAI,CAAC,eAAe,EAC7B,MAAM,EAAE,IAAI,CAAC,UAAU,IAEtB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;MACpD,IAAI,MAAM,CAAC,QAAQ,EAAE;QACnB,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;UAC9B,OAAO,CACL;YACE,qBACE,KAAK,EAAC,oBAAoB,EAC1B,IAAI,EAAC,cAAc,EACnB,OAAO,EAAC,gBAAgB;cAExB,aAAI,MAAM,CAAC,KAAK,CAAK,CACP;YACf,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CACnC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,CAC/C,CACG,CACP,CAAC;SACH;aAAM;UACL,OAAO,IAAI,CAAC;SACb;OACF;WAAM;QACL,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;OAC1C;IACH,CAAC,CAAC,CACC,CACN,CACI,CACR,CAAC;EACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Prop,\n Method,\n Listen,\n State,\n Watch,\n} from \"@stencil/core\";\nimport { createPopper, Instance as PopperInstance } from \"@popperjs/core\";\n\nimport { IcActivationTypes, IcMenuOption } from \"../../utils/types\";\nimport Check from \"../../assets/check-icon.svg\";\nimport { onComponentRequiredPropUndefined } from \"../../utils/helpers\";\nimport {\n IcOptionSelectEventDetail,\n IcMenuChangeEventDetail,\n IcMenuOptionIdEventDetail,\n} from \"./ic-menu.types\";\n\n@Component({\n tag: \"ic-menu\",\n styleUrl: \"ic-menu.css\",\n shadow: true,\n})\nexport class Menu {\n @Element() host: HTMLIcMenuElement;\n\n /**\n * If `true`, the menu will be displayed open.\n */\n @Prop({ reflect: true }) open!: boolean;\n\n /**\n * The possible menu selection options.\n */\n @Prop() options!: IcMenuOption[];\n\n /**\n * If `true`, the small styling will be applied to the menu.\n */\n @Prop({ reflect: true }) small?: boolean = false;\n\n /**\n * The ID of the menu.\n */\n @Prop() menuId!: string;\n\n /**\n * The value of the currently selected option.\n */\n @Prop() value!: string;\n\n /**\n * Determines whether options manually set as values (by pressing 'Enter') when they receive focus using keyboard navigation.\n */\n @Prop() activationType?: IcActivationTypes = \"automatic\";\n\n /**\n * The reference to the input element.\n */\n @Prop() inputEl!: HTMLElement;\n\n /**\n * @internal - The parent element if ic-menu is nested inside another component.\n */\n @Prop() parentEl?: HTMLElement;\n\n /**\n * The label for the input element.\n */\n @Prop() inputLabel!: string;\n\n /**\n * The reference to an anchor element the menu will position itself from when rendered.\n */\n @Prop() anchorEl!: HTMLElement;\n\n /**\n * If `true`, the menu will fill the width of the container.\n */\n @Prop() fullWidth: boolean = false;\n\n /**\n * @internal If `true`, autofocus will be applied on selected item when menu is open.\n */\n @Prop() autoFocusOnSelected: boolean = true;\n\n @State() keyboardNav: boolean = false;\n @State() optionHighlighted: string;\n @State() focusFromSearchKeypress: boolean = false;\n @State() initialOptionsListRender: boolean = false;\n @State() preventIncorrectTabOrder: boolean = false;\n\n @Watch(\"options\")\n watchOptionsHandler(): void {\n this.ungroupedOptions = [];\n this.loadUngroupedOptions();\n }\n\n /**\n * Emitted when an option is selected.\n */\n @Event() optionSelect!: EventEmitter<IcOptionSelectEventDetail>;\n\n /**\n * Emitted when state of menu changes (i.e. open or close).\n */\n @Event() menuChange!: EventEmitter<IcMenuChangeEventDetail>;\n\n /**\n * Emitted when an option has been highlighted\n */\n @Event() menuOptionId: EventEmitter<IcMenuOptionIdEventDetail>;\n\n @Listen(\"icClear\", { target: \"document\" })\n handleClearListener(): void {\n this.optionHighlighted = \"\";\n }\n\n @Listen(\"icSubmitSearch\", { target: \"document\" })\n handleSubmitSearch(): void {\n const highlightedOptionIndex = this.options.findIndex(\n (option) => option.value === this.optionHighlighted\n );\n\n this.setInputValue(highlightedOptionIndex);\n }\n\n private menu: HTMLUListElement;\n private ungroupedOptions: IcMenuOption[] = [];\n private popperInstance: PopperInstance;\n\n // Prevents menu re-opening immediately after it is closed on blur when clicking input\n private preventClickOpen: boolean = false;\n\n private handleMenuChange = (open: boolean, focusInput?: boolean): void => {\n if (!open) this.popperInstance.destroy();\n this.menuChange.emit({ open, focusInput });\n\n if (!open && focusInput !== false) {\n this.inputEl.focus();\n this.preventClickOpen = false;\n }\n };\n\n private setNextOptionValue = (selectedOptionIndex: number): void => {\n if (this.ungroupedOptions[selectedOptionIndex + 1]) {\n this.optionSelect.emit({\n value: this.ungroupedOptions[selectedOptionIndex + 1].value,\n optionId: this.getOptionId(\n this.ungroupedOptions[selectedOptionIndex + 1].value\n ),\n });\n } else {\n this.optionSelect.emit({\n value: this.ungroupedOptions[0].value,\n optionId: this.getOptionId(this.ungroupedOptions[0].value),\n });\n }\n };\n\n private setPreviousOptionValue = (selectedOptionIndex: number): void => {\n if (this.ungroupedOptions[selectedOptionIndex - 1]) {\n this.optionSelect.emit({\n value: this.ungroupedOptions[selectedOptionIndex - 1].value,\n optionId: this.getOptionId(\n this.ungroupedOptions[selectedOptionIndex - 1].value\n ),\n });\n } else {\n this.optionSelect.emit({\n value: this.ungroupedOptions[this.ungroupedOptions.length - 1].value,\n optionId: this.getOptionId(\n this.ungroupedOptions[this.ungroupedOptions.length - 1].value\n ),\n });\n }\n };\n\n /**\n * If menu is opened with the mouse, emit menuChange custom event.\n */\n @Method()\n async handleClickOpen(): Promise<void> {\n if (!this.preventClickOpen) {\n this.menuChange.emit({ open: !this.open });\n this.keyboardNav = false;\n }\n this.preventClickOpen = false;\n }\n\n /**\n * Used alongside activationType\n * If menu is opened via keyboard navigation (i.e. Enter, ArrowUp or ArrowDown), emit optionSelect custom event.\n * @param {KeyboardEvent} event - keyboard event\n */\n @Method()\n async handleKeyboardOpen(event: KeyboardEvent): Promise<void> {\n this.keyboardNav = false;\n\n if (this.activationType === \"automatic\") {\n this.autoSetInputValueKeyboardOpen(event);\n } else {\n this.keyboardNav = true;\n this.manSetInputValueKeyboardOpen(event);\n }\n }\n\n /**\n * @internal Used to highlight the first option in the menu.\n */\n @Method()\n async handleSetFirstOption(): Promise<void> {\n this.setHighlightedOption(0);\n }\n\n private arrowBehaviour = (event: KeyboardEvent): void => {\n event.preventDefault();\n this.handleMenuChange(true);\n };\n\n private setHighlightedOption = (highlightedIndex: number): void => {\n this.optionHighlighted = this.options[highlightedIndex].value || undefined;\n };\n\n private autoSetInputValueKeyboardOpen = (event: KeyboardEvent) => {\n const selectedOptionIndex = this.ungroupedOptions.findIndex(\n (option) => option.value === this.value\n );\n\n const isSearchableSelect = this.inputEl?.tagName === \"INPUT\";\n\n switch (event.key) {\n case \"ArrowDown\":\n this.keyboardNav = true;\n this.arrowBehaviour(event);\n this.setNextOptionValue(selectedOptionIndex);\n break;\n case \"ArrowUp\":\n this.keyboardNav = true;\n this.arrowBehaviour(event);\n this.setPreviousOptionValue(selectedOptionIndex);\n break;\n case \" \":\n case \"Enter\":\n if ((event.target as HTMLElement).id !== \"clear-button\") {\n this.handleMenuChange(true);\n }\n break;\n case \"Backspace\":\n if (isSearchableSelect) {\n this.inputEl.focus();\n }\n break;\n default:\n if (isSearchableSelect && event.key !== \"Tab\") {\n this.inputEl.focus();\n }\n break;\n }\n };\n\n private manSetInputValueKeyboardOpen = (event: KeyboardEvent) => {\n const highlightedOptionIndex = this.options.findIndex(\n (option) => option.value === this.optionHighlighted\n );\n\n const getOptionId = (index: number): string =>\n Array.from(this.host.shadowRoot.querySelectorAll(\"li\"))[index].id;\n\n const isSearchBar = this.parentEl.tagName === \"IC-SEARCH-BAR\";\n\n switch (event.key) {\n case \"ArrowDown\":\n this.arrowBehaviour(event);\n if (highlightedOptionIndex < this.options.length - 1) {\n this.setHighlightedOption(highlightedOptionIndex + 1);\n this.menuOptionId.emit({\n optionId: getOptionId(highlightedOptionIndex + 1),\n });\n } else {\n this.setHighlightedOption(0);\n this.menuOptionId.emit({\n optionId: getOptionId(0)\n });\n }\n this.preventIncorrectTabOrder = false;\n this.focusFromSearchKeypress = false;\n break;\n case \"ArrowUp\":\n this.arrowBehaviour(event);\n if (\n highlightedOptionIndex <= 0 ||\n highlightedOptionIndex > this.options.length + 1\n ) {\n this.setHighlightedOption(this.options.length - 1);\n this.menuOptionId.emit({\n optionId: getOptionId(this.options.length - 1),\n });\n } else {\n this.setHighlightedOption(highlightedOptionIndex - 1);\n this.menuOptionId.emit({\n optionId: getOptionId(highlightedOptionIndex - 1),\n });\n }\n this.preventIncorrectTabOrder = false;\n this.focusFromSearchKeypress = false;\n break;\n case \"Enter\":\n event.preventDefault();\n this.setInputValue(highlightedOptionIndex);\n break;\n case \"Escape\":\n this.handleMenuChange(false);\n this.menuOptionId.emit({ optionId: undefined });\n break;\n case \"Shift\":\n case \"Tab\":\n this.preventIncorrectTabOrder = true;\n break;\n case \"Backspace\":\n if (isSearchBar) {\n (this.parentEl as HTMLIcSearchBarElement).setFocus();\n this.focusFromSearchKeypress = true;\n this.setHighlightedOption(0);\n }\n break;\n default:\n if (isSearchBar && event.key !== \"Tab\") {\n (this.parentEl as HTMLIcSearchBarElement).setFocus();\n this.focusFromSearchKeypress = true;\n this.setHighlightedOption(0);\n }\n break;\n }\n };\n\n private setInputValue = (highlightedOptionIndex: number) => {\n if (this.options[highlightedOptionIndex]) {\n this.optionSelect.emit({\n value: this.options[highlightedOptionIndex]?.value,\n });\n this.optionHighlighted = undefined;\n this.menuOptionId.emit({ optionId: undefined });\n }\n this.handleMenuChange(false);\n };\n\n private handleOptionClick = (event: Event): void => {\n const { value, label } = (event.target as HTMLLIElement).dataset;\n this.optionSelect.emit({ value, label });\n this.handleMenuChange(false);\n };\n\n private handleBlur = (event: FocusEvent): void => {\n if (event.relatedTarget !== this.inputEl) {\n if (!this.menu.contains(event.relatedTarget as HTMLElement)) {\n this.handleMenuChange(false, false);\n }\n } else {\n this.handleMenuChange(false);\n this.preventClickOpen = true;\n }\n };\n\n private handleMenuKeyDown = (event: KeyboardEvent) => {\n if (this.activationType === \"automatic\") {\n this.autoSetValueOnMenuKeyDown(event);\n }\n };\n\n private autoSetValueOnMenuKeyDown = (event: KeyboardEvent): void => {\n event.cancelBubble = true;\n const selectedOptionIndex = this.ungroupedOptions.findIndex(\n (option) => option.value === this.value\n );\n\n const isSearchableSelect = this.inputEl.tagName === \"INPUT\";\n\n switch (event.key) {\n case \"ArrowUp\":\n event.preventDefault();\n this.setPreviousOptionValue(selectedOptionIndex);\n this.keyboardNav = true;\n break;\n case \"ArrowDown\":\n event.preventDefault();\n this.setNextOptionValue(selectedOptionIndex);\n this.keyboardNav = true;\n break;\n case \"Home\":\n this.optionSelect.emit({\n value: this.ungroupedOptions[0].value,\n });\n this.keyboardNav = true;\n break;\n case \"End\":\n this.optionSelect.emit({\n value: this.ungroupedOptions[this.ungroupedOptions.length - 1].value,\n });\n this.keyboardNav = true;\n break;\n case \" \":\n case \"Enter\":\n case \"Escape\":\n this.handleMenuChange(false);\n break;\n case \"Backspace\":\n if (isSearchableSelect) {\n this.inputEl.focus();\n }\n break;\n case \"Shift\":\n break;\n default:\n if (isSearchableSelect && event.key !== \"Tab\") {\n this.inputEl.focus();\n }\n break;\n }\n };\n\n private handleMenuKeyUp = (event: KeyboardEvent): void => {\n if (event.key === \"Tab\" && event.shiftKey) {\n this.preventClickOpen = false;\n }\n };\n\n private getOptionId = (value: string): string => {\n return `${this.menuId}-${value}`;\n };\n\n private getOptionAriaLabel = (\n option: IcMenuOption,\n parentOption: IcMenuOption\n ): string => {\n let ariaLabel = option.label;\n\n if (option.description) {\n ariaLabel = `${ariaLabel}, ${option.description}`;\n }\n\n if (parentOption) {\n return `${ariaLabel}, ${parentOption.label} group`;\n } else {\n return ariaLabel;\n }\n };\n\n private getSortedOptions = (options: IcMenuOption[]): IcMenuOption[] => {\n return options.sort((optionA, optionB) =>\n optionA.recommended && !optionB.recommended ? -1 : 0\n );\n };\n\n private isManualMode = this.activationType === \"manual\";\n\n private scrollToSelected = (menu: HTMLUListElement) => {\n const selectedOption = menu.querySelector(\n \".option[aria-selected]\"\n ) as HTMLElement;\n\n if (selectedOption) {\n const elTop = selectedOption.offsetTop + selectedOption.offsetHeight;\n if (\n elTop > menu.scrollTop + menu.offsetHeight ||\n elTop < menu.scrollTop + menu.offsetHeight\n ) {\n menu.scrollTop = selectedOption.offsetTop;\n }\n selectedOption.focus();\n }\n };\n\n private loadUngroupedOptions = () => {\n if (this.options.length > 0) {\n this.options.map((option) => {\n if (option.children) {\n option.children.map(\n (option) => !option.disabled && this.ungroupedOptions.push(option)\n );\n } else if (!option.disabled) {\n this.ungroupedOptions.push(option);\n }\n });\n }\n this.ungroupedOptions = this.getSortedOptions(this.ungroupedOptions);\n };\n\n connectedCallback(): void {\n if (this.parentEl?.tagName === \"IC-SEARCH-BAR\") {\n this.setHighlightedOption(0);\n this.initialOptionsListRender = true;\n }\n }\n\n componentWillLoad(): void {\n this.loadUngroupedOptions();\n }\n\n componentDidLoad(): void {\n let optionsHeight = 0;\n this.host.shadowRoot\n .querySelectorAll(\".option\")\n .forEach((option) => (optionsHeight += option.clientHeight));\n if (optionsHeight > 320) {\n this.menu.classList.add(\"menu-scroll\");\n }\n\n onComponentRequiredPropUndefined(\n [\n { prop: this.open, propName: \"open\" },\n { prop: this.options, propName: \"options\" },\n { prop: this.menuId, propName: \"menu-id\" },\n { prop: this.inputLabel, propName: \"input-label\" },\n //NOTE: no check for value, input-el or anchor-el as otherwise get console errors on first load of select component\n ],\n \"Menu\"\n );\n }\n\n componentDidRender(): void {\n if (this.open) {\n this.popperInstance = createPopper(this.anchorEl, this.host, {\n placement: \"bottom\",\n modifiers: [\n {\n name: \"offset\",\n options: {\n offset: [0, 7],\n },\n },\n {\n name: \"flip\",\n options: {\n fallbackPlacements: [\"top\"],\n rootBoundary: \"viewport\",\n },\n },\n ],\n });\n }\n }\n\n componentDidUpdate(): void {\n const inputValueInOptions: boolean = this.options.some(\n (option) => option.value === this.value\n );\n\n const optionHighlightedIsSet =\n this.optionHighlighted !== null &&\n this.optionHighlighted !== undefined &&\n this.optionHighlighted !== \"\";\n\n if (this.open && this.options.length !== 0) {\n if (\n this.value &&\n this.keyboardNav &&\n inputValueInOptions &&\n this.autoFocusOnSelected\n ) {\n this.scrollToSelected(this.menu);\n } else if (\n this.inputEl.tagName !== \"IC-TEXT-FIELD\" &&\n this.inputEl.tagName !== \"INPUT\"\n ) {\n this.menu.focus();\n } else if (\n optionHighlightedIsSet &&\n !this.focusFromSearchKeypress &&\n !this.preventIncorrectTabOrder\n ) {\n const highlightedEl = this.host.shadowRoot.querySelector(\n `li[data-value=\"${this.optionHighlighted}\"]`\n ) as HTMLElement;\n\n if (highlightedEl) {\n highlightedEl.focus();\n }\n }\n }\n }\n\n private displayOption = (\n option: IcMenuOption,\n index?: number,\n parentOption?: IcMenuOption\n ): HTMLLIElement => {\n const { open, value } = this;\n\n return (\n <li\n id={this.getOptionId(option.value)}\n class={{\n option: true,\n \"focused-option\": this.isManualMode\n ? (this.keyboardNav || this.initialOptionsListRender) &&\n option.value === this.optionHighlighted\n : this.keyboardNav && option.value === value,\n \"last-recommended-option\":\n option.recommended &&\n this.options[index + 1] &&\n !this.options[index + 1].recommended,\n \"disabled-option\": option.disabled,\n }}\n role=\"option\"\n tabindex={\n open &&\n (option.value === value || option.value === this.optionHighlighted) &&\n this.keyboardNav\n ? \"0\"\n : \"-1\"\n }\n aria-label={this.getOptionAriaLabel(option, parentOption)}\n aria-selected={option.value === value}\n aria-disabled={option.disabled ? \"true\" : \"false\"}\n onClick={this.handleOptionClick}\n onBlur={this.handleBlur}\n onMouseDown={(event) => event.preventDefault()}\n data-value={option.value}\n data-label={option.label}\n >\n <div class=\"option-text-container\">\n <ic-typography variant=\"body\" aria-hidden=\"true\">\n <p>{option.label}</p>\n </ic-typography>\n {option.description && (\n <ic-typography\n id={`${this.getOptionId(option.value)}-description`}\n class=\"option-description\"\n variant=\"caption\"\n aria-hidden=\"true\"\n >\n <p>{option.description}</p>\n </ic-typography>\n )}\n </div>\n {option.value === value &&\n this.parentEl.tagName !== \"IC-SEARCH-BAR\" && (\n <span class=\"check-icon\" innerHTML={Check} />\n )}\n </li>\n );\n };\n\n render() {\n const { inputLabel, options, menuId, value, fullWidth } = this;\n\n return (\n <Host\n class={{\n \"full-width\": fullWidth,\n \"no-focus\": this.inputEl?.tagName === \"INPUT\",\n }}\n >\n {options.length !== 0 && (\n <ul\n id={menuId}\n class=\"menu\"\n role=\"listbox\"\n aria-label={inputLabel}\n aria-activedescendant={\n value != null && value !== \"\" ? this.getOptionId(value) : \"\"\n }\n tabindex={\n open && !this.keyboardNav && this.inputEl?.tagName !== \"INPUT\"\n ? \"0\"\n : \"-1\"\n }\n ref={(el) => (this.menu = el)}\n onKeyDown={this.handleMenuKeyDown}\n onKeyUp={this.handleMenuKeyUp}\n onBlur={this.handleBlur}\n >\n {this.getSortedOptions(options).map((option, index) => {\n if (option.children) {\n if (option.children.length > 0) {\n return (\n <div>\n <ic-typography\n class=\"option-group-title\"\n role=\"presentation\"\n variant=\"subtitle-small\"\n >\n <p>{option.label}</p>\n </ic-typography>\n {option.children.map((childOption) =>\n this.displayOption(childOption, index, option)\n )}\n </div>\n );\n } else {\n return null;\n }\n } else {\n return this.displayOption(option, index);\n }\n })}\n </ul>\n )}\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ic-menu.js","sourceRoot":"","sources":["../../../src/components/ic-menu/ic-menu.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Prop,\n Method,\n Listen,\n State,\n Watch,\n} from \"@stencil/core\";\nimport { createPopper, Instance as PopperInstance } from \"@popperjs/core\";\n\nimport { IcActivationTypes, IcMenuOption } from \"../../utils/types\";\nimport Check from \"../../assets/check-icon.svg\";\nimport { onComponentRequiredPropUndefined } from \"../../utils/helpers\";\nimport {\n IcOptionSelectEventDetail,\n IcMenuChangeEventDetail,\n IcMenuOptionIdEventDetail,\n} from \"./ic-menu.types\";\n\n@Component({\n tag: \"ic-menu\",\n styleUrl: \"ic-menu.css\",\n shadow: true,\n})\nexport class Menu {\n @Element() host: HTMLIcMenuElement;\n\n /**\n * If `true`, the menu will be displayed open.\n */\n @Prop({ reflect: true }) open!: boolean;\n\n /**\n * The possible menu selection options.\n */\n @Prop() options!: IcMenuOption[];\n\n /**\n * If `true`, the small styling will be applied to the menu.\n */\n @Prop({ reflect: true }) small?: boolean = false;\n\n /**\n * The ID of the menu.\n */\n @Prop() menuId!: string;\n\n /**\n * The value of the currently selected option.\n */\n @Prop() value!: string;\n\n /**\n * Determines whether options manually set as values (by pressing 'Enter') when they receive focus using keyboard navigation.\n */\n @Prop() activationType?: IcActivationTypes = \"automatic\";\n\n /**\n * The reference to the input element.\n */\n @Prop() inputEl!: HTMLElement;\n\n /**\n * @internal - The parent element if ic-menu is nested inside another component.\n */\n @Prop() parentEl?: HTMLElement;\n\n /**\n * The label for the input element.\n */\n @Prop() inputLabel!: string;\n\n /**\n * The reference to an anchor element the menu will position itself from when rendered.\n */\n @Prop() anchorEl!: HTMLElement;\n\n /**\n * If `true`, the menu will fill the width of the container.\n */\n @Prop() fullWidth: boolean = false;\n\n /**\n * @internal If `true`, autofocus will be applied on selected item when menu is open.\n */\n @Prop() autoFocusOnSelected: boolean = true;\n\n @State() keyboardNav: boolean = false;\n @State() optionHighlighted: string;\n @State() focusFromSearchKeypress: boolean = false;\n @State() initialOptionsListRender: boolean = false;\n @State() preventIncorrectTabOrder: boolean = false;\n\n @Watch(\"options\")\n watchOptionsHandler(): void {\n this.ungroupedOptions = [];\n this.loadUngroupedOptions();\n }\n\n /**\n * Emitted when an option is selected.\n */\n @Event() icOptionSelect!: EventEmitter<IcOptionSelectEventDetail>;\n\n /**\n * Emitted when state of menu changes (i.e. open or close).\n */\n @Event() icMenuStateChange!: EventEmitter<IcMenuChangeEventDetail>;\n\n /**\n * @internal Emitted when an option has been highlighted\n */\n @Event() menuOptionId: EventEmitter<IcMenuOptionIdEventDetail>;\n\n @Listen(\"icClear\", { target: \"document\" })\n handleClearListener(): void {\n this.optionHighlighted = \"\";\n }\n\n @Listen(\"icSubmitSearch\", { target: \"document\" })\n handleSubmitSearch(): void {\n const highlightedOptionIndex = this.options.findIndex(\n (option) => option.value === this.optionHighlighted\n );\n\n this.setInputValue(highlightedOptionIndex);\n }\n\n private menu: HTMLUListElement;\n private ungroupedOptions: IcMenuOption[] = [];\n private popperInstance: PopperInstance;\n\n // Prevents menu re-opening immediately after it is closed on blur when clicking input\n private preventClickOpen: boolean = false;\n\n private handleMenuChange = (open: boolean, focusInput?: boolean): void => {\n if (!open) this.popperInstance.destroy();\n this.icMenuStateChange.emit({ open, focusInput });\n\n if (!open && focusInput !== false) {\n this.inputEl.focus();\n this.preventClickOpen = false;\n }\n };\n\n private setNextOptionValue = (selectedOptionIndex: number): void => {\n if (this.ungroupedOptions[selectedOptionIndex + 1]) {\n this.icOptionSelect.emit({\n value: this.ungroupedOptions[selectedOptionIndex + 1].value,\n optionId: this.getOptionId(\n this.ungroupedOptions[selectedOptionIndex + 1].value\n ),\n });\n } else {\n this.icOptionSelect.emit({\n value: this.ungroupedOptions[0].value,\n optionId: this.getOptionId(this.ungroupedOptions[0].value),\n });\n }\n };\n\n private setPreviousOptionValue = (selectedOptionIndex: number): void => {\n if (this.ungroupedOptions[selectedOptionIndex - 1]) {\n this.icOptionSelect.emit({\n value: this.ungroupedOptions[selectedOptionIndex - 1].value,\n optionId: this.getOptionId(\n this.ungroupedOptions[selectedOptionIndex - 1].value\n ),\n });\n } else {\n this.icOptionSelect.emit({\n value: this.ungroupedOptions[this.ungroupedOptions.length - 1].value,\n optionId: this.getOptionId(\n this.ungroupedOptions[this.ungroupedOptions.length - 1].value\n ),\n });\n }\n };\n\n /**\n * If menu is opened with the mouse, emit icMenuStateChange custom event.\n */\n @Method()\n async handleClickOpen(): Promise<void> {\n if (!this.preventClickOpen) {\n this.icMenuStateChange.emit({ open: !this.open });\n this.keyboardNav = false;\n }\n this.preventClickOpen = false;\n }\n\n /**\n * Used alongside activationType\n * If menu is opened via keyboard navigation (i.e. Enter, ArrowUp or ArrowDown), emit optionSelect custom event.\n * @param {KeyboardEvent} event - keyboard event\n */\n @Method()\n async handleKeyboardOpen(event: KeyboardEvent): Promise<void> {\n this.keyboardNav = false;\n\n if (this.activationType === \"automatic\") {\n this.autoSetInputValueKeyboardOpen(event);\n } else {\n this.keyboardNav = true;\n this.manSetInputValueKeyboardOpen(event);\n }\n }\n\n /**\n * @internal Used to highlight the first option in the menu.\n */\n @Method()\n async handleSetFirstOption(): Promise<void> {\n this.setHighlightedOption(0);\n }\n\n private arrowBehaviour = (event: KeyboardEvent): void => {\n event.preventDefault();\n this.handleMenuChange(true);\n };\n\n private setHighlightedOption = (highlightedIndex: number): void => {\n this.optionHighlighted = this.options[highlightedIndex].value || undefined;\n };\n\n private autoSetInputValueKeyboardOpen = (event: KeyboardEvent) => {\n const selectedOptionIndex = this.ungroupedOptions.findIndex(\n (option) => option.value === this.value\n );\n\n const isSearchableSelect = this.inputEl?.tagName === \"INPUT\";\n\n switch (event.key) {\n case \"ArrowDown\":\n this.keyboardNav = true;\n this.arrowBehaviour(event);\n this.setNextOptionValue(selectedOptionIndex);\n break;\n case \"ArrowUp\":\n this.keyboardNav = true;\n this.arrowBehaviour(event);\n this.setPreviousOptionValue(selectedOptionIndex);\n break;\n case \" \":\n case \"Enter\":\n if ((event.target as HTMLElement).id !== \"clear-button\") {\n this.handleMenuChange(true);\n }\n break;\n case \"Backspace\":\n if (isSearchableSelect) {\n this.inputEl.focus();\n }\n break;\n default:\n if (isSearchableSelect && event.key !== \"Tab\") {\n this.inputEl.focus();\n }\n break;\n }\n };\n\n private manSetInputValueKeyboardOpen = (event: KeyboardEvent) => {\n const highlightedOptionIndex = this.options.findIndex(\n (option) => option.value === this.optionHighlighted\n );\n\n const getOptionId = (index: number): string =>\n Array.from(this.host.shadowRoot.querySelectorAll(\"li\"))[index].id;\n\n const isSearchBar = this.parentEl.tagName === \"IC-SEARCH-BAR\";\n\n switch (event.key) {\n case \"ArrowDown\":\n this.arrowBehaviour(event);\n if (highlightedOptionIndex < this.options.length - 1) {\n this.setHighlightedOption(highlightedOptionIndex + 1);\n this.menuOptionId.emit({\n optionId: getOptionId(highlightedOptionIndex + 1),\n });\n } else {\n this.setHighlightedOption(0);\n this.menuOptionId.emit({\n optionId: getOptionId(0),\n });\n }\n this.preventIncorrectTabOrder = false;\n this.focusFromSearchKeypress = false;\n break;\n case \"ArrowUp\":\n this.arrowBehaviour(event);\n if (\n highlightedOptionIndex <= 0 ||\n highlightedOptionIndex > this.options.length + 1\n ) {\n this.setHighlightedOption(this.options.length - 1);\n this.menuOptionId.emit({\n optionId: getOptionId(this.options.length - 1),\n });\n } else {\n this.setHighlightedOption(highlightedOptionIndex - 1);\n this.menuOptionId.emit({\n optionId: getOptionId(highlightedOptionIndex - 1),\n });\n }\n this.preventIncorrectTabOrder = false;\n this.focusFromSearchKeypress = false;\n break;\n case \"Enter\":\n event.preventDefault();\n this.setInputValue(highlightedOptionIndex);\n break;\n case \"Escape\":\n this.handleMenuChange(false);\n this.menuOptionId.emit({ optionId: undefined });\n break;\n case \"Shift\":\n case \"Tab\":\n this.preventIncorrectTabOrder = true;\n break;\n case \"Backspace\":\n if (isSearchBar) {\n (this.parentEl as HTMLIcSearchBarElement).setFocus();\n this.focusFromSearchKeypress = true;\n this.setHighlightedOption(0);\n }\n break;\n default:\n if (isSearchBar && event.key !== \"Tab\") {\n (this.parentEl as HTMLIcSearchBarElement).setFocus();\n this.focusFromSearchKeypress = true;\n this.setHighlightedOption(0);\n }\n break;\n }\n };\n\n private setInputValue = (highlightedOptionIndex: number) => {\n if (this.options[highlightedOptionIndex]) {\n this.icOptionSelect.emit({\n value: this.options[highlightedOptionIndex]?.value,\n });\n this.optionHighlighted = undefined;\n this.menuOptionId.emit({ optionId: undefined });\n }\n this.handleMenuChange(false);\n };\n\n private handleOptionClick = (event: Event): void => {\n const { value, label } = (event.target as HTMLLIElement).dataset;\n this.icOptionSelect.emit({ value, label });\n this.handleMenuChange(false);\n };\n\n private handleBlur = (event: FocusEvent): void => {\n if (event.relatedTarget !== this.inputEl) {\n if (!this.menu.contains(event.relatedTarget as HTMLElement)) {\n this.handleMenuChange(false, false);\n }\n } else {\n this.handleMenuChange(false);\n this.preventClickOpen = true;\n }\n };\n\n private handleMenuKeyDown = (event: KeyboardEvent) => {\n if (this.activationType === \"automatic\") {\n this.autoSetValueOnMenuKeyDown(event);\n }\n };\n\n private autoSetValueOnMenuKeyDown = (event: KeyboardEvent): void => {\n event.cancelBubble = true;\n const selectedOptionIndex = this.ungroupedOptions.findIndex(\n (option) => option.value === this.value\n );\n\n const isSearchableSelect = this.inputEl.tagName === \"INPUT\";\n\n switch (event.key) {\n case \"ArrowUp\":\n event.preventDefault();\n this.setPreviousOptionValue(selectedOptionIndex);\n this.keyboardNav = true;\n break;\n case \"ArrowDown\":\n event.preventDefault();\n this.setNextOptionValue(selectedOptionIndex);\n this.keyboardNav = true;\n break;\n case \"Home\":\n this.icOptionSelect.emit({\n value: this.ungroupedOptions[0].value,\n });\n this.keyboardNav = true;\n break;\n case \"End\":\n this.icOptionSelect.emit({\n value: this.ungroupedOptions[this.ungroupedOptions.length - 1].value,\n });\n this.keyboardNav = true;\n break;\n case \" \":\n case \"Enter\":\n case \"Escape\":\n this.handleMenuChange(false);\n break;\n case \"Backspace\":\n if (isSearchableSelect) {\n this.inputEl.focus();\n }\n break;\n case \"Shift\":\n break;\n default:\n if (isSearchableSelect && event.key !== \"Tab\") {\n this.inputEl.focus();\n }\n break;\n }\n };\n\n private handleMenuKeyUp = (event: KeyboardEvent): void => {\n if (event.key === \"Tab\" && event.shiftKey) {\n this.preventClickOpen = false;\n }\n };\n\n private getOptionId = (value: string): string => {\n return `${this.menuId}-${value}`;\n };\n\n private getOptionAriaLabel = (\n option: IcMenuOption,\n parentOption: IcMenuOption\n ): string => {\n let ariaLabel = option.label;\n\n if (option.description) {\n ariaLabel = `${ariaLabel}, ${option.description}`;\n }\n\n if (parentOption) {\n return `${ariaLabel}, ${parentOption.label} group`;\n } else {\n return ariaLabel;\n }\n };\n\n private getSortedOptions = (options: IcMenuOption[]): IcMenuOption[] => {\n return options.sort((optionA, optionB) =>\n optionA.recommended && !optionB.recommended ? -1 : 0\n );\n };\n\n private isManualMode = this.activationType === \"manual\";\n\n private scrollToSelected = (menu: HTMLUListElement) => {\n const selectedOption = menu.querySelector(\n \".option[aria-selected]\"\n ) as HTMLElement;\n\n if (selectedOption) {\n const elTop = selectedOption.offsetTop + selectedOption.offsetHeight;\n if (\n elTop > menu.scrollTop + menu.offsetHeight ||\n elTop < menu.scrollTop + menu.offsetHeight\n ) {\n menu.scrollTop = selectedOption.offsetTop;\n }\n selectedOption.focus();\n }\n };\n\n private loadUngroupedOptions = () => {\n if (this.options.length > 0) {\n this.options.map((option) => {\n if (option.children) {\n option.children.map(\n (option) => !option.disabled && this.ungroupedOptions.push(option)\n );\n } else if (!option.disabled) {\n this.ungroupedOptions.push(option);\n }\n });\n }\n this.ungroupedOptions = this.getSortedOptions(this.ungroupedOptions);\n };\n\n connectedCallback(): void {\n if (this.parentEl?.tagName === \"IC-SEARCH-BAR\") {\n this.setHighlightedOption(0);\n this.initialOptionsListRender = true;\n }\n }\n\n componentWillLoad(): void {\n this.loadUngroupedOptions();\n }\n\n componentDidLoad(): void {\n let optionsHeight = 0;\n this.host.shadowRoot\n .querySelectorAll(\".option\")\n .forEach((option) => (optionsHeight += option.clientHeight));\n if (optionsHeight >= 320) {\n this.menu.classList.add(\"menu-scroll\");\n }\n\n onComponentRequiredPropUndefined(\n [\n { prop: this.open, propName: \"open\" },\n { prop: this.options, propName: \"options\" },\n { prop: this.menuId, propName: \"menu-id\" },\n { prop: this.inputLabel, propName: \"input-label\" },\n //NOTE: no check for value, input-el or anchor-el as otherwise get console errors on first load of select component\n ],\n \"Menu\"\n );\n }\n\n componentDidRender(): void {\n if (this.open) {\n this.popperInstance = createPopper(this.anchorEl, this.host, {\n placement: \"bottom\",\n modifiers: [\n {\n name: \"offset\",\n options: {\n offset: [0, 7],\n },\n },\n {\n name: \"flip\",\n options: {\n fallbackPlacements: [\"top\"],\n rootBoundary: \"viewport\",\n },\n },\n ],\n });\n }\n }\n\n componentDidUpdate(): void {\n const inputValueInOptions: boolean = this.options.some(\n (option) => option.value === this.value\n );\n\n const optionHighlightedIsSet =\n this.optionHighlighted !== null &&\n this.optionHighlighted !== undefined &&\n this.optionHighlighted !== \"\";\n\n if (this.open && this.options.length !== 0) {\n if (\n this.value &&\n this.keyboardNav &&\n inputValueInOptions &&\n this.autoFocusOnSelected\n ) {\n this.scrollToSelected(this.menu);\n } else if (\n this.inputEl.tagName !== \"IC-TEXT-FIELD\" &&\n this.inputEl.tagName !== \"INPUT\"\n ) {\n this.menu.focus();\n } else if (\n optionHighlightedIsSet &&\n !this.focusFromSearchKeypress &&\n !this.preventIncorrectTabOrder\n ) {\n const highlightedEl = this.host.shadowRoot.querySelector(\n `li[data-value=\"${this.optionHighlighted}\"]`\n ) as HTMLElement;\n\n if (highlightedEl) {\n highlightedEl.focus();\n }\n }\n }\n }\n\n private displayOption = (\n option: IcMenuOption,\n index?: number,\n parentOption?: IcMenuOption\n ): HTMLLIElement => {\n const { open, value } = this;\n\n return (\n <li\n id={this.getOptionId(option.value)}\n class={{\n option: true,\n \"focused-option\": this.isManualMode\n ? (this.keyboardNav || this.initialOptionsListRender) &&\n option.value === this.optionHighlighted\n : this.keyboardNav && option.value === value,\n \"last-recommended-option\":\n option.recommended &&\n this.options[index + 1] &&\n !this.options[index + 1].recommended,\n \"disabled-option\": option.disabled,\n }}\n role=\"option\"\n tabindex={\n open &&\n (option.value === value || option.value === this.optionHighlighted) &&\n this.keyboardNav\n ? \"0\"\n : \"-1\"\n }\n aria-label={this.getOptionAriaLabel(option, parentOption)}\n aria-selected={option.value === value}\n aria-disabled={option.disabled ? \"true\" : \"false\"}\n onClick={this.handleOptionClick}\n onBlur={this.handleBlur}\n onMouseDown={(event) => event.preventDefault()}\n data-value={option.value}\n data-label={option.label}\n >\n <div class=\"option-text-container\">\n <ic-typography variant=\"body\" aria-hidden=\"true\">\n <p>{option.label}</p>\n </ic-typography>\n {option.description && (\n <ic-typography\n id={`${this.getOptionId(option.value)}-description`}\n class=\"option-description\"\n variant=\"caption\"\n aria-hidden=\"true\"\n >\n <p>{option.description}</p>\n </ic-typography>\n )}\n </div>\n {option.value === value &&\n this.parentEl.tagName !== \"IC-SEARCH-BAR\" && (\n <span class=\"check-icon\" innerHTML={Check} />\n )}\n </li>\n );\n };\n\n render() {\n const { inputLabel, options, menuId, value, fullWidth } = this;\n\n return (\n <Host\n class={{\n \"full-width\": fullWidth,\n \"no-focus\": this.inputEl?.tagName === \"INPUT\",\n }}\n >\n {options.length !== 0 && (\n <ul\n id={menuId}\n class=\"menu\"\n role=\"listbox\"\n aria-label={inputLabel}\n aria-activedescendant={\n value != null && value !== \"\" ? this.getOptionId(value) : \"\"\n }\n tabindex={\n open && !this.keyboardNav && this.inputEl?.tagName !== \"INPUT\"\n ? \"0\"\n : \"-1\"\n }\n ref={(el) => (this.menu = el)}\n onKeyDown={this.handleMenuKeyDown}\n onKeyUp={this.handleMenuKeyUp}\n onBlur={this.handleBlur}\n >\n {this.getSortedOptions(options).map((option, index) => {\n if (option.children) {\n if (option.children.length > 0) {\n return (\n <div>\n <ic-typography\n class=\"option-group-title\"\n role=\"presentation\"\n variant=\"subtitle-small\"\n >\n <p>{option.label}</p>\n </ic-typography>\n {option.children.map((childOption) =>\n this.displayOption(childOption, index, option)\n )}\n </div>\n );\n } else {\n return null;\n }\n } else {\n return this.displayOption(option, index);\n }\n })}\n </ul>\n )}\n </Host>\n );\n }\n}\n"]}
@@ -255,7 +255,7 @@ export class NavigationButton {
255
255
  "capture": false,
256
256
  "passive": false
257
257
  }, {
258
- "name": "icThemeChange",
258
+ "name": "themeChange",
259
259
  "method": "themeChangeHandler",
260
260
  "target": "document",
261
261
  "capture": false,
@@ -1 +1 @@
1
- {"version":3,"file":"ic-navigation-button.js","sourceRoot":"","sources":["../../../src/components/ic-navigation-button/ic-navigation-button.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,CAAC,EACD,MAAM,EACN,MAAM,GACP,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,gCAAgC,GACjC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAGL,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAG3B;;GAEG;AAOH,MAAM,OAAO,gBAAgB;;IAwCnB,wBAAmB,GAA6B,EAAE,CAAC;;;;;oBAlBrB,KAAK;;;gBAaT,QAAQ;6BAEb,uBAAuB,EAAE;;EAMtD,qBAAqB;IACnB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;EACrB,CAAC;EAGD,sBAAsB;IACpB,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;EACvB,CAAC;EAGD,kBAAkB,CAAC,EAAe;IAChC,MAAM,KAAK,GAAY,EAAE,CAAC,MAAM,CAAC;IACjC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC;EACtC,CAAC;EAED;;KAEG;EAEH,KAAK,CAAC,QAAQ;IACZ,IAAI,IAAI,CAAC,QAAQ,EAAE;MACjB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KAC1B;EACH,CAAC;EAED,iBAAiB;IACf,IAAI,CAAC,mBAAmB,GAAG,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE;MACpD,GAAG,iBAAiB;MACpB,OAAO;KACR,CAAC,CAAC;EACL,CAAC;EAED,gBAAgB;IACd,gCAAgC,CAC9B,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EACzC,mBAAmB,CACpB,CAAC;EACJ,CAAC;EAED,MAAM;IACJ,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;IAE7D,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,OAAO,GAAwB,MAAM,CAAC;IAC1C,IAAI,UAAU,GACZ,IAAI,CAAC,iBAAiB,CAAC;IACzB,IAAI,IAAI,GAAwB,OAAO,CAAC;IACxC,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;MACxB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;MACnB,OAAO,GAAG,UAAU,CAAC;MACrB,UAAU,GAAG,qBAAqB,CAAC,OAAO,CAAC;MAC3C,IAAI,GAAG,SAAS,CAAC;MACjB,SAAS,GAAG,IAAI,CAAC;MACjB,SAAS,GAAG,oBAAoB,CAAC;KAClC;IAED,MAAM,WAAW,GAAG;MAClB,OAAO;MACP,UAAU;MACV,IAAI;MACJ,IAAI;MACJ,MAAM;MACN,GAAG;MACH,QAAQ;MACR,cAAc;MACd,SAAS;KACV,CAAC;IAEF,OAAO,CACL,EAAC,IAAI,IAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;MACrD,+BACE,KAAK,EAAE,SAAS,gBACJ,IAAI,CAAC,KAAK,EACtB,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,IAC7B,WAAW,EACX,IAAI,CAAC,mBAAmB;QAE3B,KAAK;QACN,YAAM,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,GAAQ,CAC3B,CACP,CACR,CAAC;EACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import {\n Component,\n Element,\n Host,\n Prop,\n State,\n h,\n Listen,\n Method,\n} from \"@stencil/core\";\n\nimport {\n getThemeForegroundColor,\n inheritAttributes,\n onComponentRequiredPropUndefined,\n} from \"../../utils/helpers\";\nimport { IC_INHERITED_ARIA } from \"../../utils/constants\";\nimport {\n IcTheme,\n IcThemeForeground,\n IcThemeForegroundEnum,\n} from \"../../utils/types\";\nimport { IcNavButtonModes } from \"./ic-navigation-button.types\";\n\n/**\n * @slot icon - Content will be placed to the left of the button label.\n */\n\n@Component({\n tag: \"ic-navigation-button\",\n styleUrl: \"ic-navigation-button.css\",\n shadow: true,\n})\nexport class NavigationButton {\n @Element() el: HTMLIcNavigationButtonElement;\n\n /**\n * The label info to display.\n */\n @Prop() label!: string;\n /**\n * The URL that the link points to. This will render the button as an \"a\" tag.\n */\n @Prop() href?: string;\n /**\n * The place to display the linked URL, as the name for a browsing context (a tab, window, or iframe).\n */\n @Prop() target?: string;\n /**\n * The relationship of the linked URL as space-separated link types.\n */\n @Prop() rel?: string;\n /**\n * If `true`, the user can save the linked URL instead of navigating to it.\n */\n @Prop() download?: string | boolean = false;\n /**\n * The human language of the linked URL.\n */\n @Prop() hreflang?: string;\n /**\n * How much of the referrer to send when following the link.\n */\n @Prop() referrerpolicy?: ReferrerPolicy;\n\n /**\n * The display mode.\n */\n @State() mode: IcNavButtonModes = \"navbar\";\n\n @State() initialAppearance = getThemeForegroundColor();\n\n private buttonEl: HTMLIcButtonElement;\n private inheritedAttributes: { [k: string]: unknown } = {};\n\n @Listen(\"icNavigationMenuOpened\", { target: \"document\" })\n navBarMenuOpenHandler(): void {\n this.mode = \"menu\";\n }\n\n @Listen(\"icNavigationMenuClosed\", { target: \"document\" })\n navBarMenuCloseHandler(): void {\n this.mode = \"navbar\";\n }\n\n @Listen(\"icThemeChange\", { target: \"document\" })\n themeChangeHandler(ev: CustomEvent): void {\n const theme: IcTheme = ev.detail;\n this.initialAppearance = theme.mode;\n }\n\n /**\n * Sets focus on the native `button`\n */\n @Method()\n async setFocus(): Promise<void> {\n if (this.buttonEl) {\n this.buttonEl.setFocus();\n }\n }\n\n componentWillLoad(): void {\n this.inheritedAttributes = inheritAttributes(this.el, [\n ...IC_INHERITED_ARIA,\n \"title\",\n ]);\n }\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.label, propName: \"label\" }],\n \"Navigation Button\"\n );\n }\n\n render() {\n const { href, target, rel, download, referrerpolicy } = this;\n\n let label = \"\";\n let className = \"\";\n let variant: \"icon\" | \"tertiary\" = \"icon\";\n let appearance: IcThemeForeground | IcThemeForegroundEnum.Default =\n this.initialAppearance;\n let size: \"default\" | \"large\" = \"large\";\n let fullWidth = false;\n\n if (this.mode === \"menu\") {\n label = this.label;\n variant = \"tertiary\";\n appearance = IcThemeForegroundEnum.Default;\n size = \"default\";\n fullWidth = true;\n className = \"popout-menu-button\";\n }\n\n const buttonProps = {\n variant,\n appearance,\n size,\n href,\n target,\n rel,\n download,\n referrerpolicy,\n fullWidth,\n };\n\n return (\n <Host class={{ [\"in-side-menu\"]: this.mode === \"menu\" }}>\n <ic-button\n class={className}\n aria-label={this.label}\n ref={(el) => (this.buttonEl = el)}\n {...buttonProps}\n {...this.inheritedAttributes}\n >\n {label}\n <slot slot=\"icon\" name=\"icon\"></slot>\n </ic-button>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ic-navigation-button.js","sourceRoot":"","sources":["../../../src/components/ic-navigation-button/ic-navigation-button.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Host,\n Prop,\n State,\n h,\n Listen,\n Method,\n} from \"@stencil/core\";\n\nimport {\n getThemeForegroundColor,\n inheritAttributes,\n onComponentRequiredPropUndefined,\n} from \"../../utils/helpers\";\nimport { IC_INHERITED_ARIA } from \"../../utils/constants\";\nimport {\n IcTheme,\n IcThemeForeground,\n IcThemeForegroundEnum,\n} from \"../../utils/types\";\nimport { IcNavButtonModes } from \"./ic-navigation-button.types\";\n\n/**\n * @slot icon - Content will be placed to the left of the button label.\n */\n\n@Component({\n tag: \"ic-navigation-button\",\n styleUrl: \"ic-navigation-button.css\",\n shadow: true,\n})\nexport class NavigationButton {\n @Element() el: HTMLIcNavigationButtonElement;\n\n /**\n * The label info to display.\n */\n @Prop() label!: string;\n /**\n * The URL that the link points to. This will render the button as an \"a\" tag.\n */\n @Prop() href?: string;\n /**\n * The place to display the linked URL, as the name for a browsing context (a tab, window, or iframe).\n */\n @Prop() target?: string;\n /**\n * The relationship of the linked URL as space-separated link types.\n */\n @Prop() rel?: string;\n /**\n * If `true`, the user can save the linked URL instead of navigating to it.\n */\n @Prop() download?: string | boolean = false;\n /**\n * The human language of the linked URL.\n */\n @Prop() hreflang?: string;\n /**\n * How much of the referrer to send when following the link.\n */\n @Prop() referrerpolicy?: ReferrerPolicy;\n\n /**\n * The display mode.\n */\n @State() mode: IcNavButtonModes = \"navbar\";\n\n @State() initialAppearance = getThemeForegroundColor();\n\n private buttonEl: HTMLIcButtonElement;\n private inheritedAttributes: { [k: string]: unknown } = {};\n\n @Listen(\"icNavigationMenuOpened\", { target: \"document\" })\n navBarMenuOpenHandler(): void {\n this.mode = \"menu\";\n }\n\n @Listen(\"icNavigationMenuClosed\", { target: \"document\" })\n navBarMenuCloseHandler(): void {\n this.mode = \"navbar\";\n }\n\n @Listen(\"themeChange\", { target: \"document\" })\n themeChangeHandler(ev: CustomEvent): void {\n const theme: IcTheme = ev.detail;\n this.initialAppearance = theme.mode;\n }\n\n /**\n * Sets focus on the native `button`\n */\n @Method()\n async setFocus(): Promise<void> {\n if (this.buttonEl) {\n this.buttonEl.setFocus();\n }\n }\n\n componentWillLoad(): void {\n this.inheritedAttributes = inheritAttributes(this.el, [\n ...IC_INHERITED_ARIA,\n \"title\",\n ]);\n }\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.label, propName: \"label\" }],\n \"Navigation Button\"\n );\n }\n\n render() {\n const { href, target, rel, download, referrerpolicy } = this;\n\n let label = \"\";\n let className = \"\";\n let variant: \"icon\" | \"tertiary\" = \"icon\";\n let appearance: IcThemeForeground | IcThemeForegroundEnum.Default =\n this.initialAppearance;\n let size: \"default\" | \"large\" = \"large\";\n let fullWidth = false;\n\n if (this.mode === \"menu\") {\n label = this.label;\n variant = \"tertiary\";\n appearance = IcThemeForegroundEnum.Default;\n size = \"default\";\n fullWidth = true;\n className = \"popout-menu-button\";\n }\n\n const buttonProps = {\n variant,\n appearance,\n size,\n href,\n target,\n rel,\n download,\n referrerpolicy,\n fullWidth,\n };\n\n return (\n <Host class={{ [\"in-side-menu\"]: this.mode === \"menu\" }}>\n <ic-button\n class={className}\n aria-label={this.label}\n ref={(el) => (this.buttonEl = el)}\n {...buttonProps}\n {...this.inheritedAttributes}\n >\n {label}\n <slot slot=\"icon\" name=\"icon\"></slot>\n </ic-button>\n </Host>\n );\n }\n}\n"]}
@@ -314,13 +314,13 @@ export class NavigationGroup {
314
314
  "capture": false,
315
315
  "passive": false
316
316
  }, {
317
- "name": "icNavItemClicked",
317
+ "name": "navItemClicked",
318
318
  "method": "navItemClickHandler",
319
319
  "target": undefined,
320
320
  "capture": false,
321
321
  "passive": false
322
322
  }, {
323
- "name": "icThemeChange",
323
+ "name": "themeChange",
324
324
  "method": "themeChangeHandler",
325
325
  "target": "document",
326
326
  "capture": false,