@vonage/vivid 4.9.0 → 4.10.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.
@@ -42,14 +42,6 @@ class DialPad extends FoundationElement {
42
42
  this._onDial = () => {
43
43
  this.callActive ? this.$emit("end-call") : this.$emit("dial");
44
44
  };
45
- /**
46
- *
47
- * @internal
48
- */
49
- this._deleteLastCharacter = () => {
50
- this.value = this.value.slice(0, -1);
51
- this.$emit("change");
52
- };
53
45
  }
54
46
  valueChanged(_oldValue, newValue) {
55
47
  if (newValue !== void 0 && newValue !== null && this._textFieldEl && newValue !== this._textFieldEl.value) {
@@ -152,6 +144,14 @@ function syncFieldAndPadValues(x) {
152
144
  function stopPropagation(_, { event: e }) {
153
145
  e.stopImmediatePropagation();
154
146
  }
147
+ function deleteLastCharacter(dialPad) {
148
+ dialPad.value = dialPad.value.slice(0, -1);
149
+ dialPad.$emit("input");
150
+ dialPad.$emit("change");
151
+ if (dialPad.value === "") {
152
+ dialPad._textFieldEl.focus();
153
+ }
154
+ }
155
155
  function renderTextField(textFieldTag, buttonTag) {
156
156
  return html`<${textFieldTag} ${ref(
157
157
  "_textFieldEl"
@@ -168,8 +168,13 @@ function renderTextField(textFieldTag, buttonTag) {
168
168
  ${when(
169
169
  (x) => x.value && x.value.length && x.value.length > 0,
170
170
  html`<${buttonTag}
171
- slot="action-items" size='super-condensed' icon="backspace-line" aria-label="${(x) => x.deleteAriaLabel || x.locale.dialPad.deleteLabel}"
172
- appearance='ghost' ?disabled="${(x) => x.disabled || x.callActive}" @click="${(x) => x._deleteLastCharacter()}">
171
+ slot="action-items"
172
+ size='super-condensed'
173
+ icon="backspace-line"
174
+ aria-label="${(x) => x.deleteAriaLabel || x.locale.dialPad.deleteLabel}"
175
+ appearance='ghost'
176
+ ?disabled="${(x) => x.disabled || x.callActive}"
177
+ @click="${(x) => deleteLastCharacter(x)}">
173
178
  </${buttonTag}>`
174
179
  )}
175
180
  </${textFieldTag}>`;
@@ -31,10 +31,13 @@ class Dialog extends index.FoundationElement {
31
31
  this.ariaLabel = null;
32
32
  this.dismissButtonAriaLabel = null;
33
33
  this.noLightDismiss = false;
34
+ this.noDismissOnEsc = false;
35
+ this.noDismissButton = false;
36
+ this.nonDismissible = false;
34
37
  this.modal = false;
35
38
  this._openedAsModal = false;
36
39
  this.#handleScrimClick = (event) => {
37
- if (event.target !== this.#dialog || this.noLightDismiss) {
40
+ if (event.target !== this.#dialog || !this.#isDismissibleVia("light-dismiss")) {
38
41
  return;
39
42
  }
40
43
  const rect = this.#dialog.getBoundingClientRect();
@@ -100,6 +103,22 @@ class Dialog extends index.FoundationElement {
100
103
  this.$emit("open", void 0, { bubbles: false });
101
104
  }
102
105
  }
106
+ get _showDismissButton() {
107
+ return this.#isDismissibleVia("dismiss-button");
108
+ }
109
+ #isDismissibleVia(method) {
110
+ if (this.nonDismissible) {
111
+ return false;
112
+ }
113
+ switch (method) {
114
+ case "escape":
115
+ return !this.noDismissOnEsc;
116
+ case "dismiss-button":
117
+ return !this.noDismissButton;
118
+ case "light-dismiss":
119
+ return !this.noLightDismiss;
120
+ }
121
+ }
103
122
  #handleScrimClick;
104
123
  #handleInternalFormSubmit;
105
124
  /**
@@ -107,7 +126,9 @@ class Dialog extends index.FoundationElement {
107
126
  */
108
127
  _onKeyDown(event) {
109
128
  if (index$1.handleEscapeKeyAndStopPropogation(event) && this._openedAsModal) {
110
- this._handleCloseRequest();
129
+ if (this.#isDismissibleVia("escape")) {
130
+ this._handleCloseRequest();
131
+ }
111
132
  return false;
112
133
  }
113
134
  return true;
@@ -199,6 +220,15 @@ __decorateClass([
199
220
  __decorateClass([
200
221
  index.attr({ attribute: "no-light-dismiss", mode: "boolean" })
201
222
  ], Dialog.prototype, "noLightDismiss");
223
+ __decorateClass([
224
+ index.attr({ attribute: "no-dismiss-on-esc", mode: "boolean" })
225
+ ], Dialog.prototype, "noDismissOnEsc");
226
+ __decorateClass([
227
+ index.attr({ attribute: "no-dismiss-button", mode: "boolean" })
228
+ ], Dialog.prototype, "noDismissButton");
229
+ __decorateClass([
230
+ index.attr({ attribute: "non-dismissible", mode: "boolean" })
231
+ ], Dialog.prototype, "nonDismissible");
202
232
  __decorateClass([
203
233
  index.attr({ mode: "boolean" })
204
234
  ], Dialog.prototype, "modal");
@@ -273,7 +303,7 @@ const DialogTemplate = (context) => {
273
303
  </slot>
274
304
  ${when.when((x) => x.headline, headline())}
275
305
  ${when.when((x) => x.subtitle, subtitle())}
276
- ${renderDismissButton(buttonTag)}
306
+ ${when.when((x) => x._showDismissButton, renderDismissButton(buttonTag))}
277
307
  </div>
278
308
  <div class="body ${(x) => x.fullWidthBody ? "full-width" : ""}" >
279
309
  <slot name="body" ${slotted.slotted("bodySlottedContent")}></slot>
@@ -29,10 +29,13 @@ class Dialog extends FoundationElement {
29
29
  this.ariaLabel = null;
30
30
  this.dismissButtonAriaLabel = null;
31
31
  this.noLightDismiss = false;
32
+ this.noDismissOnEsc = false;
33
+ this.noDismissButton = false;
34
+ this.nonDismissible = false;
32
35
  this.modal = false;
33
36
  this._openedAsModal = false;
34
37
  this.#handleScrimClick = (event) => {
35
- if (event.target !== this.#dialog || this.noLightDismiss) {
38
+ if (event.target !== this.#dialog || !this.#isDismissibleVia("light-dismiss")) {
36
39
  return;
37
40
  }
38
41
  const rect = this.#dialog.getBoundingClientRect();
@@ -98,6 +101,22 @@ class Dialog extends FoundationElement {
98
101
  this.$emit("open", void 0, { bubbles: false });
99
102
  }
100
103
  }
104
+ get _showDismissButton() {
105
+ return this.#isDismissibleVia("dismiss-button");
106
+ }
107
+ #isDismissibleVia(method) {
108
+ if (this.nonDismissible) {
109
+ return false;
110
+ }
111
+ switch (method) {
112
+ case "escape":
113
+ return !this.noDismissOnEsc;
114
+ case "dismiss-button":
115
+ return !this.noDismissButton;
116
+ case "light-dismiss":
117
+ return !this.noLightDismiss;
118
+ }
119
+ }
101
120
  #handleScrimClick;
102
121
  #handleInternalFormSubmit;
103
122
  /**
@@ -105,7 +124,9 @@ class Dialog extends FoundationElement {
105
124
  */
106
125
  _onKeyDown(event) {
107
126
  if (handleEscapeKeyAndStopPropogation(event) && this._openedAsModal) {
108
- this._handleCloseRequest();
127
+ if (this.#isDismissibleVia("escape")) {
128
+ this._handleCloseRequest();
129
+ }
109
130
  return false;
110
131
  }
111
132
  return true;
@@ -197,6 +218,15 @@ __decorateClass([
197
218
  __decorateClass([
198
219
  attr({ attribute: "no-light-dismiss", mode: "boolean" })
199
220
  ], Dialog.prototype, "noLightDismiss");
221
+ __decorateClass([
222
+ attr({ attribute: "no-dismiss-on-esc", mode: "boolean" })
223
+ ], Dialog.prototype, "noDismissOnEsc");
224
+ __decorateClass([
225
+ attr({ attribute: "no-dismiss-button", mode: "boolean" })
226
+ ], Dialog.prototype, "noDismissButton");
227
+ __decorateClass([
228
+ attr({ attribute: "non-dismissible", mode: "boolean" })
229
+ ], Dialog.prototype, "nonDismissible");
200
230
  __decorateClass([
201
231
  attr({ mode: "boolean" })
202
232
  ], Dialog.prototype, "modal");
@@ -271,7 +301,7 @@ const DialogTemplate = (context) => {
271
301
  </slot>
272
302
  ${when((x) => x.headline, headline())}
273
303
  ${when((x) => x.subtitle, subtitle())}
274
- ${renderDismissButton(buttonTag)}
304
+ ${when((x) => x._showDismissButton, renderDismissButton(buttonTag))}
275
305
  </div>
276
306
  <div class="body ${(x) => x.fullWidthBody ? "full-width" : ""}" >
277
307
  <slot name="body" ${slotted("bodySlottedContent")}></slot>
@@ -1,62 +1,43 @@
1
1
  'use strict';
2
2
 
3
3
  const index = require('./index.cjs');
4
- const aria = require('./aria2.cjs');
4
+ const aria = require('./aria.cjs');
5
5
  const classNames = require('./class-names.cjs');
6
6
 
7
- /**
8
- * Divider roles
9
- * @public
10
- */
11
- const DividerRole = {
12
- /**
13
- * The divider semantically separates content
14
- */
15
- separator: "separator",
16
- /**
17
- * The divider has no semantic value and is for visual presentation only.
18
- */
19
- presentation: "presentation",
20
- };
21
-
22
- /**
23
- * A Divider Custom HTML Element.
24
- * Implements the {@link https://www.w3.org/TR/wai-aria-1.1/#separator | ARIA separator } or {@link https://www.w3.org/TR/wai-aria-1.1/#presentation | ARIA presentation}.
25
- *
26
- * @public
27
- */
28
- let Divider$1 = class Divider extends index.FoundationElement {
29
- constructor() {
30
- super(...arguments);
31
- /**
32
- * The role of the element.
33
- *
34
- * @public
35
- * @remarks
36
- * HTML Attribute: role
37
- */
38
- this.role = DividerRole.separator;
39
- /**
40
- * The orientation of the divider.
41
- *
42
- * @public
43
- * @remarks
44
- * HTML Attribute: orientation
45
- */
46
- this.orientation = aria.Orientation.horizontal;
47
- }
48
- };
49
- index.__decorate([
50
- index.attr
51
- ], Divider$1.prototype, "role", void 0);
52
- index.__decorate([
53
- index.attr
54
- ], Divider$1.prototype, "orientation", void 0);
55
-
56
7
  const styles = ":host{display:block}.base{display:block;background-color:var(--vvd-color-neutral-200)}.base:not(.vertical){block-size:1px;inline-size:100%}.base.vertical{block-size:100%;inline-size:1px}";
57
8
 
58
- class Divider extends Divider$1 {
9
+ var __defProp = Object.defineProperty;
10
+ var __decorateClass = (decorators, target, key, kind) => {
11
+ var result = void 0 ;
12
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
13
+ if (decorator = decorators[i])
14
+ result = (decorator(target, key, result) ) || result;
15
+ if (result) __defProp(target, key, result);
16
+ return result;
17
+ };
18
+ const DividerRole = {
19
+ /**
20
+ * The divider semantically separates content
21
+ */
22
+ separator: "separator",
23
+ /**
24
+ * The divider has no semantic value and is for visual presentation only.
25
+ */
26
+ presentation: "presentation"
27
+ };
28
+ class Divider extends index.FoundationElement {
29
+ constructor() {
30
+ super(...arguments);
31
+ this.role = DividerRole.separator;
32
+ this.orientation = aria.Orientation.horizontal;
33
+ }
59
34
  }
35
+ __decorateClass([
36
+ index.attr
37
+ ], Divider.prototype, "role");
38
+ __decorateClass([
39
+ index.attr
40
+ ], Divider.prototype, "orientation");
60
41
 
61
42
  const getClasses = ({ orientation }) => classNames.classNames("base", [`${orientation}`, Boolean(orientation)]);
62
43
  const DividerTemplate = () => index.html` <span
@@ -1,60 +1,41 @@
1
- import { F as FoundationElement, _ as __decorate, a as attr, h as html, r as registerFactory } from './index.js';
2
- import { O as Orientation } from './aria2.js';
1
+ import { F as FoundationElement, a as attr, h as html, r as registerFactory } from './index.js';
2
+ import { O as Orientation } from './aria.js';
3
3
  import { c as classNames } from './class-names.js';
4
4
 
5
- /**
6
- * Divider roles
7
- * @public
8
- */
9
- const DividerRole = {
10
- /**
11
- * The divider semantically separates content
12
- */
13
- separator: "separator",
14
- /**
15
- * The divider has no semantic value and is for visual presentation only.
16
- */
17
- presentation: "presentation",
18
- };
19
-
20
- /**
21
- * A Divider Custom HTML Element.
22
- * Implements the {@link https://www.w3.org/TR/wai-aria-1.1/#separator | ARIA separator } or {@link https://www.w3.org/TR/wai-aria-1.1/#presentation | ARIA presentation}.
23
- *
24
- * @public
25
- */
26
- let Divider$1 = class Divider extends FoundationElement {
27
- constructor() {
28
- super(...arguments);
29
- /**
30
- * The role of the element.
31
- *
32
- * @public
33
- * @remarks
34
- * HTML Attribute: role
35
- */
36
- this.role = DividerRole.separator;
37
- /**
38
- * The orientation of the divider.
39
- *
40
- * @public
41
- * @remarks
42
- * HTML Attribute: orientation
43
- */
44
- this.orientation = Orientation.horizontal;
45
- }
46
- };
47
- __decorate([
48
- attr
49
- ], Divider$1.prototype, "role", void 0);
50
- __decorate([
51
- attr
52
- ], Divider$1.prototype, "orientation", void 0);
53
-
54
5
  const styles = ":host{display:block}.base{display:block;background-color:var(--vvd-color-neutral-200)}.base:not(.vertical){block-size:1px;inline-size:100%}.base.vertical{block-size:100%;inline-size:1px}";
55
6
 
56
- class Divider extends Divider$1 {
7
+ var __defProp = Object.defineProperty;
8
+ var __decorateClass = (decorators, target, key, kind) => {
9
+ var result = void 0 ;
10
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
11
+ if (decorator = decorators[i])
12
+ result = (decorator(target, key, result) ) || result;
13
+ if (result) __defProp(target, key, result);
14
+ return result;
15
+ };
16
+ const DividerRole = {
17
+ /**
18
+ * The divider semantically separates content
19
+ */
20
+ separator: "separator",
21
+ /**
22
+ * The divider has no semantic value and is for visual presentation only.
23
+ */
24
+ presentation: "presentation"
25
+ };
26
+ class Divider extends FoundationElement {
27
+ constructor() {
28
+ super(...arguments);
29
+ this.role = DividerRole.separator;
30
+ this.orientation = Orientation.horizontal;
31
+ }
57
32
  }
33
+ __decorateClass([
34
+ attr
35
+ ], Divider.prototype, "role");
36
+ __decorateClass([
37
+ attr
38
+ ], Divider.prototype, "orientation");
58
39
 
59
40
  const getClasses = ({ orientation }) => classNames("base", [`${orientation}`, Boolean(orientation)]);
60
41
  const DividerTemplate = () => html` <span
@@ -571,7 +571,7 @@ index.__decorate([
571
571
  index.observable
572
572
  ], Menu$1.prototype, "items", void 0);
573
573
 
574
- const styles = ":host(:focus-visible){outline:none}:host([disabled]){pointer-events:none}.base{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.base:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:where(.active,:active):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.base:where(.selected):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.base:where(.selected):where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-dim);--_appearance-color-outline: transparent}.base.connotation-cta{--_connotation-color-primary: var(--vvd-menu-item-cta-primary, var(--vvd-color-cta-500));--_connotation-color-primary-text: var(--vvd-menu-item-cta-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-menu-item-cta-primary-increment, var(--vvd-color-cta-600));--_connotation-color-firm: var(--vvd-menu-item-cta-firm, var(--vvd-color-cta-600));--_connotation-color-faint: var(--vvd-menu-item-cta-faint, var(--vvd-color-cta-50));--_connotation-color-soft: var(--vvd-menu-item-cta-soft, var(--vvd-color-cta-100));--_connotation-color-pale: var(--vvd-menu-item-cta-pale, var(--vvd-color-cta-300));--_connotation-color-dim: var(--vvd-menu-item-cta-dim, var(--vvd-color-cta-200))}.base:not(.connotation-cta){--_connotation-color-primary: var(--vvd-menu-item-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-menu-item-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-menu-item-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-firm: var(--vvd-menu-item-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-faint: var(--vvd-menu-item-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-menu-item-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-pale: var(--vvd-menu-item-accent-pale, var(--vvd-color-neutral-300));--_connotation-color-dim: var(--vvd-menu-item-accent-dim, var(--vvd-color-neutral-200))}.base{display:flex;box-sizing:border-box;align-items:center;background-color:var(--_appearance-color-fill);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);inline-size:100%}.base:not(.two-lines){gap:12px;min-block-size:calc(1px*(40 + 4*clamp(-1,var(--vvd-size-density, 0),2)));padding-block:8px;padding-inline:12px}.base.two-lines{padding:12px;gap:16px;min-block-size:calc(1px*(40 + 4*clamp(-1,var(--vvd-size-density, 0),2)) + 1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2)))}@supports (user-select: none){.base{user-select:none}}.base:not(.disabled){cursor:pointer}:host(:not([role=presentation]):focus-visible) .base{box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent;border-radius:8px}.icon{flex-shrink:0;font-size:calc(1px*(40 + 4*clamp(-1,var(--vvd-size-density, 0),2))/2);line-height:1}.action,.decorative{display:flex;place-content:center}.action{color:var(--_appearance-color-text)}.base.trailing .action,.base.has-meta .action{order:2}:host(:not([check-appearance],[aria-checked=true],[disabled])) .action{color:var(--vvd-color-neutral-500)}.base:not(.disabled) .decorative{color:var(--vvd-color-neutral-600)}.base.disabled .decorative{color:var(--vvd-color-neutral-200)}.base.has-meta .decorative{order:1}.chevron{order:3}.text{display:flex;overflow:hidden;flex-direction:column;gap:4px;margin-inline-end:auto}.text-primary,.text-secondary{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;font:var(--vvd-typography-base)}.text-primary{font:var(--vvd-typography-base);-webkit-line-clamp:var(--text-primary-line-clamp, 1)}.base:not(.disabled) .text-primary{color:var(--vvd-color-canvas-text)}.base.disabled .text-primary{color:var(--_appearance-color-text)}.base.two-lines .text-primary{font:var(--vvd-typography-base-bold)}.text-secondary{color:var(--vvd-color-neutral-800);font:var(--vvd-typography-base-condensed);-webkit-line-clamp:var(--text-secondary-line-clamp, 1)}.base.two-lines .text-secondary{color:var(--vvd-color-neutral-600)}.base.disabled .text-secondary{color:var(--_appearance-color-text)}.base.selected:not(.disabled) .text-secondary{color:var(--vvd-color-neutral-800)}";
574
+ const styles = ":host(:focus-visible){outline:none}:host([disabled]){pointer-events:none}.base{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.base:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:where(.active,:active):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.base:where(.selected):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.base:where(.selected):where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-dim);--_appearance-color-outline: transparent}.base.connotation-cta{--_connotation-color-primary: var(--vvd-menu-item-cta-primary, var(--vvd-color-cta-500));--_connotation-color-primary-text: var(--vvd-menu-item-cta-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-menu-item-cta-primary-increment, var(--vvd-color-cta-600));--_connotation-color-firm: var(--vvd-menu-item-cta-firm, var(--vvd-color-cta-600));--_connotation-color-faint: var(--vvd-menu-item-cta-faint, var(--vvd-color-cta-50));--_connotation-color-soft: var(--vvd-menu-item-cta-soft, var(--vvd-color-cta-100));--_connotation-color-pale: var(--vvd-menu-item-cta-pale, var(--vvd-color-cta-300));--_connotation-color-dim: var(--vvd-menu-item-cta-dim, var(--vvd-color-cta-200))}.base:not(.connotation-cta){--_connotation-color-primary: var(--vvd-menu-item-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-menu-item-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-menu-item-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-firm: var(--vvd-menu-item-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-faint: var(--vvd-menu-item-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-menu-item-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-pale: var(--vvd-menu-item-accent-pale, var(--vvd-color-neutral-300));--_connotation-color-dim: var(--vvd-menu-item-accent-dim, var(--vvd-color-neutral-200))}.base{display:flex;box-sizing:border-box;align-items:center;background-color:var(--_appearance-color-fill);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);inline-size:100%}.base:not(.two-lines){gap:12px;min-block-size:calc(1px*(40 + 4*clamp(-1,var(--vvd-size-density, 0),2)));padding-block:8px;padding-inline:12px}.base.two-lines{padding:12px;gap:16px;min-block-size:calc(1px*(40 + 4*clamp(-1,var(--vvd-size-density, 0),2)) + 1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2)))}@supports (user-select: none){.base{user-select:none}}.base:not(.disabled){cursor:pointer}:host(:not([role=presentation]):focus-visible) .base{box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent}.icon{flex-shrink:0;font-size:calc(1px*(40 + 4*clamp(-1,var(--vvd-size-density, 0),2))/2);line-height:1}.action,.decorative{display:flex;place-content:center}.action{color:var(--_appearance-color-text)}.base.trailing .action,.base.has-meta .action{order:2}:host(:not([check-appearance],[aria-checked=true],[disabled])) .action{color:var(--vvd-color-neutral-500)}.base:not(.disabled) .decorative{color:var(--vvd-color-neutral-600)}.base.disabled .decorative{color:var(--vvd-color-neutral-200)}.base.has-meta .decorative{order:1}.chevron{order:3}.text{display:flex;overflow:hidden;flex-direction:column;gap:4px;margin-inline-end:auto}.text-primary,.text-secondary{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;font:var(--vvd-typography-base)}.text-primary{font:var(--vvd-typography-base);-webkit-line-clamp:var(--text-primary-line-clamp, 1)}.base:not(.disabled) .text-primary{color:var(--vvd-color-canvas-text)}.base.disabled .text-primary{color:var(--_appearance-color-text)}.base.two-lines .text-primary{font:var(--vvd-typography-base-bold)}.text-secondary{color:var(--vvd-color-neutral-800);font:var(--vvd-typography-base-condensed);-webkit-line-clamp:var(--text-secondary-line-clamp, 1)}.base.two-lines .text-secondary{color:var(--vvd-color-neutral-600)}.base.disabled .text-secondary{color:var(--_appearance-color-text)}.base.selected:not(.disabled) .text-secondary{color:var(--vvd-color-neutral-800)}";
575
575
 
576
576
  var __defProp$1 = Object.defineProperty;
577
577
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -569,7 +569,7 @@ __decorate([
569
569
  observable
570
570
  ], Menu$1.prototype, "items", void 0);
571
571
 
572
- const styles = ":host(:focus-visible){outline:none}:host([disabled]){pointer-events:none}.base{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.base:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:where(.active,:active):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.base:where(.selected):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.base:where(.selected):where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-dim);--_appearance-color-outline: transparent}.base.connotation-cta{--_connotation-color-primary: var(--vvd-menu-item-cta-primary, var(--vvd-color-cta-500));--_connotation-color-primary-text: var(--vvd-menu-item-cta-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-menu-item-cta-primary-increment, var(--vvd-color-cta-600));--_connotation-color-firm: var(--vvd-menu-item-cta-firm, var(--vvd-color-cta-600));--_connotation-color-faint: var(--vvd-menu-item-cta-faint, var(--vvd-color-cta-50));--_connotation-color-soft: var(--vvd-menu-item-cta-soft, var(--vvd-color-cta-100));--_connotation-color-pale: var(--vvd-menu-item-cta-pale, var(--vvd-color-cta-300));--_connotation-color-dim: var(--vvd-menu-item-cta-dim, var(--vvd-color-cta-200))}.base:not(.connotation-cta){--_connotation-color-primary: var(--vvd-menu-item-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-menu-item-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-menu-item-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-firm: var(--vvd-menu-item-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-faint: var(--vvd-menu-item-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-menu-item-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-pale: var(--vvd-menu-item-accent-pale, var(--vvd-color-neutral-300));--_connotation-color-dim: var(--vvd-menu-item-accent-dim, var(--vvd-color-neutral-200))}.base{display:flex;box-sizing:border-box;align-items:center;background-color:var(--_appearance-color-fill);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);inline-size:100%}.base:not(.two-lines){gap:12px;min-block-size:calc(1px*(40 + 4*clamp(-1,var(--vvd-size-density, 0),2)));padding-block:8px;padding-inline:12px}.base.two-lines{padding:12px;gap:16px;min-block-size:calc(1px*(40 + 4*clamp(-1,var(--vvd-size-density, 0),2)) + 1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2)))}@supports (user-select: none){.base{user-select:none}}.base:not(.disabled){cursor:pointer}:host(:not([role=presentation]):focus-visible) .base{box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent;border-radius:8px}.icon{flex-shrink:0;font-size:calc(1px*(40 + 4*clamp(-1,var(--vvd-size-density, 0),2))/2);line-height:1}.action,.decorative{display:flex;place-content:center}.action{color:var(--_appearance-color-text)}.base.trailing .action,.base.has-meta .action{order:2}:host(:not([check-appearance],[aria-checked=true],[disabled])) .action{color:var(--vvd-color-neutral-500)}.base:not(.disabled) .decorative{color:var(--vvd-color-neutral-600)}.base.disabled .decorative{color:var(--vvd-color-neutral-200)}.base.has-meta .decorative{order:1}.chevron{order:3}.text{display:flex;overflow:hidden;flex-direction:column;gap:4px;margin-inline-end:auto}.text-primary,.text-secondary{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;font:var(--vvd-typography-base)}.text-primary{font:var(--vvd-typography-base);-webkit-line-clamp:var(--text-primary-line-clamp, 1)}.base:not(.disabled) .text-primary{color:var(--vvd-color-canvas-text)}.base.disabled .text-primary{color:var(--_appearance-color-text)}.base.two-lines .text-primary{font:var(--vvd-typography-base-bold)}.text-secondary{color:var(--vvd-color-neutral-800);font:var(--vvd-typography-base-condensed);-webkit-line-clamp:var(--text-secondary-line-clamp, 1)}.base.two-lines .text-secondary{color:var(--vvd-color-neutral-600)}.base.disabled .text-secondary{color:var(--_appearance-color-text)}.base.selected:not(.disabled) .text-secondary{color:var(--vvd-color-neutral-800)}";
572
+ const styles = ":host(:focus-visible){outline:none}:host([disabled]){pointer-events:none}.base{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.base:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:where(.active,:active):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.base:where(.selected):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.base:where(.selected):where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-dim);--_appearance-color-outline: transparent}.base.connotation-cta{--_connotation-color-primary: var(--vvd-menu-item-cta-primary, var(--vvd-color-cta-500));--_connotation-color-primary-text: var(--vvd-menu-item-cta-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-menu-item-cta-primary-increment, var(--vvd-color-cta-600));--_connotation-color-firm: var(--vvd-menu-item-cta-firm, var(--vvd-color-cta-600));--_connotation-color-faint: var(--vvd-menu-item-cta-faint, var(--vvd-color-cta-50));--_connotation-color-soft: var(--vvd-menu-item-cta-soft, var(--vvd-color-cta-100));--_connotation-color-pale: var(--vvd-menu-item-cta-pale, var(--vvd-color-cta-300));--_connotation-color-dim: var(--vvd-menu-item-cta-dim, var(--vvd-color-cta-200))}.base:not(.connotation-cta){--_connotation-color-primary: var(--vvd-menu-item-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-menu-item-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-menu-item-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-firm: var(--vvd-menu-item-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-faint: var(--vvd-menu-item-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-menu-item-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-pale: var(--vvd-menu-item-accent-pale, var(--vvd-color-neutral-300));--_connotation-color-dim: var(--vvd-menu-item-accent-dim, var(--vvd-color-neutral-200))}.base{display:flex;box-sizing:border-box;align-items:center;background-color:var(--_appearance-color-fill);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);inline-size:100%}.base:not(.two-lines){gap:12px;min-block-size:calc(1px*(40 + 4*clamp(-1,var(--vvd-size-density, 0),2)));padding-block:8px;padding-inline:12px}.base.two-lines{padding:12px;gap:16px;min-block-size:calc(1px*(40 + 4*clamp(-1,var(--vvd-size-density, 0),2)) + 1px*(24 + 4*clamp(-1,var(--vvd-size-density, 0),2)))}@supports (user-select: none){.base{user-select:none}}.base:not(.disabled){cursor:pointer}:host(:not([role=presentation]):focus-visible) .base{box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent}.icon{flex-shrink:0;font-size:calc(1px*(40 + 4*clamp(-1,var(--vvd-size-density, 0),2))/2);line-height:1}.action,.decorative{display:flex;place-content:center}.action{color:var(--_appearance-color-text)}.base.trailing .action,.base.has-meta .action{order:2}:host(:not([check-appearance],[aria-checked=true],[disabled])) .action{color:var(--vvd-color-neutral-500)}.base:not(.disabled) .decorative{color:var(--vvd-color-neutral-600)}.base.disabled .decorative{color:var(--vvd-color-neutral-200)}.base.has-meta .decorative{order:1}.chevron{order:3}.text{display:flex;overflow:hidden;flex-direction:column;gap:4px;margin-inline-end:auto}.text-primary,.text-secondary{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;font:var(--vvd-typography-base)}.text-primary{font:var(--vvd-typography-base);-webkit-line-clamp:var(--text-primary-line-clamp, 1)}.base:not(.disabled) .text-primary{color:var(--vvd-color-canvas-text)}.base.disabled .text-primary{color:var(--_appearance-color-text)}.base.two-lines .text-primary{font:var(--vvd-typography-base-bold)}.text-secondary{color:var(--vvd-color-neutral-800);font:var(--vvd-typography-base-condensed);-webkit-line-clamp:var(--text-secondary-line-clamp, 1)}.base.two-lines .text-secondary{color:var(--vvd-color-neutral-600)}.base.disabled .text-secondary{color:var(--_appearance-color-text)}.base.selected:not(.disabled) .text-secondary{color:var(--vvd-color-neutral-800)}";
573
573
 
574
574
  var __defProp$1 = Object.defineProperty;
575
575
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -8,7 +8,7 @@ const index$1 = require('./index2.cjs');
8
8
  const slotted = require('./slotted.cjs');
9
9
  const classNames = require('./class-names.cjs');
10
10
 
11
- const styles = ":host{display:var(--_popup-display, inline)}:host([slotted-anchor]){--_popup-display: contents}.base{display:flex;overflow:hidden auto;box-sizing:border-box;flex-direction:column;gap:8px;inline-size:max-content;max-block-size:var(--menu-block-size, 408px);max-inline-size:var(--menu-max-inline-size);min-inline-size:var(--menu-min-inline-size);padding-block:8px}::slotted(a){color:var(--vvd-color-canvas-text);text-decoration:none}::slotted(a[role=menuitem]:focus-visible){box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent;display:block;border-radius:8px}.header{padding-block-start:4px;padding-inline:12px}.hide-header .header{display:none}.body{display:flex;flex-direction:column;row-gap:1px}.hide-body .body{display:none}.action-items{display:flex;justify-content:flex-end;gap:8px;padding-block-end:4px;padding-inline:12px}.hide-actions .action-items{display:none}";
11
+ const styles = ":host{display:var(--_popup-display, inline)}:host([slotted-anchor]){--_popup-display: contents}.base{display:flex;overflow:hidden auto;box-sizing:border-box;flex-direction:column;gap:8px;inline-size:max-content;max-block-size:var(--menu-block-size, 408px);max-inline-size:var(--menu-max-inline-size);min-inline-size:var(--menu-min-inline-size);padding-block:8px}::slotted(a){color:var(--vvd-color-canvas-text);text-decoration:none}::slotted(a[role=menuitem]:focus-visible){box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent;display:block}.header{padding-block-start:4px;padding-inline:12px}.hide-header .header{display:none}.body{display:flex;flex-direction:column;row-gap:1px}.hide-body .body{display:none}.action-items{display:flex;justify-content:flex-end;gap:8px;padding-block-end:4px;padding-inline:12px}.hide-actions .action-items{display:none}";
12
12
 
13
13
  const getClasses = ({
14
14
  headerSlottedContent,
@@ -6,7 +6,7 @@ import { h as handleEscapeKeyAndStopPropogation } from './index2.js';
6
6
  import { s as slotted } from './slotted.js';
7
7
  import { c as classNames } from './class-names.js';
8
8
 
9
- const styles = ":host{display:var(--_popup-display, inline)}:host([slotted-anchor]){--_popup-display: contents}.base{display:flex;overflow:hidden auto;box-sizing:border-box;flex-direction:column;gap:8px;inline-size:max-content;max-block-size:var(--menu-block-size, 408px);max-inline-size:var(--menu-max-inline-size);min-inline-size:var(--menu-min-inline-size);padding-block:8px}::slotted(a){color:var(--vvd-color-canvas-text);text-decoration:none}::slotted(a[role=menuitem]:focus-visible){box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent;display:block;border-radius:8px}.header{padding-block-start:4px;padding-inline:12px}.hide-header .header{display:none}.body{display:flex;flex-direction:column;row-gap:1px}.hide-body .body{display:none}.action-items{display:flex;justify-content:flex-end;gap:8px;padding-block-end:4px;padding-inline:12px}.hide-actions .action-items{display:none}";
9
+ const styles = ":host{display:var(--_popup-display, inline)}:host([slotted-anchor]){--_popup-display: contents}.base{display:flex;overflow:hidden auto;box-sizing:border-box;flex-direction:column;gap:8px;inline-size:max-content;max-block-size:var(--menu-block-size, 408px);max-inline-size:var(--menu-max-inline-size);min-inline-size:var(--menu-min-inline-size);padding-block:8px}::slotted(a){color:var(--vvd-color-canvas-text);text-decoration:none}::slotted(a[role=menuitem]:focus-visible){box-shadow:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - var(--focus-inset, 0px));--focus-stroke-gap-color: transparent;display:block}.header{padding-block-start:4px;padding-inline:12px}.hide-header .header{display:none}.body{display:flex;flex-direction:column;row-gap:1px}.hide-body .body{display:none}.action-items{display:flex;justify-content:flex-end;gap:8px;padding-block-end:4px;padding-inline:12px}.hide-actions .action-items{display:none}";
10
10
 
11
11
  const getClasses = ({
12
12
  headerSlottedContent,
@@ -319,7 +319,7 @@ const AudioPlayerTemplate = (context) => {
319
319
  ${when.when(
320
320
  (x) => Boolean(x.playbackRates),
321
321
  index.html`
322
- <${menuTag} class="playback-rates" trigger="auto" placement="top-start" auto-dismiss id="playback-menu">
322
+ <${menuTag} class="playback-rates" trigger="auto" placement="top-start" auto-dismiss id="playback-menu" position-strategy="absolute">
323
323
  <${buttonTag} id="playback-open-button"
324
324
  class="playback-button"
325
325
  slot="anchor"
@@ -317,7 +317,7 @@ const AudioPlayerTemplate = (context) => {
317
317
  ${when(
318
318
  (x) => Boolean(x.playbackRates),
319
319
  html`
320
- <${menuTag} class="playback-rates" trigger="auto" placement="top-start" auto-dismiss id="playback-menu">
320
+ <${menuTag} class="playback-rates" trigger="auto" placement="top-start" auto-dismiss id="playback-menu" position-strategy="absolute">
321
321
  <${buttonTag} id="playback-open-button"
322
322
  class="playback-button"
323
323
  slot="anchor"
@@ -189,6 +189,7 @@ exports.TextField = class TextField extends textField.TextField {
189
189
  __privateGet(this, _reflectToInput).attribute("size", "size");
190
190
  __privateGet(this, _reflectToInput).attribute("autoComplete", "autocomplete");
191
191
  __privateGet(this, _reflectToInput).attribute("type", "type");
192
+ __privateGet(this, _reflectToInput).attribute("inputMode", "inputmode");
192
193
  __privateGet(this, _reflectToInput).attribute("ariaAtomic", "aria-atomic");
193
194
  __privateGet(this, _reflectToInput).attribute("ariaBusy", "aria-busy");
194
195
  __privateGet(this, _reflectToInput).attribute("ariaCurrent", "aria-current");
@@ -294,6 +295,9 @@ __decorateClass([
294
295
  __decorateClass([
295
296
  index.attr()
296
297
  ], exports.TextField.prototype, "scale", 2);
298
+ __decorateClass([
299
+ index.attr({ attribute: "inputmode" })
300
+ ], exports.TextField.prototype, "inputMode", 2);
297
301
  __decorateClass([
298
302
  index.observable
299
303
  ], exports.TextField.prototype, "actionItemsSlottedContent", 2);
@@ -187,6 +187,7 @@ let TextField = class extends TextField$1 {
187
187
  __privateGet(this, _reflectToInput).attribute("size", "size");
188
188
  __privateGet(this, _reflectToInput).attribute("autoComplete", "autocomplete");
189
189
  __privateGet(this, _reflectToInput).attribute("type", "type");
190
+ __privateGet(this, _reflectToInput).attribute("inputMode", "inputmode");
190
191
  __privateGet(this, _reflectToInput).attribute("ariaAtomic", "aria-atomic");
191
192
  __privateGet(this, _reflectToInput).attribute("ariaBusy", "aria-busy");
192
193
  __privateGet(this, _reflectToInput).attribute("ariaCurrent", "aria-current");
@@ -292,6 +293,9 @@ __decorateClass([
292
293
  __decorateClass([
293
294
  attr()
294
295
  ], TextField.prototype, "scale", 2);
296
+ __decorateClass([
297
+ attr({ attribute: "inputmode" })
298
+ ], TextField.prototype, "inputMode", 2);
295
299
  __decorateClass([
296
300
  observable
297
301
  ], TextField.prototype, "actionItemsSlottedContent", 2);
package/shared/icon.cjs CHANGED
@@ -196,22 +196,28 @@ const extractSvg = (response) => {
196
196
  assertIsValidResponse(response);
197
197
  return response.text();
198
198
  };
199
- const loadSvg = (iconId) => fetch(baseUrlTemplate([iconId, "svg"].join("."), ICONS_VERSION)).then(
200
- extractSvg
201
- );
199
+ const loadSvg = (iconId, signal) => fetch(baseUrlTemplate([iconId, "svg"].join("."), ICONS_VERSION), {
200
+ signal
201
+ }).then(extractSvg);
202
202
  const resolveIcon = memoizeWith(
203
203
  identity,
204
- (iconId = "") => iconId.trim() ? loadSvg(iconId) : Promise.resolve("")
204
+ (iconId, signal) => iconId.trim() ? loadSvg(iconId, signal) : Promise.resolve("")
205
205
  );
206
206
  class Icon extends index.FoundationElement {
207
207
  constructor() {
208
208
  super(...arguments);
209
209
  this.iconLoaded = false;
210
+ this.#abortController = null;
210
211
  }
211
212
  get iconUrl() {
212
213
  return !this.name ? this._svg : baseUrlTemplate(`${this.name}.svg`, ICONS_VERSION);
213
214
  }
215
+ #abortController;
214
216
  async nameChanged() {
217
+ if (this.#abortController) {
218
+ this.#abortController.abort();
219
+ }
220
+ this.#abortController = new AbortController();
215
221
  this._svg = void 0;
216
222
  this.iconLoaded = false;
217
223
  let timeout = setTimeout(() => {
@@ -222,7 +228,7 @@ class Icon extends index.FoundationElement {
222
228
  }
223
229
  }, PLACEHOLDER_TIMEOUT);
224
230
  }, PLACEHOLDER_DELAY);
225
- await resolveIcon(this.name).then((svg) => {
231
+ await resolveIcon(this.name ? this.name : "", this.#abortController.signal).then((svg) => {
226
232
  this._svg = svg;
227
233
  }).catch(() => {
228
234
  this._svg = void 0;
package/shared/icon.js CHANGED
@@ -194,22 +194,28 @@ const extractSvg = (response) => {
194
194
  assertIsValidResponse(response);
195
195
  return response.text();
196
196
  };
197
- const loadSvg = (iconId) => fetch(baseUrlTemplate([iconId, "svg"].join("."), ICONS_VERSION)).then(
198
- extractSvg
199
- );
197
+ const loadSvg = (iconId, signal) => fetch(baseUrlTemplate([iconId, "svg"].join("."), ICONS_VERSION), {
198
+ signal
199
+ }).then(extractSvg);
200
200
  const resolveIcon = memoizeWith(
201
201
  identity,
202
- (iconId = "") => iconId.trim() ? loadSvg(iconId) : Promise.resolve("")
202
+ (iconId, signal) => iconId.trim() ? loadSvg(iconId, signal) : Promise.resolve("")
203
203
  );
204
204
  class Icon extends FoundationElement {
205
205
  constructor() {
206
206
  super(...arguments);
207
207
  this.iconLoaded = false;
208
+ this.#abortController = null;
208
209
  }
209
210
  get iconUrl() {
210
211
  return !this.name ? this._svg : baseUrlTemplate(`${this.name}.svg`, ICONS_VERSION);
211
212
  }
213
+ #abortController;
212
214
  async nameChanged() {
215
+ if (this.#abortController) {
216
+ this.#abortController.abort();
217
+ }
218
+ this.#abortController = new AbortController();
213
219
  this._svg = void 0;
214
220
  this.iconLoaded = false;
215
221
  let timeout = setTimeout(() => {
@@ -220,7 +226,7 @@ class Icon extends FoundationElement {
220
226
  }
221
227
  }, PLACEHOLDER_TIMEOUT);
222
228
  }, PLACEHOLDER_DELAY);
223
- await resolveIcon(this.name).then((svg) => {
229
+ await resolveIcon(this.name ? this.name : "", this.#abortController.signal).then((svg) => {
224
230
  this._svg = svg;
225
231
  }).catch(() => {
226
232
  this._svg = void 0;
@@ -34,10 +34,10 @@ export declare function formElements<T extends {
34
34
  [x: string]: any;
35
35
  label?: string | undefined;
36
36
  errorValidationMessage: string;
37
- "__#1@#forceErrorDisplay": boolean;
38
- "__#1@#hasBeenTouched": boolean;
37
+ "__#2@#forceErrorDisplay": boolean;
38
+ "__#2@#hasBeenTouched": boolean;
39
39
  connectedCallback(): void;
40
- "__#1@#handleInvalidEvent": () => void;
40
+ "__#2@#handleInvalidEvent": () => void;
41
41
  disconnectedCallback(): void;
42
42
  formResetCallback(): void;
43
43
  validate: () => void;
@@ -50,9 +50,9 @@ export declare function errorText<T extends {
50
50
  new (...args: any[]): {
51
51
  [x: string]: any;
52
52
  errorText?: string | undefined;
53
- "__#2@#blockValidateCalls": boolean;
53
+ "__#3@#blockValidateCalls": boolean;
54
54
  errorTextChanged(_: string, newErrorText: string | undefined): void;
55
- "__#2@#forceCustomError"(errorMessage: string): void;
56
- "__#2@#clearCustomErrorAndRevalidate"(): void;
55
+ "__#3@#forceCustomError"(errorMessage: string): void;
56
+ "__#3@#clearCustomErrorAndRevalidate"(): void;
57
57
  };
58
58
  } & T;
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Do not edit directly
3
- * Generated on Thu, 10 Oct 2024 12:10:49 GMT
3
+ * Generated on Wed, 23 Oct 2024 11:35:04 GMT
4
4
  */
5
5
  .vvd-root {
6
6
  color-scheme: var(--vvd-color-scheme);
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Do not edit directly
3
- * Generated on Thu, 10 Oct 2024 12:10:49 GMT
3
+ * Generated on Wed, 23 Oct 2024 11:35:04 GMT
4
4
  */
5
5
  .vvd-root {
6
6
  color-scheme: var(--vvd-color-scheme);