@ukic/canary-web-components 2.0.0-canary.14 → 2.0.0-canary.16

Sign up to get free protection for your applications and to get access to all the features.
Files changed (516) hide show
  1. package/dist/cjs/core.cjs.js +1 -1
  2. package/dist/cjs/{helpers-6d736902.js → helpers-4f5f087e.js} +59 -99
  3. package/dist/cjs/helpers-4f5f087e.js.map +1 -0
  4. package/dist/cjs/{helpers-f75cf7cf.js → helpers-fc9441f8.js} +34 -1
  5. package/dist/cjs/helpers-fc9441f8.js.map +1 -0
  6. package/dist/cjs/ic-accordion-group.cjs.entry.js +3 -1
  7. package/dist/cjs/ic-accordion-group.cjs.entry.js.map +1 -1
  8. package/dist/cjs/ic-accordion.cjs.entry.js +1 -1
  9. package/dist/cjs/ic-alert.cjs.entry.js +1 -1
  10. package/dist/cjs/ic-back-to-top.cjs.entry.js +15 -9
  11. package/dist/cjs/ic-back-to-top.cjs.entry.js.map +1 -1
  12. package/dist/cjs/ic-badge.cjs.entry.js +55 -77
  13. package/dist/cjs/ic-badge.cjs.entry.js.map +1 -1
  14. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js +3 -1
  15. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js.map +1 -1
  16. package/dist/cjs/ic-breadcrumb.cjs.entry.js +1 -1
  17. package/dist/cjs/ic-button_3.cjs.entry.js +14 -14
  18. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  19. package/dist/cjs/ic-card.cjs.entry.js +1 -1
  20. package/dist/cjs/ic-card.cjs.entry.js.map +1 -1
  21. package/dist/cjs/ic-checkbox-group.cjs.entry.js +23 -16
  22. package/dist/cjs/ic-checkbox-group.cjs.entry.js.map +1 -1
  23. package/dist/cjs/ic-checkbox.cjs.entry.js +33 -31
  24. package/dist/cjs/ic-checkbox.cjs.entry.js.map +1 -1
  25. package/dist/cjs/ic-chip.cjs.entry.js +21 -31
  26. package/dist/cjs/ic-chip.cjs.entry.js.map +1 -1
  27. package/dist/cjs/ic-data-row.cjs.entry.js +1 -1
  28. package/dist/cjs/ic-data-table-title-bar.cjs.entry.js +57 -0
  29. package/dist/cjs/ic-data-table-title-bar.cjs.entry.js.map +1 -0
  30. package/dist/cjs/ic-data-table.cjs.entry.js +163 -36
  31. package/dist/cjs/ic-data-table.cjs.entry.js.map +1 -1
  32. package/dist/cjs/ic-date-input.cjs.entry.js +1 -1
  33. package/dist/cjs/ic-date-picker.cjs.entry.js +1 -1
  34. package/dist/cjs/ic-dialog.cjs.entry.js +4 -2
  35. package/dist/cjs/ic-dialog.cjs.entry.js.map +1 -1
  36. package/dist/cjs/ic-divider.cjs.entry.js +1 -1
  37. package/dist/cjs/ic-empty-state_2.cjs.entry.js +345 -0
  38. package/dist/cjs/ic-empty-state_2.cjs.entry.js.map +1 -0
  39. package/dist/cjs/ic-footer-link-group.cjs.entry.js +2 -2
  40. package/dist/cjs/ic-footer-link-group.cjs.entry.js.map +1 -1
  41. package/dist/cjs/ic-footer-link.cjs.entry.js +1 -1
  42. package/dist/cjs/ic-footer.cjs.entry.js +2 -2
  43. package/dist/cjs/ic-footer.cjs.entry.js.map +1 -1
  44. package/dist/cjs/ic-hero.cjs.entry.js +3 -2
  45. package/dist/cjs/ic-hero.cjs.entry.js.map +1 -1
  46. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +2 -3
  47. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js.map +1 -1
  48. package/dist/cjs/ic-input-component-container_4.cjs.entry.js +2 -2
  49. package/dist/cjs/ic-input-component-container_4.cjs.entry.js.map +1 -1
  50. package/dist/cjs/ic-link.cjs.entry.js +2 -2
  51. package/dist/cjs/ic-link.cjs.entry.js.map +1 -1
  52. package/dist/cjs/ic-menu-group.cjs.entry.js +1 -1
  53. package/dist/cjs/ic-menu-item.cjs.entry.js +4 -10
  54. package/dist/cjs/ic-menu-item.cjs.entry.js.map +1 -1
  55. package/dist/cjs/ic-menu-with-multi.cjs.entry.js +176 -35
  56. package/dist/cjs/ic-menu-with-multi.cjs.entry.js.map +1 -1
  57. package/dist/cjs/ic-menu.cjs.entry.js +4 -4
  58. package/dist/cjs/ic-menu.cjs.entry.js.map +1 -1
  59. package/dist/cjs/ic-navigation-button.cjs.entry.js +1 -1
  60. package/dist/cjs/ic-navigation-group.cjs.entry.js +1 -1
  61. package/dist/cjs/ic-navigation-item.cjs.entry.js +2 -2
  62. package/dist/cjs/ic-navigation-item.cjs.entry.js.map +1 -1
  63. package/dist/cjs/ic-navigation-menu.cjs.entry.js +1 -1
  64. package/dist/cjs/ic-page-header.cjs.entry.js +1 -1
  65. package/dist/cjs/ic-pagination_4.cjs.entry.js +54 -29
  66. package/dist/cjs/ic-pagination_4.cjs.entry.js.map +1 -1
  67. package/dist/cjs/ic-popover-menu.cjs.entry.js +13 -18
  68. package/dist/cjs/ic-popover-menu.cjs.entry.js.map +1 -1
  69. package/dist/cjs/ic-radio-group.cjs.entry.js +12 -16
  70. package/dist/cjs/ic-radio-group.cjs.entry.js.map +1 -1
  71. package/dist/cjs/ic-radio-option.cjs.entry.js +37 -37
  72. package/dist/cjs/ic-radio-option.cjs.entry.js.map +1 -1
  73. package/dist/cjs/ic-search-bar.cjs.entry.js +1 -1
  74. package/dist/cjs/ic-select-with-multi.cjs.entry.js +1 -1
  75. package/dist/cjs/ic-side-navigation.cjs.entry.js +1 -1
  76. package/dist/cjs/ic-skeleton.cjs.entry.js +16 -35
  77. package/dist/cjs/ic-skeleton.cjs.entry.js.map +1 -1
  78. package/dist/cjs/ic-status-tag.cjs.entry.js +1 -1
  79. package/dist/cjs/ic-status-tag.cjs.entry.js.map +1 -1
  80. package/dist/cjs/ic-step.cjs.entry.js +1 -1
  81. package/dist/cjs/ic-stepper.cjs.entry.js +1 -1
  82. package/dist/cjs/ic-switch.cjs.entry.js +2 -2
  83. package/dist/cjs/ic-switch.cjs.entry.js.map +1 -1
  84. package/dist/cjs/ic-tab-group.cjs.entry.js +1 -1
  85. package/dist/cjs/ic-tab-panel.cjs.entry.js +1 -1
  86. package/dist/cjs/ic-tab.cjs.entry.js +2 -2
  87. package/dist/cjs/ic-tab.cjs.entry.js.map +1 -1
  88. package/dist/cjs/ic-theme.cjs.entry.js +13 -15
  89. package/dist/cjs/ic-theme.cjs.entry.js.map +1 -1
  90. package/dist/cjs/ic-toast.cjs.entry.js +1 -1
  91. package/dist/cjs/ic-toggle-button.cjs.entry.js +2 -2
  92. package/dist/cjs/ic-toggle-button.cjs.entry.js.map +1 -1
  93. package/dist/cjs/ic-top-navigation.cjs.entry.js +15 -24
  94. package/dist/cjs/ic-top-navigation.cjs.entry.js.map +1 -1
  95. package/dist/cjs/ic-typography.cjs.entry.js +2 -2
  96. package/dist/cjs/ic-typography.cjs.entry.js.map +1 -1
  97. package/dist/cjs/index-4cf27b16.js +8 -8
  98. package/dist/cjs/loader.cjs.js +1 -1
  99. package/dist/collection/collection-manifest.json +1 -0
  100. package/dist/collection/components/ic-data-table/ic-data-table.css +76 -1
  101. package/dist/collection/components/ic-data-table/ic-data-table.js +372 -53
  102. package/dist/collection/components/ic-data-table/ic-data-table.js.map +1 -1
  103. package/dist/collection/components/ic-data-table/ic-data-table.types.js.map +1 -1
  104. package/dist/collection/components/ic-data-table/story-data.js +262 -4
  105. package/dist/collection/components/ic-data-table/story-data.js.map +1 -1
  106. package/dist/collection/components/ic-data-table/test/basic/ic-data-table.spec.js +324 -3
  107. package/dist/collection/components/ic-data-table/test/basic/ic-data-table.spec.js.map +1 -1
  108. package/dist/collection/components/ic-data-table-title-bar/ic-data-table-title-bar.css +91 -0
  109. package/dist/collection/components/ic-data-table-title-bar/ic-data-table-title-bar.js +160 -0
  110. package/dist/collection/components/ic-data-table-title-bar/ic-data-table-title-bar.js.map +1 -0
  111. package/dist/collection/components/ic-data-table-title-bar/test/a11y/ic-data-table-title-bar.test.a11y.js +11 -0
  112. package/dist/collection/components/ic-data-table-title-bar/test/a11y/ic-data-table-title-bar.test.a11y.js.map +1 -0
  113. package/dist/collection/components/ic-data-table-title-bar/test/basic/ic-data-table-title-bar.spec.js +70 -0
  114. package/dist/collection/components/ic-data-table-title-bar/test/basic/ic-data-table-title-bar.spec.js.map +1 -0
  115. package/dist/collection/components/ic-menu-with-multi/ic-menu.js +176 -35
  116. package/dist/collection/components/ic-menu-with-multi/ic-menu.js.map +1 -1
  117. package/dist/collection/components/ic-menu-with-multi/test/basic/ic-menu.spec.js +226 -49
  118. package/dist/collection/components/ic-menu-with-multi/test/basic/ic-menu.spec.js.map +1 -1
  119. package/dist/collection/components/ic-pagination-bar/ic-pagination-bar.js +180 -119
  120. package/dist/collection/components/ic-pagination-bar/ic-pagination-bar.js.map +1 -1
  121. package/dist/collection/components/ic-pagination-bar/test/basic/ic-pagination-bar.spec.js +56 -11
  122. package/dist/collection/components/ic-pagination-bar/test/basic/ic-pagination-bar.spec.js.map +1 -1
  123. package/dist/collection/utils/helpers.js +4 -1
  124. package/dist/collection/utils/helpers.js.map +1 -1
  125. package/dist/collection/utils/types.js.map +1 -1
  126. package/dist/components/helpers.js +57 -97
  127. package/dist/components/helpers.js.map +1 -1
  128. package/dist/components/helpers2.js +31 -1
  129. package/dist/components/helpers2.js.map +1 -1
  130. package/dist/components/ic-accordion-group.js +2 -1
  131. package/dist/components/ic-accordion-group.js.map +1 -1
  132. package/dist/components/ic-back-to-top.js +22 -9
  133. package/dist/components/ic-back-to-top.js.map +1 -1
  134. package/dist/components/ic-badge.js +59 -77
  135. package/dist/components/ic-badge.js.map +1 -1
  136. package/dist/components/ic-breadcrumb-group.js +2 -0
  137. package/dist/components/ic-breadcrumb-group.js.map +1 -1
  138. package/dist/components/ic-button2.js +11 -11
  139. package/dist/components/ic-button2.js.map +1 -1
  140. package/dist/components/ic-card.js.map +1 -1
  141. package/dist/components/ic-checkbox-group.js +26 -16
  142. package/dist/components/ic-checkbox-group.js.map +1 -1
  143. package/dist/components/ic-checkbox.js +33 -31
  144. package/dist/components/ic-checkbox.js.map +1 -1
  145. package/dist/components/ic-chip.js +21 -31
  146. package/dist/components/ic-chip.js.map +1 -1
  147. package/dist/components/ic-data-table-title-bar.d.ts +11 -0
  148. package/dist/components/ic-data-table-title-bar.js +136 -0
  149. package/dist/components/ic-data-table-title-bar.js.map +1 -0
  150. package/dist/components/ic-data-table.js +189 -43
  151. package/dist/components/ic-data-table.js.map +1 -1
  152. package/dist/components/ic-date-input2.js +1 -1
  153. package/dist/components/ic-date-picker.js +1 -1
  154. package/dist/components/ic-dialog.js +4 -2
  155. package/dist/components/ic-dialog.js.map +1 -1
  156. package/dist/components/ic-divider2.js +1 -1
  157. package/dist/components/ic-empty-state.js +1 -57
  158. package/dist/components/ic-empty-state.js.map +1 -1
  159. package/dist/{esm/ic-empty-state.entry.js → components/ic-empty-state2.js} +38 -11
  160. package/dist/components/ic-empty-state2.js.map +1 -0
  161. package/dist/components/ic-footer-link-group.js +2 -2
  162. package/dist/components/ic-footer-link-group.js.map +1 -1
  163. package/dist/components/ic-footer-link.js +1 -1
  164. package/dist/components/ic-footer.js +2 -2
  165. package/dist/components/ic-footer.js.map +1 -1
  166. package/dist/components/ic-hero.js +3 -2
  167. package/dist/components/ic-hero.js.map +1 -1
  168. package/dist/components/ic-horizontal-scroll2.js +1 -2
  169. package/dist/components/ic-horizontal-scroll2.js.map +1 -1
  170. package/dist/components/ic-input-component-container2.js +2 -2
  171. package/dist/components/ic-input-component-container2.js.map +1 -1
  172. package/dist/components/ic-link2.js +1 -1
  173. package/dist/components/ic-link2.js.map +1 -1
  174. package/dist/components/ic-loading-indicator2.js +1 -1
  175. package/dist/components/ic-loading-indicator2.js.map +1 -1
  176. package/dist/components/ic-menu-item2.js +4 -10
  177. package/dist/components/ic-menu-item2.js.map +1 -1
  178. package/dist/components/ic-menu2.js +3 -3
  179. package/dist/components/ic-menu2.js.map +1 -1
  180. package/dist/components/ic-menu3.js +177 -36
  181. package/dist/components/ic-menu3.js.map +1 -1
  182. package/dist/components/ic-navigation-button.js +1 -1
  183. package/dist/components/ic-navigation-group.js +1 -1
  184. package/dist/components/ic-navigation-item.js +2 -2
  185. package/dist/components/ic-navigation-item.js.map +1 -1
  186. package/dist/components/ic-pagination-bar2.js +160 -103
  187. package/dist/components/ic-pagination-bar2.js.map +1 -1
  188. package/dist/components/ic-pagination-item2.js +22 -12
  189. package/dist/components/ic-pagination-item2.js.map +1 -1
  190. package/dist/components/ic-pagination2.js +23 -8
  191. package/dist/components/ic-pagination2.js.map +1 -1
  192. package/dist/components/ic-popover-menu.js +12 -17
  193. package/dist/components/ic-popover-menu.js.map +1 -1
  194. package/dist/components/ic-radio-group.js +11 -15
  195. package/dist/components/ic-radio-group.js.map +1 -1
  196. package/dist/components/ic-radio-option.js +37 -37
  197. package/dist/components/ic-radio-option.js.map +1 -1
  198. package/dist/components/ic-search-bar.js +1 -1
  199. package/dist/components/ic-select-with-multi.js +1 -1
  200. package/dist/components/ic-select2.js +10 -6
  201. package/dist/components/ic-select2.js.map +1 -1
  202. package/dist/components/ic-side-navigation.js +1 -1
  203. package/dist/components/ic-skeleton.js +17 -40
  204. package/dist/components/ic-skeleton.js.map +1 -1
  205. package/dist/components/ic-status-tag.js.map +1 -1
  206. package/dist/components/ic-switch.js +1 -1
  207. package/dist/components/ic-switch.js.map +1 -1
  208. package/dist/components/ic-tab.js +1 -1
  209. package/dist/components/ic-tab.js.map +1 -1
  210. package/dist/components/ic-text-field2.js +8 -8
  211. package/dist/components/ic-text-field2.js.map +1 -1
  212. package/dist/components/ic-theme.js +13 -15
  213. package/dist/components/ic-theme.js.map +1 -1
  214. package/dist/components/ic-toggle-button.js +1 -1
  215. package/dist/components/ic-toggle-button.js.map +1 -1
  216. package/dist/components/ic-tooltip2.js +1 -1
  217. package/dist/components/ic-tooltip2.js.map +1 -1
  218. package/dist/components/ic-top-navigation.js +15 -24
  219. package/dist/components/ic-top-navigation.js.map +1 -1
  220. package/dist/components/ic-typography2.js +1 -1
  221. package/dist/components/ic-typography2.js.map +1 -1
  222. package/dist/core/core.css +2 -2
  223. package/dist/core/core.esm.js +1 -1
  224. package/dist/core/core.esm.js.map +1 -1
  225. package/dist/core/p-0e51d58e.entry.js +2 -0
  226. package/dist/core/p-0e51d58e.entry.js.map +1 -0
  227. package/dist/core/{p-4fd58768.entry.js → p-11b243c9.entry.js} +2 -2
  228. package/dist/core/{p-4bd13376.entry.js → p-185e91f0.entry.js} +2 -2
  229. package/dist/core/p-185e91f0.entry.js.map +1 -0
  230. package/dist/core/p-1a45f961.entry.js +2 -0
  231. package/dist/core/{p-e8151d13.entry.js.map → p-1a45f961.entry.js.map} +1 -1
  232. package/dist/core/p-1b4f852c.js +2 -0
  233. package/dist/core/p-1b4f852c.js.map +1 -0
  234. package/dist/core/{p-4ad3012a.entry.js → p-1fb48c84.entry.js} +2 -2
  235. package/dist/core/{p-6dce8e88.entry.js → p-1fff20ce.entry.js} +2 -2
  236. package/dist/core/p-1fff20ce.entry.js.map +1 -0
  237. package/dist/core/{p-1a91e842.entry.js → p-201ec29e.entry.js} +2 -2
  238. package/dist/core/{p-1a91e842.entry.js.map → p-201ec29e.entry.js.map} +1 -1
  239. package/dist/core/p-20d4ded5.js +2 -0
  240. package/dist/core/p-20d4ded5.js.map +1 -0
  241. package/dist/core/p-20f244ad.entry.js +2 -0
  242. package/dist/core/p-20f244ad.entry.js.map +1 -0
  243. package/dist/core/p-2536b95b.entry.js +2 -0
  244. package/dist/core/p-2536b95b.entry.js.map +1 -0
  245. package/dist/core/{p-730f058b.entry.js → p-25bbf4be.entry.js} +2 -2
  246. package/dist/core/p-25bbf4be.entry.js.map +1 -0
  247. package/dist/core/p-303dc008.entry.js +2 -0
  248. package/dist/core/p-303dc008.entry.js.map +1 -0
  249. package/dist/core/p-3484b15b.entry.js +2 -0
  250. package/dist/core/p-3484b15b.entry.js.map +1 -0
  251. package/dist/core/{p-aabab75f.entry.js → p-3fa986f8.entry.js} +2 -2
  252. package/dist/core/{p-f8f36680.entry.js → p-450f72b2.entry.js} +2 -2
  253. package/dist/core/{p-8b820365.entry.js → p-48c39d2a.entry.js} +2 -2
  254. package/dist/core/{p-a2dc10d8.entry.js → p-4aac2373.entry.js} +2 -2
  255. package/dist/core/{p-db3a35fb.entry.js → p-5201cd2b.entry.js} +2 -2
  256. package/dist/core/{p-db3a35fb.entry.js.map → p-5201cd2b.entry.js.map} +1 -1
  257. package/dist/core/p-53aeca18.entry.js +2 -0
  258. package/dist/core/p-53aeca18.entry.js.map +1 -0
  259. package/dist/core/{p-6eb58b0a.entry.js → p-5447f2fd.entry.js} +2 -2
  260. package/dist/core/{p-e1963c78.entry.js → p-5a5a52d3.entry.js} +2 -2
  261. package/dist/core/p-5a5a52d3.entry.js.map +1 -0
  262. package/dist/core/{p-946625a3.entry.js → p-60494f69.entry.js} +2 -2
  263. package/dist/core/p-60494f69.entry.js.map +1 -0
  264. package/dist/core/p-646b886c.entry.js +2 -0
  265. package/dist/core/p-646b886c.entry.js.map +1 -0
  266. package/dist/core/p-6996b750.entry.js +2 -0
  267. package/dist/core/p-6996b750.entry.js.map +1 -0
  268. package/dist/core/{p-849f43c3.entry.js → p-7114ae3b.entry.js} +2 -2
  269. package/dist/core/{p-494c3cbe.entry.js → p-71ddb6d9.entry.js} +2 -2
  270. package/dist/core/{p-baf81f30.entry.js → p-787ffd96.entry.js} +2 -2
  271. package/dist/core/p-787ffd96.entry.js.map +1 -0
  272. package/dist/core/p-7c569c2d.entry.js +2 -0
  273. package/dist/core/p-7c569c2d.entry.js.map +1 -0
  274. package/dist/core/{p-c621d6b0.entry.js → p-7f6de032.entry.js} +2 -2
  275. package/dist/core/p-7f6de032.entry.js.map +1 -0
  276. package/dist/core/{p-c14a897d.entry.js → p-7fe37432.entry.js} +2 -2
  277. package/dist/core/{p-9567c117.entry.js → p-86e679ab.entry.js} +2 -2
  278. package/dist/core/{p-a8c15117.entry.js → p-87075008.entry.js} +2 -2
  279. package/dist/core/p-895472da.entry.js +2 -0
  280. package/dist/core/p-895472da.entry.js.map +1 -0
  281. package/dist/core/{p-00bd7919.entry.js → p-8a67e960.entry.js} +2 -2
  282. package/dist/core/{p-9d8883d7.entry.js → p-8ccb23bd.entry.js} +2 -2
  283. package/dist/core/{p-9d8883d7.entry.js.map → p-8ccb23bd.entry.js.map} +1 -1
  284. package/dist/core/{p-d2d63a61.entry.js → p-9c22b14f.entry.js} +2 -2
  285. package/dist/core/{p-d2d63a61.entry.js.map → p-9c22b14f.entry.js.map} +1 -1
  286. package/dist/core/{p-19c1e271.entry.js → p-a1df23b4.entry.js} +2 -2
  287. package/dist/core/p-a1df23b4.entry.js.map +1 -0
  288. package/dist/core/{p-3dcc61cc.entry.js → p-a821c21f.entry.js} +2 -2
  289. package/dist/core/{p-3dcc61cc.entry.js.map → p-a821c21f.entry.js.map} +1 -1
  290. package/dist/core/{p-cca482e2.entry.js → p-b3b834b3.entry.js} +2 -2
  291. package/dist/core/p-b3b834b3.entry.js.map +1 -0
  292. package/dist/core/p-b4949e9a.entry.js +2 -0
  293. package/dist/core/p-b4949e9a.entry.js.map +1 -0
  294. package/dist/core/p-b7c644d1.entry.js +2 -0
  295. package/dist/core/p-b7c644d1.entry.js.map +1 -0
  296. package/dist/core/{p-0af27517.entry.js → p-b94ef8de.entry.js} +2 -2
  297. package/dist/core/p-ba1c1804.entry.js +2 -0
  298. package/dist/core/p-ba1c1804.entry.js.map +1 -0
  299. package/dist/core/{p-7fda2f94.entry.js → p-bbb1ce94.entry.js} +2 -2
  300. package/dist/core/p-bda7d350.entry.js +2 -0
  301. package/dist/core/p-bda7d350.entry.js.map +1 -0
  302. package/dist/core/{p-8b1f9648.entry.js → p-c5147498.entry.js} +2 -2
  303. package/dist/core/{p-ff6f1e3a.entry.js → p-d3a13342.entry.js} +2 -2
  304. package/dist/core/{p-843bdaae.entry.js → p-d4fed5f6.entry.js} +2 -2
  305. package/dist/core/p-d4fed5f6.entry.js.map +1 -0
  306. package/dist/core/p-d6ad82d8.entry.js +2 -0
  307. package/dist/core/p-d6ad82d8.entry.js.map +1 -0
  308. package/dist/core/{p-a05755b1.entry.js → p-d79bfead.entry.js} +2 -2
  309. package/dist/core/{p-a05755b1.entry.js.map → p-d79bfead.entry.js.map} +1 -1
  310. package/dist/core/p-db5c4969.entry.js +2 -0
  311. package/dist/core/{p-06c27edb.entry.js.map → p-db5c4969.entry.js.map} +1 -1
  312. package/dist/core/{p-957de939.entry.js → p-dd787b5b.entry.js} +2 -2
  313. package/dist/core/p-e42b66d5.entry.js +2 -0
  314. package/dist/core/p-e42b66d5.entry.js.map +1 -0
  315. package/dist/core/{p-9528b29e.entry.js → p-e4e89a4d.entry.js} +2 -2
  316. package/dist/core/{p-e16f73ba.entry.js → p-f704629e.entry.js} +2 -2
  317. package/dist/core/p-f704629e.entry.js.map +1 -0
  318. package/dist/core/p-fae5b518.entry.js +2 -0
  319. package/dist/core/p-fae5b518.entry.js.map +1 -0
  320. package/dist/core/{p-00c5639e.entry.js → p-ff697d68.entry.js} +2 -2
  321. package/dist/core/p-ff697d68.entry.js.map +1 -0
  322. package/dist/esm/core.js +1 -1
  323. package/dist/esm/{helpers-f328a7b6.js → helpers-1cd71f8a.js} +32 -2
  324. package/dist/esm/helpers-1cd71f8a.js.map +1 -0
  325. package/dist/esm/{helpers-c34e4042.js → helpers-84d21612.js} +58 -98
  326. package/dist/esm/helpers-84d21612.js.map +1 -0
  327. package/dist/esm/ic-accordion-group.entry.js +3 -1
  328. package/dist/esm/ic-accordion-group.entry.js.map +1 -1
  329. package/dist/esm/ic-accordion.entry.js +1 -1
  330. package/dist/esm/ic-alert.entry.js +1 -1
  331. package/dist/esm/ic-back-to-top.entry.js +15 -9
  332. package/dist/esm/ic-back-to-top.entry.js.map +1 -1
  333. package/dist/esm/ic-badge.entry.js +55 -77
  334. package/dist/esm/ic-badge.entry.js.map +1 -1
  335. package/dist/esm/ic-breadcrumb-group.entry.js +3 -1
  336. package/dist/esm/ic-breadcrumb-group.entry.js.map +1 -1
  337. package/dist/esm/ic-breadcrumb.entry.js +1 -1
  338. package/dist/esm/ic-button_3.entry.js +14 -14
  339. package/dist/esm/ic-button_3.entry.js.map +1 -1
  340. package/dist/esm/ic-card.entry.js +1 -1
  341. package/dist/esm/ic-card.entry.js.map +1 -1
  342. package/dist/esm/ic-checkbox-group.entry.js +23 -16
  343. package/dist/esm/ic-checkbox-group.entry.js.map +1 -1
  344. package/dist/esm/ic-checkbox.entry.js +33 -31
  345. package/dist/esm/ic-checkbox.entry.js.map +1 -1
  346. package/dist/esm/ic-chip.entry.js +21 -31
  347. package/dist/esm/ic-chip.entry.js.map +1 -1
  348. package/dist/esm/ic-data-row.entry.js +1 -1
  349. package/dist/esm/ic-data-table-title-bar.entry.js +53 -0
  350. package/dist/esm/ic-data-table-title-bar.entry.js.map +1 -0
  351. package/dist/esm/ic-data-table.entry.js +164 -37
  352. package/dist/esm/ic-data-table.entry.js.map +1 -1
  353. package/dist/esm/ic-date-input.entry.js +1 -1
  354. package/dist/esm/ic-date-picker.entry.js +1 -1
  355. package/dist/esm/ic-dialog.entry.js +4 -2
  356. package/dist/esm/ic-dialog.entry.js.map +1 -1
  357. package/dist/esm/ic-divider.entry.js +1 -1
  358. package/dist/esm/ic-empty-state_2.entry.js +340 -0
  359. package/dist/esm/ic-empty-state_2.entry.js.map +1 -0
  360. package/dist/esm/ic-footer-link-group.entry.js +2 -2
  361. package/dist/esm/ic-footer-link-group.entry.js.map +1 -1
  362. package/dist/esm/ic-footer-link.entry.js +1 -1
  363. package/dist/esm/ic-footer.entry.js +2 -2
  364. package/dist/esm/ic-footer.entry.js.map +1 -1
  365. package/dist/esm/ic-hero.entry.js +3 -2
  366. package/dist/esm/ic-hero.entry.js.map +1 -1
  367. package/dist/esm/ic-horizontal-scroll.entry.js +2 -3
  368. package/dist/esm/ic-horizontal-scroll.entry.js.map +1 -1
  369. package/dist/esm/ic-input-component-container_4.entry.js +2 -2
  370. package/dist/esm/ic-input-component-container_4.entry.js.map +1 -1
  371. package/dist/esm/ic-link.entry.js +2 -2
  372. package/dist/esm/ic-link.entry.js.map +1 -1
  373. package/dist/esm/ic-menu-group.entry.js +1 -1
  374. package/dist/esm/ic-menu-item.entry.js +4 -10
  375. package/dist/esm/ic-menu-item.entry.js.map +1 -1
  376. package/dist/esm/ic-menu-with-multi.entry.js +176 -35
  377. package/dist/esm/ic-menu-with-multi.entry.js.map +1 -1
  378. package/dist/esm/ic-menu.entry.js +4 -4
  379. package/dist/esm/ic-menu.entry.js.map +1 -1
  380. package/dist/esm/ic-navigation-button.entry.js +1 -1
  381. package/dist/esm/ic-navigation-group.entry.js +1 -1
  382. package/dist/esm/ic-navigation-item.entry.js +2 -2
  383. package/dist/esm/ic-navigation-item.entry.js.map +1 -1
  384. package/dist/esm/ic-navigation-menu.entry.js +1 -1
  385. package/dist/esm/ic-page-header.entry.js +1 -1
  386. package/dist/esm/ic-pagination_4.entry.js +54 -29
  387. package/dist/esm/ic-pagination_4.entry.js.map +1 -1
  388. package/dist/esm/ic-popover-menu.entry.js +13 -18
  389. package/dist/esm/ic-popover-menu.entry.js.map +1 -1
  390. package/dist/esm/ic-radio-group.entry.js +12 -16
  391. package/dist/esm/ic-radio-group.entry.js.map +1 -1
  392. package/dist/esm/ic-radio-option.entry.js +37 -37
  393. package/dist/esm/ic-radio-option.entry.js.map +1 -1
  394. package/dist/esm/ic-search-bar.entry.js +1 -1
  395. package/dist/esm/ic-select-with-multi.entry.js +1 -1
  396. package/dist/esm/ic-side-navigation.entry.js +1 -1
  397. package/dist/esm/ic-skeleton.entry.js +16 -35
  398. package/dist/esm/ic-skeleton.entry.js.map +1 -1
  399. package/dist/esm/ic-status-tag.entry.js +1 -1
  400. package/dist/esm/ic-status-tag.entry.js.map +1 -1
  401. package/dist/esm/ic-step.entry.js +1 -1
  402. package/dist/esm/ic-stepper.entry.js +1 -1
  403. package/dist/esm/ic-switch.entry.js +2 -2
  404. package/dist/esm/ic-switch.entry.js.map +1 -1
  405. package/dist/esm/ic-tab-group.entry.js +1 -1
  406. package/dist/esm/ic-tab-panel.entry.js +1 -1
  407. package/dist/esm/ic-tab.entry.js +2 -2
  408. package/dist/esm/ic-tab.entry.js.map +1 -1
  409. package/dist/esm/ic-theme.entry.js +13 -15
  410. package/dist/esm/ic-theme.entry.js.map +1 -1
  411. package/dist/esm/ic-toast.entry.js +1 -1
  412. package/dist/esm/ic-toggle-button.entry.js +2 -2
  413. package/dist/esm/ic-toggle-button.entry.js.map +1 -1
  414. package/dist/esm/ic-top-navigation.entry.js +15 -24
  415. package/dist/esm/ic-top-navigation.entry.js.map +1 -1
  416. package/dist/esm/ic-typography.entry.js +2 -2
  417. package/dist/esm/ic-typography.entry.js.map +1 -1
  418. package/dist/esm/index-93509377.js +8 -8
  419. package/dist/esm/loader.js +1 -1
  420. package/dist/types/components/ic-data-table/ic-data-table.d.ts +79 -13
  421. package/dist/types/components/ic-data-table/ic-data-table.types.d.ts +9 -0
  422. package/dist/types/components/ic-data-table/story-data.d.ts +59 -0
  423. package/dist/types/components/ic-data-table-title-bar/ic-data-table-title-bar.d.ts +36 -0
  424. package/dist/types/components/ic-data-table-title-bar/test/a11y/ic-data-table-title-bar.test.a11y.d.ts +1 -0
  425. package/dist/types/components/ic-menu-with-multi/ic-menu.d.ts +10 -0
  426. package/dist/types/components/ic-pagination-bar/ic-pagination-bar.d.ts +33 -13
  427. package/dist/types/components.d.ts +211 -46
  428. package/dist/types/utils/helpers.d.ts +1 -0
  429. package/dist/types/utils/types.d.ts +21 -5
  430. package/hydrate/index.js +1414 -1058
  431. package/package.json +3 -3
  432. package/dist/cjs/helpers-6d736902.js.map +0 -1
  433. package/dist/cjs/helpers-f75cf7cf.js.map +0 -1
  434. package/dist/cjs/ic-empty-state.cjs.entry.js +0 -38
  435. package/dist/cjs/ic-empty-state.cjs.entry.js.map +0 -1
  436. package/dist/cjs/ic-pagination-bar.cjs.entry.js +0 -269
  437. package/dist/cjs/ic-pagination-bar.cjs.entry.js.map +0 -1
  438. package/dist/collection/components/ic-pagination/ic-pagination.types.js +0 -2
  439. package/dist/collection/components/ic-pagination/ic-pagination.types.js.map +0 -1
  440. package/dist/core/p-00c5639e.entry.js.map +0 -1
  441. package/dist/core/p-06c27edb.entry.js +0 -2
  442. package/dist/core/p-162f3e36.entry.js +0 -2
  443. package/dist/core/p-162f3e36.entry.js.map +0 -1
  444. package/dist/core/p-19c1e271.entry.js.map +0 -1
  445. package/dist/core/p-1c3bd46d.entry.js +0 -2
  446. package/dist/core/p-1c3bd46d.entry.js.map +0 -1
  447. package/dist/core/p-2c9d6334.entry.js +0 -2
  448. package/dist/core/p-2c9d6334.entry.js.map +0 -1
  449. package/dist/core/p-3e9a8977.entry.js +0 -2
  450. package/dist/core/p-3e9a8977.entry.js.map +0 -1
  451. package/dist/core/p-41b682dc.entry.js +0 -2
  452. package/dist/core/p-41b682dc.entry.js.map +0 -1
  453. package/dist/core/p-4bd13376.entry.js.map +0 -1
  454. package/dist/core/p-6dce8e88.entry.js.map +0 -1
  455. package/dist/core/p-730f058b.entry.js.map +0 -1
  456. package/dist/core/p-7f53d1be.entry.js +0 -2
  457. package/dist/core/p-7f53d1be.entry.js.map +0 -1
  458. package/dist/core/p-843bdaae.entry.js.map +0 -1
  459. package/dist/core/p-946625a3.entry.js.map +0 -1
  460. package/dist/core/p-99bf38e3.entry.js +0 -2
  461. package/dist/core/p-99bf38e3.entry.js.map +0 -1
  462. package/dist/core/p-9e3178e8.entry.js +0 -2
  463. package/dist/core/p-9e3178e8.entry.js.map +0 -1
  464. package/dist/core/p-a1556d97.entry.js +0 -2
  465. package/dist/core/p-a1556d97.entry.js.map +0 -1
  466. package/dist/core/p-baf81f30.entry.js.map +0 -1
  467. package/dist/core/p-c621d6b0.entry.js.map +0 -1
  468. package/dist/core/p-c7590421.entry.js +0 -2
  469. package/dist/core/p-c7590421.entry.js.map +0 -1
  470. package/dist/core/p-c953edb9.entry.js +0 -2
  471. package/dist/core/p-c953edb9.entry.js.map +0 -1
  472. package/dist/core/p-cca482e2.entry.js.map +0 -1
  473. package/dist/core/p-cd799087.js +0 -2
  474. package/dist/core/p-cd799087.js.map +0 -1
  475. package/dist/core/p-d32d331b.entry.js +0 -2
  476. package/dist/core/p-d32d331b.entry.js.map +0 -1
  477. package/dist/core/p-dc5e1f8f.entry.js +0 -2
  478. package/dist/core/p-dc5e1f8f.entry.js.map +0 -1
  479. package/dist/core/p-e16f73ba.entry.js.map +0 -1
  480. package/dist/core/p-e189f1d0.entry.js +0 -2
  481. package/dist/core/p-e189f1d0.entry.js.map +0 -1
  482. package/dist/core/p-e1963c78.entry.js.map +0 -1
  483. package/dist/core/p-e8151d13.entry.js +0 -2
  484. package/dist/core/p-ee765ad5.js +0 -2
  485. package/dist/core/p-ee765ad5.js.map +0 -1
  486. package/dist/core/p-f2147136.entry.js +0 -2
  487. package/dist/core/p-f2147136.entry.js.map +0 -1
  488. package/dist/core/p-fca46bd9.entry.js +0 -2
  489. package/dist/core/p-fca46bd9.entry.js.map +0 -1
  490. package/dist/core/p-ff3a01f3.entry.js +0 -2
  491. package/dist/core/p-ff3a01f3.entry.js.map +0 -1
  492. package/dist/esm/helpers-c34e4042.js.map +0 -1
  493. package/dist/esm/helpers-f328a7b6.js.map +0 -1
  494. package/dist/esm/ic-empty-state.entry.js.map +0 -1
  495. package/dist/esm/ic-pagination-bar.entry.js +0 -265
  496. package/dist/esm/ic-pagination-bar.entry.js.map +0 -1
  497. package/dist/types/components/ic-pagination/ic-pagination.types.d.ts +0 -6
  498. /package/dist/core/{p-4fd58768.entry.js.map → p-11b243c9.entry.js.map} +0 -0
  499. /package/dist/core/{p-4ad3012a.entry.js.map → p-1fb48c84.entry.js.map} +0 -0
  500. /package/dist/core/{p-aabab75f.entry.js.map → p-3fa986f8.entry.js.map} +0 -0
  501. /package/dist/core/{p-f8f36680.entry.js.map → p-450f72b2.entry.js.map} +0 -0
  502. /package/dist/core/{p-8b820365.entry.js.map → p-48c39d2a.entry.js.map} +0 -0
  503. /package/dist/core/{p-a2dc10d8.entry.js.map → p-4aac2373.entry.js.map} +0 -0
  504. /package/dist/core/{p-6eb58b0a.entry.js.map → p-5447f2fd.entry.js.map} +0 -0
  505. /package/dist/core/{p-849f43c3.entry.js.map → p-7114ae3b.entry.js.map} +0 -0
  506. /package/dist/core/{p-494c3cbe.entry.js.map → p-71ddb6d9.entry.js.map} +0 -0
  507. /package/dist/core/{p-c14a897d.entry.js.map → p-7fe37432.entry.js.map} +0 -0
  508. /package/dist/core/{p-9567c117.entry.js.map → p-86e679ab.entry.js.map} +0 -0
  509. /package/dist/core/{p-a8c15117.entry.js.map → p-87075008.entry.js.map} +0 -0
  510. /package/dist/core/{p-00bd7919.entry.js.map → p-8a67e960.entry.js.map} +0 -0
  511. /package/dist/core/{p-0af27517.entry.js.map → p-b94ef8de.entry.js.map} +0 -0
  512. /package/dist/core/{p-7fda2f94.entry.js.map → p-bbb1ce94.entry.js.map} +0 -0
  513. /package/dist/core/{p-8b1f9648.entry.js.map → p-c5147498.entry.js.map} +0 -0
  514. /package/dist/core/{p-ff6f1e3a.entry.js.map → p-d3a13342.entry.js.map} +0 -0
  515. /package/dist/core/{p-957de939.entry.js.map → p-dd787b5b.entry.js.map} +0 -0
  516. /package/dist/core/{p-9528b29e.entry.js.map → p-e4e89a4d.entry.js.map} +0 -0
@@ -14,9 +14,12 @@ export class Menu {
14
14
  this.isMultiSelect = false;
15
15
  this.isSearchBar = false;
16
16
  this.isSearchableSelect = false;
17
+ this.lastOptionSelected = null; // Index of last option selected
18
+ this.lastOptionFocused = null; // Index of last option focused
17
19
  this.multiOptionClicked = null;
18
20
  this.preventClickOpen = false; // Prevents menu re-opening immediately after it is closed on blur when clicking input.
19
21
  this.preventMenuFocus = false; // (When multiple) ensures focus moves straight to select all button from menu.
22
+ this.shiftPressed = false;
20
23
  this.ungroupedOptions = [];
21
24
  this.handleClearListener = () => {
22
25
  this.optionHighlighted = "";
@@ -136,7 +139,6 @@ export class Menu {
136
139
  }
137
140
  else {
138
141
  this.setInputValue(highlightedOptionIndex);
139
- this.value = options[highlightedOptionIndex][this.valueField];
140
142
  }
141
143
  }
142
144
  }
@@ -149,16 +151,38 @@ export class Menu {
149
151
  this.handleMenuChange(true);
150
152
  }
151
153
  };
154
+ // Check if option is selected based on the index of the option
155
+ this.isOptionSelected = (index) => {
156
+ const menuOptions = this.getMenuOptions();
157
+ return this.value
158
+ ? this.value.includes(menuOptions[index][this.valueField])
159
+ : false;
160
+ };
161
+ // Deselect currently selected options when shift pressed, but keep certain options selected
162
+ this.deselectSelectedOptions = (optionsToKeepSelected) => {
163
+ const menuOptions = this.getMenuOptions();
164
+ if (this.value) {
165
+ const selectedOptionIndexes = this.value.map((value) => {
166
+ return menuOptions.findIndex((option) => option[this.valueField] === value);
167
+ });
168
+ // Call setInputValue (which toggles the selected state) on options that need to be deselected
169
+ selectedOptionIndexes.forEach((index) => !optionsToKeepSelected.includes(index) && this.setInputValue(index));
170
+ }
171
+ };
152
172
  // Determines keyboard behaviour when selection is manual (i.e. when you have to press Enter to select an option)
153
173
  this.manualSetInputValueKeyboardOpen = (event) => {
154
174
  const menuOptions = this.getMenuOptions();
155
- this.keyboardNav = false;
156
- const highlightedOptionIndex = menuOptions.findIndex((option) => option[this.valueField] === this.optionHighlighted);
175
+ // Prevent focus disappearing on currently focused option when Shift / Cmd / Ctrl pressed
176
+ // (i.e. when user is likely in the middle of executing a keyboard combination to select options)
177
+ if (!(event.shiftKey || event.metaKey || event.ctrlKey)) {
178
+ this.keyboardNav = false;
179
+ }
180
+ const highlightedOptionIndex = this.getOptionHighlightedIndex();
157
181
  const clickedMultiOptionIndex = menuOptions.findIndex((option) => option[this.valueField] === this.multiOptionClicked);
158
182
  const getOptionId = (index) => { var _a; return (_a = Array.from(this.el.querySelectorAll("li"))[index]) === null || _a === void 0 ? void 0 : _a.id; };
159
183
  // Space press should be equivalent to Enter when multi-select
160
184
  if (event.key === " " && this.isMultiSelect) {
161
- this.selectHighlightedOption(event.target, menuOptions, highlightedOptionIndex);
185
+ this.handleOptionSelect(event, highlightedOptionIndex);
162
186
  }
163
187
  else {
164
188
  switch (event.key) {
@@ -171,18 +195,32 @@ export class Menu {
171
195
  this.setHighlightedOption(clickedMultiOptionIndex);
172
196
  this.multiOptionClicked = null;
173
197
  }
174
- else if (highlightedOptionIndex < menuOptions.length - 1) {
175
- this.setHighlightedOption(highlightedOptionIndex + 1);
176
- this.menuOptionId.emit({
177
- optionId: getOptionId(highlightedOptionIndex + 1),
178
- });
179
- }
180
198
  else {
181
- this.setHighlightedOption(0);
182
- this.menuOptionId.emit({
183
- optionId: getOptionId(0),
184
- });
199
+ this.handleSingleShiftSelect(event, highlightedOptionIndex, menuOptions);
200
+ if (highlightedOptionIndex < menuOptions.length - 1) {
201
+ this.setHighlightedOption(highlightedOptionIndex + 1);
202
+ this.menuOptionId.emit({
203
+ optionId: getOptionId(highlightedOptionIndex + 1),
204
+ });
205
+ this.handleSingleShiftSelect(event, highlightedOptionIndex + 1, menuOptions);
206
+ }
207
+ else {
208
+ this.setHighlightedOption(0);
209
+ this.menuOptionId.emit({
210
+ optionId: getOptionId(0),
211
+ });
212
+ this.handleSingleShiftSelect(event, 0, menuOptions);
213
+ }
214
+ // Deselect currently selected options if arrow was pressed for first time after shift is held
215
+ if (this.isMultiSelect && this.shiftPressed) {
216
+ this.deselectSelectedOptions([
217
+ highlightedOptionIndex,
218
+ this.getOptionHighlightedIndex(),
219
+ ]);
220
+ this.shiftPressed = false;
221
+ }
185
222
  }
223
+ this.lastOptionFocused = this.getOptionHighlightedIndex();
186
224
  this.preventIncorrectTabOrder = false;
187
225
  this.focusFromSearchKeypress = false;
188
226
  break;
@@ -195,40 +233,68 @@ export class Menu {
195
233
  this.setHighlightedOption(clickedMultiOptionIndex);
196
234
  this.multiOptionClicked = null;
197
235
  }
198
- else if (highlightedOptionIndex <= 0 ||
199
- highlightedOptionIndex > menuOptions.length + 1) {
200
- this.setHighlightedOption(menuOptions.length - 1);
201
- this.menuOptionId.emit({
202
- optionId: getOptionId(menuOptions.length - 1),
203
- });
204
- }
205
236
  else {
206
- this.setHighlightedOption(highlightedOptionIndex - 1);
207
- this.menuOptionId.emit({
208
- optionId: getOptionId(highlightedOptionIndex - 1),
209
- });
237
+ this.handleSingleShiftSelect(event, highlightedOptionIndex, menuOptions);
238
+ if (highlightedOptionIndex <= 0 ||
239
+ highlightedOptionIndex > menuOptions.length + 1) {
240
+ this.setHighlightedOption(menuOptions.length - 1);
241
+ this.menuOptionId.emit({
242
+ optionId: getOptionId(menuOptions.length - 1),
243
+ });
244
+ this.handleSingleShiftSelect(event, menuOptions.length - 1, menuOptions);
245
+ }
246
+ else {
247
+ this.setHighlightedOption(highlightedOptionIndex - 1);
248
+ this.menuOptionId.emit({
249
+ optionId: getOptionId(highlightedOptionIndex - 1),
250
+ });
251
+ this.handleSingleShiftSelect(event, highlightedOptionIndex - 1, menuOptions);
252
+ }
253
+ // Deselect currently selected options if arrow was pressed for first time after shift is held
254
+ if (this.isMultiSelect && this.shiftPressed) {
255
+ this.deselectSelectedOptions([
256
+ highlightedOptionIndex,
257
+ this.getOptionHighlightedIndex(),
258
+ ]);
259
+ this.shiftPressed = false;
260
+ }
210
261
  }
262
+ this.lastOptionFocused = this.getOptionHighlightedIndex();
211
263
  this.preventIncorrectTabOrder = false;
212
264
  this.focusFromSearchKeypress = false;
213
265
  break;
214
- case "Home":
266
+ case "Home": {
267
+ const startOptionIndex = 0;
215
268
  this.keyboardNav = true;
216
269
  event.preventDefault();
217
270
  this.arrowBehaviour(event);
218
- this.setHighlightedOption(0);
271
+ this.setHighlightedOption(startOptionIndex);
219
272
  this.menuOptionId.emit({
220
- optionId: getOptionId(0),
273
+ optionId: getOptionId(startOptionIndex),
221
274
  });
275
+ if (event.shiftKey && event.ctrlKey) {
276
+ this.handleMultipleShiftSelect(startOptionIndex);
277
+ }
278
+ this.lastOptionFocused = startOptionIndex;
279
+ this.lastOptionSelected = startOptionIndex;
222
280
  break;
223
- case "End":
281
+ }
282
+ case "End": {
283
+ const endOptionIndex = menuOptions.length - 1;
224
284
  this.keyboardNav = true;
225
285
  event.preventDefault();
226
286
  this.arrowBehaviour(event);
227
- this.setHighlightedOption(menuOptions.length - 1);
287
+ this.setHighlightedOption(endOptionIndex);
228
288
  this.menuOptionId.emit({
229
- optionId: getOptionId(menuOptions.length - 1),
289
+ optionId: getOptionId(endOptionIndex),
230
290
  });
291
+ if (event.shiftKey && event.ctrlKey) {
292
+ this.handleMultipleShiftSelect(endOptionIndex);
293
+ }
294
+ this.lastOptionFocused = endOptionIndex;
295
+ this.lastOptionSelected = endOptionIndex;
231
296
  break;
297
+ }
232
298
  case " ":
233
299
  if (this.isSearchBar || this.isSearchableSelect) {
234
300
  break;
@@ -241,7 +307,7 @@ export class Menu {
241
307
  break;
242
308
  case "Enter":
243
309
  event.preventDefault();
244
- this.selectHighlightedOption(event.target, menuOptions, highlightedOptionIndex);
310
+ this.handleOptionSelect(event, highlightedOptionIndex);
245
311
  break;
246
312
  case "Escape":
247
313
  if (this.open) {
@@ -256,10 +322,15 @@ export class Menu {
256
322
  if ((isMacDevice() && event.metaKey) ||
257
323
  (!isMacDevice() && event.ctrlKey)) {
258
324
  this.emitSelectAll();
325
+ this.lastOptionFocused = null;
326
+ this.lastOptionSelected = null;
259
327
  }
260
328
  break;
261
329
  case "Shift":
262
330
  case "Tab":
331
+ if (event.key === "Shift") {
332
+ this.shiftPressed = true;
333
+ }
263
334
  if (this.isSearchBar) {
264
335
  this.keyboardNav = true;
265
336
  }
@@ -325,14 +396,17 @@ export class Menu {
325
396
  };
326
397
  this.handleOptionClick = (event) => {
327
398
  const { value, label } = event.target.dataset;
328
- this.menuOptionSelect.emit({ value, label });
329
- this.optionHighlighted = undefined;
330
399
  if (this.isMultiSelect) {
400
+ const menuOptions = this.getMenuOptions();
401
+ const selectedOptionIndex = menuOptions.findIndex((option) => option.value === value);
402
+ this.handleOptionSelect(event, selectedOptionIndex, true);
331
403
  this.multiOptionClicked = value;
332
404
  }
333
405
  else {
406
+ this.menuOptionSelect.emit({ value, label });
334
407
  this.handleMenuChange(false);
335
408
  }
409
+ this.optionHighlighted = undefined;
336
410
  };
337
411
  this.handleRetry = () => {
338
412
  this.retryButtonClicked.emit({ value: this.value });
@@ -352,12 +426,16 @@ export class Menu {
352
426
  event.relatedTarget === this.selectAllButton)) {
353
427
  this.handleMenuChange(false, this.hasPreviouslyBlurred);
354
428
  this.menu.removeAttribute(this.activeDescendantAttr);
429
+ this.lastOptionFocused = null;
430
+ this.lastOptionSelected = null;
355
431
  }
356
432
  }
357
433
  else {
358
434
  this.handleMenuChange(false);
359
435
  this.preventClickOpen = true;
360
436
  this.menu.removeAttribute(this.activeDescendantAttr);
437
+ this.lastOptionFocused = null;
438
+ this.lastOptionSelected = null;
361
439
  }
362
440
  if (!this.isSearchBar)
363
441
  this.hasPreviouslyBlurred = !!event.relatedTarget;
@@ -381,11 +459,16 @@ export class Menu {
381
459
  this.disabledOptionSelected = false;
382
460
  event.stopImmediatePropagation();
383
461
  }
462
+ if (event.key === "Shift") {
463
+ this.shiftPressed = false;
464
+ }
384
465
  };
385
466
  this.handleSelectAllClick = () => {
386
467
  this.keyboardNav = false;
387
468
  this.menu.focus();
388
469
  this.emitSelectAll();
470
+ this.lastOptionFocused = null;
471
+ this.lastOptionSelected = null;
389
472
  };
390
473
  this.handleSelectAllBlur = (event) => {
391
474
  this.el.classList.remove("select-all-focused");
@@ -395,11 +478,65 @@ export class Menu {
395
478
  };
396
479
  this.handleSelectAllFocus = () => {
397
480
  this.el.classList.add("select-all-focused");
481
+ this.lastOptionFocused = null;
482
+ this.lastOptionSelected = null;
398
483
  };
399
484
  // Fix for Safari - select all button click was causing menu to close
400
485
  this.handleSelectAllMouseDown = (event) => {
401
486
  event.preventDefault();
402
487
  };
488
+ // When shift key is being used to select contiguous options one by one on a multi-select
489
+ // I.e. holding shift and pressing up and down arrow keys
490
+ this.handleSingleShiftSelect = (event, optionToSelectIndex, options) => {
491
+ if (this.isMultiSelect &&
492
+ event.shiftKey &&
493
+ !this.isOptionSelected(optionToSelectIndex)) {
494
+ this.selectHighlightedOption(event.target, options, optionToSelectIndex);
495
+ this.lastOptionSelected = optionToSelectIndex;
496
+ }
497
+ };
498
+ // When shift key is being used to select multiple options at once on a multi-select
499
+ // I.e. holding shift when selecting another option
500
+ this.handleMultipleShiftSelect = (lastOptionInSelection, useFocusForSelection = false, firstOptionSelected = null) => {
501
+ this.shiftPressed = false;
502
+ const firstOptionInSelection = firstOptionSelected === null
503
+ ? this.getFirstOptionInSelection(useFocusForSelection)
504
+ : firstOptionSelected;
505
+ if (firstOptionInSelection !== null) {
506
+ const optionsToSelect = [];
507
+ if (firstOptionInSelection < lastOptionInSelection) {
508
+ for (let i = firstOptionInSelection; i < lastOptionInSelection + 1; i++) {
509
+ optionsToSelect.push(i);
510
+ }
511
+ }
512
+ else {
513
+ for (let i = firstOptionInSelection; i > lastOptionInSelection - 1; i--) {
514
+ optionsToSelect.push(i);
515
+ }
516
+ }
517
+ optionsToSelect.forEach((optionIndex) => !this.isOptionSelected(optionIndex) && this.setInputValue(optionIndex));
518
+ this.deselectSelectedOptions(optionsToSelect);
519
+ }
520
+ };
521
+ this.handleOptionSelect = (event, optionIndex, useFocusForSelection = false) => {
522
+ const menuOptions = this.getMenuOptions();
523
+ const firstOptionInSelection = this.getFirstOptionInSelection(useFocusForSelection);
524
+ if (event.shiftKey && firstOptionInSelection !== null) {
525
+ this.handleMultipleShiftSelect(optionIndex, useFocusForSelection, firstOptionInSelection);
526
+ }
527
+ else {
528
+ this.selectHighlightedOption(event.target, menuOptions, optionIndex);
529
+ }
530
+ this.lastOptionFocused = optionIndex;
531
+ this.lastOptionSelected = optionIndex;
532
+ };
533
+ this.getFirstOptionInSelection = (useFocusForSelection) => {
534
+ return useFocusForSelection && this.lastOptionFocused !== null
535
+ ? this.lastOptionFocused
536
+ : this.lastOptionSelected !== null
537
+ ? this.lastOptionSelected
538
+ : null;
539
+ };
403
540
  this.emitSelectAll = () => {
404
541
  var _a;
405
542
  // Select all if there is either no value or not all options are selected
@@ -498,6 +635,10 @@ export class Menu {
498
635
  }
499
636
  return sorted;
500
637
  };
638
+ this.getOptionHighlightedIndex = () => {
639
+ const menuOptions = this.getMenuOptions();
640
+ return menuOptions.findIndex((option) => option[this.valueField] === this.optionHighlighted);
641
+ };
501
642
  this.isManualMode = this.activationType === "manual";
502
643
  this.scrollToSelected = (menu) => {
503
644
  const selectedOption = this.selectOnEnter
@@ -1117,7 +1258,7 @@ export class Menu {
1117
1258
  },
1118
1259
  "value": {
1119
1260
  "type": "string",
1120
- "mutable": true,
1261
+ "mutable": false,
1121
1262
  "complexType": {
1122
1263
  "original": "string | string[]",
1123
1264
  "resolved": "string | string[]",