@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["wmTagInputCss","TagInput","this","uid","el","id","generateId","openUp","tooltipVisible","debouncedUpdate","debounce","forceUpdate","row","column","csvToArray","selectedTags","options","focusedElement","shadowRoot","activeElement","listItemEls","Array","from","dropdownEl","querySelectorAll","tagEls","tagAreaEl","nonLockedTagEls","filter","tag","classList","contains","optionEls","wmRowEls","localRowEls","filteredRows","colValues","col1","col2","col3","col4","join","toLowerCase","inputEl","value","includes","nonLockedTagsList","list","tagInputType","tagsList","forEach","correspondingRowEl","locked","push","tagLimitReached","maxTags","length","noResultsMessage","intl","formatMessage","defaultMessage","description","componentMessages","addNewHelpText","selectionHelpText","maxTagsReachedMessage","tagAreaInstructions","tagsAddedMessage","defaultConfig","maxTagsReached","tagsAdded","userProvidedConfig","safeParseJSON","messageConfig","Object","assign","inputMinimumWidth","inputElStyles","getComputedStyle","tagElStyles","inputElBuffer","paddingLeft","paddingRight","marginLeft","marginRight","reduce","prev","curr","parseInt","replace","minimumWidth","Math","max","measureText","placeholder","width","generateTagAddedMessage","tagName","generateTagAlreadyAddedMessage","componentWillLoad","createPlaceholderDefault","addNew","label","console","error","consolidateSelectedTags","focus","firstFocusableTag","focusTag","resizeObserver","ResizeObserver","observe","componentDidLoad","remove","componentDidRender","positionInput","includesCaseInsensitive","optionsList","hasOptions","addAndSearchPlaceholder","searchPlaceholder","addPlaceholder","reflectSelectedTags","newValue","oldValue","isAddition","changedTag","val","map","querySelector","listToCSV","detail","tagChanged","wmTagInputChanged","emit","handleErrorMessageChange","errorMessage","announce","handleRowUpdate","closeIfNotElOrChild","ev","isntElOrChild","target","isExpanded","closeDropdown","dismissTooltip","hideTooltip","handleInputKeyDown","test","key","characterLimit","generateCharacterLimitWarning","stopPropagation","preventDefault","handleInputEnter","handleInputArrowDown","handleInputArrowUp","tablePosition","moveLeftCell","moveRightCell","handleInputBackspace","handleInputFocus","openDropdown","clearListItemFocus","handleInputChanged","charCount","clearCellFocus","announceExistingOptions","focusedListItem","handleListItemClick","submitInput","trim","handleTableRowClick","canAddNew","hasNonWhiteSpaceCharacters","match","addTag","addOption","resetInput","moveDownRow","moveDownListItem","moveUpRow","moveUpListItem","window","requestAnimationFrame","handleListItemKeyDown","typedEvTarget","click","item","dataset","option","rowId","referencedRow","isLocked","removeTag","handleTagAreaKeyDown","moveLeftTag","moveRightTag","handleTagAreaDelete","focusedTag","handleBlur","component","relatedTarget","fieldWrapperEl","handleCellMouseEnter","cell","contentWrapper","isTruncated","scrollWidth","clientWidth","showTooltip","innerText","handleTagAreaFocus","handleRemoveButtonClick","firstListItem","focusListItem","nextElementSibling","lastListItem","previousElementSibling","rowToFocus","focusCell","numCols","colHeaders","lastTag","firstTag","newOptionsList","optionAlreadyExists","concat","removeOption","filterCaseInsensitive","newTagsList","tagAlreadyAdded","tagExistsAsOption","x","textToAnnounce","tagRemovedMessage","devOptionsList","setAttribute","scrollIntoView","block","element","position","rowCells","cellToFocus","add","clearTagFocus","resetPosition","shouldOpenUp","clientHeight","message","liveRegionEl","textContent","liveRegionMessage","numResults","existingOptionsMessage","num","charLimit","globalMessages","getCharactersEntered","characterLimitReached","style","spaceAvailable","getBoundingClientRect","right","top","offsetTop","toString","lowercaseList","str","sortCaseInsensitive","sort","a","b","renderTags","lockedTags","unlockedTags","idx","tagText","targetList","h","class","role","tabIndex","onClick","renderDropdown","ref","renderHelpText","tabindex","renderAddNewButton","renderListItems","isFocused","isSelected","onKeyDown","onBlur","helpText","renderTagCounter","renderTable","onScroll","colWidths","renderTableHeaders","renderTableRows","header","overflowRule","colWrap","renderTableCells","localId","onMouseEnter","onMouseLeave","render","Host","labelPosition","htmlFor","requiredField","onFocus","autocomplete","getCharacterLimit","maxLength","undefined","onInput","info"],"sources":["./src/components/wm-tag-input/wm-tag-input.scss?tag=wm-tag-input&encapsulation=shadow","./src/components/wm-tag-input/wm-tag-input.tsx"],"sourcesContent":[":host,\nwm-tag-input {\n font-family: inherit;\n width: 100%;\n display: block;\n\n * {\n box-sizing: border-box;\n font-size: 14px;\n }\n\n @include label;\n\n .wrapper {\n width: 100%;\n height: 100%;\n position: relative;\n }\n\n .field-wrapper {\n position: relative;\n width: 100%;\n border: 1px solid $input-border-color;\n @include border-radius(3px);\n\n &.focused {\n @include field-focus;\n }\n\n &.invalid {\n @include invalidBorder;\n }\n }\n\n .character-count {\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: rem-calc(80);\n background-color: rgba(74, 74, 74, 0.05);\n font-size: rem-calc(14);\n font-weight: 500;\n align-self: stretch;\n }\n\n .tags-and-input-wrapper {\n position: relative;\n width: 100%;\n padding: rem-calc(8) rem-calc(4) rem-calc(8) 0;\n margin-bottom: rem-calc(-8);\n }\n\n .upper-row {\n width: 100%;\n display: flex;\n flex: 1;\n justify-content: space-between;\n &:before {\n align-self: flex-start;\n @include mdi-icon;\n content: \"\\f349\"; // magnifying glass\n color: $tag-input-search-icon-color;\n padding: rem-calc(12) rem-calc(8) rem-calc(12) rem-calc(12);\n }\n }\n\n .lower-row {\n width: 100%;\n min-height: rem-calc(30);\n }\n\n #max-tags {\n display: flex;\n align-items: center;\n min-height: rem-calc(30);\n background-color: $tag-input-max-tags-bg;\n padding: rem-calc(8) rem-calc(16);\n color: $tag-input-max-tags-color;\n font-size: rem-calc(14);\n border-top: 1px solid $tag-input-max-tags-border;\n border-radius: 0 0 3px 3px;\n }\n\n .tag-area {\n display: flex;\n flex-wrap: wrap;\n margin: 0;\n padding: 0;\n\n &:focus {\n outline: none;\n }\n\n [role=\"option\"] {\n display: inline-flex;\n align-items: center;\n height: rem-calc(28);\n list-style: none;\n color: $charcoal;\n background-color: rgba(3, 0, 0, 0.1);\n padding: rem-calc(8) rem-calc(10);\n margin-bottom: rem-calc(8);\n margin-right: rem-calc(4);\n margin-left: rem-calc(4);\n transition: background-color 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n white-space: pre;\n\n &.highlight {\n animation: fadeIn 1s;\n @keyframes fadeIn {\n 0% {\n background-color: rgba(3, 0, 0, 0.1);\n }\n 50% {\n background-color: #c8dfcc;\n }\n\n 100% {\n background-color: rgba(3, 0, 0, 0.1);\n }\n }\n }\n\n &.focused {\n background-color: #d1d1d1;\n }\n\n &.locked {\n background-color: $tag-input-locked-tag-bg;\n color: white;\n }\n\n .icon {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n height: rem-calc(20);\n width: rem-calc(20);\n padding: 0;\n margin-left: rem-calc(8);\n &.remove-btn {\n border: 1px solid $periwinkle;\n color: $periwinkle;\n border-radius: 50%;\n cursor: pointer;\n transition: background-color 500ms cubic-bezier(0.4, 0, 0.2, 1), color 500ms cubic-bezier(0.4, 0, 0.2, 1);\n\n &:hover {\n color: white;\n background-color: $periwinkle;\n }\n\n &:before {\n @include mdi-icon;\n content: \"\\f156\";\n }\n }\n\n &.lock {\n color: white;\n &:before {\n @include mdi-icon;\n content: \"\\f341\";\n }\n }\n }\n }\n }\n\n input {\n font-family: inherit;\n border: none;\n height: rem-calc(28);\n padding: 0;\n margin-bottom: rem-calc(8);\n margin-right: rem-calc(4);\n padding-left: rem-calc(8);\n right: 0px;\n\n &.hidden {\n display: none;\n }\n &:focus {\n outline: none;\n }\n }\n\n .dropdown-wrapper {\n margin: 0;\n padding: 0;\n @include box-shadow(0 4px 15px 0 rgba(0, 0, 0, 0.2));\n @include transition(transform 0.25s ease);\n @include scale($xVal: 1, $yVal: 0);\n @include transformOrigin(center top);\n @include border-radius(3px);\n position: absolute;\n top: calc(100% + 2px);\n right: 0;\n background: #fff;\n z-index: 100;\n width: 100%;\n font-size: rem-calc(14);\n\n .dropdown {\n -webkit-overflow-scrolling: touch;\n overflow: auto;\n max-height: rem-calc(200);\n margin: 0;\n padding: 0;\n }\n\n &.open {\n @include scale($xVal: 1, $yVal: 1);\n }\n\n &.upwards {\n top: unset;\n bottom: calc(100% + 2px);\n @include transformOrigin(center bottom);\n }\n\n li,\n div {\n display: flex;\n align-items: center;\n padding: 0 rem-calc(16);\n background: #fff;\n list-style: none;\n height: rem-calc(43);\n white-space: pre;\n\n &[role=\"option\"],\n &.add-new-btn {\n cursor: pointer;\n color: $periwinkle;\n font-weight: bold;\n width: 100%;\n border: none;\n\n &[aria-selected=\"true\"] {\n color: $gray;\n font-style: italic;\n font-weight: normal;\n cursor: unset;\n }\n &:hover:not([aria-selected=\"true\"]),\n &.focused {\n outline: none;\n background: $background;\n }\n }\n\n &.help-text {\n color: $charcoal;\n height: auto;\n min-height: rem-calc(43);\n padding-top: rem-calc(4);\n padding-bottom: rem-calc(4);\n white-space: normal;\n }\n\n &:not(:last-child) {\n border-bottom: 2px solid rgba(#2e1b46, 0.05);\n }\n }\n }\n\n .info-text {\n font-style: italic;\n margin-top: rem-calc(4);\n }\n\n .table-wrapper {\n min-height: rem-calc(160);\n overflow: auto;\n margin-top: rem-calc(24);\n\n #table {\n width: 100%;\n border-spacing: 0px;\n &.fixed-widths {\n table-layout: fixed;\n }\n\n .headers {\n height: rem-calc(40);\n background-color: #eeedf4;\n th {\n text-align: left;\n font-size: rem-calc(12);\n font-weight: 700;\n text-transform: uppercase;\n padding: 0 rem-calc(24);\n }\n }\n }\n\n tr {\n // the following colors are in a css-specificity order, do not move\n &:nth-child(even) {\n background-color: $tag-input-row-zebra-bg;\n }\n\n &.selected {\n background-color: $tag-input-row-selected-bg;\n // box-shadow to add border without affecting surrounding cell borders\n box-shadow: inset 0 0 0 1px $tag-input-row-selected-border;\n font-weight: 500;\n }\n\n &.focused:not(.locked),\n &:hover:not(.locked) {\n background-color: $tag-input-row-focused;\n box-shadow: none;\n }\n\n &.locked {\n td {\n cursor: auto;\n }\n\n td:first-child {\n .cell-content-wrapper:before {\n @include mdi-icon;\n content: \"\\f33e\";\n margin-right: rem-calc(8);\n color: $tag-input-row-lock-color;\n }\n }\n }\n }\n\n td {\n height: rem-calc(60);\n vertical-align: middle;\n padding: 0 rem-calc(24);\n cursor: pointer;\n &.focused {\n // from wm-navigation\n box-shadow: inset 0 2px 2px 0 rgb(244 243 246 / 20%), inset 0 2px 2px 0 rgb(0 0 0 / 10%),\n inset 0 0 4px 3px #61279e;\n }\n .cell-content-wrapper.trunc {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .description {\n display: none;\n }\n }\n }\n\n .no-results {\n padding: rem-calc(20) rem-calc(24);\n }\n\n .sr-only {\n @include srOnly;\n }\n\n #error {\n @include errorMessage;\n }\n}\n","import {\n h,\n Component,\n Host,\n Element,\n Prop,\n Listen,\n State,\n Event,\n EventEmitter,\n Watch,\n forceUpdate,\n} from \"@stencil/core\";\nimport {\n csvToArray,\n debounce,\n generateId,\n hideTooltip,\n intl,\n measureText,\n safeParseJSON,\n shouldOpenUp,\n showTooltip,\n} from \"../../global/functions\";\nimport { globalMessages } from \"../../global/intl\";\n\ninterface TablePosition {\n row: number;\n column: number;\n}\n\ninterface MessageConfig {\n addNewHelpText: string;\n selectionHelpText: string;\n tagAreaInstructions: string;\n maxTagsReached: string;\n tagsAdded: string;\n}\n\n@Component({\n tag: \"wm-tag-input\",\n styleUrl: \"wm-tag-input.scss\",\n shadow: { delegatesFocus: true },\n})\nexport class TagInput {\n @Element() el!: HTMLWmTagInputElement;\n private inputEl!: HTMLInputElement;\n private dropdownEl!: HTMLDivElement;\n private tagAreaEl!: HTMLUListElement;\n private liveRegionEl!: HTMLDivElement;\n private fieldWrapperEl!: HTMLDivElement;\n\n @Prop() label!: string;\n @Prop() labelPosition: \"top\" | \"left\" | \"none\" = \"top\";\n @Prop({ mutable: true }) options: string = \"\"; // csv\n @Prop({ reflect: true, mutable: true }) selectedTags: string = \"\"; // csv\n @Prop() info?: string;\n @Prop() errorMessage?: string;\n @Prop() addNew: boolean = true;\n @Prop({ mutable: true }) placeholder?: string;\n @Prop() requiredField: boolean = false;\n @Prop() characterLimit: number = 50;\n @Prop() maxTags?: number;\n @Prop() tagInputType: \"dropdown\" | \"table\" = \"dropdown\";\n @Prop() colHeaders!: string;\n @Prop() colWidths?: string;\n @Prop() colWrap?: string;\n @Prop() messageConfig: string = \"\"; // JSON\n @Event() wmTagInputChanged!: EventEmitter<{\n value: string[] | HTMLWmTagInputRowElement[];\n tagChanged: string | HTMLWmTagInputRowElement;\n }>;\n\n private uid: string = this.el.id ? this.el.id : generateId();\n private openUp: boolean = false;\n private tooltipVisible: boolean = false;\n @State() focusedListItem!: HTMLLIElement | null;\n @State() focusedTag: HTMLLIElement | null = null;\n @State() tablePosition: TablePosition = { row: 0, column: 1 };\n @State() isExpanded: boolean = false;\n @State() tagsList: string[] = csvToArray(this.selectedTags);\n @State() optionsList: string[] = csvToArray(this.options);\n @State() charCount: number = 0;\n @State() liveRegionMessage = \"\";\n\n get focusedElement(): Element | null {\n return this.el.shadowRoot!.activeElement;\n }\n get listItemEls(): HTMLLIElement[] {\n return Array.from(this.dropdownEl.querySelectorAll(\"li\"));\n }\n get tagEls(): HTMLLIElement[] {\n return this.tagAreaEl ? Array.from(this.tagAreaEl.querySelectorAll(\".tag\")) : [];\n }\n get nonLockedTagEls(): HTMLLIElement[] {\n return this.tagEls.filter((tag) => !tag.classList.contains(\"locked\"));\n }\n get optionEls(): HTMLLIElement[] {\n return Array.from(this.dropdownEl.querySelectorAll(\".option\"));\n }\n get wmRowEls(): HTMLWmTagInputRowElement[] {\n return Array.from(this.el.querySelectorAll(\"wm-tag-input-row\"));\n }\n get localRowEls(): HTMLElement[] {\n return Array.from(this.el.shadowRoot!.querySelectorAll(\"tr\"));\n }\n get filteredRows(): HTMLWmTagInputRowElement[] {\n return this.wmRowEls.filter((row) => {\n const colValues = [row.col1, row.col2, row.col3, row.col4].join(\"\").toLowerCase();\n return this.inputEl && this.inputEl.value ? colValues.includes(this.inputEl.value.toLowerCase()) : true;\n });\n }\n get nonLockedTagsList() {\n let list: string[] = [];\n\n if (this.tagInputType === \"table\") {\n this.tagsList.forEach((id) => {\n const correspondingRowEl = this.wmRowEls.filter((row) => id === row.id)[0];\n if (!correspondingRowEl.locked) {\n list.push(id);\n }\n });\n } else if (this.tagInputType === \"dropdown\") {\n list = this.tagsList;\n }\n\n return list;\n }\n get tagLimitReached(): boolean {\n return !!(this.maxTags && this.tagsList.length >= this.maxTags);\n }\n\n get noResultsMessage() {\n return intl.formatMessage({\n id: \"tagInput.noResults\",\n defaultMessage: \"No results match your search.\",\n description: \"Message displayed when a user's search returns empty.\",\n });\n }\n\n get componentMessages(): MessageConfig {\n const addNewHelpText = intl.formatMessage({\n id: \"tagInput.addNewHelpText\",\n defaultMessage: \"Press the Enter or Comma key to add a new tag.\",\n description: \"Help text appearing in a dropdown. Use imperative\",\n });\n const selectionHelpText = intl.formatMessage({\n id: \"tagInput.selectionHelpText\",\n defaultMessage: \"Search and select a tag.\",\n description: \"Help text appearing in a dropdown. Use imperative\",\n });\n const maxTagsReachedMessage = intl.formatMessage({\n id: \"tagInput.maxTagsReached\",\n defaultMessage: \"No more tags can be added because the limit has been reached.\",\n });\n const tagAreaInstructions = intl.formatMessage({\n id: \"tagInput.tagAreaInstructions\",\n defaultMessage: \"tag selection. Press Backspace or Delete to remove a tag.\",\n });\n const tagsAddedMessage = intl.formatMessage({\n id: \"tagInput.tagsAdded\",\n defaultMessage: \"Tags added\",\n description: \"For the user to understand how close they are to the tag limit, followed by x/y count\",\n });\n\n const defaultConfig: MessageConfig = {\n addNewHelpText: addNewHelpText,\n selectionHelpText: selectionHelpText,\n maxTagsReached: maxTagsReachedMessage,\n tagAreaInstructions: tagAreaInstructions,\n tagsAdded: tagsAddedMessage,\n };\n\n const userProvidedConfig = safeParseJSON(this.messageConfig);\n\n return userProvidedConfig ? { ...defaultConfig, ...userProvidedConfig } : defaultConfig;\n }\n\n get inputMinimumWidth(): number {\n // 150px is the minimum width of the input field, or the length of the placeholder text\n const inputElStyles = getComputedStyle(this.inputEl);\n const tagElStyles = getComputedStyle(this.tagEls[this.tagEls.length - 1]);\n const inputElBuffer = [\n inputElStyles.paddingLeft,\n inputElStyles.paddingRight,\n inputElStyles.marginLeft,\n inputElStyles.marginRight,\n tagElStyles.marginRight,\n ].reduce((prev, curr) => prev + parseInt(curr.replace(\"px\", \"\")), 0);\n\n const minimumWidth = Math.max(150, measureText(this.inputEl, this.placeholder!).width + inputElBuffer);\n return minimumWidth;\n }\n\n generateTagAddedMessage(tag: string): string {\n return intl.formatMessage(\n {\n id: \"tagInput.tagAdded\",\n defaultMessage: \"{tagName} added.\",\n description: \"A confirmation for adding a tag.\",\n },\n { tagName: tag }\n );\n }\n\n generateTagAlreadyAddedMessage(tag: string): string {\n return intl.formatMessage(\n {\n id: \"tagInput.tagAlreadyAdded\",\n defaultMessage: \"{tagName} has already been added.\",\n description: \"An alert for adding a tag that is already present.\",\n },\n { tagName: tag }\n );\n }\n\n componentWillLoad() {\n if (!this.placeholder) {\n this.placeholder = this.createPlaceholderDefault(this.addNew, !!this.options);\n }\n if (!this.label) {\n console.error(\"wm-tag-input must have a label property\");\n }\n\n this.consolidateSelectedTags();\n\n this.el.focus = () => {\n const firstFocusableTag = this.nonLockedTagEls[0];\n if (firstFocusableTag) {\n this.tagAreaEl.focus();\n this.focusTag(firstFocusableTag);\n } else {\n this.inputEl.focus();\n }\n };\n\n // on resize of component, trigger componentDidRender -> positionInput\n const resizeObserver = new ResizeObserver(() => this.debouncedUpdate());\n resizeObserver.observe(this.el);\n }\n\n componentDidLoad() {\n // prevent highlighting of pre-selected tags\n this.tagEls.forEach((el) => el.classList.remove(\"highlight\"));\n }\n\n componentDidRender() {\n this.positionInput();\n }\n\n consolidateSelectedTags() {\n this.tagsList.forEach((tag) => {\n if (!this.includesCaseInsensitive(this.optionsList, tag)) {\n this.options += `${this.options.length > 0 ? \",\" : \"\"}${tag}`;\n }\n });\n\n this.optionsList = csvToArray(this.options);\n }\n\n createPlaceholderDefault(addNew: boolean, hasOptions: boolean): string {\n const addAndSearchPlaceholder = intl.formatMessage({\n id: \"tagInput.placeholderAddAndSearch\",\n defaultMessage: \"Add or search for a tag\",\n description: \"Placeholder text. Use imperative\",\n });\n const searchPlaceholder = intl.formatMessage({\n id: \"tagInput.placeholderSearch\",\n defaultMessage: \"Search and select a tag\",\n description: \"Placeholder text. Use imperative\",\n });\n const addPlaceholder = intl.formatMessage({\n id: \"tagInput.placeholderAdd\",\n defaultMessage: \"Add a new tag\",\n description: \"Placeholder text. Use imperative\",\n });\n\n let placeholder = \"\";\n if (addNew && hasOptions) {\n placeholder = addAndSearchPlaceholder;\n } else if (!addNew && hasOptions) {\n placeholder = searchPlaceholder;\n } else if (addNew) {\n placeholder = addPlaceholder;\n }\n return placeholder;\n }\n\n @Watch(\"tagsList\")\n reflectSelectedTags(newValue: string[], oldValue: string[]) {\n const isAddition = newValue.length > oldValue.length;\n let changedTag: string | HTMLWmTagInputRowElement = \"\";\n let selectedTags: string[] | HTMLWmTagInputRowElement[] = this.tagsList;\n\n if (isAddition) {\n changedTag = newValue.filter((val) => !oldValue.includes(val))[0];\n } else {\n changedTag = oldValue.filter((val) => !newValue.includes(val))[0];\n }\n\n // event emitted by type table uses element references instead of strings\n if (this.tagInputType === \"table\") {\n changedTag = this.wmRowEls.filter((row) => row.id === changedTag)[0];\n selectedTags = this.tagsList.map((id) => this.el.querySelector(`#${id}`) as HTMLWmTagInputRowElement);\n }\n\n this.selectedTags = this.listToCSV(this.tagsList);\n let detail = { value: selectedTags, tagChanged: changedTag };\n this.wmTagInputChanged.emit(detail);\n }\n\n @Watch(\"errorMessage\")\n handleErrorMessageChange() {\n if (this.errorMessage) {\n this.announce(this.errorMessage);\n }\n }\n\n @Listen(\"wmTagInputRowUpdated\")\n handleRowUpdate() {\n forceUpdate(this.el);\n }\n\n @Listen(\"click\", { target: \"document\" })\n closeIfNotElOrChild(ev: MouseEvent): void {\n const isntElOrChild = ev.target !== this.el && !this.el.shadowRoot!.contains(ev.target as HTMLElement);\n\n if (this.tagInputType === \"dropdown\" && isntElOrChild && this.isExpanded) {\n this.closeDropdown();\n }\n }\n\n // From wm-button\n // we need to listen for scroll events during the capture phase because they do not bubble up\n // there can be layouts where the main content has 100vh and overflows\n // in these cases window will register no scroll events unless we catch on they way down\n @Listen(\"scroll\", { target: \"window\", capture: true })\n dismissTooltip() {\n if (this.tooltipVisible) {\n hideTooltip();\n this.tooltipVisible = false;\n }\n }\n\n debouncedUpdate = debounce(() => forceUpdate(this.el), 30);\n\n handleInputKeyDown(ev: KeyboardEvent) {\n if (/^.$/.test(ev.key) && this.inputEl.value.length >= this.characterLimit) {\n this.announce(this.generateCharacterLimitWarning(this.inputEl.value.length, this.characterLimit));\n }\n\n // prevent keydown triggering on tag area\n ev.stopPropagation();\n switch (ev.key) {\n case \"Enter\":\n case \",\":\n ev.preventDefault();\n this.handleInputEnter();\n break;\n case \"ArrowDown\":\n ev.preventDefault();\n this.handleInputArrowDown();\n break;\n case \"ArrowUp\":\n ev.preventDefault();\n this.handleInputArrowUp();\n break;\n case \"ArrowLeft\":\n ev.preventDefault();\n if (this.tagInputType === \"table\" && this.tablePosition.row) {\n this.moveLeftCell();\n }\n break;\n case \"ArrowRight\":\n ev.preventDefault();\n if (this.tagInputType === \"table\" && this.tablePosition.row) {\n this.moveRightCell();\n }\n break;\n case \"Escape\":\n if (this.tagInputType === \"dropdown\" && this.isExpanded) {\n this.closeDropdown();\n }\n break;\n case \"ArrowLeft\":\n case \"Backspace\":\n this.handleInputBackspace();\n break;\n }\n }\n\n handleInputFocus() {\n if (this.tagInputType === \"dropdown\") {\n this.openDropdown();\n this.clearListItemFocus();\n }\n // force update needed to apply styled state of field-wrapper el\n forceUpdate(this.el);\n }\n\n handleInputChanged(value: string) {\n this.charCount = value.length;\n\n if (this.tagInputType === \"dropdown\") {\n this.clearListItemFocus();\n if (this.charCount >= this.characterLimit - 5) {\n this.announce(this.generateCharacterLimitWarning(this.charCount, this.characterLimit));\n }\n if (!this.isExpanded) {\n this.openDropdown();\n }\n } else if (this.tagInputType === \"table\") {\n this.clearCellFocus();\n }\n this.announceExistingOptions();\n }\n\n handleInputEnter() {\n if (this.tagInputType === \"dropdown\") {\n if (this.focusedListItem) {\n this.handleListItemClick(this.focusedListItem);\n } else {\n this.submitInput(this.addNew, this.inputEl.value.trim());\n }\n } else if (this.tagInputType === \"table\" && this.tablePosition.row > 0) {\n this.handleTableRowClick(this.localRowEls[this.tablePosition.row].id);\n }\n }\n\n submitInput(canAddNew: boolean, value: string) {\n const hasNonWhiteSpaceCharacters = value.match(/\\S/);\n if (canAddNew && hasNonWhiteSpaceCharacters) {\n this.addTag(value);\n this.optionsList = this.addOption(value);\n this.resetInput();\n }\n }\n\n handleInputArrowDown() {\n if (this.tagInputType === \"table\") {\n this.moveDownRow();\n } else if (this.tagInputType === \"dropdown\" && this.isExpanded) {\n this.moveDownListItem();\n } else if (this.tagInputType === \"dropdown\") {\n this.openDropdown();\n }\n }\n\n handleInputArrowUp() {\n if (this.tagInputType === \"table\") {\n this.moveUpRow();\n } else if (this.tagInputType === \"dropdown\" && this.isExpanded) {\n this.moveUpListItem();\n } else if (this.tagInputType === \"dropdown\") {\n this.openDropdown();\n }\n }\n\n handleInputBackspace() {\n if (this.inputEl.value === \"\" && this.tagsList.length > 0) {\n // wait for events to finish firing before redirecting focus\n // prevents double input in input area and tag area\n window.requestAnimationFrame(() => {\n if (this.nonLockedTagsList.length > 0) {\n this.tagAreaEl.focus();\n this.focusTag(this.tagEls[this.tagEls.length - 1]);\n }\n });\n }\n }\n\n handleListItemKeyDown(ev: KeyboardEvent) {\n const typedEvTarget = ev.target as HTMLElement;\n\n switch (ev.key) {\n case \"Enter\":\n case \" \":\n ev.preventDefault();\n typedEvTarget.click();\n break;\n case \"ArrowDown\":\n ev.preventDefault();\n this.moveDownListItem();\n break;\n case \"ArrowUp\":\n ev.preventDefault();\n this.moveUpListItem();\n break;\n case \"Escape\":\n if (this.focusedElement !== this.inputEl) {\n this.inputEl.focus();\n } else if (this.tagInputType === \"dropdown\") {\n this.closeDropdown();\n }\n break;\n }\n }\n\n handleListItemClick(item: HTMLElement) {\n const tag = item.dataset.option!.trim() || \"\";\n\n if (this.includesCaseInsensitive(this.tagsList, tag)) {\n this.announce(this.generateTagAlreadyAddedMessage(tag));\n } else {\n this.resetInput();\n this.addTag(tag);\n this.optionsList = this.addOption(tag);\n this.focusedListItem = null;\n }\n }\n\n handleTableRowClick(rowId: string) {\n const referencedRow = this.el.querySelector(`#${rowId}`) as HTMLWmTagInputRowElement;\n const isLocked = referencedRow.locked;\n\n if (!isLocked) {\n if (this.includesCaseInsensitive(this.tagsList, rowId)) {\n this.removeTag(rowId);\n } else if (!this.tagLimitReached) {\n this.addTag(rowId);\n this.resetInput();\n }\n }\n }\n\n handleTagAreaKeyDown(ev: KeyboardEvent) {\n switch (ev.key) {\n case \"ArrowLeft\":\n case \"ArrowUp\":\n ev.preventDefault();\n this.moveLeftTag();\n break;\n case \"ArrowRight\":\n case \"ArrowDown\":\n ev.preventDefault();\n this.moveRightTag();\n break;\n case \"Backspace\":\n case \"Delete\":\n this.handleTagAreaDelete();\n break;\n }\n }\n\n handleTagAreaDelete() {\n const isLocked = this.focusedTag && this.focusedTag.classList.contains(\"locked\");\n\n if (this.focusedTag && this.focusedTag.dataset.tag && !isLocked) {\n this.removeTag(this.focusedTag.dataset.tag);\n\n if (this.nonLockedTagsList.length === 0) {\n // focus input if no tags are left\n this.inputEl.focus();\n } else if (this.focusedTag === this.tagEls[this.tagEls.length - 1]) {\n // reassign focus if removing the last tag but there are still tags remaining\n this.focusedTag = this.tagEls[this.tagEls.length - 2];\n this.focusTag(this.focusedTag);\n }\n }\n }\n\n handleBlur(ev: FocusEvent, component: HTMLElement) {\n const isntElOrChild =\n ev.relatedTarget !== component && !this.el.shadowRoot!.contains(ev.relatedTarget as HTMLElement);\n\n this.dismissTooltip();\n this.clearCellFocus();\n\n if (isntElOrChild) {\n this.fieldWrapperEl.classList.remove(\"focused\");\n if (this.tagInputType === \"dropdown\") {\n this.closeDropdown();\n }\n }\n }\n\n handleCellMouseEnter(ev: MouseEvent) {\n const cell = ev.target as HTMLElement;\n const contentWrapper = cell.querySelector(\".cell-content-wrapper\")!;\n const isTruncated = contentWrapper.scrollWidth > contentWrapper.clientWidth;\n\n if (isTruncated) {\n // innerText is necessary vs textContent, as innerText ignores sr-only / display: none text\n showTooltip(\"bottom\", cell, cell.innerText!);\n this.tooltipVisible = true;\n }\n }\n\n handleTagAreaFocus() {\n if (this.tagInputType === \"dropdown\") {\n this.closeDropdown();\n }\n\n const firstFocusableTag = this.nonLockedTagEls[0];\n firstFocusableTag && this.focusTag(firstFocusableTag);\n }\n\n handleRemoveButtonClick(tag: string) {\n this.moveLeftTag();\n this.removeTag(tag);\n }\n\n moveDownListItem() {\n if (this.listItemEls.length > 0) {\n const firstListItem = this.listItemEls[0];\n\n if (!this.focusedListItem) {\n this.focusListItem(firstListItem);\n } else if (this.focusedListItem.nextElementSibling) {\n this.focusListItem(this.focusedListItem.nextElementSibling as HTMLLIElement);\n } else {\n this.focusListItem(firstListItem);\n }\n }\n }\n\n moveUpListItem() {\n if (this.listItemEls.length > 0) {\n const lastListItem = this.listItemEls[this.listItemEls.length - 1];\n\n if (!this.focusedListItem) {\n this.focusListItem(lastListItem);\n } else if (this.focusedListItem.previousElementSibling) {\n this.focusListItem(this.focusedListItem.previousElementSibling as HTMLLIElement);\n } else {\n this.clearListItemFocus();\n }\n }\n }\n\n moveDownRow() {\n if (this.filteredRows.length > 0) {\n if (this.tablePosition.row === 0) {\n this.tablePosition.row = 1;\n } else if (this.tablePosition.row === this.filteredRows.length) {\n this.tablePosition.row = 1;\n } else {\n this.tablePosition.row++;\n }\n\n // skip locked rows\n const rowToFocus = this.wmRowEls[this.tablePosition.row - 1] as HTMLWmTagInputRowElement;\n if (rowToFocus.locked) {\n this.moveDownRow();\n } else {\n this.focusCell(this.tablePosition);\n }\n }\n }\n\n moveUpRow() {\n if (this.filteredRows.length > 0) {\n if (this.tablePosition.row === 0) {\n this.tablePosition.row = this.filteredRows.length;\n } else if (this.tablePosition.row === 1) {\n this.tablePosition.row = 0;\n } else {\n this.tablePosition.row--;\n }\n\n // skip locked rows\n const rowToFocus = this.wmRowEls[this.tablePosition.row - 1] as HTMLWmTagInputRowElement;\n if (rowToFocus && rowToFocus.locked) {\n this.moveUpRow();\n } else if (rowToFocus) {\n this.focusCell(this.tablePosition);\n } else {\n this.clearCellFocus();\n }\n }\n }\n\n moveLeftCell() {\n if (this.tablePosition.column != 1) {\n this.tablePosition.column--;\n this.focusCell(this.tablePosition);\n }\n }\n\n moveRightCell() {\n const numCols = csvToArray(this.colHeaders).length;\n\n if (this.tablePosition.column < numCols) {\n this.tablePosition.column++;\n this.focusCell(this.tablePosition);\n }\n }\n\n moveLeftTag() {\n const lastTag = this.tagEls[this.tagEls.length - 1];\n if (this.focusedTag && this.tagEls.includes(this.focusedTag.previousElementSibling as HTMLLIElement)) {\n this.focusedTag = this.focusedTag.previousElementSibling as HTMLLIElement;\n } else {\n this.focusedTag = lastTag;\n }\n // skip locked tags\n if (this.focusedTag.classList.contains(\"locked\") && this.nonLockedTagEls.length > 0) {\n this.moveLeftTag();\n } else {\n this.focusTag(this.focusedTag);\n }\n }\n\n moveRightTag() {\n const firstTag = this.tagEls[0];\n if (this.focusedTag && this.tagEls.includes(this.focusedTag.nextElementSibling as HTMLLIElement)) {\n this.focusedTag = this.focusedTag.nextElementSibling as HTMLLIElement;\n } else {\n this.focusedTag = firstTag;\n }\n // skip locked tags\n if (this.focusedTag.classList.contains(\"locked\")) {\n this.moveRightTag();\n } else {\n this.focusTag(this.focusedTag);\n }\n }\n\n addOption(option: string): string[] {\n let newOptionsList = this.optionsList;\n const optionAlreadyExists = this.includesCaseInsensitive(this.optionsList, option);\n if (!optionAlreadyExists) {\n newOptionsList = newOptionsList.concat(option);\n }\n return newOptionsList;\n }\n\n removeOption(option: string) {\n this.optionsList = this.filterCaseInsensitive(this.optionsList, option);\n }\n\n addTag(tag: string): void {\n let newTagsList = this.tagsList;\n const tagAlreadyAdded = this.includesCaseInsensitive(this.tagsList, tag);\n const tagExistsAsOption = this.optionsList.filter((x) => x.toLowerCase() === tag.toLowerCase())[0];\n\n if (!tagAlreadyAdded) {\n let textToAnnounce = tag;\n if (this.tagInputType === \"table\") {\n const referencedRow = this.el.querySelector(`#${tag}`) as HTMLWmTagInputRowElement;\n textToAnnounce = referencedRow.col1!;\n }\n this.announce(this.generateTagAddedMessage(textToAnnounce));\n this.tagsList = newTagsList.concat(tagExistsAsOption || tag);\n // if maxTags has been reached, focus should go to the tagArea\n if (this.tagLimitReached) {\n this.tagAreaEl.focus();\n }\n }\n }\n\n removeTag(tag: string) {\n let textToAnnounce = tag;\n if (this.tagInputType === \"table\") {\n const referencedRow = this.el.querySelector(`#${tag}`) as HTMLWmTagInputRowElement;\n textToAnnounce = referencedRow.col1!;\n }\n const tagRemovedMessage = intl.formatMessage(\n { id: \"tagInput.tagRemoved\", defaultMessage: \"{tag} removed\" },\n { tag: textToAnnounce }\n );\n this.announce(tagRemovedMessage);\n this.tagsList = this.filterCaseInsensitive(this.tagsList, tag);\n\n if (this.tagInputType === \"dropdown\") {\n // if a tag was introduced by the user, also remove it from the dropdown options\n const devOptionsList = csvToArray(this.options);\n if (this.includesCaseInsensitive(this.optionsList, tag) && !this.includesCaseInsensitive(devOptionsList, tag)) {\n this.removeOption(tag);\n }\n }\n }\n\n focusListItem(item: HTMLLIElement): void {\n this.focusedListItem = item;\n this.inputEl.setAttribute(\"aria-activedescendant\", this.focusedListItem.id);\n item.scrollIntoView({ block: \"nearest\" });\n }\n\n focusTag(element: HTMLLIElement): void {\n if (element.classList.contains(\"locked\")) {\n this.focusedTag = null;\n this.tagAreaEl.setAttribute(\"aria-activedescendant\", \"\");\n } else {\n this.focusedTag = element;\n this.tagAreaEl.setAttribute(\"aria-activedescendant\", this.focusedTag.id);\n }\n }\n\n focusCell(position: TablePosition) {\n this.clearCellFocus(false);\n\n if (position.row) {\n const rowToFocus = this.localRowEls[position.row];\n const rowCells = rowToFocus.querySelectorAll(\"td\");\n const cellToFocus = rowCells[position.column - 1];\n const contentWrapper = cellToFocus.querySelector(\".cell-content-wrapper\")!;\n const isTruncated = contentWrapper.scrollWidth > contentWrapper.clientWidth;\n\n rowToFocus.classList.add(\"focused\");\n cellToFocus.classList.add(\"focused\");\n cellToFocus.scrollIntoView({ block: \"nearest\" });\n this.inputEl.setAttribute(\"aria-activedescendant\", cellToFocus.id);\n\n this.dismissTooltip();\n if (isTruncated) {\n // innerText is necessary vs textContent, as innerText ignores sr-only / display: none text\n showTooltip(\"bottom\", cellToFocus, cellToFocus.innerText!);\n this.tooltipVisible = true;\n }\n }\n }\n\n clearTagFocus() {\n this.tagAreaEl.setAttribute(\"aria-activedescendant\", \"\");\n this.focusedTag = null;\n }\n\n clearCellFocus(resetPosition: boolean = true) {\n this.inputEl.setAttribute(\"aria-activedescendant\", \"\");\n if (resetPosition) {\n this.tablePosition = { row: 0, column: 1 };\n }\n\n this.localRowEls.forEach((row) => {\n row.classList.remove(\"focused\");\n row.querySelectorAll(\"td\").forEach((cell) => {\n cell.classList.remove(\"focused\");\n });\n });\n }\n\n openDropdown() {\n // given an offset of -2px because the dropdown is transformed downwards to avoid overlapping the focus border\n this.openUp = shouldOpenUp(this.el, this.dropdownEl, this.el.clientHeight, -2);\n this.isExpanded = true;\n }\n\n closeDropdown() {\n this.clearListItemFocus();\n this.isExpanded = false;\n }\n\n clearListItemFocus() {\n this.focusedListItem = null;\n this.inputEl.setAttribute(\"aria-activedescendant\", \"\");\n\n this.listItemEls.forEach((el) => {\n el.classList.remove(\"focused\");\n });\n }\n\n resetInput() {\n this.charCount = 0;\n this.inputEl.value = \"\";\n }\n\n announce(message: string) {\n // \\u00A0 is a non-breaking space character, which causes the message to be read as a new one\n if (this.liveRegionEl.textContent === message) {\n message += \"\\u00A0\";\n }\n this.liveRegionMessage = message;\n }\n\n announceExistingOptions() {\n // request animation frame to wait for re-rendering of filtered options\n window.requestAnimationFrame(() => {\n let numResults = 0;\n\n if (this.tagInputType === \"dropdown\") {\n numResults = this.optionEls.length;\n } else if (this.tagInputType === \"table\") {\n numResults = this.filteredRows.length;\n }\n\n const existingOptionsMessage = intl.formatMessage(\n {\n id: \"tagInput.existingOptions\",\n defaultMessage: \"{num, plural, one {1 existing option.} other {# existing options.}}\",\n },\n { num: numResults }\n );\n\n this.announce(existingOptionsMessage);\n });\n }\n\n generateCharacterLimitWarning(charCount: number, charLimit: number): string {\n let message = globalMessages.getCharactersEntered(charCount, charLimit);\n if (charCount >= charLimit) {\n message += ` ${globalMessages.characterLimitReached}`;\n }\n return message;\n }\n\n positionInput() {\n const lastTag = this.tagEls[this.tagEls.length - 1];\n // default placement to fall back to when no tags are present, or not enough space is available\n this.inputEl.style.position = \"static\";\n this.inputEl.style.width = \"100%\";\n\n if (lastTag) {\n const spaceAvailable = this.tagAreaEl.getBoundingClientRect().right - lastTag.getBoundingClientRect().right;\n if (spaceAvailable >= this.inputMinimumWidth) {\n // because the input has right: 0px\n // all thats needed to properly place it is setting position: absolute, top, and width\n this.inputEl.style.position = \"absolute\";\n this.inputEl.style.top = lastTag.offsetTop.toString() + \"px\";\n this.inputEl.style.width =\n (this.tagAreaEl.getBoundingClientRect().right - lastTag.getBoundingClientRect().right - 8).toString() + \"px\";\n }\n }\n }\n\n /// Helpers\n\n listToCSV(list: string[]): string {\n return list.join(\",\");\n }\n\n includesCaseInsensitive(list: string[], element: string): boolean {\n const lowercaseList = list.map((str) => str.toLowerCase());\n return lowercaseList.includes(element.toLowerCase());\n }\n\n filterCaseInsensitive(list: string[], element: string): string[] {\n return list.filter((x) => x.toLowerCase() !== element.toLowerCase());\n }\n\n sortCaseInsensitive(list: string[]) {\n // The vanilla .sort method places words that start with capital letters above others (ASCII order)\n // so we need to pass in our own compare function to sort case-insensitive\n return list.sort((a, b) => {\n a = a.toLowerCase();\n b = b.toLowerCase();\n return a > b ? 1 : a < b ? -1 : 0;\n });\n }\n\n /// Renders\n\n renderTags() {\n let lockedTags: HTMLLIElement[] = [];\n let unlockedTags: HTMLLIElement[] = [];\n\n this.tagsList.forEach((tag, idx) => {\n const id = `tag${idx + 1}`;\n let tagText = \"\";\n let isLocked = false;\n\n if (this.tagInputType === \"dropdown\") {\n tagText = tag;\n } else if (this.tagInputType === \"table\") {\n // display table tags using col1 of the row with the same id\n // if one can't be found, display as empty\n const referencedRow = this.el.querySelector(`#${tag}`) as HTMLWmTagInputRowElement;\n tagText = referencedRow ? referencedRow.col1! : \"\";\n isLocked = referencedRow ? referencedRow.locked : false;\n }\n\n // make sure locked tags always appear in front of list\n const targetList = isLocked ? lockedTags : unlockedTags;\n targetList.push(\n <li\n id={id}\n class={`tag highlight ${this.focusedTag && this.focusedTag.id === id ? \"focused\" : \"\"} ${\n isLocked ? \"locked\" : \"\"\n }`}\n data-tag={tag}\n role=\"option\"\n >\n {tagText}\n {isLocked ? (\n <div class=\"icon lock\"></div>\n ) : (\n <button class=\"icon remove-btn\" tabIndex={-1} onClick={() => this.handleRemoveButtonClick(tag)}></button>\n )}\n </li>\n );\n });\n\n return [...lockedTags, ...unlockedTags];\n }\n\n renderDropdown() {\n return (\n <div\n class={`dropdown-wrapper ${this.isExpanded ? \"open\" : \"\"} ${this.openUp ? \"upwards\" : \"\"}`}\n ref={(el) => (this.dropdownEl = el as HTMLDivElement)}\n >\n <div id=\"help-text\" class=\"help-text\">\n {this.renderHelpText()}\n </div>\n <ul\n class=\"dropdown\"\n id=\"dropdown\"\n role=\"listbox\"\n aria-multiselectable=\"true\"\n aria-expanded={this.isExpanded ? \"true\" : false}\n aria-label={this.label}\n tabindex={-1}\n >\n {this.inputEl && this.renderAddNewButton()}\n {this.renderListItems(this.optionsList)}\n </ul>\n </div>\n );\n }\n\n renderListItems(optionsList: string[]) {\n optionsList = this.sortCaseInsensitive(optionsList);\n\n // filter by input\n if (this.inputEl && this.inputEl.value) {\n optionsList = this.optionsList.filter((option) =>\n option.toLowerCase().includes(this.inputEl.value.toLowerCase())\n );\n }\n\n return optionsList.map((option, idx) => {\n const id = `option${idx + 1}`;\n const isFocused = this.focusedListItem && this.focusedListItem.id === id;\n const isSelected = this.includesCaseInsensitive(this.tagsList, option);\n\n return (\n <li\n class={`option ${isFocused ? \"focused\" : \"\"}`}\n role=\"option\"\n id={id}\n data-option={option}\n aria-selected={isSelected ? \"true\" : \"false\"}\n aria-disabled={isSelected ? \"true\" : \"false\"}\n onKeyDown={(ev) => this.handleListItemKeyDown(ev)}\n onBlur={(ev) => this.handleBlur(ev, this.el)}\n onClick={(ev) => this.handleListItemClick(ev.target as HTMLElement)}\n >\n {option}\n </li>\n );\n });\n }\n\n renderAddNewButton() {\n const hasNonWhiteSpaceCharacters = this.inputEl.value.match(/\\S/);\n const optionAlreadyExists = this.includesCaseInsensitive(this.optionsList, this.inputEl.value.trim());\n if (this.addNew && hasNonWhiteSpaceCharacters && !optionAlreadyExists) {\n const id = `add-new-btn`;\n const isFocused = this.focusedListItem && this.focusedListItem.id === id;\n return (\n <li\n role=\"option\"\n class={`add-new-btn ${isFocused ? \"focused\" : \"\"}`}\n id={id}\n data-option={this.inputEl.value}\n onKeyDown={(ev) => this.handleListItemKeyDown(ev)}\n onBlur={(ev) => this.handleBlur(ev, this.el)}\n onClick={(ev) => this.handleListItemClick(ev.target as HTMLElement)}\n tabIndex={isFocused ? 0 : -1}\n >\n {`Add \"${this.inputEl.value.trim()}\"`}\n </li>\n );\n } else return \"\";\n }\n\n renderHelpText() {\n let helpText = \"\";\n\n if (this.optionsList.length > 0) {\n helpText += this.componentMessages.selectionHelpText;\n }\n if (this.addNew) {\n helpText += \" \" + this.componentMessages.addNewHelpText;\n }\n\n return helpText;\n }\n\n renderTagCounter() {\n if (this.maxTags) {\n return (\n <div class=\"lower-row\">\n <div id=\"max-tags\">\n {`${this.componentMessages.tagsAdded}: ${this.tagsList.length}/${this.maxTags}`}\n {this.tagLimitReached && ` - ${this.componentMessages.maxTagsReached}`}\n </div>\n </div>\n );\n }\n }\n\n renderTable() {\n return (\n <div class=\"table-wrapper\" onScroll={() => this.dismissTooltip()}>\n <table\n id=\"table\"\n role=\"grid\"\n class={`${this.colWidths ? \"fixed-widths\" : \"\"}`}\n aria-label={this.label}\n aria-multiselectable=\"true\"\n >\n {this.renderTableHeaders()}\n {this.filteredRows.length ? this.renderTableRows() : <div class=\"no-results\">{this.noResultsMessage}</div>}\n </table>\n </div>\n );\n }\n\n renderTableHeaders() {\n return (\n <tr class=\"headers\" role=\"row\">\n {csvToArray(this.colHeaders).map((header, idx) => {\n let overflowRule = \"wrap\";\n if (this.colWrap && csvToArray(this.colWrap)[idx]) {\n overflowRule = csvToArray(this.colWrap)[idx];\n }\n return (\n <th\n class={`header-cell ${overflowRule}`}\n role=\"columnheader\"\n // @ts-ignore\n width={this.colWidths ? csvToArray(this.colWidths)[idx] : \"\"}\n >\n {header}\n </th>\n );\n })}\n </tr>\n );\n }\n\n renderTableRows() {\n return this.filteredRows.map((row) => {\n const isSelected: boolean = this.includesCaseInsensitive(this.tagsList, row.id);\n\n return (\n <tr\n id={row.id}\n class={`${row.locked ? \"locked\" : \"\"} ${isSelected ? \"selected\" : \"\"}`}\n role=\"row\"\n onClick={() => this.handleTableRowClick(row.id)}\n >\n {this.renderTableCells(row)}\n </tr>\n );\n });\n }\n\n renderTableCells(row: HTMLWmTagInputRowElement) {\n const colValues = [row.col1, row.col2, row.col3, row.col4].filter((val) => !!val);\n const isSelected: boolean = this.includesCaseInsensitive(this.tagsList, row.id);\n\n return colValues.map((val, idx) => {\n const localId = `${row.id}-col${idx + 1}`;\n let overflowRule = \"wrap\";\n if (this.colWrap && csvToArray(this.colWrap)[idx]) {\n overflowRule = csvToArray(this.colWrap)[idx];\n }\n\n return (\n <td\n id={localId}\n role=\"gridcell\"\n aria-describedby={`${localId}-description`}\n aria-selected={isSelected.toString()}\n onMouseEnter={(ev) => this.handleCellMouseEnter(ev)}\n onMouseLeave={() => this.dismissTooltip()}\n >\n <div class={`cell-content-wrapper ${overflowRule}`}>{val}</div>\n <div class=\"description\" id={`${localId}-description`}>\n {row.locked ? \"locked\" : \"\"}\n </div>\n </td>\n );\n });\n }\n\n render() {\n return (\n <Host id={this.uid}>\n <div class={`wrapper label-${this.labelPosition} ${this.errorMessage ? \"invalid\" : \"\"}`}>\n <div class=\"label-wrapper\">\n <label class=\"label\" htmlFor={`input${this.uid}`}>\n {this.label}\n {this.requiredField && (\n <span class=\"required\" aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n </div>\n <div\n class={`field-wrapper ${this.focusedElement ? \"focused\" : \"\"} ${this.errorMessage ? \"invalid\" : \"\"}`}\n ref={(el) => (this.fieldWrapperEl = el as HTMLDivElement)}\n >\n <div class=\"upper-row\">\n <div class=\"tags-and-input-wrapper\">\n {this.tagsList.length > 0 && (\n <ul\n ref={(el) => (this.tagAreaEl = el as HTMLUListElement)}\n class=\"tag-area\"\n role=\"listbox\"\n aria-activedescendant=\"\"\n aria-orientation=\"horizontal\"\n aria-label={`${this.label} ${\n this.tagsList.length > 0 ? this.componentMessages.tagAreaInstructions : \"\"\n }`}\n tabindex={this.nonLockedTagsList.length > 0 ? 0 : -1}\n aria-describedby={`info max-tags`}\n onFocus={() => this.handleTagAreaFocus()}\n onBlur={(ev) => {\n this.clearTagFocus();\n this.handleBlur(ev, this.el);\n }}\n onKeyDown={(ev) => this.handleTagAreaKeyDown(ev)}\n >\n {this.renderTags()}\n </ul>\n )}\n <input\n id={`input${this.uid}`}\n class={this.tagLimitReached ? \"hidden\" : \"\"}\n role=\"combobox\"\n ref={(el) => (this.inputEl = el as HTMLInputElement)}\n autocomplete=\"off\"\n aria-required={this.requiredField ? \"true\" : null}\n aria-controls={this.tagInputType}\n aria-describedby={`help-text${this.errorMessage ? \" error \" : \"\"}`}\n aria-label={`${this.label} ${\n this.tagInputType === \"dropdown\" ? globalMessages.getCharacterLimit(this.characterLimit) : \"\"\n }`}\n aria-expanded={this.tagInputType === \"dropdown\" ? this.isExpanded.toString() : null}\n placeholder={this.placeholder}\n maxLength={this.tagInputType === \"dropdown\" ? this.characterLimit : undefined}\n onInput={() => this.handleInputChanged(this.inputEl.value)}\n onBlur={(ev) => {\n this.handleBlur(ev, this.el);\n }}\n onFocus={() => this.handleInputFocus()}\n onKeyDown={(ev) => this.handleInputKeyDown(ev)}\n ></input>\n </div>\n {this.tagInputType === \"dropdown\" && (\n <div class=\"character-count\">\n {this.charCount}/{this.characterLimit}\n </div>\n )}\n </div>\n {this.renderTagCounter()}\n {this.tagInputType === \"dropdown\" && this.renderDropdown()}\n </div>\n {this.info && (\n <div id=\"info\" class=\"info-text\">\n {this.info}\n </div>\n )}\n {this.errorMessage && <div id=\"error\">{this.errorMessage}</div>}\n <div\n class=\"sr-only\"\n aria-live=\"assertive\"\n ref={(el) => (this.liveRegionEl = el as HTMLDivElement)}\n aria-atomic=\"true\"\n >\n {this.liveRegionMessage}\n </div>\n {this.tagInputType === \"table\" && this.renderTable()}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
System.register(["./p-7b2fc615.system.js","./p-f0fd8695.system.js","./p-c36002b6.system.js"],(function(t){"use strict";var e,i,o,n,a,s,r,l,c;return{setters:[function(t){e=t.r;i=t.c;o=t.h;n=t.H;a=t.g;s=t.f},function(t){r=t.i;l=t.x},function(t){c=t.g}],execute:function(){var u=":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}}";var p=t("wm_navigation",function(){function t(t){var o=this;e(this,t);this.wmNavigationStateChanged=i(this,"wmNavigationStateChanged",7);this.mainNavigationMessage=r.formatMessage({id:"navigation.mainNavigation",defaultMessage:"Main",description:"Label describing the site navigation, for screen reader users"});this.throttledRerender=l((function(){return s(o.el)}),50);this.open=false;this.isTabbing=false}Object.defineProperty(t.prototype,"isCollapsible",{get:function(){return window.innerWidth<1024},enumerable:false,configurable:true});Object.defineProperty(t.prototype,"ariaExpanded",{get:function(){return this.isCollapsible?this.open.toString():undefined},enumerable:false,configurable:true});t.prototype.toggleTabbingOn=function(){this.isTabbing=true};t.prototype.toggleTabbingOff=function(){this.isTabbing=false};t.prototype.closeOnEscape=function(t){if(t.key==="Escape"){this.open=false}};t.prototype.handleWindowResize=function(){this.throttledRerender()};t.prototype.handleHamburgerClicked=function(){this.open=!this.open};t.prototype.handleClickOnItem=function(){this.open=false};t.prototype.handleStateChange=function(){if(this.isCollapsible){this.wmNavigationStateChanged.emit();this.open?this.expand():this.collapse()}};t.prototype.componentWillLoad=function(){var t=this;if(document.body.classList.contains("wmcl-user-is-tabbing")){this.toggleTabbingOn()}this.el.focus=function(){var e=t.open?t.el.shadowRoot.querySelector(".toggle"):document.querySelector("wm-navigation-hamburger");var i=t.el.querySelector("wm-navigation-item");t.isCollapsible?e.focus():i.focus()};if(this.isCollapsible&&this.open){this.wmNavigationStateChanged.emit();this.expand()}};t.prototype.redirectFocusFromBody=function(t){if(document.activeElement.tagName==="BODY"&&!t.relatedTarget){this.el.focus()}};t.prototype.expand=function(){var t=this;document.body.tabIndex=0;document.body.addEventListener("focus",this.redirectFocusFromBody.bind(this),true);setTimeout((function(){return t.toggleEl.focus()}),250)};t.prototype.collapse=function(){document.body.tabIndex=-1;document.body.removeEventListener("focus",this.redirectFocusFromBody.bind(this));var t=document.querySelector("wm-navigation-hamburger");if(t)t.focus()};t.prototype.focusLastItem=function(){var t=this.el.querySelectorAll("wm-navigation-item");var e=Array.from(t).pop();e.focus()};t.prototype.renderOverlay=function(){var t=this;return o("div",{class:"overlay",onClick:function(){t.open=false}})};t.prototype.render=function(){var t=this;return o(n,{role:"navigation","aria-expanded":this.ariaExpanded,"aria-label":this.mainNavigationMessage},this.open?this.renderOverlay():"",this.isCollapsible&&o("div",{class:"trapfocus",tabindex:this.open?0:undefined,onFocus:function(){return t.focusLastItem()}}),o("div",{class:"tray"},o("div",{class:"toggle-wrapper"},o("wm-button",{ref:function(e){return t.toggleEl=e},class:"toggle ".concat(this.isTabbing?"user-is-tabbing":""),"button-type":"navigational",icon:this.open?"f156":"f35c","icon-size":"2rem",tooltip:this.open?c.close:c.open,"tooltip-position":"left",tabIndex:this.open?undefined:-1,onClick:function(){t.open=!t.open}})),o("ul",{class:"navlist"},o("slot",null))),this.isCollapsible&&o("div",{class:"trapfocus",tabindex:this.open?0:undefined,onFocus:function(){return t.toggleEl.focus()}}))};Object.defineProperty(t,"delegatesFocus",{get:function(){return true},enumerable:false,configurable:true});Object.defineProperty(t.prototype,"el",{get:function(){return a(this)},enumerable:false,configurable:true});Object.defineProperty(t,"watchers",{get:function(){return{open:["handleStateChange"]}},enumerable:false,configurable:true});return t}());p.style=u;var 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}}';var f=t("wm_navigation_hamburger",function(){function t(t){e(this,t);this.wmNavigationHamburgerClicked=i(this,"wmNavigationHamburgerClicked",7);this.showNavMessage=r.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}Object.defineProperty(t.prototype,"tooltipEl",{get:function(){return document.getElementById("wm-tooltip")},enumerable:false,configurable:true});t.prototype.toggleTabbingOn=function(){this.isTabbing=true};t.prototype.toggleTabbingOff=function(){this.isTabbing=false};t.prototype.handleNavigationStateChanged=function(t){this.open=t.target.open};t.prototype.componentWillLoad=function(){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")}};t.prototype.showTooltip=function(){var t=this;var e=this.showNavMessage;this.tooltipEl.textContent=e;this.tooltipEl.style.setProperty("--wmTooltipTop","1.125rem");this.tooltipEl.style.setProperty("--wmTooltipLeft","2.75rem");this.tooltipEl.style.transitionDelay="500ms";this.tooltipEl.style.opacity="1";var i=e.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((function(){t.tooltipVisible=true}),500)};t.prototype.hideTooltip=function(){this.tooltipEl.style.transitionDelay="0s";this.tooltipEl.style.opacity="0";this.tooltipVisible=false};t.prototype.showTooltipForKeyboardUsers=function(){if(this.isTabbing){this.showTooltip()}};t.prototype.handleClick=function(){this.hideTooltip();this.wmNavigationHamburgerClicked.emit()};t.prototype.render=function(){var t=this;return o(n,{class:"hamburger ".concat(this.open?"nav-open":"nav-closed")},o("button",{class:this.isTabbing?"user-is-tabbing":undefined,"aria-expanded":this.open,"aria-controls":this.navId,"aria-label":this.showNavMessage,onMouseEnter:function(){return t.showTooltip()},onMouseLeave:function(){return t.hideTooltip()},onFocus:function(){return t.showTooltipForKeyboardUsers()},onBlur:function(){return t.hideTooltip()},onClick:function(){return t.handleClick()}},o("span",{class:"icon"})))};Object.defineProperty(t,"delegatesFocus",{get:function(){return true},enumerable:false,configurable:true});Object.defineProperty(t.prototype,"el",{get:function(){return a(this)},enumerable:false,configurable:true});return t}());f.style=d;var b='.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}';var h=t("wm_navigation_item",function(){function t(t){e(this,t);this.wmNavigationItemClicked=i(this,"wmNavigationItemClicked",7);this.href=undefined;this.text=undefined;this.active=undefined;this.isTabbing=false}t.prototype.toggleTabbingOn=function(){this.isTabbing=true};t.prototype.toggleTabbingOff=function(){this.isTabbing=false};t.prototype.componentWillLoad=function(){if(document.body.classList.contains("wmcl-user-is-tabbing")){this.toggleTabbingOn()}};t.prototype.render=function(){var t=this;return o(n,{role:"listitem"},o("a",{class:"link ".concat(this.active?"active":""," ").concat(this.isTabbing?"user-is-tabbing":""),href:this.href,onClick:function(){return t.wmNavigationItemClicked.emit()}},o("div",{class:"icon","aria-hidden":"true"},o("slot",null)),o("div",{class:"text"},this.text)))};Object.defineProperty(t,"delegatesFocus",{get:function(){return true},enumerable:false,configurable:true});Object.defineProperty(t.prototype,"el",{get:function(){return a(this)},enumerable:false,configurable:true});return t}());h.style=b}}}));
|
|
2
|
+
//# sourceMappingURL=p-1fd20e05.system.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["wmNavigationCss","Navigation","exports","this","mainNavigationMessage","intl","formatMessage","id","defaultMessage","description","throttledRerender","throttle","forceUpdate","_this","el","Object","defineProperty","class_1","prototype","window","innerWidth","isCollapsible","open","toString","undefined","toggleTabbingOn","isTabbing","toggleTabbingOff","closeOnEscape","ev","key","handleWindowResize","handleHamburgerClicked","handleClickOnItem","handleStateChange","wmNavigationStateChanged","emit","expand","collapse","componentWillLoad","document","body","classList","contains","focus","btn","shadowRoot","querySelector","firstItem","redirectFocusFromBody","activeElement","tagName","relatedTarget","tabIndex","addEventListener","bind","setTimeout","toggleEl","removeEventListener","hamburgerBtn","focusLastItem","items","querySelectorAll","lastItem","Array","from","pop","renderOverlay","h","class","onClick","render","Host","role","ariaExpanded","tabindex","onFocus","ref","concat","icon","tooltip","globalMessages","close","wmNavigationHamburgerCss","NavigationHamburger","showNavMessage","class_2","getElementById","handleNavigationStateChanged","target","navId","console","error","showTooltip","tooltipText","tooltipEl","textContent","style","setProperty","transitionDelay","opacity","hasNoWhitespace","match","add","remove","removeProperty","tooltipVisible","hideTooltip","showTooltipForKeyboardUsers","handleClick","wmNavigationHamburgerClicked","onMouseEnter","onMouseLeave","onBlur","wmNavigationItemCss","NavigationItem","class_3","active","href","wmNavigationItemClicked","text"],"sources":["src/components/wm-navigation/wm-navigation.scss?tag=wm-navigation&encapsulation=shadow","src/components/wm-navigation/wm-navigation.tsx","src/components/wm-navigation/wm-navigation-hamburger.scss?tag=wm-navigation-hamburger&encapsulation=shadow","src/components/wm-navigation/wm-navigation-hamburger.tsx","src/components/wm-navigation/wm-navigation-item.scss?tag=wm-navigation-item&encapsulation=shadow","src/components/wm-navigation/wm-navigation-item.tsx"],"sourcesContent":[":host {\n z-index: 10;\n}\n\n:host([aria-expanded=\"true\"]) {\n z-index: 5000;\n}\n\n.tray {\n @include box-shadow(0 0 14px 0 rgba(0, 0, 0, 0.14));\n display: flex;\n flex-direction: column;\n width: rem-calc(121);\n background-color: $light-background;\n overflow-x: hidden;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n font-size: rem-calc(14);\n height: 100%;\n}\n\n.navlist {\n margin: 0;\n padding: 0;\n}\n\n.toggle-wrapper {\n display: none;\n}\n\n/* COLLAPSIBLE STYLES */\n@media screen and (max-width: 1023px) {\n .tray {\n @include transition(transform 0.33s ease);\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n transform: translateX(-100%);\n\n ul {\n visibility: hidden;\n }\n\n .toggle-wrapper {\n display: inline-block;\n min-height: 5rem;\n width: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n }\n\n :host([aria-expanded=\"true\"]) {\n .tray {\n transform: translateX(0);\n\n ul {\n visibility: visible;\n }\n }\n }\n\n .overlay {\n width: 100vw;\n height: 100vh;\n max-width: none;\n max-height: none;\n position: fixed !important;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n transform: translate(0%, 0%);\n background-color: rgba(25, 25, 25, 0.4);\n @include transition(opacity 0.5s ease-out);\n }\n}\n","import {\n h,\n Component,\n Element,\n Prop,\n State,\n Listen,\n Host,\n Watch,\n Event,\n EventEmitter,\n forceUpdate,\n} from \"@stencil/core\";\nimport { intl, throttle } from \"../../global/functions\";\nimport { globalMessages } from \"../../global/intl\";\n\n@Component({\n tag: \"wm-navigation\",\n styleUrl: \"wm-navigation.scss\",\n shadow: { delegatesFocus: true },\n})\nexport class Navigation {\n @Element() el!: HTMLWmNavigationElement;\n toggleEl!: HTMLWmButtonElement;\n @Prop({ reflect: true, mutable: true }) open: boolean = false;\n\n @State() isTabbing: boolean = false;\n @Event() wmNavigationStateChanged!: EventEmitter;\n\n private mainNavigationMessage: string = intl.formatMessage({\n id: \"navigation.mainNavigation\",\n defaultMessage: \"Main\",\n description: \"Label describing the site navigation, for screen reader users\",\n });\n\n get isCollapsible() {\n return window.innerWidth < 1024;\n }\n\n get ariaExpanded() {\n return this.isCollapsible\n ? // if component is in collapsible mode, set aria-expanded according to expanded state\n this.open.toString()\n : // otherwise, do not render attr at all\n undefined;\n }\n\n @Listen(\"wmUserIsTabbing\", { target: \"window\" })\n toggleTabbingOn() {\n this.isTabbing = true;\n }\n\n @Listen(\"wmUserIsNotTabbing\", { target: \"window\" })\n toggleTabbingOff() {\n this.isTabbing = false;\n }\n\n @Listen(\"keydown\")\n closeOnEscape(ev: KeyboardEvent) {\n if (ev.key === \"Escape\") {\n this.open = false;\n }\n }\n\n throttledRerender = throttle(() => forceUpdate(this.el), 50);\n\n @Listen(\"resize\", { target: \"window\" })\n handleWindowResize() {\n // for component to react when breakpoint is crossed\n // (doesn't rerender on window resize)\n this.throttledRerender();\n }\n\n @Listen(\"wmNavigationHamburgerClicked\", { target: \"window\" })\n handleHamburgerClicked() {\n this.open = !this.open;\n }\n\n @Listen(\"wmNavigationItemClicked\")\n handleClickOnItem() {\n this.open = false;\n }\n\n @Watch(\"open\")\n handleStateChange() {\n if (this.isCollapsible) {\n this.wmNavigationStateChanged.emit();\n this.open ? this.expand() : this.collapse();\n }\n }\n\n componentWillLoad() {\n if (document.body.classList.contains(\"wmcl-user-is-tabbing\")) {\n this.toggleTabbingOn();\n }\n\n this.el.focus = () => {\n // in addition to delegatesFocus, we need to highjack the focus method to send focus to the appropriate element based on the navigation's state\n const btn = this.open\n ? (this.el.shadowRoot!.querySelector(\".toggle\")! as HTMLWmButtonElement)\n : (document.querySelector(\"wm-navigation-hamburger\") as HTMLWmNavigationHamburgerElement);\n const firstItem = this.el.querySelector(\"wm-navigation-item\")! as HTMLWmNavigationItemElement;\n this.isCollapsible ? btn.focus() : firstItem.focus();\n };\n\n if (this.isCollapsible && this.open) {\n // hamburger needs to know if open was initially set to true\n this.wmNavigationStateChanged.emit();\n this.expand();\n }\n }\n\n redirectFocusFromBody(ev: FocusEvent) {\n // the 2nd check excludes the case when user clicks on the page when the nav is open,\n // which should not redirect focus\n if ((document.activeElement as HTMLElement).tagName === \"BODY\" && !ev.relatedTarget) {\n this.el.focus();\n }\n }\n\n expand() {\n // listen to focus on body and redirect to the component\n // this is to handle trap focus when user has left the page (e.g. went to the address bar)\n // and is tabbing back in\n document.body.tabIndex = 0;\n document.body.addEventListener(\"focus\", this.redirectFocusFromBody.bind(this), true);\n\n // wait for nav to be expanded otherwise tooltip will be misplaced.\n setTimeout(() => this.toggleEl.focus(), 250);\n //document.querySelector(\"wm-navigation\")!.shadowRoot!.querySelector(\".toggle\")!.focus()\n }\n\n collapse() {\n // rm event listener on body\n document.body.tabIndex = -1;\n document.body.removeEventListener(\"focus\", this.redirectFocusFromBody.bind(this));\n\n const hamburgerBtn = document.querySelector(\"wm-navigation-hamburger\");\n // should fail silently if el doesn't exist\n // (dev may have chosen not to use the hamburger component)\n if (hamburgerBtn) hamburgerBtn.focus();\n }\n\n focusLastItem() {\n const items = this.el.querySelectorAll(\"wm-navigation-item\");\n const lastItem = Array.from(items).pop() as HTMLWmNavigationItemElement;\n lastItem.focus();\n }\n\n renderOverlay() {\n return (\n <div\n class=\"overlay\"\n onClick={() => {\n this.open = false;\n }}\n ></div>\n );\n }\n\n render() {\n return (\n <Host role=\"navigation\" aria-expanded={this.ariaExpanded} aria-label={this.mainNavigationMessage}>\n {this.open ? this.renderOverlay() : \"\"}\n {this.isCollapsible && (\n <div class=\"trapfocus\" tabindex={this.open ? 0 : undefined} onFocus={() => this.focusLastItem()}></div>\n )}\n <div class=\"tray\">\n <div class=\"toggle-wrapper\">\n <wm-button\n ref={(el) => (this.toggleEl = el as HTMLWmButtonElement)}\n class={`toggle ${this.isTabbing ? \"user-is-tabbing\" : \"\"}`}\n button-type=\"navigational\"\n icon={this.open ? \"f156\" : \"f35c\"}\n icon-size=\"2rem\"\n tooltip={this.open ? globalMessages.close : globalMessages.open}\n tooltip-position=\"left\"\n tabIndex={this.open ? undefined : -1}\n onClick={() => {\n this.open = !this.open;\n }}\n />\n </div>\n <ul class=\"navlist\">\n <slot />\n </ul>\n </div>\n {this.isCollapsible && (\n <div class=\"trapfocus\" tabindex={this.open ? 0 : undefined} onFocus={() => this.toggleEl.focus()}></div>\n )}\n </Host>\n );\n }\n}\n","button {\n display: none;\n width: 100%;\n height: 100%;\n border: none;\n box-shadow: none;\n transition: background-color 500ms cubic-bezier(0.4, 0, 0.2, 1);\n background-color: transparent;\n outline: none;\n padding: 0;\n\n &.user-is-tabbing:focus {\n @include focus-style;\n }\n\n &:hover {\n background-color: $button-default-hover;\n }\n}\n\n.icon {\n &:before {\n @include mdi-icon;\n content: \"\\f35c\";\n font-size: rem-calc(24);\n color: $button-default-text;\n }\n}\n\n@media screen and (max-width: 1023px) {\n :host {\n width: rem-calc(60);\n height: rem-calc(60);\n }\n\n button {\n display: initial;\n }\n}\n","import { h, Component, Element, Host, Prop, Listen, Event, EventEmitter, State } from \"@stencil/core\";\nimport { intl } from \"../../global/functions\";\n\n@Component({\n tag: \"wm-navigation-hamburger\",\n styleUrl: \"wm-navigation-hamburger.scss\",\n shadow: { delegatesFocus: true },\n})\nexport class NavigationHamburger {\n @Element() el!: HTMLWmNavigationHamburgerElement;\n nav!: HTMLWmNavigationElement;\n\n @Prop() navId?: string;\n @Prop({ mutable: true }) tooltipVisible = false; // this is not part of the documented API but we need to expose as prop in order to change it from the focus method defined in WillLoad()\n\n @State() isTabbing?: boolean = false;\n @State() open: boolean = false;\n\n @Event() wmNavigationHamburgerClicked!: EventEmitter;\n\n showNavMessage = intl.formatMessage({\n id: \"navigation.showNavigation\",\n defaultMessage: \"Show navigation\",\n description: \"For user interface element opening a navigation menu\",\n });\n\n get tooltipEl(): HTMLElement {\n return document.getElementById(\"wm-tooltip\")!;\n }\n\n @Listen(\"wmUserIsTabbing\", { target: \"window\" })\n toggleTabbingOn() {\n this.isTabbing = true;\n }\n\n @Listen(\"wmUserIsNotTabbing\", { target: \"window\" })\n toggleTabbingOff() {\n this.isTabbing = false;\n }\n\n // this also works on initial load because event is fired then\n @Listen(\"wmNavigationStateChanged\", { target: \"document\" })\n handleNavigationStateChanged(ev: CustomEvent) {\n this.open = (ev.target! as HTMLWmNavigationElement).open;\n }\n\n componentWillLoad() {\n if (document.body.classList.contains(\"wmcl-user-is-tabbing\")) {\n this.toggleTabbingOn();\n }\n if (!this.navId) {\n console.error(\"wm-navigation-hamburger: nav-id is a required prop\");\n }\n }\n\n showTooltip() {\n const tooltipText = this.showNavMessage;\n this.tooltipEl.textContent = tooltipText;\n this.tooltipEl.style.setProperty(\"--wmTooltipTop\", \"1.125rem\");\n this.tooltipEl.style.setProperty(\"--wmTooltipLeft\", \"2.75rem\");\n this.tooltipEl.style.transitionDelay = \"500ms\";\n this.tooltipEl.style.opacity = \"1\";\n\n // tooltip only has a maxWidth if it contains whitespace and can break\n const hasNoWhitespace = tooltipText!.match(/^[^\\s]+$/);\n if (hasNoWhitespace) {\n this.tooltipEl.classList.add(\"single-word\");\n this.tooltipEl.style.setProperty(\"--wmTooltipMaxWidth\", \"none\");\n } else {\n this.tooltipEl.classList.remove(\"single-word\");\n this.tooltipEl.style.removeProperty(\"--wmTooltipMaxWidth\");\n }\n\n // tooltip is only visible after the transition delay.\n // This also fixes an issue for keyboard users:\n // if they tab to a button out of screen bounds, the page scrolls\n // and hideTooltip() would be triggered before the tooltip would show\n setTimeout(() => {\n this.tooltipVisible = true;\n }, 500);\n }\n\n hideTooltip() {\n this.tooltipEl.style.transitionDelay = \"0s\";\n this.tooltipEl.style.opacity = \"0\";\n this.tooltipVisible = false;\n }\n\n showTooltipForKeyboardUsers() {\n if (this.isTabbing) {\n this.showTooltip();\n }\n }\n\n handleClick() {\n this.hideTooltip();\n this.wmNavigationHamburgerClicked.emit();\n }\n\n render() {\n return (\n <Host class={`hamburger ${this.open ? \"nav-open\" : \"nav-closed\"}`}>\n <button\n class={this.isTabbing ? \"user-is-tabbing\" : undefined}\n aria-expanded={this.open}\n aria-controls={this.navId}\n aria-label={this.showNavMessage}\n onMouseEnter={() => this.showTooltip()}\n onMouseLeave={() => this.hideTooltip()}\n onFocus={() => this.showTooltipForKeyboardUsers()}\n onBlur={() => this.hideTooltip()}\n onClick={() => this.handleClick()}\n >\n <span class=\"icon\"></span>\n </button>\n </Host>\n );\n }\n}\n",".link {\n display: flex;\n flex-direction: column;\n justify-content: center;\n color: inherit;\n text-decoration: none;\n min-height: rem-calc(72);\n text-align: center;\n padding: 1.25rem 0.5rem;\n font-weight: 500;\n outline: none;\n position: relative;\n\n &:hover {\n background-color: $light-background-hover;\n }\n\n .icon {\n font-size: rem-calc(22);\n color: $sidenav-icon;\n }\n\n .text {\n font-size: rem-calc(14);\n }\n\n &.user-is-tabbing:focus {\n // from P&SS\n box-shadow: inset 0 2px 2px 0 rgb(244 243 246 / 20%), inset 0 2px 2px 0 rgb(0 0 0 / 10%), inset 0 0 4px 3px #61279e;\n }\n}\n\n.link.active {\n background-color: $pale-lilac-gray;\n &:before {\n content: \"\";\n // link to or create semantic name\n background-color: $periwinkle;\n position: absolute;\n height: 100%;\n width: 5px;\n left: 0;\n }\n\n .text {\n // link to or create semantic name\n color: $periwinkle;\n }\n\n .icon {\n // link to or create semantic name\n color: $periwinkle;\n }\n}\n","import { h, Component, Prop, Element, Host, State, Listen, Event, EventEmitter } from \"@stencil/core\";\n\n@Component({\n tag: \"wm-navigation-item\",\n styleUrl: \"wm-navigation-item.scss\",\n shadow: { delegatesFocus: true },\n})\nexport class NavigationItem {\n @Element() el!: HTMLWmNavigationItemElement;\n @Prop() href?: string;\n @Prop() text?: string;\n @Prop() active?: boolean;\n\n @State() isTabbing?: boolean = false;\n @Event() wmNavigationItemClicked!: EventEmitter;\n\n @Listen(\"wmUserIsTabbing\", { target: \"window\" })\n toggleTabbingOn() {\n this.isTabbing = true;\n }\n\n @Listen(\"wmUserIsNotTabbing\", { target: \"window\" })\n toggleTabbingOff() {\n this.isTabbing = false;\n }\n\n componentWillLoad() {\n if (document.body.classList.contains(\"wmcl-user-is-tabbing\")) {\n this.toggleTabbingOn();\n }\n }\n\n render() {\n return (\n <Host role=\"listitem\">\n <a\n class={`link ${this.active ? \"active\" : \"\"} ${this.isTabbing ? \"user-is-tabbing\" : \"\"}`}\n href={this.href}\n onClick={() => this.wmNavigationItemClicked.emit()}\n >\n <div class=\"icon\" aria-hidden=\"true\">\n <slot />\n </div>\n <div class=\"text\">{this.text}</div>\n </a>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
System.register(["./p-7b2fc615.system.js","./p-bc28c815.system.js"],(function(e){"use strict";var t,r,a,i,s,l,o,n,p;return{setters:[function(e){t=e.r;r=e.c;a=e.h;i=e.H;s=e.g},function(e){l=e.i;o=e.e;n=e.h;p=e.g}],execute:function(){var d=':host,wm-datepicker{font-family:inherit}:host *,wm-datepicker *{-webkit-box-sizing:border-box;box-sizing:border-box}:host .wrapper,wm-datepicker .wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;font-size:0.875rem}:host .wrapper .label,wm-datepicker .wrapper .label{display:block;line-height:normal;font-weight:600;white-space:nowrap;margin-bottom:0.25rem}:host .wrapper .label .required,wm-datepicker .wrapper .label .required{color:#c0392b}:host .wrapper.label-left,wm-datepicker .wrapper.label-left{-ms-flex-direction:row;flex-direction:row}:host .wrapper.label-left .label-wrapper,wm-datepicker .wrapper.label-left .label-wrapper{line-height:2.5rem}:host .wrapper.label-left .label-wrapper .label,wm-datepicker .wrapper.label-left .label-wrapper .label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:2.5rem;white-space:normal;margin-bottom:0;margin-right:0.75rem}:host .wrapper.label-none label,wm-datepicker .wrapper.label-none label{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}:host .wrapper.invalid .label,wm-datepicker .wrapper.invalid .label{color:#c0392b}:host .wrapper.invalid .label:after,wm-datepicker .wrapper.invalid .label: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;content:"\\f026";margin-left:0.3125rem}[dir=RTL] :host .wrapper.invalid .label:after,[dir=RTL] wm-datepicker .wrapper.invalid .label:after{margin-left:0;margin-right:0.3125rem}:host .wrapper.rtl.label-left .label,wm-datepicker .wrapper.rtl.label-left .label{margin-right:0;margin-left:0.75rem}:host .wrapper,wm-datepicker .wrapper{position:relative}:host .wrapper .required,wm-datepicker .wrapper .required{color:#c4431c}:host .wrapper .inner-wrapper,wm-datepicker .wrapper .inner-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;height:2.5rem;border:1px solid;border-color:rgba(35, 35, 35, 0.6);-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;max-width:236px;-ms-flex-pack:justify;justify-content:space-between;position:relative}:host .wrapper .inner-wrapper .date-input,wm-datepicker .wrapper .inner-wrapper .date-input{-moz-border-top-left-radius:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-bottom-left-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;border:none;font-size:0.875rem;padding:0.625rem 0.9375rem 0.5rem;min-width:0;height:100%;-ms-flex:1;flex:1;margin:0}:host .wrapper .inner-wrapper .date-input:disabled,wm-datepicker .wrapper .inner-wrapper .date-input:disabled{background-color:#f0f0f0;color:#737373}:host .wrapper .inner-wrapper .date-input:focus,wm-datepicker .wrapper .inner-wrapper .date-input:focus{outline:none}:host .wrapper.invalid .inner-wrapper,wm-datepicker .wrapper.invalid .inner-wrapper{-webkit-box-shadow:0 0 0 1px #c0392b;-moz-box-shadow:0 0 0 1px #c0392b;box-shadow:0 0 0 1px #c0392b;border-color:#c0392b}:host .wrapper.invalid .error,wm-datepicker .wrapper.invalid .error{display:block;font-style:italic;color:#c0392b;font-size:0.875rem;margin-top:0.25rem;margin-bottom:4px;top:100%;left:0}:host .wrapper.focus .inner-wrapper,wm-datepicker .wrapper.focus .inner-wrapper{-webkit-box-shadow:0 0 0 1px #20cbd4;-moz-box-shadow:0 0 0 1px #20cbd4;box-shadow:0 0 0 1px #20cbd4;outline:none;border-color:#20cbd4}:host .user-is-tabbing .toggle:focus:not(:active),wm-datepicker .user-is-tabbing .toggle:focus:not(:active){border:none;z-index:11}';var h=e("wm_datepicker",function(){function e(e){t(this,e);this.wmDatepickerNewValidValue=r(this,"wmDatepickerNewValidValue",7);this.lastCommittedValue=this.value;this.parsableEntry=/^(\d{1}|\d{2}|\d{4})[\-\.\/]\d{1,2}[\-\.\/](\d{1}|\d{2}|\d{4})$/;this.isoEntry=/^\d\d\d\d[-]\d\d[-]\d\d$/;this.eightDigitsEntry=/^\d{8}$/;this.dateFormats={US:l.formatMessage({id:"date.formatUS",defaultMessage:"mm/dd/yyyy"}),INT:l.formatMessage({id:"date.formatINT",defaultMessage:"dd/mm/yyyy"}),ISO:l.formatMessage({id:"date.formatISO",defaultMessage:"yyyy/mm/dd"})};this.value="";this.disabled=false;this.dateFormat="US";this.errorMessage="";this.labelPosition="top";this.label="";this.requiredField=false;this.requiredFieldMessage=undefined;this.preventValidation=undefined;this.displayError=""}e.prototype.handleTabbingOn=function(){this.dpWrapper&&this.dpWrapper.classList.add("user-is-tabbing")};e.prototype.handleTabbingOff=function(){this.dpWrapper&&this.dpWrapper.classList.remove("user-is-tabbing")};e.prototype.handleError=function(){if(this.errorMessage){this.generateError()}else{this.clearError();this.processInput()}};e.prototype.handleInput=function(e){this.value=e.target.value};e.prototype.handleBlur=function(e){var t=this.preventValidation&&o(e,this.preventValidation);if(!t){this.processInput()}this.dpWrapper.classList.remove("focus")};e.prototype.focusHandler=function(){this.dpWrapper.classList.add("focus")};e.prototype.handlePopupBlurred=function(e){if(e.detail.relatedTarget!==this.el){var t=new CustomEvent("blur");t.relatedTarget=e.detail.relatedTarget;this.el.dispatchEvent(t)}};e.prototype.getActiveElement=function(){return n(document.activeElement)};e.prototype.handleCellTriggered=function(e){var t=e.detail;var r=t.getAttribute("data-year")+"-"+t.getAttribute("data-month")+"-"+t.textContent;this.inputEl.value=this.reformatDate(this.dateFormat,r);this.processInput();var a=new CustomEvent("input");this.el.dispatchEvent(a)};e.prototype.processInput=function(e){var t=!e&&this.requiredField;var r=this.inputEl.value;if(this.eightDigitsEntry.test(this.inputEl.value)){this.inputEl.value=this.addSlashes(this.inputEl.value)}if(this.parsableEntry.test(this.inputEl.value)){r=this.reformatDate("ISO",this.inputEl.value);this.inputEl.value=this.reformatDate(this.dateFormat,r);if(this.isValidDate(r)){if(this.errorMessage){this.generateError()}else{this.clearError()}}else if(this.inputEl.value.length){this.generateError()}}else if(this.inputEl.value.length||t||this.errorMessage){this.generateError()}else if(!this.inputEl.value.length&&!t){this.clearError()}this.value=r;if(r!==this.lastCommittedValue){var a=new CustomEvent("change");this.el.dispatchEvent(a);this.lastCommittedValue=this.value}if(this.isValidDate(r)&&r!==this.lastValidValue){this.wmDatepickerNewValidValue.emit();this.lastValidValue=r}};e.prototype.reformatDate=function(e,t){if(!t){return""}else if(!this.parsableEntry.test(t)){return t}else{var r=t.replace(/[\-\.]/gi,"/").split("/");switch(e){case"US":case this.dateFormats["US"]:return r[1].padStart(2,"0")+"/"+r[2].padStart(2,"0")+"/"+r[0].padStart(4,"20");case"INT":case this.dateFormats["INT"]:return r[2].padStart(2,"0")+"/"+r[1].padStart(2,"0")+"/"+r[0].padStart(4,"20");case"ISO":case this.dateFormats["ISO"]:if(this.dateFormat==="US"||this.dateFormat===this.dateFormats["US"]){return r[2].padStart(4,"20")+"-"+r[0].padStart(2,"0")+"-"+r[1].padStart(2,"0")}else if(this.dateFormat==="INT"||this.dateFormat===this.dateFormats["INT"]){return r[2].padStart(4,"20")+"-"+r[1].padStart(2,"0")+"-"+r[0].padStart(2,"0")}else if(this.dateFormat==="ISO"||this.dateFormat===this.dateFormats["ISO"]){return r[0].padStart(4,"20")+"-"+r[1].padStart(2,"0")+"-"+r[2].padStart(2,"0")}default:return r.join("/")}}};e.prototype.isValidDate=function(e){if(!e||!this.isoEntry.test(e)){return false}else{var t=e.split("-");var r=parseInt(t[2],10);var a=parseInt(t[1],10);var i=parseInt(t[0],10);if(i<1e3||i>3e3||a==0||a>12)return false;var s=[31,28,31,30,31,30,31,31,30,31,30,31];if(i%400==0||i%100!=0&&i%4==0)s[1]=29;return r>0&&r<=s[a-1]}};e.prototype.generateError=function(){var e=this.requiredFieldMessage||l.formatMessage({id:"date.requiredDateError",defaultMessage:"A date is required."});var t=l.formatMessage({id:"date.invalidDate",defaultMessage:"Please enter a valid date in the format {dateFormat, select, us {mm/dd/yyyy} int {dd/mm/yyyy} other {yyyy/mm/dd}}."},{dateFormat:this.dateFormat.toLowerCase()});if(this.errorMessage){this.displayError=this.errorMessage}else if(this.inputEl.value.length){this.displayError=t}else if(!this.inputEl.value.length&&this.requiredField){this.displayError=e}};e.prototype.clearError=function(){this.displayError=""};e.prototype.addSlashes=function(e){if(this.dateFormat==="ISO"||this.dateFormat===this.dateFormats["ISO"]){return e.substring(0,4)+"/"+e.substring(4,6)+"/"+e.substring(6)}else{return e.substring(0,2)+"/"+e.substring(2,4)+"/"+e.substring(4)}};e.prototype.componentWillLoad=function(){if(this.label===""){console.error("You must include a label prop for the datepicker input (for accessibility reasons), even if the label position is none.")}if(this.errorMessage){this.generateError()}this.uid=this.el.id?this.el.id:p();if(this.value&&this.isValidDate(this.value)){this.lastValidValue=this.value}};e.prototype.componentDidLoad=function(){this.inputEl.value=this.reformatDate(this.dateFormat,this.value);this.processInput(true)};e.prototype.render=function(){var e=this;var t=l.formatMessage({id:"date.format",defaultMessage:"{dateFormat, select, us {mm/dd/yyyy} int {dd/mm/yyyy} other {yyyy/mm/dd}}"},{dateFormat:this.dateFormat.toLowerCase()});return a(i,{id:this.uid,"aria-busy":"false",class:"".concat(this.displayError?"invalid":""),invalid:this.displayError?"true":null},a("div",{ref:function(t){return e.dpWrapper=t},class:"wrapper label-".concat(this.labelPosition," ").concat(this.displayError?"invalid":"")},a("div",{class:"label-wrapper"},this.labelPosition!=="none"&&a("label",{id:"datepickerLabel-".concat(this.uid),htmlFor:"date-input-".concat(this.uid),class:"label",title:"".concat(this.label," (").concat(t,")")},this.label,this.requiredField&&a("span",{"aria-hidden":"true",class:"required"},"*"))),a("div",null,a("div",{class:"inner-wrapper"},a("input",{disabled:this.disabled,type:"text",id:"date-input-".concat(this.uid),class:"date-input",name:"date",placeholder:t,onFocus:this.focusHandler.bind(this),onInput:function(t){return e.handleInput(t)},onBlur:function(t){return e.handleBlur(t)},ref:function(t){return e.inputEl=t},"aria-describedby":"error-".concat(this.uid),"aria-controls":"popup-".concat(this.uid),"aria-label":this.label,"aria-required":this.requiredField?"true":null}),a("priv-datepicker",{disabled:this.disabled,date:this.lastValidValue?new Date(this.lastValidValue):new Date,parentId:this.uid})),a("div",{id:"error-".concat(this.uid),class:"error","aria-live":"assertive","aria-atomic":"true"},this.displayError))))};Object.defineProperty(e,"delegatesFocus",{get:function(){return true},enumerable:false,configurable:true});Object.defineProperty(e.prototype,"el",{get:function(){return s(this)},enumerable:false,configurable:true});Object.defineProperty(e,"watchers",{get:function(){return{errorMessage:["handleError"]}},enumerable:false,configurable:true});return e}());h.style=d}}}));
|
|
2
|
-
//# sourceMappingURL=p-
|
|
1
|
+
System.register(["./p-7b2fc615.system.js","./p-f0fd8695.system.js"],(function(e){"use strict";var t,r,a,i,s,l,o,n,p;return{setters:[function(e){t=e.r;r=e.c;a=e.h;i=e.H;s=e.g},function(e){l=e.i;o=e.e;n=e.h;p=e.g}],execute:function(){var d=':host,wm-datepicker{font-family:inherit}:host *,wm-datepicker *{-webkit-box-sizing:border-box;box-sizing:border-box}:host .wrapper,wm-datepicker .wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;font-size:0.875rem}:host .wrapper .label,wm-datepicker .wrapper .label{display:block;line-height:normal;font-weight:600;white-space:nowrap;margin-bottom:0.25rem}:host .wrapper .label .required,wm-datepicker .wrapper .label .required{color:#c0392b}:host .wrapper.label-left,wm-datepicker .wrapper.label-left{-ms-flex-direction:row;flex-direction:row}:host .wrapper.label-left .label-wrapper,wm-datepicker .wrapper.label-left .label-wrapper{line-height:2.5rem}:host .wrapper.label-left .label-wrapper .label,wm-datepicker .wrapper.label-left .label-wrapper .label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:2.5rem;white-space:normal;margin-bottom:0;margin-right:0.75rem}:host .wrapper.label-none label,wm-datepicker .wrapper.label-none label{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}:host .wrapper.invalid .label,wm-datepicker .wrapper.invalid .label{color:#c0392b}:host .wrapper.invalid .label:after,wm-datepicker .wrapper.invalid .label: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;content:"\\f026";margin-left:0.3125rem}[dir=RTL] :host .wrapper.invalid .label:after,[dir=RTL] wm-datepicker .wrapper.invalid .label:after{margin-left:0;margin-right:0.3125rem}:host .wrapper.rtl.label-left .label,wm-datepicker .wrapper.rtl.label-left .label{margin-right:0;margin-left:0.75rem}:host .wrapper,wm-datepicker .wrapper{position:relative}:host .wrapper .required,wm-datepicker .wrapper .required{color:#c4431c}:host .wrapper .inner-wrapper,wm-datepicker .wrapper .inner-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;height:2.5rem;border:1px solid;border-color:rgba(35, 35, 35, 0.6);-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;max-width:236px;-ms-flex-pack:justify;justify-content:space-between;position:relative}:host .wrapper .inner-wrapper .date-input,wm-datepicker .wrapper .inner-wrapper .date-input{-moz-border-top-left-radius:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-bottom-left-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;border:none;font-size:0.875rem;padding:0.625rem 0.9375rem 0.5rem;min-width:0;height:100%;-ms-flex:1;flex:1;margin:0}:host .wrapper .inner-wrapper .date-input:disabled,wm-datepicker .wrapper .inner-wrapper .date-input:disabled{background-color:#f0f0f0;color:#737373}:host .wrapper .inner-wrapper .date-input:focus,wm-datepicker .wrapper .inner-wrapper .date-input:focus{outline:none}:host .wrapper.invalid .inner-wrapper,wm-datepicker .wrapper.invalid .inner-wrapper{-webkit-box-shadow:0 0 0 1px #c0392b;-moz-box-shadow:0 0 0 1px #c0392b;box-shadow:0 0 0 1px #c0392b;border-color:#c0392b}:host .wrapper.invalid .error,wm-datepicker .wrapper.invalid .error{display:block;font-style:italic;color:#c0392b;font-size:0.875rem;margin-top:0.25rem;margin-bottom:4px;top:100%;left:0}:host .wrapper.focus .inner-wrapper,wm-datepicker .wrapper.focus .inner-wrapper{-webkit-box-shadow:0 0 0 1px #19a1a9;-moz-box-shadow:0 0 0 1px #19a1a9;box-shadow:0 0 0 1px #19a1a9;outline:none;border-color:#19a1a9}:host .user-is-tabbing .toggle:focus:not(:active),wm-datepicker .user-is-tabbing .toggle:focus:not(:active){border:none;z-index:11}';var h=e("wm_datepicker",function(){function e(e){t(this,e);this.wmDatepickerNewValidValue=r(this,"wmDatepickerNewValidValue",7);this.lastCommittedValue=this.value;this.parsableEntry=/^(\d{1}|\d{2}|\d{4})[\-\.\/]\d{1,2}[\-\.\/](\d{1}|\d{2}|\d{4})$/;this.isoEntry=/^\d\d\d\d[-]\d\d[-]\d\d$/;this.eightDigitsEntry=/^\d{8}$/;this.dateFormats={US:l.formatMessage({id:"date.formatUS",defaultMessage:"mm/dd/yyyy"}),INT:l.formatMessage({id:"date.formatINT",defaultMessage:"dd/mm/yyyy"}),ISO:l.formatMessage({id:"date.formatISO",defaultMessage:"yyyy/mm/dd"})};this.value="";this.disabled=false;this.dateFormat="US";this.errorMessage="";this.labelPosition="top";this.label="";this.requiredField=false;this.requiredFieldMessage=undefined;this.preventValidation=undefined;this.displayError=""}e.prototype.handleTabbingOn=function(){this.dpWrapper&&this.dpWrapper.classList.add("user-is-tabbing")};e.prototype.handleTabbingOff=function(){this.dpWrapper&&this.dpWrapper.classList.remove("user-is-tabbing")};e.prototype.handleError=function(){if(this.errorMessage){this.generateError()}else{this.clearError();this.processInput()}};e.prototype.handleInput=function(e){this.value=e.target.value};e.prototype.handleBlur=function(e){var t=this.preventValidation&&o(e,this.preventValidation);if(!t){this.processInput()}this.dpWrapper.classList.remove("focus")};e.prototype.focusHandler=function(){this.dpWrapper.classList.add("focus")};e.prototype.handlePopupBlurred=function(e){if(e.detail.relatedTarget!==this.el){var t=new CustomEvent("blur");t.relatedTarget=e.detail.relatedTarget;this.el.dispatchEvent(t)}};e.prototype.getActiveElement=function(){return n(document.activeElement)};e.prototype.handleCellTriggered=function(e){var t=e.detail;var r=t.getAttribute("data-year")+"-"+t.getAttribute("data-month")+"-"+t.textContent;this.inputEl.value=this.reformatDate(this.dateFormat,r);this.processInput();var a=new CustomEvent("input");this.el.dispatchEvent(a)};e.prototype.processInput=function(e){var t=!e&&this.requiredField;var r=this.inputEl.value;if(this.eightDigitsEntry.test(this.inputEl.value)){this.inputEl.value=this.addSlashes(this.inputEl.value)}if(this.parsableEntry.test(this.inputEl.value)){r=this.reformatDate("ISO",this.inputEl.value);this.inputEl.value=this.reformatDate(this.dateFormat,r);if(this.isValidDate(r)){if(this.errorMessage){this.generateError()}else{this.clearError()}}else if(this.inputEl.value.length){this.generateError()}}else if(this.inputEl.value.length||t||this.errorMessage){this.generateError()}else if(!this.inputEl.value.length&&!t){this.clearError()}this.value=r;if(r!==this.lastCommittedValue){var a=new CustomEvent("change");this.el.dispatchEvent(a);this.lastCommittedValue=this.value}if(this.isValidDate(r)&&r!==this.lastValidValue){this.wmDatepickerNewValidValue.emit();this.lastValidValue=r}};e.prototype.reformatDate=function(e,t){if(!t){return""}else if(!this.parsableEntry.test(t)){return t}else{var r=t.replace(/[\-\.]/gi,"/").split("/");switch(e){case"US":case this.dateFormats["US"]:return r[1].padStart(2,"0")+"/"+r[2].padStart(2,"0")+"/"+r[0].padStart(4,"20");case"INT":case this.dateFormats["INT"]:return r[2].padStart(2,"0")+"/"+r[1].padStart(2,"0")+"/"+r[0].padStart(4,"20");case"ISO":case this.dateFormats["ISO"]:if(this.dateFormat==="US"||this.dateFormat===this.dateFormats["US"]){return r[2].padStart(4,"20")+"-"+r[0].padStart(2,"0")+"-"+r[1].padStart(2,"0")}else if(this.dateFormat==="INT"||this.dateFormat===this.dateFormats["INT"]){return r[2].padStart(4,"20")+"-"+r[1].padStart(2,"0")+"-"+r[0].padStart(2,"0")}else if(this.dateFormat==="ISO"||this.dateFormat===this.dateFormats["ISO"]){return r[0].padStart(4,"20")+"-"+r[1].padStart(2,"0")+"-"+r[2].padStart(2,"0")}default:return r.join("/")}}};e.prototype.isValidDate=function(e){if(!e||!this.isoEntry.test(e)){return false}else{var t=e.split("-");var r=parseInt(t[2],10);var a=parseInt(t[1],10);var i=parseInt(t[0],10);if(i<1e3||i>3e3||a==0||a>12)return false;var s=[31,28,31,30,31,30,31,31,30,31,30,31];if(i%400==0||i%100!=0&&i%4==0)s[1]=29;return r>0&&r<=s[a-1]}};e.prototype.generateError=function(){var e=this.requiredFieldMessage||l.formatMessage({id:"date.requiredDateError",defaultMessage:"A date is required."});var t=l.formatMessage({id:"date.invalidDate",defaultMessage:"Please enter a valid date in the format {dateFormat, select, us {mm/dd/yyyy} int {dd/mm/yyyy} other {yyyy/mm/dd}}."},{dateFormat:this.dateFormat.toLowerCase()});if(this.errorMessage){this.displayError=this.errorMessage}else if(this.inputEl.value.length){this.displayError=t}else if(!this.inputEl.value.length&&this.requiredField){this.displayError=e}};e.prototype.clearError=function(){this.displayError=""};e.prototype.addSlashes=function(e){if(this.dateFormat==="ISO"||this.dateFormat===this.dateFormats["ISO"]){return e.substring(0,4)+"/"+e.substring(4,6)+"/"+e.substring(6)}else{return e.substring(0,2)+"/"+e.substring(2,4)+"/"+e.substring(4)}};e.prototype.componentWillLoad=function(){if(this.label===""){console.error("You must include a label prop for the datepicker input (for accessibility reasons), even if the label position is none.")}if(this.errorMessage){this.generateError()}this.uid=this.el.id?this.el.id:p();if(this.value&&this.isValidDate(this.value)){this.lastValidValue=this.value}};e.prototype.componentDidLoad=function(){this.inputEl.value=this.reformatDate(this.dateFormat,this.value);this.processInput(true)};e.prototype.render=function(){var e=this;var t=l.formatMessage({id:"date.format",defaultMessage:"{dateFormat, select, us {mm/dd/yyyy} int {dd/mm/yyyy} other {yyyy/mm/dd}}"},{dateFormat:this.dateFormat.toLowerCase()});return a(i,{id:this.uid,"aria-busy":"false",class:"".concat(this.displayError?"invalid":""),invalid:this.displayError?"true":null},a("div",{ref:function(t){return e.dpWrapper=t},class:"wrapper label-".concat(this.labelPosition," ").concat(this.displayError?"invalid":"")},a("div",{class:"label-wrapper"},this.labelPosition!=="none"&&a("label",{id:"datepickerLabel-".concat(this.uid),htmlFor:"date-input-".concat(this.uid),class:"label",title:"".concat(this.label," (").concat(t,")")},this.label,this.requiredField&&a("span",{"aria-hidden":"true",class:"required"},"*"))),a("div",null,a("div",{class:"inner-wrapper"},a("input",{disabled:this.disabled,type:"text",id:"date-input-".concat(this.uid),class:"date-input",name:"date",placeholder:t,onFocus:this.focusHandler.bind(this),onInput:function(t){return e.handleInput(t)},onBlur:function(t){return e.handleBlur(t)},ref:function(t){return e.inputEl=t},"aria-describedby":"error-".concat(this.uid),"aria-controls":"popup-".concat(this.uid),"aria-label":this.label,"aria-required":this.requiredField?"true":null}),a("priv-datepicker",{disabled:this.disabled,date:this.lastValidValue?new Date(this.lastValidValue):new Date,parentId:this.uid})),a("div",{id:"error-".concat(this.uid),class:"error","aria-live":"assertive","aria-atomic":"true"},this.displayError))))};Object.defineProperty(e,"delegatesFocus",{get:function(){return true},enumerable:false,configurable:true});Object.defineProperty(e.prototype,"el",{get:function(){return s(this)},enumerable:false,configurable:true});Object.defineProperty(e,"watchers",{get:function(){return{errorMessage:["handleError"]}},enumerable:false,configurable:true});return e}());h.style=d}}}));
|
|
2
|
+
//# sourceMappingURL=p-23fa1ff6.system.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["wmDatepickerCss","DatePicker","exports","this","lastCommittedValue","value","parsableEntry","isoEntry","eightDigitsEntry","dateFormats","US","intl","formatMessage","id","defaultMessage","INT","ISO","class_1","prototype","handleTabbingOn","dpWrapper","classList","add","handleTabbingOff","remove","handleError","errorMessage","generateError","clearError","processInput","handleInput","ev","target","handleBlur","shouldPreventValidation","preventValidation","isRelatedTarget","focusHandler","handlePopupBlurred","detail","relatedTarget","el","event","CustomEvent","dispatchEvent","getActiveElement","checkForFocusableElInShadow","document","activeElement","handleCellTriggered","dateElement","isoDate","getAttribute","textContent","inputEl","reformatDate","dateFormat","isFirstLoad","leftEmpty","requiredField","test","addSlashes","isValidDate","length","lastValidValue","wmDatepickerNewValidValue","emit","toFormat","date","dateArr","replace","split","padStart","join","input","parts","day","parseInt","month","year","monthLength","requiredDateErr","requiredFieldMessage","validDateErr","toLowerCase","displayError","substring","componentWillLoad","label","console","error","uid","generateId","componentDidLoad","render","_this","h","Host","class","concat","invalid","ref","d","labelPosition","htmlFor","title","disabled","type","name","placeholder","onFocus","bind","onInput","onBlur","Date","parentId"],"sources":["src/components/wm-datepicker/wm-datepicker.scss?tag=wm-datepicker&encapsulation=shadow","src/components/wm-datepicker/wm-datepicker.tsx"],"sourcesContent":[":host,\nwm-datepicker {\n font-family: inherit;\n\n * {\n box-sizing: border-box;\n }\n\n @include label;\n\n .wrapper {\n position: relative;\n\n .required {\n color: $datepicker-required-input;\n }\n\n .inner-wrapper {\n @include displayFlex();\n align-items: center;\n height: rem-calc(40);\n border: 1px solid;\n border-color: $datepicker-input-border-color;\n @include border-radius(3px);\n max-width: 236px; /* input is 200px or smaller, button is 36px */\n justify-content: space-between;\n position: relative;\n\n .date-input {\n -moz-border-top-left-radius: 3px;\n -webkit-border-top-left-radius: 3px;\n border-top-left-radius: 3px;\n -moz-border-bottom-left-radius: 3px;\n -webkit-border-bottom-left-radius: 3px;\n border-bottom-left-radius: 3px;\n border: none;\n font-size: rem-calc(14);\n padding: rem-calc(10 15 8);\n min-width: 0;\n height: 100%;\n flex: 1;\n margin: 0;\n\n &:disabled {\n background-color: $input-disabled-bg;\n color: $input-disabled-color;\n }\n\n &:focus {\n outline: none;\n }\n }\n }\n\n &.invalid {\n .inner-wrapper {\n @include invalidBorder;\n }\n\n .error {\n @include errorMessage;\n margin-bottom: 4px;\n top: 100%;\n left: 0;\n }\n }\n\n &.focus {\n .inner-wrapper {\n @include field-focus;\n }\n }\n }\n\n .user-is-tabbing {\n .toggle:focus {\n &:not(:active) {\n border: none;\n z-index: 11;\n }\n }\n }\n}\n","import { h, Component, Host, Element, Event, EventEmitter, Prop, Listen, Watch, State } from \"@stencil/core\";\nimport { generateId, checkForFocusableElInShadow, intl, isRelatedTarget } from \"../../global/functions\";\n\n@Component({\n tag: \"wm-datepicker\",\n styleUrl: \"wm-datepicker.scss\",\n shadow: { delegatesFocus: true },\n})\nexport class DatePicker {\n @Element() el!: HTMLWmDatepickerElement;\n private dpWrapper!: HTMLDivElement;\n private inputEl!: HTMLInputElement;\n\n @Prop({ mutable: true }) value?: string = \"\";\n @Prop() disabled: boolean = false;\n @Prop({ mutable: true }) dateFormat: string = \"US\";\n @Prop({ reflect: true }) errorMessage: string = \"\";\n @Prop({ mutable: true }) labelPosition: \"top\" | \"left\" | \"none\" = \"top\";\n @Prop({ mutable: true }) label: string = \"\";\n @Prop() requiredField: boolean = false;\n @Prop() requiredFieldMessage?: string;\n @Prop() preventValidation?: string; // id or series of ids, validation will not occur when clicking an element with this id\n @State() displayError: string = \"\";\n @Event() wmDatepickerNewValidValue!: EventEmitter;\n\n // we only want to fire the \"change\" event if the value has actually changed (that's\n // how native elements do it), so we need to keep in state the last committed value.\n private lastCommittedValue?: string = this.value;\n private lastValidValue?: string;\n private uid!: string;\n\n // 1, 2, or 4 digits, separator, 1 or 2 digits, separator, then 1 or 2 or 4 digits\n private parsableEntry = /^(\\d{1}|\\d{2}|\\d{4})[\\-\\.\\/]\\d{1,2}[\\-\\.\\/](\\d{1}|\\d{2}|\\d{4})$/;\n private isoEntry = /^\\d\\d\\d\\d[-]\\d\\d[-]\\d\\d$/;\n private eightDigitsEntry = /^\\d{8}$/;\n\n dateFormats: any = {\n US: intl.formatMessage({\n id: \"date.formatUS\",\n defaultMessage: \"mm/dd/yyyy\",\n }),\n INT: intl.formatMessage({\n id: \"date.formatINT\",\n defaultMessage: \"dd/mm/yyyy\",\n }),\n ISO: intl.formatMessage({\n id: \"date.formatISO\",\n defaultMessage: \"yyyy/mm/dd\",\n }),\n };\n\n @Listen(\"keydown\")\n handleTabbingOn() {\n this.dpWrapper && this.dpWrapper.classList.add(\"user-is-tabbing\");\n }\n\n @Listen(\"click\")\n handleTabbingOff() {\n this.dpWrapper && this.dpWrapper.classList.remove(\"user-is-tabbing\");\n }\n\n @Watch(\"errorMessage\")\n handleError() {\n if (this.errorMessage) {\n this.generateError();\n } else {\n this.clearError();\n this.processInput();\n }\n }\n\n handleInput(ev: Event) {\n // keep component's value in sync with input's value\n // validation only happens on blur and initial load,\n // but component's value should reflect user input at any time\n this.value = (ev.target! as HTMLInputElement).value; // same as this.inputEl.value\n }\n\n // this is input blur, not component blur\n handleBlur(ev: FocusEvent) {\n // do not validate if clicking to an element that should prevent validation (e.g. close button on modal)\n const shouldPreventValidation = this.preventValidation && isRelatedTarget(ev, this.preventValidation);\n if (!shouldPreventValidation) {\n this.processInput();\n }\n this.dpWrapper.classList.remove(\"focus\");\n }\n\n // this is input focus, not component focus\n focusHandler() {\n this.dpWrapper.classList.add(\"focus\");\n }\n\n @Listen(\"popupBlurred\")\n handlePopupBlurred(ev: CustomEvent) {\n // emit blur event when leaving component from priv-datepicker\n if (ev.detail.relatedTarget !== this.el) {\n const event = new CustomEvent(\"blur\");\n // @ts-ignore\n event.relatedTarget = ev.detail.relatedTarget;\n this.el.dispatchEvent(event);\n }\n }\n\n getActiveElement() {\n return checkForFocusableElInShadow(document.activeElement as HTMLElement);\n }\n\n @Listen(\"cellTriggered\")\n handleCellTriggered(ev: CustomEvent) {\n let dateElement = ev.detail as HTMLTableCellElement;\n let isoDate =\n dateElement.getAttribute(\"data-year\")! +\n \"-\" +\n dateElement.getAttribute(\"data-month\")! +\n \"-\" +\n dateElement.textContent!;\n this.inputEl.value = this.reformatDate(this.dateFormat, isoDate);\n this.processInput();\n\n // Create event to trigger onInput function on host element, to get the updated value\n // Because there are more ways to input than just typing, we are firing this event upon cellTriggered\n const event = new CustomEvent(\"input\");\n this.el.dispatchEvent(event);\n }\n\n processInput(isFirstLoad?: boolean) {\n // The required field error should not display on first load\n const leftEmpty = !isFirstLoad && this.requiredField;\n\n let isoDate = this.inputEl.value;\n\n //If input is 8 digits, add slashes as a courtesy and process anyway\n if (this.eightDigitsEntry.test(this.inputEl.value)) {\n this.inputEl.value = this.addSlashes(this.inputEl.value);\n }\n\n // if we don't have 2 separators we can't reformat so we'll return what was passed in\n if (this.parsableEntry.test(this.inputEl.value)) {\n //ISO format for submission\n isoDate = this.reformatDate(\"ISO\", this.inputEl.value);\n\n //User-specific format for display\n this.inputEl.value = this.reformatDate(this.dateFormat, isoDate);\n\n if (this.isValidDate(isoDate)) {\n //If there's no errorMessage on state, all errors can be cleared. If there IS an error message, it will clear any internal validation errors by overriding them.\n if (this.errorMessage) {\n this.generateError();\n } else {\n this.clearError();\n }\n //Prevents error from appearing if input field is empty\n } else if (this.inputEl.value.length) {\n this.generateError();\n }\n } else if (this.inputEl.value.length || leftEmpty || this.errorMessage) {\n this.generateError();\n } else if (!this.inputEl.value.length && !leftEmpty) {\n this.clearError();\n }\n\n // value is set to the reformated date or whatever the user passed\n this.value = isoDate;\n\n if (isoDate !== this.lastCommittedValue) {\n const event = new CustomEvent(\"change\");\n this.el.dispatchEvent(event);\n this.lastCommittedValue = this.value;\n }\n\n // event must fire after we set this.value\n // only fire if new valid value is different from the previous one\n if (this.isValidDate(isoDate) && isoDate !== this.lastValidValue) {\n this.wmDatepickerNewValidValue.emit();\n //Update prop passed into calendar to valid date\n this.lastValidValue = isoDate;\n }\n }\n\n // this function reformats date strings to/from the storage format ONLY. US -> INT and vice versa is not supported.\n reformatDate(toFormat: string, date?: string): string {\n if (!date) {\n return \"\";\n } else if (!this.parsableEntry.test(date)) {\n return date;\n } else {\n let dateArr = date.replace(/[\\-\\.]/gi, \"/\").split(\"/\");\n switch (toFormat) {\n case \"US\":\n case this.dateFormats[\"US\"]:\n return dateArr[1].padStart(2, \"0\") + \"/\" + dateArr[2].padStart(2, \"0\") + \"/\" + dateArr[0].padStart(4, \"20\");\n case \"INT\":\n case this.dateFormats[\"INT\"]:\n return dateArr[2].padStart(2, \"0\") + \"/\" + dateArr[1].padStart(2, \"0\") + \"/\" + dateArr[0].padStart(4, \"20\");\n case \"ISO\":\n case this.dateFormats[\"ISO\"]:\n if (this.dateFormat === \"US\" || this.dateFormat === this.dateFormats[\"US\"]) {\n return dateArr[2].padStart(4, \"20\") + \"-\" + dateArr[0].padStart(2, \"0\") + \"-\" + dateArr[1].padStart(2, \"0\");\n } else if (this.dateFormat === \"INT\" || this.dateFormat === this.dateFormats[\"INT\"]) {\n return dateArr[2].padStart(4, \"20\") + \"-\" + dateArr[1].padStart(2, \"0\") + \"-\" + dateArr[0].padStart(2, \"0\");\n } else if (this.dateFormat === \"ISO\" || this.dateFormat === this.dateFormats[\"ISO\"]) {\n return dateArr[0].padStart(4, \"20\") + \"-\" + dateArr[1].padStart(2, \"0\") + \"-\" + dateArr[2].padStart(2, \"0\");\n }\n default:\n return dateArr.join(\"/\");\n }\n }\n }\n\n isValidDate(input?: string) {\n // if it's not ISO it's not valid\n if (!input || !this.isoEntry.test(input)) {\n return false;\n } else {\n // Parse the ISO date parts to integers\n let parts = input.split(\"-\");\n let day = parseInt(parts[2], 10);\n let month = parseInt(parts[1], 10);\n let year = parseInt(parts[0], 10);\n // Check the ranges of month and year\n if (year < 1000 || year > 3000 || month == 0 || month > 12) return false;\n let monthLength = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n // Adjust for leap years\n if (year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)) monthLength[1] = 29;\n // Check the range of the day\n return day > 0 && day <= monthLength[month - 1];\n }\n }\n\n generateError() {\n const requiredDateErr: string =\n this.requiredFieldMessage ||\n intl.formatMessage({\n id: \"date.requiredDateError\",\n defaultMessage: \"A date is required.\",\n });\n const validDateErr = intl.formatMessage(\n {\n id: \"date.invalidDate\",\n defaultMessage:\n \"Please enter a valid date in the format {dateFormat, select, us {mm/dd/yyyy} int {dd/mm/yyyy} other {yyyy/mm/dd}}.\",\n },\n { dateFormat: this.dateFormat.toLowerCase() }\n );\n if (this.errorMessage) {\n this.displayError = this.errorMessage;\n } else if (this.inputEl.value.length) {\n this.displayError = validDateErr;\n } else if (!this.inputEl.value.length && this.requiredField) {\n this.displayError = requiredDateErr;\n }\n }\n\n clearError() {\n this.displayError = \"\";\n }\n\n addSlashes(input: string) {\n if (this.dateFormat === \"ISO\" || this.dateFormat === this.dateFormats[\"ISO\"]) {\n return input.substring(0, 4) + \"/\" + input.substring(4, 6) + \"/\" + input.substring(6);\n } else {\n return input.substring(0, 2) + \"/\" + input.substring(2, 4) + \"/\" + input.substring(4);\n }\n }\n\n componentWillLoad() {\n if (this.label === \"\") {\n console.error(\n \"You must include a label prop for the datepicker input (for accessibility reasons), even if the label position is none.\"\n );\n }\n if (this.errorMessage) {\n this.generateError();\n }\n\n this.uid = this.el.id ? this.el.id : generateId();\n\n if (this.value && this.isValidDate(this.value)) {\n // update value passed into calendar so that it opens on the specified date\n this.lastValidValue = this.value;\n }\n }\n\n componentDidLoad() {\n // convert passed-in starting date from ISO to locale format, update displayed input to proper format\n this.inputEl.value = this.reformatDate(this.dateFormat, this.value);\n this.processInput(true);\n }\n\n render() {\n const dateFormat = intl.formatMessage(\n {\n id: \"date.format\",\n defaultMessage: \"{dateFormat, select, us {mm/dd/yyyy} int {dd/mm/yyyy} other {yyyy/mm/dd}}\",\n },\n { dateFormat: this.dateFormat.toLowerCase() }\n );\n return (\n <Host\n id={this.uid}\n aria-busy=\"false\"\n class={`${this.displayError ? \"invalid\" : \"\"}`}\n invalid={this.displayError ? \"true\" : null}\n >\n <div\n ref={(d) => (this.dpWrapper = d as HTMLDivElement)}\n class={`wrapper label-${this.labelPosition} ${this.displayError ? \"invalid\" : \"\"}`}\n >\n <div class=\"label-wrapper\">\n {this.labelPosition !== \"none\" && (\n <label\n id={`datepickerLabel-${this.uid}`}\n htmlFor={`date-input-${this.uid}`}\n class=\"label\"\n title={`${this.label} (${dateFormat})`}\n >\n {this.label}\n {this.requiredField && (\n <span aria-hidden=\"true\" class=\"required\">\n *\n </span>\n )}\n </label>\n )}\n </div>\n <div>\n <div class=\"inner-wrapper\">\n <input\n disabled={this.disabled}\n type=\"text\"\n id={`date-input-${this.uid}`}\n class=\"date-input\"\n name=\"date\"\n placeholder={dateFormat}\n onFocus={this.focusHandler.bind(this)}\n onInput={(ev) => this.handleInput(ev)}\n onBlur={(ev) => this.handleBlur(ev)}\n ref={(input) => (this.inputEl = input as HTMLInputElement)}\n aria-describedby={`error-${this.uid}`}\n aria-controls={`popup-${this.uid}`}\n aria-label={this.label}\n aria-required={this.requiredField ? \"true\" : null}\n />\n <priv-datepicker\n disabled={this.disabled}\n date={this.lastValidValue ? new Date(this.lastValidValue) : new Date()}\n parentId={this.uid}\n />\n </div>\n <div id={`error-${this.uid}`} class=\"error\" aria-live=\"assertive\" aria-atomic=\"true\">\n {this.displayError}\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ChartSlice","exports","class_1","prototype","componentDidLoad","parseInt","this","amount","legend","Error","componentDidUpdate","wmChartSliceUpdated","emit"],"sources":["src/components/charts/wm-chart/wm-chart-slice.tsx"],"sourcesContent":["import { Component, Prop, Event, EventEmitter } from \"@stencil/core\";\
|
|
1
|
+
{"version":3,"names":["ChartSlice","exports","class_1","prototype","componentDidLoad","parseInt","this","amount","legend","Error","componentDidUpdate","wmChartSliceUpdated","emit"],"sources":["src/components/charts/wm-chart/wm-chart-slice.tsx"],"sourcesContent":["import { Component, Prop, Event, EventEmitter } from \"@stencil/core\";\n\n@Component({\n tag: \"wm-chart-slice\",\n})\nexport class ChartSlice {\n @Prop() legend?: string;\n @Prop() amount?: string;\n @Prop() popoverTitle?: string;\n @Prop() popoverText?: string;\n @Prop() popoverButtonText?: string;\n\n @Event() wmChartSliceUpdated!: EventEmitter<void>;\n\n componentDidLoad() {\n if (parseInt(this.amount!) > 0 && !this.legend) {\n throw new Error(\n \"wm-chart-slice was provided an amount value without a legend. The legend is required unless the amount is 0 or left empty. For more information see https://components.watermarkinsights.com/chart\"\n );\n }\n }\n\n componentDidUpdate() {\n this.wmChartSliceUpdated.emit();\n }\n}\n"],"mappings":"8IAKaA,EAAUC,EAAA,4B,qNASrBC,EAAAC,UAAAC,iBAAA,WACE,GAAIC,SAASC,KAAKC,QAAW,IAAMD,KAAKE,OAAQ,CAC9C,MAAM,IAAIC,MACR,qM,GAKNP,EAAAC,UAAAO,mBAAA,WACEJ,KAAKK,oBAAoBC,M,WAlBN,G"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Wrapper","exports","class_1","prototype","componentDidLoad","this","wmWrapperLoaded","emit","render"],"sources":["src/components/wm-wrapper/wm-wrapper.tsx"],"sourcesContent":["import { Component, Element, Event, EventEmitter } from \"@stencil/core\";\
|
|
1
|
+
{"version":3,"names":["Wrapper","exports","class_1","prototype","componentDidLoad","this","wmWrapperLoaded","emit","render"],"sources":["src/components/wm-wrapper/wm-wrapper.tsx"],"sourcesContent":["import { Component, Element, Event, EventEmitter } from \"@stencil/core\";\n\n@Component({\n tag: \"wm-wrapper\",\n shadow: false,\n})\nexport class Wrapper {\n @Element() el!: any;\n @Event() wmWrapperLoaded!: EventEmitter<void>;\n\n componentDidLoad() {\n this.wmWrapperLoaded.emit();\n }\n\n render() {\n return;\n }\n}\n"],"mappings":"sJAMaA,EAAOC,EAAA,wB,yEAIlBC,EAAAC,UAAAC,iBAAA,WACEC,KAAKC,gBAAgBC,M,EAGvBL,EAAAC,UAAAK,OAAA,WACE,M,uHATgB,G"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
var __awaiter=this&&this.__awaiter||function(t,e,n,r){function a(t){return t instanceof n?t:new n((function(e){e(t)}))}return new(n||(n=Promise))((function(n,o){function i(t){try{s(r.next(t))}catch(t){o(t)}}function u(t){try{s(r["throw"](t))}catch(t){o(t)}}function s(t){t.done?n(t.value):a(t.value).then(i,u)}s((r=r.apply(t,e||[])).next())}))};var __generator=this&&this.__generator||function(t,e){var n={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},r,a,o,i;return i={next:u(0),throw:u(1),return:u(2)},typeof Symbol==="function"&&(i[Symbol.iterator]=function(){return this}),i;function u(t){return function(e){return s([t,e])}}function s(u){if(r)throw new TypeError("Generator is already executing.");while(i&&(i=0,u[0]&&(n=0)),n)try{if(r=1,a&&(o=u[0]&2?a["return"]:u[0]?a["throw"]||((o=a["return"])&&o.call(a),0):a.next)&&!(o=o.call(a,u[1])).done)return o;if(a=0,o)u=[u[0]&2,o.value];switch(u[0]){case 0:case 1:o=u;break;case 4:n.label++;return{value:u[1],done:false};case 5:n.label++;a=u[1];u=[0];continue;case 7:u=n.ops.pop();n.trys.pop();continue;default:if(!(o=n.trys,o=o.length>0&&o[o.length-1])&&(u[0]===6||u[0]===2)){n=0;continue}if(u[0]===3&&(!o||u[1]>o[0]&&u[1]<o[3])){n.label=u[1];break}if(u[0]===6&&n.label<o[1]){n.label=o[1];o=u;break}if(o&&n.label<o[2]){n.label=o[2];n.ops.push(u);break}if(o[2])n.ops.pop();n.trys.pop();continue}u=e.call(t,n)}catch(t){u=[6,t];a=0}finally{r=o=0}if(u[0]&5)throw u[1];return{value:u[0]?u[1]:void 0,done:true}}};System.register([],(function(t){"use strict";return{execute:function(){var e=this;var n=t("g",(function(t){return __awaiter(e,void 0,void 0,(function(){var e;return __generator(this,(function(n){switch(n.label){case 0:return[4,fetch(t)];case 1:e=n.sent();if(!(!!e&&!!e.ok))return[3,3];return[4,e.json()];case 2:return[2,n.sent()];case 3:throw new Error(e.statusText)}}))}))}));var r=t("a",(function(t,n){return __awaiter(e,void 0,void 0,(function(){var e;return __generator(this,(function(r){switch(r.label){case 0:return[4,fetch(t,{method:"POST",headers:{"Content-Type":"application/json; charset=utf-8"},body:JSON.stringify(n)})];case 1:e=r.sent();if(!(!!e&&!!e.ok))return[3,3];return[4,e.json()];case 2:return[2,r.sent()];case 3:throw new Error(e.statusText)}}))}))}));var a=t("d",(function(t){return __awaiter(e,void 0,void 0,(function(){var e;return __generator(this,(function(n){switch(n.label){case 0:return[4,fetch(t,{method:"DELETE"})];case 1:e=n.sent();if(!(!!e&&!!e.ok))return[3,3];return[4,e.json()];case 2:return[2,n.sent()];case 3:throw new Error(e.statusText)}}))}))}));var o=t("p",(function(t,e,n){return new Promise((function(r,a){var o=new XMLHttpRequest;o.upload.addEventListener("progress",(function(t){return n(t)}));o.addEventListener("readystatechange",(function(){if(this.readyState===4&&this.status===200){r(this)}else if(this.readyState===4&&this.status!==200){a()}}));o.onerror=function(){return a()};o.open("PUT",t,true);o.setRequestHeader("Content-Disposition",'attachment;filename="'.concat(e.name,'"'));o.send(e)}))}))}}}));
|
|
2
|
-
//# sourceMappingURL=p-
|
|
2
|
+
//# sourceMappingURL=p-313b6073.system.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["getRequest","exports","url","__awaiter","_this","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) => {\n const response = await fetch(url);\n if (!!response && !!response.ok) {\n return await response.json();\n } else {\n throw new Error(response.statusText);\n }\n};\n\nexport const postRequest = async (url: string, payload: Object) => {\n const response = await fetch(url, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json; charset=utf-8\" },\n body: JSON.stringify(payload),\n });\n if (!!response && !!response.ok) {\n return await response.json();\n } else {\n throw new Error(response.statusText);\n }\n};\n\nexport const deleteRequest = async (url: string) => {\n const response = await fetch(url, { method: \"DELETE\" });\n if (!!response && !!response.ok) {\n return await response.json();\n } else {\n throw new Error(response.statusText);\n }\n};\n\nexport const putRequest = (url: string, file: File, onProgress: Function) => {\n return new Promise((resolve, reject) => {\n // there's no way to track progress with the fetch API, so using XHR\n const req = new XMLHttpRequest();\n\n req.upload.addEventListener(\"progress\", (ev) => onProgress(ev));\n\n req.addEventListener(\"readystatechange\", function () {\n if (this.readyState === 4 && this.status === 200) {\n resolve(this);\n } else if (this.readyState === 4 && this.status !== 200) {\n reject();\n }\n });\n\n req.onerror = () => reject();\n req.open(\"PUT\", url, true);\n req.setRequestHeader(\"Content-Disposition\", `attachment;filename=\"${file.name}\"`);\n req.send(file);\n });\n};\n"],"mappings":"oiDAAaA,EAAUC,EAAA,KAAG,SAAOC,GAAW,OAAAC,UAAAC,OAAA,qB,kEACzB,SAAMC,MAAMH,I,OAAvBI,EAAWC,EAAAC,O,OACXF,KAAcA,EAASG,IAAzB,YACK,SAAMH,EAASI,Q,OAAtB,SAAOH,EAAAC,Q,OAEP,MAAM,IAAIG,MAAML,EAASM,Y,cAIhBC,EAAWZ,EAAA,KAAG,SAAOC,EAAaY,GAAe,OAAAX,UAAAC,OAAA,qB,kEAC3C,SAAMC,MAAMH,EAAK,CAChCa,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,cAIhBQ,EAAanB,EAAA,KAAG,SAAOC,GAAW,OAAAC,UAAAC,OAAA,qB,kEAC5B,SAAMC,MAAMH,EAAK,CAAEa,OAAQ,Y,OAAtCT,EAAWC,EAAAC,O,OACXF,KAAcA,EAASG,IAAzB,YACK,SAAMH,EAASI,Q,OAAtB,SAAOH,EAAAC,Q,OAEP,MAAM,IAAIG,MAAML,EAASM,Y,cAIhBS,EAAUpB,EAAA,KAAG,SAACC,EAAaoB,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,MAAOlC,EAAK,MACrByB,EAAIU,iBAAiB,sBAAuB,wBAAAC,OAAwBhB,EAAKiB,KAAI,MAC7EZ,EAAIa,KAAKlB,E,GAEb,G"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["wmFileListCss","FileList","exports","Object","defineProperty","class_1","prototype","this","files","JSON","parse","handleFileDownloaded","ev","wmFileDownload","emit","detail","handleFilePreviewed","wmFilePreview","handleFileDeleted","wmFileDelete","renderFile","file","fileActions","undefined","h","stringify","showInfo","render","_this","role","class","fileList","map"],"sources":["src/components/wm-file-list/wm-file-list.scss?tag=wm-file-list&encapsulation=shadow","src/components/wm-file-list/wm-file-list.tsx"],"sourcesContent":[":host,\
|
|
1
|
+
{"version":3,"names":["wmFileListCss","FileList","exports","Object","defineProperty","class_1","prototype","this","files","JSON","parse","handleFileDownloaded","ev","wmFileDownload","emit","detail","handleFilePreviewed","wmFilePreview","handleFileDeleted","wmFileDelete","renderFile","file","fileActions","undefined","h","stringify","showInfo","render","_this","role","class","fileList","map"],"sources":["src/components/wm-file-list/wm-file-list.scss?tag=wm-file-list&encapsulation=shadow","src/components/wm-file-list/wm-file-list.tsx"],"sourcesContent":[":host,\nwm-file-list {\n display: block;\n}\n\n.list-wrapper {\n display: flex;\n flex-direction: column;\n gap: rem-calc(8);\n}\n","import { h, Component, Element, Event, EventEmitter, Listen, Prop } from \"@stencil/core\";\nimport { UploadedFile } from \"../../global/interfaces\";\n\n@Component({\n tag: \"wm-file-list\",\n styleUrl: \"wm-file-list.scss\",\n shadow: { delegatesFocus: true },\n})\nexport class FileList {\n @Element() el!: HTMLWmFileListElement;\n @Prop() files?: string;\n @Prop() showInfo: \"time\" | \"size\" | \"none\" = \"time\";\n\n @Event() wmFileDelete!: EventEmitter<string>;\n @Event() wmFileDownload!: EventEmitter<string>;\n @Event() wmFilePreview!: EventEmitter<string>;\n\n get fileList(): [UploadedFile] {\n return this.files ? JSON.parse(this.files) : [];\n }\n\n @Listen(\"wmIntFileDownloaded\")\n handleFileDownloaded(ev: CustomEvent) {\n this.wmFileDownload.emit(ev.detail);\n }\n\n @Listen(\"wmIntFilePreviewed\")\n handleFilePreviewed(ev: CustomEvent) {\n this.wmFilePreview.emit(ev.detail);\n }\n\n @Listen(\"wmIntFileDeleted\")\n handleFileDeleted(ev: CustomEvent) {\n this.wmFileDelete.emit(ev.detail);\n }\n\n renderFile(file: UploadedFile) {\n // file list does not allow for default file actions\n // if none are passed, display no buttons\n if (file.fileActions === undefined) {\n file.fileActions = \"\";\n }\n return <wm-file file={JSON.stringify(file)} show-info={this.showInfo}></wm-file>;\n }\n\n render() {\n return (\n <div role=\"list\" class=\"list-wrapper\">\n {this.fileList.map((file: UploadedFile) => this.renderFile(file))}\n </div>\n );\n }\n}\n"],"mappings":"0JAAA,IAAMA,EAAgB,8I,ICQTC,EAAQC,EAAA,0B,kMAG0B,M,CAM7CC,OAAAC,eAAIC,EAAAC,UAAA,WAAQ,C,IAAZ,WACE,OAAOC,KAAKC,MAAQC,KAAKC,MAAMH,KAAKC,OAAS,E,uCAI/CH,EAAAC,UAAAK,qBAAA,SAAqBC,GACnBL,KAAKM,eAAeC,KAAKF,EAAGG,O,EAI9BV,EAAAC,UAAAU,oBAAA,SAAoBJ,GAClBL,KAAKU,cAAcH,KAAKF,EAAGG,O,EAI7BV,EAAAC,UAAAY,kBAAA,SAAkBN,GAChBL,KAAKY,aAAaL,KAAKF,EAAGG,O,EAG5BV,EAAAC,UAAAc,WAAA,SAAWC,GAGT,GAAIA,EAAKC,cAAgBC,UAAW,CAClCF,EAAKC,YAAc,E,CAErB,OAAOE,EAAA,WAASH,KAAMZ,KAAKgB,UAAUJ,GAAK,YAAad,KAAKmB,U,EAG9DrB,EAAAC,UAAAqB,OAAA,eAAAC,EAAArB,KACE,OACEiB,EAAA,OAAKK,KAAK,OAAOC,MAAM,gBACpBvB,KAAKwB,SAASC,KAAI,SAACX,GAAuB,OAAAO,EAAKR,WAAWC,EAAhB,I,kOAxC9B,I"}
|