@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 +0,0 @@
|
|
|
1
|
-
{"file":"chartFunctions-1df8043a.js","mappings":"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","names":[],"sources":["./src/components/charts/chartFunctions.tsx"],"sourcesContent":["import { h } from \"@stencil/core\";\r\nimport { checkForActiveElInShadow, debounce, findParentWithScrollbar, getPosition, intl } from \"../../global/functions\";\r\nimport { LegendItem, ChartType, ChartDetails, SliceDetails, SliceElement } from \"../../global/interfaces\";\r\n\r\nconst colors = {\r\n salmon: \"#ff5f4e\",\r\n cyan: \"#19a1a9\",\r\n forest: \"#088000\",\r\n sleet: \"#7f97ad\",\r\n midnight: \"#2e1b46\",\r\n lavender: \"#8b86ca\",\r\n periwinkle: \"#575195\",\r\n gray: \"#6b6b6b\",\r\n};\r\n\r\nexport const allChartsDetails: { [Key in ChartType]: ChartDetails } = {\r\n // for progress monitor\r\n doughnut: {\r\n size: 155,\r\n colors: [colors.forest, colors.gray],\r\n thickness: 0.73,\r\n padding: 25,\r\n category: \"doughnut\",\r\n },\r\n // deprecated hybrid chart type, should use Progress Indicator's \"doughnut\" instead\r\n doughnut0: {\r\n size: 155,\r\n colors: [colors.forest, colors.gray],\r\n thickness: 0.73,\r\n padding: 25,\r\n category: \"doughnut\",\r\n },\r\n doughnut1: {\r\n size: 130,\r\n colors: [colors.lavender, colors.midnight, colors.gray],\r\n thickness: 0.5,\r\n padding: 90,\r\n category: \"doughnut\",\r\n },\r\n doughnut2: {\r\n size: 130,\r\n colors: [colors.cyan, colors.salmon, colors.gray],\r\n thickness: 0.5,\r\n padding: 90,\r\n category: \"doughnut\",\r\n },\r\n // an internal type only for use when doughnut 2 is populated with 4 slices\r\n // in this case, the first slice is colored purple\r\n doughnut2plus: {\r\n size: 130,\r\n colors: [colors.periwinkle, colors.cyan, colors.salmon, colors.gray],\r\n thickness: 0.5,\r\n padding: 90,\r\n category: \"doughnut\",\r\n },\r\n doughnut3: {\r\n size: 130,\r\n colors: [colors.lavender, colors.midnight, \"#0089e4\", colors.forest, \"#ea8500\", \"#d54f41\", \"#146ca9\"],\r\n thickness: 0.5,\r\n padding: 90,\r\n category: \"doughnut\",\r\n },\r\n // for progress monitor\r\n bar: {\r\n size: 350,\r\n colors: [colors.forest, colors.gray],\r\n padding: 0,\r\n category: \"stackedBar\",\r\n },\r\n // deprecated hybrid chart type, should use Progress Indicator's \"bar\" instead\r\n bar1: {\r\n size: 350,\r\n colors: [colors.forest, colors.gray],\r\n padding: 0,\r\n category: \"stackedBar\",\r\n },\r\n bar2: {\r\n size: 400,\r\n colors: [colors.gray, colors.periwinkle, colors.cyan, colors.salmon],\r\n padding: 0,\r\n category: \"stackedBar\",\r\n },\r\n bar3: {\r\n size: 300,\r\n colors: [\"#0d696e\", colors.cyan, \"#8e4129\", colors.salmon],\r\n padding: 0,\r\n category: \"stackedBar\",\r\n },\r\n bar4: {\r\n size: 400,\r\n colors: [colors.salmon, colors.cyan, colors.periwinkle],\r\n padding: 0,\r\n category: \"stackedBar\",\r\n },\r\n bar5: {\r\n size: 400,\r\n colors: [\r\n colors.gray, // this is only used if prop notStartedColor is set\r\n colors.lavender,\r\n colors.midnight,\r\n \"#0089e4\",\r\n colors.forest,\r\n \"#ea8500\",\r\n \"#d54f41\",\r\n \"#146ca9\",\r\n ],\r\n padding: 0,\r\n category: \"stackedBar\",\r\n },\r\n bar6: {\r\n size: 400,\r\n colors: [colors.lavender],\r\n padding: 0,\r\n category: \"simpleBar\",\r\n },\r\n bar7: {\r\n size: 400,\r\n colors: [colors.periwinkle, colors.cyan, colors.salmon, colors.gray],\r\n padding: 0,\r\n category: \"simpleBar\",\r\n },\r\n};\r\n\r\nfunction showValue(valueFormat: string): string {\r\n return valueFormat === \"percentage\" || valueFormat === \"amount\" ? \"show-values\" : \"\";\r\n}\r\n\r\nexport const textHiddenMessage = intl.formatMessage({\r\n id: \"chart.hiddenValues\",\r\n defaultMessage: \"Values are not shown when too close to each other.\",\r\n description: \"Text displayed when a chart has some values hidden\",\r\n});\r\n\r\nexport const seeDetailsMessage = intl.formatMessage({\r\n id: \"chart.clickToSeeDetails\",\r\n defaultMessage: \"Click or use arrow keys to see details.\",\r\n description: \"Text displayed, guiding user to interact to see more details.\",\r\n});\r\n\r\nfunction abbrNumber(num: number) {\r\n return num > 999 ? Math.round(num / 100) / 10 + \"K\" : num;\r\n}\r\n\r\nexport function amountToPercent(val: number, total: number, asInt: boolean) {\r\n return asInt ? Math.round((val * 100) / total) : Math.round((val * 10000) / total) / 100; // with 2 decimals\r\n}\r\n\r\nexport function amountToDegree(val: number, total: number) {\r\n // In a circle of {total}, determine degrees of slice {val}\r\n return (val * 360) / total;\r\n}\r\n\r\nexport function toFixed(number: number) {\r\n return parseFloat((Math.floor(number * 100) / 100).toFixed(2));\r\n}\r\n\r\nexport function polarToCartesian(half: number, radius: number, startAngle: number, endAngle?: number) {\r\n var x = toFixed(half + half * radius * Math.cos((Math.PI * startAngle) / 180));\r\n var y = toFixed(half + half * radius * Math.sin((Math.PI * startAngle) / 180));\r\n if (endAngle !== undefined) {\r\n // if a 2nd angle value was passed, return 2 pairs of coords\r\n var x2 = toFixed(half + half * radius * Math.cos((Math.PI * endAngle) / 180));\r\n var y2 = toFixed(half + half * radius * Math.sin((Math.PI * endAngle) / 180));\r\n return { x1: x, y1: y, x2, y2 };\r\n }\r\n return { x, y };\r\n}\r\n\r\nfunction getArc(radius: number, largeArcFlag: string, x: number, y: number, chartSize: number) {\r\n var z = toFixed((chartSize / 2) * radius);\r\n return `A ${z}, ${z} 0 ${largeArcFlag} ${toFixed(x)}, ${toFixed(y)}`;\r\n}\r\n\r\nfunction scale(val: number, inMin: number, inMax: number, outMin: number, outMax: number) {\r\n let scaled = ((val - inMin) * (outMax - outMin)) / (inMax - inMin) + outMin;\r\n // clip the values so that whatever is passed in the output is never smaller than outMin or greater than outMax\r\n return scaled < outMin ? outMin : scaled > outMax ? outMax : scaled;\r\n}\r\n\r\nfunction minSpacing(width: number) {\r\n // minimum spacing between 2 ticks, in px\r\n return scale(width, 300, 900, 70, 150);\r\n}\r\n\r\nfunction getMaxTicks(width: number) {\r\n return Math.round(width / minSpacing(width));\r\n}\r\n\r\nfunction getInterval(largest: number, maxticks: number) {\r\n const minimum = largest / maxticks;\r\n const magnitude = 10 ** Math.floor(Math.log10(minimum));\r\n const residual = minimum / magnitude;\r\n let interval;\r\n if (residual > 5) {\r\n interval = 10 * magnitude;\r\n } else if (residual > 3) {\r\n interval = 5 * magnitude;\r\n } else if (residual > 2) {\r\n interval = 3 * magnitude;\r\n } else if (residual > 1.5) {\r\n interval = 2 * magnitude;\r\n } else if (residual > 1) {\r\n interval = 1.5 * magnitude;\r\n } else {\r\n interval = magnitude;\r\n }\r\n return interval;\r\n}\r\n\r\nfunction handleSliceKeyDown(this: any, ev: KeyboardEvent) {\r\n if (this.popoverEl && this.popoverEl.open && ev.key === \"Enter\") {\r\n const popoverBtn = this.popoverEl.querySelector(\"button\");\r\n popoverBtn && popoverBtn.click();\r\n }\r\n}\r\n\r\nexport function handleSliceClick(this: any, ev: MouseEvent, s: SliceDetails) {\r\n if (this.popoverEl && !this.isTabbing) {\r\n s.coords = { x: ev.clientX, y: ev.clientY };\r\n openPopover.call(this, s);\r\n }\r\n}\r\n\r\nfunction handleSliceFocus(this: any, ev: FocusEvent, s: SliceDetails) {\r\n if (this.popoverEl && this.isTabbing) {\r\n s.coords = getPosition(ev.target as HTMLElement);\r\n openPopover.call(this, s);\r\n }\r\n}\r\n\r\nexport function handleChartKeydown(this: any, ev: KeyboardEvent) {\r\n switch (ev.key) {\r\n // arrow up / left\r\n case \"ArrowUp\":\r\n case \"ArrowLeft\":\r\n ev.preventDefault();\r\n this.isTabbing = true; // shd already be true. just in case user clicked on chart then pressed an arrow key\r\n focusPrevious.call(this);\r\n break;\r\n // arrow right / down\r\n case \"ArrowRight\":\r\n case \"ArrowDown\":\r\n ev.preventDefault();\r\n this.isTabbing = true; // shd already be true. just in case user clicked on chart then pressed an arrow key\r\n focusNext.call(this);\r\n break;\r\n // tab\r\n case \"Tab\":\r\n exitChart.call(this);\r\n break;\r\n case \"Escape\":\r\n this.popoverEl!.open = false;\r\n this.userIsNavigating = false;\r\n break;\r\n }\r\n}\r\n\r\nexport function openPopover(this: any, s: SliceDetails) {\r\n if (!!this.popoverEl && !!s.title && !!s.text) {\r\n this.popoverEl.popoverTitle = s.title;\r\n this.popoverEl.popoverText = s.text;\r\n this.popoverEl.buttonText = s.buttonText;\r\n this.popoverEl.coords = s.coords;\r\n this.popoverEl.sliceRef = s.sliceRef;\r\n window.setTimeout(() => {\r\n if (this.popoverEl) {\r\n this.popoverEl.open = true;\r\n }\r\n }, 30);\r\n\r\n const debouncedClosePopover = debounce(async () => {\r\n this.popoverEl!.open = false;\r\n }, 10);\r\n\r\n // set up event listeners for scrolling\r\n // to close popover on page scroll\r\n document.addEventListener(\"scroll\", () => {\r\n debouncedClosePopover();\r\n });\r\n\r\n // ... and on parent scroll\r\n const scrollableParent = findParentWithScrollbar(this.el as HTMLElement);\r\n if (!!scrollableParent) {\r\n scrollableParent.addEventListener(\"scroll\", () => {\r\n debouncedClosePopover();\r\n });\r\n }\r\n }\r\n}\r\n\r\nfunction focusNext(this: any) {\r\n const activeEl = checkForActiveElInShadow(document.activeElement as HTMLElement);\r\n const index =\r\n // if the active el is not in the array the first element gets focused\r\n (this.sliceEls!.indexOf(activeEl as HTMLElement) + 1) % this.sliceEls!.length;\r\n focusSlice.call(this, index);\r\n}\r\n\r\nfunction focusPrevious(this: any) {\r\n if (this.sliceEls) {\r\n const activeEl = checkForActiveElInShadow(document.activeElement as HTMLElement);\r\n let index = this.sliceEls.indexOf(activeEl as SliceElement);\r\n\r\n if (index === -1) {\r\n // not in the array : focus the first slice\r\n index = 0;\r\n } else if (index === 0) {\r\n // first slice : focus the last slice\r\n index = this.sliceEls.length - 1;\r\n } else {\r\n // anything else: focus previous\r\n index -= 1;\r\n }\r\n focusSlice.call(this, index);\r\n }\r\n}\r\n\r\nfunction focusSlice(this: any, index: number) {\r\n if (this.sliceEls && this.el) {\r\n this.userIsNavigating = true;\r\n if (this.popoverEl) {\r\n this.popoverEl.open = false;\r\n }\r\n // set tabindex of the wrapper to -1 while slices are being focused, to allow for shft-tabbing out of the component directly\r\n this.componentWrapperEl.tabIndex = -1;\r\n // @ts-ignore\r\n this.el.focusable = false; // for Edge\r\n this.sliceEls.map((p: SliceElement) => {\r\n p.tabIndex = -1;\r\n // @ts-ignore\r\n p.focusable = false; // for Edge\r\n });\r\n this.sliceEls[index].tabIndex = 0;\r\n // @ts-ignore\r\n this.sliceEls[index].focusable = true; // for Edge\r\n this.sliceEls[index].focus();\r\n window.setTimeout(() => {\r\n if (this.popoverEl) {\r\n this.popoverEl.open = true;\r\n }\r\n }, 10);\r\n }\r\n}\r\n\r\nexport function exitChart(this: any) {\r\n this.sliceEls &&\r\n this.sliceEls.map((p: SliceElement) => {\r\n p.tabIndex = -1;\r\n // @ts-ignore\r\n p.focusable = false; // for Edge\r\n });\r\n this.userIsNavigating = false;\r\n // delay so that we can tab out of component before chart becomes focusable again\r\n // and in case user was still pressing an arrow key when they pressed tab\r\n window.setTimeout(() => {\r\n this.componentWrapperEl.tabIndex = 0;\r\n // @ts-ignore\r\n this.el.focusable = true; // for Edge\r\n if (this.popoverEl) {\r\n this.popoverEl.open = false;\r\n }\r\n }, 100);\r\n}\r\n\r\nexport async function getDetails(this: any, chartType: ChartType) {\r\n this.slicesDetails = [];\r\n let acc = 0;\r\n const children = Array.from(this.el.children) as Array<HTMLWmChartSliceElement>;\r\n\r\n this.total = children.reduce(\r\n (total: number, slice: SliceElement) => (total += parseInt(slice.getAttribute(\"amount\") || \"0\")),\r\n 0\r\n );\r\n\r\n children.forEach((c: Element, i: number) => {\r\n const amount = parseInt(c.getAttribute(\"amount\") || \"0\");\r\n const perc = amountToPercent(amount, this.total, true);\r\n\r\n let colorIndex = i;\r\n\r\n // for bar5, first color should be skipped unless notStartedColor is set to true\r\n if (chartType === \"bar5\") {\r\n colorIndex = this.notStartedColor ? i : i + 1;\r\n }\r\n\r\n // bars in bar6 are all the same color\r\n if (chartType === \"bar6\") {\r\n colorIndex = 0;\r\n }\r\n\r\n const color = allChartsDetails[chartType].colors[colorIndex];\r\n\r\n const sliceDetails: SliceDetails = {\r\n amount: amount,\r\n perc: perc,\r\n legend: c.getAttribute(\"legend\"),\r\n color: color || colors.gray,\r\n offset: acc,\r\n id: `${this.uid}-${i + 1}`,\r\n title: c.getAttribute(\"popover-title\"),\r\n text: c.getAttribute(\"popover-text\"),\r\n buttonText: c.getAttribute(\"popover-button-text\"),\r\n sliceRef: c,\r\n inSmallCluster: false,\r\n };\r\n acc += amount;\r\n this.slicesDetails.push(sliceDetails);\r\n });\r\n}\r\n\r\nfunction sortSlicesDetails(slicesDetails: SliceDetails[], total: number): SliceDetails[] {\r\n // sort slices by decreasing amount\r\n let sortedSlicesDetails = [...slicesDetails].sort((a: SliceDetails, b: SliceDetails) =>\r\n a.amount === b.amount ? 0 : a.amount > b.amount ? -1 : 1\r\n );\r\n\r\n let acc = 0;\r\n\r\n sortedSlicesDetails.forEach((s: SliceDetails, idx: number) => {\r\n const prev = sortedSlicesDetails[idx === 0 ? sortedSlicesDetails.length - 1 : idx - 1];\r\n const next = sortedSlicesDetails[idx === sortedSlicesDetails.length - 1 ? 0 : idx + 1];\r\n const prevPerc = amountToPercent(prev.amount, total, true);\r\n const nextPerc = amountToPercent(next.amount, total, true);\r\n\r\n s.offset = acc;\r\n acc += s.amount;\r\n s.inSmallCluster = isInSmallCluster(prevPerc, s.perc, s.amount, nextPerc);\r\n });\r\n return sortedSlicesDetails;\r\n}\r\n\r\nfunction isInSmallCluster(prevPerc: number, perc: number, amount: number, nextPerc: number): boolean {\r\n // determine whether the slice is in a cluster of small values\r\n // to avoid percentage text overlap for small values\r\n const isSmall = perc < 4;\r\n const prevIsSmall = prevPerc < 5;\r\n const nextIsSmall = nextPerc < 5;\r\n let inSmallCluster = isSmall && (prevIsSmall || nextIsSmall);\r\n\r\n // because <1% slice percentage text has an additional character\r\n // the inSmallCluster threshold needs to be widened for that slice only\r\n const lessThanOnePerc = perc === 0 && amount > 0;\r\n if (lessThanOnePerc && (nextPerc < 8 || prevPerc < 8)) {\r\n inSmallCluster = true;\r\n }\r\n\r\n return inSmallCluster;\r\n}\r\n\r\nfunction getPathData(this: any, amount: number, offset: number, chartType: ChartType) {\r\n const startAngle = amountToDegree(offset, this.total) - 90; // start at noon, not at 3 o'clock\r\n const activeAngle = (amount / this.total) * 360;\r\n let endAngle = startAngle + activeAngle;\r\n const largeArcFlagOuter = activeAngle > 180 ? \"1 1\" : \"0 1\";\r\n const largeArcFlagInner = activeAngle > 180 ? \"1 0\" : \"0 0\";\r\n const half = this.chartDetails.size / 2;\r\n const innerRadius = this.chartDetails.thickness!;\r\n const outerRadius = 1;\r\n\r\n const isHybridDoughnut = chartType === \"doughnut0\" || chartType === \"doughnut\";\r\n const outerSeparatorOffset = 1.5;\r\n const innerSeparatorOffset = isHybridDoughnut ? 2.25 : 3;\r\n\r\n if (activeAngle === 360) {\r\n // fix to avoid bad svg shape when the path goes all around (100%)\r\n endAngle -= 0.01;\r\n }\r\n\r\n const outerCoords = polarToCartesian(\r\n half,\r\n outerRadius,\r\n startAngle + outerSeparatorOffset, // Addition for slice separator\r\n endAngle\r\n );\r\n const innerCoords = polarToCartesian(\r\n half,\r\n innerRadius,\r\n startAngle + innerSeparatorOffset, // Addition for slice separator\r\n endAngle\r\n );\r\n\r\n const moveTo = `M ${outerCoords.x1}, ${outerCoords.y1} `;\r\n const arc1 = getArc(outerRadius, largeArcFlagOuter, outerCoords.x2!, outerCoords.y2!, this.chartDetails.size);\r\n const line = ` L ${innerCoords.x2}, ${innerCoords.y2} `;\r\n const arc2 = getArc(innerRadius, largeArcFlagInner, innerCoords.x1!, innerCoords.y1!, this.chartDetails.size);\r\n\r\n return moveTo + arc1 + line + arc2 + \" z\";\r\n}\r\n\r\nexport function renderInstructionsText() {\r\n const chartInstructions = intl.formatMessage({\r\n id: \"chart.instructions\",\r\n defaultMessage: \"Use arrow keys to browse elements, press Tab to exit.\",\r\n description: \"For screen readers only, instructions on how to interact with the chart component\",\r\n });\r\n\r\n return <div id=\"chart-instructions\">{chartInstructions}</div>;\r\n}\r\n\r\nfunction renderFilter() {\r\n return (\r\n <defs>\r\n <filter id=\"wmHoverDropShadow\">\r\n <feGaussianBlur stdDeviation=\"3\"></feGaussianBlur>\r\n <feOffset result=\"offsetblur\"></feOffset>\r\n <feFlood flood-color=\"#333\"></feFlood>\r\n <feComposite operator=\"in\" in2=\"offsetblur\"></feComposite>\r\n <feMerge>\r\n <feMergeNode></feMergeNode>\r\n <feMergeNode in=\"SourceGraphic\"></feMergeNode>\r\n </feMerge>\r\n </filter>\r\n </defs>\r\n );\r\n}\r\n\r\nexport function renderDoughnut(this: any, chartType: ChartType) {\r\n const outerSize = this.chartDetails.size + this.chartDetails.padding;\r\n const isHybridDoughnut = chartType === \"doughnut0\" || chartType === \"doughnut\";\r\n // no sorting in progress indicators\r\n let slicesDetails = isHybridDoughnut ? this.slicesDetails : sortSlicesDetails(this.slicesDetails, this.total);\r\n\r\n return (\r\n <div class=\"chart-wrapper doughnut-wrapper\">\r\n <svg width={outerSize + \"px\"} height={outerSize + \"px\"} id={`graphic-${this.uid}`} class=\"doughnut-svg\">\r\n {renderFilter()}\r\n {slicesDetails.map((s: SliceDetails) => renderPath.call(this, s, chartType))}\r\n {isHybridDoughnut ? (\r\n <text\r\n class=\"value\"\r\n x=\"50%\"\r\n y=\"50%\"\r\n font-size=\"1.5rem\"\r\n font-weight=\"500\"\r\n text-anchor=\"middle\"\r\n dominant-baseline=\"middle\"\r\n >\r\n {amountToPercent(slicesDetails[0].amount, this.total, true) + \"%\"}\r\n </text>\r\n ) : (\r\n <g\r\n transform={`translate(${this.chartDetails.padding / 2}, ${this.chartDetails.padding / 2})`}\r\n text-anchor=\"middle\"\r\n dominant-baseline=\"middle\"\r\n >\r\n {slicesDetails.map((s: SliceDetails) =>\r\n s.amount > 0 && !s.inSmallCluster ? renderDoughnutText.call(this, s) : \"\"\r\n )}\r\n </g>\r\n )}\r\n </svg>\r\n </div>\r\n );\r\n}\r\n\r\nfunction renderPath(this: any, s: SliceDetails, chartType: ChartType) {\r\n return (\r\n <g transform={`translate(${this.chartDetails.padding / 2}, ${this.chartDetails.padding / 2})`}>\r\n <path\r\n id={s.id}\r\n class=\"segment doughnut-segment\"\r\n fill={s.amount ? s.color : \"transparent\"}\r\n d={getPathData.call(this, s.amount, s.offset, chartType)}\r\n onClick={(ev) => handleSliceClick.call(this, ev, s)}\r\n onFocus={(ev) => handleSliceFocus.call(this, ev, s)}\r\n onKeyDown={(ev) => handleSliceKeyDown.call(this, ev)}\r\n role=\"img\"\r\n aria-label={s.legend}\r\n ></path>\r\n </g>\r\n );\r\n}\r\n\r\nfunction renderDoughnutText(this: any, s: SliceDetails) {\r\n const arcMiddle = amountToDegree(s.offset + s.amount / 2, this.total);\r\n let { x, y } = polarToCartesian(this.chartDetails.size / 2, 1.4, arcMiddle - 90);\r\n return (\r\n <text class=\"value\" x={x + \"px\"} y={y + \"px\"}>\r\n {`${s.perc > 0 ? s.perc : \"<1\"}%`}\r\n </text>\r\n );\r\n}\r\n\r\nexport function renderStackedBar(this: any, chartType: ChartType) {\r\n const isHybridBar = chartType === \"bar1\" || chartType === \"bar\";\r\n return (\r\n <div class=\"chart-wrapper bar-wrapper\">\r\n {isHybridBar ? (\r\n <div class=\"single-perc\">{amountToPercent(this.slicesDetails[0].amount, this.total, true) + \"%\"}</div>\r\n ) : (\r\n \"\"\r\n )}\r\n {this.chartType === \"bar3\" && this.drawAxis()}\r\n <div class={`inner-stacked-bar-wrapper ${showValue(this.tempValueFormat)}`}>\r\n {!isHybridBar ? (\r\n <div class=\"values\">\r\n {this.slicesDetails.map((s: SliceDetails, idx: number) => this.renderBarText(s, idx))}\r\n </div>\r\n ) : (\r\n \"\"\r\n )}\r\n <div class=\"stacked-bar-segments-wrapper\">\r\n {this.slicesDetails.map((s: SliceDetails, idx: number) => renderStackedBarSegment.call(this, s, idx))}\r\n </div>\r\n {isHybridBar ? renderCompletionMessage.call(this) : \"\"}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nfunction renderStackedBarSegment(this: any, s: SliceDetails, idx: number) {\r\n const isLastSlice = idx !== this.slicesDetails.length - 1;\r\n const width = `calc(${amountToPercent(s.amount, this.total, false)}%${isLastSlice ? \" - 2px\" : \"\"})`;\r\n\r\n return (\r\n <div\r\n class={`segment stacked-bar-segment ${amountToPercent(s.amount, this.total, false) === 0 ? \"zero\" : \"\"}`}\r\n style={{\r\n backgroundColor: s.color,\r\n width: width,\r\n }}\r\n onClick={(ev) => handleSliceClick.call(this, ev, s)}\r\n onFocus={(ev) => handleSliceFocus.call(this, ev, s)}\r\n onKeyDown={(ev) => handleSliceKeyDown.call(this, ev)}\r\n >\r\n <span class=\"sr-only\">{s.legend}</span>\r\n </div>\r\n );\r\n}\r\n\r\nexport function renderSimpleBar(this: any, chartType: ChartType) {\r\n // find largest number and get interval, numTicks, chartMaxVal for all.\r\n const largest = this.slicesDetails\r\n .map((s: SliceDetails) => s.amount)\r\n .reduce((a: number, b: number) => {\r\n return a > b ? a : b;\r\n });\r\n const labelWidth = parseInt(getComputedStyle(this.el).getPropertyValue(\"--labelWidth\"), 10);\r\n const chartPadding = 48; \r\n const componentWidth = this.el.getBoundingClientRect().width;\r\n const chartWidth = componentWidth - labelWidth - chartPadding;\r\n let numTicks = getMaxTicks(chartWidth);\r\n let interval = getInterval(largest, numTicks);\r\n // after the algorithm finds an interval, remove extra ticks so that the greater number is always between the last tick and the one before that\r\n const lastTickVal = numTicks * interval;\r\n const extraTicks = Math.floor((lastTickVal - largest) / interval);\r\n numTicks -= extraTicks;\r\n\r\n this.el.style.setProperty(\"--backgroundSize\", 100 / numTicks + \"%\");\r\n this.el.style.setProperty(\"--labelWidth\", this.labelWidth);\r\n\r\n if (chartType === \"bar7\" && !this.showBarLegend) {\r\n this.el.style.setProperty(\"--labelWidth\", \"0px\");\r\n }\r\n\r\n // we have to prep the data here rather than iterate directly in the return statement\r\n // because CSS grid needs a flat structure, and return functions must\r\n // have a single parent element\r\n const rows: HTMLElement[] = [];\r\n this.slicesDetails.forEach((s: SliceDetails) => {\r\n s.legend && rows.push(renderSimpleBarLegend(s.legend, this.showBarLegend, chartType));\r\n rows.push(renderSimpleBarItem.call(this, s, interval, numTicks, largest));\r\n });\r\n\r\n const ticks = [];\r\n for (let i = 1; i <= numTicks; i++) {\r\n const tickVal: number | string = abbrNumber(i * interval);\r\n ticks.push(\r\n <div class=\"tick\">\r\n <span>{tickVal}</span>\r\n </div>\r\n );\r\n }\r\n\r\n const showGrid = chartType === \"bar6\" && this.showGrid && this.el.getBoundingClientRect().width > 300;\r\n\r\n return (\r\n <div class=\"chart-wrapper simple-bar-wrapper\">\r\n <div class={`chart ${showValue(this.tempValueFormat)}`}>\r\n {showGrid && <div class=\"gridlines\"></div>}\r\n <div class=\"rows\">{rows}</div>\r\n </div>\r\n {showGrid && (\r\n <div class=\"x-axis\" aria-hidden=\"true\">\r\n <div class=\"zero\">\r\n <span>0</span>\r\n </div>\r\n {ticks}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nfunction renderSimpleBarLegend(legend: string, show: boolean, chartType: ChartType): HTMLLabelElement {\r\n // not sure how to collapse the left column to 0 width with CSS grid. text should still be available to SR.\r\n const hidden = chartType === \"bar7\" && !show ? \" hidden\" : \"\";\r\n return <label class={`label${hidden}`}>{legend}</label>;\r\n}\r\n\r\nfunction renderSimpleBarItem(\r\n this: any,\r\n s: SliceDetails,\r\n interval: number,\r\n ticks: number,\r\n largest: number\r\n): HTMLDivElement {\r\n const chartMaxVal = this.currentChartType === \"bar6\" ? interval * ticks : largest;\r\n const width = amountToPercent(s.amount, chartMaxVal, false);\r\n const cssWidth: string = width ? width + \"%\" : \"1px\";\r\n const amt = abbrNumber(s.amount);\r\n let displayValue = this.tempValueFormat === \"amount\" ? amt : \"\";\r\n if (this.currentChartType === \"bar6\" && this.tempValueFormat === \"percentage\") {\r\n displayValue = s.amount + \"%\";\r\n } else if (this.currentChartType === \"bar7\" && this.tempValueFormat === \"percentage\") {\r\n displayValue = amountToPercent(s.amount, this.total, true) + \"%\";\r\n }\r\n\r\n return (\r\n <div\r\n class={\"bar segment\"}\r\n style={{\r\n backgroundColor: s.color,\r\n width: cssWidth,\r\n }}\r\n onClick={(ev) => handleSliceClick.call(this, ev, s)}\r\n onFocus={(ev) => handleSliceFocus.call(this, ev, s)}\r\n onKeyDown={(ev) => handleSliceKeyDown.call(this, ev)}\r\n >\r\n <div class=\"value\">{displayValue}</div>\r\n </div>\r\n );\r\n}\r\n\r\nexport function renderLegend(this: any, chartType: ChartType) {\r\n // legend is hidden for bar1 and bar6 types regardless of showLegend value\r\n if (this.showLegend) {\r\n const hasCluster =\r\n !this.chartDetails.isBar &&\r\n this.slicesDetails.reduce(\r\n (hasCluster: boolean, cur: SliceDetails) => (hasCluster = cur.inSmallCluster ? true : hasCluster),\r\n false\r\n );\r\n return (\r\n <div class=\"legend-wrapper\">\r\n <div class={`legend ${chartType} ${this.mode === \"bar\" ? \"--top\" : \"--bottom\"}`} aria-hidden=\"true\">\r\n {this.total > 0\r\n ? this.slicesDetails.map((s: SliceDetails) => {\r\n // when both legend and amount are omitted, the legend is not shown for that particular option (it's been deactivated by the user)\r\n if (!!s.amount || !!s.legend) {\r\n return renderLegendItem({ key: s.legend!, color: s.color });\r\n }\r\n })\r\n : \"\"}\r\n </div>\r\n {hasCluster && renderHiddenValuesMessage()}\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport function renderLegendItem(legendItem: LegendItem) {\r\n return (\r\n <div class=\"legend-item\">\r\n <div class=\"legend-color\" style={{ backgroundColor: legendItem.color }}></div>\r\n <div class=\"legend-text\">{legendItem.key}</div>\r\n </div>\r\n );\r\n}\r\n\r\nexport function renderCompletionMessage(this: any) {\r\n if (this.completionMessage) {\r\n return <div class=\"completion-message\">{this.completionMessage}</div>;\r\n }\r\n}\r\n\r\nexport function renderHiddenValuesMessage() {\r\n return (\r\n <div class=\"hidden-values-warning\">\r\n {textHiddenMessage}\r\n <br />\r\n {seeDetailsMessage}\r\n </div>\r\n );\r\n}\r\n"],"version":3}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"file":"global-2c5c2727.js","mappings":";;AAGA;AACA;AACA;AACA,IAAI,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;EACvC,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE;CACzC;AAED;AACA;AACA,SAAS,eAAe,CAAC,EAAiB;EACxC,IAAI,EAAE,CAAC,GAAG,IAAI,KAAK,EAAE;IACnB,IAAI,KAAK,GAAU,IAAI,KAAK;IAC5B,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC5B,QAAQ,CAAC,aAAa,CAAC,MAAM;GAC9B;EACD;IACE,IAAI,KAAK,GAAU,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC/C,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC5B,QAAQ,CAAC,aAAa,CAAC,MAAM;GAC9B;AACH,CAAC;AAED;EACE,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC;EACtB,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;EAC5B,QAAQ,CAAC,aAAa,CAAC,MAAM;EAC7B,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAE,CAAC,SAAS,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAC1E,CAAC;AAED;AACA,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE;AAQrC;AACA;AACA;AACA;AACA,MAAM,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACvD,gBAAgB,CAAC,EAAE,GAAG,sBAAsB,CAAC;AAC7C,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK;AAC9C,SAAS,CAAC,EAAE,GAAG,YAAY,CAAC;AAC5B,SAAS,CAAC,YAAY,CAAC;AACvB,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;AACnC,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACpC,SAAS,CAAC,KAAK,CAAC,aAAa,GAAG;AAChC,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;AACtC,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;AACvC,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;AACtC,SAAS,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;AACvC,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;AACtC,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC;AACrC,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;AAC/B,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG;AACzB,SAAS,CAAC,KAAK,CAAC,QAAQ,GAAG;AAC3B,SAAS,CAAC,KAAK,CAAC,WAAW,GAAG,QAAQ,CAAC;AACvC,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC;AACrC,SAAS,CAAC,KAAK,CAAC,kBAAkB,GAAG;AACrC,SAAS,CAAC,KAAK,CAAC,eAAe,GAAG,SAAS,CAAC;AAC5C,SAAS,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;AAC9B,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;AAC1B,SAAS,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;AAC3B,SAAS,CAAC,KAAK,CAAC,SAAS,GAAG;AAC5B,SAAS,CAAC,KAAK,CAAC,UAAU,GAAG,WAAW,CAAC;AACzC,SAAS,CAAC,KAAK,CAAC,SAAS,GAAG;AAE5B,gBAAgB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AACxC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC;AACpC,IAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC","names":[],"sources":["./src/global/global.ts"],"sourcesContent":["import { setMode } from \"@stencil/core\";\r\nimport { version } from \"../../package.json\";\r\n\r\n// PRINT RIPPLE VERSION IN CONSOLE\r\n// test envs return 0 for plugin.length\r\n// do not print version number there as it causes issues\r\nif (window.navigator.plugins.length > 0) {\r\n console.log(\"Ripple component library\", version);\r\n}\r\n\r\n// USER-IS-TABBING CLASSES (FOR FOCUS INDICATORS)\r\n// Dispatching events to track whether user is navigating with keyboard or mouse\r\nfunction wmComponentKeys(ev: KeyboardEvent) {\r\n if (ev.key == \"Tab\") {\r\n var event: Event = new Event(\"wmUserIsTabbing\");\r\n window.dispatchEvent(event);\r\n document.querySelector(\"body\")!.classList.add(\"wmcl-user-is-tabbing\");\r\n }\r\n if (ev.key == \"ArrowLeft\" || ev.key == \"ArrowUp\" || ev.key == \"ArrowRight\" || ev.key == \"ArrowDown\") {\r\n var event: Event = new Event(\"wmUserIsKeying\");\r\n window.dispatchEvent(event);\r\n document.querySelector(\"body\")!.classList.add(\"wmcl-user-is-keying\");\r\n }\r\n}\r\n\r\nfunction wmComponentMouseDownOnce() {\r\n var event = new Event(\"wmUserIsNotTabbing\");\r\n window.dispatchEvent(event);\r\n document.querySelector(\"body\")!.classList.remove(\"wmcl-user-is-tabbing\");\r\n document.querySelector(\"body\")!.classList.remove(\"wmcl-user-is-keying\");\r\n}\r\n\r\nwindow.addEventListener(\"keydown\", wmComponentKeys);\r\nwindow.addEventListener(\"mousedown\", wmComponentMouseDownOnce);\r\n\r\n// MODES (FOR PRODUCT-SPECIFIC STYLING)\r\n//Checks for mode attribute explicitly set on the document. If \"mode\" is set on component, it will override the global mode. Falls back to default (Planning styles)\r\nsetMode((elm) => {\r\n return elm.getAttribute(\"mode\") || document.documentElement.getAttribute(\"mode\") || \"planning\";\r\n});\r\n\r\n// TOOLTIP\r\n// Add a tooltip element\r\n// This allows tooltips to be always at the highest stacking context (always on top)\r\n// Element is added withing a container to avoid performance impact\r\nconst tooltipContainer = document.createElement(\"div\");\r\ntooltipContainer.id = \"wm-tooltip-container\";\r\nconst tooltipEl = document.createElement(\"div\");\r\ntooltipEl.id = \"wm-tooltip\";\r\ntooltipEl.setAttribute(\"aria-hidden\", \"true\");\r\ntooltipEl.style.position = \"fixed\";\r\ntooltipEl.style.overflow = \"hidden\";\r\ntooltipEl.style.pointerEvents = \"none\";\r\ntooltipEl.style.lineHeight = \"normal\";\r\ntooltipEl.style.fontFamily = \"inherit\";\r\ntooltipEl.style.fontSize = \"0.875rem\";\r\ntooltipEl.style.textTransform = \"none\";\r\ntooltipEl.style.fontWeight = \"normal\";\r\ntooltipEl.style.background = \"black\";\r\ntooltipEl.style.color = \"#fff\";\r\ntooltipEl.style.zIndex = \"999999\";\r\ntooltipEl.style.maxWidth = \"var(--wmTooltipMaxWidth, 13.75rem)\";\r\ntooltipEl.style.marginRight = \"1.5rem\";\r\ntooltipEl.style.padding = \"0.375rem\";\r\ntooltipEl.style.transitionProperty = \"opacity\";\r\ntooltipEl.style.transitionDelay = \"opacity\";\r\ntooltipEl.style.opacity = \"0\";\r\ntooltipEl.style.top = \"0\";\r\ntooltipEl.style.left = \"0\";\r\ntooltipEl.style.transform = \"translateZ(0)\";\r\ntooltipEl.style.willChange = \"transform\";\r\ntooltipEl.style.transform = \"translate(var(--wmTooltipLeft), var(--wmTooltipTop))\";\r\n\r\ntooltipContainer.appendChild(tooltipEl);\r\nconst body = document.querySelector(\"body\");\r\nbody!.appendChild(tooltipContainer);\r\n"],"version":3}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"file":"http-service-3dc3b3e7.js","mappings":"MAAa,UAAU,GAAG,OAAO,GAAW;EAC1C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;EAClC,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;IAC/B,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;GAC9B;OAAM;IACL,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;GACtC;AACH,EAAE;MAEW,WAAW,GAAG,OAAO,GAAW,EAAE,OAAe;EAC5D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;IAChC,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,EAAE,cAAc,EAAE,iCAAiC,EAAE;IAC9D,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;GAC9B,CAAC,CAAC;EACH,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;IAC/B,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;GAC9B;OAAM;IACL,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;GACtC;AACH,EAAE;MAEW,aAAa,GAAG,OAAO,GAAW;EAC7C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;EACxD,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE;IAC/B,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;GAC9B;OAAM;IACL,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;GACtC;AACH,EAAE;MAEW,UAAU,GAAG,CAAC,GAAW,EAAE,IAAU,EAAE,UAAoB;EACtE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM;;IAEjC,MAAM,GAAG,GAAG,IAAI,cAAc,EAAE,CAAC;IAEjC,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IAEhE,GAAG,CAAC,gBAAgB,CAAC,kBAAkB,EAAE;MACvC,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,EAAE;QAChD,OAAO,CAAC,IAAI,CAAC,CAAC;OACf;WAAM,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,EAAE;QACvD,MAAM,EAAE,CAAC;OACV;KACF,CAAC,CAAC;IAEH,GAAG,CAAC,OAAO,GAAG,MAAM,MAAM,EAAE,CAAC;IAC7B,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3B,GAAG,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,wBAAwB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IAClF,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;GAChB,CAAC,CAAC;AACL;;;;","names":[],"sources":["./src/global/services/http-service.tsx"],"sourcesContent":["export const getRequest = async (url: string) => {\r\n const response = await fetch(url);\r\n if (!!response && !!response.ok) {\r\n return await response.json();\r\n } else {\r\n throw new Error(response.statusText);\r\n }\r\n};\r\n\r\nexport const postRequest = async (url: string, payload: Object) => {\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: { \"Content-Type\": \"application/json; charset=utf-8\" },\r\n body: JSON.stringify(payload),\r\n });\r\n if (!!response && !!response.ok) {\r\n return await response.json();\r\n } else {\r\n throw new Error(response.statusText);\r\n }\r\n};\r\n\r\nexport const deleteRequest = async (url: string) => {\r\n const response = await fetch(url, { method: \"DELETE\" });\r\n if (!!response && !!response.ok) {\r\n return await response.json();\r\n } else {\r\n throw new Error(response.statusText);\r\n }\r\n};\r\n\r\nexport const putRequest = (url: string, file: File, onProgress: Function) => {\r\n return new Promise((resolve, reject) => {\r\n // there's no way to track progress with the fetch API, so using XHR\r\n const req = new XMLHttpRequest();\r\n\r\n req.upload.addEventListener(\"progress\", (ev) => onProgress(ev));\r\n\r\n req.addEventListener(\"readystatechange\", function () {\r\n if (this.readyState === 4 && this.status === 200) {\r\n resolve(this);\r\n } else if (this.readyState === 4 && this.status !== 200) {\r\n reject();\r\n }\r\n });\r\n\r\n req.onerror = () => reject();\r\n req.open(\"PUT\", url, true);\r\n req.setRequestHeader(\"Content-Disposition\", `attachment;filename=\"${file.name}\"`);\r\n req.send(file);\r\n });\r\n};\r\n"],"version":3}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"file":"interfaces-2b97fab2.js","mappings":"AA6CA;SA0BgB,mBAAmB,CAAC,IAAY;EAC9C,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AACjC,CAAC;AAED,MAAM,SAAS,GAAc;EAC3B,KAAK,EAAE,MAAM;EACb,MAAM,EAAE,MAAM;EACd,MAAM,EAAE,MAAM;EACd,KAAK,EAAE,MAAM;EACb,MAAM,EAAE,MAAM;EACd,OAAO,EAAE,MAAM;EACf,MAAM,EAAE,MAAM;EACd,eAAe,EAAE,MAAM;EACvB,YAAY,EAAE,MAAM;EACpB,aAAa,EAAE,MAAM;EACrB,cAAc,EAAE,MAAM;EACtB,eAAe,EAAE,MAAM;EACvB,WAAW,EAAE,MAAM;EACnB,WAAW,EAAE,MAAM;EACnB,oBAAoB,EAAE,MAAM;EAC5B,WAAW,EAAE,MAAM;EACnB,mBAAmB,EAAE,MAAM;EAC3B,wBAAwB,EAAE,MAAM;EAChC,kBAAkB,EAAE,MAAM;EAC1B,gBAAgB,EAAE,MAAM;CACzB,CAAC;AAEK,MAAM,WAAW,GAAG,UAAU,CAAC;MAEzB,SAAS,GAAG,CAAC,GAAS;EACjC,OAAO,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,WAAW,CAAC;AAClG;;;;","names":[],"sources":["./src/global/interfaces.ts"],"sourcesContent":["export type Notification = {\r\n message: string;\r\n id: string;\r\n link: string;\r\n newWindow: boolean;\r\n};\r\n\r\n// Create label for icon-only buttons\r\nexport type label = string | undefined;\r\n\r\nexport type CssClassMap = { [className: string]: boolean };\r\n\r\ninterface IconLabels {\r\n [index: string]: string;\r\n}\r\n\r\nexport type Product = {\r\n description?: string;\r\n samlLinkUrl?: string;\r\n iconUrl: string;\r\n id: string;\r\n linkUrl: string;\r\n name: string;\r\n};\r\n\r\n// products retrieved from endpoint:\r\nexport type NavigatorPayload = {\r\n connection_name?: string;\r\n current_product_id: string;\r\n email: string;\r\n logout_url: string;\r\n products: Product[];\r\n};\r\n\r\nexport type validButtonTypes =\r\n | \"primary\"\r\n | \"secondary\"\r\n | \"textonly\"\r\n | \"icononly\"\r\n | \"navigational\"\r\n | \"selector\"\r\n | \"selector-primary\"\r\n | \"pairpositive\"\r\n | \"pairnegative\";\r\n\r\n//List of icon codes with more indicative descriptors to create labels for icon-only buttons\r\nexport const iconLabels: IconLabels = {\r\n f156: \"Close\",\r\n f3eb: \"Edit\",\r\n f739: \"Cancel\",\r\n f12c: \"Save\",\r\n f1c0: \"Delete\",\r\n f349: \"Search\",\r\n f207: \"Export info\",\r\n f1d9: \"Open dropdown\",\r\n f04d: \"Go back\",\r\n f054: \"Go forward\",\r\n f141: \"Left\",\r\n f142: \"Right\",\r\n f35e: \"Menu left\",\r\n f35d: \"Toggle menu down\",\r\n f30d: \"Backspace\",\r\n f645: \"Sort hierarchically\",\r\n f4bb: \"Sort alphabetically\",\r\n};\r\n\r\n// For backwards compatibility, the icon prop accepts the icon name minus mdi- prefix, e.g. \"icon\"\r\n// this function converts the name to the corresponding code or returns what it was passed\r\ninterface IconCodes {\r\n [index: string]: string;\r\n}\r\nexport function getIconCodeFromName(icon: string): string {\r\n return iconCodes[icon] || icon;\r\n}\r\n\r\nconst iconCodes: IconCodes = {\r\n close: \"f156\",\r\n pencil: \"f3eb\",\r\n cancel: \"f739\",\r\n check: \"f12c\",\r\n delete: \"f1c0\",\r\n magnify: \"f349\",\r\n export: \"f207\",\r\n \"dots-vertical\": \"f1d9\",\r\n \"arrow-left\": \"f04d\",\r\n \"arrow-right\": \"f054\",\r\n \"chevron-left\": \"f141\",\r\n \"chevron-right\": \"f142\",\r\n \"menu-left\": \"f35e\",\r\n \"menu-down\": \"f35d\",\r\n \"keyboard-backspace\": \"f30d\",\r\n \"file-tree\": \"f645\",\r\n \"sort-alphabetical\": \"f4bb\",\r\n \"checkbox-marked-circle\": \"f133\",\r\n \"account-settings\": \"f630\",\r\n \"backup-restore\": \"f06f\",\r\n};\r\n\r\nexport const defaultMode = \"planning\";\r\n\r\nexport const getWmMode = (ref?: any) => {\r\n return ref.getAttribute(\"mode\") || document.documentElement.getAttribute(\"mode\") || defaultMode;\r\n};\r\n\r\nexport type TooltipPlacement =\r\n | \"top\"\r\n | \"bottom\"\r\n | \"left\"\r\n | \"right\"\r\n | \"bottom-left\"\r\n | \"bottom-right\"\r\n | \"top-right\"\r\n | \"top-left\";\r\n\r\nexport type SliceElement = (SVGElement | HTMLElement);\r\n\r\nexport type SliceDetails = {\r\n amount: number;\r\n perc: number;\r\n legend: string | null;\r\n color: string;\r\n offset: number;\r\n id: string;\r\n title: string | null;\r\n text: string | null;\r\n buttonText: string | null;\r\n sliceRef: Element;\r\n inSmallCluster: boolean;\r\n coords?: {x: number, y: number};\r\n};\r\n\r\nexport type ChartDetails = {\r\n size: number;\r\n colors: Array<string>;\r\n thickness?: number;\r\n padding: number;\r\n category: \"doughnut\" | \"stackedBar\" | \"simpleBar\";\r\n};\r\n\r\nexport type ChartType =\r\n // progress monitor types\r\n | \"doughnut\"\r\n | \"bar\"\r\n // chart types\r\n | \"doughnut1\"\r\n | \"doughnut2\"\r\n | \"doughnut2plus\"\r\n | \"doughnut3\"\r\n | \"bar2\"\r\n | \"bar3\"\r\n | \"bar4\"\r\n | \"bar5\"\r\n | \"bar6\"\r\n | \"bar7\"\r\n // deprecated\r\n | \"doughnut0\"\r\n | \"bar1\";\r\n\r\nexport type LegendItem = { key: string; color: string };\r\n\r\nexport type UploadedFile = {\r\n name: string;\r\n id: string;\r\n type: string;\r\n lastUpdated: string; // in display format\r\n progress?: number;\r\n fileActions?: string;\r\n size?: string; // in display format\r\n};\r\n"],"version":3}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { i as intl } from './functions-bb1309d0.js';
|
|
2
|
-
|
|
3
|
-
const closeVerb = intl.formatMessage({
|
|
4
|
-
id: "global.closeVerb",
|
|
5
|
-
defaultMessage: "Close",
|
|
6
|
-
description: "For a button, to close a user interface element",
|
|
7
|
-
});
|
|
8
|
-
|
|
9
|
-
export { closeVerb as c };
|
|
10
|
-
|
|
11
|
-
//# sourceMappingURL=intl-4153b9ef.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"file":"intl-4153b9ef.js","mappings":";;MAEa,SAAS,GAAW,IAAI,CAAC,aAAa,CAAC;EAClD,EAAE,EAAE,kBAAkB;EACtB,cAAc,EAAE,OAAO;EACvB,WAAW,EAAE,iDAAiD;CAC/D;;;;","names":[],"sources":["./src/global/intl.ts"],"sourcesContent":["import { intl } from \"./functions\";\r\n\r\nexport const closeVerb: string = intl.formatMessage({\r\n id: \"global.closeVerb\",\r\n defaultMessage: \"Close\",\r\n description: \"For a button, to close a user interface element\",\r\n});\r\n"],"version":3}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["colors","salmon","cyan","forest","sleet","midnight","lavender","periwinkle","gray","allChartsDetails","doughnut","size","thickness","padding","category","doughnut0","doughnut1","doughnut2","doughnut2plus","doughnut3","bar","bar1","bar2","bar3","bar4","bar5","bar6","bar7","showValue","valueFormat","textHiddenMessage","intl","formatMessage","id","defaultMessage","description","seeDetailsMessage","abbrNumber","num","Math","round","amountToPercent","val","total","asInt","amountToDegree","toFixed","number","parseFloat","floor","polarToCartesian","half","radius","startAngle","endAngle","x","cos","PI","y","sin","undefined","x2","y2","x1","y1","getArc","largeArcFlag","chartSize","z","concat","scale","inMin","inMax","outMin","outMax","scaled","minSpacing","width","getMaxTicks","getInterval","largest","maxticks","minimum","magnitude","pow","log10","residual","interval","handleSliceKeyDown","ev","this","popoverEl","open","key","popoverBtn","querySelector","click","handleSliceClick","s","isTabbing","coords","clientX","clientY","openPopover","call","handleSliceFocus","getPosition","target","handleChartKeydown","preventDefault","focusPrevious","focusNext","exitChart","userIsNavigating","title","text","popoverTitle","popoverText","buttonText","sliceRef","window","setTimeout","_this","debouncedClosePopover_1","debounce","__awaiter","document","addEventListener","scrollableParent","findParentWithScrollbar","el","activeEl","checkForActiveElInShadow","activeElement","index","sliceEls","indexOf","length","focusSlice","componentWrapperEl","tabIndex","focusable","map","p","focus","getDetails","chartType","slicesDetails","acc","children","Array","from","reduce","slice","parseInt","getAttribute","forEach","c","i","amount","perc","colorIndex","notStartedColor","color","sliceDetails","legend","offset","uid","inSmallCluster","push","sortSlicesDetails","sortedSlicesDetails","__spreadArray","sort","a","b","idx","prev","next","prevPerc","nextPerc","isInSmallCluster","isSmall","prevIsSmall","nextIsSmall","lessThanOnePerc","getPathData","activeAngle","largeArcFlagOuter","largeArcFlagInner","chartDetails","innerRadius","outerRadius","isHybridDoughnut","outerSeparatorOffset","innerSeparatorOffset","outerCoords","innerCoords","moveTo","arc1","line","arc2","renderInstructionsText","chartInstructions","h","renderFilter","stdDeviation","result","operator","in2","in","renderDoughnut","outerSize","class","height","renderPath","transform","renderDoughnutText","fill","d","onClick","onFocus","onKeyDown","role","arcMiddle","_a","renderStackedBar","isHybridBar","drawAxis","tempValueFormat","renderBarText","renderStackedBarSegment","renderCompletionMessage","isLastSlice","style","backgroundColor","renderSimpleBar","labelWidth","getComputedStyle","getPropertyValue","chartPadding","componentWidth","getBoundingClientRect","chartWidth","numTicks","lastTickVal","extraTicks","setProperty","showBarLegend","rows","renderSimpleBarLegend","renderSimpleBarItem","ticks","tickVal","showGrid","show","hidden","chartMaxVal","currentChartType","cssWidth","amt","displayValue","renderLegend","showLegend","hasCluster","isBar","cur","mode","renderLegendItem","renderHiddenValuesMessage","legendItem","completionMessage"],"sources":["src/components/charts/chartFunctions.tsx"],"sourcesContent":["import { h } from \"@stencil/core\";\r\nimport { checkForActiveElInShadow, debounce, findParentWithScrollbar, getPosition, intl } from \"../../global/functions\";\r\nimport { LegendItem, ChartType, ChartDetails, SliceDetails, SliceElement } from \"../../global/interfaces\";\r\n\r\nconst colors = {\r\n salmon: \"#ff5f4e\",\r\n cyan: \"#19a1a9\",\r\n forest: \"#088000\",\r\n sleet: \"#7f97ad\",\r\n midnight: \"#2e1b46\",\r\n lavender: \"#8b86ca\",\r\n periwinkle: \"#575195\",\r\n gray: \"#6b6b6b\",\r\n};\r\n\r\nexport const allChartsDetails: { [Key in ChartType]: ChartDetails } = {\r\n // for progress monitor\r\n doughnut: {\r\n size: 155,\r\n colors: [colors.forest, colors.gray],\r\n thickness: 0.73,\r\n padding: 25,\r\n category: \"doughnut\",\r\n },\r\n // deprecated hybrid chart type, should use Progress Indicator's \"doughnut\" instead\r\n doughnut0: {\r\n size: 155,\r\n colors: [colors.forest, colors.gray],\r\n thickness: 0.73,\r\n padding: 25,\r\n category: \"doughnut\",\r\n },\r\n doughnut1: {\r\n size: 130,\r\n colors: [colors.lavender, colors.midnight, colors.gray],\r\n thickness: 0.5,\r\n padding: 90,\r\n category: \"doughnut\",\r\n },\r\n doughnut2: {\r\n size: 130,\r\n colors: [colors.cyan, colors.salmon, colors.gray],\r\n thickness: 0.5,\r\n padding: 90,\r\n category: \"doughnut\",\r\n },\r\n // an internal type only for use when doughnut 2 is populated with 4 slices\r\n // in this case, the first slice is colored purple\r\n doughnut2plus: {\r\n size: 130,\r\n colors: [colors.periwinkle, colors.cyan, colors.salmon, colors.gray],\r\n thickness: 0.5,\r\n padding: 90,\r\n category: \"doughnut\",\r\n },\r\n doughnut3: {\r\n size: 130,\r\n colors: [colors.lavender, colors.midnight, \"#0089e4\", colors.forest, \"#ea8500\", \"#d54f41\", \"#146ca9\"],\r\n thickness: 0.5,\r\n padding: 90,\r\n category: \"doughnut\",\r\n },\r\n // for progress monitor\r\n bar: {\r\n size: 350,\r\n colors: [colors.forest, colors.gray],\r\n padding: 0,\r\n category: \"stackedBar\",\r\n },\r\n // deprecated hybrid chart type, should use Progress Indicator's \"bar\" instead\r\n bar1: {\r\n size: 350,\r\n colors: [colors.forest, colors.gray],\r\n padding: 0,\r\n category: \"stackedBar\",\r\n },\r\n bar2: {\r\n size: 400,\r\n colors: [colors.gray, colors.periwinkle, colors.cyan, colors.salmon],\r\n padding: 0,\r\n category: \"stackedBar\",\r\n },\r\n bar3: {\r\n size: 300,\r\n colors: [\"#0d696e\", colors.cyan, \"#8e4129\", colors.salmon],\r\n padding: 0,\r\n category: \"stackedBar\",\r\n },\r\n bar4: {\r\n size: 400,\r\n colors: [colors.salmon, colors.cyan, colors.periwinkle],\r\n padding: 0,\r\n category: \"stackedBar\",\r\n },\r\n bar5: {\r\n size: 400,\r\n colors: [\r\n colors.gray, // this is only used if prop notStartedColor is set\r\n colors.lavender,\r\n colors.midnight,\r\n \"#0089e4\",\r\n colors.forest,\r\n \"#ea8500\",\r\n \"#d54f41\",\r\n \"#146ca9\",\r\n ],\r\n padding: 0,\r\n category: \"stackedBar\",\r\n },\r\n bar6: {\r\n size: 400,\r\n colors: [colors.lavender],\r\n padding: 0,\r\n category: \"simpleBar\",\r\n },\r\n bar7: {\r\n size: 400,\r\n colors: [colors.periwinkle, colors.cyan, colors.salmon, colors.gray],\r\n padding: 0,\r\n category: \"simpleBar\",\r\n },\r\n};\r\n\r\nfunction showValue(valueFormat: string): string {\r\n return valueFormat === \"percentage\" || valueFormat === \"amount\" ? \"show-values\" : \"\";\r\n}\r\n\r\nexport const textHiddenMessage = intl.formatMessage({\r\n id: \"chart.hiddenValues\",\r\n defaultMessage: \"Values are not shown when too close to each other.\",\r\n description: \"Text displayed when a chart has some values hidden\",\r\n});\r\n\r\nexport const seeDetailsMessage = intl.formatMessage({\r\n id: \"chart.clickToSeeDetails\",\r\n defaultMessage: \"Click or use arrow keys to see details.\",\r\n description: \"Text displayed, guiding user to interact to see more details.\",\r\n});\r\n\r\nfunction abbrNumber(num: number) {\r\n return num > 999 ? Math.round(num / 100) / 10 + \"K\" : num;\r\n}\r\n\r\nexport function amountToPercent(val: number, total: number, asInt: boolean) {\r\n return asInt ? Math.round((val * 100) / total) : Math.round((val * 10000) / total) / 100; // with 2 decimals\r\n}\r\n\r\nexport function amountToDegree(val: number, total: number) {\r\n // In a circle of {total}, determine degrees of slice {val}\r\n return (val * 360) / total;\r\n}\r\n\r\nexport function toFixed(number: number) {\r\n return parseFloat((Math.floor(number * 100) / 100).toFixed(2));\r\n}\r\n\r\nexport function polarToCartesian(half: number, radius: number, startAngle: number, endAngle?: number) {\r\n var x = toFixed(half + half * radius * Math.cos((Math.PI * startAngle) / 180));\r\n var y = toFixed(half + half * radius * Math.sin((Math.PI * startAngle) / 180));\r\n if (endAngle !== undefined) {\r\n // if a 2nd angle value was passed, return 2 pairs of coords\r\n var x2 = toFixed(half + half * radius * Math.cos((Math.PI * endAngle) / 180));\r\n var y2 = toFixed(half + half * radius * Math.sin((Math.PI * endAngle) / 180));\r\n return { x1: x, y1: y, x2, y2 };\r\n }\r\n return { x, y };\r\n}\r\n\r\nfunction getArc(radius: number, largeArcFlag: string, x: number, y: number, chartSize: number) {\r\n var z = toFixed((chartSize / 2) * radius);\r\n return `A ${z}, ${z} 0 ${largeArcFlag} ${toFixed(x)}, ${toFixed(y)}`;\r\n}\r\n\r\nfunction scale(val: number, inMin: number, inMax: number, outMin: number, outMax: number) {\r\n let scaled = ((val - inMin) * (outMax - outMin)) / (inMax - inMin) + outMin;\r\n // clip the values so that whatever is passed in the output is never smaller than outMin or greater than outMax\r\n return scaled < outMin ? outMin : scaled > outMax ? outMax : scaled;\r\n}\r\n\r\nfunction minSpacing(width: number) {\r\n // minimum spacing between 2 ticks, in px\r\n return scale(width, 300, 900, 70, 150);\r\n}\r\n\r\nfunction getMaxTicks(width: number) {\r\n return Math.round(width / minSpacing(width));\r\n}\r\n\r\nfunction getInterval(largest: number, maxticks: number) {\r\n const minimum = largest / maxticks;\r\n const magnitude = 10 ** Math.floor(Math.log10(minimum));\r\n const residual = minimum / magnitude;\r\n let interval;\r\n if (residual > 5) {\r\n interval = 10 * magnitude;\r\n } else if (residual > 3) {\r\n interval = 5 * magnitude;\r\n } else if (residual > 2) {\r\n interval = 3 * magnitude;\r\n } else if (residual > 1.5) {\r\n interval = 2 * magnitude;\r\n } else if (residual > 1) {\r\n interval = 1.5 * magnitude;\r\n } else {\r\n interval = magnitude;\r\n }\r\n return interval;\r\n}\r\n\r\nfunction handleSliceKeyDown(this: any, ev: KeyboardEvent) {\r\n if (this.popoverEl && this.popoverEl.open && ev.key === \"Enter\") {\r\n const popoverBtn = this.popoverEl.querySelector(\"button\");\r\n popoverBtn && popoverBtn.click();\r\n }\r\n}\r\n\r\nexport function handleSliceClick(this: any, ev: MouseEvent, s: SliceDetails) {\r\n if (this.popoverEl && !this.isTabbing) {\r\n s.coords = { x: ev.clientX, y: ev.clientY };\r\n openPopover.call(this, s);\r\n }\r\n}\r\n\r\nfunction handleSliceFocus(this: any, ev: FocusEvent, s: SliceDetails) {\r\n if (this.popoverEl && this.isTabbing) {\r\n s.coords = getPosition(ev.target as HTMLElement);\r\n openPopover.call(this, s);\r\n }\r\n}\r\n\r\nexport function handleChartKeydown(this: any, ev: KeyboardEvent) {\r\n switch (ev.key) {\r\n // arrow up / left\r\n case \"ArrowUp\":\r\n case \"ArrowLeft\":\r\n ev.preventDefault();\r\n this.isTabbing = true; // shd already be true. just in case user clicked on chart then pressed an arrow key\r\n focusPrevious.call(this);\r\n break;\r\n // arrow right / down\r\n case \"ArrowRight\":\r\n case \"ArrowDown\":\r\n ev.preventDefault();\r\n this.isTabbing = true; // shd already be true. just in case user clicked on chart then pressed an arrow key\r\n focusNext.call(this);\r\n break;\r\n // tab\r\n case \"Tab\":\r\n exitChart.call(this);\r\n break;\r\n case \"Escape\":\r\n this.popoverEl!.open = false;\r\n this.userIsNavigating = false;\r\n break;\r\n }\r\n}\r\n\r\nexport function openPopover(this: any, s: SliceDetails) {\r\n if (!!this.popoverEl && !!s.title && !!s.text) {\r\n this.popoverEl.popoverTitle = s.title;\r\n this.popoverEl.popoverText = s.text;\r\n this.popoverEl.buttonText = s.buttonText;\r\n this.popoverEl.coords = s.coords;\r\n this.popoverEl.sliceRef = s.sliceRef;\r\n window.setTimeout(() => {\r\n if (this.popoverEl) {\r\n this.popoverEl.open = true;\r\n }\r\n }, 30);\r\n\r\n const debouncedClosePopover = debounce(async () => {\r\n this.popoverEl!.open = false;\r\n }, 10);\r\n\r\n // set up event listeners for scrolling\r\n // to close popover on page scroll\r\n document.addEventListener(\"scroll\", () => {\r\n debouncedClosePopover();\r\n });\r\n\r\n // ... and on parent scroll\r\n const scrollableParent = findParentWithScrollbar(this.el as HTMLElement);\r\n if (!!scrollableParent) {\r\n scrollableParent.addEventListener(\"scroll\", () => {\r\n debouncedClosePopover();\r\n });\r\n }\r\n }\r\n}\r\n\r\nfunction focusNext(this: any) {\r\n const activeEl = checkForActiveElInShadow(document.activeElement as HTMLElement);\r\n const index =\r\n // if the active el is not in the array the first element gets focused\r\n (this.sliceEls!.indexOf(activeEl as HTMLElement) + 1) % this.sliceEls!.length;\r\n focusSlice.call(this, index);\r\n}\r\n\r\nfunction focusPrevious(this: any) {\r\n if (this.sliceEls) {\r\n const activeEl = checkForActiveElInShadow(document.activeElement as HTMLElement);\r\n let index = this.sliceEls.indexOf(activeEl as SliceElement);\r\n\r\n if (index === -1) {\r\n // not in the array : focus the first slice\r\n index = 0;\r\n } else if (index === 0) {\r\n // first slice : focus the last slice\r\n index = this.sliceEls.length - 1;\r\n } else {\r\n // anything else: focus previous\r\n index -= 1;\r\n }\r\n focusSlice.call(this, index);\r\n }\r\n}\r\n\r\nfunction focusSlice(this: any, index: number) {\r\n if (this.sliceEls && this.el) {\r\n this.userIsNavigating = true;\r\n if (this.popoverEl) {\r\n this.popoverEl.open = false;\r\n }\r\n // set tabindex of the wrapper to -1 while slices are being focused, to allow for shft-tabbing out of the component directly\r\n this.componentWrapperEl.tabIndex = -1;\r\n // @ts-ignore\r\n this.el.focusable = false; // for Edge\r\n this.sliceEls.map((p: SliceElement) => {\r\n p.tabIndex = -1;\r\n // @ts-ignore\r\n p.focusable = false; // for Edge\r\n });\r\n this.sliceEls[index].tabIndex = 0;\r\n // @ts-ignore\r\n this.sliceEls[index].focusable = true; // for Edge\r\n this.sliceEls[index].focus();\r\n window.setTimeout(() => {\r\n if (this.popoverEl) {\r\n this.popoverEl.open = true;\r\n }\r\n }, 10);\r\n }\r\n}\r\n\r\nexport function exitChart(this: any) {\r\n this.sliceEls &&\r\n this.sliceEls.map((p: SliceElement) => {\r\n p.tabIndex = -1;\r\n // @ts-ignore\r\n p.focusable = false; // for Edge\r\n });\r\n this.userIsNavigating = false;\r\n // delay so that we can tab out of component before chart becomes focusable again\r\n // and in case user was still pressing an arrow key when they pressed tab\r\n window.setTimeout(() => {\r\n this.componentWrapperEl.tabIndex = 0;\r\n // @ts-ignore\r\n this.el.focusable = true; // for Edge\r\n if (this.popoverEl) {\r\n this.popoverEl.open = false;\r\n }\r\n }, 100);\r\n}\r\n\r\nexport async function getDetails(this: any, chartType: ChartType) {\r\n this.slicesDetails = [];\r\n let acc = 0;\r\n const children = Array.from(this.el.children) as Array<HTMLWmChartSliceElement>;\r\n\r\n this.total = children.reduce(\r\n (total: number, slice: SliceElement) => (total += parseInt(slice.getAttribute(\"amount\") || \"0\")),\r\n 0\r\n );\r\n\r\n children.forEach((c: Element, i: number) => {\r\n const amount = parseInt(c.getAttribute(\"amount\") || \"0\");\r\n const perc = amountToPercent(amount, this.total, true);\r\n\r\n let colorIndex = i;\r\n\r\n // for bar5, first color should be skipped unless notStartedColor is set to true\r\n if (chartType === \"bar5\") {\r\n colorIndex = this.notStartedColor ? i : i + 1;\r\n }\r\n\r\n // bars in bar6 are all the same color\r\n if (chartType === \"bar6\") {\r\n colorIndex = 0;\r\n }\r\n\r\n const color = allChartsDetails[chartType].colors[colorIndex];\r\n\r\n const sliceDetails: SliceDetails = {\r\n amount: amount,\r\n perc: perc,\r\n legend: c.getAttribute(\"legend\"),\r\n color: color || colors.gray,\r\n offset: acc,\r\n id: `${this.uid}-${i + 1}`,\r\n title: c.getAttribute(\"popover-title\"),\r\n text: c.getAttribute(\"popover-text\"),\r\n buttonText: c.getAttribute(\"popover-button-text\"),\r\n sliceRef: c,\r\n inSmallCluster: false,\r\n };\r\n acc += amount;\r\n this.slicesDetails.push(sliceDetails);\r\n });\r\n}\r\n\r\nfunction sortSlicesDetails(slicesDetails: SliceDetails[], total: number): SliceDetails[] {\r\n // sort slices by decreasing amount\r\n let sortedSlicesDetails = [...slicesDetails].sort((a: SliceDetails, b: SliceDetails) =>\r\n a.amount === b.amount ? 0 : a.amount > b.amount ? -1 : 1\r\n );\r\n\r\n let acc = 0;\r\n\r\n sortedSlicesDetails.forEach((s: SliceDetails, idx: number) => {\r\n const prev = sortedSlicesDetails[idx === 0 ? sortedSlicesDetails.length - 1 : idx - 1];\r\n const next = sortedSlicesDetails[idx === sortedSlicesDetails.length - 1 ? 0 : idx + 1];\r\n const prevPerc = amountToPercent(prev.amount, total, true);\r\n const nextPerc = amountToPercent(next.amount, total, true);\r\n\r\n s.offset = acc;\r\n acc += s.amount;\r\n s.inSmallCluster = isInSmallCluster(prevPerc, s.perc, s.amount, nextPerc);\r\n });\r\n return sortedSlicesDetails;\r\n}\r\n\r\nfunction isInSmallCluster(prevPerc: number, perc: number, amount: number, nextPerc: number): boolean {\r\n // determine whether the slice is in a cluster of small values\r\n // to avoid percentage text overlap for small values\r\n const isSmall = perc < 4;\r\n const prevIsSmall = prevPerc < 5;\r\n const nextIsSmall = nextPerc < 5;\r\n let inSmallCluster = isSmall && (prevIsSmall || nextIsSmall);\r\n\r\n // because <1% slice percentage text has an additional character\r\n // the inSmallCluster threshold needs to be widened for that slice only\r\n const lessThanOnePerc = perc === 0 && amount > 0;\r\n if (lessThanOnePerc && (nextPerc < 8 || prevPerc < 8)) {\r\n inSmallCluster = true;\r\n }\r\n\r\n return inSmallCluster;\r\n}\r\n\r\nfunction getPathData(this: any, amount: number, offset: number, chartType: ChartType) {\r\n const startAngle = amountToDegree(offset, this.total) - 90; // start at noon, not at 3 o'clock\r\n const activeAngle = (amount / this.total) * 360;\r\n let endAngle = startAngle + activeAngle;\r\n const largeArcFlagOuter = activeAngle > 180 ? \"1 1\" : \"0 1\";\r\n const largeArcFlagInner = activeAngle > 180 ? \"1 0\" : \"0 0\";\r\n const half = this.chartDetails.size / 2;\r\n const innerRadius = this.chartDetails.thickness!;\r\n const outerRadius = 1;\r\n\r\n const isHybridDoughnut = chartType === \"doughnut0\" || chartType === \"doughnut\";\r\n const outerSeparatorOffset = 1.5;\r\n const innerSeparatorOffset = isHybridDoughnut ? 2.25 : 3;\r\n\r\n if (activeAngle === 360) {\r\n // fix to avoid bad svg shape when the path goes all around (100%)\r\n endAngle -= 0.01;\r\n }\r\n\r\n const outerCoords = polarToCartesian(\r\n half,\r\n outerRadius,\r\n startAngle + outerSeparatorOffset, // Addition for slice separator\r\n endAngle\r\n );\r\n const innerCoords = polarToCartesian(\r\n half,\r\n innerRadius,\r\n startAngle + innerSeparatorOffset, // Addition for slice separator\r\n endAngle\r\n );\r\n\r\n const moveTo = `M ${outerCoords.x1}, ${outerCoords.y1} `;\r\n const arc1 = getArc(outerRadius, largeArcFlagOuter, outerCoords.x2!, outerCoords.y2!, this.chartDetails.size);\r\n const line = ` L ${innerCoords.x2}, ${innerCoords.y2} `;\r\n const arc2 = getArc(innerRadius, largeArcFlagInner, innerCoords.x1!, innerCoords.y1!, this.chartDetails.size);\r\n\r\n return moveTo + arc1 + line + arc2 + \" z\";\r\n}\r\n\r\nexport function renderInstructionsText() {\r\n const chartInstructions = intl.formatMessage({\r\n id: \"chart.instructions\",\r\n defaultMessage: \"Use arrow keys to browse elements, press Tab to exit.\",\r\n description: \"For screen readers only, instructions on how to interact with the chart component\",\r\n });\r\n\r\n return <div id=\"chart-instructions\">{chartInstructions}</div>;\r\n}\r\n\r\nfunction renderFilter() {\r\n return (\r\n <defs>\r\n <filter id=\"wmHoverDropShadow\">\r\n <feGaussianBlur stdDeviation=\"3\"></feGaussianBlur>\r\n <feOffset result=\"offsetblur\"></feOffset>\r\n <feFlood flood-color=\"#333\"></feFlood>\r\n <feComposite operator=\"in\" in2=\"offsetblur\"></feComposite>\r\n <feMerge>\r\n <feMergeNode></feMergeNode>\r\n <feMergeNode in=\"SourceGraphic\"></feMergeNode>\r\n </feMerge>\r\n </filter>\r\n </defs>\r\n );\r\n}\r\n\r\nexport function renderDoughnut(this: any, chartType: ChartType) {\r\n const outerSize = this.chartDetails.size + this.chartDetails.padding;\r\n const isHybridDoughnut = chartType === \"doughnut0\" || chartType === \"doughnut\";\r\n // no sorting in progress indicators\r\n let slicesDetails = isHybridDoughnut ? this.slicesDetails : sortSlicesDetails(this.slicesDetails, this.total);\r\n\r\n return (\r\n <div class=\"chart-wrapper doughnut-wrapper\">\r\n <svg width={outerSize + \"px\"} height={outerSize + \"px\"} id={`graphic-${this.uid}`} class=\"doughnut-svg\">\r\n {renderFilter()}\r\n {slicesDetails.map((s: SliceDetails) => renderPath.call(this, s, chartType))}\r\n {isHybridDoughnut ? (\r\n <text\r\n class=\"value\"\r\n x=\"50%\"\r\n y=\"50%\"\r\n font-size=\"1.5rem\"\r\n font-weight=\"500\"\r\n text-anchor=\"middle\"\r\n dominant-baseline=\"middle\"\r\n >\r\n {amountToPercent(slicesDetails[0].amount, this.total, true) + \"%\"}\r\n </text>\r\n ) : (\r\n <g\r\n transform={`translate(${this.chartDetails.padding / 2}, ${this.chartDetails.padding / 2})`}\r\n text-anchor=\"middle\"\r\n dominant-baseline=\"middle\"\r\n >\r\n {slicesDetails.map((s: SliceDetails) =>\r\n s.amount > 0 && !s.inSmallCluster ? renderDoughnutText.call(this, s) : \"\"\r\n )}\r\n </g>\r\n )}\r\n </svg>\r\n </div>\r\n );\r\n}\r\n\r\nfunction renderPath(this: any, s: SliceDetails, chartType: ChartType) {\r\n return (\r\n <g transform={`translate(${this.chartDetails.padding / 2}, ${this.chartDetails.padding / 2})`}>\r\n <path\r\n id={s.id}\r\n class=\"segment doughnut-segment\"\r\n fill={s.amount ? s.color : \"transparent\"}\r\n d={getPathData.call(this, s.amount, s.offset, chartType)}\r\n onClick={(ev) => handleSliceClick.call(this, ev, s)}\r\n onFocus={(ev) => handleSliceFocus.call(this, ev, s)}\r\n onKeyDown={(ev) => handleSliceKeyDown.call(this, ev)}\r\n role=\"img\"\r\n aria-label={s.legend}\r\n ></path>\r\n </g>\r\n );\r\n}\r\n\r\nfunction renderDoughnutText(this: any, s: SliceDetails) {\r\n const arcMiddle = amountToDegree(s.offset + s.amount / 2, this.total);\r\n let { x, y } = polarToCartesian(this.chartDetails.size / 2, 1.4, arcMiddle - 90);\r\n return (\r\n <text class=\"value\" x={x + \"px\"} y={y + \"px\"}>\r\n {`${s.perc > 0 ? s.perc : \"<1\"}%`}\r\n </text>\r\n );\r\n}\r\n\r\nexport function renderStackedBar(this: any, chartType: ChartType) {\r\n const isHybridBar = chartType === \"bar1\" || chartType === \"bar\";\r\n return (\r\n <div class=\"chart-wrapper bar-wrapper\">\r\n {isHybridBar ? (\r\n <div class=\"single-perc\">{amountToPercent(this.slicesDetails[0].amount, this.total, true) + \"%\"}</div>\r\n ) : (\r\n \"\"\r\n )}\r\n {this.chartType === \"bar3\" && this.drawAxis()}\r\n <div class={`inner-stacked-bar-wrapper ${showValue(this.tempValueFormat)}`}>\r\n {!isHybridBar ? (\r\n <div class=\"values\">\r\n {this.slicesDetails.map((s: SliceDetails, idx: number) => this.renderBarText(s, idx))}\r\n </div>\r\n ) : (\r\n \"\"\r\n )}\r\n <div class=\"stacked-bar-segments-wrapper\">\r\n {this.slicesDetails.map((s: SliceDetails, idx: number) => renderStackedBarSegment.call(this, s, idx))}\r\n </div>\r\n {isHybridBar ? renderCompletionMessage.call(this) : \"\"}\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nfunction renderStackedBarSegment(this: any, s: SliceDetails, idx: number) {\r\n const isLastSlice = idx !== this.slicesDetails.length - 1;\r\n const width = `calc(${amountToPercent(s.amount, this.total, false)}%${isLastSlice ? \" - 2px\" : \"\"})`;\r\n\r\n return (\r\n <div\r\n class={`segment stacked-bar-segment ${amountToPercent(s.amount, this.total, false) === 0 ? \"zero\" : \"\"}`}\r\n style={{\r\n backgroundColor: s.color,\r\n width: width,\r\n }}\r\n onClick={(ev) => handleSliceClick.call(this, ev, s)}\r\n onFocus={(ev) => handleSliceFocus.call(this, ev, s)}\r\n onKeyDown={(ev) => handleSliceKeyDown.call(this, ev)}\r\n >\r\n <span class=\"sr-only\">{s.legend}</span>\r\n </div>\r\n );\r\n}\r\n\r\nexport function renderSimpleBar(this: any, chartType: ChartType) {\r\n // find largest number and get interval, numTicks, chartMaxVal for all.\r\n const largest = this.slicesDetails\r\n .map((s: SliceDetails) => s.amount)\r\n .reduce((a: number, b: number) => {\r\n return a > b ? a : b;\r\n });\r\n const labelWidth = parseInt(getComputedStyle(this.el).getPropertyValue(\"--labelWidth\"), 10);\r\n const chartPadding = 48; \r\n const componentWidth = this.el.getBoundingClientRect().width;\r\n const chartWidth = componentWidth - labelWidth - chartPadding;\r\n let numTicks = getMaxTicks(chartWidth);\r\n let interval = getInterval(largest, numTicks);\r\n // after the algorithm finds an interval, remove extra ticks so that the greater number is always between the last tick and the one before that\r\n const lastTickVal = numTicks * interval;\r\n const extraTicks = Math.floor((lastTickVal - largest) / interval);\r\n numTicks -= extraTicks;\r\n\r\n this.el.style.setProperty(\"--backgroundSize\", 100 / numTicks + \"%\");\r\n this.el.style.setProperty(\"--labelWidth\", this.labelWidth);\r\n\r\n if (chartType === \"bar7\" && !this.showBarLegend) {\r\n this.el.style.setProperty(\"--labelWidth\", \"0px\");\r\n }\r\n\r\n // we have to prep the data here rather than iterate directly in the return statement\r\n // because CSS grid needs a flat structure, and return functions must\r\n // have a single parent element\r\n const rows: HTMLElement[] = [];\r\n this.slicesDetails.forEach((s: SliceDetails) => {\r\n s.legend && rows.push(renderSimpleBarLegend(s.legend, this.showBarLegend, chartType));\r\n rows.push(renderSimpleBarItem.call(this, s, interval, numTicks, largest));\r\n });\r\n\r\n const ticks = [];\r\n for (let i = 1; i <= numTicks; i++) {\r\n const tickVal: number | string = abbrNumber(i * interval);\r\n ticks.push(\r\n <div class=\"tick\">\r\n <span>{tickVal}</span>\r\n </div>\r\n );\r\n }\r\n\r\n const showGrid = chartType === \"bar6\" && this.showGrid && this.el.getBoundingClientRect().width > 300;\r\n\r\n return (\r\n <div class=\"chart-wrapper simple-bar-wrapper\">\r\n <div class={`chart ${showValue(this.tempValueFormat)}`}>\r\n {showGrid && <div class=\"gridlines\"></div>}\r\n <div class=\"rows\">{rows}</div>\r\n </div>\r\n {showGrid && (\r\n <div class=\"x-axis\" aria-hidden=\"true\">\r\n <div class=\"zero\">\r\n <span>0</span>\r\n </div>\r\n {ticks}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nfunction renderSimpleBarLegend(legend: string, show: boolean, chartType: ChartType): HTMLLabelElement {\r\n // not sure how to collapse the left column to 0 width with CSS grid. text should still be available to SR.\r\n const hidden = chartType === \"bar7\" && !show ? \" hidden\" : \"\";\r\n return <label class={`label${hidden}`}>{legend}</label>;\r\n}\r\n\r\nfunction renderSimpleBarItem(\r\n this: any,\r\n s: SliceDetails,\r\n interval: number,\r\n ticks: number,\r\n largest: number\r\n): HTMLDivElement {\r\n const chartMaxVal = this.currentChartType === \"bar6\" ? interval * ticks : largest;\r\n const width = amountToPercent(s.amount, chartMaxVal, false);\r\n const cssWidth: string = width ? width + \"%\" : \"1px\";\r\n const amt = abbrNumber(s.amount);\r\n let displayValue = this.tempValueFormat === \"amount\" ? amt : \"\";\r\n if (this.currentChartType === \"bar6\" && this.tempValueFormat === \"percentage\") {\r\n displayValue = s.amount + \"%\";\r\n } else if (this.currentChartType === \"bar7\" && this.tempValueFormat === \"percentage\") {\r\n displayValue = amountToPercent(s.amount, this.total, true) + \"%\";\r\n }\r\n\r\n return (\r\n <div\r\n class={\"bar segment\"}\r\n style={{\r\n backgroundColor: s.color,\r\n width: cssWidth,\r\n }}\r\n onClick={(ev) => handleSliceClick.call(this, ev, s)}\r\n onFocus={(ev) => handleSliceFocus.call(this, ev, s)}\r\n onKeyDown={(ev) => handleSliceKeyDown.call(this, ev)}\r\n >\r\n <div class=\"value\">{displayValue}</div>\r\n </div>\r\n );\r\n}\r\n\r\nexport function renderLegend(this: any, chartType: ChartType) {\r\n // legend is hidden for bar1 and bar6 types regardless of showLegend value\r\n if (this.showLegend) {\r\n const hasCluster =\r\n !this.chartDetails.isBar &&\r\n this.slicesDetails.reduce(\r\n (hasCluster: boolean, cur: SliceDetails) => (hasCluster = cur.inSmallCluster ? true : hasCluster),\r\n false\r\n );\r\n return (\r\n <div class=\"legend-wrapper\">\r\n <div class={`legend ${chartType} ${this.mode === \"bar\" ? \"--top\" : \"--bottom\"}`} aria-hidden=\"true\">\r\n {this.total > 0\r\n ? this.slicesDetails.map((s: SliceDetails) => {\r\n // when both legend and amount are omitted, the legend is not shown for that particular option (it's been deactivated by the user)\r\n if (!!s.amount || !!s.legend) {\r\n return renderLegendItem({ key: s.legend!, color: s.color });\r\n }\r\n })\r\n : \"\"}\r\n </div>\r\n {hasCluster && renderHiddenValuesMessage()}\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport function renderLegendItem(legendItem: LegendItem) {\r\n return (\r\n <div class=\"legend-item\">\r\n <div class=\"legend-color\" style={{ backgroundColor: legendItem.color }}></div>\r\n <div class=\"legend-text\">{legendItem.key}</div>\r\n </div>\r\n );\r\n}\r\n\r\nexport function renderCompletionMessage(this: any) {\r\n if (this.completionMessage) {\r\n return <div class=\"completion-message\">{this.completionMessage}</div>;\r\n }\r\n}\r\n\r\nexport function renderHiddenValuesMessage() {\r\n return (\r\n <div class=\"hidden-values-warning\">\r\n {textHiddenMessage}\r\n <br />\r\n {seeDetailsMessage}\r\n </div>\r\n );\r\n}\r\n"],"mappings":"42DAIA,IAAMA,OAAS,CACbC,OAAQ,UACRC,KAAM,UACNC,OAAQ,UACRC,MAAO,UACPC,SAAU,UACVC,SAAU,UACVC,WAAY,UACZC,KAAM,W,IAGKC,iBAAyD,CAEpEC,SAAU,CACRC,KAAM,IACNX,OAAQ,CAACA,OAAOG,OAAQH,OAAOQ,MAC/BI,UAAW,IACXC,QAAS,GACTC,SAAU,YAGZC,UAAW,CACTJ,KAAM,IACNX,OAAQ,CAACA,OAAOG,OAAQH,OAAOQ,MAC/BI,UAAW,IACXC,QAAS,GACTC,SAAU,YAEZE,UAAW,CACTL,KAAM,IACNX,OAAQ,CAACA,OAAOM,SAAUN,OAAOK,SAAUL,OAAOQ,MAClDI,UAAW,GACXC,QAAS,GACTC,SAAU,YAEZG,UAAW,CACTN,KAAM,IACNX,OAAQ,CAACA,OAAOE,KAAMF,OAAOC,OAAQD,OAAOQ,MAC5CI,UAAW,GACXC,QAAS,GACTC,SAAU,YAIZI,cAAe,CACbP,KAAM,IACNX,OAAQ,CAACA,OAAOO,WAAYP,OAAOE,KAAMF,OAAOC,OAAQD,OAAOQ,MAC/DI,UAAW,GACXC,QAAS,GACTC,SAAU,YAEZK,UAAW,CACTR,KAAM,IACNX,OAAQ,CAACA,OAAOM,SAAUN,OAAOK,SAAU,UAAWL,OAAOG,OAAQ,UAAW,UAAW,WAC3FS,UAAW,GACXC,QAAS,GACTC,SAAU,YAGZM,IAAK,CACHT,KAAM,IACNX,OAAQ,CAACA,OAAOG,OAAQH,OAAOQ,MAC/BK,QAAS,EACTC,SAAU,cAGZO,KAAM,CACJV,KAAM,IACNX,OAAQ,CAACA,OAAOG,OAAQH,OAAOQ,MAC/BK,QAAS,EACTC,SAAU,cAEZQ,KAAM,CACJX,KAAM,IACNX,OAAQ,CAACA,OAAOQ,KAAMR,OAAOO,WAAYP,OAAOE,KAAMF,OAAOC,QAC7DY,QAAS,EACTC,SAAU,cAEZS,KAAM,CACJZ,KAAM,IACNX,OAAQ,CAAC,UAAWA,OAAOE,KAAM,UAAWF,OAAOC,QACnDY,QAAS,EACTC,SAAU,cAEZU,KAAM,CACJb,KAAM,IACNX,OAAQ,CAACA,OAAOC,OAAQD,OAAOE,KAAMF,OAAOO,YAC5CM,QAAS,EACTC,SAAU,cAEZW,KAAM,CACJd,KAAM,IACNX,OAAQ,CACNA,OAAOQ,KACPR,OAAOM,SACPN,OAAOK,SACP,UACAL,OAAOG,OACP,UACA,UACA,WAEFU,QAAS,EACTC,SAAU,cAEZY,KAAM,CACJf,KAAM,IACNX,OAAQ,CAACA,OAAOM,UAChBO,QAAS,EACTC,SAAU,aAEZa,KAAM,CACJhB,KAAM,IACNX,OAAQ,CAACA,OAAOO,WAAYP,OAAOE,KAAMF,OAAOC,OAAQD,OAAOQ,MAC/DK,QAAS,EACTC,SAAU,cAId,SAASc,UAAUC,GACjB,OAAOA,IAAgB,cAAgBA,IAAgB,SAAW,cAAgB,EACpF,CAEO,IAAMC,kBAAoBC,KAAKC,cAAc,CAClDC,GAAI,qBACJC,eAAgB,qDAChBC,YAAa,uDAGR,IAAMC,kBAAoBL,KAAKC,cAAc,CAClDC,GAAI,0BACJC,eAAgB,0CAChBC,YAAa,kEAGf,SAASE,WAAWC,GAClB,OAAOA,EAAM,IAAMC,KAAKC,MAAMF,EAAM,KAAO,GAAK,IAAMA,CACxD,C,SAEgBG,gBAAgBC,EAAaC,EAAeC,GAC1D,OAAOA,EAAQL,KAAKC,MAAOE,EAAM,IAAOC,GAASJ,KAAKC,MAAOE,EAAM,IAASC,GAAS,GACvF,C,SAEgBE,eAAeH,EAAaC,GAE1C,OAAQD,EAAM,IAAOC,CACvB,C,SAEgBG,QAAQC,GACtB,OAAOC,YAAYT,KAAKU,MAAMF,EAAS,KAAO,KAAKD,QAAQ,GAC7D,C,SAEgBI,iBAAiBC,EAAcC,EAAgBC,EAAoBC,GACjF,IAAIC,EAAIT,QAAQK,EAAOA,EAAOC,EAASb,KAAKiB,IAAKjB,KAAKkB,GAAKJ,EAAc,MACzE,IAAIK,EAAIZ,QAAQK,EAAOA,EAAOC,EAASb,KAAKoB,IAAKpB,KAAKkB,GAAKJ,EAAc,MACzE,GAAIC,IAAaM,UAAW,CAE1B,IAAIC,EAAKf,QAAQK,EAAOA,EAAOC,EAASb,KAAKiB,IAAKjB,KAAKkB,GAAKH,EAAY,MACxE,IAAIQ,EAAKhB,QAAQK,EAAOA,EAAOC,EAASb,KAAKoB,IAAKpB,KAAKkB,GAAKH,EAAY,MACxE,MAAO,CAAES,GAAIR,EAAGS,GAAIN,EAAGG,GAAEA,EAAEC,GAAEA,E,CAE/B,MAAO,CAAEP,EAACA,EAAEG,EAACA,EACf,CAEA,SAASO,OAAOb,EAAgBc,EAAsBX,EAAWG,EAAWS,GAC1E,IAAIC,EAAItB,QAASqB,EAAY,EAAKf,GAClC,MAAO,KAAAiB,OAAKD,EAAC,MAAAC,OAAKD,EAAC,OAAAC,OAAMH,EAAY,KAAAG,OAAIvB,QAAQS,GAAE,MAAAc,OAAKvB,QAAQY,GAClE,CAEA,SAASY,MAAM5B,EAAa6B,EAAeC,EAAeC,EAAgBC,GACxE,IAAIC,GAAWjC,EAAM6B,IAAUG,EAASD,IAAYD,EAAQD,GAASE,EAErE,OAAOE,EAASF,EAASA,EAASE,EAASD,EAASA,EAASC,CAC/D,CAEA,SAASC,WAAWC,GAElB,OAAOP,MAAMO,EAAO,IAAK,IAAK,GAAI,IACpC,CAEA,SAASC,YAAYD,GACnB,OAAOtC,KAAKC,MAAMqC,EAAQD,WAAWC,GACvC,CAEA,SAASE,YAAYC,EAAiBC,GACpC,IAAMC,EAAUF,EAAUC,EAC1B,IAAME,EAAY5C,KAAA6C,IAAA,GAAM7C,KAAKU,MAAMV,KAAK8C,MAAMH,KAC9C,IAAMI,EAAWJ,EAAUC,EAC3B,IAAII,EACJ,GAAID,EAAW,EAAG,CAChBC,EAAW,GAAKJ,C,MACX,GAAIG,EAAW,EAAG,CACvBC,EAAW,EAAIJ,C,MACV,GAAIG,EAAW,EAAG,CACvBC,EAAW,EAAIJ,C,MACV,GAAIG,EAAW,IAAK,CACzBC,EAAW,EAAIJ,C,MACV,GAAIG,EAAW,EAAG,CACvBC,EAAW,IAAMJ,C,KACZ,CACLI,EAAWJ,C,CAEb,OAAOI,CACT,CAEA,SAASC,mBAA8BC,GACrC,GAAIC,KAAKC,WAAaD,KAAKC,UAAUC,MAAQH,EAAGI,MAAQ,QAAS,CAC/D,IAAMC,EAAaJ,KAAKC,UAAUI,cAAc,UAChDD,GAAcA,EAAWE,O,CAE7B,C,SAEgBC,iBAA4BR,EAAgBS,GAC1D,GAAIR,KAAKC,YAAcD,KAAKS,UAAW,CACrCD,EAAEE,OAAS,CAAE7C,EAAGkC,EAAGY,QAAS3C,EAAG+B,EAAGa,SAClCC,YAAYC,KAAKd,KAAMQ,E,CAE3B,CAEA,SAASO,iBAA4BhB,EAAgBS,GACnD,GAAIR,KAAKC,WAAaD,KAAKS,UAAW,CACpCD,EAAEE,OAASM,YAAYjB,EAAGkB,QAC1BJ,YAAYC,KAAKd,KAAMQ,E,CAE3B,C,SAEgBU,mBAA8BnB,GAC5C,OAAQA,EAAGI,KAET,IAAK,UACL,IAAK,YACHJ,EAAGoB,iBACHnB,KAAKS,UAAY,KACjBW,cAAcN,KAAKd,MACnB,MAEF,IAAK,aACL,IAAK,YACHD,EAAGoB,iBACHnB,KAAKS,UAAY,KACjBY,UAAUP,KAAKd,MACf,MAEF,IAAK,MACHsB,UAAUR,KAAKd,MACf,MACF,IAAK,SACHA,KAAKC,UAAWC,KAAO,MACvBF,KAAKuB,iBAAmB,MACxB,MAEN,C,SAEgBV,YAAuBL,G,WACrC,KAAMR,KAAKC,aAAeO,EAAEgB,SAAWhB,EAAEiB,KAAM,CAC7CzB,KAAKC,UAAUyB,aAAelB,EAAEgB,MAChCxB,KAAKC,UAAU0B,YAAcnB,EAAEiB,KAC/BzB,KAAKC,UAAU2B,WAAapB,EAAEoB,WAC9B5B,KAAKC,UAAUS,OAASF,EAAEE,OAC1BV,KAAKC,UAAU4B,SAAWrB,EAAEqB,SAC5BC,OAAOC,YAAW,WAChB,GAAIC,EAAK/B,UAAW,CAClB+B,EAAK/B,UAAUC,KAAO,I,IAEvB,IAEH,IAAM+B,EAAwBC,UAAS,kBAAAC,UAAAH,OAAA,qB,qCACrChC,KAAKC,UAAWC,KAAO,M,kBACtB,IAIHkC,SAASC,iBAAiB,UAAU,WAClCJ,G,IAIF,IAAMK,EAAmBC,wBAAwBvC,KAAKwC,IACtD,KAAMF,EAAkB,CACtBA,EAAiBD,iBAAiB,UAAU,WAC1CJ,G,KAIR,CAEA,SAASZ,YACP,IAAMoB,EAAWC,yBAAyBN,SAASO,eACnD,IAAMC,GAEH5C,KAAK6C,SAAUC,QAAQL,GAA2B,GAAKzC,KAAK6C,SAAUE,OACzEC,WAAWlC,KAAKd,KAAM4C,EACxB,CAEA,SAASxB,gBACP,GAAIpB,KAAK6C,SAAU,CACjB,IAAMJ,EAAWC,yBAAyBN,SAASO,eACnD,IAAIC,EAAQ5C,KAAK6C,SAASC,QAAQL,GAElC,GAAIG,KAAW,EAAG,CAEhBA,EAAQ,C,MACH,GAAIA,IAAU,EAAG,CAEtBA,EAAQ5C,KAAK6C,SAASE,OAAS,C,KAC1B,CAELH,GAAS,C,CAEXI,WAAWlC,KAAKd,KAAM4C,E,CAE1B,CAEA,SAASI,WAAsBJ,GAA/B,IAAAZ,EAAAhC,KACE,GAAIA,KAAK6C,UAAY7C,KAAKwC,GAAI,CAC5BxC,KAAKuB,iBAAmB,KACxB,GAAIvB,KAAKC,UAAW,CAClBD,KAAKC,UAAUC,KAAO,K,CAGxBF,KAAKiD,mBAAmBC,UAAY,EAEpClD,KAAKwC,GAAGW,UAAY,MACpBnD,KAAK6C,SAASO,KAAI,SAACC,GACjBA,EAAEH,UAAY,EAEdG,EAAEF,UAAY,K,IAEhBnD,KAAK6C,SAASD,GAAOM,SAAW,EAEhClD,KAAK6C,SAASD,GAAOO,UAAY,KACjCnD,KAAK6C,SAASD,GAAOU,QACrBxB,OAAOC,YAAW,WAChB,GAAIC,EAAK/B,UAAW,CAClB+B,EAAK/B,UAAUC,KAAO,I,IAEvB,G,CAEP,C,SAEgBoB,Y,WACdtB,KAAK6C,UACH7C,KAAK6C,SAASO,KAAI,SAACC,GACjBA,EAAEH,UAAY,EAEdG,EAAEF,UAAY,K,IAElBnD,KAAKuB,iBAAmB,MAGxBO,OAAOC,YAAW,WAChBC,EAAKiB,mBAAmBC,SAAW,EAEnClB,EAAKQ,GAAGW,UAAY,KACpB,GAAInB,EAAK/B,UAAW,CAClB+B,EAAK/B,UAAUC,KAAO,K,IAEvB,IACL,CAEO,SAAeqD,WAAsBC,G,wGAC1CxD,KAAKyD,cAAgB,GACjBC,EAAM,EACJC,EAAWC,MAAMC,KAAK7D,KAAKwC,GAAGmB,UAEpC3D,KAAK/C,MAAQ0G,EAASG,QACpB,SAAC7G,EAAe8G,GAAmB,OAAM9G,GAAS+G,SAASD,EAAME,aAAa,WAAa,IAAxD,GACnC,GAGFN,EAASO,SAAQ,SAACC,EAAYC,GAC5B,IAAMC,EAASL,SAASG,EAAEF,aAAa,WAAa,KACpD,IAAMK,EAAOvH,gBAAgBsH,EAAQrC,EAAK/E,MAAO,MAEjD,IAAIsH,EAAaH,EAGjB,GAAIZ,IAAc,OAAQ,CACxBe,EAAavC,EAAKwC,gBAAkBJ,EAAIA,EAAI,C,CAI9C,GAAIZ,IAAc,OAAQ,CACxBe,EAAa,C,CAGf,IAAME,EAAQ1J,iBAAiByI,GAAWlJ,OAAOiK,GAEjD,IAAMG,EAA6B,CACjCL,OAAQA,EACRC,KAAMA,EACNK,OAAQR,EAAEF,aAAa,UACvBQ,MAAOA,GAASnK,OAAOQ,KACvB8J,OAAQlB,EACRnH,GAAI,GAAAoC,OAAGqD,EAAK6C,IAAG,KAAAlG,OAAIyF,EAAI,GACvB5C,MAAO2C,EAAEF,aAAa,iBACtBxC,KAAM0C,EAAEF,aAAa,gBACrBrC,WAAYuC,EAAEF,aAAa,uBAC3BpC,SAAUsC,EACVW,eAAgB,OAElBpB,GAAOW,EACPrC,EAAKyB,cAAcsB,KAAKL,E,oBAI5B,SAASM,kBAAkBvB,EAA+BxG,GAExD,IAAIgI,EAAsBC,cAAA,GAAIzB,EAAa,MAAE0B,MAAK,SAACC,EAAiBC,GAClE,OAAAD,EAAEf,SAAWgB,EAAEhB,OAAS,EAAIe,EAAEf,OAASgB,EAAEhB,QAAU,EAAI,CAAvD,IAGF,IAAIX,EAAM,EAEVuB,EAAoBf,SAAQ,SAAC1D,EAAiB8E,GAC5C,IAAMC,EAAON,EAAoBK,IAAQ,EAAIL,EAAoBlC,OAAS,EAAIuC,EAAM,GACpF,IAAME,EAAOP,EAAoBK,IAAQL,EAAoBlC,OAAS,EAAI,EAAIuC,EAAM,GACpF,IAAMG,EAAW1I,gBAAgBwI,EAAKlB,OAAQpH,EAAO,MACrD,IAAMyI,EAAW3I,gBAAgByI,EAAKnB,OAAQpH,EAAO,MAErDuD,EAAEoE,OAASlB,EACXA,GAAOlD,EAAE6D,OACT7D,EAAEsE,eAAiBa,iBAAiBF,EAAUjF,EAAE8D,KAAM9D,EAAE6D,OAAQqB,E,IAElE,OAAOT,CACT,CAEA,SAASU,iBAAiBF,EAAkBnB,EAAcD,EAAgBqB,GAGxE,IAAME,EAAUtB,EAAO,EACvB,IAAMuB,EAAcJ,EAAW,EAC/B,IAAMK,EAAcJ,EAAW,EAC/B,IAAIZ,EAAiBc,IAAYC,GAAeC,GAIhD,IAAMC,EAAkBzB,IAAS,GAAKD,EAAS,EAC/C,GAAI0B,IAAoBL,EAAW,GAAKD,EAAW,GAAI,CACrDX,EAAiB,I,CAGnB,OAAOA,CACT,CAEA,SAASkB,YAAuB3B,EAAgBO,EAAgBpB,GAC9D,IAAM7F,EAAaR,eAAeyH,EAAQ5E,KAAK/C,OAAS,GACxD,IAAMgJ,EAAe5B,EAASrE,KAAK/C,MAAS,IAC5C,IAAIW,EAAWD,EAAasI,EAC5B,IAAMC,EAAoBD,EAAc,IAAM,MAAQ,MACtD,IAAME,EAAoBF,EAAc,IAAM,MAAQ,MACtD,IAAMxI,EAAOuC,KAAKoG,aAAanL,KAAO,EACtC,IAAMoL,EAAcrG,KAAKoG,aAAalL,UACtC,IAAMoL,EAAc,EAEpB,IAAMC,EAAmB/C,IAAc,aAAeA,IAAc,WACpE,IAAMgD,EAAuB,IAC7B,IAAMC,EAAuBF,EAAmB,KAAO,EAEvD,GAAIN,IAAgB,IAAK,CAEvBrI,GAAY,G,CAGd,IAAM8I,EAAclJ,iBAClBC,EACA6I,EACA3I,EAAa6I,EACb5I,GAEF,IAAM+I,EAAcnJ,iBAClBC,EACA4I,EACA1I,EAAa8I,EACb7I,GAGF,IAAMgJ,EAAS,KAAAjI,OAAK+H,EAAYrI,GAAE,MAAAM,OAAK+H,EAAYpI,GAAE,KACrD,IAAMuI,EAAOtI,OAAO+H,EAAaJ,EAAmBQ,EAAYvI,GAAKuI,EAAYtI,GAAK4B,KAAKoG,aAAanL,MACxG,IAAM6L,EAAO,MAAAnI,OAAMgI,EAAYxI,GAAE,MAAAQ,OAAKgI,EAAYvI,GAAE,KACpD,IAAM2I,EAAOxI,OAAO8H,EAAaF,EAAmBQ,EAAYtI,GAAKsI,EAAYrI,GAAK0B,KAAKoG,aAAanL,MAExG,OAAO2L,EAASC,EAAOC,EAAOC,EAAO,IACvC,C,SAEgBC,yBACd,IAAMC,EAAoB5K,KAAKC,cAAc,CAC3CC,GAAI,qBACJC,eAAgB,wDAChBC,YAAa,sFAGf,OAAOyK,EAAA,OAAK3K,GAAG,sBAAsB0K,EACvC,CAEA,SAASE,eACP,OACED,EAAA,YACEA,EAAA,UAAQ3K,GAAG,qBACT2K,EAAA,kBAAgBE,aAAa,MAC7BF,EAAA,YAAUG,OAAO,eACjBH,EAAA,yBAAqB,SACrBA,EAAA,eAAaI,SAAS,KAAKC,IAAI,eAC/BL,EAAA,eACEA,EAAA,oBACAA,EAAA,eAAaM,GAAG,oBAK1B,C,SAEgBC,eAA0BjE,G,WACxC,IAAMkE,EAAY1H,KAAKoG,aAAanL,KAAO+E,KAAKoG,aAAajL,QAC7D,IAAMoL,EAAmB/C,IAAc,aAAeA,IAAc,WAEpE,IAAIC,EAAgB8C,EAAmBvG,KAAKyD,cAAgBuB,kBAAkBhF,KAAKyD,cAAezD,KAAK/C,OAEvG,OACEiK,EAAA,OAAKS,MAAM,kCACTT,EAAA,OAAK/H,MAAOuI,EAAY,KAAME,OAAQF,EAAY,KAAMnL,GAAI,WAAAoC,OAAWqB,KAAK6E,KAAO8C,MAAM,gBACtFR,eACA1D,EAAcL,KAAI,SAAC5C,GAAoB,OAAAqH,WAAW/G,KAAKkB,EAAMxB,EAAGgD,EAAzB,IACvC+C,EACCW,EAAA,QACES,MAAM,QACN9J,EAAE,MACFG,EAAE,MAAK,YACG,SAAQ,cACN,MAAK,cACL,SAAQ,oBACF,UAEjBjB,gBAAgB0G,EAAc,GAAGY,OAAQrE,KAAK/C,MAAO,MAAQ,KAGhEiK,EAAA,KACEY,UAAW,aAAAnJ,OAAaqB,KAAKoG,aAAajL,QAAU,EAAC,MAAAwD,OAAKqB,KAAKoG,aAAajL,QAAU,EAAC,KAAG,cAC9E,SAAQ,oBACF,UAEjBsI,EAAcL,KAAI,SAAC5C,GAClB,OAAAA,EAAE6D,OAAS,IAAM7D,EAAEsE,eAAiBiD,mBAAmBjH,KAAKkB,EAAMxB,GAAK,EAAvE,MAOd,CAEA,SAASqH,WAAsBrH,EAAiBgD,GAAhD,IAAAxB,EAAAhC,KACE,OACEkH,EAAA,KAAGY,UAAW,aAAAnJ,OAAaqB,KAAKoG,aAAajL,QAAU,EAAC,MAAAwD,OAAKqB,KAAKoG,aAAajL,QAAU,EAAC,MACxF+L,EAAA,QACE3K,GAAIiE,EAAEjE,GACNoL,MAAM,2BACNK,KAAMxH,EAAE6D,OAAS7D,EAAEiE,MAAQ,cAC3BwD,EAAGjC,YAAYlF,KAAKd,KAAMQ,EAAE6D,OAAQ7D,EAAEoE,OAAQpB,GAC9C0E,QAAS,SAACnI,GAAO,OAAAQ,iBAAiBO,KAAKkB,EAAMjC,EAAIS,EAAhC,EACjB2H,QAAS,SAACpI,GAAO,OAAAgB,iBAAiBD,KAAKkB,EAAMjC,EAAIS,EAAhC,EACjB4H,UAAW,SAACrI,GAAO,OAAAD,mBAAmBgB,KAAKkB,EAAMjC,EAA9B,EACnBsI,KAAK,MAAK,aACE7H,EAAEmE,SAItB,CAEA,SAASoD,mBAA8BvH,GACrC,IAAM8H,EAAYnL,eAAeqD,EAAEoE,OAASpE,EAAE6D,OAAS,EAAGrE,KAAK/C,OAC3D,IAAAsL,EAAW/K,iBAAiBwC,KAAKoG,aAAanL,KAAO,EAAG,IAAKqN,EAAY,IAAvEzK,EAAC0K,EAAA1K,EAAEG,EAACuK,EAAAvK,EACV,OACEkJ,EAAA,QAAMS,MAAM,QAAQ9J,EAAGA,EAAI,KAAMG,EAAGA,EAAI,MACrC,GAAAW,OAAG6B,EAAE8D,KAAO,EAAI9D,EAAE8D,KAAO,KAAI,KAGpC,C,SAEgBkE,iBAA4BhF,G,WAC1C,IAAMiF,EAAcjF,IAAc,QAAUA,IAAc,MAC1D,OACE0D,EAAA,OAAKS,MAAM,6BACRc,EACCvB,EAAA,OAAKS,MAAM,eAAe5K,gBAAgBiD,KAAKyD,cAAc,GAAGY,OAAQrE,KAAK/C,MAAO,MAAQ,KAAU,GAIvG+C,KAAKwD,YAAc,QAAUxD,KAAK0I,WACnCxB,EAAA,OAAKS,MAAO,6BAAAhJ,OAA6BzC,UAAU8D,KAAK2I,oBACpDF,EACAvB,EAAA,OAAKS,MAAM,UACR3H,KAAKyD,cAAcL,KAAI,SAAC5C,EAAiB8E,GAAgB,OAAAtD,EAAK4G,cAAcpI,EAAG8E,EAAtB,KACtD,GAIR4B,EAAA,OAAKS,MAAM,gCACR3H,KAAKyD,cAAcL,KAAI,SAAC5C,EAAiB8E,GAAgB,OAAAuD,wBAAwB/H,KAAKkB,EAAMxB,EAAG8E,EAAtC,KAE3DmD,EAAcK,wBAAwBhI,KAAKd,MAAQ,IAI5D,CAEA,SAAS6I,wBAAmCrI,EAAiB8E,GAA7D,IAAAtD,EAAAhC,KACE,IAAM+I,EAAczD,IAAQtF,KAAKyD,cAAcV,OAAS,EACxD,IAAM5D,EAAQ,QAAAR,OAAQ5B,gBAAgByD,EAAE6D,OAAQrE,KAAK/C,MAAO,OAAM,KAAA0B,OAAIoK,EAAc,SAAW,GAAE,KAEjG,OACE7B,EAAA,OACES,MAAO,+BAAAhJ,OAA+B5B,gBAAgByD,EAAE6D,OAAQrE,KAAK/C,MAAO,SAAW,EAAI,OAAS,IACpG+L,MAAO,CACLC,gBAAiBzI,EAAEiE,MACnBtF,MAAOA,GAET+I,QAAS,SAACnI,GAAO,OAAAQ,iBAAiBO,KAAKkB,EAAMjC,EAAIS,EAAhC,EACjB2H,QAAS,SAACpI,GAAO,OAAAgB,iBAAiBD,KAAKkB,EAAMjC,EAAIS,EAAhC,EACjB4H,UAAW,SAACrI,GAAO,OAAAD,mBAAmBgB,KAAKkB,EAAMjC,EAA9B,GAEnBmH,EAAA,QAAMS,MAAM,WAAWnH,EAAEmE,QAG/B,C,SAEgBuE,gBAA2B1F,G,WAEzC,IAAMlE,EAAUU,KAAKyD,cAClBL,KAAI,SAAC5C,GAAoB,OAAAA,EAAE6D,MAAF,IACzBP,QAAO,SAACsB,EAAWC,GAClB,OAAOD,EAAIC,EAAID,EAAIC,C,IAEvB,IAAM8D,EAAanF,SAASoF,iBAAiBpJ,KAAKwC,IAAI6G,iBAAiB,gBAAiB,IACxF,IAAMC,EAAe,GACrB,IAAMC,EAAiBvJ,KAAKwC,GAAGgH,wBAAwBrK,MACvD,IAAMsK,EAAaF,EAAiBJ,EAAaG,EACjD,IAAII,EAAWtK,YAAYqK,GAC3B,IAAI5J,EAAWR,YAAYC,EAASoK,GAEpC,IAAMC,EAAcD,EAAW7J,EAC/B,IAAM+J,EAAa/M,KAAKU,OAAOoM,EAAcrK,GAAWO,GACxD6J,GAAYE,EAEZ5J,KAAKwC,GAAGwG,MAAMa,YAAY,mBAAoB,IAAMH,EAAW,KAC/D1J,KAAKwC,GAAGwG,MAAMa,YAAY,eAAgB7J,KAAKmJ,YAE/C,GAAI3F,IAAc,SAAWxD,KAAK8J,cAAe,CAC/C9J,KAAKwC,GAAGwG,MAAMa,YAAY,eAAgB,M,CAM5C,IAAME,EAAsB,GAC5B/J,KAAKyD,cAAcS,SAAQ,SAAC1D,GAC1BA,EAAEmE,QAAUoF,EAAKhF,KAAKiF,sBAAsBxJ,EAAEmE,OAAQ3C,EAAK8H,cAAetG,IAC1EuG,EAAKhF,KAAKkF,oBAAoBnJ,KAAKkB,EAAMxB,EAAGX,EAAU6J,EAAUpK,G,IAGlE,IAAM4K,EAAQ,GACd,IAAK,IAAI9F,EAAI,EAAGA,GAAKsF,EAAUtF,IAAK,CAClC,IAAM+F,EAA2BxN,WAAWyH,EAAIvE,GAChDqK,EAAMnF,KACJmC,EAAA,OAAKS,MAAM,QACTT,EAAA,YAAOiD,I,CAKb,IAAMC,EAAW5G,IAAc,QAAUxD,KAAKoK,UAAYpK,KAAKwC,GAAGgH,wBAAwBrK,MAAQ,IAElG,OACE+H,EAAA,OAAKS,MAAM,oCACTT,EAAA,OAAKS,MAAO,SAAAhJ,OAASzC,UAAU8D,KAAK2I,mBACjCyB,GAAYlD,EAAA,OAAKS,MAAM,cACxBT,EAAA,OAAKS,MAAM,QAAQoC,IAEpBK,GACClD,EAAA,OAAKS,MAAM,SAAQ,cAAa,QAC9BT,EAAA,OAAKS,MAAM,QACTT,EAAA,kBAEDgD,GAKX,CAEA,SAASF,sBAAsBrF,EAAgB0F,EAAe7G,GAE5D,IAAM8G,EAAS9G,IAAc,SAAW6G,EAAO,UAAY,GAC3D,OAAOnD,EAAA,SAAOS,MAAO,QAAAhJ,OAAQ2L,IAAW3F,EAC1C,CAEA,SAASsF,oBAEPzJ,EACAX,EACAqK,EACA5K,GALF,IAAA0C,EAAAhC,KAOE,IAAMuK,EAAcvK,KAAKwK,mBAAqB,OAAS3K,EAAWqK,EAAQ5K,EAC1E,IAAMH,EAAQpC,gBAAgByD,EAAE6D,OAAQkG,EAAa,OACrD,IAAME,EAAmBtL,EAAQA,EAAQ,IAAM,MAC/C,IAAMuL,EAAM/N,WAAW6D,EAAE6D,QACzB,IAAIsG,EAAe3K,KAAK2I,kBAAoB,SAAW+B,EAAM,GAC7D,GAAI1K,KAAKwK,mBAAqB,QAAUxK,KAAK2I,kBAAoB,aAAc,CAC7EgC,EAAenK,EAAE6D,OAAS,G,MACrB,GAAIrE,KAAKwK,mBAAqB,QAAUxK,KAAK2I,kBAAoB,aAAc,CACpFgC,EAAe5N,gBAAgByD,EAAE6D,OAAQrE,KAAK/C,MAAO,MAAQ,G,CAG/D,OACEiK,EAAA,OACES,MAAO,cACPqB,MAAO,CACLC,gBAAiBzI,EAAEiE,MACnBtF,MAAOsL,GAETvC,QAAS,SAACnI,GAAO,OAAAQ,iBAAiBO,KAAKkB,EAAMjC,EAAIS,EAAhC,EACjB2H,QAAS,SAACpI,GAAO,OAAAgB,iBAAiBD,KAAKkB,EAAMjC,EAAIS,EAAhC,EACjB4H,UAAW,SAACrI,GAAO,OAAAD,mBAAmBgB,KAAKkB,EAAMjC,EAA9B,GAEnBmH,EAAA,OAAKS,MAAM,SAASgD,GAG1B,C,SAEgBC,aAAwBpH,GAEtC,GAAIxD,KAAK6K,WAAY,CACnB,IAAMC,GACH9K,KAAKoG,aAAa2E,OACnB/K,KAAKyD,cAAcK,QACjB,SAACgH,EAAqBE,GAAiB,OAAMF,EAAaE,EAAIlG,eAAiB,KAAOgG,CAA/C,GACvC,OAEJ,OACE5D,EAAA,OAAKS,MAAM,kBACTT,EAAA,OAAKS,MAAO,UAAAhJ,OAAU6E,EAAS,KAAA7E,OAAIqB,KAAKiL,OAAS,MAAQ,QAAU,YAAY,cAAc,QAC1FjL,KAAK/C,MAAQ,EACV+C,KAAKyD,cAAcL,KAAI,SAAC5C,GAEtB,KAAMA,EAAE6D,UAAY7D,EAAEmE,OAAQ,CAC5B,OAAOuG,iBAAiB,CAAE/K,IAAKK,EAAEmE,OAASF,MAAOjE,EAAEiE,O,KAGvD,IAELqG,GAAcK,4B,CAIvB,C,SAEgBD,iBAAiBE,GAC/B,OACElE,EAAA,OAAKS,MAAM,eACTT,EAAA,OAAKS,MAAM,eAAeqB,MAAO,CAAEC,gBAAiBmC,EAAW3G,SAC/DyC,EAAA,OAAKS,MAAM,eAAeyD,EAAWjL,KAG3C,C,SAEgB2I,0BACd,GAAI9I,KAAKqL,kBAAmB,CAC1B,OAAOnE,EAAA,OAAKS,MAAM,sBAAsB3H,KAAKqL,kB,CAEjD,C,SAEgBF,4BACd,OACEjE,EAAA,OAAKS,MAAM,yBACRvL,kBACD8K,EAAA,WACCxK,kBAGP,Q"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
var version="3.25.0-2";if(window.navigator.plugins.length>0){console.log("Ripple component library",version)}function wmComponentKeys(t){if(t.key=="Tab"){var o=new Event("wmUserIsTabbing");window.dispatchEvent(o);document.querySelector("body").classList.add("wmcl-user-is-tabbing")}if(t.key=="ArrowLeft"||t.key=="ArrowUp"||t.key=="ArrowRight"||t.key=="ArrowDown"){var o=new Event("wmUserIsKeying");window.dispatchEvent(o);document.querySelector("body").classList.add("wmcl-user-is-keying")}}function wmComponentMouseDownOnce(){var t=new Event("wmUserIsNotTabbing");window.dispatchEvent(t);document.querySelector("body").classList.remove("wmcl-user-is-tabbing");document.querySelector("body").classList.remove("wmcl-user-is-keying")}window.addEventListener("keydown",wmComponentKeys);window.addEventListener("mousedown",wmComponentMouseDownOnce);var tooltipContainer=document.createElement("div");tooltipContainer.id="wm-tooltip-container";var tooltipEl=document.createElement("div");tooltipEl.id="wm-tooltip";tooltipEl.setAttribute("aria-hidden","true");tooltipEl.style.position="fixed";tooltipEl.style.overflow="hidden";tooltipEl.style.pointerEvents="none";tooltipEl.style.lineHeight="normal";tooltipEl.style.fontFamily="inherit";tooltipEl.style.fontSize="0.875rem";tooltipEl.style.textTransform="none";tooltipEl.style.fontWeight="normal";tooltipEl.style.background="black";tooltipEl.style.color="#fff";tooltipEl.style.zIndex="999999";tooltipEl.style.maxWidth="var(--wmTooltipMaxWidth, 13.75rem)";tooltipEl.style.marginRight="1.5rem";tooltipEl.style.padding="0.375rem";tooltipEl.style.transitionProperty="opacity";tooltipEl.style.transitionDelay="opacity";tooltipEl.style.opacity="0";tooltipEl.style.top="0";tooltipEl.style.left="0";tooltipEl.style.transform="translateZ(0)";tooltipEl.style.willChange="transform";tooltipEl.style.transform="translate(var(--wmTooltipLeft), var(--wmTooltipTop))";tooltipContainer.appendChild(tooltipEl);var body=document.querySelector("body");body.appendChild(tooltipContainer);
|
|
2
|
-
//# sourceMappingURL=global-2c5c2727.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["window","navigator","plugins","length","console","log","version","wmComponentKeys","ev","key","event","Event","dispatchEvent","document","querySelector","classList","add","wmComponentMouseDownOnce","remove","addEventListener","tooltipContainer","createElement","id","tooltipEl","setAttribute","style","position","overflow","pointerEvents","lineHeight","fontFamily","fontSize","textTransform","fontWeight","background","color","zIndex","maxWidth","marginRight","padding","transitionProperty","transitionDelay","opacity","top","left","transform","willChange","appendChild","body"],"sources":["src/global/global.ts"],"sourcesContent":["import { setMode } from \"@stencil/core\";\r\nimport { version } from \"../../package.json\";\r\n\r\n// PRINT RIPPLE VERSION IN CONSOLE\r\n// test envs return 0 for plugin.length\r\n// do not print version number there as it causes issues\r\nif (window.navigator.plugins.length > 0) {\r\n console.log(\"Ripple component library\", version);\r\n}\r\n\r\n// USER-IS-TABBING CLASSES (FOR FOCUS INDICATORS)\r\n// Dispatching events to track whether user is navigating with keyboard or mouse\r\nfunction wmComponentKeys(ev: KeyboardEvent) {\r\n if (ev.key == \"Tab\") {\r\n var event: Event = new Event(\"wmUserIsTabbing\");\r\n window.dispatchEvent(event);\r\n document.querySelector(\"body\")!.classList.add(\"wmcl-user-is-tabbing\");\r\n }\r\n if (ev.key == \"ArrowLeft\" || ev.key == \"ArrowUp\" || ev.key == \"ArrowRight\" || ev.key == \"ArrowDown\") {\r\n var event: Event = new Event(\"wmUserIsKeying\");\r\n window.dispatchEvent(event);\r\n document.querySelector(\"body\")!.classList.add(\"wmcl-user-is-keying\");\r\n }\r\n}\r\n\r\nfunction wmComponentMouseDownOnce() {\r\n var event = new Event(\"wmUserIsNotTabbing\");\r\n window.dispatchEvent(event);\r\n document.querySelector(\"body\")!.classList.remove(\"wmcl-user-is-tabbing\");\r\n document.querySelector(\"body\")!.classList.remove(\"wmcl-user-is-keying\");\r\n}\r\n\r\nwindow.addEventListener(\"keydown\", wmComponentKeys);\r\nwindow.addEventListener(\"mousedown\", wmComponentMouseDownOnce);\r\n\r\n// MODES (FOR PRODUCT-SPECIFIC STYLING)\r\n//Checks for mode attribute explicitly set on the document. If \"mode\" is set on component, it will override the global mode. Falls back to default (Planning styles)\r\nsetMode((elm) => {\r\n return elm.getAttribute(\"mode\") || document.documentElement.getAttribute(\"mode\") || \"planning\";\r\n});\r\n\r\n// TOOLTIP\r\n// Add a tooltip element\r\n// This allows tooltips to be always at the highest stacking context (always on top)\r\n// Element is added withing a container to avoid performance impact\r\nconst tooltipContainer = document.createElement(\"div\");\r\ntooltipContainer.id = \"wm-tooltip-container\";\r\nconst tooltipEl = document.createElement(\"div\");\r\ntooltipEl.id = \"wm-tooltip\";\r\ntooltipEl.setAttribute(\"aria-hidden\", \"true\");\r\ntooltipEl.style.position = \"fixed\";\r\ntooltipEl.style.overflow = \"hidden\";\r\ntooltipEl.style.pointerEvents = \"none\";\r\ntooltipEl.style.lineHeight = \"normal\";\r\ntooltipEl.style.fontFamily = \"inherit\";\r\ntooltipEl.style.fontSize = \"0.875rem\";\r\ntooltipEl.style.textTransform = \"none\";\r\ntooltipEl.style.fontWeight = \"normal\";\r\ntooltipEl.style.background = \"black\";\r\ntooltipEl.style.color = \"#fff\";\r\ntooltipEl.style.zIndex = \"999999\";\r\ntooltipEl.style.maxWidth = \"var(--wmTooltipMaxWidth, 13.75rem)\";\r\ntooltipEl.style.marginRight = \"1.5rem\";\r\ntooltipEl.style.padding = \"0.375rem\";\r\ntooltipEl.style.transitionProperty = \"opacity\";\r\ntooltipEl.style.transitionDelay = \"opacity\";\r\ntooltipEl.style.opacity = \"0\";\r\ntooltipEl.style.top = \"0\";\r\ntooltipEl.style.left = \"0\";\r\ntooltipEl.style.transform = \"translateZ(0)\";\r\ntooltipEl.style.willChange = \"transform\";\r\ntooltipEl.style.transform = \"translate(var(--wmTooltipLeft), var(--wmTooltipTop))\";\r\n\r\ntooltipContainer.appendChild(tooltipEl);\r\nconst body = document.querySelector(\"body\");\r\nbody!.appendChild(tooltipContainer);\r\n"],"mappings":"uBAMA,GAAIA,OAAOC,UAAUC,QAAQC,OAAS,EAAG,CACvCC,QAAQC,IAAI,2BAA4BC,Q,CAK1C,SAASC,gBAAgBC,GACvB,GAAIA,EAAGC,KAAO,MAAO,CACnB,IAAIC,EAAe,IAAIC,MAAK,mBAC5BX,OAAOY,cAAcF,GACrBG,SAASC,cAAc,QAAMC,UAAAC,IAAA,uB,CAE/B,GAAAR,EAAAC,KAAA,aAAAD,EAAAC,KAAA,WAAAD,EAAAC,KAAA,cAAAD,EAAAC,KAAA,aACE,IAAIC,EAAe,IAAIC,MAAM,kBAC7BX,OAAOY,cAAcF,GACrBG,SAASC,cAAc,QAAMC,UAAAC,IAAA,sB,CAEjC,CAEA,SAAAC,2BACE,IAAIP,EAAQ,IAAIC,MAAM,sBACtBX,OAAOY,cAAcF,GACrBG,SAASC,cAAc,QAAMC,UAAAG,OAAA,wBAC7BL,SAASC,cAAc,QAASC,UAAUG,OAAO,sBACnD,CAEAlB,OAAAmB,iBAAA,UAAAZ,iBACAP,OAAOmB,iBAAiB,YAAaF,0BAYrC,IAAMG,iBAAmBP,SAASQ,cAAc,OAChDD,iBAAiBE,GAAK,uBACtB,IAAMC,UAAYV,SAASQ,cAAc,OACzCE,UAAUD,GAAK,aACfC,UAAUC,aAAa,sBACvBD,UAAUE,MAAMC,SAAW,QAC3BH,UAAUE,MAAME,SAAW,SAC3BJ,UAAUE,MAAMG,cAAgB,OAChCL,UAAUE,MAAMI,WAAa,SAC7BN,UAAUE,MAAMK,WAAa,UAC7BP,UAAUE,MAAMM,SAAW,WAC3BR,UAAUE,MAAMO,cAAgB,OAChCT,UAAUE,MAAMQ,WAAa,SAC7BV,UAAUE,MAAMS,WAAa,QAC7BX,UAAUE,MAAMU,MAAQ,OACxBZ,UAAUE,MAAMW,OAAS,SACzBb,UAAUE,MAAMY,SAAW,qCAC3Bd,UAAUE,MAAMa,YAAc,SAC9Bf,UAAUE,MAAMc,QAAU,WAC1BhB,UAAUE,MAAMe,mBAAqB,UACrCjB,UAAUE,MAAMgB,gBAAkB,UAClClB,UAAUE,MAAMiB,QAAU,IAC1BnB,UAAUE,MAAMkB,IAAM,IACtBpB,UAAUE,MAAMmB,KAAO,IACvBrB,UAAUE,MAAMoB,UAAY,gBAC5BtB,UAAUE,MAAMqB,WAAa,YAC7BvB,UAAUE,MAAMoB,UAAY,uDAE5BzB,iBAAiB2B,YAAYxB,WAC7B,IAAMyB,KAAOnC,SAASC,cAAc,QACpCkC,KAAMD,YAAY3B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["getRequest","url","__awaiter","fetch","response","_a","sent","ok","json","Error","statusText","postRequest","payload","method","headers","body","JSON","stringify","deleteRequest","putRequest","file","onProgress","Promise","resolve","reject","req","XMLHttpRequest","upload","addEventListener","ev","this","readyState","status","onerror","open","setRequestHeader","concat","name","send"],"sources":["src/global/services/http-service.tsx"],"sourcesContent":["export const getRequest = async (url: string) => {\r\n const response = await fetch(url);\r\n if (!!response && !!response.ok) {\r\n return await response.json();\r\n } else {\r\n throw new Error(response.statusText);\r\n }\r\n};\r\n\r\nexport const postRequest = async (url: string, payload: Object) => {\r\n const response = await fetch(url, {\r\n method: \"POST\",\r\n headers: { \"Content-Type\": \"application/json; charset=utf-8\" },\r\n body: JSON.stringify(payload),\r\n });\r\n if (!!response && !!response.ok) {\r\n return await response.json();\r\n } else {\r\n throw new Error(response.statusText);\r\n }\r\n};\r\n\r\nexport const deleteRequest = async (url: string) => {\r\n const response = await fetch(url, { method: \"DELETE\" });\r\n if (!!response && !!response.ok) {\r\n return await response.json();\r\n } else {\r\n throw new Error(response.statusText);\r\n }\r\n};\r\n\r\nexport const putRequest = (url: string, file: File, onProgress: Function) => {\r\n return new Promise((resolve, reject) => {\r\n // there's no way to track progress with the fetch API, so using XHR\r\n const req = new XMLHttpRequest();\r\n\r\n req.upload.addEventListener(\"progress\", (ev) => onProgress(ev));\r\n\r\n req.addEventListener(\"readystatechange\", function () {\r\n if (this.readyState === 4 && this.status === 200) {\r\n resolve(this);\r\n } else if (this.readyState === 4 && this.status !== 200) {\r\n reject();\r\n }\r\n });\r\n\r\n req.onerror = () => reject();\r\n req.open(\"PUT\", url, true);\r\n req.setRequestHeader(\"Content-Disposition\", `attachment;filename=\"${file.name}\"`);\r\n req.send(file);\r\n });\r\n};\r\n"],"mappings":"k9CAAaA,WAAa,SAAOC,GAAW,OAAAC,eAAA,4B,kEACzB,SAAMC,MAAMF,I,OAAvBG,EAAWC,EAAAC,O,OACXF,KAAcA,EAASG,IAAzB,YACK,SAAMH,EAASI,Q,OAAtB,SAAOH,EAAAC,Q,OAEP,MAAM,IAAIG,MAAML,EAASM,Y,YAIhBC,YAAc,SAAOV,EAAaW,GAAe,OAAAV,eAAA,4B,kEAC3C,SAAMC,MAAMF,EAAK,CAChCY,OAAQ,OACRC,QAAS,CAAE,eAAgB,mCAC3BC,KAAMC,KAAKC,UAAUL,M,OAHjBR,EAAWC,EAAAC,O,OAKXF,KAAcA,EAASG,IAAzB,YACK,SAAMH,EAASI,Q,OAAtB,SAAOH,EAAAC,Q,OAEP,MAAM,IAAIG,MAAML,EAASM,Y,YAIhBQ,cAAgB,SAAOjB,GAAW,OAAAC,eAAA,4B,kEAC5B,SAAMC,MAAMF,EAAK,CAAEY,OAAQ,Y,OAAtCT,EAAWC,EAAAC,O,OACXF,KAAcA,EAASG,IAAzB,YACK,SAAMH,EAASI,Q,OAAtB,SAAOH,EAAAC,Q,OAEP,MAAM,IAAIG,MAAML,EAASM,Y,YAIhBS,WAAa,SAAClB,EAAamB,EAAYC,GAClD,OAAO,IAAIC,SAAQ,SAACC,EAASC,GAE3B,IAAMC,EAAM,IAAIC,eAEhBD,EAAIE,OAAOC,iBAAiB,YAAY,SAACC,GAAO,OAAAR,EAAWQ,EAAX,IAEhDJ,EAAIG,iBAAiB,oBAAoB,WACvC,GAAIE,KAAKC,aAAe,GAAKD,KAAKE,SAAW,IAAK,CAChDT,EAAQO,K,MACH,GAAIA,KAAKC,aAAe,GAAKD,KAAKE,SAAW,IAAK,CACvDR,G,KAIJC,EAAIQ,QAAU,WAAM,OAAAT,GAAA,EACpBC,EAAIS,KAAK,MAAOjC,EAAK,MACrBwB,EAAIU,iBAAiB,sBAAuB,wBAAAC,OAAwBhB,EAAKiB,KAAI,MAC7EZ,EAAIa,KAAKlB,E,GAEb,S"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["getIconCodeFromName","icon","iconCodes","close","pencil","cancel","check","delete","magnify","export","defaultMode","getWmMode","ref","getAttribute","document","documentElement"],"sources":["src/global/interfaces.ts"],"sourcesContent":["export type Notification = {\r\n message: string;\r\n id: string;\r\n link: string;\r\n newWindow: boolean;\r\n};\r\n\r\n// Create label for icon-only buttons\r\nexport type label = string | undefined;\r\n\r\nexport type CssClassMap = { [className: string]: boolean };\r\n\r\ninterface IconLabels {\r\n [index: string]: string;\r\n}\r\n\r\nexport type Product = {\r\n description?: string;\r\n samlLinkUrl?: string;\r\n iconUrl: string;\r\n id: string;\r\n linkUrl: string;\r\n name: string;\r\n};\r\n\r\n// products retrieved from endpoint:\r\nexport type NavigatorPayload = {\r\n connection_name?: string;\r\n current_product_id: string;\r\n email: string;\r\n logout_url: string;\r\n products: Product[];\r\n};\r\n\r\nexport type validButtonTypes =\r\n | \"primary\"\r\n | \"secondary\"\r\n | \"textonly\"\r\n | \"icononly\"\r\n | \"navigational\"\r\n | \"selector\"\r\n | \"selector-primary\"\r\n | \"pairpositive\"\r\n | \"pairnegative\";\r\n\r\n//List of icon codes with more indicative descriptors to create labels for icon-only buttons\r\nexport const iconLabels: IconLabels = {\r\n f156: \"Close\",\r\n f3eb: \"Edit\",\r\n f739: \"Cancel\",\r\n f12c: \"Save\",\r\n f1c0: \"Delete\",\r\n f349: \"Search\",\r\n f207: \"Export info\",\r\n f1d9: \"Open dropdown\",\r\n f04d: \"Go back\",\r\n f054: \"Go forward\",\r\n f141: \"Left\",\r\n f142: \"Right\",\r\n f35e: \"Menu left\",\r\n f35d: \"Toggle menu down\",\r\n f30d: \"Backspace\",\r\n f645: \"Sort hierarchically\",\r\n f4bb: \"Sort alphabetically\",\r\n};\r\n\r\n// For backwards compatibility, the icon prop accepts the icon name minus mdi- prefix, e.g. \"icon\"\r\n// this function converts the name to the corresponding code or returns what it was passed\r\ninterface IconCodes {\r\n [index: string]: string;\r\n}\r\nexport function getIconCodeFromName(icon: string): string {\r\n return iconCodes[icon] || icon;\r\n}\r\n\r\nconst iconCodes: IconCodes = {\r\n close: \"f156\",\r\n pencil: \"f3eb\",\r\n cancel: \"f739\",\r\n check: \"f12c\",\r\n delete: \"f1c0\",\r\n magnify: \"f349\",\r\n export: \"f207\",\r\n \"dots-vertical\": \"f1d9\",\r\n \"arrow-left\": \"f04d\",\r\n \"arrow-right\": \"f054\",\r\n \"chevron-left\": \"f141\",\r\n \"chevron-right\": \"f142\",\r\n \"menu-left\": \"f35e\",\r\n \"menu-down\": \"f35d\",\r\n \"keyboard-backspace\": \"f30d\",\r\n \"file-tree\": \"f645\",\r\n \"sort-alphabetical\": \"f4bb\",\r\n \"checkbox-marked-circle\": \"f133\",\r\n \"account-settings\": \"f630\",\r\n \"backup-restore\": \"f06f\",\r\n};\r\n\r\nexport const defaultMode = \"planning\";\r\n\r\nexport const getWmMode = (ref?: any) => {\r\n return ref.getAttribute(\"mode\") || document.documentElement.getAttribute(\"mode\") || defaultMode;\r\n};\r\n\r\nexport type TooltipPlacement =\r\n | \"top\"\r\n | \"bottom\"\r\n | \"left\"\r\n | \"right\"\r\n | \"bottom-left\"\r\n | \"bottom-right\"\r\n | \"top-right\"\r\n | \"top-left\";\r\n\r\nexport type SliceElement = (SVGElement | HTMLElement);\r\n\r\nexport type SliceDetails = {\r\n amount: number;\r\n perc: number;\r\n legend: string | null;\r\n color: string;\r\n offset: number;\r\n id: string;\r\n title: string | null;\r\n text: string | null;\r\n buttonText: string | null;\r\n sliceRef: Element;\r\n inSmallCluster: boolean;\r\n coords?: {x: number, y: number};\r\n};\r\n\r\nexport type ChartDetails = {\r\n size: number;\r\n colors: Array<string>;\r\n thickness?: number;\r\n padding: number;\r\n category: \"doughnut\" | \"stackedBar\" | \"simpleBar\";\r\n};\r\n\r\nexport type ChartType =\r\n // progress monitor types\r\n | \"doughnut\"\r\n | \"bar\"\r\n // chart types\r\n | \"doughnut1\"\r\n | \"doughnut2\"\r\n | \"doughnut2plus\"\r\n | \"doughnut3\"\r\n | \"bar2\"\r\n | \"bar3\"\r\n | \"bar4\"\r\n | \"bar5\"\r\n | \"bar6\"\r\n | \"bar7\"\r\n // deprecated\r\n | \"doughnut0\"\r\n | \"bar1\";\r\n\r\nexport type LegendItem = { key: string; color: string };\r\n\r\nexport type UploadedFile = {\r\n name: string;\r\n id: string;\r\n type: string;\r\n lastUpdated: string; // in display format\r\n progress?: number;\r\n fileActions?: string;\r\n size?: string; // in display format\r\n};\r\n"],"mappings":"SAuEgBA,oBAAoBC,GAClC,OAAOC,UAAUD,IAASA,CAC5B,CAEA,IAAMC,UAAuB,CAC3BC,MAAO,OACPC,OAAQ,OACRC,OAAQ,OACRC,MAAO,OACPC,OAAQ,OACRC,QAAS,OACTC,OAAQ,OACR,gBAAiB,OACjB,aAAc,OACd,cAAe,OACf,eAAgB,OAChB,gBAAiB,OACjB,YAAa,OACb,YAAa,OACb,qBAAsB,OACtB,YAAa,OACb,oBAAqB,OACrB,yBAA0B,OAC1B,mBAAoB,OACpB,iBAAkB,QAGb,IAAMC,YAAc,W,IAEdC,UAAY,SAACC,GACxB,OAAOA,EAAIC,aAAa,SAAWC,SAASC,gBAAgBF,aAAa,SAAWH,WACtF,S"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["closeVerb","intl","formatMessage","id","defaultMessage","description"],"sources":["src/global/intl.ts"],"sourcesContent":["import { intl } from \"./functions\";\r\n\r\nexport const closeVerb: string = intl.formatMessage({\r\n id: \"global.closeVerb\",\r\n defaultMessage: \"Close\",\r\n description: \"For a button, to close a user interface element\",\r\n});\r\n"],"mappings":"mDAEaA,UAAoBC,KAAKC,cAAc,CAClDC,GAAI,mBACJC,eAAgB,QAChBC,YAAa,2D"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["wmTabItemCss","TabItem","exports","this","tabClicked","ev","preventDefault","_this","wmTabSelected","emit","tabId","tabSelected","tabPressed","key","includes","keydownOnTabItem","tabItem","el","Object","defineProperty","class_1","prototype","parentElement","toggleTabbingOn","linkEl","classList","add","toggleTabbingOff","remove","componentDidLoad","tabItemLoaded","render","classes","show","parentTabList","customBackground","styles","padding","customPadding","bkgSize","parseInt","units","split","pop","concat","h","Host","role","class","style","ref","onClick","id","onKeyDown","selected","tabindex","wmTabListCss","TabList","debouncedSetLayout","debounce","listWidth","setListWidth","forceUpdate","class_2","offsetWidth","Array","from","querySelectorAll","tabItems","filter","t","getLinkEl","tab","shadowRoot","querySelector","allPanels","document","tabIds","map","p","getPanel","panels","find","newCalc","reduce","sum","setSelected","singlePanel","length","setAttributesOnPanel","selectedTabItem","active","panel","showItems","hideItems","componentWillLoad","focus","setLayout","selectedTab","setAriaOnPanelAndTab","target","setAttributesOnTab","link","setAttribute","removeAttributesOnTab","removeAttribute","handleTabSelected","controllerEnabled","detail","handleKeydown","index","indexOf","handleLeftRightArrow","tabToFocus","renderMenuOrTabs","menuLayout","label","renderOptions","margins","textContent","wmTabPanelCss","TabPanel","class_3","generateId","tabPanelLoaded"],"sources":["src/components/wm-tabs/wm-tab-item/wm-tab-item.scss?tag=wm-tab-item&encapsulation=shadow","src/components/wm-tabs/wm-tab-item/wm-tab-item.tsx","src/components/wm-tabs/wm-tab-list/wm-tab-list.scss?tag=wm-tab-list&encapsulation=shadow","src/components/wm-tabs/wm-tab-list/wm-tab-list.tsx","src/components/wm-tabs/wm-tab-panel/wm-tab-panel.scss?tag=wm-tab-panel","src/components/wm-tabs/wm-tab-panel/wm-tab-panel.tsx"],"sourcesContent":[":host {\r\n * {\r\n box-sizing: border-box;\r\n }\r\n font-family: inherit;\r\n display: inline-block;\r\n\r\n .tab-item {\r\n list-style-type: none;\r\n height: 100%;\r\n display: inline-block;\r\n\r\n .tab {\r\n @include border-radius(0);\r\n color: $button-default-text;\r\n text-decoration: none;\r\n letter-spacing: 0.7px;\r\n font-size: rem-calc(14);\r\n font-weight: 500;\r\n opacity: 1;\r\n position: relative;\r\n text-transform: uppercase;\r\n display: inline-block;\r\n height: calc(40 / 12 * 1em);\r\n line-height: calc(40 / 12 * 1em);\r\n padding-right: rem-calc(24);\r\n padding-left: rem-calc(24);\r\n\r\n &[aria-selected=\"true\"] {\r\n font-weight: 700;\r\n opacity: 1;\r\n background: linear-gradient(currentColor, currentColor) bottom / 0 0 no-repeat;\r\n background-size: calc(100% - 50px) 3px;\r\n\r\n &.dark {\r\n color: $button-primary-text;\r\n }\r\n }\r\n\r\n &,\r\n &:hover,\r\n &:active {\r\n outline: none;\r\n }\r\n\r\n &:focus {\r\n outline: none;\r\n }\r\n\r\n &.dark:not([aria-selected=\"true\"]) {\r\n opacity: 0.8;\r\n color: $button-primary-text;\r\n }\r\n\r\n &.user-is-tabbing:focus:not(:active) {\r\n outline: none;\r\n @include focus-style;\r\n &.dark {\r\n @include focus-on-dark;\r\n }\r\n }\r\n }\r\n }\r\n\r\n &.hide {\r\n display: none;\r\n }\r\n}\r\n","import { Component, Element, h, Prop, Event, EventEmitter, Listen, Host } from \"@stencil/core\";\r\n\r\n@Component({\r\n tag: \"wm-tab-item\",\r\n styleUrl: \"wm-tab-item.scss\",\r\n shadow: { delegatesFocus: true },\r\n})\r\nexport class TabItem {\r\n @Element() el!: HTMLWmTabItemElement;\r\n\r\n private get parentTabList(): HTMLWmTabListElement | null {\r\n return this.el.parentElement as HTMLWmTabListElement;\r\n }\r\n\r\n /**\r\n * Indicates whether the tab is currently active\r\n */\r\n @Prop() selected: boolean = false;\r\n\r\n @Prop() show: boolean = true;\r\n\r\n /**\r\n * The id of the tab, linked to a tab panel.\r\n */\r\n @Prop() tabId: string = \"\";\r\n\r\n /**\r\n * Reference to focusable link element\r\n */\r\n linkEl?: HTMLAnchorElement;\r\n\r\n @Event() wmTabSelected!: EventEmitter<{ tabId: string }>;\r\n @Event() tabSelected!: EventEmitter<{ tabId: string }>; // deprecated in favor of wmTabSelected\r\n\r\n @Event() keydownOnTabItem!: EventEmitter<{\r\n tabItem: HTMLWmTabItemElement;\r\n key: string;\r\n }>;\r\n\r\n @Event() tabItemLoaded!: EventEmitter<{ tab: HTMLWmTabItemElement }>;\r\n\r\n private tabClicked = (ev: MouseEvent) => {\r\n ev.preventDefault();\r\n this.wmTabSelected.emit({ tabId: this.tabId });\r\n this.tabSelected.emit({ tabId: this.tabId }); // deprecated\r\n };\r\n\r\n private tabPressed = (ev: KeyboardEvent) => {\r\n const key = ev.key;\r\n\r\n if (key === \"Enter\" || key === \" \") {\r\n ev.preventDefault();\r\n this.wmTabSelected.emit({ tabId: this.tabId });\r\n this.tabSelected.emit({ tabId: this.tabId }); // deprecated\r\n } else if (key.includes(\"Arrow\")) {\r\n ev.preventDefault();\r\n this.keydownOnTabItem.emit({ tabItem: this.el, key: ev.key });\r\n }\r\n };\r\n\r\n @Listen(\"keydown\", { target: \"document\" })\r\n toggleTabbingOn() {\r\n this.linkEl && this.linkEl.classList.add(\"user-is-tabbing\");\r\n }\r\n\r\n @Listen(\"click\", { target: \"document\" })\r\n toggleTabbingOff() {\r\n this.linkEl && this.linkEl.classList.remove(\"user-is-tabbing\");\r\n }\r\n\r\n componentDidLoad() {\r\n this.tabItemLoaded.emit();\r\n }\r\n\r\n render() {\r\n let classes = this.show ? \"\" : \"hide \";\r\n classes += this.parentTabList && this.parentTabList.customBackground == \"dark\" ? \"dark\" : \"\";\r\n\r\n let styles = {};\r\n const padding = this.parentTabList && this.parentTabList.customPadding;\r\n if (padding) {\r\n const bkgSize = parseInt(padding, 10) * 2 || 0;\r\n const units = padding.split(/([0-9]+)/).pop();\r\n styles = {\r\n \"padding-left\": this.parentTabList!.customPadding,\r\n \"padding-right\": this.parentTabList!.customPadding,\r\n \"background-size\": `calc(100% - ${bkgSize}${units}) 3px`,\r\n };\r\n }\r\n\r\n return (\r\n <Host role=\"presentation\">\r\n <li class=\"tab-item\" role=\"presentation\">\r\n <a\r\n class={`tab ${classes}`}\r\n style={styles}\r\n role=\"tab\"\r\n ref={(el) => (this.linkEl = el as HTMLAnchorElement)}\r\n onClick={this.tabClicked}\r\n id={`tab-link-${this.tabId}`}\r\n onKeyDown={(ev: KeyboardEvent) => this.tabPressed(ev)}\r\n aria-selected={this.selected ? \"true\" : \"false\"}\r\n tabindex={this.selected ? 0 : -1}\r\n >\r\n <slot></slot>\r\n </a>\r\n </li>\r\n </Host>\r\n );\r\n }\r\n}\r\n",":host,\r\nwm-tab-list {\r\n * {\r\n box-sizing: border-box;\r\n }\r\n\r\n position: relative;\r\n white-space: nowrap;\r\n height: fit-content;\r\n display: block;\r\n\r\n .tabcontainer {\r\n margin: 0;\r\n margin-left: -24px;\r\n width: 100%;\r\n height: rem-calc(65);\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n padding: 0;\r\n\r\n &.dark {\r\n background: rgb(53, 59, 72);\r\n margin: 0;\r\n }\r\n }\r\n\r\n wm-select {\r\n padding: rem-calc(6) 0;\r\n }\r\n}\r\n","import { forceUpdate, Component, Prop, Element, h, Watch, Listen, Host, Event, EventEmitter } from \"@stencil/core\";\r\nimport { debounce } from \"../../../global/functions\";\r\n\r\n@Component({\r\n tag: \"wm-tab-list\",\r\n styleUrl: \"wm-tab-list.scss\",\r\n shadow: { delegatesFocus: true },\r\n})\r\nexport class TabList {\r\n @Element() el!: any;\r\n\r\n @Prop() customBackground?: \"dark\" | \"\";\r\n @Prop() customPadding?: string;\r\n @Prop() selectedTab?: string;\r\n\r\n /**\r\n * Delegates control to the component, which will listen for the tabSelected event, update the display of the tab panels, and update the selected tab on display. When set to false, the app must listen for the event and update the selectedTab attribute. Offers more control for devs, who may want to control when data loads or run other functions when tabs are switched.\r\n */\r\n @Prop() controllerEnabled: boolean = false;\r\n\r\n /**\r\n * Set to true when the tab list exceeds the parent width. Component will render the menu layout.\r\n */\r\n private get menuLayout(): boolean {\r\n if (this.listWidth) {\r\n return this.el.offsetWidth < this.listWidth - 24; // to take into account the negative margin on the ul\r\n } else {\r\n return false; // in case listWidth couldn't get computed, we render regular tabs\r\n }\r\n }\r\n\r\n /**\r\n * Emitted by wm-select options when tabs have the menu format\r\n */\r\n @Event() wmTabSelected!: EventEmitter<{ tabId: string }>;\r\n @Event() tabSelected!: EventEmitter<{ tabId: string }>; // deprecated in favor of wmTabSelected\r\n\r\n private get tabItems(): Array<HTMLWmTabItemElement> {\r\n return Array.from(this.el.querySelectorAll(\"wm-tab-item\"));\r\n }\r\n\r\n get selectedTabItem(): HTMLWmTabItemElement {\r\n return this.tabItems.filter((t) => t.selected)[0];\r\n }\r\n\r\n private getLinkEl(tab: HTMLWmTabItemElement): HTMLAnchorElement {\r\n return tab.shadowRoot!.querySelector(\"a\")!;\r\n }\r\n\r\n private get panels(): Array<HTMLWmTabPanelElement> {\r\n const allPanels = Array.from(document.querySelectorAll(\"wm-tab-panel\"));\r\n const tabIds = this.tabItems.map((t) => t.tabId);\r\n return allPanels.filter((p) => tabIds.includes(p.tabId));\r\n }\r\n\r\n private getPanel(tabId: string) {\r\n return this.panels.find((p) => p.tabId === tabId);\r\n }\r\n\r\n private listWidth?: number;\r\n\r\n private setListWidth() {\r\n let newCalc = this.tabItems.reduce((sum, tab) => sum + tab.offsetWidth, 0);\r\n this.listWidth = newCalc && newCalc > 0 ? newCalc : this.listWidth; // the function may return 0. In this case keep the previous value\r\n }\r\n\r\n @Watch(\"selectedTab\")\r\n setSelected(id: string) {\r\n this.tabItems.map((tab: HTMLWmTabItemElement) => (tab.selected = tab.tabId === id));\r\n const singlePanel = this.panels.length === 1 && this.tabItems.length > 1;\r\n if (singlePanel) {\r\n /**\r\n * If the app conditionally renders content in one single tab panel rather than allocating the content to discrete panels, then the tab panels aria references needs to update whenever a new tab item is selected.\r\n */\r\n this.setAttributesOnPanel(this.panels[0], this.selectedTabItem);\r\n this.panels[0].active = true;\r\n } else {\r\n this.panels.map((panel: HTMLWmTabPanelElement) => (panel.active = panel.tabId === id));\r\n }\r\n }\r\n\r\n showItems() {\r\n this.tabItems.map((t) => (t.show = true));\r\n }\r\n\r\n hideItems() {\r\n this.tabItems.map((t) => (t.show = false));\r\n }\r\n\r\n componentWillLoad() {\r\n this.el.focus = () => {\r\n // in addition to delegatesFocus, we need to highjack the focus method to send focus to the selected tab-item\r\n this.selectedTabItem && this.selectedTabItem.focus();\r\n };\r\n }\r\n\r\n componentDidLoad() {\r\n this.setLayout(); // this require measurements of DOM elements so can't be done before first paint\r\n const selectedTab = this.selectedTab || this.tabItems[0].tabId;\r\n this.setSelected(selectedTab);\r\n }\r\n\r\n @Listen(\"tabItemLoaded\")\r\n tabItemLoaded(ev: CustomEvent) {\r\n this.setAriaOnPanelAndTab(ev.target as HTMLWmTabItemElement);\r\n }\r\n\r\n setAriaOnPanelAndTab(tab: HTMLWmTabItemElement) {\r\n const panel = this.getPanel(tab.tabId);\r\n\r\n // If there's no panel, check for case where content is conditionally rendered in one panel, in which case attributes on all tabs should point to this single panel.\r\n if (!panel) {\r\n if (this.panels.length === 1) {\r\n this.setAttributesOnTab(tab, this.panels[0]);\r\n }\r\n } else {\r\n // Otherwise, set attributes on each tab item that loads and its associated panel\r\n this.setAttributesOnPanel(panel, tab);\r\n this.setAttributesOnTab(tab, panel);\r\n }\r\n }\r\n\r\n setAttributesOnTab(tab: HTMLWmTabItemElement, panel: HTMLWmTabPanelElement) {\r\n const link = this.getLinkEl(tab);\r\n\r\n if (link) {\r\n link.setAttribute(\"aria-controls\", panel.id);\r\n link.setAttribute(\"href\", `#${panel.id}`);\r\n }\r\n }\r\n\r\n removeAttributesOnTab(tab: HTMLWmTabItemElement) {\r\n const link = this.getLinkEl(tab);\r\n\r\n if (link) {\r\n link.removeAttribute(\"aria-controls\");\r\n link.removeAttribute(\"href\");\r\n }\r\n }\r\n\r\n setAttributesOnPanel(panel: HTMLWmTabPanelElement, tab: HTMLWmTabItemElement) {\r\n const link = this.getLinkEl(tab);\r\n\r\n if (link) {\r\n panel.setAttribute(\"aria-labelledby\", link.id);\r\n panel.setAttribute(\"tab-id\", tab.tabId);\r\n }\r\n }\r\n\r\n @Listen(\"wmTabSelected\")\r\n handleTabSelected(ev: CustomEvent) {\r\n if (this.controllerEnabled) {\r\n this.setSelected(ev.detail.tabId);\r\n }\r\n }\r\n\r\n @Listen(\"keydownOnTabItem\")\r\n handleKeydown(ev: CustomEvent) {\r\n const key = ev.detail.key;\r\n const index = this.tabItems.indexOf(ev.detail.tabItem);\r\n\r\n if (key === \"ArrowLeft\" || key === \"ArrowRight\") {\r\n this.handleLeftRightArrow(index, key);\r\n }\r\n }\r\n\r\n handleLeftRightArrow(index: number, key: string) {\r\n if (key) {\r\n index = key === \"ArrowLeft\" ? index - 1 : index + 1;\r\n }\r\n\r\n if (index < 0) {\r\n index = this.tabItems.length - 1;\r\n } else if (index === this.tabItems.length) {\r\n index = 0;\r\n }\r\n\r\n const tabToFocus = this.tabItems[index];\r\n this.getLinkEl(tabToFocus).focus();\r\n }\r\n\r\n /**\r\n * Change layout if parent size drops below tab list width\r\n */\r\n @Listen(\"resize\", { target: \"window\" })\r\n setLayout() {\r\n this.debouncedSetLayout();\r\n }\r\n\r\n debouncedSetLayout = debounce(() => {\r\n if (!this.listWidth) {\r\n this.setListWidth();\r\n }\r\n forceUpdate(this.el);\r\n }, 250);\r\n\r\n renderMenuOrTabs() {\r\n if (this.menuLayout) {\r\n this.hideItems();\r\n return (\r\n <wm-select label=\"Tab Selection\" label-position=\"none\">\r\n {this.renderOptions()}\r\n </wm-select>\r\n );\r\n } else {\r\n this.showItems();\r\n let margins = {};\r\n if (this.customPadding) {\r\n margins = {\r\n \"margin-left\": \"-\" + this.customPadding,\r\n };\r\n }\r\n return (\r\n <ul class={`tabcontainer ${this.customBackground || \"\"}`} style={margins} role=\"tablist\">\r\n <slot></slot>\r\n </ul>\r\n );\r\n }\r\n }\r\n\r\n renderOptions() {\r\n return this.tabItems.map((t) => (\r\n <wm-option\r\n id={`tab-link-${t.tabId}`}\r\n selected={t.tabId === this.selectedTab}\r\n onClick={(ev) => {\r\n ev.preventDefault();\r\n this.wmTabSelected.emit({ tabId: t.tabId });\r\n this.tabSelected.emit({ tabId: t.tabId }); // deprecated\r\n }}\r\n >\r\n {t.textContent}\r\n </wm-option>\r\n ));\r\n }\r\n\r\n render() {\r\n return <Host class={this.menuLayout ? \"menu\" : \"\"}>{this.renderMenuOrTabs()}</Host>;\r\n }\r\n}\r\n","wm-tab-panel {\r\n visibility: inherit;\r\n\r\n &.tab-hidden {\r\n display: none;\r\n }\r\n\r\n &:active {\r\n outline: none;\r\n }\r\n\r\n &:focus {\r\n outline: none;\r\n }\r\n\r\n &.user-is-tabbing:focus {\r\n outline: -webkit-focus-ring-color auto 5px;\r\n }\r\n}\r\n","import { Component, Element, Prop, Host, h, Event, Listen, EventEmitter } from \"@stencil/core\";\r\nimport { generateId } from \"../../../global/functions\";\r\n\r\n@Component({\r\n tag: \"wm-tab-panel\",\r\n styleUrl: \"wm-tab-panel.scss\",\r\n})\r\nexport class TabPanel {\r\n @Element() el!: HTMLWmTabPanelElement;\r\n\r\n /**\r\n * Indicates whether the panel should be displayed or not.\r\n */\r\n @Prop({ mutable: true }) active: boolean = false;\r\n\r\n /**\r\n * The id of the panel, linked to a tabItem in the tablist.\r\n */\r\n @Prop({ mutable: true }) tabId: string = \"\";\r\n\r\n @Event() tabPanelLoaded!: EventEmitter<{ tabId: string }>;\r\n\r\n componentWillLoad() {\r\n !this.el.id && this.el.setAttribute(\"id\", generateId());\r\n }\r\n\r\n componentDidLoad() {\r\n this.tabPanelLoaded.emit({ tabId: this.tabId });\r\n }\r\n\r\n @Listen(\"keydown\", { target: \"document\" })\r\n toggleTabbingOn() {\r\n this.el.classList.add(\"user-is-tabbing\");\r\n }\r\n\r\n @Listen(\"click\", { target: \"document\" })\r\n toggleTabbingOff() {\r\n this.el.classList.remove(\"user-is-tabbing\");\r\n }\r\n\r\n render() {\r\n return <Host role=\"tabpanel\" class={{ \"tab-hidden\": !this.active }}></Host>;\r\n }\r\n}\r\n"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as a,c as s,h as n,g as r}from"./p-1c23de4a.js";import{i as t,g as i,s as e,j as o}from"./p-05e0f901.js";import{c}from"./p-dbf657c5.js";const m='.user-is-tabbing .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack:focus:not(:active){-webkit-box-shadow:0 2px 2px 0 rgba(244, 243, 246, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 0 4px 3px #c6b4e3;-moz-box-shadow:0 2px 2px 0 rgba(244, 243, 246, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 0 4px 3px #c6b4e3;box-shadow:0 2px 2px 0 rgba(244, 243, 246, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 0 4px 3px #c6b4e3;outline:none}:host *,wm-snackbar *{-webkit-box-sizing:border-box;box-sizing:border-box;margin:unset}:host .wm-snackbars,wm-snackbar .wm-snackbars{position:fixed;bottom:0;left:1.25rem;right:1.25rem;padding:0.25rem 0.625rem 1.875rem;z-index:2001;max-width:35.5rem;max-height:17.5rem;-webkit-overflow-scrolling:touch;overflow:auto}:host .wm-snackbars.empty,wm-snackbar .wm-snackbars.empty{-ms-transition:all 0.25s 0ms cubic-bezier(0.4, 0, 1, 1);-webkit-transition:all 0.25s 0ms cubic-bezier(0.4, 0, 1, 1);-moz-transition:all 0.25s 0ms cubic-bezier(0.4, 0, 1, 1);transition:all 0.25s 0ms cubic-bezier(0.4, 0, 1, 1);padding-top:0;padding-bottom:0}:host .wm-snackbars .wm-snack-wrapper,wm-snackbar .wm-snackbars .wm-snack-wrapper{width:100%;height:100%}:host .wm-snackbars .wm-snack-wrapper:not(:last-child),wm-snackbar .wm-snackbars .wm-snack-wrapper:not(:last-child){margin-bottom:1.25rem}:host .wm-snackbars .wm-snack-wrapper .wm-snackbar,wm-snackbar .wm-snackbars .wm-snack-wrapper .wm-snackbar{-webkit-box-shadow:0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 3px rgba(0, 0, 0, 0.12), 0 4px 15px 0 rgba(0, 0, 0, 0.2);-moz-box-shadow:0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 3px rgba(0, 0, 0, 0.12), 0 4px 15px 0 rgba(0, 0, 0, 0.2);box-shadow:0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 3px rgba(0, 0, 0, 0.12), 0 4px 15px 0 rgba(0, 0, 0, 0.2);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-ms-transition:all 0.25s 0ms cubic-bezier(0.4, 0, 1, 1);-webkit-transition:all 0.25s 0ms cubic-bezier(0.4, 0, 1, 1);-moz-transition:all 0.25s 0ms cubic-bezier(0.4, 0, 1, 1);transition:all 0.25s 0ms cubic-bezier(0.4, 0, 1, 1);font-size:0.875rem;color:#fff;padding:0.9375rem 1.875rem;background:#4a4a4a;opacity:0;left:0;position:relative;font-family:inherit}:host .wm-snackbars .wm-snack-wrapper .wm-snackbar .link,wm-snackbar .wm-snackbars .wm-snack-wrapper .wm-snackbar .link{letter-spacing:0;text-transform:none;font-size:0.875rem;border:none;background:transparent;padding-left:0;padding-right:0;height:auto;border-radius:0;line-height:1;color:#85dadf;margin:0 3.125rem 0 0.625rem;text-decoration:none;font-weight:600;cursor:pointer}:host .wm-snackbars .wm-snack-wrapper .wm-snackbar .link.new-window::after,wm-snackbar .wm-snackbars .wm-snack-wrapper .wm-snackbar .link.new-window::after{display:inline-block;font:normal normal normal 24px/1 "Material Design Icons";font-size:inherit;text-rendering:auto;line-height:inherit;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:inline;content:"\\f137";margin-left:0.25rem}:host .wm-snackbars .wm-snack-wrapper .wm-snackbar .link:hover,wm-snackbar .wm-snackbars .wm-snack-wrapper .wm-snackbar .link:hover{text-decoration:underline}:host .wm-snackbars .wm-snack-wrapper .wm-snackbar .link:focus,wm-snackbar .wm-snackbars .wm-snack-wrapper .wm-snackbar .link:focus{outline:none;border:none}:host .wm-snackbars .wm-snack-wrapper .wm-snackbar .link::-moz-focus-inner,wm-snackbar .wm-snackbars .wm-snack-wrapper .wm-snackbar .link::-moz-focus-inner{border:0;outline:none}:host .wm-snackbars .wm-snack-wrapper .wm-snackbar:not(:last-child),wm-snackbar .wm-snackbars .wm-snack-wrapper .wm-snackbar:not(:last-child){margin-bottom:1.25rem}:host .wm-snackbars .wm-snack-wrapper .wm-snackbar.active:not(button),wm-snackbar .wm-snackbars .wm-snack-wrapper .wm-snackbar.active:not(button){opacity:1}:host .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg,wm-snackbar .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;width:100%;position:relative;padding:0}:host .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .msgtext,wm-snackbar .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .msgtext{width:100%}:host .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack,wm-snackbar .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;-webkit-border-radius:50%;-moz-border-radius:50%;-ms-border-radius:50%;border-radius:50%;background-color:#3b3b3b;color:#ffffff;cursor:pointer;border:none;font-size:1rem;padding:0;height:auto;line-height:1;min-width:2.75rem;min-height:2.75rem;text-align:center;letter-spacing:normal}@media screen and (min-width: 48rem){:host .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack,wm-snackbar .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack{min-width:1.875rem;min-height:1.875rem}}:host .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack:before,wm-snackbar .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack:before{display:inline-block;font:normal normal normal 24px/1 "Material Design Icons";font-size:inherit;text-rendering:auto;line-height:inherit;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\\f156"}:host .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack:hover,wm-snackbar .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack:hover{background-color:#fff;color:#4a4a4a}:host .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack:focus,wm-snackbar .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack:focus{outline:none}:host .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack::-moz-focus-inner,wm-snackbar .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack::-moz-focus-inner{border:0;outline:none}:host .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack:active,wm-snackbar .wm-snackbars .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack:active{-ms-transform:scale(0.9, 0.9);-webkit-transform:scale(0.9, 0.9);-moz-transform:scale(0.9, 0.9);transform:scale(0.9, 0.9)}:host .wm-snackbars .wm-snack-wrapper .wm-snackbar .sr-only,wm-snackbar .wm-snackbars .wm-snack-wrapper .wm-snackbar .sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;border:0 !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;white-space:nowrap !important;margin:-1px !important;top:0;left:0}:host .sr-only,wm-snackbar .sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;border:0 !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;white-space:nowrap !important;margin:-1px !important;top:0;left:0}.user-is-tabbing .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack:focus:not(:active)>.tooltip{clip:auto;width:auto;height:auto;opacity:1;-webkit-transition:opacity 500ms 500ms;transition:opacity 500ms 500ms;padding:0.375rem;top:2.75rem;left:2.75rem;white-space:nowrap;-webkit-transform:translateX(-50%);transform:translateX(-50%)}@media screen and (min-width: 48rem){.user-is-tabbing .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack:focus:not(:active)>.tooltip{top:2.0625rem;left:auto}}.user-is-tabbing .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .link:focus:not(:active){outline:none;background:-webkit-gradient(linear, left top, right top, color-stop(66%, #85dadf), color-stop(0, transparent)) repeat-x;background:linear-gradient(90deg, #85dadf 66%, transparent 0) repeat-x;background-size:0.375rem 0.1875rem;background-position:0 1em;border-radius:0;line-height:normal}';const w=class{constructor(n){a(this,n);this.wmSnackbarSnackFinished=s(this,"wmSnackbarSnackFinished",7);this.userFinishedSnack=s(this,"userFinishedSnack",7);this.wmSnackbarActionTriggered=s(this,"wmSnackbarActionTriggered",7);this.userTriggeredAction=s(this,"userTriggeredAction",7);this.parsedNotifications=[];this.isTabbing=false;this.timers=[];this.newNotification=false;this.newWindowMessage=t.formatMessage({id:"global.newWindowLink",defaultMessage:"Opens in a new window."});this.notifications="[]"}updateSnacks(a){const s=JSON.parse(a);const n=s.length;const r=this.parsedNotifications.length;this.parsedNotifications=[];for(let a=0;a<n;a++){let n={id:s[a].id.toString(),message:s[a].message.toString(),link:s[a].link.toString(),newWindow:!!s[a].newWindow};this.parsedNotifications=[...this.parsedNotifications,n]}if(r<this.parsedNotifications.length){const a=window.setTimeout((()=>this.snackExpired()),2e4);this.timers=[a,...this.timers];this.storeElToFocusOnDismiss();this.newNotification=true}else{this.newNotification=false}}componentWillLoad(){this.uid=this.el.id?this.el.id:i()}componentDidUpdate(){this.isTabbing&&this.newNotification&&this.focusLinkAndDisableTimer();this.newNotification=false}toggleTabbingOn(){this.isTabbing=true}toggleTabbingOff(){this.isTabbing=false}focusLinkAndDisableTimer(){const a=this.parsedNotifications[0];if(a.link){let s=this.el.shadowRoot.querySelector(`#action-${a.id}`);s.focus();this.stopTimer(a)}}storeElToFocusOnDismiss(){let a=document.activeElement;while(a&&a.shadowRoot){a=a.shadowRoot.activeElement}this.focusOnDismiss=a}snackDismissed(a){this.endSnack(a);a.link&&this.isTabbing&&this.focusOnDismiss.focus()}snackExpired(){const a=this.parsedNotifications[this.parsedNotifications.length-1];this.endSnack(a)}endSnack(a){this.stopTimer(a);this.wmSnackbarSnackFinished.emit({id:a.id,message:a.message,link:a.link,newWindow:a.newWindow});this.userFinishedSnack.emit({id:a.id,message:a.message,link:a.link})}snackLinkClicked(a){this.stopTimer(a);this.wmSnackbarActionTriggered.emit({id:a.id,message:a.message,link:a.link,newWindow:a.newWindow});this.userTriggeredAction.emit({id:a.id,message:a.message,link:a.link})}stopTimer(a){this.parsedNotifications.forEach(((s,n)=>{if(s.id===a.id){clearTimeout(this.timers[n]);this.timers=this.timers.filter(((a,s)=>{if(s!==n){return a}}))}}))}renderSnackbars(){return this.parsedNotifications.map((a=>n("div",{class:"wm-snack-wrapper"},n("div",{id:`snack-${this.uid}`,class:"wm-snackbar active neutral"},n("div",{class:"sr-only",tabindex:a.link?0:-1,onFocus:()=>a.link&&this.snackDismissed(a)}),n("div",{class:"wm-snackbarmsg"},n("div",{class:"msgtext"},n("span",null,a.message),a.link&&n("a",{id:`action-${a.id}`,class:`link ${a.newWindow?"new-window":""}`,"aria-label":`Click to ${a.link}...${a.newWindow?" "+this.newWindowMessage:""}`,tabindex:0,onClick:()=>{this.snackLinkClicked(a)},onKeyDown:s=>s.key==="Enter"&&this.snackLinkClicked(a)},n("span",{"aria-hidden":"true"},a.link))),n("button",{id:`close-button-${a.id}`,"aria-label":"Close this notification",class:"closesnack",tabindex:a.link?0:-1,onClick:()=>this.snackDismissed(a),onMouseEnter:a=>e("bottom",a.target,c),onMouseLeave:()=>o(),onFocus:a=>this.isTabbing&&e("bottom",a.target,c),onBlur:()=>o()})),n("div",{class:"sr-only",tabindex:a.link?0:-1,onFocus:()=>a.link&&this.snackDismissed(a)})))))}renderLiveRegion(){const a=this.parsedNotifications[0];const s=this.isTabbing?"":a.link;const n=`${a.message} ${s}`;const r=this.el.shadowRoot.querySelector(`#wm-live-region-${this.uid}`);if(r){r.innerHTML="";const a=document.createElement("span");a.innerHTML=n;r.appendChild(a)}}render(){this.newNotification&&this.renderLiveRegion();const a=this.renderSnackbars();const s=this.parsedNotifications.length===0?"empty":"";return n("div",{class:`wm-snackbars ${s} ${this.isTabbing?"user-is-tabbing":""}`},n("div",{class:"sr-only","aria-live":"polite","aria-atomic":"false",id:`wm-live-region-${this.uid}`}),a)}get el(){return r(this)}static get watchers(){return{notifications:["updateSnacks"]}}};w.style=m;export{w as wm_snackbar};
|
|
2
|
-
//# sourceMappingURL=p-075607ac.entry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["wmSnackbarCss","Snackbar","this","parsedNotifications","isTabbing","timers","newNotification","newWindowMessage","intl","formatMessage","id","defaultMessage","updateSnacks","newValue","parsedData","JSON","parse","length","prevNotificationsLength","i","toString","message","link","newWindow","newTimer","window","setTimeout","snackExpired","storeElToFocusOnDismiss","componentWillLoad","uid","el","generateId","componentDidUpdate","focusLinkAndDisableTimer","toggleTabbingOn","toggleTabbingOff","latestNotification","shadowRoot","querySelector","focus","stopTimer","triggeringButton","document","activeElement","focusOnDismiss","snackDismissed","notification","endSnack","wmSnackbarSnackFinished","emit","userFinishedSnack","snackLinkClicked","wmSnackbarActionTriggered","userTriggeredAction","forEach","notif","index","clearTimeout","filter","timer","ind","renderSnackbars","map","h","class","tabindex","onFocus","onClick","onKeyDown","ev","key","onMouseEnter","showTooltip","target","closeVerb","onMouseLeave","hideTooltip","onBlur","renderLiveRegion","srAnnouncement","region","innerHTML","wrapper","createElement","appendChild","render","snackbars","wrappingClass"],"sources":["./src/components/wm-snackbar/wm-snackbar.scss?tag=wm-snackbar&encapsulation=shadow","./src/components/wm-snackbar/wm-snackbar.tsx"],"sourcesContent":[":host,\r\nwm-snackbar {\r\n * {\r\n box-sizing: border-box;\r\n margin: unset; //Edge\r\n }\r\n\r\n .wm-snackbars {\r\n position: fixed;\r\n bottom: rem-calc(0);\r\n left: rem-calc(20);\r\n right: rem-calc(20);\r\n padding: rem-calc(4 10 30);\r\n z-index: 2001;\r\n max-width: rem-calc(568);\r\n max-height: rem-calc(280);\r\n -webkit-overflow-scrolling: touch;\r\n overflow: auto;\r\n\r\n &.empty {\r\n @include transition(all 0.25s 0ms cubic-bezier(0.4, 0, 1, 1));\r\n padding-top: 0;\r\n padding-bottom: 0;\r\n }\r\n\r\n .wm-snack-wrapper {\r\n width: 100%;\r\n height: 100%;\r\n\r\n &:not(:last-child) {\r\n margin-bottom: rem-calc(20);\r\n }\r\n\r\n .wm-snackbar {\r\n @include shadow8;\r\n @include displayFlex;\r\n @include alignItems(center);\r\n @include transition(all 0.25s 0ms cubic-bezier(0.4, 0, 1, 1));\r\n font-size: rem-calc(14);\r\n color: #fff;\r\n padding: rem-calc(15 30);\r\n background: #4a4a4a;\r\n opacity: 0;\r\n left: 0;\r\n position: relative;\r\n font-family: inherit;\r\n\r\n .link {\r\n letter-spacing: 0;\r\n text-transform: none;\r\n font-size: rem-calc(14);\r\n border: none;\r\n background: transparent;\r\n padding-left: 0;\r\n padding-right: 0;\r\n height: auto;\r\n border-radius: 0;\r\n line-height: 1;\r\n color: $snackbar-link-color;\r\n margin: rem-calc(0 50 0 10);\r\n text-decoration: none;\r\n font-weight: 600;\r\n cursor: pointer;\r\n\r\n &.new-window::after {\r\n @include mdi-icon;\r\n display: inline;\r\n content: \"\\f137\";\r\n margin-left: rem-calc(4);\r\n }\r\n\r\n &:hover {\r\n text-decoration: underline;\r\n }\r\n\r\n &:focus {\r\n outline: none;\r\n border: none;\r\n }\r\n\r\n &::-moz-focus-inner {\r\n border: 0;\r\n outline: none;\r\n }\r\n }\r\n\r\n &:not(:last-child) {\r\n margin-bottom: rem-calc(20);\r\n }\r\n\r\n &.active:not(button) {\r\n opacity: 1;\r\n }\r\n\r\n .wm-snackbarmsg {\r\n @include displayFlex;\r\n @include justifyContent(space-between);\r\n @include alignItems(center);\r\n // font-size: rem-calc(14);\r\n width: 100%;\r\n position: relative;\r\n padding: 0;\r\n\r\n .msgtext {\r\n width: 100%;\r\n }\r\n\r\n .closesnack {\r\n @include box-shadow(none);\r\n @include border-radius(50%);\r\n background-color: #3b3b3b;\r\n color: #ffffff;\r\n cursor: pointer;\r\n border: none;\r\n font-size: rem-calc(16);\r\n padding: 0;\r\n height: auto;\r\n line-height: 1;\r\n min-width: rem-calc(44);\r\n min-height: rem-calc(44);\r\n text-align: center;\r\n letter-spacing: normal;\r\n\r\n @media screen and (min-width: rem-calc(768)) {\r\n min-width: rem-calc(30);\r\n min-height: rem-calc(30);\r\n }\r\n\r\n &:before {\r\n @include mdi-icon;\r\n content: \"\\f156\";\r\n }\r\n\r\n &:hover {\r\n background-color: #fff;\r\n color: $snackbar-color;\r\n }\r\n\r\n &:focus {\r\n outline: none;\r\n }\r\n\r\n &::-moz-focus-inner {\r\n border: 0;\r\n outline: none;\r\n }\r\n\r\n &:active {\r\n @include scale($xVal: 0.9, $yVal: 0.9);\r\n }\r\n }\r\n }\r\n\r\n .sr-only {\r\n @include srOnly;\r\n top: 0;\r\n left: 0;\r\n }\r\n }\r\n }\r\n }\r\n .sr-only {\r\n @include srOnly;\r\n top: 0;\r\n left: 0;\r\n }\r\n}\r\n.user-is-tabbing .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .closesnack:focus:not(:active) {\r\n @extend %focus-on-dark;\r\n\r\n > .tooltip {\r\n clip: auto;\r\n width: auto;\r\n height: auto;\r\n opacity: 1;\r\n transition: opacity 500ms 500ms;\r\n padding: rem-calc(6);\r\n top: rem-calc(44);\r\n left: rem-calc(44);\r\n white-space: nowrap;\r\n transform: translateX(-50%);\r\n @media screen and (min-width: rem-calc(768)) {\r\n top: rem-calc(33);\r\n left: auto;\r\n }\r\n }\r\n}\r\n\r\n.user-is-tabbing .wm-snack-wrapper .wm-snackbar .wm-snackbarmsg .link:focus:not(:active) {\r\n outline: none;\r\n background: linear-gradient(90deg, $snackbar-link-color 66%, transparent 0) repeat-x;\r\n background-size: rem-calc(6px 3px);\r\n background-position: 0 1em;\r\n border-radius: 0;\r\n line-height: normal;\r\n}\r\n","import { h, Component, Element, Prop, Event, EventEmitter, Watch, Listen } from \"@stencil/core\";\r\nimport { generateId, hideTooltip, intl, showTooltip } from \"../../global/functions\";\r\nimport { Notification } from \"../../global/interfaces\";\r\nimport { closeVerb } from \"../../global/intl\";\r\n@Component({\r\n tag: \"wm-snackbar\",\r\n styleUrl: \"wm-snackbar.scss\",\r\n shadow: true,\r\n})\r\nexport class Snackbar {\r\n @Element() el!: HTMLElement;\r\n //Prop receives notifications as JSON string, which is later parsed into an array of objects.\r\n @Prop({ mutable: true, reflect: true }) notifications: string = \"[]\";\r\n\r\n private parsedNotifications: Array<Notification> = []; //Holds the parsed array\r\n private uid!: string;\r\n private focusOnDismiss!: HTMLElement;\r\n private isTabbing: boolean = false; //For screenreader purposes, to ensure link receives focus even after screenreader interprets \"enter\" as a \"click\"\r\n private timers: Array<number> = [];\r\n private newNotification: boolean = false;\r\n private newWindowMessage = intl.formatMessage({\r\n id: \"global.newWindowLink\",\r\n defaultMessage: \"Opens in a new window.\",\r\n });\r\n\r\n @Event() wmSnackbarSnackFinished!: EventEmitter<Object>;\r\n @Event() userFinishedSnack!: EventEmitter<Object>; // deprecated in favor of wmSnackbarSnackFinished\r\n @Event() wmSnackbarActionTriggered!: EventEmitter<Object>;\r\n @Event() userTriggeredAction!: EventEmitter<Object>; // deprecated in favor of wmSnackbarActionTriggered\r\n\r\n @Watch(\"notifications\")\r\n updateSnacks(newValue: string) {\r\n const parsedData = JSON.parse(newValue);\r\n const length = parsedData.length;\r\n const prevNotificationsLength = this.parsedNotifications.length;\r\n this.parsedNotifications = [];\r\n\r\n //Parse notifications received as props and store a reference to them\r\n for (let i = 0; i < length; i++) {\r\n let newNotification: any = {\r\n id: parsedData[i].id.toString(),\r\n message: parsedData[i].message.toString(),\r\n link: parsedData[i].link.toString(),\r\n newWindow: !!parsedData[i].newWindow,\r\n };\r\n this.parsedNotifications = [...this.parsedNotifications, newNotification];\r\n }\r\n\r\n //If a new notification was added, set a timer and store a reference to the current active element so that if focus must move to the notification, it can return the user where they were once they dismiss the notification.\r\n if (prevNotificationsLength < this.parsedNotifications.length) {\r\n const newTimer = window.setTimeout(() => this.snackExpired(), 20000);\r\n this.timers = [newTimer, ...this.timers];\r\n this.storeElToFocusOnDismiss();\r\n this.newNotification = true;\r\n } else {\r\n this.newNotification = false;\r\n }\r\n }\r\n\r\n componentWillLoad() {\r\n this.uid = this.el.id ? this.el.id : generateId();\r\n }\r\n\r\n //A change in the notificaiton prop will trigger the update function. The update's only role is to determine how focus should be managed when a notification is added.\r\n componentDidUpdate() {\r\n //If the user is tabbing and there's a new notification, focus the link and disable timer.\r\n this.isTabbing && this.newNotification && this.focusLinkAndDisableTimer();\r\n this.newNotification = false;\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 focusLinkAndDisableTimer() {\r\n //If the new notification has a link, focus the link and clear the timeout. This is for accessibility purposes, for keyboard/screenreader users.\r\n const latestNotification = this.parsedNotifications[0];\r\n\r\n if (latestNotification.link) {\r\n let link = this.el.shadowRoot!.querySelector(`#action-${latestNotification.id}`) as HTMLAnchorElement;\r\n link.focus();\r\n this.stopTimer(latestNotification);\r\n }\r\n }\r\n\r\n storeElToFocusOnDismiss() {\r\n let triggeringButton = document.activeElement! as HTMLElement;\r\n while (triggeringButton && triggeringButton.shadowRoot) {\r\n triggeringButton = triggeringButton.shadowRoot.activeElement as HTMLButtonElement;\r\n }\r\n this.focusOnDismiss = triggeringButton;\r\n }\r\n\r\n snackDismissed(notification: Notification) {\r\n this.endSnack(notification);\r\n //Focus should only be returned if it was moved in the first place, i.e., there was a link and the user was tabbing. Otherwise, for a mouse user, the user's focus would jump back to the triggering element.\r\n notification.link && this.isTabbing && this.focusOnDismiss.focus();\r\n }\r\n\r\n //Remove snack from notification list once timer runs out\r\n snackExpired() {\r\n const notification = this.parsedNotifications[this.parsedNotifications.length - 1];\r\n this.endSnack(notification);\r\n }\r\n\r\n endSnack(notification: Notification) {\r\n //App listens for userFinishedSnack event and deletes the emitted notification.\r\n this.stopTimer(notification);\r\n this.wmSnackbarSnackFinished.emit({\r\n id: notification.id,\r\n message: notification.message,\r\n link: notification.link,\r\n newWindow: notification.newWindow,\r\n });\r\n // deprecated\r\n this.userFinishedSnack.emit({\r\n id: notification.id,\r\n message: notification.message,\r\n link: notification.link,\r\n });\r\n }\r\n\r\n snackLinkClicked(notification: Notification) {\r\n //App listens for userTriggeredAction event, deletes emitted notification, and takes over focus.\r\n this.stopTimer(notification);\r\n this.wmSnackbarActionTriggered.emit({\r\n id: notification.id,\r\n message: notification.message,\r\n link: notification.link,\r\n newWindow: notification.newWindow,\r\n });\r\n // deprecated\r\n this.userTriggeredAction.emit({\r\n id: notification.id,\r\n message: notification.message,\r\n link: notification.link,\r\n });\r\n }\r\n\r\n //Delete the timer corresponding to the dismissed notification\r\n stopTimer(notification: Notification) {\r\n this.parsedNotifications.forEach((notif, index) => {\r\n if (notif.id === notification.id) {\r\n clearTimeout(this.timers[index]);\r\n this.timers = this.timers.filter((timer, ind) => {\r\n if (ind !== index) {\r\n return timer;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n renderSnackbars() {\r\n return this.parsedNotifications.map((notification) => (\r\n <div class=\"wm-snack-wrapper\">\r\n <div id={`snack-${this.uid}`} class=\"wm-snackbar active neutral\">\r\n <div\r\n class=\"sr-only\"\r\n tabindex={notification.link ? 0 : -1}\r\n onFocus={() => notification.link && this.snackDismissed(notification)}\r\n />\r\n\r\n <div class=\"wm-snackbarmsg\">\r\n <div class=\"msgtext\">\r\n <span>{notification.message}</span>\r\n {notification.link && (\r\n <a\r\n id={`action-${notification.id}`}\r\n class={`link ${notification.newWindow ? \"new-window\" : \"\"}`}\r\n aria-label={`Click to ${notification.link}...${\r\n notification.newWindow ? \" \" + this.newWindowMessage : \"\"\r\n }`}\r\n tabindex={0}\r\n onClick={() => {\r\n this.snackLinkClicked(notification);\r\n }}\r\n onKeyDown={(ev: KeyboardEvent) => ev.key === \"Enter\" && this.snackLinkClicked(notification)}\r\n >\r\n <span aria-hidden=\"true\">{notification.link}</span>\r\n </a>\r\n )}\r\n </div>\r\n <button\r\n id={`close-button-${notification.id}`}\r\n aria-label=\"Close this notification\"\r\n class=\"closesnack\"\r\n tabindex={notification.link ? 0 : -1}\r\n onClick={() => this.snackDismissed(notification)}\r\n onMouseEnter={(ev) => showTooltip(\"bottom\", ev.target as HTMLElement, closeVerb)}\r\n onMouseLeave={() => hideTooltip()}\r\n onFocus={(ev) => this.isTabbing && showTooltip(\"bottom\", ev.target as HTMLElement, closeVerb)}\r\n onBlur={() => hideTooltip()}\r\n ></button>\r\n </div>\r\n <div\r\n class=\"sr-only\"\r\n tabindex={notification.link ? 0 : -1}\r\n onFocus={() => notification.link && this.snackDismissed(notification)}\r\n />\r\n </div>\r\n </div>\r\n ));\r\n }\r\n\r\n renderLiveRegion() {\r\n const latestNotification = this.parsedNotifications[0];\r\n const link = this.isTabbing ? \"\" : latestNotification.link;\r\n const srAnnouncement = `${latestNotification.message} ${link}`;\r\n\r\n const region = this.el.shadowRoot!.querySelector(`#wm-live-region-${this.uid}`) as HTMLElement;\r\n\r\n if (region) {\r\n region.innerHTML = \"\";\r\n const wrapper = document.createElement(\"span\");\r\n wrapper.innerHTML = srAnnouncement;\r\n region.appendChild(wrapper);\r\n }\r\n }\r\n\r\n render() {\r\n this.newNotification && this.renderLiveRegion();\r\n const snackbars = this.renderSnackbars();\r\n const wrappingClass = this.parsedNotifications.length === 0 ? \"empty\" : \"\";\r\n\r\n return (\r\n <div class={`wm-snackbars ${wrappingClass} ${this.isTabbing ? \"user-is-tabbing\" : \"\"}`}>\r\n <div class=\"sr-only\" aria-live=\"polite\" aria-atomic=\"false\" id={`wm-live-region-${this.uid}`}></div>\r\n {snackbars}\r\n </div>\r\n );\r\n }\r\n}\r\n"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as t,c as i,h as e,H as s,g as n,f as o}from"./p-1c23de4a.js";import{i as a,x as r}from"./p-05e0f901.js";import{c as l}from"./p-dbf657c5.js";const h=":host{z-index:10}:host([aria-expanded=true]){z-index:5000}.tray{-webkit-box-shadow:0 0 14px 0 rgba(0, 0, 0, 0.14);-moz-box-shadow:0 0 14px 0 rgba(0, 0, 0, 0.14);box-shadow:0 0 14px 0 rgba(0, 0, 0, 0.14);display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:7.5625rem;background-color:#fff;overflow-x:hidden;overflow-y:auto;-webkit-overflow-scrolling:touch;font-size:0.875rem;height:100%}.navlist{margin:0;padding:0}.toggle-wrapper{display:none}@media screen and (max-width: 1023px){.tray{-ms-transition:transform 0.33s ease;-webkit-transition:transform 0.33s ease;-moz-transition:transform 0.33s ease;-webkit-transition:-webkit-transform 0.33s ease;transition:-webkit-transform 0.33s ease;transition:transform 0.33s ease;transition:transform 0.33s ease, -webkit-transform 0.33s ease;position:fixed;top:0;bottom:0;left:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}.tray ul{visibility:hidden}.tray .toggle-wrapper{display:inline-block;min-height:5rem;width:100%;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}:host([aria-expanded=true]) .tray{-webkit-transform:translateX(0);transform:translateX(0)}:host([aria-expanded=true]) .tray ul{visibility:visible}.overlay{width:100vw;height:100vh;max-width:none;max-height:none;position:fixed !important;top:0;bottom:0;left:0;right:0;-webkit-transform:translate(0%, 0%);transform:translate(0%, 0%);background-color:rgba(25, 25, 25, 0.4);-ms-transition:opacity 0.5s ease-out;-webkit-transition:opacity 0.5s ease-out;-moz-transition:opacity 0.5s ease-out;transition:opacity 0.5s ease-out}}";const c=class{constructor(e){t(this,e);this.wmNavigationStateChanged=i(this,"wmNavigationStateChanged",7);this.mainNavigationMessage=a.formatMessage({id:"navigation.mainNavigation",defaultMessage:"Main",description:"Label describing the site navigation, for screen reader users"});this.openTooltipMessage=a.formatMessage({id:"global.openVerb",defaultMessage:"Open",description:"For a button, to open a user interface element"});this.throttledRerender=r((()=>o(this.el)),50);this.open=false;this.isTabbing=false}get isCollapsible(){return window.innerWidth<1024}get ariaExpanded(){return this.isCollapsible?this.open.toString():undefined}toggleTabbingOn(){this.isTabbing=true}toggleTabbingOff(){this.isTabbing=false}closeOnEscape(t){if(t.key==="Escape"){this.open=false}}handleWindowResize(){this.throttledRerender()}handleHamburgerClicked(){this.open=!this.open}handleClickOnItem(){this.open=false}handleStateChange(){if(this.isCollapsible){this.wmNavigationStateChanged.emit();this.open?this.expand():this.collapse()}}componentWillLoad(){if(document.body.classList.contains("wmcl-user-is-tabbing")){this.toggleTabbingOn()}this.el.focus=()=>{const t=this.open?this.el.shadowRoot.querySelector(".toggle"):document.querySelector("wm-navigation-hamburger");const i=this.el.querySelector("wm-navigation-item");this.isCollapsible?t.focus():i.focus()};if(this.isCollapsible&&this.open){this.wmNavigationStateChanged.emit();this.expand()}}redirectFocusFromBody(t){if(document.activeElement.tagName==="BODY"&&!t.relatedTarget){this.el.focus()}}expand(){document.body.tabIndex=0;document.body.addEventListener("focus",this.redirectFocusFromBody.bind(this),true);setTimeout((()=>this.toggleEl.focus()),250)}collapse(){document.body.tabIndex=-1;document.body.removeEventListener("focus",this.redirectFocusFromBody.bind(this));const t=document.querySelector("wm-navigation-hamburger");if(t)t.focus()}focusLastItem(){const t=this.el.querySelectorAll("wm-navigation-item");const i=Array.from(t).pop();i.focus()}renderOverlay(){return e("div",{class:"overlay",onClick:()=>{this.open=false}})}render(){return e(s,{role:"navigation","aria-expanded":this.ariaExpanded,"aria-label":this.mainNavigationMessage},this.open?this.renderOverlay():"",this.isCollapsible&&e("div",{class:"trapfocus",tabindex:this.open?0:undefined,onFocus:()=>this.focusLastItem()}),e("div",{class:"tray"},e("div",{class:"toggle-wrapper"},e("wm-button",{ref:t=>this.toggleEl=t,class:`toggle ${this.isTabbing?"user-is-tabbing":""}`,"button-type":"navigational",icon:this.open?"f156":"f35c","icon-size":"2rem",tooltip:this.open?l:this.openTooltipMessage,"tooltip-position":"left",tabIndex:this.open?undefined:-1,onClick:()=>{this.open=!this.open}})),e("ul",{class:"navlist"},e("slot",null))),this.isCollapsible&&e("div",{class:"trapfocus",tabindex:this.open?0:undefined,onFocus:()=>this.toggleEl.focus()}))}static get delegatesFocus(){return true}get el(){return n(this)}static get watchers(){return{open:["handleStateChange"]}}};c.style=h;const d='button{display:none;width:100%;height:100%;border:none;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:background-color 500ms cubic-bezier(0.4, 0, 0.2, 1);transition:background-color 500ms cubic-bezier(0.4, 0, 0.2, 1);background-color:transparent;outline:none;padding:0}button.user-is-tabbing:focus{-webkit-box-shadow:0 2px 2px 0 rgba(244, 243, 246, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 0 4px 3px #61279e;-moz-box-shadow:0 2px 2px 0 rgba(244, 243, 246, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 0 4px 3px #61279e;box-shadow:0 2px 2px 0 rgba(244, 243, 246, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.1), 0 0 4px 3px #61279e}button.user-is-tabbing:focus::-moz-focus-inner{border:0}button:hover{background-color:#d7d6d9}.icon:before{display:inline-block;font:normal normal normal 24px/1 "Material Design Icons";font-size:inherit;text-rendering:auto;line-height:inherit;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\\f35c";font-size:1.5rem;color:#575195}@media screen and (max-width: 1023px){:host{width:3.75rem;height:3.75rem}button{display:initial}}';const g=class{constructor(e){t(this,e);this.wmNavigationHamburgerClicked=i(this,"wmNavigationHamburgerClicked",7);this.showNavMessage=a.formatMessage({id:"navigation.showNavigation",defaultMessage:"Show navigation",description:"For user interface element opening a navigation menu"});this.navId=undefined;this.tooltipVisible=false;this.isTabbing=false;this.open=false}get tooltipEl(){return document.getElementById("wm-tooltip")}toggleTabbingOn(){this.isTabbing=true}toggleTabbingOff(){this.isTabbing=false}handleNavigationStateChanged(t){this.open=t.target.open}componentWillLoad(){if(document.body.classList.contains("wmcl-user-is-tabbing")){this.toggleTabbingOn()}if(!this.navId){console.error("wm-navigation-hamburger: nav-id is a required prop")}}showTooltip(){const t=this.showNavMessage;this.tooltipEl.textContent=t;this.tooltipEl.style.setProperty("--wmTooltipTop","1.125rem");this.tooltipEl.style.setProperty("--wmTooltipLeft","2.75rem");this.tooltipEl.style.transitionDelay="500ms";this.tooltipEl.style.opacity="1";const i=t.match(/^[^\s]+$/);if(i){this.tooltipEl.classList.add("single-word");this.tooltipEl.style.setProperty("--wmTooltipMaxWidth","none")}else{this.tooltipEl.classList.remove("single-word");this.tooltipEl.style.removeProperty("--wmTooltipMaxWidth")}setTimeout((()=>{this.tooltipVisible=true}),500)}hideTooltip(){this.tooltipEl.style.transitionDelay="0s";this.tooltipEl.style.opacity="0";this.tooltipVisible=false}showTooltipForKeyboardUsers(){if(this.isTabbing){this.showTooltip()}}handleClick(){this.hideTooltip();this.wmNavigationHamburgerClicked.emit()}render(){return e(s,{class:`hamburger ${this.open?"nav-open":"nav-closed"}`},e("button",{class:this.isTabbing?"user-is-tabbing":undefined,"aria-expanded":this.open,"aria-controls":this.navId,"aria-label":this.showNavMessage,onMouseEnter:()=>this.showTooltip(),onMouseLeave:()=>this.hideTooltip(),onFocus:()=>this.showTooltipForKeyboardUsers(),onBlur:()=>this.hideTooltip(),onClick:()=>this.handleClick()},e("span",{class:"icon"})))}static get delegatesFocus(){return true}get el(){return n(this)}};g.style=d;const u='.link{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;color:inherit;text-decoration:none;min-height:4.5rem;text-align:center;padding:1.25rem 0.5rem;font-weight:500;outline:none;position:relative}.link:hover{background-color:#f2f2f2}.link .icon{font-size:1.375rem;color:#6b6b6b}.link .text{font-size:0.875rem}.link.user-is-tabbing:focus{-webkit-box-shadow:inset 0 2px 2px 0 rgba(244, 243, 246, 0.2), inset 0 2px 2px 0 rgba(0, 0, 0, 0.1), inset 0 0 4px 3px #61279e;box-shadow:inset 0 2px 2px 0 rgba(244, 243, 246, 0.2), inset 0 2px 2px 0 rgba(0, 0, 0, 0.1), inset 0 0 4px 3px #61279e}.link.active{background-color:#e9e7ec}.link.active:before{content:"";background-color:#575195;position:absolute;height:100%;width:5px;left:0}.link.active .text{color:#575195}.link.active .icon{color:#575195}';const m=class{constructor(e){t(this,e);this.wmNavigationItemClicked=i(this,"wmNavigationItemClicked",7);this.href=undefined;this.text=undefined;this.active=undefined;this.isTabbing=false}toggleTabbingOn(){this.isTabbing=true}toggleTabbingOff(){this.isTabbing=false}componentWillLoad(){if(document.body.classList.contains("wmcl-user-is-tabbing")){this.toggleTabbingOn()}}render(){return e(s,{role:"listitem"},e("a",{class:`link ${this.active?"active":""} ${this.isTabbing?"user-is-tabbing":""}`,href:this.href,onClick:()=>this.wmNavigationItemClicked.emit()},e("div",{class:"icon","aria-hidden":"true"},e("slot",null)),e("div",{class:"text"},this.text)))}static get delegatesFocus(){return true}get el(){return n(this)}};m.style=u;export{c as wm_navigation,g as wm_navigation_hamburger,m as wm_navigation_item};
|
|
2
|
-
//# sourceMappingURL=p-08d17d5a.entry.js.map
|