@ukic/web-components 3.0.0-alpha.2 → 3.0.0-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (613) hide show
  1. package/dist/cjs/core.cjs.js +1 -1
  2. package/dist/cjs/{helpers-f1cf5156.js → helpers-69219f14.js} +24 -1
  3. package/dist/cjs/helpers-69219f14.js.map +1 -0
  4. package/dist/cjs/ic-accordion-group.cjs.entry.js +10 -10
  5. package/dist/cjs/ic-accordion-group.cjs.entry.js.map +1 -1
  6. package/dist/cjs/ic-accordion.cjs.entry.js +5 -5
  7. package/dist/cjs/ic-accordion.cjs.entry.js.map +1 -1
  8. package/dist/cjs/ic-alert.cjs.entry.js +7 -5
  9. package/dist/cjs/ic-alert.cjs.entry.js.map +1 -1
  10. package/dist/cjs/ic-back-to-top.cjs.entry.js +1 -1
  11. package/dist/cjs/ic-badge.cjs.entry.js +1 -1
  12. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js +1 -1
  13. package/dist/cjs/ic-breadcrumb.cjs.entry.js +1 -1
  14. package/dist/cjs/ic-button_3.cjs.entry.js +2 -2
  15. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  16. package/dist/cjs/ic-card-vertical.cjs.entry.js +22 -24
  17. package/dist/cjs/ic-card-vertical.cjs.entry.js.map +1 -1
  18. package/dist/cjs/ic-checkbox-group.cjs.entry.js +17 -6
  19. package/dist/cjs/ic-checkbox-group.cjs.entry.js.map +1 -1
  20. package/dist/cjs/ic-checkbox.cjs.entry.js +6 -4
  21. package/dist/cjs/ic-checkbox.cjs.entry.js.map +1 -1
  22. package/dist/cjs/ic-chip.cjs.entry.js +1 -1
  23. package/dist/cjs/ic-classification-banner.cjs.entry.js +1 -1
  24. package/dist/cjs/ic-classification-banner.cjs.entry.js.map +1 -1
  25. package/dist/cjs/ic-data-row.cjs.entry.js +1 -1
  26. package/dist/cjs/ic-dialog.cjs.entry.js +4 -2
  27. package/dist/cjs/ic-dialog.cjs.entry.js.map +1 -1
  28. package/dist/cjs/ic-divider.cjs.entry.js +71 -7
  29. package/dist/cjs/ic-divider.cjs.entry.js.map +1 -1
  30. package/dist/cjs/ic-empty-state.cjs.entry.js +1 -1
  31. package/dist/cjs/ic-footer-link-group.cjs.entry.js +2 -2
  32. package/dist/cjs/ic-footer-link-group.cjs.entry.js.map +1 -1
  33. package/dist/cjs/ic-footer-link.cjs.entry.js +2 -2
  34. package/dist/cjs/ic-footer-link.cjs.entry.js.map +1 -1
  35. package/dist/cjs/ic-footer.cjs.entry.js +2 -2
  36. package/dist/cjs/ic-footer.cjs.entry.js.map +1 -1
  37. package/dist/cjs/ic-hero.cjs.entry.js +2 -2
  38. package/dist/cjs/ic-hero.cjs.entry.js.map +1 -1
  39. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +4 -3
  40. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js.map +1 -1
  41. package/dist/cjs/ic-input-component-container_3.cjs.entry.js +450 -167
  42. package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +1 -1
  43. package/dist/cjs/ic-input-label_2.cjs.entry.js +9 -7
  44. package/dist/cjs/ic-input-label_2.cjs.entry.js.map +1 -1
  45. package/dist/cjs/ic-link.cjs.entry.js +1 -1
  46. package/dist/cjs/ic-menu-group.cjs.entry.js +3 -3
  47. package/dist/cjs/ic-menu-group.cjs.entry.js.map +1 -1
  48. package/dist/cjs/ic-menu-item.cjs.entry.js +11 -11
  49. package/dist/cjs/ic-menu-item.cjs.entry.js.map +1 -1
  50. package/dist/cjs/ic-navigation-button.cjs.entry.js +1 -1
  51. package/dist/cjs/ic-navigation-button.cjs.entry.js.map +1 -1
  52. package/dist/cjs/ic-navigation-group.cjs.entry.js +5 -4
  53. package/dist/cjs/ic-navigation-group.cjs.entry.js.map +1 -1
  54. package/dist/cjs/ic-navigation-item.cjs.entry.js +29 -2
  55. package/dist/cjs/ic-navigation-item.cjs.entry.js.map +1 -1
  56. package/dist/cjs/ic-navigation-menu.cjs.entry.js +1 -1
  57. package/dist/cjs/ic-page-header.cjs.entry.js +5 -5
  58. package/dist/cjs/ic-page-header.cjs.entry.js.map +1 -1
  59. package/dist/cjs/ic-pagination-item.cjs.entry.js +8 -11
  60. package/dist/cjs/ic-pagination-item.cjs.entry.js.map +1 -1
  61. package/dist/cjs/ic-pagination.cjs.entry.js +37 -15
  62. package/dist/cjs/ic-pagination.cjs.entry.js.map +1 -1
  63. package/dist/cjs/ic-popover-menu.cjs.entry.js +11 -11
  64. package/dist/cjs/ic-popover-menu.cjs.entry.js.map +1 -1
  65. package/dist/cjs/ic-radio-group.cjs.entry.js +15 -6
  66. package/dist/cjs/ic-radio-group.cjs.entry.js.map +1 -1
  67. package/dist/cjs/ic-radio-option.cjs.entry.js +31 -22
  68. package/dist/cjs/ic-radio-option.cjs.entry.js.map +1 -1
  69. package/dist/cjs/ic-search-bar.cjs.entry.js +12 -9
  70. package/dist/cjs/ic-search-bar.cjs.entry.js.map +1 -1
  71. package/dist/cjs/ic-select.cjs.entry.js +147 -37
  72. package/dist/cjs/ic-select.cjs.entry.js.map +1 -1
  73. package/dist/cjs/ic-side-navigation.cjs.entry.js +4 -3
  74. package/dist/cjs/ic-side-navigation.cjs.entry.js.map +1 -1
  75. package/dist/cjs/ic-status-tag.cjs.entry.js +1 -1
  76. package/dist/cjs/ic-step.cjs.entry.js +1 -1
  77. package/dist/cjs/ic-stepper.cjs.entry.js +1 -1
  78. package/dist/cjs/ic-switch.cjs.entry.js +7 -4
  79. package/dist/cjs/ic-switch.cjs.entry.js.map +1 -1
  80. package/dist/cjs/ic-tab-context.cjs.entry.js +2 -1
  81. package/dist/cjs/ic-tab-context.cjs.entry.js.map +1 -1
  82. package/dist/cjs/ic-tab-group.cjs.entry.js +1 -1
  83. package/dist/cjs/ic-tab-panel.cjs.entry.js +1 -1
  84. package/dist/cjs/ic-tab.cjs.entry.js +1 -1
  85. package/dist/cjs/ic-text-field.cjs.entry.js +2 -2
  86. package/dist/cjs/ic-text-field.cjs.entry.js.map +1 -1
  87. package/dist/cjs/ic-theme.cjs.entry.js +1 -1
  88. package/dist/cjs/ic-toast.cjs.entry.js +3 -3
  89. package/dist/cjs/ic-toast.cjs.entry.js.map +1 -1
  90. package/dist/cjs/ic-toggle-button-group.cjs.entry.js +1 -1
  91. package/dist/cjs/ic-toggle-button-group.cjs.entry.js.map +1 -1
  92. package/dist/cjs/ic-toggle-button.cjs.entry.js +1 -1
  93. package/dist/cjs/ic-top-navigation.cjs.entry.js +1 -1
  94. package/dist/cjs/ic-top-navigation.cjs.entry.js.map +1 -1
  95. package/dist/cjs/ic-typography.cjs.entry.js +1 -1
  96. package/dist/cjs/loader.cjs.js +1 -1
  97. package/dist/collection/ag-theme-icds.css +217 -0
  98. package/dist/collection/collection-manifest.json +1 -1
  99. package/dist/collection/components/ic-accordion/ic-accordion.css +21 -19
  100. package/dist/collection/components/ic-accordion/ic-accordion.js +27 -30
  101. package/dist/collection/components/ic-accordion/ic-accordion.js.map +1 -1
  102. package/dist/collection/components/ic-accordion/test/basic/ic-accordion.spec.js +3 -3
  103. package/dist/collection/components/ic-accordion/test/basic/ic-accordion.spec.js.map +1 -1
  104. package/dist/collection/components/ic-accordion-group/ic-accordion-group.css +2 -12
  105. package/dist/collection/components/ic-accordion-group/ic-accordion-group.js +18 -18
  106. package/dist/collection/components/ic-accordion-group/ic-accordion-group.js.map +1 -1
  107. package/dist/collection/components/ic-accordion-group/test/basic/ic-accordion-group.spec.js +3 -3
  108. package/dist/collection/components/ic-accordion-group/test/basic/ic-accordion-group.spec.js.map +1 -1
  109. package/dist/collection/components/ic-alert/ic-alert.css +25 -18
  110. package/dist/collection/components/ic-alert/ic-alert.js +48 -22
  111. package/dist/collection/components/ic-alert/ic-alert.js.map +1 -1
  112. package/dist/collection/components/ic-alert/test/basic/ic-alert.spec.js +1 -1
  113. package/dist/collection/components/ic-alert/test/basic/ic-alert.spec.js.map +1 -1
  114. package/dist/collection/components/ic-card-vertical/ic-card-vertical.css +98 -114
  115. package/dist/collection/components/ic-card-vertical/ic-card-vertical.js +46 -24
  116. package/dist/collection/components/ic-card-vertical/ic-card-vertical.js.map +1 -1
  117. package/dist/collection/components/ic-checkbox/ic-checkbox.css +47 -39
  118. package/dist/collection/components/ic-checkbox/ic-checkbox.js +29 -3
  119. package/dist/collection/components/ic-checkbox/ic-checkbox.js.map +1 -1
  120. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.css +15 -2
  121. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js +40 -3
  122. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js.map +1 -1
  123. package/dist/collection/components/ic-classification-banner/ic-classification-banner.css +13 -25
  124. package/dist/collection/components/ic-dialog/ic-dialog.css +16 -3
  125. package/dist/collection/components/ic-dialog/ic-dialog.js +26 -0
  126. package/dist/collection/components/ic-dialog/ic-dialog.js.map +1 -1
  127. package/dist/collection/components/ic-divider/ic-divider.css +341 -4
  128. package/dist/collection/components/ic-divider/ic-divider.js +235 -8
  129. package/dist/collection/components/ic-divider/ic-divider.js.map +1 -1
  130. package/dist/collection/components/ic-divider/ic-divider.types.js +2 -0
  131. package/dist/collection/components/ic-divider/ic-divider.types.js.map +1 -0
  132. package/dist/collection/components/ic-divider/test/basic/ic-divider.spec.js +89 -4
  133. package/dist/collection/components/ic-divider/test/basic/ic-divider.spec.js.map +1 -1
  134. package/dist/collection/components/ic-footer/ic-footer.css +20 -19
  135. package/dist/collection/components/ic-footer-link/ic-footer-link.css +2 -2
  136. package/dist/collection/components/ic-footer-link-group/ic-footer-link-group.css +9 -21
  137. package/dist/collection/components/ic-footer-link-group/ic-footer-link-group.js.map +1 -1
  138. package/dist/collection/components/ic-hero/ic-hero.css +17 -2
  139. package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.js +3 -2
  140. package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.js.map +1 -1
  141. package/dist/collection/components/ic-input-component-container/ic-input-component-container.css +4 -2
  142. package/dist/collection/components/ic-input-label/ic-input-label.css +13 -1
  143. package/dist/collection/components/ic-input-label/ic-input-label.js +45 -4
  144. package/dist/collection/components/ic-input-label/ic-input-label.js.map +1 -1
  145. package/dist/collection/components/ic-input-label/test/basic/ic-input-label.spec.js +35 -49
  146. package/dist/collection/components/ic-input-label/test/basic/ic-input-label.spec.js.map +1 -1
  147. package/dist/collection/components/ic-input-validation/ic-input-validation.css +5 -1
  148. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.css +1 -0
  149. package/dist/collection/components/ic-menu/ic-menu.css +78 -14
  150. package/dist/collection/components/ic-menu/ic-menu.js +488 -194
  151. package/dist/collection/components/ic-menu/ic-menu.js.map +1 -1
  152. package/dist/collection/components/ic-menu/test/basic/ic-menu.spec.js +381 -33
  153. package/dist/collection/components/ic-menu/test/basic/ic-menu.spec.js.map +1 -1
  154. package/dist/collection/components/ic-menu-group/ic-menu-group.css +2 -2
  155. package/dist/collection/components/ic-menu-group/ic-menu-group.js +1 -1
  156. package/dist/collection/components/ic-menu-group/ic-menu-group.js.map +1 -1
  157. package/dist/collection/components/ic-menu-item/ic-menu-item.css +32 -28
  158. package/dist/collection/components/ic-menu-item/ic-menu-item.js +11 -11
  159. package/dist/collection/components/ic-menu-item/ic-menu-item.js.map +1 -1
  160. package/dist/collection/components/ic-menu-item/test/basic/ic-menu-item.spec.js +1 -1
  161. package/dist/collection/components/ic-menu-item/test/basic/ic-menu-item.spec.js.map +1 -1
  162. package/dist/collection/components/ic-navigation-button/ic-navigation-button.js.map +1 -1
  163. package/dist/collection/components/ic-navigation-group/ic-navigation-group.css +1 -1
  164. package/dist/collection/components/ic-navigation-group/ic-navigation-group.js +3 -2
  165. package/dist/collection/components/ic-navigation-group/ic-navigation-group.js.map +1 -1
  166. package/dist/collection/components/ic-navigation-item/ic-navigation-item.js +31 -3
  167. package/dist/collection/components/ic-navigation-item/ic-navigation-item.js.map +1 -1
  168. package/dist/collection/components/ic-navigation-item/test/basic/ic-navigation-item.spec.js +12 -0
  169. package/dist/collection/components/ic-navigation-item/test/basic/ic-navigation-item.spec.js.map +1 -1
  170. package/dist/collection/components/ic-page-header/ic-page-header.css +5 -2
  171. package/dist/collection/components/ic-page-header/ic-page-header.js +3 -3
  172. package/dist/collection/components/ic-page-header/ic-page-header.js.map +1 -1
  173. package/dist/collection/components/ic-pagination/ic-pagination.css +15 -0
  174. package/dist/collection/components/ic-pagination/ic-pagination.js +77 -37
  175. package/dist/collection/components/ic-pagination/ic-pagination.js.map +1 -1
  176. package/dist/collection/components/ic-pagination/test/basic/ic-pagination.spec.js +1 -1
  177. package/dist/collection/components/ic-pagination/test/basic/ic-pagination.spec.js.map +1 -1
  178. package/dist/collection/components/ic-pagination-item/ic-pagination-item.css +26 -6
  179. package/dist/collection/components/ic-pagination-item/ic-pagination-item.js +48 -33
  180. package/dist/collection/components/ic-pagination-item/ic-pagination-item.js.map +1 -1
  181. package/dist/collection/components/ic-popover-menu/ic-popover-menu.css +5 -5
  182. package/dist/collection/components/ic-popover-menu/ic-popover-menu.js +33 -9
  183. package/dist/collection/components/ic-popover-menu/ic-popover-menu.js.map +1 -1
  184. package/dist/collection/components/ic-radio-group/ic-radio-group.css +17 -1
  185. package/dist/collection/components/ic-radio-group/ic-radio-group.js +38 -3
  186. package/dist/collection/components/ic-radio-group/ic-radio-group.js.map +1 -1
  187. package/dist/collection/components/ic-radio-group/test/basic/ic-radio-group.spec.js +2 -2
  188. package/dist/collection/components/ic-radio-group/test/basic/ic-radio-group.spec.js.map +1 -1
  189. package/dist/collection/components/ic-radio-option/ic-radio-option.css +35 -25
  190. package/dist/collection/components/ic-radio-option/ic-radio-option.js +54 -21
  191. package/dist/collection/components/ic-radio-option/ic-radio-option.js.map +1 -1
  192. package/dist/collection/components/ic-search-bar/ic-search-bar.css +41 -5
  193. package/dist/collection/components/ic-search-bar/ic-search-bar.js +34 -7
  194. package/dist/collection/components/ic-search-bar/ic-search-bar.js.map +1 -1
  195. package/dist/collection/components/ic-select/ic-select.css +37 -16
  196. package/dist/collection/components/ic-select/ic-select.js +191 -43
  197. package/dist/collection/components/ic-select/ic-select.js.map +1 -1
  198. package/dist/collection/components/ic-select/test/basic/ic-select.spec.js +160 -1
  199. package/dist/collection/components/ic-select/test/basic/ic-select.spec.js.map +1 -1
  200. package/dist/collection/components/ic-side-navigation/ic-side-navigation.css +0 -1
  201. package/dist/collection/components/ic-side-navigation/ic-side-navigation.js +2 -1
  202. package/dist/collection/components/ic-side-navigation/ic-side-navigation.js.map +1 -1
  203. package/dist/collection/components/ic-switch/ic-switch.css +27 -30
  204. package/dist/collection/components/ic-switch/ic-switch.js +29 -2
  205. package/dist/collection/components/ic-switch/ic-switch.js.map +1 -1
  206. package/dist/collection/components/ic-tab-context/ic-tab-context.js +2 -1
  207. package/dist/collection/components/ic-tab-context/ic-tab-context.js.map +1 -1
  208. package/dist/collection/components/ic-text-field/ic-text-field.css +7 -4
  209. package/dist/collection/components/ic-toast/ic-toast.css +25 -16
  210. package/dist/collection/components/ic-toast/ic-toast.js +1 -2
  211. package/dist/collection/components/ic-toast/ic-toast.js.map +1 -1
  212. package/dist/collection/components/ic-toast/test/basic/ic-toast.spec.js +12 -12
  213. package/dist/collection/components/ic-toast/test/basic/ic-toast.spec.js.map +1 -1
  214. package/dist/collection/components/ic-toggle-button-group/ic-toggle-button-group.js +1 -1
  215. package/dist/collection/components/ic-toggle-button-group/ic-toggle-button-group.js.map +1 -1
  216. package/dist/collection/components/ic-toggle-button-group/test/ic-toggle-button-group.spec.js +1 -0
  217. package/dist/collection/components/ic-toggle-button-group/test/ic-toggle-button-group.spec.js.map +1 -1
  218. package/dist/collection/components/ic-top-navigation/ic-top-navigation.js.map +1 -1
  219. package/dist/collection/utils/helpers.js +20 -0
  220. package/dist/collection/utils/helpers.js.map +1 -1
  221. package/dist/collection/utils/types.js.map +1 -1
  222. package/dist/components/helpers.js +22 -1
  223. package/dist/components/helpers.js.map +1 -1
  224. package/dist/components/ic-accordion-group.js +11 -11
  225. package/dist/components/ic-accordion-group.js.map +1 -1
  226. package/dist/components/ic-accordion.js +5 -5
  227. package/dist/components/ic-accordion.js.map +1 -1
  228. package/dist/components/ic-alert.js +8 -5
  229. package/dist/components/ic-alert.js.map +1 -1
  230. package/dist/components/ic-card-vertical.js +23 -24
  231. package/dist/components/ic-card-vertical.js.map +1 -1
  232. package/dist/components/ic-checkbox-group.js +19 -6
  233. package/dist/components/ic-checkbox-group.js.map +1 -1
  234. package/dist/components/ic-checkbox.js +6 -3
  235. package/dist/components/ic-checkbox.js.map +1 -1
  236. package/dist/components/ic-classification-banner.js +1 -1
  237. package/dist/components/ic-classification-banner.js.map +1 -1
  238. package/dist/components/ic-dialog.js +4 -1
  239. package/dist/components/ic-dialog.js.map +1 -1
  240. package/dist/components/ic-divider2.js +86 -9
  241. package/dist/components/ic-divider2.js.map +1 -1
  242. package/dist/components/ic-footer-link-group.js +1 -1
  243. package/dist/components/ic-footer-link-group.js.map +1 -1
  244. package/dist/components/ic-footer-link.js +1 -1
  245. package/dist/components/ic-footer-link.js.map +1 -1
  246. package/dist/components/ic-footer.js +1 -1
  247. package/dist/components/ic-footer.js.map +1 -1
  248. package/dist/components/ic-hero.js +1 -1
  249. package/dist/components/ic-hero.js.map +1 -1
  250. package/dist/components/ic-horizontal-scroll2.js +3 -2
  251. package/dist/components/ic-horizontal-scroll2.js.map +1 -1
  252. package/dist/components/ic-input-component-container2.js +1 -1
  253. package/dist/components/ic-input-component-container2.js.map +1 -1
  254. package/dist/components/ic-input-label2.js +10 -6
  255. package/dist/components/ic-input-label2.js.map +1 -1
  256. package/dist/components/ic-input-validation2.js +1 -1
  257. package/dist/components/ic-input-validation2.js.map +1 -1
  258. package/dist/components/ic-loading-indicator2.js +1 -1
  259. package/dist/components/ic-loading-indicator2.js.map +1 -1
  260. package/dist/components/ic-menu-group.js +2 -2
  261. package/dist/components/ic-menu-group.js.map +1 -1
  262. package/dist/components/ic-menu-item2.js +11 -11
  263. package/dist/components/ic-menu-item2.js.map +1 -1
  264. package/dist/components/ic-menu2.js +453 -169
  265. package/dist/components/ic-menu2.js.map +1 -1
  266. package/dist/components/ic-navigation-button.js.map +1 -1
  267. package/dist/components/ic-navigation-group.js +5 -4
  268. package/dist/components/ic-navigation-group.js.map +1 -1
  269. package/dist/components/ic-navigation-item.js +31 -3
  270. package/dist/components/ic-navigation-item.js.map +1 -1
  271. package/dist/components/ic-navigation-menu2.js +1 -1
  272. package/dist/components/ic-page-header.js +4 -4
  273. package/dist/components/ic-page-header.js.map +1 -1
  274. package/dist/components/ic-pagination-item2.js +10 -12
  275. package/dist/components/ic-pagination-item2.js.map +1 -1
  276. package/dist/components/ic-pagination.js +38 -15
  277. package/dist/components/ic-pagination.js.map +1 -1
  278. package/dist/components/ic-popover-menu.js +11 -10
  279. package/dist/components/ic-popover-menu.js.map +1 -1
  280. package/dist/components/ic-radio-group.js +17 -6
  281. package/dist/components/ic-radio-group.js.map +1 -1
  282. package/dist/components/ic-radio-option.js +32 -22
  283. package/dist/components/ic-radio-option.js.map +1 -1
  284. package/dist/components/ic-search-bar.js +13 -9
  285. package/dist/components/ic-search-bar.js.map +1 -1
  286. package/dist/components/ic-select.js +148 -37
  287. package/dist/components/ic-select.js.map +1 -1
  288. package/dist/components/ic-side-navigation.js +4 -3
  289. package/dist/components/ic-side-navigation.js.map +1 -1
  290. package/dist/components/ic-stepper.js +1 -1
  291. package/dist/components/ic-switch.js +7 -3
  292. package/dist/components/ic-switch.js.map +1 -1
  293. package/dist/components/ic-tab-context.js +2 -1
  294. package/dist/components/ic-tab-context.js.map +1 -1
  295. package/dist/components/ic-text-field2.js +2 -2
  296. package/dist/components/ic-text-field2.js.map +1 -1
  297. package/dist/components/ic-theme.js +1 -1
  298. package/dist/components/ic-toast.js +3 -3
  299. package/dist/components/ic-toast.js.map +1 -1
  300. package/dist/components/ic-toggle-button-group.js +1 -1
  301. package/dist/components/ic-toggle-button-group.js.map +1 -1
  302. package/dist/components/ic-top-navigation.js +1 -1
  303. package/dist/components/ic-top-navigation.js.map +1 -1
  304. package/dist/core/ag-theme-icds.css +217 -0
  305. package/dist/core/core.css +692 -10
  306. package/dist/core/core.esm.js +1 -1
  307. package/dist/core/core.esm.js.map +1 -1
  308. package/dist/core/{p-84526c3e.entry.js → p-13d5875c.entry.js} +2 -2
  309. package/dist/core/p-13d5875c.entry.js.map +1 -0
  310. package/dist/core/p-19872973.entry.js +2 -0
  311. package/dist/core/p-19872973.entry.js.map +1 -0
  312. package/dist/core/p-2140431c.entry.js +2 -0
  313. package/dist/core/p-2140431c.entry.js.map +1 -0
  314. package/dist/core/p-29767574.entry.js +2 -0
  315. package/dist/core/p-29767574.entry.js.map +1 -0
  316. package/dist/core/p-2e909738.entry.js +2 -0
  317. package/dist/core/p-2e909738.entry.js.map +1 -0
  318. package/dist/core/p-2eae9b27.entry.js +2 -0
  319. package/dist/core/p-2eae9b27.entry.js.map +1 -0
  320. package/dist/core/p-2ef46ead.entry.js +2 -0
  321. package/dist/core/p-2ef46ead.entry.js.map +1 -0
  322. package/dist/core/{p-355acffa.entry.js → p-37dea10d.entry.js} +2 -2
  323. package/dist/core/p-3d9726a3.entry.js +2 -0
  324. package/dist/core/{p-408344d3.entry.js.map → p-3d9726a3.entry.js.map} +1 -1
  325. package/dist/core/p-428f95f8.entry.js +2 -0
  326. package/dist/core/p-428f95f8.entry.js.map +1 -0
  327. package/dist/core/p-4973c563.entry.js +2 -0
  328. package/dist/core/p-4973c563.entry.js.map +1 -0
  329. package/dist/core/{p-93c23a35.entry.js → p-4a3b1f06.entry.js} +2 -2
  330. package/dist/core/{p-34db8aaf.entry.js → p-5cd016e1.entry.js} +2 -2
  331. package/dist/core/{p-d2f8e03f.entry.js → p-5ef8e106.entry.js} +2 -2
  332. package/dist/core/p-5f4a6555.entry.js +2 -0
  333. package/dist/core/p-5f4a6555.entry.js.map +1 -0
  334. package/dist/core/p-605c0c92.entry.js +2 -0
  335. package/dist/core/p-605c0c92.entry.js.map +1 -0
  336. package/dist/core/p-655a9e0f.entry.js +2 -0
  337. package/dist/core/p-655a9e0f.entry.js.map +1 -0
  338. package/dist/core/p-65a16de9.entry.js +2 -0
  339. package/dist/core/p-65a16de9.entry.js.map +1 -0
  340. package/dist/core/{p-0a808ec3.entry.js → p-690c5e80.entry.js} +2 -2
  341. package/dist/core/p-705eb610.entry.js +2 -0
  342. package/dist/core/p-705eb610.entry.js.map +1 -0
  343. package/dist/core/{p-f30f3a3e.entry.js → p-76263187.entry.js} +2 -2
  344. package/dist/core/p-78c1f1cc.entry.js +2 -0
  345. package/dist/core/p-78c1f1cc.entry.js.map +1 -0
  346. package/dist/core/p-79d0be03.entry.js +2 -0
  347. package/dist/core/p-79d0be03.entry.js.map +1 -0
  348. package/dist/core/{p-c06a3b97.entry.js → p-7b35de65.entry.js} +2 -2
  349. package/dist/core/p-7bff1e96.entry.js +2 -0
  350. package/dist/core/p-7bff1e96.entry.js.map +1 -0
  351. package/dist/core/{p-4055f22c.entry.js → p-806a0fab.entry.js} +2 -2
  352. package/dist/core/p-806a0fab.entry.js.map +1 -0
  353. package/dist/core/p-85173458.entry.js +2 -0
  354. package/dist/core/p-85173458.entry.js.map +1 -0
  355. package/dist/core/{p-1b573920.entry.js → p-922984cb.entry.js} +2 -2
  356. package/dist/core/{p-aab2c7aa.entry.js → p-95f603dd.entry.js} +2 -2
  357. package/dist/core/{p-b01ffa55.entry.js → p-96b4ca6e.entry.js} +2 -2
  358. package/dist/core/p-96b4ca6e.entry.js.map +1 -0
  359. package/dist/core/p-979c2792.entry.js +2 -0
  360. package/dist/core/p-979c2792.entry.js.map +1 -0
  361. package/dist/core/{p-e4b276b5.entry.js → p-97fb2bdf.entry.js} +2 -2
  362. package/dist/core/p-9ec7f96c.entry.js +2 -0
  363. package/dist/core/p-9ec7f96c.entry.js.map +1 -0
  364. package/dist/core/p-9fa93dfe.entry.js +2 -0
  365. package/dist/core/p-9fa93dfe.entry.js.map +1 -0
  366. package/dist/core/p-a9341313.entry.js +2 -0
  367. package/dist/core/p-a9341313.entry.js.map +1 -0
  368. package/dist/core/{p-e3ed9110.entry.js → p-acbd15ab.entry.js} +2 -2
  369. package/dist/core/{p-31fc8756.entry.js → p-ae0775aa.entry.js} +2 -2
  370. package/dist/core/p-ae0775aa.entry.js.map +1 -0
  371. package/dist/core/{p-312cacae.js → p-b7eb8ef9.js} +2 -2
  372. package/dist/core/p-b7eb8ef9.js.map +1 -0
  373. package/dist/core/{p-4ff6d16f.entry.js → p-ba6ecc15.entry.js} +2 -2
  374. package/dist/core/p-bbeb03ef.entry.js +2 -0
  375. package/dist/core/p-bbeb03ef.entry.js.map +1 -0
  376. package/dist/core/{p-0d30ffab.entry.js → p-c0fc3d02.entry.js} +2 -2
  377. package/dist/core/p-c396bd4d.entry.js +2 -0
  378. package/dist/core/p-c396bd4d.entry.js.map +1 -0
  379. package/dist/core/{p-f828a6e1.entry.js → p-c9cf932c.entry.js} +2 -2
  380. package/dist/core/p-cedc375e.entry.js +2 -0
  381. package/dist/core/p-cedc375e.entry.js.map +1 -0
  382. package/dist/core/{p-d58a10ec.entry.js → p-d4a83e25.entry.js} +2 -2
  383. package/dist/core/p-d4a83e25.entry.js.map +1 -0
  384. package/dist/core/p-d93bac01.entry.js +2 -0
  385. package/dist/core/p-d93bac01.entry.js.map +1 -0
  386. package/dist/core/{p-50ead56c.entry.js → p-df957570.entry.js} +2 -2
  387. package/dist/core/p-df957570.entry.js.map +1 -0
  388. package/dist/core/{p-0fb047e7.entry.js → p-eb3b4935.entry.js} +2 -2
  389. package/dist/core/{p-0fb047e7.entry.js.map → p-eb3b4935.entry.js.map} +1 -1
  390. package/dist/core/{p-60efd7fa.entry.js → p-ebafab37.entry.js} +2 -2
  391. package/dist/core/p-ebafab37.entry.js.map +1 -0
  392. package/dist/core/{p-82375dca.entry.js → p-ee6dd94c.entry.js} +2 -2
  393. package/dist/core/p-ef78bebc.entry.js +2 -0
  394. package/dist/core/p-ef78bebc.entry.js.map +1 -0
  395. package/dist/core/p-f0ae2b99.entry.js +2 -0
  396. package/dist/core/p-f0ae2b99.entry.js.map +1 -0
  397. package/dist/core/{p-49525194.entry.js → p-f24984c5.entry.js} +2 -2
  398. package/dist/core/p-f24984c5.entry.js.map +1 -0
  399. package/dist/core/{p-d8870804.entry.js → p-f5b2b26d.entry.js} +2 -2
  400. package/dist/core/{p-40e9e76a.entry.js → p-f71c00ce.entry.js} +2 -2
  401. package/dist/core/p-fdd0b732.entry.js +2 -0
  402. package/dist/core/p-fdd0b732.entry.js.map +1 -0
  403. package/dist/esm/core.js +1 -1
  404. package/dist/esm/{helpers-1c9151ef.js → helpers-e8797e8d.js} +23 -2
  405. package/dist/esm/helpers-e8797e8d.js.map +1 -0
  406. package/dist/esm/ic-accordion-group.entry.js +10 -10
  407. package/dist/esm/ic-accordion-group.entry.js.map +1 -1
  408. package/dist/esm/ic-accordion.entry.js +5 -5
  409. package/dist/esm/ic-accordion.entry.js.map +1 -1
  410. package/dist/esm/ic-alert.entry.js +7 -5
  411. package/dist/esm/ic-alert.entry.js.map +1 -1
  412. package/dist/esm/ic-back-to-top.entry.js +1 -1
  413. package/dist/esm/ic-badge.entry.js +1 -1
  414. package/dist/esm/ic-breadcrumb-group.entry.js +1 -1
  415. package/dist/esm/ic-breadcrumb.entry.js +1 -1
  416. package/dist/esm/ic-button_3.entry.js +2 -2
  417. package/dist/esm/ic-button_3.entry.js.map +1 -1
  418. package/dist/esm/ic-card-vertical.entry.js +23 -25
  419. package/dist/esm/ic-card-vertical.entry.js.map +1 -1
  420. package/dist/esm/ic-checkbox-group.entry.js +17 -6
  421. package/dist/esm/ic-checkbox-group.entry.js.map +1 -1
  422. package/dist/esm/ic-checkbox.entry.js +6 -4
  423. package/dist/esm/ic-checkbox.entry.js.map +1 -1
  424. package/dist/esm/ic-chip.entry.js +1 -1
  425. package/dist/esm/ic-classification-banner.entry.js +1 -1
  426. package/dist/esm/ic-classification-banner.entry.js.map +1 -1
  427. package/dist/esm/ic-data-row.entry.js +1 -1
  428. package/dist/esm/ic-dialog.entry.js +4 -2
  429. package/dist/esm/ic-dialog.entry.js.map +1 -1
  430. package/dist/esm/ic-divider.entry.js +72 -8
  431. package/dist/esm/ic-divider.entry.js.map +1 -1
  432. package/dist/esm/ic-empty-state.entry.js +1 -1
  433. package/dist/esm/ic-footer-link-group.entry.js +2 -2
  434. package/dist/esm/ic-footer-link-group.entry.js.map +1 -1
  435. package/dist/esm/ic-footer-link.entry.js +2 -2
  436. package/dist/esm/ic-footer-link.entry.js.map +1 -1
  437. package/dist/esm/ic-footer.entry.js +2 -2
  438. package/dist/esm/ic-footer.entry.js.map +1 -1
  439. package/dist/esm/ic-hero.entry.js +2 -2
  440. package/dist/esm/ic-hero.entry.js.map +1 -1
  441. package/dist/esm/ic-horizontal-scroll.entry.js +4 -3
  442. package/dist/esm/ic-horizontal-scroll.entry.js.map +1 -1
  443. package/dist/esm/ic-input-component-container_3.entry.js +450 -167
  444. package/dist/esm/ic-input-component-container_3.entry.js.map +1 -1
  445. package/dist/esm/ic-input-label_2.entry.js +9 -7
  446. package/dist/esm/ic-input-label_2.entry.js.map +1 -1
  447. package/dist/esm/ic-link.entry.js +1 -1
  448. package/dist/esm/ic-menu-group.entry.js +3 -3
  449. package/dist/esm/ic-menu-group.entry.js.map +1 -1
  450. package/dist/esm/ic-menu-item.entry.js +11 -11
  451. package/dist/esm/ic-menu-item.entry.js.map +1 -1
  452. package/dist/esm/ic-navigation-button.entry.js +1 -1
  453. package/dist/esm/ic-navigation-button.entry.js.map +1 -1
  454. package/dist/esm/ic-navigation-group.entry.js +5 -4
  455. package/dist/esm/ic-navigation-group.entry.js.map +1 -1
  456. package/dist/esm/ic-navigation-item.entry.js +30 -3
  457. package/dist/esm/ic-navigation-item.entry.js.map +1 -1
  458. package/dist/esm/ic-navigation-menu.entry.js +1 -1
  459. package/dist/esm/ic-page-header.entry.js +5 -5
  460. package/dist/esm/ic-page-header.entry.js.map +1 -1
  461. package/dist/esm/ic-pagination-item.entry.js +8 -11
  462. package/dist/esm/ic-pagination-item.entry.js.map +1 -1
  463. package/dist/esm/ic-pagination.entry.js +37 -15
  464. package/dist/esm/ic-pagination.entry.js.map +1 -1
  465. package/dist/esm/ic-popover-menu.entry.js +11 -11
  466. package/dist/esm/ic-popover-menu.entry.js.map +1 -1
  467. package/dist/esm/ic-radio-group.entry.js +15 -6
  468. package/dist/esm/ic-radio-group.entry.js.map +1 -1
  469. package/dist/esm/ic-radio-option.entry.js +31 -22
  470. package/dist/esm/ic-radio-option.entry.js.map +1 -1
  471. package/dist/esm/ic-search-bar.entry.js +12 -9
  472. package/dist/esm/ic-search-bar.entry.js.map +1 -1
  473. package/dist/esm/ic-select.entry.js +147 -37
  474. package/dist/esm/ic-select.entry.js.map +1 -1
  475. package/dist/esm/ic-side-navigation.entry.js +4 -3
  476. package/dist/esm/ic-side-navigation.entry.js.map +1 -1
  477. package/dist/esm/ic-status-tag.entry.js +1 -1
  478. package/dist/esm/ic-step.entry.js +1 -1
  479. package/dist/esm/ic-stepper.entry.js +1 -1
  480. package/dist/esm/ic-switch.entry.js +7 -4
  481. package/dist/esm/ic-switch.entry.js.map +1 -1
  482. package/dist/esm/ic-tab-context.entry.js +2 -1
  483. package/dist/esm/ic-tab-context.entry.js.map +1 -1
  484. package/dist/esm/ic-tab-group.entry.js +1 -1
  485. package/dist/esm/ic-tab-panel.entry.js +1 -1
  486. package/dist/esm/ic-tab.entry.js +1 -1
  487. package/dist/esm/ic-text-field.entry.js +2 -2
  488. package/dist/esm/ic-text-field.entry.js.map +1 -1
  489. package/dist/esm/ic-theme.entry.js +1 -1
  490. package/dist/esm/ic-toast.entry.js +3 -3
  491. package/dist/esm/ic-toast.entry.js.map +1 -1
  492. package/dist/esm/ic-toggle-button-group.entry.js +1 -1
  493. package/dist/esm/ic-toggle-button-group.entry.js.map +1 -1
  494. package/dist/esm/ic-toggle-button.entry.js +1 -1
  495. package/dist/esm/ic-top-navigation.entry.js +1 -1
  496. package/dist/esm/ic-top-navigation.entry.js.map +1 -1
  497. package/dist/esm/ic-typography.entry.js +1 -1
  498. package/dist/esm/loader.js +1 -1
  499. package/dist/types/components/ic-accordion/ic-accordion.d.ts +5 -5
  500. package/dist/types/components/ic-accordion-group/ic-accordion-group.d.ts +4 -4
  501. package/dist/types/components/ic-alert/ic-alert.d.ts +9 -5
  502. package/dist/types/components/ic-card-vertical/ic-card-vertical.d.ts +7 -3
  503. package/dist/types/components/ic-checkbox/ic-checkbox.d.ts +6 -2
  504. package/dist/types/components/ic-checkbox-group/ic-checkbox-group.d.ts +7 -1
  505. package/dist/types/components/ic-dialog/ic-dialog.d.ts +5 -0
  506. package/dist/types/components/ic-divider/ic-divider.d.ts +31 -1
  507. package/dist/types/components/ic-divider/ic-divider.types.d.ts +3 -0
  508. package/dist/types/components/ic-footer-link-group/ic-footer-link-group.d.ts +2 -1
  509. package/dist/types/components/ic-input-label/ic-input-label.d.ts +8 -0
  510. package/dist/types/components/ic-menu/ic-menu.d.ts +43 -15
  511. package/dist/types/components/ic-menu-item/ic-menu-item.d.ts +1 -1
  512. package/dist/types/components/ic-navigation-button/ic-navigation-button.d.ts +2 -2
  513. package/dist/types/components/ic-navigation-group/ic-navigation-group.d.ts +2 -2
  514. package/dist/types/components/ic-navigation-item/ic-navigation-item.d.ts +7 -2
  515. package/dist/types/components/ic-pagination/ic-pagination.d.ts +13 -5
  516. package/dist/types/components/ic-pagination-item/ic-pagination-item.d.ts +9 -5
  517. package/dist/types/components/ic-popover-menu/ic-popover-menu.d.ts +5 -0
  518. package/dist/types/components/ic-radio-group/ic-radio-group.d.ts +6 -1
  519. package/dist/types/components/ic-radio-option/ic-radio-option.d.ts +8 -3
  520. package/dist/types/components/ic-search-bar/ic-search-bar.d.ts +5 -1
  521. package/dist/types/components/ic-select/ic-select.d.ts +24 -10
  522. package/dist/types/components/ic-switch/ic-switch.d.ts +5 -1
  523. package/dist/types/components.d.ts +242 -51
  524. package/dist/types/utils/helpers.d.ts +9 -2
  525. package/dist/types/utils/types.d.ts +1 -1
  526. package/hydrate/index.js +969 -380
  527. package/package.json +2 -2
  528. package/vscode-data.json +330 -55
  529. package/dist/cjs/helpers-f1cf5156.js.map +0 -1
  530. package/dist/core/p-0c872824.entry.js +0 -2
  531. package/dist/core/p-0c872824.entry.js.map +0 -1
  532. package/dist/core/p-1684c8d4.entry.js +0 -2
  533. package/dist/core/p-1684c8d4.entry.js.map +0 -1
  534. package/dist/core/p-1f1758a9.entry.js +0 -2
  535. package/dist/core/p-1f1758a9.entry.js.map +0 -1
  536. package/dist/core/p-21e5dd29.entry.js +0 -2
  537. package/dist/core/p-21e5dd29.entry.js.map +0 -1
  538. package/dist/core/p-244d6dba.entry.js +0 -2
  539. package/dist/core/p-244d6dba.entry.js.map +0 -1
  540. package/dist/core/p-312cacae.js.map +0 -1
  541. package/dist/core/p-31fc8756.entry.js.map +0 -1
  542. package/dist/core/p-322edabc.entry.js +0 -2
  543. package/dist/core/p-322edabc.entry.js.map +0 -1
  544. package/dist/core/p-363d6e88.entry.js +0 -2
  545. package/dist/core/p-363d6e88.entry.js.map +0 -1
  546. package/dist/core/p-4055f22c.entry.js.map +0 -1
  547. package/dist/core/p-408344d3.entry.js +0 -2
  548. package/dist/core/p-43f9a711.entry.js +0 -2
  549. package/dist/core/p-43f9a711.entry.js.map +0 -1
  550. package/dist/core/p-4502d3c1.entry.js +0 -2
  551. package/dist/core/p-4502d3c1.entry.js.map +0 -1
  552. package/dist/core/p-49525194.entry.js.map +0 -1
  553. package/dist/core/p-50ead56c.entry.js.map +0 -1
  554. package/dist/core/p-5deb9730.entry.js +0 -2
  555. package/dist/core/p-5deb9730.entry.js.map +0 -1
  556. package/dist/core/p-60efd7fa.entry.js.map +0 -1
  557. package/dist/core/p-6bd2e938.entry.js +0 -2
  558. package/dist/core/p-6bd2e938.entry.js.map +0 -1
  559. package/dist/core/p-6d40baa9.entry.js +0 -2
  560. package/dist/core/p-6d40baa9.entry.js.map +0 -1
  561. package/dist/core/p-7c89fc86.entry.js +0 -2
  562. package/dist/core/p-7c89fc86.entry.js.map +0 -1
  563. package/dist/core/p-84526c3e.entry.js.map +0 -1
  564. package/dist/core/p-9dba6823.entry.js +0 -2
  565. package/dist/core/p-9dba6823.entry.js.map +0 -1
  566. package/dist/core/p-aa0619ce.entry.js +0 -2
  567. package/dist/core/p-aa0619ce.entry.js.map +0 -1
  568. package/dist/core/p-af20322c.entry.js +0 -2
  569. package/dist/core/p-af20322c.entry.js.map +0 -1
  570. package/dist/core/p-b01ffa55.entry.js.map +0 -1
  571. package/dist/core/p-bf1f0ac7.entry.js +0 -2
  572. package/dist/core/p-bf1f0ac7.entry.js.map +0 -1
  573. package/dist/core/p-c86d48b6.entry.js +0 -2
  574. package/dist/core/p-c86d48b6.entry.js.map +0 -1
  575. package/dist/core/p-cbcd4427.entry.js +0 -2
  576. package/dist/core/p-cbcd4427.entry.js.map +0 -1
  577. package/dist/core/p-d1c9c32b.entry.js +0 -2
  578. package/dist/core/p-d1c9c32b.entry.js.map +0 -1
  579. package/dist/core/p-d2f89cb5.entry.js +0 -2
  580. package/dist/core/p-d2f89cb5.entry.js.map +0 -1
  581. package/dist/core/p-d58a10ec.entry.js.map +0 -1
  582. package/dist/core/p-da14cd3c.entry.js +0 -2
  583. package/dist/core/p-da14cd3c.entry.js.map +0 -1
  584. package/dist/core/p-dc83a0e9.entry.js +0 -2
  585. package/dist/core/p-dc83a0e9.entry.js.map +0 -1
  586. package/dist/core/p-de3a5423.entry.js +0 -2
  587. package/dist/core/p-de3a5423.entry.js.map +0 -1
  588. package/dist/core/p-e53309b0.entry.js +0 -2
  589. package/dist/core/p-e53309b0.entry.js.map +0 -1
  590. package/dist/core/p-f38bce8d.entry.js +0 -2
  591. package/dist/core/p-f38bce8d.entry.js.map +0 -1
  592. package/dist/core/p-fa1b7a80.entry.js +0 -2
  593. package/dist/core/p-fa1b7a80.entry.js.map +0 -1
  594. package/dist/core/p-fa587e6d.entry.js +0 -2
  595. package/dist/core/p-fa587e6d.entry.js.map +0 -1
  596. package/dist/esm/helpers-1c9151ef.js.map +0 -1
  597. /package/dist/core/{p-355acffa.entry.js.map → p-37dea10d.entry.js.map} +0 -0
  598. /package/dist/core/{p-93c23a35.entry.js.map → p-4a3b1f06.entry.js.map} +0 -0
  599. /package/dist/core/{p-34db8aaf.entry.js.map → p-5cd016e1.entry.js.map} +0 -0
  600. /package/dist/core/{p-d2f8e03f.entry.js.map → p-5ef8e106.entry.js.map} +0 -0
  601. /package/dist/core/{p-0a808ec3.entry.js.map → p-690c5e80.entry.js.map} +0 -0
  602. /package/dist/core/{p-f30f3a3e.entry.js.map → p-76263187.entry.js.map} +0 -0
  603. /package/dist/core/{p-c06a3b97.entry.js.map → p-7b35de65.entry.js.map} +0 -0
  604. /package/dist/core/{p-1b573920.entry.js.map → p-922984cb.entry.js.map} +0 -0
  605. /package/dist/core/{p-aab2c7aa.entry.js.map → p-95f603dd.entry.js.map} +0 -0
  606. /package/dist/core/{p-e4b276b5.entry.js.map → p-97fb2bdf.entry.js.map} +0 -0
  607. /package/dist/core/{p-e3ed9110.entry.js.map → p-acbd15ab.entry.js.map} +0 -0
  608. /package/dist/core/{p-4ff6d16f.entry.js.map → p-ba6ecc15.entry.js.map} +0 -0
  609. /package/dist/core/{p-0d30ffab.entry.js.map → p-c0fc3d02.entry.js.map} +0 -0
  610. /package/dist/core/{p-f828a6e1.entry.js.map → p-c9cf932c.entry.js.map} +0 -0
  611. /package/dist/core/{p-82375dca.entry.js.map → p-ee6dd94c.entry.js.map} +0 -0
  612. /package/dist/core/{p-d8870804.entry.js.map → p-f5b2b26d.entry.js.map} +0 -0
  613. /package/dist/core/{p-40e9e76a.entry.js.map → p-f71c00ce.entry.js.map} +0 -0
@@ -1,18 +1,25 @@
1
1
  import { h, Host, Fragment, } from "@stencil/core";
2
2
  import { createPopper } from "@popperjs/core";
3
3
  import Check from "../../assets/check-icon.svg";
4
- import { onComponentRequiredPropUndefined } from "../../utils/helpers";
4
+ import { getOptionsWithoutGroupTitlesCount, isMacDevice, onComponentRequiredPropUndefined, } from "../../utils/helpers";
5
5
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
6
6
  export class Menu {
7
7
  constructor() {
8
+ this.ACTIVE_DESCENDANT = "aria-activedescendant";
9
+ this.CLEAR_BUTTON_ID = "clear-button";
8
10
  this.disabledOptionSelected = false;
9
11
  this.hasPreviouslyBlurred = false;
10
12
  this.hasTimedOut = false;
11
13
  this.isLoading = false;
14
+ this.isMultiSelect = false;
12
15
  this.isSearchBar = false;
13
16
  this.isSearchableSelect = false;
14
- // Prevents menu re-opening immediately after it is closed on blur when clicking input.
15
- this.preventClickOpen = false;
17
+ this.lastOptionSelected = null; // Index of last option selected
18
+ this.lastOptionFocused = null; // Index of last option focused
19
+ this.multiOptionClicked = null;
20
+ this.preventClickOpen = false; // Prevents menu re-opening immediately after it is closed on blur when clicking input.
21
+ this.preventMenuFocus = false; // (When multiple) ensures focus moves straight to select all button from menu.
22
+ this.shiftPressed = false;
16
23
  this.ungroupedOptions = [];
17
24
  this.handleClearListener = () => {
18
25
  this.optionHighlighted = "";
@@ -23,9 +30,16 @@ export class Menu {
23
30
  };
24
31
  this.handleMenuChange = (open, focusInput) => {
25
32
  this.menuStateChange.emit({ open, focusInput });
26
- if (!open && focusInput !== false) {
27
- this.inputEl.focus();
28
- this.preventClickOpen = false;
33
+ if (!open) {
34
+ if (focusInput !== false) {
35
+ this.inputEl.focus();
36
+ this.preventClickOpen = false;
37
+ }
38
+ // Reset optionHighlighted so previously highlighted option doesn't get reselected when Enter pressed
39
+ if (this.isMultiSelect) {
40
+ this.optionHighlighted = undefined;
41
+ this.multiOptionClicked = null;
42
+ }
29
43
  }
30
44
  };
31
45
  this.setNextOptionValue = (selectedOptionIndex) => {
@@ -60,24 +74,34 @@ export class Menu {
60
74
  if (parent.tagName === "IC-SEARCH-BAR") {
61
75
  this.isSearchBar = true;
62
76
  }
63
- else if (parent.tagName === "IC-SELECT" &&
64
- parent.getAttribute("searchable") !== null &&
65
- parent.getAttribute("searchable") !== undefined) {
66
- this.isSearchableSelect = true;
77
+ else if (parent.tagName === "IC-SELECT") {
78
+ if (parent.getAttribute("searchable") !== null &&
79
+ parent.getAttribute("searchable") !== undefined) {
80
+ this.isSearchableSelect = true;
81
+ }
82
+ else if (parent.getAttribute("multiple") !== null &&
83
+ parent.getAttribute("multiple") !== undefined) {
84
+ this.isMultiSelect = true;
85
+ }
67
86
  }
68
87
  };
88
+ // Open menu when up or down arrow keys are pressed
69
89
  this.arrowBehaviour = (event) => {
70
90
  event.preventDefault();
71
91
  this.handleMenuChange(true);
72
92
  };
73
- this.setMenuOptions = () => this.isSearchBar ? this.options : this.ungroupedOptions;
93
+ this.getMenuOptions = () => this.isSearchBar ? this.options : this.ungroupedOptions;
94
+ // Set option that is focused and so should show focus state
74
95
  this.setHighlightedOption = (highlightedIndex) => {
75
- const menuOptions = this.setMenuOptions();
96
+ const menuOptions = this.getMenuOptions();
76
97
  menuOptions[highlightedIndex] &&
77
98
  !menuOptions[highlightedIndex].timedOut &&
78
99
  (this.optionHighlighted =
79
100
  menuOptions[highlightedIndex][this.valueField] || undefined);
80
101
  };
102
+ // Determines keyboard behaviour when selection is automatic
103
+ // (i.e. you don't have to press Enter select an option - just focus on it)
104
+ // and menu is closed
81
105
  this.autoSetInputValueKeyboardOpen = (event) => {
82
106
  const selectedOptionIndex = this.ungroupedOptions.findIndex((option) => option[this.valueField] === this.value);
83
107
  this.keyboardNav = false;
@@ -94,147 +118,278 @@ export class Menu {
94
118
  break;
95
119
  case " ":
96
120
  case "Enter":
97
- if (event.target.id !== "clear-button") {
121
+ if (event.target.id !== this.CLEAR_BUTTON_ID) {
98
122
  this.handleMenuChange(true);
99
123
  }
100
124
  break;
101
125
  }
102
126
  };
103
- this.manSetInputValueKeyboardOpen = (event) => {
104
- const menuOptions = this.setMenuOptions();
105
- const highlightedOptionIndex = menuOptions.findIndex((option) => option[this.valueField] === this.optionHighlighted);
106
- const getOptionId = (index) => { var _a; return (_a = Array.from(this.host.querySelectorAll("li"))[index]) === null || _a === void 0 ? void 0 : _a.id; };
127
+ this.selectHighlightedOption = (options, highlightedOptionIndex) => {
128
+ if (!this.isLoading && !this.hasTimedOut) {
129
+ this.keyboardNav = true;
130
+ }
107
131
  const isOpen = this.isSearchBar || this.isSearchableSelect || this.open;
108
- switch (event.key) {
109
- case "ArrowDown":
110
- this.keyboardNav = true;
111
- this.arrowBehaviour(event);
112
- if (highlightedOptionIndex < menuOptions.length - 1) {
113
- this.setHighlightedOption(highlightedOptionIndex + 1);
114
- this.menuOptionId.emit({
115
- optionId: getOptionId(highlightedOptionIndex + 1),
116
- });
117
- }
118
- else {
119
- this.setHighlightedOption(0);
120
- this.menuOptionId.emit({
121
- optionId: getOptionId(0),
122
- });
132
+ if (isOpen) {
133
+ if (highlightedOptionIndex >= 0) {
134
+ if (options[highlightedOptionIndex] !== undefined) {
135
+ if (this.isSearchBar &&
136
+ options[highlightedOptionIndex].disabled === true) {
137
+ this.disabledOptionSelected = true;
138
+ }
139
+ else {
140
+ this.setInputValue(highlightedOptionIndex);
141
+ }
123
142
  }
124
- this.preventIncorrectTabOrder = false;
125
- this.focusFromSearchKeypress = false;
126
- break;
127
- case "ArrowUp":
128
- this.keyboardNav = true;
129
- this.arrowBehaviour(event);
130
- if (highlightedOptionIndex <= 0 ||
131
- highlightedOptionIndex > menuOptions.length + 1) {
132
- this.setHighlightedOption(menuOptions.length - 1);
143
+ }
144
+ else {
145
+ this.setInputValue(highlightedOptionIndex);
146
+ }
147
+ }
148
+ else {
149
+ this.handleMenuChange(true);
150
+ }
151
+ };
152
+ // Check if option is selected based on the index of the option
153
+ this.isOptionSelected = (index) => {
154
+ const menuOptions = this.getMenuOptions();
155
+ return this.value
156
+ ? this.value.includes(menuOptions[index][this.valueField])
157
+ : false;
158
+ };
159
+ // Deselect currently selected options when shift pressed, but keep certain options selected
160
+ this.deselectSelectedOptions = (optionsToKeepSelected) => {
161
+ const menuOptions = this.getMenuOptions();
162
+ if (this.value) {
163
+ const selectedOptionIndexes = this.value.map((value) => {
164
+ return menuOptions.findIndex((option) => option[this.valueField] === value);
165
+ });
166
+ // Call setInputValue (which toggles the selected state) on options that need to be deselected
167
+ selectedOptionIndexes.forEach((index) => !optionsToKeepSelected.includes(index) && this.setInputValue(index));
168
+ }
169
+ };
170
+ // Determines keyboard behaviour when selection is manual (i.e. when you have to press Enter to select an option)
171
+ this.manualSetInputValueKeyboardOpen = (event) => {
172
+ const menuOptions = this.getMenuOptions();
173
+ // For preventing focus disappearing on currently focused option when Shift / Cmd / Ctrl pressed
174
+ // (i.e. when user is likely in the middle of executing a keyboard combination to select options)
175
+ const isKeyboardCombination = event.shiftKey || event.metaKey || event.ctrlKey;
176
+ const highlightedOptionIndex = this.getOptionHighlightedIndex();
177
+ const clickedMultiOptionIndex = menuOptions.findIndex((option) => option[this.valueField] === this.multiOptionClicked);
178
+ const getOptionId = (index) => { var _a; return (_a = Array.from(this.host.querySelectorAll("li"))[index]) === null || _a === void 0 ? void 0 : _a.id; };
179
+ // Space press should be equivalent to Enter when multi-select
180
+ if (event.key === " " && this.isMultiSelect) {
181
+ this.handleOptionSelect(event, highlightedOptionIndex);
182
+ }
183
+ else {
184
+ switch (event.key) {
185
+ case "ArrowDown":
186
+ this.keyboardNav = true;
187
+ this.arrowBehaviour(event);
188
+ if (this.multiOptionClicked) {
189
+ // Set focus to option last clicked
190
+ // Prevents it resetting to the top of the menu when user switches to using keyboard
191
+ this.setHighlightedOption(clickedMultiOptionIndex);
192
+ this.multiOptionClicked = null;
193
+ }
194
+ else {
195
+ this.handleSingleShiftSelect(event, highlightedOptionIndex, menuOptions);
196
+ if (highlightedOptionIndex < menuOptions.length - 1) {
197
+ this.setHighlightedOption(highlightedOptionIndex + 1);
198
+ this.menuOptionId.emit({
199
+ optionId: getOptionId(highlightedOptionIndex + 1),
200
+ });
201
+ this.handleSingleShiftSelect(event, highlightedOptionIndex + 1, menuOptions);
202
+ }
203
+ else {
204
+ this.setHighlightedOption(0);
205
+ this.menuOptionId.emit({
206
+ optionId: getOptionId(0),
207
+ });
208
+ this.handleSingleShiftSelect(event, 0, menuOptions);
209
+ }
210
+ // Deselect currently selected options if arrow was pressed for first time after shift is held
211
+ if (this.isMultiSelect && this.shiftPressed) {
212
+ this.deselectSelectedOptions([
213
+ highlightedOptionIndex,
214
+ this.getOptionHighlightedIndex(),
215
+ ]);
216
+ this.shiftPressed = false;
217
+ }
218
+ }
219
+ this.lastOptionFocused = this.getOptionHighlightedIndex();
220
+ this.preventIncorrectTabOrder = false;
221
+ this.focusFromSearchKeypress = false;
222
+ break;
223
+ case "ArrowUp":
224
+ this.keyboardNav = true;
225
+ this.arrowBehaviour(event);
226
+ if (this.multiOptionClicked) {
227
+ // Set focus to option last clicked
228
+ // Prevents it resetting to the bottom of the menu when user switches to using keyboard
229
+ this.setHighlightedOption(clickedMultiOptionIndex);
230
+ this.multiOptionClicked = null;
231
+ }
232
+ else {
233
+ this.handleSingleShiftSelect(event, highlightedOptionIndex, menuOptions);
234
+ if (highlightedOptionIndex <= 0 ||
235
+ highlightedOptionIndex > menuOptions.length + 1) {
236
+ this.setHighlightedOption(menuOptions.length - 1);
237
+ this.menuOptionId.emit({
238
+ optionId: getOptionId(menuOptions.length - 1),
239
+ });
240
+ this.handleSingleShiftSelect(event, menuOptions.length - 1, menuOptions);
241
+ }
242
+ else {
243
+ this.setHighlightedOption(highlightedOptionIndex - 1);
244
+ this.menuOptionId.emit({
245
+ optionId: getOptionId(highlightedOptionIndex - 1),
246
+ });
247
+ this.handleSingleShiftSelect(event, highlightedOptionIndex - 1, menuOptions);
248
+ }
249
+ // Deselect currently selected options if arrow was pressed for first time after shift is held
250
+ if (this.isMultiSelect && this.shiftPressed) {
251
+ this.deselectSelectedOptions([
252
+ highlightedOptionIndex,
253
+ this.getOptionHighlightedIndex(),
254
+ ]);
255
+ this.shiftPressed = false;
256
+ }
257
+ }
258
+ this.lastOptionFocused = this.getOptionHighlightedIndex();
259
+ this.preventIncorrectTabOrder = false;
260
+ this.focusFromSearchKeypress = false;
261
+ break;
262
+ case "Home": {
263
+ const startOptionIndex = 0;
264
+ this.keyboardNav = true;
265
+ event.preventDefault();
266
+ this.arrowBehaviour(event);
267
+ this.setHighlightedOption(startOptionIndex);
133
268
  this.menuOptionId.emit({
134
- optionId: getOptionId(menuOptions.length - 1),
269
+ optionId: getOptionId(startOptionIndex),
135
270
  });
271
+ if (event.shiftKey && event.ctrlKey) {
272
+ this.handleMultipleShiftSelect(startOptionIndex);
273
+ }
274
+ this.lastOptionFocused = startOptionIndex;
275
+ this.lastOptionSelected = startOptionIndex;
276
+ break;
136
277
  }
137
- else {
138
- this.setHighlightedOption(highlightedOptionIndex - 1);
278
+ case "End": {
279
+ const endOptionIndex = menuOptions.length - 1;
280
+ this.keyboardNav = true;
281
+ event.preventDefault();
282
+ this.arrowBehaviour(event);
283
+ this.setHighlightedOption(endOptionIndex);
139
284
  this.menuOptionId.emit({
140
- optionId: getOptionId(highlightedOptionIndex - 1),
285
+ optionId: getOptionId(endOptionIndex),
141
286
  });
142
- }
143
- this.preventIncorrectTabOrder = false;
144
- this.focusFromSearchKeypress = false;
145
- break;
146
- case "Home":
147
- this.keyboardNav = true;
148
- event.preventDefault();
149
- this.arrowBehaviour(event);
150
- this.setHighlightedOption(0);
151
- this.menuOptionId.emit({
152
- optionId: getOptionId(0),
153
- });
154
- break;
155
- case "End":
156
- this.keyboardNav = true;
157
- event.preventDefault();
158
- this.arrowBehaviour(event);
159
- this.setHighlightedOption(menuOptions.length - 1);
160
- this.menuOptionId.emit({
161
- optionId: getOptionId(menuOptions.length - 1),
162
- });
163
- break;
164
- case " ":
165
- this.keyboardNav = false;
166
- if (this.isSearchBar || this.isSearchableSelect) {
287
+ if (event.shiftKey && event.ctrlKey) {
288
+ this.handleMultipleShiftSelect(endOptionIndex);
289
+ }
290
+ this.lastOptionFocused = endOptionIndex;
291
+ this.lastOptionSelected = endOptionIndex;
167
292
  break;
168
293
  }
169
- else {
170
- if (event.target.id !== "clear-button") {
171
- this.handleMenuChange(true);
294
+ case " ":
295
+ if (!isKeyboardCombination) {
296
+ this.keyboardNav = false;
172
297
  }
173
- }
174
- break;
175
- case "Enter":
176
- event.preventDefault();
177
- this.keyboardNav = false;
178
- if (isOpen) {
179
- if (highlightedOptionIndex >= 0) {
180
- if (menuOptions[highlightedOptionIndex] !== undefined) {
181
- if (this.isSearchBar &&
182
- menuOptions[highlightedOptionIndex].disabled === true) {
183
- this.disabledOptionSelected = true;
184
- }
185
- else {
186
- this.setInputValue(highlightedOptionIndex);
187
- this.value =
188
- menuOptions[highlightedOptionIndex][this.valueField];
189
- }
298
+ if (this.isSearchBar || this.isSearchableSelect) {
299
+ break;
300
+ }
301
+ else {
302
+ if (event.target.id !== this.CLEAR_BUTTON_ID) {
303
+ this.handleMenuChange(true);
304
+ }
305
+ }
306
+ break;
307
+ case "Enter":
308
+ event.preventDefault();
309
+ if (!isKeyboardCombination) {
310
+ this.keyboardNav = false;
311
+ }
312
+ this.handleOptionSelect(event, highlightedOptionIndex);
313
+ break;
314
+ case "Escape":
315
+ if (this.open) {
316
+ event.stopImmediatePropagation();
317
+ }
318
+ this.handleMenuChange(false);
319
+ this.menuOptionId.emit({ optionId: undefined });
320
+ break;
321
+ case "a":
322
+ // Checks if Cmd (meta) key is pressed if Mac device (while excluding meta key on Windows)
323
+ // Otherwise, if a different OS, checks Ctrl key
324
+ if ((isMacDevice() && event.metaKey) ||
325
+ (!isMacDevice() && event.ctrlKey)) {
326
+ this.emitSelectAll();
327
+ this.lastOptionFocused = null;
328
+ this.lastOptionSelected = null;
329
+ }
330
+ break;
331
+ case "Shift":
332
+ case "Tab":
333
+ if (event.key === "Shift") {
334
+ this.shiftPressed = true;
335
+ }
336
+ if (this.isSearchBar) {
337
+ this.keyboardNav = true;
338
+ }
339
+ if (this.isMultiSelect) {
340
+ if (this.open && !event.shiftKey && this.selectAllButton) {
341
+ event.preventDefault();
342
+ this.selectAllButton.focus(); // Move focus to select all button instead of focused option
343
+ this.preventMenuFocus = true;
344
+ this.preventClickOpen = true;
345
+ this.optionHighlighted = undefined; // Stop any option focus states showing when focus moved to select all button
190
346
  }
191
347
  }
192
348
  else {
193
- this.setInputValue(highlightedOptionIndex);
349
+ this.preventIncorrectTabOrder = true;
194
350
  }
195
- }
196
- else {
197
- this.handleMenuChange(true);
198
- }
199
- break;
200
- case "Escape":
201
- if (this.open) {
202
- event.stopImmediatePropagation();
203
- }
204
- this.handleMenuChange(false);
205
- this.menuOptionId.emit({ optionId: undefined });
206
- break;
207
- case "Shift":
208
- case "Tab":
209
- if (this.isSearchBar) {
210
- this.keyboardNav = true;
211
- }
212
- this.preventIncorrectTabOrder = true;
213
- break;
214
- default:
215
- this.keyboardNav = false;
216
- this.focusOnSearchOrSelectInput(menuOptions, highlightedOptionIndex);
217
- break;
351
+ break;
352
+ default:
353
+ if (!isKeyboardCombination) {
354
+ this.keyboardNav = false;
355
+ }
356
+ this.focusOnSearchOrSelectInput(menuOptions, highlightedOptionIndex);
357
+ }
218
358
  }
219
359
  };
220
360
  this.setInputValue = (highlightedOptionIndex) => {
221
- const menuOptions = this.setMenuOptions();
361
+ const menuOptions = this.getMenuOptions();
222
362
  if (menuOptions[highlightedOptionIndex] !== undefined) {
223
363
  this.menuOptionSelect.emit({
224
364
  value: menuOptions[highlightedOptionIndex][this.valueField],
225
365
  });
226
- this.optionHighlighted = undefined;
227
- this.menuOptionId.emit({ optionId: undefined });
366
+ if (this.closeOnSelect) {
367
+ this.optionHighlighted = undefined;
368
+ this.menuOptionId.emit({ optionId: undefined });
369
+ }
370
+ }
371
+ if (this.closeOnSelect) {
372
+ if (!this.hasTimedOut) {
373
+ this.handleMenuChange(false);
374
+ }
375
+ else {
376
+ this.parentEl.setFocus();
377
+ }
228
378
  }
229
- if (!this.hasTimedOut)
230
- this.handleMenuChange(false);
231
- else
232
- this.parentEl.setFocus();
233
379
  };
234
380
  this.handleOptionClick = (event) => {
235
381
  const { value, label } = event.target.dataset;
236
- this.menuOptionSelect.emit({ value, label });
237
- this.handleMenuChange(false);
382
+ if (this.isMultiSelect) {
383
+ const menuOptions = this.getMenuOptions();
384
+ const selectedOptionIndex = menuOptions.findIndex((option) => option.value === value);
385
+ this.handleOptionSelect(event, selectedOptionIndex, true);
386
+ this.multiOptionClicked = value;
387
+ }
388
+ else {
389
+ this.menuOptionSelect.emit({ value, label });
390
+ this.handleMenuChange(false);
391
+ }
392
+ this.optionHighlighted = undefined;
238
393
  };
239
394
  this.handleRetry = () => {
240
395
  this.retryButtonClicked.emit({ value: this.value });
@@ -247,13 +402,23 @@ export class Menu {
247
402
  };
248
403
  this.handleBlur = (event) => {
249
404
  if (event.relatedTarget !== this.inputEl) {
250
- if (!this.menu.contains(event.relatedTarget)) {
405
+ if (event.relatedTarget === this.selectAllButton) {
406
+ this.menu.removeAttribute(this.ACTIVE_DESCENDANT);
407
+ }
408
+ if (!(this.menu.contains(event.relatedTarget) ||
409
+ event.relatedTarget === this.selectAllButton)) {
251
410
  this.handleMenuChange(false, this.hasPreviouslyBlurred);
411
+ this.menu.removeAttribute(this.ACTIVE_DESCENDANT);
412
+ this.lastOptionFocused = null;
413
+ this.lastOptionSelected = null;
252
414
  }
253
415
  }
254
416
  else {
255
417
  this.handleMenuChange(false);
256
418
  this.preventClickOpen = true;
419
+ this.menu.removeAttribute(this.ACTIVE_DESCENDANT);
420
+ this.lastOptionFocused = null;
421
+ this.lastOptionSelected = null;
257
422
  }
258
423
  if (!this.isSearchBar)
259
424
  this.hasPreviouslyBlurred = !!event.relatedTarget;
@@ -266,12 +431,109 @@ export class Menu {
266
431
  this.autoSetValueOnMenuKeyDown(event);
267
432
  }
268
433
  else if (this.activationType === "manual" && !this.isSearchBar) {
269
- this.manSetInputValueKeyboardOpen(event);
434
+ this.manualSetInputValueKeyboardOpen(event);
435
+ }
436
+ };
437
+ this.handleMenuKeyUp = (event) => {
438
+ if (event.key === "Tab" && event.shiftKey) {
439
+ this.preventClickOpen = false;
440
+ }
441
+ if (event.key === "Enter" && this.disabledOptionSelected) {
442
+ this.disabledOptionSelected = false;
443
+ event.stopImmediatePropagation();
444
+ }
445
+ if (event.key === "Shift") {
446
+ this.shiftPressed = false;
447
+ }
448
+ };
449
+ this.handleSelectAllClick = () => {
450
+ this.keyboardNav = false;
451
+ this.menu.focus();
452
+ this.emitSelectAll();
453
+ this.lastOptionFocused = null;
454
+ this.lastOptionSelected = null;
455
+ };
456
+ this.handleSelectAllBlur = (event) => {
457
+ this.host.classList.remove("ic-select-select-all-focused");
458
+ if (!this.menu.contains(event.relatedTarget)) {
459
+ this.handleMenuChange(false, false);
460
+ }
461
+ };
462
+ this.handleSelectAllFocus = () => {
463
+ this.host.classList.add("ic-select-select-all-focused");
464
+ this.lastOptionFocused = null;
465
+ this.lastOptionSelected = null;
466
+ };
467
+ // Fix for Safari - select all button click was causing menu to close
468
+ this.handleSelectAllMouseDown = (event) => {
469
+ event.preventDefault();
470
+ };
471
+ // When shift key is being used to select contiguous options one by one on a multi-select
472
+ // I.e. holding shift and pressing up and down arrow keys
473
+ this.handleSingleShiftSelect = (event, optionToSelectIndex, options) => {
474
+ if (this.isMultiSelect &&
475
+ event.shiftKey &&
476
+ !this.isOptionSelected(optionToSelectIndex)) {
477
+ this.selectHighlightedOption(options, optionToSelectIndex);
478
+ this.lastOptionSelected = optionToSelectIndex;
479
+ }
480
+ };
481
+ // When shift key is being used to select multiple options at once on a multi-select
482
+ // I.e. holding shift when selecting another option
483
+ this.handleMultipleShiftSelect = (lastOptionInSelection, useFocusForSelection = false, firstOptionSelected = null) => {
484
+ this.shiftPressed = false;
485
+ const firstOptionInSelection = firstOptionSelected === null
486
+ ? this.getFirstOptionInSelection(useFocusForSelection)
487
+ : firstOptionSelected;
488
+ if (firstOptionInSelection !== null) {
489
+ const optionsToSelect = [];
490
+ if (firstOptionInSelection < lastOptionInSelection) {
491
+ for (let i = firstOptionInSelection; i < lastOptionInSelection + 1; i++) {
492
+ optionsToSelect.push(i);
493
+ }
494
+ }
495
+ else {
496
+ for (let i = firstOptionInSelection; i > lastOptionInSelection - 1; i--) {
497
+ optionsToSelect.push(i);
498
+ }
499
+ }
500
+ optionsToSelect.forEach((optionIndex) => !this.isOptionSelected(optionIndex) && this.setInputValue(optionIndex));
501
+ this.deselectSelectedOptions(optionsToSelect);
270
502
  }
271
503
  };
504
+ this.handleOptionSelect = (event, optionIndex, useFocusForSelection = false) => {
505
+ const menuOptions = this.getMenuOptions();
506
+ const firstOptionInSelection = this.getFirstOptionInSelection(useFocusForSelection);
507
+ if (event.shiftKey && firstOptionInSelection !== null) {
508
+ this.handleMultipleShiftSelect(optionIndex, useFocusForSelection, firstOptionInSelection);
509
+ }
510
+ else {
511
+ this.selectHighlightedOption(menuOptions, optionIndex);
512
+ }
513
+ this.lastOptionFocused = optionIndex;
514
+ this.lastOptionSelected = optionIndex;
515
+ };
516
+ this.getFirstOptionInSelection = (useFocusForSelection) => {
517
+ return useFocusForSelection && this.lastOptionFocused !== null
518
+ ? this.lastOptionFocused
519
+ : this.lastOptionSelected !== null
520
+ ? this.lastOptionSelected
521
+ : null;
522
+ };
523
+ this.emitSelectAll = () => {
524
+ var _a;
525
+ // Select all if there is either no value or not all options are selected
526
+ // 'true' means select all, 'false' means clear all
527
+ this.menuOptionSelectAll.emit({
528
+ select: !this.value || !(((_a = this.value) === null || _a === void 0 ? void 0 : _a.length) === this.ungroupedOptions.length),
529
+ });
530
+ };
272
531
  this.emitMenuKeyPress = (isNavKey, key) => {
273
532
  this.menuKeyPress.emit({ isNavKey: isNavKey, key: key });
274
533
  };
534
+ // Determines keyboard behaviour when selection is automatic
535
+ // (i.e. you don't have to press Enter select an option - just focus on it)
536
+ // and menu is focused
275
537
  this.autoSetValueOnMenuKeyDown = (event) => {
276
538
  event.cancelBubble = true;
277
539
  const selectedOptionIndex = this.ungroupedOptions.findIndex((option) => option[this.valueField] === this.value);
@@ -331,15 +593,6 @@ export class Menu {
331
593
  }
332
594
  this.emitMenuKeyPress(this.keyboardNav, event.key);
333
595
  };
334
- this.handleMenuKeyUp = (event) => {
335
- if (event.key === "Tab" && event.shiftKey) {
336
- this.preventClickOpen = false;
337
- }
338
- if (event.key === "Enter" && this.disabledOptionSelected) {
339
- this.disabledOptionSelected = false;
340
- event.stopImmediatePropagation();
341
- }
342
- };
343
596
  this.getOptionId = (value) => {
344
597
  return `${this.menuId}-${value}`;
345
598
  };
@@ -365,6 +618,10 @@ export class Menu {
365
618
  }
366
619
  return sorted;
367
620
  };
621
+ this.getOptionHighlightedIndex = () => {
622
+ const menuOptions = this.getMenuOptions();
623
+ return menuOptions.findIndex((option) => option[this.valueField] === this.optionHighlighted);
624
+ };
368
625
  this.isManualMode = this.activationType === "manual";
369
626
  this.scrollToSelected = (menu) => {
370
627
  const selectedOption = this.selectOnEnter
@@ -376,9 +633,14 @@ export class Menu {
376
633
  elTop < menu.scrollTop + menu.offsetHeight) {
377
634
  menu.scrollTop = selectedOption.offsetTop;
378
635
  }
636
+ // 'aria-activedescendant' affects screen reader focus
637
+ // https://www.w3.org/TR/2017/WD-wai-aria-practices-1.1-20170628/#kbd_focus_activedescendant
638
+ this.menu.setAttribute(this.ACTIVE_DESCENDANT, selectedOption.id);
379
639
  selectedOption.focus();
380
640
  }
381
641
  };
642
+ // Set 'ungroupedOptions' variable and emit its value
643
+ // - this is all the options with disabled options and group titles removed
382
644
  this.loadUngroupedOptions = () => {
383
645
  if (this.options.length > 0 && this.options.map) {
384
646
  this.options.map((option) => {
@@ -405,21 +667,24 @@ export class Menu {
405
667
  this.handleTimeoutBlur = (ev) => {
406
668
  this.timeoutBlur.emit({ ev });
407
669
  };
408
- this.optionContent = (option) => {
409
- var _a;
410
- return (h(Fragment, null, option.loading && h("ic-loading-indicator", { size: "icon" }), h("div", { class: "option-text-container" }, h("div", { class: "option-label" }, option.icon && (h("div", { class: "option-icon", innerHTML: option.icon, "aria-hidden": "true" })), h("ic-typography", { variant: "body", "aria-hidden": "true" }, option[this.labelField])), option.description && (h("ic-typography", { id: `${this.getOptionId(option[this.valueField])}-description`, class: "option-description", variant: "caption", "aria-hidden": "true" }, h("p", null, option.description))), option.element && (h("div", { class: "option-element", innerHTML: option.element.component, "aria-hidden": "true" }))), !!option[this.valueField] &&
670
+ this.optionContent = (option, selected) => {
671
+ const showCheckIcon = !!option[this.valueField] &&
411
672
  !!this.value &&
412
- option[this.valueField].toLowerCase() === ((_a = this.value) === null || _a === void 0 ? void 0 : _a.toLowerCase()) &&
413
- this.parentEl.tagName !== "IC-SEARCH-BAR" && (h("span", { class: "check-icon", innerHTML: Check }))));
673
+ selected &&
674
+ this.parentEl.tagName !== "IC-SEARCH-BAR";
675
+ return (h(Fragment, null, option.loading && h("ic-loading-indicator", { size: "icon" }), h("div", { class: {
676
+ "option-text-container": true,
677
+ "show-check-icon": showCheckIcon,
678
+ } }, h("div", { class: "option-label" }, option.icon && (h("div", { class: "option-icon", innerHTML: option.icon, "aria-hidden": "true" })), h("ic-typography", { variant: "body", "aria-hidden": "true" }, option[this.labelField])), option.description && (h("ic-typography", { id: `${this.getOptionId(option[this.valueField])}-description`, class: "option-description", variant: "caption", "aria-hidden": "true" }, h("p", null, option.description))), option.element && (h("div", { class: "option-element", innerHTML: option.element.component, "aria-hidden": "true" }))), showCheckIcon && h("span", { class: "check-icon", innerHTML: Check })));
414
679
  };
415
- this.displayOption = (option, index, parentOption) => {
416
- const { open, value, keyboardNav, isManualMode, initialOptionsListRender, optionHighlighted, options, } = this;
680
+ this.displayOption = (option, selected, index, parentOption) => {
681
+ const { open, keyboardNav, isManualMode, initialOptionsListRender, optionHighlighted, options, } = this;
417
682
  return (h("li", { id: this.getOptionId(option[this.valueField]), class: {
418
683
  option: true,
419
684
  "focused-option": isManualMode
420
685
  ? (keyboardNav || initialOptionsListRender) &&
421
686
  option[this.valueField] === optionHighlighted
422
- : keyboardNav && option[this.valueField] === value,
687
+ : keyboardNav && selected,
423
688
  "last-recommended-option": option.recommended &&
424
689
  options[index + 1] &&
425
690
  !options[index + 1].recommended,
@@ -427,20 +692,21 @@ export class Menu {
427
692
  "loading-option": option.loading,
428
693
  timeout: option.timedOut,
429
694
  }, role: "option", tabindex: open &&
430
- (option[this.valueField] === value ||
431
- option[this.valueField] === optionHighlighted) &&
695
+ (selected || option[this.valueField] === optionHighlighted) &&
432
696
  keyboardNav
433
697
  ? "0"
434
- : "-1", "aria-label": this.getOptionAriaLabel(option, parentOption), "aria-selected": `${option[this.valueField] === value}`, "aria-disabled": option.disabled ? "true" : "false", onClick: !option.timedOut && !option.loading && this.handleOptionClick, onBlur: this.handleBlur, onMouseDown: this.handleMouseDown, "data-value": option[this.valueField], "data-label": option[this.labelField] }, option.timedOut ? (h(Fragment, null, h("div", { class: "loading-error-info" }, h("svg", { class: "error-icon-svg", "aria-labelledby": "error-title", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "#000000" }, h("title", { id: "error-title" }, "Error"), h("g", { id: "close-octagon" }, h("path", { id: "Vector", d: "M8.77 3L3.5 8.27V15.73L8.77 21H16.23L21.5 15.73V8.27L16.23 3M8.91 7L12.5 10.59L16.09 7L17.5 8.41L13.91 12L17.5 15.59L16.09 17L12.5 13.41L8.91 17L7.5 15.59L11.09 12L7.5 8.41" }))), h("ic-typography", { variant: "label" }, option[this.labelField])), h("ic-button", { size: "small", variant: "tertiary", onClick: this.handleRetry, onKeyDown: this.handleRetryKeyDown, onBlur: this.handleTimeoutBlur, id: "retry-button" }, "Retry"))) : (this.optionContent(option))));
698
+ : "-1", "aria-label": this.getOptionAriaLabel(option, parentOption), "aria-selected": selected ? "true" : "false", "aria-disabled": option.disabled ? "true" : "false", onClick: !option.timedOut && !option.loading && this.handleOptionClick, onBlur: this.handleBlur, onMouseDown: this.handleMouseDown, "data-value": option[this.valueField], "data-label": option[this.labelField] }, option.timedOut ? (h(Fragment, null, h("div", { class: "loading-error-info" }, h("svg", { class: "error-icon-svg", "aria-labelledby": "error-title", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", fill: "#000000" }, h("title", { id: "error-title" }, "Error"), h("g", { id: "close-octagon" }, h("path", { id: "Vector", d: "M8.77 3L3.5 8.27V15.73L8.77 21H16.23L21.5 15.73V8.27L16.23 3M8.91 7L12.5 10.59L16.09 7L17.5 8.41L13.91 12L17.5 15.59L16.09 17L12.5 13.41L8.91 17L7.5 15.59L11.09 12L7.5 8.41" }))), h("ic-typography", { variant: "label" }, option[this.labelField])), h("ic-button", { size: "small", variant: "tertiary", onClick: this.handleRetry, onKeyDown: this.handleRetryKeyDown, onBlur: this.handleTimeoutBlur, id: "retry-button" }, "Retry"))) : (this.optionContent(option, selected))));
435
699
  };
436
700
  this.focusFromSearchKeypress = false;
437
701
  this.initialOptionsListRender = false;
438
702
  this.keyboardNav = false;
439
703
  this.optionHighlighted = undefined;
440
704
  this.preventIncorrectTabOrder = false;
705
+ this.menuOptions = undefined;
441
706
  this.activationType = "automatic";
442
707
  this.anchorEl = undefined;
443
708
  this.autoFocusOnSelected = true;
709
+ this.closeOnSelect = true;
444
710
  this.fullWidth = false;
445
711
  this.inputEl = undefined;
446
712
  this.inputLabel = undefined;
@@ -467,9 +733,6 @@ export class Menu {
467
733
  this.ungroupedOptions = [];
468
734
  this.loadUngroupedOptions();
469
735
  }
470
- watchValueHandler() {
471
- this.menuValueChange.emit({ value: this.value });
472
- }
473
736
  connectedCallback() {
474
737
  this.getParentEl(this.parentEl);
475
738
  if (this.isSearchBar) {
@@ -479,11 +742,12 @@ export class Menu {
479
742
  }
480
743
  }
481
744
  disconnectedCallback() {
745
+ var _a, _b;
482
746
  if (this.popperInstance) {
483
747
  this.popperInstance.destroy();
484
748
  }
485
- this.parentEl.removeEventListener("icClear", this.handleClearListener);
486
- this.parentEl.removeEventListener("icSubmitSearch", this.handleSubmitSearch);
749
+ (_a = this.parentEl) === null || _a === void 0 ? void 0 : _a.removeEventListener("icClear", this.handleClearListener);
750
+ (_b = this.parentEl) === null || _b === void 0 ? void 0 : _b.removeEventListener("icSubmitSearch", this.handleSubmitSearch);
487
751
  }
488
752
  componentWillLoad() {
489
753
  var _a, _b;
@@ -508,7 +772,7 @@ export class Menu {
508
772
  }
509
773
  componentDidUpdate() {
510
774
  const inputValueInOptions = this.options.some((option) => option[this.valueField] === this.value);
511
- if (this.open && this.options.length !== 0) {
775
+ if (this.open && this.options.length !== 0 && !this.preventMenuFocus) {
512
776
  if (this.value &&
513
777
  this.keyboardNav &&
514
778
  inputValueInOptions &&
@@ -516,8 +780,7 @@ export class Menu {
516
780
  !this.isSearchableSelect) {
517
781
  this.scrollToSelected(this.menu);
518
782
  }
519
- else if (this.inputEl.tagName !== "IC-TEXT-FIELD" &&
520
- this.inputEl.tagName !== "INPUT") {
783
+ else if (this.selectOnEnter) {
521
784
  this.menu.focus();
522
785
  }
523
786
  else if (!!this.optionHighlighted &&
@@ -525,13 +788,19 @@ export class Menu {
525
788
  !this.preventIncorrectTabOrder) {
526
789
  const highlightedEl = this.host.querySelector(`li[data-value="${this.optionHighlighted}"]`);
527
790
  if (highlightedEl) {
791
+ this.menu.setAttribute(this.ACTIVE_DESCENDANT, highlightedEl.id);
528
792
  highlightedEl.focus();
529
793
  }
530
794
  }
795
+ else if (this.inputEl.tagName !== "IC-TEXT-FIELD" &&
796
+ this.inputEl.tagName !== "INPUT") {
797
+ this.menu.focus();
798
+ }
531
799
  }
532
800
  if (this.open && !this.value && this.selectOnEnter) {
533
801
  this.scrollToSelected(this.menu);
534
802
  }
803
+ this.preventMenuFocus = false;
535
804
  }
536
805
  componentDidRender() {
537
806
  if (this.open && !this.popperInstance && this.anchorEl) {
@@ -561,7 +830,7 @@ export class Menu {
561
830
  this.autoSetInputValueKeyboardOpen(event);
562
831
  }
563
832
  else {
564
- this.manSetInputValueKeyboardOpen(event);
833
+ this.manualSetInputValueKeyboardOpen(event);
565
834
  }
566
835
  }
567
836
  /**
@@ -576,8 +845,9 @@ export class Menu {
576
845
  * boundary behaviour so sticking with PopperJS.
577
846
  */
578
847
  async initPopperJs(anchor) {
848
+ // Placements set to "-start" to accommodate for custom menu width - menu should always be aligned to the left
579
849
  this.popperInstance = createPopper(anchor, this.host, {
580
- placement: "bottom",
850
+ placement: "bottom-start",
581
851
  modifiers: [
582
852
  {
583
853
  name: "offset",
@@ -588,7 +858,7 @@ export class Menu {
588
858
  {
589
859
  name: "flip",
590
860
  options: {
591
- fallbackPlacements: ["top"],
861
+ fallbackPlacements: ["top-start"],
592
862
  rootBoundary: "viewport",
593
863
  },
594
864
  },
@@ -610,24 +880,38 @@ export class Menu {
610
880
  }
611
881
  render() {
612
882
  const { inputLabel, options, menuId, value, fullWidth, hasTimedOut, isLoading, size, open, inputEl, keyboardNav, } = this;
883
+ const selectAllButtonText = `${(value === null || value === void 0 ? void 0 : value.length) === this.ungroupedOptions.length ? "Clear" : "Select"} all`;
884
+ const hasNoResults = this.host.classList.contains("no-results");
613
885
  return (h(Host, { class: {
614
886
  "ic-menu-full-width": fullWidth,
615
887
  "ic-menu-no-focus": (inputEl === null || inputEl === void 0 ? void 0 : inputEl.tagName) === "INPUT" || hasTimedOut || isLoading,
616
888
  [`ic-menu-${size}`]: true,
617
- "ic-menu-open": open,
618
- } }, options.length !== 0 && (h("ul", { id: menuId, class: "menu", role: "listbox", "aria-label": inputLabel, "aria-activedescendant": value != null && value !== "" ? this.getOptionId(value) : "", tabindex: open && !keyboardNav && (inputEl === null || inputEl === void 0 ? void 0 : inputEl.tagName) !== "INPUT" ? "0" : "-1", ref: (el) => (this.menu = el), onKeyDown: this.handleMenuKeyDown, onKeyUp: this.handleMenuKeyUp, onBlur: this.handleBlur }, this.getSortedOptions(options).map((option, index) => {
889
+ "ic-menu-open": open && options.length !== 0,
890
+ "ic-menu-multiple": this.isMultiSelect,
891
+ } }, options.length !== 0 && (h("ul", { id: menuId, class: "menu", role: "listbox", "aria-label": `${inputLabel} pop-up`, "aria-multiselectable": this.isMultiSelect ? "true" : "false", tabindex: open && !keyboardNav && (inputEl === null || inputEl === void 0 ? void 0 : inputEl.tagName) !== "INPUT" ? "0" : "-1", ref: (el) => (this.menu = el), onKeyDown: this.handleMenuKeyDown, onKeyUp: this.handleMenuKeyUp, onBlur: this.handleBlur }, this.getSortedOptions(options).map((option, index) => {
619
892
  if (option.children) {
620
893
  if (option.children.length > 0) {
621
- return (h("div", null, h("ic-typography", { class: "option-group-title", role: "presentation", variant: "subtitle-small" }, h("p", null, option[this.labelField])), option.children.map((childOption) => this.displayOption(childOption, index, option))));
894
+ return (h("div", null, h("ic-typography", { class: "option-group-title", role: "presentation", variant: "subtitle-small" }, h("p", null, option[this.labelField])), option.children.map((childOption) => childOption.label &&
895
+ this.displayOption(childOption, this.isMultiSelect
896
+ ? value === null || value === void 0 ? void 0 : value.includes(childOption[this.valueField])
897
+ : childOption[this.valueField] === value, index, option))));
622
898
  }
623
899
  else {
624
900
  return null;
625
901
  }
626
902
  }
627
903
  else {
628
- return this.displayOption(option, index);
904
+ // Display option only if it has a label (rather than displaying an empty space)
905
+ return (option.label &&
906
+ this.displayOption(option, this.isMultiSelect
907
+ ? value === null || value === void 0 ? void 0 : value.includes(option[this.valueField])
908
+ : option[this.valueField] === value, index));
629
909
  }
630
- })))));
910
+ }))), options.length !== 0 &&
911
+ this.isMultiSelect &&
912
+ !isLoading &&
913
+ !hasTimedOut &&
914
+ !hasNoResults && (h("div", { class: "option-bar" }, h("ic-typography", null, h("p", null, `${value ? value.length : 0}/${getOptionsWithoutGroupTitlesCount(this.options)} selected`)), h("ic-button", { class: "select-all-button", "aria-label": `${selectAllButtonText} options for ${inputLabel}`, ref: (el) => (this.selectAllButton = el), variant: "tertiary", onClick: this.handleSelectAllClick, onMouseDown: this.handleSelectAllMouseDown, onBlur: this.handleSelectAllBlur, onFocus: this.handleSelectAllFocus, size: size === "small" ? "small" : "medium" }, selectAllButtonText)))));
631
915
  }
632
916
  static get is() { return "ic-menu"; }
633
917
  static get encapsulation() { return "scoped"; }
@@ -708,6 +992,24 @@ export class Menu {
708
992
  "reflect": false,
709
993
  "defaultValue": "true"
710
994
  },
995
+ "closeOnSelect": {
996
+ "type": "boolean",
997
+ "mutable": false,
998
+ "complexType": {
999
+ "original": "boolean",
1000
+ "resolved": "boolean",
1001
+ "references": {}
1002
+ },
1003
+ "required": false,
1004
+ "optional": false,
1005
+ "docs": {
1006
+ "tags": [],
1007
+ "text": "If `true`, the menu will close when an option is selected."
1008
+ },
1009
+ "attribute": "close-on-select",
1010
+ "reflect": false,
1011
+ "defaultValue": "true"
1012
+ },
711
1013
  "fullWidth": {
712
1014
  "type": "boolean",
713
1015
  "mutable": false,
@@ -901,7 +1203,7 @@ export class Menu {
901
1203
  "optional": true,
902
1204
  "docs": {
903
1205
  "tags": [],
904
- "text": "The size of the menu component."
1206
+ "text": "The size of the menu."
905
1207
  },
906
1208
  "attribute": "size",
907
1209
  "reflect": false,
@@ -930,17 +1232,17 @@ export class Menu {
930
1232
  },
931
1233
  "value": {
932
1234
  "type": "string",
933
- "mutable": true,
1235
+ "mutable": false,
934
1236
  "complexType": {
935
- "original": "string",
936
- "resolved": "string",
1237
+ "original": "string | string[]",
1238
+ "resolved": "string | string[]",
937
1239
  "references": {}
938
1240
  },
939
1241
  "required": true,
940
1242
  "optional": false,
941
1243
  "docs": {
942
1244
  "tags": [],
943
- "text": "The value of the currently selected option."
1245
+ "text": "The value of the currently selected option - or array of values (if multiple options allowed)."
944
1246
  },
945
1247
  "attribute": "value",
946
1248
  "reflect": false
@@ -971,7 +1273,8 @@ export class Menu {
971
1273
  "initialOptionsListRender": {},
972
1274
  "keyboardNav": {},
973
1275
  "optionHighlighted": {},
974
- "preventIncorrectTabOrder": {}
1276
+ "preventIncorrectTabOrder": {},
1277
+ "menuOptions": {}
975
1278
  };
976
1279
  }
977
1280
  static get events() {
@@ -984,7 +1287,7 @@ export class Menu {
984
1287
  "docs": {
985
1288
  "tags": [{
986
1289
  "name": "internal",
987
- "text": "Emitted when key is pressed while menu is open"
1290
+ "text": "Emitted when key is pressed while menu is open."
988
1291
  }],
989
1292
  "text": ""
990
1293
  },
@@ -1002,7 +1305,7 @@ export class Menu {
1002
1305
  "docs": {
1003
1306
  "tags": [{
1004
1307
  "name": "internal",
1005
- "text": "Emitted when an option has been highlighted"
1308
+ "text": "Emitted when an option has been highlighted."
1006
1309
  }],
1007
1310
  "text": ""
1008
1311
  },
@@ -1042,50 +1345,44 @@ export class Menu {
1042
1345
  }
1043
1346
  }
1044
1347
  }, {
1045
- "method": "menuStateChange",
1046
- "name": "menuStateChange",
1348
+ "method": "menuOptionSelectAll",
1349
+ "name": "menuOptionSelectAll",
1047
1350
  "bubbles": true,
1048
1351
  "cancelable": true,
1049
1352
  "composed": true,
1050
1353
  "docs": {
1051
1354
  "tags": [{
1052
1355
  "name": "internal",
1053
- "text": "Emitted when state of menu changes (i.e. open or close)."
1356
+ "text": "Emitted when all options are selected or deselected."
1054
1357
  }],
1055
1358
  "text": ""
1056
1359
  },
1057
1360
  "complexType": {
1058
- "original": "IcMenuChangeEventDetail",
1059
- "resolved": "IcMenuChangeEventDetail",
1060
- "references": {
1061
- "IcMenuChangeEventDetail": {
1062
- "location": "import",
1063
- "path": "./ic-menu.types",
1064
- "id": "src/components/ic-menu/ic-menu.types.ts::IcMenuChangeEventDetail"
1065
- }
1066
- }
1361
+ "original": "{ select: boolean }",
1362
+ "resolved": "{ select: boolean; }",
1363
+ "references": {}
1067
1364
  }
1068
1365
  }, {
1069
- "method": "menuValueChange",
1070
- "name": "menuValueChange",
1366
+ "method": "menuStateChange",
1367
+ "name": "menuStateChange",
1071
1368
  "bubbles": true,
1072
1369
  "cancelable": true,
1073
1370
  "composed": true,
1074
1371
  "docs": {
1075
1372
  "tags": [{
1076
1373
  "name": "internal",
1077
- "text": "Emitted when menu value changes."
1374
+ "text": "Emitted when state of menu changes (i.e. open or closed)."
1078
1375
  }],
1079
1376
  "text": ""
1080
1377
  },
1081
1378
  "complexType": {
1082
- "original": "IcValueEventDetail",
1083
- "resolved": "IcValueEventDetail",
1379
+ "original": "IcMenuChangeEventDetail",
1380
+ "resolved": "IcMenuChangeEventDetail",
1084
1381
  "references": {
1085
- "IcValueEventDetail": {
1382
+ "IcMenuChangeEventDetail": {
1086
1383
  "location": "import",
1087
- "path": "../../utils/types",
1088
- "id": "src/utils/types.ts::IcValueEventDetail"
1384
+ "path": "./ic-menu.types",
1385
+ "id": "src/components/ic-menu/ic-menu.types.ts::IcMenuChangeEventDetail"
1089
1386
  }
1090
1387
  }
1091
1388
  }
@@ -1098,7 +1395,7 @@ export class Menu {
1098
1395
  "docs": {
1099
1396
  "tags": [{
1100
1397
  "name": "internal",
1101
- "text": "Emitted when the retry button is clicked"
1398
+ "text": "Emitted when the retry button is clicked."
1102
1399
  }],
1103
1400
  "text": ""
1104
1401
  },
@@ -1122,7 +1419,7 @@ export class Menu {
1122
1419
  "docs": {
1123
1420
  "tags": [{
1124
1421
  "name": "internal",
1125
- "text": "Emitted when the timeout menu loses focus"
1422
+ "text": "Emitted when the timeout menu loses focus."
1126
1423
  }],
1127
1424
  "text": ""
1128
1425
  },
@@ -1270,9 +1567,6 @@ export class Menu {
1270
1567
  }, {
1271
1568
  "propName": "options",
1272
1569
  "methodName": "watchOptionsHandler"
1273
- }, {
1274
- "propName": "value",
1275
- "methodName": "watchValueHandler"
1276
1570
  }];
1277
1571
  }
1278
1572
  }