@watermarkinsights/ripple 3.25.0-2 → 3.25.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/README.md +3 -3
- package/dist/cjs/{chartFunctions-9dce0ea3.js → chartFunctions-2f04ab6a.js} +591 -591
- package/dist/cjs/chartFunctions-2f04ab6a.js.map +1 -0
- package/dist/cjs/{functions-53aff314.js → functions-d2d99997.js} +478 -478
- package/dist/cjs/{functions-53aff314.js.map → functions-d2d99997.js.map} +1 -1
- package/dist/cjs/{global-c22b1249.js → global-d0584d18.js} +63 -63
- package/dist/cjs/global-d0584d18.js.map +1 -0
- package/dist/cjs/{http-service-494d81de.js → http-service-9e8c4dd5.js} +50 -50
- package/dist/cjs/http-service-9e8c4dd5.js.map +1 -0
- package/dist/cjs/{interfaces-a3338581.js → interfaces-30a74c1f.js} +30 -30
- package/dist/cjs/interfaces-30a74c1f.js.map +1 -0
- package/dist/cjs/intl-a1ccf587.js +140 -0
- package/dist/cjs/intl-a1ccf587.js.map +1 -0
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/priv-chart-popover.cjs.entry.js +91 -91
- package/dist/cjs/priv-chart-popover.cjs.entry.js.map +1 -1
- package/dist/cjs/priv-datepicker.cjs.entry.js +657 -657
- package/dist/cjs/priv-datepicker.cjs.entry.js.map +1 -1
- package/dist/cjs/priv-navigator-button.cjs.entry.js +19 -19
- package/dist/cjs/priv-navigator-button.cjs.entry.js.map +1 -1
- package/dist/cjs/priv-navigator-item.cjs.entry.js +23 -23
- package/dist/cjs/priv-navigator-item.cjs.entry.js.map +1 -1
- package/dist/cjs/ripple.cjs.js +2 -2
- package/dist/cjs/wm-action-menu_2.cjs.entry.js +334 -334
- package/dist/cjs/wm-action-menu_2.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-button.cjs.entry.js +260 -260
- package/dist/cjs/wm-button.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-chart-slice.cjs.entry.js +18 -18
- package/dist/cjs/wm-chart-slice.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-chart.cjs.entry.js +179 -179
- package/dist/cjs/wm-chart.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-datepicker.cjs.entry.js +264 -264
- package/dist/cjs/wm-datepicker.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-file-list.cjs.entry.js +35 -35
- package/dist/cjs/wm-file-list.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-file.cjs.entry.js +201 -201
- package/dist/cjs/wm-file.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-input.cjs.entry.js +124 -140
- package/dist/cjs/wm-input.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-modal-footer.cjs.entry.js +33 -33
- package/dist/cjs/wm-modal-footer.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-modal-header.cjs.entry.js +32 -32
- package/dist/cjs/wm-modal-header.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-modal.cjs.entry.js +152 -152
- package/dist/cjs/wm-modal.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-navigation_3.cjs.entry.js +225 -230
- package/dist/cjs/wm-navigation_3.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-navigator.cjs.entry.js +264 -264
- package/dist/cjs/wm-navigator.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-network-uploader.cjs.entry.js +465 -467
- package/dist/cjs/wm-network-uploader.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-option_2.cjs.entry.js +769 -772
- package/dist/cjs/wm-option_2.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-pagination.cjs.entry.js +179 -179
- package/dist/cjs/wm-pagination.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-progress-indicator_3.cjs.entry.js +155 -155
- package/dist/cjs/wm-progress-indicator_3.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-search.cjs.entry.js +185 -192
- package/dist/cjs/wm-search.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-snackbar.cjs.entry.js +155 -159
- package/dist/cjs/wm-snackbar.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-tab-item_3.cjs.entry.js +264 -264
- package/dist/cjs/wm-tab-item_3.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-tag-input-row.cjs.entry.js +14 -14
- package/dist/cjs/wm-tag-input-row.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-tag-input.cjs.entry.js +912 -924
- package/dist/cjs/wm-tag-input.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-timepicker.cjs.entry.js +386 -386
- package/dist/cjs/wm-timepicker.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-toggletip.cjs.entry.js +130 -130
- package/dist/cjs/wm-toggletip.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-uploader.cjs.entry.js +441 -510
- package/dist/cjs/wm-uploader.cjs.entry.js.map +1 -1
- package/dist/cjs/wm-wrapper.cjs.entry.js +12 -12
- package/dist/cjs/wm-wrapper.cjs.entry.js.map +1 -1
- package/dist/collection/components/charts/chartFunctions.js +557 -557
- package/dist/collection/components/charts/chartFunctions.js.map +1 -1
- package/dist/collection/components/charts/priv-chart-popover/priv-chart-popover.js +268 -270
- package/dist/collection/components/charts/priv-chart-popover/priv-chart-popover.js.map +1 -1
- package/dist/collection/components/charts/wm-chart/wm-chart-slice.js +126 -126
- package/dist/collection/components/charts/wm-chart/wm-chart-slice.js.map +1 -1
- package/dist/collection/components/charts/wm-chart/wm-chart.js +447 -447
- package/dist/collection/components/charts/wm-chart/wm-chart.js.map +1 -1
- package/dist/collection/components/charts/wm-progress-monitor/wm-progress-indicator.js +208 -208
- package/dist/collection/components/charts/wm-progress-monitor/wm-progress-indicator.js.map +1 -1
- package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.js +144 -144
- package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.js.map +1 -1
- package/dist/collection/components/charts/wm-progress-monitor/wm-progress-slice.js +122 -122
- package/dist/collection/components/charts/wm-progress-monitor/wm-progress-slice.js.map +1 -1
- package/dist/collection/components/wm-action-menu/wm-action-menu.js +473 -473
- package/dist/collection/components/wm-action-menu/wm-action-menu.js.map +1 -1
- package/dist/collection/components/wm-button/wm-button.js +576 -576
- package/dist/collection/components/wm-button/wm-button.js.map +1 -1
- package/dist/collection/components/wm-datepicker/priv-datepicker/priv-datepicker.js +984 -984
- package/dist/collection/components/wm-datepicker/priv-datepicker/priv-datepicker.js.map +1 -1
- package/dist/collection/components/wm-datepicker/wm-datepicker.css +4 -4
- package/dist/collection/components/wm-datepicker/wm-datepicker.js +492 -492
- package/dist/collection/components/wm-datepicker/wm-datepicker.js.map +1 -1
- package/dist/collection/components/wm-file/wm-file.js +334 -334
- package/dist/collection/components/wm-file/wm-file.js.map +1 -1
- package/dist/collection/components/wm-file-list/wm-file-list.js +153 -153
- package/dist/collection/components/wm-file-list/wm-file-list.js.map +1 -1
- package/dist/collection/components/wm-input/wm-input.css +4 -4
- package/dist/collection/components/wm-input/wm-input.js +428 -444
- package/dist/collection/components/wm-input/wm-input.js.map +1 -1
- package/dist/collection/components/wm-menuitem/wm-menuitem.js +455 -455
- package/dist/collection/components/wm-menuitem/wm-menuitem.js.map +1 -1
- package/dist/collection/components/wm-modal/wm-modal-footer.js +139 -139
- package/dist/collection/components/wm-modal/wm-modal-footer.js.map +1 -1
- package/dist/collection/components/wm-modal/wm-modal-header.js +83 -83
- package/dist/collection/components/wm-modal/wm-modal-header.js.map +1 -1
- package/dist/collection/components/wm-modal/wm-modal.js +463 -463
- package/dist/collection/components/wm-modal/wm-modal.js.map +1 -1
- package/dist/collection/components/wm-navigation/wm-navigation-hamburger.js +177 -177
- package/dist/collection/components/wm-navigation/wm-navigation-hamburger.js.map +1 -1
- package/dist/collection/components/wm-navigation/wm-navigation-item.js +131 -131
- package/dist/collection/components/wm-navigation/wm-navigation-item.js.map +1 -1
- package/dist/collection/components/wm-navigation/wm-navigation.js +218 -223
- package/dist/collection/components/wm-navigation/wm-navigation.js.map +1 -1
- package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.js +107 -107
- package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.js.map +1 -1
- package/dist/collection/components/wm-navigator/priv-navigator-item/priv-navigator-item.js +124 -124
- package/dist/collection/components/wm-navigator/priv-navigator-item/priv-navigator-item.js.map +1 -1
- package/dist/collection/components/wm-navigator/wm-navigator.js +468 -468
- package/dist/collection/components/wm-navigator/wm-navigator.js.map +1 -1
- package/dist/collection/components/wm-option/wm-option.js +436 -436
- package/dist/collection/components/wm-option/wm-option.js.map +1 -1
- package/dist/collection/components/wm-pagination/wm-pagination.js +371 -371
- package/dist/collection/components/wm-pagination/wm-pagination.js.map +1 -1
- package/dist/collection/components/wm-search/wm-search.css +5 -3
- package/dist/collection/components/wm-search/wm-search.js +440 -447
- package/dist/collection/components/wm-search/wm-search.js.map +1 -1
- package/dist/collection/components/wm-select/wm-select.css +4 -4
- package/dist/collection/components/wm-select/wm-select.js +1055 -1058
- package/dist/collection/components/wm-select/wm-select.js.map +1 -1
- package/dist/collection/components/wm-snackbar/wm-snackbar.js +283 -287
- package/dist/collection/components/wm-snackbar/wm-snackbar.js.map +1 -1
- package/dist/collection/components/wm-tabs/wm-tab-item/wm-tab-item.js +212 -212
- package/dist/collection/components/wm-tabs/wm-tab-item/wm-tab-item.js.map +1 -1
- package/dist/collection/components/wm-tabs/wm-tab-list/wm-tab-list.js +328 -328
- package/dist/collection/components/wm-tabs/wm-tab-list/wm-tab-list.js.map +1 -1
- package/dist/collection/components/wm-tabs/wm-tab-panel/wm-tab-panel.js +109 -109
- package/dist/collection/components/wm-tabs/wm-tab-panel/wm-tab-panel.js.map +1 -1
- package/dist/collection/components/wm-tag-input/wm-tag-input-row/wm-tag-input-row.js +123 -123
- package/dist/collection/components/wm-tag-input/wm-tag-input-row/wm-tag-input-row.js.map +1 -1
- package/dist/collection/components/wm-tag-input/wm-tag-input.css +4 -4
- package/dist/collection/components/wm-tag-input/wm-tag-input.js +1267 -1279
- package/dist/collection/components/wm-tag-input/wm-tag-input.js.map +1 -1
- package/dist/collection/components/wm-timepicker/wm-timepicker.css +4 -4
- package/dist/collection/components/wm-timepicker/wm-timepicker.js +606 -606
- package/dist/collection/components/wm-timepicker/wm-timepicker.js.map +1 -1
- package/dist/collection/components/wm-toggletip/wm-toggletip.js +254 -254
- package/dist/collection/components/wm-toggletip/wm-toggletip.js.map +1 -1
- package/dist/collection/components/wm-uploader/wm-network-uploader/wm-network-uploader.js +773 -775
- package/dist/collection/components/wm-uploader/wm-network-uploader/wm-network-uploader.js.map +1 -1
- package/dist/collection/components/wm-uploader/wm-uploader.js +965 -1034
- package/dist/collection/components/wm-uploader/wm-uploader.js.map +1 -1
- package/dist/collection/components/wm-wrapper/wm-wrapper.js +29 -29
- package/dist/collection/components/wm-wrapper/wm-wrapper.js.map +1 -1
- package/dist/collection/dev/scripts.js +20 -20
- package/dist/collection/global/__mocks__/functions.js +7 -7
- package/dist/collection/global/__mocks__/functions.js.map +1 -1
- package/dist/collection/global/functions.js +521 -521
- package/dist/collection/global/functions.js.map +1 -1
- package/dist/collection/global/global.js +70 -70
- package/dist/collection/global/global.js.map +1 -1
- package/dist/collection/global/interfaces.js +50 -50
- package/dist/collection/global/interfaces.js.map +1 -1
- package/dist/collection/global/intl.js +133 -7
- package/dist/collection/global/intl.js.map +1 -1
- package/dist/collection/global/services/__mocks__/http-service.js +131 -131
- package/dist/collection/global/services/__mocks__/http-service.js.map +1 -1
- package/dist/collection/global/services/http-service.js +51 -51
- package/dist/collection/global/services/http-service.js.map +1 -1
- package/dist/collection/lang/lang.js +6 -6
- package/dist/collection/lang/lang.js.map +1 -1
- package/dist/collection/lang/missing.js +43 -43
- package/dist/collection/lang/piglatin.js +93 -93
- package/dist/esm/{chartFunctions-1df8043a.js → chartFunctions-a72f5835.js} +591 -591
- package/dist/esm/chartFunctions-a72f5835.js.map +1 -0
- package/dist/esm/{functions-bb1309d0.js → functions-dc9964aa.js} +478 -478
- package/dist/esm/{functions-bb1309d0.js.map → functions-dc9964aa.js.map} +1 -1
- package/dist/esm/{global-2c5c2727.js → global-3d0ef32b.js} +63 -63
- package/dist/esm/global-3d0ef32b.js.map +1 -0
- package/dist/esm/{http-service-3dc3b3e7.js → http-service-5d037e16.js} +50 -50
- package/dist/esm/http-service-5d037e16.js.map +1 -0
- package/dist/esm/{interfaces-2b97fab2.js → interfaces-61c6305b.js} +30 -30
- package/dist/esm/interfaces-61c6305b.js.map +1 -0
- package/dist/esm/intl-4d4826dd.js +137 -0
- package/dist/esm/intl-4d4826dd.js.map +1 -0
- package/dist/esm/loader.js +2 -2
- 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-chart-popover.entry.js +91 -91
- package/dist/esm/priv-chart-popover.entry.js.map +1 -1
- package/dist/esm/priv-datepicker.entry.js +657 -657
- package/dist/esm/priv-datepicker.entry.js.map +1 -1
- package/dist/esm/priv-navigator-button.entry.js +19 -19
- package/dist/esm/priv-navigator-button.entry.js.map +1 -1
- package/dist/esm/priv-navigator-item.entry.js +23 -23
- package/dist/esm/priv-navigator-item.entry.js.map +1 -1
- package/dist/esm/ripple.js +2 -2
- package/dist/esm/wm-action-menu_2.entry.js +334 -334
- package/dist/esm/wm-action-menu_2.entry.js.map +1 -1
- package/dist/esm/wm-button.entry.js +260 -260
- package/dist/esm/wm-button.entry.js.map +1 -1
- package/dist/esm/wm-chart-slice.entry.js +18 -18
- package/dist/esm/wm-chart-slice.entry.js.map +1 -1
- package/dist/esm/wm-chart.entry.js +179 -179
- package/dist/esm/wm-chart.entry.js.map +1 -1
- package/dist/esm/wm-datepicker.entry.js +264 -264
- package/dist/esm/wm-datepicker.entry.js.map +1 -1
- package/dist/esm/wm-file-list.entry.js +35 -35
- package/dist/esm/wm-file-list.entry.js.map +1 -1
- package/dist/esm/wm-file.entry.js +201 -201
- package/dist/esm/wm-file.entry.js.map +1 -1
- package/dist/esm/wm-input.entry.js +124 -140
- package/dist/esm/wm-input.entry.js.map +1 -1
- package/dist/esm/wm-modal-footer.entry.js +33 -33
- package/dist/esm/wm-modal-footer.entry.js.map +1 -1
- package/dist/esm/wm-modal-header.entry.js +32 -32
- package/dist/esm/wm-modal-header.entry.js.map +1 -1
- package/dist/esm/wm-modal.entry.js +152 -152
- package/dist/esm/wm-modal.entry.js.map +1 -1
- package/dist/esm/wm-navigation_3.entry.js +225 -230
- package/dist/esm/wm-navigation_3.entry.js.map +1 -1
- package/dist/esm/wm-navigator.entry.js +264 -264
- package/dist/esm/wm-navigator.entry.js.map +1 -1
- package/dist/esm/wm-network-uploader.entry.js +465 -467
- package/dist/esm/wm-network-uploader.entry.js.map +1 -1
- package/dist/esm/wm-option_2.entry.js +769 -772
- package/dist/esm/wm-option_2.entry.js.map +1 -1
- package/dist/esm/wm-pagination.entry.js +179 -179
- package/dist/esm/wm-pagination.entry.js.map +1 -1
- package/dist/esm/wm-progress-indicator_3.entry.js +155 -155
- package/dist/esm/wm-progress-indicator_3.entry.js.map +1 -1
- package/dist/esm/wm-search.entry.js +185 -192
- package/dist/esm/wm-search.entry.js.map +1 -1
- package/dist/esm/wm-snackbar.entry.js +155 -159
- package/dist/esm/wm-snackbar.entry.js.map +1 -1
- package/dist/esm/wm-tab-item_3.entry.js +264 -264
- package/dist/esm/wm-tab-item_3.entry.js.map +1 -1
- package/dist/esm/wm-tag-input-row.entry.js +14 -14
- package/dist/esm/wm-tag-input-row.entry.js.map +1 -1
- package/dist/esm/wm-tag-input.entry.js +912 -924
- package/dist/esm/wm-tag-input.entry.js.map +1 -1
- package/dist/esm/wm-timepicker.entry.js +386 -386
- package/dist/esm/wm-timepicker.entry.js.map +1 -1
- package/dist/esm/wm-toggletip.entry.js +130 -130
- package/dist/esm/wm-toggletip.entry.js.map +1 -1
- package/dist/esm/wm-uploader.entry.js +441 -510
- package/dist/esm/wm-uploader.entry.js.map +1 -1
- package/dist/esm/wm-wrapper.entry.js +12 -12
- package/dist/esm/wm-wrapper.entry.js.map +1 -1
- package/dist/esm-es5/{chartFunctions-1df8043a.js → chartFunctions-a72f5835.js} +2 -2
- package/dist/esm-es5/chartFunctions-a72f5835.js.map +1 -0
- package/dist/esm-es5/{functions-bb1309d0.js → functions-dc9964aa.js} +1 -1
- package/dist/esm-es5/{functions-bb1309d0.js.map → functions-dc9964aa.js.map} +1 -1
- package/dist/esm-es5/global-3d0ef32b.js +2 -0
- package/dist/esm-es5/global-3d0ef32b.js.map +1 -0
- package/dist/esm-es5/{http-service-3dc3b3e7.js → http-service-5d037e16.js} +1 -1
- package/dist/esm-es5/http-service-5d037e16.js.map +1 -0
- package/dist/esm-es5/{interfaces-2b97fab2.js → interfaces-61c6305b.js} +1 -1
- package/dist/esm-es5/interfaces-61c6305b.js.map +1 -0
- package/dist/esm-es5/intl-4d4826dd.js +2 -0
- package/dist/esm-es5/intl-4d4826dd.js.map +1 -0
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/loader.js.map +1 -1
- package/dist/esm-es5/priv-chart-popover.entry.js +1 -1
- package/dist/esm-es5/priv-chart-popover.entry.js.map +1 -1
- package/dist/esm-es5/priv-datepicker.entry.js +1 -1
- package/dist/esm-es5/priv-datepicker.entry.js.map +1 -1
- package/dist/esm-es5/priv-navigator-button.entry.js.map +1 -1
- package/dist/esm-es5/priv-navigator-item.entry.js.map +1 -1
- package/dist/esm-es5/ripple.js +1 -1
- package/dist/esm-es5/ripple.js.map +1 -1
- package/dist/esm-es5/wm-action-menu_2.entry.js +1 -1
- package/dist/esm-es5/wm-action-menu_2.entry.js.map +1 -1
- package/dist/esm-es5/wm-button.entry.js +1 -1
- package/dist/esm-es5/wm-button.entry.js.map +1 -1
- package/dist/esm-es5/wm-chart-slice.entry.js.map +1 -1
- package/dist/esm-es5/wm-chart.entry.js +1 -1
- package/dist/esm-es5/wm-chart.entry.js.map +1 -1
- package/dist/esm-es5/wm-datepicker.entry.js +1 -1
- package/dist/esm-es5/wm-datepicker.entry.js.map +1 -1
- package/dist/esm-es5/wm-file-list.entry.js.map +1 -1
- package/dist/esm-es5/wm-file.entry.js +1 -1
- package/dist/esm-es5/wm-file.entry.js.map +1 -1
- package/dist/esm-es5/wm-input.entry.js +1 -1
- package/dist/esm-es5/wm-input.entry.js.map +1 -1
- package/dist/esm-es5/wm-modal-footer.entry.js.map +1 -1
- package/dist/esm-es5/wm-modal-header.entry.js +1 -1
- package/dist/esm-es5/wm-modal-header.entry.js.map +1 -1
- package/dist/esm-es5/wm-modal.entry.js +1 -1
- package/dist/esm-es5/wm-modal.entry.js.map +1 -1
- package/dist/esm-es5/wm-navigation_3.entry.js +1 -1
- package/dist/esm-es5/wm-navigation_3.entry.js.map +1 -1
- package/dist/esm-es5/wm-navigator.entry.js +1 -1
- package/dist/esm-es5/wm-navigator.entry.js.map +1 -1
- package/dist/esm-es5/wm-network-uploader.entry.js +1 -1
- package/dist/esm-es5/wm-network-uploader.entry.js.map +1 -1
- package/dist/esm-es5/wm-option_2.entry.js +1 -1
- package/dist/esm-es5/wm-option_2.entry.js.map +1 -1
- package/dist/esm-es5/wm-pagination.entry.js +1 -1
- package/dist/esm-es5/wm-pagination.entry.js.map +1 -1
- package/dist/esm-es5/wm-progress-indicator_3.entry.js +1 -1
- package/dist/esm-es5/wm-progress-indicator_3.entry.js.map +1 -1
- package/dist/esm-es5/wm-search.entry.js +1 -1
- package/dist/esm-es5/wm-search.entry.js.map +1 -1
- package/dist/esm-es5/wm-snackbar.entry.js +1 -1
- package/dist/esm-es5/wm-snackbar.entry.js.map +1 -1
- package/dist/esm-es5/wm-tab-item_3.entry.js +1 -1
- package/dist/esm-es5/wm-tab-item_3.entry.js.map +1 -1
- package/dist/esm-es5/wm-tag-input-row.entry.js.map +1 -1
- package/dist/esm-es5/wm-tag-input.entry.js +1 -1
- package/dist/esm-es5/wm-tag-input.entry.js.map +1 -1
- package/dist/esm-es5/wm-timepicker.entry.js +1 -1
- package/dist/esm-es5/wm-timepicker.entry.js.map +1 -1
- package/dist/esm-es5/wm-toggletip.entry.js +1 -1
- package/dist/esm-es5/wm-toggletip.entry.js.map +1 -1
- package/dist/esm-es5/wm-uploader.entry.js +1 -1
- package/dist/esm-es5/wm-uploader.entry.js.map +1 -1
- package/dist/esm-es5/wm-wrapper.entry.js.map +1 -1
- package/dist/ripple/{p-3f6c7e6c.entry.js → p-002d067e.entry.js} +2 -2
- package/dist/ripple/p-002d067e.entry.js.map +1 -0
- package/dist/ripple/p-02a1000a.entry.js +2 -0
- package/dist/ripple/p-02a1000a.entry.js.map +1 -0
- package/dist/ripple/{p-21bb563a.system.entry.js → p-04ae66fd.system.entry.js} +2 -2
- package/dist/ripple/p-04ae66fd.system.entry.js.map +1 -0
- package/dist/ripple/{p-c38f6103.system.js → p-0826dc64.system.js} +2 -2
- package/dist/ripple/{p-c38f6103.system.js.map → p-0826dc64.system.js.map} +1 -1
- package/dist/ripple/{p-f5df5903.system.js → p-08b7ec08.system.js} +1 -1
- package/dist/ripple/p-08b7ec08.system.js.map +1 -0
- package/dist/ripple/{p-d5b0809e.entry.js → p-0ad3a708.entry.js} +2 -2
- package/dist/ripple/p-0ad3a708.entry.js.map +1 -0
- package/dist/ripple/p-0cd13c7d.system.entry.js +2 -0
- package/dist/ripple/p-0cd13c7d.system.entry.js.map +1 -0
- package/dist/ripple/p-0d7bccf7.entry.js.map +1 -1
- package/dist/ripple/p-0eb7b1b7.system.entry.js +2 -0
- package/dist/ripple/p-0eb7b1b7.system.entry.js.map +1 -0
- package/dist/ripple/{p-70768add.entry.js → p-11124a23.entry.js} +2 -2
- package/dist/ripple/p-11124a23.entry.js.map +1 -0
- package/dist/ripple/p-1808b90a.entry.js +2 -0
- package/dist/ripple/p-1808b90a.entry.js.map +1 -0
- package/dist/ripple/p-1fd20e05.system.entry.js +2 -0
- package/dist/ripple/p-1fd20e05.system.entry.js.map +1 -0
- package/dist/ripple/{p-f36b1c58.system.entry.js → p-23fa1ff6.system.entry.js} +2 -2
- package/dist/ripple/p-23fa1ff6.system.entry.js.map +1 -0
- package/dist/ripple/p-24a4cb11.system.entry.js.map +1 -1
- package/dist/ripple/p-2c2a7092.system.entry.js.map +1 -1
- package/dist/ripple/{p-9d02957d.system.js → p-313b6073.system.js} +1 -1
- package/dist/ripple/p-313b6073.system.js.map +1 -0
- package/dist/ripple/p-33558ec4.system.entry.js.map +1 -1
- package/dist/ripple/{p-28c12986.system.entry.js → p-33ec18d4.system.entry.js} +2 -2
- package/dist/ripple/p-33ec18d4.system.entry.js.map +1 -0
- package/dist/ripple/{p-7d0f3abe.entry.js → p-341aa131.entry.js} +2 -2
- package/dist/ripple/p-341aa131.entry.js.map +1 -0
- package/dist/ripple/p-3759b7af.system.entry.js.map +1 -1
- package/dist/ripple/p-38449dff.system.entry.js +2 -0
- package/dist/ripple/p-38449dff.system.entry.js.map +1 -0
- package/dist/ripple/{p-ee97c3f6.entry.js → p-384c4981.entry.js} +2 -2
- package/dist/ripple/p-384c4981.entry.js.map +1 -0
- package/dist/ripple/{p-b81ce905.system.entry.js → p-3869a69e.system.entry.js} +2 -2
- package/dist/ripple/p-3869a69e.system.entry.js.map +1 -0
- package/dist/ripple/p-4391166c.entry.js.map +1 -1
- package/dist/ripple/{p-e6e7cb2d.entry.js → p-43be123d.entry.js} +2 -2
- package/dist/ripple/p-43be123d.entry.js.map +1 -0
- package/dist/ripple/p-4a014591.entry.js.map +1 -1
- package/dist/ripple/p-4a06d0a9.system.entry.js +2 -0
- package/dist/ripple/p-4a06d0a9.system.entry.js.map +1 -0
- package/dist/ripple/p-4e02e2ae.entry.js +2 -0
- package/dist/ripple/p-4e02e2ae.entry.js.map +1 -0
- package/dist/ripple/p-56cd4d5e.entry.js +2 -0
- package/dist/ripple/p-56cd4d5e.entry.js.map +1 -0
- package/dist/ripple/p-59654f8e.entry.js.map +1 -1
- package/dist/ripple/p-5cc287d2.entry.js +2 -0
- package/dist/ripple/p-5cc287d2.entry.js.map +1 -0
- package/dist/ripple/{p-8eebf787.entry.js → p-7e0e6b00.entry.js} +2 -2
- package/dist/ripple/p-7e0e6b00.entry.js.map +1 -0
- package/dist/ripple/{p-0400599e.system.entry.js → p-833c622f.system.entry.js} +2 -2
- package/dist/ripple/p-833c622f.system.entry.js.map +1 -0
- package/dist/ripple/{p-b00991d9.system.entry.js → p-8613600d.system.entry.js} +2 -2
- package/dist/ripple/p-8613600d.system.entry.js.map +1 -0
- package/dist/ripple/{p-43f1298b.js → p-888bec42.js} +1 -1
- package/dist/ripple/p-888bec42.js.map +1 -0
- package/dist/ripple/p-889579fc.entry.js +2 -0
- package/dist/ripple/p-889579fc.entry.js.map +1 -0
- package/dist/ripple/p-8c51e9f8.system.entry.js.map +1 -1
- package/dist/ripple/{p-42158d44.entry.js → p-8db604d2.entry.js} +2 -2
- package/dist/ripple/p-8db604d2.entry.js.map +1 -0
- package/dist/ripple/{p-24ef6556.system.entry.js → p-91deb45f.system.entry.js} +2 -2
- package/dist/ripple/p-91deb45f.system.entry.js.map +1 -0
- package/dist/ripple/p-9338011f.system.entry.js +2 -0
- package/dist/ripple/p-9338011f.system.entry.js.map +1 -0
- package/dist/ripple/p-976b2789.system.entry.js.map +1 -1
- package/dist/ripple/{p-1aa16d42.js → p-994303f2.js} +2 -2
- package/dist/ripple/p-994303f2.js.map +1 -0
- package/dist/ripple/p-9b2dfb54.js +2 -0
- package/dist/ripple/p-9b2dfb54.js.map +1 -0
- package/dist/ripple/p-9b9eb944.entry.js.map +1 -1
- package/dist/ripple/{p-980afed1.system.entry.js → p-a6d64d8a.system.entry.js} +2 -2
- package/dist/ripple/p-a6d64d8a.system.entry.js.map +1 -0
- package/dist/ripple/{p-fd8070fb.js → p-a6d6eae7.js} +1 -1
- package/dist/ripple/p-a6d6eae7.js.map +1 -0
- package/dist/ripple/{p-219fbe2b.system.entry.js → p-a73cf968.system.entry.js} +2 -2
- package/dist/ripple/p-a73cf968.system.entry.js.map +1 -0
- package/dist/ripple/{p-76aafb99.system.entry.js → p-aed625c1.system.entry.js} +2 -2
- package/dist/ripple/p-aed625c1.system.entry.js.map +1 -0
- package/dist/ripple/{p-0d36ceba.system.entry.js → p-b5b521e4.system.entry.js} +2 -2
- package/dist/ripple/p-b5b521e4.system.entry.js.map +1 -0
- package/dist/ripple/{p-47d223f1.system.entry.js → p-b7451e73.system.entry.js} +2 -2
- package/dist/ripple/p-b7451e73.system.entry.js.map +1 -0
- package/dist/ripple/p-bafdcb4e.system.entry.js +2 -0
- package/dist/ripple/p-bafdcb4e.system.entry.js.map +1 -0
- package/dist/ripple/{p-262713b9.entry.js → p-bb45e122.entry.js} +2 -2
- package/dist/ripple/p-bb45e122.entry.js.map +1 -0
- package/dist/ripple/p-bd84628c.system.entry.js +2 -0
- package/dist/ripple/p-bd84628c.system.entry.js.map +1 -0
- package/dist/ripple/p-bf569af0.entry.js.map +1 -1
- package/dist/ripple/p-c094f6a8.entry.js +2 -0
- package/dist/ripple/p-c094f6a8.entry.js.map +1 -0
- package/dist/ripple/p-c36002b6.system.js +2 -0
- package/dist/ripple/p-c36002b6.system.js.map +1 -0
- package/dist/ripple/p-c5bf7db8.entry.js +2 -0
- package/dist/ripple/p-c5bf7db8.entry.js.map +1 -0
- package/dist/ripple/p-c68b3798.system.js +2 -0
- package/dist/ripple/p-c68b3798.system.js.map +1 -0
- package/dist/ripple/{p-05e0f901.js → p-c6a0f7e5.js} +1 -1
- package/dist/ripple/{p-05e0f901.js.map → p-c6a0f7e5.js.map} +1 -1
- package/dist/ripple/{p-bcba3ce8.entry.js → p-d46f5794.entry.js} +2 -2
- package/dist/ripple/p-d46f5794.entry.js.map +1 -0
- package/dist/ripple/{p-d7ffac2f.entry.js → p-d48313e0.entry.js} +2 -2
- package/dist/ripple/p-d48313e0.entry.js.map +1 -0
- package/dist/ripple/p-d939cb54.entry.js.map +1 -1
- package/dist/ripple/p-dbfd1640.system.entry.js.map +1 -1
- package/dist/ripple/{p-d7c55ce1.entry.js → p-e22854c1.entry.js} +2 -2
- package/dist/ripple/p-e22854c1.entry.js.map +1 -0
- package/dist/ripple/p-e70bb79f.js +2 -0
- package/dist/ripple/p-e70bb79f.js.map +1 -0
- package/dist/ripple/{p-e99a7f36.entry.js → p-ed82573a.entry.js} +2 -2
- package/dist/ripple/p-ed82573a.entry.js.map +1 -0
- package/dist/ripple/{p-bc28c815.system.js → p-f0fd8695.system.js} +1 -1
- package/dist/ripple/{p-bc28c815.system.js.map → p-f0fd8695.system.js.map} +1 -1
- package/dist/ripple/{p-e5f84104.system.entry.js → p-f312d59a.system.entry.js} +2 -2
- package/dist/ripple/p-f312d59a.system.entry.js.map +1 -0
- package/dist/ripple/{p-c19ddc00.system.entry.js → p-f59a495a.system.entry.js} +2 -2
- package/dist/ripple/p-f59a495a.system.entry.js.map +1 -0
- package/dist/ripple/{p-cc8ca6bd.system.js → p-f80eb8a5.system.js} +2 -2
- package/dist/ripple/p-f80eb8a5.system.js.map +1 -0
- package/dist/ripple/{p-1be55579.system.entry.js → p-fb67c39e.system.entry.js} +2 -2
- package/dist/ripple/p-fb67c39e.system.entry.js.map +1 -0
- package/dist/ripple/{p-20d0d019.entry.js → p-fc08d5e1.entry.js} +2 -2
- package/dist/ripple/p-fc08d5e1.entry.js.map +1 -0
- package/dist/ripple/{p-d7b946ed.entry.js → p-fe7da854.entry.js} +2 -2
- package/dist/ripple/p-fe7da854.entry.js.map +1 -0
- package/dist/ripple/ripple.esm.js +1 -1
- package/dist/ripple/ripple.esm.js.map +1 -1
- package/dist/ripple/ripple.js +1 -1
- package/dist/types/components/charts/chartFunctions.d.ts +37 -37
- package/dist/types/components/charts/priv-chart-popover/priv-chart-popover.d.ts +27 -0
- package/dist/types/components/charts/wm-chart/wm-chart-slice.d.ts +11 -11
- package/dist/types/components/charts/wm-chart/wm-chart.d.ts +47 -0
- package/dist/types/components/charts/wm-progress-monitor/wm-progress-indicator.d.ts +29 -0
- package/dist/types/components/charts/wm-progress-monitor/wm-progress-monitor.d.ts +20 -0
- package/dist/types/components/charts/wm-progress-monitor/wm-progress-slice.d.ts +10 -10
- package/dist/types/components/wm-action-menu/wm-action-menu.d.ts +49 -0
- package/dist/types/components/wm-button/wm-button.d.ts +49 -0
- package/dist/types/components/wm-datepicker/priv-datepicker/priv-datepicker.d.ts +80 -0
- package/dist/types/components/wm-datepicker/wm-datepicker.d.ts +42 -0
- package/dist/types/components/wm-file/wm-file.d.ts +42 -0
- package/dist/types/components/wm-file-list/wm-file-list.d.ts +16 -0
- package/dist/types/components/wm-input/wm-input.d.ts +45 -0
- package/dist/types/components/wm-menuitem/wm-menuitem.d.ts +34 -0
- package/dist/types/components/wm-modal/wm-modal-footer.d.ts +14 -14
- package/dist/types/components/wm-modal/wm-modal-header.d.ts +10 -10
- package/dist/types/components/wm-modal/wm-modal.d.ts +40 -0
- package/dist/types/components/wm-navigation/wm-navigation-hamburger.d.ts +21 -0
- package/dist/types/components/wm-navigation/wm-navigation-item.d.ts +13 -0
- package/dist/types/components/wm-navigation/wm-navigation.d.ts +26 -0
- package/dist/types/components/wm-navigator/priv-navigator-button/priv-navigator-button.d.ts +10 -10
- package/dist/types/components/wm-navigator/priv-navigator-item/priv-navigator-item.d.ts +13 -0
- package/dist/types/components/wm-navigator/wm-navigator.d.ts +61 -0
- package/dist/types/components/wm-option/wm-option.d.ts +34 -0
- package/dist/types/components/wm-pagination/wm-pagination.d.ts +32 -32
- package/dist/types/components/wm-search/wm-search.d.ts +77 -0
- package/dist/types/components/wm-select/wm-select.d.ts +101 -0
- package/dist/types/components/wm-snackbar/wm-snackbar.d.ts +31 -32
- package/dist/types/components/wm-tabs/wm-tab-item/wm-tab-item.d.ts +37 -0
- package/dist/types/components/wm-tabs/wm-tab-list/wm-tab-list.d.ts +52 -0
- package/dist/types/components/wm-tabs/wm-tab-panel/wm-tab-panel.d.ts +20 -0
- package/dist/types/components/wm-tag-input/wm-tag-input-row/wm-tag-input-row.d.ts +11 -0
- package/dist/types/components/wm-tag-input/wm-tag-input.d.ts +135 -0
- package/dist/types/components/wm-timepicker/wm-timepicker.d.ts +62 -0
- package/dist/types/components/wm-toggletip/wm-toggletip.d.ts +28 -0
- package/dist/types/components/wm-uploader/wm-network-uploader/wm-network-uploader.d.ts +85 -0
- package/dist/types/components/wm-uploader/wm-uploader.d.ts +99 -0
- package/dist/types/components/wm-wrapper/wm-wrapper.d.ts +7 -7
- package/dist/types/components.d.ts +27 -27
- package/dist/types/global/__mocks__/functions.d.ts +6 -6
- package/dist/types/global/functions.d.ts +48 -48
- package/dist/types/global/global.d.ts +1 -1
- package/dist/types/global/interfaces.d.ts +74 -74
- package/dist/types/global/intl.d.ts +29 -1
- package/dist/types/global/services/__mocks__/http-service.d.ts +6 -6
- package/dist/types/global/services/http-service.d.ts +4 -4
- package/dist/types/lang/lang.d.ts +5 -5
- package/package.json +46 -46
- package/dist/cjs/chartFunctions-9dce0ea3.js.map +0 -1
- package/dist/cjs/global-c22b1249.js.map +0 -1
- package/dist/cjs/http-service-494d81de.js.map +0 -1
- package/dist/cjs/interfaces-a3338581.js.map +0 -1
- package/dist/cjs/intl-e14dc0a1.js +0 -13
- package/dist/cjs/intl-e14dc0a1.js.map +0 -1
- package/dist/esm/chartFunctions-1df8043a.js.map +0 -1
- package/dist/esm/global-2c5c2727.js.map +0 -1
- package/dist/esm/http-service-3dc3b3e7.js.map +0 -1
- package/dist/esm/interfaces-2b97fab2.js.map +0 -1
- package/dist/esm/intl-4153b9ef.js +0 -11
- package/dist/esm/intl-4153b9ef.js.map +0 -1
- package/dist/esm-es5/chartFunctions-1df8043a.js.map +0 -1
- package/dist/esm-es5/global-2c5c2727.js +0 -2
- package/dist/esm-es5/global-2c5c2727.js.map +0 -1
- package/dist/esm-es5/http-service-3dc3b3e7.js.map +0 -1
- package/dist/esm-es5/interfaces-2b97fab2.js.map +0 -1
- package/dist/esm-es5/intl-4153b9ef.js +0 -2
- package/dist/esm-es5/intl-4153b9ef.js.map +0 -1
- package/dist/ripple/p-0400599e.system.entry.js.map +0 -1
- package/dist/ripple/p-075607ac.entry.js +0 -2
- package/dist/ripple/p-075607ac.entry.js.map +0 -1
- package/dist/ripple/p-08d17d5a.entry.js +0 -2
- package/dist/ripple/p-08d17d5a.entry.js.map +0 -1
- package/dist/ripple/p-0d36ceba.system.entry.js.map +0 -1
- package/dist/ripple/p-124da634.entry.js +0 -2
- package/dist/ripple/p-124da634.entry.js.map +0 -1
- package/dist/ripple/p-1aa16d42.js.map +0 -1
- package/dist/ripple/p-1be55579.system.entry.js.map +0 -1
- package/dist/ripple/p-20d0d019.entry.js.map +0 -1
- package/dist/ripple/p-219fbe2b.system.entry.js.map +0 -1
- package/dist/ripple/p-21bb563a.system.entry.js.map +0 -1
- package/dist/ripple/p-241d4d41.system.entry.js +0 -2
- package/dist/ripple/p-241d4d41.system.entry.js.map +0 -1
- package/dist/ripple/p-24ef6556.system.entry.js.map +0 -1
- package/dist/ripple/p-262713b9.entry.js.map +0 -1
- package/dist/ripple/p-28c12986.system.entry.js.map +0 -1
- package/dist/ripple/p-3f6c7e6c.entry.js.map +0 -1
- package/dist/ripple/p-42158d44.entry.js.map +0 -1
- package/dist/ripple/p-43f1298b.js.map +0 -1
- package/dist/ripple/p-47d223f1.system.entry.js.map +0 -1
- package/dist/ripple/p-4d30004f.entry.js +0 -2
- package/dist/ripple/p-4d30004f.entry.js.map +0 -1
- package/dist/ripple/p-58b1415e.system.js +0 -2
- package/dist/ripple/p-58b1415e.system.js.map +0 -1
- package/dist/ripple/p-5cda4e9c.system.entry.js +0 -2
- package/dist/ripple/p-5cda4e9c.system.entry.js.map +0 -1
- package/dist/ripple/p-64f15a9e.system.entry.js +0 -2
- package/dist/ripple/p-64f15a9e.system.entry.js.map +0 -1
- package/dist/ripple/p-6e6b5b2c.system.entry.js +0 -2
- package/dist/ripple/p-6e6b5b2c.system.entry.js.map +0 -1
- package/dist/ripple/p-70768add.entry.js.map +0 -1
- package/dist/ripple/p-76aafb99.system.entry.js.map +0 -1
- package/dist/ripple/p-7d0f3abe.entry.js.map +0 -1
- package/dist/ripple/p-8aa85021.system.entry.js +0 -2
- package/dist/ripple/p-8aa85021.system.entry.js.map +0 -1
- package/dist/ripple/p-8eebf787.entry.js.map +0 -1
- package/dist/ripple/p-96b0ca93.system.js +0 -2
- package/dist/ripple/p-96b0ca93.system.js.map +0 -1
- package/dist/ripple/p-980afed1.system.entry.js.map +0 -1
- package/dist/ripple/p-9d02957d.system.js.map +0 -1
- package/dist/ripple/p-adbeb6a8.system.entry.js +0 -2
- package/dist/ripple/p-adbeb6a8.system.entry.js.map +0 -1
- package/dist/ripple/p-b00991d9.system.entry.js.map +0 -1
- package/dist/ripple/p-b81ce905.system.entry.js.map +0 -1
- package/dist/ripple/p-bcba3ce8.entry.js.map +0 -1
- package/dist/ripple/p-bf808ec4.entry.js +0 -2
- package/dist/ripple/p-bf808ec4.entry.js.map +0 -1
- package/dist/ripple/p-c19ddc00.system.entry.js.map +0 -1
- package/dist/ripple/p-cc8ca6bd.system.js.map +0 -1
- package/dist/ripple/p-ce52357e.js +0 -2
- package/dist/ripple/p-ce52357e.js.map +0 -1
- package/dist/ripple/p-d0f5773a.entry.js +0 -2
- package/dist/ripple/p-d0f5773a.entry.js.map +0 -1
- package/dist/ripple/p-d5b0809e.entry.js.map +0 -1
- package/dist/ripple/p-d7b946ed.entry.js.map +0 -1
- package/dist/ripple/p-d7c55ce1.entry.js.map +0 -1
- package/dist/ripple/p-d7ffac2f.entry.js.map +0 -1
- package/dist/ripple/p-dbf657c5.js +0 -2
- package/dist/ripple/p-dbf657c5.js.map +0 -1
- package/dist/ripple/p-e1b812ed.entry.js +0 -2
- package/dist/ripple/p-e1b812ed.entry.js.map +0 -1
- package/dist/ripple/p-e5f84104.system.entry.js.map +0 -1
- package/dist/ripple/p-e6e7cb2d.entry.js.map +0 -1
- package/dist/ripple/p-e99a7f36.entry.js.map +0 -1
- package/dist/ripple/p-ed14d37c.system.entry.js +0 -2
- package/dist/ripple/p-ed14d37c.system.entry.js.map +0 -1
- package/dist/ripple/p-ee97c3f6.entry.js.map +0 -1
- package/dist/ripple/p-f3130941.entry.js +0 -2
- package/dist/ripple/p-f3130941.entry.js.map +0 -1
- package/dist/ripple/p-f36b1c58.system.entry.js.map +0 -1
- package/dist/ripple/p-f4a622a9.system.entry.js +0 -2
- package/dist/ripple/p-f4a622a9.system.entry.js.map +0 -1
- package/dist/ripple/p-f5df5903.system.js.map +0 -1
- package/dist/ripple/p-fd8070fb.js.map +0 -1
|
@@ -1,271 +1,271 @@
|
|
|
1
1
|
import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-84a6ae22.js';
|
|
2
|
-
import { a as getWmMode } from './interfaces-
|
|
3
|
-
import { k as snakeCaseToCamelCase, l as getNewIndexToFocus, i as intl } from './functions-
|
|
4
|
-
import { g as getRequest } from './http-service-
|
|
2
|
+
import { a as getWmMode } from './interfaces-61c6305b.js';
|
|
3
|
+
import { k as snakeCaseToCamelCase, l as getNewIndexToFocus, i as intl } from './functions-dc9964aa.js';
|
|
4
|
+
import { g as getRequest } from './http-service-5d037e16.js';
|
|
5
5
|
|
|
6
6
|
const wmNavigatorCss = ":host,wm-navigator{min-width:0;position:relative;display:inline-block}:host .wrapper,wm-navigator .wrapper{overflow:auto;font-size:1.125rem;min-width:13.125rem;width:auto;max-height:80vh;text-align:left;position:absolute;z-index:50;top:100%;right:20px;left:auto;background:#fff;letter-spacing:normal;-webkit-box-shadow:0 4px 15px 0 rgba(0, 0, 0, 0.2);-moz-box-shadow:0 4px 15px 0 rgba(0, 0, 0, 0.2);box-shadow:0 4px 15px 0 rgba(0, 0, 0, 0.2);-ms-transition:transform 0.25s ease;-webkit-transition:transform 0.25s ease;-moz-transition:transform 0.25s ease;-webkit-transition:-webkit-transform 0.25s ease;transition:-webkit-transform 0.25s ease;transition:transform 0.25s ease;transition:transform 0.25s ease, -webkit-transform 0.25s ease;-ms-transform-origin:center top;-webkit-transform-origin:center top;-moz-transform-origin:center top;transform-origin:center top;-ms-transform:scale(1, 1);-webkit-transform:scale(1, 1);-moz-transform:scale(1, 1);transform:scale(1, 1)}:host .wrapper .user,wm-navigator .wrapper .user{background:#f4f4f4;padding:0.625rem 1.25rem;font-size:0.875rem}:host .wrapper .user p,wm-navigator .wrapper .user p{margin:0}:host .wrapper .user p:first-child,wm-navigator .wrapper .user p:first-child{font-weight:700;text-transform:capitalize}:host .wrapper h2,wm-navigator .wrapper h2{background:#2e1b46;color:#fff;font-weight:700;margin:0;padding:0.625rem 1.25rem;font-size:0.875rem}:host .wrapper [role=listbox],wm-navigator .wrapper [role=listbox]{list-style:none;margin:0;padding-left:0}:host .wrapper.hide,wm-navigator .wrapper.hide{-ms-transform:scale(1, 0);-webkit-transform:scale(1, 0);-moz-transform:scale(1, 0);transform:scale(1, 0)}:host .wrapper.right,wm-navigator .wrapper.right{right:auto;left:20px}:host img,wm-navigator img{-webkit-transform:scale(0.8);transform:scale(0.8);-webkit-transform-origin:left center;transform-origin:left center;display:block}:host .logout,wm-navigator .logout{text-align:center;text-transform:capitalize}priv-navigator-item:focus{outline:none}";
|
|
7
7
|
|
|
8
|
-
const Navigator = class {
|
|
9
|
-
constructor(hostRef) {
|
|
10
|
-
registerInstance(this, hostRef);
|
|
11
|
-
this.wmNavigatorLogout = createEvent(this, "wmNavigatorLogout", 7);
|
|
12
|
-
// comp can check whether the info was successfully retrieved with:
|
|
13
|
-
this.retrievedInfo = !this.loadFromUserinfo; // when in endpoint mode, only render after get request completed
|
|
14
|
-
// used either way to store the products
|
|
15
|
-
this.parsedProducts = [];
|
|
16
|
-
this.openRight = false; // whether the menu should open on the right side
|
|
17
|
-
this.userName = undefined;
|
|
18
|
-
this.email = undefined;
|
|
19
|
-
this.authType = 1;
|
|
20
|
-
this.connectionName = undefined;
|
|
21
|
-
this.logoutUrl = undefined;
|
|
22
|
-
this.products = undefined;
|
|
23
|
-
this.loadFromUserinfo = false;
|
|
24
|
-
this.isOpen = false;
|
|
25
|
-
this.isTabbing = false;
|
|
26
|
-
this.itemIndexToFocus = 0;
|
|
27
|
-
}
|
|
28
|
-
async componentWillLoad() {
|
|
29
|
-
if (!this.userName) {
|
|
30
|
-
console.error("wm-navigator: user-name is a required property.");
|
|
31
|
-
}
|
|
32
|
-
await this.parseData();
|
|
33
|
-
this.setFocusIndex();
|
|
34
|
-
}
|
|
35
|
-
// async because we need the http request to complete before proceeding
|
|
36
|
-
async parseData() {
|
|
37
|
-
if (!!this.loadFromUserinfo) {
|
|
38
|
-
await getRequest("/platform/navigator/userinfo")
|
|
39
|
-
.then((response) => {
|
|
40
|
-
this.email = response.email;
|
|
41
|
-
this.currentProductId = response.current_product_id;
|
|
42
|
-
this.parsedProducts = this.productKeysToCamelCase(response.products);
|
|
43
|
-
this.logoutUrl = this.logoutUrl ? this.logoutUrl : response.logout_url;
|
|
44
|
-
this.connectionName = this.connectionName ? this.connectionName : response.connection_name;
|
|
45
|
-
if (!!this.email && !!this.currentProductId) {
|
|
46
|
-
this.retrievedInfo = true;
|
|
47
|
-
}
|
|
48
|
-
})
|
|
49
|
-
.catch((errStatus) => {
|
|
50
|
-
console.error(errStatus);
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
54
|
-
this.currentProductId = getWmMode(this.el);
|
|
55
|
-
if (!!this.products) {
|
|
56
|
-
if (typeof this.products === "string") {
|
|
57
|
-
this.parsedProducts = JSON.parse(this.products);
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
this.parsedProducts = this.products;
|
|
61
|
-
}
|
|
62
|
-
this.parsedProducts = this.productKeysToCamelCase(this.parsedProducts);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
// products is initialized as empty array in case nothing is passed
|
|
66
|
-
this.parsedProducts.sort((a, b) => (a.name < b.name ? -1 : 1));
|
|
67
|
-
}
|
|
68
|
-
productKeysToCamelCase(products) {
|
|
69
|
-
products = products.map((product) => {
|
|
70
|
-
const keys = Object.keys(product);
|
|
71
|
-
let newProduct = {};
|
|
72
|
-
keys.forEach((key) => {
|
|
73
|
-
newProduct[snakeCaseToCamelCase(key)] = product[key];
|
|
74
|
-
});
|
|
75
|
-
return newProduct;
|
|
76
|
-
});
|
|
77
|
-
return products;
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Sets index to focus on open to the selected product. This index resets it when the menu closes.
|
|
81
|
-
*/
|
|
82
|
-
setFocusIndex() {
|
|
83
|
-
if (this.parsedProducts.length > 1) {
|
|
84
|
-
const currentProduct = this.getProduct(this.currentProductId);
|
|
85
|
-
if (currentProduct) {
|
|
86
|
-
this.itemIndexToFocus = this.parsedProducts.indexOf(currentProduct);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
toggleTabbingOn() {
|
|
91
|
-
this.isTabbing = true;
|
|
92
|
-
}
|
|
93
|
-
toggleTabbingOff() {
|
|
94
|
-
this.isTabbing = false;
|
|
95
|
-
}
|
|
96
|
-
handleKeys(ev) {
|
|
97
|
-
switch (ev.key) {
|
|
98
|
-
case "Escape":
|
|
99
|
-
ev.preventDefault();
|
|
100
|
-
this.closeMenu();
|
|
101
|
-
break;
|
|
102
|
-
case "ArrowDown":
|
|
103
|
-
case "ArrowUp":
|
|
104
|
-
ev.preventDefault();
|
|
105
|
-
if (!this.isOpen) {
|
|
106
|
-
this.itemIndexToFocus = getNewIndexToFocus(this.itemIndexToFocus, ev.key, this.navigatorItems.length);
|
|
107
|
-
this.openMenu();
|
|
108
|
-
}
|
|
109
|
-
break;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
handleKeydown(ev) {
|
|
113
|
-
const key = ev.detail.key;
|
|
114
|
-
const item = ev.detail.navItem;
|
|
115
|
-
switch (key) {
|
|
116
|
-
case "Tab":
|
|
117
|
-
this.closeMenu();
|
|
118
|
-
break;
|
|
119
|
-
case "Enter":
|
|
120
|
-
case " ":
|
|
121
|
-
item.click();
|
|
122
|
-
break;
|
|
123
|
-
case "ArrowDown":
|
|
124
|
-
case "ArrowUp":
|
|
125
|
-
const oldIndex = this.itemIndexToFocus;
|
|
126
|
-
this.itemIndexToFocus = getNewIndexToFocus(this.itemIndexToFocus, key, this.navigatorItems.length);
|
|
127
|
-
this.focusItem();
|
|
128
|
-
this.unfocusItem(oldIndex);
|
|
129
|
-
break;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
handleClick(ev) {
|
|
133
|
-
const isElOrChild = ev.target === this.el || this.el.contains(ev.target);
|
|
134
|
-
if (!isElOrChild && this.isOpen) {
|
|
135
|
-
this.closeMenu();
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
handleButtonClick() {
|
|
139
|
-
this.isOpen ? this.closeMenu() : this.openMenu();
|
|
140
|
-
}
|
|
141
|
-
openMenu() {
|
|
142
|
-
if (this.wrapperEl) {
|
|
143
|
-
const wrapperWidth = this.wrapperEl.clientWidth;
|
|
144
|
-
const spaceLeft = this.el.getBoundingClientRect().left;
|
|
145
|
-
const spaceRight = document.documentElement.clientWidth - this.el.getBoundingClientRect().right;
|
|
146
|
-
this.openRight = wrapperWidth > spaceLeft && spaceRight > spaceLeft;
|
|
147
|
-
}
|
|
148
|
-
this.isOpen = true;
|
|
149
|
-
this.focusItem();
|
|
150
|
-
}
|
|
151
|
-
closeMenu() {
|
|
152
|
-
this.isOpen = false;
|
|
153
|
-
this.buttonFocusHandler();
|
|
154
|
-
this.unfocusItem(this.itemIndexToFocus);
|
|
155
|
-
this.setFocusIndex();
|
|
156
|
-
}
|
|
157
|
-
focusItem() {
|
|
158
|
-
const newSelection = this.navigatorItems[this.itemIndexToFocus];
|
|
159
|
-
newSelection.tabIndex = 0;
|
|
160
|
-
newSelection.focused = true;
|
|
161
|
-
window.requestAnimationFrame(() => newSelection.focus());
|
|
162
|
-
}
|
|
163
|
-
unfocusItem(index) {
|
|
164
|
-
const oldSelection = this.navigatorItems[index];
|
|
165
|
-
oldSelection.tabIndex = -1;
|
|
166
|
-
oldSelection.focused = false;
|
|
167
|
-
}
|
|
168
|
-
buttonFocusHandler() {
|
|
169
|
-
const hostButton = this.el.shadowRoot.querySelector("priv-navigator-button");
|
|
170
|
-
const button = hostButton.shadowRoot.querySelector("button");
|
|
171
|
-
window.requestAnimationFrame(() => button.focus());
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* HELPERS FOR RENDER
|
|
175
|
-
*/
|
|
176
|
-
renderUserInfo() {
|
|
177
|
-
return (h("div", { class: "user", id: "wm-nav-user", "aria-label": intl.formatMessage({
|
|
178
|
-
id: "navigator.userinfoLabel",
|
|
179
|
-
defaultMessage: "for {name}, email {email}",
|
|
180
|
-
}, { name: this.userName, email: this.email }) }, h("p", null, this.userName), h("p", null, this.email)));
|
|
181
|
-
}
|
|
182
|
-
setAltText() {
|
|
183
|
-
if (this.parsedProducts.length > 1) {
|
|
184
|
-
return intl.formatMessage({
|
|
185
|
-
id: "navigator.userinfoAndProductNavigator",
|
|
186
|
-
defaultMessage: "User information and product navigator",
|
|
187
|
-
});
|
|
188
|
-
}
|
|
189
|
-
else {
|
|
190
|
-
return intl.formatMessage({
|
|
191
|
-
id: "navigator.userinfo",
|
|
192
|
-
defaultMessage: "User information",
|
|
193
|
-
});
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
renderHeading() {
|
|
197
|
-
return (h("h2", null, intl.formatMessage({
|
|
198
|
-
id: "navigator.watermarkApps",
|
|
199
|
-
defaultMessage: "Watermark Apps",
|
|
200
|
-
description: "Applications made by Watermark Insights",
|
|
201
|
-
})));
|
|
202
|
-
}
|
|
203
|
-
renderList() {
|
|
204
|
-
return (h("ul", { role: "listbox", "aria-label": `${intl.formatMessage({
|
|
205
|
-
id: "navigator.WatermarkAppNavigation",
|
|
206
|
-
defaultMessage: "Watermark App Navigation",
|
|
207
|
-
description: "list of applications by Watermark Insights",
|
|
208
|
-
})}`, "aria-describedby": "wm-nav-user" }, this.parsedProducts.length > 1 && this.renderProductOptions(), this.renderLogoutOption()));
|
|
209
|
-
}
|
|
210
|
-
renderProductOptions() {
|
|
211
|
-
return this.parsedProducts.map((product) => {
|
|
212
|
-
let name, icon, isSelected, clickRedirect;
|
|
213
|
-
name = product.name;
|
|
214
|
-
icon = product.iconUrl;
|
|
215
|
-
clickRedirect = this.setProductOnClick(product.id);
|
|
216
|
-
if (!!name && !!icon) {
|
|
217
|
-
isSelected = this.currentProductId === product.id;
|
|
218
|
-
return (h("priv-navigator-item", { selected: isSelected, id: product.id, onClick: clickRedirect, role: "option", "aria-label": name }, h("img", { src: icon, alt: name })));
|
|
219
|
-
}
|
|
220
|
-
});
|
|
221
|
-
}
|
|
222
|
-
setProductOnClick(productId) {
|
|
223
|
-
const product = this.getProduct(productId);
|
|
224
|
-
if (this.currentProductId === productId) {
|
|
225
|
-
return () => { };
|
|
226
|
-
}
|
|
227
|
-
else if (product) {
|
|
228
|
-
if (!!this.loadFromUserinfo || this.authType === 2) {
|
|
229
|
-
return () => (window.location.href = product.linkUrl);
|
|
230
|
-
}
|
|
231
|
-
else if (this.authType === 3) {
|
|
232
|
-
// products passed as prop, saml
|
|
233
|
-
const connName = this.connectionName ? `/?connection_name=${this.connectionName}` : "";
|
|
234
|
-
return () => (window.location.href = product.samlLinkUrl + connName);
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
renderLogoutOption() {
|
|
239
|
-
return (h("priv-navigator-item", { class: "logout", selected: !(this.parsedProducts.length > 1), id: "nav-logout", onClick: this.setLogoutOnclick(), role: "option" }, h("span", { class: "logout" }, intl.formatMessage({
|
|
240
|
-
id: "navigator.logout",
|
|
241
|
-
defaultMessage: "Log Out",
|
|
242
|
-
}))));
|
|
243
|
-
}
|
|
244
|
-
setLogoutOnclick() {
|
|
245
|
-
// The logout item will always emit a custom event on click so that the dev can run any business logic specific to the app on logout (e.g., clearing local storage).
|
|
246
|
-
// It will only redirect if the dev has set the logoutUrl. If some sort of custom redirect is needed, the logoutUrl should not be set.
|
|
247
|
-
return () => {
|
|
248
|
-
this.wmNavigatorLogout.emit();
|
|
249
|
-
if (this.logoutUrl) {
|
|
250
|
-
window.location.href = this.logoutUrl;
|
|
251
|
-
}
|
|
252
|
-
};
|
|
253
|
-
}
|
|
254
|
-
get navigatorItems() {
|
|
255
|
-
return Array.from(this.el.shadowRoot.querySelectorAll("priv-navigator-item"));
|
|
256
|
-
}
|
|
257
|
-
getProduct(id) {
|
|
258
|
-
return this.parsedProducts.find((product) => product.id === id);
|
|
259
|
-
}
|
|
260
|
-
render() {
|
|
261
|
-
return this.retrievedInfo ? (h(Host, { class: this.isTabbing ? "user-is-tabbing" : "" }, h("priv-navigator-button", { expanded: this.isOpen, altText: this.setAltText(), isTabbing: this.isTabbing }), h("div", { class: `wrapper ${this.isOpen ? "" : "hide"} ${this.openRight ? "right" : ""}`, ref: (el) => (this.wrapperEl = el) }, this.renderUserInfo(), this.parsedProducts.length > 1 && this.renderHeading(), this.renderList()))) : ("");
|
|
262
|
-
}
|
|
263
|
-
static get delegatesFocus() { return true; }
|
|
264
|
-
get el() { return getElement(this); }
|
|
265
|
-
static get watchers() { return {
|
|
266
|
-
"products": ["parseData"]
|
|
267
|
-
}; }
|
|
268
|
-
};
|
|
8
|
+
const Navigator = class {
|
|
9
|
+
constructor(hostRef) {
|
|
10
|
+
registerInstance(this, hostRef);
|
|
11
|
+
this.wmNavigatorLogout = createEvent(this, "wmNavigatorLogout", 7);
|
|
12
|
+
// comp can check whether the info was successfully retrieved with:
|
|
13
|
+
this.retrievedInfo = !this.loadFromUserinfo; // when in endpoint mode, only render after get request completed
|
|
14
|
+
// used either way to store the products
|
|
15
|
+
this.parsedProducts = [];
|
|
16
|
+
this.openRight = false; // whether the menu should open on the right side
|
|
17
|
+
this.userName = undefined;
|
|
18
|
+
this.email = undefined;
|
|
19
|
+
this.authType = 1;
|
|
20
|
+
this.connectionName = undefined;
|
|
21
|
+
this.logoutUrl = undefined;
|
|
22
|
+
this.products = undefined;
|
|
23
|
+
this.loadFromUserinfo = false;
|
|
24
|
+
this.isOpen = false;
|
|
25
|
+
this.isTabbing = false;
|
|
26
|
+
this.itemIndexToFocus = 0;
|
|
27
|
+
}
|
|
28
|
+
async componentWillLoad() {
|
|
29
|
+
if (!this.userName) {
|
|
30
|
+
console.error("wm-navigator: user-name is a required property.");
|
|
31
|
+
}
|
|
32
|
+
await this.parseData();
|
|
33
|
+
this.setFocusIndex();
|
|
34
|
+
}
|
|
35
|
+
// async because we need the http request to complete before proceeding
|
|
36
|
+
async parseData() {
|
|
37
|
+
if (!!this.loadFromUserinfo) {
|
|
38
|
+
await getRequest("/platform/navigator/userinfo")
|
|
39
|
+
.then((response) => {
|
|
40
|
+
this.email = response.email;
|
|
41
|
+
this.currentProductId = response.current_product_id;
|
|
42
|
+
this.parsedProducts = this.productKeysToCamelCase(response.products);
|
|
43
|
+
this.logoutUrl = this.logoutUrl ? this.logoutUrl : response.logout_url;
|
|
44
|
+
this.connectionName = this.connectionName ? this.connectionName : response.connection_name;
|
|
45
|
+
if (!!this.email && !!this.currentProductId) {
|
|
46
|
+
this.retrievedInfo = true;
|
|
47
|
+
}
|
|
48
|
+
})
|
|
49
|
+
.catch((errStatus) => {
|
|
50
|
+
console.error(errStatus);
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
this.currentProductId = getWmMode(this.el);
|
|
55
|
+
if (!!this.products) {
|
|
56
|
+
if (typeof this.products === "string") {
|
|
57
|
+
this.parsedProducts = JSON.parse(this.products);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
this.parsedProducts = this.products;
|
|
61
|
+
}
|
|
62
|
+
this.parsedProducts = this.productKeysToCamelCase(this.parsedProducts);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// products is initialized as empty array in case nothing is passed
|
|
66
|
+
this.parsedProducts.sort((a, b) => (a.name < b.name ? -1 : 1));
|
|
67
|
+
}
|
|
68
|
+
productKeysToCamelCase(products) {
|
|
69
|
+
products = products.map((product) => {
|
|
70
|
+
const keys = Object.keys(product);
|
|
71
|
+
let newProduct = {};
|
|
72
|
+
keys.forEach((key) => {
|
|
73
|
+
newProduct[snakeCaseToCamelCase(key)] = product[key];
|
|
74
|
+
});
|
|
75
|
+
return newProduct;
|
|
76
|
+
});
|
|
77
|
+
return products;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Sets index to focus on open to the selected product. This index resets it when the menu closes.
|
|
81
|
+
*/
|
|
82
|
+
setFocusIndex() {
|
|
83
|
+
if (this.parsedProducts.length > 1) {
|
|
84
|
+
const currentProduct = this.getProduct(this.currentProductId);
|
|
85
|
+
if (currentProduct) {
|
|
86
|
+
this.itemIndexToFocus = this.parsedProducts.indexOf(currentProduct);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
toggleTabbingOn() {
|
|
91
|
+
this.isTabbing = true;
|
|
92
|
+
}
|
|
93
|
+
toggleTabbingOff() {
|
|
94
|
+
this.isTabbing = false;
|
|
95
|
+
}
|
|
96
|
+
handleKeys(ev) {
|
|
97
|
+
switch (ev.key) {
|
|
98
|
+
case "Escape":
|
|
99
|
+
ev.preventDefault();
|
|
100
|
+
this.closeMenu();
|
|
101
|
+
break;
|
|
102
|
+
case "ArrowDown":
|
|
103
|
+
case "ArrowUp":
|
|
104
|
+
ev.preventDefault();
|
|
105
|
+
if (!this.isOpen) {
|
|
106
|
+
this.itemIndexToFocus = getNewIndexToFocus(this.itemIndexToFocus, ev.key, this.navigatorItems.length);
|
|
107
|
+
this.openMenu();
|
|
108
|
+
}
|
|
109
|
+
break;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
handleKeydown(ev) {
|
|
113
|
+
const key = ev.detail.key;
|
|
114
|
+
const item = ev.detail.navItem;
|
|
115
|
+
switch (key) {
|
|
116
|
+
case "Tab":
|
|
117
|
+
this.closeMenu();
|
|
118
|
+
break;
|
|
119
|
+
case "Enter":
|
|
120
|
+
case " ":
|
|
121
|
+
item.click();
|
|
122
|
+
break;
|
|
123
|
+
case "ArrowDown":
|
|
124
|
+
case "ArrowUp":
|
|
125
|
+
const oldIndex = this.itemIndexToFocus;
|
|
126
|
+
this.itemIndexToFocus = getNewIndexToFocus(this.itemIndexToFocus, key, this.navigatorItems.length);
|
|
127
|
+
this.focusItem();
|
|
128
|
+
this.unfocusItem(oldIndex);
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
handleClick(ev) {
|
|
133
|
+
const isElOrChild = ev.target === this.el || this.el.contains(ev.target);
|
|
134
|
+
if (!isElOrChild && this.isOpen) {
|
|
135
|
+
this.closeMenu();
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
handleButtonClick() {
|
|
139
|
+
this.isOpen ? this.closeMenu() : this.openMenu();
|
|
140
|
+
}
|
|
141
|
+
openMenu() {
|
|
142
|
+
if (this.wrapperEl) {
|
|
143
|
+
const wrapperWidth = this.wrapperEl.clientWidth;
|
|
144
|
+
const spaceLeft = this.el.getBoundingClientRect().left;
|
|
145
|
+
const spaceRight = document.documentElement.clientWidth - this.el.getBoundingClientRect().right;
|
|
146
|
+
this.openRight = wrapperWidth > spaceLeft && spaceRight > spaceLeft;
|
|
147
|
+
}
|
|
148
|
+
this.isOpen = true;
|
|
149
|
+
this.focusItem();
|
|
150
|
+
}
|
|
151
|
+
closeMenu() {
|
|
152
|
+
this.isOpen = false;
|
|
153
|
+
this.buttonFocusHandler();
|
|
154
|
+
this.unfocusItem(this.itemIndexToFocus);
|
|
155
|
+
this.setFocusIndex();
|
|
156
|
+
}
|
|
157
|
+
focusItem() {
|
|
158
|
+
const newSelection = this.navigatorItems[this.itemIndexToFocus];
|
|
159
|
+
newSelection.tabIndex = 0;
|
|
160
|
+
newSelection.focused = true;
|
|
161
|
+
window.requestAnimationFrame(() => newSelection.focus());
|
|
162
|
+
}
|
|
163
|
+
unfocusItem(index) {
|
|
164
|
+
const oldSelection = this.navigatorItems[index];
|
|
165
|
+
oldSelection.tabIndex = -1;
|
|
166
|
+
oldSelection.focused = false;
|
|
167
|
+
}
|
|
168
|
+
buttonFocusHandler() {
|
|
169
|
+
const hostButton = this.el.shadowRoot.querySelector("priv-navigator-button");
|
|
170
|
+
const button = hostButton.shadowRoot.querySelector("button");
|
|
171
|
+
window.requestAnimationFrame(() => button.focus());
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* HELPERS FOR RENDER
|
|
175
|
+
*/
|
|
176
|
+
renderUserInfo() {
|
|
177
|
+
return (h("div", { class: "user", id: "wm-nav-user", "aria-label": intl.formatMessage({
|
|
178
|
+
id: "navigator.userinfoLabel",
|
|
179
|
+
defaultMessage: "for {name}, email {email}",
|
|
180
|
+
}, { name: this.userName, email: this.email }) }, h("p", null, this.userName), h("p", null, this.email)));
|
|
181
|
+
}
|
|
182
|
+
setAltText() {
|
|
183
|
+
if (this.parsedProducts.length > 1) {
|
|
184
|
+
return intl.formatMessage({
|
|
185
|
+
id: "navigator.userinfoAndProductNavigator",
|
|
186
|
+
defaultMessage: "User information and product navigator",
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
return intl.formatMessage({
|
|
191
|
+
id: "navigator.userinfo",
|
|
192
|
+
defaultMessage: "User information",
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
renderHeading() {
|
|
197
|
+
return (h("h2", null, intl.formatMessage({
|
|
198
|
+
id: "navigator.watermarkApps",
|
|
199
|
+
defaultMessage: "Watermark Apps",
|
|
200
|
+
description: "Applications made by Watermark Insights",
|
|
201
|
+
})));
|
|
202
|
+
}
|
|
203
|
+
renderList() {
|
|
204
|
+
return (h("ul", { role: "listbox", "aria-label": `${intl.formatMessage({
|
|
205
|
+
id: "navigator.WatermarkAppNavigation",
|
|
206
|
+
defaultMessage: "Watermark App Navigation",
|
|
207
|
+
description: "list of applications by Watermark Insights",
|
|
208
|
+
})}`, "aria-describedby": "wm-nav-user" }, this.parsedProducts.length > 1 && this.renderProductOptions(), this.renderLogoutOption()));
|
|
209
|
+
}
|
|
210
|
+
renderProductOptions() {
|
|
211
|
+
return this.parsedProducts.map((product) => {
|
|
212
|
+
let name, icon, isSelected, clickRedirect;
|
|
213
|
+
name = product.name;
|
|
214
|
+
icon = product.iconUrl;
|
|
215
|
+
clickRedirect = this.setProductOnClick(product.id);
|
|
216
|
+
if (!!name && !!icon) {
|
|
217
|
+
isSelected = this.currentProductId === product.id;
|
|
218
|
+
return (h("priv-navigator-item", { selected: isSelected, id: product.id, onClick: clickRedirect, role: "option", "aria-label": name }, h("img", { src: icon, alt: name })));
|
|
219
|
+
}
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
setProductOnClick(productId) {
|
|
223
|
+
const product = this.getProduct(productId);
|
|
224
|
+
if (this.currentProductId === productId) {
|
|
225
|
+
return () => { };
|
|
226
|
+
}
|
|
227
|
+
else if (product) {
|
|
228
|
+
if (!!this.loadFromUserinfo || this.authType === 2) {
|
|
229
|
+
return () => (window.location.href = product.linkUrl);
|
|
230
|
+
}
|
|
231
|
+
else if (this.authType === 3) {
|
|
232
|
+
// products passed as prop, saml
|
|
233
|
+
const connName = this.connectionName ? `/?connection_name=${this.connectionName}` : "";
|
|
234
|
+
return () => (window.location.href = product.samlLinkUrl + connName);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
renderLogoutOption() {
|
|
239
|
+
return (h("priv-navigator-item", { class: "logout", selected: !(this.parsedProducts.length > 1), id: "nav-logout", onClick: this.setLogoutOnclick(), role: "option" }, h("span", { class: "logout" }, intl.formatMessage({
|
|
240
|
+
id: "navigator.logout",
|
|
241
|
+
defaultMessage: "Log Out",
|
|
242
|
+
}))));
|
|
243
|
+
}
|
|
244
|
+
setLogoutOnclick() {
|
|
245
|
+
// The logout item will always emit a custom event on click so that the dev can run any business logic specific to the app on logout (e.g., clearing local storage).
|
|
246
|
+
// It will only redirect if the dev has set the logoutUrl. If some sort of custom redirect is needed, the logoutUrl should not be set.
|
|
247
|
+
return () => {
|
|
248
|
+
this.wmNavigatorLogout.emit();
|
|
249
|
+
if (this.logoutUrl) {
|
|
250
|
+
window.location.href = this.logoutUrl;
|
|
251
|
+
}
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
get navigatorItems() {
|
|
255
|
+
return Array.from(this.el.shadowRoot.querySelectorAll("priv-navigator-item"));
|
|
256
|
+
}
|
|
257
|
+
getProduct(id) {
|
|
258
|
+
return this.parsedProducts.find((product) => product.id === id);
|
|
259
|
+
}
|
|
260
|
+
render() {
|
|
261
|
+
return this.retrievedInfo ? (h(Host, { class: this.isTabbing ? "user-is-tabbing" : "" }, h("priv-navigator-button", { expanded: this.isOpen, altText: this.setAltText(), isTabbing: this.isTabbing }), h("div", { class: `wrapper ${this.isOpen ? "" : "hide"} ${this.openRight ? "right" : ""}`, ref: (el) => (this.wrapperEl = el) }, this.renderUserInfo(), this.parsedProducts.length > 1 && this.renderHeading(), this.renderList()))) : ("");
|
|
262
|
+
}
|
|
263
|
+
static get delegatesFocus() { return true; }
|
|
264
|
+
get el() { return getElement(this); }
|
|
265
|
+
static get watchers() { return {
|
|
266
|
+
"products": ["parseData"]
|
|
267
|
+
}; }
|
|
268
|
+
};
|
|
269
269
|
Navigator.style = wmNavigatorCss;
|
|
270
270
|
|
|
271
271
|
export { Navigator as wm_navigator };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"wm-navigator.entry.js","mappings":"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","names":[],"sources":["./src/components/wm-navigator/wm-navigator.scss?tag=wm-navigator&encapsulation=shadow","./src/components/wm-navigator/wm-navigator.tsx"],"sourcesContent":[":host,\r\nwm-navigator {\r\n min-width: 0;\r\n position: relative;\r\n display: inline-block;\r\n\r\n .wrapper {\r\n overflow: auto;\r\n font-size: rem-calc(18);\r\n min-width: rem-calc(210);\r\n width: auto;\r\n max-height: 80vh;\r\n text-align: left;\r\n position: absolute;\r\n z-index: 50;\r\n top: 100%;\r\n right: 20px;\r\n left: auto;\r\n background: #fff;\r\n letter-spacing: normal;\r\n @include box-shadow(0 4px 15px 0 rgba(0, 0, 0, 0.2));\r\n @include transition(transform 0.25s ease);\r\n @include transformOrigin(center top);\r\n @include scale($xVal: 1, $yVal: 1);\r\n\r\n .user {\r\n background: $background;\r\n padding: rem-calc(10 20);\r\n font-size: rem-calc(14);\r\n\r\n p {\r\n margin: 0;\r\n }\r\n p:first-child {\r\n font-weight: 700;\r\n text-transform: capitalize;\r\n }\r\n }\r\n\r\n h2 {\r\n background: #2e1b46;\r\n color: #fff;\r\n font-weight: 700;\r\n margin: 0;\r\n padding: rem-calc(10 20);\r\n font-size: rem-calc(14);\r\n }\r\n\r\n [role=\"listbox\"] {\r\n list-style: none;\r\n margin: 0;\r\n padding-left: 0;\r\n }\r\n\r\n &.hide {\r\n @include scale($xVal: 1, $yVal: 0);\r\n }\r\n\r\n &.right {\r\n right: auto;\r\n left: 20px;\r\n }\r\n }\r\n\r\n img {\r\n transform: scale(0.8);\r\n transform-origin: left center;\r\n display: block;\r\n }\r\n\r\n .logout {\r\n text-align: center;\r\n text-transform: capitalize;\r\n }\r\n}\r\n\r\npriv-navigator-item:focus {\r\n outline: none;\r\n}\r\n","import { Component, Element, h, Host, Prop, State, Listen, EventEmitter, Event, Watch } from \"@stencil/core\";\r\nimport { getWmMode, Product, NavigatorPayload } from \"../../global/interfaces\";\r\nimport { intl, snakeCaseToCamelCase, getNewIndexToFocus } from \"../../global/functions\";\r\nimport { getRequest } from \"../../global/services/http-service\";\r\n\r\n@Component({\r\n tag: \"wm-navigator\",\r\n styleUrl: \"wm-navigator.scss\",\r\n shadow: { delegatesFocus: true },\r\n})\r\nexport class Navigator {\r\n @Element() el!: any;\r\n private wrapperEl?: HTMLDivElement;\r\n\r\n // Component can receive user info and products as props (this is how it worked before)\r\n @Prop() userName?: string;\r\n @Prop() email?: string;\r\n @Prop() authType: number = 1; // 1: none or off, 2: username-password or username_password_sso, 3: saml or saml_sso\r\n @Prop() connectionName?: string;\r\n @Prop() logoutUrl?: string;\r\n @Prop() products?: string | []; // products as JSON string, parsed on load\r\n\r\n // The new way is to retrieve user info from an endpoint\r\n // dev needs to opt-in by setting loadFromUserinfo to true\r\n @Prop() loadFromUserinfo: boolean = false;\r\n // comp can check whether the info was successfully retrieved with:\r\n private retrievedInfo: boolean = !this.loadFromUserinfo; // when in endpoint mode, only render after get request completed\r\n\r\n // used either way to store the products\r\n parsedProducts: Array<Product> = [];\r\n\r\n /**\r\n * Event emitted from child wm-navigator-button updates the state, which is then passed down as a prop by wm-navigator.\r\n */\r\n @State() isOpen: boolean = false;\r\n private openRight: boolean = false; // whether the menu should open on the right side\r\n\r\n @State() isTabbing: boolean = false;\r\n\r\n /**\r\n * Value is set to the index of the current product on load.\r\n * Keyboard navigation updates the state to keep track of focus in the dropdown.\r\n * State resets to the index of the current product when the dropdown closes.\r\n */\r\n @State() itemIndexToFocus: number = 0;\r\n\r\n @Event() wmNavigatorLogout!: EventEmitter;\r\n\r\n private currentProductId!: string;\r\n\r\n async componentWillLoad() {\r\n if (!this.userName) {\r\n console.error(\"wm-navigator: user-name is a required property.\");\r\n }\r\n\r\n await this.parseData();\r\n this.setFocusIndex();\r\n }\r\n\r\n // async because we need the http request to complete before proceeding\r\n @Watch(\"products\")\r\n async parseData() {\r\n if (!!this.loadFromUserinfo) {\r\n await getRequest(\"/platform/navigator/userinfo\")\r\n .then((response: NavigatorPayload) => {\r\n this.email = response.email;\r\n this.currentProductId = response.current_product_id;\r\n this.parsedProducts = this.productKeysToCamelCase(response.products);\r\n this.logoutUrl = this.logoutUrl ? this.logoutUrl : response.logout_url;\r\n this.connectionName = this.connectionName ? this.connectionName : response.connection_name;\r\n if (!!this.email && !!this.currentProductId) {\r\n this.retrievedInfo = true;\r\n }\r\n })\r\n .catch((errStatus) => {\r\n console.error(errStatus);\r\n });\r\n } else {\r\n this.currentProductId = getWmMode(this.el);\r\n if (!!this.products) {\r\n if (typeof this.products === \"string\") {\r\n this.parsedProducts = JSON.parse(this.products);\r\n } else {\r\n this.parsedProducts = this.products;\r\n }\r\n this.parsedProducts = this.productKeysToCamelCase(this.parsedProducts);\r\n }\r\n }\r\n // products is initialized as empty array in case nothing is passed\r\n this.parsedProducts.sort((a, b) => (a.name < b.name ? -1 : 1));\r\n }\r\n\r\n productKeysToCamelCase(products: object[]): Product[] {\r\n products = products.map((product: any) => {\r\n const keys = Object.keys(product);\r\n let newProduct: { [key: string]: string } = {};\r\n keys.forEach((key) => {\r\n newProduct[snakeCaseToCamelCase(key)] = product[key];\r\n });\r\n return newProduct;\r\n });\r\n return products as Product[];\r\n }\r\n\r\n /**\r\n * Sets index to focus on open to the selected product. This index resets it when the menu closes.\r\n */\r\n setFocusIndex() {\r\n if (this.parsedProducts.length > 1) {\r\n const currentProduct = this.getProduct(this.currentProductId);\r\n\r\n if (currentProduct) {\r\n this.itemIndexToFocus = this.parsedProducts.indexOf(currentProduct);\r\n }\r\n }\r\n }\r\n\r\n @Listen(\"wmUserIsTabbing\", { target: \"window\" })\r\n toggleTabbingOn() {\r\n this.isTabbing = true;\r\n }\r\n\r\n @Listen(\"wmUserIsNotTabbing\", { target: \"window\" })\r\n toggleTabbingOff() {\r\n this.isTabbing = false;\r\n }\r\n\r\n @Listen(\"keydown\")\r\n handleKeys(ev: KeyboardEvent) {\r\n switch (ev.key) {\r\n case \"Escape\":\r\n ev.preventDefault();\r\n this.closeMenu();\r\n break;\r\n case \"ArrowDown\":\r\n case \"ArrowUp\":\r\n ev.preventDefault();\r\n if (!this.isOpen) {\r\n this.itemIndexToFocus = getNewIndexToFocus(this.itemIndexToFocus, ev.key, this.navigatorItems.length);\r\n this.openMenu();\r\n }\r\n break;\r\n }\r\n }\r\n\r\n @Listen(\"keydownOnNavItem\")\r\n handleKeydown(ev: CustomEvent) {\r\n const key = ev.detail.key;\r\n const item = ev.detail.navItem;\r\n switch (key) {\r\n case \"Tab\":\r\n this.closeMenu();\r\n break;\r\n case \"Enter\":\r\n case \" \":\r\n item.click();\r\n break;\r\n case \"ArrowDown\":\r\n case \"ArrowUp\":\r\n const oldIndex = this.itemIndexToFocus;\r\n this.itemIndexToFocus = getNewIndexToFocus(this.itemIndexToFocus, key, this.navigatorItems.length);\r\n this.focusItem();\r\n this.unfocusItem(oldIndex);\r\n break;\r\n }\r\n }\r\n\r\n @Listen(\"click\", { target: \"document\" })\r\n handleClick(ev: MouseEvent) {\r\n const isElOrChild = ev.target === this.el || this.el.contains(ev.target as Node);\r\n\r\n if (!isElOrChild && this.isOpen) {\r\n this.closeMenu();\r\n }\r\n }\r\n\r\n @Listen(\"buttonActivated\")\r\n handleButtonClick() {\r\n this.isOpen ? this.closeMenu() : this.openMenu();\r\n }\r\n\r\n openMenu() {\r\n if (this.wrapperEl) {\r\n const wrapperWidth = this.wrapperEl.clientWidth;\r\n const spaceLeft = this.el.getBoundingClientRect().left;\r\n const spaceRight = document.documentElement.clientWidth - this.el.getBoundingClientRect().right;\r\n this.openRight = wrapperWidth > spaceLeft && spaceRight > spaceLeft;\r\n }\r\n this.isOpen = true;\r\n this.focusItem();\r\n }\r\n\r\n closeMenu() {\r\n this.isOpen = false;\r\n this.buttonFocusHandler();\r\n this.unfocusItem(this.itemIndexToFocus);\r\n this.setFocusIndex();\r\n }\r\n\r\n focusItem() {\r\n const newSelection = this.navigatorItems[this.itemIndexToFocus];\r\n newSelection.tabIndex = 0;\r\n newSelection.focused = true;\r\n window.requestAnimationFrame(() => newSelection.focus());\r\n }\r\n\r\n unfocusItem(index: number) {\r\n const oldSelection = this.navigatorItems[index];\r\n oldSelection.tabIndex = -1;\r\n oldSelection.focused = false;\r\n }\r\n\r\n buttonFocusHandler() {\r\n const hostButton = this.el.shadowRoot.querySelector(\"priv-navigator-button\");\r\n const button = hostButton.shadowRoot.querySelector(\"button\");\r\n window.requestAnimationFrame(() => button.focus());\r\n }\r\n\r\n /**\r\n * HELPERS FOR RENDER\r\n */\r\n renderUserInfo() {\r\n return (\r\n <div\r\n class=\"user\"\r\n id=\"wm-nav-user\"\r\n aria-label={intl.formatMessage(\r\n {\r\n id: \"navigator.userinfoLabel\",\r\n defaultMessage: \"for {name}, email {email}\",\r\n },\r\n { name: this.userName, email: this.email }\r\n )}\r\n >\r\n <p>{this.userName}</p>\r\n <p>{this.email}</p>\r\n </div>\r\n );\r\n }\r\n\r\n setAltText(): string {\r\n if (this.parsedProducts.length > 1) {\r\n return intl.formatMessage({\r\n id: \"navigator.userinfoAndProductNavigator\",\r\n defaultMessage: \"User information and product navigator\",\r\n });\r\n } else {\r\n return intl.formatMessage({\r\n id: \"navigator.userinfo\",\r\n defaultMessage: \"User information\",\r\n });\r\n }\r\n }\r\n\r\n renderHeading() {\r\n return (\r\n <h2>\r\n {intl.formatMessage({\r\n id: \"navigator.watermarkApps\",\r\n defaultMessage: \"Watermark Apps\",\r\n description: \"Applications made by Watermark Insights\",\r\n })}\r\n </h2>\r\n );\r\n }\r\n\r\n renderList() {\r\n return (\r\n <ul\r\n role=\"listbox\"\r\n aria-label={`${intl.formatMessage({\r\n id: \"navigator.WatermarkAppNavigation\",\r\n defaultMessage: \"Watermark App Navigation\",\r\n description: \"list of applications by Watermark Insights\",\r\n })}`}\r\n aria-describedby=\"wm-nav-user\"\r\n >\r\n {this.parsedProducts.length > 1 && this.renderProductOptions()}\r\n {this.renderLogoutOption()}\r\n </ul>\r\n );\r\n }\r\n\r\n renderProductOptions(): Array<HTMLPrivNavigatorItemElement> {\r\n return this.parsedProducts.map((product: Product) => {\r\n let name: string | undefined, icon: string | undefined, isSelected: boolean, clickRedirect: any;\r\n\r\n name = product.name;\r\n icon = (product as Product).iconUrl;\r\n\r\n clickRedirect = this.setProductOnClick(product.id);\r\n\r\n if (!!name && !!icon) {\r\n isSelected = this.currentProductId === product.id;\r\n\r\n return (\r\n <priv-navigator-item\r\n selected={isSelected}\r\n id={product.id}\r\n onClick={clickRedirect}\r\n role=\"option\"\r\n aria-label={name}\r\n >\r\n <img src={icon} alt={name} />\r\n </priv-navigator-item>\r\n );\r\n }\r\n });\r\n }\r\n\r\n setProductOnClick(productId: string) {\r\n const product = this.getProduct(productId);\r\n\r\n if (this.currentProductId === productId) {\r\n return () => {};\r\n } else if (product) {\r\n if (!!this.loadFromUserinfo || this.authType === 2) {\r\n return () => (window.location.href = (product as Product).linkUrl);\r\n } else if (this.authType === 3) {\r\n // products passed as prop, saml\r\n const connName = this.connectionName ? `/?connection_name=${this.connectionName}` : \"\";\r\n return () => (window.location.href = (product as Product).samlLinkUrl + connName);\r\n }\r\n }\r\n }\r\n\r\n renderLogoutOption() {\r\n return (\r\n <priv-navigator-item\r\n class=\"logout\"\r\n selected={!(this.parsedProducts.length > 1)}\r\n id=\"nav-logout\"\r\n onClick={this.setLogoutOnclick()}\r\n role=\"option\"\r\n >\r\n <span class=\"logout\">\r\n {intl.formatMessage({\r\n id: \"navigator.logout\",\r\n defaultMessage: \"Log Out\",\r\n })}\r\n </span>\r\n </priv-navigator-item>\r\n );\r\n }\r\n\r\n setLogoutOnclick() {\r\n // The logout item will always emit a custom event on click so that the dev can run any business logic specific to the app on logout (e.g., clearing local storage).\r\n // It will only redirect if the dev has set the logoutUrl. If some sort of custom redirect is needed, the logoutUrl should not be set.\r\n return () => {\r\n this.wmNavigatorLogout.emit();\r\n if (this.logoutUrl) {\r\n window.location.href = this.logoutUrl;\r\n }\r\n };\r\n }\r\n\r\n private get navigatorItems(): Array<HTMLPrivNavigatorItemElement> {\r\n return Array.from(this.el.shadowRoot.querySelectorAll(\"priv-navigator-item\"));\r\n }\r\n\r\n private getProduct(id: string): Product | undefined {\r\n return this.parsedProducts.find((product) => product.id === id);\r\n }\r\n\r\n render() {\r\n return this.retrievedInfo ? (\r\n <Host class={this.isTabbing ? \"user-is-tabbing\" : \"\"}>\r\n <priv-navigator-button expanded={this.isOpen} altText={this.setAltText()} isTabbing={this.isTabbing} />\r\n <div\r\n class={`wrapper ${this.isOpen ? \"\" : \"hide\"} ${this.openRight ? \"right\" : \"\"}`}\r\n ref={(el) => (this.wrapperEl = el as HTMLDivElement)}\r\n >\r\n {this.renderUserInfo()}\r\n {this.parsedProducts.length > 1 && this.renderHeading()}\r\n {this.renderList()}\r\n </div>\r\n </Host>\r\n ) : (\r\n \"\"\r\n );\r\n }\r\n}\r\n"],"version":3}
|
|
1
|
+
{"file":"wm-navigator.entry.js","mappings":"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","names":[],"sources":["./src/components/wm-navigator/wm-navigator.scss?tag=wm-navigator&encapsulation=shadow","./src/components/wm-navigator/wm-navigator.tsx"],"sourcesContent":[":host,\nwm-navigator {\n min-width: 0;\n position: relative;\n display: inline-block;\n\n .wrapper {\n overflow: auto;\n font-size: rem-calc(18);\n min-width: rem-calc(210);\n width: auto;\n max-height: 80vh;\n text-align: left;\n position: absolute;\n z-index: 50;\n top: 100%;\n right: 20px;\n left: auto;\n background: #fff;\n letter-spacing: normal;\n @include box-shadow(0 4px 15px 0 rgba(0, 0, 0, 0.2));\n @include transition(transform 0.25s ease);\n @include transformOrigin(center top);\n @include scale($xVal: 1, $yVal: 1);\n\n .user {\n background: $background;\n padding: rem-calc(10 20);\n font-size: rem-calc(14);\n\n p {\n margin: 0;\n }\n p:first-child {\n font-weight: 700;\n text-transform: capitalize;\n }\n }\n\n h2 {\n background: #2e1b46;\n color: #fff;\n font-weight: 700;\n margin: 0;\n padding: rem-calc(10 20);\n font-size: rem-calc(14);\n }\n\n [role=\"listbox\"] {\n list-style: none;\n margin: 0;\n padding-left: 0;\n }\n\n &.hide {\n @include scale($xVal: 1, $yVal: 0);\n }\n\n &.right {\n right: auto;\n left: 20px;\n }\n }\n\n img {\n transform: scale(0.8);\n transform-origin: left center;\n display: block;\n }\n\n .logout {\n text-align: center;\n text-transform: capitalize;\n }\n}\n\npriv-navigator-item:focus {\n outline: none;\n}\n","import { Component, Element, h, Host, Prop, State, Listen, EventEmitter, Event, Watch } from \"@stencil/core\";\nimport { getWmMode, Product, NavigatorPayload } from \"../../global/interfaces\";\nimport { intl, snakeCaseToCamelCase, getNewIndexToFocus } from \"../../global/functions\";\nimport { getRequest } from \"../../global/services/http-service\";\n\n@Component({\n tag: \"wm-navigator\",\n styleUrl: \"wm-navigator.scss\",\n shadow: { delegatesFocus: true },\n})\nexport class Navigator {\n @Element() el!: any;\n private wrapperEl?: HTMLDivElement;\n\n // Component can receive user info and products as props (this is how it worked before)\n @Prop() userName?: string;\n @Prop() email?: string;\n @Prop() authType: number = 1; // 1: none or off, 2: username-password or username_password_sso, 3: saml or saml_sso\n @Prop() connectionName?: string;\n @Prop() logoutUrl?: string;\n @Prop() products?: string | []; // products as JSON string, parsed on load\n\n // The new way is to retrieve user info from an endpoint\n // dev needs to opt-in by setting loadFromUserinfo to true\n @Prop() loadFromUserinfo: boolean = false;\n // comp can check whether the info was successfully retrieved with:\n private retrievedInfo: boolean = !this.loadFromUserinfo; // when in endpoint mode, only render after get request completed\n\n // used either way to store the products\n parsedProducts: Array<Product> = [];\n\n /**\n * Event emitted from child wm-navigator-button updates the state, which is then passed down as a prop by wm-navigator.\n */\n @State() isOpen: boolean = false;\n private openRight: boolean = false; // whether the menu should open on the right side\n\n @State() isTabbing: boolean = false;\n\n /**\n * Value is set to the index of the current product on load.\n * Keyboard navigation updates the state to keep track of focus in the dropdown.\n * State resets to the index of the current product when the dropdown closes.\n */\n @State() itemIndexToFocus: number = 0;\n\n @Event() wmNavigatorLogout!: EventEmitter;\n\n private currentProductId!: string;\n\n async componentWillLoad() {\n if (!this.userName) {\n console.error(\"wm-navigator: user-name is a required property.\");\n }\n\n await this.parseData();\n this.setFocusIndex();\n }\n\n // async because we need the http request to complete before proceeding\n @Watch(\"products\")\n async parseData() {\n if (!!this.loadFromUserinfo) {\n await getRequest(\"/platform/navigator/userinfo\")\n .then((response: NavigatorPayload) => {\n this.email = response.email;\n this.currentProductId = response.current_product_id;\n this.parsedProducts = this.productKeysToCamelCase(response.products);\n this.logoutUrl = this.logoutUrl ? this.logoutUrl : response.logout_url;\n this.connectionName = this.connectionName ? this.connectionName : response.connection_name;\n if (!!this.email && !!this.currentProductId) {\n this.retrievedInfo = true;\n }\n })\n .catch((errStatus) => {\n console.error(errStatus);\n });\n } else {\n this.currentProductId = getWmMode(this.el);\n if (!!this.products) {\n if (typeof this.products === \"string\") {\n this.parsedProducts = JSON.parse(this.products);\n } else {\n this.parsedProducts = this.products;\n }\n this.parsedProducts = this.productKeysToCamelCase(this.parsedProducts);\n }\n }\n // products is initialized as empty array in case nothing is passed\n this.parsedProducts.sort((a, b) => (a.name < b.name ? -1 : 1));\n }\n\n productKeysToCamelCase(products: object[]): Product[] {\n products = products.map((product: any) => {\n const keys = Object.keys(product);\n let newProduct: { [key: string]: string } = {};\n keys.forEach((key) => {\n newProduct[snakeCaseToCamelCase(key)] = product[key];\n });\n return newProduct;\n });\n return products as Product[];\n }\n\n /**\n * Sets index to focus on open to the selected product. This index resets it when the menu closes.\n */\n setFocusIndex() {\n if (this.parsedProducts.length > 1) {\n const currentProduct = this.getProduct(this.currentProductId);\n\n if (currentProduct) {\n this.itemIndexToFocus = this.parsedProducts.indexOf(currentProduct);\n }\n }\n }\n\n @Listen(\"wmUserIsTabbing\", { target: \"window\" })\n toggleTabbingOn() {\n this.isTabbing = true;\n }\n\n @Listen(\"wmUserIsNotTabbing\", { target: \"window\" })\n toggleTabbingOff() {\n this.isTabbing = false;\n }\n\n @Listen(\"keydown\")\n handleKeys(ev: KeyboardEvent) {\n switch (ev.key) {\n case \"Escape\":\n ev.preventDefault();\n this.closeMenu();\n break;\n case \"ArrowDown\":\n case \"ArrowUp\":\n ev.preventDefault();\n if (!this.isOpen) {\n this.itemIndexToFocus = getNewIndexToFocus(this.itemIndexToFocus, ev.key, this.navigatorItems.length);\n this.openMenu();\n }\n break;\n }\n }\n\n @Listen(\"keydownOnNavItem\")\n handleKeydown(ev: CustomEvent) {\n const key = ev.detail.key;\n const item = ev.detail.navItem;\n switch (key) {\n case \"Tab\":\n this.closeMenu();\n break;\n case \"Enter\":\n case \" \":\n item.click();\n break;\n case \"ArrowDown\":\n case \"ArrowUp\":\n const oldIndex = this.itemIndexToFocus;\n this.itemIndexToFocus = getNewIndexToFocus(this.itemIndexToFocus, key, this.navigatorItems.length);\n this.focusItem();\n this.unfocusItem(oldIndex);\n break;\n }\n }\n\n @Listen(\"click\", { target: \"document\" })\n handleClick(ev: MouseEvent) {\n const isElOrChild = ev.target === this.el || this.el.contains(ev.target as Node);\n\n if (!isElOrChild && this.isOpen) {\n this.closeMenu();\n }\n }\n\n @Listen(\"buttonActivated\")\n handleButtonClick() {\n this.isOpen ? this.closeMenu() : this.openMenu();\n }\n\n openMenu() {\n if (this.wrapperEl) {\n const wrapperWidth = this.wrapperEl.clientWidth;\n const spaceLeft = this.el.getBoundingClientRect().left;\n const spaceRight = document.documentElement.clientWidth - this.el.getBoundingClientRect().right;\n this.openRight = wrapperWidth > spaceLeft && spaceRight > spaceLeft;\n }\n this.isOpen = true;\n this.focusItem();\n }\n\n closeMenu() {\n this.isOpen = false;\n this.buttonFocusHandler();\n this.unfocusItem(this.itemIndexToFocus);\n this.setFocusIndex();\n }\n\n focusItem() {\n const newSelection = this.navigatorItems[this.itemIndexToFocus];\n newSelection.tabIndex = 0;\n newSelection.focused = true;\n window.requestAnimationFrame(() => newSelection.focus());\n }\n\n unfocusItem(index: number) {\n const oldSelection = this.navigatorItems[index];\n oldSelection.tabIndex = -1;\n oldSelection.focused = false;\n }\n\n buttonFocusHandler() {\n const hostButton = this.el.shadowRoot.querySelector(\"priv-navigator-button\");\n const button = hostButton.shadowRoot.querySelector(\"button\");\n window.requestAnimationFrame(() => button.focus());\n }\n\n /**\n * HELPERS FOR RENDER\n */\n renderUserInfo() {\n return (\n <div\n class=\"user\"\n id=\"wm-nav-user\"\n aria-label={intl.formatMessage(\n {\n id: \"navigator.userinfoLabel\",\n defaultMessage: \"for {name}, email {email}\",\n },\n { name: this.userName, email: this.email }\n )}\n >\n <p>{this.userName}</p>\n <p>{this.email}</p>\n </div>\n );\n }\n\n setAltText(): string {\n if (this.parsedProducts.length > 1) {\n return intl.formatMessage({\n id: \"navigator.userinfoAndProductNavigator\",\n defaultMessage: \"User information and product navigator\",\n });\n } else {\n return intl.formatMessage({\n id: \"navigator.userinfo\",\n defaultMessage: \"User information\",\n });\n }\n }\n\n renderHeading() {\n return (\n <h2>\n {intl.formatMessage({\n id: \"navigator.watermarkApps\",\n defaultMessage: \"Watermark Apps\",\n description: \"Applications made by Watermark Insights\",\n })}\n </h2>\n );\n }\n\n renderList() {\n return (\n <ul\n role=\"listbox\"\n aria-label={`${intl.formatMessage({\n id: \"navigator.WatermarkAppNavigation\",\n defaultMessage: \"Watermark App Navigation\",\n description: \"list of applications by Watermark Insights\",\n })}`}\n aria-describedby=\"wm-nav-user\"\n >\n {this.parsedProducts.length > 1 && this.renderProductOptions()}\n {this.renderLogoutOption()}\n </ul>\n );\n }\n\n renderProductOptions(): Array<HTMLPrivNavigatorItemElement> {\n return this.parsedProducts.map((product: Product) => {\n let name: string | undefined, icon: string | undefined, isSelected: boolean, clickRedirect: any;\n\n name = product.name;\n icon = (product as Product).iconUrl;\n\n clickRedirect = this.setProductOnClick(product.id);\n\n if (!!name && !!icon) {\n isSelected = this.currentProductId === product.id;\n\n return (\n <priv-navigator-item\n selected={isSelected}\n id={product.id}\n onClick={clickRedirect}\n role=\"option\"\n aria-label={name}\n >\n <img src={icon} alt={name} />\n </priv-navigator-item>\n );\n }\n });\n }\n\n setProductOnClick(productId: string) {\n const product = this.getProduct(productId);\n\n if (this.currentProductId === productId) {\n return () => {};\n } else if (product) {\n if (!!this.loadFromUserinfo || this.authType === 2) {\n return () => (window.location.href = (product as Product).linkUrl);\n } else if (this.authType === 3) {\n // products passed as prop, saml\n const connName = this.connectionName ? `/?connection_name=${this.connectionName}` : \"\";\n return () => (window.location.href = (product as Product).samlLinkUrl + connName);\n }\n }\n }\n\n renderLogoutOption() {\n return (\n <priv-navigator-item\n class=\"logout\"\n selected={!(this.parsedProducts.length > 1)}\n id=\"nav-logout\"\n onClick={this.setLogoutOnclick()}\n role=\"option\"\n >\n <span class=\"logout\">\n {intl.formatMessage({\n id: \"navigator.logout\",\n defaultMessage: \"Log Out\",\n })}\n </span>\n </priv-navigator-item>\n );\n }\n\n setLogoutOnclick() {\n // The logout item will always emit a custom event on click so that the dev can run any business logic specific to the app on logout (e.g., clearing local storage).\n // It will only redirect if the dev has set the logoutUrl. If some sort of custom redirect is needed, the logoutUrl should not be set.\n return () => {\n this.wmNavigatorLogout.emit();\n if (this.logoutUrl) {\n window.location.href = this.logoutUrl;\n }\n };\n }\n\n private get navigatorItems(): Array<HTMLPrivNavigatorItemElement> {\n return Array.from(this.el.shadowRoot.querySelectorAll(\"priv-navigator-item\"));\n }\n\n private getProduct(id: string): Product | undefined {\n return this.parsedProducts.find((product) => product.id === id);\n }\n\n render() {\n return this.retrievedInfo ? (\n <Host class={this.isTabbing ? \"user-is-tabbing\" : \"\"}>\n <priv-navigator-button expanded={this.isOpen} altText={this.setAltText()} isTabbing={this.isTabbing} />\n <div\n class={`wrapper ${this.isOpen ? \"\" : \"hide\"} ${this.openRight ? \"right\" : \"\"}`}\n ref={(el) => (this.wrapperEl = el as HTMLDivElement)}\n >\n {this.renderUserInfo()}\n {this.parsedProducts.length > 1 && this.renderHeading()}\n {this.renderList()}\n </div>\n </Host>\n ) : (\n \"\"\n );\n }\n}\n"],"version":3}
|