@watermarkinsights/ripple 5.19.0-alpha.9 → 5.19.1-alpha.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.
Files changed (190) hide show
  1. package/dist/cjs/{app-globals-105475f9.js → app-globals-9dcc4582.js} +1 -1
  2. package/dist/cjs/loader.cjs.js +2 -2
  3. package/dist/cjs/priv-option-list.cjs.entry.js +2 -4
  4. package/dist/cjs/ripple.cjs.js +2 -2
  5. package/dist/cjs/wm-file.cjs.entry.js +1 -1
  6. package/dist/cjs/wm-option_2.cjs.entry.js +186 -95
  7. package/dist/cjs/wm-snackbar.cjs.entry.js +12 -16
  8. package/dist/cjs/wm-tag-input.cjs.entry.js +20 -11
  9. package/dist/cjs/wm-textarea.cjs.entry.js +1 -1
  10. package/dist/cjs/wm-timepicker.cjs.entry.js +2 -2
  11. package/dist/cjs/wm-toggletip.cjs.entry.js +3 -3
  12. package/dist/cjs/wm-uploader.cjs.entry.js +16 -12
  13. package/dist/collection/components/datepickers/datepicker.css +0 -31
  14. package/dist/collection/components/selects/priv-option-list/priv-option-list.js +2 -4
  15. package/dist/collection/components/selects/wm-select/wm-select.css +75 -51
  16. package/dist/collection/components/selects/wm-select/wm-select.js +197 -110
  17. package/dist/collection/components/wm-file/wm-file.css +3 -2
  18. package/dist/collection/components/wm-menuitem/wm-menuitem.css +0 -31
  19. package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.css +0 -31
  20. package/dist/collection/components/wm-pagination/wm-pagination.css +0 -31
  21. package/dist/collection/components/wm-search/wm-search.css +0 -31
  22. package/dist/collection/components/wm-snackbar/wm-snackbar.css +0 -31
  23. package/dist/collection/components/wm-snackbar/wm-snackbar.js +12 -16
  24. package/dist/collection/components/wm-tag-input/wm-tag-input.css +9 -8
  25. package/dist/collection/components/wm-tag-input/wm-tag-input.js +19 -10
  26. package/dist/collection/components/wm-textarea/wm-textarea.js +1 -1
  27. package/dist/collection/components/wm-timepicker/wm-timepicker.css +0 -31
  28. package/dist/collection/components/wm-timepicker/wm-timepicker.js +2 -2
  29. package/dist/collection/components/wm-toggletip/wm-toggletip.js +3 -3
  30. package/dist/collection/components/wm-uploader/wm-uploader.css +2 -33
  31. package/dist/collection/components/wm-uploader/wm-uploader.js +15 -11
  32. package/dist/collection/dev/uploader.js +4 -4
  33. package/dist/esm/{app-globals-d5f43c8e.js → app-globals-ef63936e.js} +1 -1
  34. package/dist/esm/{chartFunctions-3a54f8ac.js → chartFunctions-613e9c87.js} +1 -1
  35. package/dist/esm/{functions-669184a6.js → functions-38e392cb.js} +1 -1
  36. package/dist/esm/{intl-7906e2d7.js → intl-0b8f342e.js} +1 -1
  37. package/dist/esm/loader.js +2 -2
  38. package/dist/esm/polyfills/core-js.js +0 -0
  39. package/dist/esm/polyfills/dom.js +0 -0
  40. package/dist/esm/polyfills/es5-html-element.js +0 -0
  41. package/dist/esm/polyfills/index.js +0 -0
  42. package/dist/esm/polyfills/system.js +0 -0
  43. package/dist/esm/priv-calendar.entry.js +1 -1
  44. package/dist/esm/priv-chart-popover.entry.js +1 -1
  45. package/dist/esm/priv-option-list.entry.js +4 -6
  46. package/dist/esm/ripple.js +2 -2
  47. package/dist/esm/wm-action-menu_2.entry.js +1 -1
  48. package/dist/esm/wm-button.entry.js +1 -1
  49. package/dist/esm/wm-chart.entry.js +3 -3
  50. package/dist/esm/wm-date-range.entry.js +1 -1
  51. package/dist/esm/wm-datepicker.entry.js +1 -1
  52. package/dist/esm/wm-file.entry.js +2 -2
  53. package/dist/esm/wm-flyout.entry.js +2 -2
  54. package/dist/esm/wm-input.entry.js +2 -2
  55. package/dist/esm/wm-line-chart.entry.js +3 -3
  56. package/dist/esm/wm-modal-pss_3.entry.js +2 -2
  57. package/dist/esm/wm-modal_3.entry.js +2 -2
  58. package/dist/esm/wm-navigation_3.entry.js +2 -2
  59. package/dist/esm/wm-navigator.entry.js +1 -1
  60. package/dist/esm/wm-nested-select.entry.js +2 -2
  61. package/dist/esm/wm-optgroup.entry.js +1 -1
  62. package/dist/esm/wm-option_2.entry.js +188 -97
  63. package/dist/esm/wm-pagination.entry.js +2 -2
  64. package/dist/esm/wm-progress-indicator_3.entry.js +2 -2
  65. package/dist/esm/wm-search.entry.js +2 -2
  66. package/dist/esm/wm-snackbar.entry.js +14 -18
  67. package/dist/esm/wm-tab-item_3.entry.js +1 -1
  68. package/dist/esm/wm-tag-input.entry.js +22 -13
  69. package/dist/esm/wm-tag-option.entry.js +1 -1
  70. package/dist/esm/wm-textarea.entry.js +3 -3
  71. package/dist/esm/wm-timepicker.entry.js +3 -3
  72. package/dist/esm/wm-toggletip.entry.js +4 -4
  73. package/dist/esm/wm-uploader.entry.js +18 -14
  74. package/dist/esm-es5/{app-globals-d5f43c8e.js → app-globals-ef63936e.js} +1 -1
  75. package/dist/esm-es5/{chartFunctions-3a54f8ac.js → chartFunctions-613e9c87.js} +1 -1
  76. package/dist/esm-es5/{functions-669184a6.js → functions-38e392cb.js} +1 -1
  77. package/dist/esm-es5/{intl-7906e2d7.js → intl-0b8f342e.js} +1 -1
  78. package/dist/esm-es5/loader.js +1 -1
  79. package/dist/esm-es5/priv-calendar.entry.js +1 -1
  80. package/dist/esm-es5/priv-chart-popover.entry.js +1 -1
  81. package/dist/esm-es5/priv-option-list.entry.js +1 -1
  82. package/dist/esm-es5/ripple.js +1 -1
  83. package/dist/esm-es5/wm-action-menu_2.entry.js +1 -1
  84. package/dist/esm-es5/wm-button.entry.js +1 -1
  85. package/dist/esm-es5/wm-chart.entry.js +1 -1
  86. package/dist/esm-es5/wm-date-range.entry.js +1 -1
  87. package/dist/esm-es5/wm-datepicker.entry.js +1 -1
  88. package/dist/esm-es5/wm-file.entry.js +1 -1
  89. package/dist/esm-es5/wm-flyout.entry.js +1 -1
  90. package/dist/esm-es5/wm-input.entry.js +1 -1
  91. package/dist/esm-es5/wm-line-chart.entry.js +1 -1
  92. package/dist/esm-es5/wm-modal-pss_3.entry.js +1 -1
  93. package/dist/esm-es5/wm-modal_3.entry.js +1 -1
  94. package/dist/esm-es5/wm-navigation_3.entry.js +1 -1
  95. package/dist/esm-es5/wm-navigator.entry.js +1 -1
  96. package/dist/esm-es5/wm-nested-select.entry.js +1 -1
  97. package/dist/esm-es5/wm-optgroup.entry.js +1 -1
  98. package/dist/esm-es5/wm-option_2.entry.js +1 -1
  99. package/dist/esm-es5/wm-pagination.entry.js +1 -1
  100. package/dist/esm-es5/wm-progress-indicator_3.entry.js +1 -1
  101. package/dist/esm-es5/wm-search.entry.js +1 -1
  102. package/dist/esm-es5/wm-snackbar.entry.js +1 -1
  103. package/dist/esm-es5/wm-tab-item_3.entry.js +1 -1
  104. package/dist/esm-es5/wm-tag-input.entry.js +1 -1
  105. package/dist/esm-es5/wm-tag-option.entry.js +1 -1
  106. package/dist/esm-es5/wm-textarea.entry.js +1 -1
  107. package/dist/esm-es5/wm-timepicker.entry.js +1 -1
  108. package/dist/esm-es5/wm-toggletip.entry.js +1 -1
  109. package/dist/esm-es5/wm-uploader.entry.js +1 -1
  110. package/dist/ripple/{p-6d32911c.system.entry.js → p-00eaa361.system.entry.js} +1 -1
  111. package/dist/ripple/{p-c85dae6b.entry.js → p-0825151e.entry.js} +1 -1
  112. package/dist/ripple/{p-7a21aa55.entry.js → p-0a46b050.entry.js} +1 -1
  113. package/dist/ripple/{p-c70fa14f.entry.js → p-0bce3f83.entry.js} +1 -1
  114. package/dist/ripple/{p-69b38da5.entry.js → p-118093e1.entry.js} +1 -1
  115. package/dist/ripple/p-12b27fa7.entry.js +1 -0
  116. package/dist/ripple/{p-1eb2ec31.system.entry.js → p-1de87de8.system.entry.js} +1 -1
  117. package/dist/ripple/{p-ec9f782e.entry.js → p-26667070.entry.js} +1 -1
  118. package/dist/ripple/{p-55cdfcb4.system.entry.js → p-2b7259cb.system.entry.js} +1 -1
  119. package/dist/ripple/{p-ff6b7376.system.entry.js → p-2db6573e.system.entry.js} +1 -1
  120. package/dist/ripple/{p-4175c4b0.system.entry.js → p-2f82bfb9.system.entry.js} +1 -1
  121. package/dist/ripple/{p-6bf103b8.system.entry.js → p-303bf140.system.entry.js} +1 -1
  122. package/dist/ripple/{p-1efa25b5.system.entry.js → p-3133ce3c.system.entry.js} +1 -1
  123. package/dist/ripple/{p-9ac6957b.entry.js → p-31bac55d.entry.js} +1 -1
  124. package/dist/ripple/{p-57f9c7c3.entry.js → p-35d93c19.entry.js} +1 -1
  125. package/dist/ripple/p-374f46f4.entry.js +1 -0
  126. package/dist/ripple/{p-21c100d8.entry.js → p-39a4934f.entry.js} +1 -1
  127. package/dist/ripple/{p-2f10c1fa.system.entry.js → p-3d8754ba.system.entry.js} +1 -1
  128. package/dist/ripple/{p-92fe0ea4.entry.js → p-41664372.entry.js} +1 -1
  129. package/dist/ripple/{p-c8dfc321.system.entry.js → p-44cc05f6.system.entry.js} +1 -1
  130. package/dist/ripple/{p-c73882de.system.entry.js → p-4602304a.system.entry.js} +1 -1
  131. package/dist/ripple/{p-bb364d6b.entry.js → p-4b8f7d1e.entry.js} +1 -1
  132. package/dist/ripple/{p-b55883ee.entry.js → p-4d0abf7a.entry.js} +1 -1
  133. package/dist/ripple/{p-26ab5004.system.entry.js → p-5405df80.system.entry.js} +1 -1
  134. package/dist/ripple/{p-88a7ccee.system.js → p-608971f2.system.js} +1 -1
  135. package/dist/ripple/{p-6ec4129b.entry.js → p-60e16c79.entry.js} +1 -1
  136. package/dist/ripple/{p-561d1898.system.entry.js → p-63233a4b.system.entry.js} +1 -1
  137. package/dist/ripple/{p-95f19440.system.js → p-65abcbb4.system.js} +1 -1
  138. package/dist/ripple/{p-65d3f9c4.system.entry.js → p-667fdcbb.system.entry.js} +1 -1
  139. package/dist/ripple/{p-68e90b50.system.entry.js → p-6a70dc0b.system.entry.js} +1 -1
  140. package/dist/ripple/p-6f1a160e.system.entry.js +1 -0
  141. package/dist/ripple/p-6f38976c.entry.js +1 -0
  142. package/dist/ripple/p-700ca4a0.entry.js +1 -0
  143. package/dist/ripple/{p-7394f4e9.system.entry.js → p-7134a305.system.entry.js} +1 -1
  144. package/dist/ripple/{p-047e510d.entry.js → p-7c3bf608.entry.js} +1 -1
  145. package/dist/ripple/{p-176dcfc0.system.js → p-7edd25f7.system.js} +1 -1
  146. package/dist/ripple/{p-350f9314.system.entry.js → p-85830dbc.system.entry.js} +1 -1
  147. package/dist/ripple/{p-ebfa5876.entry.js → p-86a61a2a.entry.js} +1 -1
  148. package/dist/ripple/{p-009a6e5a.entry.js → p-8e2f3a45.entry.js} +1 -1
  149. package/dist/ripple/{p-a0ef456d.entry.js → p-8ec6ec53.entry.js} +1 -1
  150. package/dist/ripple/{p-71cc21a4.entry.js → p-908057b2.entry.js} +1 -1
  151. package/dist/ripple/{p-dbc3a44d.entry.js → p-9202d9e9.entry.js} +1 -1
  152. package/dist/ripple/{p-0ae9b6d3.js → p-92c8361f.js} +1 -1
  153. package/dist/ripple/p-957f13fb.entry.js +1 -0
  154. package/dist/ripple/{p-1ad6c15b.entry.js → p-9609d8e7.entry.js} +1 -1
  155. package/dist/ripple/{p-3c9972a6.system.entry.js → p-960d2cf0.system.entry.js} +1 -1
  156. package/dist/ripple/{p-22d4c7e0.system.entry.js → p-96f86eb4.system.entry.js} +1 -1
  157. package/dist/ripple/{p-ea10c498.entry.js → p-9e89655f.entry.js} +1 -1
  158. package/dist/ripple/{p-3fa83eda.js → p-a112a9da.js} +1 -1
  159. package/dist/ripple/{p-daac445c.system.entry.js → p-a14dee02.system.entry.js} +1 -1
  160. package/dist/ripple/{p-222624ae.entry.js → p-a5c5c64c.entry.js} +1 -1
  161. package/dist/ripple/{p-dfa30c3d.entry.js → p-a7cde3fc.entry.js} +1 -1
  162. package/dist/ripple/{p-acb4d87c.system.entry.js → p-abcdd7be.system.entry.js} +1 -1
  163. package/dist/ripple/p-aebbb74c.system.js +1 -0
  164. package/dist/ripple/{p-6a40014e.system.entry.js → p-b1fb99e4.system.entry.js} +1 -1
  165. package/dist/ripple/{p-91669f66.js → p-b511ebfd.js} +1 -1
  166. package/dist/ripple/{p-93b6ba69.system.entry.js → p-bde7e77b.system.entry.js} +1 -1
  167. package/dist/ripple/{p-95ce8c39.entry.js → p-be87d02c.entry.js} +1 -1
  168. package/dist/ripple/{p-3c958668.system.js → p-bebc63bb.system.js} +1 -1
  169. package/dist/ripple/{p-c0f4f1ea.system.entry.js → p-c7f3ef7f.system.entry.js} +1 -1
  170. package/dist/ripple/{p-a6f4dd01.system.entry.js → p-ce9bb8ac.system.entry.js} +1 -1
  171. package/dist/ripple/{p-1806e50b.js → p-d815809f.js} +1 -1
  172. package/dist/ripple/{p-fb61a10e.system.entry.js → p-e5c34af5.system.entry.js} +1 -1
  173. package/dist/ripple/{p-e1a15515.system.entry.js → p-e660d0b8.system.entry.js} +1 -1
  174. package/dist/ripple/{p-66489ded.entry.js → p-ecd1c2ba.entry.js} +1 -1
  175. package/dist/ripple/{p-5bf2eb50.system.entry.js → p-f4390a0a.system.entry.js} +1 -1
  176. package/dist/ripple/{p-ae2520e4.entry.js → p-f91fc18d.entry.js} +1 -1
  177. package/dist/ripple/{p-1841c319.system.entry.js → p-f9bbb123.system.entry.js} +1 -1
  178. package/dist/ripple/{p-25c17efe.system.entry.js → p-fbad04d7.system.entry.js} +1 -1
  179. package/dist/ripple/ripple.esm.js +1 -1
  180. package/dist/ripple/ripple.js +1 -1
  181. package/dist/types/components/selects/wm-select/wm-select.d.ts +17 -9
  182. package/dist/types/components/wm-tag-input/wm-tag-input.d.ts +3 -1
  183. package/package.json +2 -2
  184. package/dist/ripple/p-03759d86.system.entry.js +0 -1
  185. package/dist/ripple/p-368f2fe0.system.js +0 -1
  186. package/dist/ripple/p-8e694216.entry.js +0 -1
  187. package/dist/ripple/p-9e1ea6e2.entry.js +0 -1
  188. package/dist/ripple/p-a578f968.entry.js +0 -1
  189. package/dist/ripple/p-b40454d2.entry.js +0 -1
  190. package/dist/ripple/p-bb745e54.entry.js +0 -1
@@ -860,37 +860,6 @@
860
860
  mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z'/%3E%3C/svg%3E%0A");
861
861
  }
862
862
 
863
- /* --------------------------------------
864
- 1. Box-shadow
865
- -------------------------------------- */
866
- /* --------------------------------------
867
- 2. Border-radius
868
- -------------------------------------- */
869
- /* --------------------------------------
870
- 3. Transforms
871
- -------------------------------------- */
872
- /* --------------------------------------
873
- 4. Button Focus
874
- -------------------------------------- */
875
- /* --------------------------------------
876
- 5. Flex
877
- -------------------------------------- */
878
- /* --------------------------------------
879
- 7. Screen Reader Only
880
- -------------------------------------- */
881
- /* --------------------------------------
882
- 8. Label styles
883
- this mixin includes all the styles for the label
884
- + flex rules on the parent container to switch between top and left position
885
- + srOnly when label is hidden
886
- Assumes the following markup:
887
- div.wrapper[.label-left.invalid] > div.label-wrapper > label.label > span.required
888
- .wrapper is for the flex rules
889
- .label-wrapper is to set the height of the label when positioned left so it's the same height as
890
- the input. It can't be done directly on .label because of possible line wrapping.
891
- When the label is on top there's no line wrapping at all to ensure proper alignment of inlined elements
892
- (they can't be aligned on the baseline because of possible description text and error message)
893
- -------------------------------------- */
894
863
  :host * {
895
864
  box-sizing: border-box;
896
865
  margin: unset;
@@ -33,24 +33,20 @@ export class Snackbar {
33
33
  this.resetUpdatedNotifications(prevParsedNotifications);
34
34
  if (prevParsedNotifications.length < this.parsedNotifications.length) {
35
35
  const latestNotification = this.parsedNotifications[0];
36
+ // don't announce link if user is tabbing because link is focused after announcement
37
+ this.announce(`${latestNotification.message} ${this.isTabbing ? "" : latestNotification.link}`);
36
38
  if (!latestNotification.link) {
37
39
  const newTimer = window.setTimeout(() => this.snackExpired(latestNotification.id), 6000);
38
40
  this.timers = Object.assign({ [latestNotification.id]: newTimer }, this.timers);
39
41
  }
40
- else {
41
- if (this.isTabbing) {
42
- this.focusOnDismiss = document.activeElement ? document.activeElement : null;
43
- this.stopTimer(latestNotification);
44
- // allow snack to render before focusing
45
- window.setTimeout(() => {
46
- const link = this.el.shadowRoot.querySelector(`#action-${latestNotification.id}`);
47
- link.focus();
48
- });
49
- }
50
- else {
51
- // don't announce link if user is tabbing because link is focused after announcement
52
- !this.isTabbing && this.announce(`${latestNotification.message} ${latestNotification.link}`);
53
- }
42
+ else if (this.isTabbing) {
43
+ this.focusOnDismiss = document.activeElement ? document.activeElement : null;
44
+ this.stopTimer(latestNotification);
45
+ // allow snack to render before focusing
46
+ window.requestAnimationFrame(() => {
47
+ const link = this.el.shadowRoot.querySelector(`#action-${latestNotification.id}`);
48
+ link.focus();
49
+ });
54
50
  }
55
51
  }
56
52
  }
@@ -149,11 +145,11 @@ export class Snackbar {
149
145
  }, onKeyDown: (ev) => ev.key === "Enter" && this.snackLinkClicked(notification) }, h("span", { "aria-hidden": "true" }, notification.link), notification.newWindow && h("div", { class: "svg-icon svg-open-in-new" })))), h("button", { id: `close-button-${notification.id}`, "aria-label": this.closeSnackMessage, class: "closesnack", tabindex: notification.link ? 0 : -1, onClick: () => this.snackDismissed(notification), onMouseEnter: (ev) => showTooltip("bottom", ev.target, globalMessages.close), onMouseLeave: () => hideTooltip(), onFocus: (ev) => this.isTabbing && showTooltip("bottom", ev.target, globalMessages.close), onBlur: () => hideTooltip() }, h("div", { class: "svg-icon svg-close" }))), h("div", { class: "sr-only", tabindex: notification.link ? 0 : -1, onFocus: () => notification.link && this.snackDismissed(notification) })))));
150
146
  }
151
147
  render() {
152
- return (h(Host, { key: '2b062c8a3acb61667fee361512d91b9e08c27a07' }, h("div", { key: 'c4643e64a3e706732dd2b44d94938c73ee7914cb', ref: (el) => (this.snackAreaEl = el), class: {
148
+ return (h(Host, { key: '01264c3db9744e9b71b6c8cc05c9c80f3c8086c4' }, h("div", { key: '0e49a6805c3f36589077c8685c58ef2e75196a6a', ref: (el) => (this.snackAreaEl = el), class: {
153
149
  "list-wrapper": true,
154
150
  "user-is-tabbing": this.isTabbing,
155
151
  empty: this.parsedNotifications.length == 0,
156
- } }, this.renderSnackbars()), h("div", { key: 'd886c23167016f1ea92da9edd75b1b8ffbafe098', class: "sr-only", "aria-live": "polite", "aria-atomic": "false", id: `wm-live-region-${this.uid}`, ref: (el) => (this.liveRegionEl = el) }, this.announcement)));
152
+ } }, this.renderSnackbars()), h("div", { key: '9c4ea98f1ce40e18e82ef66684bd3d7481343a36', class: "sr-only", "aria-live": "polite", "aria-atomic": "false", id: `wm-live-region-${this.uid}`, ref: (el) => (this.liveRegionEl = el) }, this.announcement)));
157
153
  }
158
154
  static get is() { return "wm-snackbar"; }
159
155
  static get encapsulation() { return "shadow"; }
@@ -882,13 +882,13 @@
882
882
  --wmcolor-taginput-option-text-selected: var(--wmcolor-option-text-disabled);
883
883
  --wmcolor-taginput-option-text: var(--wmcolor-interactive);
884
884
  --wmcolor-taginput-row-background-hover: var(--wmcolor-interactive-background-hover);
885
- --wmcolor-taginput-row-background-focus: var(--wmcolor-interactive-background-focus);
885
+ --wmcolor-taginput-row-background-focus: var(--wmcolor-background-selected);
886
886
  --wmcolor-taginput-row-background-selected: var(--wmcolor-table-row-background-selected);
887
887
  --wmcolor-taginput-row-background-table: var(--wmcolor-table-row-background);
888
888
  --wmcolor-taginput-row-border-selected: var(--wmcolor-table-row-border-selected);
889
889
  --wmcolor-taginput-tag-background-highlight: var(--wmcolor-interactive-background-highlight);
890
890
  --wmcolor-taginput-tag-background-locked: var(--wmcolor-interactive-disabled);
891
- --wmcolor-taginput-tag-background: var(--wmcolor-palelilacgray); /* EXCEPTION */
891
+ --wmcolor-taginput-tag-background: var(--wmcolor-lilacgray-30); /* EXCEPTION */
892
892
  --wmcolor-taginput-tag-text-locked: var(--wmcolor-text-ondark);
893
893
  --wmcolor-taginput-tag-text: var(--wmcolor-text);
894
894
  --wmcolor-taginput-tagbutton-background-hover: var(--wmcolor-interactive-hover);
@@ -1218,11 +1218,12 @@
1218
1218
  outline: none;
1219
1219
  background: var(--wmcolor-taginput-option-background-hover);
1220
1220
  }
1221
- :host .dropdown-wrapper li.option.focused, :host .dropdown-wrapper li.add-new-btn.focused,
1222
- :host .dropdown-wrapper div.option.focused,
1223
- :host .dropdown-wrapper div.add-new-btn.focused {
1221
+ :host .dropdown-wrapper li.option.focused:not(:hover), :host .dropdown-wrapper li.add-new-btn.focused:not(:hover),
1222
+ :host .dropdown-wrapper div.option.focused:not(:hover),
1223
+ :host .dropdown-wrapper div.add-new-btn.focused:not(:hover) {
1224
1224
  outline: none;
1225
1225
  background: var(--wmcolor-taginput-option-background-focus);
1226
+ color: var(--wmcolor-interactive-text);
1226
1227
  }
1227
1228
  :host .dropdown-wrapper li.help-text,
1228
1229
  :host .dropdown-wrapper div.help-text {
@@ -1245,9 +1246,6 @@
1245
1246
  overflow: auto;
1246
1247
  margin-block-start: 1.5rem;
1247
1248
  }
1248
- :host .table-wrapper:focus {
1249
- outline: none;
1250
- }
1251
1249
  :host .table-wrapper #table {
1252
1250
  width: 100%;
1253
1251
  border-spacing: 0px;
@@ -1266,6 +1264,9 @@
1266
1264
  text-transform: uppercase;
1267
1265
  padding: 0 1.5rem;
1268
1266
  }
1267
+ :host .table-wrapper #table:focus {
1268
+ outline: none;
1269
+ }
1269
1270
  :host .table-wrapper tr:nth-child(even) {
1270
1271
  background-color: var(--wmcolor-taginput-altrow-background-table);
1271
1272
  }
@@ -634,7 +634,7 @@ export class TagInput {
634
634
  }
635
635
  }
636
636
  }
637
- handleTableWrapperFocus() {
637
+ handleTableFocus() {
638
638
  // Forward focus to first focusable table row when container receives focus
639
639
  // First try filtered options, then fall back to all options
640
640
  let targetOptions = this.filteredOptionEls;
@@ -717,6 +717,14 @@ export class TagInput {
717
717
  // innerText is necessary vs textContent, as innerText ignores sr-only / display: none text
718
718
  showTooltip("bottom", this._focusedOption, this._focusedOption.innerText);
719
719
  }
720
+ const tableEl = this.el.shadowRoot.querySelector("#table");
721
+ if (!(this.el.shadowRoot.activeElement == tableEl)) {
722
+ tableEl.focus();
723
+ }
724
+ if (this.filteredOptionEls.length > 0 && this.focusedOption == this.filteredOptionEls[0]) {
725
+ // When the focused option is the first option, scroll to the top of the table so headers are visible
726
+ this.el.shadowRoot.querySelector(".table-wrapper").scrollTop = 0;
727
+ }
720
728
  }
721
729
  optionToFocus.scrollIntoView({ block: "nearest" });
722
730
  }
@@ -815,6 +823,12 @@ export class TagInput {
815
823
  handleTagMouseEnter(ev) {
816
824
  this.showTooltipIfTruncated(ev.target);
817
825
  }
826
+ renderDropdownInput() {
827
+ return (h("input", { id: "input", class: "input", role: "combobox", ref: (el) => (this.inputEl = el), autocomplete: "off", "aria-required": this.requiredField ? "true" : null, "aria-controls": "dropdown", "aria-describedby": `help-text ${this.errorMessage ? "error " : ""} max-tags`, "aria-label": `${this.label} ${globalMessages.getCharacterLimit(this.characterLimit)}`, "aria-expanded": this.isExpanded.toString(), "aria-activedescendant": this.inputActiveDescendantId, placeholder: this.placeholder, maxLength: this.characterLimit, onInput: (ev) => this.handleInputChanged(ev), onBlur: (ev) => this.handleBlur(ev), onFocus: () => this.handleInputFocus(), onKeyDown: (ev) => this.handleInputKeyDown(ev) }));
828
+ }
829
+ renderTableInput() {
830
+ return (h("input", { id: "input", class: "input", ref: (el) => (this.inputEl = el), autocomplete: "off", "aria-required": this.requiredField ? "true" : null, "aria-controls": "table", "aria-describedby": `help-text ${this.errorMessage ? "error " : ""} max-tags`, "aria-label": this.label, placeholder: this.placeholder, onInput: (ev) => this.handleInputChanged(ev), onBlur: (ev) => this.handleBlur(ev), onFocus: () => this.handleInputFocus(), onKeyDown: (ev) => this.handleInputKeyDown(ev) }));
831
+ }
818
832
  renderDropdown() {
819
833
  return (h("div", { class: `dropdown-wrapper ${this.isExpanded ? "open" : ""} ${this.openUp ? "upwards" : ""}`, ref: (el) => (this.dropdownEl = el) }, h("div", { id: "help-text", class: "help-text" }, this.renderHelpText()), h("ul", { class: "dropdown", id: "dropdown", role: "listbox", "aria-multiselectable": "true", "aria-expanded": this.isExpanded ? "true" : "false", "aria-label": this.label, tabindex: -1 }, this.inputEl && this.renderAddNewButton(), this.filteredOptionEls.map((o) => this.renderListItem(o)))));
820
834
  }
@@ -841,11 +855,8 @@ export class TagInput {
841
855
  renderTable() {
842
856
  return (h("div", { class: `table-wrapper ${this.isKeying ? "user-is-keying" : ""}`, onScroll: () => this.dismissTooltip(),
843
857
  // browsers will make this container tabbable if it scrolls
844
- // this handler will forward focus to the appropriate element within the table...
845
- onFocus: () => this.handleTableWrapperFocus(),
846
- // ...and for consistency, the table, whether it scrolls or not, should be tabbable
847
- // as long as it's not empty
848
- tabindex: this.filteredOptionEls.length ? "0" : undefined, onKeyDown: (ev) => this.handleTableWrapperKeyDown(ev) }, h("table", { id: "table", role: "grid", class: `${this.colWidths ? "fixed-widths" : ""}`, "aria-label": this.label, "aria-multiselectable": "true" }, this.renderTableHeaders(), this.filteredOptionEls.length ? (this.filteredOptionEls.map((o) => this.renderTableRow(o))) : (h("div", { class: "no-results" }, this.noResultsMessage)))));
858
+ // we need to proactively set tabindex to -1 to avoid user focus. This is okay, because the table provides behavior that allows scrolling its content
859
+ tabindex: -1, onKeyDown: (ev) => this.handleTableWrapperKeyDown(ev) }, h("table", { id: "table", role: "grid", class: `${this.colWidths ? "fixed-widths" : ""}`, "aria-label": this.label, "aria-multiselectable": "true", onFocus: () => this.handleTableFocus(), "aria-activedescendant": this._focusedCell ? this._focusedCell.id : undefined, tabindex: this.filteredOptionEls.length ? "0" : undefined }, this.renderTableHeaders(), this.filteredOptionEls.length ? (this.filteredOptionEls.map((o) => this.renderTableRow(o))) : (h("div", { class: "no-results" }, this.noResultsMessage)))));
849
860
  }
850
861
  renderTableHeaders() {
851
862
  return (h("tr", { class: "headers", role: "row" }, csvToArray(this.colHeaders).map((header, idx) => (h("th", { class: "header-cell", role: "columnheader",
@@ -916,12 +927,10 @@ export class TagInput {
916
927
  }
917
928
  }
918
929
  render() {
919
- return (h("div", { key: '3b80913e5cebf97f7da13646d3ba2ebca1ff7acb', class: `wrapper label-${this.labelPosition} ${this.errorMessage ? "invalid" : ""}` }, h("div", { key: '3046fd2f7c843d6dd7049063164ba1ecbb791bed', class: "label-wrapper" }, h("label", { key: 'd33734b6cbe7dff0b512bf760bdf1ff26a756446', class: "label", htmlFor: "input", onMouseEnter: (ev) => this.handleLabelMouseEnter(ev), onMouseLeave: () => hideTooltip() }, this.label), this.requiredField && (h("div", { key: '9c0e3c6662a75f33e9506d5051b01119afea6327', class: "required", "aria-hidden": "true" }, "*"))), h("div", { key: 'ebd9f767f4b4b715078845aed067e10471394bd7', class: `field-wrapper ${this.el.shadowRoot.activeElement === this.inputEl ? "focused" : ""} ${this.errorMessage ? "invalid" : ""}`, ref: (el) => (this.fieldWrapperEl = el) }, h("div", { key: '62a1b95c2a0d7b3f2cf0f2386eb0cd9e1aeba303', class: "upper-row" }, h("div", { key: 'a6c0facb5651b3e6009e26f193c381b7a4ec002f', class: "svg-icon svg-search" }), h("div", { key: '9020b2b35aa161b72f073b9a0eb2a963680d3727', class: `tags-and-input-wrapper` }, h("ul", { key: 'e5136c64a45cf4f6f7a759721e126b55066b386b', ref: (el) => (this.tagAreaEl = el), class: `tag-area ${this.taggedOptions.length === 0 && "empty"} ${this.isKeying ? "user-is-keying" : ""}`, role: "listbox", "aria-activedescendant": this.focusedTag ? this.focusedTag.id : null, "aria-orientation": "horizontal", "aria-label": `${this.label} ${this.tagAreaInstructions}`, tabindex: this._tagEls.length > 0 ? 0 : -1, "aria-describedby": `info max-tags`, onFocus: (ev) => this.handleTagAreaFocus(ev), onBlur: (ev) => {
930
+ return (h("div", { key: 'a605a67a736cfced28788202c713c9a471829815', class: `wrapper label-${this.labelPosition} ${this.errorMessage ? "invalid" : ""}` }, h("div", { key: '2b6e16b5779bfe055260370775e3517378917636', class: "label-wrapper" }, h("label", { key: 'b47147159b09e53988dba0f360665853ef522167', class: "label", htmlFor: "input", onMouseEnter: (ev) => this.handleLabelMouseEnter(ev), onMouseLeave: () => hideTooltip() }, this.label), this.requiredField && (h("div", { key: '06afe2cbaf6a32989ee70fd50725adb875d9a8b3', class: "required", "aria-hidden": "true" }, "*"))), h("div", { key: 'ba9a1ed7545a2f0b3b72ebdf23231de7df9abf20', class: `field-wrapper ${this.el.shadowRoot.activeElement === this.inputEl ? "focused" : ""} ${this.errorMessage ? "invalid" : ""}`, ref: (el) => (this.fieldWrapperEl = el) }, h("div", { key: '03b6ba86a93df334ba0af0e5759cb0834f5e002e', class: "upper-row" }, h("div", { key: '5a4b29d9cdcc228426a29524d51e47be84728da8', class: "svg-icon svg-search" }), h("div", { key: 'ddd1831f74b7a5204b9ee0077bfe475e5782369c', class: `tags-and-input-wrapper` }, h("ul", { key: '0f561a33d4fd7dc683d04bc6c47f0e0f6c096f0a', ref: (el) => (this.tagAreaEl = el), class: `tag-area ${this.taggedOptions.length === 0 && "empty"} ${this.isKeying ? "user-is-keying" : ""}`, role: "listbox", "aria-activedescendant": this.focusedTag ? this.focusedTag.id : null, "aria-orientation": "horizontal", "aria-label": `${this.label} ${this.tagAreaInstructions}`, tabindex: this._tagEls.length > 0 ? 0 : -1, "aria-describedby": `info max-tags`, onFocus: (ev) => this.handleTagAreaFocus(ev), onBlur: (ev) => {
920
931
  this.focusedTagIndex = undefined;
921
932
  this.handleBlur(ev);
922
- }, onKeyDown: (ev) => this.handleTagAreaKeyDown(ev) }, this.renderTags()), h("input", { key: 'e6b95de440173ace0008faacd3b8bea77af0da8c', id: "input", class: "input", role: "combobox", ref: (el) => (this.inputEl = el), autocomplete: "off", "aria-required": this.requiredField ? "true" : null, "aria-controls": this.tagInputType, "aria-describedby": `help-text${this.errorMessage ? " error " : ""} max-tags`, "aria-label": `${this.label} ${this.isDropdown ? globalMessages.getCharacterLimit(this.characterLimit) : ""}`, "aria-expanded": this.isDropdown ? this.isExpanded.toString() : null, "aria-activedescendant": this.inputActiveDescendantId, placeholder: this.placeholder, maxLength: this.isDropdown ? this.characterLimit : undefined, onInput: (ev) => this.handleInputChanged(ev), onBlur: (ev) => {
923
- this.handleBlur(ev);
924
- }, onFocus: () => this.handleInputFocus(), onKeyDown: (ev) => this.handleInputKeyDown(ev) })), this.isDropdown && (h("div", { key: '418f93ca2ea86a1fa46a6d2f601c84e309c32a2f', class: "character-count" }, this.charCount, "/", this.characterLimit))), this.renderTagCounter(), this.isDropdown && this.renderDropdown()), this.info && (h("div", { key: 'a4a98937151304e2d9357f0522d445b6f841eb02', id: "info", class: "info-text" }, this.info)), h("div", { key: 'b6ac66b1e5a056503da95df5b1eec2bcba259b76', id: "error" }, this.errorMessage), h("div", { key: '5f7e12833cadb8961f850aa47a8e61262e6d3779', class: "sr-only", "aria-live": "polite", ref: (el) => (this.liveRegionEl = el), "aria-atomic": "true" }, this.liveRegionMessage), this.isTable && this.renderTable()));
933
+ }, onKeyDown: (ev) => this.handleTagAreaKeyDown(ev) }, this.renderTags()), this.isDropdown && this.renderDropdownInput(), this.isTable && this.renderTableInput()), this.isDropdown && (h("div", { key: 'cd62e6627ab5932fb436f333cfb4a33ba3404adc', class: "character-count" }, this.charCount, "/", this.characterLimit))), this.renderTagCounter(), this.isDropdown && this.renderDropdown()), this.info && (h("div", { key: '7cc8c9ba718417cbea5b26b15f7f671b5ad2ee06', id: "info", class: "info-text" }, this.info)), h("div", { key: 'a8be5ef2c7f945226f9136c0009a9ce3bcc33686', id: "error" }, this.errorMessage), h("div", { key: '3159070da0e032545bf5e3b2ae1e7d8eb6917e69', class: "sr-only", "aria-live": "polite", ref: (el) => (this.liveRegionEl = el), "aria-atomic": "true" }, this.liveRegionMessage), this.isTable && this.renderTable()));
925
934
  }
926
935
  static get is() { return "wm-tag-input"; }
927
936
  static get encapsulation() { return "shadow"; }
@@ -71,7 +71,7 @@ export class Textarea {
71
71
  this.announcement = message;
72
72
  }
73
73
  render() {
74
- return (h("div", { key: '5bd7daf935fa75bec3fccc000c4674b23da1c043', class: `wrapper label-${this.labelPosition} ${this.errorMessage ? "invalid" : ""}` }, h("div", { key: '52f18f7ef95fb4505f19ec57b3328db9706af750', class: "label-wrapper" }, h("label", { key: '510bf29970364b1caacfd1eef164a2f766217df2', htmlFor: "inputfield", class: "label", onMouseEnter: (ev) => this.handleLabelMouseEnter(ev), onMouseLeave: () => hideTooltip() }, this.label, this.characterLimit && (h("span", { key: '47024a21e0940c6c40dde2b131c337636fe1bbdf', class: "sr-only" }, " ", globalMessages.getCharacterLimit(this.characterLimit)))), this.requiredField && (h("span", { key: 'dff37fb5a589b44b4eb249b0b3a572e9944a15cb', class: "required", "aria-hidden": "true" }, "*"))), h("div", { key: '8dda587667514bbf0db310491cf58d2b3ea00fea', class: "inner-wrapper" }, h("div", { key: '8782435cdc9150197ac29a09fd6b3d6b95413c59', class: `inputfield-wrapper ${this.errorMessage ? "invalid" : ""}`, style: this.inputWidth ? { width: this.inputWidth } : {} }, h("textarea", { key: '3d7a017570a79669f03914e00be725a633717c66', id: "inputfield", disabled: this.isDisabled, "aria-describedby": "info error", onInput: (ev) => this.handleInput(ev), onBlur: () => this.handleBlur(), placeholder: this.placeholder, autocomplete: "off", "aria-required": this.requiredField ? "true" : null, value: this.value, rows: 3, style: { height: this.inputHeight } }), this.characterLimit && typeof this.characterLimit === "number" ? (h("div", { class: `character-count ${this.value.length > this.characterLimit ? "exceeded" : ""}` }, this.charCount, "/", this.characterLimit)) : ("")), this.info && (h("div", { key: '7cfb20e30f1413096a861089e932aabc46be0593', id: "info", class: "info" }, this.info)), h("div", { key: '2f450eb52e3bf5e805e125f19e59766c4d45a75c', id: "error", class: "error-message" }, this.errorMessage), h("div", { key: '024947b6fa1ef096bb09c1c9183984e647ed5432', id: "live-polite", class: "sr-only", "aria-live": "polite", "aria-atomic": "true", ref: (el) => (this.liveRegionEl = el) }, this.announcement))));
74
+ return (h("div", { key: 'c2bdf3a833b32103d85e4d19572985dde836aeb8', class: `wrapper label-${this.labelPosition} ${this.errorMessage ? "invalid" : ""}` }, h("div", { key: '61f16420145b5289639728f06f7a7e9c90ecb220', class: "label-wrapper" }, h("label", { key: 'cf3a1d2dbe614498ce76f7d10252ddabe591ffc7', htmlFor: "inputfield", class: "label", onMouseEnter: (ev) => this.handleLabelMouseEnter(ev), onMouseLeave: () => hideTooltip() }, this.label, this.characterLimit && (h("span", { key: 'ed53aebd7ba2338ba9a34db8ed84f86266fb01a0', class: "sr-only" }, " ", globalMessages.getCharacterLimit(this.characterLimit)))), this.requiredField && (h("span", { key: 'c91d58aa6d531d19ca62227f1f9ae6776dc2e6eb', class: "required", "aria-hidden": "true" }, "*"))), h("div", { key: 'abbd117e4231de2ee3d696216d869a3ac3078240', class: "inner-wrapper" }, h("div", { key: 'e94b2f9f8bbf6d5e374e68555ac266789283b280', class: `inputfield-wrapper ${this.errorMessage ? "invalid" : ""}`, style: this.inputWidth ? { width: this.inputWidth } : {} }, h("textarea", { key: '908e5bb512ed6253d5f1c9cb593f74cf5766ef8c', id: "inputfield", disabled: this.isDisabled, "aria-describedby": "info error", onInput: (ev) => this.handleInput(ev), onBlur: () => this.handleBlur(), placeholder: this.placeholder, autocomplete: "off", "aria-required": this.requiredField ? "true" : null, value: this.value, rows: 3, style: { height: this.inputHeight } }), this.characterLimit && typeof this.characterLimit === "number" ? (h("div", { class: `character-count ${this.value.length > this.characterLimit ? "exceeded" : ""}` }, this.charCount, "/", this.characterLimit)) : ("")), this.info && (h("div", { key: '51239b18371da181395d159315d280e1993383cd', id: "info", class: "info" }, this.info)), h("div", { key: 'dd678537871b6ac6efeec23995a1c8bb5a9c3fbb', id: "error", class: "error-message" }, this.errorMessage), h("div", { key: '54e35dfe321a05965fc555814cdd3235457a0871', id: "live-polite", class: "sr-only", "aria-live": "polite", "aria-atomic": "true", ref: (el) => (this.liveRegionEl = el) }, this.announcement))));
75
75
  }
76
76
  static get is() { return "wm-textarea"; }
77
77
  static get encapsulation() { return "shadow"; }
@@ -860,37 +860,6 @@
860
860
  mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z'/%3E%3C/svg%3E%0A");
861
861
  }
862
862
 
863
- /* --------------------------------------
864
- 1. Box-shadow
865
- -------------------------------------- */
866
- /* --------------------------------------
867
- 2. Border-radius
868
- -------------------------------------- */
869
- /* --------------------------------------
870
- 3. Transforms
871
- -------------------------------------- */
872
- /* --------------------------------------
873
- 4. Button Focus
874
- -------------------------------------- */
875
- /* --------------------------------------
876
- 5. Flex
877
- -------------------------------------- */
878
- /* --------------------------------------
879
- 7. Screen Reader Only
880
- -------------------------------------- */
881
- /* --------------------------------------
882
- 8. Label styles
883
- this mixin includes all the styles for the label
884
- + flex rules on the parent container to switch between top and left position
885
- + srOnly when label is hidden
886
- Assumes the following markup:
887
- div.wrapper[.label-left.invalid] > div.label-wrapper > label.label > span.required
888
- .wrapper is for the flex rules
889
- .label-wrapper is to set the height of the label when positioned left so it's the same height as
890
- the input. It can't be done directly on .label because of possible line wrapping.
891
- When the label is on top there's no line wrapping at all to ensure proper alignment of inlined elements
892
- (they can't be aligned on the baseline because of possible description text and error message)
893
- -------------------------------------- */
894
863
  :host * {
895
864
  box-sizing: border-box;
896
865
  }
@@ -281,13 +281,13 @@ export class Timepicker {
281
281
  return this.times.map((time, index) => (h("li", { id: `option${index + 1}`, "data-time": time, role: "option", onClick: () => this.handleOptionClick(time) }, this.reformatTimeInternal("12", time))));
282
282
  }
283
283
  render() {
284
- return (h(Host, { key: 'fd0acc447628174ea8551c1ea7cafdc8b0b6ec74', onBlur: () => this.close(false) }, h("div", { key: 'a8c7c453558df7a33fc42d71eff78894a36306d6', class: `wrapper label-${this.labelPosition} ${!!this.errorMessage ? "invalid" : ""}`, ref: (t) => (this.tpWrapper = t) }, h("div", { key: '9f259605e513d12e32716f12b4d5dee9fb97d10a', class: "label-wrapper" }, this.labelPosition !== "none" && (h("label", { key: '1b1b596a992a66f6738cab61086c9d7298934e8c', id: "label", class: "label", htmlFor: "time-input", onMouseEnter: (ev) => this.handleLabelMouseEnter(ev), onMouseLeave: () => hideTooltip() }, this.label)), this.labelPosition !== "none" && this.requiredField && (h("div", { key: '4fc12427a1b3c62b9a6e7cd53c83cec311b46f1e', "aria-hidden": "true", class: "required" }, "*"))), h("div", { key: '6f299347f62dd5299f0223bbdee82fc55dafe06a' }, h("div", { key: 'd78e3b28b110714558d94ba03bedc4d63e8a41d7', class: "inner-wrapper" }, h("input", { key: '1af64c4c0ab7bd983d3e926ad1ea146bed0dadea', id: "time-input", "aria-label": this.label, "aria-describedby": "error", ref: (el) => (this.inputEl = el), onBlur: () => this.handleInputBlur(), onInput: () => (this.value = this.inputEl.value), disabled: this.isDisabled, "aria-required": this.requiredField ? "true" : null, placeholder: this.timeFormat, autocomplete: "off", value: this.value, onFocus: () => this.tpWrapper.classList.add("focus") }), h("button", { key: 'a99cd67d7bfa17c4ba512b73097b5987b8d5d4f8', id: "btn", ref: (el) => (this.buttonEl = el), disabled: this.isDisabled, "aria-controls": "list", "aria-expanded": this.isExpanded ? "true" : "false", "aria-label": this.buttonAriaLabel, "aria-describedby": "time-input", onClick: () => (this.isExpanded ? this.close() : this.open()),
284
+ return (h(Host, { key: 'e05ceac51a9193466dff7a488803f09ae91c837a', onBlur: () => this.close(false) }, h("div", { key: '4bdd4087ff1b8c4956623571dc168d761646ce4e', class: `wrapper label-${this.labelPosition} ${!!this.errorMessage ? "invalid" : ""}`, ref: (t) => (this.tpWrapper = t) }, h("div", { key: 'c64a7486a1c3b74f61c94ce0b3f59c45e96b639e', class: "label-wrapper" }, this.labelPosition !== "none" && (h("label", { key: 'cce428cf638a5932b1c157794e646f0b8026e1db', id: "label", class: "label", htmlFor: "time-input", onMouseEnter: (ev) => this.handleLabelMouseEnter(ev), onMouseLeave: () => hideTooltip() }, this.label)), this.labelPosition !== "none" && this.requiredField && (h("div", { key: '655e1585ffdb70eed624eeec16aa270f3f6584b6', "aria-hidden": "true", class: "required" }, "*"))), h("div", { key: '85bf657eff58d0774a25d20c0eba53d7deadd98d' }, h("div", { key: '0152b10359dcb69a47275ee88e0a5c0b8cacf051', class: "inner-wrapper" }, h("input", { key: '32a55fbfebecafa786cafafc540016f52fcbf38a', id: "time-input", "aria-label": this.label, "aria-describedby": "error", ref: (el) => (this.inputEl = el), onBlur: () => this.handleInputBlur(), onInput: () => (this.value = this.inputEl.value), disabled: this.isDisabled, "aria-required": this.requiredField ? "true" : null, placeholder: this.timeFormat, autocomplete: "off", value: this.value, onFocus: () => this.tpWrapper.classList.add("focus") }), h("button", { key: '4c77218b291d0d3858c456c816a608b6d2e6d8c6', id: "btn", ref: (el) => (this.buttonEl = el), disabled: this.isDisabled, "aria-controls": "list", "aria-expanded": this.isExpanded ? "true" : "false", "aria-label": this.buttonAriaLabel, "aria-describedby": "time-input", onClick: () => (this.isExpanded ? this.close() : this.open()),
285
285
  // This addresses an issue in Safari, where clicking buttons does not focus them
286
286
  // if the button does not receive focus when clicked, Timepicker incorrectly emits a blur event
287
287
  onMouseDown: (ev) => {
288
288
  ev.preventDefault();
289
289
  this.buttonEl.focus();
290
- } }, h("span", { key: 'd50582487d9860716e0bdc67b99ac75b346d62aa', class: "svg-icon svg-time" })), h("ul", { key: '63a9ed95dc1c238d12d84150c406e5ff877d71b3', class: `options ${this.isExpanded ? "open" : ""} ${this.openUp ? "upwards" : ""}`, id: "list", role: "listbox", "aria-labelledby": "label", "aria-describedby": this.isExpanded ? "collapsed" : null, tabindex: -1, ref: (el) => (this.optionsEl = el) }, this.renderOptions())), h("div", { key: '25ea586bea9676a7d18c2fdeada1dcaf0a224471', id: "error", class: "error" }, this.errorMessage)), h("div", { key: '4985d6ee5df49f687eaeeb06a1b5a0c8b14b7119', id: "live-polite", class: "sr-only", "aria-live": "polite", "aria-atomic": "true", ref: (el) => (this.liveRegionEl = el) }))));
290
+ } }, h("span", { key: '0211abd0a1e89e3fd48278022f45572a8696a8de', class: "svg-icon svg-time" })), h("ul", { key: 'e7db5d8e3853b0c64099996064c17e361f3f0119', class: `options ${this.isExpanded ? "open" : ""} ${this.openUp ? "upwards" : ""}`, id: "list", role: "listbox", "aria-labelledby": "label", "aria-describedby": this.isExpanded ? "collapsed" : null, tabindex: -1, ref: (el) => (this.optionsEl = el) }, this.renderOptions())), h("div", { key: 'bb587cbf052b2b54ff5cd54cd1ee26e1015adf86', id: "error", class: "error" }, this.errorMessage)), h("div", { key: 'bf8d0736ecbd1c987b0d5c15a87537be665812d7', id: "live-polite", class: "sr-only", "aria-live": "polite", "aria-atomic": "true", ref: (el) => (this.liveRegionEl = el) }))));
291
291
  }
292
292
  static get is() { return "wm-timepicker"; }
293
293
  static get encapsulation() { return "shadow"; }
@@ -229,11 +229,11 @@ export class Toggletip {
229
229
  }
230
230
  }
231
231
  render() {
232
- return (h(Host, { key: '07c2a62e81a2df15f667ca84d440c96dc21a89f7', class: `size-${this.targetSize}` }, h("button", { key: 'd0cb8080843aa0c61fbc2a8280b12e25707ba79a', ref: (el) => (this.buttonEl = el), class: "button", type: "button", "aria-label": this.label, popoverTarget: "toggletip", popoverTargetAction: "toggle", onClick: () => this.open(),
232
+ return (h(Host, { key: '2127bc9c0e5bebbf58fce82b7ea772a3b6fe2ada', class: `size-${this.targetSize}` }, h("button", { key: '55335d84975af0a4e6928b71d08745050454d4e4', ref: (el) => (this.buttonEl = el), class: "button", type: "button", "aria-label": this.label, popoverTarget: "toggletip", popoverTargetAction: "toggle", onClick: () => this.open(),
233
233
  // In order to position the tooltip identically to the toggletip, its presence is determined by these four events
234
- onMouseEnter: () => !this.isOpen && showTooltip(this.toggletipPosition, this.el, this.tooltipMessage), onMouseLeave: () => hideTooltip(), onFocus: () => !this.isOpen && showTooltip(this.toggletipPosition, this.el, this.tooltipMessage), onBlur: () => this.handleBlur() }, this.renderIcon()), h("div", { key: '1b082071110727cf565df491c69b8f2a7c58a3d4', popover: "", ref: (el) => (this.toggletipEl = el), class: `toggletip ${this.targetSize} ${this.isHidden ? "hidden" : ""}`, id: "toggletip",
234
+ onMouseEnter: () => !this.isOpen && showTooltip(this.toggletipPosition, this.el, this.tooltipMessage), onMouseLeave: () => hideTooltip(), onFocus: () => !this.isOpen && showTooltip(this.toggletipPosition, this.el, this.tooltipMessage), onBlur: () => this.handleBlur() }, this.renderIcon()), h("div", { key: 'de52ea584962f47a035c900af10e31951ec49ef6', popover: "", ref: (el) => (this.toggletipEl = el), class: `toggletip ${this.targetSize} ${this.isHidden ? "hidden" : ""}`, id: "toggletip",
235
235
  // @ts-ignore - despite what Typescript says, this is a valid event for popover elements
236
- onToggle: (ev) => this.handlePopoverToggle(ev) }, this.tooltip), h("div", { key: '140540c39e67e60d63ed8c6e4435a7063a2bb16d', ref: (el) => (this.liveRegionEl = el), class: "live-region sr-only", role: "status", "aria-live": "polite", "aria-atomic": "true" })));
236
+ onToggle: (ev) => this.handlePopoverToggle(ev) }, this.tooltip), h("div", { key: '88e8da7742e5aa390fd17be1efd6067d25f71209', ref: (el) => (this.liveRegionEl = el), class: "live-region sr-only", role: "status", "aria-live": "polite", "aria-atomic": "true" })));
237
237
  }
238
238
  static get is() { return "wm-toggletip"; }
239
239
  static get encapsulation() { return "shadow"; }
@@ -1556,37 +1556,6 @@
1556
1556
  mask-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath style='fill: var(--icon-fill, currentColor)' d='M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z'/%3E%3C/svg%3E%0A");
1557
1557
  }
1558
1558
 
1559
- /* --------------------------------------
1560
- 1. Box-shadow
1561
- -------------------------------------- */
1562
- /* --------------------------------------
1563
- 2. Border-radius
1564
- -------------------------------------- */
1565
- /* --------------------------------------
1566
- 3. Transforms
1567
- -------------------------------------- */
1568
- /* --------------------------------------
1569
- 4. Button Focus
1570
- -------------------------------------- */
1571
- /* --------------------------------------
1572
- 5. Flex
1573
- -------------------------------------- */
1574
- /* --------------------------------------
1575
- 7. Screen Reader Only
1576
- -------------------------------------- */
1577
- /* --------------------------------------
1578
- 8. Label styles
1579
- this mixin includes all the styles for the label
1580
- + flex rules on the parent container to switch between top and left position
1581
- + srOnly when label is hidden
1582
- Assumes the following markup:
1583
- div.wrapper[.label-left.invalid] > div.label-wrapper > label.label > span.required
1584
- .wrapper is for the flex rules
1585
- .label-wrapper is to set the height of the label when positioned left so it's the same height as
1586
- the input. It can't be done directly on .label because of possible line wrapping.
1587
- When the label is on top there's no line wrapping at all to ensure proper alignment of inlined elements
1588
- (they can't be aligned on the baseline because of possible description text and error message)
1589
- -------------------------------------- */
1590
1559
  :host {
1591
1560
  display: block;
1592
1561
  position: relative;
@@ -1868,7 +1837,7 @@
1868
1837
  width: fit-content;
1869
1838
  }
1870
1839
  .requirements summary .title-text {
1871
- margin-inline-start: 2rem;
1840
+ margin-inline-start: 1.5rem;
1872
1841
  }
1873
1842
  .requirements summary::marker {
1874
1843
  font-size: 0.75rem;
@@ -1913,7 +1882,7 @@
1913
1882
  flex-direction: column;
1914
1883
  gap: 0.25rem;
1915
1884
  margin-block-start: 0.25rem;
1916
- margin-inline-start: 2rem;
1885
+ margin-inline-start: 1.5rem;
1917
1886
  }
1918
1887
 
1919
1888
  #file-count {
@@ -163,24 +163,28 @@ export class Uploader {
163
163
  }
164
164
  }
165
165
  handleProgressUpdate(mutationRecord) {
166
- if (this.inProgressFileEls.length !== 0) {
167
- const changeInUploadingFiles = this.prevUploadCount !== this.inProgressFileEls.length;
166
+ const uploadCount = this.inProgressFileEls.length;
167
+ if (uploadCount !== 0) {
168
+ const changeInUploadingFiles = this.prevUploadCount !== uploadCount;
168
169
  changeInUploadingFiles &&
169
- this.announce(uploaderMessages.getFilesUploading(this.inProgressFileEls.length), this.assertiveLiveRegionEl);
170
- this.notif = uploaderMessages.getFilesUploading(this.inProgressFileEls.length);
171
- this.prevUploadCount = this.inProgressFileEls.length;
170
+ this.announce(uploaderMessages.getFilesUploading(uploadCount), this.assertiveLiveRegionEl);
171
+ this.notif = uploaderMessages.getFilesUploading(uploadCount);
172
+ this.prevUploadCount = uploadCount;
173
+ if (this.batchCount < uploadCount) {
174
+ this.batchCount = uploadCount;
175
+ }
172
176
  if (!this.srProgress) {
173
177
  this.srProgress = setInterval(() => {
174
178
  const aggregate = this.fileEls.reduce((avg, item) => (item.progress ? avg + item.progress : avg), 0);
175
- this.announce(uploaderMessages.getUploadProgress(Math.floor(aggregate / this.batchCount)), this.assertiveLiveRegionEl);
179
+ const percentage = this.batchCount > 0 ? Math.floor(aggregate / this.batchCount) : 0;
180
+ this.announce(uploaderMessages.getUploadProgress(percentage), this.assertiveLiveRegionEl);
176
181
  }, 5000);
177
182
  }
178
183
  }
179
- else if (this.inProgressFileEls.length === 0 &&
180
- mutationRecord.oldValue &&
181
- parseInt(mutationRecord.oldValue) < 100) {
184
+ else if (uploadCount === 0 && mutationRecord.oldValue && parseInt(mutationRecord.oldValue) < 100) {
182
185
  // if final file progress completes
183
186
  this.uploadButtonEl.value = "";
187
+ this.batchCount = 0;
184
188
  this.notif = uploaderMessages.finishedUploading;
185
189
  this.announce(uploaderMessages.finishedUploading, this.assertiveLiveRegionEl);
186
190
  clearInterval(this.srProgress);
@@ -309,9 +313,9 @@ export class Uploader {
309
313
  return (h("div", { class: `drop-area -${this.dropArea}`, ref: (el) => (this.dropAreaEl = el), onDragEnter: (ev) => this.handleDragEnter(ev), onDragOver: (ev) => this.handleDragOver(ev), onDragLeave: (ev) => this.handleDragLeave(ev), onDrop: (ev) => this.handleDrop(ev) }, this.dropArea == "page" && (h("div", { ref: (el) => (this.dropOverlayEl = el), class: "drop-overlay", popover: "manual" }, h("span", { class: "upload-arrow" }), h("span", null, "Drop to Upload")))));
310
314
  }
311
315
  render() {
312
- return (h(Host, { key: 'b58548a627b616f7baf9e2218140583b42d2eeff', class: `-${this.dropArea}` }, this.uploaderType == "drop" && this.renderDropArea(), this.label && this.renderLabel(), this.renderHeader(), this.renderListContainer(), h("div", { key: '4325b5923dd0879157bd0d0370ff2e9011fc3e89', ref: (el) => (this.assertiveLiveRegionEl = el), class: "live-region sr-only", "aria-live": "assertive" // since it's directly linked to the action the user took, it should be read in priority. With polite, some messages get dismissed in favor of the page title
316
+ return (h(Host, { key: '480a7275b0ebb68564f92433c8c522769ce60bc3', class: `-${this.dropArea}` }, this.uploaderType == "drop" && this.renderDropArea(), this.label && this.renderLabel(), this.renderHeader(), this.renderListContainer(), h("div", { key: 'b2cec25d91186e5c8a8b7b851fe116bdfdd8c174', ref: (el) => (this.assertiveLiveRegionEl = el), class: "live-region sr-only", "aria-live": "assertive" // since it's directly linked to the action the user took, it should be read in priority. With polite, some messages get dismissed in favor of the page title
313
317
  ,
314
- "aria-atomic": "true" }), h("div", { key: '4431d6e65f0b13f02a1b91c35a4fae6953c95a97', ref: (el) => (this.politeLiveRegionEl = el), class: "live-region sr-only", "aria-live": "polite", "aria-atomic": "true" })));
318
+ "aria-atomic": "true" }), h("div", { key: 'eeb50c37630ba08df7e6be89ec30a55cefeafd9a', ref: (el) => (this.politeLiveRegionEl = el), class: "live-region sr-only", "aria-live": "polite", "aria-atomic": "true" })));
315
319
  }
316
320
  static get is() { return "wm-uploader"; }
317
321
  static get encapsulation() { return "shadow"; }
@@ -89,10 +89,10 @@ function handleFilesSelected(ev) {
89
89
  addFile(upl, newFile);
90
90
 
91
91
  // mock series of upload progress updates
92
- setTimeout(() => updateUploadProgress(upl, fileId, 25), 1000);
93
- setTimeout(() => updateUploadProgress(upl, fileId, 50), 3000 + uploadStagger);
94
- setTimeout(() => updateUploadProgress(upl, fileId, 75), 3250 + uploadStagger);
95
- setTimeout(() => updateUploadProgress(upl, fileId, 100), 3500 + uploadStagger);
92
+ setTimeout(() => updateUploadProgress(upl, fileId, 0.00), 1000 + 3000);
93
+ setTimeout(() => updateUploadProgress(upl, fileId, 25), 3000 + uploadStagger + 6000);
94
+ setTimeout(() => updateUploadProgress(upl, fileId, 75.5), 3250 + uploadStagger + 15000);
95
+ setTimeout(() => updateUploadProgress(upl, fileId, 100), 3500 + uploadStagger + 20000);
96
96
  } else {
97
97
  addError(upl, newFile, fileError);
98
98
  }
@@ -1,6 +1,6 @@
1
1
  import './index-130e07bb.js';
2
2
 
3
- const version = "5.19.0-alpha.9";
3
+ const version = "5.19.1-alpha.0";
4
4
 
5
5
  // PRINT RIPPLE VERSION IN CONSOLE
6
6
  // test envs return 0 for plugin.length
@@ -1,5 +1,5 @@
1
1
  import { h } from './index-130e07bb.js';
2
- import { i as intl, c as checkForActiveElInShadow, e as safeMultiplyFloat, f as getPosition } from './functions-669184a6.js';
2
+ import { i as intl, c as checkForActiveElInShadow, e as safeMultiplyFloat, f as getPosition } from './functions-38e392cb.js';
3
3
 
4
4
  const colors = {
5
5
  salmon: "#ff5f4e",
@@ -10585,4 +10585,4 @@ const weekdays = [
10585
10585
  intl.formatMessage({ id: "date.saturday", defaultMessage: "Saturday" }),
10586
10586
  ];
10587
10587
 
10588
- export { findPrev as A, getTextDir as B, isElOrChild as C, throttle as D, getContextMeasurements as E, dateFind as F, calendar_months as G, findParentWithHiddenOverflow as H, transposeMatrix as I, wrapAround as J, getSmallestSkipInterval as K, calcPercentageInRange as L, makeISO as M, getMonthLength as N, weekdays as O, handleDisabledAttribute as a, triggerFormSubmit as b, checkForActiveElInShadow as c, debounce as d, safeMultiplyFloat as e, getPosition as f, generateId as g, hideTooltip as h, intl as i, findAllScrollableParents as j, dateToISO as k, shouldOpenUp as l, hasRoomRight as m, truncateText as n, getLastFocusableDescendant as o, csvToArray as p, snakeCaseToCamelCase as q, getNewIndexToFocus as r, showTooltip as s, toBool as t, getCumulativeScrollOffset as u, shouldOpenDown as v, shouldShiftRight as w, shouldShiftLeft as x, measureText as y, findNext as z };
10588
+ export { findPrev as A, getTextDir as B, throttle as C, getContextMeasurements as D, dateFind as E, calendar_months as F, findParentWithHiddenOverflow as G, transposeMatrix as H, wrapAround as I, getSmallestSkipInterval as J, calcPercentageInRange as K, isElOrChild as L, makeISO as M, getMonthLength as N, weekdays as O, handleDisabledAttribute as a, triggerFormSubmit as b, checkForActiveElInShadow as c, debounce as d, safeMultiplyFloat as e, getPosition as f, generateId as g, hideTooltip as h, intl as i, findAllScrollableParents as j, dateToISO as k, shouldOpenUp as l, hasRoomRight as m, truncateText as n, getLastFocusableDescendant as o, csvToArray as p, snakeCaseToCamelCase as q, getNewIndexToFocus as r, showTooltip as s, toBool as t, getCumulativeScrollOffset as u, shouldOpenDown as v, shouldShiftRight as w, shouldShiftLeft as x, measureText as y, findNext as z };
@@ -1,4 +1,4 @@
1
- import { i as intl } from './functions-669184a6.js';
1
+ import { i as intl } from './functions-38e392cb.js';
2
2
 
3
3
  const globalMessages = {
4
4
  characterLimitReached: intl.formatMessage({