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

Sign up to get free protection for your applications and to get access to all the features.
Files changed (433) hide show
  1. package/dist/cjs/core.cjs.js +1 -1
  2. package/dist/cjs/{helpers-6d736902.js → helpers-191dca49.js} +54 -98
  3. package/dist/cjs/helpers-191dca49.js.map +1 -0
  4. package/dist/cjs/{helpers-f75cf7cf.js → helpers-765a5118.js} +30 -1
  5. package/dist/cjs/helpers-765a5118.js.map +1 -0
  6. package/dist/cjs/ic-accordion-group.cjs.entry.js +3 -1
  7. package/dist/cjs/ic-accordion-group.cjs.entry.js.map +1 -1
  8. package/dist/cjs/ic-accordion.cjs.entry.js +1 -1
  9. package/dist/cjs/ic-alert.cjs.entry.js +1 -1
  10. package/dist/cjs/ic-back-to-top.cjs.entry.js +15 -9
  11. package/dist/cjs/ic-back-to-top.cjs.entry.js.map +1 -1
  12. package/dist/cjs/ic-badge.cjs.entry.js +55 -77
  13. package/dist/cjs/ic-badge.cjs.entry.js.map +1 -1
  14. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js +3 -1
  15. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js.map +1 -1
  16. package/dist/cjs/ic-breadcrumb.cjs.entry.js +1 -1
  17. package/dist/cjs/ic-button_3.cjs.entry.js +2 -2
  18. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  19. package/dist/cjs/ic-card.cjs.entry.js +1 -1
  20. package/dist/cjs/ic-checkbox-group.cjs.entry.js +23 -16
  21. package/dist/cjs/ic-checkbox-group.cjs.entry.js.map +1 -1
  22. package/dist/cjs/ic-checkbox.cjs.entry.js +32 -30
  23. package/dist/cjs/ic-checkbox.cjs.entry.js.map +1 -1
  24. package/dist/cjs/ic-chip.cjs.entry.js +21 -31
  25. package/dist/cjs/ic-chip.cjs.entry.js.map +1 -1
  26. package/dist/cjs/ic-data-row.cjs.entry.js +1 -1
  27. package/dist/cjs/ic-data-table-title-bar.cjs.entry.js +57 -0
  28. package/dist/cjs/ic-data-table-title-bar.cjs.entry.js.map +1 -0
  29. package/dist/cjs/ic-data-table.cjs.entry.js +154 -31
  30. package/dist/cjs/ic-data-table.cjs.entry.js.map +1 -1
  31. package/dist/cjs/ic-date-input.cjs.entry.js +1 -1
  32. package/dist/cjs/ic-date-picker.cjs.entry.js +1 -1
  33. package/dist/cjs/ic-dialog.cjs.entry.js +1 -1
  34. package/dist/cjs/ic-divider.cjs.entry.js +1 -1
  35. package/dist/cjs/ic-empty-state_2.cjs.entry.js +322 -0
  36. package/dist/cjs/ic-empty-state_2.cjs.entry.js.map +1 -0
  37. package/dist/cjs/ic-footer-link-group.cjs.entry.js +1 -1
  38. package/dist/cjs/ic-footer-link.cjs.entry.js +1 -1
  39. package/dist/cjs/ic-footer.cjs.entry.js +1 -1
  40. package/dist/cjs/ic-hero.cjs.entry.js +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 +1 -1
  43. package/dist/cjs/ic-link.cjs.entry.js +2 -2
  44. package/dist/cjs/ic-link.cjs.entry.js.map +1 -1
  45. package/dist/cjs/ic-menu-group.cjs.entry.js +1 -1
  46. package/dist/cjs/ic-menu-item.cjs.entry.js +2 -2
  47. package/dist/cjs/ic-menu-item.cjs.entry.js.map +1 -1
  48. package/dist/cjs/ic-menu-with-multi.cjs.entry.js +176 -35
  49. package/dist/cjs/ic-menu-with-multi.cjs.entry.js.map +1 -1
  50. package/dist/cjs/ic-menu.cjs.entry.js +3 -3
  51. package/dist/cjs/ic-menu.cjs.entry.js.map +1 -1
  52. package/dist/cjs/ic-navigation-button.cjs.entry.js +1 -1
  53. package/dist/cjs/ic-navigation-group.cjs.entry.js +1 -1
  54. package/dist/cjs/ic-navigation-item.cjs.entry.js +1 -1
  55. package/dist/cjs/ic-navigation-menu.cjs.entry.js +1 -1
  56. package/dist/cjs/ic-page-header.cjs.entry.js +1 -1
  57. package/dist/cjs/ic-pagination_4.cjs.entry.js +10 -6
  58. package/dist/cjs/ic-pagination_4.cjs.entry.js.map +1 -1
  59. package/dist/cjs/ic-popover-menu.cjs.entry.js +3 -2
  60. package/dist/cjs/ic-popover-menu.cjs.entry.js.map +1 -1
  61. package/dist/cjs/ic-radio-group.cjs.entry.js +1 -1
  62. package/dist/cjs/ic-radio-option.cjs.entry.js +1 -1
  63. package/dist/cjs/ic-search-bar.cjs.entry.js +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-panel.cjs.entry.js +1 -1
  72. package/dist/cjs/ic-tab.cjs.entry.js +1 -1
  73. package/dist/cjs/ic-theme.cjs.entry.js +13 -15
  74. package/dist/cjs/ic-theme.cjs.entry.js.map +1 -1
  75. package/dist/cjs/ic-toast.cjs.entry.js +1 -1
  76. package/dist/cjs/ic-toggle-button.cjs.entry.js +1 -1
  77. package/dist/cjs/ic-top-navigation.cjs.entry.js +1 -1
  78. package/dist/cjs/ic-typography.cjs.entry.js +2 -2
  79. package/dist/cjs/ic-typography.cjs.entry.js.map +1 -1
  80. package/dist/cjs/index-4cf27b16.js +8 -8
  81. package/dist/cjs/loader.cjs.js +1 -1
  82. package/dist/collection/collection-manifest.json +1 -0
  83. package/dist/collection/components/ic-data-table/ic-data-table.css +76 -1
  84. package/dist/collection/components/ic-data-table/ic-data-table.js +368 -43
  85. package/dist/collection/components/ic-data-table/ic-data-table.js.map +1 -1
  86. package/dist/collection/components/ic-data-table/ic-data-table.types.js.map +1 -1
  87. package/dist/collection/components/ic-data-table/story-data.js +258 -0
  88. package/dist/collection/components/ic-data-table/story-data.js.map +1 -1
  89. package/dist/collection/components/ic-data-table/test/basic/ic-data-table.spec.js +320 -1
  90. package/dist/collection/components/ic-data-table/test/basic/ic-data-table.spec.js.map +1 -1
  91. package/dist/collection/components/ic-data-table-title-bar/ic-data-table-title-bar.css +91 -0
  92. package/dist/collection/components/ic-data-table-title-bar/ic-data-table-title-bar.js +160 -0
  93. package/dist/collection/components/ic-data-table-title-bar/ic-data-table-title-bar.js.map +1 -0
  94. package/dist/collection/components/ic-data-table-title-bar/test/a11y/ic-data-table-title-bar.test.a11y.js +11 -0
  95. package/dist/collection/components/ic-data-table-title-bar/test/a11y/ic-data-table-title-bar.test.a11y.js.map +1 -0
  96. package/dist/collection/components/ic-data-table-title-bar/test/basic/ic-data-table-title-bar.spec.js +70 -0
  97. package/dist/collection/components/ic-data-table-title-bar/test/basic/ic-data-table-title-bar.spec.js.map +1 -0
  98. package/dist/collection/components/ic-menu-with-multi/ic-menu.js +176 -35
  99. package/dist/collection/components/ic-menu-with-multi/ic-menu.js.map +1 -1
  100. package/dist/collection/components/ic-menu-with-multi/test/basic/ic-menu.spec.js +180 -3
  101. package/dist/collection/components/ic-menu-with-multi/test/basic/ic-menu.spec.js.map +1 -1
  102. package/dist/collection/components/ic-pagination-bar/ic-pagination-bar.js +145 -116
  103. package/dist/collection/components/ic-pagination-bar/ic-pagination-bar.js.map +1 -1
  104. package/dist/collection/components/ic-pagination-bar/test/basic/ic-pagination-bar.spec.js +47 -10
  105. package/dist/collection/components/ic-pagination-bar/test/basic/ic-pagination-bar.spec.js.map +1 -1
  106. package/dist/collection/utils/types.js.map +1 -1
  107. package/dist/components/helpers.js +53 -96
  108. package/dist/components/helpers.js.map +1 -1
  109. package/dist/components/helpers2.js +28 -1
  110. package/dist/components/helpers2.js.map +1 -1
  111. package/dist/components/ic-accordion-group.js +2 -1
  112. package/dist/components/ic-accordion-group.js.map +1 -1
  113. package/dist/components/ic-back-to-top.js +22 -9
  114. package/dist/components/ic-back-to-top.js.map +1 -1
  115. package/dist/components/ic-badge.js +59 -77
  116. package/dist/components/ic-badge.js.map +1 -1
  117. package/dist/components/ic-breadcrumb-group.js +2 -0
  118. package/dist/components/ic-breadcrumb-group.js.map +1 -1
  119. package/dist/components/ic-checkbox-group.js +26 -16
  120. package/dist/components/ic-checkbox-group.js.map +1 -1
  121. package/dist/components/ic-checkbox.js +32 -30
  122. package/dist/components/ic-checkbox.js.map +1 -1
  123. package/dist/components/ic-chip.js +21 -31
  124. package/dist/components/ic-chip.js.map +1 -1
  125. package/dist/components/ic-data-table-title-bar.d.ts +11 -0
  126. package/dist/components/ic-data-table-title-bar.js +136 -0
  127. package/dist/components/ic-data-table-title-bar.js.map +1 -0
  128. package/dist/components/ic-data-table.js +179 -37
  129. package/dist/components/ic-data-table.js.map +1 -1
  130. package/dist/components/ic-date-input2.js +1 -1
  131. package/dist/components/ic-date-picker.js +1 -1
  132. package/dist/components/ic-divider2.js +1 -1
  133. package/dist/components/ic-empty-state.js +1 -57
  134. package/dist/components/ic-empty-state.js.map +1 -1
  135. package/dist/{esm/ic-empty-state.entry.js → components/ic-empty-state2.js} +38 -11
  136. package/dist/components/ic-empty-state2.js.map +1 -0
  137. package/dist/components/ic-footer-link-group.js +1 -1
  138. package/dist/components/ic-footer-link.js +1 -1
  139. package/dist/components/ic-footer.js +1 -1
  140. package/dist/components/ic-hero.js +1 -1
  141. package/dist/components/ic-horizontal-scroll2.js +1 -1
  142. package/dist/components/ic-link2.js +1 -1
  143. package/dist/components/ic-link2.js.map +1 -1
  144. package/dist/components/ic-menu-item2.js +2 -2
  145. package/dist/components/ic-menu-item2.js.map +1 -1
  146. package/dist/components/ic-menu2.js +2 -2
  147. package/dist/components/ic-menu2.js.map +1 -1
  148. package/dist/components/ic-menu3.js +177 -36
  149. package/dist/components/ic-menu3.js.map +1 -1
  150. package/dist/components/ic-navigation-button.js +1 -1
  151. package/dist/components/ic-navigation-group.js +1 -1
  152. package/dist/components/ic-navigation-item.js +1 -1
  153. package/dist/components/ic-navigation-menu2.js +1 -1
  154. package/dist/components/ic-pagination-bar2.js +126 -99
  155. package/dist/components/ic-pagination-bar2.js.map +1 -1
  156. package/dist/components/ic-pagination-item2.js +1 -1
  157. package/dist/components/ic-pagination-item2.js.map +1 -1
  158. package/dist/components/ic-popover-menu.js +3 -2
  159. package/dist/components/ic-popover-menu.js.map +1 -1
  160. package/dist/components/ic-radio-option.js +1 -1
  161. package/dist/components/ic-search-bar.js +1 -1
  162. package/dist/components/ic-select-with-multi.js +1 -1
  163. package/dist/components/ic-select2.js +8 -4
  164. package/dist/components/ic-select2.js.map +1 -1
  165. package/dist/components/ic-side-navigation.js +1 -1
  166. package/dist/components/ic-stepper.js +1 -1
  167. package/dist/components/ic-theme.js +13 -15
  168. package/dist/components/ic-theme.js.map +1 -1
  169. package/dist/components/ic-toast.js +1 -1
  170. package/dist/components/ic-tooltip2.js +1 -1
  171. package/dist/components/ic-tooltip2.js.map +1 -1
  172. package/dist/components/ic-top-navigation.js +1 -1
  173. package/dist/components/ic-typography2.js +1 -1
  174. package/dist/components/ic-typography2.js.map +1 -1
  175. package/dist/core/core.css +2 -2
  176. package/dist/core/core.esm.js +1 -1
  177. package/dist/core/core.esm.js.map +1 -1
  178. package/dist/core/{p-a8c15117.entry.js → p-005e83b0.entry.js} +2 -2
  179. package/dist/core/{p-c621d6b0.entry.js → p-05df3901.entry.js} +2 -2
  180. package/dist/core/{p-a2dc10d8.entry.js → p-0646ef0c.entry.js} +2 -2
  181. package/dist/core/p-0ec09955.entry.js +2 -0
  182. package/dist/core/p-0ec09955.entry.js.map +1 -0
  183. package/dist/core/{p-3dcc61cc.entry.js → p-114bea92.entry.js} +2 -2
  184. package/dist/core/{p-3dcc61cc.entry.js.map → p-114bea92.entry.js.map} +1 -1
  185. package/dist/core/p-11bbb09c.js +2 -0
  186. package/dist/core/p-11bbb09c.js.map +1 -0
  187. package/dist/core/p-11e736a3.entry.js +2 -0
  188. package/dist/core/p-11e736a3.entry.js.map +1 -0
  189. package/dist/core/{p-6dce8e88.entry.js → p-16c82b13.entry.js} +2 -2
  190. package/dist/core/p-1b35b6af.entry.js +2 -0
  191. package/dist/core/{p-dc5e1f8f.entry.js.map → p-1b35b6af.entry.js.map} +1 -1
  192. package/dist/core/p-1cf8a04e.entry.js +2 -0
  193. package/dist/core/p-1cf8a04e.entry.js.map +1 -0
  194. package/dist/core/{p-849f43c3.entry.js → p-2170f59e.entry.js} +2 -2
  195. package/dist/core/{p-00c5639e.entry.js → p-2e167ebb.entry.js} +2 -2
  196. package/dist/core/p-2e167ebb.entry.js.map +1 -0
  197. package/dist/core/p-3f20608d.entry.js +2 -0
  198. package/dist/core/p-3f20608d.entry.js.map +1 -0
  199. package/dist/core/p-41606de1.entry.js +2 -0
  200. package/dist/core/p-41606de1.entry.js.map +1 -0
  201. package/dist/core/{p-d2d63a61.entry.js → p-4415c93f.entry.js} +2 -2
  202. package/dist/core/{p-730f058b.entry.js → p-457dd939.entry.js} +2 -2
  203. package/dist/core/p-457dd939.entry.js.map +1 -0
  204. package/dist/core/{p-e1963c78.entry.js → p-4737844f.entry.js} +2 -2
  205. package/dist/core/{p-9d8883d7.entry.js → p-53374a27.entry.js} +2 -2
  206. package/dist/core/p-53e45d51.entry.js +2 -0
  207. package/dist/core/{p-3e9a8977.entry.js.map → p-53e45d51.entry.js.map} +1 -1
  208. package/dist/core/{p-1a91e842.entry.js → p-593f0318.entry.js} +2 -2
  209. package/dist/core/{p-aabab75f.entry.js → p-5d5979fa.entry.js} +2 -2
  210. package/dist/core/{p-db3a35fb.entry.js → p-66af5958.entry.js} +2 -2
  211. package/dist/core/p-67b0faac.entry.js +2 -0
  212. package/dist/core/p-67b0faac.entry.js.map +1 -0
  213. package/dist/core/{p-7f53d1be.entry.js → p-6b277e09.entry.js} +2 -2
  214. package/dist/core/{p-7f53d1be.entry.js.map → p-6b277e09.entry.js.map} +1 -1
  215. package/dist/core/{p-9567c117.entry.js → p-72cea8fd.entry.js} +2 -2
  216. package/dist/core/p-73dad5cf.entry.js +2 -0
  217. package/dist/core/{p-06c27edb.entry.js.map → p-73dad5cf.entry.js.map} +1 -1
  218. package/dist/core/{p-e16f73ba.entry.js → p-85e2a9af.entry.js} +2 -2
  219. package/dist/core/p-85e2a9af.entry.js.map +1 -0
  220. package/dist/core/{p-957de939.entry.js → p-872c3555.entry.js} +2 -2
  221. package/dist/core/p-87743c4a.entry.js +2 -0
  222. package/dist/core/{p-e8151d13.entry.js.map → p-87743c4a.entry.js.map} +1 -1
  223. package/dist/core/p-8cfc74da.entry.js +2 -0
  224. package/dist/core/{p-162f3e36.entry.js.map → p-8cfc74da.entry.js.map} +1 -1
  225. package/dist/core/{p-7fda2f94.entry.js → p-9729086f.entry.js} +2 -2
  226. package/dist/core/{p-8b1f9648.entry.js → p-9cc19e91.entry.js} +2 -2
  227. package/dist/core/{p-9528b29e.entry.js → p-9de20265.entry.js} +2 -2
  228. package/dist/core/{p-843bdaae.entry.js → p-a088373e.entry.js} +2 -2
  229. package/dist/core/p-a088373e.entry.js.map +1 -0
  230. package/dist/core/{p-00bd7919.entry.js → p-a0e42564.entry.js} +2 -2
  231. package/dist/core/p-a8110c27.entry.js +2 -0
  232. package/dist/core/p-a8110c27.entry.js.map +1 -0
  233. package/dist/core/{p-946625a3.entry.js → p-a9d07792.entry.js} +2 -2
  234. package/dist/core/p-a9d07792.entry.js.map +1 -0
  235. package/dist/core/{p-a05755b1.entry.js → p-b08f4371.entry.js} +2 -2
  236. package/dist/core/{p-0af27517.entry.js → p-b79c0631.entry.js} +2 -2
  237. package/dist/core/{p-4bd13376.entry.js → p-b8247636.entry.js} +2 -2
  238. package/dist/core/{p-fca46bd9.entry.js → p-badfdf2a.entry.js} +2 -2
  239. package/dist/core/{p-99bf38e3.entry.js → p-be56fa17.entry.js} +2 -2
  240. package/dist/core/{p-ff6f1e3a.entry.js → p-bebf535f.entry.js} +2 -2
  241. package/dist/core/p-c07cef0e.js +2 -0
  242. package/dist/core/p-c07cef0e.js.map +1 -0
  243. package/dist/core/{p-494c3cbe.entry.js → p-c0d88af8.entry.js} +2 -2
  244. package/dist/core/{p-4ad3012a.entry.js → p-c3af5dab.entry.js} +2 -2
  245. package/dist/core/{p-4fd58768.entry.js → p-c3dabce4.entry.js} +2 -2
  246. package/dist/core/{p-6eb58b0a.entry.js → p-c7e932b5.entry.js} +2 -2
  247. package/dist/core/{p-c14a897d.entry.js → p-d09aaa5b.entry.js} +2 -2
  248. package/dist/core/{p-41b682dc.entry.js → p-d59a72a9.entry.js} +2 -2
  249. package/dist/core/p-d59a72a9.entry.js.map +1 -0
  250. package/dist/core/{p-8b820365.entry.js → p-d71e9cb5.entry.js} +2 -2
  251. package/dist/core/{p-cca482e2.entry.js → p-ecd6d123.entry.js} +2 -2
  252. package/dist/core/p-ecd6d123.entry.js.map +1 -0
  253. package/dist/core/p-ee52a11a.entry.js +2 -0
  254. package/dist/core/p-ee52a11a.entry.js.map +1 -0
  255. package/dist/core/p-f11597df.entry.js +2 -0
  256. package/dist/core/p-f11597df.entry.js.map +1 -0
  257. package/dist/core/p-f1f3acd2.entry.js +2 -0
  258. package/dist/core/p-f1f3acd2.entry.js.map +1 -0
  259. package/dist/core/{p-19c1e271.entry.js → p-f659e5eb.entry.js} +2 -2
  260. package/dist/core/{p-f8f36680.entry.js → p-fc2551c0.entry.js} +2 -2
  261. package/dist/esm/core.js +1 -1
  262. package/dist/esm/{helpers-f328a7b6.js → helpers-8df79303.js} +29 -2
  263. package/dist/esm/helpers-8df79303.js.map +1 -0
  264. package/dist/esm/{helpers-c34e4042.js → helpers-da05c476.js} +54 -97
  265. package/dist/esm/helpers-da05c476.js.map +1 -0
  266. package/dist/esm/ic-accordion-group.entry.js +3 -1
  267. package/dist/esm/ic-accordion-group.entry.js.map +1 -1
  268. package/dist/esm/ic-accordion.entry.js +1 -1
  269. package/dist/esm/ic-alert.entry.js +1 -1
  270. package/dist/esm/ic-back-to-top.entry.js +15 -9
  271. package/dist/esm/ic-back-to-top.entry.js.map +1 -1
  272. package/dist/esm/ic-badge.entry.js +55 -77
  273. package/dist/esm/ic-badge.entry.js.map +1 -1
  274. package/dist/esm/ic-breadcrumb-group.entry.js +3 -1
  275. package/dist/esm/ic-breadcrumb-group.entry.js.map +1 -1
  276. package/dist/esm/ic-breadcrumb.entry.js +1 -1
  277. package/dist/esm/ic-button_3.entry.js +2 -2
  278. package/dist/esm/ic-button_3.entry.js.map +1 -1
  279. package/dist/esm/ic-card.entry.js +1 -1
  280. package/dist/esm/ic-checkbox-group.entry.js +23 -16
  281. package/dist/esm/ic-checkbox-group.entry.js.map +1 -1
  282. package/dist/esm/ic-checkbox.entry.js +32 -30
  283. package/dist/esm/ic-checkbox.entry.js.map +1 -1
  284. package/dist/esm/ic-chip.entry.js +21 -31
  285. package/dist/esm/ic-chip.entry.js.map +1 -1
  286. package/dist/esm/ic-data-row.entry.js +1 -1
  287. package/dist/esm/ic-data-table-title-bar.entry.js +53 -0
  288. package/dist/esm/ic-data-table-title-bar.entry.js.map +1 -0
  289. package/dist/esm/ic-data-table.entry.js +155 -32
  290. package/dist/esm/ic-data-table.entry.js.map +1 -1
  291. package/dist/esm/ic-date-input.entry.js +1 -1
  292. package/dist/esm/ic-date-picker.entry.js +1 -1
  293. package/dist/esm/ic-dialog.entry.js +1 -1
  294. package/dist/esm/ic-divider.entry.js +1 -1
  295. package/dist/esm/ic-empty-state_2.entry.js +317 -0
  296. package/dist/esm/ic-empty-state_2.entry.js.map +1 -0
  297. package/dist/esm/ic-footer-link-group.entry.js +1 -1
  298. package/dist/esm/ic-footer-link.entry.js +1 -1
  299. package/dist/esm/ic-footer.entry.js +1 -1
  300. package/dist/esm/ic-hero.entry.js +1 -1
  301. package/dist/esm/ic-horizontal-scroll.entry.js +1 -1
  302. package/dist/esm/ic-input-component-container_4.entry.js +1 -1
  303. package/dist/esm/ic-link.entry.js +2 -2
  304. package/dist/esm/ic-link.entry.js.map +1 -1
  305. package/dist/esm/ic-menu-group.entry.js +1 -1
  306. package/dist/esm/ic-menu-item.entry.js +2 -2
  307. package/dist/esm/ic-menu-item.entry.js.map +1 -1
  308. package/dist/esm/ic-menu-with-multi.entry.js +176 -35
  309. package/dist/esm/ic-menu-with-multi.entry.js.map +1 -1
  310. package/dist/esm/ic-menu.entry.js +3 -3
  311. package/dist/esm/ic-menu.entry.js.map +1 -1
  312. package/dist/esm/ic-navigation-button.entry.js +1 -1
  313. package/dist/esm/ic-navigation-group.entry.js +1 -1
  314. package/dist/esm/ic-navigation-item.entry.js +1 -1
  315. package/dist/esm/ic-navigation-menu.entry.js +1 -1
  316. package/dist/esm/ic-page-header.entry.js +1 -1
  317. package/dist/esm/ic-pagination_4.entry.js +10 -6
  318. package/dist/esm/ic-pagination_4.entry.js.map +1 -1
  319. package/dist/esm/ic-popover-menu.entry.js +3 -2
  320. package/dist/esm/ic-popover-menu.entry.js.map +1 -1
  321. package/dist/esm/ic-radio-group.entry.js +1 -1
  322. package/dist/esm/ic-radio-option.entry.js +1 -1
  323. package/dist/esm/ic-search-bar.entry.js +1 -1
  324. package/dist/esm/ic-select-with-multi.entry.js +1 -1
  325. package/dist/esm/ic-side-navigation.entry.js +1 -1
  326. package/dist/esm/ic-status-tag.entry.js +1 -1
  327. package/dist/esm/ic-step.entry.js +1 -1
  328. package/dist/esm/ic-stepper.entry.js +1 -1
  329. package/dist/esm/ic-switch.entry.js +1 -1
  330. package/dist/esm/ic-tab-group.entry.js +1 -1
  331. package/dist/esm/ic-tab-panel.entry.js +1 -1
  332. package/dist/esm/ic-tab.entry.js +1 -1
  333. package/dist/esm/ic-theme.entry.js +13 -15
  334. package/dist/esm/ic-theme.entry.js.map +1 -1
  335. package/dist/esm/ic-toast.entry.js +1 -1
  336. package/dist/esm/ic-toggle-button.entry.js +1 -1
  337. package/dist/esm/ic-top-navigation.entry.js +1 -1
  338. package/dist/esm/ic-typography.entry.js +2 -2
  339. package/dist/esm/ic-typography.entry.js.map +1 -1
  340. package/dist/esm/index-93509377.js +8 -8
  341. package/dist/esm/loader.js +1 -1
  342. package/dist/types/components/ic-data-table/ic-data-table.d.ts +79 -3
  343. package/dist/types/components/ic-data-table/ic-data-table.types.d.ts +9 -0
  344. package/dist/types/components/ic-data-table/story-data.d.ts +59 -0
  345. package/dist/types/components/ic-data-table-title-bar/ic-data-table-title-bar.d.ts +36 -0
  346. package/dist/types/components/ic-data-table-title-bar/test/a11y/ic-data-table-title-bar.test.a11y.d.ts +1 -0
  347. package/dist/types/components/ic-menu-with-multi/ic-menu.d.ts +10 -0
  348. package/dist/types/components/ic-pagination-bar/ic-pagination-bar.d.ts +24 -14
  349. package/dist/types/components.d.ts +207 -28
  350. package/dist/types/utils/types.d.ts +5 -5
  351. package/hydrate/index.js +1253 -909
  352. package/package.json +3 -3
  353. package/dist/cjs/helpers-6d736902.js.map +0 -1
  354. package/dist/cjs/helpers-f75cf7cf.js.map +0 -1
  355. package/dist/cjs/ic-empty-state.cjs.entry.js +0 -38
  356. package/dist/cjs/ic-empty-state.cjs.entry.js.map +0 -1
  357. package/dist/cjs/ic-pagination-bar.cjs.entry.js +0 -269
  358. package/dist/cjs/ic-pagination-bar.cjs.entry.js.map +0 -1
  359. package/dist/collection/components/ic-pagination/ic-pagination.types.js +0 -2
  360. package/dist/collection/components/ic-pagination/ic-pagination.types.js.map +0 -1
  361. package/dist/core/p-00c5639e.entry.js.map +0 -1
  362. package/dist/core/p-06c27edb.entry.js +0 -2
  363. package/dist/core/p-162f3e36.entry.js +0 -2
  364. package/dist/core/p-1c3bd46d.entry.js +0 -2
  365. package/dist/core/p-1c3bd46d.entry.js.map +0 -1
  366. package/dist/core/p-2c9d6334.entry.js +0 -2
  367. package/dist/core/p-2c9d6334.entry.js.map +0 -1
  368. package/dist/core/p-3e9a8977.entry.js +0 -2
  369. package/dist/core/p-41b682dc.entry.js.map +0 -1
  370. package/dist/core/p-730f058b.entry.js.map +0 -1
  371. package/dist/core/p-843bdaae.entry.js.map +0 -1
  372. package/dist/core/p-946625a3.entry.js.map +0 -1
  373. package/dist/core/p-9e3178e8.entry.js +0 -2
  374. package/dist/core/p-9e3178e8.entry.js.map +0 -1
  375. package/dist/core/p-a1556d97.entry.js +0 -2
  376. package/dist/core/p-a1556d97.entry.js.map +0 -1
  377. package/dist/core/p-c7590421.entry.js +0 -2
  378. package/dist/core/p-c7590421.entry.js.map +0 -1
  379. package/dist/core/p-c953edb9.entry.js +0 -2
  380. package/dist/core/p-c953edb9.entry.js.map +0 -1
  381. package/dist/core/p-cca482e2.entry.js.map +0 -1
  382. package/dist/core/p-cd799087.js +0 -2
  383. package/dist/core/p-cd799087.js.map +0 -1
  384. package/dist/core/p-d32d331b.entry.js +0 -2
  385. package/dist/core/p-d32d331b.entry.js.map +0 -1
  386. package/dist/core/p-dc5e1f8f.entry.js +0 -2
  387. package/dist/core/p-e16f73ba.entry.js.map +0 -1
  388. package/dist/core/p-e189f1d0.entry.js +0 -2
  389. package/dist/core/p-e189f1d0.entry.js.map +0 -1
  390. package/dist/core/p-e8151d13.entry.js +0 -2
  391. package/dist/core/p-ee765ad5.js +0 -2
  392. package/dist/core/p-ee765ad5.js.map +0 -1
  393. package/dist/core/p-f2147136.entry.js +0 -2
  394. package/dist/core/p-f2147136.entry.js.map +0 -1
  395. package/dist/core/p-ff3a01f3.entry.js +0 -2
  396. package/dist/core/p-ff3a01f3.entry.js.map +0 -1
  397. package/dist/esm/helpers-c34e4042.js.map +0 -1
  398. package/dist/esm/helpers-f328a7b6.js.map +0 -1
  399. package/dist/esm/ic-empty-state.entry.js.map +0 -1
  400. package/dist/esm/ic-pagination-bar.entry.js +0 -265
  401. package/dist/esm/ic-pagination-bar.entry.js.map +0 -1
  402. package/dist/types/components/ic-pagination/ic-pagination.types.d.ts +0 -6
  403. /package/dist/core/{p-a8c15117.entry.js.map → p-005e83b0.entry.js.map} +0 -0
  404. /package/dist/core/{p-c621d6b0.entry.js.map → p-05df3901.entry.js.map} +0 -0
  405. /package/dist/core/{p-a2dc10d8.entry.js.map → p-0646ef0c.entry.js.map} +0 -0
  406. /package/dist/core/{p-6dce8e88.entry.js.map → p-16c82b13.entry.js.map} +0 -0
  407. /package/dist/core/{p-849f43c3.entry.js.map → p-2170f59e.entry.js.map} +0 -0
  408. /package/dist/core/{p-d2d63a61.entry.js.map → p-4415c93f.entry.js.map} +0 -0
  409. /package/dist/core/{p-e1963c78.entry.js.map → p-4737844f.entry.js.map} +0 -0
  410. /package/dist/core/{p-9d8883d7.entry.js.map → p-53374a27.entry.js.map} +0 -0
  411. /package/dist/core/{p-1a91e842.entry.js.map → p-593f0318.entry.js.map} +0 -0
  412. /package/dist/core/{p-aabab75f.entry.js.map → p-5d5979fa.entry.js.map} +0 -0
  413. /package/dist/core/{p-db3a35fb.entry.js.map → p-66af5958.entry.js.map} +0 -0
  414. /package/dist/core/{p-9567c117.entry.js.map → p-72cea8fd.entry.js.map} +0 -0
  415. /package/dist/core/{p-957de939.entry.js.map → p-872c3555.entry.js.map} +0 -0
  416. /package/dist/core/{p-7fda2f94.entry.js.map → p-9729086f.entry.js.map} +0 -0
  417. /package/dist/core/{p-8b1f9648.entry.js.map → p-9cc19e91.entry.js.map} +0 -0
  418. /package/dist/core/{p-9528b29e.entry.js.map → p-9de20265.entry.js.map} +0 -0
  419. /package/dist/core/{p-00bd7919.entry.js.map → p-a0e42564.entry.js.map} +0 -0
  420. /package/dist/core/{p-a05755b1.entry.js.map → p-b08f4371.entry.js.map} +0 -0
  421. /package/dist/core/{p-0af27517.entry.js.map → p-b79c0631.entry.js.map} +0 -0
  422. /package/dist/core/{p-4bd13376.entry.js.map → p-b8247636.entry.js.map} +0 -0
  423. /package/dist/core/{p-fca46bd9.entry.js.map → p-badfdf2a.entry.js.map} +0 -0
  424. /package/dist/core/{p-99bf38e3.entry.js.map → p-be56fa17.entry.js.map} +0 -0
  425. /package/dist/core/{p-ff6f1e3a.entry.js.map → p-bebf535f.entry.js.map} +0 -0
  426. /package/dist/core/{p-494c3cbe.entry.js.map → p-c0d88af8.entry.js.map} +0 -0
  427. /package/dist/core/{p-4ad3012a.entry.js.map → p-c3af5dab.entry.js.map} +0 -0
  428. /package/dist/core/{p-4fd58768.entry.js.map → p-c3dabce4.entry.js.map} +0 -0
  429. /package/dist/core/{p-6eb58b0a.entry.js.map → p-c7e932b5.entry.js.map} +0 -0
  430. /package/dist/core/{p-c14a897d.entry.js.map → p-d09aaa5b.entry.js.map} +0 -0
  431. /package/dist/core/{p-8b820365.entry.js.map → p-d71e9cb5.entry.js.map} +0 -0
  432. /package/dist/core/{p-19c1e271.entry.js.map → p-f659e5eb.entry.js.map} +0 -0
  433. /package/dist/core/{p-f8f36680.entry.js.map → p-fc2551c0.entry.js.map} +0 -0
@@ -1,2 +1,2 @@
1
- import{r as e,c as t,h as i,H as o,g as n}from"./p-8455d1bb.js";import{I as a}from"./p-fd186591.js";import{d as s}from"./p-ee765ad5.js";const r='/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%;}body{margin:0}main{display:block}h1{font-size:2em;margin:0.67em 0}hr{box-sizing:content-box;height:0;overflow:visible;}pre{font-family:monospace, monospace;font-size:1em;}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em;}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0;}button,input{overflow:visible}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal;}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0;}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px;}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit;}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font-style:inherit;vertical-align:baseline}:host:not[hidden]{display:block}:host(.ic-tab-panel-light){color:white}';const l=class{constructor(i){e(this,i);this.tabPanelCreated=t(this,"tabPanelCreated",7);this.tabPanelRemoved=t(this,"tabPanelRemoved",7);this.appearance="dark";this.contextId="default";this.panelId=undefined;this.selectedTab=undefined;this.tabPosition=undefined}connectedCallback(){this.tabPanelCreated.emit(this.el)}disconnectedCallback(){const e=document.querySelector(`ic-tab-context[context-id=${this.contextId}]`);if(e){e.tabRemovedHandler()}}render(){const{panelId:e,selectedTab:t,appearance:n}=this;return i(o,{class:{["ic-tab-panel-light"]:n===a.Light},role:"tabpanel",hidden:s(e)&&s(t)?!(e===t):true},i("div",null,i("slot",null)))}get el(){return n(this)}};l.style=r;export{l as ic_tab_panel};
2
- //# sourceMappingURL=p-9567c117.entry.js.map
1
+ import{r as e,c as t,h as i,H as o,g as n}from"./p-8455d1bb.js";import{I as a}from"./p-fd186591.js";import{d as s}from"./p-11bbb09c.js";const r='/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%;}body{margin:0}main{display:block}h1{font-size:2em;margin:0.67em 0}hr{box-sizing:content-box;height:0;overflow:visible;}pre{font-family:monospace, monospace;font-size:1em;}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em;}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0;}button,input{overflow:visible}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal;}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0;}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px;}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit;}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font-style:inherit;vertical-align:baseline}:host:not[hidden]{display:block}:host(.ic-tab-panel-light){color:white}';const l=class{constructor(i){e(this,i);this.tabPanelCreated=t(this,"tabPanelCreated",7);this.tabPanelRemoved=t(this,"tabPanelRemoved",7);this.appearance="dark";this.contextId="default";this.panelId=undefined;this.selectedTab=undefined;this.tabPosition=undefined}connectedCallback(){this.tabPanelCreated.emit(this.el)}disconnectedCallback(){const e=document.querySelector(`ic-tab-context[context-id=${this.contextId}]`);if(e){e.tabRemovedHandler()}}render(){const{panelId:e,selectedTab:t,appearance:n}=this;return i(o,{class:{["ic-tab-panel-light"]:n===a.Light},role:"tabpanel",hidden:s(e)&&s(t)?!(e===t):true},i("div",null,i("slot",null)))}get el(){return n(this)}};l.style=r;export{l as ic_tab_panel};
2
+ //# sourceMappingURL=p-72cea8fd.entry.js.map
@@ -0,0 +1,2 @@
1
+ import{r as t,c as i,h as s,H as e,g as h}from"./p-8455d1bb.js";import{u as a,s as n,m as r,r as o,k as l,o as c,v as d,t as u,l as f,p,I as b,a as m}from"./p-c07cef0e.js";import{b as v,i as w,j as g,s as y,h as k,k as x}from"./p-33dd24eb.js";const $=`<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M15.8327 5.34199L14.6577 4.16699L9.99935 8.82533L5.34102 4.16699L4.16602 5.34199L8.82435 10.0003L4.16602 14.6587L5.34102 15.8337L9.99935 11.1753L14.6577 15.8337L15.8327 14.6587L11.1743 10.0003L15.8327 5.34199Z" fill="currentColor"/>\n</svg>\n`;const D=`<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">\n <path d="M16.6667 2.50004H15.8334V0.833374H14.1667V2.50004H5.83342V0.833374H4.16675V2.50004H3.33341C2.41675 2.50004 1.66675 3.25004 1.66675 4.16671V17.5C1.66675 18.4167 2.41675 19.1667 3.33341 19.1667H16.6667C17.5834 19.1667 18.3334 18.4167 18.3334 17.5V4.16671C18.3334 3.25004 17.5834 2.50004 16.6667 2.50004ZM16.6667 17.5H3.33341V6.66671H16.6667V17.5Z" fill="currentColor"/>\n</svg>`;const Y='/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%;}body{margin:0}main{display:block}h1{font-size:2em;margin:0.67em 0}hr{box-sizing:content-box;height:0;overflow:visible;}pre{font-family:monospace, monospace;font-size:1em;}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em;}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0;}button,input{overflow:visible}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal;}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0;}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px;}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit;}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font-style:inherit;vertical-align:baseline}input{border:0;height:100%;padding:0;outline:none;background:none;-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none}ic-input-component-container{cursor:text}ic-input-component-container,ic-input-component-container:hover{color:var(--ic-color-tertiary-text)}ic-input-component-container .focus-indicator{padding:var(--ic-space-xxxs) var(--ic-space-xs);align-items:center}.day-input{width:1.438rem}.month-input{width:1.813rem}.year-input,.year-input.fit-to-value{width:2.313rem}.fit-to-value{width:1.25rem}.sr-only{position:absolute;left:-9999px}.input-container{width:100%;display:flex;justify-content:space-between;align-items:center;position:relative}.action-buttons{display:flex;align-items:center}.show-calendar-button-wrapper{display:flex;justify-content:center;align-items:center}.clear-button,.calendar-button{border-radius:var(--ic-border-radius);transition:box-shadow var(--ic-easing-transition),\n border-radius var(--ic-easing-transition);margin:0}.clear-button.hidden{display:none}.clear-button:focus,.calendar-button:focus,.clear-button:active,.calendar-button:active{background-color:var(--ic-focus-blue) !important;box-shadow:inset 0 0 0 0.125rem var(--ic-focus-glow) !important;border-radius:0.25rem}.clear-button:focus,.calendar-button:focus,.clear-button:active *,.calendar-button:active *{fill:var(--ic-architectural-white)}.divider{margin:0 var(--ic-space-xxs);width:var(--ic-space-1px);background-color:var(--ic-architectural-400);border-radius:var(--ic-space-1px)}.divider.small{height:var(--ic-space-md)}.divider.default{height:calc(var(--ic-space-sm) + var(--ic-space-xs))}.divider.large{height:var(--ic-space-lg)}';let M=0;const z=class{constructor(e){t(this,e);this.calendarButtonClicked=i(this,"calendarButtonClicked",7);this.icBlur=i(this,"icBlur",7);this.icChange=i(this,"icChange",7);this.icFocus=i(this,"icFocus",7);this.ARIA_INVALID="aria-invalid";this.ARIA_LABEL="aria-label";this.ARIA_LABELLED_BY="aria-labelledby";this.EVENT_OBJECT_STRING="[object Event]";this.FIT_TO_VALUE="fit-to-value";this.initialValue=this.value;this.INPUT_EVENT_OBJECT_STRING="[object InputEvent]";this.inputsInOrder=[];this.isAfterMax=false;this.isBeforeMin=false;this.isDateSetFromKeyboardEvent=false;this.isDisabledDate=false;this.isValidDay=true;this.isValidMonth=true;this.isValidDate=true;this.isZuluTime=false;this.KEYBOARD_EVENT_OBJECT_STRING="[object KeyboardEvent]";this.MAX_DAY=31;this.MAX_MONTH=12;this.previousEmittedDate=undefined;this.previousSelectedDate=null;this.selectedDate=null;this.setInputPasteValue=(t,i)=>{const s=t;s.value=i;s.classList.add(this.FIT_TO_VALUE)};this.checkSingleCopiedValueIsValid=(t,i)=>{let s=false;const e=Number(i);switch(t){case this.dayInputEl:s=e>=1&&e<=this.MAX_DAY;break;case this.monthInputEl:s=e>=1&&e<=this.MAX_MONTH;break;case this.yearInputEl:s=true;break;default:s=false;break}return s};this.isKeyboardOrEvent=t=>Object.prototype.toString.call(t)===this.EVENT_OBJECT_STRING||Object.prototype.toString.call(t)===this.KEYBOARD_EVENT_OBJECT_STRING;this.setDateValidity=()=>{if(!a(this.day)){this.isValidDay=+this.day>this.MAX_DAY?false:true}else{this.isValidDay=true}if(!a(this.month)){this.isValidMonth=+this.month>this.MAX_MONTH?false:true}else{this.isValidMonth=true}};this.handleInput=t=>{const i=t;const s=t.target;if(s!==this.yearInputEl){if(i.inputType!=="deleteContentBackward"&&!this.preventAutoFormatting){if(s.value.length===1&&(s===this.dayInputEl&&+s.value>=4||s===this.monthInputEl&&+s.value>=2)&&+s.value<=9){this.setInputValue(s);this.notifyScreenReader(s,t);this.moveToNextInput(s)}if(s.value.length===2){if(+s.value===0){s.value="01"}this.setInputValue(s);this.setPreventInput(s,true);this.notifyScreenReader(s,t);this.moveToNextInput(s)}else{this.setPreventInput(s,false)}}else if(this.preventAutoFormatting){if(s.value.length===2&&!this.isKeyboardOrEvent(t)){this.setInputValue(s);this.setPreventInput(s,true);this.moveToNextInput(s)}else{this.setInputValue(s)}}if(s.value.length!==2){this.setPreventInput(s,false)}}else{if(s.value.length===4){this.setInputValue(s);if(Object.prototype.toString.call(t)!==this.EVENT_OBJECT_STRING){this.moveToNextInput(s)}this.setPreventInput(s,true)}else{this.setInputValue(s,true);this.setPreventInput(s,false)}}this.setFitToValueStyling(s);if(s.value.length===0){this.setInputValue(s,true);this.setValidationMessage()}this.notifyScreenReader(s,t)};this.handleKeyDown=(t,i)=>{const s=t.target;const e=t.key.toLowerCase();const h=/-?\d*\.?\d+(e[-+]?\d+)?|[/-]|arrowup|arrowdown|arrowleft|arrowright|shift|tab|backspace|delete/;if(!h.test(e)&&!((t.ctrlKey||t.metaKey)&&(e==="v"||e==="c"))){t.preventDefault()}switch(e){case"/":case"-":case".":t.preventDefault();this.setPasteInvalidText();this.moveToNextInput(s);break;case"arrowright":case"arrowleft":t.preventDefault();this.handleLeftRightArrowKeyPress(s,e);break;case"arrowup":case"arrowdown":this.preventAutoFormatting=true;this.handleUpDownArrowKeyPress(s,t);break}this.preventInput(t,i);this.isDateSetFromKeyboardEvent=true};this.handleFocus=t=>{const i=t.target;i.select()};this.handleBlur=t=>{const i=t.target;this.setPasteInvalidText();this.autocompleteInput(i)};this.handleLeftRightArrowKeyPress=(t,i)=>{if(i==="arrowright"){this.moveToNextInput(t)}else{this.moveToPreviousInput(t)}this.setPasteInvalidText()};this.notifyScreenReaderSelectedDate=()=>{const t=n(b);const i=n(m);this.selectedDateInfoEl.textContent=`Selected date: ${t[this.selectedDate.getDay()]}, ${this.selectedDate.getDate()} ${i[this.selectedDate.getMonth()]} ${this.selectedDate.getFullYear()}`};this.handleUpDownArrowKeyPress=(t,i)=>{const s=t===this.yearInputEl?0:1;let e;switch(t){case this.dayInputEl:e=this.MAX_DAY;break;case this.monthInputEl:e=this.MAX_MONTH;break;case this.yearInputEl:e=9999}if(t===null||t===void 0?void 0:t.value){if(i.key==="ArrowUp"){if(+t.value===e){i.preventDefault();t.value=`0${s}`}else{t.value=+t.value+1<10?`0${+t.value+1}`:(+t.value+1).toString()}this.notifyScreenReader(t,i)}if(i.key==="ArrowDown"){if(+t.value===s){i.preventDefault();t.value=e.toString()}else{t.value=+t.value-1<10?`0${+t.value-1}`:(+t.value-1).toString()}this.notifyScreenReader(t,i)}}else{if(i.key==="ArrowDown"){i.preventDefault();if(t===this.yearInputEl){t.value=(new Date).getFullYear().toString()}else{t.value=e.toString()}this.notifyScreenReader(t,i)}else if(i.key==="ArrowUp"){i.preventDefault();if(t===this.yearInputEl){t.value=(new Date).getFullYear().toString()}else{t.value=`0${s}`}this.notifyScreenReader(t,i)}}this.setInputValue(t);this.setFitToValueStyling(t)};this.handleDateChange=t=>{if(t||!v(this.selectedDate,this.previousSelectedDate)){if(this.value){this.inputsInOrder.forEach((t=>{t.classList.add(this.FIT_TO_VALUE)}))}if(this.day&&this.month&&this.year&&this.invalidDateText===""){this.setValueAndEmitChange(this.selectedDate);this.notifyScreenReaderSelectedDate()}else if(!(this.selectedDate===null&&this.previousSelectedDate===null)){this.setValueAndEmitChange(null);this.selectedDateInfoEl.textContent=""}this.previousSelectedDate=this.selectedDate;if(!this.isDateSetFromKeyboardEvent){this.updateInputValues(this.day,this.month,this.year)}}};this.slicePastedDate=(t,i)=>i.length>t?i.slice(0,t):i;this.isPastedStringDateValid=t=>{if(/\d+-\d+-\d+$/.test(t)||/\d+\/\d+\/\d+/.test(t)||/\d+\.\d+\.\d+/.test(t)){return true}if(/[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}(?::[0-9]{2}(?:\.\d+)?)?Z/.test(t)){this.isZuluTime=true;return true}return false};this.handlePaste=t=>{t.preventDefault();const i=t.clipboardData.getData("Text");const s=this.isPastedStringDateValid(i);this.setPastedValueAndValidation(s,i,t)};this.setDate=t=>{if(t===null||t===""||t===undefined){this.day=null;this.month=null;this.year=null;this.inputsInOrder.forEach((t=>{t.classList.remove(this.FIT_TO_VALUE);this.setPreventInput(t,false)}));this.handleDateChange(true)}else{if(w(t)){let i;if(typeof t==="string"){i=new Date(+t)}else{i=t}this.day=g(i.getDate());this.month=g(i.getMonth()+1);this.year=i.getFullYear().toString()}else if(typeof t==="string"){const i=y(t,this.dateFormat);this.year=i[0];this.month=i[1];this.day=i[2]}}this.setValidationMessage()};this.formatMinMax=t=>{let i;const s=g(t.getDate());const e=g(t.getMonth()+1);const h=t.getFullYear();switch(this.dateFormat){case"DD/MM/YYYY":i=`${s}/${e}/${h}`;break;case"MM/DD/YYYY":i=`${e}/${s}/${h}`;break;case"YYYY/MM/DD":i=`${h}/${e}/${s}`;break}return i};this.updateInputValues=(t,i,s)=>{this.dayInputEl.value=t;this.monthInputEl.value=i;this.yearInputEl.value=s};this.setInputValue=(t,i=false)=>{const s=i?"":t.value;switch(t){case this.dayInputEl:this.day=s;break;case this.monthInputEl:this.month=s;break;case this.yearInputEl:if(this.year!==s){this.year=s}}this.setValidationMessage()};this.setValidationMessage=()=>{this.setDateValidity();if(!a(this.day)&&!a(this.month)&&!a(this.year)){this.selectedDate=this.convertToDate(this.year,this.month,this.day);this.isValidDate=+this.selectedDate!==0&&this.selectedDate.getDate()==+this.day;this.isDisabledDate=this.isSelectedDateDisabled();if(!this.isValidDate||this.isDisabledDate){this.inputsInOrder.forEach((t=>t.setAttribute(this.ARIA_INVALID,"true")))}else{this.inputsInOrder.forEach((t=>t.removeAttribute(this.ARIA_INVALID)))}}else{this.selectedDate=null}if(!(this.isValidDay&&this.isValidMonth&&this.isValidDate)){this.invalidDateText="Please enter a valid date."}else if(this.isDisabledDate&&this.selectedDate!==null){if(this.isBeforeMin){if(this.disablePast){this.invalidDateText=this.disablePastMessage}else{this.invalidDateText=`Please enter a date after ${this.formatMinMax(this.minDate)}.`}}else if(this.isAfterMax){if(this.disableFuture){this.invalidDateText=this.disableFutureMessage}else{this.invalidDateText=`Please enter a date before ${this.formatMinMax(this.maxDate)}.`}}else if(this.disableDays.length!==0){this.invalidDateText=this.disableDaysMessage}else{if(this.disablePast){this.invalidDateText=this.disablePastMessage}if(this.disableFuture){this.invalidDateText=this.disableFutureMessage}}}else{this.invalidDateText=""}};this.setInputsInOrder=()=>{const t=this.el.shadowRoot.querySelectorAll("input");t.forEach((t=>this.inputsInOrder.push(t)))};this.setAriaLabelledBy=()=>{var t;if(this.disabled&&!a((t=this.inputCompContainerEl)===null||t===void 0?void 0:t.getAttribute(this.ARIA_LABELLED_BY))){this.removeAriaLabelledBy();return}if(this.disabled){return}const i=this.el.shadowRoot.querySelector("label");const s=`${this.inputId}-label`;if(i!==null&&i!==undefined){i.id=s;const t=!a(this.validationStatus)&&!a(this.validationText)||!a(this.invalidDateText);const e=`${s} ${this.screenReaderInfoId} ${r(this.inputId,this.helperText!==""&&this.helperText!==this.defaultHelperText,t)} ${this.selectedDate?this.selectedDateInfoId:""} ${this.assistiveHintId}`;this.inputCompContainerEl.setAttribute(this.ARIA_LABELLED_BY,e)}};this.setPreventInput=(t,i)=>{switch(t){case this.dayInputEl:this.preventDayInput=i;break;case this.monthInputEl:this.preventMonthInput=i;break;case this.yearInputEl:this.preventYearInput=i}};this.getInputFromDatePart=t=>{const i=s("input",{class:"day-input",id:"day-input",ref:t=>this.dayInputEl=t,"aria-label":"day",placeholder:"DD",disabled:this.disabled,onPaste:this.handlePaste,inputmode:"number",pattern:"[0-9]*",onKeyDown:t=>this.handleKeyDown(t,this.preventDayInput)});const e=s("input",{id:"month-input",class:"month-input",ref:t=>this.monthInputEl=t,"aria-label":"month",placeholder:"MM",disabled:this.disabled,onPaste:this.handlePaste,inputmode:"number",pattern:"[0-9]*",onKeyDown:t=>this.handleKeyDown(t,this.preventMonthInput)});const h=s("input",{id:"year-input",class:"year-input",ref:t=>this.yearInputEl=t,"aria-label":"year",placeholder:"YYYY",maxLength:4,disabled:this.disabled,onPaste:this.handlePaste,inputmode:"number",pattern:"[0-9]*",onKeyDown:t=>this.handleKeyDown(t,this.preventYearInput)});let a;switch(t){case"D":a=i;break;case"M":a=e;break;case"Y":a=h}return a};this.getInputsInOrder=()=>{const t=this.dateFormat.split("/");const i=[];t.forEach((t=>{i.push(this.getInputFromDatePart(t.substring(0,1)))}));return i};this.getDescOfInputsOrder=()=>{let t;switch(this.dateFormat){case"DD/MM/YYYY":t="day, month, and year";break;case"MM/DD/YYYY":t="month, day, and year";break;case"YYYY/MM/DD":t="year, month, and day"}return t};this.getScreenReaderInfo=t=>{let i="";if(this.required){i+="required"}if(t===u.Error){i+=" invalid data"}return i===""?"":i+", "};this.preventInput=(t,i)=>{const s=t.key;const e=t.target;let h;if(e){h=e.value.substring(e.selectionStart,e.selectionEnd)}if(s==="e"||s==="."||s==="-"||t.key>="0"&&t.key<="9"&&i&&!h){t.preventDefault()}};this.isSelectedDateDisabled=()=>{const t=new Date;this.isAfterMax=false;this.isBeforeMin=false;let i=false;const s=this.selectedDate.toDateString()!==t.toDateString();if(this.minDate&&this.selectedDate<this.minDate&&s){this.isBeforeMin=true;i=true}if(this.maxDate&&this.selectedDate>this.maxDate&&s){this.isAfterMax=true;i=true}if(this.disableDays.includes(this.selectedDate.getDay())){i=true}if((this.disablePast&&this.selectedDate<t||this.disableFuture&&this.selectedDate>t)&&s){i=true}return i};this.moveToNextInput=t=>{const i=this.inputsInOrder.findIndex((i=>i===t));const s=this.inputsInOrder[i+1];this.preventAutoFormatting=false;if(s){s.focus()}};this.moveToPreviousInput=t=>{const i=this.inputsInOrder.findIndex((i=>i===t));this.preventAutoFormatting=false;if(this.inputsInOrder[i-1]){this.inputsInOrder[i-1].focus()}};this.autocompleteInput=t=>{if(t===this.yearInputEl){this.autocompleteYear()}else{const i=t.value;if(i.length===1){if(+i===0){t.value="01"}else{t.value=`0${i}`}}}if(t.value){this.setInputValue(t)}};this.autocompleteYear=()=>{const t=this.yearInputEl.value;const i=["2","0","0"];let s="";if(t){i.forEach(((i,e)=>{if(t.length+e<=3){s+=i}}));this.yearInputEl.value=`${s}${t}`}};this.convertToDate=(t,i,s)=>{if(!a(t)&&!a(i)&&!a(s)){return new Date(+t,+i-1,+s)}else{return null}};this.handleHostBlur=()=>{this.removeLabelledBy=false;this.icBlur.emit({value:this.selectedDate})};this.handleHostFocus=()=>{var t;if((t=this.el.shadowRoot.activeElement)===null||t===void 0?void 0:t.id.match(/(day|month|year)-input$/)){this.removeLabelledBy=false}else{this.removeLabelledBy=true}this.icFocus.emit({value:this.selectedDate})};this.handleFormReset=()=>{this.setDate(this.initialValue);this.setValidationMessage();this.handleDateChange(false)};this.getAriaLabel=t=>t.getAttribute(this.ARIA_LABEL);this.notifyScreenReaderArrowKeys=t=>{const i=this.el.shadowRoot.querySelector("#live-region");let s="";const e=this.getAriaLabel(t);if(i&&t.value){if(t===this.monthInputEl&&!!m[+t.value-1]){s=`${t.value} - ${m[+t.value-1]}, ${e}`}if(t===this.dayInputEl||t===this.yearInputEl){s=`${t.value}, ${e}`}i.textContent=s}};this.notifyScreenReaderInput=(t,i)=>{let s="";const e=this.getAriaLabel(t);if(t===this.dayInputEl||t===this.monthInputEl){if(t.value.length===2){if(t===this.monthInputEl&&!!m[+t.value-1]&&this.isValidMonth){s=`${t.value} - ${m[+t.value-1]}, ${e}`}if(t===this.dayInputEl&&this.isValidDay){s=`${t.value}, ${e}`}}else{s=""}}else{if(t.value.length===4){s=`${t.value}, ${e}`}else{s=""}}i.textContent=s};this.setFitToValueStyling=t=>{if(t.value){t.classList.add(this.FIT_TO_VALUE)}else{t.classList.remove(this.FIT_TO_VALUE)}};this.setAriaInvalid=(t,i,s,e)=>{if(this.inputsInOrder.length){this.inputsInOrder.forEach((t=>{t.removeAttribute(this.ARIA_INVALID)}));if(!t){this.dayInputEl.setAttribute(this.ARIA_INVALID,"true")}if(!i){this.monthInputEl.setAttribute(this.ARIA_INVALID,"true")}if(!s||e){this.inputsInOrder.forEach((t=>{t.setAttribute(this.ARIA_INVALID,"true")}))}}};this.handleClear=()=>{this.inputsInOrder.forEach((t=>{t.classList.remove(this.FIT_TO_VALUE);this.setInputValue(t,true);this.setPreventInput(t,false)}));this.isDateSetFromKeyboardEvent=false;this.setValidationMessage();this.handleDateChange(true);this.inputsInOrder[0].focus()};this.handleCalendarOpen=t=>{var i,s;t.stopImmediatePropagation();(i=this.calendarButtonEl)===null||i===void 0?void 0:i.shadowRoot.querySelector("ic-tooltip").displayTooltip(false);this.calendarButtonClicked.emit({value:this.selectedDate});(s=this.calendarButtonEl)===null||s===void 0?void 0:s.shadowRoot.querySelector("ic-tooltip").displayTooltip(false);this.isDateSetFromKeyboardEvent=false};this.setValueAndEmitChange=t=>{if(!v(new Date(this.value),t)){this.emitIcChange(t);this.value=t}};this.handleCalendarFocus=()=>{this.calendarFocused=true};this.handleCalendarBlur=()=>{this.calendarFocused=false};this.handleClearFocus=()=>{this.removeLabelledBy=true;this.clearButtonFocused=true};this.handleClearBlur=t=>{var i;this.clearButtonFocused=false;if((i=t.relatedTarget)===null||i===void 0?void 0:i.id.match(/(day|year)-input$/)){this.removeLabelledBy=false;return}this.removeLabelledBy=true};this.emitIcChange=t=>{if(!(t===null&&this.previousEmittedDate===null)&&!v(t,this.previousEmittedDate)){this.previousEmittedDate=t;this.icChange.emit({value:t})}};this.day="";this.invalidDateText=undefined;this.maxDate=undefined;this.minDate=undefined;this.month="";this.year="";this.calendarFocused=false;this.clearButtonFocused=false;this.removeLabelledBy=false;this.dateFormat="DD/MM/YYYY";this.disabled=false;this.disableDays=[];this.disableDaysMessage="The date you have selected is on a day of the week that is not allowed. Please select another date.";this.disableFuture=false;this.disableFutureMessage="Dates in the future are not allowed. Please select a date in the past.";this.disablePast=false;this.disablePastMessage="Dates in the past are not allowed. Please select a date in the future.";this.helperText=undefined;this.inputId=`ic-date-input-${M++}`;this.label=undefined;this.max="";this.min="";this.name=this.inputId;this.required=false;this.showCalendarButton=false;this.showClearButton=true;this.size="default";this.value="";this.validationStatus="";this.validationText=""}watchDisableFutureHandler(){this.watchMaxHandler()}watchDisablePastHandler(){this.watchMinHandler()}watchMaxHandler(){if(this.disableFuture){this.maxDate=new Date}else{this.maxDate=k(this.max,this.dateFormat)}}watchMinHandler(){if(this.disablePast){this.minDate=new Date}else{this.minDate=k(this.min,this.dateFormat)}}watchRequiredHandler(){const t=this.el.shadowRoot.querySelector("label");if(this.required){const i=document.createElement("span");i.setAttribute("id","asterisk-span");i.setAttribute("aria-hidden","true");i.textContent=" *";t===null||t===void 0?void 0:t.appendChild(i)}else{const t=this.el.shadowRoot.querySelector("#asterisk-span");if(t){t.remove()}}}disconnectedCallback(){o(this.el,this.handleFormReset)}componentWillLoad(){this.defaultHelperText=`Use format ${this.dateFormat}`;if(a(this.helperText))this.helperText=this.defaultHelperText;this.watchMinHandler();this.watchMaxHandler();if(this.value){this.setDate(this.value);this.previousEmittedDate=this.selectedDate}else{this.previousEmittedDate=null}this.screenReaderInfoId=`${this.inputId}-screen-reader-info`;this.assistiveHintId=`${this.inputId}-assistive-hint`;this.selectedDateInfoId=`${this.inputId}-selected-date-info`;l(this.el,this.handleFormReset)}componentDidLoad(){this.setInputsInOrder();c([{prop:this.label,propName:"label"}],"Date Input");if(this.value){this.updateInputValues(this.day,this.month,this.year);this.inputsInOrder.forEach((t=>{t.classList.add(this.FIT_TO_VALUE)}))}this.setAriaInvalid(this.isValidDay,this.isValidMonth,this.isValidDate,this.isDisabledDate);if(this.value){this.notifyScreenReaderSelectedDate()}this.inputsInOrder.forEach((t=>{t.addEventListener("input",this.handleInput);t.addEventListener("focus",this.handleFocus);t.addEventListener("blur",this.handleBlur)}));this.watchRequiredHandler()}componentWillUpdate(){if(a(this.helperText))this.helperText=this.defaultHelperText;if(!this.isDateSetFromKeyboardEvent)this.setDate(this.value);this.setAriaInvalid(this.isValidDay,this.isValidMonth,this.isValidDate,this.isDisabledDate);this.handleDateChange(false);this.isDateSetFromKeyboardEvent=false}componentDidRender(){if(this.removeLabelledBy){this.removeAriaLabelledBy();return}this.setAriaLabelledBy()}async getDate(){return this.selectedDate}async setCalendarFocus(){if(this.calendarButtonEl){this.calendarButtonEl.focus()}}async setDisableDays(t){this.disableDays=t}async triggerIcChange(t){this.emitIcChange(t)}removeAriaLabelledBy(){this.inputCompContainerEl.removeAttribute(this.ARIA_LABELLED_BY)}setPastedValueAndValidation(t,i,s){switch(true){case t:{const t=this.isZuluTime?x(i):i;const s=t.split(/-|\/|\./);this.inputsInOrder.forEach(((t,i)=>{t.classList.add(this.FIT_TO_VALUE);if(this.isZuluTime){this.pasteZuluDateTime(s,i)}else{let e;if(t===this.dayInputEl||t===this.monthInputEl){e=this.slicePastedDate(2,s[i])}else{e=this.slicePastedDate(4,s[i])}t.value=e;this.setInputValue(t);this.autocompleteInput(t)}}));this.isZuluTime=false;break}case(i.length===1||i.length===2||i.length===4)&&d(i):if(this.checkSingleCopiedValueIsValid(s.target,i)){this.setInputPasteValue(s.target,i);this.setInputValue(s.target)}else{this.displayPastedValidation(s)}break;case i.length===3&&d(i):if(s.target!==this.yearInputEl){this.displayPastedValidation(s)}else{this.setInputPasteValue(s.target,i);this.setInputValue(s.target)}break;case i.length>=5&&d(i):this.displayPastedValidation(s)}}pasteZuluDateTime(t,i){if(i===0){const s=this.slicePastedDate(4,t[i]);this.yearInputEl.value=s;this.setInputValue(this.yearInputEl)}else if(i===1){const s=this.slicePastedDate(2,t[i]);this.monthInputEl.value=s;this.setInputValue(this.monthInputEl)}else{const s=this.slicePastedDate(2,t[i]);this.dayInputEl.value=s;this.setInputValue(this.dayInputEl)}}displayPastedValidation(t){var i;if(((i=this.invalidDateText)===null||i===void 0?void 0:i.length)>0){this.previousInvalidDateTest=this.invalidDateText}this.invalidDateText=`Please paste a valid ${this.getAriaLabel(t.target)}`;this.validationStatus=u.Error;this.isPasteValidationDisplayed=true}setPasteInvalidText(){var t;if(this.isPasteValidationDisplayed){this.invalidDateText=(t=this.previousInvalidDateTest)!==null&&t!==void 0?t:"";this.isPasteValidationDisplayed=false;this.isDateSetFromKeyboardEvent=true}}notifyScreenReader(t,i){const s=this.el.shadowRoot.querySelector("#live-region");if(s){if(this.isKeyboardOrEvent(i)){this.notifyScreenReaderArrowKeys(t)}else if(Object.prototype.toString.call(i)===this.INPUT_EVENT_OBJECT_STRING){this.notifyScreenReaderInput(t,s)}}}render(){const{inputId:t,label:i,disabled:h,helperText:n,showClearButton:r,showCalendarButton:o,size:l}=this;const c=!a(this.validationStatus)&&!a(this.validationText);const d=c?this.validationStatus:!a(this.invalidDateText)?u.Error:"";const b=`Type or use the up and down arrow keys to change the values for the ${this.getDescOfInputsOrder()}.`;f(true,this.el,this.name,this.convertToDate(this.year,this.month,this.day),this.disabled);return s(e,{onBlur:this.handleHostBlur,onFocus:this.handleHostFocus},s("ic-input-container",{disabled:h},s("ic-input-label",{for:t,label:i,helperText:n,disabled:h}),s("span",{id:this.screenReaderInfoId,class:"sr-only","aria-hidden":"true"},this.getScreenReaderInfo(d),`${this.defaultHelperText}.`),s("span",{id:this.assistiveHintId,class:"sr-only","aria-hidden":"true"},b),s("span",{id:"live-region","aria-live":"assertive",class:"sr-only"}),s("ic-input-component-container",{id:t,ref:t=>this.inputCompContainerEl=t,disabled:h,validationStatus:d,size:l,role:"group"},s("div",{class:"input-container"},s("div",{class:"date-inputs"},this.getInputsInOrder()[0],"/",this.getInputsInOrder()[1],"/",this.getInputsInOrder()[2]),s("div",{class:"action-buttons"},r&&s("ic-button",{id:"clear-button","aria-label":"Clear input",class:{["clear-button"]:true,["hidden"]:a(this.day)&&a(this.month)&&a(this.year)},disabled:this.disabled,innerHTML:$,onClick:this.handleClear,onFocus:this.handleClearFocus,onBlur:this.handleClearBlur,variant:"icon",appearance:this.clearButtonFocused?p.Light:p.Dark,size:l}),o&&s("div",{class:"show-calendar-button-wrapper"},s("div",{class:{divider:true,[l]:true}}),s("ic-button",{id:"calendar-button",ref:t=>this.calendarButtonEl=t,"aria-label":"Display calendar","aria-haspopup":"dialog",class:"calendar-button",disabled:this.disabled,innerHTML:D,onClick:this.handleCalendarOpen,variant:"icon",size:l,onFocus:this.handleCalendarFocus,onBlur:this.handleCalendarBlur,appearance:this.calendarFocused?p.Light:p.Default}))))),s("span",{id:this.selectedDateInfoId,class:"sr-only","aria-live":"polite"},s("span",{ref:t=>this.selectedDateInfoEl=t,role:"status"})),(c||!a(this.invalidDateText))&&s("ic-input-validation",{status:d,message:c?this.validationText:this.invalidDateText,for:t})))}static get delegatesFocus(){return true}get el(){return h(this)}static get watchers(){return{disableFuture:["watchDisableFutureHandler"],disablePast:["watchDisablePastHandler"],max:["watchMaxHandler"],min:["watchMinHandler"],required:["watchRequiredHandler"]}}};z.style=Y;export{z as ic_date_input};
2
+ //# sourceMappingURL=p-73dad5cf.entry.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["icDateInputCss","inputIds","DateInput","this","ARIA_INVALID","ARIA_LABEL","ARIA_LABELLED_BY","EVENT_OBJECT_STRING","FIT_TO_VALUE","initialValue","value","INPUT_EVENT_OBJECT_STRING","inputsInOrder","isAfterMax","isBeforeMin","isDateSetFromKeyboardEvent","isDisabledDate","isValidDay","isValidMonth","isValidDate","isZuluTime","KEYBOARD_EVENT_OBJECT_STRING","MAX_DAY","MAX_MONTH","previousEmittedDate","undefined","previousSelectedDate","selectedDate","setInputPasteValue","input","pastedValue","inputEl","classList","add","checkSingleCopiedValueIsValid","isValid","Number","dayInputEl","monthInputEl","yearInputEl","isKeyboardOrEvent","event","Object","prototype","toString","call","setDateValidity","isEmptyString","day","month","handleInput","inputEvent","target","inputType","preventAutoFormatting","length","setInputValue","notifyScreenReader","moveToNextInput","setPreventInput","setFitToValueStyling","setValidationMessage","handleKeyDown","isInputPrevented","eventKey","key","toLowerCase","regex","test","ctrlKey","metaKey","preventDefault","setPasteInvalidText","handleLeftRightArrowKeyPress","handleUpDownArrowKeyPress","preventInput","handleFocus","select","handleBlur","autocompleteInput","moveToPreviousInput","notifyScreenReaderSelectedDate","dayNames","stringEnumToArray","IcDayNames","months","IcDateInputMonths","selectedDateInfoEl","textContent","getDay","getDate","getMonth","getFullYear","minValue","maxValue","Date","handleDateChange","force","dateMatches","forEach","year","invalidDateText","setValueAndEmitChange","updateInputValues","slicePastedDate","valueLength","datePart","slice","isPastedStringDateValid","handlePaste","clipboardData","getData","setPastedValueAndValidation","setDate","date","remove","isDateOrEpoch","newDate","convertToDoubleDigits","defaultDateArray","splitStringDate","dateFormat","formatMinMax","formattedDate","clear","newValue","convertToDate","isSelectedDateDisabled","setAttribute","removeAttribute","disablePast","disablePastMessage","minDate","disableFuture","disableFutureMessage","maxDate","disableDays","disableDaysMessage","setInputsInOrder","inputs","el","shadowRoot","querySelectorAll","push","setAriaLabelledBy","disabled","_a","inputCompContainerEl","getAttribute","removeAriaLabelledBy","labelEl","querySelector","labelId","inputId","id","hasValidation","validationStatus","validationText","labelledBy","screenReaderInfoId","getInputDescribedByText","helperText","defaultHelperText","selectedDateInfoId","assistiveHintId","isPrevented","preventDayInput","preventMonthInput","preventYearInput","getInputFromDatePart","dayInput","h","class","ref","placeholder","onPaste","inputmode","pattern","onKeyDown","monthInput","yearInput","maxLength","getInputsInOrder","dateParts","split","part","substring","getDescOfInputsOrder","description","getScreenReaderInfo","inputDescriptors","required","IcInformationStatus","Error","selectedString","selectionStart","selectionEnd","currentDate","isNotToday","toDateString","includes","currentInput","currentInputPos","findIndex","nextInput","focus","autocompleteYear","inputValue","yearNumbers","autocompletedInput","number","index","handleHostBlur","removeLabelledBy","icBlur","emit","handleHostFocus","activeElement","match","icFocus","handleFormReset","getAriaLabel","notifyScreenReaderArrowKeys","liveRegion","announcement","ariaLabel","notifyScreenReaderInput","setAriaInvalid","validDay","validMonth","validDate","disabledDate","handleClear","handleCalendarOpen","ev","stopImmediatePropagation","calendarButtonEl","displayTooltip","calendarButtonClicked","_b","emitIcChange","handleCalendarFocus","calendarFocused","handleCalendarBlur","handleClearFocus","clearButtonFocused","handleClearBlur","relatedTarget","d","icChange","watchDisableFutureHandler","watchMaxHandler","watchDisablePastHandler","watchMinHandler","createDate","max","min","watchRequiredHandler","asteriskSpan","document","createElement","appendChild","disconnectedCallback","removeFormResetListener","componentWillLoad","addFormResetListener","componentDidLoad","onComponentRequiredPropUndefined","prop","label","propName","addEventListener","componentWillUpdate","componentDidRender","setCalendarFocus","setDisableDays","days","triggerIcChange","nextParsedValue","extractDateFromZuluDateTime","pasteZuluDateTime","dateValue","isNumeric","displayPastedValidation","previousInvalidDateTest","isPasteValidationDisplayed","render","showClearButton","showCalendarButton","size","hasCustomValidation","assistiveHint","renderHiddenInput","name","Host","onBlur","onFocus","for","role","innerHTML","Clear","onClick","variant","appearance","IcThemeForegroundEnum","Light","Dark","divider","Calendar","Default","status","message"],"sources":["src/components/ic-date-input/ic-date-input.css?tag=ic-date-input&encapsulation=shadow","src/components/ic-date-input/ic-date-input.tsx"],"sourcesContent":["@import \"../../../dist/core/normalize.css\";\n\ninput {\n border: 0;\n height: 100%;\n padding: 0;\n outline: none;\n background: none;\n -moz-appearance: textfield;\n appearance: textfield;\n}\n\ninput::-webkit-outer-spin-button,\ninput::-webkit-inner-spin-button {\n -webkit-appearance: none;\n}\n\nic-input-component-container {\n cursor: text;\n}\n\nic-input-component-container,\nic-input-component-container:hover {\n color: var(--ic-color-tertiary-text);\n}\n\nic-input-component-container .focus-indicator {\n padding: var(--ic-space-xxxs) var(--ic-space-xs);\n align-items: center;\n}\n\n.day-input {\n width: 1.438rem;\n}\n\n.month-input {\n width: 1.813rem;\n}\n\n.year-input,\n.year-input.fit-to-value {\n width: 2.313rem;\n}\n\n.fit-to-value {\n width: 1.25rem;\n}\n\n.sr-only {\n position: absolute;\n left: -9999px;\n}\n\n.input-container {\n width: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n position: relative;\n}\n\n.action-buttons {\n display: flex;\n align-items: center;\n}\n\n.show-calendar-button-wrapper {\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.clear-button,\n.calendar-button {\n border-radius: var(--ic-border-radius);\n transition: box-shadow var(--ic-easing-transition),\n border-radius var(--ic-easing-transition);\n margin: 0;\n}\n\n.clear-button.hidden {\n display: none;\n}\n\n.clear-button:focus,\n.calendar-button:focus,\n.clear-button:active,\n.calendar-button:active {\n background-color: var(--ic-focus-blue) !important;\n box-shadow: inset 0 0 0 0.125rem var(--ic-focus-glow) !important;\n border-radius: 0.25rem;\n}\n\n.clear-button:focus,\n.calendar-button:focus,\n.clear-button:active *,\n.calendar-button:active * {\n fill: var(--ic-architectural-white);\n}\n\n.divider {\n margin: 0 var(--ic-space-xxs);\n width: var(--ic-space-1px);\n background-color: var(--ic-architectural-400);\n border-radius: var(--ic-space-1px);\n}\n\n.divider.small {\n height: var(--ic-space-md);\n}\n\n.divider.default {\n height: calc(var(--ic-space-sm) + var(--ic-space-xs));\n}\n\n.divider.large {\n height: var(--ic-space-lg);\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Prop,\n State,\n Host,\n Method,\n Watch,\n} from \"@stencil/core\";\nimport {\n IcInformationStatus,\n IcInformationStatusOrEmpty,\n IcSizes,\n IcThemeForegroundEnum,\n IcDateFormat,\n IcDateInputMonths,\n IcDayNames,\n IcWeekDays,\n} from \"../../utils/types\";\nimport {\n convertToDoubleDigits,\n createDate,\n dateMatches,\n extractDateFromZuluDateTime,\n isDateOrEpoch,\n splitStringDate,\n} from \"../../utils/date-helpers\";\nimport {\n addFormResetListener,\n getInputDescribedByText,\n isEmptyString,\n isNumeric,\n onComponentRequiredPropUndefined,\n removeFormResetListener,\n renderHiddenInput,\n stringEnumToArray,\n} from \"../../utils/helpers\";\nimport Clear from \"../../assets/clear-icon.svg\";\nimport Calendar from \"../../assets/calendar.svg\";\n\nlet inputIds = 0;\n\n@Component({\n tag: \"ic-date-input\",\n styleUrl: \"ic-date-input.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class DateInput {\n private ARIA_INVALID = \"aria-invalid\";\n private ARIA_LABEL = \"aria-label\";\n private ARIA_LABELLED_BY = \"aria-labelledby\";\n private assistiveHintId: string;\n private calendarButtonEl: HTMLIcButtonElement;\n private dayInputEl: HTMLInputElement;\n private defaultHelperText: string;\n private EVENT_OBJECT_STRING = \"[object Event]\";\n private FIT_TO_VALUE = \"fit-to-value\";\n\n private initialValue = this.value;\n private inputCompContainerEl: HTMLIcInputComponentContainerElement;\n private INPUT_EVENT_OBJECT_STRING = \"[object InputEvent]\";\n private inputsInOrder: HTMLInputElement[] = [];\n\n private isAfterMax: boolean = false;\n private isBeforeMin: boolean = false;\n private isDateSetFromKeyboardEvent: boolean = false;\n private isDisabledDate: boolean = false;\n private isPasteValidationDisplayed: boolean;\n private isValidDay: boolean = true;\n private isValidMonth: boolean = true;\n private isValidDate: boolean = true;\n private isZuluTime: boolean = false;\n\n private KEYBOARD_EVENT_OBJECT_STRING = \"[object KeyboardEvent]\";\n private MAX_DAY = 31;\n private MAX_MONTH = 12;\n private monthInputEl: HTMLInputElement;\n\n private preventAutoFormatting: boolean;\n private preventDayInput: boolean;\n private preventMonthInput: boolean;\n private preventYearInput: boolean;\n\n private previousInvalidDateTest: string;\n private previousEmittedDate: Date = undefined;\n private previousSelectedDate: Date = null;\n\n private selectedDate: Date = null;\n private selectedDateInfoEl: HTMLSpanElement;\n private screenReaderInfoId: string;\n private selectedDateInfoId: string;\n\n private yearInputEl: HTMLInputElement;\n\n @Element() el: HTMLIcDateInputElement;\n\n @State() day: string = \"\";\n @State() invalidDateText: string;\n @State() maxDate: Date;\n @State() minDate: Date;\n @State() month: string = \"\";\n @State() year: string = \"\";\n @State() calendarFocused: boolean = false;\n @State() clearButtonFocused: boolean = false;\n @State() removeLabelledBy: boolean = false;\n\n /**\n * The format in which the date will be displayed.\n */\n // eslint-disable-next-line sonarjs/no-duplicate-string\n @Prop() dateFormat?: IcDateFormat = \"DD/MM/YYYY\";\n\n /**\n * If `true`, the disabled state will be set.\n */\n @Prop() disabled?: boolean = false;\n\n /**\n * The days of the week to disable.\n */\n @Prop({ mutable: true }) disableDays?: IcWeekDays[] = [];\n\n /**\n * The text to display as the validation message when `disableDays` is set and a disabled date is entered.\n */\n @Prop() disableDaysMessage?: string =\n \"The date you have selected is on a day of the week that is not allowed. Please select another date.\";\n\n /**\n * If `true`, dates in the future are not allowed. A validation message will appear if a date in the future is entered.\n */\n @Prop() disableFuture?: boolean = false;\n\n @Watch(\"disableFuture\")\n watchDisableFutureHandler(): void {\n this.watchMaxHandler();\n }\n\n /**\n * The text to display as the validation message when `disableFuture` is true and a date in the future is entered.\n */\n @Prop() disableFutureMessage?: string =\n \"Dates in the future are not allowed. Please select a date in the past.\";\n\n /**\n * If `true`, dates in the past are not allowed. A validation message will appear if a date in the past is entered.\n */\n @Prop() disablePast?: boolean = false;\n\n @Watch(\"disablePast\")\n watchDisablePastHandler(): void {\n this.watchMinHandler();\n }\n\n /**\n * The text to display as the validation message when `disablePast` is true and a date in the past is entered.\n */\n @Prop() disablePastMessage?: string =\n \"Dates in the past are not allowed. Please select a date in the future.\";\n\n /**\n * The helper text that will be displayed for additional field guidance. This will default to the text \"Use format\" along with the `dateFormat` value.\n */\n @Prop({ mutable: true }) helperText?: string;\n\n /**\n * The ID for the input.\n */\n @Prop() inputId?: string = `ic-date-input-${inputIds++}`;\n\n /**\n * The label for the date input.\n */\n @Prop() label!: string;\n\n /**\n * The latest date that will be allowed. The value can be in any format supported as `dateFormat`, in ISO 8601 date string format (`yyyy-mm-dd`) or as a JavaScript `Date` object.\n * The value of this prop is ignored if `disableFuture` is set to `true`.\n */\n @Prop() max?: string | Date = \"\";\n\n @Watch(\"max\")\n watchMaxHandler(): void {\n if (this.disableFuture) {\n this.maxDate = new Date();\n } else {\n this.maxDate = createDate(this.max, this.dateFormat);\n }\n }\n\n /**\n * The earliest date that will be allowed. The value can be in any format supported as `dateFormat`, in ISO 8601 date string format (`yyyy-mm-dd`) or as a JavaScript `Date` object.\n * The value of this prop is ignored if `disablePast` is set to `true`.\n */\n @Prop() min?: string | Date = \"\";\n\n @Watch(\"min\")\n watchMinHandler(): void {\n if (this.disablePast) {\n this.minDate = new Date();\n } else {\n this.minDate = createDate(this.min, this.dateFormat);\n }\n }\n\n /**\n * The name of the control, which is submitted with the form data.\n */\n @Prop() name: string = this.inputId;\n\n /**\n * If `true`, the input will require a value.\n */\n @Prop() required?: boolean = false;\n\n @Watch(\"required\")\n watchRequiredHandler(): void {\n // Prevent asterisk being read out after the label by screen reader (by applying aria-hidden)\n // Needed because label is included in 'aria-labelledby' instead of using 'aria-label'\n const labelEl = this.el.shadowRoot.querySelector(\"label\");\n if (this.required) {\n const asteriskSpan = document.createElement(\"span\");\n asteriskSpan.setAttribute(\"id\", \"asterisk-span\");\n asteriskSpan.setAttribute(\"aria-hidden\", \"true\");\n asteriskSpan.textContent = \" *\";\n labelEl?.appendChild(asteriskSpan);\n } else {\n const asteriskSpan = this.el.shadowRoot.querySelector(\"#asterisk-span\");\n if (asteriskSpan) {\n asteriskSpan.remove();\n }\n }\n }\n\n /**\n * @internal If `true`, a button which displays the calendar view when clicked will be displayed.\n */\n @Prop() showCalendarButton?: boolean = false;\n\n /**\n * If `true`, a button which clears the date input when clicked will be displayed.\n */\n @Prop() showClearButton?: boolean = true;\n\n /**\n * The size of the date input to be displayed.\n */\n @Prop() size?: IcSizes = \"default\";\n\n /**\n * The value of the date input. The value can be in any format supported as `dateFormat`, in ISO 8601 date string format (`yyyy-mm-dd`) or as a JavaScript `Date` object.\n */\n @Prop({ mutable: true }) value?: string | Date | null | undefined = \"\";\n\n /**\n * The validation status - e.g. 'error' | 'warning' | 'success'. This will override the built-in date validation.\n */\n @Prop({ mutable: true }) validationStatus?: IcInformationStatusOrEmpty = \"\";\n\n /**\n * The text to display as the validation message. This will override the built-in date validation.\n */\n @Prop() validationText?: string = \"\";\n\n /**\n * @internal Emitted when the calendar is opened.\n */\n @Event() calendarButtonClicked: EventEmitter<{ value: Date }>;\n\n /**\n * Emitted when the input loses focus.\n */\n @Event() icBlur: EventEmitter<{ value: Date }>;\n\n /**\n * Emitted when the value has changed.\n */\n @Event() icChange: EventEmitter<{ value: Date }>;\n\n /**\n * Emitted when the input gains focus.\n */\n @Event() icFocus: EventEmitter<{ value: Date }>;\n\n disconnectedCallback(): void {\n removeFormResetListener(this.el, this.handleFormReset);\n }\n\n componentWillLoad(): void {\n this.defaultHelperText = `Use format ${this.dateFormat}`;\n\n if (isEmptyString(this.helperText))\n this.helperText = this.defaultHelperText;\n\n this.watchMinHandler();\n this.watchMaxHandler();\n\n if (this.value) {\n this.setDate(this.value);\n this.previousEmittedDate = this.selectedDate;\n } else {\n this.previousEmittedDate = null;\n }\n\n this.screenReaderInfoId = `${this.inputId}-screen-reader-info`;\n this.assistiveHintId = `${this.inputId}-assistive-hint`;\n this.selectedDateInfoId = `${this.inputId}-selected-date-info`;\n\n addFormResetListener(this.el, this.handleFormReset);\n }\n\n componentDidLoad(): void {\n this.setInputsInOrder();\n\n onComponentRequiredPropUndefined(\n [{ prop: this.label, propName: \"label\" }],\n \"Date Input\"\n );\n\n if (this.value) {\n this.updateInputValues(this.day, this.month, this.year);\n this.inputsInOrder.forEach((input) => {\n input.classList.add(this.FIT_TO_VALUE);\n });\n }\n\n this.setAriaInvalid(\n this.isValidDay,\n this.isValidMonth,\n this.isValidDate,\n this.isDisabledDate\n );\n\n if (this.value) {\n this.notifyScreenReaderSelectedDate();\n }\n\n this.inputsInOrder.forEach((input) => {\n input.addEventListener(\"input\", this.handleInput);\n input.addEventListener(\"focus\", this.handleFocus);\n input.addEventListener(\"blur\", this.handleBlur);\n });\n\n this.watchRequiredHandler();\n }\n\n componentWillUpdate(): void {\n if (isEmptyString(this.helperText))\n this.helperText = this.defaultHelperText;\n\n if (!this.isDateSetFromKeyboardEvent) this.setDate(this.value);\n\n this.setAriaInvalid(\n this.isValidDay,\n this.isValidMonth,\n this.isValidDate,\n this.isDisabledDate\n );\n this.handleDateChange(false);\n this.isDateSetFromKeyboardEvent = false;\n }\n\n componentDidRender(): void {\n if (this.removeLabelledBy) {\n this.removeAriaLabelledBy();\n return;\n }\n\n this.setAriaLabelledBy();\n }\n\n /**\n * Returns the value as a Date object\n * @returns Date\n */\n @Method()\n async getDate(): Promise<Date> {\n return this.selectedDate;\n }\n\n /**\n * @internal Sets focus on the calendar button.\n */\n @Method()\n async setCalendarFocus(): Promise<void> {\n if (this.calendarButtonEl) {\n this.calendarButtonEl.focus();\n }\n }\n\n /**\n * @internal Used to pass disabledDays from parent component.\n */\n @Method()\n async setDisableDays(days: IcWeekDays[]): Promise<void> {\n this.disableDays = days;\n }\n\n /**\n * @internal Used to enable other components to invoke an IcChange event from the input.\n */\n @Method()\n async triggerIcChange(d: Date): Promise<void> {\n this.emitIcChange(d);\n }\n\n private setInputPasteValue = (input: EventTarget, pastedValue: string) => {\n const inputEl = input as HTMLInputElement;\n\n inputEl.value = pastedValue;\n inputEl.classList.add(this.FIT_TO_VALUE);\n };\n\n private checkSingleCopiedValueIsValid = (\n input: EventTarget,\n pastedValue: string\n ) => {\n let isValid = false;\n const value = Number(pastedValue);\n\n switch (input) {\n case this.dayInputEl:\n isValid = value >= 1 && value <= this.MAX_DAY;\n break;\n case this.monthInputEl:\n isValid = value >= 1 && value <= this.MAX_MONTH;\n break;\n case this.yearInputEl:\n isValid = true;\n break;\n default:\n isValid = false;\n break;\n }\n\n return isValid;\n };\n\n /**\n * Using Object.prototype.string to determine type if event from user\n * @param event - event object used to differentiate keyboard, generic or input event\n * @returns boolean\n */\n private isKeyboardOrEvent = (event: Event) => {\n return (\n Object.prototype.toString.call(event) === this.EVENT_OBJECT_STRING ||\n Object.prototype.toString.call(event) ===\n this.KEYBOARD_EVENT_OBJECT_STRING\n );\n };\n\n private setDateValidity = () => {\n if (!isEmptyString(this.day)) {\n this.isValidDay = +this.day > this.MAX_DAY ? false : true;\n } else {\n this.isValidDay = true;\n }\n\n if (!isEmptyString(this.month)) {\n this.isValidMonth = +this.month > this.MAX_MONTH ? false : true;\n } else {\n this.isValidMonth = true;\n }\n };\n\n private handleInput = (event: Event) => {\n const inputEvent = event as InputEvent;\n const input = event.target as HTMLInputElement;\n\n if (input !== this.yearInputEl) {\n // Only auto-format if input event is not a character being deleted\n // and not as user is changing value using up / down keys\n if (\n inputEvent.inputType !== \"deleteContentBackward\" &&\n !this.preventAutoFormatting\n ) {\n if (\n input.value.length === 1 &&\n ((input === this.dayInputEl && +input.value >= 4) ||\n (input === this.monthInputEl && +input.value >= 2)) &&\n +input.value <= 9\n ) {\n this.setInputValue(input);\n this.notifyScreenReader(input, event);\n this.moveToNextInput(input);\n }\n\n if (input.value.length === 2) {\n if (+input.value === 0) {\n input.value = \"01\";\n }\n this.setInputValue(input);\n this.setPreventInput(input, true);\n this.notifyScreenReader(input, event);\n this.moveToNextInput(input);\n } else {\n this.setPreventInput(input, false);\n }\n } else if (this.preventAutoFormatting) {\n /**\n * Using arrow keys prevents auto formatting so need to deal with\n * switching from arrow keys to inputting numbers\n **/\n if (input.value.length === 2 && !this.isKeyboardOrEvent(event)) {\n this.setInputValue(input);\n this.setPreventInput(input, true);\n this.moveToNextInput(input);\n } else {\n this.setInputValue(input);\n }\n }\n\n if (input.value.length !== 2) {\n this.setPreventInput(input, false);\n }\n } else {\n if (input.value.length === 4) {\n this.setInputValue(input);\n if (\n Object.prototype.toString.call(event) !== this.EVENT_OBJECT_STRING\n ) {\n this.moveToNextInput(input);\n }\n this.setPreventInput(input, true);\n } else {\n this.setInputValue(input, true);\n this.setPreventInput(input, false);\n }\n }\n\n // Add / remove class to make input width match size of value i.e. 2 digits' width for day / month, 4 for year\n this.setFitToValueStyling(input);\n\n if (input.value.length === 0) {\n this.setInputValue(input, true);\n this.setValidationMessage();\n }\n\n this.notifyScreenReader(input, event);\n };\n\n private handleKeyDown = (event: KeyboardEvent, isInputPrevented: boolean) => {\n const input = event.target as HTMLInputElement;\n\n const eventKey = event.key.toLowerCase();\n // Regex required due to FF allowing all characters as values for number text field.\n const regex =\n /-?\\d*\\.?\\d+(e[-+]?\\d+)?|[/-]|arrowup|arrowdown|arrowleft|arrowright|shift|tab|backspace|delete/;\n if (\n !regex.test(eventKey) &&\n !(\n (event.ctrlKey || event.metaKey) &&\n (eventKey === \"v\" || eventKey === \"c\")\n )\n ) {\n event.preventDefault();\n }\n\n switch (eventKey) {\n case \"/\":\n case \"-\":\n case \".\":\n event.preventDefault();\n this.setPasteInvalidText();\n this.moveToNextInput(input);\n break;\n case \"arrowright\":\n case \"arrowleft\":\n event.preventDefault();\n this.handleLeftRightArrowKeyPress(input, eventKey);\n break;\n case \"arrowup\":\n case \"arrowdown\":\n this.preventAutoFormatting = true;\n this.handleUpDownArrowKeyPress(input, event);\n break;\n default:\n break;\n }\n\n this.preventInput(event, isInputPrevented);\n this.isDateSetFromKeyboardEvent = true;\n };\n\n private handleFocus = (event: FocusEvent) => {\n // Highlight / select all characters in input for easy replacement\n const input = event.target as HTMLInputElement;\n\n input.select();\n };\n\n private handleBlur = (event: FocusEvent) => {\n const input = event.target as HTMLInputElement;\n\n this.setPasteInvalidText();\n this.autocompleteInput(input);\n };\n\n private handleLeftRightArrowKeyPress = (\n input: HTMLInputElement,\n key: string\n ) => {\n if (key === \"arrowright\") {\n this.moveToNextInput(input);\n } else {\n this.moveToPreviousInput(input);\n }\n\n this.setPasteInvalidText();\n };\n\n private notifyScreenReaderSelectedDate = () => {\n const dayNames = stringEnumToArray(IcDayNames);\n const months = stringEnumToArray(IcDateInputMonths);\n\n this.selectedDateInfoEl.textContent = `Selected date: ${\n dayNames[this.selectedDate.getDay()]\n }, ${this.selectedDate.getDate()} ${\n months[this.selectedDate.getMonth()]\n } ${this.selectedDate.getFullYear()}`;\n };\n\n private handleUpDownArrowKeyPress = (\n input: HTMLInputElement,\n event: KeyboardEvent\n ) => {\n const minValue = input === this.yearInputEl ? 0 : 1;\n\n let maxValue;\n\n switch (input) {\n case this.dayInputEl:\n maxValue = this.MAX_DAY;\n break;\n case this.monthInputEl:\n maxValue = this.MAX_MONTH;\n break;\n case this.yearInputEl:\n maxValue = 9999;\n }\n\n // Make value loop round when min / max reached\n if (input?.value) {\n if (event.key === \"ArrowUp\") {\n if (+input.value === maxValue) {\n event.preventDefault();\n input.value = `0${minValue}`;\n } else {\n input.value =\n +input.value + 1 < 10\n ? `0${+input.value + 1}`\n : (+input.value + 1).toString();\n }\n this.notifyScreenReader(input, event);\n }\n\n if (event.key === \"ArrowDown\") {\n if (+input.value === minValue) {\n event.preventDefault();\n input.value = maxValue.toString();\n } else {\n input.value =\n +input.value - 1 < 10\n ? `0${+input.value - 1}`\n : (+input.value - 1).toString();\n }\n this.notifyScreenReader(input, event);\n }\n } else {\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n if (input === this.yearInputEl) {\n input.value = new Date().getFullYear().toString();\n } else {\n input.value = maxValue.toString();\n }\n this.notifyScreenReader(input, event);\n } else if (event.key === \"ArrowUp\") {\n event.preventDefault();\n if (input === this.yearInputEl) {\n input.value = new Date().getFullYear().toString();\n } else {\n input.value = `0${minValue}`;\n }\n this.notifyScreenReader(input, event);\n }\n }\n\n this.setInputValue(input);\n this.setFitToValueStyling(input);\n };\n\n private handleDateChange = (force: boolean) => {\n // Prevent icChange being emitted when each individual input is changed\n // This method is used within componentWillUpdate instead of using @Watch('value');\n if (force || !dateMatches(this.selectedDate, this.previousSelectedDate)) {\n if (this.value) {\n this.inputsInOrder.forEach((input) => {\n input.classList.add(this.FIT_TO_VALUE);\n });\n }\n if (this.day && this.month && this.year && this.invalidDateText === \"\") {\n this.setValueAndEmitChange(this.selectedDate);\n this.notifyScreenReaderSelectedDate();\n } else if (\n !(this.selectedDate === null && this.previousSelectedDate === null)\n ) {\n this.setValueAndEmitChange(null);\n this.selectedDateInfoEl.textContent = \"\";\n }\n this.previousSelectedDate = this.selectedDate;\n\n if (!this.isDateSetFromKeyboardEvent) {\n this.updateInputValues(this.day, this.month, this.year);\n }\n }\n };\n\n private slicePastedDate = (valueLength: number, datePart: string): string => {\n return datePart.length > valueLength\n ? datePart.slice(0, valueLength)\n : datePart;\n };\n\n private isPastedStringDateValid = (value: string) => {\n if (\n /\\d+-\\d+-\\d+$/.test(value) ||\n /\\d+\\/\\d+\\/\\d+/.test(value) ||\n /\\d+\\.\\d+\\.\\d+/.test(value)\n ) {\n return true;\n }\n\n if (\n /[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}(?::[0-9]{2}(?:\\.\\d+)?)?Z/.test(\n value\n )\n ) {\n this.isZuluTime = true;\n return true;\n }\n\n return false;\n };\n\n // Set value of each input to value of pasted date part\n // Allows formats separated by '-' or '/'\n private handlePaste = (event: ClipboardEvent) => {\n event.preventDefault();\n\n const pastedValue = event.clipboardData.getData(\"Text\");\n const isValidDate = this.isPastedStringDateValid(pastedValue);\n\n this.setPastedValueAndValidation(isValidDate, pastedValue, event);\n };\n\n private setDate = (date: string | Date) => {\n if (date === null || date === \"\" || date === undefined) {\n this.day = null;\n this.month = null;\n this.year = null;\n this.inputsInOrder.forEach((input) => {\n input.classList.remove(this.FIT_TO_VALUE);\n this.setPreventInput(input, false);\n });\n this.handleDateChange(true);\n } else {\n if (isDateOrEpoch(date)) {\n let newDate;\n if (typeof date === \"string\") {\n // Checking if epoch date time\n newDate = new Date(+date);\n } else {\n newDate = date;\n }\n\n this.day = convertToDoubleDigits(newDate.getDate());\n this.month = convertToDoubleDigits(newDate.getMonth() + 1);\n this.year = newDate.getFullYear().toString();\n } else if (typeof date === \"string\") {\n const defaultDateArray = splitStringDate(date, this.dateFormat);\n this.year = defaultDateArray[0];\n this.month = defaultDateArray[1];\n this.day = defaultDateArray[2];\n }\n }\n\n this.setValidationMessage();\n };\n\n private formatMinMax = (date: Date) => {\n let formattedDate;\n\n const day = convertToDoubleDigits(date.getDate());\n const month = convertToDoubleDigits(date.getMonth() + 1);\n const year = date.getFullYear();\n\n switch (this.dateFormat) {\n case \"DD/MM/YYYY\":\n formattedDate = `${day}/${month}/${year}`;\n break;\n case \"MM/DD/YYYY\":\n formattedDate = `${month}/${day}/${year}`;\n break;\n case \"YYYY/MM/DD\":\n formattedDate = `${year}/${month}/${day}`;\n break;\n default:\n break;\n }\n return formattedDate;\n };\n private updateInputValues = (day: string, month: string, year: string) => {\n this.dayInputEl.value = day;\n this.monthInputEl.value = month;\n this.yearInputEl.value = year;\n };\n\n // Set value in state based on input\n private setInputValue = (input: HTMLInputElement, clear = false) => {\n const newValue = clear ? \"\" : input.value;\n\n switch (input) {\n case this.dayInputEl:\n this.day = newValue;\n break;\n case this.monthInputEl:\n this.month = newValue;\n break;\n case this.yearInputEl:\n if (this.year !== newValue) {\n this.year = newValue;\n }\n }\n\n this.setValidationMessage();\n };\n\n private setValidationMessage = () => {\n this.setDateValidity();\n\n if (\n !isEmptyString(this.day) &&\n !isEmptyString(this.month) &&\n !isEmptyString(this.year)\n ) {\n // Check whether date actually exists\n // (used https://www.hectane.com/blog/javascript-date-validation-with-leap-year)\n this.selectedDate = this.convertToDate(this.year, this.month, this.day);\n this.isValidDate =\n +this.selectedDate !== 0 && this.selectedDate.getDate() == +this.day;\n this.isDisabledDate = this.isSelectedDateDisabled();\n\n if (!this.isValidDate || this.isDisabledDate) {\n this.inputsInOrder.forEach((input) =>\n input.setAttribute(this.ARIA_INVALID, \"true\")\n );\n } else {\n this.inputsInOrder.forEach((input) =>\n input.removeAttribute(this.ARIA_INVALID)\n );\n }\n } else {\n this.selectedDate = null;\n }\n\n if (!(this.isValidDay && this.isValidMonth && this.isValidDate)) {\n this.invalidDateText = \"Please enter a valid date.\";\n } else if (this.isDisabledDate && this.selectedDate !== null) {\n if (this.isBeforeMin) {\n if (this.disablePast) {\n this.invalidDateText = this.disablePastMessage;\n } else {\n this.invalidDateText = `Please enter a date after ${this.formatMinMax(\n this.minDate\n )}.`;\n }\n } else if (this.isAfterMax) {\n if (this.disableFuture) {\n this.invalidDateText = this.disableFutureMessage;\n } else {\n this.invalidDateText = `Please enter a date before ${this.formatMinMax(\n this.maxDate\n )}.`;\n }\n } else if (this.disableDays.length !== 0) {\n this.invalidDateText = this.disableDaysMessage;\n } else {\n if (this.disablePast) {\n this.invalidDateText = this.disablePastMessage;\n }\n if (this.disableFuture) {\n this.invalidDateText = this.disableFutureMessage;\n }\n }\n } else {\n this.invalidDateText = \"\";\n }\n };\n\n // Set refs to the input elements in the order they are displayed (based on the dateFormat)\n private setInputsInOrder = () => {\n const inputs = this.el.shadowRoot.querySelectorAll(\"input\");\n inputs.forEach((input) => this.inputsInOrder.push(input));\n };\n\n // Includes text usually added using aria-describedby\n // (which doesn't work on input component container)\n private setAriaLabelledBy = () => {\n if (\n this.disabled &&\n !isEmptyString(\n this.inputCompContainerEl?.getAttribute(this.ARIA_LABELLED_BY)\n )\n ) {\n this.removeAriaLabelledBy();\n return;\n }\n\n if (this.disabled) {\n return;\n }\n\n const labelEl = this.el.shadowRoot.querySelector(\"label\");\n const labelId = `${this.inputId}-label`;\n\n if (labelEl !== null && labelEl !== undefined) {\n labelEl.id = labelId;\n\n const hasValidation =\n (!isEmptyString(this.validationStatus) &&\n !isEmptyString(this.validationText)) ||\n !isEmptyString(this.invalidDateText);\n\n const labelledBy = `${labelId} ${\n this.screenReaderInfoId\n } ${getInputDescribedByText(\n this.inputId,\n this.helperText !== \"\" && this.helperText !== this.defaultHelperText,\n hasValidation\n )} ${this.selectedDate ? this.selectedDateInfoId : \"\"} ${\n this.assistiveHintId\n }`;\n this.inputCompContainerEl.setAttribute(this.ARIA_LABELLED_BY, labelledBy);\n }\n };\n\n // Sets boolean for each input, used to limit the number of characters within each field (2 for day / month, 4 for year)\n private setPreventInput = (input: HTMLInputElement, isPrevented: boolean) => {\n switch (input) {\n case this.dayInputEl:\n this.preventDayInput = isPrevented;\n break;\n case this.monthInputEl:\n this.preventMonthInput = isPrevented;\n break;\n case this.yearInputEl:\n this.preventYearInput = isPrevented;\n }\n };\n\n // Get input based on letter representing each date part (\"D\", \"M\" or \"Y\")\n // (retrieved from dateFormat)\n private getInputFromDatePart = (datePart: string) => {\n const dayInput = (\n <input\n class=\"day-input\"\n id=\"day-input\"\n ref={(el) => (this.dayInputEl = el)}\n aria-label=\"day\"\n placeholder=\"DD\"\n disabled={this.disabled}\n onPaste={this.handlePaste}\n inputmode=\"number\"\n pattern=\"[0-9]*\"\n onKeyDown={(event) => this.handleKeyDown(event, this.preventDayInput)}\n ></input>\n );\n\n const monthInput = (\n <input\n id=\"month-input\"\n class=\"month-input\"\n ref={(el) => (this.monthInputEl = el)}\n aria-label=\"month\"\n placeholder=\"MM\"\n disabled={this.disabled}\n onPaste={this.handlePaste}\n inputmode=\"number\"\n pattern=\"[0-9]*\"\n onKeyDown={(event) => this.handleKeyDown(event, this.preventMonthInput)}\n ></input>\n );\n\n const yearInput = (\n <input\n id=\"year-input\"\n class=\"year-input\"\n ref={(el) => (this.yearInputEl = el)}\n aria-label=\"year\"\n placeholder=\"YYYY\"\n maxLength={4}\n disabled={this.disabled}\n onPaste={this.handlePaste}\n inputmode=\"number\"\n pattern=\"[0-9]*\"\n onKeyDown={(event) => this.handleKeyDown(event, this.preventYearInput)}\n ></input>\n );\n\n let input;\n\n switch (datePart) {\n case \"D\":\n input = dayInput;\n break;\n case \"M\":\n input = monthInput;\n break;\n case \"Y\":\n input = yearInput;\n }\n\n return input;\n };\n\n // Get input elements in order of chosen date format\n private getInputsInOrder = () => {\n const dateParts = this.dateFormat.split(\"/\");\n\n const inputsInOrder: HTMLInputElement[] = [];\n\n dateParts.forEach((part: string) => {\n inputsInOrder.push(this.getInputFromDatePart(part.substring(0, 1)));\n });\n\n return inputsInOrder;\n };\n\n // To add to the end of assistive hint to make it clearer that each date part has its own input\n // that can be changed individually\n private getDescOfInputsOrder = () => {\n let description;\n\n switch (this.dateFormat) {\n case \"DD/MM/YYYY\":\n description = \"day, month, and year\";\n break;\n case \"MM/DD/YYYY\":\n description = \"month, day, and year\";\n break;\n case \"YYYY/MM/DD\":\n description = \"year, month, and day\";\n }\n\n return description;\n };\n\n // Add 'required' or 'invalid data' to span used in aria-labelledby\n // Many ARIA attributes aren't read out by screen reader when on the input component container\n private getScreenReaderInfo = (validationStatus: string) => {\n let inputDescriptors = \"\";\n\n if (this.required) {\n inputDescriptors += \"required\";\n }\n\n if (validationStatus === IcInformationStatus.Error) {\n inputDescriptors += \" invalid data\";\n }\n\n return inputDescriptors === \"\" ? \"\" : inputDescriptors + \", \";\n };\n\n // Prevent non-number characters being entered\n // ('e' or '.' - which are usually allowed in <input type=\"number\">)\n // And limit the number of characters within each field (2 for day / month, 4 for year)\n // (because 'maxlength' doesn't work on <input type=\"number\">)\n private preventInput = (event: KeyboardEvent, isInputPrevented: boolean) => {\n const key = event.key;\n const input = event.target as HTMLInputElement;\n let selectedString;\n\n if (input) {\n selectedString = input.value.substring(\n input.selectionStart,\n input.selectionEnd\n );\n }\n\n if (\n key === \"e\" ||\n key === \".\" ||\n key === \"-\" ||\n (event.key >= \"0\" &&\n event.key <= \"9\" &&\n isInputPrevented &&\n !selectedString)\n ) {\n event.preventDefault();\n }\n };\n\n // Get whether date has been disabled using disableFuture or disablePast prop, but always allow current day\n // Consider using dateClamp and inDateRange\n private isSelectedDateDisabled = () => {\n const currentDate = new Date();\n this.isAfterMax = false;\n this.isBeforeMin = false;\n\n let disabled = false;\n const isNotToday =\n this.selectedDate.toDateString() !== currentDate.toDateString();\n\n if (this.minDate && this.selectedDate < this.minDate && isNotToday) {\n this.isBeforeMin = true;\n disabled = true;\n }\n\n if (this.maxDate && this.selectedDate > this.maxDate && isNotToday) {\n this.isAfterMax = true;\n disabled = true;\n }\n\n if (this.disableDays.includes(this.selectedDate.getDay())) {\n disabled = true;\n }\n\n if (\n ((this.disablePast && this.selectedDate < currentDate) ||\n (this.disableFuture && this.selectedDate > currentDate)) &&\n isNotToday\n ) {\n disabled = true;\n }\n\n return disabled;\n };\n\n private moveToNextInput = (currentInput: HTMLInputElement) => {\n const currentInputPos = this.inputsInOrder.findIndex(\n (input) => input === currentInput\n );\n const nextInput = this.inputsInOrder[currentInputPos + 1];\n\n this.preventAutoFormatting = false;\n\n if (nextInput) {\n nextInput.focus();\n }\n };\n\n private moveToPreviousInput = (currentInput: HTMLInputElement) => {\n const currentInputPos = this.inputsInOrder.findIndex(\n (input) => input === currentInput\n );\n\n this.preventAutoFormatting = false;\n\n if (this.inputsInOrder[currentInputPos - 1]) {\n this.inputsInOrder[currentInputPos - 1].focus();\n }\n };\n\n private autocompleteInput = (input: HTMLInputElement) => {\n if (input === this.yearInputEl) {\n this.autocompleteYear();\n } else {\n const inputValue = input.value;\n\n // Autocomplete input as 2 characters (leading zero) when only 1 character entered (for day and month)\n if (inputValue.length === 1) {\n if (+inputValue === 0) {\n input.value = \"01\";\n } else {\n input.value = `0${inputValue}`;\n }\n }\n }\n\n if (input.value) {\n this.setInputValue(input);\n }\n };\n\n // Autocomplete year as current millennium when fewer than 4 characters entered\n private autocompleteYear = () => {\n const inputValue = this.yearInputEl.value;\n const yearNumbers = [\"2\", \"0\", \"0\"];\n\n let autocompletedInput = \"\";\n\n if (inputValue) {\n yearNumbers.forEach((number, index) => {\n if (inputValue.length + index <= 3) {\n autocompletedInput += number;\n }\n });\n\n this.yearInputEl.value = `${autocompletedInput}${inputValue}`;\n }\n };\n\n private convertToDate = (\n year: string,\n month: string,\n day: string\n ): Date | null => {\n if (!isEmptyString(year) && !isEmptyString(month) && !isEmptyString(day)) {\n return new Date(+year, +month - 1, +day);\n } else {\n return null;\n }\n };\n\n private handleHostBlur = () => {\n this.removeLabelledBy = false;\n this.icBlur.emit({ value: this.selectedDate });\n };\n\n private handleHostFocus = () => {\n if (this.el.shadowRoot.activeElement?.id.match(/(day|month|year)-input$/)) {\n this.removeLabelledBy = false;\n } else {\n this.removeLabelledBy = true;\n }\n this.icFocus.emit({ value: this.selectedDate });\n };\n\n private handleFormReset = () => {\n // Get the initial value and populate day, month and year again.\n this.setDate(this.initialValue);\n this.setValidationMessage();\n this.handleDateChange(false);\n };\n\n private getAriaLabel = (input: HTMLInputElement): string => {\n return input.getAttribute(this.ARIA_LABEL);\n };\n\n private notifyScreenReaderArrowKeys = (input: HTMLInputElement) => {\n const liveRegion = this.el.shadowRoot.querySelector(\"#live-region\");\n let announcement = \"\";\n const ariaLabel = this.getAriaLabel(input);\n\n if (liveRegion && input.value) {\n if (\n input === this.monthInputEl &&\n !!IcDateInputMonths[+input.value - 1]\n ) {\n announcement = `${input.value} - ${\n IcDateInputMonths[+input.value - 1]\n }, ${ariaLabel}`;\n }\n\n if (input === this.dayInputEl || input === this.yearInputEl) {\n announcement = `${input.value}, ${ariaLabel}`;\n }\n\n liveRegion.textContent = announcement;\n }\n };\n\n private removeAriaLabelledBy() {\n this.inputCompContainerEl.removeAttribute(this.ARIA_LABELLED_BY);\n }\n\n private setPastedValueAndValidation(\n isValidDate: boolean,\n pastedValue: string,\n event: ClipboardEvent\n ) {\n switch (true) {\n case isValidDate: {\n const nextParsedValue = this.isZuluTime\n ? extractDateFromZuluDateTime(pastedValue)\n : pastedValue;\n const dateParts = nextParsedValue.split(/-|\\/|\\./);\n this.inputsInOrder.forEach((input, index) => {\n input.classList.add(this.FIT_TO_VALUE);\n\n if (this.isZuluTime) {\n this.pasteZuluDateTime(dateParts, index);\n } else {\n let dateValue;\n\n if (input === this.dayInputEl || input === this.monthInputEl) {\n dateValue = this.slicePastedDate(2, dateParts[index]);\n } else {\n dateValue = this.slicePastedDate(4, dateParts[index]);\n }\n\n input.value = dateValue;\n\n this.setInputValue(input);\n this.autocompleteInput(input);\n }\n });\n this.isZuluTime = false;\n break;\n }\n\n case (pastedValue.length === 1 ||\n pastedValue.length === 2 ||\n pastedValue.length === 4) &&\n isNumeric(pastedValue):\n if (this.checkSingleCopiedValueIsValid(event.target, pastedValue)) {\n // Check if copied value can be pasted into input\n this.setInputPasteValue(event.target, pastedValue);\n this.setInputValue(event.target as HTMLInputElement);\n } else {\n this.displayPastedValidation(event);\n }\n break;\n\n case pastedValue.length === 3 && isNumeric(pastedValue):\n if (event.target !== this.yearInputEl) {\n this.displayPastedValidation(event);\n } else {\n this.setInputPasteValue(event.target, pastedValue);\n this.setInputValue(event.target as HTMLInputElement);\n }\n break;\n\n case pastedValue.length >= 5 && isNumeric(pastedValue):\n this.displayPastedValidation(event);\n }\n }\n\n private pasteZuluDateTime(dateParts: string[], index: number) {\n // ['YYYY', 'MM', 'DD']\n if (index === 0) {\n const dateValue = this.slicePastedDate(4, dateParts[index]);\n this.yearInputEl.value = dateValue;\n this.setInputValue(this.yearInputEl);\n } else if (index === 1) {\n // The month value is the second item in the array\n const dateValue = this.slicePastedDate(2, dateParts[index]);\n this.monthInputEl.value = dateValue;\n this.setInputValue(this.monthInputEl);\n } else {\n const dateValue = this.slicePastedDate(2, dateParts[index]);\n this.dayInputEl.value = dateValue;\n this.setInputValue(this.dayInputEl);\n }\n }\n\n private displayPastedValidation(event: ClipboardEvent) {\n if (this.invalidDateText?.length > 0) {\n this.previousInvalidDateTest = this.invalidDateText;\n }\n\n this.invalidDateText = `Please paste a valid ${this.getAriaLabel(\n event.target as HTMLInputElement\n )}`;\n\n this.validationStatus = IcInformationStatus.Error;\n this.isPasteValidationDisplayed = true;\n }\n\n private setPasteInvalidText() {\n if (this.isPasteValidationDisplayed) {\n this.invalidDateText = this.previousInvalidDateTest ?? \"\";\n this.isPasteValidationDisplayed = false;\n\n // This is to prevent setDate from triggering within componentWillUpdate\n this.isDateSetFromKeyboardEvent = true;\n }\n }\n\n private notifyScreenReader(input: HTMLInputElement, event: Event) {\n const liveRegion = this.el.shadowRoot.querySelector(\"#live-region\");\n\n if (liveRegion) {\n if (this.isKeyboardOrEvent(event)) {\n this.notifyScreenReaderArrowKeys(input);\n } else if (\n Object.prototype.toString.call(event) === this.INPUT_EVENT_OBJECT_STRING\n ) {\n this.notifyScreenReaderInput(input, liveRegion as HTMLElement);\n }\n }\n }\n\n private notifyScreenReaderInput = (\n input: HTMLInputElement,\n liveRegion: HTMLElement\n ) => {\n let announcement = \"\";\n const ariaLabel = this.getAriaLabel(input);\n\n if (input === this.dayInputEl || input === this.monthInputEl) {\n if (input.value.length === 2) {\n if (\n input === this.monthInputEl &&\n !!IcDateInputMonths[+input.value - 1] &&\n this.isValidMonth\n ) {\n announcement = `${input.value} - ${\n IcDateInputMonths[+input.value - 1]\n }, ${ariaLabel}`;\n }\n\n if (input === this.dayInputEl && this.isValidDay) {\n announcement = `${input.value}, ${ariaLabel}`;\n }\n } else {\n announcement = \"\";\n }\n } else {\n if (input.value.length === 4) {\n announcement = `${input.value}, ${ariaLabel}`;\n } else {\n announcement = \"\";\n }\n }\n liveRegion.textContent = announcement;\n };\n\n private setFitToValueStyling = (input: HTMLInputElement) => {\n if (input.value) {\n input.classList.add(this.FIT_TO_VALUE);\n } else {\n input.classList.remove(this.FIT_TO_VALUE);\n }\n };\n\n private setAriaInvalid = (\n validDay: boolean,\n validMonth: boolean,\n validDate: boolean,\n disabledDate: boolean\n ) => {\n if (this.inputsInOrder.length) {\n this.inputsInOrder.forEach((input) => {\n input.removeAttribute(this.ARIA_INVALID);\n });\n\n if (!validDay) {\n this.dayInputEl.setAttribute(this.ARIA_INVALID, \"true\");\n }\n\n if (!validMonth) {\n this.monthInputEl.setAttribute(this.ARIA_INVALID, \"true\");\n }\n\n if (!validDate || disabledDate) {\n this.inputsInOrder.forEach((input) => {\n input.setAttribute(this.ARIA_INVALID, \"true\");\n });\n }\n }\n };\n\n private handleClear = () => {\n this.inputsInOrder.forEach((input) => {\n input.classList.remove(this.FIT_TO_VALUE);\n this.setInputValue(input, true);\n this.setPreventInput(input, false);\n });\n this.isDateSetFromKeyboardEvent = false;\n this.setValidationMessage();\n this.handleDateChange(true);\n\n this.inputsInOrder[0].focus();\n };\n\n private handleCalendarOpen = (ev: MouseEvent) => {\n ev.stopImmediatePropagation();\n this.calendarButtonEl?.shadowRoot\n .querySelector(\"ic-tooltip\")\n .displayTooltip(false);\n this.calendarButtonClicked.emit({ value: this.selectedDate });\n this.calendarButtonEl?.shadowRoot\n .querySelector(\"ic-tooltip\")\n .displayTooltip(false);\n this.isDateSetFromKeyboardEvent = false;\n };\n\n private setValueAndEmitChange = (value: Date) => {\n if (!dateMatches(new Date(this.value), value)) {\n this.emitIcChange(value);\n this.value = value;\n }\n };\n\n private handleCalendarFocus = () => {\n this.calendarFocused = true;\n };\n\n private handleCalendarBlur = () => {\n this.calendarFocused = false;\n };\n\n private handleClearFocus = () => {\n this.removeLabelledBy = true;\n this.clearButtonFocused = true;\n };\n\n private handleClearBlur = (ev: FocusEvent) => {\n this.clearButtonFocused = false;\n if ((ev.relatedTarget as HTMLElement)?.id.match(/(day|year)-input$/)) {\n this.removeLabelledBy = false;\n return;\n }\n\n this.removeLabelledBy = true;\n };\n\n private emitIcChange = (d: Date) => {\n if (\n !(d === null && this.previousEmittedDate === null) &&\n !dateMatches(d, this.previousEmittedDate)\n ) {\n this.previousEmittedDate = d;\n this.icChange.emit({ value: d });\n }\n };\n\n render() {\n const {\n inputId,\n label,\n disabled,\n helperText,\n showClearButton,\n showCalendarButton,\n size,\n } = this;\n\n const hasCustomValidation =\n !isEmptyString(this.validationStatus) &&\n !isEmptyString(this.validationText);\n\n const validationStatus = hasCustomValidation\n ? this.validationStatus\n : !isEmptyString(this.invalidDateText)\n ? IcInformationStatus.Error\n : \"\";\n\n const assistiveHint = `Type or use the up and down arrow keys to change the values for the ${this.getDescOfInputsOrder()}.`;\n\n renderHiddenInput(\n true,\n this.el,\n this.name,\n this.convertToDate(this.year, this.month, this.day),\n this.disabled\n );\n\n return (\n <Host onBlur={this.handleHostBlur} onFocus={this.handleHostFocus}>\n <ic-input-container disabled={disabled}>\n <ic-input-label\n for={inputId}\n label={label}\n helperText={helperText}\n disabled={disabled}\n ></ic-input-label>\n <span id={this.screenReaderInfoId} class=\"sr-only\" aria-hidden=\"true\">\n {this.getScreenReaderInfo(validationStatus)}\n {`${this.defaultHelperText}.`}\n </span>\n <span id={this.assistiveHintId} class=\"sr-only\" aria-hidden=\"true\">\n {assistiveHint}\n </span>\n <span id=\"live-region\" aria-live=\"assertive\" class=\"sr-only\"></span>\n <ic-input-component-container\n id={inputId}\n ref={(el: HTMLIcInputComponentContainerElement) =>\n (this.inputCompContainerEl = el)\n }\n disabled={disabled}\n validationStatus={validationStatus}\n size={size}\n role=\"group\"\n >\n <div class=\"input-container\">\n <div class=\"date-inputs\">\n {this.getInputsInOrder()[0]}/{this.getInputsInOrder()[1]}/\n {this.getInputsInOrder()[2]}\n </div>\n <div class=\"action-buttons\">\n {showClearButton && (\n <ic-button\n id=\"clear-button\"\n aria-label=\"Clear input\"\n class={{\n [\"clear-button\"]: true,\n [\"hidden\"]:\n isEmptyString(this.day) &&\n isEmptyString(this.month) &&\n isEmptyString(this.year),\n }}\n disabled={this.disabled}\n innerHTML={Clear}\n onClick={this.handleClear}\n onFocus={this.handleClearFocus}\n onBlur={this.handleClearBlur}\n variant=\"icon\"\n appearance={\n this.clearButtonFocused\n ? IcThemeForegroundEnum.Light\n : IcThemeForegroundEnum.Dark\n }\n size={size}\n ></ic-button>\n )}\n {showCalendarButton && (\n <div class=\"show-calendar-button-wrapper\">\n <div class={{ divider: true, [size]: true }}></div>\n <ic-button\n id=\"calendar-button\"\n ref={(el: HTMLIcButtonElement) =>\n (this.calendarButtonEl = el)\n }\n aria-label=\"Display calendar\"\n aria-haspopup=\"dialog\"\n class=\"calendar-button\"\n disabled={this.disabled}\n innerHTML={Calendar}\n onClick={this.handleCalendarOpen}\n variant=\"icon\"\n size={size}\n onFocus={this.handleCalendarFocus}\n onBlur={this.handleCalendarBlur}\n appearance={\n this.calendarFocused\n ? IcThemeForegroundEnum.Light\n : IcThemeForegroundEnum.Default\n }\n ></ic-button>\n </div>\n )}\n </div>\n </div>\n </ic-input-component-container>\n <span id={this.selectedDateInfoId} class=\"sr-only\" aria-live=\"polite\">\n <span\n ref={(el) => (this.selectedDateInfoEl = el)}\n role=\"status\"\n ></span>\n </span>\n {(hasCustomValidation || !isEmptyString(this.invalidDateText)) && (\n <ic-input-validation\n status={validationStatus}\n message={\n hasCustomValidation ? this.validationText : this.invalidDateText\n }\n for={inputId}\n ></ic-input-validation>\n )}\n </ic-input-container>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["icDateInputCss","inputIds","DateInput","this","ARIA_INVALID","ARIA_LABEL","ARIA_LABELLED_BY","EVENT_OBJECT_STRING","FIT_TO_VALUE","initialValue","value","INPUT_EVENT_OBJECT_STRING","inputsInOrder","isAfterMax","isBeforeMin","isDateSetFromKeyboardEvent","isDisabledDate","isValidDay","isValidMonth","isValidDate","isZuluTime","KEYBOARD_EVENT_OBJECT_STRING","MAX_DAY","MAX_MONTH","previousEmittedDate","undefined","previousSelectedDate","selectedDate","setInputPasteValue","input","pastedValue","inputEl","classList","add","checkSingleCopiedValueIsValid","isValid","Number","dayInputEl","monthInputEl","yearInputEl","isKeyboardOrEvent","event","Object","prototype","toString","call","setDateValidity","isEmptyString","day","month","handleInput","inputEvent","target","inputType","preventAutoFormatting","length","setInputValue","notifyScreenReader","moveToNextInput","setPreventInput","setFitToValueStyling","setValidationMessage","handleKeyDown","isInputPrevented","eventKey","key","toLowerCase","regex","test","ctrlKey","metaKey","preventDefault","setPasteInvalidText","handleLeftRightArrowKeyPress","handleUpDownArrowKeyPress","preventInput","handleFocus","select","handleBlur","autocompleteInput","moveToPreviousInput","notifyScreenReaderSelectedDate","dayNames","stringEnumToArray","IcDayNames","months","IcDateInputMonths","selectedDateInfoEl","textContent","getDay","getDate","getMonth","getFullYear","minValue","maxValue","Date","handleDateChange","force","dateMatches","forEach","year","invalidDateText","setValueAndEmitChange","updateInputValues","slicePastedDate","valueLength","datePart","slice","isPastedStringDateValid","handlePaste","clipboardData","getData","setPastedValueAndValidation","setDate","date","remove","isDateOrEpoch","newDate","convertToDoubleDigits","defaultDateArray","splitStringDate","dateFormat","formatMinMax","formattedDate","clear","newValue","convertToDate","isSelectedDateDisabled","setAttribute","removeAttribute","disablePast","disablePastMessage","minDate","disableFuture","disableFutureMessage","maxDate","disableDays","disableDaysMessage","setInputsInOrder","inputs","el","shadowRoot","querySelectorAll","push","setAriaLabelledBy","disabled","_a","inputCompContainerEl","getAttribute","removeAriaLabelledBy","labelEl","querySelector","labelId","inputId","id","hasValidation","validationStatus","validationText","labelledBy","screenReaderInfoId","getInputDescribedByText","helperText","defaultHelperText","selectedDateInfoId","assistiveHintId","isPrevented","preventDayInput","preventMonthInput","preventYearInput","getInputFromDatePart","dayInput","h","class","ref","placeholder","onPaste","inputmode","pattern","onKeyDown","monthInput","yearInput","maxLength","getInputsInOrder","dateParts","split","part","substring","getDescOfInputsOrder","description","getScreenReaderInfo","inputDescriptors","required","IcInformationStatus","Error","selectedString","selectionStart","selectionEnd","currentDate","isNotToday","toDateString","includes","currentInput","currentInputPos","findIndex","nextInput","focus","autocompleteYear","inputValue","yearNumbers","autocompletedInput","number","index","handleHostBlur","removeLabelledBy","icBlur","emit","handleHostFocus","activeElement","match","icFocus","handleFormReset","getAriaLabel","notifyScreenReaderArrowKeys","liveRegion","announcement","ariaLabel","notifyScreenReaderInput","setAriaInvalid","validDay","validMonth","validDate","disabledDate","handleClear","handleCalendarOpen","ev","stopImmediatePropagation","calendarButtonEl","displayTooltip","calendarButtonClicked","_b","emitIcChange","handleCalendarFocus","calendarFocused","handleCalendarBlur","handleClearFocus","clearButtonFocused","handleClearBlur","relatedTarget","d","icChange","watchDisableFutureHandler","watchMaxHandler","watchDisablePastHandler","watchMinHandler","createDate","max","min","watchRequiredHandler","asteriskSpan","document","createElement","appendChild","disconnectedCallback","removeFormResetListener","componentWillLoad","addFormResetListener","componentDidLoad","onComponentRequiredPropUndefined","prop","label","propName","addEventListener","componentWillUpdate","componentDidRender","setCalendarFocus","setDisableDays","days","triggerIcChange","nextParsedValue","extractDateFromZuluDateTime","pasteZuluDateTime","dateValue","isNumeric","displayPastedValidation","previousInvalidDateTest","isPasteValidationDisplayed","render","showClearButton","showCalendarButton","size","hasCustomValidation","assistiveHint","renderHiddenInput","name","Host","onBlur","onFocus","for","role","innerHTML","Clear","onClick","variant","appearance","IcThemeForegroundEnum","Light","Dark","divider","Calendar","Default","status","message"],"sources":["src/components/ic-date-input/ic-date-input.css?tag=ic-date-input&encapsulation=shadow","src/components/ic-date-input/ic-date-input.tsx"],"sourcesContent":["@import \"../../../dist/core/normalize.css\";\n\ninput {\n border: 0;\n height: 100%;\n padding: 0;\n outline: none;\n background: none;\n -moz-appearance: textfield;\n appearance: textfield;\n}\n\ninput::-webkit-outer-spin-button,\ninput::-webkit-inner-spin-button {\n -webkit-appearance: none;\n}\n\nic-input-component-container {\n cursor: text;\n}\n\nic-input-component-container,\nic-input-component-container:hover {\n color: var(--ic-color-tertiary-text);\n}\n\nic-input-component-container .focus-indicator {\n padding: var(--ic-space-xxxs) var(--ic-space-xs);\n align-items: center;\n}\n\n.day-input {\n width: 1.438rem;\n}\n\n.month-input {\n width: 1.813rem;\n}\n\n.year-input,\n.year-input.fit-to-value {\n width: 2.313rem;\n}\n\n.fit-to-value {\n width: 1.25rem;\n}\n\n.sr-only {\n position: absolute;\n left: -9999px;\n}\n\n.input-container {\n width: 100%;\n display: flex;\n justify-content: space-between;\n align-items: center;\n position: relative;\n}\n\n.action-buttons {\n display: flex;\n align-items: center;\n}\n\n.show-calendar-button-wrapper {\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.clear-button,\n.calendar-button {\n border-radius: var(--ic-border-radius);\n transition: box-shadow var(--ic-easing-transition),\n border-radius var(--ic-easing-transition);\n margin: 0;\n}\n\n.clear-button.hidden {\n display: none;\n}\n\n.clear-button:focus,\n.calendar-button:focus,\n.clear-button:active,\n.calendar-button:active {\n background-color: var(--ic-focus-blue) !important;\n box-shadow: inset 0 0 0 0.125rem var(--ic-focus-glow) !important;\n border-radius: 0.25rem;\n}\n\n.clear-button:focus,\n.calendar-button:focus,\n.clear-button:active *,\n.calendar-button:active * {\n fill: var(--ic-architectural-white);\n}\n\n.divider {\n margin: 0 var(--ic-space-xxs);\n width: var(--ic-space-1px);\n background-color: var(--ic-architectural-400);\n border-radius: var(--ic-space-1px);\n}\n\n.divider.small {\n height: var(--ic-space-md);\n}\n\n.divider.default {\n height: calc(var(--ic-space-sm) + var(--ic-space-xs));\n}\n\n.divider.large {\n height: var(--ic-space-lg);\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Prop,\n State,\n Host,\n Method,\n Watch,\n} from \"@stencil/core\";\nimport {\n IcInformationStatus,\n IcInformationStatusOrEmpty,\n IcSizes,\n IcThemeForegroundEnum,\n IcDateFormat,\n IcDateInputMonths,\n IcDayNames,\n IcWeekDays,\n} from \"../../utils/types\";\nimport {\n convertToDoubleDigits,\n createDate,\n dateMatches,\n extractDateFromZuluDateTime,\n isDateOrEpoch,\n splitStringDate,\n} from \"../../utils/date-helpers\";\nimport {\n addFormResetListener,\n getInputDescribedByText,\n isEmptyString,\n isNumeric,\n onComponentRequiredPropUndefined,\n removeFormResetListener,\n renderHiddenInput,\n stringEnumToArray,\n} from \"../../utils/helpers\";\nimport Clear from \"../../assets/clear-icon.svg\";\nimport Calendar from \"../../assets/calendar.svg\";\n\nlet inputIds = 0;\n\n@Component({\n tag: \"ic-date-input\",\n styleUrl: \"ic-date-input.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class DateInput {\n private ARIA_INVALID = \"aria-invalid\";\n private ARIA_LABEL = \"aria-label\";\n private ARIA_LABELLED_BY = \"aria-labelledby\";\n private assistiveHintId: string;\n private calendarButtonEl: HTMLIcButtonElement;\n private dayInputEl: HTMLInputElement;\n private defaultHelperText: string;\n private EVENT_OBJECT_STRING = \"[object Event]\";\n private FIT_TO_VALUE = \"fit-to-value\";\n\n private initialValue = this.value;\n private inputCompContainerEl: HTMLIcInputComponentContainerElement;\n private INPUT_EVENT_OBJECT_STRING = \"[object InputEvent]\";\n private inputsInOrder: HTMLInputElement[] = [];\n\n private isAfterMax: boolean = false;\n private isBeforeMin: boolean = false;\n private isDateSetFromKeyboardEvent: boolean = false;\n private isDisabledDate: boolean = false;\n private isPasteValidationDisplayed: boolean;\n private isValidDay: boolean = true;\n private isValidMonth: boolean = true;\n private isValidDate: boolean = true;\n private isZuluTime: boolean = false;\n\n private KEYBOARD_EVENT_OBJECT_STRING = \"[object KeyboardEvent]\";\n private MAX_DAY = 31;\n private MAX_MONTH = 12;\n private monthInputEl: HTMLInputElement;\n\n private preventAutoFormatting: boolean;\n private preventDayInput: boolean;\n private preventMonthInput: boolean;\n private preventYearInput: boolean;\n\n private previousInvalidDateTest: string;\n private previousEmittedDate: Date = undefined;\n private previousSelectedDate: Date = null;\n\n private selectedDate: Date = null;\n private selectedDateInfoEl: HTMLSpanElement;\n private screenReaderInfoId: string;\n private selectedDateInfoId: string;\n\n private yearInputEl: HTMLInputElement;\n\n @Element() el: HTMLIcDateInputElement;\n\n @State() day: string = \"\";\n @State() invalidDateText: string;\n @State() maxDate: Date;\n @State() minDate: Date;\n @State() month: string = \"\";\n @State() year: string = \"\";\n @State() calendarFocused: boolean = false;\n @State() clearButtonFocused: boolean = false;\n @State() removeLabelledBy: boolean = false;\n\n /**\n * The format in which the date will be displayed.\n */\n // eslint-disable-next-line sonarjs/no-duplicate-string\n @Prop() dateFormat?: IcDateFormat = \"DD/MM/YYYY\";\n\n /**\n * If `true`, the disabled state will be set.\n */\n @Prop() disabled?: boolean = false;\n\n /**\n * The days of the week to disable.\n */\n @Prop({ mutable: true }) disableDays?: IcWeekDays[] = [];\n\n /**\n * The text to display as the validation message when `disableDays` is set and a disabled date is entered.\n */\n @Prop() disableDaysMessage?: string =\n \"The date you have selected is on a day of the week that is not allowed. Please select another date.\";\n\n /**\n * If `true`, dates in the future are not allowed. A validation message will appear if a date in the future is entered.\n */\n @Prop() disableFuture?: boolean = false;\n\n @Watch(\"disableFuture\")\n watchDisableFutureHandler(): void {\n this.watchMaxHandler();\n }\n\n /**\n * The text to display as the validation message when `disableFuture` is true and a date in the future is entered.\n */\n @Prop() disableFutureMessage?: string =\n \"Dates in the future are not allowed. Please select a date in the past.\";\n\n /**\n * If `true`, dates in the past are not allowed. A validation message will appear if a date in the past is entered.\n */\n @Prop() disablePast?: boolean = false;\n\n @Watch(\"disablePast\")\n watchDisablePastHandler(): void {\n this.watchMinHandler();\n }\n\n /**\n * The text to display as the validation message when `disablePast` is true and a date in the past is entered.\n */\n @Prop() disablePastMessage?: string =\n \"Dates in the past are not allowed. Please select a date in the future.\";\n\n /**\n * The helper text that will be displayed for additional field guidance. This will default to the text \"Use format\" along with the `dateFormat` value.\n */\n @Prop({ mutable: true }) helperText?: string;\n\n /**\n * The ID for the input.\n */\n @Prop() inputId?: string = `ic-date-input-${inputIds++}`;\n\n /**\n * The label for the date input.\n */\n @Prop() label!: string;\n\n /**\n * The latest date that will be allowed. The value can be in any format supported as `dateFormat`, in ISO 8601 date string format (`yyyy-mm-dd`) or as a JavaScript `Date` object.\n * The value of this prop is ignored if `disableFuture` is set to `true`.\n */\n @Prop() max?: string | Date = \"\";\n\n @Watch(\"max\")\n watchMaxHandler(): void {\n if (this.disableFuture) {\n this.maxDate = new Date();\n } else {\n this.maxDate = createDate(this.max, this.dateFormat);\n }\n }\n\n /**\n * The earliest date that will be allowed. The value can be in any format supported as `dateFormat`, in ISO 8601 date string format (`yyyy-mm-dd`) or as a JavaScript `Date` object.\n * The value of this prop is ignored if `disablePast` is set to `true`.\n */\n @Prop() min?: string | Date = \"\";\n\n @Watch(\"min\")\n watchMinHandler(): void {\n if (this.disablePast) {\n this.minDate = new Date();\n } else {\n this.minDate = createDate(this.min, this.dateFormat);\n }\n }\n\n /**\n * The name of the control, which is submitted with the form data.\n */\n @Prop() name: string = this.inputId;\n\n /**\n * If `true`, the input will require a value.\n */\n @Prop() required?: boolean = false;\n\n @Watch(\"required\")\n watchRequiredHandler(): void {\n // Prevent asterisk being read out after the label by screen reader (by applying aria-hidden)\n // Needed because label is included in 'aria-labelledby' instead of using 'aria-label'\n const labelEl = this.el.shadowRoot.querySelector(\"label\");\n if (this.required) {\n const asteriskSpan = document.createElement(\"span\");\n asteriskSpan.setAttribute(\"id\", \"asterisk-span\");\n asteriskSpan.setAttribute(\"aria-hidden\", \"true\");\n asteriskSpan.textContent = \" *\";\n labelEl?.appendChild(asteriskSpan);\n } else {\n const asteriskSpan = this.el.shadowRoot.querySelector(\"#asterisk-span\");\n if (asteriskSpan) {\n asteriskSpan.remove();\n }\n }\n }\n\n /**\n * @internal If `true`, a button which displays the calendar view when clicked will be displayed.\n */\n @Prop() showCalendarButton?: boolean = false;\n\n /**\n * If `true`, a button which clears the date input when clicked will be displayed.\n */\n @Prop() showClearButton?: boolean = true;\n\n /**\n * The size of the date input to be displayed.\n */\n @Prop() size?: IcSizes = \"default\";\n\n /**\n * The value of the date input. The value can be in any format supported as `dateFormat`, in ISO 8601 date string format (`yyyy-mm-dd`) or as a JavaScript `Date` object.\n */\n @Prop({ mutable: true }) value?: string | Date | null | undefined = \"\";\n\n /**\n * The validation status - e.g. 'error' | 'warning' | 'success'. This will override the built-in date validation.\n */\n @Prop({ mutable: true }) validationStatus?: IcInformationStatusOrEmpty = \"\";\n\n /**\n * The text to display as the validation message. This will override the built-in date validation.\n */\n @Prop() validationText?: string = \"\";\n\n /**\n * @internal Emitted when the calendar is opened.\n */\n @Event() calendarButtonClicked: EventEmitter<{ value: Date }>;\n\n /**\n * Emitted when the input loses focus.\n */\n @Event() icBlur: EventEmitter<{ value: Date }>;\n\n /**\n * Emitted when the value has changed.\n */\n @Event() icChange: EventEmitter<{ value: Date }>;\n\n /**\n * Emitted when the input gains focus.\n */\n @Event() icFocus: EventEmitter<{ value: Date }>;\n\n disconnectedCallback(): void {\n removeFormResetListener(this.el, this.handleFormReset);\n }\n\n componentWillLoad(): void {\n this.defaultHelperText = `Use format ${this.dateFormat}`;\n\n if (isEmptyString(this.helperText))\n this.helperText = this.defaultHelperText;\n\n this.watchMinHandler();\n this.watchMaxHandler();\n\n if (this.value) {\n this.setDate(this.value);\n this.previousEmittedDate = this.selectedDate;\n } else {\n this.previousEmittedDate = null;\n }\n\n this.screenReaderInfoId = `${this.inputId}-screen-reader-info`;\n this.assistiveHintId = `${this.inputId}-assistive-hint`;\n this.selectedDateInfoId = `${this.inputId}-selected-date-info`;\n\n addFormResetListener(this.el, this.handleFormReset);\n }\n\n componentDidLoad(): void {\n this.setInputsInOrder();\n\n onComponentRequiredPropUndefined(\n [{ prop: this.label, propName: \"label\" }],\n \"Date Input\"\n );\n\n if (this.value) {\n this.updateInputValues(this.day, this.month, this.year);\n this.inputsInOrder.forEach((input) => {\n input.classList.add(this.FIT_TO_VALUE);\n });\n }\n\n this.setAriaInvalid(\n this.isValidDay,\n this.isValidMonth,\n this.isValidDate,\n this.isDisabledDate\n );\n\n if (this.value) {\n this.notifyScreenReaderSelectedDate();\n }\n\n this.inputsInOrder.forEach((input) => {\n input.addEventListener(\"input\", this.handleInput);\n input.addEventListener(\"focus\", this.handleFocus);\n input.addEventListener(\"blur\", this.handleBlur);\n });\n\n this.watchRequiredHandler();\n }\n\n componentWillUpdate(): void {\n if (isEmptyString(this.helperText))\n this.helperText = this.defaultHelperText;\n\n if (!this.isDateSetFromKeyboardEvent) this.setDate(this.value);\n\n this.setAriaInvalid(\n this.isValidDay,\n this.isValidMonth,\n this.isValidDate,\n this.isDisabledDate\n );\n this.handleDateChange(false);\n this.isDateSetFromKeyboardEvent = false;\n }\n\n componentDidRender(): void {\n if (this.removeLabelledBy) {\n this.removeAriaLabelledBy();\n return;\n }\n\n this.setAriaLabelledBy();\n }\n\n /**\n * Returns the value as a Date object\n * @returns Date\n */\n @Method()\n async getDate(): Promise<Date> {\n return this.selectedDate;\n }\n\n /**\n * @internal Sets focus on the calendar button.\n */\n @Method()\n async setCalendarFocus(): Promise<void> {\n if (this.calendarButtonEl) {\n this.calendarButtonEl.focus();\n }\n }\n\n /**\n * @internal Used to pass disabledDays from parent component.\n */\n @Method()\n async setDisableDays(days: IcWeekDays[]): Promise<void> {\n this.disableDays = days;\n }\n\n /**\n * @internal Used to enable other components to invoke an IcChange event from the input.\n */\n @Method()\n async triggerIcChange(d: Date): Promise<void> {\n this.emitIcChange(d);\n }\n\n private setInputPasteValue = (input: EventTarget, pastedValue: string) => {\n const inputEl = input as HTMLInputElement;\n\n inputEl.value = pastedValue;\n inputEl.classList.add(this.FIT_TO_VALUE);\n };\n\n private checkSingleCopiedValueIsValid = (\n input: EventTarget,\n pastedValue: string\n ) => {\n let isValid = false;\n const value = Number(pastedValue);\n\n switch (input) {\n case this.dayInputEl:\n isValid = value >= 1 && value <= this.MAX_DAY;\n break;\n case this.monthInputEl:\n isValid = value >= 1 && value <= this.MAX_MONTH;\n break;\n case this.yearInputEl:\n isValid = true;\n break;\n default:\n isValid = false;\n break;\n }\n\n return isValid;\n };\n\n /**\n * Using Object.prototype.string to determine type if event from user\n * @param event - event object used to differentiate keyboard, generic or input event\n * @returns boolean\n */\n private isKeyboardOrEvent = (event: Event) => {\n return (\n Object.prototype.toString.call(event) === this.EVENT_OBJECT_STRING ||\n Object.prototype.toString.call(event) ===\n this.KEYBOARD_EVENT_OBJECT_STRING\n );\n };\n\n private setDateValidity = () => {\n if (!isEmptyString(this.day)) {\n this.isValidDay = +this.day > this.MAX_DAY ? false : true;\n } else {\n this.isValidDay = true;\n }\n\n if (!isEmptyString(this.month)) {\n this.isValidMonth = +this.month > this.MAX_MONTH ? false : true;\n } else {\n this.isValidMonth = true;\n }\n };\n\n private handleInput = (event: Event) => {\n const inputEvent = event as InputEvent;\n const input = event.target as HTMLInputElement;\n\n if (input !== this.yearInputEl) {\n // Only auto-format if input event is not a character being deleted\n // and not as user is changing value using up / down keys\n if (\n inputEvent.inputType !== \"deleteContentBackward\" &&\n !this.preventAutoFormatting\n ) {\n if (\n input.value.length === 1 &&\n ((input === this.dayInputEl && +input.value >= 4) ||\n (input === this.monthInputEl && +input.value >= 2)) &&\n +input.value <= 9\n ) {\n this.setInputValue(input);\n this.notifyScreenReader(input, event);\n this.moveToNextInput(input);\n }\n\n if (input.value.length === 2) {\n if (+input.value === 0) {\n input.value = \"01\";\n }\n this.setInputValue(input);\n this.setPreventInput(input, true);\n this.notifyScreenReader(input, event);\n this.moveToNextInput(input);\n } else {\n this.setPreventInput(input, false);\n }\n } else if (this.preventAutoFormatting) {\n /**\n * Using arrow keys prevents auto formatting so need to deal with\n * switching from arrow keys to inputting numbers\n **/\n if (input.value.length === 2 && !this.isKeyboardOrEvent(event)) {\n this.setInputValue(input);\n this.setPreventInput(input, true);\n this.moveToNextInput(input);\n } else {\n this.setInputValue(input);\n }\n }\n\n if (input.value.length !== 2) {\n this.setPreventInput(input, false);\n }\n } else {\n if (input.value.length === 4) {\n this.setInputValue(input);\n if (\n Object.prototype.toString.call(event) !== this.EVENT_OBJECT_STRING\n ) {\n this.moveToNextInput(input);\n }\n this.setPreventInput(input, true);\n } else {\n this.setInputValue(input, true);\n this.setPreventInput(input, false);\n }\n }\n\n // Add / remove class to make input width match size of value i.e. 2 digits' width for day / month, 4 for year\n this.setFitToValueStyling(input);\n\n if (input.value.length === 0) {\n this.setInputValue(input, true);\n this.setValidationMessage();\n }\n\n this.notifyScreenReader(input, event);\n };\n\n private handleKeyDown = (event: KeyboardEvent, isInputPrevented: boolean) => {\n const input = event.target as HTMLInputElement;\n\n const eventKey = event.key.toLowerCase();\n // Regex required due to FF allowing all characters as values for number text field.\n const regex =\n /-?\\d*\\.?\\d+(e[-+]?\\d+)?|[/-]|arrowup|arrowdown|arrowleft|arrowright|shift|tab|backspace|delete/;\n if (\n !regex.test(eventKey) &&\n !(\n (event.ctrlKey || event.metaKey) &&\n (eventKey === \"v\" || eventKey === \"c\")\n )\n ) {\n event.preventDefault();\n }\n\n switch (eventKey) {\n case \"/\":\n case \"-\":\n case \".\":\n event.preventDefault();\n this.setPasteInvalidText();\n this.moveToNextInput(input);\n break;\n case \"arrowright\":\n case \"arrowleft\":\n event.preventDefault();\n this.handleLeftRightArrowKeyPress(input, eventKey);\n break;\n case \"arrowup\":\n case \"arrowdown\":\n this.preventAutoFormatting = true;\n this.handleUpDownArrowKeyPress(input, event);\n break;\n default:\n break;\n }\n\n this.preventInput(event, isInputPrevented);\n this.isDateSetFromKeyboardEvent = true;\n };\n\n private handleFocus = (event: FocusEvent) => {\n // Highlight / select all characters in input for easy replacement\n const input = event.target as HTMLInputElement;\n\n input.select();\n };\n\n private handleBlur = (event: FocusEvent) => {\n const input = event.target as HTMLInputElement;\n\n this.setPasteInvalidText();\n this.autocompleteInput(input);\n };\n\n private handleLeftRightArrowKeyPress = (\n input: HTMLInputElement,\n key: string\n ) => {\n if (key === \"arrowright\") {\n this.moveToNextInput(input);\n } else {\n this.moveToPreviousInput(input);\n }\n\n this.setPasteInvalidText();\n };\n\n private notifyScreenReaderSelectedDate = () => {\n const dayNames = stringEnumToArray(IcDayNames);\n const months = stringEnumToArray(IcDateInputMonths);\n\n this.selectedDateInfoEl.textContent = `Selected date: ${\n dayNames[this.selectedDate.getDay()]\n }, ${this.selectedDate.getDate()} ${\n months[this.selectedDate.getMonth()]\n } ${this.selectedDate.getFullYear()}`;\n };\n\n private handleUpDownArrowKeyPress = (\n input: HTMLInputElement,\n event: KeyboardEvent\n ) => {\n const minValue = input === this.yearInputEl ? 0 : 1;\n\n let maxValue;\n\n switch (input) {\n case this.dayInputEl:\n maxValue = this.MAX_DAY;\n break;\n case this.monthInputEl:\n maxValue = this.MAX_MONTH;\n break;\n case this.yearInputEl:\n maxValue = 9999;\n }\n\n // Make value loop round when min / max reached\n if (input?.value) {\n if (event.key === \"ArrowUp\") {\n if (+input.value === maxValue) {\n event.preventDefault();\n input.value = `0${minValue}`;\n } else {\n input.value =\n +input.value + 1 < 10\n ? `0${+input.value + 1}`\n : (+input.value + 1).toString();\n }\n this.notifyScreenReader(input, event);\n }\n\n if (event.key === \"ArrowDown\") {\n if (+input.value === minValue) {\n event.preventDefault();\n input.value = maxValue.toString();\n } else {\n input.value =\n +input.value - 1 < 10\n ? `0${+input.value - 1}`\n : (+input.value - 1).toString();\n }\n this.notifyScreenReader(input, event);\n }\n } else {\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n if (input === this.yearInputEl) {\n input.value = new Date().getFullYear().toString();\n } else {\n input.value = maxValue.toString();\n }\n this.notifyScreenReader(input, event);\n } else if (event.key === \"ArrowUp\") {\n event.preventDefault();\n if (input === this.yearInputEl) {\n input.value = new Date().getFullYear().toString();\n } else {\n input.value = `0${minValue}`;\n }\n this.notifyScreenReader(input, event);\n }\n }\n\n this.setInputValue(input);\n this.setFitToValueStyling(input);\n };\n\n private handleDateChange = (force: boolean) => {\n // Prevent icChange being emitted when each individual input is changed\n // This method is used within componentWillUpdate instead of using @Watch('value');\n if (force || !dateMatches(this.selectedDate, this.previousSelectedDate)) {\n if (this.value) {\n this.inputsInOrder.forEach((input) => {\n input.classList.add(this.FIT_TO_VALUE);\n });\n }\n if (this.day && this.month && this.year && this.invalidDateText === \"\") {\n this.setValueAndEmitChange(this.selectedDate);\n this.notifyScreenReaderSelectedDate();\n } else if (\n !(this.selectedDate === null && this.previousSelectedDate === null)\n ) {\n this.setValueAndEmitChange(null);\n this.selectedDateInfoEl.textContent = \"\";\n }\n this.previousSelectedDate = this.selectedDate;\n\n if (!this.isDateSetFromKeyboardEvent) {\n this.updateInputValues(this.day, this.month, this.year);\n }\n }\n };\n\n private slicePastedDate = (valueLength: number, datePart: string): string => {\n return datePart.length > valueLength\n ? datePart.slice(0, valueLength)\n : datePart;\n };\n\n private isPastedStringDateValid = (value: string) => {\n if (\n /\\d+-\\d+-\\d+$/.test(value) ||\n /\\d+\\/\\d+\\/\\d+/.test(value) ||\n /\\d+\\.\\d+\\.\\d+/.test(value)\n ) {\n return true;\n }\n\n if (\n /[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}(?::[0-9]{2}(?:\\.\\d+)?)?Z/.test(\n value\n )\n ) {\n this.isZuluTime = true;\n return true;\n }\n\n return false;\n };\n\n // Set value of each input to value of pasted date part\n // Allows formats separated by '-' or '/'\n private handlePaste = (event: ClipboardEvent) => {\n event.preventDefault();\n\n const pastedValue = event.clipboardData.getData(\"Text\");\n const isValidDate = this.isPastedStringDateValid(pastedValue);\n\n this.setPastedValueAndValidation(isValidDate, pastedValue, event);\n };\n\n private setDate = (date: string | Date) => {\n if (date === null || date === \"\" || date === undefined) {\n this.day = null;\n this.month = null;\n this.year = null;\n this.inputsInOrder.forEach((input) => {\n input.classList.remove(this.FIT_TO_VALUE);\n this.setPreventInput(input, false);\n });\n this.handleDateChange(true);\n } else {\n if (isDateOrEpoch(date)) {\n let newDate;\n if (typeof date === \"string\") {\n // Checking if epoch date time\n newDate = new Date(+date);\n } else {\n newDate = date;\n }\n\n this.day = convertToDoubleDigits(newDate.getDate());\n this.month = convertToDoubleDigits(newDate.getMonth() + 1);\n this.year = newDate.getFullYear().toString();\n } else if (typeof date === \"string\") {\n const defaultDateArray = splitStringDate(date, this.dateFormat);\n this.year = defaultDateArray[0];\n this.month = defaultDateArray[1];\n this.day = defaultDateArray[2];\n }\n }\n\n this.setValidationMessage();\n };\n\n private formatMinMax = (date: Date) => {\n let formattedDate;\n\n const day = convertToDoubleDigits(date.getDate());\n const month = convertToDoubleDigits(date.getMonth() + 1);\n const year = date.getFullYear();\n\n switch (this.dateFormat) {\n case \"DD/MM/YYYY\":\n formattedDate = `${day}/${month}/${year}`;\n break;\n case \"MM/DD/YYYY\":\n formattedDate = `${month}/${day}/${year}`;\n break;\n case \"YYYY/MM/DD\":\n formattedDate = `${year}/${month}/${day}`;\n break;\n default:\n break;\n }\n return formattedDate;\n };\n private updateInputValues = (day: string, month: string, year: string) => {\n this.dayInputEl.value = day;\n this.monthInputEl.value = month;\n this.yearInputEl.value = year;\n };\n\n // Set value in state based on input\n private setInputValue = (input: HTMLInputElement, clear = false) => {\n const newValue = clear ? \"\" : input.value;\n\n switch (input) {\n case this.dayInputEl:\n this.day = newValue;\n break;\n case this.monthInputEl:\n this.month = newValue;\n break;\n case this.yearInputEl:\n if (this.year !== newValue) {\n this.year = newValue;\n }\n }\n\n this.setValidationMessage();\n };\n\n private setValidationMessage = () => {\n this.setDateValidity();\n\n if (\n !isEmptyString(this.day) &&\n !isEmptyString(this.month) &&\n !isEmptyString(this.year)\n ) {\n // Check whether date actually exists\n // (used https://www.hectane.com/blog/javascript-date-validation-with-leap-year)\n this.selectedDate = this.convertToDate(this.year, this.month, this.day);\n this.isValidDate =\n +this.selectedDate !== 0 && this.selectedDate.getDate() == +this.day;\n this.isDisabledDate = this.isSelectedDateDisabled();\n\n if (!this.isValidDate || this.isDisabledDate) {\n this.inputsInOrder.forEach((input) =>\n input.setAttribute(this.ARIA_INVALID, \"true\")\n );\n } else {\n this.inputsInOrder.forEach((input) =>\n input.removeAttribute(this.ARIA_INVALID)\n );\n }\n } else {\n this.selectedDate = null;\n }\n\n if (!(this.isValidDay && this.isValidMonth && this.isValidDate)) {\n this.invalidDateText = \"Please enter a valid date.\";\n } else if (this.isDisabledDate && this.selectedDate !== null) {\n if (this.isBeforeMin) {\n if (this.disablePast) {\n this.invalidDateText = this.disablePastMessage;\n } else {\n this.invalidDateText = `Please enter a date after ${this.formatMinMax(\n this.minDate\n )}.`;\n }\n } else if (this.isAfterMax) {\n if (this.disableFuture) {\n this.invalidDateText = this.disableFutureMessage;\n } else {\n this.invalidDateText = `Please enter a date before ${this.formatMinMax(\n this.maxDate\n )}.`;\n }\n } else if (this.disableDays.length !== 0) {\n this.invalidDateText = this.disableDaysMessage;\n } else {\n if (this.disablePast) {\n this.invalidDateText = this.disablePastMessage;\n }\n if (this.disableFuture) {\n this.invalidDateText = this.disableFutureMessage;\n }\n }\n } else {\n this.invalidDateText = \"\";\n }\n };\n\n // Set refs to the input elements in the order they are displayed (based on the dateFormat)\n private setInputsInOrder = () => {\n const inputs = this.el.shadowRoot.querySelectorAll(\"input\");\n inputs.forEach((input) => this.inputsInOrder.push(input));\n };\n\n // Includes text usually added using aria-describedby\n // (which doesn't work on input component container)\n private setAriaLabelledBy = () => {\n if (\n this.disabled &&\n !isEmptyString(\n this.inputCompContainerEl?.getAttribute(this.ARIA_LABELLED_BY)\n )\n ) {\n this.removeAriaLabelledBy();\n return;\n }\n\n if (this.disabled) {\n return;\n }\n\n const labelEl = this.el.shadowRoot.querySelector(\"label\");\n const labelId = `${this.inputId}-label`;\n\n if (labelEl !== null && labelEl !== undefined) {\n labelEl.id = labelId;\n\n const hasValidation =\n (!isEmptyString(this.validationStatus) &&\n !isEmptyString(this.validationText)) ||\n !isEmptyString(this.invalidDateText);\n\n const labelledBy = `${labelId} ${\n this.screenReaderInfoId\n } ${getInputDescribedByText(\n this.inputId,\n this.helperText !== \"\" && this.helperText !== this.defaultHelperText,\n hasValidation\n )} ${this.selectedDate ? this.selectedDateInfoId : \"\"} ${\n this.assistiveHintId\n }`;\n this.inputCompContainerEl.setAttribute(this.ARIA_LABELLED_BY, labelledBy);\n }\n };\n\n // Sets boolean for each input, used to limit the number of characters within each field (2 for day / month, 4 for year)\n private setPreventInput = (input: HTMLInputElement, isPrevented: boolean) => {\n switch (input) {\n case this.dayInputEl:\n this.preventDayInput = isPrevented;\n break;\n case this.monthInputEl:\n this.preventMonthInput = isPrevented;\n break;\n case this.yearInputEl:\n this.preventYearInput = isPrevented;\n }\n };\n\n // Get input based on letter representing each date part (\"D\", \"M\" or \"Y\")\n // (retrieved from dateFormat)\n private getInputFromDatePart = (datePart: string) => {\n const dayInput = (\n <input\n class=\"day-input\"\n id=\"day-input\"\n ref={(el) => (this.dayInputEl = el)}\n aria-label=\"day\"\n placeholder=\"DD\"\n disabled={this.disabled}\n onPaste={this.handlePaste}\n inputmode=\"number\"\n pattern=\"[0-9]*\"\n onKeyDown={(event) => this.handleKeyDown(event, this.preventDayInput)}\n ></input>\n );\n\n const monthInput = (\n <input\n id=\"month-input\"\n class=\"month-input\"\n ref={(el) => (this.monthInputEl = el)}\n aria-label=\"month\"\n placeholder=\"MM\"\n disabled={this.disabled}\n onPaste={this.handlePaste}\n inputmode=\"number\"\n pattern=\"[0-9]*\"\n onKeyDown={(event) => this.handleKeyDown(event, this.preventMonthInput)}\n ></input>\n );\n\n const yearInput = (\n <input\n id=\"year-input\"\n class=\"year-input\"\n ref={(el) => (this.yearInputEl = el)}\n aria-label=\"year\"\n placeholder=\"YYYY\"\n maxLength={4}\n disabled={this.disabled}\n onPaste={this.handlePaste}\n inputmode=\"number\"\n pattern=\"[0-9]*\"\n onKeyDown={(event) => this.handleKeyDown(event, this.preventYearInput)}\n ></input>\n );\n\n let input;\n\n switch (datePart) {\n case \"D\":\n input = dayInput;\n break;\n case \"M\":\n input = monthInput;\n break;\n case \"Y\":\n input = yearInput;\n }\n\n return input;\n };\n\n // Get input elements in order of chosen date format\n private getInputsInOrder = () => {\n const dateParts = this.dateFormat.split(\"/\");\n\n const inputsInOrder: HTMLInputElement[] = [];\n\n dateParts.forEach((part: string) => {\n inputsInOrder.push(this.getInputFromDatePart(part.substring(0, 1)));\n });\n\n return inputsInOrder;\n };\n\n // To add to the end of assistive hint to make it clearer that each date part has its own input\n // that can be changed individually\n private getDescOfInputsOrder = () => {\n let description;\n\n switch (this.dateFormat) {\n case \"DD/MM/YYYY\":\n description = \"day, month, and year\";\n break;\n case \"MM/DD/YYYY\":\n description = \"month, day, and year\";\n break;\n case \"YYYY/MM/DD\":\n description = \"year, month, and day\";\n }\n\n return description;\n };\n\n // Add 'required' or 'invalid data' to span used in aria-labelledby\n // Many ARIA attributes aren't read out by screen reader when on the input component container\n private getScreenReaderInfo = (validationStatus: string) => {\n let inputDescriptors = \"\";\n\n if (this.required) {\n inputDescriptors += \"required\";\n }\n\n if (validationStatus === IcInformationStatus.Error) {\n inputDescriptors += \" invalid data\";\n }\n\n return inputDescriptors === \"\" ? \"\" : inputDescriptors + \", \";\n };\n\n // Prevent non-number characters being entered\n // ('e' or '.' - which are usually allowed in <input type=\"number\">)\n // And limit the number of characters within each field (2 for day / month, 4 for year)\n // (because 'maxlength' doesn't work on <input type=\"number\">)\n private preventInput = (event: KeyboardEvent, isInputPrevented: boolean) => {\n const key = event.key;\n const input = event.target as HTMLInputElement;\n let selectedString;\n\n if (input) {\n selectedString = input.value.substring(\n input.selectionStart,\n input.selectionEnd\n );\n }\n\n if (\n key === \"e\" ||\n key === \".\" ||\n key === \"-\" ||\n (event.key >= \"0\" &&\n event.key <= \"9\" &&\n isInputPrevented &&\n !selectedString)\n ) {\n event.preventDefault();\n }\n };\n\n // Get whether date has been disabled using disableFuture or disablePast prop, but always allow current day\n // Consider using dateClamp and inDateRange\n private isSelectedDateDisabled = () => {\n const currentDate = new Date();\n this.isAfterMax = false;\n this.isBeforeMin = false;\n\n let disabled = false;\n const isNotToday =\n this.selectedDate.toDateString() !== currentDate.toDateString();\n\n if (this.minDate && this.selectedDate < this.minDate && isNotToday) {\n this.isBeforeMin = true;\n disabled = true;\n }\n\n if (this.maxDate && this.selectedDate > this.maxDate && isNotToday) {\n this.isAfterMax = true;\n disabled = true;\n }\n\n if (this.disableDays.includes(this.selectedDate.getDay())) {\n disabled = true;\n }\n\n if (\n ((this.disablePast && this.selectedDate < currentDate) ||\n (this.disableFuture && this.selectedDate > currentDate)) &&\n isNotToday\n ) {\n disabled = true;\n }\n\n return disabled;\n };\n\n private moveToNextInput = (currentInput: HTMLInputElement) => {\n const currentInputPos = this.inputsInOrder.findIndex(\n (input) => input === currentInput\n );\n const nextInput = this.inputsInOrder[currentInputPos + 1];\n\n this.preventAutoFormatting = false;\n\n if (nextInput) {\n nextInput.focus();\n }\n };\n\n private moveToPreviousInput = (currentInput: HTMLInputElement) => {\n const currentInputPos = this.inputsInOrder.findIndex(\n (input) => input === currentInput\n );\n\n this.preventAutoFormatting = false;\n\n if (this.inputsInOrder[currentInputPos - 1]) {\n this.inputsInOrder[currentInputPos - 1].focus();\n }\n };\n\n private autocompleteInput = (input: HTMLInputElement) => {\n if (input === this.yearInputEl) {\n this.autocompleteYear();\n } else {\n const inputValue = input.value;\n\n // Autocomplete input as 2 characters (leading zero) when only 1 character entered (for day and month)\n if (inputValue.length === 1) {\n if (+inputValue === 0) {\n input.value = \"01\";\n } else {\n input.value = `0${inputValue}`;\n }\n }\n }\n\n if (input.value) {\n this.setInputValue(input);\n }\n };\n\n // Autocomplete year as current millennium when fewer than 4 characters entered\n private autocompleteYear = () => {\n const inputValue = this.yearInputEl.value;\n const yearNumbers = [\"2\", \"0\", \"0\"];\n\n let autocompletedInput = \"\";\n\n if (inputValue) {\n yearNumbers.forEach((number, index) => {\n if (inputValue.length + index <= 3) {\n autocompletedInput += number;\n }\n });\n\n this.yearInputEl.value = `${autocompletedInput}${inputValue}`;\n }\n };\n\n private convertToDate = (\n year: string,\n month: string,\n day: string\n ): Date | null => {\n if (!isEmptyString(year) && !isEmptyString(month) && !isEmptyString(day)) {\n return new Date(+year, +month - 1, +day);\n } else {\n return null;\n }\n };\n\n private handleHostBlur = () => {\n this.removeLabelledBy = false;\n this.icBlur.emit({ value: this.selectedDate });\n };\n\n private handleHostFocus = () => {\n if (this.el.shadowRoot.activeElement?.id.match(/(day|month|year)-input$/)) {\n this.removeLabelledBy = false;\n } else {\n this.removeLabelledBy = true;\n }\n this.icFocus.emit({ value: this.selectedDate });\n };\n\n private handleFormReset = () => {\n // Get the initial value and populate day, month and year again.\n this.setDate(this.initialValue);\n this.setValidationMessage();\n this.handleDateChange(false);\n };\n\n private getAriaLabel = (input: HTMLInputElement): string => {\n return input.getAttribute(this.ARIA_LABEL);\n };\n\n private notifyScreenReaderArrowKeys = (input: HTMLInputElement) => {\n const liveRegion = this.el.shadowRoot.querySelector(\"#live-region\");\n let announcement = \"\";\n const ariaLabel = this.getAriaLabel(input);\n\n if (liveRegion && input.value) {\n if (\n input === this.monthInputEl &&\n !!IcDateInputMonths[+input.value - 1]\n ) {\n announcement = `${input.value} - ${\n IcDateInputMonths[+input.value - 1]\n }, ${ariaLabel}`;\n }\n\n if (input === this.dayInputEl || input === this.yearInputEl) {\n announcement = `${input.value}, ${ariaLabel}`;\n }\n\n liveRegion.textContent = announcement;\n }\n };\n\n private removeAriaLabelledBy() {\n this.inputCompContainerEl.removeAttribute(this.ARIA_LABELLED_BY);\n }\n\n private setPastedValueAndValidation(\n isValidDate: boolean,\n pastedValue: string,\n event: ClipboardEvent\n ) {\n switch (true) {\n case isValidDate: {\n const nextParsedValue = this.isZuluTime\n ? extractDateFromZuluDateTime(pastedValue)\n : pastedValue;\n const dateParts = nextParsedValue.split(/-|\\/|\\./);\n this.inputsInOrder.forEach((input, index) => {\n input.classList.add(this.FIT_TO_VALUE);\n\n if (this.isZuluTime) {\n this.pasteZuluDateTime(dateParts, index);\n } else {\n let dateValue;\n\n if (input === this.dayInputEl || input === this.monthInputEl) {\n dateValue = this.slicePastedDate(2, dateParts[index]);\n } else {\n dateValue = this.slicePastedDate(4, dateParts[index]);\n }\n\n input.value = dateValue;\n\n this.setInputValue(input);\n this.autocompleteInput(input);\n }\n });\n this.isZuluTime = false;\n break;\n }\n\n case (pastedValue.length === 1 ||\n pastedValue.length === 2 ||\n pastedValue.length === 4) &&\n isNumeric(pastedValue):\n if (this.checkSingleCopiedValueIsValid(event.target, pastedValue)) {\n // Check if copied value can be pasted into input\n this.setInputPasteValue(event.target, pastedValue);\n this.setInputValue(event.target as HTMLInputElement);\n } else {\n this.displayPastedValidation(event);\n }\n break;\n\n case pastedValue.length === 3 && isNumeric(pastedValue):\n if (event.target !== this.yearInputEl) {\n this.displayPastedValidation(event);\n } else {\n this.setInputPasteValue(event.target, pastedValue);\n this.setInputValue(event.target as HTMLInputElement);\n }\n break;\n\n case pastedValue.length >= 5 && isNumeric(pastedValue):\n this.displayPastedValidation(event);\n }\n }\n\n private pasteZuluDateTime(dateParts: string[], index: number) {\n // ['YYYY', 'MM', 'DD']\n if (index === 0) {\n const dateValue = this.slicePastedDate(4, dateParts[index]);\n this.yearInputEl.value = dateValue;\n this.setInputValue(this.yearInputEl);\n } else if (index === 1) {\n // The month value is the second item in the array\n const dateValue = this.slicePastedDate(2, dateParts[index]);\n this.monthInputEl.value = dateValue;\n this.setInputValue(this.monthInputEl);\n } else {\n const dateValue = this.slicePastedDate(2, dateParts[index]);\n this.dayInputEl.value = dateValue;\n this.setInputValue(this.dayInputEl);\n }\n }\n\n private displayPastedValidation(event: ClipboardEvent) {\n if (this.invalidDateText?.length > 0) {\n this.previousInvalidDateTest = this.invalidDateText;\n }\n\n this.invalidDateText = `Please paste a valid ${this.getAriaLabel(\n event.target as HTMLInputElement\n )}`;\n\n this.validationStatus = IcInformationStatus.Error;\n this.isPasteValidationDisplayed = true;\n }\n\n private setPasteInvalidText() {\n if (this.isPasteValidationDisplayed) {\n this.invalidDateText = this.previousInvalidDateTest ?? \"\";\n this.isPasteValidationDisplayed = false;\n\n // This is to prevent setDate from triggering within componentWillUpdate\n this.isDateSetFromKeyboardEvent = true;\n }\n }\n\n private notifyScreenReader(input: HTMLInputElement, event: Event) {\n const liveRegion = this.el.shadowRoot.querySelector(\"#live-region\");\n\n if (liveRegion) {\n if (this.isKeyboardOrEvent(event)) {\n this.notifyScreenReaderArrowKeys(input);\n } else if (\n Object.prototype.toString.call(event) === this.INPUT_EVENT_OBJECT_STRING\n ) {\n this.notifyScreenReaderInput(input, liveRegion as HTMLElement);\n }\n }\n }\n\n private notifyScreenReaderInput = (\n input: HTMLInputElement,\n liveRegion: HTMLElement\n ) => {\n let announcement = \"\";\n const ariaLabel = this.getAriaLabel(input);\n\n if (input === this.dayInputEl || input === this.monthInputEl) {\n if (input.value.length === 2) {\n if (\n input === this.monthInputEl &&\n !!IcDateInputMonths[+input.value - 1] &&\n this.isValidMonth\n ) {\n announcement = `${input.value} - ${\n IcDateInputMonths[+input.value - 1]\n }, ${ariaLabel}`;\n }\n\n if (input === this.dayInputEl && this.isValidDay) {\n announcement = `${input.value}, ${ariaLabel}`;\n }\n } else {\n announcement = \"\";\n }\n } else {\n if (input.value.length === 4) {\n announcement = `${input.value}, ${ariaLabel}`;\n } else {\n announcement = \"\";\n }\n }\n liveRegion.textContent = announcement;\n };\n\n private setFitToValueStyling = (input: HTMLInputElement) => {\n if (input.value) {\n input.classList.add(this.FIT_TO_VALUE);\n } else {\n input.classList.remove(this.FIT_TO_VALUE);\n }\n };\n\n private setAriaInvalid = (\n validDay: boolean,\n validMonth: boolean,\n validDate: boolean,\n disabledDate: boolean\n ) => {\n if (this.inputsInOrder.length) {\n this.inputsInOrder.forEach((input) => {\n input.removeAttribute(this.ARIA_INVALID);\n });\n\n if (!validDay) {\n this.dayInputEl.setAttribute(this.ARIA_INVALID, \"true\");\n }\n\n if (!validMonth) {\n this.monthInputEl.setAttribute(this.ARIA_INVALID, \"true\");\n }\n\n if (!validDate || disabledDate) {\n this.inputsInOrder.forEach((input) => {\n input.setAttribute(this.ARIA_INVALID, \"true\");\n });\n }\n }\n };\n\n private handleClear = () => {\n this.inputsInOrder.forEach((input) => {\n input.classList.remove(this.FIT_TO_VALUE);\n this.setInputValue(input, true);\n this.setPreventInput(input, false);\n });\n this.isDateSetFromKeyboardEvent = false;\n this.setValidationMessage();\n this.handleDateChange(true);\n\n this.inputsInOrder[0].focus();\n };\n\n private handleCalendarOpen = (ev: MouseEvent) => {\n ev.stopImmediatePropagation();\n this.calendarButtonEl?.shadowRoot\n .querySelector(\"ic-tooltip\")\n .displayTooltip(false);\n this.calendarButtonClicked.emit({ value: this.selectedDate });\n this.calendarButtonEl?.shadowRoot\n .querySelector(\"ic-tooltip\")\n .displayTooltip(false);\n this.isDateSetFromKeyboardEvent = false;\n };\n\n private setValueAndEmitChange = (value: Date) => {\n if (!dateMatches(new Date(this.value), value)) {\n this.emitIcChange(value);\n this.value = value;\n }\n };\n\n private handleCalendarFocus = () => {\n this.calendarFocused = true;\n };\n\n private handleCalendarBlur = () => {\n this.calendarFocused = false;\n };\n\n private handleClearFocus = () => {\n this.removeLabelledBy = true;\n this.clearButtonFocused = true;\n };\n\n private handleClearBlur = (ev: FocusEvent) => {\n this.clearButtonFocused = false;\n if ((ev.relatedTarget as HTMLElement)?.id.match(/(day|year)-input$/)) {\n this.removeLabelledBy = false;\n return;\n }\n\n this.removeLabelledBy = true;\n };\n\n private emitIcChange = (d: Date) => {\n if (\n !(d === null && this.previousEmittedDate === null) &&\n !dateMatches(d, this.previousEmittedDate)\n ) {\n this.previousEmittedDate = d;\n this.icChange.emit({ value: d });\n }\n };\n\n render() {\n const {\n inputId,\n label,\n disabled,\n helperText,\n showClearButton,\n showCalendarButton,\n size,\n } = this;\n\n const hasCustomValidation =\n !isEmptyString(this.validationStatus) &&\n !isEmptyString(this.validationText);\n\n const validationStatus = hasCustomValidation\n ? this.validationStatus\n : !isEmptyString(this.invalidDateText)\n ? IcInformationStatus.Error\n : \"\";\n\n const assistiveHint = `Type or use the up and down arrow keys to change the values for the ${this.getDescOfInputsOrder()}.`;\n\n renderHiddenInput(\n true,\n this.el,\n this.name,\n this.convertToDate(this.year, this.month, this.day),\n this.disabled\n );\n\n return (\n <Host onBlur={this.handleHostBlur} onFocus={this.handleHostFocus}>\n <ic-input-container disabled={disabled}>\n <ic-input-label\n for={inputId}\n label={label}\n helperText={helperText}\n disabled={disabled}\n ></ic-input-label>\n <span id={this.screenReaderInfoId} class=\"sr-only\" aria-hidden=\"true\">\n {this.getScreenReaderInfo(validationStatus)}\n {`${this.defaultHelperText}.`}\n </span>\n <span id={this.assistiveHintId} class=\"sr-only\" aria-hidden=\"true\">\n {assistiveHint}\n </span>\n <span id=\"live-region\" aria-live=\"assertive\" class=\"sr-only\"></span>\n <ic-input-component-container\n id={inputId}\n ref={(el: HTMLIcInputComponentContainerElement) =>\n (this.inputCompContainerEl = el)\n }\n disabled={disabled}\n validationStatus={validationStatus}\n size={size}\n role=\"group\"\n >\n <div class=\"input-container\">\n <div class=\"date-inputs\">\n {this.getInputsInOrder()[0]}/{this.getInputsInOrder()[1]}/\n {this.getInputsInOrder()[2]}\n </div>\n <div class=\"action-buttons\">\n {showClearButton && (\n <ic-button\n id=\"clear-button\"\n aria-label=\"Clear input\"\n class={{\n [\"clear-button\"]: true,\n [\"hidden\"]:\n isEmptyString(this.day) &&\n isEmptyString(this.month) &&\n isEmptyString(this.year),\n }}\n disabled={this.disabled}\n innerHTML={Clear}\n onClick={this.handleClear}\n onFocus={this.handleClearFocus}\n onBlur={this.handleClearBlur}\n variant=\"icon\"\n appearance={\n this.clearButtonFocused\n ? IcThemeForegroundEnum.Light\n : IcThemeForegroundEnum.Dark\n }\n size={size}\n ></ic-button>\n )}\n {showCalendarButton && (\n <div class=\"show-calendar-button-wrapper\">\n <div class={{ divider: true, [size]: true }}></div>\n <ic-button\n id=\"calendar-button\"\n ref={(el: HTMLIcButtonElement) =>\n (this.calendarButtonEl = el)\n }\n aria-label=\"Display calendar\"\n aria-haspopup=\"dialog\"\n class=\"calendar-button\"\n disabled={this.disabled}\n innerHTML={Calendar}\n onClick={this.handleCalendarOpen}\n variant=\"icon\"\n size={size}\n onFocus={this.handleCalendarFocus}\n onBlur={this.handleCalendarBlur}\n appearance={\n this.calendarFocused\n ? IcThemeForegroundEnum.Light\n : IcThemeForegroundEnum.Default\n }\n ></ic-button>\n </div>\n )}\n </div>\n </div>\n </ic-input-component-container>\n <span id={this.selectedDateInfoId} class=\"sr-only\" aria-live=\"polite\">\n <span\n ref={(el) => (this.selectedDateInfoEl = el)}\n role=\"status\"\n ></span>\n </span>\n {(hasCustomValidation || !isEmptyString(this.invalidDateText)) && (\n <ic-input-validation\n status={validationStatus}\n message={\n hasCustomValidation ? this.validationText : this.invalidDateText\n }\n for={inputId}\n ></ic-input-validation>\n )}\n </ic-input-container>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{r as e,c as t,h as i,H as o,g as s}from"./p-8455d1bb.js";import{r as a,a as n,q as r,s as l}from"./p-ee765ad5.js";import"./p-fd186591.js";const c='/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%;}body{margin:0}main{display:block}h1{font-size:2em;margin:0.67em 0}hr{box-sizing:content-box;height:0;overflow:visible;}pre{font-family:monospace, monospace;font-size:1em;}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em;}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0;}button,input{overflow:visible}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal;}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0;}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px;}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit;}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font-style:inherit;vertical-align:baseline}:host{display:block}ic-input-label.error{color:var(--ic-status-error)}ic-input-label ic-typography{margin-bottom:var(--ic-space-sm)}:host(.small) ic-input-label ic-typography{margin-bottom:calc(var(--ic-space-sm) / 2)}ic-input-validation{margin-top:var(--ic-space-sm)}:host(.small) ic-input-validation{margin-top:calc(var(--ic-space-sm) / 2)}.checkboxes-container{margin-bottom:calc(-1 * var(--ic-space-xxs))}:host(.small) .checkboxes-container{margin-bottom:calc(-1 * var(--ic-space-xxxs))}.screen-reader-only-text{position:absolute;left:-9999px;background-color:#fff;color:#000;text-transform:none}';const d=class{constructor(i){e(this,i);this.icChange=t(this,"icChange",7);this.disabled=false;this.helperText="";this.hideLabel=false;this.label=undefined;this.name=undefined;this.required=false;this.size="default";this.small=false;this.validationStatus="";this.validationText=""}handleChange(e){if(e.target.tagName==="IC-TEXT-FIELD"){e.stopImmediatePropagation()}}componentWillLoad(){a(this.disabled,this.el)}componentDidLoad(){Array.from(this.el.querySelectorAll("ic-checkbox")).forEach((e=>{if(!e.name)e.name=this.name;e.groupLabel=this.label}));n([{prop:this.label,propName:"label"},{prop:this.name,propName:"name"}],"Checkbox Group")}selectHandler(e){const t=Array.from(this.el.querySelectorAll("ic-checkbox")).filter((e=>e.checked&&!e.disabled));this.icChange.emit({value:t.map((e=>e.value)),checkedOptions:t.map((e=>{var t;return{checkbox:e,textFieldValue:(t=e.querySelector("ic-text-field"))===null||t===void 0?void 0:t.value}})),selectedOption:e.target})}render(){const e=r(this.name,this.helperText!=="",this.validationStatus!=="");const t=l(this.validationStatus,this.disabled);return i(o,{class:{["small"]:this.small,[`${this.size}`]:true}},(this.validationStatus==="error"||this.required||this.hideLabel)&&i("span",{id:"screenReaderOnlyText",class:"screen-reader-only-text","aria-hidden":"true"},this.label," ",this.validationStatus==="error"?"invalid data ":null," ",this.required?"required":null),i("fieldset",{id:this.name,"aria-labelledby":`${this.validationStatus==="error"||this.required||this.hideLabel?"screenReaderOnlyText":""} ${e}`.trim(),disabled:this.disabled},!this.hideLabel&&i("legend",null,i("ic-input-label",{class:{[`${this.validationStatus}`]:true},label:this.label,helperText:this.helperText,required:this.required,disabled:this.disabled,for:this.name})),i("div",{class:"checkboxes-container"},i("slot",null))),t&&i("ic-input-validation",{for:this.name,ariaLiveMode:"polite",status:this.validationStatus,message:this.validationText}))}get el(){return s(this)}};d.style=c;export{d as ic_checkbox_group};
2
- //# sourceMappingURL=p-e16f73ba.entry.js.map
1
+ import{r as e,c as t,h as i,H as a,g as o}from"./p-8455d1bb.js";import{j as n,a as s,q as r,s as l}from"./p-11bbb09c.js";import"./p-fd186591.js";const c='/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%;}body{margin:0}main{display:block}h1{font-size:2em;margin:0.67em 0}hr{box-sizing:content-box;height:0;overflow:visible;}pre{font-family:monospace, monospace;font-size:1em;}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em;}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0;}button,input{overflow:visible}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal;}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0;}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px;}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit;}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font-style:inherit;vertical-align:baseline}:host{display:block}ic-input-label.error{color:var(--ic-status-error)}ic-input-label ic-typography{margin-bottom:var(--ic-space-sm)}:host(.small) ic-input-label ic-typography{margin-bottom:calc(var(--ic-space-sm) / 2)}ic-input-validation{margin-top:var(--ic-space-sm)}:host(.small) ic-input-validation{margin-top:calc(var(--ic-space-sm) / 2)}.checkboxes-container{margin-bottom:calc(-1 * var(--ic-space-xxs))}:host(.small) .checkboxes-container{margin-bottom:calc(-1 * var(--ic-space-xxxs))}.screen-reader-only-text{position:absolute;left:-9999px;background-color:#fff;color:#000;text-transform:none}';const d=class{constructor(i){e(this,i);this.icChange=t(this,"icChange",7);this.disabled=false;this.helperText="";this.hideLabel=false;this.label=undefined;this.name=undefined;this.required=false;this.size="default";this.small=false;this.validationStatus="";this.validationText=""}labelNameHandler(e,t,i){Array.from(this.el.querySelectorAll("ic-checkbox")).forEach((a=>{if(i==="label")a.groupLabel=e;else if(a.name===t){a.name=e}}))}handleChange(e){if(e.target.tagName==="IC-TEXT-FIELD"){e.stopImmediatePropagation()}}componentWillLoad(){n(this.disabled,this.el)}componentDidLoad(){s([{prop:this.label,propName:"label"},{prop:this.name,propName:"name"}],"Checkbox Group")}selectHandler({target:e}){const t=Array.from(this.el.querySelectorAll("ic-checkbox")).filter((({checked:e,disabled:t})=>e&&!t));this.icChange.emit({value:t.map((({value:e})=>e)),checkedOptions:t.map((e=>{var t;return{checkbox:e,textFieldValue:(t=e.querySelector("ic-text-field"))===null||t===void 0?void 0:t.value}})),selectedOption:e})}render(){const{disabled:e,helperText:t,hideLabel:o,label:n,name:s,required:c,size:d,small:b,validationStatus:p,validationText:m}=this;const u=r(s,t!=="",p!=="");return i(a,{class:{["small"]:b,[`${d}`]:true}},(p==="error"||c||o)&&i("span",{id:"screenReaderOnlyText",class:"screen-reader-only-text","aria-hidden":"true"},n," ",p==="error"?"invalid data ":null," ",c?"required":null),i("fieldset",{id:s,"aria-labelledby":`${p==="error"||c||o?"screenReaderOnlyText":""} ${u}`.trim(),disabled:e},!o&&i("legend",null,i("ic-input-label",{class:{[`${p}`]:true},label:n,helperText:t,required:c,disabled:e,for:s})),i("div",{class:"checkboxes-container"},i("slot",null))),l(p,e)&&i("ic-input-validation",{for:s,ariaLiveMode:"polite",status:p,message:m}))}get el(){return o(this)}static get watchers(){return{label:["labelNameHandler"],name:["labelNameHandler"]}}};d.style=c;export{d as ic_checkbox_group};
2
+ //# sourceMappingURL=p-85e2a9af.entry.js.map