@ukic/canary-web-components 2.0.0-canary.8 → 2.0.0-canary.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (371) hide show
  1. package/dist/cjs/core.cjs.js +1 -1
  2. package/dist/cjs/date-helpers-c9551119.js +150 -0
  3. package/dist/cjs/date-helpers-c9551119.js.map +1 -0
  4. package/dist/cjs/{helpers-b525d45a.js → helpers-7a069459.js} +7 -2
  5. package/dist/cjs/helpers-7a069459.js.map +1 -0
  6. package/dist/cjs/{helpers-93c5fc92.js → helpers-f75cf7cf.js} +94 -12
  7. package/dist/cjs/helpers-f75cf7cf.js.map +1 -0
  8. package/dist/cjs/ic-accordion.cjs.entry.js +1 -1
  9. package/dist/cjs/ic-alert.cjs.entry.js +1 -1
  10. package/dist/cjs/ic-back-to-top.cjs.entry.js +1 -1
  11. package/dist/cjs/ic-badge.cjs.entry.js +1 -1
  12. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js +1 -1
  13. package/dist/cjs/ic-breadcrumb.cjs.entry.js +1 -1
  14. package/dist/cjs/ic-button_3.cjs.entry.js +8 -2
  15. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  16. package/dist/cjs/ic-card.cjs.entry.js +1 -1
  17. package/dist/cjs/ic-checkbox-group.cjs.entry.js +1 -1
  18. package/dist/cjs/ic-checkbox.cjs.entry.js +1 -1
  19. package/dist/cjs/ic-chip.cjs.entry.js +1 -1
  20. package/dist/cjs/ic-data-row.cjs.entry.js +1 -1
  21. package/dist/cjs/ic-date-input.cjs.entry.js +1073 -0
  22. package/dist/cjs/ic-date-input.cjs.entry.js.map +1 -0
  23. package/dist/cjs/ic-date-picker.cjs.entry.js +1043 -0
  24. package/dist/cjs/ic-date-picker.cjs.entry.js.map +1 -0
  25. package/dist/cjs/ic-dialog.cjs.entry.js +1 -1
  26. package/dist/cjs/ic-divider.cjs.entry.js +1 -1
  27. package/dist/cjs/ic-empty-state.cjs.entry.js +1 -1
  28. package/dist/cjs/ic-footer-link-group.cjs.entry.js +1 -1
  29. package/dist/cjs/ic-footer-link.cjs.entry.js +1 -1
  30. package/dist/cjs/ic-footer.cjs.entry.js +1 -1
  31. package/dist/cjs/ic-hero.cjs.entry.js +1 -1
  32. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +1 -1
  33. package/dist/cjs/ic-input-component-container_4.cjs.entry.js +150 -0
  34. package/dist/cjs/ic-input-component-container_4.cjs.entry.js.map +1 -0
  35. package/dist/cjs/ic-link.cjs.entry.js +1 -1
  36. package/dist/cjs/ic-menu-group.cjs.entry.js +1 -1
  37. package/dist/cjs/ic-menu-item.cjs.entry.js +1 -1
  38. package/dist/cjs/ic-menu-with-multi.cjs.entry.js +1 -1
  39. package/dist/cjs/ic-menu-with-multi.cjs.entry.js.map +1 -1
  40. package/dist/cjs/{ic-input-component-container_3.cjs.entry.js → ic-menu.cjs.entry.js} +3 -67
  41. package/dist/cjs/ic-menu.cjs.entry.js.map +1 -0
  42. package/dist/cjs/ic-navigation-button.cjs.entry.js +1 -1
  43. package/dist/cjs/ic-navigation-group.cjs.entry.js +1 -1
  44. package/dist/cjs/ic-navigation-item.cjs.entry.js +1 -1
  45. package/dist/cjs/ic-navigation-menu.cjs.entry.js +1 -1
  46. package/dist/cjs/ic-page-header.cjs.entry.js +1 -1
  47. package/dist/cjs/ic-pagination-bar.cjs.entry.js +1 -1
  48. package/dist/cjs/ic-pagination_4.cjs.entry.js +1 -1
  49. package/dist/cjs/ic-popover-menu.cjs.entry.js +1 -1
  50. package/dist/cjs/ic-radio-group.cjs.entry.js +1 -1
  51. package/dist/cjs/ic-radio-option.cjs.entry.js +1 -1
  52. package/dist/cjs/ic-search-bar.cjs.entry.js +1 -1
  53. package/dist/cjs/ic-select-with-multi.cjs.entry.js +6 -19
  54. package/dist/cjs/ic-select-with-multi.cjs.entry.js.map +1 -1
  55. package/dist/cjs/ic-side-navigation.cjs.entry.js +1 -1
  56. package/dist/cjs/ic-status-tag.cjs.entry.js +1 -1
  57. package/dist/cjs/ic-step.cjs.entry.js +1 -1
  58. package/dist/cjs/ic-stepper.cjs.entry.js +1 -1
  59. package/dist/cjs/ic-switch.cjs.entry.js +1 -1
  60. package/dist/cjs/ic-tab-group.cjs.entry.js +1 -1
  61. package/dist/cjs/ic-tab-panel.cjs.entry.js +1 -1
  62. package/dist/cjs/ic-tab.cjs.entry.js +1 -1
  63. package/dist/cjs/ic-theme.cjs.entry.js +1 -1
  64. package/dist/cjs/ic-toast.cjs.entry.js +1 -1
  65. package/dist/cjs/ic-toggle-button.cjs.entry.js +1 -1
  66. package/dist/cjs/ic-top-navigation.cjs.entry.js +1 -1
  67. package/dist/cjs/ic-typography.cjs.entry.js +1 -1
  68. package/dist/cjs/index-4cf27b16.js +12 -4
  69. package/dist/cjs/loader.cjs.js +1 -1
  70. package/dist/collection/assets/calendar.svg +3 -0
  71. package/dist/collection/collection-manifest.json +2 -0
  72. package/dist/collection/components/ic-date-input/ic-date-input.css +560 -0
  73. package/dist/collection/components/ic-date-input/ic-date-input.js +1668 -0
  74. package/dist/collection/components/ic-date-input/ic-date-input.js.map +1 -0
  75. package/dist/collection/components/ic-date-input/story-data.js +28 -0
  76. package/dist/collection/components/ic-date-input/story-data.js.map +1 -0
  77. package/dist/collection/components/ic-date-input/test/basic/ic-date-input.spec.js +1156 -0
  78. package/dist/collection/components/ic-date-input/test/basic/ic-date-input.spec.js.map +1 -0
  79. package/dist/collection/components/ic-date-input/test/helpers/ic-date-input.js +42 -0
  80. package/dist/collection/components/ic-date-input/test/helpers/ic-date-input.js.map +1 -0
  81. package/dist/collection/components/ic-date-picker/ic-date-picker.css +878 -0
  82. package/dist/collection/components/ic-date-picker/ic-date-picker.js +1499 -0
  83. package/dist/collection/components/ic-date-picker/ic-date-picker.js.map +1 -0
  84. package/dist/collection/components/ic-date-picker/ic-day-button.js +36 -0
  85. package/dist/collection/components/ic-date-picker/ic-day-button.js.map +1 -0
  86. package/dist/collection/components/ic-date-picker/ic-month-picker.js +29 -0
  87. package/dist/collection/components/ic-date-picker/ic-month-picker.js.map +1 -0
  88. package/dist/collection/components/ic-date-picker/ic-year-picker.js +39 -0
  89. package/dist/collection/components/ic-date-picker/ic-year-picker.js.map +1 -0
  90. package/dist/collection/components/ic-date-picker/story-data.js +143 -0
  91. package/dist/collection/components/ic-date-picker/story-data.js.map +1 -0
  92. package/dist/collection/components/ic-date-picker/test/a11y/ic-date-picker.test.a11y.js +13 -0
  93. package/dist/collection/components/ic-date-picker/test/a11y/ic-date-picker.test.a11y.js.map +1 -0
  94. package/dist/collection/components/ic-date-picker/test/basic/ic-date-picker-utils.spec.js +207 -0
  95. package/dist/collection/components/ic-date-picker/test/basic/ic-date-picker-utils.spec.js.map +1 -0
  96. package/dist/collection/components/ic-date-picker/test/basic/ic-date-picker.spec.js +962 -0
  97. package/dist/collection/components/ic-date-picker/test/basic/ic-date-picker.spec.js.map +1 -0
  98. package/dist/collection/components/ic-menu-with-multi/ic-menu.js +2 -2
  99. package/dist/collection/components/ic-menu-with-multi/ic-menu.js.map +1 -1
  100. package/dist/collection/components/ic-select-with-multi/ic-select.js +2 -2
  101. package/dist/collection/components/ic-select-with-multi/ic-select.js.map +1 -1
  102. package/dist/collection/utils/constants.js +55 -0
  103. package/dist/collection/utils/constants.js.map +1 -1
  104. package/dist/collection/utils/date-helpers.js +133 -0
  105. package/dist/collection/utils/date-helpers.js.map +1 -0
  106. package/dist/collection/utils/helpers.js +259 -10
  107. package/dist/collection/utils/helpers.js.map +1 -1
  108. package/dist/collection/utils/types.js +45 -0
  109. package/dist/collection/utils/types.js.map +1 -1
  110. package/dist/components/helpers.js +7 -2
  111. package/dist/components/helpers.js.map +1 -1
  112. package/dist/components/helpers2.js +91 -12
  113. package/dist/components/helpers2.js.map +1 -1
  114. package/dist/components/ic-button2.js +11 -3
  115. package/dist/components/ic-button2.js.map +1 -1
  116. package/dist/components/ic-card.js +1 -1
  117. package/dist/components/ic-checkbox-group.js +1 -1
  118. package/dist/components/ic-checkbox.js +1 -1
  119. package/dist/components/ic-chip.js +1 -1
  120. package/dist/components/ic-date-input.d.ts +11 -0
  121. package/dist/components/ic-date-input.js +8 -0
  122. package/dist/components/ic-date-input.js.map +1 -0
  123. package/dist/components/ic-date-input2.js +1301 -0
  124. package/dist/components/ic-date-input2.js.map +1 -0
  125. package/dist/components/ic-date-picker.d.ts +11 -0
  126. package/dist/components/ic-date-picker.js +1164 -0
  127. package/dist/components/ic-date-picker.js.map +1 -0
  128. package/dist/components/ic-input-component-container2.js +1 -1
  129. package/dist/components/ic-input-component-container2.js.map +1 -1
  130. package/dist/components/ic-link2.js +1 -1
  131. package/dist/components/ic-menu-item2.js +1 -1
  132. package/dist/components/ic-menu3.js +1 -1
  133. package/dist/components/ic-menu3.js.map +1 -1
  134. package/dist/components/ic-navigation-button.js +1 -1
  135. package/dist/components/ic-pagination-item2.js +1 -1
  136. package/dist/components/ic-pagination2.js +1 -1
  137. package/dist/components/ic-radio-group.js +1 -1
  138. package/dist/components/ic-radio-option.js +1 -1
  139. package/dist/components/ic-search-bar.js +1 -1
  140. package/dist/components/ic-select-with-multi.js +1 -14
  141. package/dist/components/ic-select-with-multi.js.map +1 -1
  142. package/dist/components/ic-select2.js +1 -1
  143. package/dist/components/ic-switch.js +1 -1
  144. package/dist/components/ic-tab.js +1 -1
  145. package/dist/components/ic-text-field2.js +1 -1
  146. package/dist/components/ic-toggle-button.js +1 -1
  147. package/dist/core/core.css +1 -1
  148. package/dist/core/core.esm.js +1 -1
  149. package/dist/core/core.esm.js.map +1 -1
  150. package/dist/core/{p-8b08d8fe.entry.js → p-06ae5bec.entry.js} +2 -2
  151. package/dist/core/{p-f843da01.entry.js → p-0939ce92.entry.js} +2 -2
  152. package/dist/core/{p-e0462b23.entry.js → p-16f67397.entry.js} +2 -2
  153. package/dist/core/{p-db9c03c0.entry.js → p-1832f4b5.entry.js} +2 -2
  154. package/dist/core/{p-ab09986c.entry.js → p-1b7d426b.entry.js} +2 -2
  155. package/dist/core/{p-5e0c830b.entry.js → p-1ce75941.entry.js} +2 -2
  156. package/dist/core/{p-1ca332ca.entry.js → p-2e2e0099.entry.js} +2 -2
  157. package/dist/core/p-33679c06.entry.js +2 -0
  158. package/dist/core/p-33679c06.entry.js.map +1 -0
  159. package/dist/core/{p-4753bac8.entry.js → p-36508aad.entry.js} +2 -2
  160. package/dist/core/{p-10fb4c46.entry.js → p-3745da83.entry.js} +2 -2
  161. package/dist/core/{p-3803a5b5.entry.js → p-3f2e77c3.entry.js} +2 -2
  162. package/dist/core/{p-88d54b72.entry.js → p-47ac6838.entry.js} +2 -2
  163. package/dist/core/{p-4baa0916.entry.js → p-4f1ffa39.entry.js} +2 -2
  164. package/dist/core/{p-f7a14c01.entry.js → p-5759d771.entry.js} +2 -2
  165. package/dist/core/{p-6c3044b6.entry.js → p-5e2e6c3b.entry.js} +2 -2
  166. package/dist/core/{p-2eac7dcc.entry.js → p-5fe96107.entry.js} +2 -2
  167. package/dist/core/{p-b82dcc29.entry.js → p-62e22508.entry.js} +2 -2
  168. package/dist/core/{p-75dac3d1.entry.js → p-6690bc04.entry.js} +2 -2
  169. package/dist/core/{p-c125b65a.entry.js → p-6c0e2ceb.entry.js} +2 -2
  170. package/dist/core/{p-a0f8efb2.entry.js → p-76d26018.entry.js} +2 -2
  171. package/dist/core/{p-4f413fc0.entry.js → p-776671cf.entry.js} +2 -2
  172. package/dist/core/{p-5ae93c16.entry.js → p-7cecf5d5.entry.js} +2 -2
  173. package/dist/core/{p-7ef8d616.entry.js → p-85609bdd.entry.js} +2 -2
  174. package/dist/core/{p-a43c12cd.entry.js → p-86012178.entry.js} +2 -2
  175. package/dist/core/{p-942282cd.entry.js → p-8a7e7d23.entry.js} +2 -2
  176. package/dist/core/{p-a50c3b9e.entry.js → p-8c90110a.entry.js} +2 -2
  177. package/dist/core/{p-045359e1.entry.js → p-8ea47d42.entry.js} +2 -2
  178. package/dist/core/{p-e834344e.entry.js → p-982a6e88.entry.js} +2 -2
  179. package/dist/core/{p-d8469ac0.entry.js → p-98448bdb.entry.js} +2 -2
  180. package/dist/core/{p-6933f8e9.entry.js → p-9d01a7ad.entry.js} +2 -2
  181. package/dist/core/{p-595be57d.entry.js → p-9d540656.entry.js} +2 -2
  182. package/dist/core/{p-fde45b29.entry.js → p-9e3178e8.entry.js} +2 -2
  183. package/dist/core/{p-fde45b29.entry.js.map → p-9e3178e8.entry.js.map} +1 -1
  184. package/dist/core/{p-81ddc39d.entry.js → p-a0f9b259.entry.js} +2 -2
  185. package/dist/core/{p-a31031a5.entry.js → p-a42c2f37.entry.js} +2 -2
  186. package/dist/core/{p-869954a2.entry.js → p-a6447b13.entry.js} +2 -2
  187. package/dist/core/p-aabab75f.entry.js +2 -0
  188. package/dist/core/p-aabab75f.entry.js.map +1 -0
  189. package/dist/core/{p-e3997d60.entry.js → p-ae422058.entry.js} +2 -2
  190. package/dist/core/{p-a434c3d4.entry.js → p-b306cbc8.entry.js} +2 -2
  191. package/dist/core/{p-ac4e40a7.entry.js → p-c7590421.entry.js} +2 -2
  192. package/dist/core/{p-f3c840cd.entry.js → p-c7820c23.entry.js} +2 -2
  193. package/dist/core/{p-917c5721.entry.js → p-ca8cbd6a.entry.js} +2 -2
  194. package/dist/core/{p-73be1251.entry.js → p-caf857de.entry.js} +2 -2
  195. package/dist/core/p-cc7bc438.entry.js +2 -0
  196. package/dist/core/p-cc7bc438.entry.js.map +1 -0
  197. package/dist/core/p-cd799087.js +2 -0
  198. package/dist/core/p-cd799087.js.map +1 -0
  199. package/dist/core/p-d32692e2.entry.js +2 -0
  200. package/dist/core/p-d32692e2.entry.js.map +1 -0
  201. package/dist/core/p-d35c7c18.js +2 -0
  202. package/dist/core/p-d35c7c18.js.map +1 -0
  203. package/dist/core/{p-c34848da.entry.js → p-d3856ed3.entry.js} +2 -2
  204. package/dist/core/{p-204ace96.entry.js → p-d4fdd8c1.entry.js} +2 -2
  205. package/dist/core/{p-ba86928c.entry.js → p-d5c99ec3.entry.js} +2 -2
  206. package/dist/core/p-e473bbf8.entry.js +2 -0
  207. package/dist/core/p-e473bbf8.entry.js.map +1 -0
  208. package/dist/core/{p-624d4f5f.entry.js → p-e74f1d09.entry.js} +2 -2
  209. package/dist/core/{p-fc5611e2.entry.js → p-e84b0310.entry.js} +2 -2
  210. package/dist/core/p-f55ad6ae.entry.js +2 -0
  211. package/dist/core/{p-f14454b1.entry.js.map → p-f55ad6ae.entry.js.map} +1 -1
  212. package/dist/core/p-f8cf2978.js +2 -0
  213. package/dist/core/p-f8cf2978.js.map +1 -0
  214. package/dist/core/p-f91527a0.entry.js +2 -0
  215. package/dist/core/p-f91527a0.entry.js.map +1 -0
  216. package/dist/core/{p-169bfa51.entry.js → p-fbf4e9b7.entry.js} +2 -2
  217. package/dist/esm/core.js +1 -1
  218. package/dist/esm/date-helpers-4f432e92.js +136 -0
  219. package/dist/esm/date-helpers-4f432e92.js.map +1 -0
  220. package/dist/esm/{helpers-12b4266a.js → helpers-7aa21b0a.js} +7 -2
  221. package/dist/esm/helpers-7aa21b0a.js.map +1 -0
  222. package/dist/esm/{helpers-5271897c.js → helpers-f328a7b6.js} +92 -13
  223. package/dist/esm/helpers-f328a7b6.js.map +1 -0
  224. package/dist/esm/ic-accordion.entry.js +1 -1
  225. package/dist/esm/ic-alert.entry.js +1 -1
  226. package/dist/esm/ic-back-to-top.entry.js +1 -1
  227. package/dist/esm/ic-badge.entry.js +1 -1
  228. package/dist/esm/ic-breadcrumb-group.entry.js +1 -1
  229. package/dist/esm/ic-breadcrumb.entry.js +1 -1
  230. package/dist/esm/ic-button_3.entry.js +8 -2
  231. package/dist/esm/ic-button_3.entry.js.map +1 -1
  232. package/dist/esm/ic-card.entry.js +1 -1
  233. package/dist/esm/ic-checkbox-group.entry.js +1 -1
  234. package/dist/esm/ic-checkbox.entry.js +1 -1
  235. package/dist/esm/ic-chip.entry.js +1 -1
  236. package/dist/esm/ic-data-row.entry.js +1 -1
  237. package/dist/esm/ic-date-input.entry.js +1069 -0
  238. package/dist/esm/ic-date-input.entry.js.map +1 -0
  239. package/dist/esm/ic-date-picker.entry.js +1039 -0
  240. package/dist/esm/ic-date-picker.entry.js.map +1 -0
  241. package/dist/esm/ic-dialog.entry.js +1 -1
  242. package/dist/esm/ic-divider.entry.js +1 -1
  243. package/dist/esm/ic-empty-state.entry.js +1 -1
  244. package/dist/esm/ic-footer-link-group.entry.js +1 -1
  245. package/dist/esm/ic-footer-link.entry.js +1 -1
  246. package/dist/esm/ic-footer.entry.js +1 -1
  247. package/dist/esm/ic-hero.entry.js +1 -1
  248. package/dist/esm/ic-horizontal-scroll.entry.js +1 -1
  249. package/dist/esm/ic-input-component-container_4.entry.js +143 -0
  250. package/dist/esm/ic-input-component-container_4.entry.js.map +1 -0
  251. package/dist/esm/ic-link.entry.js +1 -1
  252. package/dist/esm/ic-menu-group.entry.js +1 -1
  253. package/dist/esm/ic-menu-item.entry.js +1 -1
  254. package/dist/esm/ic-menu-with-multi.entry.js +1 -1
  255. package/dist/esm/ic-menu-with-multi.entry.js.map +1 -1
  256. package/dist/esm/{ic-input-component-container_3.entry.js → ic-menu.entry.js} +5 -67
  257. package/dist/esm/ic-menu.entry.js.map +1 -0
  258. package/dist/esm/ic-navigation-button.entry.js +1 -1
  259. package/dist/esm/ic-navigation-group.entry.js +1 -1
  260. package/dist/esm/ic-navigation-item.entry.js +1 -1
  261. package/dist/esm/ic-navigation-menu.entry.js +1 -1
  262. package/dist/esm/ic-page-header.entry.js +1 -1
  263. package/dist/esm/ic-pagination-bar.entry.js +1 -1
  264. package/dist/esm/ic-pagination_4.entry.js +1 -1
  265. package/dist/esm/ic-popover-menu.entry.js +1 -1
  266. package/dist/esm/ic-radio-group.entry.js +1 -1
  267. package/dist/esm/ic-radio-option.entry.js +1 -1
  268. package/dist/esm/ic-search-bar.entry.js +1 -1
  269. package/dist/esm/ic-select-with-multi.entry.js +1 -14
  270. package/dist/esm/ic-select-with-multi.entry.js.map +1 -1
  271. package/dist/esm/ic-side-navigation.entry.js +1 -1
  272. package/dist/esm/ic-status-tag.entry.js +1 -1
  273. package/dist/esm/ic-step.entry.js +1 -1
  274. package/dist/esm/ic-stepper.entry.js +1 -1
  275. package/dist/esm/ic-switch.entry.js +1 -1
  276. package/dist/esm/ic-tab-group.entry.js +1 -1
  277. package/dist/esm/ic-tab-panel.entry.js +1 -1
  278. package/dist/esm/ic-tab.entry.js +1 -1
  279. package/dist/esm/ic-theme.entry.js +1 -1
  280. package/dist/esm/ic-toast.entry.js +1 -1
  281. package/dist/esm/ic-toggle-button.entry.js +1 -1
  282. package/dist/esm/ic-top-navigation.entry.js +1 -1
  283. package/dist/esm/ic-typography.entry.js +1 -1
  284. package/dist/esm/index-93509377.js +12 -4
  285. package/dist/esm/loader.js +1 -1
  286. package/dist/types/components/ic-date-input/ic-date-input.d.ts +242 -0
  287. package/dist/types/components/ic-date-input/story-data.d.ts +1 -0
  288. package/dist/types/components/ic-date-input/test/helpers/ic-date-input.d.ts +23 -0
  289. package/dist/types/components/ic-date-picker/ic-date-picker.d.ts +251 -0
  290. package/dist/types/components/ic-date-picker/ic-day-button.d.ts +16 -0
  291. package/dist/types/components/ic-date-picker/ic-month-picker.d.ts +14 -0
  292. package/dist/types/components/ic-date-picker/ic-year-picker.d.ts +16 -0
  293. package/dist/types/components/ic-date-picker/story-data.d.ts +22 -0
  294. package/dist/types/components/ic-date-picker/test/a11y/ic-date-picker.test.a11y.d.ts +1 -0
  295. package/dist/types/components/ic-menu-with-multi/ic-menu.d.ts +2 -2
  296. package/dist/types/components/ic-select-with-multi/ic-select.d.ts +2 -2
  297. package/dist/types/components.d.ts +439 -4
  298. package/dist/types/utils/constants.d.ts +37 -0
  299. package/dist/types/utils/date-helpers.d.ts +22 -0
  300. package/dist/types/utils/helpers.d.ts +83 -11
  301. package/dist/types/utils/types.d.ts +92 -1
  302. package/hydrate/index.js +2653 -253
  303. package/package.json +3 -3
  304. package/dist/cjs/helpers-93c5fc92.js.map +0 -1
  305. package/dist/cjs/helpers-b525d45a.js.map +0 -1
  306. package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +0 -1
  307. package/dist/cjs/ic-input-label_2.cjs.entry.js +0 -86
  308. package/dist/cjs/ic-input-label_2.cjs.entry.js.map +0 -1
  309. package/dist/core/p-21150122.entry.js +0 -2
  310. package/dist/core/p-21150122.entry.js.map +0 -1
  311. package/dist/core/p-99cad6c2.js +0 -2
  312. package/dist/core/p-99cad6c2.js.map +0 -1
  313. package/dist/core/p-9caf19eb.js +0 -2
  314. package/dist/core/p-9caf19eb.js.map +0 -1
  315. package/dist/core/p-e0a94f2d.entry.js +0 -2
  316. package/dist/core/p-e0a94f2d.entry.js.map +0 -1
  317. package/dist/core/p-f14454b1.entry.js +0 -2
  318. package/dist/core/p-f6888309.entry.js +0 -2
  319. package/dist/core/p-f6888309.entry.js.map +0 -1
  320. package/dist/core/p-f74a8752.entry.js +0 -2
  321. package/dist/core/p-f74a8752.entry.js.map +0 -1
  322. package/dist/esm/helpers-12b4266a.js.map +0 -1
  323. package/dist/esm/helpers-5271897c.js.map +0 -1
  324. package/dist/esm/ic-input-component-container_3.entry.js.map +0 -1
  325. package/dist/esm/ic-input-label_2.entry.js +0 -81
  326. package/dist/esm/ic-input-label_2.entry.js.map +0 -1
  327. /package/dist/core/{p-8b08d8fe.entry.js.map → p-06ae5bec.entry.js.map} +0 -0
  328. /package/dist/core/{p-f843da01.entry.js.map → p-0939ce92.entry.js.map} +0 -0
  329. /package/dist/core/{p-e0462b23.entry.js.map → p-16f67397.entry.js.map} +0 -0
  330. /package/dist/core/{p-db9c03c0.entry.js.map → p-1832f4b5.entry.js.map} +0 -0
  331. /package/dist/core/{p-ab09986c.entry.js.map → p-1b7d426b.entry.js.map} +0 -0
  332. /package/dist/core/{p-5e0c830b.entry.js.map → p-1ce75941.entry.js.map} +0 -0
  333. /package/dist/core/{p-1ca332ca.entry.js.map → p-2e2e0099.entry.js.map} +0 -0
  334. /package/dist/core/{p-4753bac8.entry.js.map → p-36508aad.entry.js.map} +0 -0
  335. /package/dist/core/{p-10fb4c46.entry.js.map → p-3745da83.entry.js.map} +0 -0
  336. /package/dist/core/{p-3803a5b5.entry.js.map → p-3f2e77c3.entry.js.map} +0 -0
  337. /package/dist/core/{p-88d54b72.entry.js.map → p-47ac6838.entry.js.map} +0 -0
  338. /package/dist/core/{p-4baa0916.entry.js.map → p-4f1ffa39.entry.js.map} +0 -0
  339. /package/dist/core/{p-f7a14c01.entry.js.map → p-5759d771.entry.js.map} +0 -0
  340. /package/dist/core/{p-6c3044b6.entry.js.map → p-5e2e6c3b.entry.js.map} +0 -0
  341. /package/dist/core/{p-2eac7dcc.entry.js.map → p-5fe96107.entry.js.map} +0 -0
  342. /package/dist/core/{p-b82dcc29.entry.js.map → p-62e22508.entry.js.map} +0 -0
  343. /package/dist/core/{p-75dac3d1.entry.js.map → p-6690bc04.entry.js.map} +0 -0
  344. /package/dist/core/{p-c125b65a.entry.js.map → p-6c0e2ceb.entry.js.map} +0 -0
  345. /package/dist/core/{p-a0f8efb2.entry.js.map → p-76d26018.entry.js.map} +0 -0
  346. /package/dist/core/{p-4f413fc0.entry.js.map → p-776671cf.entry.js.map} +0 -0
  347. /package/dist/core/{p-5ae93c16.entry.js.map → p-7cecf5d5.entry.js.map} +0 -0
  348. /package/dist/core/{p-7ef8d616.entry.js.map → p-85609bdd.entry.js.map} +0 -0
  349. /package/dist/core/{p-a43c12cd.entry.js.map → p-86012178.entry.js.map} +0 -0
  350. /package/dist/core/{p-942282cd.entry.js.map → p-8a7e7d23.entry.js.map} +0 -0
  351. /package/dist/core/{p-a50c3b9e.entry.js.map → p-8c90110a.entry.js.map} +0 -0
  352. /package/dist/core/{p-045359e1.entry.js.map → p-8ea47d42.entry.js.map} +0 -0
  353. /package/dist/core/{p-e834344e.entry.js.map → p-982a6e88.entry.js.map} +0 -0
  354. /package/dist/core/{p-d8469ac0.entry.js.map → p-98448bdb.entry.js.map} +0 -0
  355. /package/dist/core/{p-6933f8e9.entry.js.map → p-9d01a7ad.entry.js.map} +0 -0
  356. /package/dist/core/{p-595be57d.entry.js.map → p-9d540656.entry.js.map} +0 -0
  357. /package/dist/core/{p-81ddc39d.entry.js.map → p-a0f9b259.entry.js.map} +0 -0
  358. /package/dist/core/{p-a31031a5.entry.js.map → p-a42c2f37.entry.js.map} +0 -0
  359. /package/dist/core/{p-869954a2.entry.js.map → p-a6447b13.entry.js.map} +0 -0
  360. /package/dist/core/{p-e3997d60.entry.js.map → p-ae422058.entry.js.map} +0 -0
  361. /package/dist/core/{p-a434c3d4.entry.js.map → p-b306cbc8.entry.js.map} +0 -0
  362. /package/dist/core/{p-ac4e40a7.entry.js.map → p-c7590421.entry.js.map} +0 -0
  363. /package/dist/core/{p-f3c840cd.entry.js.map → p-c7820c23.entry.js.map} +0 -0
  364. /package/dist/core/{p-917c5721.entry.js.map → p-ca8cbd6a.entry.js.map} +0 -0
  365. /package/dist/core/{p-73be1251.entry.js.map → p-caf857de.entry.js.map} +0 -0
  366. /package/dist/core/{p-c34848da.entry.js.map → p-d3856ed3.entry.js.map} +0 -0
  367. /package/dist/core/{p-204ace96.entry.js.map → p-d4fdd8c1.entry.js.map} +0 -0
  368. /package/dist/core/{p-ba86928c.entry.js.map → p-d5c99ec3.entry.js.map} +0 -0
  369. /package/dist/core/{p-624d4f5f.entry.js.map → p-e74f1d09.entry.js.map} +0 -0
  370. /package/dist/core/{p-fc5611e2.entry.js.map → p-e84b0310.entry.js.map} +0 -0
  371. /package/dist/core/{p-169bfa51.entry.js.map → p-fbf4e9b7.entry.js.map} +0 -0
@@ -0,0 +1,962 @@
1
+ import { newSpecPage } from "@stencil/core/testing";
2
+ import { DatePicker } from "../../ic-date-picker";
3
+ import { DateInput } from "../../../ic-date-input/ic-date-input";
4
+ import { IcButton as Button } from "@ukic/web-components/dist/components/ic-button";
5
+ import { IcTooltip as Tooltip } from "@ukic/web-components/dist/components/ic-tooltip";
6
+ import { waitForTimeout, testKeyboardEvent as keyboardEvent, } from "../../../../testspec.setup";
7
+ import { dateMatches } from "../../../../utils/date-helpers";
8
+ import { IcInputLabel as InputLabel } from "@ukic/web-components/dist/components/ic-input-label";
9
+ const DELAY_MS = 350;
10
+ const dateIsToday = (d) => {
11
+ return dateMatches(d, new Date());
12
+ };
13
+ beforeAll(() => {
14
+ jest.spyOn(console, "warn").mockImplementation(jest.fn());
15
+ });
16
+ describe("ic-date-picker", () => {
17
+ it("should render default size", async () => {
18
+ const page = await newSpecPage({
19
+ components: [DatePicker, DateInput, Button, Tooltip],
20
+ html: `<ic-date-picker label="Date picker label" value="11/07/2023"></ic-date-picker>`,
21
+ });
22
+ page.rootInstance.setSelectedDate(new Date(2023, 6, 11));
23
+ page.rootInstance.calendarOpen = true;
24
+ await page.waitForChanges();
25
+ await waitForTimeout(DELAY_MS);
26
+ expect(page.rootInstance.calendarOpen).toBe(true);
27
+ expect(page.root).toMatchSnapshot();
28
+ });
29
+ it("should render small datepicker", async () => {
30
+ const page = await newSpecPage({
31
+ components: [DatePicker, DateInput, Button, Tooltip],
32
+ html: `<ic-date-picker label="Date picker label" size="small" value="11/07/2023"></ic-date-picker>`,
33
+ });
34
+ page.rootInstance.setSelectedDate(new Date(2023, 6, 11));
35
+ page.rootInstance.calendarOpen = true;
36
+ await page.waitForChanges();
37
+ await waitForTimeout(DELAY_MS);
38
+ expect(page.root).toMatchSnapshot();
39
+ });
40
+ it("should render large datepicker", async () => {
41
+ const page = await newSpecPage({
42
+ components: [DatePicker, DateInput, Button, Tooltip],
43
+ html: `<ic-date-picker label="Date picker label" size="large" value="11/07/2023"></ic-date-picker>`,
44
+ });
45
+ page.rootInstance.setSelectedDate(new Date(2023, 6, 11));
46
+ page.rootInstance.calendarOpen = true;
47
+ await page.waitForChanges();
48
+ await waitForTimeout(DELAY_MS);
49
+ expect(page.root).toMatchSnapshot();
50
+ });
51
+ it("should render with today & clear buttons hidden", async () => {
52
+ const page = await newSpecPage({
53
+ components: [DatePicker, DateInput, Button, Tooltip],
54
+ html: `<ic-date-picker label="Date picker label" show-picker-today-button="false" show-picker-clear-button="false" value="11/07/2023"></ic-date-picker>`,
55
+ });
56
+ page.rootInstance.setSelectedDate(new Date(2023, 6, 11));
57
+ page.rootInstance.calendarOpen = true;
58
+ await page.waitForChanges();
59
+ await waitForTimeout(DELAY_MS);
60
+ expect(page.root).toMatchSnapshot();
61
+ });
62
+ it("should render disabled", async () => {
63
+ const page = await newSpecPage({
64
+ components: [DatePicker, DateInput, Button, Tooltip],
65
+ html: `<ic-date-picker label="Date picker label" disabled="true"></ic-date-picker>`,
66
+ });
67
+ expect(page.root).toMatchSnapshot();
68
+ });
69
+ it("should render as required field", async () => {
70
+ const page = await newSpecPage({
71
+ components: [DatePicker, DateInput, Button, Tooltip],
72
+ html: `<ic-date-picker label="Date picker label" required="true"></ic-date-picker>`,
73
+ });
74
+ expect(page.root).toMatchSnapshot();
75
+ });
76
+ it("should render with custom inputId and name", async () => {
77
+ const page = await newSpecPage({
78
+ components: [DatePicker, DateInput, Button, Tooltip],
79
+ html: `<ic-date-picker label="Date picker label" input-id="custom-id" name="custom-name" ></ic-date-picker>`,
80
+ });
81
+ expect(page.root).toMatchSnapshot();
82
+ });
83
+ it("should render with custom validation", async () => {
84
+ const page = await newSpecPage({
85
+ components: [DatePicker, DateInput, Button, Tooltip],
86
+ html: `<ic-date-picker label="Date picker label" validation-status="error" validation-text="Text error text"></ic-date-picker>`,
87
+ });
88
+ expect(page.root).toMatchSnapshot();
89
+ });
90
+ it("should render with DD/MM/YYYY format", async () => {
91
+ const page = await newSpecPage({
92
+ components: [DatePicker, DateInput, Button, Tooltip],
93
+ html: `<ic-date-picker label="Date picker label" date-format="DD/MM/YYYY" value="11-07-2023"></ic-date-picker>`,
94
+ });
95
+ page.rootInstance.setSelectedDate(new Date(2023, 6, 11));
96
+ page.rootInstance.calendarOpen = true;
97
+ await page.waitForChanges();
98
+ await waitForTimeout(DELAY_MS);
99
+ expect(page.root).toMatchSnapshot();
100
+ });
101
+ it("should render with MM/DD/YYYY format", async () => {
102
+ const page = await newSpecPage({
103
+ components: [DatePicker, DateInput, Button, Tooltip, InputLabel],
104
+ html: `<ic-date-picker label="Date picker label" date-format="MM/DD/YYYY" value="07-11-2023" helper-text="Use US Format"></ic-date-picker>`,
105
+ });
106
+ page.rootInstance.setSelectedDate(new Date(2023, 6, 11));
107
+ page.rootInstance.calendarOpen = true;
108
+ await page.waitForChanges();
109
+ await waitForTimeout(DELAY_MS);
110
+ expect(page.root).toMatchSnapshot();
111
+ });
112
+ it("should render with YYYY/MM/DD format", async () => {
113
+ const page = await newSpecPage({
114
+ components: [DatePicker, DateInput, Button, Tooltip],
115
+ html: `<ic-date-picker label="Date picker label" date-format="YYYY/MM/DD" value="2023/07/11"></ic-date-picker>`,
116
+ });
117
+ page.rootInstance.setSelectedDate(new Date(2023, 6, 11));
118
+ page.rootInstance.calendarOpen = true;
119
+ await page.waitForChanges();
120
+ await waitForTimeout(DELAY_MS);
121
+ expect(page.root).toMatchSnapshot();
122
+ });
123
+ it("should render with saturday and sundays disabled", async () => {
124
+ const page = await newSpecPage({
125
+ components: [DatePicker, DateInput, Button, Tooltip],
126
+ html: `<ic-date-picker label="Date picker label" value="11/07/2023" disable-days-message="Saturday and Sunday not allowed"></ic-date-picker>`,
127
+ });
128
+ page.root.disableDays = [0, 6];
129
+ page.rootInstance.setSelectedDate(new Date(2023, 6, 11));
130
+ page.rootInstance.calendarOpen = true;
131
+ await page.waitForChanges();
132
+ await waitForTimeout(DELAY_MS);
133
+ expect(page.root).toMatchSnapshot();
134
+ expect(page.rootInstance.dateInputProps.disableDaysMessage).toEqual("Saturday and Sunday not allowed");
135
+ });
136
+ it("should open at specified date", async () => {
137
+ const page = await newSpecPage({
138
+ components: [DatePicker, DateInput, Button, Tooltip],
139
+ html: `<ic-date-picker label="Date picker label" open-at-date="25/12/2022"></ic-date-picker>`,
140
+ });
141
+ page.rootInstance.calendarOpen = true;
142
+ await page.waitForChanges();
143
+ await waitForTimeout(DELAY_MS);
144
+ expect(page.root).toMatchSnapshot();
145
+ });
146
+ it("should have sunday as first day of week", async () => {
147
+ const page = await newSpecPage({
148
+ components: [DatePicker, DateInput, Button, Tooltip],
149
+ html: `<ic-date-picker label="Date picker label" open-at-date="25/12/2022" start-of-week="0"></ic-date-picker>`,
150
+ });
151
+ page.rootInstance.calendarOpen = true;
152
+ await page.waitForChanges();
153
+ await waitForTimeout(DELAY_MS);
154
+ expect(page.root).toMatchSnapshot();
155
+ });
156
+ it("should have correct date focussed on open", async () => {
157
+ const page = await newSpecPage({
158
+ components: [DatePicker, DateInput, Button, Tooltip],
159
+ html: `<ic-date-picker label="Date picker label" open-at-date="25/12/2022"></ic-date-picker>`,
160
+ });
161
+ page.rootInstance.setSelectedDate(new Date(2022, 11, 25));
162
+ page.rootInstance.calendarOpen = true;
163
+ await page.waitForChanges();
164
+ await waitForTimeout(DELAY_MS);
165
+ expect(page.rootInstance.focussedDate).toEqual(page.rootInstance.selectedDate);
166
+ });
167
+ it("should update date when day clicked", async () => {
168
+ const page = await newSpecPage({
169
+ components: [DatePicker, DateInput, Button, Tooltip],
170
+ html: `<ic-date-picker label="Date picker label" open-at-date="25/12/2022"></ic-date-picker>`,
171
+ });
172
+ page.rootInstance.calendarOpen = true;
173
+ await page.waitForChanges();
174
+ await waitForTimeout(DELAY_MS);
175
+ const dayButton = page.root.shadowRoot.querySelector("div.calendar-days-container > div.day-button-container:nth-child(26) > button");
176
+ dayButton.click();
177
+ await page.waitForChanges();
178
+ await waitForTimeout(DELAY_MS);
179
+ expect(page.rootInstance.calendarOpen).toBe(false);
180
+ expect(page.rootInstance.selectedDate).toEqual(new Date(2022, 11, 23));
181
+ });
182
+ it("should show month picker view when button clicked", async () => {
183
+ const page = await newSpecPage({
184
+ components: [DatePicker, DateInput, Button, Tooltip],
185
+ html: `<ic-date-picker label="Date picker label" open-at-date="25/12/2022"></ic-date-picker>`,
186
+ });
187
+ page.rootInstance.setSelectedDate(new Date(2022, 11, 25));
188
+ page.rootInstance.calendarOpen = true;
189
+ await page.waitForChanges();
190
+ await waitForTimeout(DELAY_MS);
191
+ const monthButton = page.root.shadowRoot.querySelector(".month-picker-button");
192
+ monthButton.click();
193
+ await page.waitForChanges();
194
+ await waitForTimeout(DELAY_MS);
195
+ expect(page.root).toMatchSnapshot();
196
+ expect(page.rootInstance.monthPickerVisible).toBe(true);
197
+ monthButton.click();
198
+ await page.waitForChanges();
199
+ await waitForTimeout(DELAY_MS);
200
+ expect(page.rootInstance.monthPickerVisible).toBe(false);
201
+ });
202
+ it("should show year picker view when button clicked", async () => {
203
+ const page = await newSpecPage({
204
+ components: [DatePicker, DateInput, Button, Tooltip],
205
+ html: `<ic-date-picker label="Date picker label" open-at-date="25/12/2022"></ic-date-picker>`,
206
+ });
207
+ page.rootInstance.setSelectedDate(new Date(2022, 11, 25));
208
+ page.rootInstance.calendarOpen = true;
209
+ await page.waitForChanges();
210
+ await waitForTimeout(DELAY_MS);
211
+ const yearButton = page.root.shadowRoot.querySelector(".year-picker-button");
212
+ yearButton.click();
213
+ await page.waitForChanges();
214
+ await waitForTimeout(DELAY_MS);
215
+ expect(page.root).toMatchSnapshot();
216
+ expect(page.rootInstance.yearPickerVisible).toBe(true);
217
+ yearButton.click();
218
+ await page.waitForChanges();
219
+ await waitForTimeout(DELAY_MS);
220
+ expect(page.rootInstance.yearPickerVisible).toBe(false);
221
+ });
222
+ it("should only allow selection in specified month", async () => {
223
+ const page = await newSpecPage({
224
+ components: [DatePicker, DateInput, Button, Tooltip],
225
+ html: `<ic-date-picker label="Date picker label" min="01/10/2023" max="31/10/2023"></ic-date-picker>`,
226
+ });
227
+ page.rootInstance.calendarOpen = true;
228
+ await page.waitForChanges();
229
+ await waitForTimeout(DELAY_MS);
230
+ expect(page.root).toMatchSnapshot();
231
+ });
232
+ it("should select month when button clicked", async () => {
233
+ const page = await newSpecPage({
234
+ components: [DatePicker, DateInput, Button, Tooltip],
235
+ html: `<ic-date-picker label="Date picker label" open-at-date="25/12/2022"></ic-date-picker>`,
236
+ });
237
+ page.rootInstance.setSelectedDate(new Date(2022, 11, 25));
238
+ page.rootInstance.calendarOpen = true;
239
+ await page.waitForChanges();
240
+ await waitForTimeout(DELAY_MS);
241
+ const monthButton = page.root.shadowRoot.querySelector(".month-picker-button");
242
+ monthButton.click();
243
+ await page.waitForChanges();
244
+ await waitForTimeout(DELAY_MS);
245
+ const janButton = page.root.shadowRoot.querySelector("div.month-picker > ic-button:nth-child(1)");
246
+ janButton.click();
247
+ await page.waitForChanges();
248
+ await waitForTimeout(DELAY_MS);
249
+ expect(page.rootInstance.monthPickerVisible).toBe(false);
250
+ expect(page.rootInstance.monthInView).toBe(0);
251
+ expect(page.rootInstance.liveRegionEl.innerText).toEqual("January selected. January 2022 currently in view.");
252
+ });
253
+ it("should select year when button clicked", async () => {
254
+ const page = await newSpecPage({
255
+ components: [DatePicker, DateInput, Button, Tooltip],
256
+ html: `<ic-date-picker label="Date picker label" open-at-date="25/12/2022"></ic-date-picker>`,
257
+ });
258
+ page.rootInstance.setSelectedDate(new Date(2022, 11, 25));
259
+ page.rootInstance.calendarOpen = true;
260
+ await page.waitForChanges();
261
+ await waitForTimeout(DELAY_MS);
262
+ const yearButton = page.root.shadowRoot.querySelector(".year-picker-button");
263
+ yearButton.click();
264
+ await page.waitForChanges();
265
+ await waitForTimeout(DELAY_MS);
266
+ const firstYearButton = page.root.shadowRoot.querySelector("div.year-picker > ic-button:nth-child(2)");
267
+ firstYearButton.click();
268
+ await page.waitForChanges();
269
+ await waitForTimeout(DELAY_MS);
270
+ expect(page.rootInstance.yearPickerVisible).toBe(false);
271
+ expect(page.rootInstance.yearInView).toBe(2020);
272
+ });
273
+ it("should go to previous decade when button clicked", async () => {
274
+ const page = await newSpecPage({
275
+ components: [DatePicker, DateInput, Button, Tooltip],
276
+ html: `<ic-date-picker label="Date picker label" open-at-date="25/12/2022"></ic-date-picker>`,
277
+ });
278
+ page.rootInstance.setSelectedDate(new Date(2022, 11, 25));
279
+ page.rootInstance.calendarOpen = true;
280
+ await page.waitForChanges();
281
+ await waitForTimeout(DELAY_MS);
282
+ const yearButton = page.root.shadowRoot.querySelector(".year-picker-button");
283
+ yearButton.click();
284
+ await page.waitForChanges();
285
+ await waitForTimeout(DELAY_MS);
286
+ const prevDecadeButton = page.root.shadowRoot.querySelector("div.year-picker > div.prev-decade > ic-button:nth-child(1)");
287
+ prevDecadeButton.click();
288
+ await page.waitForChanges();
289
+ await waitForTimeout(DELAY_MS);
290
+ const firstYearButton = page.root.shadowRoot.querySelector("div.year-picker > ic-button:nth-child(2)");
291
+ firstYearButton.click();
292
+ await page.waitForChanges();
293
+ await waitForTimeout(DELAY_MS);
294
+ expect(page.rootInstance.yearInView).toBe(2010);
295
+ });
296
+ it("should go to next decade when button clicked", async () => {
297
+ const page = await newSpecPage({
298
+ components: [DatePicker, DateInput, Button, Tooltip],
299
+ html: `<ic-date-picker label="Date picker label" open-at-date="25/12/2022"></ic-date-picker>`,
300
+ });
301
+ page.rootInstance.setSelectedDate(new Date(2022, 11, 25));
302
+ page.rootInstance.calendarOpen = true;
303
+ await page.waitForChanges();
304
+ await waitForTimeout(DELAY_MS);
305
+ const yearButton = page.root.shadowRoot.querySelector(".year-picker-button");
306
+ yearButton.click();
307
+ await page.waitForChanges();
308
+ await waitForTimeout(DELAY_MS);
309
+ const nextDecadeButton = page.root.shadowRoot.querySelector("div.year-picker > div.next-decade > ic-button:nth-child(1)");
310
+ nextDecadeButton.click();
311
+ await page.waitForChanges();
312
+ await waitForTimeout(DELAY_MS);
313
+ const firstYearButton = page.root.shadowRoot.querySelector("div.year-picker > ic-button:nth-child(2)");
314
+ firstYearButton.click();
315
+ await page.waitForChanges();
316
+ await waitForTimeout(DELAY_MS);
317
+ expect(page.rootInstance.yearInView).toBe(2030);
318
+ });
319
+ it("should set maxDate when dates in future disabled", async () => {
320
+ const page = await newSpecPage({
321
+ components: [DatePicker, DateInput, Button, Tooltip],
322
+ html: `<ic-date-picker label="Date picker label" disable-future="true" disable-future-message="Days in the future not allowed"></ic-date-picker>`,
323
+ });
324
+ await page.waitForChanges();
325
+ expect(dateIsToday(page.rootInstance.maxDate)).toBe(true);
326
+ expect(page.rootInstance.dateInputProps.disableFutureMessage).toEqual("Days in the future not allowed");
327
+ });
328
+ it("should set minDate when dates in past disabled", async () => {
329
+ const page = await newSpecPage({
330
+ components: [DatePicker, DateInput, Button, Tooltip],
331
+ html: `<ic-date-picker label="Date picker label" disable-past="true" disable-past-message="Days in the past not allowed"></ic-date-picker>`,
332
+ });
333
+ await page.waitForChanges();
334
+ const dateMatch = dateMatches(page.rootInstance.minDate, new Date());
335
+ expect(dateMatch).toBe(true);
336
+ expect(page.rootInstance.dateInputProps.disablePastMessage).toEqual("Days in the past not allowed");
337
+ });
338
+ it("should close picker when another element clicked", async () => {
339
+ const page = await newSpecPage({
340
+ components: [DatePicker, DateInput, Button, Tooltip],
341
+ html: `<ic-date-picker label="Date picker label" open-at-date="25/12/2022"></ic-date-picker>`,
342
+ });
343
+ page.rootInstance.calendarOpen = true;
344
+ await page.waitForChanges();
345
+ await waitForTimeout(DELAY_MS);
346
+ page.root.click();
347
+ await page.waitForChanges();
348
+ await waitForTimeout(DELAY_MS);
349
+ expect(page.rootInstance.calendarOpen).toBe(false);
350
+ });
351
+ it("should close picker when Escape key pressed", async () => {
352
+ const page = await newSpecPage({
353
+ components: [DatePicker, DateInput, Button, Tooltip],
354
+ html: `<ic-date-picker label="Date picker label" open-at-date="25/12/2022"></ic-date-picker>`,
355
+ });
356
+ page.rootInstance.calendarOpen = true;
357
+ await page.waitForChanges();
358
+ await waitForTimeout(DELAY_MS);
359
+ page.rootInstance.keyDownHandler(keyboardEvent("Escape"));
360
+ await page.waitForChanges();
361
+ await waitForTimeout(DELAY_MS);
362
+ expect(page.rootInstance.calendarOpen).toBe(false);
363
+ });
364
+ it("should clear dialog description when key pressed", async () => {
365
+ const page = await newSpecPage({
366
+ components: [DatePicker, DateInput, Button, Tooltip],
367
+ html: `<ic-date-picker label="Date picker label" open-at-date="25/12/2022"></ic-date-picker>`,
368
+ });
369
+ page.rootInstance.calendarOpen = true;
370
+ await page.waitForChanges();
371
+ await waitForTimeout(DELAY_MS);
372
+ page.rootInstance.keyDownHandler(keyboardEvent("Tab"));
373
+ await page.waitForChanges();
374
+ await waitForTimeout(DELAY_MS);
375
+ expect(page.rootInstance.dialogDescription).toBe("");
376
+ });
377
+ it("should test go to today button", async () => {
378
+ const page = await newSpecPage({
379
+ components: [DatePicker, DateInput, Button, Tooltip],
380
+ html: `<ic-date-picker label="Date picker label" open-at-date="25/12/2022"></ic-date-picker>`,
381
+ });
382
+ page.rootInstance.calendarOpen = true;
383
+ await page.waitForChanges();
384
+ await waitForTimeout(DELAY_MS);
385
+ const todayButton = page.root.shadowRoot.querySelector("div.bottom-buttons > #today-button");
386
+ todayButton.click();
387
+ await page.waitForChanges();
388
+ await waitForTimeout(DELAY_MS);
389
+ expect(dateIsToday(page.rootInstance.focussedDate)).toBe(true);
390
+ });
391
+ it("should test go to today button - month view", async () => {
392
+ const page = await newSpecPage({
393
+ components: [DatePicker, DateInput, Button, Tooltip],
394
+ html: `<ic-date-picker label="Date picker label" open-at-date="25/12/2022"></ic-date-picker>`,
395
+ });
396
+ page.rootInstance.calendarOpen = true;
397
+ await page.waitForChanges();
398
+ await waitForTimeout(DELAY_MS);
399
+ page.rootInstance.monthPickerVisible = true;
400
+ await page.waitForChanges();
401
+ await waitForTimeout(DELAY_MS);
402
+ const todayButton = page.root.shadowRoot.querySelector("div.bottom-buttons > #today-button");
403
+ todayButton.click();
404
+ await page.waitForChanges();
405
+ await waitForTimeout(DELAY_MS);
406
+ expect(page.rootInstance.monthPickerVisible).toBe(false);
407
+ expect(dateIsToday(page.rootInstance.focussedDate)).toBe(true);
408
+ });
409
+ it("should test go to today button - year view", async () => {
410
+ const page = await newSpecPage({
411
+ components: [DatePicker, DateInput, Button, Tooltip],
412
+ html: `<ic-date-picker label="Date picker label" open-at-date="25/12/2022"></ic-date-picker>`,
413
+ });
414
+ page.rootInstance.calendarOpen = true;
415
+ await page.waitForChanges();
416
+ await waitForTimeout(DELAY_MS);
417
+ page.rootInstance.yearPickerVisible = true;
418
+ await page.waitForChanges();
419
+ await waitForTimeout(DELAY_MS);
420
+ const todayButton = page.root.shadowRoot.querySelector("div.bottom-buttons > #today-button");
421
+ todayButton.click();
422
+ await page.waitForChanges();
423
+ await waitForTimeout(DELAY_MS);
424
+ expect(page.rootInstance.yearPickerVisible).toBe(false);
425
+ expect(dateIsToday(page.rootInstance.focussedDate)).toBe(true);
426
+ });
427
+ it("should test clear button", async () => {
428
+ const page = await newSpecPage({
429
+ components: [DatePicker, DateInput, Button, Tooltip],
430
+ html: `<ic-date-picker label="Date picker label" value="25/12/2022"></ic-date-picker>`,
431
+ });
432
+ page.rootInstance.setSelectedDate(new Date(2022, 11, 25));
433
+ page.rootInstance.calendarOpen = true;
434
+ await page.waitForChanges();
435
+ await waitForTimeout(DELAY_MS);
436
+ Object.defineProperty(page.rootInstance.focussedDayEl, "focus", {
437
+ value: jest.fn(),
438
+ });
439
+ expect(page.rootInstance.focussedDayEl.focus).not.toHaveBeenCalled();
440
+ expect(page.rootInstance.selectedDate).not.toBe(null);
441
+ const clearButton = page.root.shadowRoot.querySelector("div.bottom-buttons > #clear-button");
442
+ clearButton.click();
443
+ await page.waitForChanges();
444
+ await waitForTimeout(DELAY_MS);
445
+ expect(page.rootInstance.selectedDate).toBe(null);
446
+ expect(page.rootInstance.focussedDayEl.focus).toHaveBeenCalled();
447
+ expect(page.rootInstance.liveRegionEl.textContent).toBe("Selected date cleared. December 2022 currently in view.");
448
+ });
449
+ it("should test clear button - month view", async () => {
450
+ const page = await newSpecPage({
451
+ components: [DatePicker, DateInput, Button, Tooltip],
452
+ html: `<ic-date-picker label="Date picker label" value="25/12/2022"></ic-date-picker>`,
453
+ });
454
+ page.rootInstance.setSelectedDate(new Date(2022, 11, 25));
455
+ page.rootInstance.calendarOpen = true;
456
+ await page.waitForChanges();
457
+ await waitForTimeout(DELAY_MS);
458
+ page.rootInstance.monthPickerVisible = true;
459
+ await page.waitForChanges();
460
+ await waitForTimeout(DELAY_MS);
461
+ Object.defineProperty(page.rootInstance.focussedMonthEl, "setFocus", {
462
+ value: jest.fn(),
463
+ });
464
+ expect(page.rootInstance.focussedMonthEl.setFocus).not.toHaveBeenCalled();
465
+ expect(page.root.value).not.toBe("");
466
+ const clearButton = page.root.shadowRoot.querySelector("div.bottom-buttons > #clear-button");
467
+ clearButton.click();
468
+ await page.waitForChanges();
469
+ await waitForTimeout(DELAY_MS);
470
+ expect(page.rootInstance.selectedDate).toBe(null);
471
+ expect(page.rootInstance.monthPickerVisible).toBe(true);
472
+ expect(page.rootInstance.focussedMonthEl.setFocus).toHaveBeenCalled();
473
+ expect(page.rootInstance.liveRegionEl.textContent).toBe("Selected date cleared.");
474
+ });
475
+ it("should test clear button - year view", async () => {
476
+ const page = await newSpecPage({
477
+ components: [DatePicker, DateInput, Button, Tooltip],
478
+ html: `<ic-date-picker label="Date picker label" value="25/12/2022"></ic-date-picker>`,
479
+ });
480
+ page.rootInstance.setSelectedDate(new Date(2022, 11, 25));
481
+ page.rootInstance.calendarOpen = true;
482
+ await page.waitForChanges();
483
+ await waitForTimeout(DELAY_MS);
484
+ page.rootInstance.yearPickerVisible = true;
485
+ await page.waitForChanges();
486
+ await waitForTimeout(DELAY_MS);
487
+ Object.defineProperty(page.rootInstance.focussedYearEl, "setFocus", {
488
+ value: jest.fn(),
489
+ });
490
+ expect(page.rootInstance.focussedYearEl.setFocus).not.toHaveBeenCalled();
491
+ expect(page.root.value).not.toBe("");
492
+ const clearButton = page.root.shadowRoot.querySelector("div.bottom-buttons > #clear-button");
493
+ clearButton.click();
494
+ await page.waitForChanges();
495
+ await waitForTimeout(DELAY_MS);
496
+ expect(page.root.value).toBe("");
497
+ expect(page.rootInstance.yearPickerVisible).toBe(true);
498
+ expect(page.rootInstance.focussedYearEl.setFocus).toHaveBeenCalled();
499
+ expect(page.rootInstance.liveRegionEl.textContent).toBe("Selected date cleared.");
500
+ });
501
+ it("should test month & year nav buttons", async () => {
502
+ const page = await newSpecPage({
503
+ components: [DatePicker, DateInput, Button, Tooltip],
504
+ html: `<ic-date-picker label="Date picker label" value="25/12/2022"></ic-date-picker>`,
505
+ });
506
+ page.rootInstance.setSelectedDate(new Date(2022, 11, 25));
507
+ page.rootInstance.calendarOpen = true;
508
+ await page.waitForChanges();
509
+ await waitForTimeout(DELAY_MS);
510
+ const prevMonthButton = page.root.shadowRoot.querySelector("#previous-month-button");
511
+ prevMonthButton.click();
512
+ await page.waitForChanges();
513
+ await waitForTimeout(DELAY_MS);
514
+ expect(page.rootInstance.focussedDate).toEqual(new Date(2022, 10, 25));
515
+ const nextMonthButton = page.root.shadowRoot.querySelector("#next-month-button");
516
+ nextMonthButton.click();
517
+ await page.waitForChanges();
518
+ await waitForTimeout(DELAY_MS);
519
+ expect(page.rootInstance.focussedDate).toEqual(new Date(2022, 11, 25));
520
+ const prevYearButton = page.root.shadowRoot.querySelector("#previous-year-button");
521
+ prevYearButton.click();
522
+ await page.waitForChanges();
523
+ await waitForTimeout(DELAY_MS);
524
+ expect(page.rootInstance.focussedDate).toEqual(new Date(2021, 11, 25));
525
+ const nextYearButton = page.root.shadowRoot.querySelector("#next-year-button");
526
+ nextYearButton.click();
527
+ await page.waitForChanges();
528
+ await waitForTimeout(DELAY_MS);
529
+ expect(page.rootInstance.focussedDate).toEqual(new Date(2022, 11, 25));
530
+ });
531
+ it("should test tab on goto today button goes to first element on dialog when clear disabled", async () => {
532
+ const page = await newSpecPage({
533
+ components: [DatePicker, DateInput, Button, Tooltip],
534
+ html: `<ic-date-picker label="Date picker label" open-at-date="25/12/2022"></ic-date-picker>`,
535
+ });
536
+ page.rootInstance.calendarOpen = true;
537
+ await page.waitForChanges();
538
+ await waitForTimeout(DELAY_MS);
539
+ page.rootInstance.todayButtonKeyDownHandler(keyboardEvent("Tab"));
540
+ await page.waitForChanges();
541
+ expect(page.rootInstance.focusFirstElement).toHaveBeenCalled;
542
+ });
543
+ it("should test tab on clear button goes to first element on dialog", async () => {
544
+ const page = await newSpecPage({
545
+ components: [DatePicker, DateInput, Button, Tooltip],
546
+ html: `<ic-date-picker label="Date picker label" open-at-date="25/12/2022"></ic-date-picker>`,
547
+ });
548
+ page.rootInstance.calendarOpen = true;
549
+ await page.waitForChanges();
550
+ await waitForTimeout(DELAY_MS);
551
+ page.rootInstance.clearButtonKeyDownHandler(keyboardEvent("Tab"));
552
+ await page.waitForChanges();
553
+ expect(page.rootInstance.focusFirstElement).toHaveBeenCalled;
554
+ });
555
+ it("should test monthButtonKeyDownHandler", async () => {
556
+ const page = await newSpecPage({
557
+ components: [DatePicker, DateInput, Button, Tooltip],
558
+ html: `<ic-date-picker label="Date picker label" open-at-date="25/12/2022"></ic-date-picker>`,
559
+ });
560
+ page.rootInstance.setSelectedDate(new Date(2022, 11, 25));
561
+ page.rootInstance.calendarOpen = true;
562
+ await page.waitForChanges();
563
+ await waitForTimeout(DELAY_MS);
564
+ page.rootInstance.monthPickerVisible = true;
565
+ await page.waitForChanges();
566
+ await waitForTimeout(DELAY_MS);
567
+ page.rootInstance.monthButtonKeyDownHandler(keyboardEvent("ArrowUp"));
568
+ await page.waitForChanges();
569
+ expect(page.rootInstance.monthInView).toBe(10);
570
+ page.rootInstance.monthButtonKeyDownHandler(keyboardEvent("ArrowDown"));
571
+ await page.waitForChanges();
572
+ expect(page.rootInstance.monthInView).toBe(11);
573
+ page.rootInstance.monthButtonKeyDownHandler(keyboardEvent("ArrowRight"));
574
+ await page.waitForChanges();
575
+ expect(page.rootInstance.monthInView).toBe(0);
576
+ page.rootInstance.monthButtonKeyDownHandler(keyboardEvent("ArrowLeft"));
577
+ await page.waitForChanges();
578
+ expect(page.rootInstance.monthInView).toBe(11);
579
+ page.rootInstance.monthButtonKeyDownHandler(keyboardEvent("Home"));
580
+ await page.waitForChanges();
581
+ expect(page.rootInstance.monthInView).toBe(0);
582
+ page.rootInstance.monthButtonKeyDownHandler(keyboardEvent("End"));
583
+ await page.waitForChanges();
584
+ expect(page.rootInstance.monthInView).toBe(11);
585
+ Object.defineProperty(page.rootInstance.clearButtonEl, "setFocus", {
586
+ value: jest.fn(),
587
+ });
588
+ const tabKeyEvent = keyboardEvent("Tab");
589
+ tabKeyEvent.shiftKey = true;
590
+ page.rootInstance.monthButtonKeyDownHandler(tabKeyEvent);
591
+ await page.waitForChanges();
592
+ expect(page.rootInstance.clearButtonEl.setFocus).toHaveBeenCalled();
593
+ //should focus today button when clear hidden
594
+ page.rootInstance.showPickerClearButton = false;
595
+ await page.waitForChanges();
596
+ await waitForTimeout(DELAY_MS);
597
+ Object.defineProperty(page.rootInstance.todayButtonEl, "setFocus", {
598
+ value: jest.fn(),
599
+ });
600
+ page.rootInstance.monthButtonKeyDownHandler(tabKeyEvent);
601
+ await page.waitForChanges();
602
+ expect(page.rootInstance.todayButtonEl.setFocus).toHaveBeenCalled();
603
+ // should focus month when today hidden
604
+ //should focus month button when month view open and today hidden
605
+ page.rootInstance.showPickerTodayButton = false;
606
+ await page.waitForChanges();
607
+ await waitForTimeout(DELAY_MS);
608
+ Object.defineProperty(page.rootInstance.focussedMonthEl, "setFocus", {
609
+ value: jest.fn(),
610
+ });
611
+ page.rootInstance.monthButtonKeyDownHandler(tabKeyEvent);
612
+ await page.waitForChanges();
613
+ expect(page.rootInstance.focussedMonthEl.setFocus).toHaveBeenCalled();
614
+ //should focus day
615
+ page.rootInstance.monthButtonKeyDownHandler(keyboardEvent("Enter"));
616
+ page.rootInstance.monthButtonKeyDownHandler(keyboardEvent("Escape"));
617
+ await page.waitForChanges();
618
+ await waitForTimeout(DELAY_MS);
619
+ expect(page.rootInstance.monthPickerVisible).toBe(false);
620
+ Object.defineProperty(page.rootInstance.focussedDayEl, "focus", {
621
+ value: jest.fn(),
622
+ });
623
+ page.rootInstance.monthButtonKeyDownHandler(tabKeyEvent);
624
+ await page.waitForChanges();
625
+ expect(page.rootInstance.focussedDayEl.focus).toHaveBeenCalled();
626
+ //should focus year
627
+ page.rootInstance.yearPickerVisible = true;
628
+ await page.waitForChanges();
629
+ await waitForTimeout(DELAY_MS);
630
+ Object.defineProperty(page.rootInstance.focussedYearEl, "setFocus", {
631
+ value: jest.fn(),
632
+ });
633
+ page.rootInstance.monthButtonKeyDownHandler(tabKeyEvent);
634
+ await page.waitForChanges();
635
+ expect(page.rootInstance.focussedYearEl.setFocus).toHaveBeenCalled();
636
+ });
637
+ it("should test yearButtonKeyDownHandler", async () => {
638
+ const page = await newSpecPage({
639
+ components: [DatePicker, DateInput, Button, Tooltip],
640
+ html: `<ic-date-picker label="Date picker label" open-at-date="25/12/2022"></ic-date-picker>`,
641
+ });
642
+ page.rootInstance.setSelectedDate(new Date(2022, 11, 25));
643
+ page.rootInstance.calendarOpen = true;
644
+ await page.waitForChanges();
645
+ await waitForTimeout(DELAY_MS);
646
+ page.rootInstance.yearPickerVisible = true;
647
+ await page.waitForChanges();
648
+ await waitForTimeout(DELAY_MS);
649
+ page.rootInstance.yearButtonKeyDownHandler(keyboardEvent("ArrowUp"));
650
+ await page.waitForChanges();
651
+ expect(page.rootInstance.yearInView).toBe(2021);
652
+ page.rootInstance.yearButtonKeyDownHandler(keyboardEvent("ArrowDown"));
653
+ await page.waitForChanges();
654
+ expect(page.rootInstance.yearInView).toBe(2022);
655
+ page.rootInstance.yearButtonKeyDownHandler(keyboardEvent("ArrowRight"));
656
+ await page.waitForChanges();
657
+ expect(page.rootInstance.yearInView).toBe(2023);
658
+ page.rootInstance.yearButtonKeyDownHandler(keyboardEvent("ArrowLeft"));
659
+ await page.waitForChanges();
660
+ expect(page.rootInstance.yearInView).toBe(2022);
661
+ page.rootInstance.yearButtonKeyDownHandler(keyboardEvent("Home"));
662
+ await page.waitForChanges();
663
+ expect(page.rootInstance.yearInView).toBe(2020);
664
+ page.rootInstance.yearButtonKeyDownHandler(keyboardEvent("End"));
665
+ await page.waitForChanges();
666
+ expect(page.rootInstance.yearInView).toBe(2029);
667
+ page.rootInstance.yearButtonKeyDownHandler(keyboardEvent("PageUp"));
668
+ await page.waitForChanges();
669
+ expect(page.rootInstance.yearInView).toBe(2019);
670
+ page.rootInstance.yearButtonKeyDownHandler(keyboardEvent("PageDown"));
671
+ await page.waitForChanges();
672
+ expect(page.rootInstance.yearInView).toBe(2029);
673
+ page.rootInstance.yearButtonKeyDownHandler(keyboardEvent("Enter"));
674
+ page.rootInstance.yearButtonKeyDownHandler(keyboardEvent("Escape"));
675
+ await page.waitForChanges();
676
+ await waitForTimeout(DELAY_MS);
677
+ expect(page.rootInstance.yearPickerVisible).toBe(false);
678
+ });
679
+ it("should test monthPickerKeyDownHandler", async () => {
680
+ const page = await newSpecPage({
681
+ components: [DatePicker, DateInput, Button, Tooltip],
682
+ html: `<ic-date-picker label="Date picker label" open-at-date="25/12/2022"></ic-date-picker>`,
683
+ });
684
+ page.rootInstance.calendarOpen = true;
685
+ await page.waitForChanges();
686
+ await waitForTimeout(DELAY_MS);
687
+ page.rootInstance.monthPickerVisible = true;
688
+ await page.waitForChanges();
689
+ await waitForTimeout(DELAY_MS);
690
+ page.rootInstance.monthPickerKeyDownHandler(keyboardEvent("ArrowUp"));
691
+ await page.waitForChanges();
692
+ await waitForTimeout(DELAY_MS);
693
+ expect(page.rootInstance.focussedMonth).toBe(10);
694
+ page.rootInstance.monthPickerKeyDownHandler(keyboardEvent("ArrowDown"));
695
+ await page.waitForChanges();
696
+ await waitForTimeout(DELAY_MS);
697
+ expect(page.rootInstance.focussedMonth).toBe(11);
698
+ page.rootInstance.monthPickerKeyDownHandler(keyboardEvent("ArrowRight"));
699
+ await page.waitForChanges();
700
+ await waitForTimeout(DELAY_MS);
701
+ expect(page.rootInstance.focussedMonth).toBe(0);
702
+ page.rootInstance.monthPickerKeyDownHandler(keyboardEvent("ArrowLeft"));
703
+ await page.waitForChanges();
704
+ await waitForTimeout(DELAY_MS);
705
+ expect(page.rootInstance.focussedMonth).toBe(11);
706
+ page.rootInstance.monthPickerKeyDownHandler(keyboardEvent("Home"));
707
+ await page.waitForChanges();
708
+ await waitForTimeout(DELAY_MS);
709
+ expect(page.rootInstance.focussedMonth).toBe(0);
710
+ page.rootInstance.monthPickerKeyDownHandler(keyboardEvent("End"));
711
+ await page.waitForChanges();
712
+ await waitForTimeout(DELAY_MS);
713
+ expect(page.rootInstance.focussedMonth).toBe(11);
714
+ page.rootInstance.monthPickerKeyDownHandler(keyboardEvent("Tab"));
715
+ page.rootInstance.monthPickerKeyDownHandler(keyboardEvent("Enter"));
716
+ page.rootInstance.monthPickerKeyDownHandler(keyboardEvent("Escape"));
717
+ await page.waitForChanges();
718
+ await waitForTimeout(DELAY_MS);
719
+ expect(page.rootInstance.monthPickerVisible).toBe(false);
720
+ });
721
+ it("should test yearPickerKeyDownHandler ", async () => {
722
+ const page = await newSpecPage({
723
+ components: [DatePicker, DateInput, Button, Tooltip],
724
+ html: `<ic-date-picker label="Date picker label" open-at-date="25/12/2022"></ic-date-picker>`,
725
+ });
726
+ page.rootInstance.calendarOpen = true;
727
+ await page.waitForChanges();
728
+ await waitForTimeout(DELAY_MS);
729
+ page.rootInstance.yearPickerVisible = true;
730
+ await page.waitForChanges();
731
+ await waitForTimeout(DELAY_MS);
732
+ page.rootInstance.yearPickerKeyDownHandler(keyboardEvent("ArrowUp"));
733
+ await page.waitForChanges();
734
+ await waitForTimeout(DELAY_MS);
735
+ expect(page.rootInstance.focussedYear).toBe(2021);
736
+ page.rootInstance.yearPickerKeyDownHandler(keyboardEvent("ArrowDown"));
737
+ await page.waitForChanges();
738
+ await waitForTimeout(DELAY_MS);
739
+ expect(page.rootInstance.focussedYear).toBe(2022);
740
+ page.rootInstance.yearPickerKeyDownHandler(keyboardEvent("ArrowRight"));
741
+ await page.waitForChanges();
742
+ await waitForTimeout(DELAY_MS);
743
+ expect(page.rootInstance.focussedYear).toBe(2023);
744
+ page.rootInstance.yearPickerKeyDownHandler(keyboardEvent("ArrowLeft"));
745
+ await page.waitForChanges();
746
+ await waitForTimeout(DELAY_MS);
747
+ expect(page.rootInstance.focussedYear).toBe(2022);
748
+ page.rootInstance.yearPickerKeyDownHandler(keyboardEvent("Home"));
749
+ await page.waitForChanges();
750
+ await waitForTimeout(DELAY_MS);
751
+ expect(page.rootInstance.focussedYear).toBe(2020);
752
+ page.rootInstance.yearPickerKeyDownHandler(keyboardEvent("End"));
753
+ await page.waitForChanges();
754
+ await waitForTimeout(DELAY_MS);
755
+ expect(page.rootInstance.focussedYear).toBe(2029);
756
+ page.rootInstance.yearPickerKeyDownHandler(keyboardEvent("PageUp"));
757
+ await page.waitForChanges();
758
+ await waitForTimeout(DELAY_MS);
759
+ expect(page.rootInstance.focussedYear).toBe(2019);
760
+ page.rootInstance.yearPickerKeyDownHandler(keyboardEvent("PageDown"));
761
+ await page.waitForChanges();
762
+ await waitForTimeout(DELAY_MS);
763
+ expect(page.rootInstance.focussedYear).toBe(2029);
764
+ page.rootInstance.yearPickerKeyDownHandler(keyboardEvent("Tab"));
765
+ page.rootInstance.yearPickerKeyDownHandler(keyboardEvent("Enter"));
766
+ page.rootInstance.yearPickerKeyDownHandler(keyboardEvent("Escape"));
767
+ await page.waitForChanges();
768
+ await waitForTimeout(DELAY_MS);
769
+ expect(page.rootInstance.yearPickerVisible).toBe(false);
770
+ });
771
+ it("should test handleCalendarKeyDown", async () => {
772
+ const page = await newSpecPage({
773
+ components: [DatePicker, DateInput, Button, Tooltip],
774
+ html: `<ic-date-picker label="Date picker label" open-at-date="25/12/2022" show-picker-today-button="false" show-picker-clear-button="false"></ic-date-picker>`,
775
+ });
776
+ page.rootInstance.calendarOpen = true;
777
+ await page.waitForChanges();
778
+ await waitForTimeout(DELAY_MS);
779
+ page.rootInstance.handleCalendarKeyDown(keyboardEvent("ArrowUp"));
780
+ await page.waitForChanges();
781
+ await waitForTimeout(DELAY_MS);
782
+ expect(page.rootInstance.focussedDate).toEqual(new Date(2022, 11, 18));
783
+ page.rootInstance.handleCalendarKeyDown(keyboardEvent("ArrowDown"));
784
+ await page.waitForChanges();
785
+ await waitForTimeout(DELAY_MS);
786
+ expect(page.rootInstance.focussedDate).toEqual(new Date(2022, 11, 25));
787
+ page.rootInstance.handleCalendarKeyDown(keyboardEvent("ArrowRight"));
788
+ await page.waitForChanges();
789
+ await waitForTimeout(DELAY_MS);
790
+ expect(page.rootInstance.focussedDate).toEqual(new Date(2022, 11, 26));
791
+ page.rootInstance.handleCalendarKeyDown(keyboardEvent("ArrowLeft"));
792
+ await page.waitForChanges();
793
+ await waitForTimeout(DELAY_MS);
794
+ expect(page.rootInstance.focussedDate).toEqual(new Date(2022, 11, 25));
795
+ page.rootInstance.handleCalendarKeyDown(keyboardEvent("Home"));
796
+ await page.waitForChanges();
797
+ await waitForTimeout(DELAY_MS);
798
+ expect(page.rootInstance.focussedDate).toEqual(new Date(2022, 11, 1));
799
+ page.rootInstance.handleCalendarKeyDown(keyboardEvent("End"));
800
+ await page.waitForChanges();
801
+ await waitForTimeout(DELAY_MS);
802
+ expect(page.rootInstance.focussedDate).toEqual(new Date(2022, 11, 31));
803
+ page.rootInstance.handleCalendarKeyDown(keyboardEvent("PageUp"));
804
+ await page.waitForChanges();
805
+ await waitForTimeout(DELAY_MS);
806
+ expect(page.rootInstance.focussedDate).toEqual(new Date(2022, 10, 30));
807
+ expect(page.rootInstance.liveRegionEl.innerText).toEqual("November 2022 currently in view.");
808
+ let keyEvent = keyboardEvent("PageUp");
809
+ keyEvent.shiftKey = true;
810
+ page.rootInstance.handleCalendarKeyDown(keyEvent);
811
+ await page.waitForChanges();
812
+ await waitForTimeout(DELAY_MS);
813
+ expect(page.rootInstance.focussedDate).toEqual(new Date(2021, 10, 30));
814
+ page.rootInstance.handleCalendarKeyDown(keyboardEvent("PageDown"));
815
+ await page.waitForChanges();
816
+ await waitForTimeout(DELAY_MS);
817
+ expect(page.rootInstance.focussedDate).toEqual(new Date(2021, 11, 30));
818
+ keyEvent = keyboardEvent("PageDown");
819
+ keyEvent.shiftKey = true;
820
+ page.rootInstance.handleCalendarKeyDown(keyEvent);
821
+ await page.waitForChanges();
822
+ await waitForTimeout(DELAY_MS);
823
+ expect(page.rootInstance.focussedDate).toEqual(new Date(2022, 11, 30));
824
+ Object.defineProperty(page.rootInstance.monthButtonEl, "setFocus", {
825
+ value: jest.fn(),
826
+ });
827
+ // simulate pressing enter to handle default behaviour case
828
+ page.rootInstance.handleCalendarKeyDown(keyboardEvent("Enter"));
829
+ page.rootInstance.handleCalendarKeyDown(keyboardEvent("Tab"));
830
+ await page.waitForChanges();
831
+ await waitForTimeout(DELAY_MS);
832
+ expect(page.rootInstance.monthButtonEl.setFocus).toHaveBeenCalled();
833
+ //test tab with clear button disabled (rather than hidden)
834
+ page.root.showPickerClearButton = true;
835
+ await page.waitForChanges();
836
+ await waitForTimeout(DELAY_MS);
837
+ page.rootInstance.clearButtonEl.disabled = true;
838
+ await page.waitForChanges();
839
+ page.rootInstance.handleCalendarKeyDown(keyboardEvent("Tab"));
840
+ await page.waitForChanges();
841
+ expect(page.rootInstance.monthButtonEl.setFocus).toHaveBeenCalledTimes(2);
842
+ Object.defineProperty(page.rootInstance.yearButtonEl, "setFocus", {
843
+ value: jest.fn(),
844
+ });
845
+ keyEvent = keyboardEvent("Tab");
846
+ keyEvent.shiftKey = true;
847
+ page.rootInstance.handleCalendarKeyDown(keyEvent);
848
+ await page.waitForChanges();
849
+ expect(page.rootInstance.yearButtonEl.setFocus).toHaveBeenCalled();
850
+ });
851
+ it("should test keyboard navigation when weekends disabled", async () => {
852
+ const page = await newSpecPage({
853
+ components: [DatePicker, DateInput, Button, Tooltip],
854
+ html: `<ic-date-picker label="Date picker label" open-at-date="23/12/2022"></ic-date-picker>`,
855
+ });
856
+ page.root.disableDays = [0, 6];
857
+ page.rootInstance.calendarOpen = true;
858
+ await page.waitForChanges();
859
+ await waitForTimeout(DELAY_MS);
860
+ page.rootInstance.handleCalendarKeyDown(keyboardEvent("ArrowRight"));
861
+ await page.waitForChanges();
862
+ await waitForTimeout(DELAY_MS);
863
+ expect(page.rootInstance.focussedDate).toEqual(new Date(2022, 11, 26));
864
+ page.rootInstance.handleCalendarKeyDown(keyboardEvent("ArrowLeft"));
865
+ await page.waitForChanges();
866
+ await waitForTimeout(DELAY_MS);
867
+ expect(page.rootInstance.focussedDate).toEqual(new Date(2022, 11, 23));
868
+ });
869
+ it("should test calendarButtonClickHandler", async () => {
870
+ const page = await newSpecPage({
871
+ components: [DatePicker, DateInput, Button, Tooltip],
872
+ html: `<ic-date-picker label="Date picker label"></ic-date-picker>`,
873
+ });
874
+ page.rootInstance.calendarOpen = true;
875
+ await page.waitForChanges();
876
+ await waitForTimeout(DELAY_MS);
877
+ page.rootInstance.calendarButtonClickHandler();
878
+ expect(page.rootInstance.calendarOpen).toBe(false);
879
+ });
880
+ it("should test localCalendarButtonClickHandler", async () => {
881
+ const page = await newSpecPage({
882
+ components: [DatePicker, DateInput, Button, Tooltip],
883
+ html: `<ic-date-picker label="Date picker label"></ic-date-picker>`,
884
+ });
885
+ const ev = { detail: { value: new Date(2022, 11, 25) } };
886
+ page.rootInstance.localCalendarButtonClickHandler(ev);
887
+ await page.waitForChanges();
888
+ await waitForTimeout(DELAY_MS);
889
+ expect(page.rootInstance.calendarOpen).toBe(true);
890
+ expect(page.rootInstance.focussedDate).toEqual(new Date(2022, 11, 25));
891
+ });
892
+ it("should test blur of day button", async () => {
893
+ const page = await newSpecPage({
894
+ components: [DatePicker, DateInput, Button, Tooltip],
895
+ html: `<ic-date-picker label="Date picker label" open-at-date="23/12/2022"></ic-date-picker>`,
896
+ });
897
+ page.rootInstance.calendarOpen = true;
898
+ await page.waitForChanges();
899
+ await waitForTimeout(DELAY_MS);
900
+ expect(page.rootInstance.dayButtonFocussed).toBe(true);
901
+ const dayButton = page.root.shadowRoot.querySelector("div.calendar-days-container > div.day-button-container:nth-child(26) > button");
902
+ dayButton.blur();
903
+ expect(page.rootInstance.dayButtonFocussed).toBe(false);
904
+ });
905
+ it("should test nav button mouse down handler", async () => {
906
+ const page = await newSpecPage({
907
+ components: [DatePicker, DateInput, Button, Tooltip],
908
+ html: `<ic-date-picker label="Date picker label" open-at-date="23/12/2022"></ic-date-picker>`,
909
+ });
910
+ page.rootInstance.calendarOpen = true;
911
+ await page.waitForChanges();
912
+ await waitForTimeout(DELAY_MS);
913
+ const dayButton = page.root.shadowRoot.querySelector("#previous-month-button");
914
+ const mouseEvent = new window.window.MouseEvent("mousedown", {
915
+ bubbles: true,
916
+ cancelable: true,
917
+ });
918
+ Object.defineProperty(mouseEvent, "preventDefault", {
919
+ value: jest.fn(),
920
+ });
921
+ dayButton.dispatchEvent(mouseEvent);
922
+ await page.waitForChanges();
923
+ expect(mouseEvent.preventDefault).toHaveBeenCalled();
924
+ });
925
+ it("should test setAriaLiveRegionText", async () => {
926
+ const page = await newSpecPage({
927
+ components: [DatePicker, DateInput, Button, Tooltip],
928
+ html: `<ic-date-picker label="Date picker label" open-at-date="23/12/2022"></ic-date-picker>`,
929
+ });
930
+ page.rootInstance.calendarOpen = true;
931
+ await page.waitForChanges();
932
+ await waitForTimeout(DELAY_MS);
933
+ const text = "some text in the aria live region";
934
+ page.rootInstance.setAriaLiveRegionText(text);
935
+ await page.waitForChanges();
936
+ expect(page.rootInstance.liveRegionEl.innerText).toEqual(text);
937
+ });
938
+ it("should test focus and blur of year button", async () => {
939
+ const page = await newSpecPage({
940
+ components: [DatePicker, DateInput, Button, Tooltip],
941
+ html: `<ic-date-picker label="Date picker label" open-at-date="23/12/2022"></ic-date-picker>`,
942
+ });
943
+ page.rootInstance.calendarOpen = true;
944
+ await page.waitForChanges();
945
+ await waitForTimeout(DELAY_MS);
946
+ const yearButton = page.root.shadowRoot.querySelector(".year-picker-button");
947
+ yearButton.click();
948
+ await page.waitForChanges();
949
+ await waitForTimeout(DELAY_MS);
950
+ expect(page.rootInstance.yearButtonFocussed).toBe(false);
951
+ const firstYearButton = page.root.shadowRoot.querySelector("div.year-picker > ic-button:nth-child(2)");
952
+ firstYearButton.focus();
953
+ await page.waitForChanges();
954
+ await waitForTimeout(DELAY_MS);
955
+ expect(page.rootInstance.yearButtonFocussed).toBe(true);
956
+ firstYearButton.blur();
957
+ await page.waitForChanges();
958
+ await waitForTimeout(DELAY_MS);
959
+ expect(page.rootInstance.yearButtonFocussed).toBe(false);
960
+ });
961
+ });
962
+ //# sourceMappingURL=ic-date-picker.spec.js.map