@ukic/canary-web-components 3.0.0-canary.30 → 3.0.0-canary.31

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 (494) hide show
  1. package/dist/cjs/core.cjs.js +1 -1
  2. package/dist/cjs/date-helpers-d7ee7b45.js.map +1 -1
  3. package/dist/cjs/{helpers-da852478.js → helpers-6f4b406b.js} +20 -20
  4. package/dist/cjs/helpers-6f4b406b.js.map +1 -0
  5. package/dist/cjs/ic-button_3.cjs.entry.js +5 -5
  6. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  7. package/dist/cjs/ic-calendar_2.cjs.entry.js +2354 -0
  8. package/dist/cjs/ic-calendar_2.cjs.entry.js.map +1 -0
  9. package/dist/cjs/ic-card-horizontal.cjs.entry.js +6 -6
  10. package/dist/cjs/ic-card-horizontal.cjs.entry.js.map +1 -1
  11. package/dist/cjs/ic-checkbox-group.cjs.entry.js +2 -2
  12. package/dist/cjs/ic-checkbox-group.cjs.entry.js.map +1 -1
  13. package/dist/cjs/ic-checkbox_3.cjs.entry.js +39 -16
  14. package/dist/cjs/ic-checkbox_3.cjs.entry.js.map +1 -1
  15. package/dist/cjs/ic-data-list.cjs.entry.js +2 -2
  16. package/dist/cjs/ic-data-list.cjs.entry.js.map +1 -1
  17. package/dist/cjs/ic-data-row.cjs.entry.js +2 -2
  18. package/dist/cjs/ic-data-row.cjs.entry.js.map +1 -1
  19. package/dist/cjs/ic-data-table-title-bar.cjs.entry.js +4 -4
  20. package/dist/cjs/ic-data-table.cjs.entry.js +8 -8
  21. package/dist/cjs/ic-date-picker.cjs.entry.js +98 -854
  22. package/dist/cjs/ic-date-picker.cjs.entry.js.map +1 -1
  23. package/dist/cjs/ic-dialog.cjs.entry.js +1 -1
  24. package/dist/cjs/ic-dialog.cjs.entry.js.map +1 -1
  25. package/dist/cjs/ic-footer-link.cjs.entry.js +2 -2
  26. package/dist/cjs/ic-footer-link.cjs.entry.js.map +1 -1
  27. package/dist/cjs/ic-hero.cjs.entry.js +11 -6
  28. package/dist/cjs/ic-hero.cjs.entry.js.map +1 -1
  29. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +5 -5
  30. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js.map +1 -1
  31. package/dist/cjs/ic-input-component-container_4.cjs.entry.js +10 -10
  32. package/dist/cjs/ic-input-component-container_4.cjs.entry.js.map +1 -1
  33. package/dist/cjs/ic-layout-grid-item.cjs.entry.js +2 -2
  34. package/dist/cjs/ic-layout-grid-item.cjs.entry.js.map +1 -1
  35. package/dist/cjs/ic-layout-grid.cjs.entry.js +2 -2
  36. package/dist/cjs/ic-layout-grid.cjs.entry.js.map +1 -1
  37. package/dist/cjs/ic-link.cjs.entry.js +1 -1
  38. package/dist/cjs/ic-link.cjs.entry.js.map +1 -1
  39. package/dist/cjs/ic-menu-group.cjs.entry.js +1 -1
  40. package/dist/cjs/ic-menu-group.cjs.entry.js.map +1 -1
  41. package/dist/cjs/ic-menu.cjs.entry.js +3 -3
  42. package/dist/cjs/ic-menu.cjs.entry.js.map +1 -1
  43. package/dist/cjs/ic-navigation-group.cjs.entry.js +1 -1
  44. package/dist/cjs/ic-navigation-group.cjs.entry.js.map +1 -1
  45. package/dist/cjs/ic-navigation-menu.cjs.entry.js +4 -4
  46. package/dist/cjs/ic-navigation-menu.cjs.entry.js.map +1 -1
  47. package/dist/cjs/ic-page-header.cjs.entry.js +6 -6
  48. package/dist/cjs/ic-page-header.cjs.entry.js.map +1 -1
  49. package/dist/cjs/ic-pagination_4.cjs.entry.js +18 -18
  50. package/dist/cjs/ic-pagination_4.cjs.entry.js.map +1 -1
  51. package/dist/cjs/ic-popover-menu.cjs.entry.js +4 -4
  52. package/dist/cjs/ic-popover-menu.cjs.entry.js.map +1 -1
  53. package/dist/cjs/ic-radio-group.cjs.entry.js +4 -4
  54. package/dist/cjs/ic-radio-group.cjs.entry.js.map +1 -1
  55. package/dist/cjs/ic-radio-option.cjs.entry.js +4 -4
  56. package/dist/cjs/ic-radio-option.cjs.entry.js.map +1 -1
  57. package/dist/cjs/ic-search-bar.cjs.entry.js +9 -9
  58. package/dist/cjs/ic-search-bar.cjs.entry.js.map +1 -1
  59. package/dist/cjs/ic-section-container.cjs.entry.js +2 -2
  60. package/dist/cjs/ic-section-container.cjs.entry.js.map +1 -1
  61. package/dist/cjs/ic-side-navigation.cjs.entry.js +4 -4
  62. package/dist/cjs/ic-side-navigation.cjs.entry.js.map +1 -1
  63. package/dist/cjs/ic-skeleton.cjs.entry.js +2 -2
  64. package/dist/cjs/ic-skeleton.cjs.entry.js.map +1 -1
  65. package/dist/cjs/ic-skip-link.cjs.entry.js +2 -2
  66. package/dist/cjs/ic-skip-link.cjs.entry.js.map +1 -1
  67. package/dist/cjs/ic-status-tag.cjs.entry.js +2 -2
  68. package/dist/cjs/ic-status-tag.cjs.entry.js.map +1 -1
  69. package/dist/cjs/ic-step.cjs.entry.js +13 -13
  70. package/dist/cjs/ic-step.cjs.entry.js.map +1 -1
  71. package/dist/cjs/ic-stepper.cjs.entry.js +2 -2
  72. package/dist/cjs/ic-stepper.cjs.entry.js.map +1 -1
  73. package/dist/cjs/ic-switch.cjs.entry.js +4 -4
  74. package/dist/cjs/ic-switch.cjs.entry.js.map +1 -1
  75. package/dist/cjs/ic-tab-context.cjs.entry.js +1 -1
  76. package/dist/cjs/ic-tab-context.cjs.entry.js.map +1 -1
  77. package/dist/cjs/ic-tab-group.cjs.entry.js +2 -2
  78. package/dist/cjs/ic-tab-group.cjs.entry.js.map +1 -1
  79. package/dist/cjs/ic-tab-panel.cjs.entry.js +2 -2
  80. package/dist/cjs/ic-tab-panel.cjs.entry.js.map +1 -1
  81. package/dist/cjs/ic-table-of-contents.cjs.entry.js +4 -4
  82. package/dist/cjs/ic-theme.cjs.entry.js +1 -1
  83. package/dist/cjs/ic-theme.cjs.entry.js.map +1 -1
  84. package/dist/cjs/ic-time-input.cjs.entry.js +5 -5
  85. package/dist/cjs/ic-time-input.cjs.entry.js.map +1 -1
  86. package/dist/cjs/ic-toast-region.cjs.entry.js +1 -1
  87. package/dist/cjs/ic-toast-region.cjs.entry.js.map +1 -1
  88. package/dist/cjs/ic-toast.cjs.entry.js +4 -4
  89. package/dist/cjs/ic-toast.cjs.entry.js.map +1 -1
  90. package/dist/cjs/ic-toggle-button-group.cjs.entry.js +2 -2
  91. package/dist/cjs/ic-toggle-button-group.cjs.entry.js.map +1 -1
  92. package/dist/cjs/ic-toggle-button.cjs.entry.js +2 -2
  93. package/dist/cjs/ic-toggle-button.cjs.entry.js.map +1 -1
  94. package/dist/cjs/ic-tree-item.cjs.entry.js +3 -3
  95. package/dist/cjs/ic-tree-view.cjs.entry.js +4 -4
  96. package/dist/cjs/index-d337cd8a.js +4 -4
  97. package/dist/cjs/loader.cjs.js +1 -1
  98. package/dist/collection/collection-manifest.json +1 -0
  99. package/dist/collection/components/ic-calendar/ic-calendar.css +910 -0
  100. package/dist/collection/components/ic-calendar/ic-calendar.js +1542 -0
  101. package/dist/collection/components/ic-calendar/ic-calendar.js.map +1 -0
  102. package/dist/collection/components/ic-calendar/ic-calendar.stories.js +295 -0
  103. package/dist/collection/components/ic-calendar/ic-calendar.stories.js.map +1 -0
  104. package/dist/collection/components/ic-calendar/ic-day-button.js.map +1 -0
  105. package/dist/collection/components/ic-calendar/ic-month-picker.js +35 -0
  106. package/dist/collection/components/ic-calendar/ic-month-picker.js.map +1 -0
  107. package/dist/collection/components/ic-calendar/ic-year-picker.js +57 -0
  108. package/dist/collection/components/ic-calendar/ic-year-picker.js.map +1 -0
  109. package/dist/collection/components/ic-calendar/test/a11y/ic-calendar.test.a11y.js +13 -0
  110. package/dist/collection/components/ic-calendar/test/a11y/ic-calendar.test.a11y.js.map +1 -0
  111. package/dist/collection/components/ic-card-horizontal/ic-card-horizontal.js +6 -6
  112. package/dist/collection/components/ic-card-horizontal/ic-card-horizontal.js.map +1 -1
  113. package/dist/collection/components/ic-data-table/ic-data-table.js +7 -7
  114. package/dist/collection/components/ic-data-table-title-bar/ic-data-table-title-bar.js +3 -3
  115. package/dist/collection/components/ic-date-input/ic-date-input.js +8 -7
  116. package/dist/collection/components/ic-date-input/ic-date-input.js.map +1 -1
  117. package/dist/collection/components/ic-date-picker/ic-date-picker.css +7 -405
  118. package/dist/collection/components/ic-date-picker/ic-date-picker.js +145 -802
  119. package/dist/collection/components/ic-date-picker/ic-date-picker.js.map +1 -1
  120. package/dist/collection/components/ic-date-picker/ic-date-picker.stories.js +110 -0
  121. package/dist/collection/components/ic-date-picker/ic-date-picker.stories.js.map +1 -1
  122. package/dist/collection/components/ic-date-picker/story-data.js +5 -1
  123. package/dist/collection/components/ic-date-picker/story-data.js.map +1 -1
  124. package/dist/collection/components/ic-pagination-bar/ic-pagination-bar.js +7 -7
  125. package/dist/collection/components/ic-pagination-bar/ic-pagination-bar.js.map +1 -1
  126. package/dist/collection/components/ic-table-of-contents/ic-table-of-contents.js +3 -3
  127. package/dist/collection/components/ic-time-input/ic-time-input.js +9 -8
  128. package/dist/collection/components/ic-time-input/ic-time-input.js.map +1 -1
  129. package/dist/collection/components/ic-tree-item/ic-tree-item.js +2 -2
  130. package/dist/collection/components/ic-tree-view/ic-tree-view.js +3 -3
  131. package/dist/collection/utils/date-helpers.js +3 -0
  132. package/dist/collection/utils/date-helpers.js.map +1 -1
  133. package/dist/collection/utils/types.js.map +1 -1
  134. package/dist/{esm/date-helpers-2b531c8c.js → components/date-helpers.js} +2 -2
  135. package/dist/components/date-helpers.js.map +1 -0
  136. package/dist/components/helpers2.js +20 -20
  137. package/dist/components/helpers2.js.map +1 -1
  138. package/dist/components/ic-calendar.d.ts +11 -0
  139. package/dist/components/ic-calendar.js +8 -0
  140. package/dist/components/ic-calendar.js.map +1 -0
  141. package/dist/components/ic-calendar2.js +1235 -0
  142. package/dist/components/ic-calendar2.js.map +1 -0
  143. package/dist/components/ic-card-horizontal.js +6 -6
  144. package/dist/components/ic-card-horizontal.js.map +1 -1
  145. package/dist/components/ic-checkbox-group.js +2 -2
  146. package/dist/components/ic-checkbox-group.js.map +1 -1
  147. package/dist/components/ic-checkbox2.js +31 -8
  148. package/dist/components/ic-checkbox2.js.map +1 -1
  149. package/dist/components/ic-data-list.js +2 -2
  150. package/dist/components/ic-data-list.js.map +1 -1
  151. package/dist/components/ic-data-row.js +2 -2
  152. package/dist/components/ic-data-row.js.map +1 -1
  153. package/dist/components/ic-data-table-title-bar.js +3 -3
  154. package/dist/components/ic-data-table.js +8 -8
  155. package/dist/components/ic-date-input2.js +6 -88
  156. package/dist/components/ic-date-input2.js.map +1 -1
  157. package/dist/components/ic-date-picker.js +113 -880
  158. package/dist/components/ic-date-picker.js.map +1 -1
  159. package/dist/components/ic-dialog.js +1 -1
  160. package/dist/components/ic-dialog.js.map +1 -1
  161. package/dist/components/ic-empty-state2.js +2 -2
  162. package/dist/components/ic-empty-state2.js.map +1 -1
  163. package/dist/components/ic-footer-link.js +2 -2
  164. package/dist/components/ic-footer-link.js.map +1 -1
  165. package/dist/components/ic-hero.js +12 -6
  166. package/dist/components/ic-hero.js.map +1 -1
  167. package/dist/components/ic-horizontal-scroll2.js +5 -5
  168. package/dist/components/ic-horizontal-scroll2.js.map +1 -1
  169. package/dist/components/ic-input-component-container2.js +3 -3
  170. package/dist/components/ic-input-component-container2.js.map +1 -1
  171. package/dist/components/ic-input-container2.js +2 -2
  172. package/dist/components/ic-input-container2.js.map +1 -1
  173. package/dist/components/ic-input-label2.js +2 -2
  174. package/dist/components/ic-input-label2.js.map +1 -1
  175. package/dist/components/ic-input-validation2.js +3 -3
  176. package/dist/components/ic-input-validation2.js.map +1 -1
  177. package/dist/components/ic-layout-grid-item.js +2 -2
  178. package/dist/components/ic-layout-grid-item.js.map +1 -1
  179. package/dist/components/ic-layout-grid.js +2 -2
  180. package/dist/components/ic-layout-grid.js.map +1 -1
  181. package/dist/components/ic-link2.js +1 -1
  182. package/dist/components/ic-link2.js.map +1 -1
  183. package/dist/components/ic-loading-indicator2.js +5 -5
  184. package/dist/components/ic-loading-indicator2.js.map +1 -1
  185. package/dist/components/ic-menu-group.js +1 -1
  186. package/dist/components/ic-menu-group.js.map +1 -1
  187. package/dist/components/ic-menu2.js +3 -3
  188. package/dist/components/ic-menu2.js.map +1 -1
  189. package/dist/components/ic-navigation-group.js +1 -1
  190. package/dist/components/ic-navigation-group.js.map +1 -1
  191. package/dist/components/ic-navigation-menu2.js +4 -4
  192. package/dist/components/ic-navigation-menu2.js.map +1 -1
  193. package/dist/components/ic-page-header.js +6 -6
  194. package/dist/components/ic-page-header.js.map +1 -1
  195. package/dist/components/ic-pagination-bar2.js +6 -6
  196. package/dist/components/ic-pagination-bar2.js.map +1 -1
  197. package/dist/components/ic-pagination-item2.js +1 -1
  198. package/dist/components/ic-pagination-item2.js.map +1 -1
  199. package/dist/components/ic-pagination2.js +4 -4
  200. package/dist/components/ic-pagination2.js.map +1 -1
  201. package/dist/components/ic-popover-menu.js +4 -4
  202. package/dist/components/ic-popover-menu.js.map +1 -1
  203. package/dist/components/ic-radio-group.js +4 -4
  204. package/dist/components/ic-radio-group.js.map +1 -1
  205. package/dist/components/ic-radio-option.js +4 -4
  206. package/dist/components/ic-radio-option.js.map +1 -1
  207. package/dist/components/ic-search-bar.js +9 -9
  208. package/dist/components/ic-search-bar.js.map +1 -1
  209. package/dist/components/ic-section-container2.js +2 -2
  210. package/dist/components/ic-section-container2.js.map +1 -1
  211. package/dist/components/ic-select2.js +7 -7
  212. package/dist/components/ic-select2.js.map +1 -1
  213. package/dist/components/ic-side-navigation.js +4 -4
  214. package/dist/components/ic-side-navigation.js.map +1 -1
  215. package/dist/components/ic-skeleton.js +2 -2
  216. package/dist/components/ic-skeleton.js.map +1 -1
  217. package/dist/components/ic-skip-link.js +2 -2
  218. package/dist/components/ic-skip-link.js.map +1 -1
  219. package/dist/components/ic-status-tag.js +2 -2
  220. package/dist/components/ic-status-tag.js.map +1 -1
  221. package/dist/components/ic-step.js +13 -13
  222. package/dist/components/ic-step.js.map +1 -1
  223. package/dist/components/ic-stepper.js +2 -2
  224. package/dist/components/ic-stepper.js.map +1 -1
  225. package/dist/components/ic-switch.js +4 -4
  226. package/dist/components/ic-switch.js.map +1 -1
  227. package/dist/components/ic-tab-context.js +1 -1
  228. package/dist/components/ic-tab-context.js.map +1 -1
  229. package/dist/components/ic-tab-group.js +2 -2
  230. package/dist/components/ic-tab-group.js.map +1 -1
  231. package/dist/components/ic-tab-panel.js +2 -2
  232. package/dist/components/ic-tab-panel.js.map +1 -1
  233. package/dist/components/ic-table-of-contents.js +3 -3
  234. package/dist/components/ic-text-field2.js +6 -6
  235. package/dist/components/ic-text-field2.js.map +1 -1
  236. package/dist/components/ic-theme.js +1 -1
  237. package/dist/components/ic-theme.js.map +1 -1
  238. package/dist/components/ic-time-input.js +5 -5
  239. package/dist/components/ic-time-input.js.map +1 -1
  240. package/dist/components/ic-toast-region.js +1 -1
  241. package/dist/components/ic-toast-region.js.map +1 -1
  242. package/dist/components/ic-toast.js +4 -4
  243. package/dist/components/ic-toast.js.map +1 -1
  244. package/dist/components/ic-toggle-button-group.js +2 -2
  245. package/dist/components/ic-toggle-button-group.js.map +1 -1
  246. package/dist/components/ic-toggle-button.js +2 -2
  247. package/dist/components/ic-toggle-button.js.map +1 -1
  248. package/dist/components/ic-tree-item.js +3 -3
  249. package/dist/components/ic-tree-view.js +4 -4
  250. package/dist/core/core.css +21 -9
  251. package/dist/core/core.esm.js +1 -1
  252. package/dist/core/core.esm.js.map +1 -1
  253. package/dist/core/{p-9fade6ad.entry.js → p-0043b019.entry.js} +2 -2
  254. package/dist/core/{p-9fade6ad.entry.js.map → p-0043b019.entry.js.map} +1 -1
  255. package/dist/core/{p-889bb8db.entry.js → p-04cb17d7.entry.js} +2 -2
  256. package/dist/core/{p-889bb8db.entry.js.map → p-04cb17d7.entry.js.map} +1 -1
  257. package/dist/core/{p-5ef453b6.entry.js → p-15c05eb8.entry.js} +2 -2
  258. package/dist/core/{p-5ef453b6.entry.js.map → p-15c05eb8.entry.js.map} +1 -1
  259. package/dist/core/p-1a976789.entry.js +2 -0
  260. package/dist/core/p-1a976789.entry.js.map +1 -0
  261. package/dist/core/{p-1be092cc.entry.js → p-2188b483.entry.js} +2 -2
  262. package/dist/core/{p-1be092cc.entry.js.map → p-2188b483.entry.js.map} +1 -1
  263. package/dist/core/{p-8c94541e.entry.js → p-24bac55f.entry.js} +2 -2
  264. package/dist/core/{p-8c94541e.entry.js.map → p-24bac55f.entry.js.map} +1 -1
  265. package/dist/core/{p-7f304d85.entry.js → p-2646a629.entry.js} +2 -2
  266. package/dist/core/{p-7f304d85.entry.js.map → p-2646a629.entry.js.map} +1 -1
  267. package/dist/core/{p-5cf704e3.entry.js → p-319e3d5b.entry.js} +2 -2
  268. package/dist/core/{p-5cf704e3.entry.js.map → p-319e3d5b.entry.js.map} +1 -1
  269. package/dist/core/{p-9e200827.entry.js → p-31f3fb15.entry.js} +2 -2
  270. package/dist/core/{p-9e200827.entry.js.map → p-31f3fb15.entry.js.map} +1 -1
  271. package/dist/core/{p-fd64c0e5.entry.js → p-3891ce53.entry.js} +2 -2
  272. package/dist/core/{p-fd64c0e5.entry.js.map → p-3891ce53.entry.js.map} +1 -1
  273. package/dist/core/{p-fad44bc8.entry.js → p-3ba2b455.entry.js} +2 -2
  274. package/dist/core/{p-fad44bc8.entry.js.map → p-3ba2b455.entry.js.map} +1 -1
  275. package/dist/core/{p-df220b91.entry.js → p-3ef2e98d.entry.js} +2 -2
  276. package/dist/core/{p-03ae0bc3.entry.js → p-41def410.entry.js} +2 -2
  277. package/dist/core/{p-03ae0bc3.entry.js.map → p-41def410.entry.js.map} +1 -1
  278. package/dist/core/p-4b188516.entry.js +2 -0
  279. package/dist/core/p-4b188516.entry.js.map +1 -0
  280. package/dist/core/{p-93e1ba0a.entry.js → p-5254a078.entry.js} +2 -2
  281. package/dist/core/{p-93e1ba0a.entry.js.map → p-5254a078.entry.js.map} +1 -1
  282. package/dist/core/{p-9c2e9189.entry.js → p-53740194.entry.js} +2 -2
  283. package/dist/core/{p-9c2e9189.entry.js.map → p-53740194.entry.js.map} +1 -1
  284. package/dist/core/{p-e380a54e.entry.js → p-5a4344cb.entry.js} +2 -2
  285. package/dist/core/{p-e380a54e.entry.js.map → p-5a4344cb.entry.js.map} +1 -1
  286. package/dist/core/p-5b32aaf3.entry.js +2 -0
  287. package/dist/core/p-5b32aaf3.entry.js.map +1 -0
  288. package/dist/core/{p-d8200098.entry.js → p-67c3985d.entry.js} +2 -2
  289. package/dist/core/{p-d8200098.entry.js.map → p-67c3985d.entry.js.map} +1 -1
  290. package/dist/core/{p-982a173d.entry.js → p-7332320d.entry.js} +2 -2
  291. package/dist/core/{p-982a173d.entry.js.map → p-7332320d.entry.js.map} +1 -1
  292. package/dist/core/{p-bc441e4c.js → p-75c3b882.js} +2 -2
  293. package/dist/core/{p-bc441e4c.js.map → p-75c3b882.js.map} +1 -1
  294. package/dist/core/{p-b88db5e3.entry.js → p-7a0f62c2.entry.js} +2 -2
  295. package/dist/core/{p-b88db5e3.entry.js.map → p-7a0f62c2.entry.js.map} +1 -1
  296. package/dist/core/p-81f12581.entry.js +2 -0
  297. package/dist/core/p-81f12581.entry.js.map +1 -0
  298. package/dist/core/{p-193afb53.entry.js → p-847cbb16.entry.js} +2 -2
  299. package/dist/core/{p-193afb53.entry.js.map → p-847cbb16.entry.js.map} +1 -1
  300. package/dist/core/{p-f3ccaa0b.entry.js → p-8e592393.entry.js} +2 -2
  301. package/dist/core/{p-f3ccaa0b.entry.js.map → p-8e592393.entry.js.map} +1 -1
  302. package/dist/core/p-9044539c.entry.js +2 -0
  303. package/dist/core/p-9044539c.entry.js.map +1 -0
  304. package/dist/core/{p-f4e7cae6.entry.js → p-90611726.entry.js} +2 -2
  305. package/dist/core/{p-f4e7cae6.entry.js.map → p-90611726.entry.js.map} +1 -1
  306. package/dist/core/{p-b00efb15.entry.js → p-9674b63f.entry.js} +2 -2
  307. package/dist/core/{p-b00efb15.entry.js.map → p-9674b63f.entry.js.map} +1 -1
  308. package/dist/core/{p-a27e1cee.entry.js → p-9a95f428.entry.js} +2 -2
  309. package/dist/core/{p-a27e1cee.entry.js.map → p-9a95f428.entry.js.map} +1 -1
  310. package/dist/core/{p-fb43abd6.entry.js → p-9ca147f3.entry.js} +2 -2
  311. package/dist/core/{p-fb43abd6.entry.js.map → p-9ca147f3.entry.js.map} +1 -1
  312. package/dist/core/{p-a8cc28a6.entry.js → p-9f76eed6.entry.js} +2 -2
  313. package/dist/core/{p-035dbee0.entry.js → p-a1448064.entry.js} +2 -2
  314. package/dist/core/{p-035dbee0.entry.js.map → p-a1448064.entry.js.map} +1 -1
  315. package/dist/core/{p-9ce9d39a.entry.js → p-a237af88.entry.js} +2 -2
  316. package/dist/core/{p-9ce9d39a.entry.js.map → p-a237af88.entry.js.map} +1 -1
  317. package/dist/core/{p-09c31ac6.entry.js → p-adde6c66.entry.js} +2 -2
  318. package/dist/core/{p-09c31ac6.entry.js.map → p-adde6c66.entry.js.map} +1 -1
  319. package/dist/core/{p-72b7051a.entry.js → p-af821831.entry.js} +2 -2
  320. package/dist/core/{p-72b7051a.entry.js.map → p-af821831.entry.js.map} +1 -1
  321. package/dist/core/{p-12e8dcdd.entry.js → p-afedcfdb.entry.js} +2 -2
  322. package/dist/core/{p-12e8dcdd.entry.js.map → p-afedcfdb.entry.js.map} +1 -1
  323. package/dist/core/{p-f098e531.entry.js → p-b4a2f6fa.entry.js} +2 -2
  324. package/dist/core/{p-f098e531.entry.js.map → p-b4a2f6fa.entry.js.map} +1 -1
  325. package/dist/core/p-b4bfaf8f.entry.js +2 -0
  326. package/dist/core/p-b4bfaf8f.entry.js.map +1 -0
  327. package/dist/core/{p-ea1de762.entry.js → p-b80b08ae.entry.js} +2 -2
  328. package/dist/core/p-b80b08ae.entry.js.map +1 -0
  329. package/dist/core/{p-7bf9bbde.entry.js → p-ba21f477.entry.js} +2 -2
  330. package/dist/core/{p-7bf9bbde.entry.js.map → p-ba21f477.entry.js.map} +1 -1
  331. package/dist/core/{p-63203e59.entry.js → p-ba75ed34.entry.js} +2 -2
  332. package/dist/core/{p-63203e59.entry.js.map → p-ba75ed34.entry.js.map} +1 -1
  333. package/dist/core/{p-15a81f32.entry.js → p-bd9a76d8.entry.js} +2 -2
  334. package/dist/core/{p-15a81f32.entry.js.map → p-bd9a76d8.entry.js.map} +1 -1
  335. package/dist/core/{p-10950727.entry.js → p-c3eddb99.entry.js} +2 -2
  336. package/dist/core/{p-10950727.entry.js.map → p-c3eddb99.entry.js.map} +1 -1
  337. package/dist/core/{p-a99ad459.entry.js → p-c5d65718.entry.js} +2 -2
  338. package/dist/core/{p-a99ad459.entry.js.map → p-c5d65718.entry.js.map} +1 -1
  339. package/dist/core/{p-eb958cc8.entry.js → p-c6c87e58.entry.js} +2 -2
  340. package/dist/core/{p-eb958cc8.entry.js.map → p-c6c87e58.entry.js.map} +1 -1
  341. package/dist/core/{p-c8ce7d60.entry.js → p-e00e67ff.entry.js} +2 -2
  342. package/dist/core/{p-c8ce7d60.entry.js.map → p-e00e67ff.entry.js.map} +1 -1
  343. package/dist/core/{p-069e758b.entry.js → p-e1920777.entry.js} +2 -2
  344. package/dist/core/{p-92936b49.entry.js → p-ef5b6622.entry.js} +2 -2
  345. package/dist/core/{p-0f22f41e.js → p-f48ce5f6.js} +2 -2
  346. package/dist/core/p-f48ce5f6.js.map +1 -0
  347. package/dist/core/{p-1ca62941.entry.js → p-f5cea10d.entry.js} +2 -2
  348. package/dist/esm/core.js +1 -1
  349. package/dist/esm/date-helpers-5723de08.js +86 -0
  350. package/dist/esm/{date-helpers-2b531c8c.js.map → date-helpers-5723de08.js.map} +1 -1
  351. package/dist/esm/{helpers-89cb996d.js → helpers-9f228880.js} +21 -21
  352. package/dist/esm/helpers-9f228880.js.map +1 -0
  353. package/dist/esm/ic-button_3.entry.js +5 -5
  354. package/dist/esm/ic-button_3.entry.js.map +1 -1
  355. package/dist/esm/ic-calendar_2.entry.js +2349 -0
  356. package/dist/esm/ic-calendar_2.entry.js.map +1 -0
  357. package/dist/esm/ic-card-horizontal.entry.js +6 -6
  358. package/dist/esm/ic-card-horizontal.entry.js.map +1 -1
  359. package/dist/esm/ic-checkbox-group.entry.js +2 -2
  360. package/dist/esm/ic-checkbox-group.entry.js.map +1 -1
  361. package/dist/esm/ic-checkbox_3.entry.js +39 -16
  362. package/dist/esm/ic-checkbox_3.entry.js.map +1 -1
  363. package/dist/esm/ic-data-list.entry.js +2 -2
  364. package/dist/esm/ic-data-list.entry.js.map +1 -1
  365. package/dist/esm/ic-data-row.entry.js +2 -2
  366. package/dist/esm/ic-data-row.entry.js.map +1 -1
  367. package/dist/esm/ic-data-table-title-bar.entry.js +4 -4
  368. package/dist/esm/ic-data-table.entry.js +8 -8
  369. package/dist/esm/ic-date-picker.entry.js +100 -856
  370. package/dist/esm/ic-date-picker.entry.js.map +1 -1
  371. package/dist/esm/ic-dialog.entry.js +1 -1
  372. package/dist/esm/ic-dialog.entry.js.map +1 -1
  373. package/dist/esm/ic-footer-link.entry.js +2 -2
  374. package/dist/esm/ic-footer-link.entry.js.map +1 -1
  375. package/dist/esm/ic-hero.entry.js +11 -6
  376. package/dist/esm/ic-hero.entry.js.map +1 -1
  377. package/dist/esm/ic-horizontal-scroll.entry.js +5 -5
  378. package/dist/esm/ic-horizontal-scroll.entry.js.map +1 -1
  379. package/dist/esm/ic-input-component-container_4.entry.js +10 -10
  380. package/dist/esm/ic-input-component-container_4.entry.js.map +1 -1
  381. package/dist/esm/ic-layout-grid-item.entry.js +2 -2
  382. package/dist/esm/ic-layout-grid-item.entry.js.map +1 -1
  383. package/dist/esm/ic-layout-grid.entry.js +2 -2
  384. package/dist/esm/ic-layout-grid.entry.js.map +1 -1
  385. package/dist/esm/ic-link.entry.js +1 -1
  386. package/dist/esm/ic-link.entry.js.map +1 -1
  387. package/dist/esm/ic-menu-group.entry.js +1 -1
  388. package/dist/esm/ic-menu-group.entry.js.map +1 -1
  389. package/dist/esm/ic-menu.entry.js +3 -3
  390. package/dist/esm/ic-menu.entry.js.map +1 -1
  391. package/dist/esm/ic-navigation-group.entry.js +1 -1
  392. package/dist/esm/ic-navigation-group.entry.js.map +1 -1
  393. package/dist/esm/ic-navigation-menu.entry.js +4 -4
  394. package/dist/esm/ic-navigation-menu.entry.js.map +1 -1
  395. package/dist/esm/ic-page-header.entry.js +6 -6
  396. package/dist/esm/ic-page-header.entry.js.map +1 -1
  397. package/dist/esm/ic-pagination_4.entry.js +18 -18
  398. package/dist/esm/ic-pagination_4.entry.js.map +1 -1
  399. package/dist/esm/ic-popover-menu.entry.js +4 -4
  400. package/dist/esm/ic-popover-menu.entry.js.map +1 -1
  401. package/dist/esm/ic-radio-group.entry.js +4 -4
  402. package/dist/esm/ic-radio-group.entry.js.map +1 -1
  403. package/dist/esm/ic-radio-option.entry.js +4 -4
  404. package/dist/esm/ic-radio-option.entry.js.map +1 -1
  405. package/dist/esm/ic-search-bar.entry.js +9 -9
  406. package/dist/esm/ic-search-bar.entry.js.map +1 -1
  407. package/dist/esm/ic-section-container.entry.js +2 -2
  408. package/dist/esm/ic-section-container.entry.js.map +1 -1
  409. package/dist/esm/ic-side-navigation.entry.js +4 -4
  410. package/dist/esm/ic-side-navigation.entry.js.map +1 -1
  411. package/dist/esm/ic-skeleton.entry.js +2 -2
  412. package/dist/esm/ic-skeleton.entry.js.map +1 -1
  413. package/dist/esm/ic-skip-link.entry.js +2 -2
  414. package/dist/esm/ic-skip-link.entry.js.map +1 -1
  415. package/dist/esm/ic-status-tag.entry.js +2 -2
  416. package/dist/esm/ic-status-tag.entry.js.map +1 -1
  417. package/dist/esm/ic-step.entry.js +13 -13
  418. package/dist/esm/ic-step.entry.js.map +1 -1
  419. package/dist/esm/ic-stepper.entry.js +2 -2
  420. package/dist/esm/ic-stepper.entry.js.map +1 -1
  421. package/dist/esm/ic-switch.entry.js +4 -4
  422. package/dist/esm/ic-switch.entry.js.map +1 -1
  423. package/dist/esm/ic-tab-context.entry.js +1 -1
  424. package/dist/esm/ic-tab-context.entry.js.map +1 -1
  425. package/dist/esm/ic-tab-group.entry.js +2 -2
  426. package/dist/esm/ic-tab-group.entry.js.map +1 -1
  427. package/dist/esm/ic-tab-panel.entry.js +2 -2
  428. package/dist/esm/ic-tab-panel.entry.js.map +1 -1
  429. package/dist/esm/ic-table-of-contents.entry.js +4 -4
  430. package/dist/esm/ic-theme.entry.js +1 -1
  431. package/dist/esm/ic-theme.entry.js.map +1 -1
  432. package/dist/esm/ic-time-input.entry.js +5 -5
  433. package/dist/esm/ic-time-input.entry.js.map +1 -1
  434. package/dist/esm/ic-toast-region.entry.js +1 -1
  435. package/dist/esm/ic-toast-region.entry.js.map +1 -1
  436. package/dist/esm/ic-toast.entry.js +4 -4
  437. package/dist/esm/ic-toast.entry.js.map +1 -1
  438. package/dist/esm/ic-toggle-button-group.entry.js +2 -2
  439. package/dist/esm/ic-toggle-button-group.entry.js.map +1 -1
  440. package/dist/esm/ic-toggle-button.entry.js +2 -2
  441. package/dist/esm/ic-toggle-button.entry.js.map +1 -1
  442. package/dist/esm/ic-tree-item.entry.js +3 -3
  443. package/dist/esm/ic-tree-view.entry.js +4 -4
  444. package/dist/esm/index-a7a720e7.js +4 -4
  445. package/dist/esm/loader.js +1 -1
  446. package/dist/types/components/ic-calendar/ic-calendar.d.ts +216 -0
  447. package/dist/types/components/ic-calendar/ic-calendar.stories.d.ts +151 -0
  448. package/dist/types/components/ic-calendar/test/a11y/ic-calendar.test.a11y.d.ts +1 -0
  449. package/dist/types/components/ic-card-horizontal/ic-card-horizontal.d.ts +1 -2
  450. package/dist/types/components/ic-date-input/ic-date-input.d.ts +2 -2
  451. package/dist/types/components/ic-date-picker/ic-date-picker.d.ts +22 -105
  452. package/dist/types/components/ic-date-picker/ic-date-picker.stories.d.ts +81 -0
  453. package/dist/types/components/ic-pagination-bar/ic-pagination-bar.d.ts +1 -1
  454. package/dist/types/components/ic-time-input/ic-time-input.d.ts +2 -2
  455. package/dist/types/components.d.ts +213 -14
  456. package/dist/types/utils/date-helpers.d.ts +1 -0
  457. package/dist/types/utils/types.d.ts +1 -0
  458. package/hydrate/index.js +2085 -1639
  459. package/hydrate/index.mjs +2085 -1639
  460. package/package.json +3 -3
  461. package/dist/cjs/helpers-da852478.js.map +0 -1
  462. package/dist/cjs/ic-date-input.cjs.entry.js +0 -1214
  463. package/dist/cjs/ic-date-input.cjs.entry.js.map +0 -1
  464. package/dist/collection/components/ic-date-picker/ic-day-button.js.map +0 -1
  465. package/dist/collection/components/ic-date-picker/ic-month-picker.js +0 -29
  466. package/dist/collection/components/ic-date-picker/ic-month-picker.js.map +0 -1
  467. package/dist/collection/components/ic-date-picker/ic-year-picker.js +0 -39
  468. package/dist/collection/components/ic-date-picker/ic-year-picker.js.map +0 -1
  469. package/dist/core/p-0f22f41e.js.map +0 -1
  470. package/dist/core/p-13c8859b.entry.js +0 -2
  471. package/dist/core/p-13c8859b.entry.js.map +0 -1
  472. package/dist/core/p-2528ecec.entry.js +0 -2
  473. package/dist/core/p-2528ecec.entry.js.map +0 -1
  474. package/dist/core/p-402870f7.entry.js +0 -2
  475. package/dist/core/p-402870f7.entry.js.map +0 -1
  476. package/dist/core/p-bd8c2e24.entry.js +0 -2
  477. package/dist/core/p-bd8c2e24.entry.js.map +0 -1
  478. package/dist/core/p-c0d4db72.entry.js +0 -2
  479. package/dist/core/p-c0d4db72.entry.js.map +0 -1
  480. package/dist/core/p-ea1de762.entry.js.map +0 -1
  481. package/dist/core/p-f16c4210.entry.js +0 -2
  482. package/dist/core/p-f16c4210.entry.js.map +0 -1
  483. package/dist/esm/helpers-89cb996d.js.map +0 -1
  484. package/dist/esm/ic-date-input.entry.js +0 -1210
  485. package/dist/esm/ic-date-input.entry.js.map +0 -1
  486. /package/dist/collection/components/{ic-date-picker → ic-calendar}/ic-day-button.js +0 -0
  487. /package/dist/core/{p-df220b91.entry.js.map → p-3ef2e98d.entry.js.map} +0 -0
  488. /package/dist/core/{p-a8cc28a6.entry.js.map → p-9f76eed6.entry.js.map} +0 -0
  489. /package/dist/core/{p-069e758b.entry.js.map → p-e1920777.entry.js.map} +0 -0
  490. /package/dist/core/{p-92936b49.entry.js.map → p-ef5b6622.entry.js.map} +0 -0
  491. /package/dist/core/{p-1ca62941.entry.js.map → p-f5cea10d.entry.js.map} +0 -0
  492. /package/dist/types/components/{ic-date-picker → ic-calendar}/ic-day-button.d.ts +0 -0
  493. /package/dist/types/components/{ic-date-picker → ic-calendar}/ic-month-picker.d.ts +0 -0
  494. /package/dist/types/components/{ic-date-picker → ic-calendar}/ic-year-picker.d.ts +0 -0
@@ -1,16 +1,10 @@
1
1
  import { Host, h, } from "@stencil/core";
2
- import { createDate, clampDate, dateMatches, dateInRange, getMonthStart, getMonthEnd, getWeekStart, yearInRange, addSixWeeks, } from "../../utils/date-helpers";
3
- import { stringEnumToArray, onComponentRequiredPropUndefined, removeDisabledFalse, } from "../../utils/helpers";
4
- import { IcWeekDays, IcShortDayNames, IcDateInputMonths, } from "../../utils/types";
5
- import chevron from "../../assets/chevron-icon.svg";
6
- import { DayButton } from "./ic-day-button";
7
- import { MonthPicker } from "./ic-month-picker";
8
- import { YearPicker } from "./ic-year-picker";
9
- const DEFAULT_DATE_FORMAT = "DD/MM/YYYY";
2
+ import { createDate, dateMatches } from "../../utils/date-helpers";
3
+ import { onComponentRequiredPropUndefined, removeDisabledFalse, renderDynamicChildSlots, } from "../../utils/helpers";
4
+ import { IcWeekDays, } from "../../utils/types";
10
5
  const DEFAULT_DISABLE_DATES_FROM_NOW_MSG = "Dates in the future are not allowed. Please select a date in the past.";
11
6
  const DEFAULT_DISABLE_DATES_UNTIL_NOW_MSG = "Dates in the past are not allowed. Please select a date in the future.";
12
7
  const DEFAULT_DISABLE_DAYS_MSG = "The date you have selected is on a day of the week that is not allowed. Please select another date.";
13
- const FOCUS_TIMER = 100;
14
8
  const PICKER_HEIGHT_SMALL = 360;
15
9
  const PICKER_HEIGHT_DEFAULT = 400;
16
10
  const PICKER_HEIGHT_LARGE = 440;
@@ -19,31 +13,15 @@ const PICKER_HEIGHT_LARGE = 440;
19
13
  */
20
14
  export class DatePicker {
21
15
  constructor() {
22
- this.clearButtonEl = null;
23
- this.daysOfWeek = [];
24
- this.dayButtonFocussed = false;
25
- this.dayPickerKeyboardNav = false;
26
- this.dialogDescription = "";
27
- this.focusDay = true;
28
- this.liveRegionEl = undefined;
29
- this.monthNames = [];
30
- this.monthInViewUpdateHandled = false;
31
16
  this.myCalendarButtonClicked = false;
17
+ this.hostMutationObserver = null;
32
18
  this.showPickerAbove = false;
33
- this.today = new Date();
34
- this.todayButtonEl = null;
35
- this.yearButtonFocussed = false;
36
19
  this.calendarOpen = false;
37
- this.currMonthView = [];
38
- this.currYearPickerView = [];
39
- this.decadeView = [];
40
- this.focussedDate = null;
41
20
  this.maxDate = null;
42
21
  this.minDate = null;
43
22
  this.monthPickerVisible = false;
44
23
  this.orderedDaysOfWeek = [];
45
24
  this.selectedDate = null;
46
- this.yearPickerVisible = false;
47
25
  /**
48
26
  * The format in which the date will be displayed.
49
27
  */
@@ -52,10 +30,6 @@ export class DatePicker {
52
30
  * If `true`, the disabled state will be set.
53
31
  */
54
32
  this.disabled = false;
55
- /**
56
- * If `true`, every individual input field completed will emit an icChange event.
57
- */
58
- this.emitDatePartChange = false;
59
33
  /**
60
34
  * The days of the week to disable.
61
35
  */
@@ -80,6 +54,10 @@ export class DatePicker {
80
54
  * The text to display as the validation message when `disablePast` is `true` and a date in the past is entered.
81
55
  */
82
56
  this.disablePastMessage = "Dates in the past are not allowed. Please select a date in the future.";
57
+ /**
58
+ * If `true`, every individual input field completed will emit an icChange event.
59
+ */
60
+ this.emitDatePartChange = false;
83
61
  /**
84
62
  * If `true`, the helper text will be visually hidden, but still read out by screenreaders.
85
63
  */
@@ -156,42 +134,11 @@ export class DatePicker {
156
134
  * The value of the date picker. 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.
157
135
  */
158
136
  this.value = "";
159
- this.setDecadeView = (start) => {
160
- let currYear = start - 1;
161
- const decadeArr = [];
162
- while (currYear <= start + 10) {
163
- decadeArr.push(currYear);
164
- currYear++;
165
- }
166
- this.decadeView = decadeArr;
167
- this.decadeStart = decadeArr[1];
168
- this.decadeEnd = decadeArr[10];
169
- };
170
- this.setSelectedDate = (d, emit = true) => {
171
- var _a;
172
- if (d === null || !dateMatches(d, this.selectedDate)) {
173
- this.selectedDate = d;
174
- this.value = d;
175
- if (emit) {
176
- (_a = this.inputEl) === null || _a === void 0 ? void 0 : _a.triggerIcChange(d);
177
- }
178
- }
179
- };
180
- this.handleCalendarMouseDown = (event) => {
181
- const target = event.target;
182
- if (target.tagName !== "IC-BUTTON") {
183
- event.preventDefault();
184
- }
185
- };
186
- this.handleCalendarClick = (event) => {
187
- this.clearDialogDescription();
188
- event.stopImmediatePropagation();
189
- };
190
137
  this.handleDocumentClick = () => {
191
138
  this.calendarOpen = false;
192
139
  };
193
140
  this.keyDownHandler = (event) => {
194
- var _a;
141
+ var _a, _b;
195
142
  if (event.key === "Escape") {
196
143
  if (this.calendarOpen) {
197
144
  this.closeButtonClickHandler();
@@ -200,585 +147,51 @@ export class DatePicker {
200
147
  }
201
148
  }
202
149
  else {
203
- this.clearDialogDescription();
150
+ (_b = this.calendarEl) === null || _b === void 0 ? void 0 : _b.clearDialogDescription();
204
151
  event.stopImmediatePropagation();
205
152
  }
206
153
  };
207
154
  this.closeButtonClickHandler = () => {
208
155
  this.calendarOpen = false;
209
156
  };
210
- this.focusFirstElement = () => {
211
- this.monthButtonEl.setFocus();
212
- };
213
- this.focusLastElement = () => {
214
- if (this.showPickerClearButton &&
215
- this.clearButtonEl &&
216
- !this.clearButtonEl.disabled) {
217
- this.clearButtonEl.setFocus();
218
- }
219
- else if (this.showPickerTodayButton &&
220
- this.todayButtonEl &&
221
- !this.todayButtonEl.disabled) {
222
- this.todayButtonEl.setFocus();
223
- }
224
- else if (this.monthPickerVisible) {
225
- this.focussedMonthEl.setFocus();
226
- }
227
- else if (this.yearPickerVisible) {
228
- this.focussedYearEl.setFocus();
229
- }
230
- else {
231
- this.focussedDayEl.focus();
232
- }
233
- };
234
- this.focusFocussedDay = () => {
235
- this.focussedDayEl.focus();
236
- };
237
- this.monthButtonClickHandler = () => {
238
- this.yearPickerVisible = false;
239
- this.focusDay = false;
240
- this.monthPickerVisible = !this.monthPickerVisible;
241
- if (this.monthPickerVisible) {
242
- this.setAriaLiveRegionText("Month picker view open");
243
- }
244
- else {
245
- this.setMonthSelectedLiveRegionText();
246
- }
247
- };
248
- this.yearButtonClickHandler = () => {
249
- this.monthPickerVisible = false;
250
- this.focusDay = false;
251
- this.yearPickerVisible = !this.yearPickerVisible;
252
- if (this.yearPickerVisible) {
253
- this.setAriaLiveRegionText(`Year picker view open. ${this.getDecadeInViewText()}`);
254
- }
255
- else {
256
- this.setYearSelectedLiveRegionText();
257
- }
258
- };
259
- this.todayButtonClickHandler = () => {
260
- this.yearPickerVisible = false;
261
- this.monthPickerVisible = false;
262
- this.setFocussedDate(new Date());
263
- this.setAriaLiveRegionText(this.getMonthInViewText());
264
- setTimeout(() => this.focusFocussedDay(), FOCUS_TIMER);
265
- };
266
- this.todayButtonKeyDownHandler = (ev) => {
267
- var _a;
268
- if (ev.key === "Tab" && !ev.shiftKey && ((_a = this.clearButtonEl) === null || _a === void 0 ? void 0 : _a.disabled)) {
269
- this.focusFirstElement();
270
- ev.preventDefault();
271
- }
272
- };
273
- this.clearButtonClickHandler = () => {
274
- this.setSelectedDate(null);
275
- let text = "Selected date cleared.";
276
- if (!this.monthPickerVisible && !this.yearPickerVisible) {
277
- text += ` ${this.getMonthInViewText()}`;
278
- }
279
- if (this.monthPickerVisible) {
280
- this.focussedMonthEl.setFocus();
281
- }
282
- else if (this.yearPickerVisible) {
283
- this.focussedYearEl.setFocus();
284
- }
285
- else {
286
- this.focusFocussedDay();
287
- }
288
- this.setAriaLiveRegionText(text);
289
- };
290
- this.setMonthSelectedLiveRegionText = () => {
291
- this.setAriaLiveRegionText(`${this.monthNames[this.monthInView]} selected. ${this.getMonthInViewText()}`);
292
- };
293
- this.setYearSelectedLiveRegionText = () => {
294
- this.setAriaLiveRegionText(`${this.yearInView} selected. ${this.getMonthInViewText()}`);
295
- };
296
- this.getMonthInViewText = () => {
297
- return `${this.monthNames[this.monthInView]} ${this.yearInView} currently in view.`;
298
- };
299
- this.getDecadeInViewText = () => {
300
- return `${this.decadeStart} to ${this.decadeEnd} currently in view.`;
301
- };
302
- this.setAriaLiveRegionText = (text) => {
303
- this.liveRegionEl && (this.liveRegionEl.innerText = text);
304
- };
305
- this.clearDialogDescription = () => {
306
- this.dialogDescription = "";
307
- };
308
- this.clearButtonKeyDownHandler = (ev) => {
309
- if (ev.key === "Tab" && !ev.shiftKey) {
310
- this.focusFirstElement();
311
- ev.preventDefault();
312
- }
313
- };
314
- this.goToPreviousMonth = (focusDay = false) => {
315
- this.focusDay = focusDay;
316
- this.moveMonths(-1);
317
- };
318
- this.goToNextMonth = (focusDay = false) => {
319
- this.focusDay = focusDay;
320
- this.moveMonths(1);
321
- };
322
- this.goToPreviousYear = (focusDay = false) => {
323
- if (this.isPrevYearAllowed()) {
324
- this.focusDay = focusDay;
325
- this.moveYears(-1);
326
- }
327
- };
328
- this.goToNextYear = (focusDay = false) => {
329
- if (this.isNextYearAllowed()) {
330
- this.focusDay = focusDay;
331
- this.moveYears(1);
332
- }
333
- };
334
- this.navButtonMouseDownHandler = (ev) => {
335
- ev.preventDefault();
336
- };
337
- this.renderMonthYearNavButton = (id, flip, disabled) => {
338
- const buttonSize = this.size;
339
- return (h("div", { "aria-hidden": "true" }, h("ic-button", { id: id, disableTooltip: true, disabled: disabled, onClick: this.monthYearNavClickHandler, class: { flip: flip }, variant: "icon-tertiary", innerHTML: chevron, size: buttonSize, tabIndex: -1, "aria-hidden": "true", onMouseDown: this.navButtonMouseDownHandler })));
340
- };
341
- this.monthYearNavClickHandler = (ev) => {
342
- const target = ev.target;
343
- switch (target.id) {
344
- case "previous-month-button":
345
- this.goToPreviousMonth(this.dayButtonFocussed);
346
- break;
347
- case "next-month-button":
348
- this.goToNextMonth(this.dayButtonFocussed);
349
- break;
350
- case "previous-year-button":
351
- this.goToPreviousYear(this.dayButtonFocussed);
352
- break;
353
- case "next-year-button":
354
- this.goToNextYear(this.dayButtonFocussed);
355
- break;
356
- }
357
- };
358
- this.previousMonthButton = () => {
359
- let disabled = false;
360
- if (this.focussedDate !== null && this.minDate !== null) {
361
- const yearMatch = this.focussedDate.getFullYear() === this.minDate.getFullYear();
362
- if (yearMatch) {
363
- disabled = this.monthInView - 1 < this.minDate.getMonth();
364
- }
365
- }
366
- return this.renderMonthYearNavButton("previous-month-button", true, disabled);
367
- };
368
- this.nextMonthButton = () => {
369
- let disabled = false;
370
- if (this.focussedDate !== null && this.maxDate !== null) {
371
- const yearMatch = this.focussedDate.getFullYear() === this.maxDate.getFullYear();
372
- if (yearMatch) {
373
- disabled = this.monthInView + 1 > this.maxDate.getMonth();
374
- }
375
- }
376
- return this.renderMonthYearNavButton("next-month-button", false, disabled);
377
- };
378
- this.previousYearButton = () => {
379
- return this.renderMonthYearNavButton("previous-year-button", true, !this.isPrevYearAllowed());
380
- };
381
- this.nextYearButton = () => {
382
- return this.renderMonthYearNavButton("next-year-button", false, !this.isNextYearAllowed());
383
- };
384
- this.isPrevYearAllowed = () => {
385
- return this.isYearAllowed(this.yearInView - 1);
386
- };
387
- this.isNextYearAllowed = () => {
388
- return this.isYearAllowed(this.yearInView + 1);
389
- };
390
- this.isYearAllowed = (yr) => yearInRange(yr, this.minDate, this.maxDate);
391
- this.getMonthView = (date) => {
392
- const start = getWeekStart(getMonthStart(date), this.startOfWeek);
393
- const end = addSixWeeks(start);
394
- const days = [];
395
- let current = start;
396
- while (!dateMatches(current, end)) {
397
- days.push(current);
398
- current = new Date(current);
399
- current.setDate(current.getDate() + 1);
400
- }
401
- days.push(current);
402
- return days;
403
- };
404
- this.isCurrentMonth = () => {
405
- const d = new Date();
406
- return (d.getFullYear() === this.yearInView && d.getMonth() === this.monthInView);
407
- };
408
- this.updateMonthInView = () => {
409
- if (this.focussedDate) {
410
- this.currMonthView = this.getMonthView(this.focussedDate);
411
- this.focussedDay = this.focussedDate.getDate();
412
- this.monthInView = this.focussedDate.getMonth();
413
- this.yearInView = this.focussedDate.getFullYear();
414
- if (this.dayPickerKeyboardNav) {
415
- this.monthInViewUpdateHandled = true;
416
- this.setAriaLiveRegionText(this.getMonthInViewText());
417
- this.dayPickerKeyboardNav = false;
418
- }
419
- }
420
- };
421
- this.handleSelectDay = (day) => {
422
- var _a;
423
- this.setSelectedDate(day);
424
- this.calendarOpen = false;
425
- (_a = this.inputEl) === null || _a === void 0 ? void 0 : _a.setCalendarFocus();
426
- };
427
- this.handleSelectMonth = (month) => {
428
- this.moveMonths(month - this.monthInView);
429
- setTimeout(() => {
430
- this.monthButtonEl.setFocus();
431
- this.monthPickerVisible = false;
432
- this.setMonthSelectedLiveRegionText();
433
- }, FOCUS_TIMER);
434
- };
435
- this.handleSelectYear = (year) => {
436
- const yrPos = this.decadeView.indexOf(year);
437
- if (yrPos > 0 && yrPos < this.decadeView.length - 1) {
438
- this.moveYears(year - this.yearInView);
439
- this.focusDay = false;
440
- const monthName = this.monthNames[this.monthInView];
441
- this.setAriaLiveRegionText(`${year} selected. ${monthName} ${year} currently in view.`);
442
- setTimeout(() => {
443
- this.yearButtonEl.setFocus();
444
- this.yearPickerVisible = false;
445
- }, FOCUS_TIMER);
446
- }
447
- else {
448
- const moveYears = year - this.focussedYear > 0 ? 10 : -10;
449
- this.updateFocussedYear(moveYears, this.yearButtonFocussed);
450
- this.setAriaLiveRegionText(this.getDecadeInViewText());
451
- }
452
- };
453
- this.monthPickerKeyDownHandler = (ev) => {
454
- let handled = true;
455
- switch (ev.key) {
456
- case "ArrowUp":
457
- case "ArrowLeft":
458
- this.updateFocussedMonth(-1);
459
- break;
460
- case "ArrowDown":
461
- case "ArrowRight":
462
- this.updateFocussedMonth(1);
463
- break;
464
- case "Home":
465
- this.updateFocussedMonth(-this.focussedMonth);
466
- break;
467
- case "End":
468
- this.updateFocussedMonth(11 - this.focussedMonth);
469
- break;
470
- case "Tab":
471
- handled = this.calendarTabHandler(ev);
472
- break;
473
- case "Escape":
474
- ev.stopImmediatePropagation();
475
- this.monthPickerVisible = false;
476
- setTimeout(() => this.focusFocussedDay(), FOCUS_TIMER);
477
- break;
478
- default:
479
- handled = false;
480
- }
481
- if (handled) {
482
- ev.preventDefault();
483
- }
484
- };
485
- this.yearPickerKeyDownHandler = (ev) => {
486
- let handled = true;
487
- switch (ev.key) {
488
- case "ArrowUp":
489
- case "ArrowLeft":
490
- this.updateFocussedYear(-1);
491
- break;
492
- case "ArrowDown":
493
- case "ArrowRight":
494
- this.updateFocussedYear(1);
495
- break;
496
- case "Home":
497
- if (this.focussedYear > this.decadeStart) {
498
- this.updateFocussedYear(this.decadeStart - this.focussedYear);
499
- }
500
- break;
501
- case "End":
502
- if (this.focussedYear < this.decadeEnd) {
503
- this.updateFocussedYear(this.decadeEnd - this.focussedYear);
504
- }
505
- break;
506
- case "PageUp":
507
- this.updateFocussedYear(-10);
508
- break;
509
- case "PageDown":
510
- this.updateFocussedYear(10);
511
- break;
512
- case "Tab":
513
- handled = this.calendarTabHandler(ev);
514
- break;
515
- case "Escape":
516
- ev.stopImmediatePropagation();
517
- this.yearPickerVisible = false;
518
- setTimeout(() => this.focusFocussedDay(), FOCUS_TIMER);
519
- break;
520
- default:
521
- handled = false;
522
- }
523
- if (handled) {
524
- ev.preventDefault();
525
- }
526
- };
527
- this.onYearButtonFocusHandler = () => {
528
- this.yearButtonFocussed = true;
529
- };
530
- this.onYearButtonBlurHandler = () => {
531
- this.yearButtonFocussed = false;
532
- };
533
- this.monthButtonKeyDownHandler = (ev) => {
534
- let handled = false;
535
- switch (ev.key) {
536
- case "ArrowLeft":
537
- case "ArrowUp":
538
- handled = true;
539
- this.goToPreviousMonth();
540
- break;
541
- case "ArrowRight":
542
- case "ArrowDown":
543
- handled = true;
544
- this.goToNextMonth();
545
- break;
546
- case "Home":
547
- handled = true;
548
- this.focusDay = false;
549
- this.moveMonths(-this.monthInView);
550
- break;
551
- case "End":
552
- handled = true;
553
- this.focusDay = false;
554
- this.moveMonths(11 - this.monthInView);
555
- break;
556
- case "Tab":
557
- if (ev.shiftKey) {
558
- handled = true;
559
- this.focusLastElement();
560
- }
561
- break;
562
- case "Escape":
563
- if (this.monthPickerVisible) {
564
- this.monthPickerVisible = false;
565
- ev.stopImmediatePropagation();
566
- }
567
- break;
568
- default:
569
- break;
570
- }
571
- if (handled) {
572
- ev.preventDefault();
573
- }
574
- };
575
- this.yearButtonKeyDownHandler = (ev) => {
576
- let handled = false;
577
- switch (ev.key) {
578
- case "ArrowLeft":
579
- case "ArrowUp":
580
- handled = true;
581
- this.goToPreviousYear();
582
- break;
583
- case "ArrowRight":
584
- case "ArrowDown":
585
- handled = true;
586
- this.goToNextYear();
587
- break;
588
- case "Home":
589
- if (this.yearPickerVisible && this.yearInView > this.decadeStart) {
590
- handled = true;
591
- this.moveYears(this.decadeStart - this.yearInView);
592
- }
593
- break;
594
- case "End":
595
- if (this.yearPickerVisible && this.yearInView < this.decadeEnd) {
596
- handled = true;
597
- this.moveYears(this.decadeEnd - this.focussedYear);
598
- }
599
- break;
600
- case "PageUp":
601
- handled = true;
602
- this.focusDay = false;
603
- this.moveYears(-10);
604
- break;
605
- case "PageDown":
606
- handled = true;
607
- this.focusDay = false;
608
- this.moveYears(10);
609
- break;
610
- case "Escape":
611
- if (this.yearPickerVisible) {
612
- this.yearPickerVisible = false;
613
- ev.stopImmediatePropagation();
614
- }
615
- break;
616
- default:
617
- break;
618
- }
619
- if (handled) {
620
- ev.preventDefault();
621
- }
622
- };
623
- this.handleCalendarKeyDown = (ev) => {
624
- let handled = true;
625
- switch (ev.key) {
626
- case "ArrowDown":
627
- this.dayPickerKeyboardNav = true;
628
- this.moveDays(7);
629
- break;
630
- case "ArrowUp":
631
- this.dayPickerKeyboardNav = true;
632
- this.moveDays(-7);
633
- break;
634
- case "ArrowLeft":
635
- this.dayPickerKeyboardNav = true;
636
- if (this.focussedDate)
637
- this.moveDays(-1 * this.getNextDayToFocus(this.focussedDate, false));
638
- break;
639
- case "ArrowRight":
640
- this.dayPickerKeyboardNav = true;
641
- if (this.focussedDate)
642
- this.moveDays(this.getNextDayToFocus(this.focussedDate, true));
643
- break;
644
- case "PageUp":
645
- this.dayPickerKeyboardNav = true;
646
- ev.shiftKey ? this.moveYears(-1) : this.moveMonths(-1);
647
- break;
648
- case "PageDown":
649
- this.dayPickerKeyboardNav = true;
650
- ev.shiftKey ? this.moveYears(1) : this.moveMonths(1);
651
- break;
652
- case "Home":
653
- this.dayPickerKeyboardNav = true;
654
- this.setFocussedDate(new Date(this.focussedYear, this.focussedMonth, 1));
655
- break;
656
- case "End":
657
- this.dayPickerKeyboardNav = true;
658
- this.setFocussedDate(new Date(this.focussedYear, this.focussedMonth + 1, 0));
659
- break;
660
- case "Tab":
661
- handled = this.calendarTabHandler(ev);
662
- break;
663
- default:
664
- handled = false;
665
- break;
666
- }
667
- if (handled) {
668
- ev.preventDefault();
157
+ this.setCalendarProps = () => {
158
+ const calendarProps = {
159
+ disableDays: this.disableDays,
160
+ disableFuture: this.disableFuture,
161
+ disablePast: this.disablePast,
162
+ openAtDate: this.openAtDate,
163
+ showClearButton: this.showPickerClearButton,
164
+ showDaysOutsideMonth: this.showDaysOutsideMonth,
165
+ showTodayButton: this.showPickerTodayButton,
166
+ startOfWeek: this.startOfWeek,
167
+ theme: this.theme,
168
+ value: this.value,
169
+ };
170
+ if (calendarProps.dateFormat !== this.dateFormat) {
171
+ calendarProps.dateFormat = this.dateFormat;
669
172
  }
670
- };
671
- this.calendarTabHandler = (ev) => {
672
- var _a;
673
- let handled = false;
674
- if (!ev.shiftKey &&
675
- (!this.showPickerTodayButton || this.isCurrentMonth()) &&
676
- (!this.showPickerClearButton || ((_a = this.clearButtonEl) === null || _a === void 0 ? void 0 : _a.disabled))) {
677
- this.focusFirstElement();
678
- handled = true;
173
+ if (this.disableFuture) {
174
+ calendarProps.disableFuture = this.disableFuture;
679
175
  }
680
- else if (ev.shiftKey) {
681
- this.yearButtonEl.setFocus();
682
- handled = true;
176
+ if (this.disablePast) {
177
+ calendarProps.disablePast = this.disablePast;
683
178
  }
684
- return handled;
685
- };
686
- this.onDayButtonFocusHandler = () => {
687
- this.dayButtonFocussed = true;
688
- };
689
- this.onDayButtonBlurHandler = () => {
690
- this.dayButtonFocussed = false;
691
- };
692
- this.getNextDayToFocus = (currDay, forward, level = 1) => {
693
- var _a;
694
- const move = forward ? 1 : -1;
695
- const nextDay = new Date(currDay);
696
- nextDay.setDate(nextDay.getDate() + move);
697
- return ((_a = this.disableDays) === null || _a === void 0 ? void 0 : _a.includes(Number(nextDay.getDay())))
698
- ? this.getNextDayToFocus(nextDay, forward, level + 1)
699
- : level;
700
- };
701
- this.moveDays = (numDays) => {
702
- if (this.focussedDate) {
703
- const d = new Date(this.focussedDate);
704
- d.setDate(d.getDate() + numDays);
705
- this.setFocussedDate(d);
179
+ if (this.disableDays && this.disableDays.length > 0) {
180
+ calendarProps.disableDays = this.disableDays;
706
181
  }
707
- };
708
- this.moveMonths = (numMonths) => {
709
- if (this.focussedDate) {
710
- const newMonth = this.focussedDate.getMonth() + numMonths;
711
- const min = new Date(new Date(getMonthStart(this.focussedDate)).setMonth(newMonth));
712
- const max = getMonthEnd(min);
713
- const newDate = new Date(new Date(this.focussedDate).setMonth(newMonth));
714
- this.setFocussedDate(clampDate(newDate, min, max));
715
- if (this.monthPickerVisible === false &&
716
- this.yearPickerVisible === false &&
717
- this.monthInViewUpdateHandled === false) {
718
- this.setAriaLiveRegionText(this.getMonthInViewText());
719
- }
720
- this.monthInViewUpdateHandled = false;
182
+ if (this.max !== null && this.max !== "" && this.maxDate) {
183
+ calendarProps.max = this.maxDate;
721
184
  }
722
- };
723
- this.moveYears = (numYears) => {
724
- if (this.focussedDate) {
725
- const newYear = this.focussedDate.getFullYear() + numYears;
726
- const min = new Date(new Date(getMonthStart(this.focussedDate)).setFullYear(newYear));
727
- const max = getMonthEnd(min);
728
- const newDate = new Date(new Date(this.focussedDate).setFullYear(newYear));
729
- this.setFocussedDate(clampDate(newDate, min, max));
730
- if (this.monthPickerVisible === false &&
731
- this.yearPickerVisible === false &&
732
- this.monthInViewUpdateHandled === false) {
733
- this.setAriaLiveRegionText(this.getMonthInViewText());
734
- }
735
- this.monthInViewUpdateHandled = false;
185
+ if (this.min !== null && this.min !== "" && this.minDate) {
186
+ calendarProps.min = this.minDate;
736
187
  }
737
- };
738
- this.updateFocussedMonth = (adjust) => {
739
- const d = new Date(this.focussedYear, this.focussedMonth, 1);
740
- d.setMonth(this.focussedMonth + adjust);
741
- const newDate = clampDate(d, this.minDate, this.maxDate);
742
- this.focussedMonth = newDate.getMonth();
743
- setTimeout(() => this.focussedMonthEl.setFocus(), FOCUS_TIMER);
744
- };
745
- this.updateFocussedYear = (adjust, focusYear = true) => {
746
- const d = new Date(new Date().setFullYear(this.focussedYear + adjust));
747
- const newDate = clampDate(d, this.minDate, this.maxDate);
748
- this.setFocussedYear(newDate.getFullYear(), focusYear);
749
- };
750
- this.setFocussedDate = (d) => {
751
- this.focussedDate = clampDate(d, this.minDate, this.maxDate);
752
- };
753
- this.setFocussedDayEl = (element) => {
754
- this.focussedDayEl = element;
755
- };
756
- this.setFocussedMonthEl = (element) => {
757
- this.focussedMonthEl = element;
758
- };
759
- this.setFocussedYearEl = (element) => {
760
- this.focussedYearEl = element;
761
- };
762
- this.setFocussedYear = (newYear, focus = true) => {
763
- const prevYear = this.focussedYear;
764
- this.focussedYear = newYear;
765
- if (this.yearPickerVisible) {
766
- const newDecade = Math.floor(newYear / 10) * 10;
767
- const oldDecade = Math.floor(prevYear / 10) * 10;
768
- if (newDecade !== oldDecade) {
769
- this.setDecadeView(newDecade);
770
- this.setAriaLiveRegionText(this.getDecadeInViewText());
771
- }
772
- if (focus) {
773
- setTimeout(() => {
774
- if (this.focussedYearEl !== null)
775
- this.focussedYearEl.setFocus();
776
- }, FOCUS_TIMER);
777
- }
188
+ if (this.disabled) {
189
+ calendarProps.disabled = this.disabled;
778
190
  }
779
- else {
780
- this.setDecadeView(Math.floor(newYear / 10) * 10);
191
+ if (this.size !== "medium") {
192
+ calendarProps.size = this.size;
781
193
  }
194
+ return calendarProps;
782
195
  };
783
196
  this.setDateInputProps = () => {
784
197
  const inputProps = {
@@ -791,7 +204,7 @@ export class DatePicker {
791
204
  emitDatePartChange: this.emitDatePartChange,
792
205
  validationAriaLive: this.validationAriaLive,
793
206
  };
794
- if (this.dateFormat !== DEFAULT_DATE_FORMAT) {
207
+ if (inputProps.dateFormat !== this.dateFormat) {
795
208
  inputProps.dateFormat = this.dateFormat;
796
209
  }
797
210
  if (this.disableFuture) {
@@ -876,15 +289,8 @@ export class DatePicker {
876
289
  this.minDate = createDate(this.min, this.dateFormat);
877
290
  }
878
291
  }
879
- watchStartOfWeekHandler() {
880
- this.orderedDaysOfWeek = this.daysOfWeek
881
- .slice(this.startOfWeek)
882
- .concat(this.daysOfWeek.slice(0, this.startOfWeek));
883
- if (this.calendarOpen) {
884
- this.updateMonthInView();
885
- }
886
- }
887
292
  watchOpenHandler() {
293
+ var _a;
888
294
  if (this.calendarOpen) {
889
295
  if (this.inputEl) {
890
296
  let pickerHeight = PICKER_HEIGHT_DEFAULT;
@@ -903,147 +309,103 @@ export class DatePicker {
903
309
  this.showPickerAbove = false;
904
310
  }
905
311
  }
906
- if (this.selectedDate === null ||
907
- !dateInRange(this.selectedDate, this.minDate, this.maxDate)) {
908
- let openAt = new Date();
909
- if (this.openAtDate !== "") {
910
- openAt = createDate(this.openAtDate, this.dateFormat);
911
- }
912
- this.setFocussedDate(openAt);
913
- }
914
- else {
915
- this.setFocussedDate(this.selectedDate);
916
- }
917
- let dialogDesc = this.getMonthInViewText();
918
- if (this.selectedDate === null) {
919
- dialogDesc += " No date selected.";
920
- }
921
- dialogDesc +=
922
- " Use arrow keys to change day. Press enter or space to select a date or press escape to close the picker";
923
- this.dialogDescription = dialogDesc;
924
- setTimeout(() => this.focusFocussedDay(), FOCUS_TIMER);
312
+ this.setCalendarProps();
925
313
  document.addEventListener("click", this.handleDocumentClick);
926
314
  }
927
315
  else {
928
316
  document.removeEventListener("click", this.handleDocumentClick);
929
- this.monthPickerVisible = false;
930
- this.yearPickerVisible = false;
931
- }
932
- }
933
- watchFocussedDateHandler(current, previous) {
934
- if (previous === null ||
935
- !(previous.getFullYear() === current.getFullYear() &&
936
- previous.getMonth() === current.getMonth())) {
937
- this.updateMonthInView();
938
- }
939
- }
940
- watchMonthInViewHandler() {
941
- this.focussedMonth = this.monthInView;
942
- }
943
- watchYearInViewHandler() {
944
- this.setFocussedYear(this.yearInView, false);
945
- }
946
- watchYearPickerVisibleHandler() {
947
- if (!this.yearPickerVisible) {
948
- this.setFocussedYear(this.yearInView);
949
- }
950
- }
951
- watchMonthPickerVisibleHandler() {
952
- if (!this.monthPickerVisible) {
953
- this.focussedMonth = this.monthInView;
317
+ (_a = this.inputEl) === null || _a === void 0 ? void 0 : _a.setCalendarFocus();
954
318
  }
955
319
  }
956
- watchFocussedDayEl() {
957
- if (this.focusDay) {
958
- setTimeout(() => this.focusFocussedDay(), FOCUS_TIMER);
959
- }
960
- this.focusDay = true;
320
+ disconnectedCallback() {
321
+ var _a;
322
+ (_a = this.hostMutationObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
961
323
  }
962
324
  componentWillLoad() {
963
325
  onComponentRequiredPropUndefined([{ prop: this.label, propName: "label" }], "Date Picker");
964
- this.monthNames = stringEnumToArray(IcDateInputMonths);
965
- this.daysOfWeek = stringEnumToArray(IcShortDayNames);
966
- this.watchStartOfWeekHandler();
967
326
  this.watchMaxHandler();
968
327
  this.watchMinHandler();
969
328
  removeDisabledFalse(this.disabled, this.el);
329
+ this.hostMutationObserver = new MutationObserver((mutationList) => renderDynamicChildSlots(mutationList, ["helper-text"], this));
330
+ this.hostMutationObserver.observe(this.el, {
331
+ childList: true,
332
+ });
970
333
  }
971
334
  componentWillRender() {
972
335
  this.dateInputProps = this.setDateInputProps();
336
+ this.calendarProps = this.setCalendarProps();
973
337
  }
974
338
  componentWillUpdate() {
975
339
  this.dateInputProps = this.setDateInputProps();
340
+ this.calendarProps = this.setCalendarProps();
976
341
  }
977
- localCalendarButtonClickHandler(ev) {
342
+ localCalendarButtonClickHandler() {
978
343
  this.myCalendarButtonClicked = true;
979
344
  if (!this.calendarOpen) {
980
- this.setSelectedDate(ev.detail.value, false);
345
+ this.calendarProps = this.setCalendarProps();
981
346
  }
982
347
  this.calendarOpen = !this.calendarOpen;
983
348
  }
984
349
  calendarButtonClickHandler() {
985
- //closes this picker if calendar button in another clicked
350
+ // closes this picker if calendar button in another clicked
986
351
  if (!this.myCalendarButtonClicked) {
987
352
  this.calendarOpen = false;
988
353
  }
989
354
  this.myCalendarButtonClicked = false;
990
355
  }
991
- render() {
992
- const { calendarOpen, dateInputProps, monthNames, size, focussedMonth, focussedYear, monthInView, yearInView, monthPickerVisible, yearPickerVisible, orderedDaysOfWeek, decadeView, minDate, maxDate, showPickerClearButton, showPickerTodayButton, dialogDescription, theme, } = this;
993
- let monthButtonText = "";
994
- if (monthPickerVisible) {
995
- monthButtonText = `Use the arrow keys to change the selected month. To return to day picker view, press Enter or Space to select a month, or press Escape.`;
996
- }
997
- else {
998
- monthButtonText = `Press Enter or Space to open month picker view or use the arrow keys to change month.`;
999
- }
1000
- let yearButtonText = "";
1001
- if (yearPickerVisible) {
1002
- yearButtonText = `Use the arrow keys to change the selected year. To return to day picker view, press Enter or Space to select a year, or press Escape.`;
1003
- }
1004
- else {
1005
- yearButtonText = `Press Enter or Space to open year picker view or use the arrow keys to change the selected year.`;
356
+ handleCalendarDaySelect() {
357
+ this.calendarOpen = false;
358
+ }
359
+ dateChangeHandler(ev) {
360
+ var _a;
361
+ if (this.selectedDate !== ((_a = ev.detail) === null || _a === void 0 ? void 0 : _a.value)) {
362
+ const path = ev.composedPath();
363
+ const sourceElement = path[0];
364
+ if (sourceElement === this.el)
365
+ return;
366
+ const newValue = ev.detail.value;
367
+ if (sourceElement.tagName === "IC-CALENDAR") {
368
+ if (newValue === null || !dateMatches(newValue, this.selectedDate)) {
369
+ let UTCDate = null;
370
+ if (newValue !== null) {
371
+ UTCDate = new Date(Date.UTC(newValue.getFullYear(), newValue.getMonth(), newValue.getDate()));
372
+ }
373
+ this.updateDate(newValue, UTCDate);
374
+ }
375
+ }
376
+ else if (sourceElement.tagName === "IC-DATE-INPUT" &&
377
+ (newValue === null || !dateMatches(newValue, this.selectedDate))) {
378
+ this.updateDate(newValue, ev.detail.utcValue, false, ev.detail.dateObject);
379
+ this.openAtDate = newValue;
380
+ }
1006
381
  }
1007
- const dialogLabel = "choose date";
1008
- const monthLabel = monthNames && monthNames[monthInView]
1009
- ? monthNames[monthInView]
1010
- : "Open month picker";
1011
- const yearLabel = this.yearInView ? this.yearInView : "Open year picker";
1012
- let minDay = minDate;
1013
- if (minDate && this.disablePast) {
1014
- const yesterday = new Date(minDate);
1015
- yesterday.setDate(minDate.getDate() - 1);
1016
- minDay = yesterday;
382
+ }
383
+ updateDate(newValue, newUTCValue, emit = true, newDateObject) {
384
+ var _a;
385
+ if (!dateMatches(newValue, this.selectedDate)) {
386
+ this.selectedDate = newValue;
387
+ this.value = newValue;
388
+ if (emit) {
389
+ (_a = this.inputEl) === null || _a === void 0 ? void 0 : _a.triggerIcChange(newValue);
390
+ const eventDetail = {
391
+ value: newValue,
392
+ utcValue: newUTCValue,
393
+ };
394
+ if (newDateObject) {
395
+ eventDetail.dateObject = newDateObject;
396
+ }
397
+ }
1017
398
  }
1018
- return (h(Host, { key: 'e570b8174d8e85ebe88381088d155dfc79eb66a4', onKeyDown: this.keyDownHandler, class: {
399
+ }
400
+ render() {
401
+ const { calendarOpen, calendarProps, dateInputProps, size, theme } = this;
402
+ return (h(Host, { key: 'f39748a07c611c9d1ea3d6f94a5193d239b851f4', onKeyDown: this.keyDownHandler, class: {
1019
403
  [`ic-date-picker-${size}`]: true,
1020
404
  [`ic-theme-${theme}`]: theme !== "inherit",
1021
- } }, h("div", { key: '746911155d83526a80676f2a6bb76f48d0c5e9f1', class: "date-input-container" }, h("ic-date-input", Object.assign({ key: 'd5c01484b4db9760040ec20d96c73dedc2f3562f', ref: (el) => (this.inputEl = el) }, dateInputProps), h("slot", { key: '4af2a51669b6b9b8e05683e3b91fca8a807eee48', name: "helper-text", slot: "helper-text" }))), calendarOpen && (h("div", { key: 'd1fa8a019c53499d5de2726a062638016d6dd750' }, h("span", { key: '034465a0f1a144899243c8642f3b6f8bb2d3be7f', id: "dialog-description", class: "sr-only" }, dialogDescription), h("div", { key: '0d8ae853e60cbf42fce8394b2944722958516c31', role: "dialog", "aria-modal": "true", "aria-label": dialogLabel, "aria-describedBy": "dialog-description", class: {
1022
- "calendar-container": true,
1023
- above: this.showPickerAbove,
1024
- }, onMouseDown: this.handleCalendarMouseDown, onClick: this.handleCalendarClick }, h("span", { key: '67b58c1c2a95cd0602e6e78b4b7c92665d9fa450', ref: (el) => (this.liveRegionEl = el), id: "live-region", "aria-live": "assertive", class: "sr-only" }), h("div", { key: '90d97f9401bb8871dc53d6141240bf5cdd7a6e37', class: {
1025
- "month-year-nav-container": true,
1026
- } }, h("div", { key: '1844f84afbad819901ff52c9467df271d3dfa1e7', class: "month-year-nav" }, this.previousMonthButton(), h("span", { key: '6773a9e063b3f2b743ed61e84439a512536764dd', id: "select-month-hint", "aria-hidden": "true" }, monthButtonText), h("ic-button", { key: '7a7aff0e3d54d572556d8cd971defc2c9f79d92e', ref: (el) => (this.monthButtonEl = el), size: size, class: "month-picker-button", "aria-haspopup": "menu", "aria-expanded": monthPickerVisible ? "true" : "false", "full-width": "true", variant: "tertiary", "aria-label": monthLabel, "aria-describedby": "select-month-hint", onKeyDown: this.monthButtonKeyDownHandler, onClick: this.monthButtonClickHandler }, monthNames[monthInView]), this.nextMonthButton()), h("div", { key: '50133dc47a4e8e2c3e4e1d5373a92b2d7112d5ba', class: "month-year-nav" }, this.previousYearButton(), h("span", { key: 'ed7777002bb64ea4fbd3e0e16783061ccfcceb93', id: "select-year-hint", "aria-hidden": "true" }, yearButtonText), h("ic-button", { key: '9a81be66d4a62f506838f68020c6dd0192ff4ba3', ref: (el) => (this.yearButtonEl = el), size: size, class: "year-picker-button", "aria-haspopup": "menu", "aria-expanded": yearPickerVisible ? "true" : "false", "full-width": "true", variant: "tertiary", "aria-label": yearLabel, "aria-describedby": "select-year-hint", onKeyDown: this.yearButtonKeyDownHandler, onClick: this.yearButtonClickHandler }, this.yearInView), this.nextYearButton())), !(monthPickerVisible || yearPickerVisible) && (h("div", { key: '2e6a4395860e1d44aee979b0a7e0a5aa9a09ac39', class: {
1027
- calendar: true,
1028
- hidden: monthPickerVisible || yearPickerVisible,
1029
- }, onKeyDown: this.handleCalendarKeyDown }, h("div", { key: '743dffc1a5fbb1a40456e47be2dce866d991f19d', class: "weekdays", "aria-hidden": "true" }, orderedDaysOfWeek.map((dayName) => {
1030
- const header = size === "small" ? dayName.charAt(0) : dayName;
1031
- return (h("div", { class: "calendar-day-header" }, h("ic-typography", { variant: "caption" }, header)));
1032
- })), h("div", { key: '30a8310c3ee80c9c0a85fff417c13fb7961a958c', class: "calendar-days-container" }, this.currMonthView.map((day) => {
1033
- var _a;
1034
- return (h(DayButton, { day: day, disableDay: (_a = this.disableDays) === null || _a === void 0 ? void 0 : _a.includes(Number(day.getDay())), today: dateMatches(day, this.today), selected: dateMatches(day, this.selectedDate), focussed: dateMatches(day, this.focussedDate), inRange: dateInRange(day, minDay, maxDate), monthInView: monthInView, onSelectDay: this.handleSelectDay, focussedDayRef: this.setFocussedDayEl, onFocusDay: this.onDayButtonFocusHandler, onBlurDay: this.onDayButtonBlurHandler, showDaysOutsideMonth: this.showDaysOutsideMonth }));
1035
- })))), h("div", { key: '202e8edaafb640264c52f2c2254de4124d0f03f7', class: {
1036
- "month-picker-container": true,
1037
- hidden: !monthPickerVisible,
1038
- } }, monthPickerVisible && (h(MonthPicker, { key: '3680653a0f840b509cfab1079e12590f037c5b1f', size: size, onSelectMonth: this.handleSelectMonth, monthInView: monthInView, focussedMonth: focussedMonth, onKeyDown: this.monthPickerKeyDownHandler, focussedMonthRef: this.setFocussedMonthEl, minDate: minDate, maxDate: maxDate, yearInView: yearInView }))), h("div", { key: '2e52f56752747794514a81b4bbe13e6bd7810680', class: {
1039
- "year-picker-container": true,
1040
- hidden: !yearPickerVisible,
1041
- } }, yearPickerVisible && (h(YearPicker, { key: 'dbcf70511028f9be36dd859db8e0e7549f183ad9', decadeView: decadeView, size: size, focussedYear: focussedYear, onSelectYear: this.handleSelectYear, onKeyDown: this.yearPickerKeyDownHandler, onFocusYear: this.onYearButtonFocusHandler, onBlurYear: this.onYearButtonBlurHandler, yearInView: yearInView, minDate: minDate, maxDate: maxDate, focussedYearRef: this.setFocussedYearEl }))), h("div", { key: '7d658ffc586f119f8ca3e6d2fc3cf244a5c72dee', class: {
1042
- "bottom-buttons": true,
1043
- "no-today": !showPickerTodayButton,
1044
- } }, showPickerTodayButton && (h("ic-button", { key: '0e97ccab194a021105ddec5b9e6bdd20681e2390', id: "today-button", variant: "tertiary", ref: (el) => (this.todayButtonEl = el), size: size, "aria-label": "Navigate to current date", onClick: this.todayButtonClickHandler, onKeyDown: this.todayButtonKeyDownHandler, disabled: this.isCurrentMonth() }, "Go to today")), showPickerClearButton && (h("ic-button", { key: 'c3d24232ba991e18247ed07f14e519a8d17a8f19', id: "clear-button", "aria-label": "clear selected date", ref: (el) => (this.clearButtonEl = el), variant: "tertiary", size: size, onClick: this.clearButtonClickHandler, onKeyDown: this.clearButtonKeyDownHandler, disabled: this.value === "" ||
1045
- this.value === null ||
1046
- this.value === undefined }, "Clear"))))))));
405
+ } }, h("div", { key: '1ce56e7010a9ee2ec308d74edcd04b3494281082', class: "date-input-container" }, h("ic-date-input", Object.assign({ key: '2cbbd3d3bad44a857e262d8c44c4ad8305b323b6', ref: (el) => (this.inputEl = el) }, dateInputProps), h("slot", { key: '38206ce726393bc2466a2632ebf4e9f1028c5eed', name: "helper-text", slot: "helper-text" }))), calendarOpen && (h("ic-calendar", Object.assign({ key: 'ba6b5a006cb06f2b3346f2ba52044c6f5c4aeeac', class: {
406
+ ["ic-date-picker-above"]: this.showPickerAbove,
407
+ ["ic-date-picker-calendar"]: true,
408
+ }, ref: (el) => (this.calendarEl = el) }, calendarProps)))));
1047
409
  }
1048
410
  static get is() { return "ic-date-picker"; }
1049
411
  static get encapsulation() { return "shadow"; }
@@ -1106,26 +468,6 @@ export class DatePicker {
1106
468
  "reflect": false,
1107
469
  "defaultValue": "false"
1108
470
  },
1109
- "emitDatePartChange": {
1110
- "type": "boolean",
1111
- "mutable": false,
1112
- "complexType": {
1113
- "original": "boolean",
1114
- "resolved": "boolean | undefined",
1115
- "references": {}
1116
- },
1117
- "required": false,
1118
- "optional": true,
1119
- "docs": {
1120
- "tags": [],
1121
- "text": "If `true`, every individual input field completed will emit an icChange event."
1122
- },
1123
- "getter": false,
1124
- "setter": false,
1125
- "attribute": "emit-date-part-change",
1126
- "reflect": false,
1127
- "defaultValue": "false"
1128
- },
1129
471
  "disableDays": {
1130
472
  "type": "unknown",
1131
473
  "mutable": false,
@@ -1250,6 +592,26 @@ export class DatePicker {
1250
592
  "reflect": false,
1251
593
  "defaultValue": "\"Dates in the past are not allowed. Please select a date in the future.\""
1252
594
  },
595
+ "emitDatePartChange": {
596
+ "type": "boolean",
597
+ "mutable": false,
598
+ "complexType": {
599
+ "original": "boolean",
600
+ "resolved": "boolean | undefined",
601
+ "references": {}
602
+ },
603
+ "required": false,
604
+ "optional": true,
605
+ "docs": {
606
+ "tags": [],
607
+ "text": "If `true`, every individual input field completed will emit an icChange event."
608
+ },
609
+ "getter": false,
610
+ "setter": false,
611
+ "attribute": "emit-date-part-change",
612
+ "reflect": false,
613
+ "defaultValue": "false"
614
+ },
1253
615
  "helperText": {
1254
616
  "type": "string",
1255
617
  "mutable": false,
@@ -1715,12 +1077,13 @@ export class DatePicker {
1715
1077
  "type": "string",
1716
1078
  "mutable": true,
1717
1079
  "complexType": {
1718
- "original": "string | Date | null | undefined",
1080
+ "original": "IcDateValueFormat",
1719
1081
  "resolved": "Date | null | string | undefined",
1720
1082
  "references": {
1721
- "Date": {
1722
- "location": "global",
1723
- "id": "global::Date"
1083
+ "IcDateValueFormat": {
1084
+ "location": "import",
1085
+ "path": "../../utils/types",
1086
+ "id": "src/utils/types.ts::IcDateValueFormat"
1724
1087
  }
1725
1088
  }
1726
1089
  },
@@ -1741,23 +1104,12 @@ export class DatePicker {
1741
1104
  static get states() {
1742
1105
  return {
1743
1106
  "calendarOpen": {},
1744
- "currMonthView": {},
1745
- "currYearPickerView": {},
1746
- "decadeView": {},
1747
- "focussedDate": {},
1748
- "focussedDay": {},
1749
- "focussedDayEl": {},
1750
- "focussedMonth": {},
1751
- "focussedMonthEl": {},
1752
- "focussedYear": {},
1753
1107
  "maxDate": {},
1754
1108
  "minDate": {},
1755
1109
  "monthInView": {},
1756
1110
  "monthPickerVisible": {},
1757
1111
  "orderedDaysOfWeek": {},
1758
- "selectedDate": {},
1759
- "yearInView": {},
1760
- "yearPickerVisible": {}
1112
+ "selectedDate": {}
1761
1113
  };
1762
1114
  }
1763
1115
  static get events() {
@@ -1772,8 +1124,8 @@ export class DatePicker {
1772
1124
  "text": "Emitted when the value has changed."
1773
1125
  },
1774
1126
  "complexType": {
1775
- "original": "{ value: Date }",
1776
- "resolved": "{ value: Date; }",
1127
+ "original": "{\n value: Date | null;\n dateObject?: {\n day: string | null;\n month: string | null;\n year: string | null;\n };\n utcValue: Date | null;\n }",
1128
+ "resolved": "{ value: Date | null; dateObject?: { day: string | null; month: string | null; year: string | null; } | undefined; utcValue: Date | null; }",
1777
1129
  "references": {
1778
1130
  "Date": {
1779
1131
  "location": "global",
@@ -1800,30 +1152,9 @@ export class DatePicker {
1800
1152
  }, {
1801
1153
  "propName": "min",
1802
1154
  "methodName": "watchMinHandler"
1803
- }, {
1804
- "propName": "startOfWeek",
1805
- "methodName": "watchStartOfWeekHandler"
1806
1155
  }, {
1807
1156
  "propName": "calendarOpen",
1808
1157
  "methodName": "watchOpenHandler"
1809
- }, {
1810
- "propName": "focussedDate",
1811
- "methodName": "watchFocussedDateHandler"
1812
- }, {
1813
- "propName": "monthInView",
1814
- "methodName": "watchMonthInViewHandler"
1815
- }, {
1816
- "propName": "yearInView",
1817
- "methodName": "watchYearInViewHandler"
1818
- }, {
1819
- "propName": "yearPickerVisible",
1820
- "methodName": "watchYearPickerVisibleHandler"
1821
- }, {
1822
- "propName": "monthPickerVisible",
1823
- "methodName": "watchMonthPickerVisibleHandler"
1824
- }, {
1825
- "propName": "focussedDayEl",
1826
- "methodName": "watchFocussedDayEl"
1827
1158
  }];
1828
1159
  }
1829
1160
  static get listeners() {
@@ -1839,6 +1170,18 @@ export class DatePicker {
1839
1170
  "target": "document",
1840
1171
  "capture": false,
1841
1172
  "passive": false
1173
+ }, {
1174
+ "name": "icCalendarDaySelect",
1175
+ "method": "handleCalendarDaySelect",
1176
+ "target": undefined,
1177
+ "capture": false,
1178
+ "passive": false
1179
+ }, {
1180
+ "name": "icChange",
1181
+ "method": "dateChangeHandler",
1182
+ "target": undefined,
1183
+ "capture": false,
1184
+ "passive": false
1842
1185
  }];
1843
1186
  }
1844
1187
  }