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

Sign up to get free protection for your applications and to get access to all the features.
Files changed (449) 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-00b08718.js → helpers-7a069459.js} +8 -3
  5. package/dist/cjs/helpers-7a069459.js.map +1 -0
  6. package/dist/cjs/helpers-f75cf7cf.js +280 -0
  7. package/dist/cjs/helpers-f75cf7cf.js.map +1 -0
  8. package/dist/cjs/ic-accordion-group.cjs.entry.js +6 -2
  9. package/dist/cjs/ic-accordion-group.cjs.entry.js.map +1 -1
  10. package/dist/cjs/ic-accordion.cjs.entry.js +1 -1
  11. package/dist/cjs/ic-alert.cjs.entry.js +1 -1
  12. package/dist/cjs/ic-back-to-top.cjs.entry.js +1 -1
  13. package/dist/cjs/ic-badge.cjs.entry.js +4 -3
  14. package/dist/cjs/ic-badge.cjs.entry.js.map +1 -1
  15. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js +1 -1
  16. package/dist/cjs/ic-breadcrumb.cjs.entry.js +1 -1
  17. package/dist/cjs/ic-button_3.cjs.entry.js +29 -12
  18. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  19. package/dist/cjs/ic-card.cjs.entry.js +5 -6
  20. package/dist/cjs/ic-card.cjs.entry.js.map +1 -1
  21. package/dist/cjs/ic-checkbox-group.cjs.entry.js +1 -1
  22. package/dist/cjs/ic-checkbox.cjs.entry.js +1 -1
  23. package/dist/cjs/ic-chip.cjs.entry.js +1 -1
  24. package/dist/cjs/ic-data-entity.cjs.entry.js +3 -6
  25. package/dist/cjs/ic-data-entity.cjs.entry.js.map +1 -1
  26. package/dist/cjs/ic-data-row.cjs.entry.js +21 -35
  27. package/dist/cjs/ic-data-row.cjs.entry.js.map +1 -1
  28. package/dist/cjs/ic-date-input.cjs.entry.js +1073 -0
  29. package/dist/cjs/ic-date-input.cjs.entry.js.map +1 -0
  30. package/dist/cjs/ic-date-picker.cjs.entry.js +1043 -0
  31. package/dist/cjs/ic-date-picker.cjs.entry.js.map +1 -0
  32. package/dist/cjs/ic-dialog.cjs.entry.js +1 -1
  33. package/dist/cjs/ic-divider.cjs.entry.js +1 -1
  34. package/dist/cjs/ic-empty-state.cjs.entry.js +1 -1
  35. package/dist/cjs/ic-footer-link-group.cjs.entry.js +1 -1
  36. package/dist/cjs/ic-footer-link.cjs.entry.js +1 -1
  37. package/dist/cjs/ic-footer.cjs.entry.js +1 -1
  38. package/dist/cjs/ic-hero.cjs.entry.js +1 -1
  39. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +1 -1
  40. package/dist/cjs/ic-input-component-container_4.cjs.entry.js +150 -0
  41. package/dist/cjs/ic-input-component-container_4.cjs.entry.js.map +1 -0
  42. package/dist/cjs/ic-link.cjs.entry.js +1 -1
  43. package/dist/cjs/ic-menu-group.cjs.entry.js +1 -1
  44. package/dist/cjs/ic-menu-item.cjs.entry.js +1 -1
  45. package/dist/cjs/ic-menu-with-multi.cjs.entry.js +2599 -0
  46. package/dist/cjs/ic-menu-with-multi.cjs.entry.js.map +1 -0
  47. package/dist/cjs/{ic-input-component-container_3.cjs.entry.js → ic-menu.cjs.entry.js} +8 -70
  48. package/dist/cjs/ic-menu.cjs.entry.js.map +1 -0
  49. package/dist/cjs/ic-navigation-button.cjs.entry.js +1 -1
  50. package/dist/cjs/ic-navigation-group.cjs.entry.js +1 -1
  51. package/dist/cjs/ic-navigation-item.cjs.entry.js +1 -1
  52. package/dist/cjs/ic-navigation-menu.cjs.entry.js +1 -1
  53. package/dist/cjs/ic-page-header.cjs.entry.js +1 -1
  54. package/dist/cjs/ic-pagination-bar.cjs.entry.js +2 -18
  55. package/dist/cjs/ic-pagination-bar.cjs.entry.js.map +1 -1
  56. package/dist/cjs/ic-pagination_4.cjs.entry.js +21 -13
  57. package/dist/cjs/ic-pagination_4.cjs.entry.js.map +1 -1
  58. package/dist/cjs/ic-popover-menu.cjs.entry.js +1 -1
  59. package/dist/cjs/ic-popover-menu.cjs.entry.js.map +1 -1
  60. package/dist/cjs/ic-radio-group.cjs.entry.js +1 -1
  61. package/dist/cjs/ic-radio-option.cjs.entry.js +1 -1
  62. package/dist/cjs/ic-search-bar.cjs.entry.js +1 -1
  63. package/dist/cjs/ic-search-bar.cjs.entry.js.map +1 -1
  64. package/dist/cjs/ic-select-with-multi.cjs.entry.js +824 -0
  65. package/dist/cjs/ic-select-with-multi.cjs.entry.js.map +1 -0
  66. package/dist/cjs/ic-side-navigation.cjs.entry.js +1 -1
  67. package/dist/cjs/ic-status-tag.cjs.entry.js +1 -1
  68. package/dist/cjs/ic-step.cjs.entry.js +1 -1
  69. package/dist/cjs/ic-stepper.cjs.entry.js +1 -1
  70. package/dist/cjs/ic-switch.cjs.entry.js +1 -1
  71. package/dist/cjs/ic-tab-group.cjs.entry.js +1 -1
  72. package/dist/cjs/ic-tab-panel.cjs.entry.js +1 -1
  73. package/dist/cjs/ic-tab.cjs.entry.js +1 -1
  74. package/dist/cjs/ic-theme.cjs.entry.js +1 -1
  75. package/dist/cjs/ic-toast.cjs.entry.js +1 -1
  76. package/dist/cjs/ic-toggle-button-group.cjs.entry.js +184 -0
  77. package/dist/cjs/ic-toggle-button-group.cjs.entry.js.map +1 -0
  78. package/dist/cjs/ic-toggle-button.cjs.entry.js +6 -3
  79. package/dist/cjs/ic-toggle-button.cjs.entry.js.map +1 -1
  80. package/dist/cjs/ic-top-navigation.cjs.entry.js +1 -1
  81. package/dist/cjs/ic-typography.cjs.entry.js +1 -1
  82. package/dist/cjs/index-4cf27b16.js +24 -4
  83. package/dist/cjs/loader.cjs.js +1 -1
  84. package/dist/collection/assets/calendar.svg +3 -0
  85. package/dist/collection/collection-manifest.json +6 -1
  86. package/dist/collection/components/ic-date-input/ic-date-input.css +560 -0
  87. package/dist/collection/components/ic-date-input/ic-date-input.js +1668 -0
  88. package/dist/collection/components/ic-date-input/ic-date-input.js.map +1 -0
  89. package/dist/collection/components/ic-date-input/story-data.js +28 -0
  90. package/dist/collection/components/ic-date-input/story-data.js.map +1 -0
  91. package/dist/collection/components/ic-date-input/test/basic/ic-date-input.spec.js +1156 -0
  92. package/dist/collection/components/ic-date-input/test/basic/ic-date-input.spec.js.map +1 -0
  93. package/dist/collection/components/ic-date-input/test/helpers/ic-date-input.js +42 -0
  94. package/dist/collection/components/ic-date-input/test/helpers/ic-date-input.js.map +1 -0
  95. package/dist/collection/components/ic-date-picker/ic-date-picker.css +878 -0
  96. package/dist/collection/components/ic-date-picker/ic-date-picker.js +1499 -0
  97. package/dist/collection/components/ic-date-picker/ic-date-picker.js.map +1 -0
  98. package/dist/collection/components/ic-date-picker/ic-day-button.js +36 -0
  99. package/dist/collection/components/ic-date-picker/ic-day-button.js.map +1 -0
  100. package/dist/collection/components/ic-date-picker/ic-month-picker.js +29 -0
  101. package/dist/collection/components/ic-date-picker/ic-month-picker.js.map +1 -0
  102. package/dist/collection/components/ic-date-picker/ic-year-picker.js +39 -0
  103. package/dist/collection/components/ic-date-picker/ic-year-picker.js.map +1 -0
  104. package/dist/collection/components/ic-date-picker/story-data.js +143 -0
  105. package/dist/collection/components/ic-date-picker/story-data.js.map +1 -0
  106. package/dist/collection/components/ic-date-picker/test/a11y/ic-date-picker.test.a11y.js +13 -0
  107. package/dist/collection/components/ic-date-picker/test/a11y/ic-date-picker.test.a11y.js.map +1 -0
  108. package/dist/collection/components/ic-date-picker/test/basic/ic-date-picker-utils.spec.js +207 -0
  109. package/dist/collection/components/ic-date-picker/test/basic/ic-date-picker-utils.spec.js.map +1 -0
  110. package/dist/collection/components/ic-date-picker/test/basic/ic-date-picker.spec.js +962 -0
  111. package/dist/collection/components/ic-date-picker/test/basic/ic-date-picker.spec.js.map +1 -0
  112. package/dist/collection/components/ic-menu-with-multi/ic-menu.css +701 -0
  113. package/dist/collection/components/ic-menu-with-multi/ic-menu.js +1458 -0
  114. package/dist/collection/components/ic-menu-with-multi/ic-menu.js.map +1 -0
  115. package/dist/collection/components/ic-menu-with-multi/test/basic/ic-menu.spec.js +880 -0
  116. package/dist/collection/components/ic-menu-with-multi/test/basic/ic-menu.spec.js.map +1 -0
  117. package/dist/collection/components/ic-select-with-multi/assets/Check.svg +3 -0
  118. package/dist/collection/components/ic-select-with-multi/assets/Clear.svg +3 -0
  119. package/dist/collection/components/ic-select-with-multi/assets/Expand.svg +3 -0
  120. package/dist/collection/components/ic-select-with-multi/ic-select.css +693 -0
  121. package/dist/collection/components/ic-select-with-multi/ic-select.js +1649 -0
  122. package/dist/collection/components/ic-select-with-multi/ic-select.js.map +1 -0
  123. package/dist/collection/components/ic-select-with-multi/story-data.js +216 -0
  124. package/dist/collection/components/ic-select-with-multi/story-data.js.map +1 -0
  125. package/dist/collection/components/ic-select-with-multi/test/a11y/ic-select.test.a11y.js +146 -0
  126. package/dist/collection/components/ic-select-with-multi/test/a11y/ic-select.test.a11y.js.map +1 -0
  127. package/dist/collection/components/ic-select-with-multi/test/basic/ic-select.e2e.js +2040 -0
  128. package/dist/collection/components/ic-select-with-multi/test/basic/ic-select.e2e.js.map +1 -0
  129. package/dist/collection/components/ic-select-with-multi/test/basic/ic-select.spec.js +1518 -0
  130. package/dist/collection/components/ic-select-with-multi/test/basic/ic-select.spec.js.map +1 -0
  131. package/dist/collection/utils/constants.js +83 -0
  132. package/dist/collection/utils/constants.js.map +1 -0
  133. package/dist/collection/utils/date-helpers.js +133 -0
  134. package/dist/collection/utils/date-helpers.js.map +1 -0
  135. package/dist/collection/utils/helpers.js +417 -5
  136. package/dist/collection/utils/helpers.js.map +1 -1
  137. package/dist/collection/utils/types.js +58 -0
  138. package/dist/collection/utils/types.js.map +1 -0
  139. package/dist/components/helpers.js +8 -3
  140. package/dist/components/helpers.js.map +1 -1
  141. package/dist/components/helpers2.js +262 -0
  142. package/dist/components/helpers2.js.map +1 -0
  143. package/dist/components/ic-accordion-group.js +7 -2
  144. package/dist/components/ic-accordion-group.js.map +1 -1
  145. package/dist/components/ic-badge.js +3 -2
  146. package/dist/components/ic-badge.js.map +1 -1
  147. package/dist/components/ic-button2.js +32 -13
  148. package/dist/components/ic-button2.js.map +1 -1
  149. package/dist/components/ic-card.js +6 -19
  150. package/dist/components/ic-card.js.map +1 -1
  151. package/dist/components/ic-checkbox-group.js +1 -1
  152. package/dist/components/ic-checkbox.js +1 -1
  153. package/dist/components/ic-chip.js +1 -1
  154. package/dist/components/ic-data-entity.js +3 -6
  155. package/dist/components/ic-data-entity.js.map +1 -1
  156. package/dist/components/ic-data-row.js +20 -34
  157. package/dist/components/ic-data-row.js.map +1 -1
  158. package/dist/components/ic-date-input.d.ts +11 -0
  159. package/dist/components/ic-date-input.js +8 -0
  160. package/dist/components/ic-date-input.js.map +1 -0
  161. package/dist/components/ic-date-input2.js +1301 -0
  162. package/dist/components/ic-date-input2.js.map +1 -0
  163. package/dist/components/ic-date-picker.d.ts +11 -0
  164. package/dist/components/ic-date-picker.js +1164 -0
  165. package/dist/components/ic-date-picker.js.map +1 -0
  166. package/dist/components/ic-input-component-container2.js +7 -6
  167. package/dist/components/ic-input-component-container2.js.map +1 -1
  168. package/dist/components/ic-link2.js +1 -1
  169. package/dist/components/ic-menu-item2.js +1 -1
  170. package/dist/components/ic-menu-with-multi.d.ts +11 -0
  171. package/dist/components/ic-menu-with-multi.js +8 -0
  172. package/dist/components/ic-menu-with-multi.js.map +1 -0
  173. package/dist/components/ic-menu2.js +5 -4
  174. package/dist/components/ic-menu2.js.map +1 -1
  175. package/dist/components/ic-menu3.js +2665 -0
  176. package/dist/components/ic-menu3.js.map +1 -0
  177. package/dist/components/ic-navigation-button.js +1 -1
  178. package/dist/components/ic-pagination-bar2.js +1 -17
  179. package/dist/components/ic-pagination-bar2.js.map +1 -1
  180. package/dist/components/ic-pagination-item2.js +1 -1
  181. package/dist/components/ic-pagination2.js +1 -1
  182. package/dist/components/ic-popover-menu.js +1 -1
  183. package/dist/components/ic-popover-menu.js.map +1 -1
  184. package/dist/components/ic-radio-group.js +1 -1
  185. package/dist/components/ic-radio-option.js +1 -1
  186. package/dist/components/ic-search-bar.js +1 -1
  187. package/dist/components/ic-search-bar.js.map +1 -1
  188. package/dist/components/ic-select-with-multi.d.ts +11 -0
  189. package/dist/components/ic-select-with-multi.js +949 -0
  190. package/dist/components/ic-select-with-multi.js.map +1 -0
  191. package/dist/components/ic-select2.js +23 -14
  192. package/dist/components/ic-select2.js.map +1 -1
  193. package/dist/components/ic-switch.js +1 -1
  194. package/dist/components/ic-tab.js +1 -1
  195. package/dist/components/ic-text-field2.js +1 -1
  196. package/dist/components/ic-toggle-button-group.js +210 -0
  197. package/dist/components/ic-toggle-button-group.js.map +1 -0
  198. package/dist/components/ic-toggle-button.js +6 -3
  199. package/dist/components/ic-toggle-button.js.map +1 -1
  200. package/dist/core/core.css +8 -5
  201. package/dist/core/core.esm.js +1 -1
  202. package/dist/core/core.esm.js.map +1 -1
  203. package/dist/core/{p-5e94fae8.entry.js → p-06ae5bec.entry.js} +2 -2
  204. package/dist/core/p-06ae5bec.entry.js.map +1 -0
  205. package/dist/core/{p-d5cc084b.entry.js → p-0939ce92.entry.js} +2 -2
  206. package/dist/core/{p-d5cc084b.entry.js.map → p-0939ce92.entry.js.map} +1 -1
  207. package/dist/core/{p-6de46cb7.entry.js → p-16f67397.entry.js} +2 -2
  208. package/dist/core/p-16f67397.entry.js.map +1 -0
  209. package/dist/core/{p-a2f366c7.entry.js → p-1832f4b5.entry.js} +2 -2
  210. package/dist/core/{p-28fb7cca.entry.js → p-1b7d426b.entry.js} +2 -2
  211. package/dist/core/p-1b7d426b.entry.js.map +1 -0
  212. package/dist/core/{p-ff1d23cd.entry.js → p-1ce75941.entry.js} +2 -2
  213. package/dist/core/{p-5746577f.entry.js → p-2e2e0099.entry.js} +2 -2
  214. package/dist/core/p-33679c06.entry.js +2 -0
  215. package/dist/core/p-33679c06.entry.js.map +1 -0
  216. package/dist/core/{p-ca262cdc.entry.js → p-36508aad.entry.js} +2 -2
  217. package/dist/core/{p-7276339a.entry.js → p-3745da83.entry.js} +2 -2
  218. package/dist/core/{p-b43bd4f3.entry.js → p-3f2e77c3.entry.js} +2 -2
  219. package/dist/core/{p-24945ee5.entry.js → p-452985d9.entry.js} +2 -2
  220. package/dist/core/p-452985d9.entry.js.map +1 -0
  221. package/dist/core/{p-3c859b9e.entry.js → p-47ac6838.entry.js} +2 -2
  222. package/dist/core/{p-3d2fcf84.entry.js → p-4f1ffa39.entry.js} +2 -2
  223. package/dist/core/{p-4df42c76.entry.js → p-5759d771.entry.js} +2 -2
  224. package/dist/core/{p-32f18701.entry.js → p-5e2e6c3b.entry.js} +2 -2
  225. package/dist/core/{p-f436630b.entry.js → p-5fe96107.entry.js} +2 -2
  226. package/dist/core/{p-7dfd61bb.entry.js → p-62e22508.entry.js} +2 -2
  227. package/dist/core/{p-d49660e0.entry.js → p-6690bc04.entry.js} +2 -2
  228. package/dist/core/{p-f827e4c0.entry.js → p-6c0e2ceb.entry.js} +2 -2
  229. package/dist/core/{p-a3ab9f4c.entry.js → p-76915584.entry.js} +2 -2
  230. package/dist/core/p-76915584.entry.js.map +1 -0
  231. package/dist/core/{p-966ab920.entry.js → p-76d26018.entry.js} +2 -2
  232. package/dist/core/{p-79b71c18.entry.js → p-776671cf.entry.js} +2 -2
  233. package/dist/core/{p-434780c8.entry.js → p-7cecf5d5.entry.js} +2 -2
  234. package/dist/core/{p-88971cea.entry.js → p-85609bdd.entry.js} +2 -2
  235. package/dist/core/{p-95d3cd52.entry.js → p-86012178.entry.js} +2 -2
  236. package/dist/core/{p-2094c844.entry.js → p-8a7e7d23.entry.js} +2 -2
  237. package/dist/core/{p-aafb2c79.entry.js → p-8c90110a.entry.js} +2 -2
  238. package/dist/core/{p-9ce5f082.entry.js → p-8ea47d42.entry.js} +2 -2
  239. package/dist/core/{p-0d181ac8.entry.js → p-982a6e88.entry.js} +2 -2
  240. package/dist/core/{p-3b9f3a07.entry.js → p-98448bdb.entry.js} +2 -2
  241. package/dist/core/{p-c263542a.entry.js → p-9d01a7ad.entry.js} +2 -2
  242. package/dist/core/{p-051b8266.entry.js → p-9d540656.entry.js} +2 -2
  243. package/dist/core/p-9e3178e8.entry.js +2 -0
  244. package/dist/core/p-9e3178e8.entry.js.map +1 -0
  245. package/dist/core/{p-9fd84c69.entry.js → p-a0f9b259.entry.js} +2 -2
  246. package/dist/core/{p-7632acc6.entry.js → p-a42c2f37.entry.js} +2 -2
  247. package/dist/core/{p-fbb1fba0.entry.js → p-a6447b13.entry.js} +2 -2
  248. package/dist/core/p-aabab75f.entry.js +2 -0
  249. package/dist/core/p-aabab75f.entry.js.map +1 -0
  250. package/dist/core/{p-116b18fe.entry.js → p-ae422058.entry.js} +2 -2
  251. package/dist/core/{p-a7d52bd1.entry.js → p-b306cbc8.entry.js} +2 -2
  252. package/dist/core/p-c7590421.entry.js +2 -0
  253. package/dist/core/p-c7590421.entry.js.map +1 -0
  254. package/dist/core/{p-a162744e.entry.js → p-c7820c23.entry.js} +2 -2
  255. package/dist/core/{p-a162744e.entry.js.map → p-c7820c23.entry.js.map} +1 -1
  256. package/dist/core/{p-d78fd9f3.entry.js → p-ca8cbd6a.entry.js} +2 -2
  257. package/dist/core/{p-da4f0a58.entry.js → p-caf857de.entry.js} +2 -2
  258. package/dist/core/p-cc7bc438.entry.js +2 -0
  259. package/dist/core/p-cc7bc438.entry.js.map +1 -0
  260. package/dist/core/p-cd799087.js +2 -0
  261. package/dist/core/p-cd799087.js.map +1 -0
  262. package/dist/core/p-d32692e2.entry.js +2 -0
  263. package/dist/core/p-d32692e2.entry.js.map +1 -0
  264. package/dist/core/p-d35c7c18.js +2 -0
  265. package/dist/core/p-d35c7c18.js.map +1 -0
  266. package/dist/core/{p-27aa95e7.entry.js → p-d3856ed3.entry.js} +2 -2
  267. package/dist/core/{p-c345a874.entry.js → p-d4fdd8c1.entry.js} +2 -2
  268. package/dist/core/{p-337b6e05.entry.js → p-d5c99ec3.entry.js} +2 -2
  269. package/dist/core/p-e473bbf8.entry.js +2 -0
  270. package/dist/core/p-e473bbf8.entry.js.map +1 -0
  271. package/dist/core/p-e74f1d09.entry.js +2 -0
  272. package/dist/core/p-e74f1d09.entry.js.map +1 -0
  273. package/dist/core/p-e79e0292.entry.js +2 -0
  274. package/dist/core/p-e79e0292.entry.js.map +1 -0
  275. package/dist/core/{p-0f0509ee.entry.js → p-e84b0310.entry.js} +2 -2
  276. package/dist/core/p-e84b0310.entry.js.map +1 -0
  277. package/dist/core/{p-93c5b849.entry.js → p-f55ad6ae.entry.js} +2 -2
  278. package/dist/core/p-f8cf2978.js +2 -0
  279. package/dist/core/p-f8cf2978.js.map +1 -0
  280. package/dist/core/p-f91527a0.entry.js +2 -0
  281. package/dist/core/p-f91527a0.entry.js.map +1 -0
  282. package/dist/core/{p-d9342548.entry.js → p-fbf4e9b7.entry.js} +2 -2
  283. package/dist/esm/core.js +1 -1
  284. package/dist/esm/date-helpers-4f432e92.js +136 -0
  285. package/dist/esm/date-helpers-4f432e92.js.map +1 -0
  286. package/dist/esm/{helpers-d06dc4ed.js → helpers-7aa21b0a.js} +8 -3
  287. package/dist/esm/helpers-7aa21b0a.js.map +1 -0
  288. package/dist/esm/helpers-f328a7b6.js +262 -0
  289. package/dist/esm/helpers-f328a7b6.js.map +1 -0
  290. package/dist/esm/ic-accordion-group.entry.js +6 -2
  291. package/dist/esm/ic-accordion-group.entry.js.map +1 -1
  292. package/dist/esm/ic-accordion.entry.js +1 -1
  293. package/dist/esm/ic-alert.entry.js +1 -1
  294. package/dist/esm/ic-back-to-top.entry.js +1 -1
  295. package/dist/esm/ic-badge.entry.js +4 -3
  296. package/dist/esm/ic-badge.entry.js.map +1 -1
  297. package/dist/esm/ic-breadcrumb-group.entry.js +1 -1
  298. package/dist/esm/ic-breadcrumb.entry.js +1 -1
  299. package/dist/esm/ic-button_3.entry.js +29 -12
  300. package/dist/esm/ic-button_3.entry.js.map +1 -1
  301. package/dist/esm/ic-card.entry.js +5 -6
  302. package/dist/esm/ic-card.entry.js.map +1 -1
  303. package/dist/esm/ic-checkbox-group.entry.js +1 -1
  304. package/dist/esm/ic-checkbox.entry.js +1 -1
  305. package/dist/esm/ic-chip.entry.js +1 -1
  306. package/dist/esm/ic-data-entity.entry.js +3 -6
  307. package/dist/esm/ic-data-entity.entry.js.map +1 -1
  308. package/dist/esm/ic-data-row.entry.js +21 -35
  309. package/dist/esm/ic-data-row.entry.js.map +1 -1
  310. package/dist/esm/ic-date-input.entry.js +1069 -0
  311. package/dist/esm/ic-date-input.entry.js.map +1 -0
  312. package/dist/esm/ic-date-picker.entry.js +1039 -0
  313. package/dist/esm/ic-date-picker.entry.js.map +1 -0
  314. package/dist/esm/ic-dialog.entry.js +1 -1
  315. package/dist/esm/ic-divider.entry.js +1 -1
  316. package/dist/esm/ic-empty-state.entry.js +1 -1
  317. package/dist/esm/ic-footer-link-group.entry.js +1 -1
  318. package/dist/esm/ic-footer-link.entry.js +1 -1
  319. package/dist/esm/ic-footer.entry.js +1 -1
  320. package/dist/esm/ic-hero.entry.js +1 -1
  321. package/dist/esm/ic-horizontal-scroll.entry.js +1 -1
  322. package/dist/esm/ic-input-component-container_4.entry.js +143 -0
  323. package/dist/esm/ic-input-component-container_4.entry.js.map +1 -0
  324. package/dist/esm/ic-link.entry.js +1 -1
  325. package/dist/esm/ic-menu-group.entry.js +1 -1
  326. package/dist/esm/ic-menu-item.entry.js +1 -1
  327. package/dist/esm/ic-menu-with-multi.entry.js +2595 -0
  328. package/dist/esm/ic-menu-with-multi.entry.js.map +1 -0
  329. package/dist/esm/{ic-input-component-container_3.entry.js → ic-menu.entry.js} +10 -70
  330. package/dist/esm/ic-menu.entry.js.map +1 -0
  331. package/dist/esm/ic-navigation-button.entry.js +1 -1
  332. package/dist/esm/ic-navigation-group.entry.js +1 -1
  333. package/dist/esm/ic-navigation-item.entry.js +1 -1
  334. package/dist/esm/ic-navigation-menu.entry.js +1 -1
  335. package/dist/esm/ic-page-header.entry.js +1 -1
  336. package/dist/esm/ic-pagination-bar.entry.js +1 -17
  337. package/dist/esm/ic-pagination-bar.entry.js.map +1 -1
  338. package/dist/esm/ic-pagination_4.entry.js +21 -13
  339. package/dist/esm/ic-pagination_4.entry.js.map +1 -1
  340. package/dist/esm/ic-popover-menu.entry.js +1 -1
  341. package/dist/esm/ic-popover-menu.entry.js.map +1 -1
  342. package/dist/esm/ic-radio-group.entry.js +1 -1
  343. package/dist/esm/ic-radio-option.entry.js +1 -1
  344. package/dist/esm/ic-search-bar.entry.js +1 -1
  345. package/dist/esm/ic-search-bar.entry.js.map +1 -1
  346. package/dist/esm/ic-select-with-multi.entry.js +820 -0
  347. package/dist/esm/ic-select-with-multi.entry.js.map +1 -0
  348. package/dist/esm/ic-side-navigation.entry.js +1 -1
  349. package/dist/esm/ic-status-tag.entry.js +1 -1
  350. package/dist/esm/ic-step.entry.js +1 -1
  351. package/dist/esm/ic-stepper.entry.js +1 -1
  352. package/dist/esm/ic-switch.entry.js +1 -1
  353. package/dist/esm/ic-tab-group.entry.js +1 -1
  354. package/dist/esm/ic-tab-panel.entry.js +1 -1
  355. package/dist/esm/ic-tab.entry.js +1 -1
  356. package/dist/esm/ic-theme.entry.js +1 -1
  357. package/dist/esm/ic-toast.entry.js +1 -1
  358. package/dist/esm/ic-toggle-button-group.entry.js +180 -0
  359. package/dist/esm/ic-toggle-button-group.entry.js.map +1 -0
  360. package/dist/esm/ic-toggle-button.entry.js +6 -3
  361. package/dist/esm/ic-toggle-button.entry.js.map +1 -1
  362. package/dist/esm/ic-top-navigation.entry.js +1 -1
  363. package/dist/esm/ic-typography.entry.js +1 -1
  364. package/dist/esm/index-93509377.js +24 -4
  365. package/dist/esm/loader.js +1 -1
  366. package/dist/types/components/ic-date-input/ic-date-input.d.ts +242 -0
  367. package/dist/types/components/ic-date-input/story-data.d.ts +1 -0
  368. package/dist/types/components/ic-date-input/test/helpers/ic-date-input.d.ts +23 -0
  369. package/dist/types/components/ic-date-picker/ic-date-picker.d.ts +251 -0
  370. package/dist/types/components/ic-date-picker/ic-day-button.d.ts +16 -0
  371. package/dist/types/components/ic-date-picker/ic-month-picker.d.ts +14 -0
  372. package/dist/types/components/ic-date-picker/ic-year-picker.d.ts +16 -0
  373. package/dist/types/components/ic-date-picker/story-data.d.ts +22 -0
  374. package/dist/types/components/ic-date-picker/test/a11y/ic-date-picker.test.a11y.d.ts +1 -0
  375. package/dist/types/components/ic-menu-with-multi/ic-menu.d.ts +208 -0
  376. package/dist/types/components/ic-select-with-multi/ic-select.d.ts +289 -0
  377. package/dist/types/components/ic-select-with-multi/story-data.d.ts +32 -0
  378. package/dist/types/components/ic-select-with-multi/test/a11y/ic-select.test.a11y.d.ts +1 -0
  379. package/dist/types/components.d.ts +966 -0
  380. package/dist/types/utils/constants.d.ts +38 -0
  381. package/dist/types/utils/date-helpers.d.ts +22 -0
  382. package/dist/types/utils/helpers.d.ts +133 -2
  383. package/dist/types/utils/types.d.ts +107 -0
  384. package/hydrate/index.js +12358 -6070
  385. package/package.json +3 -3
  386. package/dist/cjs/helpers-00b08718.js.map +0 -1
  387. package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +0 -1
  388. package/dist/cjs/ic-input-label_2.cjs.entry.js +0 -86
  389. package/dist/cjs/ic-input-label_2.cjs.entry.js.map +0 -1
  390. package/dist/core/p-0f0509ee.entry.js.map +0 -1
  391. package/dist/core/p-24945ee5.entry.js.map +0 -1
  392. package/dist/core/p-28fb7cca.entry.js.map +0 -1
  393. package/dist/core/p-2aad58b6.js +0 -2
  394. package/dist/core/p-2aad58b6.js.map +0 -1
  395. package/dist/core/p-38314d45.entry.js +0 -2
  396. package/dist/core/p-38314d45.entry.js.map +0 -1
  397. package/dist/core/p-5e94fae8.entry.js.map +0 -1
  398. package/dist/core/p-6de46cb7.entry.js.map +0 -1
  399. package/dist/core/p-7b849cb5.entry.js +0 -2
  400. package/dist/core/p-7b849cb5.entry.js.map +0 -1
  401. package/dist/core/p-9fdd7d73.entry.js +0 -2
  402. package/dist/core/p-9fdd7d73.entry.js.map +0 -1
  403. package/dist/core/p-a3ab9f4c.entry.js.map +0 -1
  404. package/dist/core/p-c9b11488.entry.js +0 -2
  405. package/dist/core/p-c9b11488.entry.js.map +0 -1
  406. package/dist/core/p-f163a406.entry.js +0 -2
  407. package/dist/core/p-f163a406.entry.js.map +0 -1
  408. package/dist/esm/helpers-d06dc4ed.js.map +0 -1
  409. package/dist/esm/ic-input-component-container_3.entry.js.map +0 -1
  410. package/dist/esm/ic-input-label_2.entry.js +0 -81
  411. package/dist/esm/ic-input-label_2.entry.js.map +0 -1
  412. /package/dist/core/{p-a2f366c7.entry.js.map → p-1832f4b5.entry.js.map} +0 -0
  413. /package/dist/core/{p-ff1d23cd.entry.js.map → p-1ce75941.entry.js.map} +0 -0
  414. /package/dist/core/{p-5746577f.entry.js.map → p-2e2e0099.entry.js.map} +0 -0
  415. /package/dist/core/{p-ca262cdc.entry.js.map → p-36508aad.entry.js.map} +0 -0
  416. /package/dist/core/{p-7276339a.entry.js.map → p-3745da83.entry.js.map} +0 -0
  417. /package/dist/core/{p-b43bd4f3.entry.js.map → p-3f2e77c3.entry.js.map} +0 -0
  418. /package/dist/core/{p-3c859b9e.entry.js.map → p-47ac6838.entry.js.map} +0 -0
  419. /package/dist/core/{p-3d2fcf84.entry.js.map → p-4f1ffa39.entry.js.map} +0 -0
  420. /package/dist/core/{p-4df42c76.entry.js.map → p-5759d771.entry.js.map} +0 -0
  421. /package/dist/core/{p-32f18701.entry.js.map → p-5e2e6c3b.entry.js.map} +0 -0
  422. /package/dist/core/{p-f436630b.entry.js.map → p-5fe96107.entry.js.map} +0 -0
  423. /package/dist/core/{p-7dfd61bb.entry.js.map → p-62e22508.entry.js.map} +0 -0
  424. /package/dist/core/{p-d49660e0.entry.js.map → p-6690bc04.entry.js.map} +0 -0
  425. /package/dist/core/{p-f827e4c0.entry.js.map → p-6c0e2ceb.entry.js.map} +0 -0
  426. /package/dist/core/{p-966ab920.entry.js.map → p-76d26018.entry.js.map} +0 -0
  427. /package/dist/core/{p-79b71c18.entry.js.map → p-776671cf.entry.js.map} +0 -0
  428. /package/dist/core/{p-434780c8.entry.js.map → p-7cecf5d5.entry.js.map} +0 -0
  429. /package/dist/core/{p-88971cea.entry.js.map → p-85609bdd.entry.js.map} +0 -0
  430. /package/dist/core/{p-95d3cd52.entry.js.map → p-86012178.entry.js.map} +0 -0
  431. /package/dist/core/{p-2094c844.entry.js.map → p-8a7e7d23.entry.js.map} +0 -0
  432. /package/dist/core/{p-aafb2c79.entry.js.map → p-8c90110a.entry.js.map} +0 -0
  433. /package/dist/core/{p-9ce5f082.entry.js.map → p-8ea47d42.entry.js.map} +0 -0
  434. /package/dist/core/{p-0d181ac8.entry.js.map → p-982a6e88.entry.js.map} +0 -0
  435. /package/dist/core/{p-3b9f3a07.entry.js.map → p-98448bdb.entry.js.map} +0 -0
  436. /package/dist/core/{p-c263542a.entry.js.map → p-9d01a7ad.entry.js.map} +0 -0
  437. /package/dist/core/{p-051b8266.entry.js.map → p-9d540656.entry.js.map} +0 -0
  438. /package/dist/core/{p-9fd84c69.entry.js.map → p-a0f9b259.entry.js.map} +0 -0
  439. /package/dist/core/{p-7632acc6.entry.js.map → p-a42c2f37.entry.js.map} +0 -0
  440. /package/dist/core/{p-fbb1fba0.entry.js.map → p-a6447b13.entry.js.map} +0 -0
  441. /package/dist/core/{p-116b18fe.entry.js.map → p-ae422058.entry.js.map} +0 -0
  442. /package/dist/core/{p-a7d52bd1.entry.js.map → p-b306cbc8.entry.js.map} +0 -0
  443. /package/dist/core/{p-d78fd9f3.entry.js.map → p-ca8cbd6a.entry.js.map} +0 -0
  444. /package/dist/core/{p-da4f0a58.entry.js.map → p-caf857de.entry.js.map} +0 -0
  445. /package/dist/core/{p-27aa95e7.entry.js.map → p-d3856ed3.entry.js.map} +0 -0
  446. /package/dist/core/{p-c345a874.entry.js.map → p-d4fdd8c1.entry.js.map} +0 -0
  447. /package/dist/core/{p-337b6e05.entry.js.map → p-d5c99ec3.entry.js.map} +0 -0
  448. /package/dist/core/{p-93c5b849.entry.js.map → p-f55ad6ae.entry.js.map} +0 -0
  449. /package/dist/core/{p-d9342548.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