@watermarkinsights/ripple 5.6.0-2 → 5.6.0-4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (382) hide show
  1. package/dist/cjs/{chartFunctions-800ea87d.js → chartFunctions-fb38580b.js} +10 -7
  2. package/dist/cjs/{functions-c6e27c75.js → functions-a70fcff7.js} +7 -104
  3. package/dist/{esm/app-globals-bbc3f842.js → cjs/global-a72648f4.js} +2 -7
  4. package/dist/cjs/index-e86c28b6.js +2653 -0
  5. package/dist/cjs/{intl-9f836d29.js → intl-4a3a3a94.js} +1 -1
  6. package/dist/cjs/loader.cjs.js +3 -4
  7. package/dist/cjs/priv-calendar.cjs.entry.js +5 -6
  8. package/dist/cjs/priv-chart-popover.cjs.entry.js +5 -6
  9. package/dist/cjs/priv-navigator-button.cjs.entry.js +3 -4
  10. package/dist/cjs/priv-navigator-item.cjs.entry.js +3 -4
  11. package/dist/cjs/priv-option-list.cjs.entry.js +4 -5
  12. package/dist/cjs/ripple.cjs.js +11 -12
  13. package/dist/cjs/wm-action-menu_2.cjs.entry.js +6 -8
  14. package/dist/cjs/wm-button.cjs.entry.js +4 -5
  15. package/dist/cjs/wm-chart-slice.cjs.entry.js +1 -1
  16. package/dist/cjs/wm-chart.cjs.entry.js +9 -12
  17. package/dist/cjs/wm-date-range.cjs.entry.js +8 -9
  18. package/dist/cjs/wm-datepicker.cjs.entry.js +8 -9
  19. package/dist/cjs/wm-file-list.cjs.entry.js +3 -4
  20. package/dist/cjs/wm-file.cjs.entry.js +4 -5
  21. package/dist/cjs/wm-input.cjs.entry.js +5 -6
  22. package/dist/cjs/wm-line-chart.cjs.entry.js +14 -15
  23. package/dist/cjs/wm-modal-footer.cjs.entry.js +3 -4
  24. package/dist/cjs/wm-modal-header.cjs.entry.js +5 -6
  25. package/dist/cjs/wm-modal.cjs.entry.js +5 -6
  26. package/dist/cjs/wm-navigation_3.cjs.entry.js +10 -13
  27. package/dist/cjs/wm-navigator.cjs.entry.js +3 -4
  28. package/dist/cjs/wm-nested-select.cjs.entry.js +7 -8
  29. package/dist/cjs/wm-optgroup.cjs.entry.js +4 -5
  30. package/dist/cjs/wm-option_2.cjs.entry.js +8 -10
  31. package/dist/cjs/wm-pagination.cjs.entry.js +4 -5
  32. package/dist/cjs/wm-progress-indicator_3.cjs.entry.js +8 -10
  33. package/dist/cjs/wm-search.cjs.entry.js +6 -7
  34. package/dist/cjs/wm-snackbar.cjs.entry.js +6 -7
  35. package/dist/cjs/wm-tab-item_3.cjs.entry.js +8 -11
  36. package/dist/cjs/wm-tag-input.cjs.entry.js +7 -8
  37. package/dist/cjs/wm-tag-option.cjs.entry.js +2 -2
  38. package/dist/cjs/wm-textarea.cjs.entry.js +5 -6
  39. package/dist/cjs/wm-timepicker.cjs.entry.js +5 -6
  40. package/dist/cjs/wm-toggletip.cjs.entry.js +5 -6
  41. package/dist/cjs/wm-uploader.cjs.entry.js +6 -7
  42. package/dist/cjs/wm-wrapper.cjs.entry.js +1 -1
  43. package/dist/collection/collection-manifest.json +2 -2
  44. package/dist/collection/components/charts/chartFunctions.js +3 -3
  45. package/dist/collection/components/charts/chartFunctions.spec.js +16 -0
  46. package/dist/collection/components/charts/priv-chart-popover/priv-chart-popover.e2e.js +81 -0
  47. package/dist/collection/components/charts/priv-chart-popover/priv-chart-popover.js +2 -2
  48. package/dist/collection/components/charts/screenshots.e2e.js +96 -0
  49. package/dist/collection/components/charts/wm-chart/wm-chart.css +13 -8
  50. package/dist/collection/components/charts/wm-chart/wm-chart.e2e.js +213 -0
  51. package/dist/collection/components/charts/wm-chart/wm-chart.js +3 -5
  52. package/dist/collection/components/charts/wm-chart/wm-chart.spec.js +37 -0
  53. package/dist/collection/components/charts/wm-line-chart/wm-line-chart.e2e.js +176 -0
  54. package/dist/collection/components/charts/wm-line-chart/wm-line-chart.js +9 -9
  55. package/dist/collection/components/charts/wm-line-chart/wm-line-chart.spec.js +163 -0
  56. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-indicator.css +13 -8
  57. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-indicator.js +1 -1
  58. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.e2e.js +69 -0
  59. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.js +1 -1
  60. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.spec.js +79 -0
  61. package/dist/collection/components/datepickers/priv-calendar/priv-calendar.js +2 -2
  62. package/dist/collection/components/datepickers/priv-calendar/priv-calendar.spec.js +89 -0
  63. package/dist/collection/components/datepickers/wm-date-range.e2e.js +443 -0
  64. package/dist/collection/components/datepickers/wm-date-range.js +13 -17
  65. package/dist/collection/components/datepickers/wm-date-range.spec.js +22 -0
  66. package/dist/collection/components/datepickers/wm-datepicker.e2e.js +382 -0
  67. package/dist/collection/components/datepickers/wm-datepicker.js +13 -17
  68. package/dist/collection/components/datepickers/wm-datepicker.spec.js +21 -0
  69. package/dist/collection/components/selects/priv-option-list/priv-option-list.js +7 -10
  70. package/dist/collection/components/selects/wm-nested-select/wm-nested-select.js +3 -3
  71. package/dist/collection/components/selects/wm-optgroup/wm-optgroup.js +2 -2
  72. package/dist/collection/components/selects/wm-select/wm-select.e2e.js +521 -0
  73. package/dist/collection/components/selects/wm-select/wm-select.js +2 -2
  74. package/dist/collection/components/selects/wm-select/wm-select.spec.js +271 -0
  75. package/dist/collection/components/wm-action-menu/wm-action-menu.e2e.js +200 -0
  76. package/dist/collection/components/wm-action-menu/wm-action-menu.js +1 -1
  77. package/dist/collection/components/wm-action-menu/wm-action-menu.spec.js +48 -0
  78. package/dist/collection/components/wm-button/wm-button.e2e.js +55 -0
  79. package/dist/collection/components/wm-button/wm-button.js +1 -1
  80. package/dist/collection/components/wm-button/wm-button.spec.js +74 -0
  81. package/dist/collection/components/wm-file/wm-file.js +1 -1
  82. package/dist/collection/components/wm-file/wm-file.spec.js +194 -0
  83. package/dist/collection/components/wm-file-list/wm-file-list.js +1 -1
  84. package/dist/collection/components/wm-file-list/wm-file-list.spec.js +69 -0
  85. package/dist/collection/components/wm-input/wm-input.e2e.js +32 -0
  86. package/dist/collection/components/wm-input/wm-input.js +1 -1
  87. package/dist/collection/components/wm-input/wm-input.spec.js +173 -0
  88. package/dist/collection/components/wm-menuitem/wm-menuitem.e2e.js +23 -0
  89. package/dist/collection/components/wm-menuitem/wm-menuitem.js +1 -1
  90. package/dist/collection/components/wm-menuitem/wm-menuitem.spec.js +54 -0
  91. package/dist/collection/components/wm-modal/wm-modal-footer.js +1 -1
  92. package/dist/collection/components/wm-modal/wm-modal-footer.spec.js +11 -0
  93. package/dist/collection/components/wm-modal/wm-modal-header.js +1 -1
  94. package/dist/collection/components/wm-modal/wm-modal-header.spec.js +8 -0
  95. package/dist/collection/components/wm-modal/wm-modal.e2e.js +104 -0
  96. package/dist/collection/components/wm-modal/wm-modal.js +2 -2
  97. package/dist/collection/components/wm-modal/wm-modal.spec.js +30 -0
  98. package/dist/collection/components/wm-navigation/wm-navigation-hamburger.js +1 -1
  99. package/dist/collection/components/wm-navigation/wm-navigation-item.js +1 -1
  100. package/dist/collection/components/wm-navigation/wm-navigation.e2e.js +102 -0
  101. package/dist/collection/components/wm-navigation/wm-navigation.js +2 -2
  102. package/dist/collection/components/wm-navigation/wm-navigation.spec.js +91 -0
  103. package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.e2e.js +50 -0
  104. package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.js +1 -1
  105. package/dist/collection/components/wm-navigator/priv-navigator-item/priv-navigator-item.js +1 -1
  106. package/dist/collection/components/wm-navigator/wm-navigator.e2e.js +209 -0
  107. package/dist/collection/components/wm-navigator/wm-navigator.spec.js +177 -0
  108. package/dist/collection/components/wm-option/wm-option.e2e.js +22 -0
  109. package/dist/collection/components/wm-option/wm-option.js +1 -1
  110. package/dist/collection/components/wm-option/wm-option.spec.js +63 -0
  111. package/dist/collection/components/wm-pagination/wm-pagination.e2e.js +312 -0
  112. package/dist/collection/components/wm-pagination/wm-pagination.js +1 -1
  113. package/dist/collection/components/wm-search/wm-search.e2e.js +76 -0
  114. package/dist/collection/components/wm-search/wm-search.js +4 -5
  115. package/dist/collection/components/wm-search/wm-search.spec.js +71 -0
  116. package/dist/collection/components/wm-snackbar/wm-snackbar.e2e.js +112 -0
  117. package/dist/collection/components/wm-snackbar/wm-snackbar.js +2 -2
  118. package/dist/collection/components/wm-snackbar/wm-snackbar.spec.js +9 -0
  119. package/dist/collection/components/wm-tabs/wm-tab-item/wm-tab-item.js +1 -1
  120. package/dist/collection/components/wm-tabs/wm-tab-list/wm-tab-list.js +1 -1
  121. package/dist/collection/components/wm-tabs/wm-tab-panel/wm-tab-panel.js +1 -1
  122. package/dist/collection/components/wm-tabs/wm-tabs.e2e.js +91 -0
  123. package/dist/collection/components/wm-tabs/wm-tabs.spec.js +12 -0
  124. package/dist/collection/components/wm-tag-input/wm-tag-input.e2e.js +204 -0
  125. package/dist/collection/components/wm-tag-input/wm-tag-input.js +3 -3
  126. package/dist/collection/components/wm-tag-input/wm-tag-input.spec.js +195 -0
  127. package/dist/collection/components/wm-textarea/wm-textarea.e2e.js +41 -0
  128. package/dist/collection/components/wm-textarea/wm-textarea.js +1 -1
  129. package/dist/collection/components/wm-textarea/wm-textarea.spec.js +79 -0
  130. package/dist/collection/components/wm-timepicker/wm-timepicker.e2e.js +163 -0
  131. package/dist/collection/components/wm-timepicker/wm-timepicker.js +8 -11
  132. package/dist/collection/components/wm-timepicker/wm-timepicker.spec.js +147 -0
  133. package/dist/collection/components/wm-toggletip/wm-toggletip.e2e.js +69 -0
  134. package/dist/collection/components/wm-toggletip/wm-toggletip.js +2 -2
  135. package/dist/collection/components/wm-toggletip/wm-toggletip.spec.js +21 -0
  136. package/dist/collection/components/wm-uploader/wm-uploader.e2e.js +70 -0
  137. package/dist/collection/components/wm-uploader/wm-uploader.js +2 -2
  138. package/dist/collection/components/wm-uploader/wm-uploader.spec.js +234 -0
  139. package/dist/collection/global/functions.spec.js +126 -0
  140. package/dist/collection/lang/lang.spec.js +20 -0
  141. package/dist/esm/{chartFunctions-7e5619f6.js → chartFunctions-c07590f5.js} +10 -7
  142. package/dist/esm/{functions-046fc5a3.js → functions-dea8b0f6.js} +8 -105
  143. package/dist/{cjs/app-globals-2eb5411e.js → esm/global-f4891559.js} +1 -10
  144. package/dist/esm/index-558b5a82.js +2622 -0
  145. package/dist/esm/{intl-0822738a.js → intl-417d8b33.js} +1 -1
  146. package/dist/esm/loader.js +4 -5
  147. package/dist/esm/priv-calendar.entry.js +5 -6
  148. package/dist/esm/priv-chart-popover.entry.js +5 -6
  149. package/dist/esm/priv-navigator-button.entry.js +3 -4
  150. package/dist/esm/priv-navigator-item.entry.js +3 -4
  151. package/dist/esm/priv-option-list.entry.js +4 -5
  152. package/dist/esm/ripple.js +12 -13
  153. package/dist/esm/wm-action-menu_2.entry.js +6 -8
  154. package/dist/esm/wm-button.entry.js +4 -5
  155. package/dist/esm/wm-chart-slice.entry.js +1 -1
  156. package/dist/esm/wm-chart.entry.js +9 -12
  157. package/dist/esm/wm-date-range.entry.js +8 -9
  158. package/dist/esm/wm-datepicker.entry.js +8 -9
  159. package/dist/esm/wm-file-list.entry.js +3 -4
  160. package/dist/esm/wm-file.entry.js +4 -5
  161. package/dist/esm/wm-input.entry.js +5 -6
  162. package/dist/esm/wm-line-chart.entry.js +14 -15
  163. package/dist/esm/wm-modal-footer.entry.js +3 -4
  164. package/dist/esm/wm-modal-header.entry.js +5 -6
  165. package/dist/esm/wm-modal.entry.js +5 -6
  166. package/dist/esm/wm-navigation_3.entry.js +10 -13
  167. package/dist/esm/wm-navigator.entry.js +3 -4
  168. package/dist/esm/wm-nested-select.entry.js +7 -8
  169. package/dist/esm/wm-optgroup.entry.js +4 -5
  170. package/dist/esm/wm-option_2.entry.js +8 -10
  171. package/dist/esm/wm-pagination.entry.js +4 -5
  172. package/dist/esm/wm-progress-indicator_3.entry.js +8 -10
  173. package/dist/esm/wm-search.entry.js +6 -7
  174. package/dist/esm/wm-snackbar.entry.js +6 -7
  175. package/dist/esm/wm-tab-item_3.entry.js +8 -11
  176. package/dist/esm/wm-tag-input.entry.js +7 -8
  177. package/dist/esm/wm-tag-option.entry.js +2 -2
  178. package/dist/esm/wm-textarea.entry.js +5 -6
  179. package/dist/esm/wm-timepicker.entry.js +5 -6
  180. package/dist/esm/wm-toggletip.entry.js +5 -6
  181. package/dist/esm/wm-uploader.entry.js +6 -7
  182. package/dist/esm/wm-wrapper.entry.js +1 -1
  183. package/dist/esm-es5/{chartFunctions-7e5619f6.js → chartFunctions-c07590f5.js} +1 -1
  184. package/dist/esm-es5/functions-dea8b0f6.js +1 -0
  185. package/dist/esm-es5/global-f4891559.js +1 -0
  186. package/dist/esm-es5/index-558b5a82.js +1 -0
  187. package/dist/esm-es5/{intl-0822738a.js → intl-417d8b33.js} +1 -1
  188. package/dist/esm-es5/loader.js +1 -1
  189. package/dist/esm-es5/priv-calendar.entry.js +1 -1
  190. package/dist/esm-es5/priv-chart-popover.entry.js +1 -1
  191. package/dist/esm-es5/priv-navigator-button.entry.js +1 -1
  192. package/dist/esm-es5/priv-navigator-item.entry.js +1 -1
  193. package/dist/esm-es5/priv-option-list.entry.js +1 -1
  194. package/dist/esm-es5/ripple.js +1 -1
  195. package/dist/esm-es5/wm-action-menu_2.entry.js +1 -1
  196. package/dist/esm-es5/wm-button.entry.js +1 -1
  197. package/dist/esm-es5/wm-chart-slice.entry.js +1 -1
  198. package/dist/esm-es5/wm-chart.entry.js +1 -1
  199. package/dist/esm-es5/wm-date-range.entry.js +1 -1
  200. package/dist/esm-es5/wm-datepicker.entry.js +1 -1
  201. package/dist/esm-es5/wm-file-list.entry.js +1 -1
  202. package/dist/esm-es5/wm-file.entry.js +1 -1
  203. package/dist/esm-es5/wm-input.entry.js +1 -1
  204. package/dist/esm-es5/wm-line-chart.entry.js +1 -1
  205. package/dist/esm-es5/wm-modal-footer.entry.js +1 -1
  206. package/dist/esm-es5/wm-modal-header.entry.js +1 -1
  207. package/dist/esm-es5/wm-modal.entry.js +1 -1
  208. package/dist/esm-es5/wm-navigation_3.entry.js +1 -1
  209. package/dist/esm-es5/wm-navigator.entry.js +1 -1
  210. package/dist/esm-es5/wm-nested-select.entry.js +1 -1
  211. package/dist/esm-es5/wm-optgroup.entry.js +1 -1
  212. package/dist/esm-es5/wm-option_2.entry.js +1 -1
  213. package/dist/esm-es5/wm-pagination.entry.js +1 -1
  214. package/dist/esm-es5/wm-progress-indicator_3.entry.js +1 -1
  215. package/dist/esm-es5/wm-search.entry.js +1 -1
  216. package/dist/esm-es5/wm-snackbar.entry.js +1 -1
  217. package/dist/esm-es5/wm-tab-item_3.entry.js +1 -1
  218. package/dist/esm-es5/wm-tag-input.entry.js +1 -1
  219. package/dist/esm-es5/wm-tag-option.entry.js +1 -1
  220. package/dist/esm-es5/wm-textarea.entry.js +1 -1
  221. package/dist/esm-es5/wm-timepicker.entry.js +1 -1
  222. package/dist/esm-es5/wm-toggletip.entry.js +1 -1
  223. package/dist/esm-es5/wm-uploader.entry.js +1 -1
  224. package/dist/esm-es5/wm-wrapper.entry.js +1 -1
  225. package/dist/loader/cdn.js +2 -1
  226. package/dist/loader/index.cjs.js +2 -1
  227. package/dist/loader/index.d.ts +0 -3
  228. package/dist/loader/index.es2017.js +2 -1
  229. package/dist/loader/index.js +2 -1
  230. package/dist/ripple/p-021ff5fa.system.entry.js +1 -0
  231. package/dist/ripple/{p-1a474fb3.entry.js → p-0289e88d.entry.js} +1 -1
  232. package/dist/ripple/p-03a28fd8.entry.js +1 -0
  233. package/dist/ripple/p-10fffb96.entry.js +1 -0
  234. package/dist/ripple/p-182f1286.system.entry.js +1 -0
  235. package/dist/ripple/{p-fb3cfb8b.entry.js → p-1ae47d48.entry.js} +1 -1
  236. package/dist/ripple/p-1aead401.entry.js +1 -0
  237. package/dist/ripple/p-230cd6ec.system.entry.js +1 -0
  238. package/dist/ripple/p-24ba754f.entry.js +1 -0
  239. package/dist/ripple/p-24c56217.system.entry.js +1 -0
  240. package/dist/ripple/p-294b38ca.system.entry.js +1 -0
  241. package/dist/ripple/p-2c7bb996.system.entry.js +1 -0
  242. package/dist/ripple/p-2ed54dbc.entry.js +1 -0
  243. package/dist/ripple/p-2f899c05.system.entry.js +1 -0
  244. package/dist/ripple/p-311923b2.system.entry.js +1 -0
  245. package/dist/ripple/{p-823d7b4e.system.entry.js → p-32bf3f5b.system.entry.js} +1 -1
  246. package/dist/ripple/p-350223f1.entry.js +1 -0
  247. package/dist/ripple/p-3568472c.entry.js +1 -0
  248. package/dist/ripple/p-37687638.system.entry.js +1 -0
  249. package/dist/ripple/{p-e2c9204d.system.entry.js → p-37f39cd9.system.entry.js} +1 -1
  250. package/dist/ripple/p-3bdac9a4.entry.js +1 -0
  251. package/dist/ripple/{p-13b1d775.entry.js → p-48e09589.entry.js} +1 -1
  252. package/dist/ripple/{p-7135f074.system.entry.js → p-4df006b1.system.entry.js} +1 -1
  253. package/dist/ripple/p-4e1065d1.system.entry.js +1 -0
  254. package/dist/ripple/{p-18d3ad51.entry.js → p-503702ef.entry.js} +1 -1
  255. package/dist/ripple/{p-06792553.system.entry.js → p-5052c9dd.system.entry.js} +1 -1
  256. package/dist/ripple/p-568c595f.js +2 -0
  257. package/dist/ripple/p-588d678d.entry.js +1 -0
  258. package/dist/ripple/p-5b9babd9.system.entry.js +1 -0
  259. package/dist/ripple/p-61a19aa5.entry.js +1 -0
  260. package/dist/ripple/p-62744f66.entry.js +1 -0
  261. package/dist/ripple/{p-043901ab.system.entry.js → p-65d26233.system.entry.js} +1 -1
  262. package/dist/ripple/p-6a6bfac8.entry.js +1 -0
  263. package/dist/ripple/{p-c171f37b.entry.js → p-6dd5fd2e.entry.js} +1 -1
  264. package/dist/ripple/p-71ed7e56.system.entry.js +1 -0
  265. package/dist/ripple/p-87d0933f.system.entry.js +1 -0
  266. package/dist/ripple/{p-cd0cc88d.entry.js → p-88ebddd7.entry.js} +1 -1
  267. package/dist/ripple/p-8c02e3a3.entry.js +1 -0
  268. package/dist/ripple/{p-05f0f2e9.entry.js → p-8c7d5cd9.entry.js} +1 -1
  269. package/dist/ripple/p-902a54c5.entry.js +1 -0
  270. package/dist/ripple/{p-e562e32d.system.entry.js → p-91b21054.system.entry.js} +1 -1
  271. package/dist/ripple/p-94db7841.entry.js +1 -0
  272. package/dist/ripple/p-9e9c9d20.entry.js +1 -0
  273. package/dist/ripple/p-a20333e9.entry.js +1 -0
  274. package/dist/ripple/p-a394d680.system.js +1 -0
  275. package/dist/ripple/p-ab8d78cc.system.js +2 -0
  276. package/dist/ripple/{p-1123b0fd.entry.js → p-ace05e0b.entry.js} +1 -1
  277. package/dist/ripple/p-ade3d9a9.entry.js +1 -0
  278. package/dist/ripple/p-b0a02b42.system.entry.js +1 -0
  279. package/dist/ripple/p-b8963e4d.system.entry.js +1 -0
  280. package/dist/ripple/{p-c2fc7204.system.entry.js → p-b918e97a.system.entry.js} +1 -1
  281. package/dist/ripple/p-bb884a44.js +1 -0
  282. package/dist/ripple/p-c10f3273.entry.js +1 -0
  283. package/dist/ripple/{p-98bf2ccb.system.js → p-c28863e7.system.js} +1 -1
  284. package/dist/ripple/p-c4df2809.entry.js +1 -0
  285. package/dist/ripple/p-c4ec5884.system.entry.js +1 -0
  286. package/dist/ripple/p-c51398ba.entry.js +1 -0
  287. package/dist/ripple/p-c7dfcc99.system.entry.js +1 -0
  288. package/dist/ripple/p-c885c7f9.entry.js +1 -0
  289. package/dist/ripple/p-c93275bd.system.entry.js +1 -0
  290. package/dist/ripple/p-c9543950.system.entry.js +1 -0
  291. package/dist/ripple/p-c999c1f7.system.entry.js +1 -0
  292. package/dist/ripple/{p-772c4fd2.system.entry.js → p-cb690d83.system.entry.js} +1 -1
  293. package/dist/ripple/{p-b6df0519.system.js → p-cd7cef47.system.js} +1 -1
  294. package/dist/ripple/{p-28169294.js → p-d32bf479.js} +1 -1
  295. package/dist/ripple/{p-ac47e6f5.system.entry.js → p-d52545c7.system.entry.js} +1 -1
  296. package/dist/ripple/p-d9122935.system.entry.js +1 -0
  297. package/dist/ripple/p-daf03315.entry.js +1 -0
  298. package/dist/ripple/p-de283385.system.js +1 -0
  299. package/dist/ripple/p-de35505c.entry.js +1 -0
  300. package/dist/ripple/p-e004b92b.system.entry.js +1 -0
  301. package/dist/ripple/p-e26a6bd0.entry.js +1 -0
  302. package/dist/ripple/p-e42eeb59.system.entry.js +1 -0
  303. package/dist/ripple/{p-58a073f2.js → p-e8c12272.js} +1 -1
  304. package/dist/ripple/p-e9395ac5.entry.js +1 -0
  305. package/dist/ripple/p-eeebc2c7.entry.js +1 -0
  306. package/dist/ripple/p-ef0f98fc.js +1 -0
  307. package/dist/ripple/p-f47cf5d4.system.js +1 -0
  308. package/dist/ripple/p-f69a16d4.system.entry.js +1 -0
  309. package/dist/ripple/p-f8c6fa96.system.entry.js +1 -0
  310. package/dist/ripple/{p-e25e8ed7.system.entry.js → p-fb3d5a64.system.entry.js} +1 -1
  311. package/dist/ripple/ripple.esm.js +1 -1
  312. package/dist/ripple/ripple.js +1 -1
  313. package/dist/types/stencil-public-runtime.d.ts +10 -3
  314. package/package.json +1 -1
  315. package/dist/cjs/index-788526f5.js +0 -1863
  316. package/dist/esm/index-130e07bb.js +0 -1832
  317. package/dist/esm-es5/app-globals-bbc3f842.js +0 -1
  318. package/dist/esm-es5/functions-046fc5a3.js +0 -1
  319. package/dist/esm-es5/index-130e07bb.js +0 -1
  320. package/dist/ripple/p-0b7a64cd.system.entry.js +0 -1
  321. package/dist/ripple/p-0db47768.system.entry.js +0 -1
  322. package/dist/ripple/p-140d2dad.system.entry.js +0 -1
  323. package/dist/ripple/p-1727c66e.entry.js +0 -1
  324. package/dist/ripple/p-179e4aee.entry.js +0 -1
  325. package/dist/ripple/p-1ed0a315.system.entry.js +0 -1
  326. package/dist/ripple/p-200298b3.entry.js +0 -1
  327. package/dist/ripple/p-22704516.system.entry.js +0 -1
  328. package/dist/ripple/p-28a88d69.entry.js +0 -1
  329. package/dist/ripple/p-28a89430.entry.js +0 -1
  330. package/dist/ripple/p-29388a85.entry.js +0 -1
  331. package/dist/ripple/p-2952dc73.entry.js +0 -1
  332. package/dist/ripple/p-2ec551cc.entry.js +0 -1
  333. package/dist/ripple/p-30aa965a.entry.js +0 -1
  334. package/dist/ripple/p-341d27c6.system.entry.js +0 -1
  335. package/dist/ripple/p-354a97f2.entry.js +0 -1
  336. package/dist/ripple/p-35f78ec6.system.entry.js +0 -1
  337. package/dist/ripple/p-381d004e.system.entry.js +0 -1
  338. package/dist/ripple/p-39de670a.entry.js +0 -1
  339. package/dist/ripple/p-3ad563c4.system.entry.js +0 -1
  340. package/dist/ripple/p-3ea3db64.system.entry.js +0 -1
  341. package/dist/ripple/p-42925871.entry.js +0 -1
  342. package/dist/ripple/p-46f449d2.system.js +0 -1
  343. package/dist/ripple/p-540f74b1.system.entry.js +0 -1
  344. package/dist/ripple/p-61666258.entry.js +0 -1
  345. package/dist/ripple/p-64449b64.entry.js +0 -1
  346. package/dist/ripple/p-68fc8da3.system.entry.js +0 -1
  347. package/dist/ripple/p-6e95e98c.system.js +0 -1
  348. package/dist/ripple/p-71ddeb97.system.js +0 -1
  349. package/dist/ripple/p-7b5be38a.js +0 -1
  350. package/dist/ripple/p-833c05ca.entry.js +0 -1
  351. package/dist/ripple/p-8789b4c9.js +0 -1
  352. package/dist/ripple/p-8dd54304.system.entry.js +0 -1
  353. package/dist/ripple/p-9420679d.entry.js +0 -1
  354. package/dist/ripple/p-96697a65.system.entry.js +0 -1
  355. package/dist/ripple/p-974ca7a4.system.entry.js +0 -1
  356. package/dist/ripple/p-97e62c9d.system.entry.js +0 -1
  357. package/dist/ripple/p-b116fb2d.entry.js +0 -1
  358. package/dist/ripple/p-bb28c2c7.system.entry.js +0 -1
  359. package/dist/ripple/p-c9dc5cfa.entry.js +0 -1
  360. package/dist/ripple/p-ca6bbd68.system.entry.js +0 -1
  361. package/dist/ripple/p-cb85c4a7.entry.js +0 -1
  362. package/dist/ripple/p-cc5b07b1.system.entry.js +0 -1
  363. package/dist/ripple/p-cef8a45b.system.js +0 -2
  364. package/dist/ripple/p-d6502e2e.entry.js +0 -1
  365. package/dist/ripple/p-d78dad3d.entry.js +0 -1
  366. package/dist/ripple/p-d7b7c350.entry.js +0 -1
  367. package/dist/ripple/p-d9da0502.js +0 -2
  368. package/dist/ripple/p-dde32280.entry.js +0 -1
  369. package/dist/ripple/p-dfaa6a61.system.entry.js +0 -1
  370. package/dist/ripple/p-e2de8541.system.entry.js +0 -1
  371. package/dist/ripple/p-ea407923.entry.js +0 -1
  372. package/dist/ripple/p-ea9c152f.entry.js +0 -1
  373. package/dist/ripple/p-f02dce0f.system.entry.js +0 -1
  374. package/dist/ripple/p-f38622dc.system.entry.js +0 -1
  375. package/dist/ripple/p-f8c7adab.system.entry.js +0 -1
  376. package/dist/ripple/p-fdb4cf9e.system.entry.js +0 -1
  377. package/dist/ripple/p-feb80dd1.entry.js +0 -1
  378. package/dist/ripple/p-ff0e05e4.entry.js +0 -1
  379. package/dist/types/components/selects/priv-option-list/priv-option-list.d.ts +0 -68
  380. package/dist/types/components/selects/wm-nested-select/wm-nested-select.d.ts +0 -55
  381. package/dist/types/components/selects/wm-optgroup/wm-optgroup.d.ts +0 -16
  382. package/dist/types/components/wm-option/wm-option.d.ts +0 -40
@@ -0,0 +1,382 @@
1
+ import { newE2EPage } from "@stencil/core/testing";
2
+ import { AxePuppeteer } from "@axe-core/puppeteer";
3
+ describe("wm-datepicker", () => {
4
+ let page, component, input, btn, popup, popupTitleDay;
5
+ beforeEach(async () => {
6
+ page = await newE2EPage();
7
+ await page.setContent(`<html lang='en'><head><title>Page</title></head><body><main><h1>Title</h1>
8
+ <wm-datepicker id="dp" label="label"></wm-datepicker>
9
+ </main></body></html>`);
10
+ component = await page.find("wm-datepicker");
11
+ input = await page.find("wm-datepicker >>> input");
12
+ btn = await page.find("wm-datepicker >>> #toggle");
13
+ popup = await page.find("wm-datepicker >>> #popup");
14
+ popupTitleDay = await page.find("wm-datepicker >>> #popup-title-month");
15
+ // await page.keyboard.press("Tab");
16
+ // await page.waitForChanges();
17
+ });
18
+ it("passes Axe checks", async () => {
19
+ const results = await new AxePuppeteer(page).analyze();
20
+ expect(results.violations.length).toBe(0);
21
+ });
22
+ // TODO
23
+ // see https://dequeuniversity.com/checklists/web/form-validation-feedback
24
+ // for Dynamic Error Detection / Error messages
25
+ // see also role="alert"
26
+ /* INPUT */
27
+ // See datepicker-input.e2e.ts
28
+ /* BUTTON */
29
+ // Opening and closing the date picker
30
+ it("opens at today's date by default", async () => {
31
+ const popup = await page.find("wm-datepicker >>> .popup");
32
+ const today = new Date();
33
+ const year = today.getUTCFullYear();
34
+ const month = (today.getUTCMonth() + 1).toString().padStart(2, "0");
35
+ const day = today.getUTCDate().toString();
36
+ const dateTable = await popup.find("[role='grid']");
37
+ // await page.waitForChanges();
38
+ const selDate = await dateTable.find("[aria-selected='true']");
39
+ expect(selDate).toEqualAttribute("data-year", year);
40
+ expect(selDate).toEqualAttribute("data-month", month);
41
+ expect(selDate.textContent).toBe(day);
42
+ });
43
+ it("opens at the date in the input if there is one", async () => {
44
+ const input = await page.find("wm-datepicker >>> input");
45
+ const popup = await page.find("wm-datepicker >>> .popup");
46
+ await input.type("02/01/2030");
47
+ await component.setProperty("calendarDate", "2030-02-01");
48
+ await page.waitForChanges();
49
+ await page.keyboard.press("Tab");
50
+ await page.keyboard.press("Enter");
51
+ await page.waitForChanges();
52
+ const dateTable = await popup.find("[role='grid']");
53
+ const selDate = await dateTable.find("[aria-selected='true']");
54
+ expect(selDate).toEqualAttribute("data-year", "2030");
55
+ expect(selDate).toEqualAttribute("data-month", "02");
56
+ expect(selDate.textContent).toBe("1");
57
+ });
58
+ it("Closes the popup when user triggers the calendar button", async () => {
59
+ const popup = await page.find("wm-datepicker >>> .popup");
60
+ await page.keyboard.press("Tab"); // in input
61
+ await page.keyboard.press("Tab"); // on btn
62
+ await page.keyboard.press("Enter");
63
+ await page.waitForChanges();
64
+ expect(popup).toHaveClass("open");
65
+ await page.keyboard.press("Escape");
66
+ await page.waitForChanges();
67
+ expect(popup).not.toHaveClass("open");
68
+ });
69
+ /* POPUP */
70
+ it("closes the calendar popup when the user presses ESCAPE", async () => {
71
+ await input.type("02/03/2019");
72
+ await component.setProperty("calendarDate", "2019-02-03");
73
+ await page.waitForChanges();
74
+ await page.keyboard.press("Tab");
75
+ await page.keyboard.press("Enter");
76
+ await page.waitForChanges();
77
+ await page.keyboard.press("Escape");
78
+ await page.waitForChanges();
79
+ expect(popup).not.toHaveClass("open");
80
+ });
81
+ it("shows the next month on PAGE DOWN and shows the previous month on PAGE UP", async () => {
82
+ await input.type("02/03/2019");
83
+ await component.setProperty("calendarDate", "2019-02-03");
84
+ await page.waitForChanges();
85
+ await page.keyboard.press("Tab");
86
+ await page.keyboard.press("Enter");
87
+ await page.waitForChanges();
88
+ await page.keyboard.press("PageDown");
89
+ await page.waitForChanges();
90
+ expect(popupTitleDay.textContent).toBe("March 2019");
91
+ let activeElId = await page.evaluate(() => document.activeElement.shadowRoot.activeElement.id);
92
+ expect(activeElId).toEqual("cell-20190303");
93
+ await page.keyboard.press("PageUp");
94
+ await page.waitForChanges();
95
+ await page.keyboard.press("PageUp");
96
+ await page.waitForChanges();
97
+ await page.keyboard.press("PageUp");
98
+ await page.waitForChanges();
99
+ activeElId = await page.evaluate(() => document.activeElement.shadowRoot.activeElement.id);
100
+ expect(activeElId).toEqual("cell-20181203");
101
+ });
102
+ it("handles HOME and END keys", async () => {
103
+ await input.type("02/15/2020");
104
+ await component.setProperty("calendarDate", "2020-02-15");
105
+ await page.waitForChanges();
106
+ await page.keyboard.press("Tab");
107
+ await page.keyboard.press("Enter");
108
+ await page.waitForChanges();
109
+ await page.keyboard.press("Home");
110
+ await page.waitForChanges();
111
+ const firstDayOfMonth = await page.evaluate(() => document.activeElement.shadowRoot.activeElement.id);
112
+ expect(firstDayOfMonth).toEqual("cell-20200201");
113
+ await page.keyboard.press("End");
114
+ await page.waitForChanges();
115
+ const lastDayOfMonth = await page.evaluate(() => document.activeElement.shadowRoot.activeElement.id);
116
+ expect(lastDayOfMonth).toEqual("cell-20200229"); // 2020 is a leap year
117
+ });
118
+ it("navigates the calendar with keyboard (day view)", async () => {
119
+ // left/right: -1 / +1 in the row
120
+ // up/down
121
+ await input.type("08/15/2024");
122
+ await component.setProperty("calendarDate", "2024-08-15");
123
+ await page.keyboard.press("Tab"); // on the toggle popup btn
124
+ await page.waitForChanges();
125
+ await page.keyboard.press("Enter"); // open popup
126
+ await page.waitForChanges();
127
+ await page.keyboard.press("ArrowLeft");
128
+ await page.waitForChanges();
129
+ let focusedCell = await popup.find("[role='gridcell'][tabindex='0']");
130
+ await page.waitForChanges();
131
+ expect(focusedCell).toEqualAttribute("id", "cell-20240814");
132
+ await page.keyboard.press("ArrowUp");
133
+ await page.waitForChanges();
134
+ focusedCell = await popup.find("[role='gridcell'][tabindex='0']");
135
+ expect(focusedCell).toEqualAttribute("id", "cell-20240807");
136
+ await page.keyboard.press("ArrowRight");
137
+ await page.waitForChanges();
138
+ focusedCell = await popup.find("[role='gridcell'][tabindex='0']");
139
+ expect(focusedCell).toEqualAttribute("id", "cell-20240808");
140
+ await page.keyboard.press("ArrowDown");
141
+ await page.waitForChanges();
142
+ focusedCell = await popup.find("[role='gridcell'][tabindex='0']");
143
+ expect(focusedCell).toEqualAttribute("id", "cell-20240815");
144
+ });
145
+ it("navigates the calendar with keyboard (month view)", async () => {
146
+ await input.type("08/15/2024");
147
+ await component.setProperty("calendarDate", "2024-08-15");
148
+ await page.keyboard.press("Tab"); // on the toggle popup btn
149
+ await page.waitForChanges();
150
+ await page.keyboard.press("Enter"); // open popup
151
+ await page.keyboard.down("Shift");
152
+ await page.waitForChanges();
153
+ await page.keyboard.press("Tab"); // next btn
154
+ await page.waitForChanges();
155
+ await page.keyboard.press("Tab"); // popup-title (month + year)
156
+ await page.waitForChanges();
157
+ await page.keyboard.press("Enter");
158
+ await page.waitForChanges();
159
+ await page.keyboard.up("Shift");
160
+ await page.waitForChanges();
161
+ await page.keyboard.press("ArrowLeft");
162
+ await page.waitForChanges();
163
+ let focusedCell = await popup.find("[role='gridcell'][tabindex='0']");
164
+ await page.waitForChanges();
165
+ expect(focusedCell).toEqualAttribute("id", "month-6"); // month is july (7), 0-indexed
166
+ await page.keyboard.press("ArrowUp");
167
+ await page.waitForChanges();
168
+ focusedCell = await popup.find("[role='gridcell'][tabindex='0']");
169
+ expect(focusedCell).toEqualAttribute("id", "month-3");
170
+ await page.keyboard.press("ArrowRight");
171
+ await page.waitForChanges();
172
+ focusedCell = await popup.find("[role='gridcell'][tabindex='0']");
173
+ expect(focusedCell).toEqualAttribute("id", "month-4");
174
+ await page.keyboard.press("ArrowDown");
175
+ await page.waitForChanges();
176
+ focusedCell = await popup.find("[role='gridcell'][tabindex='0']");
177
+ expect(focusedCell).toEqualAttribute("id", "month-7");
178
+ });
179
+ // it("goes to the year view when the month name is clicked", async () => {
180
+ // // (i.e. allows selection of a month)
181
+ // });
182
+ it("goes to the previous/next month when the arrow button is triggered in day view", async () => {
183
+ await input.type("11/29/1999");
184
+ await component.setProperty("calendarDate", "1999-11-29");
185
+ await page.keyboard.press("Tab"); // on the toggle popup btn
186
+ await page.waitForChanges();
187
+ await page.keyboard.press("Enter"); // open popup
188
+ await page.waitForChanges();
189
+ await page.keyboard.down("Shift");
190
+ await page.waitForChanges();
191
+ await page.keyboard.press("Tab"); // next btn
192
+ await page.waitForChanges();
193
+ await page.keyboard.press("Tab"); // popup-title (month + year)
194
+ await page.waitForChanges();
195
+ await page.keyboard.press("Tab"); // prev btn
196
+ await page.waitForChanges();
197
+ await page.keyboard.up("Shift");
198
+ await page.waitForChanges();
199
+ await page.keyboard.press("Enter"); // press prev btn
200
+ await page.waitForChanges();
201
+ expect(popup).toHaveClasses(["open", "day-view"]);
202
+ expect(popupTitleDay.textContent).toBe("October 1999");
203
+ await page.keyboard.press("Tab"); // popup title btn
204
+ await page.keyboard.press("Tab"); // next btn
205
+ await page.keyboard.press("Enter"); // press next btn
206
+ await page.waitForChanges();
207
+ await page.keyboard.press("Enter"); // press next btn
208
+ await page.waitForChanges();
209
+ expect(popupTitleDay.textContent).toBe("December 1999");
210
+ });
211
+ it("goes to the previous/next year when the arrow button is clicked in month view", async () => {
212
+ await input.type("11/29/1999");
213
+ await component.setProperty("calendarDate", "1999-11-29");
214
+ await page.waitForChanges();
215
+ await page.keyboard.press("Tab"); // on the toggle popup btn
216
+ await page.waitForChanges();
217
+ await page.keyboard.press("Enter"); // open popup
218
+ await page.waitForChanges();
219
+ await page.keyboard.down("Shift");
220
+ await page.keyboard.press("Tab"); // next btn
221
+ await page.waitForChanges();
222
+ await page.keyboard.press("Tab"); // month view btn
223
+ await page.waitForChanges();
224
+ await page.keyboard.up("Shift");
225
+ await page.waitForChanges();
226
+ await page.keyboard.press("Enter"); // press month view btn
227
+ await page.waitForChanges();
228
+ expect(popup).toHaveClasses(["open", "month-view"]);
229
+ const title = await popup.find("#popup-title-year");
230
+ expect(title.textContent).toBe("1999");
231
+ await page.keyboard.down("Shift");
232
+ await page.keyboard.press("Tab"); // next btn
233
+ await page.keyboard.up("Shift");
234
+ await page.keyboard.press("Enter"); // press next btn
235
+ await page.waitForChanges();
236
+ expect(title.textContent).toBe("2000");
237
+ await page.keyboard.down("Shift");
238
+ await page.keyboard.press("Tab"); // year btn
239
+ await page.keyboard.down("Shift");
240
+ await page.keyboard.press("Tab"); // prev btn
241
+ await page.keyboard.up("Shift");
242
+ await page.keyboard.press("Enter"); // press prev btn
243
+ await page.waitForChanges();
244
+ expect(title.textContent).toBe("1999");
245
+ await page.keyboard.press("Enter"); // press prev btn
246
+ await page.waitForChanges();
247
+ await page.keyboard.press("Enter"); // press prev btn
248
+ await page.waitForChanges();
249
+ expect(title.textContent).toBe("1997");
250
+ });
251
+ it("has the aria attributes related to the popup", async () => {
252
+ // NB "If the element with the aria-expanded attribute controls the expansion of another grouping container
253
+ // that is not 'owned by' the element, the author SHOULD reference the container by using the aria-controls attribute."
254
+ // src: https://www.w3.org/TR/wai-aria-1.1/#aria-expanded
255
+ expect(btn).toHaveAttribute("aria-expanded");
256
+ // Not sure is aria-haspopup is necessary. If it is present the popup should have a role
257
+ // if that role is grid (the only role that seems to correspond) then the cells must have
258
+ // a role of gridcell
259
+ // https://www.w3.org/TR/wai-aria/#aria-haspopup
260
+ // expect(btn).toHaveAttribute("aria-haspopup");
261
+ //Removed aria-controls since the popup comes immediately after the aria-expanded controller:
262
+ //https://www.heydonworks.com/article/aria-controls-is-poop
263
+ });
264
+ it("toggles aria-expanded attribute", async () => {
265
+ expect(btn).toEqualAttribute("aria-expanded", "false");
266
+ await page.keyboard.press("Tab");
267
+ await page.keyboard.press("Tab");
268
+ await page.keyboard.press("Enter");
269
+ await page.waitForChanges();
270
+ expect(btn).toEqualAttribute("aria-expanded", "true");
271
+ });
272
+ it("properly fills the-label on table cells", async () => {
273
+ // screen reader should read "Thursday, May 10 2018" on focus
274
+ // screen reader should read "Thursday, May 10 2018, selected" on select
275
+ await input.type("05/10/2018");
276
+ await component.setProperty("calendarDate", "2018-05-10");
277
+ await page.waitForChanges();
278
+ await page.keyboard.press("Tab");
279
+ await page.waitForChanges();
280
+ await page.keyboard.press("Enter");
281
+ await page.waitForChanges();
282
+ const focusedCell = await popup.find("[role='gridcell'][tabindex='0']");
283
+ await page.waitForChanges();
284
+ // day of the week is read by sr bcse it's the table column
285
+ expect(focusedCell).toEqualAttribute("aria-label", "Thursday, May 10, 2018");
286
+ // screen reader should read "Thursday, May 10 2018, selected" on select
287
+ await page.keyboard.press("Enter");
288
+ await page.waitForChanges();
289
+ const selCell = await popup.find("[aria-selected='true']");
290
+ // day of the week is read by sr bcse it's the table column
291
+ expect(selCell).toEqualAttribute("aria-label", "Thursday, May 10, 2018");
292
+ });
293
+ it("aligns dates properly", async () => {
294
+ // -> check that both 01/01/1999 and 12/31/2100 are in the Friday column
295
+ // couldn't figure this one out...
296
+ });
297
+ it("emits event on input blur", async () => {
298
+ page = await newE2EPage();
299
+ await page.setContent(`<html lang='en'><head><title>Page</title></head><body><main><h1>Title</h1>
300
+ <wm-datepicker id="dp" label="label"></wm-datepicker>
301
+ <div id="indicator">no event heard</div>
302
+ </main></body></html>`);
303
+ component = await page.find("wm-datepicker");
304
+ input = await page.find("wm-datepicker >>> input");
305
+ await page.waitForChanges();
306
+ await page.evaluate(async () => {
307
+ const indicator = document.querySelector("#indicator");
308
+ await document.addEventListener("wmDatepickerInputBlurred", () => (indicator.textContent = "event heard"));
309
+ });
310
+ await page.waitForChanges;
311
+ const indicator = await page.find("#indicator");
312
+ expect(indicator.textContent).toBe("no event heard");
313
+ await input.type("05/10/2018");
314
+ await page.keyboard.press("Tab");
315
+ await page.waitForChanges();
316
+ expect(indicator.textContent).toBe("event heard");
317
+ });
318
+ it("emits event on change", async () => {
319
+ page = await newE2EPage();
320
+ await page.setContent(`<html lang='en'><head><title>Page</title></head><body><main><h1>Title</h1>
321
+ <wm-datepicker id="dp" label="label"></wm-datepicker>
322
+ <div id="indicator">events heard: 0</div>
323
+ </main></body></html>`);
324
+ component = await page.find("wm-datepicker");
325
+ input = await page.find("wm-datepicker >>> input");
326
+ await page.waitForChanges();
327
+ await page.evaluate(async () => {
328
+ const indicator = document.querySelector("#indicator");
329
+ await document
330
+ .querySelector("wm-datepicker")
331
+ .addEventListener("change", () => (indicator.textContent =
332
+ indicator.textContent.slice(0, -1) + (parseInt(indicator.textContent.slice(-1)) + 1)));
333
+ });
334
+ await page.waitForChanges;
335
+ const indicator = await page.find("#indicator");
336
+ expect(indicator.textContent).toBe("events heard: 0");
337
+ // user types date
338
+ await input.type("05/10/2018");
339
+ await page.keyboard.press("Tab");
340
+ await page.waitForChanges();
341
+ expect(indicator.textContent).toBe("events heard: 1");
342
+ // user selects date from calendar
343
+ await page.keyboard.press("Enter");
344
+ await page.waitForChanges();
345
+ await page.keyboard.press("ArrowRight");
346
+ await page.keyboard.press("Enter");
347
+ await page.waitForChanges();
348
+ expect(indicator.textContent).toBe("events heard: 2");
349
+ });
350
+ it("emits event with date on cell selection", async () => {
351
+ page = await newE2EPage();
352
+ await page.setContent(`<html lang='en'><head><title>Page</title></head><body><main><h1>Title</h1>
353
+ <wm-datepicker id="dp" value="12/30/1999" label="label"></wm-datepicker>
354
+ <div id="indicator"></div>
355
+ </main></body></html>`);
356
+ component = await page.find("wm-datepicker");
357
+ input = await page.find("wm-datepicker >>> input");
358
+ await page.waitForChanges();
359
+ await page.evaluate(async () => {
360
+ const indicator = document.querySelector("#indicator");
361
+ await document.querySelector("wm-datepicker").addEventListener("wmDatepickerDateSelected", (ev) => (indicator.textContent =
362
+ //@ts-ignore
363
+ `date received: ${ev.detail.date}`));
364
+ });
365
+ await page.waitForChanges;
366
+ const indicator = await page.find("#indicator");
367
+ // user types date
368
+ await page.keyboard.press("Tab");
369
+ await page.keyboard.press("Tab");
370
+ await page.waitForChanges();
371
+ await page.keyboard.press("Enter");
372
+ await page.waitForChanges();
373
+ await page.keyboard.press("Enter");
374
+ await page.waitForChanges();
375
+ expect(indicator.textContent).toBe("date received: 1999-12-30");
376
+ });
377
+ });
378
+ // Sources:
379
+ // https://watermarkinsights.atlassian.net/browse/DNP-3411
380
+ // https://watermarkinsights.atlassian.net/browse/DNP-4318
381
+ // https://axesslab.com/accessible-datepickers/
382
+ // https://www.w3.org/WAI/PF/HTML/wiki/Datepickers
@@ -212,23 +212,23 @@ export class DatePicker {
212
212
  this.liveRegionEl.textContent = message;
213
213
  }
214
214
  render() {
215
- return (h(Host, { key: 'daac54e642a4c00b37dff5167cf0fd3322b98874', "aria-busy": "false", class: `${this.errorMessage ? "invalid" : ""}` }, h("div", { key: '0633196770bcd3965a8fe60ecd1972653ed3e25c', ref: (d) => (this.dpWrapperEl = d), class: `wrapper label-${this.labelPosition} ${this.errorMessage ? "invalid" : ""}` }, h("div", { key: 'ba80e128d0345635d90c4641c508d05eb4d3794e', class: "label-wrapper", ref: (e) => (this.labelWrapperEl = e) }, this.labelPosition !== "none" && (h("label", { key: '4905e937c7e6249537c5ed43f77331883d006794', id: "datepickerLabel", htmlFor: "date-input", class: "label", title: `${this.label} (${this.dateFormat})` }, this.label, this.requiredField && (h("span", { key: '637e35c7f255629aa75cf177822154a1e6e6e7b3', "aria-hidden": "true", class: "required" }, "*"))))), h("div", { key: '8676b6e03022cd8787d0a77a0b3e6c4dd8419b59' }, h("div", { key: 'e9f24478e3beb32f38ef65aff197d7872e1f3d67', class: "single-wrapper input" }, h("input", { key: '4661fedeafd62c45e1aec2aad699faede4d750b6', disabled: this.isDisabled, type: "text", id: "single-date-input", class: "date-input", name: "date", placeholder: this.dateFormat, value: this.value, onFocus: () => this.handleInputFocus(), onInput: (ev) => this.handleInput(ev), onBlur: () => this.handleInputBlur(), onChange: () => this.handleInputChange(), ref: (input) => (this.inputEl = input), "aria-describedby": "error", "aria-label": this.label, "aria-required": this.requiredField ? "true" : null }), h("div", { key: '0a2afc12a5e44bcb8a9deb92c7171945c67289f4', class: "container", id: "wm-container" }, h("button", { key: 'b6b63ef23dee93ff470de4d5a5d2769086bcb808', disabled: this.disabled, onClick: this.togglePopup.bind(this), "aria-label": intl.formatMessage({
215
+ return (h(Host, { "aria-busy": "false", class: `${this.errorMessage ? "invalid" : ""}` }, h("div", { ref: (d) => (this.dpWrapperEl = d), class: `wrapper label-${this.labelPosition} ${this.errorMessage ? "invalid" : ""}` }, h("div", { class: "label-wrapper", ref: (e) => (this.labelWrapperEl = e) }, this.labelPosition !== "none" && (h("label", { id: "datepickerLabel", htmlFor: "date-input", class: "label", title: `${this.label} (${this.dateFormat})` }, this.label, this.requiredField && (h("span", { "aria-hidden": "true", class: "required" }, "*"))))), h("div", null, h("div", { class: "single-wrapper input" }, h("input", { disabled: this.isDisabled, type: "text", id: "single-date-input", class: "date-input", name: "date", placeholder: this.dateFormat, value: this.value, onFocus: () => this.handleInputFocus(), onInput: (ev) => this.handleInput(ev), onBlur: () => this.handleInputBlur(), onChange: () => this.handleInputChange(), ref: (input) => (this.inputEl = input), "aria-describedby": "error", "aria-label": this.label, "aria-required": this.requiredField ? "true" : null }), h("div", { class: "container", id: "wm-container" }, h("button", { disabled: this.disabled, onClick: this.togglePopup.bind(this), "aria-label": intl.formatMessage({
216
216
  id: "date.selectDate",
217
217
  defaultMessage: "Select date",
218
218
  description: "Button text for screen readers.",
219
- }), "aria-describedby": "single-date-input", ref: (el) => (this.toggleEl = el), "aria-expanded": `${this.isExpanded}`, class: "toggle", id: "toggle" }, h("span", { key: 'debb3ae89f32960a7a269b9f6c951f5bb7bfd874', class: "calendar", title: intl.formatMessage({
219
+ }), "aria-describedby": "single-date-input", ref: (el) => (this.toggleEl = el), "aria-expanded": `${this.isExpanded}`, class: "toggle", id: "toggle" }, h("span", { class: "calendar", title: intl.formatMessage({
220
220
  id: "date.calendarView",
221
221
  defaultMessage: "Calendar View",
222
222
  description: "Calendar button",
223
- }) })), h("div", { key: '87ff9723a2960d5725f5f731dcc0d30719a8bb09', class: `popup-wrapper ${this.calEl && this.calEl.view}-view ${this.openUp ? "expand-upwards" : ""}`, id: "popup-wrapper", ref: (el) => (this.popupEl = el), onClick: () => (this.popupClicked = true) }, h("div", { key: '989a9bc4bd537394bfb2fe1ecd83311bb57187d4', tabIndex: 0, onFocus: () => this.calEl.focusLastFocusable() }), h("priv-calendar", { key: '3253b7e256dc7137aae2c4c2a79099e0093ecc65', ref: (el) => (this.calEl = el), startDate: this.calendarDate, focusDate: this.calendarDate, class: "inside" }), h("div", { key: '9cacded01a3163bebd249d6ed4601ca9a6c3dfd0', tabIndex: 0, onFocus: () => this.calEl.focusFirstFocusable() })), h("div", { key: 'fe890d55779f0619bc6c144d1fd47cc2cb26fe04', id: "live-region", "aria-live": "polite", "aria-relevant": "text", class: "sr-only" }), h("div", { key: '71e28a0c1aaa2c1ddce511bfbf0d9cf6794382ab', id: "month-title", class: "sr-only" }, intl.formatMessage({
223
+ }) })), h("div", { class: `popup-wrapper ${this.calEl && this.calEl.view}-view ${this.openUp ? "expand-upwards" : ""}`, id: "popup-wrapper", ref: (el) => (this.popupEl = el), onClick: () => (this.popupClicked = true) }, h("div", { tabIndex: 0, onFocus: () => this.calEl.focusLastFocusable() }), h("priv-calendar", { ref: (el) => (this.calEl = el), startDate: this.calendarDate, focusDate: this.calendarDate, class: "inside" }), h("div", { tabIndex: 0, onFocus: () => this.calEl.focusFirstFocusable() })), h("div", { id: "live-region", "aria-live": "polite", "aria-relevant": "text", class: "sr-only" }), h("div", { id: "month-title", class: "sr-only" }, intl.formatMessage({
224
224
  id: "date.selectMonth",
225
225
  defaultMessage: "Activate to select a month.",
226
226
  description: "Calendar button",
227
- })), h("div", { key: '2df13fae273fd2186e35d50ab58d888b45bf0b40', id: "year-title", class: "sr-only" }, intl.formatMessage({
227
+ })), h("div", { id: "year-title", class: "sr-only" }, intl.formatMessage({
228
228
  id: "date.selectYear",
229
229
  defaultMessage: "Activate to select a year.",
230
230
  description: "Calendar button",
231
- })))), h("div", { key: '71ca47b61c3ffd7e19c273ae3e4c68a7f3ef1afd', id: "error", class: "error" }, this.errorMessage), h("div", { key: '5adc31a91d03cd34d01e48a88617481051905341', ref: (el) => (this.liveRegionEl = el), class: "sr-only", "aria-live": "polite", "aria-atomic": "true" })))));
231
+ })))), h("div", { id: "error", class: "error" }, this.errorMessage), h("div", { ref: (el) => (this.liveRegionEl = el), class: "sr-only", "aria-live": "polite", "aria-atomic": "true" })))));
232
232
  }
233
233
  static get is() { return "wm-datepicker"; }
234
234
  static get encapsulation() { return "shadow"; }
@@ -433,17 +433,14 @@ export class DatePicker {
433
433
  "complexType": {
434
434
  "signature": "(inputFormat: string, outputFormat: string, date?: string) => Promise<string>",
435
435
  "parameters": [{
436
- "name": "inputFormat",
437
- "type": "string",
438
- "docs": ""
436
+ "tags": [],
437
+ "text": ""
439
438
  }, {
440
- "name": "outputFormat",
441
- "type": "string",
442
- "docs": ""
439
+ "tags": [],
440
+ "text": ""
443
441
  }, {
444
- "name": "date",
445
- "type": "string | undefined",
446
- "docs": ""
442
+ "tags": [],
443
+ "text": ""
447
444
  }],
448
445
  "references": {
449
446
  "Promise": {
@@ -462,9 +459,8 @@ export class DatePicker {
462
459
  "complexType": {
463
460
  "signature": "(input?: string) => Promise<boolean>",
464
461
  "parameters": [{
465
- "name": "input",
466
- "type": "string | undefined",
467
- "docs": ""
462
+ "tags": [],
463
+ "text": ""
468
464
  }],
469
465
  "references": {
470
466
  "Promise": {
@@ -0,0 +1,21 @@
1
+ import { newSpecPage } from "@stencil/core/testing";
2
+ import * as globalFunctions from "../../global/functions";
3
+ jest.spyOn(globalFunctions, "generateId").mockReturnValue("random-id");
4
+ import { DatePicker } from "./wm-datepicker";
5
+ describe("wm-datepicker", () => {
6
+ it("builds", async () => {
7
+ const comp = await newSpecPage({
8
+ components: [DatePicker],
9
+ html: '<wm-datepicker label="mock label"></wm-datepicker>',
10
+ });
11
+ expect(comp.root).toMatchSnapshot();
12
+ });
13
+ it("sets input to required", async () => {
14
+ const page = await newSpecPage({
15
+ components: [DatePicker],
16
+ html: `<wm-datepicker label='datepicker' required-field='true'></wm-datepicker>`,
17
+ });
18
+ const input = await page.root.shadowRoot.querySelector("input");
19
+ expect(input).toEqualAttribute("aria-required", "true");
20
+ });
21
+ });
@@ -363,7 +363,7 @@ export class PrivOptionList {
363
363
  });
364
364
  }
365
365
  render() {
366
- return (h("div", { key: '5b68d72316e606221910dc14ff637092e5e7432b', class: "list-wrapper" }, this.search && this.renderSearchField(), this.visibleSelectAllButton && this.renderSelectAllButton(), h("div", { key: '6328f15ef19cd487969510765b5bb6ba9e5935bb', id: "list", class: "options-wrapper", tabindex: -1, role: "listbox", "aria-multiselectable": this.multiple ? "true" : null, "aria-labelledby": "label", ref: (el) => (this.listboxEl = el) }, this.searchTerm && this.filteredOptions.length === 0 && this.renderSearchFailedMessage(), this.multiple && this.renderCloneOptions(), h("slot", { key: '294582de9a9222cedad5d88b155d60adb7a1426d' })), h("div", { key: '4a72518f04cf009c97694f9b332074c9b5f77629', id: "optionlist-announcement", "aria-live": "polite", "aria-atomic": "true", class: "sr-only", ref: (el) => (this.liveRegionEl = el) }, this.announcement)));
366
+ return (h("div", { class: "list-wrapper" }, this.search && this.renderSearchField(), this.visibleSelectAllButton && this.renderSelectAllButton(), h("div", { id: "list", class: "options-wrapper", tabindex: -1, role: "listbox", "aria-multiselectable": this.multiple ? "true" : null, "aria-labelledby": "label", ref: (el) => (this.listboxEl = el) }, this.searchTerm && this.filteredOptions.length === 0 && this.renderSearchFailedMessage(), this.multiple && this.renderCloneOptions(), h("slot", null)), h("div", { id: "optionlist-announcement", "aria-live": "polite", "aria-atomic": "true", class: "sr-only", ref: (el) => (this.liveRegionEl = el) }, this.announcement)));
367
367
  }
368
368
  static get is() { return "priv-option-list"; }
369
369
  static get originalStyleUrls() {
@@ -548,9 +548,8 @@ export class PrivOptionList {
548
548
  "complexType": {
549
549
  "signature": "(_: MutationRecord) => Promise<void>",
550
550
  "parameters": [{
551
- "name": "_",
552
- "type": "MutationRecord",
553
- "docs": ""
551
+ "tags": [],
552
+ "text": ""
554
553
  }],
555
554
  "references": {
556
555
  "Promise": {
@@ -590,9 +589,8 @@ export class PrivOptionList {
590
589
  "complexType": {
591
590
  "signature": "(option: HTMLElement) => Promise<void>",
592
591
  "parameters": [{
593
- "name": "option",
594
- "type": "HTMLElement",
595
- "docs": ""
592
+ "tags": [],
593
+ "text": ""
596
594
  }],
597
595
  "references": {
598
596
  "Promise": {
@@ -615,9 +613,8 @@ export class PrivOptionList {
615
613
  "complexType": {
616
614
  "signature": "(optionToSelect?: \"next\" | \"previous\") => Promise<void>",
617
615
  "parameters": [{
618
- "name": "optionToSelect",
619
- "type": "\"next\" | \"previous\" | undefined",
620
- "docs": ""
616
+ "tags": [],
617
+ "text": ""
621
618
  }],
622
619
  "references": {
623
620
  "Promise": {
@@ -269,14 +269,14 @@ export class NestedSelect {
269
269
  this.isExpanded ? this.close() : this.open();
270
270
  },
271
271
  };
272
- return (h(Host, { key: '8771f6abb8cc9ed2657d0f6ec31b837352cdb4d0', onBlur: (ev) => this.handleComponentBlur(ev) }, h("div", { key: 'fb64f235e8ce911df58f04a426cf4149c9ea818e', class: `wrapper ${getTextDir()} label-${this.labelPosition} ${this.errorMessage ? "invalid" : ""}` }, h("div", { key: '86a40eefed2fe8b0113d2887dcca0453ac6a984a', class: "label-wrapper" }, h("label", { key: '296a84604f95f4446d06f1618879786a89e98902', class: "label", id: "label", htmlFor: "selectbtn" }, this.label,
272
+ return (h(Host, { onBlur: (ev) => this.handleComponentBlur(ev) }, h("div", { class: `wrapper ${getTextDir()} label-${this.labelPosition} ${this.errorMessage ? "invalid" : ""}` }, h("div", { class: "label-wrapper" }, h("label", { class: "label", id: "label", htmlFor: "selectbtn" }, this.label,
273
273
  // we can't use aria-required or required attributes because it's invalid on the elements we're using (button controlling a listbox)
274
- this.requiredField ? (h("span", { class: "required" }, h("span", { class: "sr-only" }, globalMessages.requiredField), h("span", { "aria-hidden": "true" }, "*"))) : (""))), h("div", { key: '212227342d050b279d589ea2c3dde05019ab166f', class: "button-wrapper" }, h("button", Object.assign({ key: 'f239aa90bdd30c10cdfdc8a355899b02c8c4ea94' }, buttonProps, { class: "displayedoption", ref: (el) => (this.buttonEl = el), onBlur: (ev) => this.handleButtonBlur(ev), onFocus: () => this.close() }), h("span", { key: 'f73375b774c2d940cf5afae37225ffaf4255486e', class: "overflowcontrol" }, h("span", { key: 'a9ae2f27508a9c69feeeea0345f825394c06c918', class: "button-text" }, this.renderButtonText())), this.renderOverflowCount()), h("div", { key: '714a38674ca3011e57e25ade678f7d7b4203f5f2', class: "dropdown", ref: (el) => (this.dropdownEl = el) }, h("div", { key: '532dd17d04d7fbee57b53ed3f911e785321f6edf', class: `menu ${this.optgroupExpanded ? "hidden" : ""}` }, this.renderClearSelectionButton(), this.optgroupEls.map((optgroupEl) => {
274
+ this.requiredField ? (h("span", { class: "required" }, h("span", { class: "sr-only" }, globalMessages.requiredField), h("span", { "aria-hidden": "true" }, "*"))) : (""))), h("div", { class: "button-wrapper" }, h("button", Object.assign({}, buttonProps, { class: "displayedoption", ref: (el) => (this.buttonEl = el), onBlur: (ev) => this.handleButtonBlur(ev), onFocus: () => this.close() }), h("span", { class: "overflowcontrol" }, h("span", { class: "button-text" }, this.renderButtonText())), this.renderOverflowCount()), h("div", { class: "dropdown", ref: (el) => (this.dropdownEl = el) }, h("div", { class: `menu ${this.optgroupExpanded ? "hidden" : ""}` }, this.renderClearSelectionButton(), this.optgroupEls.map((optgroupEl) => {
275
275
  return (h("button", { class: "menuitem group-btn", role: "menuitem", tabindex: -1, onClick: () => {
276
276
  optgroupEl.isExpanded = !optgroupEl.isExpanded;
277
277
  forceUpdate(this.el);
278
278
  }, onKeyDown: (ev) => this.handleMenuitemKeydown(ev) }, h("span", null, optgroupEl.label), this.renderSelectionCount(optgroupEl)));
279
- })), h("div", { key: '9f65293fb3514808a7afc99f9ccf7be3c76854fb', class: `option-list-wrapper ${this.optgroupExpanded ? "visible" : ""}` }, h("slot", { key: 'ff01236e84136b637fe4dc6bbf4075ff655f661d' }))), h("div", { key: '49a965130ab5e5ebadc94b0661dbb97000f3621d', id: "error", class: this.errorMessage ? "error-message" : "" }, this.errorMessage)))));
279
+ })), h("div", { class: `option-list-wrapper ${this.optgroupExpanded ? "visible" : ""}` }, h("slot", null))), h("div", { id: "error", class: this.errorMessage ? "error-message" : "" }, this.errorMessage)))));
280
280
  }
281
281
  static get is() { return "wm-nested-select"; }
282
282
  static get encapsulation() { return "shadow"; }
@@ -29,9 +29,9 @@ export class Optgroup {
29
29
  }
30
30
  */
31
31
  render() {
32
- return (h(Host, { key: '4e6215539a869c056780fd6f110d53c332ca5497', class: `${this.isExpanded ? "visible" : ""}` }, h("div", { key: 'bbf49d3293fec373b41ff2fdd01c3ea02fdbeff8', class: "return-btn", onClick: () => {
32
+ return (h(Host, { class: `${this.isExpanded ? "visible" : ""}` }, h("div", { class: "return-btn", onClick: () => {
33
33
  this.isExpanded = false;
34
- } }, this.label), h("div", { key: '7c0d9f3ce2f1094b4e21b300ba8157aae9cf1e95', class: `list-wrapper` }, h("priv-option-list", { key: 'dee15de57b4be4a68965262669c63b1b426f0d8d', ref: (el) => (this.optionListEl = el), multiple: this.parentNestedSelect.multiple, search: this.parentNestedSelect.search, searchPlaceholder: this.parentNestedSelect.searchPlaceholder, selectAll: this.parentNestedSelect.selectAll, onOptionListAllSelected: () => this.wmOptgroupAllSelected.emit(), onOptionListAllDeselected: () => this.wmOptgroupAllDeselected.emit() }, h("slot", { key: 'ebb111c9833c9cef5ac1aa486b1c6b31b04cd780' })))));
34
+ } }, this.label), h("div", { class: `list-wrapper` }, h("priv-option-list", { ref: (el) => (this.optionListEl = el), multiple: this.parentNestedSelect.multiple, search: this.parentNestedSelect.search, searchPlaceholder: this.parentNestedSelect.searchPlaceholder, selectAll: this.parentNestedSelect.selectAll, onOptionListAllSelected: () => this.wmOptgroupAllSelected.emit(), onOptionListAllDeselected: () => this.wmOptgroupAllDeselected.emit() }, h("slot", null)))));
35
35
  }
36
36
  static get is() { return "wm-optgroup"; }
37
37
  static get encapsulation() { return "shadow"; }