@ukic/canary-web-components 2.0.0-canary.32 → 2.0.0-canary.34

Sign up to get free protection for your applications and to get access to all the features.
Files changed (428) hide show
  1. package/README.md +6 -2
  2. package/dist/cjs/core.cjs.js +1 -1
  3. package/dist/cjs/{helpers-52ab3835.js → helpers-951fb33a.js} +25 -3
  4. package/dist/cjs/helpers-951fb33a.js.map +1 -0
  5. package/dist/cjs/{helpers-aa5ff032.js → helpers-eabe59b6.js} +13 -1
  6. package/dist/cjs/helpers-eabe59b6.js.map +1 -0
  7. package/dist/cjs/ic-accordion-group.cjs.entry.js +1 -1
  8. package/dist/cjs/ic-accordion.cjs.entry.js +1 -1
  9. package/dist/cjs/ic-alert.cjs.entry.js +2 -9
  10. package/dist/cjs/ic-alert.cjs.entry.js.map +1 -1
  11. package/dist/cjs/ic-back-to-top.cjs.entry.js +1 -1
  12. package/dist/cjs/ic-badge.cjs.entry.js +1 -1
  13. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js +1 -1
  14. package/dist/cjs/ic-breadcrumb.cjs.entry.js +1 -1
  15. package/dist/cjs/ic-button_3.cjs.entry.js +1 -1
  16. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  17. package/dist/cjs/ic-card-horizontal.cjs.entry.js +2 -9
  18. package/dist/cjs/ic-card-horizontal.cjs.entry.js.map +1 -1
  19. package/dist/cjs/ic-card.cjs.entry.js +12 -19
  20. package/dist/cjs/ic-card.cjs.entry.js.map +1 -1
  21. package/dist/cjs/ic-checkbox-group.cjs.entry.js +1 -1
  22. package/dist/cjs/ic-checkbox.cjs.entry.js +1 -1
  23. package/dist/cjs/ic-chip.cjs.entry.js +1 -1
  24. package/dist/cjs/ic-data-row.cjs.entry.js +1 -1
  25. package/dist/cjs/ic-data-table-title-bar.cjs.entry.js +1 -1
  26. package/dist/cjs/ic-data-table.cjs.entry.js +211 -49
  27. package/dist/cjs/ic-data-table.cjs.entry.js.map +1 -1
  28. package/dist/cjs/ic-date-input.cjs.entry.js +1 -1
  29. package/dist/cjs/ic-date-picker.cjs.entry.js +1 -1
  30. package/dist/cjs/ic-dialog.cjs.entry.js +17 -4
  31. package/dist/cjs/ic-dialog.cjs.entry.js.map +1 -1
  32. package/dist/cjs/ic-divider.cjs.entry.js +1 -1
  33. package/dist/cjs/ic-empty-state_2.cjs.entry.js +44 -20
  34. package/dist/cjs/ic-empty-state_2.cjs.entry.js.map +1 -1
  35. package/dist/cjs/ic-footer-link-group.cjs.entry.js +1 -1
  36. package/dist/cjs/ic-footer-link.cjs.entry.js +1 -1
  37. package/dist/cjs/ic-footer.cjs.entry.js +18 -7
  38. package/dist/cjs/ic-footer.cjs.entry.js.map +1 -1
  39. package/dist/cjs/ic-hero.cjs.entry.js +2 -9
  40. package/dist/cjs/ic-hero.cjs.entry.js.map +1 -1
  41. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +1 -1
  42. package/dist/cjs/ic-input-component-container_4.cjs.entry.js +2 -9
  43. package/dist/cjs/ic-input-component-container_4.cjs.entry.js.map +1 -1
  44. package/dist/cjs/ic-link.cjs.entry.js +1 -1
  45. package/dist/cjs/ic-menu-group.cjs.entry.js +1 -1
  46. package/dist/cjs/ic-menu-item.cjs.entry.js +1 -1
  47. package/dist/cjs/ic-menu-with-multi.cjs.entry.js +1 -1
  48. package/dist/cjs/ic-menu.cjs.entry.js +2 -2
  49. package/dist/cjs/ic-menu.cjs.entry.js.map +1 -1
  50. package/dist/cjs/ic-navigation-button.cjs.entry.js +1 -1
  51. package/dist/cjs/ic-navigation-group.cjs.entry.js +1 -1
  52. package/dist/cjs/ic-navigation-item.cjs.entry.js +1 -1
  53. package/dist/cjs/ic-navigation-menu.cjs.entry.js +1 -1
  54. package/dist/cjs/ic-page-header.cjs.entry.js +1 -1
  55. package/dist/cjs/ic-pagination_4.cjs.entry.js +8 -7
  56. package/dist/cjs/ic-pagination_4.cjs.entry.js.map +1 -1
  57. package/dist/cjs/ic-popover-menu.cjs.entry.js +1 -1
  58. package/dist/cjs/ic-radio-group.cjs.entry.js +22 -19
  59. package/dist/cjs/ic-radio-group.cjs.entry.js.map +1 -1
  60. package/dist/cjs/ic-radio-option.cjs.entry.js +12 -4
  61. package/dist/cjs/ic-radio-option.cjs.entry.js.map +1 -1
  62. package/dist/cjs/ic-search-bar.cjs.entry.js +3 -2
  63. package/dist/cjs/ic-search-bar.cjs.entry.js.map +1 -1
  64. package/dist/cjs/ic-select-with-multi.cjs.entry.js +1 -1
  65. package/dist/cjs/ic-side-navigation.cjs.entry.js +1 -1
  66. package/dist/cjs/ic-status-tag.cjs.entry.js +1 -1
  67. package/dist/cjs/ic-step.cjs.entry.js +1 -1
  68. package/dist/cjs/ic-stepper.cjs.entry.js +1 -1
  69. package/dist/cjs/ic-switch.cjs.entry.js +1 -1
  70. package/dist/cjs/ic-tab-group.cjs.entry.js +1 -1
  71. package/dist/cjs/ic-tab.cjs.entry.js +1 -1
  72. package/dist/cjs/ic-theme.cjs.entry.js +1 -1
  73. package/dist/cjs/ic-toast.cjs.entry.js +1 -1
  74. package/dist/cjs/ic-toggle-button-group.cjs.entry.js +10 -2
  75. package/dist/cjs/ic-toggle-button-group.cjs.entry.js.map +1 -1
  76. package/dist/cjs/ic-toggle-button.cjs.entry.js +3 -2
  77. package/dist/cjs/ic-toggle-button.cjs.entry.js.map +1 -1
  78. package/dist/cjs/ic-top-navigation.cjs.entry.js +2 -2
  79. package/dist/cjs/ic-top-navigation.cjs.entry.js.map +1 -1
  80. package/dist/cjs/ic-tree-item.cjs.entry.js +2 -9
  81. package/dist/cjs/ic-tree-item.cjs.entry.js.map +1 -1
  82. package/dist/cjs/ic-tree-view.cjs.entry.js +2 -9
  83. package/dist/cjs/ic-tree-view.cjs.entry.js.map +1 -1
  84. package/dist/cjs/ic-typography.cjs.entry.js +1 -1
  85. package/dist/cjs/loader.cjs.js +1 -1
  86. package/dist/collection/components/ic-card-horizontal/ic-card-horizontal.js +3 -10
  87. package/dist/collection/components/ic-card-horizontal/ic-card-horizontal.js.map +1 -1
  88. package/dist/collection/components/ic-data-table/ic-data-table.css +82 -2
  89. package/dist/collection/components/ic-data-table/ic-data-table.js +246 -51
  90. package/dist/collection/components/ic-data-table/ic-data-table.js.map +1 -1
  91. package/dist/collection/components/ic-data-table/ic-data-table.types.js.map +1 -1
  92. package/dist/collection/components/ic-data-table/story-data.js +214 -6
  93. package/dist/collection/components/ic-data-table/story-data.js.map +1 -1
  94. package/dist/collection/components/ic-data-table/test/basic/ic-data-table.spec.js +64 -1
  95. package/dist/collection/components/ic-data-table/test/basic/ic-data-table.spec.js.map +1 -1
  96. package/dist/collection/components/ic-pagination-bar/ic-pagination-bar.js +62 -6
  97. package/dist/collection/components/ic-pagination-bar/ic-pagination-bar.js.map +1 -1
  98. package/dist/collection/components/ic-tree-item/ic-tree-item.js +3 -10
  99. package/dist/collection/components/ic-tree-item/ic-tree-item.js.map +1 -1
  100. package/dist/collection/components/ic-tree-view/ic-tree-view.js +3 -10
  101. package/dist/collection/components/ic-tree-view/ic-tree-view.js.map +1 -1
  102. package/dist/collection/utils/helpers.js +12 -1
  103. package/dist/collection/utils/helpers.js.map +1 -1
  104. package/dist/collection/utils/types.js.map +1 -1
  105. package/dist/components/helpers.js +12 -1
  106. package/dist/components/helpers.js.map +1 -1
  107. package/dist/components/helpers2.js +22 -2
  108. package/dist/components/helpers2.js.map +1 -1
  109. package/dist/components/ic-alert2.js +3 -10
  110. package/dist/components/ic-alert2.js.map +1 -1
  111. package/dist/components/ic-button2.js.map +1 -1
  112. package/dist/components/ic-card-horizontal.js +3 -10
  113. package/dist/components/ic-card-horizontal.js.map +1 -1
  114. package/dist/components/ic-card.js +13 -20
  115. package/dist/components/ic-card.js.map +1 -1
  116. package/dist/components/ic-data-table.js +212 -49
  117. package/dist/components/ic-data-table.js.map +1 -1
  118. package/dist/components/ic-date-input2.js +1 -1
  119. package/dist/components/ic-date-picker.js +1 -1
  120. package/dist/components/ic-dialog.js +16 -3
  121. package/dist/components/ic-dialog.js.map +1 -1
  122. package/dist/components/ic-empty-state2.js +3 -13
  123. package/dist/components/ic-empty-state2.js.map +1 -1
  124. package/dist/components/ic-footer.js +18 -7
  125. package/dist/components/ic-footer.js.map +1 -1
  126. package/dist/components/ic-hero.js +3 -10
  127. package/dist/components/ic-hero.js.map +1 -1
  128. package/dist/components/ic-horizontal-scroll2.js +1 -1
  129. package/dist/components/ic-input-component-container2.js +3 -10
  130. package/dist/components/ic-input-component-container2.js.map +1 -1
  131. package/dist/components/ic-menu2.js +1 -1
  132. package/dist/components/ic-menu2.js.map +1 -1
  133. package/dist/components/ic-menu3.js +1 -1
  134. package/dist/components/ic-navigation-group.js +1 -1
  135. package/dist/components/ic-navigation-item.js +1 -1
  136. package/dist/components/ic-navigation-menu2.js +1 -1
  137. package/dist/components/ic-pagination-bar2.js +46 -9
  138. package/dist/components/ic-pagination-bar2.js.map +1 -1
  139. package/dist/components/ic-popover-menu.js +1 -1
  140. package/dist/components/ic-radio-group.js +21 -18
  141. package/dist/components/ic-radio-group.js.map +1 -1
  142. package/dist/components/ic-radio-option.js +12 -4
  143. package/dist/components/ic-radio-option.js.map +1 -1
  144. package/dist/components/ic-search-bar.js +3 -2
  145. package/dist/components/ic-search-bar.js.map +1 -1
  146. package/dist/components/ic-select-with-multi.js +1 -1
  147. package/dist/components/ic-select2.js +1 -1
  148. package/dist/components/ic-side-navigation.js +1 -1
  149. package/dist/components/ic-stepper.js +1 -1
  150. package/dist/components/ic-text-field2.js +8 -7
  151. package/dist/components/ic-text-field2.js.map +1 -1
  152. package/dist/components/ic-theme.js +1 -1
  153. package/dist/components/ic-toast.js +1 -1
  154. package/dist/components/ic-toggle-button-group.js +12 -2
  155. package/dist/components/ic-toggle-button-group.js.map +1 -1
  156. package/dist/components/ic-toggle-button.js +3 -1
  157. package/dist/components/ic-toggle-button.js.map +1 -1
  158. package/dist/components/ic-top-navigation.js +2 -2
  159. package/dist/components/ic-top-navigation.js.map +1 -1
  160. package/dist/components/ic-tree-item.js +3 -10
  161. package/dist/components/ic-tree-item.js.map +1 -1
  162. package/dist/components/ic-tree-view.js +3 -10
  163. package/dist/components/ic-tree-view.js.map +1 -1
  164. package/dist/core/core.esm.js +1 -1
  165. package/dist/core/core.esm.js.map +1 -1
  166. package/dist/core/{p-56e19b01.entry.js → p-0229eb46.entry.js} +2 -2
  167. package/dist/core/{p-05c9dee1.entry.js → p-03a99326.entry.js} +2 -2
  168. package/dist/core/{p-77637e28.entry.js → p-03d83d2c.entry.js} +2 -2
  169. package/dist/core/{p-120a38ce.entry.js → p-0c7d30f5.entry.js} +2 -2
  170. package/dist/core/{p-6bd76154.entry.js → p-124279fa.entry.js} +2 -2
  171. package/dist/core/p-12a5b481.entry.js +2 -0
  172. package/dist/core/p-12a5b481.entry.js.map +1 -0
  173. package/dist/core/p-1c0bbd2a.entry.js +2 -0
  174. package/dist/core/p-1c0bbd2a.entry.js.map +1 -0
  175. package/dist/core/{p-895d05f9.entry.js → p-26aeefc3.entry.js} +2 -2
  176. package/dist/core/p-26aeefc3.entry.js.map +1 -0
  177. package/dist/core/{p-5dc274f0.entry.js → p-29a040ef.entry.js} +2 -2
  178. package/dist/core/{p-456282e2.entry.js → p-2b61d283.entry.js} +2 -2
  179. package/dist/core/{p-40471551.entry.js → p-3156304b.entry.js} +2 -2
  180. package/dist/core/{p-f0e85611.entry.js → p-3169d95e.entry.js} +2 -2
  181. package/dist/core/{p-0bc92c30.entry.js → p-34de5ffb.entry.js} +2 -2
  182. package/dist/core/{p-89ec372e.entry.js → p-382b88b2.entry.js} +2 -2
  183. package/dist/core/{p-ce90d1b2.entry.js → p-3a2523df.entry.js} +2 -2
  184. package/dist/core/{p-c32f4c0f.entry.js → p-3b1c88ad.entry.js} +2 -2
  185. package/dist/core/p-3e7b08c7.entry.js +2 -0
  186. package/dist/core/p-3e7b08c7.entry.js.map +1 -0
  187. package/dist/core/{p-7e20c194.entry.js → p-4084bce2.entry.js} +2 -2
  188. package/dist/core/p-48618a18.entry.js +2 -0
  189. package/dist/core/p-48618a18.entry.js.map +1 -0
  190. package/dist/core/p-4960c603.entry.js +2 -0
  191. package/dist/core/p-4960c603.entry.js.map +1 -0
  192. package/dist/core/{p-59e677e4.entry.js → p-4f118361.entry.js} +2 -2
  193. package/dist/core/p-5f149106.entry.js +2 -0
  194. package/dist/core/{p-ad1e70c9.entry.js.map → p-5f149106.entry.js.map} +1 -1
  195. package/dist/core/{p-89290d94.entry.js → p-5f71f24c.entry.js} +2 -2
  196. package/dist/core/{p-48b62c20.entry.js → p-61ca218b.entry.js} +2 -2
  197. package/dist/core/{p-1eb5d7f3.entry.js → p-72a584f4.entry.js} +2 -2
  198. package/dist/core/{p-1eb5d7f3.entry.js.map → p-72a584f4.entry.js.map} +1 -1
  199. package/dist/core/{p-9922cd00.entry.js → p-7565b23c.entry.js} +2 -2
  200. package/dist/core/p-758f03e8.entry.js +2 -0
  201. package/dist/core/p-758f03e8.entry.js.map +1 -0
  202. package/dist/core/{p-5041cbeb.entry.js → p-7bba4c47.entry.js} +2 -2
  203. package/dist/core/p-7e909871.entry.js +2 -0
  204. package/dist/core/p-7e909871.entry.js.map +1 -0
  205. package/dist/core/p-844fb240.entry.js +2 -0
  206. package/dist/core/p-844fb240.entry.js.map +1 -0
  207. package/dist/core/p-8ab58daa.js +2 -0
  208. package/dist/core/p-8ab58daa.js.map +1 -0
  209. package/dist/core/{p-1419c8ae.entry.js → p-8c2c86b5.entry.js} +2 -2
  210. package/dist/core/{p-73dab780.entry.js → p-8ef60479.entry.js} +2 -2
  211. package/dist/core/p-938a0ccc.entry.js +2 -0
  212. package/dist/core/{p-94e47a21.entry.js.map → p-938a0ccc.entry.js.map} +1 -1
  213. package/dist/core/{p-1619b3d7.entry.js → p-95871655.entry.js} +2 -2
  214. package/dist/core/p-95871655.entry.js.map +1 -0
  215. package/dist/core/p-9adb2a49.entry.js +2 -0
  216. package/dist/core/p-9adb2a49.entry.js.map +1 -0
  217. package/dist/core/p-9c9147fa.entry.js +2 -0
  218. package/dist/core/p-9c9147fa.entry.js.map +1 -0
  219. package/dist/core/p-9f157649.entry.js +2 -0
  220. package/dist/core/p-9f157649.entry.js.map +1 -0
  221. package/dist/core/{p-1b5a47c6.entry.js → p-a3d903e4.entry.js} +2 -2
  222. package/dist/core/{p-d0d2952b.entry.js → p-a4088bd7.entry.js} +2 -2
  223. package/dist/core/{p-9271a06b.entry.js → p-a6fb5fe3.entry.js} +2 -2
  224. package/dist/core/{p-43f87eb3.entry.js → p-aabb04c8.entry.js} +2 -2
  225. package/dist/core/{p-ad786103.entry.js → p-b02ad2c4.entry.js} +2 -2
  226. package/dist/core/{p-85101c9a.entry.js → p-ba353ac3.entry.js} +2 -2
  227. package/dist/core/{p-ab485b11.entry.js → p-bc24c004.entry.js} +2 -2
  228. package/dist/core/{p-96a909bf.entry.js → p-c0242c21.entry.js} +2 -2
  229. package/dist/core/{p-516de675.entry.js → p-c1b268fd.entry.js} +2 -2
  230. package/dist/core/p-d171c71d.entry.js +2 -0
  231. package/dist/core/{p-ce2162a2.entry.js.map → p-d171c71d.entry.js.map} +1 -1
  232. package/dist/core/{p-95c8513d.entry.js → p-d1e0479c.entry.js} +2 -2
  233. package/dist/core/p-d1e0479c.entry.js.map +1 -0
  234. package/dist/core/{p-9b85340f.entry.js → p-d2260763.entry.js} +2 -2
  235. package/dist/core/p-d9f8f96d.entry.js +2 -0
  236. package/dist/core/p-d9f8f96d.entry.js.map +1 -0
  237. package/dist/core/p-da506987.js +2 -0
  238. package/dist/core/p-da506987.js.map +1 -0
  239. package/dist/core/p-dd550e9b.entry.js +2 -0
  240. package/dist/core/p-dd550e9b.entry.js.map +1 -0
  241. package/dist/core/{p-782cd387.entry.js → p-deedc7d3.entry.js} +2 -2
  242. package/dist/core/p-e447ed5c.entry.js +2 -0
  243. package/dist/core/p-e447ed5c.entry.js.map +1 -0
  244. package/dist/core/p-e7439c1e.entry.js +2 -0
  245. package/dist/core/p-e7439c1e.entry.js.map +1 -0
  246. package/dist/core/{p-09d4fe07.entry.js → p-e7b913e5.entry.js} +2 -2
  247. package/dist/core/p-e85505ec.entry.js +2 -0
  248. package/dist/core/{p-522b1526.entry.js → p-f4b76daa.entry.js} +2 -2
  249. package/dist/core/p-ff35dcea.entry.js +2 -0
  250. package/dist/core/p-ff35dcea.entry.js.map +1 -0
  251. package/dist/esm/core.js +1 -1
  252. package/dist/esm/{helpers-25eb1cb0.js → helpers-031e266e.js} +13 -2
  253. package/dist/esm/helpers-031e266e.js.map +1 -0
  254. package/dist/esm/{helpers-147b5b73.js → helpers-948df101.js} +23 -3
  255. package/dist/esm/helpers-948df101.js.map +1 -0
  256. package/dist/esm/ic-accordion-group.entry.js +1 -1
  257. package/dist/esm/ic-accordion.entry.js +1 -1
  258. package/dist/esm/ic-alert.entry.js +3 -10
  259. package/dist/esm/ic-alert.entry.js.map +1 -1
  260. package/dist/esm/ic-back-to-top.entry.js +1 -1
  261. package/dist/esm/ic-badge.entry.js +1 -1
  262. package/dist/esm/ic-breadcrumb-group.entry.js +1 -1
  263. package/dist/esm/ic-breadcrumb.entry.js +1 -1
  264. package/dist/esm/ic-button_3.entry.js +1 -1
  265. package/dist/esm/ic-button_3.entry.js.map +1 -1
  266. package/dist/esm/ic-card-horizontal.entry.js +3 -10
  267. package/dist/esm/ic-card-horizontal.entry.js.map +1 -1
  268. package/dist/esm/ic-card.entry.js +13 -20
  269. package/dist/esm/ic-card.entry.js.map +1 -1
  270. package/dist/esm/ic-checkbox-group.entry.js +1 -1
  271. package/dist/esm/ic-checkbox.entry.js +1 -1
  272. package/dist/esm/ic-chip.entry.js +1 -1
  273. package/dist/esm/ic-data-row.entry.js +1 -1
  274. package/dist/esm/ic-data-table-title-bar.entry.js +1 -1
  275. package/dist/esm/ic-data-table.entry.js +211 -49
  276. package/dist/esm/ic-data-table.entry.js.map +1 -1
  277. package/dist/esm/ic-date-input.entry.js +1 -1
  278. package/dist/esm/ic-date-picker.entry.js +1 -1
  279. package/dist/esm/ic-dialog.entry.js +17 -4
  280. package/dist/esm/ic-dialog.entry.js.map +1 -1
  281. package/dist/esm/ic-divider.entry.js +1 -1
  282. package/dist/esm/ic-empty-state_2.entry.js +45 -21
  283. package/dist/esm/ic-empty-state_2.entry.js.map +1 -1
  284. package/dist/esm/ic-footer-link-group.entry.js +1 -1
  285. package/dist/esm/ic-footer-link.entry.js +1 -1
  286. package/dist/esm/ic-footer.entry.js +18 -7
  287. package/dist/esm/ic-footer.entry.js.map +1 -1
  288. package/dist/esm/ic-hero.entry.js +3 -10
  289. package/dist/esm/ic-hero.entry.js.map +1 -1
  290. package/dist/esm/ic-horizontal-scroll.entry.js +1 -1
  291. package/dist/esm/ic-input-component-container_4.entry.js +3 -10
  292. package/dist/esm/ic-input-component-container_4.entry.js.map +1 -1
  293. package/dist/esm/ic-link.entry.js +1 -1
  294. package/dist/esm/ic-menu-group.entry.js +1 -1
  295. package/dist/esm/ic-menu-item.entry.js +1 -1
  296. package/dist/esm/ic-menu-with-multi.entry.js +1 -1
  297. package/dist/esm/ic-menu.entry.js +2 -2
  298. package/dist/esm/ic-menu.entry.js.map +1 -1
  299. package/dist/esm/ic-navigation-button.entry.js +1 -1
  300. package/dist/esm/ic-navigation-group.entry.js +1 -1
  301. package/dist/esm/ic-navigation-item.entry.js +1 -1
  302. package/dist/esm/ic-navigation-menu.entry.js +1 -1
  303. package/dist/esm/ic-page-header.entry.js +1 -1
  304. package/dist/esm/ic-pagination_4.entry.js +8 -7
  305. package/dist/esm/ic-pagination_4.entry.js.map +1 -1
  306. package/dist/esm/ic-popover-menu.entry.js +1 -1
  307. package/dist/esm/ic-radio-group.entry.js +22 -19
  308. package/dist/esm/ic-radio-group.entry.js.map +1 -1
  309. package/dist/esm/ic-radio-option.entry.js +12 -4
  310. package/dist/esm/ic-radio-option.entry.js.map +1 -1
  311. package/dist/esm/ic-search-bar.entry.js +3 -2
  312. package/dist/esm/ic-search-bar.entry.js.map +1 -1
  313. package/dist/esm/ic-select-with-multi.entry.js +1 -1
  314. package/dist/esm/ic-side-navigation.entry.js +1 -1
  315. package/dist/esm/ic-status-tag.entry.js +1 -1
  316. package/dist/esm/ic-step.entry.js +1 -1
  317. package/dist/esm/ic-stepper.entry.js +1 -1
  318. package/dist/esm/ic-switch.entry.js +1 -1
  319. package/dist/esm/ic-tab-group.entry.js +1 -1
  320. package/dist/esm/ic-tab.entry.js +1 -1
  321. package/dist/esm/ic-theme.entry.js +1 -1
  322. package/dist/esm/ic-toast.entry.js +1 -1
  323. package/dist/esm/ic-toggle-button-group.entry.js +10 -2
  324. package/dist/esm/ic-toggle-button-group.entry.js.map +1 -1
  325. package/dist/esm/ic-toggle-button.entry.js +3 -2
  326. package/dist/esm/ic-toggle-button.entry.js.map +1 -1
  327. package/dist/esm/ic-top-navigation.entry.js +2 -2
  328. package/dist/esm/ic-top-navigation.entry.js.map +1 -1
  329. package/dist/esm/ic-tree-item.entry.js +3 -10
  330. package/dist/esm/ic-tree-item.entry.js.map +1 -1
  331. package/dist/esm/ic-tree-view.entry.js +3 -10
  332. package/dist/esm/ic-tree-view.entry.js.map +1 -1
  333. package/dist/esm/ic-typography.entry.js +1 -1
  334. package/dist/esm/loader.js +1 -1
  335. package/dist/types/components/ic-card-horizontal/ic-card-horizontal.d.ts +0 -1
  336. package/dist/types/components/ic-data-table/ic-data-table.d.ts +23 -0
  337. package/dist/types/components/ic-data-table/ic-data-table.types.d.ts +12 -0
  338. package/dist/types/components/ic-data-table/story-data.d.ts +107 -4
  339. package/dist/types/components/ic-pagination-bar/ic-pagination-bar.d.ts +8 -0
  340. package/dist/types/components/ic-tree-item/ic-tree-item.d.ts +0 -1
  341. package/dist/types/components/ic-tree-view/ic-tree-view.d.ts +0 -1
  342. package/dist/types/components.d.ts +23 -0
  343. package/dist/types/utils/helpers.d.ts +3 -1
  344. package/dist/types/utils/types.d.ts +1 -0
  345. package/hydrate/index.js +398 -171
  346. package/package.json +3 -3
  347. package/dist/cjs/helpers-52ab3835.js.map +0 -1
  348. package/dist/cjs/helpers-aa5ff032.js.map +0 -1
  349. package/dist/core/p-0695b4b7.entry.js +0 -2
  350. package/dist/core/p-0695b4b7.entry.js.map +0 -1
  351. package/dist/core/p-1619b3d7.entry.js.map +0 -1
  352. package/dist/core/p-19a9ab60.entry.js +0 -2
  353. package/dist/core/p-19a9ab60.entry.js.map +0 -1
  354. package/dist/core/p-1a5c1bfa.entry.js +0 -2
  355. package/dist/core/p-1a5c1bfa.entry.js.map +0 -1
  356. package/dist/core/p-1ef02273.entry.js +0 -2
  357. package/dist/core/p-1ef02273.entry.js.map +0 -1
  358. package/dist/core/p-20075bc7.entry.js +0 -2
  359. package/dist/core/p-20075bc7.entry.js.map +0 -1
  360. package/dist/core/p-2308d041.entry.js +0 -2
  361. package/dist/core/p-2308d041.entry.js.map +0 -1
  362. package/dist/core/p-23f32e1e.entry.js +0 -2
  363. package/dist/core/p-23f32e1e.entry.js.map +0 -1
  364. package/dist/core/p-3a3a8a71.js +0 -2
  365. package/dist/core/p-3a3a8a71.js.map +0 -1
  366. package/dist/core/p-67b25dfc.entry.js +0 -2
  367. package/dist/core/p-67b25dfc.entry.js.map +0 -1
  368. package/dist/core/p-895d05f9.entry.js.map +0 -1
  369. package/dist/core/p-9445c2f3.entry.js +0 -2
  370. package/dist/core/p-9445c2f3.entry.js.map +0 -1
  371. package/dist/core/p-94e47a21.entry.js +0 -2
  372. package/dist/core/p-952bdeb2.entry.js +0 -2
  373. package/dist/core/p-952bdeb2.entry.js.map +0 -1
  374. package/dist/core/p-95c8513d.entry.js.map +0 -1
  375. package/dist/core/p-9ce35989.entry.js +0 -2
  376. package/dist/core/p-9ce35989.entry.js.map +0 -1
  377. package/dist/core/p-a44c0351.entry.js +0 -2
  378. package/dist/core/p-a44c0351.entry.js.map +0 -1
  379. package/dist/core/p-a7f4168c.entry.js +0 -2
  380. package/dist/core/p-ad1e70c9.entry.js +0 -2
  381. package/dist/core/p-af3d4eba.entry.js +0 -2
  382. package/dist/core/p-af3d4eba.entry.js.map +0 -1
  383. package/dist/core/p-b9d9273f.js +0 -2
  384. package/dist/core/p-b9d9273f.js.map +0 -1
  385. package/dist/core/p-cc99e774.entry.js +0 -2
  386. package/dist/core/p-cc99e774.entry.js.map +0 -1
  387. package/dist/core/p-ce2162a2.entry.js +0 -2
  388. package/dist/core/p-cf3f9b02.entry.js +0 -2
  389. package/dist/core/p-cf3f9b02.entry.js.map +0 -1
  390. package/dist/core/p-d61ef782.entry.js +0 -2
  391. package/dist/core/p-d61ef782.entry.js.map +0 -1
  392. package/dist/esm/helpers-147b5b73.js.map +0 -1
  393. package/dist/esm/helpers-25eb1cb0.js.map +0 -1
  394. /package/dist/core/{p-56e19b01.entry.js.map → p-0229eb46.entry.js.map} +0 -0
  395. /package/dist/core/{p-05c9dee1.entry.js.map → p-03a99326.entry.js.map} +0 -0
  396. /package/dist/core/{p-77637e28.entry.js.map → p-03d83d2c.entry.js.map} +0 -0
  397. /package/dist/core/{p-120a38ce.entry.js.map → p-0c7d30f5.entry.js.map} +0 -0
  398. /package/dist/core/{p-6bd76154.entry.js.map → p-124279fa.entry.js.map} +0 -0
  399. /package/dist/core/{p-5dc274f0.entry.js.map → p-29a040ef.entry.js.map} +0 -0
  400. /package/dist/core/{p-456282e2.entry.js.map → p-2b61d283.entry.js.map} +0 -0
  401. /package/dist/core/{p-40471551.entry.js.map → p-3156304b.entry.js.map} +0 -0
  402. /package/dist/core/{p-f0e85611.entry.js.map → p-3169d95e.entry.js.map} +0 -0
  403. /package/dist/core/{p-0bc92c30.entry.js.map → p-34de5ffb.entry.js.map} +0 -0
  404. /package/dist/core/{p-89ec372e.entry.js.map → p-382b88b2.entry.js.map} +0 -0
  405. /package/dist/core/{p-ce90d1b2.entry.js.map → p-3a2523df.entry.js.map} +0 -0
  406. /package/dist/core/{p-c32f4c0f.entry.js.map → p-3b1c88ad.entry.js.map} +0 -0
  407. /package/dist/core/{p-7e20c194.entry.js.map → p-4084bce2.entry.js.map} +0 -0
  408. /package/dist/core/{p-59e677e4.entry.js.map → p-4f118361.entry.js.map} +0 -0
  409. /package/dist/core/{p-89290d94.entry.js.map → p-5f71f24c.entry.js.map} +0 -0
  410. /package/dist/core/{p-48b62c20.entry.js.map → p-61ca218b.entry.js.map} +0 -0
  411. /package/dist/core/{p-9922cd00.entry.js.map → p-7565b23c.entry.js.map} +0 -0
  412. /package/dist/core/{p-5041cbeb.entry.js.map → p-7bba4c47.entry.js.map} +0 -0
  413. /package/dist/core/{p-1419c8ae.entry.js.map → p-8c2c86b5.entry.js.map} +0 -0
  414. /package/dist/core/{p-73dab780.entry.js.map → p-8ef60479.entry.js.map} +0 -0
  415. /package/dist/core/{p-1b5a47c6.entry.js.map → p-a3d903e4.entry.js.map} +0 -0
  416. /package/dist/core/{p-d0d2952b.entry.js.map → p-a4088bd7.entry.js.map} +0 -0
  417. /package/dist/core/{p-9271a06b.entry.js.map → p-a6fb5fe3.entry.js.map} +0 -0
  418. /package/dist/core/{p-43f87eb3.entry.js.map → p-aabb04c8.entry.js.map} +0 -0
  419. /package/dist/core/{p-ad786103.entry.js.map → p-b02ad2c4.entry.js.map} +0 -0
  420. /package/dist/core/{p-85101c9a.entry.js.map → p-ba353ac3.entry.js.map} +0 -0
  421. /package/dist/core/{p-ab485b11.entry.js.map → p-bc24c004.entry.js.map} +0 -0
  422. /package/dist/core/{p-96a909bf.entry.js.map → p-c0242c21.entry.js.map} +0 -0
  423. /package/dist/core/{p-516de675.entry.js.map → p-c1b268fd.entry.js.map} +0 -0
  424. /package/dist/core/{p-9b85340f.entry.js.map → p-d2260763.entry.js.map} +0 -0
  425. /package/dist/core/{p-782cd387.entry.js.map → p-deedc7d3.entry.js.map} +0 -0
  426. /package/dist/core/{p-09d4fe07.entry.js.map → p-e7b913e5.entry.js.map} +0 -0
  427. /package/dist/core/{p-a7f4168c.entry.js.map → p-e85505ec.entry.js.map} +0 -0
  428. /package/dist/core/{p-522b1526.entry.js.map → p-f4b76daa.entry.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"names":["icDataTableCss","DataTable","this","DENSITY_HEIGHT_MULTIPLIER","dense","default","spacious","DENSITY_PADDING_HEIGHT_DIFF","SORT_ICONS","unsorted","unsortedIcon","ascending","ascendingIcon","descending","descendingIcon","hasLoadedForOneSecond","resizeObserver","SHOW_HIDE_STRING","SHOW_HIDE_CSS_CLASS","TOOLTIP_STRING","TOOLTIP","TEXT_WRAP_STRING","TEXT_WRAP_CLASS","dataUpdated","rowHeightSet","initialLoad","icPageChangeEvent","itemsPerPageChange","DATA_ROW_HEIGHT_STRING","ROW_HEIGHT_CSS_VARIABLE","DEFAULT_LINE_HEIGHT","densityUpdate","truncationPatternUpdated","isNewDebounceDelaySet","headerResizeObserver","IC_TOOLTIP_STRING","SHOW_TRUNC_TOOLTIP_STRING","runHeaderResizeObserver","ResizeObserver","headerResizeCallback","observe","el","hideColumnHeaders","columnHeaderTruncation","tableContainerWidth","shadowRoot","querySelector","clientWidth","prevTableContainerWidth","headers","querySelectorAll","forEach","header","tooltip","typographyEls","length","classList","remove","add","updateSetRowHeight","typographyEl","fontSize","parseInt","getComputedStyle","document","documentElement","cellContainer","getCellContainer","rowHeight","parseFloat","getAttribute","scrollHeight","style","removeProperty","getTypographyElements","debounceDataTruncation","contains","dynamicDebounce","dataTruncation","setNewDebounceDelay","debounceDelay","delay","getLines","height","Math","floor","truncate","clientHeight","closest","truncationPattern","addTooltipTruncation","addShowHideTruncation","setAttribute","appendChild","isEmptyString","resetShowHideTruncation","getTooltip","showHideBtn","truncWrapper","getTruncWrapper","removeTooltip","removeTextWrap","tableCell","deleteTextWrapDataKey","array","Array","isArray","val","textWrap","startLoadingTimer","timerStarted","Date","now","setTimeout","minimumLoadingDisplayDuration","isObject","value","undefined","notDefaultDensity","density","getCellContent","cell","dataType","toLocaleDateString","getCellAlignment","alignment","Object","keys","includes","getObjectValue","getCellOptions","key","createUpdatingIndicator","appearance","description","max","min","progress","updatingOptions","h","colSpan","columns","class","fullWidth","type","size","setRowHeight","pxToRem","setTruncationClass","getColumnWidth","columnWidth","columnWidthStyling","assign","minWidth","maxWidth","getRowHeight","currentRowHeight","columnProps","rowTextWrap","adjustWidthForActionElement","elements","element","width","firstChild","getBoundingClientRect","gridWrapper","gridTemplateColumns","createCellContent","cellSlotName","rowOptions","rowAlignment","hasIcon","cellValue","rowEmphasis","innerHTML","isSlotUsed","_a","columnAlignment","vertical","_b","_c","_d","_e","horizontal","_f","_g","_h","_j","icon","name","Fragment","_k","onAllCells","_l","_m","variant","emphasis","href","target","rel","createCells","row","rowIndex","rowValues","values","rowKeys","getRowOptions","headerIndex","indexOf","variableRowHeightVal","variableRowHeight","call","index","globalRowHeight","map","scope","stickyRowHeaders","createColumnHeaders","cellAlignment","colspan","title","updating","loading","hideOnHeader","label","id","sortable","getSortButtonLabel","onClick","sortRows","sortedColumn","sortedColumnOrder","onRowClick","selectedRow","createRows","data","showPagination","slice","fromRow","toRow","organisedData","slottedColumns","filter","col","prototype","hasOwnProperty","addDataToPosition","sort","getSortFunction","getNextSortOption","option","sortOrders","sortOptions","sortOption","getComparison","targetRow","comparisonRow","targetRowValue","comparisonRowValue","find","valueOf","String","localeCompare","numeric","sensitivity","a","b","column","sortButton","previousSortedButton","nextSortOrderIndex","tableSorted","icSortChange","emit","columnName","sorted","from","updateTruncationTooltip","removeTooltipOnly","regenerateTooltip","updateScrollOffset","scrollOffset","scrollTop","setTableDimensions","tableHostDimensions","fixCellTooltips","slotElements","getSlotElements","slottedEl","tooltipEl","tagName","setExternalPopperProps","strategy","itemsPerPageOptions","rangeLabelType","showItemsPerPageControl","showGoToPageControl","itemLabel","pageLabel","hideRangeLabel","hideAllFromItemsPerPage","defaultColumn","headerTruncationChangeHandler","disconnectedCallback","disconnect","componentWillLoad","rowsPerPage","Number","paginationBarOptions","previousRowsPerPage","loadingOptions","showBackground","previousItemsPerPage","componentDidLoad","tableElement","tableContainer","checkResizeObserver","scrollable","showLoadingIndicator","componentDidUpdate","truncateUpdatedData","componentDidRender","createShowHideTruncation","resetTruncation","then","removeAttribute","hasAutoRowHeight","setProperty","allRows","newRows","checkMaxLines","setShowHideExpanded","addLineClampCSS","createTruncationTooltip","handleTypographyTruncationExpandToggle","detail","expanded","getPropertyValue","handlePageChange","parentElement","tableRowsContainer","previousPaginationPage","handleItemsPerPageChange","handleDensityChange","ev","clickListener","loadingHandler","newValue","truncationPatternHandler","dataHandler","newData","densityHandler","rowHeightChangeHandler","oldValue","icRowHeightChange","resetRowHeights","loadingIndicator","rowOptionsIndex","textContent","cssText","createElement","render","caption","stickyColumnHeaders","Host","tabIndex","onScroll","tableLayout","aligned","heading","labelDuration","ref","totalItems"],"sources":["src/components/ic-data-table/ic-data-table.css?tag=ic-data-table&encapsulation=shadow","src/components/ic-data-table/ic-data-table.tsx"],"sourcesContent":[":host {\n position: relative;\n display: inline-flex;\n max-height: 100%;\n width: var(--table-width, 100%);\n height: 100%;\n min-width: var(--table-min-width);\n max-width: var(--table-max-width);\n}\n\ntbody {\n vertical-align: top;\n}\n\n.table-container {\n position: relative;\n height: calc(100% - var(--ic-space-xxxs));\n display: flex;\n flex-direction: column;\n width: 100%;\n}\n\n.cell-container {\n display: flex;\n min-height: 1.5rem;\n overflow-y: hidden;\n height: var(--row-height);\n}\n\n.truncation-show-hide {\n overflow: visible;\n display: block;\n}\n\n.cell-icon.truncation-show-hide {\n display: flex;\n}\n\n.cell-container:not(.data-type-element, .truncation-show-hide) {\n overflow-x: hidden;\n}\n\nic-loading-indicator {\n position: sticky;\n top: 20px;\n}\n\n.table-row-container {\n position: relative;\n height: 100%;\n overflow: auto;\n transition: var(--ic-easing-transition-fast);\n overflow-anchor: none;\n}\n\n:host([show-pagination=\"true\"]) .table-row-container {\n height: calc(100% - 3.5625rem);\n}\n\ntable {\n table-layout: var(--table-layout, \"fixed\");\n border-spacing: 0;\n width: 100%;\n height: var(--table-height, auto);\n}\n\n.table-row-container:focus {\n outline: none;\n box-shadow: var(--ic-border-focus);\n border-radius: var(--ic-border-radius);\n transition: var(--ic-easing-transition-fast);\n z-index: 1;\n}\n\n:host([embedded=\"true\"]) .table-row-container {\n border: var(--ic-border-light);\n}\n\n.column-header-inner-container {\n padding: var(--ic-space-xs);\n box-sizing: border-box;\n}\n\n.column-header-inner-container ic-tooltip {\n pointer-events: none;\n}\n\n.column-header-inner-container ic-tooltip.show-trunc-tooltip {\n pointer-events: auto;\n}\n\n.column-header-inner-container ic-tooltip .column-header-text {\n --ic-line-clamp: 1;\n}\n\n.column-header-sticky {\n position: sticky;\n top: 0;\n z-index: 1;\n}\n\n.column-header-overlay {\n position: sticky;\n top: 0;\n z-index: 1;\n box-shadow: 0 0.375rem var(--ic-space-xs) calc(var(--ic-space-xxs * -1))\n rgb(0 0 0 / 20%);\n}\n\n.row-header-sticky {\n position: sticky;\n left: 0;\n}\n\n.column-header,\n.table-row {\n box-sizing: border-box;\n}\n\n.table-row-selected {\n background-color: var(--ic-table-row-selected) !important;\n}\n\n.sort-button {\n margin-left: auto;\n}\n\n.sort-button:hover {\n background-color: var(--ic-action-dark-bg-hover);\n}\n\n.sort-button:active {\n background-color: var(--ic-action-dark-bg-active);\n}\n\n.sort-button svg {\n color: var(--ic-architectural-black);\n}\n\n.sort-button-unsorted svg {\n color: var(--ic-color-tertiary-text);\n}\n\n.table-density-dense .column-header-inner-container,\ntd.table-density-dense {\n padding: var(--ic-space-xxs) var(--ic-space-xs) !important;\n}\n\n.text-dense {\n font-size: var(--ic-font-size-label);\n}\n\n.table-density-spacious .column-header-inner-container,\ntd.table-density-spacious {\n padding: 0.625rem var(--ic-space-xs) !important;\n}\n\n.text-spacious {\n font-size: 1.125rem;\n}\n\n.column-header-text {\n font-weight: var(--ic-font-weight-bold);\n}\n\n.dummy-column-header-text {\n white-space: nowrap;\n overflow: hidden;\n height: 0;\n width: fit-content;\n}\n\n.row-header,\n.column-header {\n text-align: left;\n padding: var(--ic-space-xs);\n background-color: var(--ic-architectural-40);\n border-right: var(--ic-border-light);\n border-bottom: var(--ic-border-light);\n}\n\n.column-header {\n padding: 0;\n width: var(--column-width);\n min-width: var(--column-min-width, 4rem);\n max-width: var(--column-max-width);\n}\n\n.column-header:last-child {\n border-right: none;\n}\n\n.scrollable .column-header:last-child {\n border-right: var(--ic-border-light) !important;\n}\n\n:host([embedded=\"true\"]) tr:last-child .table-cell,\n:host([embedded=\"true\"]) tr:last-child .row-header {\n border-bottom: none;\n}\n\n.column-header-alignment-left,\n.row-header-alignment-left,\n.cell-alignment-left {\n text-align: left !important;\n justify-content: start !important;\n}\n\n.column-header-alignment-right,\n.row-header-alignment-right,\n.cell-alignment-right {\n text-align: right !important;\n justify-content: end !important;\n}\n\n.cell-alignment-right.truncation-tooltip ic-tooltip ic-typography {\n padding-right: calc(var(--ic-space-xxs) + var(--ic-space-xs));\n}\n\n.cell-alignment-right.truncation-show-hide ic-typography {\n --ellipsis-padding-right: calc(var(--ic-space-xxs) + var(--ic-space-xs));\n}\n\n.column-header-alignment-center,\n.row-header-alignment-center,\n.cell-alignment-center {\n text-align: center !important;\n justify-content: center !important;\n}\n\n.table-row:nth-child(even) {\n background-color: var(--ic-architectural-20);\n}\n\n.table-cell {\n padding: var(--ic-space-xs);\n border-bottom: solid var(--ic-architectural-100) var(--ic-space-1px);\n overflow: hidden;\n box-sizing: border-box;\n max-width: var(--column-max-width);\n min-width: var(--column-min-width);\n}\n\n.table-cell.with-overflow {\n overflow: visible;\n}\n\n.data-type-string,\n.data-type-address {\n text-align: left;\n vertical-align: top;\n}\n\n.data-type-number,\n.data-type-date {\n text-align: right;\n justify-content: end;\n vertical-align: top;\n}\n\n.cell-alignment-top {\n vertical-align: top;\n align-items: flex-start;\n}\n\n.cell-alignment-middle {\n vertical-align: middle;\n align-items: center;\n}\n\n.cell-alignment-bottom {\n vertical-align: bottom;\n align-items: flex-end;\n}\n\n.cell-emphasis-low {\n color: var(--ic-color-secondary-text);\n}\n\n.cell-emphasis-high {\n font-weight: var(--ic-font-weight-bold);\n}\n\n.pagination-container {\n background-color: var(--ic-architectural-40);\n border-top: var(--ic-border-light);\n}\n\n.screen-reader-sort-text,\n.table-caption {\n position: absolute;\n left: -100rem;\n}\n\n.table-cell,\n.column-header,\n.row-header {\n word-wrap: break-word;\n white-space: pre-wrap;\n}\n\n.loading-empty {\n padding: var(--ic-space-xl) var(--ic-space-xxl);\n margin-top: var(--ic-space-xl);\n}\n\n.updating-state {\n padding: 0;\n border-bottom: var(--ic-border-light);\n}\n\n.updating-state-headers {\n border-bottom: none;\n}\n\n.loading {\n position: absolute;\n left: calc(50% - 5.9741rem);\n opacity: 0;\n transition: opacity var(--ic-transition-duration-slow);\n}\n\n.loading.show-background {\n background-color: var(--ic-architectural-white);\n border: var(--ic-border-light);\n}\n\n.loading.show {\n opacity: 1;\n}\n\n.icon,\n::slotted(svg) {\n height: var(--ic-space-lg);\n width: var(--ic-space-lg);\n margin-right: var(--ic-space-xxs);\n}\n\n.column-header-alignment-right > .icon,\n.row-header-alignment-right > .icon,\n.cell-alignment-right > .icon,\n.column-header-alignment-right > ::slotted(svg),\n.row-header-alignment-right > ::slotted(svg),\n.cell-alignment-right > ::slotted(svg) {\n margin-right: auto;\n}\n\n.column-header-alignment-center > ic-typography,\n.row-header-alignment-right > ic-typography,\n.cell-alignment-center > ic-typography {\n flex: 1;\n}\n\n.icon > svg {\n height: var(--ic-space-lg);\n width: var(--ic-space-lg);\n display: inline-block;\n}\n\n.truncation-tooltip ic-typography {\n display: -webkit-box;\n -webkit-line-clamp: var(--ic-line-clamp, 0);\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.truncation-tooltip ic-typography,\n.truncation-show-hide ic-typography {\n white-space: normal;\n}\n\n.ic-tooltip-overflow {\n overflow: hidden;\n width: 100%;\n}\n\n.action-element {\n display: flex;\n justify-content: right;\n}\n\n.cell-grid-wrapper {\n display: grid;\n grid-template-columns: auto auto;\n}\n\n@media screen and (min-width: 577px) {\n .column-header-inner-container {\n display: flex;\n align-items: center;\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n Component,\n Element,\n h,\n Prop,\n State,\n Listen,\n Watch,\n Fragment,\n Method,\n Event,\n EventEmitter,\n Host,\n} from \"@stencil/core\";\nimport unsortedIcon from \"./assets/unsorted-icon.svg\";\nimport ascendingIcon from \"./assets/ascending-icon.svg\";\nimport descendingIcon from \"./assets/descending-icon.svg\";\nimport {\n IcDataTableDataType,\n IcDataTableColumnDataTypes,\n IcDataTableColumnObject,\n IcDataTableColumnWidthTypes,\n IcDataTableDensityOptions,\n IcDataTableRowHeights,\n IcDataTableSortOrderOptions,\n IcDataTableTruncationTypes,\n IcDensityUpdateEventDetail,\n IcSortEventDetail,\n} from \"./ic-data-table.types\";\nimport { IcThemeForegroundNoDefault } from \"@ukic/web-components/dist/types/utils/types\";\nimport { IcPaginationBarOptions } from \"../../utils/types\";\n// Unable to import helper functions via @ukic/web-components\nimport {\n isEmptyString,\n isSlotUsed,\n pxToRem,\n addDataToPosition,\n dynamicDebounce,\n getSlotElements,\n checkResizeObserver,\n} from \"../../utils/helpers\";\n\n/**\n * @slot empty-state - Content is slotted below the table header when there is no data and the table is not loading.\n * @slot {COLUMN_KEY}-{ROW_INDEX}[-icon] - Each cell should have its own slot, named using the column tag and the row index, allowing for custom elements to be displayed. Include `-icon` at the end for that cell's icon slot.\n * @slot {COLUMN_KEY}-column-icon - The icon slot for a column header.\n * @slot title-bar - A custom ic-data-table-title-bar can be slotted above the column headers to display additional information about the table.\n * @slot pagination-bar - A custom ic-pagination-bar can be slotted below the data to provide enhanced control over how the data is interacted with when being fetched externally.\n */\n@Component({\n tag: \"ic-data-table\",\n styleUrl: \"ic-data-table.css\",\n shadow: true,\n})\nexport class DataTable {\n private DENSITY_HEIGHT_MULTIPLIER = {\n dense: 0.8,\n default: 1,\n spacious: 1.2,\n };\n\n private DENSITY_PADDING_HEIGHT_DIFF = {\n dense: 8,\n default: 16,\n spacious: 20,\n };\n\n private SORT_ICONS = {\n unsorted: unsortedIcon,\n ascending: ascendingIcon,\n descending: descendingIcon,\n };\n\n private hasLoadedForOneSecond = true;\n private loadingIndicator: HTMLIcLoadingIndicatorElement;\n private timerStarted: number;\n private resizeObserver: ResizeObserver = null;\n private SHOW_HIDE_STRING = \"show-hide\";\n private SHOW_HIDE_CSS_CLASS = `${this.SHOW_HIDE_STRING}-wrap`;\n private TOOLTIP_STRING = \"tooltip\";\n private TOOLTIP = `ic-${this.TOOLTIP_STRING}`;\n private TEXT_WRAP_STRING = \"text-wrap\";\n private TEXT_WRAP_CLASS = `.${this.TEXT_WRAP_STRING}`;\n private dataUpdated = false;\n private tableSorted: boolean;\n private rowHeightSet = false;\n private initialLoad = false;\n private icPageChangeEvent = false;\n private itemsPerPageChange = false;\n private DATA_ROW_HEIGHT_STRING = \"data-row-height\";\n private ROW_HEIGHT_CSS_VARIABLE = \"--row-height\";\n private previousItemsPerPage: number;\n private DEFAULT_LINE_HEIGHT = 24;\n private densityUpdate = false;\n private previousPaginationPage: number;\n private truncationPatternUpdated: boolean = false;\n private isNewDebounceDelaySet = false;\n private headerResizeObserver: ResizeObserver = null;\n private prevTableContainerWidth: number;\n private IC_TOOLTIP_STRING = \"ic-tooltip\";\n private SHOW_TRUNC_TOOLTIP_STRING = \"show-trunc-tooltip\";\n\n @Element() el: HTMLIcDataTableElement;\n\n @State() fromRow: number = 0;\n\n @State() previousRowsPerPage: number;\n\n @State() rowsPerPage: number;\n\n @State() scrollable: boolean = false;\n\n @State() scrollOffset: number = 0;\n\n @State() selectedRow: object;\n\n @State() sortedColumn: string;\n\n @State() sortedColumnOrder: IcDataTableSortOrderOptions;\n\n @State() toRow: number;\n\n @State() currentRowHeight: number;\n\n @State() debounceDelay = 0;\n\n /**\n * The title for the table only visible to screen readers.\n */\n @Prop() caption!: string;\n\n /**\n * Determines whether the column header should be truncated and display a tooltip. Default is `false`.\n */\n @Prop() columnHeaderTruncation: boolean = false;\n\n @Watch(\"columnHeaderTruncation\")\n headerTruncationChangeHandler(): void {\n if (this.columnHeaderTruncation) {\n this.prevTableContainerWidth = 0;\n } else {\n const headers = this.el.shadowRoot.querySelectorAll(\"th.column-header\");\n headers.forEach((header) => {\n const tooltip = header.querySelector(this.IC_TOOLTIP_STRING);\n if (tooltip) {\n tooltip.classList.remove(this.SHOW_TRUNC_TOOLTIP_STRING);\n }\n });\n }\n }\n\n /**\n * The column headers for the table.\n */\n @Prop() columns!: IcDataTableColumnObject[];\n\n /**\n * The row content for the table.\n */\n @Prop() data?: IcDataTableDataType[];\n\n /**\n * Set the density of the table including font and padding.\n */\n @Prop({ mutable: true }) density?: IcDataTableDensityOptions = \"default\";\n\n /**\n * Applies a border to the table container.\n */\n @Prop() embedded?: boolean = false;\n\n /**\n * Sets the row height on all rows in the table that aren't set using the `variableRowHeight` method.\n */\n @Prop({ mutable: true }) globalRowHeight?: IcDataTableRowHeights = \"auto\";\n\n /**\n * Sets the table height. Can be set to `auto` or a specific value in `px`, `rem`, or `%`.\n */\n @Prop() height?: string;\n\n /**\n * If `true`, column headers will not be visible.\n */\n @Prop() hideColumnHeaders?: boolean = false;\n\n /**\n * When set to `true`, the full table will show a loading state, featuring a radial indicator.\n */\n @Prop({ mutable: true }) loading?: boolean = false;\n\n /**\n * Sets the props for the circular loading indicator used in the loading state.\n */\n @Prop() loadingOptions?: {\n appearance?: IcThemeForegroundNoDefault;\n description?: string;\n label?: string;\n labelDuration?: number;\n max?: number;\n min?: number;\n progress?: number;\n showBackground?: boolean;\n };\n\n /**\n * Sets the maximum width of the data table. Can be set in `px`, `rem`, or `%`.\n */\n @Prop() maxWidth?: string;\n\n /**\n * Sets the minimum width of the data table. Can be set in `px`, `rem`, or `%`.\n */\n @Prop() minWidth?: string;\n\n /**\n * The minimum amount of time the `loading` state displays for before showing the data. Used to prevent flashing in the component.\n */\n @Prop() minimumLoadingDisplayDuration?: number = 1000;\n\n /**\n * Sets the props for the built-in pagination bar. If the `pagination-bar` slot is used then this prop is ignored.\n */\n @Prop() paginationBarOptions?: IcPaginationBarOptions = {\n itemsPerPageOptions: [\n { label: \"10\", value: \"10\" },\n { label: \"25\", value: \"25\" },\n { label: \"50\", value: \"50\" },\n ],\n rangeLabelType: \"page\",\n type: \"simple\",\n showItemsPerPageControl: true,\n showGoToPageControl: true,\n alignment: \"right\",\n appearance: \"default\",\n itemLabel: \"Item\",\n pageLabel: \"Page\",\n hideRangeLabel: false,\n hideAllFromItemsPerPage: false,\n };\n\n /**\n * If `true`, adds a pagination bar to the bottom of the table.\n */\n @Prop() showPagination?: boolean = false;\n\n /**\n * If `true`, allows table columns to be sorted using applied sort buttons.\n */\n @Prop() sortable?: boolean = false;\n\n /**\n * Sets the order columns will be sorted in and allows for 'default' sorts to be added.\n */\n @Prop() sortOptions?: {\n sortOrders: IcDataTableSortOrderOptions[];\n defaultColumn?: string;\n } = {\n sortOrders: [\"unsorted\", \"ascending\", \"descending\"],\n defaultColumn: \"\",\n };\n\n /**\n * If `true`, column headers will remain at the top of the table when scrolling vertically.\n */\n @Prop() stickyColumnHeaders?: boolean = false;\n\n /**\n * If `true`, row headers will remain to the left when scrolling horizontally.\n */\n @Prop() stickyRowHeaders?: boolean = false;\n /**\n * Sets the layout of the table\n */\n @Prop() tableLayout?: \"fixed\" | \"auto\" = \"fixed\";\n\n /**\n * Sets the method used to truncate long text in cells where textWrap is `false`. The `tooltip` truncation pattern allows the overflowing text to be seen in a tooltip. The `show-hide` truncation pattern allows the overflowing text to be shown and hidden using the ic-typography \"See more\"/\"See less\" buttons.\n */\n @Prop() truncationPattern?: IcDataTableTruncationTypes;\n\n /**\n * If `true`, the table displays a linear loading indicator below the header row to indicate an updating state.\n */\n @Prop() updating?: boolean = false;\n\n /**\n * Sets the props for the linear loading indicator used in the updating state.\n */\n @Prop() updatingOptions?: {\n appearance?: IcThemeForegroundNoDefault;\n description?: string;\n max?: number;\n min?: number;\n progress?: number;\n };\n\n /**\n * Allows for custom setting of row heights on individual rows based on an individual value from the `data` prop and the row index.\n * If the function returns `null`, that row's height will be set to the `globalRowHeight` property.\n */\n @Prop({ mutable: true }) variableRowHeight?: (params: {\n [key: string]: any;\n index: number;\n }) => IcDataTableRowHeights | null;\n\n /**\n * Sets the table width. Can be set to `auto` or a specific value in `px`, `rem`, or `%`.\n */\n @Prop() width?: string;\n\n /**\n * Emitted when the `globalRowHeight` or `variableRowHeight` properties change in the data table.\n */\n @Event() icRowHeightChange: EventEmitter<void>;\n\n /**\n * Emitted when a column sort button is clicked.\n */\n @Event() icSortChange: EventEmitter<IcSortEventDetail>;\n\n disconnectedCallback(): void {\n this.resizeObserver?.disconnect();\n this.headerResizeObserver?.disconnect();\n }\n\n componentWillLoad(): void {\n this.rowsPerPage = Number(\n this.paginationBarOptions.itemsPerPageOptions[0].value\n );\n this.previousRowsPerPage = this.rowsPerPage;\n this.toRow = this.rowsPerPage;\n this.sortedColumn = this.sortOptions.defaultColumn;\n this.sortedColumnOrder = this.sortOptions.sortOrders[0];\n this.loadingOptions = {\n ...this.loadingOptions,\n showBackground: this.data?.length > 0,\n };\n this.initialLoad = true;\n this.previousItemsPerPage = this.rowsPerPage;\n }\n\n componentDidLoad(): void {\n const tableElement = this.el.shadowRoot.querySelector(\"table\");\n const tableContainer = this.el.shadowRoot.querySelector(\".table-container\");\n\n checkResizeObserver(this.runHeaderResizeObserver);\n\n if (this.dataUpdated) {\n this.dataUpdated = false;\n }\n\n if (\n tableElement?.clientHeight > tableContainer?.clientHeight ||\n tableElement?.clientWidth > tableContainer?.clientWidth\n ) {\n this.scrollable = true;\n }\n if (this.loading) {\n this.startLoadingTimer();\n this.showLoadingIndicator();\n }\n\n if (this.truncationPattern) {\n this.getTypographyElements().forEach(\n (typographyEl: HTMLIcTypographyElement) => {\n const cellContainer = this.getCellContainer(typographyEl);\n if (!cellContainer.classList.contains(this.TEXT_WRAP_STRING)) {\n this.dataTruncation(typographyEl);\n }\n }\n );\n\n this.debounceDataTruncation();\n }\n\n if (this.globalRowHeight !== \"auto\") {\n this.updateSetRowHeight();\n }\n }\n\n componentDidUpdate(): void {\n // truncation updates invoked here once new/updated data has\n // rendered to take into account updated .cell-container/ic-typography box model updates.\n if (\n this.truncationPattern === this.SHOW_HIDE_STRING ||\n this.truncationPattern === this.TOOLTIP_STRING\n ) {\n this.truncateUpdatedData();\n }\n }\n\n componentDidRender(): void {\n this.fixCellTooltips();\n this.adjustWidthForActionElement();\n }\n\n private runHeaderResizeObserver = () => {\n this.headerResizeObserver = new ResizeObserver(() => {\n this.headerResizeCallback();\n });\n this.headerResizeObserver.observe(this.el);\n };\n\n private headerResizeCallback = () => {\n if (!this.hideColumnHeaders && this.columnHeaderTruncation) {\n const tableContainerWidth =\n this.el.shadowRoot.querySelector(\".table-container\").clientWidth;\n if (tableContainerWidth !== this.prevTableContainerWidth) {\n const headers = this.el.shadowRoot.querySelectorAll(\"th.column-header\");\n headers.forEach((header) => {\n const tooltip = header.querySelector(this.IC_TOOLTIP_STRING);\n const typographyEls = header.querySelectorAll(\"ic-typography\");\n if (tooltip && typographyEls && typographyEls.length === 2) {\n tooltip.classList.remove(this.SHOW_TRUNC_TOOLTIP_STRING);\n if (typographyEls[1].clientWidth > typographyEls[0].clientWidth) {\n tooltip.classList.add(this.SHOW_TRUNC_TOOLTIP_STRING);\n }\n }\n });\n this.prevTableContainerWidth = tableContainerWidth;\n }\n }\n };\n\n private truncateUpdatedData() {\n if (this.dataUpdated) {\n if (this.truncationPattern === this.SHOW_HIDE_STRING) {\n this.getTypographyElements().forEach(\n (typographyEl: HTMLIcTypographyElement) => {\n const truncWrapper = this.getTruncWrapper(typographyEl);\n const cellContainer = this.getCellContainer(typographyEl);\n\n if (\n cellContainer?.clientHeight - this.DEFAULT_LINE_HEIGHT >=\n truncWrapper?.scrollHeight\n ) {\n this.resetShowHideTruncation(typographyEl);\n return;\n }\n\n setTimeout(() => {\n // slight delay due to data rendering\n if (typographyEl?.scrollHeight > cellContainer?.clientHeight) {\n this.addShowHideTruncation(cellContainer, typographyEl);\n }\n }, 150);\n }\n );\n }\n\n if (this.truncationPattern === this.TOOLTIP_STRING) {\n this.updateTruncationTooltip();\n }\n\n this.dataUpdated = false;\n }\n\n if (this.tableSorted) {\n if (this.truncationPattern === this.TOOLTIP_STRING) {\n this.updateTruncationTooltip();\n }\n\n if (this.truncationPattern === this.SHOW_HIDE_STRING) {\n this.getTypographyElements().forEach(\n (typographyEl: HTMLIcTypographyElement) => {\n const cellContainer = this.getCellContainer(typographyEl);\n\n if (!cellContainer.classList.contains(this.TEXT_WRAP_STRING)) {\n this.createShowHideTruncation(typographyEl, cellContainer);\n } else {\n typographyEl.resetTruncation().then(() => {\n cellContainer.removeAttribute(\"style\");\n });\n }\n }\n );\n }\n\n this.tableSorted = false;\n }\n\n // This function recalculates the tooltip truncation when the rowHeight has been set.\n // This is in componentDidUpdate so a setTimeout is not used to wait for the render to be complete\n if (this.rowHeightSet) {\n const fontSize = parseInt(\n getComputedStyle(document.documentElement).fontSize\n );\n const hasAutoRowHeight = this.globalRowHeight === \"auto\";\n\n this.getTypographyElements().forEach(\n (typographyEl: HTMLIcTypographyElement) => {\n const cellContainer = this.getCellContainer(typographyEl);\n const tooltipEl = this.getTooltip(typographyEl);\n\n if (hasAutoRowHeight) {\n cellContainer.style.height = null;\n\n if (this.truncationPattern === this.TOOLTIP_STRING) {\n this.removeTooltip(cellContainer, typographyEl, tooltipEl);\n typographyEl.setAttribute(\"style\", `--ic-line-clamp: 0`);\n } else if (this.truncationPattern === this.SHOW_HIDE_STRING) {\n this.resetShowHideTruncation(typographyEl);\n }\n\n return;\n }\n\n const rowHeight =\n fontSize *\n parseFloat(cellContainer.getAttribute(this.DATA_ROW_HEIGHT_STRING));\n\n // If the set row height is bigger than the cell container even\n // with textWrap, set the row height\n if (\n !cellContainer?.style?.height &&\n rowHeight > cellContainer.clientHeight &&\n !cellContainer.classList.contains(this.TEXT_WRAP_STRING)\n ) {\n cellContainer.style.setProperty(\n this.ROW_HEIGHT_CSS_VARIABLE,\n cellContainer.getAttribute(this.DATA_ROW_HEIGHT_STRING)\n );\n }\n\n if (this.truncationPattern) {\n // If the set row height is bigger than the typography truncation wrapper\n // scroll height, remove see more / see less button\n if (this.truncationPattern === this.SHOW_HIDE_STRING) {\n const truncWrapper = this.getTruncWrapper(typographyEl);\n const showHideBtn =\n typographyEl.shadowRoot.querySelector(\"button\");\n\n if (\n showHideBtn &&\n truncWrapper?.scrollHeight <= cellContainer.clientHeight\n ) {\n this.resetShowHideTruncation(typographyEl);\n return;\n }\n }\n\n this.truncate(typographyEl, cellContainer, tooltipEl);\n } else {\n this.updateSetRowHeight(typographyEl);\n }\n }\n );\n\n this.rowHeightSet = false;\n }\n\n // Only run truncation on the new rows\n // when the number of items per page has increased\n if (this.itemsPerPageChange) {\n const allRows = this.el.shadowRoot.querySelectorAll(\".table-row\");\n\n if (this.rowsPerPage > this.previousItemsPerPage) {\n const newRows = Array.from(allRows).slice(this.previousItemsPerPage);\n\n newRows.forEach((row) => {\n row\n .querySelectorAll(\"ic-typography\")\n .forEach((typographyEl: HTMLIcTypographyElement) => {\n const cellContainer = this.getCellContainer(typographyEl);\n const tooltipEl = this.getTooltip(typographyEl);\n\n this.truncate(typographyEl, cellContainer, tooltipEl);\n });\n });\n }\n\n this.previousItemsPerPage = this.rowsPerPage;\n this.itemsPerPageChange = false;\n }\n\n if (!this.initialLoad && this.icPageChangeEvent) {\n if (this.truncationPattern === this.TOOLTIP_STRING) {\n this.updateTruncationTooltip();\n }\n\n // set truncation to see more if opened and next/previous page is pressed\n if (this.truncationPattern === this.SHOW_HIDE_STRING) {\n this.getTypographyElements().forEach((typographyEl) => {\n const cellContainer = this.getCellContainer(typographyEl);\n const showHideBtn = typographyEl.shadowRoot.querySelector(\"button\");\n\n if (\n typographyEl?.scrollHeight > cellContainer.clientHeight &&\n !showHideBtn\n ) {\n this.addShowHideTruncation(cellContainer, typographyEl);\n }\n });\n }\n\n this.icPageChangeEvent = false;\n }\n\n if (this.densityUpdate) {\n this.getTypographyElements().forEach((typographyEl) => {\n const cellContainer = this.getCellContainer(typographyEl);\n const tooltipEl = this.getTooltip(typographyEl);\n\n this.truncate(typographyEl, cellContainer, tooltipEl);\n });\n\n this.densityUpdate = false;\n }\n\n if (this.truncationPatternUpdated) {\n if (this.truncationPattern === this.TOOLTIP_STRING) {\n this.getTypographyElements().forEach((typographyEl) => {\n const cellContainer = this.getCellContainer(typographyEl);\n const tooltipEl = this.getTooltip(typographyEl);\n\n if (typographyEl.scrollHeight > cellContainer.clientHeight) {\n this.addTooltipTruncation(typographyEl, cellContainer, tooltipEl);\n }\n });\n } else if (this.truncationPattern === this.SHOW_HIDE_STRING) {\n this.getTypographyElements().forEach(\n (typographyEl: HTMLIcTypographyElement) => {\n const truncWrapper = this.getTruncWrapper(typographyEl);\n const cellContainer = this.getCellContainer(typographyEl);\n\n if (\n cellContainer?.clientHeight - this.DEFAULT_LINE_HEIGHT >\n truncWrapper?.scrollHeight\n ) {\n this.resetShowHideTruncation(typographyEl);\n return;\n }\n\n if (typographyEl?.scrollHeight > cellContainer?.clientHeight) {\n this.addShowHideTruncation(cellContainer, typographyEl);\n }\n }\n );\n }\n }\n }\n\n private updateSetRowHeight = (typographyEl?: HTMLIcTypographyElement) => {\n const fontSize = parseInt(\n getComputedStyle(document.documentElement).fontSize\n );\n\n if (typographyEl) {\n const cellContainer = this.getCellContainer(typographyEl);\n\n const rowHeight =\n fontSize *\n parseFloat(cellContainer.getAttribute(this.DATA_ROW_HEIGHT_STRING));\n\n if (typographyEl.scrollHeight > rowHeight) {\n cellContainer.style.removeProperty(this.ROW_HEIGHT_CSS_VARIABLE);\n }\n } else {\n this.getTypographyElements().forEach(\n (typographyEl: HTMLIcTypographyElement) => {\n const cellContainer = this.getCellContainer(typographyEl);\n\n const rowHeight =\n fontSize *\n parseFloat(cellContainer.getAttribute(this.DATA_ROW_HEIGHT_STRING));\n\n if (typographyEl.scrollHeight > rowHeight) {\n cellContainer.style.removeProperty(this.ROW_HEIGHT_CSS_VARIABLE);\n }\n }\n );\n }\n };\n\n private createShowHideTruncation(\n typographyEl: HTMLIcTypographyElement,\n cellContainer: HTMLElement\n ) {\n typographyEl.checkMaxLines(typographyEl.scrollHeight);\n typographyEl.setAttribute(\n \"max-lines\",\n `${Math.floor(cellContainer?.clientHeight / this.DEFAULT_LINE_HEIGHT)}`\n );\n typographyEl.setShowHideExpanded(false);\n\n cellContainer.style.setProperty(this.ROW_HEIGHT_CSS_VARIABLE, null);\n }\n\n private debounceDataTruncation = () => {\n this.getTypographyElements().forEach(\n (typographyEl: HTMLIcTypographyElement) => {\n const cellContainer = this.getCellContainer(typographyEl);\n if (!cellContainer.classList.contains(this.TEXT_WRAP_STRING)) {\n this.resizeObserver = new ResizeObserver(\n // This gets triggered twice due to updated data and see more/see less button\n dynamicDebounce(\n () => {\n this.dataTruncation(typographyEl);\n\n if (!this.isNewDebounceDelaySet) {\n this.setNewDebounceDelay(200);\n }\n },\n () => this.debounceDelay\n ) as ResizeObserverCallback\n );\n\n this.resizeObserver.observe(typographyEl);\n }\n }\n );\n };\n\n private setNewDebounceDelay = (delay: number) => {\n this.debounceDelay = delay;\n\n this.isNewDebounceDelaySet = true;\n };\n\n private getLines = (height: number): number =>\n Math.floor(height / this.DEFAULT_LINE_HEIGHT);\n\n private truncate = (\n typographyEl: HTMLIcTypographyElement,\n cellContainer: HTMLElement,\n tooltip: HTMLIcTooltipElement\n ) => {\n if (typographyEl?.scrollHeight > cellContainer?.clientHeight) {\n //24 is the height of a single line\n if (!typographyEl.closest(this.TEXT_WRAP_CLASS)) {\n if (this.truncationPattern === this.TOOLTIP_STRING) {\n this.addTooltipTruncation(typographyEl, cellContainer, tooltip);\n }\n if (this.truncationPattern === this.SHOW_HIDE_STRING) {\n this.addShowHideTruncation(cellContainer, typographyEl);\n }\n }\n } else {\n if (this.truncationPattern === this.TOOLTIP_STRING && tooltip) {\n typographyEl.setAttribute(\"style\", `--ic-line-clamp: 0`);\n\n cellContainer.appendChild(typographyEl);\n tooltip.remove();\n }\n\n if (\n this.truncationPattern === this.SHOW_HIDE_STRING &&\n !isEmptyString(typographyEl.getAttribute(\"max-lines\"))\n ) {\n this.resetShowHideTruncation(typographyEl);\n }\n }\n };\n\n private addTooltipTruncation(\n typographyEl: HTMLIcTypographyElement,\n cellContainer: HTMLElement,\n tooltip: HTMLIcTooltipElement\n ) {\n this.addLineClampCSS(typographyEl, cellContainer);\n\n if (!tooltip) {\n this.createTruncationTooltip(typographyEl, cellContainer);\n }\n }\n\n private addShowHideTruncation(\n cellContainer: HTMLElement,\n typographyEl: HTMLIcTypographyElement\n ) {\n cellContainer.classList.add(this.SHOW_HIDE_CSS_CLASS);\n this.createShowHideTruncation(typographyEl, cellContainer);\n }\n\n private dataTruncation = (typographyEl: HTMLIcTypographyElement) => {\n // Tooltip truncation mentioned in AC. Will need revisiting\n const tooltip: HTMLIcTooltipElement = this.getTooltip(typographyEl);\n const cellContainer = this.getCellContainer(typographyEl);\n if (\n cellContainer?.classList.contains(\"data-type-element\") ||\n this.dataUpdated\n ) {\n return;\n }\n\n if (\n this.truncationPattern === this.SHOW_HIDE_STRING &&\n typographyEl.shadowRoot.querySelector(\"button\")\n ) {\n const showHideBtn = typographyEl.shadowRoot.querySelector(\"button\");\n // If the see more/see less is present and the max lines is equal to the cell container\n // remove the see more/see less button\n if (showHideBtn) {\n const truncWrapper = this.getTruncWrapper(typographyEl);\n\n if (\n this.getLines(truncWrapper.scrollHeight) ===\n +typographyEl.getAttribute(\"max-lines\")\n ) {\n this.resetShowHideTruncation(typographyEl);\n }\n }\n }\n\n // Deals with setting and resetting row height and re-truncating data\n if (this.rowHeightSet && this.truncationPattern === this.SHOW_HIDE_STRING) {\n const truncWrapper = this.getTruncWrapper(typographyEl);\n // cellContainer.clientHeight - 24 removes the extra line by see more/see less\n if (\n truncWrapper &&\n cellContainer.clientHeight - this.DEFAULT_LINE_HEIGHT >\n truncWrapper.scrollHeight\n ) {\n this.resetShowHideTruncation(typographyEl);\n return;\n }\n\n if (typographyEl.scrollHeight > cellContainer.clientHeight) {\n this.addShowHideTruncation(cellContainer, typographyEl);\n return;\n }\n }\n\n if (\n typographyEl?.scrollHeight > 0 &&\n cellContainer?.clientHeight > 0 &&\n typographyEl?.scrollHeight === cellContainer?.clientHeight\n ) {\n if (tooltip) {\n this.removeTooltip(cellContainer, typographyEl, tooltip);\n }\n return;\n }\n\n this.truncate(typographyEl, cellContainer, tooltip);\n };\n\n private getTruncWrapper(typographyEl: HTMLIcTypographyElement) {\n return typographyEl.shadowRoot.querySelector(\".trunc-wrapper\");\n }\n\n // Set the height to initial if row height is set and the show / hide truncation\n // is clicked\n @Listen(\"typographyTruncationExpandToggle\")\n handleTypographyTruncationExpandToggle({\n detail,\n }: CustomEvent<{\n expanded: boolean;\n typographyEl: HTMLIcTypographyElement;\n }>): void {\n const { expanded, typographyEl } = detail;\n const cellContainer = this.getCellContainer(typographyEl);\n\n if (\n cellContainer.style.getPropertyValue(this.ROW_HEIGHT_CSS_VARIABLE) &&\n expanded\n ) {\n cellContainer.style.setProperty(this.ROW_HEIGHT_CSS_VARIABLE, \"inherit\");\n }\n }\n\n @Listen(\"icPageChange\")\n handlePageChange({ detail, target }: CustomEvent<{ value: number }>): void {\n if ((target as HTMLIcPaginationBarElement).parentElement !== this.el) {\n this.fromRow = (detail.value - 1) * this.rowsPerPage;\n this.toRow = this.fromRow + this.rowsPerPage;\n const tableRowsContainer = this.el.shadowRoot.querySelector(\n \".table-row-container\"\n );\n if (this.previousRowsPerPage === this.rowsPerPage) {\n tableRowsContainer.scrollTop = 0;\n } else if (this.previousRowsPerPage < this.rowsPerPage) {\n tableRowsContainer.scrollTop = this.scrollOffset;\n this.previousRowsPerPage = this.rowsPerPage;\n } else {\n this.previousRowsPerPage = this.rowsPerPage;\n }\n }\n\n if (!this.initialLoad && this.previousPaginationPage !== detail.value) {\n // This is to prevent icPageChange from triggering truncation on first load\n this.icPageChangeEvent = true;\n }\n\n this.previousPaginationPage = detail.value;\n this.initialLoad = false;\n }\n\n @Listen(\"icItemsPerPageChange\")\n handleItemsPerPageChange({\n detail,\n target,\n }: CustomEvent<{ value: number }>): void {\n if ((target as HTMLIcPaginationBarElement).parentElement !== this.el) {\n this.previousRowsPerPage = this.rowsPerPage;\n this.rowsPerPage = detail.value;\n }\n\n this.itemsPerPageChange = true;\n }\n\n @Listen(\"icTableDensityUpdate\")\n handleDensityChange(ev: CustomEvent<IcDensityUpdateEventDetail>): void {\n this.density = ev.detail.value;\n }\n\n @Listen(\"click\", { target: \"window\" })\n clickListener(ev: MouseEvent): void {\n if (ev.target !== this.el) this.selectedRow = undefined;\n }\n\n @Watch(\"loading\")\n loadingHandler(newValue: boolean): void {\n if (newValue) this.startLoadingTimer();\n\n if (this.loading) {\n setTimeout(() => {\n this.showLoadingIndicator();\n }, 500);\n }\n }\n\n @Watch(\"truncationPattern\")\n truncationPatternHandler(newValue: IcDataTableTruncationTypes): void {\n if (newValue === this.TOOLTIP_STRING) {\n this.resetShowHideTruncation();\n this.updateTruncationTooltip(true);\n\n // Not using debounceDataTruncation here due to resizeObserver not being triggered\n this.getTypographyElements().forEach(\n (typographyEl: HTMLIcTypographyElement) => {\n const cellContainer = this.getCellContainer(typographyEl);\n const tooltip: HTMLIcTooltipElement = this.getTooltip(typographyEl);\n\n this.truncate(typographyEl, cellContainer, tooltip);\n }\n );\n }\n\n if (newValue === this.SHOW_HIDE_STRING) {\n // ResizeObserver is trigger here due to the see more/see less links being removed.\n // The resizeObserver will also apply the tooltip where relevant\n this.updateTruncationTooltip(true);\n this.getTypographyElements().forEach(\n (typographyEl: HTMLIcTypographyElement) => {\n const truncWrapper = this.getTruncWrapper(typographyEl);\n const cellContainer = this.getCellContainer(typographyEl);\n\n if (\n cellContainer?.clientHeight - this.DEFAULT_LINE_HEIGHT >\n truncWrapper?.scrollHeight\n ) {\n this.resetShowHideTruncation(typographyEl);\n return;\n }\n\n setTimeout(() => {\n // slight delay due to data rendering\n if (typographyEl?.scrollHeight > cellContainer?.clientHeight) {\n this.addShowHideTruncation(cellContainer, typographyEl);\n }\n }, 150);\n }\n );\n }\n\n this.truncationPatternUpdated = true;\n }\n\n @Watch(\"data\")\n async dataHandler(newData: IcDataTableDataType[]): Promise<void> {\n this.loadingOptions = {\n ...this.loadingOptions,\n showBackground: newData?.length > 0,\n };\n if (this.loading) {\n !this.hasLoadedForOneSecond\n ? setTimeout(\n () => (this.loading = false),\n this.minimumLoadingDisplayDuration -\n (Date.now() - this.timerStarted)\n )\n : (this.loading = false);\n }\n if (this.updating) this.updating = false;\n\n this.dataUpdated = true;\n }\n\n @Watch(\"density\")\n async densityHandler(): Promise<void> {\n this.densityUpdate = true;\n }\n\n private removeTextWrap = (): void => {\n this.getTypographyElements().forEach(\n (typographyEl: HTMLIcTypographyElement) => {\n const tableCell = typographyEl.closest(\"td\");\n if (tableCell.classList.contains(this.TEXT_WRAP_STRING)) {\n tableCell.classList.remove(this.TEXT_WRAP_STRING);\n }\n }\n );\n };\n\n private getCellContainer = (\n typographyEl: HTMLIcTypographyElement\n ): HTMLElement => {\n return typographyEl.closest(\".cell-container\");\n };\n\n private deleteTextWrapDataKey = (\n array: IcDataTableColumnObject[] | object[]\n ) =>\n Array.isArray(array) &&\n array.forEach((val) => val.textWrap && delete val.textWrap);\n\n private resetShowHideTruncation(typographyEl?: HTMLIcTypographyElement) {\n if (typographyEl) {\n const truncWrapper = this.getTruncWrapper(typographyEl);\n const cellContainer = this.getCellContainer(typographyEl);\n\n if (\n truncWrapper?.scrollHeight > cellContainer?.clientHeight &&\n !isEmptyString(typographyEl.getAttribute(\"max-lines\")) &&\n Math.floor(cellContainer?.clientHeight / this.DEFAULT_LINE_HEIGHT) !==\n +typographyEl.getAttribute(\"max-lines\")\n ) {\n typographyEl.checkMaxLines(truncWrapper.scrollHeight);\n typographyEl.setAttribute(\n \"max-lines\",\n `${Math.floor(\n cellContainer?.clientHeight / this.DEFAULT_LINE_HEIGHT\n )}`\n );\n typographyEl.setShowHideExpanded(false);\n\n cellContainer.style.setProperty(this.ROW_HEIGHT_CSS_VARIABLE, null);\n } else {\n typographyEl.resetTruncation().then(() => {\n if (!typographyEl.closest(this.TEXT_WRAP_CLASS)) {\n cellContainer.style.setProperty(\n this.ROW_HEIGHT_CSS_VARIABLE,\n cellContainer.getAttribute(this.DATA_ROW_HEIGHT_STRING)\n );\n }\n });\n }\n } else {\n this.getTypographyElements().forEach((typographyEl) => {\n const cellContainer = this.getCellContainer(typographyEl);\n\n typographyEl.resetTruncation().then(() => {\n if (!typographyEl.closest(this.TEXT_WRAP_CLASS)) {\n cellContainer.style.setProperty(\n this.ROW_HEIGHT_CSS_VARIABLE,\n cellContainer.getAttribute(this.DATA_ROW_HEIGHT_STRING)\n );\n }\n });\n });\n }\n }\n\n @Watch(\"globalRowHeight\")\n @Watch(\"variableRowHeight\")\n rowHeightChangeHandler(newValue: number, oldValue: number): void {\n if (+newValue !== +oldValue) {\n this.deleteTextWrapDataKey(this.data);\n this.deleteTextWrapDataKey(this.columns);\n this.removeTextWrap();\n\n this.icRowHeightChange.emit();\n\n this.rowHeightSet = true;\n }\n }\n\n /**\n * Resets the `globalRowHeight` prop to number or auto and sets the `variableRowHeight` prop to `null`.\n */\n @Method()\n async resetRowHeights(rowHeight?: number | \"auto\"): Promise<void> {\n this.globalRowHeight = rowHeight || \"auto\";\n this.variableRowHeight = null;\n }\n\n private showLoadingIndicator() {\n this.loadingIndicator?.classList.add(\"show\");\n }\n\n private startLoadingTimer = (): void => {\n this.hasLoadedForOneSecond = false;\n this.timerStarted = Date.now();\n setTimeout(() => {\n this.hasLoadedForOneSecond = true;\n this.timerStarted = null;\n }, this.minimumLoadingDisplayDuration);\n };\n\n private isObject = (value: any) =>\n value !== undefined && value !== null && typeof value === \"object\";\n\n private notDefaultDensity = () => this.density !== \"default\";\n\n private getCellContent = (\n cell: any,\n dataType: IcDataTableColumnDataTypes\n ): any => {\n switch (dataType) {\n case \"element\":\n return undefined;\n case \"date\":\n return (\n cell instanceof Date ? cell : new Date(cell)\n ).toLocaleDateString();\n default:\n return cell;\n }\n };\n\n private getCellAlignment = (\n cell: any,\n alignment: \"horizontal\" | \"vertical\"\n ) => {\n if (this.isObject(cell) && Object.keys(cell).includes(\"cellAlignment\")) {\n return this.getObjectValue(\n this.getObjectValue(cell, \"cellAlignment\"),\n alignment\n );\n }\n };\n\n private getCellOptions = (cell: any, key: string) => {\n if (!(this.isObject(cell) && Object.keys(cell).includes(key))) return;\n\n return this.getObjectValue(cell, key);\n };\n\n private createUpdatingIndicator = () => {\n const { appearance, description, max, min, progress } =\n this.updatingOptions || {};\n return (\n <th colSpan={this.columns.length} class=\"updating-state\">\n <ic-loading-indicator\n appearance={appearance}\n description={description || \"Updating table data\"}\n fullWidth={true}\n max={max}\n min={min}\n progress={progress}\n type=\"linear\"\n size=\"small\"\n ></ic-loading-indicator>\n </th>\n );\n };\n\n private setRowHeight = (height: number) => {\n return pxToRem(\n `${\n height * this.DENSITY_HEIGHT_MULTIPLIER[this.density] -\n this.DENSITY_PADDING_HEIGHT_DIFF[this.density]\n }px`\n );\n };\n\n private setTruncationClass = () => {\n if (this.truncationPattern) {\n return { [`truncation-${this.truncationPattern}`]: true };\n }\n\n return {};\n };\n\n private getColumnWidth = (\n columnWidth?: string | IcDataTableColumnWidthTypes\n ) => {\n // TODO: Setting max width on columns\n let columnWidthStyling = {};\n\n if (columnWidth) {\n if (typeof columnWidth === \"string\") {\n columnWidthStyling = {\n ...columnWidthStyling,\n [\"--column-width\"]: columnWidth,\n };\n }\n\n if (typeof columnWidth === \"object\" && !!Object.keys(columnWidth)) {\n if (columnWidth?.minWidth) {\n columnWidthStyling = {\n ...columnWidthStyling,\n [\"--column-min-width\"]: columnWidth?.minWidth,\n };\n }\n\n if (columnWidth?.maxWidth) {\n columnWidthStyling = {\n ...columnWidthStyling,\n [\"--column-max-width\"]: columnWidth?.maxWidth,\n };\n }\n }\n }\n\n return columnWidthStyling;\n };\n\n private getRowHeight = (\n currentRowHeight: number,\n columnProps: IcDataTableColumnObject,\n rowTextWrap: boolean,\n cell: any\n ) => {\n if (\n (this.truncationPattern || currentRowHeight) &&\n !columnProps?.textWrap &&\n !rowTextWrap &&\n !this.getCellOptions(cell, \"textWrap\") &&\n columnProps?.dataType !== \"element\"\n ) {\n return {\n [this.ROW_HEIGHT_CSS_VARIABLE]: this.setRowHeight(currentRowHeight),\n };\n }\n\n return {};\n };\n\n private adjustWidthForActionElement = () => {\n const elements = this.el.shadowRoot.querySelectorAll(\".action-element\");\n elements.forEach((element) => {\n const width = (element.firstChild as HTMLElement).getBoundingClientRect()\n .width;\n const gridWrapper: HTMLElement = element.closest(\".cell-grid-wrapper\");\n gridWrapper.style.gridTemplateColumns = `auto calc(${width}px + var(--ic-space-xs))`;\n });\n };\n\n private createCellContent = (\n columnProps: IcDataTableColumnObject,\n cell: any,\n cellSlotName: string,\n rowOptions: any,\n rowAlignment: string,\n hasIcon: boolean,\n currentRowHeight: number,\n cellValue: (key: string) => any,\n rowEmphasis: string\n ) => (\n <div\n innerHTML={\n columnProps?.dataType === \"element\" &&\n !isSlotUsed(this.el, cellSlotName)\n ? (cell as string)\n : null\n }\n class={{\n \"cell-container\": columnProps?.dataType !== \"element\",\n [`cell-alignment-${\n columnProps?.columnAlignment?.vertical ||\n rowOptions?.rowAlignment?.vertical ||\n rowAlignment ||\n this.getCellAlignment(cell, \"vertical\")\n }`]:\n !!columnProps?.columnAlignment?.vertical ||\n !!rowOptions?.rowAlignment?.vertical ||\n !!rowAlignment ||\n !!this.getCellAlignment(cell, \"vertical\"),\n [`cell-alignment-${\n columnProps?.columnAlignment?.horizontal ||\n rowOptions?.rowAlignment?.horizontal ||\n this.getCellAlignment(cell, \"horizontal\")\n }`]:\n !!columnProps?.columnAlignment?.horizontal ||\n !!rowOptions?.rowAlignment?.horizontal ||\n !!this.getCellAlignment(cell, \"horizontal\"),\n [`data-type-${columnProps?.dataType}`]: true,\n [this.TEXT_WRAP_STRING]:\n columnProps?.textWrap ||\n rowOptions?.textWrap ||\n !!this.getCellOptions(cell, \"textWrap\"),\n [\"cell-icon\"]: hasIcon || !!columnProps?.icon?.icon,\n ...this.setTruncationClass(),\n }}\n style={{\n ...this.getRowHeight(\n currentRowHeight,\n columnProps,\n rowOptions?.textWrap,\n cell\n ),\n ...this.getColumnWidth(columnProps?.columnWidth),\n }}\n data-row-height={\n this.truncationPattern || currentRowHeight\n ? this.setRowHeight(currentRowHeight)\n : null\n }\n >\n {isSlotUsed(this.el, cellSlotName) ? (\n <slot name={cellSlotName} />\n ) : (\n <Fragment>\n {isSlotUsed(this.el, `${cellSlotName}-icon`) ? (\n <slot name={`${cellSlotName}-icon`} />\n ) : (\n (hasIcon || columnProps?.icon?.onAllCells) &&\n (cellValue(\"icon\") || columnProps?.icon?.icon) && (\n <span\n class=\"icon\"\n innerHTML={cellValue(\"icon\") || columnProps?.icon?.icon}\n ></span>\n )\n )}\n {columnProps?.dataType !== \"element\" &&\n !isSlotUsed(this.el, cellSlotName) && (\n <ic-typography\n variant=\"body\"\n class={{\n [`cell-emphasis-${\n (this.isObject(cell) && cellValue(\"emphasis\")) ||\n columnProps?.emphasis ||\n rowEmphasis\n }`]:\n (this.isObject(cell) && !!cellValue(\"emphasis\")) ||\n !!columnProps?.emphasis ||\n !!rowEmphasis,\n [`text-${this.density}`]: this.notDefaultDensity(),\n }}\n >\n {this.isObject(cell) && columnProps?.dataType !== \"date\" ? (\n Object.keys(cell).includes(\"href\") ? (\n <ic-link\n href={cellValue(\"href\")}\n target={cellValue(\"target\") || undefined}\n rel={cellValue(\"rel\") || undefined}\n >\n {cellValue(\"data\")}\n </ic-link>\n ) : (\n cellValue(\"data\")\n )\n ) : (\n this.getCellContent(cell, columnProps?.dataType)\n )}\n </ic-typography>\n )}\n </Fragment>\n )}\n </div>\n );\n\n private createCells = (row: IcDataTableDataType, rowIndex: number) => {\n const rowValues = Object.values(row);\n const rowKeys = Object.keys(row);\n\n const rowOptions = this.getRowOptions(rowKeys, rowValues);\n let rowAlignment: string;\n let rowEmphasis: string;\n\n const headerIndex = rowKeys.indexOf(\"header\");\n if (headerIndex > -1) {\n rowAlignment = this.getObjectValue(\n rowValues[headerIndex],\n \"rowAlignment\"\n );\n rowEmphasis = this.getObjectValue(rowValues[headerIndex], \"emphasis\");\n }\n\n const variableRowHeightVal = this.variableRowHeight?.({\n ...row,\n index: rowIndex,\n });\n const currentRowHeight = variableRowHeightVal\n ? variableRowHeightVal !== \"auto\" && variableRowHeightVal\n : this.globalRowHeight !== \"auto\" && this.globalRowHeight;\n\n return rowValues.map((cell, index) => {\n const columnProps = this.columns[index];\n const cellSlotName = `${columnProps?.key}-${rowIndex}`;\n const hasIcon = this.isObject(cell) && Object.keys(cell).includes(\"icon\");\n const cellValue = (key: string) => this.getObjectValue(cell, key);\n\n if (rowKeys[index] === \"header\") {\n return (\n <th\n scope=\"row\"\n colSpan={cellValue(\"colspan\")}\n class={{\n [\"row-header\"]: true,\n [`row-header-alignment-${cellValue(\"cellAlignment\")}`]:\n !!cellValue(\"cellAlignment\"),\n [\"row-header-sticky\"]: this.stickyRowHeaders,\n }}\n >\n {cellValue(\"title\")}\n </th>\n );\n }\n\n if (rowKeys[index] !== \"rowOptions\") {\n return (\n <td\n class={{\n [\"table-cell\"]: true,\n [`table-density-${this.density}`]: this.notDefaultDensity(),\n [\"with-overflow\"]: columnProps?.dataType === \"element\",\n }}\n style={{ ...this.getColumnWidth(columnProps.columnWidth) }}\n >\n {this.isObject(cell) &&\n Object.keys(cell).includes(\"actionElement\") ? (\n <div class=\"cell-grid-wrapper\">\n {this.createCellContent(\n columnProps,\n cell,\n cellSlotName,\n rowOptions,\n rowAlignment,\n hasIcon,\n currentRowHeight,\n cellValue,\n rowEmphasis\n )}\n <span\n class=\"action-element\"\n innerHTML={cellValue(\"actionElement\")}\n ></span>\n </div>\n ) : (\n this.createCellContent(\n columnProps,\n cell,\n cellSlotName,\n rowOptions,\n rowAlignment,\n hasIcon,\n currentRowHeight,\n cellValue,\n rowEmphasis\n )\n )}\n </td>\n );\n }\n });\n };\n\n private createColumnHeaders = () =>\n this.columns.map(\n ({ cellAlignment, colspan, icon, key, title, columnWidth }, index) => (\n <th\n scope=\"col\"\n class={{\n [\"column-header\"]: true,\n [`table-density-${this.density}`]: this.notDefaultDensity(),\n [\"updating-state-headers\"]: this.updating && !this.loading,\n }}\n style={{ ...this.getColumnWidth(columnWidth) }}\n colSpan={colspan}\n >\n <div\n class={{\n \"column-header-inner-container\": true,\n \"truncation-tooltip\": this.columnHeaderTruncation,\n [`column-header-alignment-${cellAlignment}`]: !!cellAlignment,\n }}\n >\n {isSlotUsed(this.el, `${key}-column-icon`) ? (\n <slot name={`${key}-column-icon`} />\n ) : (\n icon &&\n !icon.hideOnHeader && (\n <span class=\"icon\" innerHTML={icon.icon}></span>\n )\n )}\n {this.columnHeaderTruncation ? (\n <ic-tooltip label={title} target={`column-header-${index}`}>\n <ic-typography\n id={`column-header-${index}`}\n variant=\"body\"\n class={{\n [\"column-header-text\"]: true,\n [`text-${this.density}`]: this.notDefaultDensity(),\n }}\n >\n {title}\n </ic-typography>\n </ic-tooltip>\n ) : (\n <ic-typography\n variant=\"body\"\n class={{\n [\"column-header-text\"]: true,\n [`text-${this.density}`]: this.notDefaultDensity(),\n }}\n >\n {title}\n </ic-typography>\n )}\n {this.sortable && (\n <ic-button\n variant=\"icon\"\n id={`sort-button-${key}`}\n aria-label={this.getSortButtonLabel(key)}\n // eslint-disable-next-line react/jsx-no-bind\n onClick={() => this.sortRows(key)}\n innerHTML={\n this.SORT_ICONS[\n this.sortedColumn === key\n ? this.sortedColumnOrder\n : \"unsorted\"\n ]\n }\n class={{\n [\"sort-button\"]: true,\n [\"sort-button-unsorted\"]:\n this.sortedColumn !== key ||\n this.sortedColumnOrder === \"unsorted\",\n }}\n ></ic-button>\n )}\n </div>\n {this.columnHeaderTruncation && (\n <ic-typography\n variant=\"body\"\n aria-hidden=\"true\"\n class={{\n [\"column-header-text\"]: true,\n [\"dummy-column-header-text\"]: this.columnHeaderTruncation,\n [`text-${this.density}`]: this.notDefaultDensity(),\n }}\n >\n {title}\n </ic-typography>\n )}\n </th>\n )\n );\n\n private onRowClick = (row: object) => {\n this.selectedRow =\n this.selectedRow !== row && !this.loading && !this.updating && row;\n };\n\n private createRows = () => {\n const data = this.showPagination\n ? this.data.slice(this.fromRow, this.toRow)\n : this.data.slice();\n\n /**\n * Ensures that createCells has a value in data to map over to actually render the slot.\n * Removes the need for the user to add it multiple times.\n * `addDataToPosition` used to add the element in the correct column order.\n * Adding empty string value in to give `createCells` something to loop over.\n */\n const organisedData = data.map((row, rowIndex) => {\n const slottedColumns = this.columns\n .map(\n ({ key }, index) =>\n isSlotUsed(this.el, `${key}-${rowIndex}`) && { key, index }\n )\n .filter(\n (col) =>\n !!col &&\n // skip the column if its already in the row\n !Object.prototype.hasOwnProperty.call(row, col.key)\n );\n return slottedColumns.length > 0\n ? addDataToPosition(row, slottedColumns, \"\")\n : row;\n });\n\n return organisedData\n .sort(!this.sortable ? undefined : this.getSortFunction())\n .map((row, index) => {\n return (\n <tr\n // eslint-disable-next-line react/jsx-no-bind\n onClick={() => this.onRowClick(row)}\n class={{\n [\"table-row\"]: true,\n [\"table-row-selected\"]: this.selectedRow === row,\n }}\n >\n {this.createCells(row, index)}\n </tr>\n );\n });\n };\n\n private getObjectValue = (cell: object, key: string) => {\n return Object.values(cell)[Object.keys(cell).indexOf(key)];\n };\n\n private getSortButtonLabel = (key: string) => {\n let label = \"\";\n const getNextSortOption = (option: IcDataTableSortOrderOptions) => {\n const sortOrders = this.sortOptions.sortOrders;\n return sortOrders[(sortOrders.indexOf(option) + 1) % sortOrders.length];\n };\n\n if (this.sortedColumn === key) {\n const sortOption = getNextSortOption(this.sortedColumnOrder);\n label = sortOption !== \"unsorted\" ? `Sort ${sortOption}` : \"Remove sort\";\n } else {\n label = `Sort ${getNextSortOption(\"unsorted\")}`;\n }\n\n return label;\n };\n\n private getComparison = (targetRow: any, comparisonRow: any): number => {\n const targetRowValue = targetRow[this.sortedColumn];\n const comparisonRowValue = comparisonRow[this.sortedColumn];\n return this.columns.find((col) => col.key === this.sortedColumn)\n .dataType === \"date\"\n ? new Date(targetRowValue).valueOf() -\n new Date(comparisonRowValue).valueOf()\n : String(\n this.isObject(targetRowValue)\n ? Object.values(targetRowValue)[0]\n : targetRowValue\n ).localeCompare(\n String(\n this.isObject(comparisonRowValue)\n ? Object.values(comparisonRowValue)[0]\n : comparisonRowValue\n ),\n undefined,\n { numeric: true, sensitivity: \"base\" }\n );\n };\n\n private getSortFunction = () => {\n switch (this.sortedColumnOrder) {\n case \"ascending\":\n return (a: any, b: any) => this.getComparison(a, b);\n case \"descending\":\n return (a: any, b: any) => this.getComparison(b, a);\n default:\n return undefined;\n }\n };\n\n private sortRows = (column: string) => {\n const sortButton = this.el.shadowRoot.querySelector(\n `#sort-button-${column}`\n ) as HTMLIcButtonElement;\n\n const sortOrders = this.sortOptions.sortOrders;\n\n if (column !== this.sortedColumn) {\n if (this.sortedColumn) {\n const previousSortedButton = this.el.shadowRoot.querySelector(\n `#sort-button-${this.sortedColumn}`\n ) as HTMLIcButtonElement;\n previousSortedButton.setAttribute(\n \"aria-label\",\n this.getSortButtonLabel(column)\n ); // Passing through unsorted column returns correct label for newly unsorted column\n }\n this.sortedColumn = column;\n this.sortedColumnOrder = \"unsorted\";\n }\n\n let nextSortOrderIndex = sortOrders.indexOf(this.sortedColumnOrder) + 1;\n\n if (nextSortOrderIndex > sortOrders.length - 1) {\n nextSortOrderIndex = 0;\n }\n\n this.sortedColumnOrder = sortOrders[nextSortOrderIndex];\n\n sortButton.setAttribute(\"aria-label\", this.getSortButtonLabel(column));\n\n this.tableSorted = true;\n\n this.icSortChange.emit({\n columnName: column,\n sorted: this.sortedColumnOrder,\n });\n };\n\n private getTypographyElements = (): HTMLIcTypographyElement[] => {\n return Array.from(\n this.el.shadowRoot.querySelectorAll(\n \"ic-typography:not(.column-header-text)\"\n )\n );\n };\n\n private getTooltip = (\n typographyEl: HTMLIcTypographyElement\n ): HTMLIcTooltipElement => {\n return typographyEl.closest(this.TOOLTIP);\n };\n\n private updateTruncationTooltip = (removeTooltipOnly = false) => {\n this.getTypographyElements().forEach(\n (typographyEl: HTMLIcTypographyElement) => {\n const tooltip = this.getTooltip(typographyEl);\n const cellContainer = this.getCellContainer(typographyEl);\n\n if (typographyEl.closest(this.TEXT_WRAP_CLASS)) {\n this.removeTooltip(cellContainer, typographyEl, tooltip);\n typographyEl.setAttribute(\"style\", `--ic-line-clamp: 0`);\n return;\n }\n\n this.regenerateTooltip(\n cellContainer,\n typographyEl,\n tooltip,\n removeTooltipOnly\n );\n }\n );\n };\n\n private updateScrollOffset = () => {\n this.scrollOffset = this.el.shadowRoot.querySelector(\n \".table-row-container\"\n ).scrollTop;\n };\n\n private getRowOptions(rowKeys: string[], rowValues: any[]) {\n const rowOptionsIndex = rowKeys.indexOf(\"rowOptions\");\n return rowOptionsIndex > -1 && rowValues[rowOptionsIndex];\n }\n\n private regenerateTooltip(\n cellContainer: HTMLElement,\n typographyEl: HTMLIcTypographyElement,\n tooltip: HTMLIcTooltipElement,\n removeTooltipOnly?: boolean\n ) {\n // When sorting the table, instead of regenerating the tooltip,\n // the tooltip details are updated\n\n if (tooltip) {\n if (this.tableSorted) {\n tooltip.setAttribute(\"target\", typographyEl.id);\n tooltip.setAttribute(\"label\", typographyEl.textContent);\n } else {\n this.removeTooltip(cellContainer, typographyEl, tooltip);\n }\n if (removeTooltipOnly) {\n return;\n }\n }\n\n // This add line clamp to data only when\n // the data object has been updated\n if (!typographyEl.getAttribute(\"style\") && this.dataUpdated) {\n this.addLineClampCSS(typographyEl, cellContainer);\n }\n\n if (\n typographyEl?.scrollHeight > cellContainer?.clientHeight &&\n this.truncationPattern === this.TOOLTIP_STRING\n ) {\n if (\n !typographyEl.getAttribute(\"style\") ||\n typographyEl.style.cssText.includes(\"--ic-line-clamp: 0;\")\n ) {\n this.addLineClampCSS(typographyEl, cellContainer);\n }\n this.createTruncationTooltip(typographyEl, cellContainer);\n }\n }\n private setTableDimensions = () => {\n let tableHostDimensions = {};\n\n if (this.width) {\n tableHostDimensions = {\n ...tableHostDimensions,\n [\"--table-width\"]: this.width,\n };\n }\n\n if (this.height) {\n tableHostDimensions = {\n ...tableHostDimensions,\n [\"--table-height\"]: this.height,\n };\n }\n\n if (this.maxWidth) {\n tableHostDimensions = {\n ...tableHostDimensions,\n [\"--table-max-width\"]: this.maxWidth,\n };\n }\n\n if (this.minWidth) {\n tableHostDimensions = {\n ...tableHostDimensions,\n [\"--table-min-width\"]: this.minWidth,\n };\n }\n\n return tableHostDimensions;\n };\n\n private removeTooltip(\n cellContainer: HTMLElement,\n typographyEl: HTMLIcTypographyElement,\n tooltip: HTMLIcTooltipElement\n ) {\n cellContainer.appendChild(typographyEl);\n if (tooltip) {\n tooltip.remove();\n }\n }\n\n private addLineClampCSS(\n typographyEl: HTMLIcTypographyElement,\n cellContainer: HTMLElement\n ) {\n typographyEl.setAttribute(\n \"style\",\n `--ic-line-clamp: ${this.getLines(cellContainer?.clientHeight)}`\n );\n }\n\n private createTruncationTooltip(\n typographyEl: HTMLIcTypographyElement,\n cellContainer: HTMLElement\n ) {\n const tooltipEl = document.createElement(\n this.IC_TOOLTIP_STRING\n ) as HTMLIcTooltipElement;\n tooltipEl.setAttribute(\"target\", typographyEl.id);\n tooltipEl.setAttribute(\"label\", typographyEl.textContent);\n tooltipEl.classList.add(\"ic-tooltip-overflow\");\n tooltipEl.setExternalPopperProps({\n // This might need reverting back to absolute if the tooltip doesn't dynamically position itself correctly\n strategy: \"fixed\",\n });\n cellContainer.appendChild(tooltipEl);\n tooltipEl.appendChild(typographyEl);\n }\n\n private fixCellTooltips = () => {\n const elements = this.el.shadowRoot.querySelectorAll(\".data-type-element\");\n elements.forEach((element) => {\n const slotElements = getSlotElements(element);\n slotElements.forEach((slottedEl: HTMLElement) => {\n const tooltipEl = (\n slottedEl.tagName === \"IC-TOOLTIP\"\n ? slottedEl\n : slottedEl.shadowRoot?.querySelector(this.IC_TOOLTIP_STRING)\n ) as HTMLIcTooltipElement;\n if (tooltipEl) {\n tooltipEl.setExternalPopperProps({\n strategy: \"fixed\",\n });\n }\n });\n });\n };\n\n render() {\n const {\n caption,\n createColumnHeaders,\n createRows,\n createUpdatingIndicator,\n data,\n hideColumnHeaders,\n loading,\n loadingOptions,\n paginationBarOptions,\n scrollable,\n scrollOffset,\n showPagination,\n sortable,\n sortedColumnOrder,\n sortedColumn,\n stickyColumnHeaders,\n updateScrollOffset,\n updating,\n } = this;\n\n return (\n <Host style={{ ...this.setTableDimensions() }}>\n <div class=\"table-container\">\n {isSlotUsed(this.el, \"title-bar\") && <slot name=\"title-bar\" />}\n <div\n class={{\n [\"table-row-container\"]: true,\n scrollable,\n }}\n tabIndex={scrollable ? 0 : null}\n onScroll={updateScrollOffset}\n >\n {isSlotUsed(this.el, \"title-bar\") && <slot name=\"title-bar\" />}\n <table\n style={{\n [\"--table-layout\"]: this.tableLayout,\n }}\n >\n <caption class=\"table-caption\">{caption}</caption>\n {!hideColumnHeaders && (\n <thead\n class={{\n [\"column-header-sticky\"]: stickyColumnHeaders,\n [\"column-header-overlay\"]:\n stickyColumnHeaders && scrollOffset !== 0,\n }}\n >\n <tr>{createColumnHeaders()}</tr>\n </thead>\n )}\n {updating &&\n !loading &&\n (hideColumnHeaders ? (\n <thead>{createUpdatingIndicator()}</thead>\n ) : (\n createUpdatingIndicator()\n ))}\n {data?.length > 0 && !loading && <tbody>{createRows()}</tbody>}\n </table>\n {!data?.length &&\n !loading &&\n (isSlotUsed(this.el, \"empty-state\") ? (\n <slot name=\"empty-state\" />\n ) : (\n <ic-empty-state\n aligned=\"center\"\n heading=\"No Data\"\n class=\"loading-empty\"\n ></ic-empty-state>\n ))}\n </div>\n {loading && (\n <ic-loading-indicator\n appearance={loadingOptions?.appearance}\n class={{\n \"loading-empty\": loading,\n loading: true,\n \"show-background\": loadingOptions.showBackground,\n }}\n description={loadingOptions.description || \"Loading table data\"}\n label={loadingOptions.label || \"Loading...\"}\n labelDuration={loadingOptions?.labelDuration}\n max={loadingOptions?.max}\n min={loadingOptions?.min}\n progress={loadingOptions?.progress}\n ref={(el: HTMLIcLoadingIndicatorElement) =>\n (this.loadingIndicator = el)\n }\n ></ic-loading-indicator>\n )}\n {(showPagination || isSlotUsed(this.el, \"pagination-bar\")) && (\n <div class=\"pagination-container\">\n {isSlotUsed(this.el, \"pagination-bar\") ? (\n <slot name=\"pagination-bar\" />\n ) : (\n <ic-pagination-bar\n totalItems={data?.length ?? 0}\n type={paginationBarOptions.type}\n rangeLabelType={paginationBarOptions.rangeLabelType}\n showItemsPerPageControl={\n paginationBarOptions.showItemsPerPageControl\n }\n showGoToPageControl={paginationBarOptions.showGoToPageControl}\n itemsPerPageOptions={paginationBarOptions.itemsPerPageOptions}\n alignment={paginationBarOptions.alignment}\n appearance={paginationBarOptions.appearance}\n itemLabel={paginationBarOptions.itemLabel}\n pageLabel={paginationBarOptions.pageLabel}\n hideRangeLabel={paginationBarOptions.hideRangeLabel}\n hideAllFromItemsPerPage={\n paginationBarOptions.hideAllFromItemsPerPage\n }\n ></ic-pagination-bar>\n )}\n </div>\n )}\n {sortable && (\n <div class=\"screen-reader-sort-text\" aria-live=\"polite\">\n {sortedColumnOrder !== \"unsorted\" && sortedColumn\n ? `${sortedColumn} sorted ${sortedColumnOrder}`\n : \"table unsorted\"}\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{r as i,c as e,h as s,F as t,H as c,g as n}from"./p-8455d1bb.js";import{C as o}from"./p-0aa9ce8b.js";import{a}from"./p-3a3a8a71.js";import{c as r}from"./p-aae38bee.js";import"./p-fd186591.js";const h='html.sc-ic-menu{line-height:1.15;-webkit-text-size-adjust:100%}body.sc-ic-menu{margin:0}main.sc-ic-menu{display:block}h1.sc-ic-menu{font-size:2em;margin:0.67em 0}hr.sc-ic-menu{box-sizing:content-box;height:0;overflow:visible}pre.sc-ic-menu{font-family:monospace, monospace;font-size:1em}a.sc-ic-menu{background-color:transparent}abbr[title].sc-ic-menu{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b.sc-ic-menu,strong.sc-ic-menu{font-weight:bolder}code.sc-ic-menu,kbd.sc-ic-menu,samp.sc-ic-menu{font-family:monospace, monospace;font-size:1em}small.sc-ic-menu{font-size:80%}sub.sc-ic-menu,sup.sc-ic-menu{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub.sc-ic-menu{bottom:-0.25em}sup.sc-ic-menu{top:-0.5em}img.sc-ic-menu{border-style:none}button.sc-ic-menu,input.sc-ic-menu,optgroup.sc-ic-menu,select.sc-ic-menu,textarea.sc-ic-menu{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button.sc-ic-menu,input.sc-ic-menu{overflow:visible}button.sc-ic-menu,select.sc-ic-menu{text-transform:none}button.sc-ic-menu,[type="button"].sc-ic-menu,[type="reset"].sc-ic-menu,[type="submit"].sc-ic-menu{-webkit-appearance:button}button.sc-ic-menu::-moz-focus-inner,[type="button"].sc-ic-menu::-moz-focus-inner,[type="reset"].sc-ic-menu::-moz-focus-inner,[type="submit"].sc-ic-menu::-moz-focus-inner{border-style:none;padding:0}button.sc-ic-menu:-moz-focusring,[type="button"].sc-ic-menu:-moz-focusring,[type="reset"].sc-ic-menu:-moz-focusring,[type="submit"].sc-ic-menu:-moz-focusring{outline:1px dotted ButtonText}fieldset.sc-ic-menu{padding:0.35em 0.75em 0.625em}legend.sc-ic-menu{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress.sc-ic-menu{vertical-align:baseline}textarea.sc-ic-menu{overflow:auto}[type="checkbox"].sc-ic-menu,[type="radio"].sc-ic-menu{box-sizing:border-box;padding:0}[type="number"].sc-ic-menu::-webkit-inner-spin-button,[type="number"].sc-ic-menu::-webkit-outer-spin-button{height:auto}[type="search"].sc-ic-menu{-webkit-appearance:textfield;outline-offset:-2px}[type="search"].sc-ic-menu::-webkit-search-decoration{-webkit-appearance:none}.sc-ic-menu::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details.sc-ic-menu{display:block}summary.sc-ic-menu{display:list-item}template.sc-ic-menu{display:none}[hidden].sc-ic-menu{display:none}html.sc-ic-menu,body.sc-ic-menu,div.sc-ic-menu,span.sc-ic-menu,applet.sc-ic-menu,object.sc-ic-menu,iframe.sc-ic-menu,h1.sc-ic-menu,h2.sc-ic-menu,h3.sc-ic-menu,h4.sc-ic-menu,h5.sc-ic-menu,h6.sc-ic-menu,p.sc-ic-menu,blockquote.sc-ic-menu,pre.sc-ic-menu,a.sc-ic-menu,abbr.sc-ic-menu,acronym.sc-ic-menu,address.sc-ic-menu,big.sc-ic-menu,cite.sc-ic-menu,code.sc-ic-menu,del.sc-ic-menu,dfn.sc-ic-menu,em.sc-ic-menu,img.sc-ic-menu,ins.sc-ic-menu,kbd.sc-ic-menu,q.sc-ic-menu,s.sc-ic-menu,samp.sc-ic-menu,small.sc-ic-menu,strike.sc-ic-menu,strong.sc-ic-menu,sub.sc-ic-menu,sup.sc-ic-menu,tt.sc-ic-menu,var.sc-ic-menu,b.sc-ic-menu,u.sc-ic-menu,i.sc-ic-menu,center.sc-ic-menu,dl.sc-ic-menu,dt.sc-ic-menu,dd.sc-ic-menu,ol.sc-ic-menu,ul.sc-ic-menu,li.sc-ic-menu,fieldset.sc-ic-menu,form.sc-ic-menu,label.sc-ic-menu,legend.sc-ic-menu,table.sc-ic-menu,caption.sc-ic-menu,tbody.sc-ic-menu,tfoot.sc-ic-menu,thead.sc-ic-menu,tr.sc-ic-menu,th.sc-ic-menu,td.sc-ic-menu,article.sc-ic-menu,aside.sc-ic-menu,canvas.sc-ic-menu,details.sc-ic-menu,embed.sc-ic-menu,figure.sc-ic-menu,figcaption.sc-ic-menu,footer.sc-ic-menu,header.sc-ic-menu,hgroup.sc-ic-menu,menu.sc-ic-menu,nav.sc-ic-menu,output.sc-ic-menu,ruby.sc-ic-menu,section.sc-ic-menu,summary.sc-ic-menu,time.sc-ic-menu,mark.sc-ic-menu,audio.sc-ic-menu,video.sc-ic-menu{margin:0;padding:0;border:0;font-size:100%;font-style:inherit;vertical-align:baseline}@media (prefers-reduced-motion: no-preference){.open.sc-ic-menu-h .menu.sc-ic-menu{transition:max-height var(--ic-transition-duration-slow)}}.sc-ic-menu-h{border-radius:var(--ic-border-radius);max-height:0;width:var(--input-width, 20rem);color:var(--ic-color-primary-text);background-color:var(--ic-architectural-white);position:relative;z-index:var(--ic-z-index-menu);box-sizing:border-box;box-shadow:var(--ic-elevation-overlay)}.sc-ic-menu-h:not(.no-focus):focus-within{box-shadow:var(--ic-border-focus)}#retry-button.sc-ic-menu::part(button){height:var(--ic-space-lg)}.small.sc-ic-menu #retry-button.sc-ic-menu::part(button){height:var(--ic-space-md)}.on-dialog.sc-ic-menu-h{inset:auto !important}.menu.sc-ic-menu{text-decoration:none;list-style-type:none;border:var(--ic-border-width) solid var(--ic-architectural-400);border-radius:var(--ic-border-radius);background-color:var(--ic-architectural-white);visibility:hidden;max-height:0;overflow-y:hidden}.menu-scroll.sc-ic-menu{overflow-y:auto}.menu.sc-ic-menu:focus-visible{outline:none}.open.sc-ic-menu-h{max-height:none;display:block}.open.sc-ic-menu-h .menu.sc-ic-menu{visibility:visible;max-height:calc(var(--ic-space-xl) * 10 + var(--ic-space-xxxs))}.full-width.sc-ic-menu-h{width:100%}.option.sc-ic-menu{padding:var(--ic-space-xs) calc(var(--ic-space-xs) - var(--ic-space-1px));cursor:pointer;display:flex;align-items:center;overflow-wrap:anywhere}.option.sc-ic-menu:not(.loading-option){justify-content:space-between}.small.sc-ic-menu-h .option.sc-ic-menu{padding:var(--ic-space-xxs) calc(var(--ic-space-xs) - var(--ic-space-1px))}.large.sc-ic-menu-h .option.sc-ic-menu{padding:var(--ic-space-sm) calc(var(--ic-space-xs) - var(--ic-space-1px))}.option.sc-ic-menu:last-child{border-radius:0 0 var(--ic-space-1px) var(--ic-space-1px)}.option.sc-ic-menu:first-child{border-radius:var(--ic-space-1px) var(--ic-space-1px) 0 0}.option.sc-ic-menu:not(.disabled-option):hover{background-color:var(--ic-action-dark-bg-hover)}.option.sc-ic-menu:not(.disabled-option):active{background-color:var(--ic-action-dark-bg-active)}.option.sc-ic-menu:focus-visible{outline:var(--ic-hc-focus-outline)}.option.sc-ic-menu:not(.disabled-option) .option-description.sc-ic-menu{color:var(--ic-color-secondary-text)}.option.sc-ic-menu .option-label.sc-ic-menu{display:flex;flex-direction:row;align-items:top}.option.sc-ic-menu .option-element.sc-ic-menu{margin-top:var(--ic-space-xxs)}.option.sc-ic-menu .option-icon.sc-ic-menu{height:var(--ic-space-md);width:var(--ic-space-md);margin-top:var(--ic-space-xxs);margin-right:var(--ic-space-xxxs)}.option-text-container.sc-ic-menu{pointer-events:none}.option.loading-option.sc-ic-menu .option-text-container.sc-ic-menu{margin-left:calc(var(--ic-space-xs) + var(--ic-space-xxxs));color:var(--ic-color-secondary-text)}.error-icon-svg.sc-ic-menu{height:var(--ic-space-md);width:var(--ic-space-md);fill:var(--ic-status-error);align-self:center;display:flex;margin-right:calc(var(--ic-space-xxs) * 1.2)}.loading-error-info.sc-ic-menu{display:flex}.check-icon.sc-ic-menu{height:var(--ic-space-lg);width:var(--ic-space-lg);margin-left:var(--ic-space-xs);pointer-events:none}.focused-option.sc-ic-menu .check-icon.sc-ic-menu *.sc-ic-menu{fill:currentcolor}.option-group-title.sc-ic-menu{padding:var(--ic-space-lg) calc(var(--ic-space-xs) - var(--ic-space-1px))\n var(--ic-space-xs);color:var(--ic-color-tertiary-text)}.small.sc-ic-menu-h .option-group-title.sc-ic-menu{padding:var(--ic-space-sm) calc(var(--ic-space-xs) - var(--ic-space-1px))\n var(--ic-space-xxs)}.last-recommended-option.sc-ic-menu{border-bottom:var(--ic-border-default)}.disabled-option.sc-ic-menu{color:var(--ic-architectural-200);cursor:default;pointer-events:none}.focused-option.sc-ic-menu,.focused-option.sc-ic-menu .option-description.sc-ic-menu{background-color:var(--ic-focus-blue) !important;color:var(--ic-color-white-text) !important}.no-results.sc-ic-menu-h li.sc-ic-menu{cursor:no-drop}.no-results.sc-ic-menu-h li.sc-ic-menu:hover{background-color:transparent}@media (forced-colors: active){.focused-option.sc-ic-menu:focus{outline:none;border:0.125rem solid transparent}}';const u=class{constructor(c){i(this,c);this.menuKeyPress=e(this,"menuKeyPress",7);this.menuOptionId=e(this,"menuOptionId",7);this.menuOptionSelect=e(this,"menuOptionSelect",7);this.menuStateChange=e(this,"menuStateChange",7);this.menuValueChange=e(this,"menuValueChange",7);this.retryButtonClicked=e(this,"retryButtonClicked",7);this.timeoutBlur=e(this,"timeoutBlur",7);this.ungroupedOptionsSet=e(this,"ungroupedOptionsSet",7);this.disabledOptionSelected=false;this.hasPreviouslyBlurred=false;this.hasTimedOut=false;this.isLoading=false;this.isSearchBar=false;this.isSearchableSelect=false;this.preventClickOpen=false;this.ungroupedOptions=[];this.handleClearListener=()=>{this.optionHighlighted=""};this.handleSubmitSearch=()=>{const i=this.options.findIndex((i=>i[this.valueField]===this.optionHighlighted));this.setInputValue(i)};this.handleMenuChange=(i,e)=>{this.menuStateChange.emit({open:i,focusInput:e});if(!i&&e!==false){this.inputEl.focus();this.preventClickOpen=false}};this.setNextOptionValue=i=>{if(this.ungroupedOptions[i+1]){this.menuOptionSelect.emit({value:this.ungroupedOptions[i+1][this.valueField],optionId:this.getOptionId(this.ungroupedOptions[i+1][this.valueField])})}else{this.menuOptionSelect.emit({value:this.ungroupedOptions[0][this.valueField],optionId:this.getOptionId(this.ungroupedOptions[0][this.valueField])})}};this.setPreviousOptionValue=i=>{if(this.ungroupedOptions[i-1]){this.menuOptionSelect.emit({value:this.ungroupedOptions[i-1][this.valueField],optionId:this.getOptionId(this.ungroupedOptions[i-1][this.valueField])})}else{this.menuOptionSelect.emit({value:this.ungroupedOptions[this.ungroupedOptions.length-1][this.valueField],optionId:this.getOptionId(this.ungroupedOptions[this.ungroupedOptions.length-1][this.valueField])})}};this.getParentEl=i=>{if(i.tagName==="IC-SEARCH-BAR"){this.isSearchBar=true}else if(i.tagName==="IC-SELECT"&&i.getAttribute("searchable")!==null&&i.getAttribute("searchable")!==undefined){this.isSearchableSelect=true}};this.arrowBehaviour=i=>{i.preventDefault();this.handleMenuChange(true)};this.setMenuOptions=()=>this.isSearchBar?this.options:this.ungroupedOptions;this.setHighlightedOption=i=>{const e=this.setMenuOptions();e[i]&&!e[i].timedOut&&(this.optionHighlighted=e[i][this.valueField]||undefined)};this.autoSetInputValueKeyboardOpen=i=>{const e=this.ungroupedOptions.findIndex((i=>i[this.valueField]===this.value));this.keyboardNav=false;switch(i.key){case"ArrowDown":this.keyboardNav=true;this.arrowBehaviour(i);this.setNextOptionValue(e);break;case"ArrowUp":this.keyboardNav=true;this.arrowBehaviour(i);this.setPreviousOptionValue(e);break;case" ":case"Enter":if(i.target.id!=="clear-button"){this.handleMenuChange(true)}break}};this.manSetInputValueKeyboardOpen=i=>{const e=this.setMenuOptions();const s=e.findIndex((i=>i[this.valueField]===this.optionHighlighted));const t=i=>{var e;return(e=Array.from(this.host.querySelectorAll("li"))[i])===null||e===void 0?void 0:e.id};const c=this.isSearchBar||this.isSearchableSelect||this.open;switch(i.key){case"ArrowDown":this.keyboardNav=true;this.arrowBehaviour(i);if(s<e.length-1){this.setHighlightedOption(s+1);this.menuOptionId.emit({optionId:t(s+1)})}else{this.setHighlightedOption(0);this.menuOptionId.emit({optionId:t(0)})}this.preventIncorrectTabOrder=false;this.focusFromSearchKeypress=false;break;case"ArrowUp":this.keyboardNav=true;this.arrowBehaviour(i);if(s<=0||s>e.length+1){this.setHighlightedOption(e.length-1);this.menuOptionId.emit({optionId:t(e.length-1)})}else{this.setHighlightedOption(s-1);this.menuOptionId.emit({optionId:t(s-1)})}this.preventIncorrectTabOrder=false;this.focusFromSearchKeypress=false;break;case"Home":this.keyboardNav=true;i.preventDefault();this.arrowBehaviour(i);this.setHighlightedOption(0);this.menuOptionId.emit({optionId:t(0)});break;case"End":this.keyboardNav=true;i.preventDefault();this.arrowBehaviour(i);this.setHighlightedOption(e.length-1);this.menuOptionId.emit({optionId:t(e.length-1)});break;case" ":this.keyboardNav=false;if(this.isSearchBar||this.isSearchableSelect){break}else{if(i.target.id!=="clear-button"){this.handleMenuChange(true)}}break;case"Enter":i.preventDefault();this.keyboardNav=false;if(c){if(s>=0){if(e[s]!==undefined){if(this.isSearchBar&&e[s].disabled===true){this.disabledOptionSelected=true}else{this.setInputValue(s);this.value=e[s][this.valueField]}}}else{this.setInputValue(s)}}else{this.handleMenuChange(true)}break;case"Escape":if(this.open){i.stopImmediatePropagation()}this.handleMenuChange(false);this.menuOptionId.emit({optionId:undefined});break;case"Shift":case"Tab":if(this.isSearchBar){this.keyboardNav=true}this.preventIncorrectTabOrder=true;break;default:this.keyboardNav=false;this.focusOnSearchOrSelectInput(e,s);break}};this.setInputValue=i=>{const e=this.setMenuOptions();if(e[i]!==undefined){this.menuOptionSelect.emit({value:e[i][this.valueField]});this.optionHighlighted=undefined;this.menuOptionId.emit({optionId:undefined})}if(!this.hasTimedOut)this.handleMenuChange(false);else this.parentEl.setFocus()};this.handleOptionClick=i=>{const{value:e,label:s}=i.target.dataset;this.menuOptionSelect.emit({value:e,label:s});this.handleMenuChange(false)};this.handleRetry=()=>{this.retryButtonClicked.emit({value:this.value})};this.handleRetryKeyDown=i=>{if(i.key==="Enter"||i.key===" "){i.preventDefault();this.retryButtonClicked.emit({value:this.value,keyPressed:i.key})}};this.handleBlur=i=>{if(i.relatedTarget!==this.inputEl){if(!this.menu.contains(i.relatedTarget)){this.handleMenuChange(false,this.hasPreviouslyBlurred)}}else{this.handleMenuChange(false);this.preventClickOpen=true}if(!this.isSearchBar)this.hasPreviouslyBlurred=!!i.relatedTarget};this.handleMouseDown=i=>{i.preventDefault()};this.handleMenuKeyDown=i=>{if(this.activationType==="automatic"){this.autoSetValueOnMenuKeyDown(i)}else if(this.activationType==="manual"&&!this.isSearchBar){this.manSetInputValueKeyboardOpen(i)}};this.emitMenuKeyPress=(i,e)=>{this.menuKeyPress.emit({isNavKey:i,key:e})};this.autoSetValueOnMenuKeyDown=i=>{i.cancelBubble=true;const e=this.ungroupedOptions.findIndex((i=>i[this.valueField]===this.value));const s=this.inputEl.tagName==="INPUT";this.keyboardNav=false;switch(i.key){case" ":i.preventDefault();break;case"ArrowUp":if(!this.hasTimedOut){i.preventDefault();this.setPreviousOptionValue(e);this.keyboardNav=true}break;case"ArrowDown":if(!this.hasTimedOut){i.preventDefault();this.setNextOptionValue(e);this.keyboardNav=true}break;case"Home":this.menuOptionSelect.emit({value:this.ungroupedOptions[0][this.valueField]});this.keyboardNav=true;break;case"End":this.menuOptionSelect.emit({value:this.ungroupedOptions[this.ungroupedOptions.length-1][this.valueField]});this.keyboardNav=true;break;case"Enter":!this.hasTimedOut&&this.handleMenuChange(false);break;case"Escape":this.handleMenuChange(false);break;case"Backspace":if(s){this.inputEl.focus()}break;case"Shift":break;default:if(s&&i.key!=="Tab"&&!this.hasTimedOut){this.inputEl.focus()}if(i.key.length===1){this.keyboardNav=true}break}this.emitMenuKeyPress(this.keyboardNav,i.key)};this.handleMenuKeyUp=i=>{if(i.key==="Tab"&&i.shiftKey){this.preventClickOpen=false}if(i.key==="Enter"&&this.disabledOptionSelected){this.disabledOptionSelected=false;i.stopImmediatePropagation()}};this.getOptionId=i=>`${this.menuId}-${i}`;this.getOptionAriaLabel=(i,e)=>{let s=i[this.labelField];if(i.description){s=`${s}, ${i.description}`}if(i.element){s=`${s}, ${i.element.ariaLabel}`}if(e){return`${s}, ${e[this.labelField]} group`}else{return s}};this.getSortedOptions=i=>{let e=[];if(i.sort){e=i.sort(((i,e)=>i.recommended&&!e.recommended?-1:0))}return e};this.isManualMode=this.activationType==="manual";this.scrollToSelected=i=>{const e=this.selectOnEnter?this.host.querySelector(`li[data-value="${this.optionHighlighted}"]`):i.querySelector(".option[aria-selected='true']");if(e){const s=e.offsetTop+e.offsetHeight;if(s>i.scrollTop+i.offsetHeight||s<i.scrollTop+i.offsetHeight){i.scrollTop=e.offsetTop}e.focus()}};this.loadUngroupedOptions=()=>{if(this.options.length>0&&this.options.map){this.options.map((i=>{if(i.children){i.children.map((i=>!i.disabled&&this.ungroupedOptions.push(i)))}else if(!i.disabled){this.ungroupedOptions.push(i)}}))}this.ungroupedOptions=this.getSortedOptions(this.ungroupedOptions);this.ungroupedOptionsSet.emit({options:this.ungroupedOptions})};this.setMenuScrollbar=()=>{let i=0;this.host.querySelectorAll(".option").forEach((e=>i+=e.clientHeight));if(i>=320){this.menu.classList.add("menu-scroll")}};this.handleTimeoutBlur=i=>{this.timeoutBlur.emit({ev:i})};this.optionContent=i=>{var e;return s(t,null,i.loading&&s("ic-loading-indicator",{size:"icon"}),s("div",{class:"option-text-container"},s("div",{class:"option-label"},i.icon&&s("div",{class:"option-icon",innerHTML:i.icon,"aria-hidden":"true"}),s("ic-typography",{variant:"body","aria-hidden":"true"},i[this.labelField])),i.description&&s("ic-typography",{id:`${this.getOptionId(i[this.valueField])}-description`,class:"option-description",variant:"caption","aria-hidden":"true"},s("p",null,i.description)),i.element&&s("div",{class:"option-element",innerHTML:i.element.component,"aria-hidden":"true"})),!!i[this.valueField]&&!!this.value&&i[this.valueField].toLowerCase()===((e=this.value)===null||e===void 0?void 0:e.toLowerCase())&&this.parentEl.tagName!=="IC-SEARCH-BAR"&&s("span",{class:"check-icon",innerHTML:o}))};this.displayOption=(i,e,c)=>{const{open:n,value:o,keyboardNav:a,isManualMode:r,initialOptionsListRender:h,optionHighlighted:u,options:l}=this;return s("li",{id:this.getOptionId(i[this.valueField]),class:{option:true,"focused-option":r?(a||h)&&i[this.valueField]===u:a&&i[this.valueField]===o,"last-recommended-option":i.recommended&&l[e+1]&&!l[e+1].recommended,"disabled-option":i.disabled,"loading-option":i.loading,timeout:i.timedOut},role:"option",tabindex:n&&(i[this.valueField]===o||i[this.valueField]===u)&&a?"0":"-1","aria-label":this.getOptionAriaLabel(i,c),"aria-selected":`${i[this.valueField]===o}`,"aria-disabled":i.disabled?"true":"false",onClick:!i.timedOut&&!i.loading&&this.handleOptionClick,onBlur:this.handleBlur,onMouseDown:this.handleMouseDown,"data-value":i[this.valueField],"data-label":i[this.labelField]},i.timedOut?s(t,null,s("div",{class:"loading-error-info"},s("svg",{class:"error-icon-svg","aria-labelledby":"error-title",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"#000000"},s("title",{id:"error-title"},"Error"),s("g",{id:"close-octagon"},s("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"}))),s("ic-typography",{variant:"label"},i[this.labelField])),s("ic-button",{size:"small",variant:"tertiary",onClick:this.handleRetry,onKeyDown:this.handleRetryKeyDown,onBlur:this.handleTimeoutBlur,id:"retry-button"},"Retry")):this.optionContent(i))};this.focusFromSearchKeypress=false;this.initialOptionsListRender=false;this.keyboardNav=false;this.optionHighlighted=undefined;this.preventIncorrectTabOrder=false;this.activationType="automatic";this.anchorEl=undefined;this.autoFocusOnSelected=true;this.fullWidth=false;this.inputEl=undefined;this.inputLabel=undefined;this.labelField="label";this.menuId=undefined;this.open=undefined;this.parentEl=undefined;this.searchMode="navigation";this.selectOnEnter=false;this.size="default";this.small=false;this.options=undefined;this.value=undefined;this.valueField="value"}watchOpenHandler(){if(!this.open&&this.popperInstance){this.popperInstance.destroy();this.popperInstance=null}}watchOptionsHandler(i){this.hasTimedOut=i.some((i=>i.timedOut));this.isLoading=i.some((i=>i.loading));this.ungroupedOptions=[];this.loadUngroupedOptions()}watchValueHandler(){this.menuValueChange.emit({value:this.value})}connectedCallback(){this.getParentEl(this.parentEl);if(this.isSearchBar){if(this.searchMode==="navigation")this.setHighlightedOption(0);this.initialOptionsListRender=true}}disconnectedCallback(){var i,e;if(this.popperInstance){this.popperInstance.destroy()}(i=this.parentEl)===null||i===void 0?void 0:i.removeEventListener("icClear",this.handleClearListener);(e=this.parentEl)===null||e===void 0?void 0:e.removeEventListener("icSubmitSearch",this.handleSubmitSearch)}componentWillLoad(){var i,e;this.loadUngroupedOptions();this.parentEl.addEventListener("icClear",this.handleClearListener);this.parentEl.addEventListener("icSubmitSearch",this.handleSubmitSearch);this.hasTimedOut=(i=this.options)===null||i===void 0?void 0:i.some((i=>i.timedOut));this.isLoading=(e=this.options)===null||e===void 0?void 0:e.some((i=>i.loading))}componentDidLoad(){if(this.isSearchBar&&this.parentEl.disableFilter){this.focusFromSearchKeypress=true}a([{prop:this.open,propName:"open"},{prop:this.options,propName:"options"},{prop:this.menuId,propName:"menu-id"},{prop:this.inputLabel,propName:"input-label"}],"Menu")}componentDidUpdate(){const i=this.options.some((i=>i[this.valueField]===this.value));if(this.open&&this.options.length!==0){if(this.value&&this.keyboardNav&&i&&this.autoFocusOnSelected&&!this.isSearchableSelect){this.scrollToSelected(this.menu)}else if(this.inputEl.tagName!=="IC-TEXT-FIELD"&&this.inputEl.tagName!=="INPUT"){this.menu.focus()}else if(!!this.optionHighlighted&&!this.focusFromSearchKeypress&&!this.preventIncorrectTabOrder){const i=this.host.querySelector(`li[data-value="${this.optionHighlighted}"]`);if(i){i.focus()}}}if(this.open&&!this.value&&this.selectOnEnter){this.scrollToSelected(this.menu)}}componentDidRender(){if(this.open&&!this.popperInstance&&this.anchorEl){this.initPopperJs(this.anchorEl)}if(this.open&&!!this.options.length){this.setMenuScrollbar()}}async handleClickOpen(){if(!this.preventClickOpen){this.menuStateChange.emit({open:!this.open});this.keyboardNav=false}this.preventClickOpen=false}async handleKeyboardOpen(i){if(this.activationType==="automatic"){this.autoSetInputValueKeyboardOpen(i)}else{this.manSetInputValueKeyboardOpen(i)}}async handleSetFirstOption(){this.setHighlightedOption(0)}async initPopperJs(i){this.popperInstance=r(i,this.host,{placement:"bottom",modifiers:[{name:"offset",options:{offset:[0,7]}},{name:"flip",options:{fallbackPlacements:["top"],rootBoundary:"viewport"}}]})}focusOnSearchOrSelectInput(i,e){if(!i[e])return;if(this.isSearchBar){this.parentEl.setFocus();if(this.searchMode==="navigation")this.setHighlightedOption(0)}if(this.isSearchableSelect){this.parentEl.setFocus()}this.focusFromSearchKeypress=true}render(){const{inputLabel:i,options:e,menuId:t,value:n,fullWidth:o,hasTimedOut:a,isLoading:r,size:h,small:u,open:l,inputEl:m,keyboardNav:d}=this;return s(c,{class:{"full-width":o,"no-focus":(m===null||m===void 0?void 0:m.tagName)==="INPUT"||a||r,small:u,[h]:true,open:l}},e.length!==0&&s("ul",{id:t,class:"menu",role:"listbox","aria-label":i,"aria-activedescendant":n!=null&&n!==""?this.getOptionId(n):"",tabindex:l&&!d&&(m===null||m===void 0?void 0:m.tagName)!=="INPUT"?"0":"-1",ref:i=>this.menu=i,onKeyDown:this.handleMenuKeyDown,onKeyUp:this.handleMenuKeyUp,onBlur:this.handleBlur},this.getSortedOptions(e).map(((i,e)=>{if(i.children){if(i.children.length>0){return s("div",null,s("ic-typography",{class:"option-group-title",role:"presentation",variant:"subtitle-small"},s("p",null,i[this.labelField])),i.children.map((s=>this.displayOption(s,e,i))))}else{return null}}else{return this.displayOption(i,e)}}))))}get host(){return n(this)}static get watchers(){return{open:["watchOpenHandler"],options:["watchOptionsHandler"],value:["watchValueHandler"]}}};u.style=h;export{u as ic_menu};
2
- //# sourceMappingURL=p-23f32e1e.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["icMenuCss","Menu","constructor","hostRef","this","disabledOptionSelected","hasPreviouslyBlurred","hasTimedOut","isLoading","isSearchBar","isSearchableSelect","preventClickOpen","ungroupedOptions","handleClearListener","optionHighlighted","handleSubmitSearch","highlightedOptionIndex","options","findIndex","option","valueField","setInputValue","handleMenuChange","open","focusInput","menuStateChange","emit","inputEl","focus","setNextOptionValue","selectedOptionIndex","menuOptionSelect","value","optionId","getOptionId","setPreviousOptionValue","length","getParentEl","parent","tagName","getAttribute","undefined","arrowBehaviour","event","preventDefault","setMenuOptions","setHighlightedOption","highlightedIndex","menuOptions","timedOut","autoSetInputValueKeyboardOpen","keyboardNav","key","target","id","manSetInputValueKeyboardOpen","index","_a","Array","from","host","querySelectorAll","isOpen","menuOptionId","preventIncorrectTabOrder","focusFromSearchKeypress","disabled","stopImmediatePropagation","focusOnSearchOrSelectInput","parentEl","setFocus","handleOptionClick","label","dataset","handleRetry","retryButtonClicked","handleRetryKeyDown","ev","keyPressed","handleBlur","relatedTarget","menu","contains","handleMouseDown","handleMenuKeyDown","activationType","autoSetValueOnMenuKeyDown","emitMenuKeyPress","isNavKey","menuKeyPress","cancelBubble","handleMenuKeyUp","shiftKey","menuId","getOptionAriaLabel","parentOption","ariaLabel","labelField","description","element","getSortedOptions","sorted","sort","optionA","optionB","recommended","isManualMode","scrollToSelected","selectedOption","selectOnEnter","querySelector","elTop","offsetTop","offsetHeight","scrollTop","loadUngroupedOptions","map","children","push","ungroupedOptionsSet","setMenuScrollbar","optionsHeight","forEach","clientHeight","classList","add","handleTimeoutBlur","timeoutBlur","optionContent","h","Fragment","loading","size","class","icon","innerHTML","variant","component","toLowerCase","Check","displayOption","initialOptionsListRender","timeout","role","tabindex","onClick","onBlur","onMouseDown","xmlns","viewBox","fill","d","onKeyDown","anchorEl","autoFocusOnSelected","fullWidth","inputLabel","searchMode","small","watchOpenHandler","popperInstance","destroy","watchOptionsHandler","newOptions","some","opt","watchValueHandler","menuValueChange","connectedCallback","disconnectedCallback","_b","removeEventListener","componentWillLoad","addEventListener","componentDidLoad","disableFilter","onComponentRequiredPropUndefined","prop","propName","componentDidUpdate","inputValueInOptions","highlightedEl","componentDidRender","initPopperJs","handleClickOpen","handleKeyboardOpen","handleSetFirstOption","anchor","createPopper","placement","modifiers","name","offset","fallbackPlacements","rootBoundary","render","Host","ref","el","onKeyUp","childOption"],"sources":["../web-components/dist/collection/components/ic-menu/ic-menu.css?tag=ic-menu&encapsulation=scoped","../web-components/dist/collection/components/ic-menu/ic-menu.js"],"sourcesContent":["/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput {\n /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect {\n /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n\nhtml,\nbody,\ndiv,\nspan,\napplet,\nobject,\niframe,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\np,\nblockquote,\npre,\na,\nabbr,\nacronym,\naddress,\nbig,\ncite,\ncode,\ndel,\ndfn,\nem,\nimg,\nins,\nkbd,\nq,\ns,\nsamp,\nsmall,\nstrike,\nstrong,\nsub,\nsup,\ntt,\nvar,\nb,\nu,\ni,\ncenter,\ndl,\ndt,\ndd,\nol,\nul,\nli,\nfieldset,\nform,\nlabel,\nlegend,\ntable,\ncaption,\ntbody,\ntfoot,\nthead,\ntr,\nth,\ntd,\narticle,\naside,\ncanvas,\ndetails,\nembed,\nfigure,\nfigcaption,\nfooter,\nheader,\nhgroup,\nmenu,\nnav,\noutput,\nruby,\nsection,\nsummary,\ntime,\nmark,\naudio,\nvideo {\n margin: 0;\n padding: 0;\n border: 0;\n font-size: 100%;\n font-style: inherit;\n vertical-align: baseline;\n}\n\n\n/**\n * @prop --ic-z-index-menu: z-index of menu\n */\n\n@media (prefers-reduced-motion: no-preference) {\n :host(.open) .menu {\n transition: max-height var(--ic-transition-duration-slow);\n }\n}\n\n:host {\n border-radius: var(--ic-border-radius);\n max-height: 0;\n width: var(--input-width, 20rem);\n color: var(--ic-color-primary-text);\n background-color: var(--ic-architectural-white);\n position: relative;\n z-index: var(--ic-z-index-menu);\n box-sizing: border-box;\n box-shadow: var(--ic-elevation-overlay);\n}\n\n:host(:not(.no-focus):focus-within) {\n box-shadow: var(--ic-border-focus);\n}\n\n#retry-button::part(button) {\n height: var(--ic-space-lg);\n}\n\n.small #retry-button::part(button) {\n height: var(--ic-space-md);\n}\n\n:host(.on-dialog) {\n inset: auto !important;\n}\n\n.menu {\n text-decoration: none;\n list-style-type: none;\n border: var(--ic-border-width) solid var(--ic-architectural-400);\n border-radius: var(--ic-border-radius);\n background-color: var(--ic-architectural-white);\n visibility: hidden;\n max-height: 0;\n overflow-y: hidden;\n}\n\n.menu-scroll {\n overflow-y: auto;\n}\n\n.menu:focus-visible {\n outline: none;\n}\n\n:host(.open) {\n max-height: none;\n display: block;\n}\n\n:host(.open) .menu {\n visibility: visible;\n max-height: calc(var(--ic-space-xl) * 10 + var(--ic-space-xxxs));\n}\n\n:host(.full-width) {\n width: 100%;\n}\n\n.option {\n padding: var(--ic-space-xs) calc(var(--ic-space-xs) - var(--ic-space-1px));\n cursor: pointer;\n display: flex;\n align-items: center;\n overflow-wrap: anywhere;\n}\n\n.option:not(.loading-option) {\n justify-content: space-between;\n}\n\n:host(.small) .option {\n padding: var(--ic-space-xxs) calc(var(--ic-space-xs) - var(--ic-space-1px));\n}\n\n:host(.large) .option {\n padding: var(--ic-space-sm) calc(var(--ic-space-xs) - var(--ic-space-1px));\n}\n\n.option:last-child {\n border-radius: 0 0 var(--ic-space-1px) var(--ic-space-1px);\n}\n\n.option:first-child {\n border-radius: var(--ic-space-1px) var(--ic-space-1px) 0 0;\n}\n\n.option:not(.disabled-option):hover {\n background-color: var(--ic-action-dark-bg-hover);\n}\n\n.option:not(.disabled-option):active {\n background-color: var(--ic-action-dark-bg-active);\n}\n\n.option:focus-visible {\n outline: var(--ic-hc-focus-outline);\n}\n\n.option:not(.disabled-option) .option-description {\n color: var(--ic-color-secondary-text);\n}\n\n.option .option-label {\n display: flex;\n flex-direction: row;\n align-items: top;\n}\n\n.option .option-element {\n margin-top: var(--ic-space-xxs);\n}\n\n.option .option-icon {\n height: var(--ic-space-md);\n width: var(--ic-space-md);\n margin-top: var(--ic-space-xxs);\n margin-right: var(--ic-space-xxxs);\n}\n\n.option-text-container {\n pointer-events: none;\n}\n\n.option.loading-option .option-text-container {\n margin-left: calc(var(--ic-space-xs) + var(--ic-space-xxxs));\n color: var(--ic-color-secondary-text);\n}\n\n.error-icon-svg {\n height: var(--ic-space-md);\n width: var(--ic-space-md);\n fill: var(--ic-status-error);\n align-self: center;\n display: flex;\n margin-right: calc(var(--ic-space-xxs) * 1.2);\n}\n\n.loading-error-info {\n display: flex;\n}\n\n.check-icon {\n height: var(--ic-space-lg);\n width: var(--ic-space-lg);\n margin-left: var(--ic-space-xs);\n pointer-events: none;\n}\n\n.focused-option .check-icon * {\n fill: currentcolor;\n}\n\n.option-group-title {\n padding: var(--ic-space-lg) calc(var(--ic-space-xs) - var(--ic-space-1px))\n var(--ic-space-xs);\n color: var(--ic-color-tertiary-text);\n}\n\n:host(.small) .option-group-title {\n padding: var(--ic-space-sm) calc(var(--ic-space-xs) - var(--ic-space-1px))\n var(--ic-space-xxs);\n}\n\n.last-recommended-option {\n border-bottom: var(--ic-border-default);\n}\n\n.disabled-option {\n color: var(--ic-architectural-200);\n cursor: default;\n pointer-events: none;\n}\n\n.focused-option,\n.focused-option .option-description {\n background-color: var(--ic-focus-blue) !important;\n color: var(--ic-color-white-text) !important;\n}\n\n:host(.no-results) li {\n cursor: no-drop;\n}\n\n:host(.no-results) li:hover {\n background-color: transparent;\n}\n\n@media (forced-colors: active) {\n .focused-option:focus {\n outline: none;\n border: 0.125rem solid transparent;\n }\n}\n","import { h, Host, Fragment, } from \"@stencil/core\";\nimport { createPopper } from \"@popperjs/core\";\nimport Check from \"../../assets/check-icon.svg\";\nimport { onComponentRequiredPropUndefined } from \"../../utils/helpers\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport class Menu {\n constructor() {\n this.disabledOptionSelected = false;\n this.hasPreviouslyBlurred = false;\n this.hasTimedOut = false;\n this.isLoading = false;\n this.isSearchBar = false;\n this.isSearchableSelect = false;\n // Prevents menu re-opening immediately after it is closed on blur when clicking input.\n this.preventClickOpen = false;\n this.ungroupedOptions = [];\n this.handleClearListener = () => {\n this.optionHighlighted = \"\";\n };\n this.handleSubmitSearch = () => {\n const highlightedOptionIndex = this.options.findIndex((option) => option[this.valueField] === this.optionHighlighted);\n this.setInputValue(highlightedOptionIndex);\n };\n this.handleMenuChange = (open, focusInput) => {\n this.menuStateChange.emit({ open, focusInput });\n if (!open && focusInput !== false) {\n this.inputEl.focus();\n this.preventClickOpen = false;\n }\n };\n this.setNextOptionValue = (selectedOptionIndex) => {\n if (this.ungroupedOptions[selectedOptionIndex + 1]) {\n this.menuOptionSelect.emit({\n value: this.ungroupedOptions[selectedOptionIndex + 1][this.valueField],\n optionId: this.getOptionId(this.ungroupedOptions[selectedOptionIndex + 1][this.valueField]),\n });\n }\n else {\n this.menuOptionSelect.emit({\n value: this.ungroupedOptions[0][this.valueField],\n optionId: this.getOptionId(this.ungroupedOptions[0][this.valueField]),\n });\n }\n };\n this.setPreviousOptionValue = (selectedOptionIndex) => {\n if (this.ungroupedOptions[selectedOptionIndex - 1]) {\n this.menuOptionSelect.emit({\n value: this.ungroupedOptions[selectedOptionIndex - 1][this.valueField],\n optionId: this.getOptionId(this.ungroupedOptions[selectedOptionIndex - 1][this.valueField]),\n });\n }\n else {\n this.menuOptionSelect.emit({\n value: this.ungroupedOptions[this.ungroupedOptions.length - 1][this.valueField],\n optionId: this.getOptionId(this.ungroupedOptions[this.ungroupedOptions.length - 1][this.valueField]),\n });\n }\n };\n this.getParentEl = (parent) => {\n if (parent.tagName === \"IC-SEARCH-BAR\") {\n this.isSearchBar = true;\n }\n else if (parent.tagName === \"IC-SELECT\" &&\n parent.getAttribute(\"searchable\") !== null &&\n parent.getAttribute(\"searchable\") !== undefined) {\n this.isSearchableSelect = true;\n }\n };\n this.arrowBehaviour = (event) => {\n event.preventDefault();\n this.handleMenuChange(true);\n };\n this.setMenuOptions = () => this.isSearchBar ? this.options : this.ungroupedOptions;\n this.setHighlightedOption = (highlightedIndex) => {\n const menuOptions = this.setMenuOptions();\n menuOptions[highlightedIndex] &&\n !menuOptions[highlightedIndex].timedOut &&\n (this.optionHighlighted =\n menuOptions[highlightedIndex][this.valueField] || undefined);\n };\n this.autoSetInputValueKeyboardOpen = (event) => {\n const selectedOptionIndex = this.ungroupedOptions.findIndex((option) => option[this.valueField] === this.value);\n this.keyboardNav = false;\n switch (event.key) {\n case \"ArrowDown\":\n this.keyboardNav = true;\n this.arrowBehaviour(event);\n this.setNextOptionValue(selectedOptionIndex);\n break;\n case \"ArrowUp\":\n this.keyboardNav = true;\n this.arrowBehaviour(event);\n this.setPreviousOptionValue(selectedOptionIndex);\n break;\n case \" \":\n case \"Enter\":\n if (event.target.id !== \"clear-button\") {\n this.handleMenuChange(true);\n }\n break;\n }\n };\n this.manSetInputValueKeyboardOpen = (event) => {\n const menuOptions = this.setMenuOptions();\n const highlightedOptionIndex = menuOptions.findIndex((option) => option[this.valueField] === this.optionHighlighted);\n const getOptionId = (index) => { var _a; return (_a = Array.from(this.host.querySelectorAll(\"li\"))[index]) === null || _a === void 0 ? void 0 : _a.id; };\n const isOpen = this.isSearchBar || this.isSearchableSelect || this.open;\n switch (event.key) {\n case \"ArrowDown\":\n this.keyboardNav = true;\n this.arrowBehaviour(event);\n if (highlightedOptionIndex < menuOptions.length - 1) {\n this.setHighlightedOption(highlightedOptionIndex + 1);\n this.menuOptionId.emit({\n optionId: getOptionId(highlightedOptionIndex + 1),\n });\n }\n else {\n this.setHighlightedOption(0);\n this.menuOptionId.emit({\n optionId: getOptionId(0),\n });\n }\n this.preventIncorrectTabOrder = false;\n this.focusFromSearchKeypress = false;\n break;\n case \"ArrowUp\":\n this.keyboardNav = true;\n this.arrowBehaviour(event);\n if (highlightedOptionIndex <= 0 ||\n highlightedOptionIndex > menuOptions.length + 1) {\n this.setHighlightedOption(menuOptions.length - 1);\n this.menuOptionId.emit({\n optionId: getOptionId(menuOptions.length - 1),\n });\n }\n else {\n this.setHighlightedOption(highlightedOptionIndex - 1);\n this.menuOptionId.emit({\n optionId: getOptionId(highlightedOptionIndex - 1),\n });\n }\n this.preventIncorrectTabOrder = false;\n this.focusFromSearchKeypress = false;\n break;\n case \"Home\":\n this.keyboardNav = true;\n event.preventDefault();\n this.arrowBehaviour(event);\n this.setHighlightedOption(0);\n this.menuOptionId.emit({\n optionId: getOptionId(0),\n });\n break;\n case \"End\":\n this.keyboardNav = true;\n event.preventDefault();\n this.arrowBehaviour(event);\n this.setHighlightedOption(menuOptions.length - 1);\n this.menuOptionId.emit({\n optionId: getOptionId(menuOptions.length - 1),\n });\n break;\n case \" \":\n this.keyboardNav = false;\n if (this.isSearchBar || this.isSearchableSelect) {\n break;\n }\n else {\n if (event.target.id !== \"clear-button\") {\n this.handleMenuChange(true);\n }\n }\n break;\n case \"Enter\":\n event.preventDefault();\n this.keyboardNav = false;\n if (isOpen) {\n if (highlightedOptionIndex >= 0) {\n if (menuOptions[highlightedOptionIndex] !== undefined) {\n if (this.isSearchBar &&\n menuOptions[highlightedOptionIndex].disabled === true) {\n this.disabledOptionSelected = true;\n }\n else {\n this.setInputValue(highlightedOptionIndex);\n this.value =\n menuOptions[highlightedOptionIndex][this.valueField];\n }\n }\n }\n else {\n this.setInputValue(highlightedOptionIndex);\n }\n }\n else {\n this.handleMenuChange(true);\n }\n break;\n case \"Escape\":\n if (this.open) {\n event.stopImmediatePropagation();\n }\n this.handleMenuChange(false);\n this.menuOptionId.emit({ optionId: undefined });\n break;\n case \"Shift\":\n case \"Tab\":\n if (this.isSearchBar) {\n this.keyboardNav = true;\n }\n this.preventIncorrectTabOrder = true;\n break;\n default:\n this.keyboardNav = false;\n this.focusOnSearchOrSelectInput(menuOptions, highlightedOptionIndex);\n break;\n }\n };\n this.setInputValue = (highlightedOptionIndex) => {\n const menuOptions = this.setMenuOptions();\n if (menuOptions[highlightedOptionIndex] !== undefined) {\n this.menuOptionSelect.emit({\n value: menuOptions[highlightedOptionIndex][this.valueField],\n });\n this.optionHighlighted = undefined;\n this.menuOptionId.emit({ optionId: undefined });\n }\n if (!this.hasTimedOut)\n this.handleMenuChange(false);\n else\n this.parentEl.setFocus();\n };\n this.handleOptionClick = (event) => {\n const { value, label } = event.target.dataset;\n this.menuOptionSelect.emit({ value, label });\n this.handleMenuChange(false);\n };\n this.handleRetry = () => {\n this.retryButtonClicked.emit({ value: this.value });\n };\n this.handleRetryKeyDown = (ev) => {\n if (ev.key === \"Enter\" || ev.key === \" \") {\n ev.preventDefault();\n this.retryButtonClicked.emit({ value: this.value, keyPressed: ev.key });\n }\n };\n this.handleBlur = (event) => {\n if (event.relatedTarget !== this.inputEl) {\n if (!this.menu.contains(event.relatedTarget)) {\n this.handleMenuChange(false, this.hasPreviouslyBlurred);\n }\n }\n else {\n this.handleMenuChange(false);\n this.preventClickOpen = true;\n }\n if (!this.isSearchBar)\n this.hasPreviouslyBlurred = !!event.relatedTarget;\n };\n this.handleMouseDown = (event) => {\n event.preventDefault();\n };\n this.handleMenuKeyDown = (event) => {\n if (this.activationType === \"automatic\") {\n this.autoSetValueOnMenuKeyDown(event);\n }\n else if (this.activationType === \"manual\" && !this.isSearchBar) {\n this.manSetInputValueKeyboardOpen(event);\n }\n };\n this.emitMenuKeyPress = (isNavKey, key) => {\n this.menuKeyPress.emit({ isNavKey: isNavKey, key: key });\n };\n this.autoSetValueOnMenuKeyDown = (event) => {\n event.cancelBubble = true;\n const selectedOptionIndex = this.ungroupedOptions.findIndex((option) => option[this.valueField] === this.value);\n const isSearchableSelect = this.inputEl.tagName === \"INPUT\";\n this.keyboardNav = false;\n switch (event.key) {\n case \" \":\n event.preventDefault();\n break;\n case \"ArrowUp\":\n if (!this.hasTimedOut) {\n event.preventDefault();\n this.setPreviousOptionValue(selectedOptionIndex);\n this.keyboardNav = true;\n }\n break;\n case \"ArrowDown\":\n if (!this.hasTimedOut) {\n event.preventDefault();\n this.setNextOptionValue(selectedOptionIndex);\n this.keyboardNav = true;\n }\n break;\n case \"Home\":\n this.menuOptionSelect.emit({\n value: this.ungroupedOptions[0][this.valueField],\n });\n this.keyboardNav = true;\n break;\n case \"End\":\n this.menuOptionSelect.emit({\n value: this.ungroupedOptions[this.ungroupedOptions.length - 1][this.valueField],\n });\n this.keyboardNav = true;\n break;\n case \"Enter\":\n !this.hasTimedOut && this.handleMenuChange(false);\n break;\n case \"Escape\":\n this.handleMenuChange(false);\n break;\n case \"Backspace\":\n if (isSearchableSelect) {\n this.inputEl.focus();\n }\n break;\n case \"Shift\":\n break;\n default:\n if (isSearchableSelect && event.key !== \"Tab\" && !this.hasTimedOut) {\n this.inputEl.focus();\n }\n if (event.key.length === 1) {\n this.keyboardNav = true;\n }\n break;\n }\n this.emitMenuKeyPress(this.keyboardNav, event.key);\n };\n this.handleMenuKeyUp = (event) => {\n if (event.key === \"Tab\" && event.shiftKey) {\n this.preventClickOpen = false;\n }\n if (event.key === \"Enter\" && this.disabledOptionSelected) {\n this.disabledOptionSelected = false;\n event.stopImmediatePropagation();\n }\n };\n this.getOptionId = (value) => {\n return `${this.menuId}-${value}`;\n };\n this.getOptionAriaLabel = (option, parentOption) => {\n let ariaLabel = option[this.labelField];\n if (option.description) {\n ariaLabel = `${ariaLabel}, ${option.description}`;\n }\n if (option.element) {\n ariaLabel = `${ariaLabel}, ${option.element.ariaLabel}`;\n }\n if (parentOption) {\n return `${ariaLabel}, ${parentOption[this.labelField]} group`;\n }\n else {\n return ariaLabel;\n }\n };\n this.getSortedOptions = (options) => {\n let sorted = [];\n if (options.sort) {\n sorted = options.sort((optionA, optionB) => optionA.recommended && !optionB.recommended ? -1 : 0);\n }\n return sorted;\n };\n this.isManualMode = this.activationType === \"manual\";\n this.scrollToSelected = (menu) => {\n const selectedOption = this.selectOnEnter\n ? this.host.querySelector(`li[data-value=\"${this.optionHighlighted}\"]`)\n : menu.querySelector(\".option[aria-selected='true']\");\n if (selectedOption) {\n const elTop = selectedOption.offsetTop + selectedOption.offsetHeight;\n if (elTop > menu.scrollTop + menu.offsetHeight ||\n elTop < menu.scrollTop + menu.offsetHeight) {\n menu.scrollTop = selectedOption.offsetTop;\n }\n selectedOption.focus();\n }\n };\n this.loadUngroupedOptions = () => {\n if (this.options.length > 0 && this.options.map) {\n this.options.map((option) => {\n if (option.children) {\n option.children.map((option) => !option.disabled && this.ungroupedOptions.push(option));\n }\n else if (!option.disabled) {\n this.ungroupedOptions.push(option);\n }\n });\n }\n this.ungroupedOptions = this.getSortedOptions(this.ungroupedOptions);\n this.ungroupedOptionsSet.emit({ options: this.ungroupedOptions });\n };\n this.setMenuScrollbar = () => {\n let optionsHeight = 0;\n this.host\n .querySelectorAll(\".option\")\n .forEach((option) => (optionsHeight += option.clientHeight));\n if (optionsHeight >= 320) {\n this.menu.classList.add(\"menu-scroll\");\n }\n };\n this.handleTimeoutBlur = (ev) => {\n this.timeoutBlur.emit({ ev });\n };\n this.optionContent = (option) => {\n var _a;\n 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] &&\n !!this.value &&\n option[this.valueField].toLowerCase() === ((_a = this.value) === null || _a === void 0 ? void 0 : _a.toLowerCase()) &&\n this.parentEl.tagName !== \"IC-SEARCH-BAR\" && (h(\"span\", { class: \"check-icon\", innerHTML: Check }))));\n };\n this.displayOption = (option, index, parentOption) => {\n const { open, value, keyboardNav, isManualMode, initialOptionsListRender, optionHighlighted, options, } = this;\n return (h(\"li\", { id: this.getOptionId(option[this.valueField]), class: {\n option: true,\n \"focused-option\": isManualMode\n ? (keyboardNav || initialOptionsListRender) &&\n option[this.valueField] === optionHighlighted\n : keyboardNav && option[this.valueField] === value,\n \"last-recommended-option\": option.recommended &&\n options[index + 1] &&\n !options[index + 1].recommended,\n \"disabled-option\": option.disabled,\n \"loading-option\": option.loading,\n timeout: option.timedOut,\n }, role: \"option\", tabindex: open &&\n (option[this.valueField] === value ||\n option[this.valueField] === optionHighlighted) &&\n keyboardNav\n ? \"0\"\n : \"-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))));\n };\n this.focusFromSearchKeypress = false;\n this.initialOptionsListRender = false;\n this.keyboardNav = false;\n this.optionHighlighted = undefined;\n this.preventIncorrectTabOrder = false;\n this.activationType = \"automatic\";\n this.anchorEl = undefined;\n this.autoFocusOnSelected = true;\n this.fullWidth = false;\n this.inputEl = undefined;\n this.inputLabel = undefined;\n this.labelField = \"label\";\n this.menuId = undefined;\n this.open = undefined;\n this.parentEl = undefined;\n this.searchMode = \"navigation\";\n this.selectOnEnter = false;\n this.size = \"default\";\n this.small = false;\n this.options = undefined;\n this.value = undefined;\n this.valueField = \"value\";\n }\n watchOpenHandler() {\n if (!this.open && this.popperInstance) {\n this.popperInstance.destroy();\n this.popperInstance = null;\n }\n }\n watchOptionsHandler(newOptions) {\n this.hasTimedOut = newOptions.some((opt) => opt.timedOut);\n this.isLoading = newOptions.some((opt) => opt.loading);\n this.ungroupedOptions = [];\n this.loadUngroupedOptions();\n }\n watchValueHandler() {\n this.menuValueChange.emit({ value: this.value });\n }\n connectedCallback() {\n this.getParentEl(this.parentEl);\n if (this.isSearchBar) {\n if (this.searchMode === \"navigation\")\n this.setHighlightedOption(0);\n this.initialOptionsListRender = true;\n }\n }\n disconnectedCallback() {\n var _a, _b;\n if (this.popperInstance) {\n this.popperInstance.destroy();\n }\n (_a = this.parentEl) === null || _a === void 0 ? void 0 : _a.removeEventListener(\"icClear\", this.handleClearListener);\n (_b = this.parentEl) === null || _b === void 0 ? void 0 : _b.removeEventListener(\"icSubmitSearch\", this.handleSubmitSearch);\n }\n componentWillLoad() {\n var _a, _b;\n this.loadUngroupedOptions();\n this.parentEl.addEventListener(\"icClear\", this.handleClearListener);\n this.parentEl.addEventListener(\"icSubmitSearch\", this.handleSubmitSearch);\n this.hasTimedOut = (_a = this.options) === null || _a === void 0 ? void 0 : _a.some((opt) => opt.timedOut);\n this.isLoading = (_b = this.options) === null || _b === void 0 ? void 0 : _b.some((opt) => opt.loading);\n }\n componentDidLoad() {\n if (this.isSearchBar &&\n this.parentEl.disableFilter) {\n this.focusFromSearchKeypress = true;\n }\n onComponentRequiredPropUndefined([\n { prop: this.open, propName: \"open\" },\n { prop: this.options, propName: \"options\" },\n { prop: this.menuId, propName: \"menu-id\" },\n { prop: this.inputLabel, propName: \"input-label\" },\n //NOTE: no check for value, input-el or anchor-el as otherwise get console errors on first load of select component\n ], \"Menu\");\n }\n componentDidUpdate() {\n const inputValueInOptions = this.options.some((option) => option[this.valueField] === this.value);\n if (this.open && this.options.length !== 0) {\n if (this.value &&\n this.keyboardNav &&\n inputValueInOptions &&\n this.autoFocusOnSelected &&\n !this.isSearchableSelect) {\n this.scrollToSelected(this.menu);\n }\n else if (this.inputEl.tagName !== \"IC-TEXT-FIELD\" &&\n this.inputEl.tagName !== \"INPUT\") {\n this.menu.focus();\n }\n else if (!!this.optionHighlighted &&\n !this.focusFromSearchKeypress &&\n !this.preventIncorrectTabOrder) {\n const highlightedEl = this.host.querySelector(`li[data-value=\"${this.optionHighlighted}\"]`);\n if (highlightedEl) {\n highlightedEl.focus();\n }\n }\n }\n if (this.open && !this.value && this.selectOnEnter) {\n this.scrollToSelected(this.menu);\n }\n }\n componentDidRender() {\n if (this.open && !this.popperInstance && this.anchorEl) {\n this.initPopperJs(this.anchorEl);\n }\n if (this.open && !!this.options.length) {\n this.setMenuScrollbar();\n }\n }\n /**\n * @internal If menu is opened with the mouse, emit menuStateChange custom event.\n */\n async handleClickOpen() {\n if (!this.preventClickOpen) {\n this.menuStateChange.emit({ open: !this.open });\n this.keyboardNav = false;\n }\n this.preventClickOpen = false;\n }\n /**\n * Used alongside activationType\n * If menu is opened via keyboard navigation (i.e. Enter, ArrowUp or ArrowDown), emit optionSelect custom event.\n * @param {KeyboardEvent} event The keyboard event which is available when handleKeyboardOpen is invoked.\n */\n async handleKeyboardOpen(event) {\n if (this.activationType === \"automatic\") {\n this.autoSetInputValueKeyboardOpen(event);\n }\n else {\n this.manSetInputValueKeyboardOpen(event);\n }\n }\n /**\n * @internal Used to highlight the first option in the menu.\n */\n async handleSetFirstOption() {\n this.setHighlightedOption(0);\n }\n /**\n * @internal Used to initialize popperJS with an anchor element.\n * 5/12/2023: Tested with Floating UI, however, discovered inconsistent\n * boundary behaviour so sticking with PopperJS.\n */\n async initPopperJs(anchor) {\n this.popperInstance = createPopper(anchor, this.host, {\n placement: \"bottom\",\n modifiers: [\n {\n name: \"offset\",\n options: {\n offset: [0, 7],\n },\n },\n {\n name: \"flip\",\n options: {\n fallbackPlacements: [\"top\"],\n rootBoundary: \"viewport\",\n },\n },\n ],\n });\n }\n focusOnSearchOrSelectInput(menuOptions, highlightedOptionIndex) {\n if (!menuOptions[highlightedOptionIndex])\n return;\n if (this.isSearchBar) {\n this.parentEl.setFocus();\n if (this.searchMode === \"navigation\")\n this.setHighlightedOption(0);\n }\n if (this.isSearchableSelect) {\n this.parentEl.setFocus();\n }\n this.focusFromSearchKeypress = true;\n }\n render() {\n const { inputLabel, options, menuId, value, fullWidth, hasTimedOut, isLoading, size, small, open, inputEl, keyboardNav, } = this;\n return (h(Host, { class: {\n \"full-width\": fullWidth,\n \"no-focus\": (inputEl === null || inputEl === void 0 ? void 0 : inputEl.tagName) === \"INPUT\" || hasTimedOut || isLoading,\n small: small,\n [size]: true,\n open: open,\n } }, 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) => {\n if (option.children) {\n if (option.children.length > 0) {\n 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))));\n }\n else {\n return null;\n }\n }\n else {\n return this.displayOption(option, index);\n }\n })))));\n }\n static get is() { return \"ic-menu\"; }\n static get encapsulation() { return \"scoped\"; }\n static get originalStyleUrls() {\n return {\n \"$\": [\"ic-menu.css\"]\n };\n }\n static get styleUrls() {\n return {\n \"$\": [\"ic-menu.css\"]\n };\n }\n static get properties() {\n return {\n \"activationType\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"IcActivationTypes\",\n \"resolved\": \"\\\"automatic\\\" | \\\"manual\\\"\",\n \"references\": {\n \"IcActivationTypes\": {\n \"location\": \"import\",\n \"path\": \"../../utils/types\",\n \"id\": \"src/utils/types.ts::IcActivationTypes\"\n }\n }\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Determines whether options manually set as values (by pressing 'Enter') when they receive focus using keyboard navigation.\"\n },\n \"attribute\": \"activation-type\",\n \"reflect\": false,\n \"defaultValue\": \"\\\"automatic\\\"\"\n },\n \"anchorEl\": {\n \"type\": \"unknown\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"HTMLElement\",\n \"resolved\": \"HTMLElement\",\n \"references\": {\n \"HTMLElement\": {\n \"location\": \"global\",\n \"id\": \"global::HTMLElement\"\n }\n }\n },\n \"required\": true,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"The reference to an anchor element the menu will position itself from when rendered.\"\n }\n },\n \"autoFocusOnSelected\": {\n \"type\": \"boolean\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"boolean\",\n \"resolved\": \"boolean\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": \"If `true`, autofocus will be applied on selected item when menu is open.\"\n }],\n \"text\": \"\"\n },\n \"attribute\": \"auto-focus-on-selected\",\n \"reflect\": false,\n \"defaultValue\": \"true\"\n },\n \"fullWidth\": {\n \"type\": \"boolean\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"boolean\",\n \"resolved\": \"boolean\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"If `true`, the menu will fill the width of the container.\"\n },\n \"attribute\": \"full-width\",\n \"reflect\": false,\n \"defaultValue\": \"false\"\n },\n \"inputEl\": {\n \"type\": \"unknown\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"HTMLElement\",\n \"resolved\": \"HTMLElement\",\n \"references\": {\n \"HTMLElement\": {\n \"location\": \"global\",\n \"id\": \"global::HTMLElement\"\n }\n }\n },\n \"required\": true,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"The reference to the input element.\"\n }\n },\n \"inputLabel\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"string\",\n \"resolved\": \"string\",\n \"references\": {}\n },\n \"required\": true,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"The label for the input element.\"\n },\n \"attribute\": \"input-label\",\n \"reflect\": false\n },\n \"labelField\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"string\",\n \"resolved\": \"string\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"The custom name for the label field for IcMenuOption.\"\n },\n \"attribute\": \"label-field\",\n \"reflect\": false,\n \"defaultValue\": \"\\\"label\\\"\"\n },\n \"menuId\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"string\",\n \"resolved\": \"string\",\n \"references\": {}\n },\n \"required\": true,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"The ID of the menu.\"\n },\n \"attribute\": \"menu-id\",\n \"reflect\": false\n },\n \"open\": {\n \"type\": \"boolean\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"boolean\",\n \"resolved\": \"boolean\",\n \"references\": {}\n },\n \"required\": true,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"If `true`, the menu will be displayed open.\"\n },\n \"attribute\": \"open\",\n \"reflect\": true\n },\n \"parentEl\": {\n \"type\": \"unknown\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"HTMLElement\",\n \"resolved\": \"HTMLElement\",\n \"references\": {\n \"HTMLElement\": {\n \"location\": \"global\",\n \"id\": \"global::HTMLElement\"\n }\n }\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": \"- The parent element if ic-menu is nested inside another component.\"\n }],\n \"text\": \"\"\n }\n },\n \"searchMode\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"IcSearchBarSearchModes\",\n \"resolved\": \"\\\"navigation\\\" | \\\"query\\\"\",\n \"references\": {\n \"IcSearchBarSearchModes\": {\n \"location\": \"import\",\n \"path\": \"../ic-search-bar/ic-search-bar.types\",\n \"id\": \"src/components/ic-search-bar/ic-search-bar.types.ts::IcSearchBarSearchModes\"\n }\n }\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"Specify the mode search bar uses to search. `navigation` allows for quick lookups of a set of values, `query` allows for more general searches.\"\n },\n \"attribute\": \"search-mode\",\n \"reflect\": false,\n \"defaultValue\": \"\\\"navigation\\\"\"\n },\n \"selectOnEnter\": {\n \"type\": \"boolean\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"boolean\",\n \"resolved\": \"boolean\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": \"If `true`, the icOptionSelect event will be fired on enter instead of ArrowUp and ArrowDown.\"\n }],\n \"text\": \"\"\n },\n \"attribute\": \"select-on-enter\",\n \"reflect\": false,\n \"defaultValue\": \"false\"\n },\n \"size\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"IcSizes\",\n \"resolved\": \"\\\"default\\\" | \\\"large\\\" | \\\"small\\\"\",\n \"references\": {\n \"IcSizes\": {\n \"location\": \"import\",\n \"path\": \"../../utils/types\",\n \"id\": \"src/utils/types.ts::IcSizes\"\n }\n }\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [],\n \"text\": \"The size of the menu component.\"\n },\n \"attribute\": \"size\",\n \"reflect\": false,\n \"defaultValue\": \"\\\"default\\\"\"\n },\n \"small\": {\n \"type\": \"boolean\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"boolean\",\n \"resolved\": \"boolean\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": true,\n \"docs\": {\n \"tags\": [{\n \"name\": \"deprecated\",\n \"text\": \"This prop should not be used anymore. Set prop `size` to \\\"small\\\" instead.\"\n }],\n \"text\": \"\"\n },\n \"attribute\": \"small\",\n \"reflect\": false,\n \"defaultValue\": \"false\"\n },\n \"options\": {\n \"type\": \"unknown\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"IcMenuOption[]\",\n \"resolved\": \"IcMenuOption[]\",\n \"references\": {\n \"IcMenuOption\": {\n \"location\": \"import\",\n \"path\": \"../../utils/types\",\n \"id\": \"src/utils/types.ts::IcMenuOption\"\n }\n }\n },\n \"required\": true,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"The possible menu selection options.\"\n }\n },\n \"value\": {\n \"type\": \"string\",\n \"mutable\": true,\n \"complexType\": {\n \"original\": \"string\",\n \"resolved\": \"string\",\n \"references\": {}\n },\n \"required\": true,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"The value of the currently selected option.\"\n },\n \"attribute\": \"value\",\n \"reflect\": false\n },\n \"valueField\": {\n \"type\": \"string\",\n \"mutable\": false,\n \"complexType\": {\n \"original\": \"string\",\n \"resolved\": \"string\",\n \"references\": {}\n },\n \"required\": false,\n \"optional\": false,\n \"docs\": {\n \"tags\": [],\n \"text\": \"The custom name for the value field for IcMenuOption.\"\n },\n \"attribute\": \"value-field\",\n \"reflect\": false,\n \"defaultValue\": \"\\\"value\\\"\"\n }\n };\n }\n static get states() {\n return {\n \"focusFromSearchKeypress\": {},\n \"initialOptionsListRender\": {},\n \"keyboardNav\": {},\n \"optionHighlighted\": {},\n \"preventIncorrectTabOrder\": {}\n };\n }\n static get events() {\n return [{\n \"method\": \"menuKeyPress\",\n \"name\": \"menuKeyPress\",\n \"bubbles\": true,\n \"cancelable\": true,\n \"composed\": true,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": \"Emitted when key is pressed while menu is open\"\n }],\n \"text\": \"\"\n },\n \"complexType\": {\n \"original\": \"{ isNavKey: boolean; key: string }\",\n \"resolved\": \"{ isNavKey: boolean; key: string; }\",\n \"references\": {}\n }\n }, {\n \"method\": \"menuOptionId\",\n \"name\": \"menuOptionId\",\n \"bubbles\": true,\n \"cancelable\": true,\n \"composed\": true,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": \"Emitted when an option has been highlighted\"\n }],\n \"text\": \"\"\n },\n \"complexType\": {\n \"original\": \"IcMenuOptionIdEventDetail\",\n \"resolved\": \"IcMenuOptionIdEventDetail\",\n \"references\": {\n \"IcMenuOptionIdEventDetail\": {\n \"location\": \"import\",\n \"path\": \"./ic-menu.types\",\n \"id\": \"src/components/ic-menu/ic-menu.types.ts::IcMenuOptionIdEventDetail\"\n }\n }\n }\n }, {\n \"method\": \"menuOptionSelect\",\n \"name\": \"menuOptionSelect\",\n \"bubbles\": true,\n \"cancelable\": true,\n \"composed\": true,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": \"Emitted when an option is selected.\"\n }],\n \"text\": \"\"\n },\n \"complexType\": {\n \"original\": \"IcOptionSelectEventDetail\",\n \"resolved\": \"IcOptionSelectEventDetail\",\n \"references\": {\n \"IcOptionSelectEventDetail\": {\n \"location\": \"import\",\n \"path\": \"./ic-menu.types\",\n \"id\": \"src/components/ic-menu/ic-menu.types.ts::IcOptionSelectEventDetail\"\n }\n }\n }\n }, {\n \"method\": \"menuStateChange\",\n \"name\": \"menuStateChange\",\n \"bubbles\": true,\n \"cancelable\": true,\n \"composed\": true,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": \"Emitted when state of menu changes (i.e. open or close).\"\n }],\n \"text\": \"\"\n },\n \"complexType\": {\n \"original\": \"IcMenuChangeEventDetail\",\n \"resolved\": \"IcMenuChangeEventDetail\",\n \"references\": {\n \"IcMenuChangeEventDetail\": {\n \"location\": \"import\",\n \"path\": \"./ic-menu.types\",\n \"id\": \"src/components/ic-menu/ic-menu.types.ts::IcMenuChangeEventDetail\"\n }\n }\n }\n }, {\n \"method\": \"menuValueChange\",\n \"name\": \"menuValueChange\",\n \"bubbles\": true,\n \"cancelable\": true,\n \"composed\": true,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": \"Emitted when menu value changes.\"\n }],\n \"text\": \"\"\n },\n \"complexType\": {\n \"original\": \"IcValueEventDetail\",\n \"resolved\": \"IcValueEventDetail\",\n \"references\": {\n \"IcValueEventDetail\": {\n \"location\": \"import\",\n \"path\": \"../../utils/types\",\n \"id\": \"src/utils/types.ts::IcValueEventDetail\"\n }\n }\n }\n }, {\n \"method\": \"retryButtonClicked\",\n \"name\": \"retryButtonClicked\",\n \"bubbles\": true,\n \"cancelable\": true,\n \"composed\": true,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": \"Emitted when the retry button is clicked\"\n }],\n \"text\": \"\"\n },\n \"complexType\": {\n \"original\": \"IcValueEventDetail\",\n \"resolved\": \"IcValueEventDetail\",\n \"references\": {\n \"IcValueEventDetail\": {\n \"location\": \"import\",\n \"path\": \"../../utils/types\",\n \"id\": \"src/utils/types.ts::IcValueEventDetail\"\n }\n }\n }\n }, {\n \"method\": \"timeoutBlur\",\n \"name\": \"timeoutBlur\",\n \"bubbles\": true,\n \"cancelable\": true,\n \"composed\": true,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": \"Emitted when the timeout menu loses focus\"\n }],\n \"text\": \"\"\n },\n \"complexType\": {\n \"original\": \"{ ev: FocusEvent }\",\n \"resolved\": \"{ ev: FocusEvent; }\",\n \"references\": {\n \"FocusEvent\": {\n \"location\": \"global\",\n \"id\": \"global::FocusEvent\"\n }\n }\n }\n }, {\n \"method\": \"ungroupedOptionsSet\",\n \"name\": \"ungroupedOptionsSet\",\n \"bubbles\": true,\n \"cancelable\": true,\n \"composed\": true,\n \"docs\": {\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": \"Emitted when the ungrouped options have been set.\"\n }],\n \"text\": \"\"\n },\n \"complexType\": {\n \"original\": \"{ options: IcMenuOption[] }\",\n \"resolved\": \"{ options: IcMenuOption[]; }\",\n \"references\": {\n \"IcMenuOption\": {\n \"location\": \"import\",\n \"path\": \"../../utils/types\",\n \"id\": \"src/utils/types.ts::IcMenuOption\"\n }\n }\n }\n }];\n }\n static get methods() {\n return {\n \"handleClickOpen\": {\n \"complexType\": {\n \"signature\": \"() => Promise<void>\",\n \"parameters\": [],\n \"references\": {\n \"Promise\": {\n \"location\": \"global\",\n \"id\": \"global::Promise\"\n }\n },\n \"return\": \"Promise<void>\"\n },\n \"docs\": {\n \"text\": \"\",\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": \"If menu is opened with the mouse, emit menuStateChange custom event.\"\n }]\n }\n },\n \"handleKeyboardOpen\": {\n \"complexType\": {\n \"signature\": \"(event: KeyboardEvent) => Promise<void>\",\n \"parameters\": [{\n \"name\": \"event\",\n \"type\": \"KeyboardEvent\",\n \"docs\": \"The keyboard event which is available when handleKeyboardOpen is invoked.\"\n }],\n \"references\": {\n \"Promise\": {\n \"location\": \"global\",\n \"id\": \"global::Promise\"\n },\n \"KeyboardEvent\": {\n \"location\": \"global\",\n \"id\": \"global::KeyboardEvent\"\n }\n },\n \"return\": \"Promise<void>\"\n },\n \"docs\": {\n \"text\": \"Used alongside activationType\\nIf menu is opened via keyboard navigation (i.e. Enter, ArrowUp or ArrowDown), emit optionSelect custom event.\",\n \"tags\": [{\n \"name\": \"param\",\n \"text\": \"event The keyboard event which is available when handleKeyboardOpen is invoked.\"\n }]\n }\n },\n \"handleSetFirstOption\": {\n \"complexType\": {\n \"signature\": \"() => Promise<void>\",\n \"parameters\": [],\n \"references\": {\n \"Promise\": {\n \"location\": \"global\",\n \"id\": \"global::Promise\"\n }\n },\n \"return\": \"Promise<void>\"\n },\n \"docs\": {\n \"text\": \"\",\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": \"Used to highlight the first option in the menu.\"\n }]\n }\n },\n \"initPopperJs\": {\n \"complexType\": {\n \"signature\": \"(anchor: HTMLElement) => Promise<void>\",\n \"parameters\": [{\n \"name\": \"anchor\",\n \"type\": \"HTMLElement\",\n \"docs\": \"\"\n }],\n \"references\": {\n \"Promise\": {\n \"location\": \"global\",\n \"id\": \"global::Promise\"\n },\n \"HTMLElement\": {\n \"location\": \"global\",\n \"id\": \"global::HTMLElement\"\n }\n },\n \"return\": \"Promise<void>\"\n },\n \"docs\": {\n \"text\": \"\",\n \"tags\": [{\n \"name\": \"internal\",\n \"text\": \"Used to initialize popperJS with an anchor element.\\n5/12/2023: Tested with Floating UI, however, discovered inconsistent\\nboundary behaviour so sticking with PopperJS.\"\n }]\n }\n }\n };\n }\n static get elementRef() { return \"host\"; }\n static get watchers() {\n return [{\n \"propName\": \"open\",\n \"methodName\": \"watchOpenHandler\"\n }, {\n \"propName\": \"options\",\n \"methodName\": \"watchOptionsHandler\"\n }, {\n \"propName\": \"value\",\n \"methodName\": \"watchValueHandler\"\n }];\n }\n}\n//# sourceMappingURL=ic-menu.js.map\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{I as n}from"./p-fd186591.js";const t=`<svg aria-labelledby="error-title" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="#000000">\n <title id="error-title">Error</title>\n <g id="close-octagon">\n <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" />\n </g>\n</svg>\n`;const e=`<svg aria-labelledby="info-title" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="#000000">\n <title id="info-title">For your information</title>\n <g id="info">\n <path id="Vector" d="M12 2C6.48 2 2 6.48 2 12C2 17.52 6.48 22 12 22C17.52 22 22 17.52 22 12C22 6.48 17.52 2 12 2ZM12 17C11.45 17 11 16.55 11 16V12C11 11.45 11.45 11 12 11C12.55 11 13 11.45 13 12V16C13 16.55 12.55 17 12 17ZM13 9H11V7H13V9Z" />\n </g>\n</svg>\n`;const i=`<svg aria-labelledby="neutral-title" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="#000000">\n<title id="neutral-title">Neutral</title>\n <g id="Icon">\n <path id="Vector" d="M19.5 3H5.5C4.4 3 3.5 3.9 3.5 5V19C3.5 20.1 4.4 21 5.5 21H19.5C20.6 21 21.5 20.1 21.5 19V5C21.5 3.9 20.6 3 19.5 3ZM12.51 18C11.81 18 11.25 17.44 11.25 16.74C11.25 16.03 11.81 15.49 12.51 15.49C13.22 15.49 13.76 16.03 13.76 16.74C13.75 17.43 13.22 18 12.51 18ZM15.52 10.6C14.76 11.71 14.04 12.06 13.65 12.77C13.55 12.95 13.49 13.09 13.46 13.4C13.41 13.85 13.01 14.18 12.56 14.18H12.5C11.98 14.18 11.57 13.74 11.62 13.22C11.65 12.88 11.73 12.53 11.92 12.19C12.41 11.32 13.34 10.8 13.88 10.03C14.45 9.22 14.13 7.7 12.51 7.7C11.8 7.7 11.33 8.06 11.04 8.49C10.79 8.85 10.35 9.02 9.94 8.85C9.41 8.64 9.22 8 9.54 7.54C10.15 6.65 11.17 6 12.49 6C13.97 6 14.98 6.67 15.5 7.52C15.94 8.24 16.2 9.59 15.52 10.6Z" />\n </g>\n</svg>\n`;const a=`<svg aria-labelledby="success-title" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="#000000">\n <title id="success-title">Success</title>\n <g id="check_circle">\n <path id="Vector" d="M12.5 2C6.98 2 2.5 6.48 2.5 12C2.5 17.52 6.98 22 12.5 22C18.02 22 22.5 17.52 22.5 12C22.5 6.48 18.02 2 12.5 2ZM9.79 16.29L6.2 12.7C5.81 12.31 5.81 11.68 6.2 11.29C6.59 10.9 7.22 10.9 7.61 11.29L10.5 14.17L17.38 7.29C17.77 6.9 18.4 6.9 18.79 7.29C19.18 7.68 19.18 8.31 18.79 8.7L11.2 16.29C10.82 16.68 10.18 16.68 9.79 16.29Z" />\n </g>\n</svg>\n`;const r=`<svg aria-labelledby="warning-title" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="#000000">\n <title id="warning-title">Warning</title>\n <g id="warning">\n <path id="Vector" d="M4.47 20.5037H19.53C21.07 20.5037 22.03 18.8337 21.26 17.5037L13.73 4.49375C12.96 3.16375 11.04 3.16375 10.27 4.49375L2.74 17.5037C1.97 18.8337 2.93 20.5037 4.47 20.5037ZM12 13.5037C11.45 13.5037 11 13.0537 11 12.5037V10.5037C11 9.95375 11.45 9.50375 12 9.50375C12.55 9.50375 13 9.95375 13 10.5037V12.5037C13 13.0537 12.55 13.5037 12 13.5037ZM13 17.5037H11V15.5037H13V17.5037Z" />\n </g>\n</svg>\n`;const s={neutral:{icon:i,ariaLabel:"Neutral"},info:{icon:e,ariaLabel:"For your information"},warning:{icon:r,ariaLabel:"Warning"},error:{icon:t,ariaLabel:"Error"},success:{icon:a,ariaLabel:"Success"}};const o=["aria-atomic","aria-autocomplete","aria-busy","aria-controls","aria-current","aria-describedby","aria-description","aria-details","aria-disabled","aria-dropeffect","aria-errormessage","aria-expanded","aria-flowto","aria-grabbed","aria-haspopup","aria-hidden","aria-invalid","aria-keyshortcuts","aria-label","aria-labelledby","aria-live","aria-owns","aria-relevant","aria-roledescription"];const c={XS:576,S:768,M:992,L:1200,XL:99999};const l=["ic-hero","ic-top-navigation","ic-footer","ic-side-navigation","ic-alert"];const u=["ic-alert"];const d={"ic-alert":["ic-link"]};const p=136.701;const f=130;const g=133.3505;const v="ic-input";const b="input.ic-input";const C=(n,t=[])=>{const e={};t.forEach((t=>{if(n.hasAttribute(t)){const i=n.getAttribute(t);if(i!==null){e[t]=i}n.removeAttribute(t)}}));return e};const w=(n,t)=>{const e=n._original||n;return{_original:n,emit:m(e.emit.bind(e),t)}};const m=(n,t=0)=>{let e;return(...i)=>{clearTimeout(e);e=setTimeout(n,t,...i)}};const y=(n,t,e,i,a)=>{if(e!==undefined&&(n||x(t))){const n=t.querySelectorAll(b);const r=Array.from(n);const s=r.filter((n=>t===n.parentElement));let o=s[0];if(o===null||o===undefined){o=t.ownerDocument.createElement("input");o.type="hidden";o.classList.add(v);t.appendChild(o)}o.disabled=a;o.name=e;if(i instanceof Date){o.value=i?i.toISOString():null}else{o.value=i||""}}};const L=(n,t,e,i,a,r,s)=>{if(i!==undefined&&x(t)){const o=t.querySelectorAll(b);const c=Array.from(o);const l=c.filter((n=>t===n.parentElement));let u=l[0];if(u===null||u===undefined){u=t.ownerDocument.createElement("input");u.classList.add(v);t.appendChild(u)}u.type="file";u.hidden=true;u.multiple=e;u.name=i;u.files=a;u.disabled=r;u.accept=s;u.onchange=()=>{n.emit(u.files)};u.click()}};const h=n=>{const t=n.querySelectorAll("input.ic-input");const e=Array.from(t);const i=e.filter((t=>n===t.parentElement));const a=i[0];a===null||a===void 0?void 0:a.remove()};const x=n=>!!n.shadowRoot&&!!n.attachShadow;const I=n=>n+"-helper-text";const V=n=>n+"-validation-text";const M=(n,t,e)=>`${t?I(n):""} ${e?V(n):""}`.trim();const N=(t,e=null)=>{var i;const a=t.parentElement||t.getRootNode().host.parentElement;const r=a.closest(l.join(","));if(r!==null){const a=r.tagName.toLowerCase();const s=t.tagName.toLowerCase();if((i=d[a])===null||i===void 0?void 0:i.includes(s)){return n.Default}else if(e!==null&&!u.includes(a)){return e}else if(r.classList.contains(n.Dark)){return n.Dark}return n.Light}return n.Default};const A=()=>"maxTouchPoints"in navigator&&"userAgent"in navigator?navigator.maxTouchPoints>0&&/iPad|iPhone|iPod|Android|webOS|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent):false;const k=(n,t)=>{const e=document.createElement("button");e.setAttribute("type",t.type);e.style.display="none";n.appendChild(e);e.click();e.remove()};const T=n=>n?n.trim().length===0:true;const E=n=>n!==undefined?n:null;const H=(n,t,e="value",i="label")=>{const a=[];if(t.length>0&&t.map){t.map((n=>{if(n.children){n.children.map((n=>a.push(n)))}else{a.push(n)}}));const r=a.find((t=>t[e]===n));if(r!==undefined)return r[i]}return undefined};const Z=(n,t,e,i,a="label")=>n.filter((n=>{var r;const s=n[a].toLowerCase();const o=(r=n.description)===null||r===void 0?void 0:r.toLowerCase();const c=e.toLowerCase();return i==="anywhere"?t?s.includes(c)||(o===null||o===void 0?void 0:o.includes(c)):s.includes(c):t?s.startsWith(c)||(o===null||o===void 0?void 0:o.startsWith(c)):s.startsWith(c)}));const $=n=>window.matchMedia(`(max-width: ${n}px)`).matches;const O=()=>{if($(X.S)){return X.S}if($(X.M)){return X.M}if($(X.L)){return X.L}if($(X.XL)){return X.XL}return X.UNDEFINED};const S=n=>getComputedStyle(document.documentElement).getPropertyValue(n);const B=()=>{const n=S("--ic-theme-primary-r");const t=S("--ic-theme-primary-g");const e=S("--ic-theme-primary-b");return(parseInt(n)*299+parseInt(t)*587+parseInt(e)*114)/1e3};const P=(t=B())=>t>g?n.Dark:n.Light;const D=(n,t)=>{if(n&&n.querySelector){return n.querySelector(`[slot="${t}"]`)}return null};const F=(n,t)=>D(n,t)!==null;const G=(n,t)=>{const e=D(n,t);if(e){return R(e)}return null};const R=n=>{const t=n.firstElementChild;if(t!==null){const e=t.assignedElements?t.assignedElements():t.childNodes;return e.length?e:n.tagName?[n]:null}else{return n===null?null:[n]}};const W=({parentElement:n})=>{let t={navType:"",parent:null};switch(n.tagName){case"IC-NAVIGATION-GROUP":t=W(n);break;case"IC-TOP-NAVIGATION":t={navType:"top",parent:n};break;case"IC-SIDE-NAVIGATION":t={navType:"side",parent:n};break;case"IC-PAGE-HEADER":t={navType:"page-header",parent:null};break}return t};const X={XS:Number(S("--ic-breakpoint-xs").replace("px","")),S:Number(S("--ic-breakpoint-sm").replace("px","")),M:Number(S("--ic-breakpoint-md").replace("px","")),L:Number(S("--ic-breakpoint-lg").replace("px","")),XL:Number(S("--ic-breakpoint-xl").replace("px","")),UNDEFINED:1200};const U=(n,t)=>!!n&&!t;const j=({children:n},t)=>Array.from(n).some((n=>n.getAttribute("slot")===t));const q=(n,t,e)=>{if(n===undefined&&t!==n){e()}};const _=(n,t)=>{n.forEach((({prop:n,propName:e})=>{if(n===null||n===undefined){console.error(`No ${e} specified for ${t} component - prop '${e}' (web components) / '${z(e)}' (react) required`)}}))};const z=n=>n.toLowerCase().split("-").map(((n,t)=>t===0?n:`${n.substring(0,1).toUpperCase()}${n.substring(1)}`)).join("");const J=n=>{if(typeof window!=="undefined"&&typeof window.ResizeObserver!=="undefined"){n()}};const K=n=>parseInt(n,16);const Q=n=>{const t=n.replace("#","").split("").map((n=>n.repeat(2)));return{r:K(n.length===4?t[0]:n.slice(1,3)),g:K(n.length===4?t[1]:n.slice(3,5)),b:K(n.length===4?t[2]:n.slice(5)),a:1}};const Y=n=>{const t=n.slice(3,4).toLowerCase()==="a";const e=n.substring(t?5:4,n.length-1).replace(/ /g,"").split(",").map(Number);return{r:e[0],g:e[1],b:e[2],a:t?e[3]:1}};const nn=({scrollWidth:n,clientWidth:t})=>n>t;const tn=()=>!!document.querySelector("ic-classification-banner:not([inline='true'])");const en=(n,t)=>{var e;(e=n.closest("FORM"))===null||e===void 0?void 0:e.addEventListener("reset",t)};const an=(n,t)=>{var e;(e=n.closest("FORM"))===null||e===void 0?void 0:e.removeEventListener("reset",t)};const rn=(n,t=16)=>`${1/t*parseInt(n)}rem`;const sn=(n,t)=>{if(!n){t.removeAttribute("disabled")}};const on=n=>{const t=n===null||n===void 0?void 0:n.slice(0,1).toLowerCase();return t==="#"?Q(n):t==="r"?Y(n):null};const cn=n=>n.charAt(0).toUpperCase()+n.slice(1);const ln=(n,t,e)=>{const i=n=>Array.from(n).some((n=>Array.isArray(e)?e.some((t=>n.slot===t)):n.slot===e));return i(n)||i(t)};const un=n=>!!n.closest(".ag-cell")&&!!n.closest(".ag-root");export{R as A,Z as B,k as C,X as D,H as E,T as F,rn as G,B as H,c as I,p as J,D as K,G as L,cn as M,A as N,w as O,nn as P,a as Q,I as R,V as S,r as T,t as U,s as V,f as W,L as X,_ as a,Y as b,on as c,P as d,E as e,O as f,S as g,Q as h,j as i,J as j,ln as k,N as l,en as m,an as n,q as o,y as p,h as q,sn as r,M as s,U as t,un as u,F as v,tn as w,C as x,o as y,W as z};
2
- //# sourceMappingURL=p-3a3a8a71.js.map