@ukic/canary-web-components 3.0.0-canary.1 → 3.0.0-canary.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (736) hide show
  1. package/README.md +3 -2
  2. package/dist/cjs/core.cjs.js +1 -1
  3. package/dist/cjs/{helpers-6817cfbb.js → helpers-02b23286.js} +65 -155
  4. package/dist/cjs/helpers-02b23286.js.map +1 -0
  5. package/dist/cjs/{helpers-33b42cd6.js → helpers-ce248d54.js} +80 -29
  6. package/dist/cjs/helpers-ce248d54.js.map +1 -0
  7. package/dist/cjs/ic-accordion-group.cjs.entry.js +10 -10
  8. package/dist/cjs/ic-accordion-group.cjs.entry.js.map +1 -1
  9. package/dist/cjs/ic-accordion.cjs.entry.js +12 -5
  10. package/dist/cjs/ic-accordion.cjs.entry.js.map +1 -1
  11. package/dist/cjs/ic-alert.cjs.entry.js +9 -14
  12. package/dist/cjs/ic-alert.cjs.entry.js.map +1 -1
  13. package/dist/cjs/ic-back-to-top.cjs.entry.js +8 -5
  14. package/dist/cjs/ic-back-to-top.cjs.entry.js.map +1 -1
  15. package/dist/cjs/ic-badge.cjs.entry.js +26 -3
  16. package/dist/cjs/ic-badge.cjs.entry.js.map +1 -1
  17. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js +43 -20
  18. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js.map +1 -1
  19. package/dist/cjs/ic-breadcrumb.cjs.entry.js +47 -3
  20. package/dist/cjs/ic-breadcrumb.cjs.entry.js.map +1 -1
  21. package/dist/cjs/ic-button_3.cjs.entry.js +28 -26
  22. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  23. package/dist/cjs/ic-card-horizontal.cjs.entry.js +33 -35
  24. package/dist/cjs/ic-card-horizontal.cjs.entry.js.map +1 -1
  25. package/dist/cjs/ic-card-vertical.cjs.entry.js +48 -47
  26. package/dist/cjs/ic-card-vertical.cjs.entry.js.map +1 -1
  27. package/dist/cjs/ic-checkbox-group.cjs.entry.js +21 -6
  28. package/dist/cjs/ic-checkbox-group.cjs.entry.js.map +1 -1
  29. package/dist/cjs/ic-checkbox.cjs.entry.js +10 -4
  30. package/dist/cjs/ic-checkbox.cjs.entry.js.map +1 -1
  31. package/dist/cjs/ic-chip.cjs.entry.js +27 -15
  32. package/dist/cjs/ic-chip.cjs.entry.js.map +1 -1
  33. package/dist/cjs/ic-classification-banner.cjs.entry.js +1 -1
  34. package/dist/cjs/ic-classification-banner.cjs.entry.js.map +1 -1
  35. package/dist/cjs/ic-data-row.cjs.entry.js +1 -1
  36. package/dist/cjs/ic-data-table-title-bar.cjs.entry.js +7 -7
  37. package/dist/cjs/ic-data-table-title-bar.cjs.entry.js.map +1 -1
  38. package/dist/cjs/ic-data-table.cjs.entry.js +378 -108
  39. package/dist/cjs/ic-data-table.cjs.entry.js.map +1 -1
  40. package/dist/cjs/ic-date-input.cjs.entry.js +23 -18
  41. package/dist/cjs/ic-date-input.cjs.entry.js.map +1 -1
  42. package/dist/cjs/ic-date-picker.cjs.entry.js +16 -5
  43. package/dist/cjs/ic-date-picker.cjs.entry.js.map +1 -1
  44. package/dist/cjs/ic-dialog.cjs.entry.js +13 -5
  45. package/dist/cjs/ic-dialog.cjs.entry.js.map +1 -1
  46. package/dist/cjs/ic-divider.cjs.entry.js +73 -9
  47. package/dist/cjs/ic-divider.cjs.entry.js.map +1 -1
  48. package/dist/cjs/ic-empty-state_2.cjs.entry.js +101 -43
  49. package/dist/cjs/ic-empty-state_2.cjs.entry.js.map +1 -1
  50. package/dist/cjs/ic-footer-link-group.cjs.entry.js +6 -7
  51. package/dist/cjs/ic-footer-link-group.cjs.entry.js.map +1 -1
  52. package/dist/cjs/ic-footer-link.cjs.entry.js +7 -6
  53. package/dist/cjs/ic-footer-link.cjs.entry.js.map +1 -1
  54. package/dist/cjs/ic-footer.cjs.entry.js +24 -14
  55. package/dist/cjs/ic-footer.cjs.entry.js.map +1 -1
  56. package/dist/cjs/ic-hero.cjs.entry.js +7 -15
  57. package/dist/cjs/ic-hero.cjs.entry.js.map +1 -1
  58. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +17 -9
  59. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js.map +1 -1
  60. package/dist/cjs/ic-input-component-container_3.cjs.entry.js +1016 -0
  61. package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +1 -0
  62. package/dist/cjs/ic-input-label_2.cjs.entry.js +82 -0
  63. package/dist/cjs/ic-input-label_2.cjs.entry.js.map +1 -0
  64. package/dist/cjs/ic-link.cjs.entry.js +10 -12
  65. package/dist/cjs/ic-link.cjs.entry.js.map +1 -1
  66. package/dist/cjs/ic-menu-group.cjs.entry.js +3 -3
  67. package/dist/cjs/ic-menu-group.cjs.entry.js.map +1 -1
  68. package/dist/cjs/ic-menu-item.cjs.entry.js +25 -18
  69. package/dist/cjs/ic-menu-item.cjs.entry.js.map +1 -1
  70. package/dist/cjs/ic-navigation-button.cjs.entry.js +11 -8
  71. package/dist/cjs/ic-navigation-button.cjs.entry.js.map +1 -1
  72. package/dist/cjs/ic-navigation-group.cjs.entry.js +10 -8
  73. package/dist/cjs/ic-navigation-group.cjs.entry.js.map +1 -1
  74. package/dist/cjs/ic-navigation-item.cjs.entry.js +60 -8
  75. package/dist/cjs/ic-navigation-item.cjs.entry.js.map +1 -1
  76. package/dist/cjs/ic-navigation-menu.cjs.entry.js +5 -4
  77. package/dist/cjs/ic-navigation-menu.cjs.entry.js.map +1 -1
  78. package/dist/cjs/ic-page-header.cjs.entry.js +8 -6
  79. package/dist/cjs/ic-page-header.cjs.entry.js.map +1 -1
  80. package/dist/cjs/ic-pagination_4.cjs.entry.js +267 -112
  81. package/dist/cjs/ic-pagination_4.cjs.entry.js.map +1 -1
  82. package/dist/cjs/ic-popover-menu.cjs.entry.js +47 -25
  83. package/dist/cjs/ic-popover-menu.cjs.entry.js.map +1 -1
  84. package/dist/cjs/ic-radio-group.cjs.entry.js +58 -28
  85. package/dist/cjs/ic-radio-group.cjs.entry.js.map +1 -1
  86. package/dist/cjs/ic-radio-option.cjs.entry.js +42 -22
  87. package/dist/cjs/ic-radio-option.cjs.entry.js.map +1 -1
  88. package/dist/cjs/ic-search-bar.cjs.entry.js +54 -56
  89. package/dist/cjs/ic-search-bar.cjs.entry.js.map +1 -1
  90. package/dist/cjs/ic-side-navigation.cjs.entry.js +16 -11
  91. package/dist/cjs/ic-side-navigation.cjs.entry.js.map +1 -1
  92. package/dist/cjs/ic-skeleton.cjs.entry.js +4 -4
  93. package/dist/cjs/ic-skeleton.cjs.entry.js.map +1 -1
  94. package/dist/cjs/ic-status-tag.cjs.entry.js +5 -4
  95. package/dist/cjs/ic-status-tag.cjs.entry.js.map +1 -1
  96. package/dist/cjs/ic-step.cjs.entry.js +4 -5
  97. package/dist/cjs/ic-step.cjs.entry.js.map +1 -1
  98. package/dist/cjs/ic-stepper.cjs.entry.js +12 -2
  99. package/dist/cjs/ic-stepper.cjs.entry.js.map +1 -1
  100. package/dist/cjs/ic-switch.cjs.entry.js +21 -16
  101. package/dist/cjs/ic-switch.cjs.entry.js.map +1 -1
  102. package/dist/cjs/ic-tab-context.cjs.entry.js +60 -123
  103. package/dist/cjs/ic-tab-context.cjs.entry.js.map +1 -1
  104. package/dist/cjs/ic-tab-group.cjs.entry.js +3 -19
  105. package/dist/cjs/ic-tab-group.cjs.entry.js.map +1 -1
  106. package/dist/cjs/ic-tab-panel.cjs.entry.js +2 -2
  107. package/dist/cjs/ic-tab-panel.cjs.entry.js.map +1 -1
  108. package/dist/cjs/ic-tab.cjs.entry.js +10 -8
  109. package/dist/cjs/ic-tab.cjs.entry.js.map +1 -1
  110. package/dist/cjs/ic-theme.cjs.entry.js +20 -20
  111. package/dist/cjs/ic-theme.cjs.entry.js.map +1 -1
  112. package/dist/cjs/ic-toast.cjs.entry.js +4 -4
  113. package/dist/cjs/ic-toast.cjs.entry.js.map +1 -1
  114. package/dist/cjs/ic-toggle-button-group.cjs.entry.js +62 -12
  115. package/dist/cjs/ic-toggle-button-group.cjs.entry.js.map +1 -1
  116. package/dist/cjs/ic-toggle-button.cjs.entry.js +64 -9
  117. package/dist/cjs/ic-toggle-button.cjs.entry.js.map +1 -1
  118. package/dist/cjs/ic-top-navigation.cjs.entry.js +13 -7
  119. package/dist/cjs/ic-top-navigation.cjs.entry.js.map +1 -1
  120. package/dist/cjs/ic-tree-item.cjs.entry.js +22 -16
  121. package/dist/cjs/ic-tree-item.cjs.entry.js.map +1 -1
  122. package/dist/cjs/ic-tree-view.cjs.entry.js +45 -23
  123. package/dist/cjs/ic-tree-view.cjs.entry.js.map +1 -1
  124. package/dist/cjs/ic-typography.cjs.entry.js +5 -3
  125. package/dist/cjs/ic-typography.cjs.entry.js.map +1 -1
  126. package/dist/cjs/index-4cf27b16.js +4 -12
  127. package/dist/cjs/loader.cjs.js +1 -1
  128. package/dist/collection/collection-manifest.json +0 -2
  129. package/dist/collection/components/ic-card-horizontal/ic-card-horizontal.css +26 -26
  130. package/dist/collection/components/ic-card-horizontal/ic-card-horizontal.js +63 -38
  131. package/dist/collection/components/ic-card-horizontal/ic-card-horizontal.js.map +1 -1
  132. package/dist/collection/components/ic-card-horizontal/test/basic/ic-card-horizontal.spec.js +10 -0
  133. package/dist/collection/components/ic-card-horizontal/test/basic/ic-card-horizontal.spec.js.map +1 -1
  134. package/dist/collection/components/ic-data-table/ic-data-table.css +177 -23
  135. package/dist/collection/components/ic-data-table/ic-data-table.js +480 -127
  136. package/dist/collection/components/ic-data-table/ic-data-table.js.map +1 -1
  137. package/dist/collection/components/ic-data-table/ic-data-table.types.js.map +1 -1
  138. package/dist/collection/components/ic-data-table/story-data.js +425 -7
  139. package/dist/collection/components/ic-data-table/story-data.js.map +1 -1
  140. package/dist/collection/components/ic-data-table/test/basic/ic-data-table.spec.js +123 -2
  141. package/dist/collection/components/ic-data-table/test/basic/ic-data-table.spec.js.map +1 -1
  142. package/dist/collection/components/ic-data-table-title-bar/ic-data-table-title-bar.css +9 -4
  143. package/dist/collection/components/ic-data-table-title-bar/ic-data-table-title-bar.js +5 -5
  144. package/dist/collection/components/ic-data-table-title-bar/ic-data-table-title-bar.js.map +1 -1
  145. package/dist/collection/components/ic-date-input/ic-date-input.css +74 -9
  146. package/dist/collection/components/ic-date-input/ic-date-input.js +67 -18
  147. package/dist/collection/components/ic-date-input/ic-date-input.js.map +1 -1
  148. package/dist/collection/components/ic-date-picker/ic-date-picker.css +18 -16
  149. package/dist/collection/components/ic-date-picker/ic-date-picker.js +59 -4
  150. package/dist/collection/components/ic-date-picker/ic-date-picker.js.map +1 -1
  151. package/dist/collection/components/ic-pagination-bar/ic-pagination-bar.css +4 -7
  152. package/dist/collection/components/ic-pagination-bar/ic-pagination-bar.js +213 -46
  153. package/dist/collection/components/ic-pagination-bar/ic-pagination-bar.js.map +1 -1
  154. package/dist/collection/components/ic-pagination-bar/ic-pagination-bar.types.js +2 -0
  155. package/dist/collection/components/ic-pagination-bar/ic-pagination-bar.types.js.map +1 -0
  156. package/dist/collection/components/ic-pagination-bar/test/basic/ic-pagination-bar.spec.js +20 -2
  157. package/dist/collection/components/ic-pagination-bar/test/basic/ic-pagination-bar.spec.js.map +1 -1
  158. package/dist/collection/components/ic-tree-item/ic-tree-item.css +51 -26
  159. package/dist/collection/components/ic-tree-item/ic-tree-item.js +84 -44
  160. package/dist/collection/components/ic-tree-item/ic-tree-item.js.map +1 -1
  161. package/dist/collection/components/ic-tree-item/test/basic/ic-tree-item.spec.js +3 -0
  162. package/dist/collection/components/ic-tree-item/test/basic/ic-tree-item.spec.js.map +1 -1
  163. package/dist/collection/components/ic-tree-view/ic-tree-view.css +31 -8
  164. package/dist/collection/components/ic-tree-view/ic-tree-view.js +117 -37
  165. package/dist/collection/components/ic-tree-view/ic-tree-view.js.map +1 -1
  166. package/dist/collection/utils/helpers.js +53 -34
  167. package/dist/collection/utils/helpers.js.map +1 -1
  168. package/dist/collection/utils/types.js +6 -6
  169. package/dist/collection/utils/types.js.map +1 -1
  170. package/dist/components/helpers.js +73 -26
  171. package/dist/components/helpers.js.map +1 -1
  172. package/dist/components/helpers2.js +60 -145
  173. package/dist/components/helpers2.js.map +1 -1
  174. package/dist/components/ic-accordion-group.js +11 -11
  175. package/dist/components/ic-accordion-group.js.map +1 -1
  176. package/dist/components/ic-accordion.js +14 -6
  177. package/dist/components/ic-accordion.js.map +1 -1
  178. package/dist/components/ic-alert.js +12 -16
  179. package/dist/components/ic-alert.js.map +1 -1
  180. package/dist/components/ic-back-to-top.js +9 -5
  181. package/dist/components/ic-back-to-top.js.map +1 -1
  182. package/dist/components/ic-badge.js +28 -5
  183. package/dist/components/ic-badge.js.map +1 -1
  184. package/dist/components/ic-breadcrumb-group.js +44 -20
  185. package/dist/components/ic-breadcrumb-group.js.map +1 -1
  186. package/dist/components/ic-breadcrumb2.js +49 -3
  187. package/dist/components/ic-breadcrumb2.js.map +1 -1
  188. package/dist/components/ic-button2.js +21 -20
  189. package/dist/components/ic-button2.js.map +1 -1
  190. package/dist/components/ic-card-horizontal.js +38 -37
  191. package/dist/components/ic-card-horizontal.js.map +1 -1
  192. package/dist/components/ic-card-vertical.js +54 -50
  193. package/dist/components/ic-card-vertical.js.map +1 -1
  194. package/dist/components/ic-checkbox-group.js +25 -7
  195. package/dist/components/ic-checkbox-group.js.map +1 -1
  196. package/dist/components/ic-checkbox.js +12 -4
  197. package/dist/components/ic-checkbox.js.map +1 -1
  198. package/dist/components/ic-chip.js +32 -16
  199. package/dist/components/ic-chip.js.map +1 -1
  200. package/dist/components/ic-classification-banner.js +1 -1
  201. package/dist/components/ic-classification-banner.js.map +1 -1
  202. package/dist/components/ic-data-row.js +1 -1
  203. package/dist/components/ic-data-table-title-bar.js +6 -6
  204. package/dist/components/ic-data-table-title-bar.js.map +1 -1
  205. package/dist/components/ic-data-table.js +383 -108
  206. package/dist/components/ic-data-table.js.map +1 -1
  207. package/dist/components/ic-date-input2.js +26 -18
  208. package/dist/components/ic-date-input2.js.map +1 -1
  209. package/dist/components/ic-date-picker.js +19 -5
  210. package/dist/components/ic-date-picker.js.map +1 -1
  211. package/dist/components/ic-dialog.js +13 -4
  212. package/dist/components/ic-dialog.js.map +1 -1
  213. package/dist/components/ic-divider2.js +89 -12
  214. package/dist/components/ic-divider2.js.map +1 -1
  215. package/dist/components/ic-empty-state2.js +10 -17
  216. package/dist/components/ic-empty-state2.js.map +1 -1
  217. package/dist/components/ic-footer-link-group.js +7 -8
  218. package/dist/components/ic-footer-link-group.js.map +1 -1
  219. package/dist/components/ic-footer-link.js +8 -7
  220. package/dist/components/ic-footer-link.js.map +1 -1
  221. package/dist/components/ic-footer.js +25 -15
  222. package/dist/components/ic-footer.js.map +1 -1
  223. package/dist/components/ic-hero.js +9 -17
  224. package/dist/components/ic-hero.js.map +1 -1
  225. package/dist/components/ic-horizontal-scroll2.js +19 -9
  226. package/dist/components/ic-horizontal-scroll2.js.map +1 -1
  227. package/dist/components/ic-input-component-container2.js +23 -32
  228. package/dist/components/ic-input-component-container2.js.map +1 -1
  229. package/dist/components/ic-input-label2.js +19 -20
  230. package/dist/components/ic-input-label2.js.map +1 -1
  231. package/dist/components/ic-input-validation2.js +9 -9
  232. package/dist/components/ic-input-validation2.js.map +1 -1
  233. package/dist/components/ic-link2.js +13 -15
  234. package/dist/components/ic-link2.js.map +1 -1
  235. package/dist/components/ic-loading-indicator2.js +11 -9
  236. package/dist/components/ic-loading-indicator2.js.map +1 -1
  237. package/dist/components/ic-menu-group.js +2 -2
  238. package/dist/components/ic-menu-group.js.map +1 -1
  239. package/dist/components/ic-menu-item2.js +30 -21
  240. package/dist/components/ic-menu-item2.js.map +1 -1
  241. package/dist/components/ic-menu2.js +472 -175
  242. package/dist/components/ic-menu2.js.map +1 -1
  243. package/dist/components/ic-navigation-button.js +13 -9
  244. package/dist/components/ic-navigation-button.js.map +1 -1
  245. package/dist/components/ic-navigation-group.js +12 -9
  246. package/dist/components/ic-navigation-group.js.map +1 -1
  247. package/dist/components/ic-navigation-item.js +64 -10
  248. package/dist/components/ic-navigation-item.js.map +1 -1
  249. package/dist/components/ic-navigation-menu2.js +6 -4
  250. package/dist/components/ic-navigation-menu2.js.map +1 -1
  251. package/dist/components/ic-page-header.js +9 -6
  252. package/dist/components/ic-page-header.js.map +1 -1
  253. package/dist/components/ic-pagination-bar2.js +106 -32
  254. package/dist/components/ic-pagination-bar2.js.map +1 -1
  255. package/dist/components/ic-pagination-item2.js +15 -12
  256. package/dist/components/ic-pagination-item2.js.map +1 -1
  257. package/dist/components/ic-pagination2.js +25 -15
  258. package/dist/components/ic-pagination2.js.map +1 -1
  259. package/dist/components/ic-popover-menu.js +50 -26
  260. package/dist/components/ic-popover-menu.js.map +1 -1
  261. package/dist/components/ic-radio-group.js +61 -29
  262. package/dist/components/ic-radio-group.js.map +1 -1
  263. package/dist/components/ic-radio-option.js +45 -23
  264. package/dist/components/ic-radio-option.js.map +1 -1
  265. package/dist/components/ic-search-bar.js +70 -81
  266. package/dist/components/ic-search-bar.js.map +1 -1
  267. package/dist/components/ic-select2.js +196 -67
  268. package/dist/components/ic-select2.js.map +1 -1
  269. package/dist/components/ic-side-navigation.js +17 -12
  270. package/dist/components/ic-side-navigation.js.map +1 -1
  271. package/dist/components/ic-skeleton.js +5 -5
  272. package/dist/components/ic-skeleton.js.map +1 -1
  273. package/dist/components/ic-status-tag.js +5 -3
  274. package/dist/components/ic-status-tag.js.map +1 -1
  275. package/dist/components/ic-step.js +4 -4
  276. package/dist/components/ic-step.js.map +1 -1
  277. package/dist/components/ic-stepper.js +14 -3
  278. package/dist/components/ic-stepper.js.map +1 -1
  279. package/dist/components/ic-switch.js +24 -18
  280. package/dist/components/ic-switch.js.map +1 -1
  281. package/dist/components/ic-tab-context.js +60 -123
  282. package/dist/components/ic-tab-context.js.map +1 -1
  283. package/dist/components/ic-tab-group.js +2 -18
  284. package/dist/components/ic-tab-group.js.map +1 -1
  285. package/dist/components/ic-tab-panel.js +1 -1
  286. package/dist/components/ic-tab-panel.js.map +1 -1
  287. package/dist/components/ic-tab.js +10 -8
  288. package/dist/components/ic-tab.js.map +1 -1
  289. package/dist/components/ic-text-field2.js +46 -24
  290. package/dist/components/ic-text-field2.js.map +1 -1
  291. package/dist/components/ic-theme.js +22 -22
  292. package/dist/components/ic-theme.js.map +1 -1
  293. package/dist/components/ic-toast.js +4 -4
  294. package/dist/components/ic-toast.js.map +1 -1
  295. package/dist/components/ic-toggle-button-group.js +75 -14
  296. package/dist/components/ic-toggle-button-group.js.map +1 -1
  297. package/dist/components/ic-toggle-button.js +76 -17
  298. package/dist/components/ic-toggle-button.js.map +1 -1
  299. package/dist/components/ic-tooltip2.js +1 -1
  300. package/dist/components/ic-tooltip2.js.map +1 -1
  301. package/dist/components/ic-top-navigation.js +15 -8
  302. package/dist/components/ic-top-navigation.js.map +1 -1
  303. package/dist/components/ic-tree-item.js +27 -18
  304. package/dist/components/ic-tree-item.js.map +1 -1
  305. package/dist/components/ic-tree-view.js +54 -27
  306. package/dist/components/ic-tree-view.js.map +1 -1
  307. package/dist/components/ic-typography2.js +4 -2
  308. package/dist/components/ic-typography2.js.map +1 -1
  309. package/dist/core/core.css +1601 -77
  310. package/dist/core/core.esm.js +1 -1
  311. package/dist/core/core.esm.js.map +1 -1
  312. package/dist/core/p-0054bdc2.entry.js +2 -0
  313. package/dist/core/p-0054bdc2.entry.js.map +1 -0
  314. package/dist/core/p-01a23e24.entry.js +2 -0
  315. package/dist/core/p-01a23e24.entry.js.map +1 -0
  316. package/dist/core/{p-5f5403e2.entry.js → p-01ab3a15.entry.js} +2 -2
  317. package/dist/core/{p-5f5403e2.entry.js.map → p-01ab3a15.entry.js.map} +1 -1
  318. package/dist/core/p-063911a8.entry.js +2 -0
  319. package/dist/core/p-063911a8.entry.js.map +1 -0
  320. package/dist/core/{p-bf670360.entry.js → p-0c5d45e1.entry.js} +2 -2
  321. package/dist/core/p-0c5d45e1.entry.js.map +1 -0
  322. package/dist/core/p-0c9155f4.entry.js +2 -0
  323. package/dist/core/p-0c9155f4.entry.js.map +1 -0
  324. package/dist/core/p-14098257.entry.js +2 -0
  325. package/dist/core/p-14098257.entry.js.map +1 -0
  326. package/dist/core/p-157b47bc.entry.js +2 -0
  327. package/dist/core/p-157b47bc.entry.js.map +1 -0
  328. package/dist/core/{p-266341f5.entry.js → p-15a5cce5.entry.js} +2 -2
  329. package/dist/core/{p-266341f5.entry.js.map → p-15a5cce5.entry.js.map} +1 -1
  330. package/dist/core/{p-306def43.entry.js → p-1658e577.entry.js} +2 -2
  331. package/dist/core/p-1658e577.entry.js.map +1 -0
  332. package/dist/core/p-2169e75b.entry.js +2 -0
  333. package/dist/core/p-2169e75b.entry.js.map +1 -0
  334. package/dist/core/p-26aff39e.entry.js +2 -0
  335. package/dist/core/p-26aff39e.entry.js.map +1 -0
  336. package/dist/core/p-27b1223d.entry.js +2 -0
  337. package/dist/core/p-27b1223d.entry.js.map +1 -0
  338. package/dist/core/p-32726b89.entry.js +2 -0
  339. package/dist/core/p-32726b89.entry.js.map +1 -0
  340. package/dist/core/p-33110185.entry.js +2 -0
  341. package/dist/core/p-33110185.entry.js.map +1 -0
  342. package/dist/core/p-3963201d.entry.js +2 -0
  343. package/dist/core/p-3963201d.entry.js.map +1 -0
  344. package/dist/core/p-41bfa3e5.entry.js +2 -0
  345. package/dist/core/p-41bfa3e5.entry.js.map +1 -0
  346. package/dist/core/p-4347f05c.entry.js +2 -0
  347. package/dist/core/p-4347f05c.entry.js.map +1 -0
  348. package/dist/core/{p-d8563643.entry.js → p-45177148.entry.js} +2 -2
  349. package/dist/core/p-45177148.entry.js.map +1 -0
  350. package/dist/core/p-47a1ce8d.entry.js +2 -0
  351. package/dist/core/p-47a1ce8d.entry.js.map +1 -0
  352. package/dist/core/p-4f96bec1.entry.js +2 -0
  353. package/dist/core/p-4f96bec1.entry.js.map +1 -0
  354. package/dist/core/p-51058719.entry.js +2 -0
  355. package/dist/core/p-51058719.entry.js.map +1 -0
  356. package/dist/core/p-5193184c.entry.js +2 -0
  357. package/dist/core/p-5193184c.entry.js.map +1 -0
  358. package/dist/core/p-51faa4ba.entry.js +2 -0
  359. package/dist/core/p-51faa4ba.entry.js.map +1 -0
  360. package/dist/core/p-54dc696e.entry.js +2 -0
  361. package/dist/core/p-54dc696e.entry.js.map +1 -0
  362. package/dist/core/p-6188f029.entry.js +2 -0
  363. package/dist/core/p-6188f029.entry.js.map +1 -0
  364. package/dist/core/p-6ac8e09b.entry.js +2 -0
  365. package/dist/core/p-6ac8e09b.entry.js.map +1 -0
  366. package/dist/core/p-71496305.entry.js +2 -0
  367. package/dist/core/p-71496305.entry.js.map +1 -0
  368. package/dist/core/p-77157922.entry.js +2 -0
  369. package/dist/core/p-77157922.entry.js.map +1 -0
  370. package/dist/core/p-78ed3070.entry.js +2 -0
  371. package/dist/core/p-78ed3070.entry.js.map +1 -0
  372. package/dist/core/p-794ff553.entry.js +2 -0
  373. package/dist/core/p-794ff553.entry.js.map +1 -0
  374. package/dist/core/p-82b408ad.entry.js +2 -0
  375. package/dist/core/p-82b408ad.entry.js.map +1 -0
  376. package/dist/core/p-88913402.entry.js +2 -0
  377. package/dist/core/p-88913402.entry.js.map +1 -0
  378. package/dist/core/p-897fac99.js +2 -0
  379. package/dist/core/p-897fac99.js.map +1 -0
  380. package/dist/core/p-8e56516a.entry.js +2 -0
  381. package/dist/core/p-8e56516a.entry.js.map +1 -0
  382. package/dist/core/p-8ebd64ae.entry.js +2 -0
  383. package/dist/core/p-8ebd64ae.entry.js.map +1 -0
  384. package/dist/core/{p-c21d0db8.entry.js → p-9462f294.entry.js} +2 -2
  385. package/dist/core/p-9462f294.entry.js.map +1 -0
  386. package/dist/core/p-94efa0d2.entry.js +2 -0
  387. package/dist/core/p-94efa0d2.entry.js.map +1 -0
  388. package/dist/core/p-9a392c41.entry.js +2 -0
  389. package/dist/core/p-9a392c41.entry.js.map +1 -0
  390. package/dist/core/p-a04712b9.js +2 -0
  391. package/dist/core/p-a04712b9.js.map +1 -0
  392. package/dist/core/p-a1cf5884.entry.js +2 -0
  393. package/dist/core/p-a1cf5884.entry.js.map +1 -0
  394. package/dist/core/{p-73b40c79.entry.js → p-a1d5fff2.entry.js} +2 -2
  395. package/dist/core/p-a1d5fff2.entry.js.map +1 -0
  396. package/dist/core/p-a69ef3eb.entry.js +2 -0
  397. package/dist/core/p-a69ef3eb.entry.js.map +1 -0
  398. package/dist/core/p-abda7e21.entry.js +2 -0
  399. package/dist/core/p-abda7e21.entry.js.map +1 -0
  400. package/dist/core/p-abdd8560.entry.js +2 -0
  401. package/dist/core/p-abdd8560.entry.js.map +1 -0
  402. package/dist/core/p-ace8126b.entry.js +2 -0
  403. package/dist/core/p-ace8126b.entry.js.map +1 -0
  404. package/dist/core/p-b2a6f0dd.entry.js +2 -0
  405. package/dist/core/p-b2a6f0dd.entry.js.map +1 -0
  406. package/dist/core/p-b5a5fe39.entry.js +2 -0
  407. package/dist/core/p-b5a5fe39.entry.js.map +1 -0
  408. package/dist/core/{p-d03374fc.entry.js → p-b717ae40.entry.js} +2 -2
  409. package/dist/core/p-b85466a7.entry.js +2 -0
  410. package/dist/core/p-b85466a7.entry.js.map +1 -0
  411. package/dist/core/p-bd4401d5.entry.js +2 -0
  412. package/dist/core/p-bd4401d5.entry.js.map +1 -0
  413. package/dist/core/p-bd87bf33.entry.js +2 -0
  414. package/dist/core/p-bd87bf33.entry.js.map +1 -0
  415. package/dist/core/{p-5f313e1a.entry.js → p-be1ec9aa.entry.js} +2 -2
  416. package/dist/core/p-be1ec9aa.entry.js.map +1 -0
  417. package/dist/core/p-c035d7b9.entry.js +2 -0
  418. package/dist/core/p-c035d7b9.entry.js.map +1 -0
  419. package/dist/core/p-ce923b92.entry.js +2 -0
  420. package/dist/core/p-ce923b92.entry.js.map +1 -0
  421. package/dist/core/p-d2b2b7df.entry.js +2 -0
  422. package/dist/core/p-d2b2b7df.entry.js.map +1 -0
  423. package/dist/core/p-e1df1b9a.entry.js +2 -0
  424. package/dist/core/p-e1df1b9a.entry.js.map +1 -0
  425. package/dist/core/p-e3e0cf46.entry.js +2 -0
  426. package/dist/core/p-e3e0cf46.entry.js.map +1 -0
  427. package/dist/core/p-f3d2af04.entry.js +2 -0
  428. package/dist/core/p-f3d2af04.entry.js.map +1 -0
  429. package/dist/core/{p-f1072c28.entry.js → p-f64abdff.entry.js} +2 -2
  430. package/dist/core/p-f64abdff.entry.js.map +1 -0
  431. package/dist/core/p-fc155ae2.entry.js +2 -0
  432. package/dist/core/p-fc155ae2.entry.js.map +1 -0
  433. package/dist/core/p-ffb11ad1.entry.js +2 -0
  434. package/dist/core/p-ffb11ad1.entry.js.map +1 -0
  435. package/dist/esm/core.js +1 -1
  436. package/dist/esm/{helpers-5bd2012a.js → helpers-0f42cb46.js} +61 -146
  437. package/dist/esm/helpers-0f42cb46.js.map +1 -0
  438. package/dist/esm/{helpers-dab8ddfe.js → helpers-56c75bf4.js} +74 -27
  439. package/dist/esm/helpers-56c75bf4.js.map +1 -0
  440. package/dist/esm/ic-accordion-group.entry.js +10 -10
  441. package/dist/esm/ic-accordion-group.entry.js.map +1 -1
  442. package/dist/esm/ic-accordion.entry.js +12 -5
  443. package/dist/esm/ic-accordion.entry.js.map +1 -1
  444. package/dist/esm/ic-alert.entry.js +10 -15
  445. package/dist/esm/ic-alert.entry.js.map +1 -1
  446. package/dist/esm/ic-back-to-top.entry.js +9 -6
  447. package/dist/esm/ic-back-to-top.entry.js.map +1 -1
  448. package/dist/esm/ic-badge.entry.js +26 -3
  449. package/dist/esm/ic-badge.entry.js.map +1 -1
  450. package/dist/esm/ic-breadcrumb-group.entry.js +43 -20
  451. package/dist/esm/ic-breadcrumb-group.entry.js.map +1 -1
  452. package/dist/esm/ic-breadcrumb.entry.js +47 -3
  453. package/dist/esm/ic-breadcrumb.entry.js.map +1 -1
  454. package/dist/esm/ic-button_3.entry.js +28 -26
  455. package/dist/esm/ic-button_3.entry.js.map +1 -1
  456. package/dist/esm/ic-card-horizontal.entry.js +34 -36
  457. package/dist/esm/ic-card-horizontal.entry.js.map +1 -1
  458. package/dist/esm/ic-card-vertical.entry.js +49 -48
  459. package/dist/esm/ic-card-vertical.entry.js.map +1 -1
  460. package/dist/esm/ic-checkbox-group.entry.js +21 -6
  461. package/dist/esm/ic-checkbox-group.entry.js.map +1 -1
  462. package/dist/esm/ic-checkbox.entry.js +10 -4
  463. package/dist/esm/ic-checkbox.entry.js.map +1 -1
  464. package/dist/esm/ic-chip.entry.js +28 -16
  465. package/dist/esm/ic-chip.entry.js.map +1 -1
  466. package/dist/esm/ic-classification-banner.entry.js +1 -1
  467. package/dist/esm/ic-classification-banner.entry.js.map +1 -1
  468. package/dist/esm/ic-data-row.entry.js +1 -1
  469. package/dist/esm/ic-data-table-title-bar.entry.js +7 -7
  470. package/dist/esm/ic-data-table-title-bar.entry.js.map +1 -1
  471. package/dist/esm/ic-data-table.entry.js +378 -108
  472. package/dist/esm/ic-data-table.entry.js.map +1 -1
  473. package/dist/esm/ic-date-input.entry.js +23 -18
  474. package/dist/esm/ic-date-input.entry.js.map +1 -1
  475. package/dist/esm/ic-date-picker.entry.js +16 -5
  476. package/dist/esm/ic-date-picker.entry.js.map +1 -1
  477. package/dist/esm/ic-dialog.entry.js +13 -5
  478. package/dist/esm/ic-dialog.entry.js.map +1 -1
  479. package/dist/esm/ic-divider.entry.js +74 -10
  480. package/dist/esm/ic-divider.entry.js.map +1 -1
  481. package/dist/esm/ic-empty-state_2.entry.js +102 -44
  482. package/dist/esm/ic-empty-state_2.entry.js.map +1 -1
  483. package/dist/esm/ic-footer-link-group.entry.js +6 -7
  484. package/dist/esm/ic-footer-link-group.entry.js.map +1 -1
  485. package/dist/esm/ic-footer-link.entry.js +7 -6
  486. package/dist/esm/ic-footer-link.entry.js.map +1 -1
  487. package/dist/esm/ic-footer.entry.js +24 -14
  488. package/dist/esm/ic-footer.entry.js.map +1 -1
  489. package/dist/esm/ic-hero.entry.js +8 -16
  490. package/dist/esm/ic-hero.entry.js.map +1 -1
  491. package/dist/esm/ic-horizontal-scroll.entry.js +17 -9
  492. package/dist/esm/ic-horizontal-scroll.entry.js.map +1 -1
  493. package/dist/{collection/components/ic-menu-with-multi/ic-menu.js → esm/ic-input-component-container_3.entry.js} +173 -739
  494. package/dist/esm/ic-input-component-container_3.entry.js.map +1 -0
  495. package/dist/esm/ic-input-label_2.entry.js +77 -0
  496. package/dist/esm/ic-input-label_2.entry.js.map +1 -0
  497. package/dist/esm/ic-link.entry.js +10 -12
  498. package/dist/esm/ic-link.entry.js.map +1 -1
  499. package/dist/esm/ic-menu-group.entry.js +3 -3
  500. package/dist/esm/ic-menu-group.entry.js.map +1 -1
  501. package/dist/esm/ic-menu-item.entry.js +25 -18
  502. package/dist/esm/ic-menu-item.entry.js.map +1 -1
  503. package/dist/esm/ic-navigation-button.entry.js +11 -8
  504. package/dist/esm/ic-navigation-button.entry.js.map +1 -1
  505. package/dist/esm/ic-navigation-group.entry.js +10 -8
  506. package/dist/esm/ic-navigation-group.entry.js.map +1 -1
  507. package/dist/esm/ic-navigation-item.entry.js +61 -9
  508. package/dist/esm/ic-navigation-item.entry.js.map +1 -1
  509. package/dist/esm/ic-navigation-menu.entry.js +5 -4
  510. package/dist/esm/ic-navigation-menu.entry.js.map +1 -1
  511. package/dist/esm/ic-page-header.entry.js +8 -6
  512. package/dist/esm/ic-page-header.entry.js.map +1 -1
  513. package/dist/esm/ic-pagination_4.entry.js +267 -112
  514. package/dist/esm/ic-pagination_4.entry.js.map +1 -1
  515. package/dist/esm/ic-popover-menu.entry.js +47 -25
  516. package/dist/esm/ic-popover-menu.entry.js.map +1 -1
  517. package/dist/esm/ic-radio-group.entry.js +58 -28
  518. package/dist/esm/ic-radio-group.entry.js.map +1 -1
  519. package/dist/esm/ic-radio-option.entry.js +42 -22
  520. package/dist/esm/ic-radio-option.entry.js.map +1 -1
  521. package/dist/esm/ic-search-bar.entry.js +54 -56
  522. package/dist/esm/ic-search-bar.entry.js.map +1 -1
  523. package/dist/esm/ic-side-navigation.entry.js +16 -11
  524. package/dist/esm/ic-side-navigation.entry.js.map +1 -1
  525. package/dist/esm/ic-skeleton.entry.js +4 -4
  526. package/dist/esm/ic-skeleton.entry.js.map +1 -1
  527. package/dist/esm/ic-status-tag.entry.js +5 -4
  528. package/dist/esm/ic-status-tag.entry.js.map +1 -1
  529. package/dist/esm/ic-step.entry.js +4 -5
  530. package/dist/esm/ic-step.entry.js.map +1 -1
  531. package/dist/esm/ic-stepper.entry.js +12 -2
  532. package/dist/esm/ic-stepper.entry.js.map +1 -1
  533. package/dist/esm/ic-switch.entry.js +21 -16
  534. package/dist/esm/ic-switch.entry.js.map +1 -1
  535. package/dist/esm/ic-tab-context.entry.js +60 -123
  536. package/dist/esm/ic-tab-context.entry.js.map +1 -1
  537. package/dist/esm/ic-tab-group.entry.js +3 -19
  538. package/dist/esm/ic-tab-group.entry.js.map +1 -1
  539. package/dist/esm/ic-tab-panel.entry.js +2 -2
  540. package/dist/esm/ic-tab-panel.entry.js.map +1 -1
  541. package/dist/esm/ic-tab.entry.js +10 -8
  542. package/dist/esm/ic-tab.entry.js.map +1 -1
  543. package/dist/esm/ic-theme.entry.js +20 -20
  544. package/dist/esm/ic-theme.entry.js.map +1 -1
  545. package/dist/esm/ic-toast.entry.js +4 -4
  546. package/dist/esm/ic-toast.entry.js.map +1 -1
  547. package/dist/esm/ic-toggle-button-group.entry.js +62 -12
  548. package/dist/esm/ic-toggle-button-group.entry.js.map +1 -1
  549. package/dist/esm/ic-toggle-button.entry.js +64 -9
  550. package/dist/esm/ic-toggle-button.entry.js.map +1 -1
  551. package/dist/esm/ic-top-navigation.entry.js +13 -7
  552. package/dist/esm/ic-top-navigation.entry.js.map +1 -1
  553. package/dist/esm/ic-tree-item.entry.js +23 -17
  554. package/dist/esm/ic-tree-item.entry.js.map +1 -1
  555. package/dist/esm/ic-tree-view.entry.js +46 -24
  556. package/dist/esm/ic-tree-view.entry.js.map +1 -1
  557. package/dist/esm/ic-typography.entry.js +5 -3
  558. package/dist/esm/ic-typography.entry.js.map +1 -1
  559. package/dist/esm/index-93509377.js +4 -12
  560. package/dist/esm/loader.js +1 -1
  561. package/dist/types/components/ic-card-horizontal/ic-card-horizontal.d.ts +8 -4
  562. package/dist/types/components/ic-data-table/ic-data-table.d.ts +50 -5
  563. package/dist/types/components/ic-data-table/ic-data-table.types.d.ts +11 -0
  564. package/dist/types/components/ic-data-table/story-data.d.ts +223 -0
  565. package/dist/types/components/ic-date-input/ic-date-input.d.ts +10 -1
  566. package/dist/types/components/ic-date-picker/ic-date-picker.d.ts +10 -1
  567. package/dist/types/components/ic-pagination-bar/ic-pagination-bar.d.ts +33 -8
  568. package/dist/types/components/ic-pagination-bar/ic-pagination-bar.types.d.ts +4 -0
  569. package/dist/types/components/ic-tree-item/ic-tree-item.d.ts +16 -7
  570. package/dist/types/components/ic-tree-view/ic-tree-view.d.ts +19 -5
  571. package/dist/types/components.d.ts +189 -488
  572. package/dist/types/utils/helpers.d.ts +14 -11
  573. package/dist/types/utils/types.d.ts +17 -12
  574. package/hydrate/index.js +5118 -7475
  575. package/package.json +12 -10
  576. package/dist/cjs/helpers-33b42cd6.js.map +0 -1
  577. package/dist/cjs/helpers-6817cfbb.js.map +0 -1
  578. package/dist/cjs/ic-input-component-container_4.cjs.entry.js +0 -156
  579. package/dist/cjs/ic-input-component-container_4.cjs.entry.js.map +0 -1
  580. package/dist/cjs/ic-menu-with-multi.cjs.entry.js +0 -2738
  581. package/dist/cjs/ic-menu-with-multi.cjs.entry.js.map +0 -1
  582. package/dist/cjs/ic-menu.cjs.entry.js +0 -658
  583. package/dist/cjs/ic-menu.cjs.entry.js.map +0 -1
  584. package/dist/cjs/ic-select-with-multi.cjs.entry.js +0 -788
  585. package/dist/cjs/ic-select-with-multi.cjs.entry.js.map +0 -1
  586. package/dist/collection/components/ic-menu-with-multi/ic-menu.css +0 -712
  587. package/dist/collection/components/ic-menu-with-multi/ic-menu.js.map +0 -1
  588. package/dist/collection/components/ic-menu-with-multi/test/basic/ic-menu.spec.js +0 -1057
  589. package/dist/collection/components/ic-menu-with-multi/test/basic/ic-menu.spec.js.map +0 -1
  590. package/dist/collection/components/ic-select-with-multi/assets/Check.svg +0 -3
  591. package/dist/collection/components/ic-select-with-multi/assets/Clear.svg +0 -3
  592. package/dist/collection/components/ic-select-with-multi/assets/Expand.svg +0 -3
  593. package/dist/collection/components/ic-select-with-multi/ic-select.css +0 -695
  594. package/dist/collection/components/ic-select-with-multi/ic-select.js +0 -1520
  595. package/dist/collection/components/ic-select-with-multi/ic-select.js.map +0 -1
  596. package/dist/collection/components/ic-select-with-multi/story-data.js +0 -216
  597. package/dist/collection/components/ic-select-with-multi/story-data.js.map +0 -1
  598. package/dist/collection/components/ic-select-with-multi/test/basic/ic-select.spec.js +0 -1518
  599. package/dist/collection/components/ic-select-with-multi/test/basic/ic-select.spec.js.map +0 -1
  600. package/dist/components/ic-menu-with-multi.d.ts +0 -11
  601. package/dist/components/ic-menu-with-multi.js +0 -8
  602. package/dist/components/ic-menu-with-multi.js.map +0 -1
  603. package/dist/components/ic-menu3.js +0 -2803
  604. package/dist/components/ic-menu3.js.map +0 -1
  605. package/dist/components/ic-select-with-multi.d.ts +0 -11
  606. package/dist/components/ic-select-with-multi.js +0 -906
  607. package/dist/components/ic-select-with-multi.js.map +0 -1
  608. package/dist/core/p-06eeb7f2.entry.js +0 -2
  609. package/dist/core/p-06eeb7f2.entry.js.map +0 -1
  610. package/dist/core/p-0922c552.entry.js +0 -2
  611. package/dist/core/p-0922c552.entry.js.map +0 -1
  612. package/dist/core/p-0bc0e852.entry.js +0 -2
  613. package/dist/core/p-0bc0e852.entry.js.map +0 -1
  614. package/dist/core/p-108a9029.entry.js +0 -2
  615. package/dist/core/p-108a9029.entry.js.map +0 -1
  616. package/dist/core/p-13100d3c.entry.js +0 -2
  617. package/dist/core/p-13100d3c.entry.js.map +0 -1
  618. package/dist/core/p-1769df1d.entry.js +0 -2
  619. package/dist/core/p-1769df1d.entry.js.map +0 -1
  620. package/dist/core/p-202bc922.entry.js +0 -2
  621. package/dist/core/p-202bc922.entry.js.map +0 -1
  622. package/dist/core/p-297e99cf.js +0 -2
  623. package/dist/core/p-297e99cf.js.map +0 -1
  624. package/dist/core/p-306def43.entry.js.map +0 -1
  625. package/dist/core/p-30b046b2.entry.js +0 -2
  626. package/dist/core/p-30b046b2.entry.js.map +0 -1
  627. package/dist/core/p-3778cc5e.entry.js +0 -2
  628. package/dist/core/p-3778cc5e.entry.js.map +0 -1
  629. package/dist/core/p-383a5a76.entry.js +0 -2
  630. package/dist/core/p-383a5a76.entry.js.map +0 -1
  631. package/dist/core/p-3a0510e2.entry.js +0 -2
  632. package/dist/core/p-3a0510e2.entry.js.map +0 -1
  633. package/dist/core/p-3ace51f5.entry.js +0 -2
  634. package/dist/core/p-3ace51f5.entry.js.map +0 -1
  635. package/dist/core/p-3f0391c1.entry.js +0 -2
  636. package/dist/core/p-3f0391c1.entry.js.map +0 -1
  637. package/dist/core/p-41fecc61.entry.js +0 -2
  638. package/dist/core/p-41fecc61.entry.js.map +0 -1
  639. package/dist/core/p-46cb94a2.entry.js +0 -2
  640. package/dist/core/p-46cb94a2.entry.js.map +0 -1
  641. package/dist/core/p-4e67f127.entry.js +0 -2
  642. package/dist/core/p-4e67f127.entry.js.map +0 -1
  643. package/dist/core/p-505250cf.entry.js +0 -2
  644. package/dist/core/p-505250cf.entry.js.map +0 -1
  645. package/dist/core/p-50e48f4d.entry.js +0 -2
  646. package/dist/core/p-50e48f4d.entry.js.map +0 -1
  647. package/dist/core/p-56e7459a.entry.js +0 -2
  648. package/dist/core/p-56e7459a.entry.js.map +0 -1
  649. package/dist/core/p-59028160.entry.js +0 -2
  650. package/dist/core/p-59028160.entry.js.map +0 -1
  651. package/dist/core/p-5cfb5821.entry.js +0 -2
  652. package/dist/core/p-5cfb5821.entry.js.map +0 -1
  653. package/dist/core/p-5e6fd734.entry.js +0 -2
  654. package/dist/core/p-5e6fd734.entry.js.map +0 -1
  655. package/dist/core/p-5f313e1a.entry.js.map +0 -1
  656. package/dist/core/p-710c6a42.entry.js +0 -2
  657. package/dist/core/p-710c6a42.entry.js.map +0 -1
  658. package/dist/core/p-73b40c79.entry.js.map +0 -1
  659. package/dist/core/p-77a32de5.entry.js +0 -2
  660. package/dist/core/p-77a32de5.entry.js.map +0 -1
  661. package/dist/core/p-7a9de008.entry.js +0 -2
  662. package/dist/core/p-7a9de008.entry.js.map +0 -1
  663. package/dist/core/p-801414e2.entry.js +0 -2
  664. package/dist/core/p-801414e2.entry.js.map +0 -1
  665. package/dist/core/p-82ba744d.entry.js +0 -2
  666. package/dist/core/p-82ba744d.entry.js.map +0 -1
  667. package/dist/core/p-897b8d16.entry.js +0 -2
  668. package/dist/core/p-897b8d16.entry.js.map +0 -1
  669. package/dist/core/p-9397b15b.js +0 -2
  670. package/dist/core/p-9397b15b.js.map +0 -1
  671. package/dist/core/p-9af6adb1.entry.js +0 -2
  672. package/dist/core/p-9af6adb1.entry.js.map +0 -1
  673. package/dist/core/p-9b54feca.entry.js +0 -2
  674. package/dist/core/p-9b54feca.entry.js.map +0 -1
  675. package/dist/core/p-a57cd616.entry.js +0 -2
  676. package/dist/core/p-a57cd616.entry.js.map +0 -1
  677. package/dist/core/p-a5eaed1a.entry.js +0 -2
  678. package/dist/core/p-a5eaed1a.entry.js.map +0 -1
  679. package/dist/core/p-a78cf2cb.entry.js +0 -2
  680. package/dist/core/p-a78cf2cb.entry.js.map +0 -1
  681. package/dist/core/p-a91340b4.entry.js +0 -2
  682. package/dist/core/p-a91340b4.entry.js.map +0 -1
  683. package/dist/core/p-aee8d45b.entry.js +0 -2
  684. package/dist/core/p-aee8d45b.entry.js.map +0 -1
  685. package/dist/core/p-badd4c8d.entry.js +0 -2
  686. package/dist/core/p-badd4c8d.entry.js.map +0 -1
  687. package/dist/core/p-bf670360.entry.js.map +0 -1
  688. package/dist/core/p-c033e7d6.entry.js +0 -2
  689. package/dist/core/p-c033e7d6.entry.js.map +0 -1
  690. package/dist/core/p-c07af2d8.entry.js +0 -2
  691. package/dist/core/p-c07af2d8.entry.js.map +0 -1
  692. package/dist/core/p-c21d0db8.entry.js.map +0 -1
  693. package/dist/core/p-c678f73d.entry.js +0 -2
  694. package/dist/core/p-c678f73d.entry.js.map +0 -1
  695. package/dist/core/p-c6ae9bad.entry.js +0 -2
  696. package/dist/core/p-c6ae9bad.entry.js.map +0 -1
  697. package/dist/core/p-c6c1e08e.entry.js +0 -2
  698. package/dist/core/p-c6c1e08e.entry.js.map +0 -1
  699. package/dist/core/p-cb6cebdd.entry.js +0 -2
  700. package/dist/core/p-cb6cebdd.entry.js.map +0 -1
  701. package/dist/core/p-d16f364a.entry.js +0 -2
  702. package/dist/core/p-d16f364a.entry.js.map +0 -1
  703. package/dist/core/p-d239c33b.entry.js +0 -2
  704. package/dist/core/p-d239c33b.entry.js.map +0 -1
  705. package/dist/core/p-d8563643.entry.js.map +0 -1
  706. package/dist/core/p-da40757f.entry.js +0 -2
  707. package/dist/core/p-da40757f.entry.js.map +0 -1
  708. package/dist/core/p-de052137.entry.js +0 -2
  709. package/dist/core/p-de052137.entry.js.map +0 -1
  710. package/dist/core/p-e5d99316.entry.js +0 -2
  711. package/dist/core/p-e5d99316.entry.js.map +0 -1
  712. package/dist/core/p-e89bb650.entry.js +0 -2
  713. package/dist/core/p-e89bb650.entry.js.map +0 -1
  714. package/dist/core/p-f1072c28.entry.js.map +0 -1
  715. package/dist/core/p-f37df214.entry.js +0 -2
  716. package/dist/core/p-f37df214.entry.js.map +0 -1
  717. package/dist/core/p-f743b0eb.entry.js +0 -2
  718. package/dist/core/p-f743b0eb.entry.js.map +0 -1
  719. package/dist/core/p-f98b1afc.entry.js +0 -2
  720. package/dist/core/p-f98b1afc.entry.js.map +0 -1
  721. package/dist/core/p-fe13f1ba.entry.js +0 -2
  722. package/dist/core/p-fe13f1ba.entry.js.map +0 -1
  723. package/dist/esm/helpers-5bd2012a.js.map +0 -1
  724. package/dist/esm/helpers-dab8ddfe.js.map +0 -1
  725. package/dist/esm/ic-input-component-container_4.entry.js +0 -149
  726. package/dist/esm/ic-input-component-container_4.entry.js.map +0 -1
  727. package/dist/esm/ic-menu-with-multi.entry.js +0 -2734
  728. package/dist/esm/ic-menu-with-multi.entry.js.map +0 -1
  729. package/dist/esm/ic-menu.entry.js +0 -654
  730. package/dist/esm/ic-menu.entry.js.map +0 -1
  731. package/dist/esm/ic-select-with-multi.entry.js +0 -784
  732. package/dist/esm/ic-select-with-multi.entry.js.map +0 -1
  733. package/dist/types/components/ic-menu-with-multi/ic-menu.d.ts +0 -214
  734. package/dist/types/components/ic-select-with-multi/ic-select.d.ts +0 -259
  735. package/dist/types/components/ic-select-with-multi/story-data.d.ts +0 -32
  736. /package/dist/core/{p-d03374fc.entry.js.map → p-b717ae40.entry.js.map} +0 -0
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-4cf27b16.js');
6
- const helpers = require('./helpers-6817cfbb.js');
6
+ const helpers = require('./helpers-02b23286.js');
7
7
  const dateHelpers = require('./date-helpers-c9551119.js');
8
8
 
9
9
  const Clear = `<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
@@ -15,7 +15,7 @@ const Calendar = `<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20"
15
15
  <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"/>
16
16
  </svg>`;
17
17
 
18
- const icDateInputCss = "/*! 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.medium{height:calc(var(--ic-space-sm) + var(--ic-space-xs))}.divider.large{height:var(--ic-space-lg)}";
18
+ const icDateInputCss = "/*! 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{--ic-input-label-helpertext-padding:var(--ic-space-xxs);--input-bg-color:var(--ic-date-input-bg);--ic-input-label-text-color:var(--ic-date-input-label);--ic-input-label-helper-text-color:var(--ic-date-input-subtitle);--border-color:var(--ic-date-input-border);--border-color-disabled:var(--ic-date-input-border-disabled);--border-color-hover:var(--ic-date-input-border-default-hover);--border-color-pressed:var(--ic-date-input-border-default-pressed);--border-error-color:var(--ic-date-input-border-error);--border-error-color-hover:var(--ic-date-input-border-error-hover);--border-error-color-pressed:var(--ic-date-input-border-error-pressed);--border-success-color:var(--ic-date-input-border-success);--border-success-color-hover:var(--ic-date-input-border-success-hover);--border-success-color-pressed:var(--ic-date-input-border-success-pressed);--border-warning-color:var(--ic-date-input-border-warning);--border-warning-color-hover:var(--ic-date-input-border-warning-hover);--border-warning-color-pressed:var(--ic-date-input-border-warning-pressed)}:host(.ic-date-input-disabled){--ic-input-label-text-color:var(--ic-date-input-label-disabled);--ic-input-label-helper-text-color:var(--ic-date-input-subtitle-disabled)}input{border:0;height:100%;padding:0;outline:none;background:none;-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield;color:var(--ic-date-input-text-filled);caret-color:var(--ic-date-input-typing-cursor)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none}input:-webkit-autofill{box-shadow:0 0 0 var(--ic-space-sm) var(--ic-color-background-primary) inset;-webkit-text-fill-color:var(--ic-date-input-text-filled) !important}input::-moz-placeholder{color:var(--ic-date-input-text-placeholder)}input::placeholder{color:var(--ic-date-input-text-placeholder)}ic-input-component-container{cursor:text}ic-input-component-container .focus-indicator{padding:var(--ic-space-xxxs) var(--ic-space-xs);align-items:center}.date-inputs{color:var(--ic-date-input-text-placeholder)}.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-color-focus-inner) !important;box-shadow:inset 0 0 0 0.125rem var(--ic-color-focus-outer) !important;border-radius:0.25rem}.calendar-button:focus,.calendar-button:active{--ic-button-tertiary-text-active:var(--ic-atoms-input-clear-button-focus);--ic-button-tertiary-text-hover-active:var(\n --ic-atoms-input-clear-button-focus\n );--ic-button-tertiary-text-pressed-active:var(\n --ic-atoms-input-clear-button-focus\n )}.clear-button:focus,.calendar-button:focus,.clear-button:active *,.calendar-button:active *{fill:var(--ic-atoms-input-clear-button-focus)}.clear-button svg{color:var(--ic-date-input-clear-icon)}.clear-button:focus svg{color:var(--ic-atoms-input-clear-button-focus)}.divider{margin:0 var(--ic-space-xxs);width:var(--ic-space-1px);background-color:var(--ic-atoms-input-divider);border-radius:var(--ic-space-1px)}.divider.small{height:var(--ic-space-md)}.divider.medium{height:calc(var(--ic-space-sm) + var(--ic-space-xs))}.divider.large{height:var(--ic-space-lg)}ic-input-validation{--ic-input-validation-status-text-color:var(--ic-date-input-status-text);--ic-input-validation-error:var(--ic-date-input-icon-error);--ic-input-validation-warning-icon-color:var(--ic-date-input-icon-warning);--ic-input-validation-success-icon-color:var(--ic-date-input-icon-success)}";
19
19
 
20
20
  let inputIds = 0;
21
21
  const DateInput = class {
@@ -164,8 +164,9 @@ const DateInput = class {
164
164
  this.notifyScreenReader(input, event);
165
165
  };
166
166
  this.handleKeyDown = (event, isInputPrevented) => {
167
+ var _a;
167
168
  const input = event.target;
168
- const eventKey = event.key.toLowerCase();
169
+ const eventKey = (_a = event.key) === null || _a === void 0 ? void 0 : _a.toLowerCase();
169
170
  // Regex required due to FF allowing all characters as values for number text field.
170
171
  const regex = /-?\d*\.?\d+(e[-+]?\d+)?|[/-]|arrowup|arrowdown|arrowleft|arrowright|shift|tab|backspace|delete/;
171
172
  if (!regex.test(eventKey) &&
@@ -473,7 +474,7 @@ const DateInput = class {
473
474
  // Includes text usually added using aria-describedby
474
475
  // (which doesn't work on input component container)
475
476
  this.setAriaLabelledBy = () => {
476
- var _a;
477
+ var _a, _b;
477
478
  if (this.disabled &&
478
479
  !helpers.isEmptyString((_a = this.inputCompContainerEl) === null || _a === void 0 ? void 0 : _a.getAttribute(this.ARIA_LABELLED_BY))) {
479
480
  this.removeAriaLabelledBy();
@@ -486,12 +487,11 @@ const DateInput = class {
486
487
  const labelId = `${this.inputId}-label`;
487
488
  if (labelEl !== null && labelEl !== undefined) {
488
489
  labelEl.id = labelId;
489
- const hasValidation = (!helpers.isEmptyString(this.validationStatus) &&
490
- !helpers.isEmptyString(this.validationText)) ||
491
- !helpers.isEmptyString(this.invalidDateText);
492
- const labelledBy = `${labelId} ${this.screenReaderInfoId} ${helpers.getInputDescribedByText(this.inputId, this.helperText !== "" && this.helperText !== this.defaultHelperText, hasValidation)} ${this.selectedDate ? this.selectedDateInfoId : ""} ${this.assistiveHintId}`;
493
- this.inputCompContainerEl.setAttribute(this.ARIA_LABELLED_BY, labelledBy);
494
490
  }
491
+ const hasValidation = !helpers.isEmptyString(this.validationStatus) ||
492
+ !helpers.isEmptyString(this.invalidDateText);
493
+ const labelledBy = `${(_b = labelEl === null || labelEl === void 0 ? void 0 : labelEl.id) !== null && _b !== void 0 ? _b : ""} ${this.screenReaderInfoId} ${helpers.getInputDescribedByText(this.inputId, this.helperText !== "" && this.helperText !== this.defaultHelperText, hasValidation)} ${this.selectedDate ? this.selectedDateInfoId : ""} ${this.assistiveHintId}`;
494
+ this.inputCompContainerEl.setAttribute(this.ARIA_LABELLED_BY, labelledBy);
495
495
  };
496
496
  // Sets boolean for each input, used to limit the number of characters within each field (2 for day / month, 4 for year)
497
497
  this.setPreventInput = (input, isPrevented) => {
@@ -828,6 +828,7 @@ const DateInput = class {
828
828
  this.disablePastMessage = "Dates in the past are not allowed. Please select a date in the future.";
829
829
  this.helperText = undefined;
830
830
  this.hideHelperText = false;
831
+ this.hideLabel = false;
831
832
  this.inputId = `ic-date-input-${inputIds++}`;
832
833
  this.invalidDateMessage = "Please enter a valid date.";
833
834
  this.label = undefined;
@@ -838,10 +839,14 @@ const DateInput = class {
838
839
  this.showCalendarButton = false;
839
840
  this.showClearButton = true;
840
841
  this.size = "medium";
842
+ this.theme = "inherit";
841
843
  this.value = "";
842
844
  this.validationStatus = "";
843
845
  this.validationText = "";
844
846
  }
847
+ watchDisabledHandler() {
848
+ helpers.removeDisabledFalse(this.disabled, this.el);
849
+ }
845
850
  watchDisableFutureHandler() {
846
851
  this.watchMaxHandler();
847
852
  }
@@ -902,6 +907,7 @@ const DateInput = class {
902
907
  this.assistiveHintId = `${this.inputId}-assistive-hint`;
903
908
  this.selectedDateInfoId = `${this.inputId}-selected-date-info`;
904
909
  helpers.addFormResetListener(this.el, this.handleFormReset);
910
+ helpers.removeDisabledFalse(this.disabled, this.el);
905
911
  }
906
912
  componentDidLoad() {
907
913
  this.setInputsInOrder();
@@ -1072,9 +1078,8 @@ const DateInput = class {
1072
1078
  }
1073
1079
  }
1074
1080
  render() {
1075
- const { inputId, label, disabled, helperText, hideHelperText, showClearButton, showCalendarButton, size, } = this;
1076
- const hasCustomValidation = !helpers.isEmptyString(this.validationStatus) &&
1077
- !helpers.isEmptyString(this.validationText);
1081
+ const { inputId, label, disabled, helperText, hideHelperText, hideLabel, showClearButton, showCalendarButton, size, theme, } = this;
1082
+ const hasCustomValidation = !helpers.isEmptyString(this.validationStatus);
1078
1083
  const validationStatus = hasCustomValidation
1079
1084
  ? this.validationStatus
1080
1085
  : !helpers.isEmptyString(this.invalidDateText)
@@ -1082,20 +1087,20 @@ const DateInput = class {
1082
1087
  : "";
1083
1088
  const assistiveHint = `Type or use the up and down arrow keys to change the values for the ${this.getDescOfInputsOrder()}.`;
1084
1089
  helpers.renderHiddenInput(true, this.el, this.name, this.convertToDate(this.year, this.month, this.day), this.disabled);
1085
- return (index.h(index.Host, { onBlur: this.handleHostBlur, onFocus: this.handleHostFocus }, index.h("ic-input-container", { disabled: disabled }, index.h("ic-input-label", { for: inputId, label: label, helperText: !hideHelperText ? helperText : null, disabled: disabled }), index.h("span", { id: this.screenReaderInfoId, class: "sr-only", "aria-hidden": "true" }, this.getScreenReaderInfo(validationStatus), hideHelperText && `${helperText}\n`, `${this.defaultHelperText}.`), index.h("span", { id: this.assistiveHintId, class: "sr-only", "aria-hidden": "true" }, assistiveHint), index.h("span", { id: "live-region", "aria-live": "assertive", class: "sr-only" }), index.h("ic-input-component-container", { id: inputId, ref: (el) => (this.inputCompContainerEl = el), disabled: disabled, validationStatus: validationStatus, size: size, role: "group" }, index.h("div", { class: "input-container" }, index.h("div", { class: "date-inputs" }, this.getInputsInOrder()[0], "/", this.getInputsInOrder()[1], "/", this.getInputsInOrder()[2]), index.h("div", { class: "action-buttons" }, showClearButton && (index.h("ic-button", { id: "clear-button", "aria-label": "Clear input", class: {
1090
+ return (index.h(index.Host, { class: {
1091
+ [`ic-theme-${theme}`]: theme !== "inherit",
1092
+ [`ic-date-input-disabled`]: disabled,
1093
+ }, onBlur: this.handleHostBlur, onFocus: this.handleHostFocus }, index.h("ic-input-container", { disabled: disabled }, !(hideLabel && hideHelperText) && (index.h("ic-input-label", { for: inputId, label: label, hideLabel: hideLabel, helperText: !hideHelperText ? helperText : "", disabled: disabled })), index.h("span", { id: this.screenReaderInfoId, class: "sr-only", "aria-hidden": "true" }, this.getScreenReaderInfo(validationStatus), hideLabel && `${label}\n`, hideHelperText && `${helperText}\n`, `${this.defaultHelperText}.`), index.h("span", { id: this.assistiveHintId, class: "sr-only", "aria-hidden": "true" }, assistiveHint), index.h("span", { id: "live-region", "aria-live": "assertive", class: "sr-only" }), index.h("ic-input-component-container", { id: inputId, ref: (el) => (this.inputCompContainerEl = el), disabled: disabled, validationStatus: validationStatus, size: size, role: "group", class: { [`ic-theme-${theme}`]: theme !== "inherit" } }, index.h("div", { class: "input-container" }, index.h("div", { class: "date-inputs" }, this.getInputsInOrder()[0], "/", this.getInputsInOrder()[1], "/", this.getInputsInOrder()[2]), index.h("div", { class: "action-buttons" }, showClearButton && (index.h("ic-button", { id: "clear-button", "aria-label": "Clear input", class: {
1086
1094
  ["clear-button"]: true,
1087
1095
  ["hidden"]: helpers.isEmptyString(this.day) &&
1088
1096
  helpers.isEmptyString(this.month) &&
1089
1097
  helpers.isEmptyString(this.year),
1090
- }, disabled: this.disabled, innerHTML: Clear, onClick: this.handleClear, onFocus: this.handleClearFocus, onBlur: this.handleClearBlur, variant: "icon", appearance: this.clearButtonFocused
1091
- ? helpers.IcThemeForegroundEnum.Light
1092
- : helpers.IcThemeForegroundEnum.Dark, size: size })), showCalendarButton && (index.h("div", { class: "show-calendar-button-wrapper" }, index.h("div", { class: { divider: true, [size]: true } }), index.h("ic-button", { id: "calendar-button", ref: (el) => (this.calendarButtonEl = el), "aria-label": "Display calendar", "aria-haspopup": "dialog", class: "calendar-button", disabled: this.disabled, innerHTML: Calendar, onClick: this.handleCalendarOpen, variant: "icon", size: size, onFocus: this.handleCalendarFocus, onBlur: this.handleCalendarBlur, appearance: this.calendarFocused
1093
- ? helpers.IcThemeForegroundEnum.Light
1094
- : helpers.IcThemeForegroundEnum.Default })))))), index.h("span", { id: this.selectedDateInfoId, class: "sr-only", "aria-live": "polite" }, index.h("span", { ref: (el) => (this.selectedDateInfoEl = el), role: "status" })), (hasCustomValidation || !helpers.isEmptyString(this.invalidDateText)) && (index.h("ic-input-validation", { status: validationStatus, message: hasCustomValidation ? this.validationText : this.invalidDateText, for: inputId })))));
1098
+ }, disabled: this.disabled, innerHTML: Clear, onClick: this.handleClear, onFocus: this.handleClearFocus, onBlur: this.handleClearBlur, variant: "icon-tertiary", theme: this.clearButtonFocused ? "light" : "dark", size: size })), showCalendarButton && (index.h("div", { class: "show-calendar-button-wrapper" }, index.h("div", { class: { divider: true, [size]: true } }), index.h("ic-button", { id: "calendar-button", ref: (el) => (this.calendarButtonEl = el), "aria-label": "Display calendar", "aria-haspopup": "dialog", class: "calendar-button", disabled: this.disabled, innerHTML: Calendar, onClick: this.handleCalendarOpen, variant: "icon-tertiary", size: size, onFocus: this.handleCalendarFocus, onBlur: this.handleCalendarBlur, theme: this.calendarFocused ? "light" : "dark" })))))), index.h("span", { id: this.selectedDateInfoId, class: "sr-only", "aria-live": "polite" }, index.h("span", { ref: (el) => (this.selectedDateInfoEl = el), role: "status" })), (hasCustomValidation || !helpers.isEmptyString(this.invalidDateText)) && (index.h("ic-input-validation", { status: validationStatus, message: hasCustomValidation ? this.validationText : this.invalidDateText, for: inputId })))));
1095
1099
  }
1096
1100
  static get delegatesFocus() { return true; }
1097
1101
  get el() { return index.getElement(this); }
1098
1102
  static get watchers() { return {
1103
+ "disabled": ["watchDisabledHandler"],
1099
1104
  "disableFuture": ["watchDisableFutureHandler"],
1100
1105
  "disablePast": ["watchDisablePastHandler"],
1101
1106
  "max": ["watchMaxHandler"],
@@ -1 +1 @@
1
- {"file":"ic-date-input.entry.cjs.js","mappings":"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","names":["isEmptyString","stringEnumToArray","IcDayNames","IcDateInputMonths","dateMatches","isDateOrEpoch","convertToDoubleDigits","splitStringDate","getInputDescribedByText","h","IcInformationStatus","createDate","removeFormResetListener","addFormResetListener","onComponentRequiredPropUndefined","extractDateFromZuluDateTime","isNumeric","renderHiddenInput","Host","IcThemeForegroundEnum"],"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.medium {\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 * If `true`, the helper text will be visually hidden, but still read out by screenreaders.\n */\n @Prop() hideHelperText: boolean = false;\n\n /**\n * The ID for the input.\n */\n @Prop() inputId?: string = `ic-date-input-${inputIds++}`;\n\n /**\n * The text to display as the validation message when an invalid date is entered.\n */\n @Prop() invalidDateMessage?: string = \"Please enter a valid date.\";\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 = \"medium\";\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 = this.invalidDateMessage;\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 hideHelperText,\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={!hideHelperText ? helperText : null}\n disabled={disabled}\n ></ic-input-label>\n <span id={this.screenReaderInfoId} class=\"sr-only\" aria-hidden=\"true\">\n {this.getScreenReaderInfo(validationStatus)}\n {hideHelperText && `${helperText}\\n`}\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"],"version":3}
1
+ {"file":"ic-date-input.entry.cjs.js","mappings":"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","names":["isEmptyString","stringEnumToArray","IcDayNames","IcDateInputMonths","dateMatches","isDateOrEpoch","convertToDoubleDigits","splitStringDate","getInputDescribedByText","h","IcInformationStatus","removeDisabledFalse","createDate","removeFormResetListener","addFormResetListener","onComponentRequiredPropUndefined","extractDateFromZuluDateTime","isNumeric","renderHiddenInput","Host"],"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\n:host {\n --ic-input-label-helpertext-padding: var(--ic-space-xxs);\n --input-bg-color: var(--ic-date-input-bg);\n --ic-input-label-text-color: var(--ic-date-input-label);\n --ic-input-label-helper-text-color: var(--ic-date-input-subtitle);\n --border-color: var(--ic-date-input-border);\n --border-color-disabled: var(--ic-date-input-border-disabled);\n --border-color-hover: var(--ic-date-input-border-default-hover);\n --border-color-pressed: var(--ic-date-input-border-default-pressed);\n --border-error-color: var(--ic-date-input-border-error);\n --border-error-color-hover: var(--ic-date-input-border-error-hover);\n --border-error-color-pressed: var(--ic-date-input-border-error-pressed);\n --border-success-color: var(--ic-date-input-border-success);\n --border-success-color-hover: var(--ic-date-input-border-success-hover);\n --border-success-color-pressed: var(--ic-date-input-border-success-pressed);\n --border-warning-color: var(--ic-date-input-border-warning);\n --border-warning-color-hover: var(--ic-date-input-border-warning-hover);\n --border-warning-color-pressed: var(--ic-date-input-border-warning-pressed);\n}\n\n:host(.ic-date-input-disabled) {\n --ic-input-label-text-color: var(--ic-date-input-label-disabled);\n --ic-input-label-helper-text-color: var(--ic-date-input-subtitle-disabled);\n}\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 color: var(--ic-date-input-text-filled);\n caret-color: var(--ic-date-input-typing-cursor);\n}\n\ninput::-webkit-outer-spin-button,\ninput::-webkit-inner-spin-button {\n -webkit-appearance: none;\n}\n\ninput:-webkit-autofill {\n box-shadow: 0 0 0 var(--ic-space-sm) var(--ic-color-background-primary) inset;\n -webkit-text-fill-color: var(--ic-date-input-text-filled) !important;\n}\n\ninput::placeholder {\n color: var(--ic-date-input-text-placeholder);\n}\n\nic-input-component-container {\n cursor: 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.date-inputs {\n color: var(--ic-date-input-text-placeholder);\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-color-focus-inner) !important;\n box-shadow: inset 0 0 0 0.125rem var(--ic-color-focus-outer) !important;\n border-radius: 0.25rem;\n}\n\n.calendar-button:focus,\n.calendar-button:active {\n --ic-button-tertiary-text-active: var(--ic-atoms-input-clear-button-focus);\n --ic-button-tertiary-text-hover-active: var(\n --ic-atoms-input-clear-button-focus\n );\n --ic-button-tertiary-text-pressed-active: var(\n --ic-atoms-input-clear-button-focus\n );\n}\n\n.clear-button:focus,\n.calendar-button:focus,\n.clear-button:active *,\n.calendar-button:active * {\n fill: var(--ic-atoms-input-clear-button-focus);\n}\n\n.clear-button svg {\n color: var(--ic-date-input-clear-icon);\n}\n\n.clear-button:focus svg {\n color: var(--ic-atoms-input-clear-button-focus);\n}\n\n.divider {\n margin: 0 var(--ic-space-xxs);\n width: var(--ic-space-1px);\n background-color: var(--ic-atoms-input-divider);\n border-radius: var(--ic-space-1px);\n}\n\n.divider.small {\n height: var(--ic-space-md);\n}\n\n.divider.medium {\n height: calc(var(--ic-space-sm) + var(--ic-space-xs));\n}\n\n.divider.large {\n height: var(--ic-space-lg);\n}\n\nic-input-validation {\n --ic-input-validation-status-text-color: var(--ic-date-input-status-text);\n --ic-input-validation-error: var(--ic-date-input-icon-error);\n --ic-input-validation-warning-icon-color: var(--ic-date-input-icon-warning);\n --ic-input-validation-success-icon-color: var(--ic-date-input-icon-success);\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 IcDateFormat,\n IcDateInputMonths,\n IcDayNames,\n IcWeekDays,\n IcThemeMode,\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 removeDisabledFalse,\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 @Watch(\"disabled\")\n watchDisabledHandler(): void {\n removeDisabledFalse(this.disabled, this.el);\n }\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 * If `true`, the helper text will be visually hidden, but still read out by screenreaders.\n */\n @Prop() hideHelperText: boolean = false;\n\n /**\n * If `true`, the label will be visually hidden, but will still be read out by screen readers.\n */\n @Prop() hideLabel?: boolean = false;\n\n /**\n * The ID for the input.\n */\n @Prop() inputId?: string = `ic-date-input-${inputIds++}`;\n\n /**\n * The text to display as the validation message when an invalid date is entered.\n */\n @Prop() invalidDateMessage?: string = \"Please enter a valid date.\";\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 = \"medium\";\n\n /**\n * Sets the date picker to the dark or light theme colors. \"inherit\" will set the color based on the system settings or ic-theme component.\n */\n @Prop() theme?: IcThemeMode = \"inherit\";\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 removeDisabledFalse(this.disabled, this.el);\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 = this.invalidDateMessage;\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\n const hasValidation =\n !isEmptyString(this.validationStatus) ||\n !isEmptyString(this.invalidDateText);\n\n const labelledBy = `${labelEl?.id ?? \"\"} ${\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\n this.inputCompContainerEl.setAttribute(this.ARIA_LABELLED_BY, labelledBy);\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 hideHelperText,\n hideLabel,\n showClearButton,\n showCalendarButton,\n size,\n theme,\n } = this;\n\n const hasCustomValidation = !isEmptyString(this.validationStatus);\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\n class={{\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n [`ic-date-input-disabled`]: disabled,\n }}\n onBlur={this.handleHostBlur}\n onFocus={this.handleHostFocus}\n >\n <ic-input-container disabled={disabled}>\n {!(hideLabel && hideHelperText) && (\n <ic-input-label\n for={inputId}\n label={label}\n hideLabel={hideLabel}\n helperText={!hideHelperText ? helperText : \"\"}\n disabled={disabled}\n ></ic-input-label>\n )}\n <span id={this.screenReaderInfoId} class=\"sr-only\" aria-hidden=\"true\">\n {this.getScreenReaderInfo(validationStatus)}\n {hideLabel && `${label}\\n`}\n {hideHelperText && `${helperText}\\n`}\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 class={{ [`ic-theme-${theme}`]: theme !== \"inherit\" }}\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-tertiary\"\n theme={this.clearButtonFocused ? \"light\" : \"dark\"}\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-tertiary\"\n size={size}\n onFocus={this.handleCalendarFocus}\n onBlur={this.handleCalendarBlur}\n theme={this.calendarFocused ? \"light\" : \"dark\"}\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"],"version":3}