@watermarkinsights/ripple 5.10.0-15 → 5.10.0-16
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.
- package/README.md +3 -3
- package/dist/cjs/{chartFunctions-a3a08880.js → chartFunctions-c4046c7a.js} +3 -3
- package/dist/cjs/{functions-5ac8a62f.js → functions-e24249e6.js} +7 -104
- package/dist/{esm/app-globals-bd78f8aa.js → cjs/global-705d39bd.js} +2 -7
- package/dist/cjs/index-e86c28b6.js +2649 -0
- package/dist/cjs/{intl-57d1cfd1.js → intl-790f6c37.js} +11 -15
- package/dist/cjs/loader.cjs.js +4 -5
- package/dist/cjs/priv-calendar.cjs.entry.js +5 -6
- package/dist/cjs/priv-chart-popover.cjs.entry.js +5 -6
- package/dist/cjs/priv-navigator-button.cjs.entry.js +3 -4
- package/dist/cjs/priv-navigator-item.cjs.entry.js +3 -4
- package/dist/cjs/priv-option-list.cjs.entry.js +4 -5
- package/dist/cjs/ripple.cjs.js +12 -13
- package/dist/cjs/wm-action-menu_2.cjs.entry.js +6 -8
- package/dist/cjs/wm-button.cjs.entry.js +4 -5
- package/dist/cjs/wm-chart-slice.cjs.entry.js +1 -1
- package/dist/cjs/wm-chart.cjs.entry.js +6 -7
- package/dist/cjs/wm-date-range.cjs.entry.js +8 -9
- package/dist/cjs/wm-datepicker.cjs.entry.js +8 -9
- package/dist/cjs/wm-file-list.cjs.entry.js +3 -4
- package/dist/cjs/wm-file.cjs.entry.js +4 -5
- package/dist/cjs/wm-input.cjs.entry.js +5 -6
- package/dist/cjs/wm-line-chart.cjs.entry.js +14 -15
- package/dist/cjs/wm-modal-pss_3.cjs.entry.js +10 -13
- package/dist/cjs/wm-modal_3.cjs.entry.js +10 -13
- package/dist/cjs/wm-navigation_3.cjs.entry.js +10 -13
- package/dist/cjs/wm-navigator.cjs.entry.js +3 -4
- package/dist/cjs/wm-nested-select.cjs.entry.js +7 -8
- package/dist/cjs/wm-optgroup.cjs.entry.js +4 -5
- package/dist/cjs/wm-option_2.cjs.entry.js +8 -10
- package/dist/cjs/wm-pagination.cjs.entry.js +4 -5
- package/dist/cjs/wm-progress-indicator_3.cjs.entry.js +7 -9
- package/dist/cjs/wm-search.cjs.entry.js +6 -7
- package/dist/cjs/wm-snackbar.cjs.entry.js +6 -7
- package/dist/cjs/wm-tab-item_3.cjs.entry.js +8 -11
- package/dist/cjs/wm-tag-input.cjs.entry.js +7 -8
- package/dist/cjs/wm-tag-option.cjs.entry.js +2 -2
- package/dist/cjs/wm-textarea.cjs.entry.js +5 -6
- package/dist/cjs/wm-timepicker.cjs.entry.js +5 -6
- package/dist/cjs/wm-toggletip.cjs.entry.js +5 -6
- package/dist/cjs/wm-uploader.cjs.entry.js +98 -17
- package/dist/cjs/wm-wrapper.cjs.entry.js +1 -1
- package/dist/collection/collection-manifest.json +2 -2
- package/dist/collection/components/charts/chartFunctions.js +1 -1
- package/dist/collection/components/charts/chartFunctions.spec.js +16 -0
- package/dist/collection/components/charts/priv-chart-popover/priv-chart-popover.e2e.js +81 -0
- package/dist/collection/components/charts/priv-chart-popover/priv-chart-popover.js +2 -2
- package/dist/collection/components/charts/screenshots.e2e.js +96 -0
- package/dist/collection/components/charts/wm-chart/wm-chart.e2e.js +213 -0
- package/dist/collection/components/charts/wm-chart/wm-chart.js +1 -1
- package/dist/collection/components/charts/wm-chart/wm-chart.spec.js +37 -0
- package/dist/collection/components/charts/wm-line-chart/wm-line-chart.e2e.js +176 -0
- package/dist/collection/components/charts/wm-line-chart/wm-line-chart.js +9 -9
- package/dist/collection/components/charts/wm-line-chart/wm-line-chart.spec.js +163 -0
- package/dist/collection/components/charts/wm-progress-monitor/wm-progress-indicator.js +1 -1
- package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.e2e.js +69 -0
- package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.js +1 -1
- package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.spec.js +79 -0
- package/dist/collection/components/datepickers/priv-calendar/priv-calendar.js +2 -2
- package/dist/collection/components/datepickers/priv-calendar/priv-calendar.spec.js +89 -0
- package/dist/collection/components/datepickers/wm-date-range.e2e.js +443 -0
- package/dist/collection/components/datepickers/wm-date-range.js +13 -17
- package/dist/collection/components/datepickers/wm-date-range.spec.js +22 -0
- package/dist/collection/components/datepickers/wm-datepicker.e2e.js +382 -0
- package/dist/collection/components/datepickers/wm-datepicker.js +13 -17
- package/dist/collection/components/datepickers/wm-datepicker.spec.js +21 -0
- package/dist/collection/components/selects/priv-option-list/priv-option-list.js +5 -7
- package/dist/collection/components/selects/wm-nested-select/wm-nested-select.js +3 -3
- package/dist/collection/components/selects/wm-optgroup/wm-optgroup.js +1 -1
- package/dist/collection/components/selects/wm-option/wm-option.e2e.js +22 -0
- package/dist/collection/components/selects/wm-option/wm-option.js +1 -1
- package/dist/collection/components/selects/wm-option/wm-option.spec.js +63 -0
- package/dist/collection/components/selects/wm-select/wm-select.e2e.js +521 -0
- package/dist/collection/components/selects/wm-select/wm-select.js +2 -2
- package/dist/collection/components/selects/wm-select/wm-select.spec.js +271 -0
- package/dist/collection/components/wm-action-menu/wm-action-menu.e2e.js +200 -0
- package/dist/collection/components/wm-action-menu/wm-action-menu.js +1 -1
- package/dist/collection/components/wm-action-menu/wm-action-menu.spec.js +48 -0
- package/dist/collection/components/wm-button/wm-button.e2e.js +55 -0
- package/dist/collection/components/wm-button/wm-button.js +1 -1
- package/dist/collection/components/wm-button/wm-button.spec.js +74 -0
- package/dist/collection/components/wm-file/wm-file.js +1 -1
- package/dist/collection/components/wm-file/wm-file.spec.js +194 -0
- package/dist/collection/components/wm-file-list/wm-file-list.js +1 -1
- package/dist/collection/components/wm-file-list/wm-file-list.spec.js +69 -0
- package/dist/collection/components/wm-input/wm-input.e2e.js +32 -0
- package/dist/collection/components/wm-input/wm-input.js +1 -1
- package/dist/collection/components/wm-input/wm-input.spec.js +173 -0
- package/dist/collection/components/wm-menuitem/wm-menuitem.e2e.js +23 -0
- package/dist/collection/components/wm-menuitem/wm-menuitem.js +1 -1
- package/dist/collection/components/wm-menuitem/wm-menuitem.spec.js +54 -0
- package/dist/collection/components/wm-modal/wm-modal-footer.js +1 -1
- package/dist/collection/components/wm-modal/wm-modal-footer.spec.js +11 -0
- package/dist/collection/components/wm-modal/wm-modal-header.js +1 -1
- package/dist/collection/components/wm-modal/wm-modal-header.spec.js +8 -0
- package/dist/collection/components/wm-modal/wm-modal.e2e.js +104 -0
- package/dist/collection/components/wm-modal/wm-modal.js +2 -2
- package/dist/collection/components/wm-modal/wm-modal.spec.js +30 -0
- package/dist/collection/components/wm-modal-pss/wm-modal-pss-footer.js +1 -1
- package/dist/collection/components/wm-modal-pss/wm-modal-pss-header.js +1 -1
- package/dist/collection/components/wm-modal-pss/wm-modal-pss.js +2 -2
- package/dist/collection/components/wm-navigation/wm-navigation-hamburger.js +1 -1
- package/dist/collection/components/wm-navigation/wm-navigation-item.js +1 -1
- package/dist/collection/components/wm-navigation/wm-navigation.e2e.js +102 -0
- package/dist/collection/components/wm-navigation/wm-navigation.js +2 -2
- package/dist/collection/components/wm-navigation/wm-navigation.spec.js +91 -0
- package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.e2e.js +50 -0
- package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.js +1 -1
- package/dist/collection/components/wm-navigator/priv-navigator-item/priv-navigator-item.js +2 -2
- package/dist/collection/components/wm-navigator/wm-navigator.e2e.js +209 -0
- package/dist/collection/components/wm-navigator/wm-navigator.spec.js +177 -0
- package/dist/collection/components/wm-pagination/wm-pagination.e2e.js +312 -0
- package/dist/collection/components/wm-pagination/wm-pagination.js +1 -1
- package/dist/collection/components/wm-search/wm-search.e2e.js +76 -0
- package/dist/collection/components/wm-search/wm-search.js +4 -5
- package/dist/collection/components/wm-search/wm-search.spec.js +71 -0
- package/dist/collection/components/wm-snackbar/wm-snackbar.e2e.js +112 -0
- package/dist/collection/components/wm-snackbar/wm-snackbar.js +2 -2
- package/dist/collection/components/wm-snackbar/wm-snackbar.spec.js +9 -0
- package/dist/collection/components/wm-tabs/wm-tab-item/wm-tab-item.js +1 -1
- package/dist/collection/components/wm-tabs/wm-tab-list/wm-tab-list.js +1 -1
- package/dist/collection/components/wm-tabs/wm-tab-panel/wm-tab-panel.js +1 -1
- package/dist/collection/components/wm-tabs/wm-tabs.e2e.js +91 -0
- package/dist/collection/components/wm-tabs/wm-tabs.spec.js +12 -0
- package/dist/collection/components/wm-tag-input/wm-tag-input.e2e.js +204 -0
- package/dist/collection/components/wm-tag-input/wm-tag-input.js +3 -3
- package/dist/collection/components/wm-tag-input/wm-tag-input.spec.js +195 -0
- package/dist/collection/components/wm-textarea/wm-textarea.e2e.js +41 -0
- package/dist/collection/components/wm-textarea/wm-textarea.js +1 -1
- package/dist/collection/components/wm-textarea/wm-textarea.spec.js +79 -0
- package/dist/collection/components/wm-timepicker/wm-timepicker.e2e.js +163 -0
- package/dist/collection/components/wm-timepicker/wm-timepicker.js +8 -11
- package/dist/collection/components/wm-timepicker/wm-timepicker.spec.js +147 -0
- package/dist/collection/components/wm-toggletip/wm-toggletip.e2e.js +69 -0
- package/dist/collection/components/wm-toggletip/wm-toggletip.js +2 -2
- package/dist/collection/components/wm-toggletip/wm-toggletip.spec.js +21 -0
- package/dist/collection/components/wm-uploader/wm-uploader.css +149 -8
- package/dist/collection/components/wm-uploader/wm-uploader.e2e.js +70 -0
- package/dist/collection/components/wm-uploader/wm-uploader.js +154 -11
- package/dist/collection/components/wm-uploader/wm-uploader.spec.js +234 -0
- package/dist/collection/global/functions.spec.js +126 -0
- package/dist/collection/global/intl.js +10 -14
- package/dist/collection/lang/lang.spec.js +20 -0
- package/dist/collection/lang/missing.js +43 -43
- package/dist/collection/lang/piglatin.js +93 -93
- package/dist/esm/{chartFunctions-21d5a3d3.js → chartFunctions-5555bab0.js} +3 -3
- package/dist/esm/{functions-f39e6177.js → functions-8800c690.js} +8 -105
- package/dist/{cjs/app-globals-d1951045.js → esm/global-a377e5a4.js} +1 -10
- package/dist/esm/index-558b5a82.js +2618 -0
- package/dist/esm/{intl-dda73e98.js → intl-82ebfb79.js} +11 -15
- package/dist/esm/loader.js +5 -6
- package/dist/esm/polyfills/core-js.js +0 -0
- package/dist/esm/polyfills/dom.js +0 -0
- package/dist/esm/polyfills/es5-html-element.js +0 -0
- package/dist/esm/polyfills/index.js +0 -0
- package/dist/esm/polyfills/system.js +0 -0
- package/dist/esm/priv-calendar.entry.js +5 -6
- package/dist/esm/priv-chart-popover.entry.js +5 -6
- package/dist/esm/priv-navigator-button.entry.js +3 -4
- package/dist/esm/priv-navigator-item.entry.js +3 -4
- package/dist/esm/priv-option-list.entry.js +4 -5
- package/dist/esm/ripple.js +13 -14
- package/dist/esm/wm-action-menu_2.entry.js +6 -8
- package/dist/esm/wm-button.entry.js +4 -5
- package/dist/esm/wm-chart-slice.entry.js +1 -1
- package/dist/esm/wm-chart.entry.js +6 -7
- package/dist/esm/wm-date-range.entry.js +8 -9
- package/dist/esm/wm-datepicker.entry.js +8 -9
- package/dist/esm/wm-file-list.entry.js +3 -4
- package/dist/esm/wm-file.entry.js +4 -5
- package/dist/esm/wm-input.entry.js +5 -6
- package/dist/esm/wm-line-chart.entry.js +14 -15
- package/dist/esm/wm-modal-pss_3.entry.js +10 -13
- package/dist/esm/wm-modal_3.entry.js +10 -13
- package/dist/esm/wm-navigation_3.entry.js +10 -13
- package/dist/esm/wm-navigator.entry.js +3 -4
- package/dist/esm/wm-nested-select.entry.js +7 -8
- package/dist/esm/wm-optgroup.entry.js +4 -5
- package/dist/esm/wm-option_2.entry.js +8 -10
- package/dist/esm/wm-pagination.entry.js +4 -5
- package/dist/esm/wm-progress-indicator_3.entry.js +7 -9
- package/dist/esm/wm-search.entry.js +6 -7
- package/dist/esm/wm-snackbar.entry.js +6 -7
- package/dist/esm/wm-tab-item_3.entry.js +8 -11
- package/dist/esm/wm-tag-input.entry.js +7 -8
- package/dist/esm/wm-tag-option.entry.js +2 -2
- package/dist/esm/wm-textarea.entry.js +5 -6
- package/dist/esm/wm-timepicker.entry.js +5 -6
- package/dist/esm/wm-toggletip.entry.js +5 -6
- package/dist/esm/wm-uploader.entry.js +98 -17
- package/dist/esm/wm-wrapper.entry.js +1 -1
- package/dist/esm-es5/{chartFunctions-21d5a3d3.js → chartFunctions-5555bab0.js} +1 -1
- package/dist/esm-es5/functions-8800c690.js +1 -0
- package/dist/esm-es5/global-a377e5a4.js +1 -0
- package/dist/esm-es5/index-558b5a82.js +1 -0
- package/dist/esm-es5/{intl-dda73e98.js → intl-82ebfb79.js} +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/priv-calendar.entry.js +1 -1
- package/dist/esm-es5/priv-chart-popover.entry.js +1 -1
- package/dist/esm-es5/priv-navigator-button.entry.js +1 -1
- package/dist/esm-es5/priv-navigator-item.entry.js +1 -1
- package/dist/esm-es5/priv-option-list.entry.js +1 -1
- package/dist/esm-es5/ripple.js +1 -1
- package/dist/esm-es5/wm-action-menu_2.entry.js +1 -1
- package/dist/esm-es5/wm-button.entry.js +1 -1
- package/dist/esm-es5/wm-chart-slice.entry.js +1 -1
- package/dist/esm-es5/wm-chart.entry.js +1 -1
- package/dist/esm-es5/wm-date-range.entry.js +1 -1
- package/dist/esm-es5/wm-datepicker.entry.js +1 -1
- package/dist/esm-es5/wm-file-list.entry.js +1 -1
- package/dist/esm-es5/wm-file.entry.js +1 -1
- package/dist/esm-es5/wm-input.entry.js +1 -1
- package/dist/esm-es5/wm-line-chart.entry.js +1 -1
- package/dist/esm-es5/wm-modal-pss_3.entry.js +1 -1
- package/dist/esm-es5/wm-modal_3.entry.js +1 -1
- package/dist/esm-es5/wm-navigation_3.entry.js +1 -1
- package/dist/esm-es5/wm-navigator.entry.js +1 -1
- package/dist/esm-es5/wm-nested-select.entry.js +1 -1
- package/dist/esm-es5/wm-optgroup.entry.js +1 -1
- package/dist/esm-es5/wm-option_2.entry.js +1 -1
- package/dist/esm-es5/wm-pagination.entry.js +1 -1
- package/dist/esm-es5/wm-progress-indicator_3.entry.js +1 -1
- package/dist/esm-es5/wm-search.entry.js +1 -1
- package/dist/esm-es5/wm-snackbar.entry.js +1 -1
- package/dist/esm-es5/wm-tab-item_3.entry.js +1 -1
- package/dist/esm-es5/wm-tag-input.entry.js +1 -1
- package/dist/esm-es5/wm-tag-option.entry.js +1 -1
- package/dist/esm-es5/wm-textarea.entry.js +1 -1
- package/dist/esm-es5/wm-timepicker.entry.js +1 -1
- package/dist/esm-es5/wm-toggletip.entry.js +1 -1
- package/dist/esm-es5/wm-uploader.entry.js +1 -1
- package/dist/esm-es5/wm-wrapper.entry.js +1 -1
- package/dist/loader/cdn.js +2 -1
- package/dist/loader/index.cjs.js +2 -1
- package/dist/loader/index.d.ts +0 -3
- package/dist/loader/index.es2017.js +2 -1
- package/dist/loader/index.js +2 -1
- package/dist/ripple/{p-b9f4ee75.entry.js → p-04502e9c.entry.js} +1 -1
- package/dist/ripple/p-0aa8c50e.entry.js +1 -0
- package/dist/ripple/{p-07087139.system.entry.js → p-0b4b0741.system.entry.js} +1 -1
- package/dist/ripple/p-0bffcc33.entry.js +1 -0
- package/dist/ripple/{p-0bffed17.entry.js → p-0d082f95.entry.js} +1 -1
- package/dist/ripple/{p-0e1d1d0e.entry.js → p-0eddc626.entry.js} +1 -1
- package/dist/ripple/{p-ade89f97.system.entry.js → p-0fc6dab9.system.entry.js} +1 -1
- package/dist/ripple/{p-73ce9af7.js → p-11d66b54.js} +1 -1
- package/dist/ripple/p-1887c39d.entry.js +1 -0
- package/dist/ripple/p-1a4d00a9.system.entry.js +1 -0
- package/dist/ripple/{p-97c524e5.system.entry.js → p-1bb48113.system.entry.js} +1 -1
- package/dist/ripple/{p-1b91dc76.system.entry.js → p-1f695ead.system.entry.js} +1 -1
- package/dist/ripple/{p-36bb61c1.system.entry.js → p-21a4a455.system.entry.js} +1 -1
- package/dist/ripple/p-221a7c22.entry.js +1 -0
- package/dist/ripple/{p-37b044c7.system.js → p-2ce69098.system.js} +1 -1
- package/dist/ripple/{p-823d7b4e.system.entry.js → p-32bf3f5b.system.entry.js} +1 -1
- package/dist/ripple/{p-069ec9d0.system.entry.js → p-34014c8d.system.entry.js} +1 -1
- package/dist/ripple/{p-b8912fba.system.entry.js → p-34218322.system.entry.js} +1 -1
- package/dist/ripple/p-3bdb760a.entry.js +1 -0
- package/dist/ripple/{p-044cbd11.system.entry.js → p-3c3c6b29.system.entry.js} +1 -1
- package/dist/ripple/{p-7a9ad0df.system.entry.js → p-3fb7444d.system.entry.js} +1 -1
- package/dist/ripple/p-40129c5d.js +1 -0
- package/dist/ripple/{p-c34c9cbb.system.entry.js → p-4743176d.system.entry.js} +1 -1
- package/dist/ripple/{p-13b1d775.entry.js → p-48e09589.entry.js} +1 -1
- package/dist/ripple/p-4abcb864.entry.js +1 -0
- package/dist/ripple/{p-342e6ba1.system.entry.js → p-4edb481f.system.entry.js} +1 -1
- package/dist/ripple/p-50501e07.entry.js +1 -0
- package/dist/ripple/p-51718b06.system.entry.js +1 -0
- package/dist/ripple/p-53975533.entry.js +1 -0
- package/dist/ripple/p-568c595f.js +2 -0
- package/dist/ripple/{p-f41ab9ea.js → p-599dd035.js} +1 -1
- package/dist/ripple/{p-a38a1bd7.system.entry.js → p-5a2b1e2b.system.entry.js} +1 -1
- package/dist/ripple/p-5f78dd11.entry.js +1 -0
- package/dist/ripple/p-5fe90111.entry.js +1 -0
- package/dist/ripple/{p-043901ab.system.entry.js → p-65d26233.system.entry.js} +1 -1
- package/dist/ripple/{p-cc17206d.system.entry.js → p-68f39a1f.system.entry.js} +1 -1
- package/dist/ripple/{p-3818fb5b.system.entry.js → p-6a7fd013.system.entry.js} +1 -1
- package/dist/ripple/p-6b859ff2.entry.js +1 -0
- package/dist/ripple/p-72bf2c06.system.entry.js +1 -0
- package/dist/ripple/p-76a9ae45.system.js +1 -0
- package/dist/ripple/{p-b0dddc8b.system.js → p-7a647f51.system.js} +1 -1
- package/dist/ripple/p-7cf74ee6.system.js +1 -0
- package/dist/ripple/{p-aae83494.system.entry.js → p-7f0ca371.system.entry.js} +1 -1
- package/dist/ripple/{p-f1abfaa1.entry.js → p-7f7c5da2.system.entry.js} +1 -1
- package/dist/ripple/{p-d3ffe48c.system.entry.js → p-88ae8914.system.entry.js} +1 -1
- package/dist/ripple/{p-1c9e0cae.system.entry.js → p-88c968e7.system.entry.js} +1 -1
- package/dist/ripple/{p-cd0cc88d.entry.js → p-88ebddd7.entry.js} +1 -1
- package/dist/ripple/p-8d7ecab9.entry.js +1 -0
- package/dist/ripple/p-8fcebe03.entry.js +1 -0
- package/dist/ripple/p-919fd2b6.entry.js +1 -0
- package/dist/ripple/{p-8270cd9e.system.entry.js → p-950dc6c4.system.entry.js} +1 -1
- package/dist/ripple/p-9f2a0e0a.entry.js +1 -0
- package/dist/ripple/{p-0c9e1261.system.entry.js → p-9f38f65d.system.entry.js} +1 -1
- package/dist/ripple/{p-a96fd05a.entry.js → p-a0e84979.entry.js} +1 -1
- package/dist/ripple/p-ab8d78cc.system.js +2 -0
- package/dist/ripple/{p-8b983e94.system.entry.js → p-ac625334.system.entry.js} +1 -1
- package/dist/ripple/{p-44b7ac3f.system.entry.js → p-b0512477.system.entry.js} +1 -1
- package/dist/ripple/{p-7125475c.system.entry.js → p-b0ada8f7.system.entry.js} +1 -1
- package/dist/ripple/p-b1fe3bbc.system.entry.js +1 -0
- package/dist/ripple/{p-93f75c0c.entry.js → p-b72aa60b.entry.js} +1 -1
- package/dist/ripple/{p-76d248e6.entry.js → p-b976c84b.entry.js} +1 -1
- package/dist/ripple/p-bc566798.entry.js +1 -0
- package/dist/ripple/{p-581dd537.system.entry.js → p-c0f370f9.system.entry.js} +1 -1
- package/dist/ripple/p-c6c43720.entry.js +1 -0
- package/dist/ripple/p-ce191133.entry.js +1 -0
- package/dist/ripple/{p-8acb1dc0.entry.js → p-d168b8bc.entry.js} +1 -1
- package/dist/ripple/{p-0d77c2f2.system.entry.js → p-d8bc3fd7.system.entry.js} +1 -1
- package/dist/ripple/{p-b02dfe01.system.entry.js → p-dadb480d.system.entry.js} +1 -1
- package/dist/ripple/p-dcbed420.entry.js +1 -0
- package/dist/ripple/p-df387590.entry.js +1 -0
- package/dist/ripple/{p-cf02b0a3.entry.js → p-e49d3992.entry.js} +1 -1
- package/dist/ripple/p-e5b62488.entry.js +1 -0
- package/dist/ripple/p-e5c8a584.entry.js +1 -0
- package/dist/ripple/p-eca78c2b.js +1 -0
- package/dist/ripple/p-edd87140.system.js +1 -0
- package/dist/ripple/{p-3bec88da.system.entry.js → p-ef980041.system.entry.js} +1 -1
- package/dist/ripple/p-f623828b.entry.js +1 -0
- package/dist/ripple/{p-e540946d.system.entry.js → p-f94b8117.system.entry.js} +1 -1
- package/dist/ripple/p-fef994ea.entry.js +1 -0
- package/dist/ripple/ripple.esm.js +1 -1
- package/dist/ripple/ripple.js +1 -1
- package/dist/types/components/wm-uploader/wm-uploader.d.ts +16 -2
- package/dist/types/components.d.ts +10 -6
- package/dist/types/global/intl.d.ts +2 -2
- package/dist/types/stencil-public-runtime.d.ts +10 -3
- package/package.json +1 -1
- package/dist/cjs/index-788526f5.js +0 -1859
- package/dist/esm/index-130e07bb.js +0 -1828
- package/dist/esm-es5/app-globals-bd78f8aa.js +0 -1
- package/dist/esm-es5/functions-f39e6177.js +0 -1
- package/dist/esm-es5/index-130e07bb.js +0 -1
- package/dist/ripple/p-0ced76f3.system.js +0 -1
- package/dist/ripple/p-1827f482.entry.js +0 -1
- package/dist/ripple/p-1b808f54.entry.js +0 -1
- package/dist/ripple/p-25017466.entry.js +0 -1
- package/dist/ripple/p-2bbe2a08.entry.js +0 -1
- package/dist/ripple/p-2e1f1f9e.entry.js +0 -1
- package/dist/ripple/p-342ba395.entry.js +0 -1
- package/dist/ripple/p-362f606c.system.entry.js +0 -1
- package/dist/ripple/p-36f666de.entry.js +0 -1
- package/dist/ripple/p-37438529.entry.js +0 -1
- package/dist/ripple/p-3d203b92.system.entry.js +0 -1
- package/dist/ripple/p-3ed77883.entry.js +0 -1
- package/dist/ripple/p-3f486eed.system.js +0 -1
- package/dist/ripple/p-585d603f.entry.js +0 -1
- package/dist/ripple/p-5f247e4a.entry.js +0 -1
- package/dist/ripple/p-65d2c6b7.entry.js +0 -1
- package/dist/ripple/p-6e159fdf.entry.js +0 -1
- package/dist/ripple/p-72935ed4.entry.js +0 -1
- package/dist/ripple/p-77016702.system.js +0 -1
- package/dist/ripple/p-78041e19.system.entry.js +0 -1
- package/dist/ripple/p-79b5df24.entry.js +0 -1
- package/dist/ripple/p-89a2db02.js +0 -1
- package/dist/ripple/p-8ad580c5.entry.js +0 -1
- package/dist/ripple/p-929e82f6.entry.js +0 -1
- package/dist/ripple/p-a866c01c.js +0 -1
- package/dist/ripple/p-aab342f1.entry.js +0 -1
- package/dist/ripple/p-b4134a44.entry.js +0 -1
- package/dist/ripple/p-c22b9ac6.entry.js +0 -1
- package/dist/ripple/p-cef8a45b.system.js +0 -2
- package/dist/ripple/p-d49cd886.entry.js +0 -1
- package/dist/ripple/p-d7ce58a3.entry.js +0 -1
- package/dist/ripple/p-d9da0502.js +0 -2
- package/dist/ripple/p-e3083b58.entry.js +0 -1
- package/dist/ripple/p-e4ef6c22.system.entry.js +0 -1
- package/dist/ripple/p-f4ed6ee8.system.entry.js +0 -1
|
@@ -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,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
|
+
});
|
|
@@ -97,16 +97,19 @@ export const uploaderMessages = {
|
|
|
97
97
|
defaultMessage: "The file must be more than 0 bytes",
|
|
98
98
|
description: "Error message when user attempts to upload a file of no size",
|
|
99
99
|
}),
|
|
100
|
+
dropInstructions: intl.formatMessage({
|
|
101
|
+
id: "uploader.dropInstructions",
|
|
102
|
+
defaultMessage: "Browse or Drag Files Here",
|
|
103
|
+
description: "Instructions for how to choose files to upload",
|
|
104
|
+
}),
|
|
105
|
+
fileRequirements: intl.formatMessage({
|
|
106
|
+
id: "uploader.fileRequirements",
|
|
107
|
+
defaultMessage: "File Requirements",
|
|
108
|
+
description: "Expandable button revealing the uploader's file requirements",
|
|
109
|
+
}),
|
|
100
110
|
// -------------------------------------------------------------------------- //
|
|
101
111
|
// Functions //
|
|
102
112
|
// -------------------------------------------------------------------------- //
|
|
103
|
-
getAcceptedFileTypes: (validTypes, amount) => intl.formatMessage({
|
|
104
|
-
id: "uploader.acceptedFileTypes",
|
|
105
|
-
defaultMessage: "Accepted file {amount, plural, =1 {type} other {types}}: {fileTypes}",
|
|
106
|
-
}, {
|
|
107
|
-
fileTypes: validTypes,
|
|
108
|
-
amount: amount,
|
|
109
|
-
}),
|
|
110
113
|
getFilesAdded: (numFiles) => intl.formatMessage({
|
|
111
114
|
id: "uploader.filesAdded",
|
|
112
115
|
defaultMessage: "{numFiles, plural, one {1 file added} other {# files added}}",
|
|
@@ -128,13 +131,6 @@ export const uploaderMessages = {
|
|
|
128
131
|
id: "uploader.invalidFileType",
|
|
129
132
|
defaultMessage: "The file type is invalid. Accepted types: {validTypes}",
|
|
130
133
|
}, { validTypes }),
|
|
131
|
-
getMaxSize: (maxSize) => intl.formatMessage({
|
|
132
|
-
id: "uploader.maxSize",
|
|
133
|
-
defaultMessage: "Maximum file size {maxSize}",
|
|
134
|
-
description: "An indicator of the maximum file size the uploader allows",
|
|
135
|
-
}, {
|
|
136
|
-
maxSize: maxSize,
|
|
137
|
-
}),
|
|
138
134
|
getUploadProgress: (percentage) => intl.formatMessage({
|
|
139
135
|
id: "uploader.uploadProgress",
|
|
140
136
|
defaultMessage: "Upload progress: {percentage}%",
|
|
@@ -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,43 +1,43 @@
|
|
|
1
|
-
/* This script is useful when we translate internally, so we know which keys to translate.
|
|
2
|
-
* Currently Martin Maugeais translates to French and Kristian Manrique to Spanish.
|
|
3
|
-
* This script should be run with `npm run missing`. It may fail otherwise, as fs paths are relative to project root.
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
const fs = require("fs");
|
|
7
|
-
const en = require("./en.json");
|
|
8
|
-
const fr = require("./fr.json");
|
|
9
|
-
const es = require("./es.json");
|
|
10
|
-
|
|
11
|
-
const keys = Object.keys(en);
|
|
12
|
-
|
|
13
|
-
let missingFR = {};
|
|
14
|
-
let missingES = {};
|
|
15
|
-
|
|
16
|
-
keys.map((key) => {
|
|
17
|
-
if (!fr[key]) {
|
|
18
|
-
missingFR[key] = en[key];
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
if (!es[key]) {
|
|
22
|
-
missingES[key] = en[key];
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
const dataFR = JSON.stringify(missingFR, null, 2);
|
|
27
|
-
const dataES = JSON.stringify(missingES, null, 2);
|
|
28
|
-
|
|
29
|
-
const totalMissingFR = Object.entries(missingFR).length;
|
|
30
|
-
if (totalMissingFR > 0) {
|
|
31
|
-
fs.writeFile("src/lang/missingTranslationsFR.json", dataFR, (err) => {
|
|
32
|
-
!!err && console.log(err);
|
|
33
|
-
});
|
|
34
|
-
console.log(`${totalMissingFR} french translations missing. See src/lang/missingTranslationsFR.json`);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
const totalMissingES = Object.entries(missingES).length;
|
|
38
|
-
if (totalMissingES > 0) {
|
|
39
|
-
fs.writeFile("src/lang/missingTranslationsES.json", dataES, (err) => {
|
|
40
|
-
!!err && console.log(err);
|
|
41
|
-
});
|
|
42
|
-
console.log(`${totalMissingES} spanish translations missing. See src/lang/missingTranslationsES.json`);
|
|
43
|
-
}
|
|
1
|
+
/* This script is useful when we translate internally, so we know which keys to translate.
|
|
2
|
+
* Currently Martin Maugeais translates to French and Kristian Manrique to Spanish.
|
|
3
|
+
* This script should be run with `npm run missing`. It may fail otherwise, as fs paths are relative to project root.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
const fs = require("fs");
|
|
7
|
+
const en = require("./en.json");
|
|
8
|
+
const fr = require("./fr.json");
|
|
9
|
+
const es = require("./es.json");
|
|
10
|
+
|
|
11
|
+
const keys = Object.keys(en);
|
|
12
|
+
|
|
13
|
+
let missingFR = {};
|
|
14
|
+
let missingES = {};
|
|
15
|
+
|
|
16
|
+
keys.map((key) => {
|
|
17
|
+
if (!fr[key]) {
|
|
18
|
+
missingFR[key] = en[key];
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if (!es[key]) {
|
|
22
|
+
missingES[key] = en[key];
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
const dataFR = JSON.stringify(missingFR, null, 2);
|
|
27
|
+
const dataES = JSON.stringify(missingES, null, 2);
|
|
28
|
+
|
|
29
|
+
const totalMissingFR = Object.entries(missingFR).length;
|
|
30
|
+
if (totalMissingFR > 0) {
|
|
31
|
+
fs.writeFile("src/lang/missingTranslationsFR.json", dataFR, (err) => {
|
|
32
|
+
!!err && console.log(err);
|
|
33
|
+
});
|
|
34
|
+
console.log(`${totalMissingFR} french translations missing. See src/lang/missingTranslationsFR.json`);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const totalMissingES = Object.entries(missingES).length;
|
|
38
|
+
if (totalMissingES > 0) {
|
|
39
|
+
fs.writeFile("src/lang/missingTranslationsES.json", dataES, (err) => {
|
|
40
|
+
!!err && console.log(err);
|
|
41
|
+
});
|
|
42
|
+
console.log(`${totalMissingES} spanish translations missing. See src/lang/missingTranslationsES.json`);
|
|
43
|
+
}
|