@watermarkinsights/ripple 5.12.0-8 → 5.12.0
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/dist/cjs/{chartFunctions-7314b414.js → chartFunctions-a1981e06.js} +31 -11
- package/dist/cjs/{functions-5ac8a62f.js → functions-4b187487.js} +1587 -370
- package/dist/{esm/app-globals-7306e215.js → cjs/global-4e034486.js} +2 -7
- package/dist/cjs/index-e86c28b6.js +2649 -0
- package/dist/cjs/{intl-07aaf53c.js → intl-7fd0760e.js} +104 -1
- package/dist/cjs/loader.cjs.js +3 -4
- 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 +14 -52
- package/dist/cjs/ripple.cjs.js +11 -12
- 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 +15 -9
- package/dist/cjs/wm-date-range.cjs.entry.js +21 -11
- 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 +18 -18
- package/dist/cjs/wm-modal-pss_3.cjs.entry.js +10 -13
- package/dist/cjs/wm-modal_3.cjs.entry.js +13 -16
- 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 +16 -56
- package/dist/cjs/wm-optgroup.cjs.entry.js +4 -5
- package/dist/cjs/wm-option_2.cjs.entry.js +11 -25
- package/dist/cjs/wm-pagination.cjs.entry.js +65 -14
- 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 +13 -9
- package/dist/cjs/wm-tab-item_3.cjs.entry.js +14 -12
- package/dist/cjs/wm-tag-input.cjs.entry.js +29 -24
- 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 +6 -7
- package/dist/cjs/wm-uploader.cjs.entry.js +6 -7
- 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 +29 -9
- 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 +10 -3
- 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 +14 -13
- 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 +26 -19
- 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 +16 -55
- package/dist/collection/components/selects/wm-nested-select/wm-nested-select.js +17 -56
- 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 +10 -22
- 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.css +9 -16
- 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.css +1 -3
- 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.css +5 -4
- 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 +1 -1
- 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 +63 -11
- 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 +10 -5
- 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 +8 -3
- 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 +25 -19
- 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.css +0 -1
- 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.e2e.js +70 -0
- package/dist/collection/components/wm-uploader/wm-uploader.js +2 -2
- 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 +102 -0
- package/dist/collection/lang/lang.spec.js +20 -0
- package/dist/collection/lang/piglatin.js +9 -1
- package/dist/esm/{chartFunctions-1478f4db.js → chartFunctions-9099c7e9.js} +31 -11
- package/dist/esm/{functions-f53b3537.js → functions-00e1916b.js} +1588 -371
- package/dist/{cjs/app-globals-f0911027.js → esm/global-c76064cb.js} +1 -10
- package/dist/esm/index-558b5a82.js +2618 -0
- package/dist/esm/{intl-6426ba51.js → intl-a6f16883.js} +104 -2
- package/dist/esm/loader.js +4 -5
- 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 +14 -52
- package/dist/esm/ripple.js +12 -13
- 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 +15 -9
- package/dist/esm/wm-date-range.entry.js +21 -11
- 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 +18 -18
- package/dist/esm/wm-modal-pss_3.entry.js +10 -13
- package/dist/esm/wm-modal_3.entry.js +13 -16
- 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 +16 -56
- package/dist/esm/wm-optgroup.entry.js +4 -5
- package/dist/esm/wm-option_2.entry.js +11 -25
- package/dist/esm/wm-pagination.entry.js +65 -14
- 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 +13 -9
- package/dist/esm/wm-tab-item_3.entry.js +14 -12
- package/dist/esm/wm-tag-input.entry.js +29 -24
- 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 +6 -7
- package/dist/esm/wm-uploader.entry.js +6 -7
- package/dist/esm/wm-wrapper.entry.js +1 -1
- package/dist/esm-es5/chartFunctions-9099c7e9.js +1 -0
- package/dist/esm-es5/functions-00e1916b.js +1 -0
- package/dist/esm-es5/global-c76064cb.js +1 -0
- package/dist/esm-es5/index-558b5a82.js +1 -0
- package/dist/esm-es5/intl-a6f16883.js +1 -0
- 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-05ae54d7.entry.js +1 -0
- package/dist/ripple/{p-fdfa3579.system.entry.js → p-0d89d63c.system.entry.js} +1 -1
- package/dist/ripple/p-118c47eb.system.entry.js +1 -0
- package/dist/ripple/{p-658f146a.system.entry.js → p-1a4b6b02.system.entry.js} +1 -1
- package/dist/ripple/{p-a0edf336.system.entry.js → p-1a4b7504.system.entry.js} +1 -1
- package/dist/ripple/{p-165b5d3d.system.entry.js → p-1a71d867.system.entry.js} +1 -1
- package/dist/ripple/p-1a951dfb.entry.js +1 -0
- package/dist/ripple/{p-28f9e202.system.entry.js → p-1c8f550f.system.entry.js} +1 -1
- package/dist/ripple/p-1f751b87.js +1 -0
- package/dist/ripple/p-1fac5bf9.js +1 -0
- package/dist/ripple/{p-03fafb82.entry.js → p-20a8f732.system.entry.js} +1 -1
- package/dist/ripple/{p-3b5d106d.entry.js → p-249b56fb.entry.js} +1 -1
- package/dist/ripple/p-249d13a1.system.entry.js +1 -0
- package/dist/ripple/p-26906899.entry.js +1 -0
- package/dist/ripple/{p-486b3b56.system.entry.js → p-28119645.system.entry.js} +1 -1
- package/dist/ripple/{p-a2544443.system.js → p-2f37f3ee.system.js} +1 -1
- package/dist/ripple/{p-823d7b4e.system.entry.js → p-32bf3f5b.system.entry.js} +1 -1
- package/dist/ripple/{p-20b137a3.system.entry.js → p-335c03d3.system.entry.js} +1 -1
- package/dist/ripple/p-363b534b.entry.js +1 -0
- package/dist/ripple/p-393e4636.js +1 -0
- package/dist/ripple/p-39f79d71.system.entry.js +1 -0
- package/dist/ripple/{p-ff60375d.system.entry.js → p-3a231f4b.system.entry.js} +1 -1
- package/dist/ripple/{p-55f8aa05.entry.js → p-3d4bb85f.entry.js} +1 -1
- package/dist/ripple/p-4228de00.entry.js +1 -0
- package/dist/ripple/{p-13b1d775.entry.js → p-48e09589.entry.js} +1 -1
- package/dist/ripple/p-4f8fe1d1.system.js +1 -0
- package/dist/ripple/{p-02e60a11.system.entry.js → p-522ecb7d.system.entry.js} +1 -1
- package/dist/ripple/{p-ee825214.entry.js → p-54d6f0f9.entry.js} +1 -1
- package/dist/ripple/p-568c595f.js +2 -0
- package/dist/ripple/p-56aeee6e.system.entry.js +1 -0
- package/dist/ripple/p-5e6a4f70.system.js +1 -0
- package/dist/ripple/{p-82819500.system.entry.js → p-5f082360.system.entry.js} +1 -1
- package/dist/ripple/p-5f5fe905.js +1 -0
- package/dist/ripple/p-617c2c75.entry.js +1 -0
- package/dist/ripple/{p-4fbe205e.system.entry.js → p-6524c53e.system.entry.js} +1 -1
- package/dist/ripple/{p-043901ab.system.entry.js → p-65d26233.system.entry.js} +1 -1
- package/dist/ripple/p-6834a6d3.entry.js +1 -0
- package/dist/ripple/{p-81ac8d49.entry.js → p-68e04222.entry.js} +1 -1
- package/dist/ripple/{p-f778baf4.system.entry.js → p-68fddfaa.system.entry.js} +1 -1
- package/dist/ripple/{p-e2fbed8c.system.entry.js → p-694903e6.system.entry.js} +1 -1
- package/dist/ripple/p-73ca2f26.system.js +1 -0
- package/dist/ripple/{p-1f174e18.system.entry.js → p-7b6a65f8.system.entry.js} +1 -1
- package/dist/ripple/{p-a9a7731b.system.entry.js → p-7b7e1eb5.system.entry.js} +1 -1
- package/dist/ripple/{p-cd0cc88d.entry.js → p-88ebddd7.entry.js} +1 -1
- package/dist/ripple/{p-791513e7.entry.js → p-8c1d27a7.entry.js} +1 -1
- package/dist/ripple/{p-ccae5bec.entry.js → p-8e9c24f3.entry.js} +1 -1
- package/dist/ripple/{p-b16f07f1.system.entry.js → p-8f836507.system.entry.js} +1 -1
- package/dist/ripple/p-94495341.entry.js +1 -0
- package/dist/ripple/{p-76f9acec.entry.js → p-958331bf.entry.js} +1 -1
- package/dist/ripple/p-9872623b.entry.js +1 -0
- package/dist/ripple/{p-e6e36701.system.entry.js → p-9ab3c088.system.entry.js} +1 -1
- package/dist/ripple/p-9aedd599.entry.js +1 -0
- package/dist/ripple/p-9b848151.entry.js +1 -0
- package/dist/ripple/{p-3376581a.system.entry.js → p-a04ef164.system.entry.js} +1 -1
- package/dist/ripple/{p-02bd68af.system.entry.js → p-a78bb423.system.entry.js} +1 -1
- package/dist/ripple/{p-0d163672.system.entry.js → p-a880d9a0.system.entry.js} +1 -1
- package/dist/ripple/p-ab8d78cc.system.js +2 -0
- package/dist/ripple/p-adc254e6.entry.js +1 -0
- package/dist/ripple/p-b165d61a.entry.js +1 -0
- package/dist/ripple/p-b39377c7.entry.js +1 -0
- package/dist/ripple/p-b9bca547.entry.js +1 -0
- package/dist/ripple/p-bae2c236.entry.js +1 -0
- package/dist/ripple/{p-8634abad.system.entry.js → p-c53f3704.system.entry.js} +1 -1
- package/dist/ripple/p-c56ff16f.entry.js +1 -0
- package/dist/ripple/{p-94fbf6f6.system.entry.js → p-c8cf09a2.system.entry.js} +1 -1
- package/dist/ripple/p-cbdceb6e.entry.js +1 -0
- package/dist/ripple/p-cc813406.system.js +1 -0
- package/dist/ripple/{p-529f179c.system.entry.js → p-d20a0f0c.system.entry.js} +1 -1
- package/dist/ripple/p-d6111226.entry.js +1 -0
- package/dist/ripple/{p-f28106ea.entry.js → p-da68c87c.entry.js} +1 -1
- package/dist/ripple/{p-e8cfa832.entry.js → p-ddef82fa.system.entry.js} +1 -1
- package/dist/ripple/p-dee6d5a3.entry.js +1 -0
- package/dist/ripple/p-e55d5371.entry.js +1 -0
- package/dist/ripple/{p-7959c4bd.system.entry.js → p-e8c22f01.system.entry.js} +1 -1
- package/dist/ripple/p-f555831b.entry.js +1 -0
- package/dist/ripple/{p-226217d3.system.entry.js → p-f5c40e9e.system.entry.js} +1 -1
- package/dist/ripple/p-f9cade98.entry.js +1 -0
- package/dist/ripple/{p-fc7965e4.system.entry.js → p-fa09191b.system.entry.js} +1 -1
- package/dist/ripple/{p-233f14ec.system.entry.js → p-fdfca58b.entry.js} +1 -1
- package/dist/ripple/ripple.esm.js +1 -1
- package/dist/ripple/ripple.js +1 -1
- package/dist/types/components/selects/priv-option-list/priv-option-list.d.ts +0 -6
- package/dist/types/components/wm-pagination/wm-pagination.d.ts +6 -0
- package/dist/types/components/wm-snackbar/wm-snackbar.d.ts +1 -0
- package/dist/types/components/wm-tabs/wm-tab-list/wm-tab-list.d.ts +1 -0
- package/dist/types/components/wm-tag-input/wm-tag-input.d.ts +2 -1
- package/dist/types/global/intl.d.ts +22 -0
- package/dist/types/stencil-public-runtime.d.ts +10 -3
- package/package.json +2 -2
- package/dist/cjs/index-788526f5.js +0 -1859
- package/dist/esm/index-130e07bb.js +0 -1828
- package/dist/esm-es5/app-globals-7306e215.js +0 -1
- package/dist/esm-es5/chartFunctions-1478f4db.js +0 -1
- package/dist/esm-es5/functions-f53b3537.js +0 -1
- package/dist/esm-es5/index-130e07bb.js +0 -1
- package/dist/esm-es5/intl-6426ba51.js +0 -1
- package/dist/ripple/p-243a7a17.system.entry.js +0 -1
- package/dist/ripple/p-263e42e0.entry.js +0 -1
- package/dist/ripple/p-2c8153c1.entry.js +0 -1
- package/dist/ripple/p-368e9ee9.entry.js +0 -1
- package/dist/ripple/p-3a2a3b70.entry.js +0 -1
- package/dist/ripple/p-45b5d2d2.entry.js +0 -1
- package/dist/ripple/p-49e24926.entry.js +0 -1
- package/dist/ripple/p-50294e3f.entry.js +0 -1
- package/dist/ripple/p-53400bc4.system.entry.js +0 -1
- package/dist/ripple/p-58734b13.entry.js +0 -1
- package/dist/ripple/p-5c62e26d.entry.js +0 -1
- package/dist/ripple/p-6136d0d7.entry.js +0 -1
- package/dist/ripple/p-66141f19.entry.js +0 -1
- package/dist/ripple/p-713ea307.entry.js +0 -1
- package/dist/ripple/p-727175e1.system.entry.js +0 -1
- package/dist/ripple/p-77a96f3e.system.entry.js +0 -1
- package/dist/ripple/p-79f8f38d.entry.js +0 -1
- package/dist/ripple/p-7a1bb29b.js +0 -1
- package/dist/ripple/p-84dc142f.js +0 -1
- package/dist/ripple/p-864158de.system.entry.js +0 -1
- package/dist/ripple/p-87e5a642.system.js +0 -1
- package/dist/ripple/p-8c95493c.js +0 -1
- package/dist/ripple/p-94dc80a0.entry.js +0 -1
- package/dist/ripple/p-9513c937.system.js +0 -1
- package/dist/ripple/p-9b739280.entry.js +0 -1
- package/dist/ripple/p-a280d710.entry.js +0 -1
- package/dist/ripple/p-c550716e.js +0 -1
- package/dist/ripple/p-cef8a45b.system.js +0 -2
- package/dist/ripple/p-d530c703.entry.js +0 -1
- package/dist/ripple/p-d96291e7.entry.js +0 -1
- package/dist/ripple/p-d9da0502.js +0 -2
- package/dist/ripple/p-e973024a.entry.js +0 -1
- package/dist/ripple/p-ed24dc42.entry.js +0 -1
- package/dist/ripple/p-f471ee29.system.js +0 -1
- package/dist/ripple/p-f66480de.entry.js +0 -1
- package/dist/ripple/p-f9a71cf6.entry.js +0 -1
- package/dist/ripple/p-ffbb9fc0.system.js +0 -1
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { newSpecPage } from "@stencil/core/testing";
|
|
2
|
+
import * as globalFunctions from "../../global/functions";
|
|
3
|
+
jest.spyOn(globalFunctions, "generateId").mockReturnValue("random-id");
|
|
4
|
+
import { Button } from "./wm-button";
|
|
5
|
+
describe("button", () => {
|
|
6
|
+
it("builds", async () => {
|
|
7
|
+
const page = await newSpecPage({
|
|
8
|
+
components: [Button],
|
|
9
|
+
html: "<wm-button></wm-button>",
|
|
10
|
+
});
|
|
11
|
+
expect(page.root).toMatchSnapshot();
|
|
12
|
+
});
|
|
13
|
+
it("has style and an icon type props with default values", async () => {
|
|
14
|
+
const page = await newSpecPage({
|
|
15
|
+
components: [Button],
|
|
16
|
+
html: "<wm-button></wm-button>",
|
|
17
|
+
});
|
|
18
|
+
const button = page.root;
|
|
19
|
+
const buttonEl = page.root.shadowRoot.querySelector("button");
|
|
20
|
+
expect(button).toHaveProperty("buttonType");
|
|
21
|
+
expect(button.buttonType).toEqual("secondary");
|
|
22
|
+
expect(buttonEl).toHaveClass("-secondary");
|
|
23
|
+
expect(button).toHaveProperty("icon");
|
|
24
|
+
expect(button.icon).toEqual(undefined);
|
|
25
|
+
expect(button).toHaveProperty("iconSize");
|
|
26
|
+
expect(button.iconSize).toBeUndefined;
|
|
27
|
+
});
|
|
28
|
+
it("has a method that validates the style property and resets an invalid property to a button type of secondary", async () => {
|
|
29
|
+
const page = await newSpecPage({
|
|
30
|
+
components: [Button],
|
|
31
|
+
html: "<wm-button></wm-button>",
|
|
32
|
+
});
|
|
33
|
+
const button = page.root;
|
|
34
|
+
expect(button).toHaveProperty("buttonType");
|
|
35
|
+
button.setAttribute("button-type", "foobar");
|
|
36
|
+
expect(button.buttonType).toEqual("secondary");
|
|
37
|
+
});
|
|
38
|
+
it("sets the aria label if the property labelForIdenticalButtons is passed", async () => {
|
|
39
|
+
const page = await newSpecPage({
|
|
40
|
+
components: [Button],
|
|
41
|
+
html: "<wm-button label-for-identical-buttons='read this instead of the text'>Button</wm-button>",
|
|
42
|
+
});
|
|
43
|
+
const button = page.root.shadowRoot.querySelector("button");
|
|
44
|
+
expect(button).toEqualAttribute("aria-label", "read this instead of the text");
|
|
45
|
+
});
|
|
46
|
+
// TOOLTIP
|
|
47
|
+
describe("error throwing", () => {
|
|
48
|
+
it("throws error when icononly or navigational button used without tooltip", async () => {
|
|
49
|
+
const mockFunc = jest.fn();
|
|
50
|
+
console.error = mockFunc;
|
|
51
|
+
await newSpecPage({
|
|
52
|
+
components: [Button],
|
|
53
|
+
html: "<wm-button icon='f1c0' button-type='icononly'></wm-button>",
|
|
54
|
+
});
|
|
55
|
+
expect(mockFunc).toHaveBeenCalledWith("wm-button should have a valid 'tooltip' property when button-type is set to 'icononly' or 'navigational'.");
|
|
56
|
+
const mockFunc2 = jest.fn();
|
|
57
|
+
console.error = mockFunc2;
|
|
58
|
+
await newSpecPage({
|
|
59
|
+
components: [Button],
|
|
60
|
+
html: "<wm-button icon='f1c0' button-type='navigational'></wm-button>",
|
|
61
|
+
});
|
|
62
|
+
expect(mockFunc2).toHaveBeenCalledWith("wm-button should have a valid 'tooltip' property when button-type is set to 'icononly' or 'navigational'.");
|
|
63
|
+
});
|
|
64
|
+
it("throws error when icononly button used without icon", async () => {
|
|
65
|
+
const mockFunc = jest.fn();
|
|
66
|
+
console.error = mockFunc;
|
|
67
|
+
await newSpecPage({
|
|
68
|
+
components: [Button],
|
|
69
|
+
html: "<wm-button button-type='icononly' tooltip='edit'></wm-button>",
|
|
70
|
+
});
|
|
71
|
+
expect(mockFunc).toHaveBeenCalledWith("wm-button should have a valid 'icon' property when button-type is set to 'icononly' or 'navigational'.");
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
});
|
|
@@ -171,7 +171,7 @@ export class File {
|
|
|
171
171
|
return (h("div", { class: `file-wrapper` }, h("div", { class: `file ${this.errorMessage ? "--error" : ""} ${this.isCondensed ? "condensed" : ""}` }, this.renderFileName(), !this.errorMessage && (h("div", { class: "right-group" }, this.renderFileInfo(), this.fileActions !== "" && this.renderFileControls())), this.errorMessage && (h("wm-button", { "permanently-delete": true, "button-type": "textonly", "label-for-identical-buttons": this.generateClearButtonLabel(this.name), onClick: () => this.wmFileErrorCleared.emit() }, this.clearButtonText)), this.progress == 100 && h("span", { class: "svg-icon svg-success" })), this.errorMessage && h("div", { class: "error-message" }, this.errorMessage)));
|
|
172
172
|
}
|
|
173
173
|
render() {
|
|
174
|
-
return h(Host, {
|
|
174
|
+
return h(Host, { role: "listitem" }, this.isUploading ? this.renderFileInProgress() : this.renderFile());
|
|
175
175
|
}
|
|
176
176
|
static get is() { return "wm-file"; }
|
|
177
177
|
static get encapsulation() { return "shadow"; }
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import { newSpecPage } from "@stencil/core/testing";
|
|
2
|
+
import { File } from "./wm-file";
|
|
3
|
+
// mock ResizeObserver
|
|
4
|
+
global.ResizeObserver = jest.fn().mockImplementation(() => ({
|
|
5
|
+
observe: jest.fn(),
|
|
6
|
+
unobserve: jest.fn(),
|
|
7
|
+
disconnect: jest.fn(),
|
|
8
|
+
}));
|
|
9
|
+
describe("wm-file", () => {
|
|
10
|
+
let html, page;
|
|
11
|
+
async function createPageHelper() {
|
|
12
|
+
return await newSpecPage({
|
|
13
|
+
components: [File],
|
|
14
|
+
html: `<wm-file
|
|
15
|
+
id="file1"
|
|
16
|
+
name="File retrieved from server"
|
|
17
|
+
type="pdf"
|
|
18
|
+
last-updated="10/30/97 3:46 PM"
|
|
19
|
+
size="22 KB"
|
|
20
|
+
file-actions="download preview delete"
|
|
21
|
+
>
|
|
22
|
+
</wm-file>`,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
it("renders green check alongside recently uploaded files", async () => {
|
|
26
|
+
html = `<wm-file
|
|
27
|
+
id="file1"
|
|
28
|
+
name="File retrieved from server"
|
|
29
|
+
type="pdf"
|
|
30
|
+
last-updated="10/30/97 3:46 PM"
|
|
31
|
+
size="22 KB"
|
|
32
|
+
file-actions="download preview delete"
|
|
33
|
+
progress="100"
|
|
34
|
+
>
|
|
35
|
+
</wm-file>`;
|
|
36
|
+
page = await newSpecPage({ components: [File], html });
|
|
37
|
+
await page.waitForChanges();
|
|
38
|
+
const fileWrapperEl = page.root.shadowRoot.querySelector(".file-wrapper");
|
|
39
|
+
expect(fileWrapperEl).toHaveClass("checked");
|
|
40
|
+
});
|
|
41
|
+
it("renders file actions in the proper order", async () => {
|
|
42
|
+
html = `<wm-file
|
|
43
|
+
id="file1"
|
|
44
|
+
name="File retrieved from server"
|
|
45
|
+
type="pdf"
|
|
46
|
+
last-updated="10/30/97 3:46 PM"
|
|
47
|
+
size="22 KB"
|
|
48
|
+
file-actions="download delete preview"
|
|
49
|
+
>
|
|
50
|
+
</wm-file>`;
|
|
51
|
+
page = await newSpecPage({ components: [File], html });
|
|
52
|
+
await page.waitForChanges();
|
|
53
|
+
const fileActionEls = page.root.shadowRoot.querySelectorAll("wm-button");
|
|
54
|
+
expect(fileActionEls[0]).toEqualAttribute("tooltip", "Preview");
|
|
55
|
+
expect(fileActionEls[1]).toEqualAttribute("tooltip", "Download");
|
|
56
|
+
expect(fileActionEls[2]).toEqualAttribute("tooltip", "Delete");
|
|
57
|
+
});
|
|
58
|
+
it("defaults available actions to download and delete", async () => {
|
|
59
|
+
html = `<wm-file
|
|
60
|
+
id="file1"
|
|
61
|
+
name="File retrieved from server"
|
|
62
|
+
type="pdf"
|
|
63
|
+
last-updated="10/30/97 3:46 PM"
|
|
64
|
+
size="22 KB"
|
|
65
|
+
>
|
|
66
|
+
</wm-file>`;
|
|
67
|
+
page = await newSpecPage({ components: [File], html });
|
|
68
|
+
await page.waitForChanges();
|
|
69
|
+
const deleteButton = page.root.shadowRoot.querySelector(".delete-button");
|
|
70
|
+
const downloadButton = page.root.shadowRoot.querySelector(".download-button");
|
|
71
|
+
const previewButton = page.root.shadowRoot.querySelector(".preview-button");
|
|
72
|
+
expect(deleteButton).toBeTruthy();
|
|
73
|
+
expect(downloadButton).toBeTruthy();
|
|
74
|
+
expect(previewButton).toBeFalsy();
|
|
75
|
+
});
|
|
76
|
+
it("displays no file actions when an empty string is passed", async () => {
|
|
77
|
+
html = `<wm-file
|
|
78
|
+
id="file1"
|
|
79
|
+
name="File retrieved from server"
|
|
80
|
+
type="pdf"
|
|
81
|
+
last-updated="10/30/97 3:46 PM"
|
|
82
|
+
size="22 KB"
|
|
83
|
+
file-actions=""
|
|
84
|
+
>
|
|
85
|
+
</wm-file>`;
|
|
86
|
+
page = await newSpecPage({ components: [File], html });
|
|
87
|
+
await page.waitForChanges();
|
|
88
|
+
const deleteButton = page.root.shadowRoot.querySelector(".delete-button");
|
|
89
|
+
const downloadButton = page.root.shadowRoot.querySelector(".download-button");
|
|
90
|
+
const previewButton = page.root.shadowRoot.querySelector(".preview-button");
|
|
91
|
+
expect(deleteButton).toBeFalsy();
|
|
92
|
+
expect(downloadButton).toBeFalsy();
|
|
93
|
+
expect(previewButton).toBeFalsy();
|
|
94
|
+
});
|
|
95
|
+
it("renders timestamp by default, size if specified, or none based on show-info prop", async () => {
|
|
96
|
+
page = await createPageHelper();
|
|
97
|
+
await page.waitForChanges();
|
|
98
|
+
let fileInfoEl = page.root.shadowRoot.querySelector(".file-info");
|
|
99
|
+
expect(fileInfoEl.textContent).toBe("10/30/97 3:46 PM");
|
|
100
|
+
page = await newSpecPage({
|
|
101
|
+
components: [File],
|
|
102
|
+
html: `<wm-file
|
|
103
|
+
id="file1"
|
|
104
|
+
name="File retrieved from server"
|
|
105
|
+
type="pdf"
|
|
106
|
+
last-updated="10/30/97 3:46 PM"
|
|
107
|
+
size="22 KB"
|
|
108
|
+
file-actions="download preview delete"
|
|
109
|
+
show-info="size"
|
|
110
|
+
>
|
|
111
|
+
</wm-file>`,
|
|
112
|
+
});
|
|
113
|
+
await page.waitForChanges();
|
|
114
|
+
fileInfoEl = page.root.shadowRoot.querySelector(".file-info");
|
|
115
|
+
expect(fileInfoEl.textContent).toBe("22 KB");
|
|
116
|
+
page = await newSpecPage({
|
|
117
|
+
components: [File],
|
|
118
|
+
html: `<wm-file
|
|
119
|
+
id="file1"
|
|
120
|
+
name="File retrieved from server"
|
|
121
|
+
type="pdf"
|
|
122
|
+
last-updated="10/30/97 3:46 PM"
|
|
123
|
+
size="22 KB"
|
|
124
|
+
file-actions="download preview delete"
|
|
125
|
+
show-info="time"
|
|
126
|
+
>
|
|
127
|
+
</wm-file>`,
|
|
128
|
+
});
|
|
129
|
+
await page.waitForChanges();
|
|
130
|
+
fileInfoEl = page.root.shadowRoot.querySelector(".file-info");
|
|
131
|
+
expect(fileInfoEl.textContent).toBe("10/30/97 3:46 PM");
|
|
132
|
+
page = await newSpecPage({
|
|
133
|
+
components: [File],
|
|
134
|
+
html: `<wm-file
|
|
135
|
+
id="file1"
|
|
136
|
+
name="File retrieved from server"
|
|
137
|
+
type="pdf"
|
|
138
|
+
last-updated="10/30/97 3:46 PM"
|
|
139
|
+
size="22 KB"
|
|
140
|
+
file-actions="download preview delete"
|
|
141
|
+
show-info="none"
|
|
142
|
+
>
|
|
143
|
+
</wm-file>`,
|
|
144
|
+
});
|
|
145
|
+
await page.waitForChanges();
|
|
146
|
+
fileInfoEl = page.root.shadowRoot.querySelector(".file-info");
|
|
147
|
+
expect(fileInfoEl).toBeFalsy();
|
|
148
|
+
});
|
|
149
|
+
it("emits the appropriate events when user clicks the buttons", async () => {
|
|
150
|
+
const filePreviewedSpy = jest.fn();
|
|
151
|
+
const fileDownloadedSpy = jest.fn();
|
|
152
|
+
const fileDeletedSpy = jest.fn();
|
|
153
|
+
html = `<wm-file
|
|
154
|
+
id="file1"
|
|
155
|
+
name="File retrieved from server"
|
|
156
|
+
type="pdf"
|
|
157
|
+
last-updated="10/30/97 3:46 PM"
|
|
158
|
+
size="22 KB"
|
|
159
|
+
file-actions="download preview delete"
|
|
160
|
+
>
|
|
161
|
+
</wm-file>`;
|
|
162
|
+
page = await newSpecPage({ components: [File], html });
|
|
163
|
+
await page.waitForChanges();
|
|
164
|
+
page.root.addEventListener("wmFilePreview", filePreviewedSpy);
|
|
165
|
+
page.root.addEventListener("wmFileDownload", fileDownloadedSpy);
|
|
166
|
+
page.root.addEventListener("wmFileDelete", fileDeletedSpy);
|
|
167
|
+
// wmFilePreview
|
|
168
|
+
page.root.shadowRoot.querySelector(".preview-button").click();
|
|
169
|
+
await page.waitForChanges();
|
|
170
|
+
expect(filePreviewedSpy.mock.calls[0][0].target.id).toBe("file1");
|
|
171
|
+
// wmFileDownload
|
|
172
|
+
page.root.shadowRoot.querySelector(".download-button").click();
|
|
173
|
+
await page.waitForChanges();
|
|
174
|
+
expect(fileDownloadedSpy.mock.calls[0][0].target.id).toBe("file1");
|
|
175
|
+
// wmFileDelete
|
|
176
|
+
page.root.shadowRoot.querySelector(".delete-button").click();
|
|
177
|
+
await page.waitForChanges();
|
|
178
|
+
expect(fileDeletedSpy.mock.calls[0][0].target.id).toBe("file1");
|
|
179
|
+
jest.restoreAllMocks();
|
|
180
|
+
});
|
|
181
|
+
it("renders with an error if one is passed", async () => {
|
|
182
|
+
html = `<wm-file
|
|
183
|
+
id="file1"
|
|
184
|
+
error-message="Example error message"
|
|
185
|
+
file='{"id": "file1", "name": "File retrieved from server.pdf", "lastUpdated": "10/30/97 3:46 PM", "size": "22 KB", "fileActions": "download preview delete"}'
|
|
186
|
+
></wm-file>`;
|
|
187
|
+
page = await newSpecPage({ components: [File], html });
|
|
188
|
+
await page.waitForChanges();
|
|
189
|
+
const fileDiv = page.root.shadowRoot.querySelector(".file");
|
|
190
|
+
expect(fileDiv).toHaveClass("--error");
|
|
191
|
+
const errorText = page.root.shadowRoot.querySelector(".error-message");
|
|
192
|
+
expect(errorText.textContent).toBe("Example error message");
|
|
193
|
+
});
|
|
194
|
+
});
|
|
@@ -4,7 +4,7 @@ export class FileList {
|
|
|
4
4
|
this.showInfo = "last-updated";
|
|
5
5
|
}
|
|
6
6
|
render() {
|
|
7
|
-
return (h("div", {
|
|
7
|
+
return (h("div", { role: "list", class: "list-wrapper" }, h("slot", null)));
|
|
8
8
|
}
|
|
9
9
|
static get is() { return "wm-file-list"; }
|
|
10
10
|
static get encapsulation() { return "shadow"; }
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { newSpecPage } from "@stencil/core/testing";
|
|
2
|
+
import { FileList } from "./wm-file-list";
|
|
3
|
+
import { File } from "../wm-file/wm-file";
|
|
4
|
+
// mock ResizeObserver
|
|
5
|
+
global.ResizeObserver = jest.fn().mockImplementation(() => ({
|
|
6
|
+
observe: jest.fn(),
|
|
7
|
+
unobserve: jest.fn(),
|
|
8
|
+
disconnect: jest.fn(),
|
|
9
|
+
}));
|
|
10
|
+
describe("wm-file-list", () => {
|
|
11
|
+
let page;
|
|
12
|
+
async function createPageHelper() {
|
|
13
|
+
return await newSpecPage({
|
|
14
|
+
components: [FileList, File],
|
|
15
|
+
html: `<wm-file-list id="filelist1">
|
|
16
|
+
<wm-file id="file1" name="File retrieved from server" type="pdf" last-updated="1/28/2020 5:29 PM" file-actions="preview download"></wm-file>
|
|
17
|
+
<wm-file id="file2" name="Second file" type="jpeg" last-updated="2/14/2019 7:21 AM" file-actions="preview download"></wm-file>
|
|
18
|
+
</wm-file-list>`,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
it("renders all files", async () => {
|
|
22
|
+
page = await createPageHelper();
|
|
23
|
+
await page.waitForChanges();
|
|
24
|
+
let fileEls = page.root.querySelectorAll("wm-file");
|
|
25
|
+
expect(fileEls.length).toBe(2);
|
|
26
|
+
expect(fileEls[0]).toEqualAttribute("id", "file1");
|
|
27
|
+
expect(fileEls[1]).toEqualAttribute("id", "file2");
|
|
28
|
+
});
|
|
29
|
+
it("passes on show-info to it's children wm-files", async () => {
|
|
30
|
+
page = await createPageHelper();
|
|
31
|
+
await page.waitForChanges();
|
|
32
|
+
// default (last-updated)
|
|
33
|
+
let fileEl = page.root.querySelector("wm-file");
|
|
34
|
+
expect(fileEl.showInfo).toBe("last-updated");
|
|
35
|
+
// size
|
|
36
|
+
page = await newSpecPage({
|
|
37
|
+
components: [FileList, File],
|
|
38
|
+
html: `<wm-file-list id="filelist1" show-info="size">
|
|
39
|
+
<wm-file id="file1" name="File retrieved from server" type="pdf" last-updated="1/28/2020 5:29 PM" file-actions="preview download"></wm-file>
|
|
40
|
+
<wm-file id="file2" name="Second file" type="jpeg" last-updated="2/14/2019 7:21 AM" file-actions="preview download"></wm-file>
|
|
41
|
+
</wm-file-list>`,
|
|
42
|
+
});
|
|
43
|
+
await page.waitForChanges();
|
|
44
|
+
fileEl = page.root.querySelector("wm-file");
|
|
45
|
+
expect(fileEl.showInfo).toBe("size");
|
|
46
|
+
// last-updated (specified)
|
|
47
|
+
page = await newSpecPage({
|
|
48
|
+
components: [FileList, File],
|
|
49
|
+
html: `<wm-file-list id="filelist1" show-info="last-updated">
|
|
50
|
+
<wm-file id="file1" name="File retrieved from server" type="pdf" last-updated="1/28/2020 5:29 PM" file-actions="preview download"></wm-file>
|
|
51
|
+
<wm-file id="file2" name="Second file" type="jpeg" last-updated="2/14/2019 7:21 AM" file-actions="preview download"></wm-file>
|
|
52
|
+
</wm-file-list>`,
|
|
53
|
+
});
|
|
54
|
+
await page.waitForChanges();
|
|
55
|
+
fileEl = page.root.querySelector("wm-file");
|
|
56
|
+
expect(fileEl.showInfo).toBe("last-updated");
|
|
57
|
+
// none
|
|
58
|
+
page = await newSpecPage({
|
|
59
|
+
components: [FileList, File],
|
|
60
|
+
html: `<wm-file-list id="filelist1" show-info="none">
|
|
61
|
+
<wm-file id="file1" name="File retrieved from server" type="pdf" last-updated="1/28/2020 5:29 PM" file-actions="preview download"></wm-file>
|
|
62
|
+
<wm-file id="file2" name="Second file" type="jpeg" last-updated="2/14/2019 7:21 AM" file-actions="preview download"></wm-file>
|
|
63
|
+
</wm-file-list>`,
|
|
64
|
+
});
|
|
65
|
+
await page.waitForChanges();
|
|
66
|
+
fileEl = page.root.querySelector("wm-file");
|
|
67
|
+
expect(fileEl.showInfo).toBe("none");
|
|
68
|
+
});
|
|
69
|
+
});
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import AxePuppeteer from "@axe-core/puppeteer";
|
|
2
|
+
import { newE2EPage } from "@stencil/core/testing";
|
|
3
|
+
describe("wm-input", () => {
|
|
4
|
+
// ts throws erroneous warning about vars being unused...
|
|
5
|
+
// @ts-ignore
|
|
6
|
+
let page, el, inputField;
|
|
7
|
+
beforeEach(async () => {
|
|
8
|
+
page = await newE2EPage();
|
|
9
|
+
await page.setContent(`<html lang='en'><head><title>Page</title></head><body><main><h1>Title</h1>
|
|
10
|
+
<wm-input label="input"></wm-input>
|
|
11
|
+
</main></body></html>`);
|
|
12
|
+
el = await page.find("wm-input");
|
|
13
|
+
inputField = await page.find("wm-input >>> input");
|
|
14
|
+
await page.waitForChanges();
|
|
15
|
+
});
|
|
16
|
+
it("passes Axe checks", async () => {
|
|
17
|
+
const results = await new AxePuppeteer(page).analyze();
|
|
18
|
+
expect(results.violations.length).toBe(0);
|
|
19
|
+
});
|
|
20
|
+
it("updates input value when changed programatically", async () => {
|
|
21
|
+
el.setProperty("value", "33245");
|
|
22
|
+
await page.waitForChanges();
|
|
23
|
+
const value = await el.getProperty("value");
|
|
24
|
+
expect(value).toBe("33245");
|
|
25
|
+
});
|
|
26
|
+
it("updates value prop when user types", async () => {
|
|
27
|
+
await inputField.type("example");
|
|
28
|
+
await page.waitForChanges();
|
|
29
|
+
const value = await el.getProperty("value");
|
|
30
|
+
expect(value).toBe("example");
|
|
31
|
+
});
|
|
32
|
+
});
|
|
@@ -101,7 +101,7 @@ export class Input {
|
|
|
101
101
|
: `info error`;
|
|
102
102
|
}
|
|
103
103
|
render() {
|
|
104
|
-
return (h("div", {
|
|
104
|
+
return (h("div", { class: `wrapper label-${this.labelPosition} ${this.errorMessage ? "invalid" : ""}`, ref: (el) => (this.inputWrapperEl = el) }, h("div", { class: "label-wrapper" }, h("label", { htmlFor: "inputfield", class: "label" }, this.label, this.characterLimit && (h("span", { class: "sr-only" }, " ", globalMessages.getCharacterLimit(this.characterLimit))), this.requiredField && (h("span", { class: "required", "aria-hidden": "true" }, "*")))), h("div", { class: "inner-wrapper" }, h("div", { class: "text-after-wrapper" }, h("div", { class: `inputfield-wrapper ${this.isDisabled ? "disabled" : ""}`, style: this.getInputWidth() }, this.symbolBefore && (h("span", { class: "symbol", id: "symbol-before" }, this.symbolBefore)), h("input", { ref: (el) => (this.inputEl = el), id: "inputfield", disabled: this.isDisabled, "aria-describedby": this.descriptors(), onInput: (ev) => this.handleInput(ev), onKeyDown: (ev) => this.handleKeyDown(ev), onBlur: () => this.handleBlur(), onFocus: () => this.handleFocus(), placeholder: this.placeholder, autocomplete: "off", "aria-required": this.requiredField ? "true" : null, maxLength: this.characterLimit || undefined, type: this.type, step: this.step, max: this.max, min: this.min, value: this.el.value }), this.symbolAfter && (h("span", { class: "symbol", id: "symbol-after" }, this.symbolAfter)), this.characterLimit && typeof this.characterLimit === "number" ? (h("div", { class: "character-count" }, this.charCount, "/", this.characterLimit)) : ("")), this.textAfter && (h("span", { class: "text-after", id: "text-after" }, this.textAfter))), this.info && (h("div", { id: "info", class: "info" }, this.info)), h("div", { id: "error", class: "error-message" }, this.errorMessage), h("div", { class: "sr-only", "aria-live": "polite", "aria-atomic": "true", ref: (el) => (this.liveRegionEl = el) }, this.announcement))));
|
|
105
105
|
}
|
|
106
106
|
static get is() { return "wm-input"; }
|
|
107
107
|
static get encapsulation() { return "shadow"; }
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { newSpecPage } from "@stencil/core/testing";
|
|
2
|
+
import { Input } from "./wm-input";
|
|
3
|
+
describe("input", () => {
|
|
4
|
+
let page;
|
|
5
|
+
beforeEach(async () => {
|
|
6
|
+
page = await newSpecPage({
|
|
7
|
+
components: [Input],
|
|
8
|
+
html: "<wm-input label='input'></wm-input>",
|
|
9
|
+
});
|
|
10
|
+
});
|
|
11
|
+
it("has the right aria attributes", async () => {
|
|
12
|
+
let inputField = await page.root.shadowRoot.querySelector("input");
|
|
13
|
+
// input field is described by help text
|
|
14
|
+
expect(inputField).toEqualAttribute("aria-describedby", "info error");
|
|
15
|
+
});
|
|
16
|
+
it("inputfield is disabled when the prop is passed", async () => {
|
|
17
|
+
await page.setContent(`<wm-input label="input" disabled></wm-input>`);
|
|
18
|
+
let inputField = await page.root.shadowRoot.querySelector("input");
|
|
19
|
+
expect(inputField).toHaveAttribute("disabled");
|
|
20
|
+
});
|
|
21
|
+
it("handles keydown", () => {
|
|
22
|
+
// handleKeyDown
|
|
23
|
+
const component = new Input();
|
|
24
|
+
component.characterLimit = 10;
|
|
25
|
+
let event = { key: "", ctrlKey: false, metaKey: false, altKey: false };
|
|
26
|
+
let inputEl = document.createElement("input");
|
|
27
|
+
// @ts-ignore
|
|
28
|
+
component.inputEl = inputEl;
|
|
29
|
+
const mockAnnounce = (component.announce = jest.fn());
|
|
30
|
+
const mockGenerateCharacterLimiWarning = (component.generateCharacterLimitWarning = jest.fn());
|
|
31
|
+
function resetKeys() {
|
|
32
|
+
event.key = "";
|
|
33
|
+
event.ctrlKey = false;
|
|
34
|
+
event.metaKey = false;
|
|
35
|
+
event.altKey = false;
|
|
36
|
+
//@ts-ignore
|
|
37
|
+
component.inputEl.value = "";
|
|
38
|
+
}
|
|
39
|
+
// no modifiers, empty key
|
|
40
|
+
resetKeys();
|
|
41
|
+
component.handleKeyDown(event);
|
|
42
|
+
expect(mockAnnounce).toHaveBeenCalledTimes(0);
|
|
43
|
+
expect(mockGenerateCharacterLimiWarning).toHaveBeenCalledTimes(0);
|
|
44
|
+
jest.clearAllMocks();
|
|
45
|
+
// no modifiers, wrong key
|
|
46
|
+
resetKeys();
|
|
47
|
+
event.key = "ArrowDown";
|
|
48
|
+
component.handleKeyDown(event);
|
|
49
|
+
expect(mockAnnounce).toHaveBeenCalledTimes(0);
|
|
50
|
+
expect(mockGenerateCharacterLimiWarning).toHaveBeenCalledTimes(0);
|
|
51
|
+
jest.clearAllMocks();
|
|
52
|
+
// no modifiers, right key, not at limit
|
|
53
|
+
resetKeys();
|
|
54
|
+
event.key = "a";
|
|
55
|
+
component.handleKeyDown(event);
|
|
56
|
+
expect(mockAnnounce).toHaveBeenCalledTimes(0);
|
|
57
|
+
expect(mockGenerateCharacterLimiWarning).toHaveBeenCalledTimes(0);
|
|
58
|
+
jest.clearAllMocks();
|
|
59
|
+
// no modifiers, right key, at limit
|
|
60
|
+
resetKeys();
|
|
61
|
+
//@ts-ignore
|
|
62
|
+
component.inputEl.value = "1234567890";
|
|
63
|
+
event.key = "a";
|
|
64
|
+
component.handleKeyDown(event);
|
|
65
|
+
expect(mockAnnounce).toHaveBeenCalledTimes(1);
|
|
66
|
+
expect(mockGenerateCharacterLimiWarning).toHaveBeenCalledTimes(1);
|
|
67
|
+
jest.clearAllMocks();
|
|
68
|
+
// no modifiers, right key, above limit
|
|
69
|
+
resetKeys();
|
|
70
|
+
//@ts-ignore
|
|
71
|
+
component.inputEl.value = "12345678901234567890";
|
|
72
|
+
event.key = "a";
|
|
73
|
+
component.handleKeyDown(event);
|
|
74
|
+
expect(mockAnnounce).toHaveBeenCalledTimes(1);
|
|
75
|
+
expect(mockGenerateCharacterLimiWarning).toHaveBeenCalledTimes(1);
|
|
76
|
+
jest.clearAllMocks();
|
|
77
|
+
// ctrl modifier, right key, above limit
|
|
78
|
+
resetKeys();
|
|
79
|
+
//@ts-ignore
|
|
80
|
+
component.inputEl.value = "12345678901234567890";
|
|
81
|
+
event.key = "a";
|
|
82
|
+
event.ctrlKey = true;
|
|
83
|
+
component.handleKeyDown(event);
|
|
84
|
+
expect(mockAnnounce).toHaveBeenCalledTimes(0);
|
|
85
|
+
expect(mockGenerateCharacterLimiWarning).toHaveBeenCalledTimes(0);
|
|
86
|
+
jest.clearAllMocks();
|
|
87
|
+
// meta modifier, right key, above limit
|
|
88
|
+
resetKeys();
|
|
89
|
+
//@ts-ignore
|
|
90
|
+
component.inputEl.value = "12345678901234567890";
|
|
91
|
+
event.key = "a";
|
|
92
|
+
event.metaKey = true;
|
|
93
|
+
component.handleKeyDown(event);
|
|
94
|
+
expect(mockAnnounce).toHaveBeenCalledTimes(0);
|
|
95
|
+
expect(mockGenerateCharacterLimiWarning).toHaveBeenCalledTimes(0);
|
|
96
|
+
jest.clearAllMocks();
|
|
97
|
+
// alt modifier, right key, above limit
|
|
98
|
+
resetKeys();
|
|
99
|
+
//@ts-ignore
|
|
100
|
+
component.inputEl.value = "12345678901234567890";
|
|
101
|
+
event.key = "a";
|
|
102
|
+
event.altKey = true;
|
|
103
|
+
component.handleKeyDown(event);
|
|
104
|
+
expect(mockAnnounce).toHaveBeenCalledTimes(0);
|
|
105
|
+
expect(mockGenerateCharacterLimiWarning).toHaveBeenCalledTimes(0);
|
|
106
|
+
jest.clearAllMocks();
|
|
107
|
+
jest.restoreAllMocks();
|
|
108
|
+
});
|
|
109
|
+
it("handles input", () => {
|
|
110
|
+
// handleInput
|
|
111
|
+
const component = new Input();
|
|
112
|
+
let inputEl = {};
|
|
113
|
+
let event = { target: inputEl };
|
|
114
|
+
const mockAnnounce = (component.announce = jest.fn());
|
|
115
|
+
const mockGenerateCharacterLimitWarning = (component.generateCharacterLimitWarning = jest.fn(() => "announcement"));
|
|
116
|
+
inputEl.value = "fish";
|
|
117
|
+
event.target = inputEl;
|
|
118
|
+
//@ts-ignore
|
|
119
|
+
component.handleInput(event);
|
|
120
|
+
expect(component.value).toBe("fish");
|
|
121
|
+
expect(component.charCount).toBe(4);
|
|
122
|
+
expect(mockAnnounce).toHaveBeenCalledTimes(0);
|
|
123
|
+
expect(mockGenerateCharacterLimitWarning).toHaveBeenCalledTimes(0);
|
|
124
|
+
component.characterLimit = 10;
|
|
125
|
+
inputEl.value = "two fish";
|
|
126
|
+
event.target = inputEl;
|
|
127
|
+
//@ts-ignore
|
|
128
|
+
component.handleInput(event);
|
|
129
|
+
expect(component.value).toBe("two fish");
|
|
130
|
+
expect(component.charCount).toBe(8);
|
|
131
|
+
expect(mockAnnounce).toHaveBeenCalledTimes(1);
|
|
132
|
+
expect(mockAnnounce).toHaveBeenCalledWith("announcement");
|
|
133
|
+
expect(mockGenerateCharacterLimitWarning).toHaveBeenCalledTimes(1);
|
|
134
|
+
expect(mockGenerateCharacterLimitWarning).toHaveBeenCalledWith(8, 10);
|
|
135
|
+
jest.resetAllMocks();
|
|
136
|
+
});
|
|
137
|
+
it("updates classes on focus", () => {
|
|
138
|
+
const component = new Input();
|
|
139
|
+
const divEl = document.createElement("div");
|
|
140
|
+
//@ts-ignore
|
|
141
|
+
component.inputWrapperEl = divEl;
|
|
142
|
+
//@ts-ignore
|
|
143
|
+
expect(component.inputWrapperEl).not.toHaveClass("focus");
|
|
144
|
+
component.handleFocus();
|
|
145
|
+
//@ts-ignore
|
|
146
|
+
expect(component.inputWrapperEl).toHaveClass("focus");
|
|
147
|
+
});
|
|
148
|
+
it("updates the live region announcement", () => {
|
|
149
|
+
// announce
|
|
150
|
+
const component = new Input();
|
|
151
|
+
let divEl = document.createElement("div");
|
|
152
|
+
//@ts-ignore
|
|
153
|
+
component.liveRegionEl = divEl;
|
|
154
|
+
component.announce("Message");
|
|
155
|
+
expect(component.announcement).toBe("Message");
|
|
156
|
+
//@ts-ignore
|
|
157
|
+
component.liveRegionEl.textContent = "Message";
|
|
158
|
+
component.announce("Message");
|
|
159
|
+
expect(component.announcement).toBe("Message" + "\u00A0");
|
|
160
|
+
});
|
|
161
|
+
it("generates the appropriate character limit warning", () => {
|
|
162
|
+
// generateCharacterLimitWarning
|
|
163
|
+
const component = new Input();
|
|
164
|
+
expect(component.generateCharacterLimitWarning(0, 10)).toBe("0 of 10 characters entered.");
|
|
165
|
+
expect(component.generateCharacterLimitWarning(5, 8)).toBe("5 of 8 characters entered.");
|
|
166
|
+
expect(component.generateCharacterLimitWarning(8, 8)).toBe("8 of 8 characters entered. No additional characters will be entered.");
|
|
167
|
+
});
|
|
168
|
+
it("sets input to required", async () => {
|
|
169
|
+
await page.setContent(`<wm-input label='input' required-field='true'></wm-input>`);
|
|
170
|
+
const input = await page.root.shadowRoot.querySelector("input");
|
|
171
|
+
expect(input).toEqualAttribute("aria-required", "true");
|
|
172
|
+
});
|
|
173
|
+
});
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { newE2EPage } from "@stencil/core/testing";
|
|
2
|
+
describe("wm-menuitem", () => {
|
|
3
|
+
let page;
|
|
4
|
+
beforeEach(async () => {
|
|
5
|
+
page = await newE2EPage();
|
|
6
|
+
await page.setContent(`<html lang='en'><head><title>Page</title></head><body><main><h1>Title</h1>
|
|
7
|
+
<wm-action-menu id='menu' tooltip="menu name"><wm-menuitem id='first' disabled onClick='action()'>First action</wm-menuitem><wm-menuitem id='second'>Second action</wm-menuitem><wm-menuitem id='third'>Third action</wm-menuitem></wm-action-menu>
|
|
8
|
+
<script>function action() {document.getElementById('second').innerHTML = 'Changed text'}</script></main></body></html>`);
|
|
9
|
+
});
|
|
10
|
+
it("renders", async () => {
|
|
11
|
+
const element = await page.find("wm-menuitem");
|
|
12
|
+
expect(element).not.toBeNull();
|
|
13
|
+
});
|
|
14
|
+
it("prevents action on disabled item", async () => {
|
|
15
|
+
await page.keyboard.press("Tab");
|
|
16
|
+
await page.keyboard.press("Enter"); // open popup
|
|
17
|
+
await page.waitForChanges();
|
|
18
|
+
await page.keyboard.press("Enter");
|
|
19
|
+
await page.waitForChanges();
|
|
20
|
+
let changedMenuitem = await page.find("wm-menuitem#second");
|
|
21
|
+
expect(changedMenuitem.innerHTML).toEqual("Second action");
|
|
22
|
+
});
|
|
23
|
+
});
|
|
@@ -98,7 +98,7 @@ export class Menuitem {
|
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
100
|
render() {
|
|
101
|
-
return (h(Host, {
|
|
101
|
+
return (h(Host, { tabindex: -1, role: "menuitem", "aria-disabled": this.disabled ? "true" : null }, h("div", { class: "wrapper", "aria-disabled": this.disabled ? "true" : null }, this.icon && this.renderIcon(), this.el.textContent, this.description ? h("div", { class: "description" }, this.description) : "")));
|
|
102
102
|
}
|
|
103
103
|
static get is() { return "wm-menuitem"; }
|
|
104
104
|
static get encapsulation() { return "shadow"; }
|