@vonage/vivid 3.51.0 → 3.52.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 (261) hide show
  1. package/alert/index.cjs +1 -1
  2. package/alert/index.js +1 -1
  3. package/appearance-ui/index.cjs +19 -11
  4. package/appearance-ui/index.js +19 -11
  5. package/audio-player/index.cjs +2 -1
  6. package/audio-player/index.js +2 -1
  7. package/card/index.cjs +1 -1
  8. package/card/index.js +1 -1
  9. package/combobox/index.cjs +2 -5
  10. package/combobox/index.js +2 -5
  11. package/custom-elements.json +1357 -529
  12. package/date-picker/index.cjs +3 -6
  13. package/date-picker/index.js +3 -6
  14. package/date-range-picker/index.cjs +2 -5
  15. package/date-range-picker/index.js +2 -5
  16. package/dialog/index.cjs +1 -1
  17. package/dialog/index.js +1 -1
  18. package/elevation/index.cjs +1 -1
  19. package/elevation/index.js +1 -1
  20. package/file-picker/index.cjs +0 -2
  21. package/file-picker/index.js +0 -2
  22. package/header/index.cjs +1 -1
  23. package/header/index.js +1 -1
  24. package/index.cjs +60 -58
  25. package/index.js +22 -23
  26. package/lib/avatar/definition.d.ts +1 -1
  27. package/lib/button/button.d.ts +1 -0
  28. package/lib/button/definition.d.ts +1 -1
  29. package/lib/calendar-event/definition.d.ts +1 -1
  30. package/lib/components.d.ts +1 -0
  31. package/lib/layout/definition.d.ts +1 -1
  32. package/lib/menu-item/menu-item.d.ts +3 -0
  33. package/lib/range-slider/definition.d.ts +3 -0
  34. package/lib/range-slider/locale.d.ts +4 -0
  35. package/lib/range-slider/range-slider.d.ts +32 -0
  36. package/lib/range-slider/range-slider.form-associated.d.ts +10 -0
  37. package/lib/range-slider/range-slider.template.d.ts +4 -0
  38. package/lib/range-slider/utils/lerp.d.ts +2 -0
  39. package/lib/range-slider/utils/roundToStepValue.d.ts +1 -0
  40. package/lib/slider/slider.template.d.ts +1 -0
  41. package/lib/split-button/definition.d.ts +1 -1
  42. package/listbox/index.cjs +23 -22
  43. package/listbox/index.js +23 -22
  44. package/locales/en-GB.cjs +4 -0
  45. package/locales/en-GB.js +4 -0
  46. package/locales/en-US.cjs +4 -0
  47. package/locales/en-US.js +4 -0
  48. package/locales/ja-JP.cjs +5 -1
  49. package/locales/ja-JP.js +5 -1
  50. package/locales/zh-CN.cjs +4 -0
  51. package/locales/zh-CN.js +4 -0
  52. package/menu/index.cjs +3 -3
  53. package/menu/index.js +3 -3
  54. package/menu-item/index.cjs +2 -2
  55. package/menu-item/index.js +2 -2
  56. package/number-field/index.cjs +0 -2
  57. package/number-field/index.js +0 -2
  58. package/package.json +34 -34
  59. package/popup/index.cjs +2 -2
  60. package/popup/index.js +2 -2
  61. package/range-slider/index.cjs +22 -0
  62. package/range-slider/index.js +20 -0
  63. package/select/index.cjs +3 -3
  64. package/select/index.js +3 -3
  65. package/selectable-box/index.cjs +1 -1
  66. package/selectable-box/index.js +1 -1
  67. package/shared/Reflector.cjs +5 -1
  68. package/shared/Reflector.js +5 -1
  69. package/shared/affix.cjs +11 -4
  70. package/shared/affix.js +12 -4
  71. package/shared/anchored.cjs +8 -2
  72. package/shared/anchored.js +8 -2
  73. package/shared/definition.cjs +8 -3
  74. package/shared/definition.js +8 -3
  75. package/shared/definition10.cjs +5 -5
  76. package/shared/definition10.js +5 -5
  77. package/shared/definition11.cjs +75 -47
  78. package/shared/definition11.js +76 -48
  79. package/shared/definition12.cjs +12 -14
  80. package/shared/definition12.js +12 -14
  81. package/shared/definition13.cjs +118 -75
  82. package/shared/definition13.js +118 -75
  83. package/shared/definition14.cjs +33 -32
  84. package/shared/definition14.js +33 -32
  85. package/shared/definition15.cjs +20 -7
  86. package/shared/definition15.js +20 -7
  87. package/shared/definition16.cjs +37 -42
  88. package/shared/definition16.js +36 -41
  89. package/shared/definition17.cjs +125 -65
  90. package/shared/definition17.js +126 -66
  91. package/shared/definition18.cjs +30 -14
  92. package/shared/definition18.js +30 -14
  93. package/shared/definition19.cjs +116 -80
  94. package/shared/definition19.js +116 -80
  95. package/shared/definition2.cjs +10 -5
  96. package/shared/definition2.js +10 -5
  97. package/shared/definition20.cjs +16 -15
  98. package/shared/definition20.js +16 -15
  99. package/shared/definition21.cjs +6 -10
  100. package/shared/definition21.js +6 -10
  101. package/shared/definition22.cjs +14 -18
  102. package/shared/definition22.js +14 -18
  103. package/shared/definition23.cjs +34 -35
  104. package/shared/definition23.js +34 -35
  105. package/shared/definition24.cjs +116 -69
  106. package/shared/definition24.js +116 -69
  107. package/shared/definition25.cjs +2 -4
  108. package/shared/definition25.js +2 -4
  109. package/shared/definition26.cjs +9 -8
  110. package/shared/definition26.js +9 -8
  111. package/shared/definition27.cjs +7 -5
  112. package/shared/definition27.js +7 -5
  113. package/shared/definition28.cjs +209 -143
  114. package/shared/definition28.js +209 -143
  115. package/shared/definition29.cjs +10 -4
  116. package/shared/definition29.js +10 -4
  117. package/shared/definition3.cjs +7 -10
  118. package/shared/definition3.js +7 -10
  119. package/shared/definition30.cjs +7 -5
  120. package/shared/definition30.js +7 -5
  121. package/shared/definition31.cjs +2 -4
  122. package/shared/definition31.js +2 -4
  123. package/shared/definition32.cjs +1 -3
  124. package/shared/definition32.js +1 -3
  125. package/shared/definition33.cjs +7 -10
  126. package/shared/definition33.js +7 -10
  127. package/shared/definition34.cjs +76 -59
  128. package/shared/definition34.js +76 -59
  129. package/shared/definition35.cjs +19 -20
  130. package/shared/definition35.js +19 -20
  131. package/shared/definition36.cjs +30 -14
  132. package/shared/definition36.js +30 -14
  133. package/shared/definition37.cjs +33 -46
  134. package/shared/definition37.js +33 -46
  135. package/shared/definition38.cjs +31 -33
  136. package/shared/definition38.js +31 -33
  137. package/shared/definition39.cjs +13 -4
  138. package/shared/definition39.js +13 -4
  139. package/shared/definition4.cjs +23 -11
  140. package/shared/definition4.js +23 -11
  141. package/shared/definition40.cjs +19 -14
  142. package/shared/definition40.js +19 -14
  143. package/shared/definition41.cjs +534 -635
  144. package/shared/definition41.js +534 -635
  145. package/shared/definition42.cjs +674 -106
  146. package/shared/definition42.js +673 -105
  147. package/shared/definition43.cjs +122 -79
  148. package/shared/definition43.js +120 -77
  149. package/shared/definition44.cjs +72 -567
  150. package/shared/definition44.js +71 -565
  151. package/shared/definition45.cjs +520 -118
  152. package/shared/definition45.js +518 -117
  153. package/shared/definition46.cjs +117 -130
  154. package/shared/definition46.js +116 -129
  155. package/shared/definition47.cjs +152 -18
  156. package/shared/definition47.js +151 -17
  157. package/shared/definition48.cjs +20 -77
  158. package/shared/definition48.js +19 -76
  159. package/shared/definition49.cjs +52 -495
  160. package/shared/definition49.js +51 -494
  161. package/shared/definition5.cjs +20 -17
  162. package/shared/definition5.js +20 -17
  163. package/shared/definition50.cjs +525 -24
  164. package/shared/definition50.js +524 -23
  165. package/shared/definition51.cjs +28 -119
  166. package/shared/definition51.js +26 -118
  167. package/shared/definition52.cjs +113 -266
  168. package/shared/definition52.js +113 -265
  169. package/shared/definition53.cjs +285 -245
  170. package/shared/definition53.js +285 -245
  171. package/shared/definition54.cjs +285 -751
  172. package/shared/definition54.js +284 -750
  173. package/shared/definition55.cjs +828 -99
  174. package/shared/definition55.js +827 -98
  175. package/shared/definition56.cjs +126 -77
  176. package/shared/definition56.js +125 -76
  177. package/shared/definition57.cjs +125 -71
  178. package/shared/definition57.js +124 -70
  179. package/shared/definition58.cjs +73 -287
  180. package/shared/definition58.js +74 -288
  181. package/shared/definition59.cjs +298 -40
  182. package/shared/definition59.js +297 -39
  183. package/shared/definition6.cjs +3 -4
  184. package/shared/definition6.js +3 -4
  185. package/shared/definition60.cjs +24 -1784
  186. package/shared/definition60.js +23 -1783
  187. package/shared/definition61.cjs +1819 -11
  188. package/shared/definition61.js +1818 -11
  189. package/shared/definition7.cjs +6 -4
  190. package/shared/definition7.js +6 -4
  191. package/shared/definition8.cjs +25 -18
  192. package/shared/definition8.js +25 -18
  193. package/shared/definition9.cjs +6 -9
  194. package/shared/definition9.js +6 -9
  195. package/shared/icon.cjs +7 -2
  196. package/shared/icon.js +7 -2
  197. package/shared/index2.cjs +1 -1
  198. package/shared/index2.js +1 -1
  199. package/shared/key-codes2.cjs +8 -0
  200. package/shared/key-codes2.js +5 -1
  201. package/shared/localization/Locale.d.ts +2 -0
  202. package/shared/patterns/index.d.ts +0 -1
  203. package/shared/presentationDate.cjs +126 -78
  204. package/shared/presentationDate.js +126 -78
  205. package/shared/slider.template.cjs +71 -0
  206. package/shared/slider.template.js +67 -0
  207. package/shared/text-anchor.template.cjs +30 -35
  208. package/shared/text-anchor.template.js +30 -35
  209. package/shared/text-field.cjs +1 -1
  210. package/shared/text-field.js +1 -1
  211. package/side-drawer/index.cjs +1 -1
  212. package/side-drawer/index.js +1 -1
  213. package/slider/index.cjs +2 -1
  214. package/slider/index.js +2 -1
  215. package/split-button/index.cjs +1 -1
  216. package/split-button/index.js +1 -1
  217. package/styles/core/all.css +1 -1
  218. package/styles/core/theme.css +1 -1
  219. package/styles/core/typography.css +1 -1
  220. package/styles/fonts/spezia-variable.css +39 -13
  221. package/styles/tokens/theme-dark.css +4 -4
  222. package/styles/tokens/theme-light.css +4 -4
  223. package/styles/tokens/vivid-2-compat.css +4 -2
  224. package/switch/index.cjs +1 -1
  225. package/switch/index.js +1 -1
  226. package/tab/index.cjs +1 -1
  227. package/tab/index.js +1 -1
  228. package/tab-panel/index.cjs +1 -1
  229. package/tab-panel/index.js +1 -1
  230. package/tabs/index.cjs +3 -3
  231. package/tabs/index.js +3 -3
  232. package/tag/index.cjs +1 -1
  233. package/tag/index.js +1 -1
  234. package/tag-group/index.cjs +1 -1
  235. package/tag-group/index.js +1 -1
  236. package/text-area/index.cjs +1 -1
  237. package/text-area/index.js +1 -1
  238. package/text-field/index.cjs +1 -4
  239. package/text-field/index.js +1 -4
  240. package/time-picker/index.cjs +4 -7
  241. package/time-picker/index.js +4 -7
  242. package/toggletip/index.cjs +3 -3
  243. package/toggletip/index.js +3 -3
  244. package/tooltip/index.cjs +3 -3
  245. package/tooltip/index.js +3 -3
  246. package/tree-item/index.cjs +1 -1
  247. package/tree-item/index.js +1 -1
  248. package/tree-view/index.cjs +1 -1
  249. package/tree-view/index.js +1 -1
  250. package/vivid.api.json +117 -1
  251. package/focus/index.cjs +0 -7
  252. package/focus/index.js +0 -5
  253. package/lib/focus/definition.d.ts +0 -3
  254. package/lib/focus/focus.d.ts +0 -3
  255. package/lib/focus/focus.template.d.ts +0 -4
  256. package/lib/popup/popup.d.ts +0 -21
  257. package/shared/focus.cjs +0 -8
  258. package/shared/focus.js +0 -6
  259. package/shared/focus2.cjs +0 -11
  260. package/shared/focus2.js +0 -9
  261. package/shared/patterns/focus.d.ts +0 -3
@@ -1,84 +1,193 @@
1
- import { a as attr, o as observable, h as html, r as registerFactory } from './index.js';
2
- import { f as focusRegistries } from './definition61.js';
1
+ import { F as FoundationElement, _ as __decorate, a as attr, n as nullableNumberConverter, o as observable, h as html, r as registerFactory } from './index.js';
3
2
  import { a as iconRegistries } from './definition26.js';
4
- import { A as AffixIcon, a as affixIconTemplateFactory } from './affix.js';
3
+ import './affix.js';
5
4
  import { e as errorText, f as formElements, F as FormElementSuccessText, a as FormElementHelperText, b as FormElementCharCount, g as getFeedbackTemplate } from './index2.js';
6
5
  import { R as Reflector } from './Reflector.js';
7
- import { m as memoizeWith } from './icon.js';
8
- import { T as TextField$1 } from './text-field2.js';
6
+ import { D as DelegatesARIATextbox } from './text-field2.js';
9
7
  import { a as applyMixins } from './apply-mixins.js';
10
- import { s as styles } from './text-field.js';
11
- import { f as focusTemplateFactory } from './focus2.js';
8
+ import { F as FormAssociated } from './form-associated.js';
12
9
  import { w as when } from './when.js';
13
- import { s as slotted } from './slotted.js';
10
+ import { r as ref } from './ref.js';
14
11
  import { c as classNames } from './class-names.js';
15
12
 
16
- // Unique ID creation requires a high quality random # generator. In the browser we therefore
17
- // require the crypto API and do not support built-in fallback to lower quality random number
18
- // generators (like Math.random()).
19
- let getRandomValues;
20
- const rnds8 = new Uint8Array(16);
21
- function rng() {
22
- // lazy load so that environments that need to polyfill have a chance to do so
23
- if (!getRandomValues) {
24
- // getRandomValues needs to be invoked in a context where "this" is a Crypto implementation.
25
- getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);
26
-
27
- if (!getRandomValues) {
28
- throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');
29
- }
30
- }
31
-
32
- return getRandomValues(rnds8);
13
+ class _TextArea extends FoundationElement {
33
14
  }
34
-
35
15
  /**
36
- * Convert array of 16 byte values to UUID string format of the form:
37
- * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
16
+ * A form-associated base class for the {@link @microsoft/fast-foundation#(TextArea:class)} component.
17
+ *
18
+ * @internal
38
19
  */
39
-
40
- const byteToHex = [];
41
-
42
- for (let i = 0; i < 256; ++i) {
43
- byteToHex.push((i + 0x100).toString(16).slice(1));
44
- }
45
-
46
- function unsafeStringify(arr, offset = 0) {
47
- // Note: Be careful editing this code! It's been tuned for performance
48
- // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434
49
- return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];
20
+ class FormAssociatedTextArea extends FormAssociated(_TextArea) {
21
+ constructor() {
22
+ super(...arguments);
23
+ this.proxy = document.createElement("textarea");
24
+ }
50
25
  }
51
26
 
52
- const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);
53
- const native = {
54
- randomUUID
27
+ /**
28
+ * Resize mode for a TextArea
29
+ * @public
30
+ */
31
+ const TextAreaResize = {
32
+ /**
33
+ * No resize.
34
+ */
35
+ none: "none",
36
+ /**
37
+ * Resize vertically and horizontally.
38
+ */
39
+ both: "both",
40
+ /**
41
+ * Resize horizontally.
42
+ */
43
+ horizontal: "horizontal",
44
+ /**
45
+ * Resize vertically.
46
+ */
47
+ vertical: "vertical",
55
48
  };
56
49
 
57
- function v4(options, buf, offset) {
58
- if (native.randomUUID && !buf && !options) {
59
- return native.randomUUID();
60
- }
61
-
62
- options = options || {};
63
- const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
64
-
65
- rnds[6] = rnds[6] & 0x0f | 0x40;
66
- rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided
67
-
68
- if (buf) {
69
- offset = offset || 0;
70
-
71
- for (let i = 0; i < 16; ++i) {
72
- buf[offset + i] = rnds[i];
50
+ /**
51
+ * A Text Area Custom HTML Element.
52
+ * Based largely on the {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea | <textarea> element }.
53
+ *
54
+ * @slot - The default slot for the label
55
+ * @csspart label - The label
56
+ * @csspart root - The element wrapping the control
57
+ * @csspart control - The textarea element
58
+ * @fires change - Emits a custom 'change' event when the textarea emits a change event
59
+ *
60
+ * @public
61
+ */
62
+ let TextArea$1 = class TextArea extends FormAssociatedTextArea {
63
+ constructor() {
64
+ super(...arguments);
65
+ /**
66
+ * The resize mode of the element.
67
+ * @public
68
+ * @remarks
69
+ * HTML Attribute: resize
70
+ */
71
+ this.resize = TextAreaResize.none;
72
+ /**
73
+ * Sizes the element horizontally by a number of character columns.
74
+ *
75
+ * @public
76
+ * @remarks
77
+ * HTML Attribute: cols
78
+ */
79
+ this.cols = 20;
80
+ /**
81
+ * @internal
82
+ */
83
+ this.handleTextInput = () => {
84
+ this.value = this.control.value;
85
+ };
73
86
  }
87
+ readOnlyChanged() {
88
+ if (this.proxy instanceof HTMLTextAreaElement) {
89
+ this.proxy.readOnly = this.readOnly;
90
+ }
91
+ }
92
+ autofocusChanged() {
93
+ if (this.proxy instanceof HTMLTextAreaElement) {
94
+ this.proxy.autofocus = this.autofocus;
95
+ }
96
+ }
97
+ listChanged() {
98
+ if (this.proxy instanceof HTMLTextAreaElement) {
99
+ this.proxy.setAttribute("list", this.list);
100
+ }
101
+ }
102
+ maxlengthChanged() {
103
+ if (this.proxy instanceof HTMLTextAreaElement) {
104
+ this.proxy.maxLength = this.maxlength;
105
+ }
106
+ }
107
+ minlengthChanged() {
108
+ if (this.proxy instanceof HTMLTextAreaElement) {
109
+ this.proxy.minLength = this.minlength;
110
+ }
111
+ }
112
+ spellcheckChanged() {
113
+ if (this.proxy instanceof HTMLTextAreaElement) {
114
+ this.proxy.spellcheck = this.spellcheck;
115
+ }
116
+ }
117
+ /**
118
+ * Selects all the text in the text area
119
+ *
120
+ * @public
121
+ */
122
+ select() {
123
+ this.control.select();
124
+ /**
125
+ * The select event does not permeate the shadow DOM boundary.
126
+ * This fn effectively proxies the select event,
127
+ * emitting a `select` event whenever the internal
128
+ * control emits a `select` event
129
+ */
130
+ this.$emit("select");
131
+ }
132
+ /**
133
+ * Change event handler for inner control.
134
+ * @remarks
135
+ * "Change" events are not `composable` so they will not
136
+ * permeate the shadow DOM boundary. This fn effectively proxies
137
+ * the change event, emitting a `change` event whenever the internal
138
+ * control emits a `change` event
139
+ * @internal
140
+ */
141
+ handleChange() {
142
+ this.$emit("change");
143
+ }
144
+ /** {@inheritDoc (FormAssociated:interface).validate} */
145
+ validate() {
146
+ super.validate(this.control);
147
+ }
148
+ };
149
+ __decorate([
150
+ attr({ mode: "boolean" })
151
+ ], TextArea$1.prototype, "readOnly", void 0);
152
+ __decorate([
153
+ attr
154
+ ], TextArea$1.prototype, "resize", void 0);
155
+ __decorate([
156
+ attr({ mode: "boolean" })
157
+ ], TextArea$1.prototype, "autofocus", void 0);
158
+ __decorate([
159
+ attr({ attribute: "form" })
160
+ ], TextArea$1.prototype, "formId", void 0);
161
+ __decorate([
162
+ attr
163
+ ], TextArea$1.prototype, "list", void 0);
164
+ __decorate([
165
+ attr({ converter: nullableNumberConverter })
166
+ ], TextArea$1.prototype, "maxlength", void 0);
167
+ __decorate([
168
+ attr({ converter: nullableNumberConverter })
169
+ ], TextArea$1.prototype, "minlength", void 0);
170
+ __decorate([
171
+ attr
172
+ ], TextArea$1.prototype, "name", void 0);
173
+ __decorate([
174
+ attr
175
+ ], TextArea$1.prototype, "placeholder", void 0);
176
+ __decorate([
177
+ attr({ converter: nullableNumberConverter, mode: "fromView" })
178
+ ], TextArea$1.prototype, "cols", void 0);
179
+ __decorate([
180
+ attr({ converter: nullableNumberConverter, mode: "fromView" })
181
+ ], TextArea$1.prototype, "rows", void 0);
182
+ __decorate([
183
+ attr({ mode: "boolean" })
184
+ ], TextArea$1.prototype, "spellcheck", void 0);
185
+ __decorate([
186
+ observable
187
+ ], TextArea$1.prototype, "defaultSlottedNodes", void 0);
188
+ applyMixins(TextArea$1, DelegatesARIATextbox);
74
189
 
75
- return buf;
76
- }
77
-
78
- return unsafeStringify(rnds);
79
- }
80
-
81
- const generateRandomId = () => v4();
190
+ const styles = ":host{display:inline-block}.base{display:inline-grid;grid-template-columns:1fr max-content;inline-size:100%;row-gap:4px}.base{--_appearance-color-text: var(--vvd-color-canvas-text);--_appearance-color-fill: var(--vvd-color-canvas);--_appearance-color-outline: var(--_connotation-color-intermediate)}.base.appearance-ghost{--_appearance-color-text: var(--_connotation-color-primary);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.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(.hover,:hover):where(:not(.disabled,:disabled,.readonly)).appearance-ghost{--_appearance-color-text: var(--_connotation-color-primary);--_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: var(--vvd-color-neutral-100);--_appearance-color-outline: var(--vvd-color-neutral-300)}.base:where(.disabled,:disabled).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.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:where(.readonly):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: var(--vvd-color-neutral-600);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.base:where(.error):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: var(--vvd-color-alert-500)}.base:where(.error):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-alert-50);--_appearance-color-outline: transparent}.base:where(.success):where(:not(.disabled,:disabled)){--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: var(--vvd-color-success-500)}.base:where(.success):where(:not(.disabled,:disabled)).appearance-ghost{--_appearance-color-text: notSet;--_appearance-color-fill: var(--vvd-color-success-50);--_appearance-color-outline: transparent}.base.connotation-success{--_connotation-color-primary: var(--vvd-text-area-success-primary, var(--vvd-color-success-500));--_connotation-color-primary-text: var(--vvd-text-area-success-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-text-area-success-primary-increment, var(--vvd-color-success-600));--_connotation-color-intermediate: var(--vvd-text-area-success-intermediate, var(--vvd-color-success-500));--_connotation-color-firm: var(--vvd-text-area-success-firm, var(--vvd-color-success-600));--_connotation-color-fierce: var(--vvd-text-area-success-fierce, var(--vvd-color-success-700));--_connotation-color-faint: var(--vvd-text-area-success-faint, var(--vvd-color-success-50));--_connotation-color-soft: var(--vvd-text-area-success-soft, var(--vvd-color-success-100))}.base.connotation-alert{--_connotation-color-primary: var(--vvd-text-area-alert-primary, var(--vvd-color-alert-500));--_connotation-color-primary-text: var(--vvd-text-area-alert-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-text-area-alert-primary-increment, var(--vvd-color-alert-600));--_connotation-color-intermediate: var(--vvd-text-area-alert-intermediate, var(--vvd-color-alert-500));--_connotation-color-firm: var(--vvd-text-area-alert-firm, var(--vvd-color-alert-600));--_connotation-color-fierce: var(--vvd-text-area-alert-fierce, var(--vvd-color-alert-700));--_connotation-color-faint: var(--vvd-text-area-alert-faint, var(--vvd-color-alert-50));--_connotation-color-soft: var(--vvd-text-area-alert-soft, var(--vvd-color-alert-100))}.base:not(.connotation-success,.connotation-alert){--_connotation-color-primary: var(--vvd-text-area-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-text-area-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-text-area-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-intermediate: var(--vvd-text-area-accent-intermediate, var(--vvd-color-neutral-500));--_connotation-color-firm: var(--vvd-text-area-accent-firm, var(--vvd-color-canvas-text));--_connotation-color-fierce: var(--vvd-text-area-accent-fierce, var(--vvd-color-neutral-700));--_connotation-color-faint: var(--vvd-text-area-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-text-area-accent-soft, var(--vvd-color-neutral-100))}@supports (user-select: none){.base{user-select:none}}.base:not(.disabled){--_low-ink-color: var(--vvd-color-neutral-600)}.base.disabled{--_low-ink-color: var(--_appearance-color-text);cursor:not-allowed}.label{color:var(--vvd-color-canvas-text);contain:inline-size;font:var(--vvd-typography-base);grid-column:1/2;grid-row:1;line-height:20px}.char-count{color:var(--_low-ink-color);font:var(--vvd-typography-base);grid-column:2/-1}.control{padding:8px 16px;border:0 none;border-radius:8px;appearance:none;background-color:var(--_appearance-color-fill);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);color:var(--_appearance-color-text);font:var(--vvd-typography-base);grid-column:1/-1;min-block-size:calc(1px*(40 + 4*clamp(-1,var(--vvd-size-density, 0),2)));resize:none;transition:box-shadow .2s,background-color .2s,color .2s}@supports selector(::-webkit-resizer){.control::-webkit-resizer{background-image:linear-gradient(315deg,transparent 0,transparent 2px,var(--vvd-color-canvas-text) 2px,var(--vvd-color-canvas-text) 3px,transparent 3px,transparent 5px,var(--vvd-color-canvas-text) 5px,var(--vvd-color-canvas-text) 6px,transparent 6px,transparent 8px,transparent 100%);background-repeat:no-repeat;background-size:10px 10px;block-size:10px;inline-size:10px}}.control:disabled{opacity:1;pointer-events:none;-webkit-text-fill-color:var(--_appearance-color-text)}.control::placeholder,.control:disabled::placeholder{opacity:1;pointer-events:none;-webkit-text-fill-color:var(--_low-ink-color)}.control:focus-visible{--focus-stroke-gap-color: transparent;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))}:host([resize=both]) .control{resize:both}:host([resize=horizontal]) .control{resize:horizontal}:host([resize=vertical]) .control{resize:vertical}\n";
82
191
 
83
192
  var __defProp = Object.defineProperty;
84
193
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -91,215 +200,146 @@ var __decorateClass = (decorators, target, key, kind) => {
91
200
  __defProp(target, key, result);
92
201
  return result;
93
202
  };
94
- const safariWorkaroundClassName = "_vvd-3-text-field-safari-workaround";
95
- const getSafariWorkaroundStyleSheet = memoizeWith(() => "", () => {
96
- const styleSheet = new CSSStyleSheet();
97
- const supportsReplaceSync = "replaceSync" in styleSheet;
98
- if (supportsReplaceSync) {
99
- styleSheet.replaceSync(`
100
- .${safariWorkaroundClassName}::placeholder {
101
- opacity: 1 !important;
102
- -webkit-text-fill-color: var(--_low-ink-color) !important;
103
- }`);
104
- }
105
- return styleSheet;
106
- });
107
- const installSafariWorkaroundStyle = (forElement) => {
108
- const root = forElement.getRootNode();
109
- const workaroundStyleSheet = getSafariWorkaroundStyleSheet();
110
- const supportsAdoptedStyleSheets = "adoptedStyleSheets" in root;
111
- if (!supportsAdoptedStyleSheets) {
112
- return;
113
- }
114
- if (!root.adoptedStyleSheets.includes(workaroundStyleSheet)) {
115
- root.adoptedStyleSheets = [...root.adoptedStyleSheets, workaroundStyleSheet];
116
- }
203
+ var __accessCheck = (obj, member, msg) => {
204
+ if (!member.has(obj))
205
+ throw TypeError("Cannot " + msg);
206
+ };
207
+ var __privateGet = (obj, member, getter) => {
208
+ __accessCheck(obj, member, "read from private field");
209
+ return getter ? getter.call(obj) : member.get(obj);
210
+ };
211
+ var __privateAdd = (obj, member, value) => {
212
+ if (member.has(obj))
213
+ throw TypeError("Cannot add the same private member more than once");
214
+ member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
117
215
  };
118
- let TextField = class extends TextField$1 {
216
+ var __privateSet = (obj, member, value, setter) => {
217
+ __accessCheck(obj, member, "write to private field");
218
+ setter ? setter.call(obj, value) : member.set(obj, value);
219
+ return value;
220
+ };
221
+ var _reflectToTextArea;
222
+ let TextArea = class extends TextArea$1 {
119
223
  constructor() {
120
224
  super(...arguments);
121
- /**
122
- * @internal
123
- */
124
- this._labelEl = null;
125
- }
126
- /**
127
- * @internal
128
- */
129
- labelChanged() {
130
- if (this._labelEl) {
131
- this.#handleLabelChange(this._labelEl);
132
- }
133
- }
134
- #handleLabelChange(labelEl) {
135
- if (!this.label) {
136
- labelEl.remove();
137
- } else {
138
- labelEl.textContent = this.label;
139
- if (!labelEl.isConnected) {
140
- this.appendChild(labelEl);
141
- }
142
- }
225
+ __privateAdd(this, _reflectToTextArea, void 0);
143
226
  }
144
- #reflectToInput;
145
227
  connectedCallback() {
146
228
  super.connectedCallback();
147
- if (!this.control) {
148
- const uniqueId = this.id || generateRandomId();
149
- const controlId = `vvd-text-field-control-${uniqueId}`;
150
- const input = document.createElement("input");
151
- input.slot = "_control";
152
- input.id = controlId;
153
- input.className = safariWorkaroundClassName;
154
- this.control = input;
155
- this.#reflectToInput = new Reflector(this, input);
156
- this.#reflectToInput.booleanAttribute("autofocus", "autofocus");
157
- this.#reflectToInput.booleanAttribute("disabled", "disabled");
158
- this.#reflectToInput.booleanAttribute("readOnly", "readonly");
159
- this.#reflectToInput.booleanAttribute("required", "required");
160
- this.#reflectToInput.booleanAttribute("spellcheck", "spellcheck");
161
- this.#reflectToInput.attribute("list", "list");
162
- this.#reflectToInput.attribute("maxlength", "maxlength");
163
- this.#reflectToInput.attribute("minlength", "minlength");
164
- this.#reflectToInput.attribute("pattern", "pattern");
165
- this.#reflectToInput.attribute("placeholder", "placeholder");
166
- this.#reflectToInput.attribute("size", "size");
167
- this.#reflectToInput.attribute("autoComplete", "autocomplete");
168
- this.#reflectToInput.attribute("type", "type");
169
- this.#reflectToInput.attribute("ariaAtomic", "aria-atomic");
170
- this.#reflectToInput.attribute("ariaBusy", "aria-busy");
171
- this.#reflectToInput.attribute("ariaCurrent", "aria-current");
172
- this.#reflectToInput.attribute("ariaDetails", "aria-details");
173
- this.#reflectToInput.attribute("ariaDisabled", "aria-disabled");
174
- this.#reflectToInput.attribute("ariaHaspopup", "aria-haspopup");
175
- this.#reflectToInput.attribute("ariaHidden", "aria-hidden");
176
- this.#reflectToInput.attribute("ariaInvalid", "aria-invalid");
177
- this.#reflectToInput.attribute("ariaKeyshortcuts", "aria-keyshortcuts");
178
- this.#reflectToInput.attribute("ariaLabel", "aria-label");
179
- this.#reflectToInput.attribute("ariaLive", "aria-live");
180
- this.#reflectToInput.attribute("ariaRelevant", "aria-relevant");
181
- this.#reflectToInput.attribute("ariaRoledescription", "aria-roledescription");
182
- this.#reflectToInput.property("value", "value", true);
183
- input.addEventListener("input", () => {
184
- this.handleTextInput();
185
- });
186
- input.addEventListener("change", () => {
187
- this.handleChange();
188
- });
189
- input.addEventListener("blur", () => {
190
- this.$emit("blur", void 0, { bubbles: false });
191
- });
192
- input.addEventListener("focus", () => {
193
- this.$emit("focus", void 0, { bubbles: false });
194
- });
195
- this.appendChild(input);
196
- const label = document.createElement("label");
197
- label.slot = "_label";
198
- label.htmlFor = controlId;
199
- this._labelEl = label;
200
- this.#handleLabelChange(label);
201
- installSafariWorkaroundStyle(this);
202
- }
229
+ __privateSet(this, _reflectToTextArea, new Reflector(this, this.control));
230
+ __privateGet(this, _reflectToTextArea).property("value", "value", true);
203
231
  }
204
232
  disconnectedCallback() {
205
233
  super.disconnectedCallback();
206
- this.#reflectToInput.destroy();
207
- }
208
- focus() {
209
- this.control?.focus();
234
+ __privateGet(this, _reflectToTextArea).destroy();
210
235
  }
211
236
  };
237
+ _reflectToTextArea = new WeakMap();
212
238
  __decorateClass([
213
239
  attr
214
- ], TextField.prototype, "appearance", 2);
215
- __decorateClass([
216
- attr
217
- ], TextField.prototype, "shape", 2);
218
- __decorateClass([
219
- attr
220
- ], TextField.prototype, "autoComplete", 2);
221
- __decorateClass([
222
- observable
223
- ], TextField.prototype, "actionItemsSlottedContent", 2);
224
- __decorateClass([
225
- observable
226
- ], TextField.prototype, "leadingActionItemsSlottedContent", 2);
227
- TextField = __decorateClass([
240
+ ], TextArea.prototype, "wrap", 2);
241
+ TextArea = __decorateClass([
228
242
  errorText,
229
243
  formElements
230
- ], TextField);
231
- applyMixins(TextField, AffixIcon, FormElementCharCount, FormElementHelperText, FormElementSuccessText);
244
+ ], TextArea);
245
+ applyMixins(
246
+ TextArea,
247
+ FormElementCharCount,
248
+ FormElementHelperText,
249
+ FormElementSuccessText
250
+ );
232
251
 
233
- const getStateClasses = ({
252
+ const getClasses = ({
253
+ value,
234
254
  errorValidationMessage,
235
255
  disabled,
236
- value,
237
- readOnly,
238
256
  placeholder,
239
- appearance,
240
- shape,
241
- label,
242
- successText,
243
- actionItemsSlottedContent,
244
- leadingActionItemsSlottedContent,
245
- icon
257
+ readOnly,
258
+ successText
246
259
  }) => classNames(
247
- ["error", Boolean(errorValidationMessage)],
248
- ["disabled", disabled],
249
- ["has-value", Boolean(value)],
260
+ "base",
250
261
  ["readonly", readOnly],
251
262
  ["placeholder", Boolean(placeholder)],
252
- [`appearance-${appearance}`, Boolean(appearance)],
253
- [`shape-${shape}`, Boolean(shape)],
254
- ["no-label", !label],
255
- ["has-icon", !!icon],
256
- ["success", Boolean(successText)],
257
- ["action-items", !!actionItemsSlottedContent?.length],
258
- ["leading-action-items", !!leadingActionItemsSlottedContent?.length],
259
- ["no-leading", !(leadingActionItemsSlottedContent?.length || icon)]
263
+ ["disabled", disabled],
264
+ ["error", Boolean(errorValidationMessage)],
265
+ ["has-value", Boolean(value)],
266
+ ["success", !!successText]
260
267
  );
268
+ function renderLabel() {
269
+ return html` <label for="control" class="label">
270
+ ${(x) => x.label}
271
+ </label>`;
272
+ }
261
273
  function renderCharCount() {
262
274
  return html`
263
- <span class="char-count">${(x) => x.value ? x.value.length : 0} / ${(x) => x.maxlength}</span>
275
+ <span class="char-count"
276
+ >${(x) => x.value ? x.value.length : 0} / ${(x) => x.maxlength}</span
277
+ >
264
278
  `;
265
279
  }
266
- const TextfieldTemplate = (context) => {
267
- const affixIconTemplate = affixIconTemplateFactory(context);
268
- const focusTemplate = focusTemplateFactory(context);
280
+ const TextAreaTemplate = (context) => {
269
281
  return html`
270
- <div class="base ${getStateClasses}">
271
- ${when((x) => x.charCount && x.maxlength, renderCharCount())}
272
- <slot class="label" name="_label"></slot>
273
- <div class="fieldset">
274
- <div class="leading-items-wrapper">
275
- <slot name="leading-action-items" ${slotted("leadingActionItemsSlottedContent")}></slot>
276
- ${(x) => affixIconTemplate(x.icon)}
277
- </div>
278
-
279
- <div class="wrapper">
280
- <slot class="control" name="_control"></slot>
281
- ${() => focusTemplate}
282
- </div>
283
- <div class="action-items-wrapper">
284
- <slot name="action-items" ${slotted("actionItemsSlottedContent")}></slot>
285
- </div>
286
-
287
- </div>
288
- ${when((x) => !x.successText && !x.errorValidationMessage && x.helperText?.length, getFeedbackTemplate("helper", context))}
289
- ${when((x) => !x.successText && x.errorValidationMessage, getFeedbackTemplate("error", context))}
290
- ${when((x) => x.successText, getFeedbackTemplate("success", context))}
291
- </div>`;
282
+ <div class="${getClasses}">
283
+ ${when((x) => x.charCount && x.maxlength, renderCharCount())}
284
+ ${when((x) => x.label, renderLabel())}
285
+ <textarea
286
+ class="control"
287
+ id="control"
288
+ ?autofocus="${(x) => x.autofocus}"
289
+ placeholder="${(x) => x.placeholder ? x.placeholder : null}"
290
+ name="${(x) => x.name ? x.name : null}"
291
+ minlength="${(x) => x.minlength ? x.minlength : null}"
292
+ maxlength="${(x) => x.maxlength ? x.maxlength : null}"
293
+ rows="${(x) => x.rows ? x.rows : null}"
294
+ cols="${(x) => x.cols ? x.cols : null}"
295
+ wrap="${(x) => x.wrap ? x.wrap : null}"
296
+ ?readonly="${(x) => x.readOnly}"
297
+ ?disabled="${(x) => x.disabled}"
298
+ ?required="${(x) => x.required}"
299
+ ?spellcheck="${(x) => x.spellcheck}"
300
+ aria-atomic="${(x) => x.ariaAtomic}"
301
+ aria-busy="${(x) => x.ariaBusy}"
302
+ aria-current="${(x) => x.ariaCurrent}"
303
+ aria-details="${(x) => x.ariaDetails}"
304
+ aria-disabled="${(x) => x.ariaDisabled}"
305
+ aria-errormessage="${(x) => x.ariaErrormessage}"
306
+ aria-haspopup="${(x) => x.ariaHaspopup}"
307
+ aria-hidden="${(x) => x.ariaHidden}"
308
+ aria-invalid="${(x) => x.ariaInvalid}"
309
+ aria-keyshortcuts="${(x) => x.ariaKeyshortcuts}"
310
+ aria-label="${(x) => x.ariaLabel}"
311
+ aria-live="${(x) => x.ariaLive}"
312
+ aria-relevant="${(x) => x.ariaRelevant}"
313
+ aria-roledescription="${(x) => x.ariaRoledescription}"
314
+ @input="${(x) => x.handleTextInput()}"
315
+ @change="${(x) => x.handleChange()}"
316
+ ${ref("control")}
317
+ >
318
+ </textarea>
319
+ ${when(
320
+ (x) => !x.successText && !x.errorValidationMessage && x.helperText?.length,
321
+ getFeedbackTemplate("helper", context)
322
+ )}
323
+ ${when(
324
+ (x) => !x.successText && x.errorValidationMessage,
325
+ getFeedbackTemplate("error", context)
326
+ )}
327
+ ${when((x) => x.successText, getFeedbackTemplate("success", context))}
328
+ </div>
329
+ `;
292
330
  };
293
331
 
294
- const textFieldDefinition = TextField.compose({
295
- baseName: "text-field",
296
- template: TextfieldTemplate,
297
- styles,
298
- shadowOptions: {
299
- delegatesFocus: true
332
+ const textAreaDefinition = TextArea.compose(
333
+ {
334
+ baseName: "text-area",
335
+ template: TextAreaTemplate,
336
+ styles,
337
+ shadowOptions: {
338
+ delegatesFocus: true
339
+ }
300
340
  }
301
- });
302
- const textFieldRegistries = [textFieldDefinition(), ...iconRegistries, ...focusRegistries];
303
- const registerTextField = registerFactory(textFieldRegistries);
341
+ );
342
+ const textAreaRegistries = [textAreaDefinition(), ...iconRegistries];
343
+ const registerTextArea = registerFactory(textAreaRegistries);
304
344
 
305
- export { TextField as T, textFieldRegistries as a, registerTextField as r, textFieldDefinition as t };
345
+ export { textAreaRegistries as a, registerTextArea as r, textAreaDefinition as t };