@watermarkinsights/ripple 5.6.0-1 → 5.6.0-3

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 (383) hide show
  1. package/dist/cjs/{chartFunctions-878f8139.js → chartFunctions-fb38580b.js} +10 -7
  2. package/dist/cjs/{functions-05e7ad5a.js → functions-a70fcff7.js} +13 -104
  3. package/dist/{esm/app-globals-8a702f67.js → cjs/global-85a3a126.js} +2 -7
  4. package/dist/cjs/index-e86c28b6.js +2653 -0
  5. package/dist/cjs/{intl-2b550151.js → intl-4a3a3a94.js} +1 -1
  6. package/dist/cjs/loader.cjs.js +4 -5
  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 +384 -0
  12. package/dist/cjs/ripple.cjs.js +12 -13
  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 +295 -0
  29. package/dist/cjs/wm-optgroup.cjs.entry.js +56 -0
  30. package/dist/cjs/wm-option_2.cjs.entry.js +37 -344
  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 +7 -4
  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.css +104 -0
  70. package/dist/collection/components/selects/priv-option-list/priv-option-list.js +714 -0
  71. package/dist/collection/components/selects/wm-nested-select/wm-nested-select.css +378 -0
  72. package/dist/collection/components/selects/wm-nested-select/wm-nested-select.js +581 -0
  73. package/dist/collection/components/selects/wm-optgroup/wm-optgroup.css +77 -0
  74. package/dist/collection/components/selects/wm-optgroup/wm-optgroup.js +197 -0
  75. package/dist/collection/components/{wm-select → selects/wm-select}/wm-select.css +0 -74
  76. package/dist/collection/components/selects/wm-select/wm-select.e2e.js +521 -0
  77. package/dist/collection/components/{wm-select → selects/wm-select}/wm-select.js +17 -384
  78. package/dist/collection/components/selects/wm-select/wm-select.spec.js +271 -0
  79. package/dist/collection/components/wm-action-menu/wm-action-menu.e2e.js +200 -0
  80. package/dist/collection/components/wm-action-menu/wm-action-menu.js +1 -1
  81. package/dist/collection/components/wm-action-menu/wm-action-menu.spec.js +48 -0
  82. package/dist/collection/components/wm-button/wm-button.e2e.js +55 -0
  83. package/dist/collection/components/wm-button/wm-button.js +1 -1
  84. package/dist/collection/components/wm-button/wm-button.spec.js +74 -0
  85. package/dist/collection/components/wm-file/wm-file.js +1 -1
  86. package/dist/collection/components/wm-file/wm-file.spec.js +194 -0
  87. package/dist/collection/components/wm-file-list/wm-file-list.js +1 -1
  88. package/dist/collection/components/wm-file-list/wm-file-list.spec.js +69 -0
  89. package/dist/collection/components/wm-input/wm-input.e2e.js +32 -0
  90. package/dist/collection/components/wm-input/wm-input.js +1 -1
  91. package/dist/collection/components/wm-input/wm-input.spec.js +173 -0
  92. package/dist/collection/components/wm-menuitem/wm-menuitem.e2e.js +23 -0
  93. package/dist/collection/components/wm-menuitem/wm-menuitem.js +1 -1
  94. package/dist/collection/components/wm-menuitem/wm-menuitem.spec.js +54 -0
  95. package/dist/collection/components/wm-modal/wm-modal-footer.js +1 -1
  96. package/dist/collection/components/wm-modal/wm-modal-footer.spec.js +11 -0
  97. package/dist/collection/components/wm-modal/wm-modal-header.js +1 -1
  98. package/dist/collection/components/wm-modal/wm-modal-header.spec.js +8 -0
  99. package/dist/collection/components/wm-modal/wm-modal.e2e.js +104 -0
  100. package/dist/collection/components/wm-modal/wm-modal.js +2 -2
  101. package/dist/collection/components/wm-modal/wm-modal.spec.js +30 -0
  102. package/dist/collection/components/wm-navigation/wm-navigation-hamburger.js +1 -1
  103. package/dist/collection/components/wm-navigation/wm-navigation-item.js +1 -1
  104. package/dist/collection/components/wm-navigation/wm-navigation.e2e.js +102 -0
  105. package/dist/collection/components/wm-navigation/wm-navigation.js +2 -2
  106. package/dist/collection/components/wm-navigation/wm-navigation.spec.js +91 -0
  107. package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.e2e.js +50 -0
  108. package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.js +1 -1
  109. package/dist/collection/components/wm-navigator/priv-navigator-item/priv-navigator-item.js +1 -1
  110. package/dist/collection/components/wm-navigator/wm-navigator.e2e.js +209 -0
  111. package/dist/collection/components/wm-navigator/wm-navigator.spec.js +177 -0
  112. package/dist/collection/components/wm-option/wm-option.e2e.js +22 -0
  113. package/dist/collection/components/wm-option/wm-option.js +35 -9
  114. package/dist/collection/components/wm-option/wm-option.spec.js +63 -0
  115. package/dist/collection/components/wm-pagination/wm-pagination.e2e.js +312 -0
  116. package/dist/collection/components/wm-pagination/wm-pagination.js +1 -1
  117. package/dist/collection/components/wm-search/wm-search.e2e.js +76 -0
  118. package/dist/collection/components/wm-search/wm-search.js +4 -5
  119. package/dist/collection/components/wm-search/wm-search.spec.js +71 -0
  120. package/dist/collection/components/wm-snackbar/wm-snackbar.e2e.js +112 -0
  121. package/dist/collection/components/wm-snackbar/wm-snackbar.js +2 -2
  122. package/dist/collection/components/wm-snackbar/wm-snackbar.spec.js +9 -0
  123. package/dist/collection/components/wm-tabs/wm-tab-item/wm-tab-item.js +1 -1
  124. package/dist/collection/components/wm-tabs/wm-tab-list/wm-tab-list.js +1 -1
  125. package/dist/collection/components/wm-tabs/wm-tab-panel/wm-tab-panel.js +1 -1
  126. package/dist/collection/components/wm-tabs/wm-tabs.e2e.js +91 -0
  127. package/dist/collection/components/wm-tabs/wm-tabs.spec.js +12 -0
  128. package/dist/collection/components/wm-tag-input/wm-tag-input.e2e.js +204 -0
  129. package/dist/collection/components/wm-tag-input/wm-tag-input.js +3 -3
  130. package/dist/collection/components/wm-tag-input/wm-tag-input.spec.js +195 -0
  131. package/dist/collection/components/wm-textarea/wm-textarea.e2e.js +41 -0
  132. package/dist/collection/components/wm-textarea/wm-textarea.js +1 -1
  133. package/dist/collection/components/wm-textarea/wm-textarea.spec.js +79 -0
  134. package/dist/collection/components/wm-timepicker/wm-timepicker.e2e.js +163 -0
  135. package/dist/collection/components/wm-timepicker/wm-timepicker.js +8 -11
  136. package/dist/collection/components/wm-timepicker/wm-timepicker.spec.js +147 -0
  137. package/dist/collection/components/wm-toggletip/wm-toggletip.e2e.js +69 -0
  138. package/dist/collection/components/wm-toggletip/wm-toggletip.js +2 -2
  139. package/dist/collection/components/wm-toggletip/wm-toggletip.spec.js +21 -0
  140. package/dist/collection/components/wm-uploader/wm-uploader.e2e.js +70 -0
  141. package/dist/collection/components/wm-uploader/wm-uploader.js +2 -2
  142. package/dist/collection/components/wm-uploader/wm-uploader.spec.js +234 -0
  143. package/dist/collection/dev/nested-select.js +62 -0
  144. package/dist/collection/global/functions.js +5 -0
  145. package/dist/collection/global/functions.spec.js +126 -0
  146. package/dist/collection/lang/lang.spec.js +20 -0
  147. package/dist/esm/{chartFunctions-00fd6f23.js → chartFunctions-c07590f5.js} +10 -7
  148. package/dist/esm/{functions-25781571.js → functions-dea8b0f6.js} +13 -105
  149. package/dist/{cjs/app-globals-5caee80b.js → esm/global-fc303bc4.js} +1 -10
  150. package/dist/esm/index-558b5a82.js +2622 -0
  151. package/dist/esm/{intl-df3d34d1.js → intl-417d8b33.js} +1 -1
  152. package/dist/esm/loader.js +5 -6
  153. package/dist/esm/priv-calendar.entry.js +5 -6
  154. package/dist/esm/priv-chart-popover.entry.js +5 -6
  155. package/dist/esm/priv-navigator-button.entry.js +3 -4
  156. package/dist/esm/priv-navigator-item.entry.js +3 -4
  157. package/dist/esm/priv-option-list.entry.js +380 -0
  158. package/dist/esm/ripple.js +13 -14
  159. package/dist/esm/wm-action-menu_2.entry.js +6 -8
  160. package/dist/esm/wm-button.entry.js +4 -5
  161. package/dist/esm/wm-chart-slice.entry.js +1 -1
  162. package/dist/esm/wm-chart.entry.js +9 -12
  163. package/dist/esm/wm-date-range.entry.js +8 -9
  164. package/dist/esm/wm-datepicker.entry.js +8 -9
  165. package/dist/esm/wm-file-list.entry.js +3 -4
  166. package/dist/esm/wm-file.entry.js +4 -5
  167. package/dist/esm/wm-input.entry.js +5 -6
  168. package/dist/esm/wm-line-chart.entry.js +14 -15
  169. package/dist/esm/wm-modal-footer.entry.js +3 -4
  170. package/dist/esm/wm-modal-header.entry.js +5 -6
  171. package/dist/esm/wm-modal.entry.js +5 -6
  172. package/dist/esm/wm-navigation_3.entry.js +10 -13
  173. package/dist/esm/wm-navigator.entry.js +3 -4
  174. package/dist/esm/wm-nested-select.entry.js +291 -0
  175. package/dist/esm/wm-optgroup.entry.js +52 -0
  176. package/dist/esm/wm-option_2.entry.js +37 -344
  177. package/dist/esm/wm-pagination.entry.js +4 -5
  178. package/dist/esm/wm-progress-indicator_3.entry.js +8 -10
  179. package/dist/esm/wm-search.entry.js +6 -7
  180. package/dist/esm/wm-snackbar.entry.js +6 -7
  181. package/dist/esm/wm-tab-item_3.entry.js +8 -11
  182. package/dist/esm/wm-tag-input.entry.js +7 -8
  183. package/dist/esm/wm-tag-option.entry.js +2 -2
  184. package/dist/esm/wm-textarea.entry.js +5 -6
  185. package/dist/esm/wm-timepicker.entry.js +5 -6
  186. package/dist/esm/wm-toggletip.entry.js +5 -6
  187. package/dist/esm/wm-uploader.entry.js +6 -7
  188. package/dist/esm/wm-wrapper.entry.js +1 -1
  189. package/dist/esm-es5/{chartFunctions-00fd6f23.js → chartFunctions-c07590f5.js} +1 -1
  190. package/dist/esm-es5/functions-dea8b0f6.js +1 -0
  191. package/dist/esm-es5/global-fc303bc4.js +1 -0
  192. package/dist/esm-es5/index-558b5a82.js +1 -0
  193. package/dist/esm-es5/{intl-df3d34d1.js → intl-417d8b33.js} +1 -1
  194. package/dist/esm-es5/loader.js +1 -1
  195. package/dist/esm-es5/priv-calendar.entry.js +1 -1
  196. package/dist/esm-es5/priv-chart-popover.entry.js +1 -1
  197. package/dist/esm-es5/priv-navigator-button.entry.js +1 -1
  198. package/dist/esm-es5/priv-navigator-item.entry.js +1 -1
  199. package/dist/esm-es5/priv-option-list.entry.js +1 -0
  200. package/dist/esm-es5/ripple.js +1 -1
  201. package/dist/esm-es5/wm-action-menu_2.entry.js +1 -1
  202. package/dist/esm-es5/wm-button.entry.js +1 -1
  203. package/dist/esm-es5/wm-chart-slice.entry.js +1 -1
  204. package/dist/esm-es5/wm-chart.entry.js +1 -1
  205. package/dist/esm-es5/wm-date-range.entry.js +1 -1
  206. package/dist/esm-es5/wm-datepicker.entry.js +1 -1
  207. package/dist/esm-es5/wm-file-list.entry.js +1 -1
  208. package/dist/esm-es5/wm-file.entry.js +1 -1
  209. package/dist/esm-es5/wm-input.entry.js +1 -1
  210. package/dist/esm-es5/wm-line-chart.entry.js +1 -1
  211. package/dist/esm-es5/wm-modal-footer.entry.js +1 -1
  212. package/dist/esm-es5/wm-modal-header.entry.js +1 -1
  213. package/dist/esm-es5/wm-modal.entry.js +1 -1
  214. package/dist/esm-es5/wm-navigation_3.entry.js +1 -1
  215. package/dist/esm-es5/wm-navigator.entry.js +1 -1
  216. package/dist/esm-es5/wm-nested-select.entry.js +1 -0
  217. package/dist/esm-es5/wm-optgroup.entry.js +1 -0
  218. package/dist/esm-es5/wm-option_2.entry.js +1 -1
  219. package/dist/esm-es5/wm-pagination.entry.js +1 -1
  220. package/dist/esm-es5/wm-progress-indicator_3.entry.js +1 -1
  221. package/dist/esm-es5/wm-search.entry.js +1 -1
  222. package/dist/esm-es5/wm-snackbar.entry.js +1 -1
  223. package/dist/esm-es5/wm-tab-item_3.entry.js +1 -1
  224. package/dist/esm-es5/wm-tag-input.entry.js +1 -1
  225. package/dist/esm-es5/wm-tag-option.entry.js +1 -1
  226. package/dist/esm-es5/wm-textarea.entry.js +1 -1
  227. package/dist/esm-es5/wm-timepicker.entry.js +1 -1
  228. package/dist/esm-es5/wm-toggletip.entry.js +1 -1
  229. package/dist/esm-es5/wm-uploader.entry.js +1 -1
  230. package/dist/esm-es5/wm-wrapper.entry.js +1 -1
  231. package/dist/loader/cdn.js +2 -1
  232. package/dist/loader/index.cjs.js +2 -1
  233. package/dist/loader/index.d.ts +0 -3
  234. package/dist/loader/index.es2017.js +2 -1
  235. package/dist/loader/index.js +2 -1
  236. package/dist/ripple/p-021ff5fa.system.entry.js +1 -0
  237. package/dist/ripple/{p-bcff8b3a.entry.js → p-0289e88d.entry.js} +1 -1
  238. package/dist/ripple/p-03a28fd8.entry.js +1 -0
  239. package/dist/ripple/p-10fffb96.entry.js +1 -0
  240. package/dist/ripple/p-182f1286.system.entry.js +1 -0
  241. package/dist/ripple/{p-298bde1b.entry.js → p-1ae47d48.entry.js} +1 -1
  242. package/dist/ripple/p-1aead401.entry.js +1 -0
  243. package/dist/ripple/p-230cd6ec.system.entry.js +1 -0
  244. package/dist/ripple/p-24ba754f.entry.js +1 -0
  245. package/dist/ripple/p-24c56217.system.entry.js +1 -0
  246. package/dist/ripple/p-294b38ca.system.entry.js +1 -0
  247. package/dist/ripple/p-2c7bb996.system.entry.js +1 -0
  248. package/dist/ripple/p-2ed54dbc.entry.js +1 -0
  249. package/dist/ripple/p-2f899c05.system.entry.js +1 -0
  250. package/dist/ripple/p-311923b2.system.entry.js +1 -0
  251. package/dist/ripple/{p-823d7b4e.system.entry.js → p-32bf3f5b.system.entry.js} +1 -1
  252. package/dist/ripple/p-350223f1.entry.js +1 -0
  253. package/dist/ripple/p-3568472c.entry.js +1 -0
  254. package/dist/ripple/p-37687638.system.entry.js +1 -0
  255. package/dist/ripple/{p-b0c566b5.system.entry.js → p-37f39cd9.system.entry.js} +1 -1
  256. package/dist/ripple/p-3bdac9a4.entry.js +1 -0
  257. package/dist/ripple/{p-13b1d775.entry.js → p-48e09589.entry.js} +1 -1
  258. package/dist/ripple/{p-aab56a37.system.entry.js → p-4df006b1.system.entry.js} +1 -1
  259. package/dist/ripple/p-4e1065d1.system.entry.js +1 -0
  260. package/dist/ripple/{p-6e60631a.entry.js → p-503702ef.entry.js} +1 -1
  261. package/dist/ripple/{p-a1a2f8c9.system.entry.js → p-5052c9dd.system.entry.js} +1 -1
  262. package/dist/ripple/p-568c595f.js +2 -0
  263. package/dist/ripple/p-588d678d.entry.js +1 -0
  264. package/dist/ripple/p-5b9babd9.system.entry.js +1 -0
  265. package/dist/ripple/{p-8e72de50.entry.js → p-61a19aa5.entry.js} +1 -1
  266. package/dist/ripple/p-62744f66.entry.js +1 -0
  267. package/dist/ripple/{p-043901ab.system.entry.js → p-65d26233.system.entry.js} +1 -1
  268. package/dist/ripple/p-667fed4f.system.js +1 -0
  269. package/dist/ripple/p-6a6bfac8.entry.js +1 -0
  270. package/dist/ripple/{p-672ae2cb.entry.js → p-6dd5fd2e.entry.js} +1 -1
  271. package/dist/ripple/p-71ed7e56.system.entry.js +1 -0
  272. package/dist/ripple/p-87d0933f.system.entry.js +1 -0
  273. package/dist/ripple/{p-cd0cc88d.entry.js → p-88ebddd7.entry.js} +1 -1
  274. package/dist/ripple/p-8c02e3a3.entry.js +1 -0
  275. package/dist/ripple/{p-041e579b.entry.js → p-8c7d5cd9.entry.js} +1 -1
  276. package/dist/ripple/p-902a54c5.entry.js +1 -0
  277. package/dist/ripple/{p-ac40417b.system.entry.js → p-91b21054.system.entry.js} +1 -1
  278. package/dist/ripple/p-94db7841.entry.js +1 -0
  279. package/dist/ripple/p-9e9c9d20.entry.js +1 -0
  280. package/dist/ripple/p-a20333e9.entry.js +1 -0
  281. package/dist/ripple/p-ab8d78cc.system.js +2 -0
  282. package/dist/ripple/{p-67a7f0b0.entry.js → p-ace05e0b.entry.js} +1 -1
  283. package/dist/ripple/p-ade3d9a9.entry.js +1 -0
  284. package/dist/ripple/p-b0a02b42.system.entry.js +1 -0
  285. package/dist/ripple/p-b8963e4d.system.entry.js +1 -0
  286. package/dist/ripple/{p-41eb6a2e.system.entry.js → p-b918e97a.system.entry.js} +1 -1
  287. package/dist/ripple/p-b99f6b96.js +1 -0
  288. package/dist/ripple/p-b9f650c7.system.js +1 -0
  289. package/dist/ripple/p-bb884a44.js +1 -0
  290. package/dist/ripple/p-c10f3273.entry.js +1 -0
  291. package/dist/ripple/{p-a9d89ac8.system.js → p-c28863e7.system.js} +1 -1
  292. package/dist/ripple/p-c4df2809.entry.js +1 -0
  293. package/dist/ripple/p-c4ec5884.system.entry.js +1 -0
  294. package/dist/ripple/p-c51398ba.entry.js +1 -0
  295. package/dist/ripple/p-c7dfcc99.system.entry.js +1 -0
  296. package/dist/ripple/p-c885c7f9.entry.js +1 -0
  297. package/dist/ripple/p-c93275bd.system.entry.js +1 -0
  298. package/dist/ripple/p-c9543950.system.entry.js +1 -0
  299. package/dist/ripple/p-c999c1f7.system.entry.js +1 -0
  300. package/dist/ripple/{p-d93c51dd.system.entry.js → p-cb690d83.system.entry.js} +1 -1
  301. package/dist/ripple/{p-03708b88.system.js → p-cd7cef47.system.js} +1 -1
  302. package/dist/ripple/{p-f54e9ed0.js → p-d32bf479.js} +1 -1
  303. package/dist/ripple/{p-6fe35d1e.system.entry.js → p-d52545c7.system.entry.js} +1 -1
  304. package/dist/ripple/p-d9122935.system.entry.js +1 -0
  305. package/dist/ripple/p-daf03315.entry.js +1 -0
  306. package/dist/ripple/p-de283385.system.js +1 -0
  307. package/dist/ripple/p-de35505c.entry.js +1 -0
  308. package/dist/ripple/p-e004b92b.system.entry.js +1 -0
  309. package/dist/ripple/p-e26a6bd0.entry.js +1 -0
  310. package/dist/ripple/p-e42eeb59.system.entry.js +1 -0
  311. package/dist/ripple/{p-a88bf1c5.js → p-e8c12272.js} +1 -1
  312. package/dist/ripple/p-e9395ac5.entry.js +1 -0
  313. package/dist/ripple/p-eeebc2c7.entry.js +1 -0
  314. package/dist/ripple/p-f69a16d4.system.entry.js +1 -0
  315. package/dist/ripple/p-f8c6fa96.system.entry.js +1 -0
  316. package/dist/ripple/p-fb3d5a64.system.entry.js +1 -0
  317. package/dist/ripple/ripple.esm.js +1 -1
  318. package/dist/ripple/ripple.js +1 -1
  319. package/dist/types/components/selects/wm-select/wm-select.d.ts +53 -0
  320. package/dist/types/components.d.ts +148 -2
  321. package/dist/types/global/functions.d.ts +1 -0
  322. package/dist/types/stencil-public-runtime.d.ts +10 -3
  323. package/package.json +1 -1
  324. package/dist/cjs/index-788526f5.js +0 -1851
  325. package/dist/esm/index-130e07bb.js +0 -1820
  326. package/dist/esm-es5/app-globals-8a702f67.js +0 -1
  327. package/dist/esm-es5/functions-25781571.js +0 -1
  328. package/dist/esm-es5/index-130e07bb.js +0 -1
  329. package/dist/ripple/p-0af94825.entry.js +0 -1
  330. package/dist/ripple/p-0ff41567.system.entry.js +0 -1
  331. package/dist/ripple/p-13fc2164.entry.js +0 -1
  332. package/dist/ripple/p-155224a2.system.entry.js +0 -1
  333. package/dist/ripple/p-17bb1157.system.entry.js +0 -1
  334. package/dist/ripple/p-1f09134c.entry.js +0 -1
  335. package/dist/ripple/p-298c2675.entry.js +0 -1
  336. package/dist/ripple/p-2d619f83.entry.js +0 -1
  337. package/dist/ripple/p-2ef49c84.entry.js +0 -1
  338. package/dist/ripple/p-2fd12dd9.entry.js +0 -1
  339. package/dist/ripple/p-3423a9b6.system.entry.js +0 -1
  340. package/dist/ripple/p-376efca9.entry.js +0 -1
  341. package/dist/ripple/p-3b4045f8.system.entry.js +0 -1
  342. package/dist/ripple/p-3b5f4364.system.entry.js +0 -1
  343. package/dist/ripple/p-417c8e46.system.entry.js +0 -1
  344. package/dist/ripple/p-418ed08c.system.entry.js +0 -1
  345. package/dist/ripple/p-4670ccb4.system.js +0 -1
  346. package/dist/ripple/p-4baaf026.entry.js +0 -1
  347. package/dist/ripple/p-4ea1e503.entry.js +0 -1
  348. package/dist/ripple/p-5051034b.entry.js +0 -1
  349. package/dist/ripple/p-56766bb2.entry.js +0 -1
  350. package/dist/ripple/p-58988291.system.js +0 -1
  351. package/dist/ripple/p-5caaf651.system.entry.js +0 -1
  352. package/dist/ripple/p-5ece78e5.system.entry.js +0 -1
  353. package/dist/ripple/p-6d0e5159.system.entry.js +0 -1
  354. package/dist/ripple/p-6d56676e.system.entry.js +0 -1
  355. package/dist/ripple/p-748f8a97.system.entry.js +0 -1
  356. package/dist/ripple/p-7eab6bea.system.entry.js +0 -1
  357. package/dist/ripple/p-7fb95b89.entry.js +0 -1
  358. package/dist/ripple/p-830f8b3f.entry.js +0 -1
  359. package/dist/ripple/p-86fd68b3.system.entry.js +0 -1
  360. package/dist/ripple/p-88cfd58d.js +0 -1
  361. package/dist/ripple/p-8b56f9d8.system.entry.js +0 -1
  362. package/dist/ripple/p-a62e7532.entry.js +0 -1
  363. package/dist/ripple/p-b41ef3db.entry.js +0 -1
  364. package/dist/ripple/p-b7307be6.system.entry.js +0 -1
  365. package/dist/ripple/p-b80d9402.system.entry.js +0 -1
  366. package/dist/ripple/p-b8168f35.system.entry.js +0 -1
  367. package/dist/ripple/p-c2181de0.entry.js +0 -1
  368. package/dist/ripple/p-cef8a45b.system.js +0 -2
  369. package/dist/ripple/p-d5ba9de1.system.entry.js +0 -1
  370. package/dist/ripple/p-d9da0502.js +0 -2
  371. package/dist/ripple/p-ddff380b.system.js +0 -1
  372. package/dist/ripple/p-e2fe86a7.system.entry.js +0 -1
  373. package/dist/ripple/p-e4918449.js +0 -1
  374. package/dist/ripple/p-e85b1f40.entry.js +0 -1
  375. package/dist/ripple/p-ea0dfadf.system.entry.js +0 -1
  376. package/dist/ripple/p-eb14b354.entry.js +0 -1
  377. package/dist/ripple/p-ecb6c756.entry.js +0 -1
  378. package/dist/ripple/p-f09e2c22.entry.js +0 -1
  379. package/dist/ripple/p-f17fd62b.entry.js +0 -1
  380. package/dist/ripple/p-fabe4ca4.entry.js +0 -1
  381. package/dist/ripple/p-fc529ba1.system.entry.js +0 -1
  382. package/dist/types/components/wm-option/wm-option.d.ts +0 -39
  383. package/dist/types/components/wm-select/wm-select.d.ts +0 -96
@@ -0,0 +1,234 @@
1
+ jest.mock("../../global/services/http-service");
2
+ import { newSpecPage } from "@stencil/core/testing";
3
+ import { Uploader } from "./wm-uploader";
4
+ import { File } from "../wm-file/wm-file";
5
+ // mock ResizeObserver
6
+ global.ResizeObserver = jest.fn().mockImplementation(() => ({
7
+ observe: jest.fn(),
8
+ unobserve: jest.fn(),
9
+ disconnect: jest.fn(),
10
+ }));
11
+ // mock MutationObserver
12
+ global.MutationObserver = jest.fn().mockImplementation(() => ({
13
+ observe: jest.fn(),
14
+ unobserve: jest.fn(),
15
+ disconnect: jest.fn(),
16
+ }));
17
+ describe("wm-uploader", () => {
18
+ let html, page;
19
+ beforeEach(async () => {
20
+ html = `<wm-uploader
21
+ id="uploader1"
22
+ button-text="Upload new document"
23
+ max-size="200 MB"
24
+ max-files="5"
25
+ >
26
+ <wm-file id="file1" name="File retrieved from server" type="pdf" last-updated="1/28/2020" size="28 KB"></wm-file>
27
+ <wm-file id="file2" name="Second file" type="jpeg" last-updated="2/14/2019" size="3 MB""></wm-file>
28
+ </wm-uploader>`;
29
+ page = await newSpecPage({ components: [Uploader, File], html });
30
+ await page.waitForChanges();
31
+ });
32
+ afterEach(() => {
33
+ html = undefined;
34
+ page = undefined;
35
+ });
36
+ it("has necessary aria properties", async () => {
37
+ let inputEl = page.root.shadowRoot.querySelector("input");
38
+ expect(inputEl).toEqualAttribute("aria-describedby", "file-count max-size accepted-types");
39
+ html = `<wm-uploader
40
+ id="uploader1"
41
+ button-text="Upload new document"
42
+ label="example label"
43
+ required-field="true"
44
+ ></wm-uploader>`;
45
+ page = await newSpecPage({ components: [Uploader, File], html });
46
+ await page.waitForChanges();
47
+ inputEl = page.root.shadowRoot.querySelector("input");
48
+ expect(inputEl).toEqualAttribute("aria-label", "example label, Upload new document");
49
+ expect(inputEl).toEqualAttribute("aria-required", "true");
50
+ html = `<wm-uploader
51
+ id="uploader1"
52
+ button-text="Upload new document"
53
+ required-field="true"
54
+ ></wm-uploader>`;
55
+ page = await newSpecPage({ components: [Uploader, File], html });
56
+ await page.waitForChanges();
57
+ inputEl = page.root.shadowRoot.querySelector("input");
58
+ expect(inputEl).toEqualAttribute("aria-label", "Upload new document");
59
+ html = `<wm-uploader
60
+ id="uploader1"
61
+ button-text="Upload new document"
62
+ label="Upload new document"
63
+ required-field="true"
64
+ ></wm-uploader>`;
65
+ page = await newSpecPage({ components: [Uploader, File], html });
66
+ await page.waitForChanges();
67
+ inputEl = page.root.shadowRoot.querySelector("input");
68
+ expect(inputEl).toEqualAttribute("aria-label", "Upload new document");
69
+ });
70
+ it("renders button text based on button-text prop", () => {
71
+ const labelEl = page.root.shadowRoot.querySelector("label");
72
+ expect(labelEl.textContent).toBe("Upload new document");
73
+ });
74
+ it("uploads files", async () => {
75
+ const input = page.root.shadowRoot.querySelector("input");
76
+ // fake files which the components uploadFiles() function will process
77
+ // @ts-ignore
78
+ input.files = {
79
+ length: 2,
80
+ 0: {
81
+ lastModified: 1562163068000,
82
+ lastModifiedDate: new Date(1562163068000),
83
+ name: "third_file.pdf",
84
+ size: 104857600,
85
+ type: "application/pdf",
86
+ webkitRelativePath: "",
87
+ },
88
+ 1: {
89
+ lastModified: 1562062469000,
90
+ lastModifiedDate: new Date(1562062469000),
91
+ name: "fourth file.jpg",
92
+ size: 123456,
93
+ type: "image/jpeg",
94
+ webkitRelativePath: "",
95
+ },
96
+ };
97
+ // triggering the change event will run validations and emit event wmUploaderFilesSelected
98
+ const ev = new Event("change");
99
+ let validFiles = [];
100
+ page.root.addEventListener("wmUploaderFilesSelected", (ev) => (validFiles = ev.detail));
101
+ input.dispatchEvent(ev);
102
+ await page.waitForChanges();
103
+ expect(validFiles[0].name).toBe("third_file.pdf");
104
+ expect(validFiles[1].size).toBe(123456);
105
+ });
106
+ it("disables button when upload is in progress", async () => {
107
+ html = `<wm-uploader id="uploader1">
108
+ <wm-file id="file1" name="File retrieved from server" type="pdf" last-updated="1/28/2020" size="28 KB" progress="30"></wm-file>
109
+ <wm-file id="file2" name="Second file" type="jpeg" last-updated="2/14/2019" size="3 MB""></wm-file>
110
+ </wm-uploader>`;
111
+ page = await newSpecPage({ components: [Uploader, File], html });
112
+ await page.waitForChanges();
113
+ const labelEl = page.root.shadowRoot.querySelector("label");
114
+ expect(labelEl).toHaveClass("disabled");
115
+ });
116
+ it("renders max-files text, if set", async () => {
117
+ let html, page;
118
+ html = `<wm-uploader
119
+ id="uploader1"
120
+ button-text="Upload new document"
121
+ ></wm-uploader>`;
122
+ page = await newSpecPage({ components: [Uploader, File], html });
123
+ await page.waitForChanges();
124
+ let fileCountEl = page.root.shadowRoot.querySelector("#file-count");
125
+ expect(fileCountEl).toBeFalsy();
126
+ html = `<wm-uploader
127
+ id="uploader1"
128
+ max-files="3"
129
+ >
130
+ <wm-file id="file1" name="File retrieved from server" type="pdf" last-updated="1/28/2020" size="28 KB"></wm-file>
131
+ <wm-file id="file2" name="Second file" type="jpeg" last-updated="2/14/2019" size="3 MB""></wm-file>
132
+ </wm-uploader>`;
133
+ page = await newSpecPage({ components: [Uploader, File], html });
134
+ await page.waitForChanges();
135
+ fileCountEl = page.root.shadowRoot.querySelector("#file-count");
136
+ expect(fileCountEl).toBeTruthy();
137
+ expect(fileCountEl.textContent).toBe("2 of 3 Files");
138
+ });
139
+ it("renders max-size text, if set", async () => {
140
+ let html, page;
141
+ html = `<wm-uploader
142
+ id="uploader1"
143
+ button-text="Upload new document"
144
+ ></wm-uploader>`;
145
+ page = await newSpecPage({ components: [Uploader, File], html });
146
+ await page.waitForChanges();
147
+ let maxSizeEl = page.root.shadowRoot.querySelector("#max-size");
148
+ expect(maxSizeEl).toBeFalsy();
149
+ html = `<wm-uploader
150
+ id="uploader1"
151
+ max-size="25 MB"
152
+ button-text="Upload new document"
153
+ ></wm-uploader>`;
154
+ page = await newSpecPage({ components: [Uploader, File], html });
155
+ await page.waitForChanges();
156
+ maxSizeEl = page.root.shadowRoot.querySelector("#max-size");
157
+ expect(maxSizeEl).toBeTruthy();
158
+ expect(maxSizeEl.textContent).toBe("Maximum file size 25 MB");
159
+ });
160
+ it("announces error when max-files has been reached and button clicked", async () => {
161
+ html = `<wm-uploader
162
+ id="uploader1"
163
+ max-files="2"
164
+ >
165
+ <wm-file id="file1" name="File retrieved from server" type="pdf" last-updated="1/28/2020" size="28 KB"></wm-file>
166
+ <wm-file id="file2" name="Second file" type="jpeg" last-updated="2/14/2019" size="3 MB""></wm-file>
167
+ </wm-uploader>`;
168
+ page = await newSpecPage({ components: [Uploader, File], html });
169
+ await page.waitForChanges();
170
+ const input = page.root.shadowRoot.querySelector("input");
171
+ input.click();
172
+ await page.waitForChanges();
173
+ const liveRegion = page.root.shadowRoot.querySelector(".live-region").textContent;
174
+ expect(liveRegion).toBe("The maximum number of files has been reached");
175
+ });
176
+ it("singularizes the accepted file types message", async () => {
177
+ let message = page.root.shadowRoot.querySelector("#accepted-types").textContent;
178
+ expect(message).toBe("Accepted file types: .pdf, .txt, .log, .xml, .doc, .docx, .xls, .xlsx, .ppt, .pptx, .gif, .jpg, .jpeg, .png, .csv");
179
+ html = `<wm-uploader
180
+ id="uploader1"
181
+ file-types="jpeg"
182
+ button-text="Upload new document"
183
+ files='[{"id": "file1", "name": "File retrieved from server", "type": "pdf", "lastUpdated": "1/28/2020"},{"id": "file2", "name": "Second file", "type": "jpeg", "lastUpdated": "2/14/2019"}]'
184
+ ></wm-uploader>`;
185
+ page = await newSpecPage({ components: [Uploader, File], html });
186
+ await page.waitForChanges();
187
+ message = page.root.shadowRoot.querySelector("#accepted-types").textContent;
188
+ expect(message).toBe("Accepted file type: .jpeg");
189
+ });
190
+ it("provides wm-files with the proper show-info", async () => {
191
+ // defaults to time
192
+ let infoEl = await page.root.querySelector("wm-file").shadowRoot.querySelector(".file-info");
193
+ expect(infoEl.textContent).toBe("1/28/2020");
194
+ // size
195
+ html = `<wm-uploader
196
+ id="uploader1"
197
+ button-text="Upload new document"
198
+ show-info="size"
199
+ >
200
+ <wm-file id="file1" name="File retrieved from server" type="pdf" last-updated="1/28/2020" size="28 KB"></wm-file>
201
+ <wm-file id="file2" name="Second file" type="jpeg" last-updated="2/14/2019" size="3 MB""></wm-file>
202
+ </wm-uploader>`;
203
+ page = await newSpecPage({ components: [Uploader, File], html });
204
+ await page.waitForChanges();
205
+ infoEl = await page.root.querySelector("wm-file").shadowRoot.querySelector(".file-info");
206
+ expect(infoEl.textContent).toBe("28 KB");
207
+ // time
208
+ html = `<wm-uploader
209
+ id="uploader1"
210
+ button-text="Upload new document"
211
+ show-info="time"
212
+ >
213
+ <wm-file id="file1" name="File retrieved from server" type="pdf" last-updated="1/28/2020" size="28 KB"></wm-file>
214
+ <wm-file id="file2" name="Second file" type="jpeg" last-updated="2/14/2019" size="3 MB""></wm-file>
215
+ </wm-uploader>`;
216
+ page = await newSpecPage({ components: [Uploader, File], html });
217
+ await page.waitForChanges();
218
+ infoEl = await page.root.querySelector("wm-file").shadowRoot.querySelector(".file-info");
219
+ expect(infoEl.textContent).toBe("1/28/2020");
220
+ // none
221
+ html = `<wm-uploader
222
+ id="uploader1"
223
+ button-text="Upload new document"
224
+ show-info="none"
225
+ >
226
+ <wm-file id="file1" name="File retrieved from server" type="pdf" last-updated="1/28/2020" size="28 KB"></wm-file>
227
+ <wm-file id="file2" name="Second file" type="jpeg" last-updated="2/14/2019" size="3 MB""></wm-file>
228
+ </wm-uploader>`;
229
+ page = await newSpecPage({ components: [Uploader, File], html });
230
+ await page.waitForChanges();
231
+ infoEl = await page.root.querySelector("wm-file").shadowRoot.querySelector(".file-info");
232
+ expect(infoEl).toBe(null);
233
+ });
234
+ });
@@ -0,0 +1,62 @@
1
+ document.addEventListener("wmSelectBlurred", renderErrors);
2
+
3
+ function renderErrors() {
4
+ const errorDiv = document.getElementById("errors");
5
+ const select = document.getElementById("select1");
6
+ const selectedOption = Array.from(select.querySelectorAll("wm-option")).filter((o) => o.selected)[0];
7
+
8
+ if (selectedOption.value === "C") {
9
+ select.invalid = true;
10
+ select.errorMessage = "C is my least favorite letter.";
11
+ } else {
12
+ select.invalid = false;
13
+ select.errorMessage = null;
14
+ }
15
+ }
16
+
17
+ function testSelectedOption(selectComp) {
18
+ setTimeout(() => {
19
+ // making sure the selected and aria-selected attributes are always in sync
20
+ const options = selectComp.querySelectorAll("wm-option");
21
+ let selectedOption = Array.from(options).filter((option) => !!option.selected)[0];
22
+ const ariaSelectedOption = Array.from(options).filter((option) => !!option.getAttribute("aria-selected"))[0];
23
+ if (selectedOption != ariaSelectedOption) {
24
+ console.log(selectComp.id, selectedOption, ariaSelectedOption);
25
+ }
26
+ }, 150);
27
+ }
28
+
29
+ const nestedSelects = document.querySelectorAll("wm-nested-select");
30
+ nestedSelects.forEach((nestedSelect) => {
31
+ nestedSelect.addEventListener("wmOptionSelected", (ev) => handleOptionSelected(ev));
32
+ nestedSelect.addEventListener("wmOptionDeselected", (ev) => handleOptionDeselected(ev));
33
+ });
34
+
35
+ const optgroups = document.querySelectorAll("wm-optgroup");
36
+ optgroups.forEach((optgroup) => {
37
+ optgroup.addEventListener("wmOptgroupAllSelected", (ev) => handleAllSelected(ev));
38
+ optgroup.addEventListener("wmOptgroupAllDeselected", (ev) => handleAllDeselected(ev));
39
+ });
40
+
41
+ function handleOptionSelected(ev) {
42
+ const parentOptgroup = ev.target.parentElement;
43
+ const parentNestedSelect = parentOptgroup.parentElement;
44
+
45
+ if (!parentNestedSelect.multiple) {
46
+ // in single select, deselect all other options
47
+ parentNestedSelect.querySelectorAll("wm-option").forEach((option) => (option.selected = false));
48
+ }
49
+ ev.target.selected = true;
50
+ }
51
+
52
+ function handleOptionDeselected(ev) {
53
+ ev.target.selected = false;
54
+ }
55
+
56
+ function handleAllSelected(ev) {
57
+ ev.target.querySelectorAll("wm-option").forEach((option) => (option.selected = true));
58
+ }
59
+
60
+ function handleAllDeselected(ev) {
61
+ ev.target.querySelectorAll("wm-option").forEach((option) => (option.selected = false));
62
+ }
@@ -89,6 +89,11 @@ export function findParentWithHiddenOverflow(el) {
89
89
  el = el.parentElement;
90
90
  }
91
91
  }
92
+ export function isElOrChild(componentEl, el) {
93
+ var _a;
94
+ // determines whether or not the element is the component, a child of the component, or exists within the component's shadowroot
95
+ return el === componentEl || componentEl.contains(el) || ((_a = componentEl.shadowRoot) === null || _a === void 0 ? void 0 : _a.contains(el));
96
+ }
92
97
  export function getContextMeasurements(el) {
93
98
  const fixedRect = el.getBoundingClientRect();
94
99
  const parentEl = findParentWithHiddenOverflow(el);
@@ -0,0 +1,126 @@
1
+ import { csvToArray, getAcceptedMimeTypesList, intl, snakeCaseToCamelCase, getNewIndexToFocus, transposeMatrix, wrapAround, skipByInterval, getSmallestSkipInterval, calcPercentageInRange, } from "./functions";
2
+ describe("Global functions", () => {
3
+ it("converts the list of extensions into a list of MIME types", () => {
4
+ expect(getAcceptedMimeTypesList(["pdf", "doc", "txt"])).toMatchObject([
5
+ "application/pdf",
6
+ "application/msword",
7
+ "text/plain",
8
+ ]);
9
+ });
10
+ it("translates", () => {
11
+ expect(intl.formatMessage({ id: "date.Monday", defaultMessage: "Monday" })).toEqual("Monday"); // falls back to English when language attribute is not set
12
+ });
13
+ it("changes string from snake_case to camelCase", async () => {
14
+ expect(snakeCaseToCamelCase("snake_case")).toBe("snakeCase");
15
+ expect(snakeCaseToCamelCase("even_more_words")).toBe("evenMoreWords");
16
+ expect(snakeCaseToCamelCase("camelCase")).toBe("camelCase");
17
+ expect(snakeCaseToCamelCase("A regular sentence")).toBe("A regular sentence");
18
+ expect(snakeCaseToCamelCase("singleword")).toBe("singleword");
19
+ });
20
+ it("parses comma separated values properly", async () => {
21
+ expect(csvToArray("one, two, three")).toStrictEqual(["one", "two", "three"]);
22
+ expect(csvToArray("four,five, six")).toStrictEqual(["four", "five", "six"]);
23
+ expect(csvToArray("seven eight,nine ten eleven")).toStrictEqual(["seven eight", "nine ten eleven"]);
24
+ });
25
+ it("gets new index to focus correctly", async () => {
26
+ let index = 1;
27
+ let direction = "ArrowDown";
28
+ let listLength = 5;
29
+ // moves forward
30
+ expect(getNewIndexToFocus(index, direction, listLength)).toBe(index + 1);
31
+ // wraps backwards
32
+ index = 4;
33
+ expect(getNewIndexToFocus(index, direction, listLength)).toBe(0);
34
+ // moves backwards
35
+ direction = "ArrowUp";
36
+ index = 2;
37
+ expect(getNewIndexToFocus(index, direction, listLength)).toBe(index - 1);
38
+ // wraps forward
39
+ index = 0;
40
+ expect(getNewIndexToFocus(index, direction, listLength)).toBe(listLength - 1);
41
+ });
42
+ it("transposes matrices correctly", () => {
43
+ expect(transposeMatrix([
44
+ [0, 1, 2],
45
+ [3, 4, 5],
46
+ [6, 7, 8],
47
+ ])).toStrictEqual([
48
+ [0, 3, 6],
49
+ [1, 4, 7],
50
+ [2, 5, 8],
51
+ ]);
52
+ expect(transposeMatrix([
53
+ [0, 1, 2, 3],
54
+ [4, 5, 6, 7],
55
+ [8, 9, 10, 11],
56
+ ])).toStrictEqual([
57
+ [0, 4, 8],
58
+ [1, 5, 9],
59
+ [2, 6, 10],
60
+ [3, 7, 11],
61
+ ]);
62
+ expect(transposeMatrix([
63
+ ["0", "1", "2"],
64
+ ["3", "4", "5"],
65
+ ["6", "7", "8"],
66
+ ])).toStrictEqual([
67
+ ["0", "3", "6"],
68
+ ["1", "4", "7"],
69
+ ["2", "5", "8"],
70
+ ]);
71
+ expect(transposeMatrix([
72
+ [0, "1", 2],
73
+ [3, 4, [5]],
74
+ [{ key: "value" }, 7, 8],
75
+ ])).toStrictEqual([
76
+ [0, 3, { key: "value" }],
77
+ ["1", 4, 7],
78
+ [2, [5], 8],
79
+ ]);
80
+ });
81
+ it("wraps around indices correctly", () => {
82
+ // forward steps
83
+ expect(wrapAround(0, 1, 8)).toBe(1);
84
+ expect(wrapAround(2, 3, 8)).toBe(5);
85
+ expect(wrapAround(7, 1, 8)).toBe(8);
86
+ // forward to 0
87
+ expect(wrapAround(8, 1, 8)).toBe(0);
88
+ expect(wrapAround(2, 7, 8)).toBe(0);
89
+ // forward beyond 0
90
+ expect(wrapAround(8, 4, 8)).toBe(3);
91
+ expect(wrapAround(2, 10, 8)).toBe(3);
92
+ // backward steps
93
+ expect(wrapAround(8, -1, 8)).toBe(7);
94
+ expect(wrapAround(5, -3, 8)).toBe(2);
95
+ expect(wrapAround(1, -1, 8)).toBe(0);
96
+ // backward to end
97
+ expect(wrapAround(0, -1, 8)).toBe(8);
98
+ expect(wrapAround(7, -8, 8)).toBe(8);
99
+ // backward beyond end
100
+ expect(wrapAround(0, -7, 8)).toBe(2);
101
+ expect(wrapAround(2, -7, 8)).toBe(4);
102
+ // multiple wraps
103
+ expect(wrapAround(0, 10, 2)).toBe(1);
104
+ expect(wrapAround(0, -10, 2)).toBe(2);
105
+ });
106
+ it("skips by interval correctly", () => {
107
+ const list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
108
+ expect(skipByInterval(list, 0)).toStrictEqual([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
109
+ expect(skipByInterval(list, 1)).toStrictEqual([0, 2, 4, 6, 8]);
110
+ expect(skipByInterval(list, 2)).toStrictEqual([0, 3, 6, 9]);
111
+ expect(skipByInterval(list, 3)).toStrictEqual([0, 4, 8]);
112
+ expect(skipByInterval(list, 4)).toStrictEqual([0, 5]);
113
+ expect(skipByInterval(list, 5)).toStrictEqual([0, 6]);
114
+ expect(skipByInterval(list, 20)).toStrictEqual([0]);
115
+ expect(getSmallestSkipInterval(list, 6)).toStrictEqual({ skipInterval: 1, skippedList: [0, 2, 4, 6, 8] });
116
+ expect(getSmallestSkipInterval(list, 5)).toStrictEqual({ skipInterval: 1, skippedList: [0, 2, 4, 6, 8] });
117
+ expect(getSmallestSkipInterval(list, 3)).toStrictEqual({ skipInterval: 3, skippedList: [0, 4, 8] });
118
+ expect(getSmallestSkipInterval(list, 1)).toStrictEqual({ skipInterval: 9, skippedList: [0] });
119
+ });
120
+ it("calcs percentage in range properly", () => {
121
+ expect(calcPercentageInRange(13, 0, 100)).toBe(13);
122
+ expect(calcPercentageInRange(-75, -100, 0)).toBe(25);
123
+ expect(calcPercentageInRange(50, 25, 75)).toBe(50);
124
+ expect(calcPercentageInRange(150, 100, 300)).toBe(25);
125
+ });
126
+ });
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ const en = require("./en.json");
3
+ const fr = require("./fr.json");
4
+ const es = require("./es.json");
5
+ const pig = require("./pig.json");
6
+ describe("translations", () => {
7
+ it("has translated strings for every key", () => {
8
+ let missingFR = [];
9
+ let missingES = [];
10
+ let missingPIG = [];
11
+ for (let i = 0; i < Object.keys(en).length; i++) {
12
+ !Object.keys(fr).includes(Object.keys(en)[i]) && missingFR.push(Object.keys(en)[i]);
13
+ !Object.keys(es).includes(Object.keys(en)[i]) && missingES.push(Object.keys(en)[i]);
14
+ !Object.keys(pig).includes(Object.keys(en)[i]) && missingPIG.push(Object.keys(en)[i]);
15
+ }
16
+ expect(missingFR.length).toBe(0);
17
+ expect(missingES.length).toBe(0);
18
+ expect(missingPIG.length).toBe(0);
19
+ });
20
+ });
@@ -1,5 +1,5 @@
1
- import { h } from './index-130e07bb.js';
2
- import { i as intl, c as safeMultiplyFloat, e as getPosition, f as checkForActiveElInShadow } from './functions-25781571.js';
1
+ import { h } from './index-558b5a82.js';
2
+ import { i as intl, c as safeMultiplyFloat, e as getPosition, f as checkForActiveElInShadow } from './functions-dea8b0f6.js';
3
3
 
4
4
  const colors = {
5
5
  salmon: "#ff5f4e",
@@ -69,7 +69,7 @@ const allChartsDetails = {
69
69
  bar5: {
70
70
  size: 400,
71
71
  colors: [
72
- colors.gray, // this is only used if prop notStartedColor is set
72
+ colors.gray,
73
73
  colors.lavender,
74
74
  colors.midnight,
75
75
  "#0089e4",
@@ -485,8 +485,8 @@ function removeSegmentInfoHighlight(infoEls) {
485
485
  }
486
486
  function renderPath(s, chartType) {
487
487
  const percentageValue = amountToPercent(s.amount, this.total, true) + "%";
488
- return !isNaN(s.amount) && (h("g", { transform: `translate(${this.chartDetails.padding / 2}, ${this.chartDetails.padding / 2})` },
489
- h("path", { id: s.id, class: "segment doughnut-segment", fill: s.amount ? s.color : "transparent", d: getPathData.call(this, s.amount, s.offset, chartType), onClick: (ev) => handleSliceClick.call(this, ev, s), onFocus: (ev) => handleSliceFocus.call(this, ev, s), onKeyDown: (ev) => handleSliceKeyDown.call(this, ev), role: "img", "aria-label": `${s.legend}, ${percentageValue}`, "data-segmentindex": s.index })));
488
+ return (!isNaN(s.amount) && (h("g", { transform: `translate(${this.chartDetails.padding / 2}, ${this.chartDetails.padding / 2})` },
489
+ h("path", { id: s.id, class: "segment doughnut-segment", fill: s.amount ? s.color : "transparent", d: getPathData.call(this, s.amount, s.offset, chartType), onClick: (ev) => handleSliceClick.call(this, ev, s), onFocus: (ev) => handleSliceFocus.call(this, ev, s), onKeyDown: (ev) => handleSliceKeyDown.call(this, ev), role: "img", "aria-label": `${s.legend}, ${percentageValue}`, "data-segmentindex": s.index }))));
490
490
  }
491
491
  function renderFocusOutline() {
492
492
  return this.isTabbing ? (h("g", { transform: `translate(${this.chartDetails.padding / 2}, ${this.chartDetails.padding / 2})` },
@@ -542,9 +542,12 @@ function renderStackedBar(chartType) {
542
542
  isHybridBar ? (h("div", { class: "single-perc" }, amountToPercent(this.slicesDetails[0].amount, this.total, true) + "%")) : (""),
543
543
  this.chartType === "bar3" && this.drawAxis(),
544
544
  h("div", { class: `inner-stacked-bar-wrapper ${showValue(this.valueFormat)}` },
545
- !isHybridBar ? (h("div", { class: "values" }, this.slicesDetails.map((s) => this.renderBarText(s, 5)))) : (""),
545
+ !isHybridBar ? (h("div", { class: `values ${this.valueFormat}` }, this.slicesDetails.map((s) => this.renderBarText(s, 5)))) : (""),
546
546
  h("div", { class: "stacked-bar-segments-wrapper" }, this.slicesDetails.map((s) => renderStackedBarSegment.call(this, s, 5))),
547
- isHybridBar ? renderCompletionMessage.call(this) : "")));
547
+ isHybridBar ? renderCompletionMessage.call(this) : ""),
548
+ this.chartType === "bar3" ? (h("div", { class: "bar3-axis-label", "aria-hidden": "true" },
549
+ h("span", null, "0%"),
550
+ h("span", null, "100%"))) : ("")));
548
551
  }
549
552
  function renderStackedBarSegment(s, minimumWidth) {
550
553
  const segmentPercentage = amountToPercent(s.amount, this.total, false);