@vonage/vivid 4.9.0 → 4.11.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 (103) hide show
  1. package/custom-elements.json +2792 -83
  2. package/lib/badge/badge.d.ts +1 -1
  3. package/lib/breadcrumb-item/breadcrumb-item.d.ts +1 -1
  4. package/lib/button/button.d.ts +1 -1
  5. package/lib/checkbox/checkbox.d.ts +8 -2
  6. package/lib/checkbox/checkbox.form-associated.d.ts +10 -0
  7. package/lib/dialog/dialog.d.ts +4 -0
  8. package/lib/divider/divider.d.ts +11 -2
  9. package/lib/enums.d.ts +1 -0
  10. package/lib/fab/fab.d.ts +1 -1
  11. package/lib/file-picker/file-picker.d.ts +3 -0
  12. package/lib/icon/icon.d.ts +2 -1
  13. package/lib/slider/slider.d.ts +30 -6
  14. package/lib/slider/slider.form-associated.d.ts +10 -0
  15. package/lib/split-button/split-button.d.ts +1 -1
  16. package/lib/tabs/tabs.d.ts +1 -0
  17. package/lib/text-field/text-field.d.ts +1 -0
  18. package/package.json +1 -1
  19. package/shared/aria-global2.cjs +93 -0
  20. package/shared/aria-global2.js +91 -0
  21. package/shared/breadcrumb-item.cjs +2 -89
  22. package/shared/breadcrumb-item.js +1 -88
  23. package/shared/definition11.cjs +201 -5
  24. package/shared/definition11.js +199 -4
  25. package/shared/definition15.cjs +49 -90
  26. package/shared/definition15.js +50 -91
  27. package/shared/definition16.cjs +9 -7
  28. package/shared/definition16.js +9 -7
  29. package/shared/definition20.cjs +16 -11
  30. package/shared/definition20.js +16 -11
  31. package/shared/definition21.cjs +34 -4
  32. package/shared/definition21.js +34 -4
  33. package/shared/definition22.cjs +32 -51
  34. package/shared/definition22.js +33 -52
  35. package/shared/definition24.cjs +156 -2
  36. package/shared/definition24.js +157 -3
  37. package/shared/definition25.cjs +106 -56
  38. package/shared/definition25.js +106 -56
  39. package/shared/definition29.cjs +1 -1
  40. package/shared/definition29.js +1 -1
  41. package/shared/definition30.cjs +1 -1
  42. package/shared/definition30.js +1 -1
  43. package/shared/definition35.cjs +2 -2
  44. package/shared/definition35.js +2 -2
  45. package/shared/definition37.cjs +1 -1
  46. package/shared/definition37.js +1 -1
  47. package/shared/definition4.cjs +5 -6
  48. package/shared/definition4.js +1 -2
  49. package/shared/definition40.cjs +11 -4
  50. package/shared/definition40.js +8 -1
  51. package/shared/definition42.cjs +3 -22
  52. package/shared/definition42.js +2 -21
  53. package/shared/definition43.cjs +1 -2
  54. package/shared/definition43.js +1 -2
  55. package/shared/definition44.js +1 -1
  56. package/shared/definition47.cjs +369 -502
  57. package/shared/definition47.js +370 -503
  58. package/shared/definition5.cjs +5 -5
  59. package/shared/definition5.js +2 -2
  60. package/shared/definition51.cjs +1 -1
  61. package/shared/definition51.js +1 -1
  62. package/shared/definition52.cjs +63 -26
  63. package/shared/definition52.js +63 -26
  64. package/shared/definition56.cjs +45 -43
  65. package/shared/definition56.js +45 -43
  66. package/shared/definition57.cjs +1 -1
  67. package/shared/definition57.js +1 -1
  68. package/shared/definition64.cjs +242 -79
  69. package/shared/definition64.js +242 -79
  70. package/shared/definition7.cjs +1 -1
  71. package/shared/definition7.js +1 -1
  72. package/shared/definition8.cjs +1 -1
  73. package/shared/definition8.js +1 -1
  74. package/shared/enums.cjs +1 -0
  75. package/shared/enums.js +1 -0
  76. package/shared/form-associated.js +1 -1
  77. package/shared/{patterns → foundation/anchor}/anchor.d.ts +1 -1
  78. package/shared/foundation/button/button.d.ts +27 -0
  79. package/shared/foundation/button/button.template.d.ts +4 -0
  80. package/shared/foundation/button/index.d.ts +2 -0
  81. package/shared/foundation/patterns/index.d.ts +1 -0
  82. package/shared/icon.cjs +11 -5
  83. package/shared/icon.js +11 -5
  84. package/shared/index.cjs +22 -2
  85. package/shared/index.js +22 -2
  86. package/shared/key-codes2.js +1 -1
  87. package/shared/patterns/form-elements/form-elements.d.ts +6 -6
  88. package/shared/presentationDate.cjs +4328 -4042
  89. package/shared/presentationDate.js +4327 -4041
  90. package/shared/slider.template.cjs +23 -1
  91. package/shared/slider.template.js +21 -2
  92. package/styles/core/all.css +1 -1
  93. package/styles/core/theme.css +1 -1
  94. package/styles/core/typography.css +1 -1
  95. package/styles/tokens/theme-dark.css +35 -14
  96. package/styles/tokens/theme-light.css +35 -14
  97. package/styles/tokens/vivid-2-compat.css +1 -1
  98. package/vivid.api.json +62 -5
  99. package/shared/aria2.cjs +0 -11
  100. package/shared/aria2.js +0 -9
  101. package/shared/button.cjs +0 -202
  102. package/shared/button.js +0 -200
  103. /package/shared/{patterns → foundation/patterns}/aria-global.d.ts +0 -0
@@ -4,101 +4,23 @@ const index = require('./index.cjs');
4
4
  const definition = require('./definition27.cjs');
5
5
  const applyMixinsWithObservables = require('./applyMixinsWithObservables.cjs');
6
6
  const formAssociated = require('./form-associated.cjs');
7
- const keyCodes = require('./key-codes.cjs');
8
7
  const formElements = require('./form-elements.cjs');
9
8
  const icon = require('./icon.cjs');
10
9
  const when = require('./when.cjs');
11
10
  const slotted = require('./slotted.cjs');
12
11
  const classNames = require('./class-names.cjs');
13
12
 
13
+ const styles = ":host{display:inline-flex;flex-direction:column;vertical-align:middle}:host([disabled]){cursor:not-allowed}.base.connotation-cta{--_connotation-color-primary: var(--vvd-checkbox-cta-primary, var(--vvd-color-cta-500));--_connotation-color-primary-text: var(--vvd-checkbox-cta-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-checkbox-cta-primary-increment, var(--vvd-color-cta-600));--_connotation-color-fierce: var(--vvd-checkbox-cta-fierce, var(--vvd-color-cta-700));--_connotation-color-intermediate: var(--vvd-checkbox-cta-intermediate, var(--vvd-color-cta-500));--_connotation-color-firm: var(--vvd-checkbox-cta-firm, var(--vvd-color-cta-600))}.base:not(.connotation-cta){--_connotation-color-primary: var(--vvd-checkbox-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-checkbox-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-checkbox-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-fierce: var(--vvd-checkbox-accent-fierce, var(--vvd-color-neutral-700));--_connotation-color-intermediate: var(--vvd-checkbox-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-firm: var(--vvd-checkbox-accent-firm, var(--vvd-color-canvas-text))}.base{--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-intermediate)}.base:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-fierce)}.base:where(.checked,:checked):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-primary-text);--_appearance-color-fill: var(--_connotation-color-primary);--_appearance-color-outline: var(--_connotation-color-primary)}.base:where(.checked,:checked):where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-primary-text);--_appearance-color-fill: var(--_connotation-color-primary-increment);--_appearance-color-outline: var(--_connotation-color-primary-increment)}.base:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.base:where(.readonly):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: var(--vvd-color-neutral-400)}.base{display:inline-flex;align-items:center;gap:8px;vertical-align:middle}.base:focus-visible{outline:none}@supports (user-select: none){.base{user-select:none}}.base:not(.disabled){cursor:pointer}.base.disabled{pointer-events:none}.control{position:relative;display:flex;flex-shrink:0;align-items:center;justify-content:center;border-radius:4px;background-color:var(--_appearance-color-fill);block-size:calc(1px*(20 + 4*clamp(-1,var(--vvd-size-density, 0),2)));box-shadow:inset 0 0 0 2px var(--_appearance-color-outline);color:var(--_appearance-color-text);inline-size:calc(1px*(20 + 4*clamp(-1,var(--vvd-size-density, 0),2)))}.base:focus-visible .control{--focus-inset: -3px;--focus-stroke-gap-color: transparent}.base:focus-visible .control:before{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));position:absolute;display:block;border-radius:2px;block-size:calc(1px*(20 + 4*clamp(-1,var(--vvd-size-density, 0),2)));content:\"\";inline-size:calc(1px*(20 + 4*clamp(-1,var(--vvd-size-density, 0),2)))}.base.error:not(.checked) .control{background-color:var(--vvd-color-alert-50);box-shadow:inset 0 0 0 2px var(--vvd-color-alert-500)}.indicator{font-size:calc(1px*(20 + 4*clamp(-1,var(--vvd-size-density, 0),2)) - 4px)}.base:not(.checked) .indicator.checkmark{display:none}.base.checked .indicator.minus,.base:not(.indeterminate) .indicator.minus{display:none}label{display:flex;flex-wrap:wrap;align-items:center;color:var(--vvd-color-canvas-text);column-gap:4px;cursor:pointer;font:var(--vvd-typography-base)}.hide-label label{display:none}.icon{font-size:calc(1px*(20 + 4*clamp(-1,var(--vvd-size-density, 0),2))*.6);line-height:1}.message{margin-block-start:4px;--_low-ink-color: var(--vvd-color-neutral-600)}";
14
+
14
15
  class _Checkbox extends index.FoundationElement {
15
16
  }
16
- /**
17
- * A form-associated base class for the {@link @microsoft/fast-foundation#(Checkbox:class)} component.
18
- *
19
- * @internal
20
- */
21
17
  class FormAssociatedCheckbox extends formAssociated.CheckableFormAssociated(_Checkbox) {
22
- constructor() {
23
- super(...arguments);
24
- this.proxy = document.createElement("input");
25
- }
18
+ constructor() {
19
+ super(...arguments);
20
+ this.proxy = document.createElement("input");
21
+ }
26
22
  }
27
23
 
28
- /**
29
- * A Checkbox Custom HTML Element.
30
- * Implements the {@link https://www.w3.org/TR/wai-aria-1.1/#checkbox | ARIA checkbox }.
31
- *
32
- * @slot checked-indicator - The checked indicator
33
- * @slot indeterminate-indicator - The indeterminate indicator
34
- * @slot - The default slot for the label
35
- * @csspart control - The element representing the visual checkbox control
36
- * @csspart label - The label
37
- * @fires change - Emits a custom change event when the checked state changes
38
- *
39
- * @public
40
- */
41
- let Checkbox$1 = class Checkbox extends FormAssociatedCheckbox {
42
- constructor() {
43
- super();
44
- /**
45
- * The element's value to be included in form submission when checked.
46
- * Default to "on" to reach parity with input[type="checkbox"]
47
- *
48
- * @internal
49
- */
50
- this.initialValue = "on";
51
- /**
52
- * The indeterminate state of the control
53
- */
54
- this.indeterminate = false;
55
- /**
56
- * @internal
57
- */
58
- this.keypressHandler = (e) => {
59
- if (this.readOnly) {
60
- return;
61
- }
62
- switch (e.key) {
63
- case keyCodes.keySpace:
64
- if (this.indeterminate) {
65
- this.indeterminate = false;
66
- }
67
- this.checked = !this.checked;
68
- break;
69
- }
70
- };
71
- /**
72
- * @internal
73
- */
74
- this.clickHandler = (e) => {
75
- if (!this.disabled && !this.readOnly) {
76
- if (this.indeterminate) {
77
- this.indeterminate = false;
78
- }
79
- this.checked = !this.checked;
80
- }
81
- };
82
- this.proxy.setAttribute("type", "checkbox");
83
- }
84
- readOnlyChanged() {
85
- if (this.proxy instanceof HTMLInputElement) {
86
- this.proxy.readOnly = this.readOnly;
87
- }
88
- }
89
- };
90
- index.__decorate([
91
- index.attr({ attribute: "readonly", mode: "boolean" })
92
- ], Checkbox$1.prototype, "readOnly", void 0);
93
- index.__decorate([
94
- index.observable
95
- ], Checkbox$1.prototype, "defaultSlottedNodes", void 0);
96
- index.__decorate([
97
- index.observable
98
- ], Checkbox$1.prototype, "indeterminate", void 0);
99
-
100
- const styles = ":host{display:inline-flex;flex-direction:column;vertical-align:middle}:host([disabled]){cursor:not-allowed}.base.connotation-cta{--_connotation-color-primary: var(--vvd-checkbox-cta-primary, var(--vvd-color-cta-500));--_connotation-color-primary-text: var(--vvd-checkbox-cta-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-checkbox-cta-primary-increment, var(--vvd-color-cta-600));--_connotation-color-fierce: var(--vvd-checkbox-cta-fierce, var(--vvd-color-cta-700));--_connotation-color-intermediate: var(--vvd-checkbox-cta-intermediate, var(--vvd-color-cta-500));--_connotation-color-firm: var(--vvd-checkbox-cta-firm, var(--vvd-color-cta-600))}.base:not(.connotation-cta){--_connotation-color-primary: var(--vvd-checkbox-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-checkbox-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-checkbox-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-fierce: var(--vvd-checkbox-accent-fierce, var(--vvd-color-neutral-700));--_connotation-color-intermediate: var(--vvd-checkbox-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-firm: var(--vvd-checkbox-accent-firm, var(--vvd-color-canvas-text))}.base{--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-intermediate)}.base:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-fierce)}.base:where(.checked,:checked):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-primary-text);--_appearance-color-fill: var(--_connotation-color-primary);--_appearance-color-outline: var(--_connotation-color-primary)}.base:where(.checked,:checked):where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-primary-text);--_appearance-color-fill: var(--_connotation-color-primary-increment);--_appearance-color-outline: var(--_connotation-color-primary-increment)}.base:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.base:where(.readonly):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: var(--vvd-color-neutral-400)}.base{display:inline-flex;align-items:center;gap:8px;vertical-align:middle}.base:focus-visible{outline:none}@supports (user-select: none){.base{user-select:none}}.base:not(.disabled){cursor:pointer}.base.disabled{pointer-events:none}.control{position:relative;display:flex;flex-shrink:0;align-items:center;justify-content:center;border-radius:4px;background-color:var(--_appearance-color-fill);block-size:calc(1px*(20 + 4*clamp(-1,var(--vvd-size-density, 0),2)));box-shadow:inset 0 0 0 2px var(--_appearance-color-outline);color:var(--_appearance-color-text);inline-size:calc(1px*(20 + 4*clamp(-1,var(--vvd-size-density, 0),2)))}.base:focus-visible .control{--focus-inset: -3px;--focus-stroke-gap-color: transparent}.base:focus-visible .control:before{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));position:absolute;display:block;border-radius:2px;block-size:calc(1px*(20 + 4*clamp(-1,var(--vvd-size-density, 0),2)));content:\"\";inline-size:calc(1px*(20 + 4*clamp(-1,var(--vvd-size-density, 0),2)))}.base.error:not(.checked) .control{background-color:var(--vvd-color-alert-50);box-shadow:inset 0 0 0 2px var(--vvd-color-alert-500)}.indicator{font-size:calc(1px*(20 + 4*clamp(-1,var(--vvd-size-density, 0),2)) - 4px)}.base:not(.checked) .indicator.checkmark{display:none}.base.checked .indicator.minus,.base:not(.indeterminate) .indicator.minus{display:none}label{display:flex;flex-wrap:wrap;align-items:center;color:var(--vvd-color-canvas-text);column-gap:4px;cursor:pointer;font:var(--vvd-typography-base)}.hide-label label{display:none}.icon{font-size:calc(1px*(20 + 4*clamp(-1,var(--vvd-size-density, 0),2))*.6);line-height:1}.message{margin-block-start:4px;--_low-ink-color: var(--vvd-color-neutral-600)}";
101
-
102
24
  var __defProp = Object.defineProperty;
103
25
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
104
26
  var __decorateClass = (decorators, target, key, kind) => {
@@ -110,16 +32,24 @@ var __decorateClass = (decorators, target, key, kind) => {
110
32
  return result;
111
33
  };
112
34
  const keySpace = " ";
113
- exports.Checkbox = class Checkbox extends Checkbox$1 {
35
+ exports.Checkbox = class Checkbox extends FormAssociatedCheckbox {
114
36
  constructor() {
115
- super(...arguments);
37
+ super();
116
38
  this.ariaLabel = null;
117
39
  this.tabindex = null;
40
+ this.ariaChecked = null;
118
41
  /**
119
- * !remove method as will be implemented by fast-foundation in version after 2.46.9
42
+ * The element's value to be included in form submission when checked.
43
+ * Default to "on" to reach parity with input[type="checkbox"]
120
44
  *
121
45
  * @internal
122
46
  */
47
+ this.initialValue = "on";
48
+ this.defaultSlottedNodes = [];
49
+ this.indeterminate = false;
50
+ /**
51
+ * @internal
52
+ */
123
53
  this.keypressHandler = (event) => {
124
54
  if (event.target instanceof HTMLAnchorElement) {
125
55
  return true;
@@ -137,8 +67,6 @@ exports.Checkbox = class Checkbox extends Checkbox$1 {
137
67
  return false;
138
68
  };
139
69
  /**
140
- * !remove method as will be implemented by fast-foundation in version after 2.46.9
141
- *
142
70
  * @internal
143
71
  */
144
72
  this.clickHandler = (event) => {
@@ -153,12 +81,31 @@ exports.Checkbox = class Checkbox extends Checkbox$1 {
153
81
  }
154
82
  return false;
155
83
  };
84
+ this.proxy.setAttribute("type", "checkbox");
85
+ }
86
+ // Map to proxy element
87
+ /**
88
+ * @internal
89
+ */
90
+ readOnlyChanged() {
91
+ if (this.proxy instanceof HTMLInputElement) {
92
+ this.proxy.readOnly = this.readOnly;
93
+ }
94
+ }
95
+ ariaCheckedChanged() {
96
+ if (this.ariaChecked === "mixed") {
97
+ this.indeterminate = true;
98
+ } else {
99
+ this.indeterminate = false;
100
+ this.checked = this.ariaChecked === "true" ? true : false;
101
+ }
156
102
  }
157
103
  /**
158
104
  * @internal
159
105
  */
160
106
  checkedChanged(prev, next) {
161
107
  super.checkedChanged(prev, next);
108
+ this.ariaChecked = next == true ? "true" : "false";
162
109
  if (prev !== void 0) {
163
110
  this.$emit("input");
164
111
  }
@@ -173,6 +120,18 @@ __decorateClass([
173
120
  __decorateClass([
174
121
  index.attr
175
122
  ], exports.Checkbox.prototype, "connotation", 2);
123
+ __decorateClass([
124
+ index.attr({ attribute: "aria-checked" })
125
+ ], exports.Checkbox.prototype, "ariaChecked", 2);
126
+ __decorateClass([
127
+ index.attr({ attribute: "readonly", mode: "boolean" })
128
+ ], exports.Checkbox.prototype, "readOnly", 2);
129
+ __decorateClass([
130
+ index.observable
131
+ ], exports.Checkbox.prototype, "defaultSlottedNodes", 2);
132
+ __decorateClass([
133
+ index.observable
134
+ ], exports.Checkbox.prototype, "indeterminate", 2);
176
135
  __decorateClass([
177
136
  index.observable
178
137
  ], exports.Checkbox.prototype, "slottedContent", 2);
@@ -213,7 +172,7 @@ const CheckboxTemplate = (context) => {
213
172
  class="${getClasses}"
214
173
  role="checkbox"
215
174
  aria-label="${(x) => x.ariaLabel}"
216
- aria-checked="${(x) => x.checked}"
175
+ aria-checked="${(x) => x.indeterminate ? "mixed" : x.checked}"
217
176
  aria-required="${(x) => x.required}"
218
177
  aria-disabled="${(x) => x.disabled}"
219
178
  aria-readonly="${(x) => x.readOnly}"
@@ -1,102 +1,24 @@
1
- import { F as FoundationElement, _ as __decorate, a as attr, o as observable, h as html, r as registerFactory } from './index.js';
1
+ import { F as FoundationElement, a as attr, o as observable, h as html, r as registerFactory } from './index.js';
2
2
  import { a as iconRegistries } from './definition27.js';
3
3
  import { a as applyMixinsWithObservables } from './applyMixinsWithObservables.js';
4
4
  import { C as CheckableFormAssociated } from './form-associated.js';
5
- import { a as keySpace$1 } from './key-codes.js';
6
5
  import { e as errorText, f as formElements, F as FormElementSuccessText, a as FormElementHelperText, g as getFeedbackTemplate } from './form-elements.js';
7
6
  import { I as Icon } from './icon.js';
8
7
  import { w as when } from './when.js';
9
8
  import { s as slotted } from './slotted.js';
10
9
  import { c as classNames } from './class-names.js';
11
10
 
11
+ const styles = ":host{display:inline-flex;flex-direction:column;vertical-align:middle}:host([disabled]){cursor:not-allowed}.base.connotation-cta{--_connotation-color-primary: var(--vvd-checkbox-cta-primary, var(--vvd-color-cta-500));--_connotation-color-primary-text: var(--vvd-checkbox-cta-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-checkbox-cta-primary-increment, var(--vvd-color-cta-600));--_connotation-color-fierce: var(--vvd-checkbox-cta-fierce, var(--vvd-color-cta-700));--_connotation-color-intermediate: var(--vvd-checkbox-cta-intermediate, var(--vvd-color-cta-500));--_connotation-color-firm: var(--vvd-checkbox-cta-firm, var(--vvd-color-cta-600))}.base:not(.connotation-cta){--_connotation-color-primary: var(--vvd-checkbox-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-checkbox-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-checkbox-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-fierce: var(--vvd-checkbox-accent-fierce, var(--vvd-color-neutral-700));--_connotation-color-intermediate: var(--vvd-checkbox-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-firm: var(--vvd-checkbox-accent-firm, var(--vvd-color-canvas-text))}.base{--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-intermediate)}.base:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-fierce)}.base:where(.checked,:checked):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-primary-text);--_appearance-color-fill: var(--_connotation-color-primary);--_appearance-color-outline: var(--_connotation-color-primary)}.base:where(.checked,:checked):where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-primary-text);--_appearance-color-fill: var(--_connotation-color-primary-increment);--_appearance-color-outline: var(--_connotation-color-primary-increment)}.base:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.base:where(.readonly):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: var(--vvd-color-neutral-400)}.base{display:inline-flex;align-items:center;gap:8px;vertical-align:middle}.base:focus-visible{outline:none}@supports (user-select: none){.base{user-select:none}}.base:not(.disabled){cursor:pointer}.base.disabled{pointer-events:none}.control{position:relative;display:flex;flex-shrink:0;align-items:center;justify-content:center;border-radius:4px;background-color:var(--_appearance-color-fill);block-size:calc(1px*(20 + 4*clamp(-1,var(--vvd-size-density, 0),2)));box-shadow:inset 0 0 0 2px var(--_appearance-color-outline);color:var(--_appearance-color-text);inline-size:calc(1px*(20 + 4*clamp(-1,var(--vvd-size-density, 0),2)))}.base:focus-visible .control{--focus-inset: -3px;--focus-stroke-gap-color: transparent}.base:focus-visible .control:before{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));position:absolute;display:block;border-radius:2px;block-size:calc(1px*(20 + 4*clamp(-1,var(--vvd-size-density, 0),2)));content:\"\";inline-size:calc(1px*(20 + 4*clamp(-1,var(--vvd-size-density, 0),2)))}.base.error:not(.checked) .control{background-color:var(--vvd-color-alert-50);box-shadow:inset 0 0 0 2px var(--vvd-color-alert-500)}.indicator{font-size:calc(1px*(20 + 4*clamp(-1,var(--vvd-size-density, 0),2)) - 4px)}.base:not(.checked) .indicator.checkmark{display:none}.base.checked .indicator.minus,.base:not(.indeterminate) .indicator.minus{display:none}label{display:flex;flex-wrap:wrap;align-items:center;color:var(--vvd-color-canvas-text);column-gap:4px;cursor:pointer;font:var(--vvd-typography-base)}.hide-label label{display:none}.icon{font-size:calc(1px*(20 + 4*clamp(-1,var(--vvd-size-density, 0),2))*.6);line-height:1}.message{margin-block-start:4px;--_low-ink-color: var(--vvd-color-neutral-600)}";
12
+
12
13
  class _Checkbox extends FoundationElement {
13
14
  }
14
- /**
15
- * A form-associated base class for the {@link @microsoft/fast-foundation#(Checkbox:class)} component.
16
- *
17
- * @internal
18
- */
19
15
  class FormAssociatedCheckbox extends CheckableFormAssociated(_Checkbox) {
20
- constructor() {
21
- super(...arguments);
22
- this.proxy = document.createElement("input");
23
- }
16
+ constructor() {
17
+ super(...arguments);
18
+ this.proxy = document.createElement("input");
19
+ }
24
20
  }
25
21
 
26
- /**
27
- * A Checkbox Custom HTML Element.
28
- * Implements the {@link https://www.w3.org/TR/wai-aria-1.1/#checkbox | ARIA checkbox }.
29
- *
30
- * @slot checked-indicator - The checked indicator
31
- * @slot indeterminate-indicator - The indeterminate indicator
32
- * @slot - The default slot for the label
33
- * @csspart control - The element representing the visual checkbox control
34
- * @csspart label - The label
35
- * @fires change - Emits a custom change event when the checked state changes
36
- *
37
- * @public
38
- */
39
- let Checkbox$1 = class Checkbox extends FormAssociatedCheckbox {
40
- constructor() {
41
- super();
42
- /**
43
- * The element's value to be included in form submission when checked.
44
- * Default to "on" to reach parity with input[type="checkbox"]
45
- *
46
- * @internal
47
- */
48
- this.initialValue = "on";
49
- /**
50
- * The indeterminate state of the control
51
- */
52
- this.indeterminate = false;
53
- /**
54
- * @internal
55
- */
56
- this.keypressHandler = (e) => {
57
- if (this.readOnly) {
58
- return;
59
- }
60
- switch (e.key) {
61
- case keySpace$1:
62
- if (this.indeterminate) {
63
- this.indeterminate = false;
64
- }
65
- this.checked = !this.checked;
66
- break;
67
- }
68
- };
69
- /**
70
- * @internal
71
- */
72
- this.clickHandler = (e) => {
73
- if (!this.disabled && !this.readOnly) {
74
- if (this.indeterminate) {
75
- this.indeterminate = false;
76
- }
77
- this.checked = !this.checked;
78
- }
79
- };
80
- this.proxy.setAttribute("type", "checkbox");
81
- }
82
- readOnlyChanged() {
83
- if (this.proxy instanceof HTMLInputElement) {
84
- this.proxy.readOnly = this.readOnly;
85
- }
86
- }
87
- };
88
- __decorate([
89
- attr({ attribute: "readonly", mode: "boolean" })
90
- ], Checkbox$1.prototype, "readOnly", void 0);
91
- __decorate([
92
- observable
93
- ], Checkbox$1.prototype, "defaultSlottedNodes", void 0);
94
- __decorate([
95
- observable
96
- ], Checkbox$1.prototype, "indeterminate", void 0);
97
-
98
- const styles = ":host{display:inline-flex;flex-direction:column;vertical-align:middle}:host([disabled]){cursor:not-allowed}.base.connotation-cta{--_connotation-color-primary: var(--vvd-checkbox-cta-primary, var(--vvd-color-cta-500));--_connotation-color-primary-text: var(--vvd-checkbox-cta-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-checkbox-cta-primary-increment, var(--vvd-color-cta-600));--_connotation-color-fierce: var(--vvd-checkbox-cta-fierce, var(--vvd-color-cta-700));--_connotation-color-intermediate: var(--vvd-checkbox-cta-intermediate, var(--vvd-color-cta-500));--_connotation-color-firm: var(--vvd-checkbox-cta-firm, var(--vvd-color-cta-600))}.base:not(.connotation-cta){--_connotation-color-primary: var(--vvd-checkbox-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-checkbox-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-checkbox-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-fierce: var(--vvd-checkbox-accent-fierce, var(--vvd-color-neutral-700));--_connotation-color-intermediate: var(--vvd-checkbox-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-firm: var(--vvd-checkbox-accent-firm, var(--vvd-color-canvas-text))}.base{--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-intermediate)}.base:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-fierce)}.base:where(.checked,:checked):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-primary-text);--_appearance-color-fill: var(--_connotation-color-primary);--_appearance-color-outline: var(--_connotation-color-primary)}.base:where(.checked,:checked):where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-primary-text);--_appearance-color-fill: var(--_connotation-color-primary-increment);--_appearance-color-outline: var(--_connotation-color-primary-increment)}.base:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.base:where(.readonly):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-neutral-200);--_appearance-color-outline: var(--vvd-color-neutral-400)}.base{display:inline-flex;align-items:center;gap:8px;vertical-align:middle}.base:focus-visible{outline:none}@supports (user-select: none){.base{user-select:none}}.base:not(.disabled){cursor:pointer}.base.disabled{pointer-events:none}.control{position:relative;display:flex;flex-shrink:0;align-items:center;justify-content:center;border-radius:4px;background-color:var(--_appearance-color-fill);block-size:calc(1px*(20 + 4*clamp(-1,var(--vvd-size-density, 0),2)));box-shadow:inset 0 0 0 2px var(--_appearance-color-outline);color:var(--_appearance-color-text);inline-size:calc(1px*(20 + 4*clamp(-1,var(--vvd-size-density, 0),2)))}.base:focus-visible .control{--focus-inset: -3px;--focus-stroke-gap-color: transparent}.base:focus-visible .control:before{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));position:absolute;display:block;border-radius:2px;block-size:calc(1px*(20 + 4*clamp(-1,var(--vvd-size-density, 0),2)));content:\"\";inline-size:calc(1px*(20 + 4*clamp(-1,var(--vvd-size-density, 0),2)))}.base.error:not(.checked) .control{background-color:var(--vvd-color-alert-50);box-shadow:inset 0 0 0 2px var(--vvd-color-alert-500)}.indicator{font-size:calc(1px*(20 + 4*clamp(-1,var(--vvd-size-density, 0),2)) - 4px)}.base:not(.checked) .indicator.checkmark{display:none}.base.checked .indicator.minus,.base:not(.indeterminate) .indicator.minus{display:none}label{display:flex;flex-wrap:wrap;align-items:center;color:var(--vvd-color-canvas-text);column-gap:4px;cursor:pointer;font:var(--vvd-typography-base)}.hide-label label{display:none}.icon{font-size:calc(1px*(20 + 4*clamp(-1,var(--vvd-size-density, 0),2))*.6);line-height:1}.message{margin-block-start:4px;--_low-ink-color: var(--vvd-color-neutral-600)}";
99
-
100
22
  var __defProp = Object.defineProperty;
101
23
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
102
24
  var __decorateClass = (decorators, target, key, kind) => {
@@ -108,16 +30,24 @@ var __decorateClass = (decorators, target, key, kind) => {
108
30
  return result;
109
31
  };
110
32
  const keySpace = " ";
111
- let Checkbox = class extends Checkbox$1 {
33
+ let Checkbox = class extends FormAssociatedCheckbox {
112
34
  constructor() {
113
- super(...arguments);
35
+ super();
114
36
  this.ariaLabel = null;
115
37
  this.tabindex = null;
38
+ this.ariaChecked = null;
116
39
  /**
117
- * !remove method as will be implemented by fast-foundation in version after 2.46.9
40
+ * The element's value to be included in form submission when checked.
41
+ * Default to "on" to reach parity with input[type="checkbox"]
118
42
  *
119
43
  * @internal
120
44
  */
45
+ this.initialValue = "on";
46
+ this.defaultSlottedNodes = [];
47
+ this.indeterminate = false;
48
+ /**
49
+ * @internal
50
+ */
121
51
  this.keypressHandler = (event) => {
122
52
  if (event.target instanceof HTMLAnchorElement) {
123
53
  return true;
@@ -135,8 +65,6 @@ let Checkbox = class extends Checkbox$1 {
135
65
  return false;
136
66
  };
137
67
  /**
138
- * !remove method as will be implemented by fast-foundation in version after 2.46.9
139
- *
140
68
  * @internal
141
69
  */
142
70
  this.clickHandler = (event) => {
@@ -151,12 +79,31 @@ let Checkbox = class extends Checkbox$1 {
151
79
  }
152
80
  return false;
153
81
  };
82
+ this.proxy.setAttribute("type", "checkbox");
83
+ }
84
+ // Map to proxy element
85
+ /**
86
+ * @internal
87
+ */
88
+ readOnlyChanged() {
89
+ if (this.proxy instanceof HTMLInputElement) {
90
+ this.proxy.readOnly = this.readOnly;
91
+ }
92
+ }
93
+ ariaCheckedChanged() {
94
+ if (this.ariaChecked === "mixed") {
95
+ this.indeterminate = true;
96
+ } else {
97
+ this.indeterminate = false;
98
+ this.checked = this.ariaChecked === "true" ? true : false;
99
+ }
154
100
  }
155
101
  /**
156
102
  * @internal
157
103
  */
158
104
  checkedChanged(prev, next) {
159
105
  super.checkedChanged(prev, next);
106
+ this.ariaChecked = next == true ? "true" : "false";
160
107
  if (prev !== void 0) {
161
108
  this.$emit("input");
162
109
  }
@@ -171,6 +118,18 @@ __decorateClass([
171
118
  __decorateClass([
172
119
  attr
173
120
  ], Checkbox.prototype, "connotation", 2);
121
+ __decorateClass([
122
+ attr({ attribute: "aria-checked" })
123
+ ], Checkbox.prototype, "ariaChecked", 2);
124
+ __decorateClass([
125
+ attr({ attribute: "readonly", mode: "boolean" })
126
+ ], Checkbox.prototype, "readOnly", 2);
127
+ __decorateClass([
128
+ observable
129
+ ], Checkbox.prototype, "defaultSlottedNodes", 2);
130
+ __decorateClass([
131
+ observable
132
+ ], Checkbox.prototype, "indeterminate", 2);
174
133
  __decorateClass([
175
134
  observable
176
135
  ], Checkbox.prototype, "slottedContent", 2);
@@ -211,7 +170,7 @@ const CheckboxTemplate = (context) => {
211
170
  class="${getClasses}"
212
171
  role="checkbox"
213
172
  aria-label="${(x) => x.ariaLabel}"
214
- aria-checked="${(x) => x.checked}"
173
+ aria-checked="${(x) => x.indeterminate ? "mixed" : x.checked}"
215
174
  aria-required="${(x) => x.required}"
216
175
  aria-disabled="${(x) => x.disabled}"
217
176
  aria-readonly="${(x) => x.readOnly}"
@@ -217,18 +217,20 @@ let Combobox$1 = class Combobox extends FormAssociatedCombobox {
217
217
  * @internal
218
218
  */
219
219
  clickHandler(e) {
220
- if (this.disabled) {
220
+ const captured = e.target.closest(`option,[role=option]`);
221
+ if (this.disabled || (captured === null || captured === void 0 ? void 0 : captured.disabled)) {
221
222
  return;
222
223
  }
223
224
  if (this.open) {
224
- const captured = e.target.closest(`option,[role=option]`);
225
- if (!captured || captured.disabled) {
225
+ if (e.composedPath()[0] === this.control) {
226
226
  return;
227
227
  }
228
- this.selectedOptions = [captured];
229
- this.control.value = captured.text;
230
- this.clearSelectionRange();
231
- this.updateValue(true);
228
+ if (captured) {
229
+ this.selectedOptions = [captured];
230
+ this.control.value = captured.text;
231
+ this.clearSelectionRange();
232
+ this.updateValue(true);
233
+ }
232
234
  }
233
235
  this.open = !this.open;
234
236
  if (this.open) {
@@ -215,18 +215,20 @@ let Combobox$1 = class Combobox extends FormAssociatedCombobox {
215
215
  * @internal
216
216
  */
217
217
  clickHandler(e) {
218
- if (this.disabled) {
218
+ const captured = e.target.closest(`option,[role=option]`);
219
+ if (this.disabled || (captured === null || captured === void 0 ? void 0 : captured.disabled)) {
219
220
  return;
220
221
  }
221
222
  if (this.open) {
222
- const captured = e.target.closest(`option,[role=option]`);
223
- if (!captured || captured.disabled) {
223
+ if (e.composedPath()[0] === this.control) {
224
224
  return;
225
225
  }
226
- this.selectedOptions = [captured];
227
- this.control.value = captured.text;
228
- this.clearSelectionRange();
229
- this.updateValue(true);
226
+ if (captured) {
227
+ this.selectedOptions = [captured];
228
+ this.control.value = captured.text;
229
+ this.clearSelectionRange();
230
+ this.updateValue(true);
231
+ }
230
232
  }
231
233
  this.open = !this.open;
232
234
  if (this.open) {
@@ -44,14 +44,6 @@ class DialPad extends index.FoundationElement {
44
44
  this._onDial = () => {
45
45
  this.callActive ? this.$emit("end-call") : this.$emit("dial");
46
46
  };
47
- /**
48
- *
49
- * @internal
50
- */
51
- this._deleteLastCharacter = () => {
52
- this.value = this.value.slice(0, -1);
53
- this.$emit("change");
54
- };
55
47
  }
56
48
  valueChanged(_oldValue, newValue) {
57
49
  if (newValue !== void 0 && newValue !== null && this._textFieldEl && newValue !== this._textFieldEl.value) {
@@ -154,6 +146,14 @@ function syncFieldAndPadValues(x) {
154
146
  function stopPropagation(_, { event: e }) {
155
147
  e.stopImmediatePropagation();
156
148
  }
149
+ function deleteLastCharacter(dialPad) {
150
+ dialPad.value = dialPad.value.slice(0, -1);
151
+ dialPad.$emit("input");
152
+ dialPad.$emit("change");
153
+ if (dialPad.value === "") {
154
+ dialPad._textFieldEl.focus();
155
+ }
156
+ }
157
157
  function renderTextField(textFieldTag, buttonTag) {
158
158
  return index.html`<${textFieldTag} ${ref.ref(
159
159
  "_textFieldEl"
@@ -170,8 +170,13 @@ function renderTextField(textFieldTag, buttonTag) {
170
170
  ${when.when(
171
171
  (x) => x.value && x.value.length && x.value.length > 0,
172
172
  index.html`<${buttonTag}
173
- slot="action-items" size='super-condensed' icon="backspace-line" aria-label="${(x) => x.deleteAriaLabel || x.locale.dialPad.deleteLabel}"
174
- appearance='ghost' ?disabled="${(x) => x.disabled || x.callActive}" @click="${(x) => x._deleteLastCharacter()}">
173
+ slot="action-items"
174
+ size='super-condensed'
175
+ icon="backspace-line"
176
+ aria-label="${(x) => x.deleteAriaLabel || x.locale.dialPad.deleteLabel}"
177
+ appearance='ghost'
178
+ ?disabled="${(x) => x.disabled || x.callActive}"
179
+ @click="${(x) => deleteLastCharacter(x)}">
175
180
  </${buttonTag}>`
176
181
  )}
177
182
  </${textFieldTag}>`;
@@ -220,7 +225,7 @@ function renderDialButton(buttonTag) {
220
225
  </${buttonTag}>`;
221
226
  }
222
227
  const DialPadTemplate = (context) => {
223
- const buttonTag = context.tagFor(definition.Button);
228
+ const buttonTag = context.tagFor(definition.Button$1);
224
229
  const iconTag = context.tagFor(icon.Icon);
225
230
  const textFieldTag = context.tagFor(definition$1.TextField);
226
231
  return index.html` <div class="${getClasses}">
@@ -1,5 +1,5 @@
1
1
  import { F as FoundationElement, a as attr, h as html, r as registerFactory } from './index.js';
2
- import { B as Button, a as buttonRegistries } from './definition11.js';
2
+ import { c as Button, a as buttonRegistries } from './definition11.js';
3
3
  import { T as TextField, a as textFieldRegistries } from './definition56.js';
4
4
  import { a as applyMixins } from './apply-mixins.js';
5
5
  import { L as Localized } from './localized.js';
@@ -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}>`;