@watermarkinsights/ripple 5.7.0-7 → 5.7.0-9

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.
Files changed (79) hide show
  1. package/dist/cjs/{global-4e6e41e7.js → global-80ed0881.js} +1 -1
  2. package/dist/cjs/index-e86c28b6.js +8 -12
  3. package/dist/cjs/loader.cjs.js +2 -2
  4. package/dist/cjs/priv-option-list.cjs.entry.js +6 -2
  5. package/dist/cjs/ripple.cjs.js +2 -2
  6. package/dist/cjs/wm-modal-pss_3.cjs.entry.js +213 -0
  7. package/dist/cjs/{wm-modal.cjs.entry.js → wm-modal_3.cjs.entry.js} +73 -0
  8. package/dist/cjs/wm-nested-select.cjs.entry.js +24 -15
  9. package/dist/cjs/wm-option_2.cjs.entry.js +1 -1
  10. package/dist/collection/collection-manifest.json +17 -5
  11. package/dist/collection/components/selects/priv-option-list/priv-option-list.css +16 -6
  12. package/dist/collection/components/selects/priv-option-list/priv-option-list.js +5 -1
  13. package/dist/collection/components/selects/wm-nested-select/wm-nested-select.css +5 -5
  14. package/dist/collection/components/selects/wm-nested-select/wm-nested-select.js +25 -15
  15. package/dist/collection/components/selects/wm-select/wm-select.css +3 -3
  16. package/dist/collection/components/wm-modal-pss/wm-modal-pss-footer.css +61 -0
  17. package/dist/collection/components/wm-modal-pss/wm-modal-pss-footer.js +138 -0
  18. package/dist/collection/components/wm-modal-pss/wm-modal-pss-header.css +55 -0
  19. package/dist/collection/components/wm-modal-pss/wm-modal-pss-header.js +81 -0
  20. package/dist/collection/components/wm-modal-pss/wm-modal-pss.css +134 -0
  21. package/dist/collection/components/wm-modal-pss/wm-modal-pss.js +361 -0
  22. package/dist/esm/{global-099ddc86.js → global-525745d2.js} +1 -1
  23. package/dist/esm/index-558b5a82.js +8 -12
  24. package/dist/esm/loader.js +2 -2
  25. package/dist/esm/priv-option-list.entry.js +6 -2
  26. package/dist/esm/ripple.js +2 -2
  27. package/dist/esm/wm-modal-pss_3.entry.js +207 -0
  28. package/dist/esm/{wm-modal.entry.js → wm-modal_3.entry.js} +73 -2
  29. package/dist/esm/wm-nested-select.entry.js +24 -15
  30. package/dist/esm/wm-option_2.entry.js +1 -1
  31. package/dist/esm-es5/{global-099ddc86.js → global-525745d2.js} +1 -1
  32. package/dist/esm-es5/index-558b5a82.js +1 -1
  33. package/dist/esm-es5/loader.js +1 -1
  34. package/dist/esm-es5/priv-option-list.entry.js +1 -1
  35. package/dist/esm-es5/ripple.js +1 -1
  36. package/dist/esm-es5/wm-modal-pss_3.entry.js +1 -0
  37. package/dist/esm-es5/wm-modal_3.entry.js +1 -0
  38. package/dist/esm-es5/wm-nested-select.entry.js +1 -1
  39. package/dist/esm-es5/wm-option_2.entry.js +1 -1
  40. package/dist/ripple/{p-c269536e.system.js → p-01035c8e.system.js} +1 -1
  41. package/dist/ripple/p-012cab20.entry.js +1 -0
  42. package/dist/ripple/p-02deae76.entry.js +1 -0
  43. package/dist/ripple/{p-320d06aa.js → p-1092e5ce.js} +1 -1
  44. package/dist/ripple/p-1d18d9d2.system.entry.js +1 -0
  45. package/dist/ripple/p-249add87.system.entry.js +1 -0
  46. package/dist/ripple/p-5254f902.entry.js +1 -0
  47. package/dist/ripple/p-6e725656.system.entry.js +1 -0
  48. package/dist/ripple/p-6fdfe9f4.system.entry.js +1 -0
  49. package/dist/ripple/{p-ad7c9d21.entry.js → p-bf7d98d8.entry.js} +1 -1
  50. package/dist/ripple/p-cff5d7e9.system.entry.js +1 -0
  51. package/dist/ripple/p-eefbca0e.system.js +1 -0
  52. package/dist/ripple/p-f13b034e.entry.js +1 -0
  53. package/dist/ripple/ripple.esm.js +1 -1
  54. package/dist/ripple/ripple.js +1 -1
  55. package/dist/types/components/selects/priv-option-list/priv-option-list.d.ts +1 -0
  56. package/dist/types/components/selects/wm-nested-select/wm-nested-select.d.ts +3 -0
  57. package/dist/types/components/wm-modal-pss/wm-modal-pss-footer.d.ts +14 -0
  58. package/dist/types/components/wm-modal-pss/wm-modal-pss-header.d.ts +10 -0
  59. package/dist/types/components.d.ts +88 -0
  60. package/package.json +1 -1
  61. package/dist/cjs/wm-modal-footer.cjs.entry.js +0 -47
  62. package/dist/cjs/wm-modal-header.cjs.entry.js +0 -39
  63. package/dist/esm/wm-modal-footer.entry.js +0 -43
  64. package/dist/esm/wm-modal-header.entry.js +0 -35
  65. package/dist/esm-es5/wm-modal-footer.entry.js +0 -1
  66. package/dist/esm-es5/wm-modal-header.entry.js +0 -1
  67. package/dist/esm-es5/wm-modal.entry.js +0 -1
  68. package/dist/ripple/p-13f51c06.entry.js +0 -1
  69. package/dist/ripple/p-1c170fb3.entry.js +0 -1
  70. package/dist/ripple/p-22930de9.system.entry.js +0 -1
  71. package/dist/ripple/p-294b38ca.system.entry.js +0 -1
  72. package/dist/ripple/p-2f664fdd.entry.js +0 -1
  73. package/dist/ripple/p-3568472c.entry.js +0 -1
  74. package/dist/ripple/p-4d956340.system.entry.js +0 -1
  75. package/dist/ripple/p-50388b6f.system.entry.js +0 -1
  76. package/dist/ripple/p-7c338485.entry.js +0 -1
  77. package/dist/ripple/p-84603f1f.system.entry.js +0 -1
  78. package/dist/ripple/p-b3a2bc1b.system.entry.js +0 -1
  79. package/dist/ripple/p-dcc367a9.system.js +0 -1
@@ -4,6 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-e86c28b6.js');
6
6
  const functions = require('./functions-e24249e6.js');
7
+ const intl = require('./intl-5aeba788.js');
7
8
 
8
9
  const wmModalCss = "wm-modal{--wmcolor-modal-background:var(--wmcolor-background);--wmcolor-modal-border:var(--wmcolor-border);--wmcolor-modal-heading:var(--wmcolor-text);--wmcolor-modal-overlay:var(--wmcolor-overlay)}wm-modal *{-webkit-box-sizing:border-box;box-sizing:border-box}wm-modal dialog{color:inherit;padding:0;width:80vw;max-width:750px;max-height:80vh;-webkit-border-radius:5px 5px 5px 5px;-moz-border-radius:5px 5px 5px 5px;-ms-border-radius:5px 5px 5px 5px;border-radius:5px 5px 5px 5px;border:none;background:var(--wmcolor-modal-background)}wm-modal dialog>:not(wm-modal-header):not(wm-modal-footer){max-height:calc(80vh - 166px)}wm-modal dialog::-webkit-backdrop{background:rgba(25, 25, 25, 0.4)}wm-modal dialog::-ms-backdrop{background:rgba(25, 25, 25, 0.4)}wm-modal dialog::backdrop{background:rgba(25, 25, 25, 0.4)}wm-modal dialog[open]{-webkit-box-shadow:0px 11px 15px 0px rgba(0, 0, 0, 0.2), 0px 9px 46px 8px rgba(0, 0, 0, 0.12), 0px 24px 38px 3px rgba(0, 0, 0, 0.14);-moz-box-shadow:0px 11px 15px 0px rgba(0, 0, 0, 0.2), 0px 9px 46px 8px rgba(0, 0, 0, 0.12), 0px 24px 38px 3px rgba(0, 0, 0, 0.14);box-shadow:0px 11px 15px 0px rgba(0, 0, 0, 0.2), 0px 9px 46px 8px rgba(0, 0, 0, 0.12), 0px 24px 38px 3px rgba(0, 0, 0, 0.14)}wm-modal dialog.wm-modal>wm-modal-header{border-bottom:1px solid var(--wmcolor-modal-border)}wm-modal dialog.wm-modal>wm-modal-footer{border-top:1px solid var(--wmcolor-modal-border)}@media only screen and (max-width: 768px){wm-modal dialog.wm-modal{height:100%;max-height:none;max-width:none;width:100vw}wm-modal dialog.wm-modal>*{max-width:none;width:100vw}wm-modal dialog.wm-modal>*:not(wm-modal-header):not(wm-modal-footer){max-height:none;height:calc(100vh - 166px)}}wm-modal dialog.wm-dialog>:not(wm-modal-header):not(wm-modal-footer):not(.wm-tooltip){padding:0 1.875rem 1.25rem 1.875rem;font-size:0.875rem;border:none}wm-modal wm-modal-header,wm-modal wm-modal-footer{padding:1.25rem 1.875rem;width:100%}wm-modal .sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;border:0 !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;white-space:nowrap !important;margin:-1px !important;top:0;left:0}";
9
10
 
@@ -136,4 +137,76 @@ const Modal = class {
136
137
  };
137
138
  Modal.style = wmModalCss;
138
139
 
140
+ const wmModalFooterCss = "wm-modal-footer{display:block;-webkit-border-radius:0px 0px 5px 5px;-moz-border-radius:0px 0px 5px 5px;-ms-border-radius:0px 0px 5px 5px;border-radius:0px 0px 5px 5px}wm-modal-footer .wm-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}@media only screen and (max-width: 650px){wm-modal-footer .wm-wrapper.footer-text{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start}}wm-modal-footer .wm-wrapper wm-button+wm-button{margin-left:1rem}wm-modal-footer .wm-wrapper .wm-info{font-size:0.875rem;font-style:italic}@media only screen and (max-width: 650px){wm-modal-footer .wm-wrapper .wm-info{padding-bottom:0.625rem}}wm-modal-footer .wm-wrapper .wm-info:focus{outline:none}";
141
+
142
+ const ModalFooter = class {
143
+ constructor(hostRef) {
144
+ index.registerInstance(this, hostRef);
145
+ this.secondaryText = "";
146
+ this.primaryText = "";
147
+ this.infoText = "";
148
+ this.primaryActionDisabled = false;
149
+ this.deleteStyle = false;
150
+ }
151
+ componentWillLoad() {
152
+ const parentModal = this.el.closest("wm-modal");
153
+ this.uid = parentModal.uid;
154
+ // Trap focus when user shift+tabs past first element in modal
155
+ // NB @Listen doesn't allow to listen on a specific element (the parent modal)
156
+ // if we listen to the whole doc each modal on the page reacts to every event
157
+ parentModal.addEventListener("focusLastElement", () => {
158
+ this.lastElement.focus();
159
+ });
160
+ }
161
+ emitParentPrimaryEvent() {
162
+ const parentModal = this.el.closest("wm-modal");
163
+ if (parentModal) {
164
+ parentModal.emitPrimaryEvent();
165
+ }
166
+ }
167
+ emitParentSecondaryEvent() {
168
+ const parentModal = this.el.closest("wm-modal");
169
+ if (parentModal) {
170
+ parentModal.emitSecondaryEvent();
171
+ }
172
+ }
173
+ render() {
174
+ return (index.h("div", { class: `wm-wrapper ${this.infoText ? " footer-text" : ""}` }, index.h("div", { class: "wm-info", "aria-live": "polite" }, this.infoText), index.h("div", { class: "wm-button-collection" }, this.secondaryText && (index.h("wm-button", { onClick: () => this.emitParentSecondaryEvent(), id: `wm-secondary-${this.uid}`, ref: (el) => (this.primaryActionDisabled ? (this.lastElement = el) : undefined) }, this.secondaryText)), index.h("wm-button", { "button-type": this.deleteStyle ? "secondary" : "primary", "permanently-delete": this.deleteStyle, onClick: () => this.emitParentPrimaryEvent(), disabled: this.primaryActionDisabled, id: `wm-primary-${this.uid}`, ref: (el) => (!this.primaryActionDisabled ? (this.lastElement = el) : undefined) }, this.primaryText))));
175
+ }
176
+ get el() { return index.getElement(this); }
177
+ };
178
+ ModalFooter.style = wmModalFooterCss;
179
+
180
+ const wmModalHeaderCss = "wm-modal-header{display:block;-webkit-border-radius:5px 5px 0 0px;-moz-border-radius:5px 5px 0 0px;-ms-border-radius:5px 5px 0 0px;border-radius:5px 5px 0 0px}wm-modal-header .wm-wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;-webkit-justify-content:space-between;justify-content:space-between;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}wm-modal-header .wm-wrapper .title{margin:0;font-weight:600;font-size:1.125rem;color:var(--wmcolor-modal-heading);line-height:normal}wm-modal-header .wm-wrapper .title .subtitle{display:block;font-size:0.875rem;font-weight:normal}wm-modal-header .wm-wrapper .title:focus{outline:none}";
181
+
182
+ const ModalHeader = class {
183
+ constructor(hostRef) {
184
+ index.registerInstance(this, hostRef);
185
+ this.heading = "";
186
+ this.subheading = "";
187
+ }
188
+ componentWillLoad() {
189
+ const parentModal = this.el.closest("wm-modal");
190
+ this.uid = parentModal.uid;
191
+ // Trap focus when user tabs past last element in modal
192
+ // NB @Listen doesn't allow to listen on a specific element (the parent modal)
193
+ // if we listen to the whole doc each modal on the page reacts to every event
194
+ parentModal.addEventListener("focusFirstElement", () => {
195
+ this.closeButtonEl.focus();
196
+ });
197
+ }
198
+ emitParentCloseEvent() {
199
+ const parentModal = this.el.closest("wm-modal");
200
+ //@ts-ignore
201
+ parentModal.emitCloseEvent();
202
+ }
203
+ render() {
204
+ return (index.h(index.Host, null, index.h("div", { class: "wm-wrapper" }, index.h("div", null, index.h("h2", { class: "title", id: `wm-modal-heading-text-${this.uid}` }, this.heading, index.h("span", { class: "subtitle" }, this.subheading))), index.h("wm-button", { "button-type": "navigational", icon: "f156", tooltip: intl.globalMessages.close, "tooltip-position": "left", id: `wm-modal-close-${this.uid}`, ref: (el) => (this.closeButtonEl = el), onClick: () => this.emitParentCloseEvent() }))));
205
+ }
206
+ get el() { return index.getElement(this); }
207
+ };
208
+ ModalHeader.style = wmModalHeaderCss;
209
+
139
210
  exports.wm_modal = Modal;
211
+ exports.wm_modal_footer = ModalFooter;
212
+ exports.wm_modal_header = ModalHeader;
@@ -6,7 +6,7 @@ const index = require('./index-e86c28b6.js');
6
6
  const functions = require('./functions-e24249e6.js');
7
7
  const intl = require('./intl-5aeba788.js');
8
8
 
9
- const wmNestedSelectCss = ":host{--wmcolor-select-background:var(--wmcolor-background);--wmcolor-select-border:var(--wmcolor-input-border);--wmcolor-select-option-background-disabled:var(--wmcolor-option-background-disabled);--wmcolor-select-option-background-focus:var(--wmcolor-option-background-focus);--wmcolor-select-option-background-hover:var(--wmcolor-option-background-hover);--wmcolor-select-option-background-selected:var(--wmcolor-option-background-selected);--wmcolor-select-option-background:var(--wmcolor-option-background);--wmcolor-select-option-border:var(--wmcolor-option-border);--wmcolor-select-option-text-disabled:var(--wmcolor-option-text-disabled);--wmcolor-select-option-text:var(--wmcolor-option-text);--wmcolor-select-search-border:var(--wmcolor-input-border);--wmcolor-select-search-icon:var(--wmcolor-icon-accent);--wmcolor-select-searchresults-text:var(--wmcolor-text);--wmcolor-select-selectall-background:var(--wmcolor-select-option-background);--wmcolor-select-selectall-border:var(--wmcolor-select-option-border);--wmcolor-select-selectall-text:var(--wmcolor-interactive);--wmcolor-select-text:var(--wmcolor-interactive);position:relative;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;font-family:inherit}.wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;font-size:0.875rem}.wrapper .label{display:block;line-height:normal;font-weight:600;white-space:nowrap;margin-bottom:0.25rem}.wrapper .label .required{color:var(--wmcolor-text-required)}.wrapper.label-left{-ms-flex-direction:row;flex-direction:row}.wrapper.label-left .label-wrapper{line-height:2.5rem}.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}.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}.wrapper.invalid .label{color:var(--wmcolor-text-error)}.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] .wrapper.invalid .label:after{margin-left:0;margin-right:0.3125rem}.wrapper.rtl.label-left .label{margin-right:0;margin-left:0.75rem}.button-wrapper{position:relative;-ms-flex:1;flex:1;font-size:1.125rem;color:var(--wmcolor-select-text);min-width:8.75rem}.button-wrapper .displayedoption{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-wrap:nowrap;flex-wrap:nowrap;background:var(--wmcolor-select-background);width:100%;border:solid 1px;border-color:var(--wmcolor-select-border);padding:0 1.875rem 0 0.9375rem;cursor:pointer;height:2.5rem;line-height:normal;font-family:inherit;color:var(--wmcolor-select-text);font-weight:400;font-size:0.875rem;text-transform:none;text-align:left}@media only screen and (max-width: 768px){.button-wrapper .displayedoption{height:2.75rem}}.button-wrapper .displayedoption: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:\"\\f140\";position:absolute;right:0.5625rem;pointer-events:none;font-size:1.12rem}.button-wrapper .displayedoption.expanded:before{content:\"\\f143\"}.button-wrapper .displayedoption:hover:not(:disabled):not(.-disabled):not(.-raised){background:var(--wmcolor-select-background);text-decoration:none}.button-wrapper .displayedoption:active{-ms-transform:scale(1, 1) !important;-webkit-transform:scale(1, 1) !important;transform:scale(1, 1) !important}.button-wrapper .displayedoption:focus{outline:none}.button-wrapper .displayedoption::-moz-focus-inner{border:0}.button-wrapper .displayedoption:focus-visible{outline:3px solid var(--wmcolor-interactive-focus);outline-offset:2px}.button-wrapper .displayedoption .overflowcontrol{display:block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;-ms-flex:1;flex:1}.button-wrapper .displayedoption .overflowcontrol.hassubinfo{display:-ms-flexbox;display:flex}.button-wrapper .displayedoption .overflowcontrol.hassubinfo .button-text{-ms-flex:1;flex:1;text-overflow:ellipsis;overflow:hidden;min-width:0}.button-wrapper .displayedoption .overflowcontrol.hassubinfo .subinfo{-ms-flex:none;flex:none;font-style:italic}.button-wrapper .displayedoption .overflow-counter{font-weight:bold;margin-left:0.5rem}.button-wrapper>.displayedoption[disabled]{color:#6b6b6b;border-color:#8a8a8a;background:#f0f0f0;cursor:default}.wrapper.invalid .button-wrapper .displayedoption{-webkit-box-shadow:0 0 0 1px var(--wmcolor-input-border-error);-moz-box-shadow:0 0 0 1px var(--wmcolor-input-border-error);box-shadow:0 0 0 1px var(--wmcolor-input-border-error);border-color:var(--wmcolor-input-border-error)}.wrapper .error-message{display:block;font-style:italic;color:var(--wmcolor-text-error);font-size:0.875rem;margin-bottom:0.25rem;top:100%;left:0}.wrapper .error-message:not(:empty){margin-top:0.25rem}.dropdown{overflow-x:hidden;overflow-y:auto;-ms-transition:transform 0.25s ease;-webkit-transition:transform 0.25s ease;-moz-transition:transform 0.25s ease;-webkit-transition:-webkit-transform 0.25s ease;transition:-webkit-transform 0.25s ease;transition:transform 0.25s ease;transition:transform 0.25s ease, -webkit-transform 0.25s ease;-ms-transform-origin:center top;-webkit-transform-origin:center top;-moz-transform-origin:center top;transform-origin:center top;transform:scale(1, 0);-webkit-overflow-scrolling:touch;-webkit-box-shadow:0 4px 15px 0 rgba(0, 0, 0, 0.2);-moz-box-shadow:0 4px 15px 0 rgba(0, 0, 0, 0.2);box-shadow:0 4px 15px 0 rgba(0, 0, 0, 0.2);-ms-transition:transform 0.25s ease;-webkit-transition:transform 0.25s ease;-moz-transition:transform 0.25s ease;transition:transform 0.25s ease;-ms-transform:scale(1, 0);-webkit-transform:scale(1, 0);-moz-transform:scale(1, 0);transform:scale(1, 0);-ms-transform-origin:center top;-webkit-transform-origin:center top;-moz-transform-origin:center top;transform-origin:center top;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;position:absolute;top:40;right:0;background:var(--wmcolor-select-option-background);z-index:100;width:100%;font-size:0.875rem}.dropdown.upwards{top:unset;bottom:100%;-ms-transform-origin:center bottom;-webkit-transform-origin:center bottom;-moz-transform-origin:center bottom;transform-origin:center bottom}.dropdown.hidden{visibility:hidden}.dropdown.open{-ms-transform:scale(1, 1);-webkit-transform:scale(1, 1);-moz-transform:scale(1, 1);transform:scale(1, 1)}.menu{width:100%;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;max-height:var(--max-height);overflow-y:auto}.menu.hidden{position:absolute;max-height:100%;overflow:hidden}.menu .menuitem{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;cursor:pointer;position:relative;padding:1.25rem;background:var(--wmcolor-select-option-background);font-family:inherit;list-style:none;color:var(--wmcolor-select-option-text);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:none;font-weight:600}.menu .menuitem:not(:last-child){border-bottom:2px solid;border-color:var(--wmcolor-select-option-border)}.menu .menuitem.disabled{color:var(--wmcolor-select-option-text-disabled);cursor:auto}.menu .menuitem.clear-selection{color:var(--wmcolor-select-text);-ms-flex-pack:start;justify-content:start;-ms-flex-align:center;align-items:center}.menu .menuitem.clear-selection:before{display:inline-block;font:normal normal normal 24px/1 \"Material Design Icons\";font-size:inherit;text-rendering:auto;line-height:inherit;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:\"\\f156\";pointer-events:none;padding-right:0.5rem;font-size:1.12rem}.menu :focus-visible{outline:none;background:var(--wmcolor-interactive-background-focus)}.menu :hover{background:var(--wmcolor-select-option-background-hover);outline:none}.group-btn: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:\"\\f142\";position:absolute;right:1.25rem;pointer-events:none;font-size:1.12rem}.group-btn.disabled{background:var(--wmcolor-select-option-background-disabled)}.selection-count,.disabled-indication{margin-right:40px;font-weight:400;font-style:italic}.disabled-indication{color:var(--wmcolor-interactive-disabled)}.option-list-wrapper{background:white;width:100%;-webkit-transform:translateX(0%);transform:translateX(0%);-webkit-transition:-webkit-transform 0.2s cubic-bezier(0.04, 0, 0.2, 1);transition:-webkit-transform 0.2s cubic-bezier(0.04, 0, 0.2, 1);transition:transform 0.2s cubic-bezier(0.04, 0, 0.2, 1);transition:transform 0.2s cubic-bezier(0.04, 0, 0.2, 1), -webkit-transform 0.2s cubic-bezier(0.04, 0, 0.2, 1)}.option-list-wrapper.hidden{-webkit-transform:translateX(100%);transform:translateX(100%);position:absolute;top:0px;max-height:100%;overflow-y:hidden}.measurement-area{position:absolute;visibility:hidden;height:0px;pointer-events:none}.sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;border:0 !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;white-space:nowrap !important;margin:-1px !important}";
9
+ const wmNestedSelectCss = ":host{--wmcolor-select-background:var(--wmcolor-background);--wmcolor-select-border:var(--wmcolor-input-border);--wmcolor-select-option-background-disabled:var(--wmcolor-option-background-disabled);--wmcolor-select-option-background-focus:var(--wmcolor-option-background-focus);--wmcolor-select-option-background-hover:var(--wmcolor-option-background-hover);--wmcolor-select-option-background-selected:var(--wmcolor-option-background-selected);--wmcolor-select-option-background:var(--wmcolor-option-background);--wmcolor-select-option-border:var(--wmcolor-option-border);--wmcolor-select-option-text-disabled:var(--wmcolor-option-text-disabled);--wmcolor-select-option-text:var(--wmcolor-option-text);--wmcolor-select-search-border:var(--wmcolor-input-border);--wmcolor-select-search-icon:var(--wmcolor-icon-accent);--wmcolor-select-searchresults-text:var(--wmcolor-text);--wmcolor-select-selectall-background:var(--wmcolor-select-option-background);--wmcolor-select-selectall-border:var(--wmcolor-select-option-border);--wmcolor-select-selectall-text:var(--wmcolor-interactive);--wmcolor-select-text:var(--wmcolor-interactive);position:relative;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;font-family:inherit}.wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;font-size:0.875rem}.wrapper .label{display:block;line-height:normal;font-weight:600;white-space:nowrap;margin-bottom:0.25rem}.wrapper .label .required{color:var(--wmcolor-text-required)}.wrapper.label-left{-ms-flex-direction:row;flex-direction:row}.wrapper.label-left .label-wrapper{line-height:2.5rem}.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}.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}.wrapper.invalid .label{color:var(--wmcolor-text-error)}.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] .wrapper.invalid .label:after{margin-left:0;margin-right:0.3125rem}.wrapper.rtl.label-left .label{margin-right:0;margin-left:0.75rem}.button-wrapper{position:relative;-ms-flex:1;flex:1;font-size:1.125rem;color:var(--wmcolor-select-text);min-width:8.75rem}.button-wrapper .displayedoption{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-wrap:nowrap;flex-wrap:nowrap;background:var(--wmcolor-select-background);width:100%;border:solid 1px;border-color:var(--wmcolor-select-border);padding:0 1.875rem 0 0.9375rem;cursor:pointer;height:2.5rem;line-height:normal;font-family:inherit;color:var(--wmcolor-select-text);font-weight:400;font-size:0.875rem;text-transform:none;text-align:left}@media only screen and (max-width: 768px){.button-wrapper .displayedoption{height:2.75rem}}.button-wrapper .displayedoption: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:\"\\f140\";position:absolute;right:0.5625rem;pointer-events:none;font-size:1.12rem}.button-wrapper .displayedoption.expanded:before{content:\"\\f143\"}.button-wrapper .displayedoption:hover:not(:disabled):not(.-disabled):not(.-raised){background:var(--wmcolor-select-background);text-decoration:none}.button-wrapper .displayedoption:active{-ms-transform:scale(1, 1) !important;-webkit-transform:scale(1, 1) !important;transform:scale(1, 1) !important}.button-wrapper .displayedoption:focus{outline:none}.button-wrapper .displayedoption::-moz-focus-inner{border:0}.button-wrapper .displayedoption:focus-visible{outline:3px solid var(--wmcolor-interactive-focus);outline-offset:2px}.button-wrapper .displayedoption .overflowcontrol{display:block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;-ms-flex:1;flex:1}.button-wrapper .displayedoption .overflowcontrol.hassubinfo{display:-ms-flexbox;display:flex}.button-wrapper .displayedoption .overflowcontrol.hassubinfo .button-text{-ms-flex:1;flex:1;text-overflow:ellipsis;overflow:hidden;min-width:0}.button-wrapper .displayedoption .overflowcontrol.hassubinfo .subinfo{-ms-flex:none;flex:none;font-style:italic}.button-wrapper .displayedoption .overflow-counter{font-weight:bold;margin-left:0.5rem}.button-wrapper>.displayedoption[disabled]{color:var(--wmcolor-select-option-text-disabled);border-color:var(--wmcolor-border-dark);background:var(--wmcolor-select-option-background-disabled);cursor:default}.wrapper.invalid .button-wrapper .displayedoption{-webkit-box-shadow:0 0 0 1px var(--wmcolor-input-border-error);-moz-box-shadow:0 0 0 1px var(--wmcolor-input-border-error);box-shadow:0 0 0 1px var(--wmcolor-input-border-error);border-color:var(--wmcolor-input-border-error)}.wrapper .error-message{display:block;font-style:italic;color:var(--wmcolor-text-error);font-size:0.875rem;margin-bottom:0.25rem;top:100%;left:0}.wrapper .error-message:not(:empty){margin-top:0.25rem}.dropdown{overflow-x:hidden;overflow-y:auto;-ms-transition:transform 0.25s ease;-webkit-transition:transform 0.25s ease;-moz-transition:transform 0.25s ease;-webkit-transition:-webkit-transform 0.25s ease;transition:-webkit-transform 0.25s ease;transition:transform 0.25s ease;transition:transform 0.25s ease, -webkit-transform 0.25s ease;-ms-transform-origin:center top;-webkit-transform-origin:center top;-moz-transform-origin:center top;transform-origin:center top;transform:scale(1, 0);-webkit-overflow-scrolling:touch;-webkit-box-shadow:0 4px 15px 0 rgba(0, 0, 0, 0.2);-moz-box-shadow:0 4px 15px 0 rgba(0, 0, 0, 0.2);box-shadow:0 4px 15px 0 rgba(0, 0, 0, 0.2);-ms-transition:transform 0.25s ease;-webkit-transition:transform 0.25s ease;-moz-transition:transform 0.25s ease;transition:transform 0.25s ease;-ms-transform:scale(1, 0);-webkit-transform:scale(1, 0);-moz-transform:scale(1, 0);transform:scale(1, 0);-ms-transform-origin:center top;-webkit-transform-origin:center top;-moz-transform-origin:center top;transform-origin:center top;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;position:absolute;top:40;right:0;background:var(--wmcolor-select-option-background);z-index:100;width:100%;font-size:0.875rem}.dropdown.upwards{top:unset;bottom:100%;-ms-transform-origin:center bottom;-webkit-transform-origin:center bottom;-moz-transform-origin:center bottom;transform-origin:center bottom}.dropdown.hidden{visibility:hidden}.dropdown.open{-ms-transform:scale(1, 1);-webkit-transform:scale(1, 1);-moz-transform:scale(1, 1);transform:scale(1, 1)}.menu{width:100%;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;max-height:var(--max-height);overflow-y:auto}.menu.hidden{position:absolute;max-height:100%;overflow:hidden}.menu .menuitem{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;cursor:pointer;position:relative;padding:1.25rem;background:var(--wmcolor-select-option-background);font-family:inherit;list-style:none;color:var(--wmcolor-select-option-text);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:none;font-weight:600}.menu .menuitem:not(:last-child){border-bottom:2px solid;border-color:var(--wmcolor-select-option-border)}.menu .menuitem.disabled{color:var(--wmcolor-select-option-text-disabled);cursor:auto}.menu .menuitem.clear-selection{color:var(--wmcolor-select-text);-ms-flex-pack:start;justify-content:start;-ms-flex-align:center;align-items:center}.menu .menuitem.clear-selection:before{display:inline-block;font:normal normal normal 24px/1 \"Material Design Icons\";font-size:inherit;text-rendering:auto;line-height:inherit;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:\"\\f156\";pointer-events:none;padding-right:0.5rem;font-size:1.12rem}.menu .menuitem:focus-visible{outline:none;background:var(--wmcolor-interactive-background-focus)}.menu .menuitem:hover{background:var(--wmcolor-select-option-background-hover);outline:none}.group-btn: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:\"\\f142\";position:absolute;right:1.25rem;pointer-events:none;font-size:1.12rem}.group-btn.disabled{background:var(--wmcolor-select-option-background-disabled)}.selection-count,.disabled-indication{margin-right:40px;font-weight:400;font-style:italic}.disabled-indication{color:var(--wmcolor-interactive-disabled)}.option-list-wrapper{background:white;width:100%;-webkit-transform:translateX(0%);transform:translateX(0%);-webkit-transition:-webkit-transform 0.2s cubic-bezier(0.04, 0, 0.2, 1);transition:-webkit-transform 0.2s cubic-bezier(0.04, 0, 0.2, 1);transition:transform 0.2s cubic-bezier(0.04, 0, 0.2, 1);transition:transform 0.2s cubic-bezier(0.04, 0, 0.2, 1), -webkit-transform 0.2s cubic-bezier(0.04, 0, 0.2, 1)}.option-list-wrapper.hidden{-webkit-transform:translateX(100%);transform:translateX(100%);position:absolute;top:0px;max-height:100%;overflow-y:hidden}.measurement-area{position:absolute;visibility:hidden;height:0px;pointer-events:none}.sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;border:0 !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;white-space:nowrap !important;margin:-1px !important}";
10
10
 
11
11
  const NestedSelect = class {
12
12
  constructor(hostRef) {
@@ -58,6 +58,7 @@ const NestedSelect = class {
58
58
  });
59
59
  this.isExpanded = false;
60
60
  this.showClearSelectionButton = false;
61
+ this.announcement = "";
61
62
  this.constrainedMaxHeight = this.maxHeight;
62
63
  }
63
64
  get isDisabled() {
@@ -169,6 +170,7 @@ const NestedSelect = class {
169
170
  open(focusLast = false) {
170
171
  if (!this.isDisabled) {
171
172
  this.showClearSelectionButton = this.childOptions.some((o) => o.selected);
173
+ this.dropdownEl.scrollTop = 0;
172
174
  this.isExpanded = true;
173
175
  this.dropdownEl.classList.add("open");
174
176
  const elHeight = this.el.clientHeight;
@@ -200,21 +202,15 @@ const NestedSelect = class {
200
202
  }
201
203
  moveDown(menuitemEl) {
202
204
  const currentIndex = this.menuitemEls.indexOf(menuitemEl);
203
- if (currentIndex == this.menuitemEls.length - 1) {
204
- this.menuitemEls[0].focus();
205
- }
206
- else {
207
- this.menuitemEls[currentIndex + 1].focus();
208
- }
205
+ const menuitemToFocus = this.menuitemEls[currentIndex == this.menuitemEls.length - 1 ? 0 : currentIndex + 1];
206
+ menuitemToFocus.scrollIntoView({ block: "nearest" });
207
+ menuitemToFocus.focus();
209
208
  }
210
209
  moveUp(menuitemEl) {
211
210
  const currentIndex = this.menuitemEls.indexOf(menuitemEl);
212
- if (currentIndex == 0) {
213
- this.menuitemEls[this.menuitemEls.length - 1].focus();
214
- }
215
- else {
216
- this.menuitemEls[currentIndex - 1].focus();
217
- }
211
+ const menuitemToFocus = this.menuitemEls[currentIndex == 0 ? this.menuitemEls.length - 1 : currentIndex - 1];
212
+ menuitemToFocus.scrollIntoView({ block: "nearest" });
213
+ menuitemToFocus.focus();
218
214
  }
219
215
  handleButtonBlur(ev) {
220
216
  if (functions.isElOrChild(this.el, ev.relatedTarget)) {
@@ -270,6 +266,13 @@ const NestedSelect = class {
270
266
  const elToFocus = this.el.shadowRoot.querySelector(`button[data-label=${ev.detail}]`);
271
267
  elToFocus.focus();
272
268
  }
269
+ announce(message) {
270
+ // \u00A0 is a non-breaking space character, which causes the message to be read as a new one
271
+ if (this.liveRegionEl.textContent === message) {
272
+ message += "\u00A0";
273
+ }
274
+ this.announcement = message;
275
+ }
273
276
  renderButtonText() {
274
277
  if (this.displayedOptions.length < 1) {
275
278
  return index.h("span", null, this.placeholder);
@@ -288,6 +291,12 @@ const NestedSelect = class {
288
291
  }
289
292
  handleClearSelection() {
290
293
  this.optgroupEls.forEach((optgroupEl) => optgroupEl.emitDeselection());
294
+ const selectionClearedAnnouncement = functions.intl.formatMessage({
295
+ id: "select.selectionCleared",
296
+ defaultMessage: "Selection cleared",
297
+ description: "Screen reader announcement alerting the user they have cleared their selection",
298
+ });
299
+ this.announce(selectionClearedAnnouncement);
291
300
  if (!this.multiple) {
292
301
  this.close();
293
302
  }
@@ -327,14 +336,14 @@ const NestedSelect = class {
327
336
  };
328
337
  return (index.h(index.Host, { onBlur: (ev) => this.handleComponentBlur(ev) }, index.h("div", { class: `wrapper ${functions.getTextDir()} label-${this.labelPosition} ${this.errorMessage ? "invalid" : ""}` }, index.h("div", { class: "label-wrapper" }, index.h("label", { class: "label", id: "label", htmlFor: "selectbtn" }, this.label,
329
338
  // we can't use aria-required or required attributes because it's invalid on the elements we're using (button controlling a listbox)
330
- this.requiredField ? (index.h("span", { class: "required" }, index.h("span", { class: "sr-only" }, intl.globalMessages.requiredField), index.h("span", { "aria-hidden": "true" }, "*"))) : (""))), index.h("div", { class: "button-wrapper" }, index.h("button", Object.assign({}, buttonProps, { class: `displayedoption ${this.isExpanded ? "expanded" : ""}`, ref: (el) => (this.buttonEl = el), onBlur: (ev) => this.handleButtonBlur(ev) }), index.h("span", { class: "overflowcontrol" }, index.h("span", { class: "button-text" }, this.renderButtonText())), this.renderOverflowCount(), index.h("div", { ref: (el) => (this.measurementAreaEl = el), class: "measurement-area", "aria-hidden": "true" })), index.h("div", { class: `dropdown ${this.openUp ? "upwards" : ""}`, ref: (el) => (this.dropdownEl = el) }, index.h("div", { ref: (el) => (this.menuEl = el), class: "menu", style: { "--max-height": this.constrainedMaxHeight } }, this.renderClearSelectionButton(), this.optgroupEls.map((optgroupEl) => {
339
+ this.requiredField ? (index.h("span", { class: "required" }, index.h("span", { class: "sr-only" }, intl.globalMessages.requiredField), index.h("span", { "aria-hidden": "true" }, "*"))) : (""))), index.h("div", { class: "button-wrapper" }, index.h("button", Object.assign({}, buttonProps, { class: `displayedoption ${this.isExpanded ? "expanded" : ""}`, ref: (el) => (this.buttonEl = el), onBlur: (ev) => this.handleButtonBlur(ev) }), index.h("span", { class: "overflowcontrol" }, index.h("span", { class: "button-text" }, this.renderButtonText())), this.renderOverflowCount(), index.h("div", { ref: (el) => (this.measurementAreaEl = el), class: "measurement-area", "aria-hidden": "true" })), index.h("div", { class: `dropdown ${this.openUp ? "upwards" : ""}`, ref: (el) => (this.dropdownEl = el) }, index.h("div", { ref: (el) => (this.menuEl = el), class: "menu", style: { "--max-height": this.constrainedMaxHeight }, tabIndex: -1 }, this.renderClearSelectionButton(), this.optgroupEls.map((optgroupEl) => {
331
340
  return (index.h("button", { class: `menuitem group-btn ${optgroupEl.disabled ? "disabled" : ""}`, role: "menuitem", "data-label": optgroupEl.label, tabindex: -1, "aria-disabled": optgroupEl.disabled, onClick: () => {
332
341
  if (!optgroupEl.disabled) {
333
342
  optgroupEl.isExpanded = !optgroupEl.isExpanded;
334
343
  index.forceUpdate(this.el);
335
344
  }
336
345
  }, onKeyDown: (ev) => this.handleMenuitemKeydown(ev) }, index.h("span", null, optgroupEl.label), this.renderSelectionCount(optgroupEl), optgroupEl.disabled && index.h("div", { class: "disabled-indication" }, "Disabled")));
337
- })), index.h("div", { ref: (el) => (this.optListWrapperEl = el), class: "option-list-wrapper hidden" }, index.h("slot", null))), index.h("div", { id: "error", class: this.errorMessage ? "error-message" : "" }, this.errorMessage)))));
346
+ })), index.h("div", { ref: (el) => (this.optListWrapperEl = el), class: "option-list-wrapper hidden" }, index.h("slot", null))), index.h("div", { id: "error", class: this.errorMessage ? "error-message" : "" }, this.errorMessage))), index.h("div", { id: "nestedselect-announcement", "aria-live": "assertive", "aria-atomic": "true", class: "sr-only", ref: (el) => (this.liveRegionEl = el) }, this.announcement)));
338
347
  }
339
348
  static get delegatesFocus() { return true; }
340
349
  get el() { return index.getElement(this); }
@@ -175,7 +175,7 @@ const Option = class {
175
175
  };
176
176
  Option.style = wmOptionCss;
177
177
 
178
- const wmSelectCss = ":host{--wmcolor-select-background:var(--wmcolor-background);--wmcolor-select-border:var(--wmcolor-input-border);--wmcolor-select-option-background-disabled:var(--wmcolor-option-background-disabled);--wmcolor-select-option-background-focus:var(--wmcolor-option-background-focus);--wmcolor-select-option-background-hover:var(--wmcolor-option-background-hover);--wmcolor-select-option-background-selected:var(--wmcolor-option-background-selected);--wmcolor-select-option-background:var(--wmcolor-option-background);--wmcolor-select-option-border:var(--wmcolor-option-border);--wmcolor-select-option-text-disabled:var(--wmcolor-option-text-disabled);--wmcolor-select-option-text:var(--wmcolor-option-text);--wmcolor-select-search-border:var(--wmcolor-input-border);--wmcolor-select-search-icon:var(--wmcolor-icon-accent);--wmcolor-select-searchresults-text:var(--wmcolor-text);--wmcolor-select-selectall-background:var(--wmcolor-select-option-background);--wmcolor-select-selectall-border:var(--wmcolor-select-option-border);--wmcolor-select-selectall-text:var(--wmcolor-interactive);--wmcolor-select-text:var(--wmcolor-interactive);position:relative;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;font-family:inherit}:host .sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;border:0 !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;white-space:nowrap !important;margin:-1px !important}.wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;font-size:0.875rem}.wrapper .label{display:block;line-height:normal;font-weight:600;white-space:nowrap;margin-bottom:0.25rem}.wrapper .label .required{color:var(--wmcolor-text-required)}.wrapper.label-left{-ms-flex-direction:row;flex-direction:row}.wrapper.label-left .label-wrapper{line-height:2.5rem}.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}.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}.wrapper.invalid .label{color:var(--wmcolor-text-error)}.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] .wrapper.invalid .label:after{margin-left:0;margin-right:0.3125rem}.wrapper.rtl.label-left .label{margin-right:0;margin-left:0.75rem}.wrapper .button-wrapper{position:relative;-ms-flex:1;flex:1;font-size:1.125rem;color:var(--wmcolor-select-text);min-width:8.75rem}.wrapper .button-wrapper .displayedoption{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-wrap:nowrap;flex-wrap:nowrap;background:var(--wmcolor-select-background);width:100%;border:solid 1px;border-color:var(--wmcolor-select-border);padding:0 1.875rem 0 0.9375rem;cursor:pointer;height:2.5rem;line-height:normal;font-family:inherit;color:var(--wmcolor-select-text);font-weight:400;font-size:0.875rem;text-transform:none;text-align:left}@media only screen and (max-width: 768px){.wrapper .button-wrapper .displayedoption{height:2.75rem}}.wrapper .button-wrapper .displayedoption: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:\"\\f140\";position:absolute;right:0.5625rem;pointer-events:none;font-size:1.12rem}.wrapper .button-wrapper .displayedoption:hover:not(:disabled):not(.-disabled):not(.-raised){background:var(--wmcolor-select-background);text-decoration:none}.wrapper .button-wrapper .displayedoption:active{-ms-transform:scale(1, 1) !important;-webkit-transform:scale(1, 1) !important;transform:scale(1, 1) !important}.wrapper .button-wrapper .displayedoption:focus{outline:none}.wrapper .button-wrapper .displayedoption::-moz-focus-inner{border:0}.wrapper .button-wrapper .displayedoption:focus-visible{outline:3px solid var(--wmcolor-interactive-focus);outline-offset:2px}.wrapper .button-wrapper .displayedoption .overflowcontrol{display:block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;-ms-flex:1;flex:1}.wrapper .button-wrapper .displayedoption .overflowcontrol.hassubinfo{display:-ms-flexbox;display:flex}.wrapper .button-wrapper .displayedoption .overflowcontrol.hassubinfo .button-text{-ms-flex:1;flex:1;text-overflow:ellipsis;overflow:hidden;min-width:0}.wrapper .button-wrapper .displayedoption .overflowcontrol.hassubinfo .subinfo{-ms-flex:none;flex:none;font-style:italic}.wrapper .button-wrapper .displayedoption .overflow-counter{font-weight:bold;margin-left:0.5rem}.wrapper .button-wrapper>.displayedoption[disabled]{color:#6b6b6b;border-color:#8a8a8a;background:#f0f0f0;cursor:default}.wrapper .button-wrapper>.dropdown{-webkit-overflow-scrolling:touch;-webkit-box-shadow:0 4px 15px 0 rgba(0, 0, 0, 0.2);-moz-box-shadow:0 4px 15px 0 rgba(0, 0, 0, 0.2);box-shadow:0 4px 15px 0 rgba(0, 0, 0, 0.2);-ms-transition:transform 0.25s ease;-webkit-transition:transform 0.25s ease;-moz-transition:transform 0.25s ease;-webkit-transition:-webkit-transform 0.25s ease;transition:-webkit-transform 0.25s ease;transition:transform 0.25s ease;transition:transform 0.25s ease, -webkit-transform 0.25s ease;-ms-transform:scale(1, 0);-webkit-transform:scale(1, 0);-moz-transform:scale(1, 0);transform:scale(1, 0);-ms-transform-origin:center top;-webkit-transform-origin:center top;-moz-transform-origin:center top;transform-origin:center top;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;position:absolute;top:0;right:0;background:var(--wmcolor-select-option-background);z-index:100;width:100%;font-size:0.875rem;max-height:var(--max-height);overflow-y:auto}.wrapper .button-wrapper>.dropdown.upwards{top:unset;bottom:calc(100% - 2.5rem);-ms-transform-origin:center bottom;-webkit-transform-origin:center bottom;-moz-transform-origin:center bottom;transform-origin:center bottom}.wrapper .button-wrapper>.dropdown.hidden{visibility:hidden}.wrapper .button-wrapper>.dropdown.open{-ms-transform:scale(1, 1);-webkit-transform:scale(1, 1);-moz-transform:scale(1, 1);transform:scale(1, 1)}.wrapper.invalid .button-wrapper .displayedoption{-webkit-box-shadow:0 0 0 1px var(--wmcolor-input-border-error);-moz-box-shadow:0 0 0 1px var(--wmcolor-input-border-error);box-shadow:0 0 0 1px var(--wmcolor-input-border-error);border-color:var(--wmcolor-input-border-error)}.wrapper .error-message{display:block;font-style:italic;color:var(--wmcolor-text-error);font-size:0.875rem;margin-bottom:0.25rem;top:100%;left:0}.wrapper .error-message:not(:empty){margin-top:0.25rem}.measurement-area{position:absolute;visibility:hidden;height:0px;pointer-events:none}.rtl>.dropdown{-ms-transform-origin:left top;-webkit-transform-origin:left top;-moz-transform-origin:left top;transform-origin:left top;left:0;right:auto}.rtl>.dropdown .option{padding-left:3rem;padding-right:1.25rem}.rtl>.displayedoption{padding:0 0.9375rem 0 1.875rem;text-align:right}.rtl>.displayedoption:before{right:auto;left:0.5625rem}";
178
+ const wmSelectCss = ":host{--wmcolor-select-background:var(--wmcolor-background);--wmcolor-select-border:var(--wmcolor-input-border);--wmcolor-select-option-background-disabled:var(--wmcolor-option-background-disabled);--wmcolor-select-option-background-focus:var(--wmcolor-option-background-focus);--wmcolor-select-option-background-hover:var(--wmcolor-option-background-hover);--wmcolor-select-option-background-selected:var(--wmcolor-option-background-selected);--wmcolor-select-option-background:var(--wmcolor-option-background);--wmcolor-select-option-border:var(--wmcolor-option-border);--wmcolor-select-option-text-disabled:var(--wmcolor-option-text-disabled);--wmcolor-select-option-text:var(--wmcolor-option-text);--wmcolor-select-search-border:var(--wmcolor-input-border);--wmcolor-select-search-icon:var(--wmcolor-icon-accent);--wmcolor-select-searchresults-text:var(--wmcolor-text);--wmcolor-select-selectall-background:var(--wmcolor-select-option-background);--wmcolor-select-selectall-border:var(--wmcolor-select-option-border);--wmcolor-select-selectall-text:var(--wmcolor-interactive);--wmcolor-select-text:var(--wmcolor-interactive);position:relative;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;font-family:inherit}:host .sr-only{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;border:0 !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;-webkit-clip-path:inset(50%) !important;clip-path:inset(50%) !important;white-space:nowrap !important;margin:-1px !important}.wrapper{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;font-size:0.875rem}.wrapper .label{display:block;line-height:normal;font-weight:600;white-space:nowrap;margin-bottom:0.25rem}.wrapper .label .required{color:var(--wmcolor-text-required)}.wrapper.label-left{-ms-flex-direction:row;flex-direction:row}.wrapper.label-left .label-wrapper{line-height:2.5rem}.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}.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}.wrapper.invalid .label{color:var(--wmcolor-text-error)}.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] .wrapper.invalid .label:after{margin-left:0;margin-right:0.3125rem}.wrapper.rtl.label-left .label{margin-right:0;margin-left:0.75rem}.wrapper .button-wrapper{position:relative;-ms-flex:1;flex:1;font-size:1.125rem;color:var(--wmcolor-select-text);min-width:8.75rem}.wrapper .button-wrapper .displayedoption{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-wrap:nowrap;flex-wrap:nowrap;background:var(--wmcolor-select-background);width:100%;border:solid 1px;border-color:var(--wmcolor-select-border);padding:0 1.875rem 0 0.9375rem;cursor:pointer;height:2.5rem;line-height:normal;font-family:inherit;color:var(--wmcolor-select-text);font-weight:400;font-size:0.875rem;text-transform:none;text-align:left}@media only screen and (max-width: 768px){.wrapper .button-wrapper .displayedoption{height:2.75rem}}.wrapper .button-wrapper .displayedoption: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:\"\\f140\";position:absolute;right:0.5625rem;pointer-events:none;font-size:1.12rem}.wrapper .button-wrapper .displayedoption:hover:not(:disabled):not(.-disabled):not(.-raised){background:var(--wmcolor-select-background);text-decoration:none}.wrapper .button-wrapper .displayedoption:active{-ms-transform:scale(1, 1) !important;-webkit-transform:scale(1, 1) !important;transform:scale(1, 1) !important}.wrapper .button-wrapper .displayedoption:focus{outline:none}.wrapper .button-wrapper .displayedoption::-moz-focus-inner{border:0}.wrapper .button-wrapper .displayedoption:focus-visible{outline:3px solid var(--wmcolor-interactive-focus);outline-offset:2px}.wrapper .button-wrapper .displayedoption .overflowcontrol{display:block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;-ms-flex:1;flex:1}.wrapper .button-wrapper .displayedoption .overflowcontrol.hassubinfo{display:-ms-flexbox;display:flex}.wrapper .button-wrapper .displayedoption .overflowcontrol.hassubinfo .button-text{-ms-flex:1;flex:1;text-overflow:ellipsis;overflow:hidden;min-width:0}.wrapper .button-wrapper .displayedoption .overflowcontrol.hassubinfo .subinfo{-ms-flex:none;flex:none;font-style:italic}.wrapper .button-wrapper .displayedoption .overflow-counter{font-weight:bold;margin-left:0.5rem}.wrapper .button-wrapper>.displayedoption[disabled]{color:var(--wmcolor-select-option-text-disabled);border-color:var(--wmcolor-border-dark);background:var(--wmcolor-select-option-background-disabled);cursor:default}.wrapper .button-wrapper>.dropdown{-webkit-overflow-scrolling:touch;-webkit-box-shadow:0 4px 15px 0 rgba(0, 0, 0, 0.2);-moz-box-shadow:0 4px 15px 0 rgba(0, 0, 0, 0.2);box-shadow:0 4px 15px 0 rgba(0, 0, 0, 0.2);-ms-transition:transform 0.25s ease;-webkit-transition:transform 0.25s ease;-moz-transition:transform 0.25s ease;-webkit-transition:-webkit-transform 0.25s ease;transition:-webkit-transform 0.25s ease;transition:transform 0.25s ease;transition:transform 0.25s ease, -webkit-transform 0.25s ease;-ms-transform:scale(1, 0);-webkit-transform:scale(1, 0);-moz-transform:scale(1, 0);transform:scale(1, 0);-ms-transform-origin:center top;-webkit-transform-origin:center top;-moz-transform-origin:center top;transform-origin:center top;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;position:absolute;top:0;right:0;background:var(--wmcolor-select-option-background);z-index:100;width:100%;font-size:0.875rem;max-height:var(--max-height);overflow-y:auto}.wrapper .button-wrapper>.dropdown.upwards{top:unset;bottom:calc(100% - 2.5rem);-ms-transform-origin:center bottom;-webkit-transform-origin:center bottom;-moz-transform-origin:center bottom;transform-origin:center bottom}.wrapper .button-wrapper>.dropdown.hidden{visibility:hidden}.wrapper .button-wrapper>.dropdown.open{-ms-transform:scale(1, 1);-webkit-transform:scale(1, 1);-moz-transform:scale(1, 1);transform:scale(1, 1)}.wrapper.invalid .button-wrapper .displayedoption{-webkit-box-shadow:0 0 0 1px var(--wmcolor-input-border-error);-moz-box-shadow:0 0 0 1px var(--wmcolor-input-border-error);box-shadow:0 0 0 1px var(--wmcolor-input-border-error);border-color:var(--wmcolor-input-border-error)}.wrapper .error-message{display:block;font-style:italic;color:var(--wmcolor-text-error);font-size:0.875rem;margin-bottom:0.25rem;top:100%;left:0}.wrapper .error-message:not(:empty){margin-top:0.25rem}.measurement-area{position:absolute;visibility:hidden;height:0px;pointer-events:none}.rtl>.dropdown{-ms-transform-origin:left top;-webkit-transform-origin:left top;-moz-transform-origin:left top;transform-origin:left top;left:0;right:auto}.rtl>.dropdown .option{padding-left:3rem;padding-right:1.25rem}.rtl>.displayedoption{padding:0 0.9375rem 0 1.875rem;text-align:right}.rtl>.displayedoption:before{right:auto;left:0.5625rem}";
179
179
 
180
180
  const Select = class {
181
181
  constructor(hostRef) {
@@ -24,6 +24,9 @@
24
24
  "components/wm-modal/wm-modal-footer.js",
25
25
  "components/wm-modal/wm-modal-header.js",
26
26
  "components/wm-modal/wm-modal.js",
27
+ "components/wm-modal-pss/wm-modal-pss-footer.js",
28
+ "components/wm-modal-pss/wm-modal-pss-header.js",
29
+ "components/wm-modal-pss/wm-modal-pss.js",
27
30
  "components/wm-navigation/wm-navigation-hamburger.js",
28
31
  "components/wm-navigation/wm-navigation-item.js",
29
32
  "components/wm-navigation/wm-navigation.js",
@@ -81,11 +84,6 @@
81
84
  "wm-input"
82
85
  ]
83
86
  },
84
- {
85
- "components": [
86
- "wm-modal"
87
- ]
88
- },
89
87
  {
90
88
  "components": [
91
89
  "wm-navigator"
@@ -153,6 +151,20 @@
153
151
  "wm-select"
154
152
  ]
155
153
  },
154
+ {
155
+ "components": [
156
+ "wm-modal",
157
+ "wm-modal-footer",
158
+ "wm-modal-header"
159
+ ]
160
+ },
161
+ {
162
+ "components": [
163
+ "wm-modal-pss",
164
+ "wm-modal-pss-footer",
165
+ "wm-modal-pss-header"
166
+ ]
167
+ },
156
168
  {
157
169
  "components": [
158
170
  "wm-navigation",
@@ -31,8 +31,6 @@
31
31
  -------------------------------------- */
32
32
  .search {
33
33
  box-sizing: border-box;
34
- border-bottom: 2px solid;
35
- border-color: var(--wmcolor-select-option-border);
36
34
  padding: 1.25rem;
37
35
  }
38
36
  .search .searchfield-wrapper {
@@ -86,10 +84,7 @@
86
84
  width: 100%;
87
85
  cursor: pointer;
88
86
  padding: 1.25rem;
89
- border: none;
90
87
  margin: 0;
91
- border-bottom: 2px solid;
92
- border-color: var(--wmcolor-select-option-border);
93
88
  background: var(--wmcolor-select-option-background);
94
89
  font-family: inherit;
95
90
  font-size: inherit;
@@ -110,17 +105,32 @@
110
105
  background: var(--wmcolor-select-option-background-focus);
111
106
  }
112
107
 
108
+ .return-btn,
109
+ .select-all,
110
+ .search {
111
+ border: none;
112
+ }
113
+ .return-btn:not(:last-child),
114
+ .select-all:not(:last-child),
115
+ .search:not(:last-child) {
116
+ border-bottom: 2px solid;
117
+ border-color: var(--wmcolor-select-option-border);
118
+ }
119
+
113
120
  .options-wrapper {
114
121
  overflow-y: auto;
115
122
  max-height: var(--max-height);
116
123
  }
117
124
 
125
+ .non-options-wrapper {
126
+ border-bottom: 1px solid var(--wmcolor-border-dark);
127
+ }
128
+
118
129
  .return-btn {
119
130
  display: flex;
120
131
  align-items: center;
121
132
  font-weight: 600;
122
133
  font-size: 0.875rem;
123
- border-bottom: 1px solid #4a4a4a;
124
134
  }
125
135
  .return-btn:before {
126
136
  display: inline-block;
@@ -285,6 +285,7 @@ export class PrivOptionList {
285
285
  }
286
286
  }
287
287
  close() {
288
+ this.listboxEl.scrollTop = 0;
288
289
  if (this.multiple) {
289
290
  this.updateOptionVisibility();
290
291
  }
@@ -390,8 +391,11 @@ export class PrivOptionList {
390
391
  return (h("wm-option", { class: "clone", subinfo: option.subinfo, selected: option.selected }, option.textContent));
391
392
  });
392
393
  }
394
+ renderNonOptions() {
395
+ return (h("div", { class: "non-options-wrapper" }, this.isInNestedSelect && this.renderReturnBtn(), this.search && this.renderSearchField(), this.visibleSelectAllButton && this.renderSelectAllButton()));
396
+ }
393
397
  render() {
394
- return (h("div", { class: "list-wrapper" }, this.isInNestedSelect && this.renderReturnBtn(), this.search && this.renderSearchField(), this.visibleSelectAllButton && this.renderSelectAllButton(), h("div", { id: "list", class: "options-wrapper", tabindex: -1, role: "listbox", "aria-multiselectable": this.multiple ? "true" : null, "aria-labelledby": "label", ref: (el) => (this.listboxEl = el), style: { "--max-height": this.effectiveMaxHeight } }, this.searchTerm && this.filteredOptions.length === 0 && this.renderSearchFailedMessage(), this.multiple && this.renderCloneOptions(), h("slot", null)), h("div", { id: "optionlist-announcement", "aria-live": "polite", "aria-atomic": "true", class: "sr-only", ref: (el) => (this.liveRegionEl = el) }, this.announcement)));
398
+ return (h("div", { class: "list-wrapper" }, (this.isInNestedSelect || this.search || this.visibleSelectAllButton) && this.renderNonOptions(), h("div", { id: "list", class: "options-wrapper", tabindex: -1, role: "listbox", "aria-multiselectable": this.multiple ? "true" : null, "aria-labelledby": "label", ref: (el) => (this.listboxEl = el), style: { "--max-height": this.effectiveMaxHeight } }, this.searchTerm && this.filteredOptions.length === 0 && this.renderSearchFailedMessage(), this.multiple && this.renderCloneOptions(), h("slot", null)), h("div", { id: "optionlist-announcement", "aria-live": "polite", "aria-atomic": "true", class: "sr-only", ref: (el) => (this.liveRegionEl = el) }, this.announcement)));
395
399
  }
396
400
  static get is() { return "priv-option-list"; }
397
401
  static get originalStyleUrls() {
@@ -218,9 +218,9 @@
218
218
  margin-left: 0.5rem;
219
219
  }
220
220
  .button-wrapper > .displayedoption[disabled] {
221
- color: #6b6b6b;
222
- border-color: #8a8a8a;
223
- background: #f0f0f0;
221
+ color: var(--wmcolor-select-option-text-disabled);
222
+ border-color: var(--wmcolor-border-dark);
223
+ background: var(--wmcolor-select-option-background-disabled);
224
224
  cursor: default;
225
225
  }
226
226
 
@@ -353,11 +353,11 @@
353
353
  padding-right: 0.5rem;
354
354
  font-size: 1.12rem;
355
355
  }
356
- .menu :focus-visible {
356
+ .menu .menuitem:focus-visible {
357
357
  outline: none;
358
358
  background: var(--wmcolor-interactive-background-focus);
359
359
  }
360
- .menu :hover {
360
+ .menu .menuitem:hover {
361
361
  background: var(--wmcolor-select-option-background-hover);
362
362
  outline: none;
363
363
  }
@@ -49,6 +49,7 @@ export class NestedSelect {
49
49
  });
50
50
  this.isExpanded = false;
51
51
  this.showClearSelectionButton = false;
52
+ this.announcement = "";
52
53
  this.constrainedMaxHeight = this.maxHeight;
53
54
  }
54
55
  get isDisabled() {
@@ -160,6 +161,7 @@ export class NestedSelect {
160
161
  open(focusLast = false) {
161
162
  if (!this.isDisabled) {
162
163
  this.showClearSelectionButton = this.childOptions.some((o) => o.selected);
164
+ this.dropdownEl.scrollTop = 0;
163
165
  this.isExpanded = true;
164
166
  this.dropdownEl.classList.add("open");
165
167
  const elHeight = this.el.clientHeight;
@@ -191,21 +193,15 @@ export class NestedSelect {
191
193
  }
192
194
  moveDown(menuitemEl) {
193
195
  const currentIndex = this.menuitemEls.indexOf(menuitemEl);
194
- if (currentIndex == this.menuitemEls.length - 1) {
195
- this.menuitemEls[0].focus();
196
- }
197
- else {
198
- this.menuitemEls[currentIndex + 1].focus();
199
- }
196
+ const menuitemToFocus = this.menuitemEls[currentIndex == this.menuitemEls.length - 1 ? 0 : currentIndex + 1];
197
+ menuitemToFocus.scrollIntoView({ block: "nearest" });
198
+ menuitemToFocus.focus();
200
199
  }
201
200
  moveUp(menuitemEl) {
202
201
  const currentIndex = this.menuitemEls.indexOf(menuitemEl);
203
- if (currentIndex == 0) {
204
- this.menuitemEls[this.menuitemEls.length - 1].focus();
205
- }
206
- else {
207
- this.menuitemEls[currentIndex - 1].focus();
208
- }
202
+ const menuitemToFocus = this.menuitemEls[currentIndex == 0 ? this.menuitemEls.length - 1 : currentIndex - 1];
203
+ menuitemToFocus.scrollIntoView({ block: "nearest" });
204
+ menuitemToFocus.focus();
209
205
  }
210
206
  handleButtonBlur(ev) {
211
207
  if (isElOrChild(this.el, ev.relatedTarget)) {
@@ -261,6 +257,13 @@ export class NestedSelect {
261
257
  const elToFocus = this.el.shadowRoot.querySelector(`button[data-label=${ev.detail}]`);
262
258
  elToFocus.focus();
263
259
  }
260
+ announce(message) {
261
+ // \u00A0 is a non-breaking space character, which causes the message to be read as a new one
262
+ if (this.liveRegionEl.textContent === message) {
263
+ message += "\u00A0";
264
+ }
265
+ this.announcement = message;
266
+ }
264
267
  renderButtonText() {
265
268
  if (this.displayedOptions.length < 1) {
266
269
  return h("span", null, this.placeholder);
@@ -279,6 +282,12 @@ export class NestedSelect {
279
282
  }
280
283
  handleClearSelection() {
281
284
  this.optgroupEls.forEach((optgroupEl) => optgroupEl.emitDeselection());
285
+ const selectionClearedAnnouncement = intl.formatMessage({
286
+ id: "select.selectionCleared",
287
+ defaultMessage: "Selection cleared",
288
+ description: "Screen reader announcement alerting the user they have cleared their selection",
289
+ });
290
+ this.announce(selectionClearedAnnouncement);
282
291
  if (!this.multiple) {
283
292
  this.close();
284
293
  }
@@ -318,14 +327,14 @@ export class NestedSelect {
318
327
  };
319
328
  return (h(Host, { onBlur: (ev) => this.handleComponentBlur(ev) }, h("div", { class: `wrapper ${getTextDir()} label-${this.labelPosition} ${this.errorMessage ? "invalid" : ""}` }, h("div", { class: "label-wrapper" }, h("label", { class: "label", id: "label", htmlFor: "selectbtn" }, this.label,
320
329
  // we can't use aria-required or required attributes because it's invalid on the elements we're using (button controlling a listbox)
321
- this.requiredField ? (h("span", { class: "required" }, h("span", { class: "sr-only" }, globalMessages.requiredField), h("span", { "aria-hidden": "true" }, "*"))) : (""))), h("div", { class: "button-wrapper" }, h("button", Object.assign({}, buttonProps, { class: `displayedoption ${this.isExpanded ? "expanded" : ""}`, ref: (el) => (this.buttonEl = el), onBlur: (ev) => this.handleButtonBlur(ev) }), h("span", { class: "overflowcontrol" }, h("span", { class: "button-text" }, this.renderButtonText())), this.renderOverflowCount(), h("div", { ref: (el) => (this.measurementAreaEl = el), class: "measurement-area", "aria-hidden": "true" })), h("div", { class: `dropdown ${this.openUp ? "upwards" : ""}`, ref: (el) => (this.dropdownEl = el) }, h("div", { ref: (el) => (this.menuEl = el), class: "menu", style: { "--max-height": this.constrainedMaxHeight } }, this.renderClearSelectionButton(), this.optgroupEls.map((optgroupEl) => {
330
+ this.requiredField ? (h("span", { class: "required" }, h("span", { class: "sr-only" }, globalMessages.requiredField), h("span", { "aria-hidden": "true" }, "*"))) : (""))), h("div", { class: "button-wrapper" }, h("button", Object.assign({}, buttonProps, { class: `displayedoption ${this.isExpanded ? "expanded" : ""}`, ref: (el) => (this.buttonEl = el), onBlur: (ev) => this.handleButtonBlur(ev) }), h("span", { class: "overflowcontrol" }, h("span", { class: "button-text" }, this.renderButtonText())), this.renderOverflowCount(), h("div", { ref: (el) => (this.measurementAreaEl = el), class: "measurement-area", "aria-hidden": "true" })), h("div", { class: `dropdown ${this.openUp ? "upwards" : ""}`, ref: (el) => (this.dropdownEl = el) }, h("div", { ref: (el) => (this.menuEl = el), class: "menu", style: { "--max-height": this.constrainedMaxHeight }, tabIndex: -1 }, this.renderClearSelectionButton(), this.optgroupEls.map((optgroupEl) => {
322
331
  return (h("button", { class: `menuitem group-btn ${optgroupEl.disabled ? "disabled" : ""}`, role: "menuitem", "data-label": optgroupEl.label, tabindex: -1, "aria-disabled": optgroupEl.disabled, onClick: () => {
323
332
  if (!optgroupEl.disabled) {
324
333
  optgroupEl.isExpanded = !optgroupEl.isExpanded;
325
334
  forceUpdate(this.el);
326
335
  }
327
336
  }, onKeyDown: (ev) => this.handleMenuitemKeydown(ev) }, h("span", null, optgroupEl.label), this.renderSelectionCount(optgroupEl), optgroupEl.disabled && h("div", { class: "disabled-indication" }, "Disabled")));
328
- })), h("div", { ref: (el) => (this.optListWrapperEl = el), class: "option-list-wrapper hidden" }, h("slot", null))), h("div", { id: "error", class: this.errorMessage ? "error-message" : "" }, this.errorMessage)))));
337
+ })), h("div", { ref: (el) => (this.optListWrapperEl = el), class: "option-list-wrapper hidden" }, h("slot", null))), h("div", { id: "error", class: this.errorMessage ? "error-message" : "" }, this.errorMessage))), h("div", { id: "nestedselect-announcement", "aria-live": "assertive", "aria-atomic": "true", class: "sr-only", ref: (el) => (this.liveRegionEl = el) }, this.announcement)));
329
338
  }
330
339
  static get is() { return "wm-nested-select"; }
331
340
  static get encapsulation() { return "shadow"; }
@@ -579,7 +588,8 @@ export class NestedSelect {
579
588
  static get states() {
580
589
  return {
581
590
  "isExpanded": {},
582
- "showClearSelectionButton": {}
591
+ "showClearSelectionButton": {},
592
+ "announcement": {}
583
593
  };
584
594
  }
585
595
  static get events() {
@@ -227,9 +227,9 @@
227
227
  margin-left: 0.5rem;
228
228
  }
229
229
  .wrapper .button-wrapper > .displayedoption[disabled] {
230
- color: #6b6b6b;
231
- border-color: #8a8a8a;
232
- background: #f0f0f0;
230
+ color: var(--wmcolor-select-option-text-disabled);
231
+ border-color: var(--wmcolor-border-dark);
232
+ background: var(--wmcolor-select-option-background-disabled);
233
233
  cursor: default;
234
234
  }
235
235
  .wrapper .button-wrapper > .dropdown {
@@ -0,0 +1,61 @@
1
+ /* --------------------------------------
2
+ 1. Box-shadow
3
+ -------------------------------------- */
4
+ /* --------------------------------------
5
+ 2. Border-radius
6
+ -------------------------------------- */
7
+ /* --------------------------------------
8
+ 3. Transforms
9
+ -------------------------------------- */
10
+ /* --------------------------------------
11
+ 4. Button Focus
12
+ -------------------------------------- */
13
+ /* --------------------------------------
14
+ 5. Flex
15
+ -------------------------------------- */
16
+ /* --------------------------------------
17
+ 7. Screen Reader Only
18
+ -------------------------------------- */
19
+ /* --------------------------------------
20
+ 8. Label styles
21
+ this mixin includes all the styles for the label
22
+ + flex rules on the parent container to switch between top and left position
23
+ + srOnly when label is hidden
24
+ Assumes the following markup:
25
+ div.wrapper[.label-left.invalid] > div.label-wrapper > label.label > span.required
26
+ .wrapper is for the flex rules
27
+ .label-wrapper is to set the height of the label when positioned left so it's the same height as
28
+ the input. It can't be done directly on .label because of possible line wrapping.
29
+ When the label is on top there's no line wrapping at all to ensure proper alignment of inlined elements
30
+ (they can't be aligned on the baseline because of possible description text and error message)
31
+ -------------------------------------- */
32
+ wm-modal-pss-footer {
33
+ border-radius: 0px 0px 5px 5px;
34
+ margin-top: -1px;
35
+ }
36
+ wm-modal-pss-footer .wm-wrapper {
37
+ display: flex;
38
+ justify-content: space-between;
39
+ align-items: center;
40
+ }
41
+ @media only screen and (max-width: 650px) {
42
+ wm-modal-pss-footer .wm-wrapper.footer-text {
43
+ flex-direction: column;
44
+ align-items: flex-start;
45
+ }
46
+ }
47
+ wm-modal-pss-footer .wm-wrapper wm-button + wm-button {
48
+ margin-left: 1rem;
49
+ }
50
+ wm-modal-pss-footer .wm-wrapper .wm-info {
51
+ font-size: 0.875rem;
52
+ font-style: italic;
53
+ }
54
+ @media only screen and (max-width: 650px) {
55
+ wm-modal-pss-footer .wm-wrapper .wm-info {
56
+ padding-bottom: 0.625rem;
57
+ }
58
+ }
59
+ wm-modal-pss-footer .wm-wrapper .wm-info:focus {
60
+ outline: none;
61
+ }