@vonage/vivid 3.6.0 → 3.8.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 (77) hide show
  1. package/README.md +9 -5
  2. package/custom-elements.json +585 -0
  3. package/index.js +7 -5
  4. package/lib/accordion-item/accordion-item.d.ts +3 -0
  5. package/lib/button/button.d.ts +1 -1
  6. package/lib/components.d.ts +2 -0
  7. package/lib/select/select.d.ts +2 -2
  8. package/lib/tag/definition.d.ts +4 -0
  9. package/lib/tag/index.d.ts +1 -0
  10. package/lib/tag/tag.d.ts +22 -0
  11. package/lib/tag/tag.template.d.ts +4 -0
  12. package/lib/tag-group/definition.d.ts +3 -0
  13. package/lib/tag-group/index.d.ts +1 -0
  14. package/lib/tag-group/tag-group.d.ts +3 -0
  15. package/lib/tag-group/tag-group.template.d.ts +4 -0
  16. package/package.json +1 -1
  17. package/shared/definition.js +1 -1
  18. package/shared/definition10.js +1 -1
  19. package/shared/definition12.js +1 -1
  20. package/shared/definition13.js +1 -1
  21. package/shared/definition14.js +1 -1
  22. package/shared/definition15.js +1 -1
  23. package/shared/definition17.js +3 -3
  24. package/shared/definition18.js +1 -1
  25. package/shared/definition19.js +1 -2
  26. package/shared/definition2.js +8 -7
  27. package/shared/definition20.js +1 -1
  28. package/shared/definition21.js +2 -2
  29. package/shared/definition22.js +1 -1
  30. package/shared/definition23.js +1 -1
  31. package/shared/definition24.js +1 -1
  32. package/shared/definition25.js +1 -1
  33. package/shared/definition27.js +1 -1
  34. package/shared/definition29.js +1 -1
  35. package/shared/definition31.js +1 -1
  36. package/shared/definition32.js +1 -1
  37. package/shared/definition33.js +1 -1
  38. package/shared/definition34.js +1 -1
  39. package/shared/definition35.js +1 -1
  40. package/shared/definition36.js +3 -3
  41. package/shared/definition37.js +1 -1
  42. package/shared/definition38.js +14 -8
  43. package/shared/definition39.js +1 -1
  44. package/shared/definition4.js +1 -1
  45. package/shared/definition41.js +1 -1
  46. package/shared/definition42.js +1 -1
  47. package/shared/definition44.js +1 -1
  48. package/shared/definition45.js +90 -250
  49. package/shared/definition46.js +20 -112
  50. package/shared/definition47.js +265 -65
  51. package/shared/definition48.js +98 -58
  52. package/shared/definition49.js +67 -295
  53. package/shared/definition5.js +1 -1
  54. package/shared/definition50.js +79 -0
  55. package/shared/definition51.js +305 -0
  56. package/shared/definition6.js +1 -1
  57. package/shared/definition7.js +1 -1
  58. package/shared/definition8.js +1 -1
  59. package/shared/definition9.js +1 -1
  60. package/shared/form-elements.js +1 -1
  61. package/shared/icon.js +1 -1
  62. package/shared/patterns/form-elements/form-elements.d.ts +2 -2
  63. package/shared/text-field.js +1 -1
  64. package/styles/core/all.css +1 -1
  65. package/styles/core/theme.css +1 -1
  66. package/styles/core/typography.css +1 -1
  67. package/styles/fonts/spezia-variable.css +31 -0
  68. package/styles/tokens/theme-dark.css +4 -4
  69. package/styles/tokens/theme-light.css +4 -4
  70. package/tag/index.js +16 -0
  71. package/tag-group/index.js +5 -0
  72. package/text-area/index.js +1 -2
  73. package/text-field/index.js +1 -1
  74. package/tooltip/index.js +1 -1
  75. package/tree-item/index.js +1 -1
  76. package/tree-view/index.js +1 -1
  77. package/vivid.api.json +394 -1
@@ -1,77 +1,277 @@
1
- import { _ as __decorate, a as attr, b as __metadata, U as __classPrivateFieldGet, h as html, r as registerFactory } from './index.js';
2
- import { P as Popup, p as popupRegistries } from './definition19.js';
1
+ import { F as FoundationElement, _ as __decorate, a as attr, n as nullableNumberConverter, o as observable, b as __metadata, h as html, r as registerFactory } from './index.js';
2
+ import { i as iconRegistries } from './definition3.js';
3
+ import { f as focusRegistries } from './definition4.js';
4
+ import './affix.js';
5
+ import './focus.js';
6
+ import { f as formElements, F as FormElementSuccessText, a as FormElementHelperText, b as FormElementCharCount, g as getFeedbackTemplate } from './form-elements.js';
7
+ import { D as DelegatesARIATextbox } from './text-field2.js';
8
+ import { a as applyMixins } from './apply-mixins.js';
9
+ import { F as FormAssociated } from './form-associated.js';
10
+ import { w as when } from './when.js';
11
+ import { r as ref } from './ref.js';
3
12
  import { c as classNames } from './class-names.js';
4
13
 
5
- var css_248z = "/**\n * Do not edit directly\n * Generated on Thu, 30 Mar 2023 16:21:30 GMT\n */\n.control {\n pointer-events: none;\n}\n\n.tooltip {\n width: var(--tooltip-inline-size, 240px);\n}\n.tooltip-text {\n padding: 8px 12px;\n color: var(--vvd-color-canvas-text);\n font: var(--vvd-typography-base-bold);\n}";
6
-
7
- var _Tooltip_instances, _Tooltip_anchorUpdated, _Tooltip_addEventListener, _Tooltip_removeEventListener, _Tooltip_show, _Tooltip_hide;
8
- class Tooltip extends Popup {
9
- constructor() {
10
- super(...arguments);
11
- _Tooltip_instances.add(this);
12
- _Tooltip_show.set(this, () => {
13
- this.open = true;
14
- });
15
- _Tooltip_hide.set(this, () => {
16
- this.open = false;
17
- });
18
- }
19
- connectedCallback() {
20
- super.connectedCallback();
21
- __classPrivateFieldGet(this, _Tooltip_instances, "m", _Tooltip_anchorUpdated).call(this);
22
- }
23
- disconnectedCallback() {
24
- super.disconnectedCallback();
25
- __classPrivateFieldGet(this, _Tooltip_instances, "m", _Tooltip_removeEventListener).call(this);
26
- }
27
- attributeChangedCallback(name, oldValue, newValue) {
28
- super.attributeChangedCallback(name, oldValue, newValue);
29
- __classPrivateFieldGet(this, _Tooltip_instances, "m", _Tooltip_anchorUpdated).call(this);
30
- }
14
+ class _TextArea extends FoundationElement {
15
+ }
16
+ /**
17
+ * A form-associated base class for the {@link @microsoft/fast-foundation#(TextArea:class)} component.
18
+ *
19
+ * @internal
20
+ */
21
+ class FormAssociatedTextArea extends FormAssociated(_TextArea) {
22
+ constructor() {
23
+ super(...arguments);
24
+ this.proxy = document.createElement("textarea");
25
+ }
31
26
  }
32
- _Tooltip_show = new WeakMap(), _Tooltip_hide = new WeakMap(), _Tooltip_instances = new WeakSet(), _Tooltip_anchorUpdated = function _Tooltip_anchorUpdated() {
33
- __classPrivateFieldGet(this, _Tooltip_instances, "m", _Tooltip_removeEventListener).call(this);
34
- __classPrivateFieldGet(this, _Tooltip_instances, "m", _Tooltip_addEventListener).call(this);
35
- }, _Tooltip_addEventListener = function _Tooltip_addEventListener() {
36
- var _a, _b, _c, _d;
37
- (_a = this.anchorEl) === null || _a === void 0 ? void 0 : _a.addEventListener('mouseover', __classPrivateFieldGet(this, _Tooltip_show, "f"));
38
- (_b = this.anchorEl) === null || _b === void 0 ? void 0 : _b.addEventListener('mouseout', __classPrivateFieldGet(this, _Tooltip_hide, "f"));
39
- (_c = this.anchorEl) === null || _c === void 0 ? void 0 : _c.addEventListener('focusin', __classPrivateFieldGet(this, _Tooltip_show, "f"));
40
- (_d = this.anchorEl) === null || _d === void 0 ? void 0 : _d.addEventListener('focusout', __classPrivateFieldGet(this, _Tooltip_hide, "f"));
41
- }, _Tooltip_removeEventListener = function _Tooltip_removeEventListener() {
42
- var _a, _b, _c, _d;
43
- (_a = this.anchorEl) === null || _a === void 0 ? void 0 : _a.removeEventListener('mouseover', __classPrivateFieldGet(this, _Tooltip_show, "f"));
44
- (_b = this.anchorEl) === null || _b === void 0 ? void 0 : _b.removeEventListener('mouseout', __classPrivateFieldGet(this, _Tooltip_hide, "f"));
45
- (_c = this.anchorEl) === null || _c === void 0 ? void 0 : _c.removeEventListener('focusin', __classPrivateFieldGet(this, _Tooltip_show, "f"));
46
- (_d = this.anchorEl) === null || _d === void 0 ? void 0 : _d.removeEventListener('focusout', __classPrivateFieldGet(this, _Tooltip_hide, "f"));
27
+
28
+ /**
29
+ * Resize mode for a TextArea
30
+ * @public
31
+ */
32
+ const TextAreaResize = {
33
+ /**
34
+ * No resize.
35
+ */
36
+ none: "none",
37
+ /**
38
+ * Resize vertically and horizontally.
39
+ */
40
+ both: "both",
41
+ /**
42
+ * Resize horizontally.
43
+ */
44
+ horizontal: "horizontal",
45
+ /**
46
+ * Resize vertically.
47
+ */
48
+ vertical: "vertical",
47
49
  };
48
- __decorate([attr, __metadata("design:type", String)], Tooltip.prototype, "text", void 0);
50
+
51
+ /**
52
+ * A Text Area Custom HTML Element.
53
+ * Based largely on the {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea | <textarea> element }.
54
+ *
55
+ * @slot - The default slot for the label
56
+ * @csspart label - The label
57
+ * @csspart root - The element wrapping the control
58
+ * @csspart control - The textarea element
59
+ * @fires change - Emits a custom 'change' event when the textarea emits a change event
60
+ *
61
+ * @public
62
+ */
63
+ class TextArea$1 extends FormAssociatedTextArea {
64
+ constructor() {
65
+ super(...arguments);
66
+ /**
67
+ * The resize mode of the element.
68
+ * @public
69
+ * @remarks
70
+ * HTML Attribute: resize
71
+ */
72
+ this.resize = TextAreaResize.none;
73
+ /**
74
+ * Sizes the element horizontally by a number of character columns.
75
+ *
76
+ * @public
77
+ * @remarks
78
+ * HTML Attribute: cols
79
+ */
80
+ this.cols = 20;
81
+ /**
82
+ * @internal
83
+ */
84
+ this.handleTextInput = () => {
85
+ this.value = this.control.value;
86
+ };
87
+ }
88
+ readOnlyChanged() {
89
+ if (this.proxy instanceof HTMLTextAreaElement) {
90
+ this.proxy.readOnly = this.readOnly;
91
+ }
92
+ }
93
+ autofocusChanged() {
94
+ if (this.proxy instanceof HTMLTextAreaElement) {
95
+ this.proxy.autofocus = this.autofocus;
96
+ }
97
+ }
98
+ listChanged() {
99
+ if (this.proxy instanceof HTMLTextAreaElement) {
100
+ this.proxy.setAttribute("list", this.list);
101
+ }
102
+ }
103
+ maxlengthChanged() {
104
+ if (this.proxy instanceof HTMLTextAreaElement) {
105
+ this.proxy.maxLength = this.maxlength;
106
+ }
107
+ }
108
+ minlengthChanged() {
109
+ if (this.proxy instanceof HTMLTextAreaElement) {
110
+ this.proxy.minLength = this.minlength;
111
+ }
112
+ }
113
+ spellcheckChanged() {
114
+ if (this.proxy instanceof HTMLTextAreaElement) {
115
+ this.proxy.spellcheck = this.spellcheck;
116
+ }
117
+ }
118
+ /**
119
+ * Selects all the text in the text area
120
+ *
121
+ * @public
122
+ */
123
+ select() {
124
+ this.control.select();
125
+ /**
126
+ * The select event does not permeate the shadow DOM boundary.
127
+ * This fn effectively proxies the select event,
128
+ * emitting a `select` event whenever the internal
129
+ * control emits a `select` event
130
+ */
131
+ this.$emit("select");
132
+ }
133
+ /**
134
+ * Change event handler for inner control.
135
+ * @remarks
136
+ * "Change" events are not `composable` so they will not
137
+ * permeate the shadow DOM boundary. This fn effectively proxies
138
+ * the change event, emitting a `change` event whenever the internal
139
+ * control emits a `change` event
140
+ * @internal
141
+ */
142
+ handleChange() {
143
+ this.$emit("change");
144
+ }
145
+ /** {@inheritDoc (FormAssociated:interface).validate} */
146
+ validate() {
147
+ super.validate(this.control);
148
+ }
149
+ }
150
+ __decorate([
151
+ attr({ mode: "boolean" })
152
+ ], TextArea$1.prototype, "readOnly", void 0);
153
+ __decorate([
154
+ attr
155
+ ], TextArea$1.prototype, "resize", void 0);
156
+ __decorate([
157
+ attr({ mode: "boolean" })
158
+ ], TextArea$1.prototype, "autofocus", void 0);
159
+ __decorate([
160
+ attr({ attribute: "form" })
161
+ ], TextArea$1.prototype, "formId", void 0);
162
+ __decorate([
163
+ attr
164
+ ], TextArea$1.prototype, "list", void 0);
165
+ __decorate([
166
+ attr({ converter: nullableNumberConverter })
167
+ ], TextArea$1.prototype, "maxlength", void 0);
168
+ __decorate([
169
+ attr({ converter: nullableNumberConverter })
170
+ ], TextArea$1.prototype, "minlength", void 0);
171
+ __decorate([
172
+ attr
173
+ ], TextArea$1.prototype, "name", void 0);
174
+ __decorate([
175
+ attr
176
+ ], TextArea$1.prototype, "placeholder", void 0);
177
+ __decorate([
178
+ attr({ converter: nullableNumberConverter, mode: "fromView" })
179
+ ], TextArea$1.prototype, "cols", void 0);
180
+ __decorate([
181
+ attr({ converter: nullableNumberConverter, mode: "fromView" })
182
+ ], TextArea$1.prototype, "rows", void 0);
183
+ __decorate([
184
+ attr({ mode: "boolean" })
185
+ ], TextArea$1.prototype, "spellcheck", void 0);
186
+ __decorate([
187
+ observable
188
+ ], TextArea$1.prototype, "defaultSlottedNodes", void 0);
189
+ applyMixins(TextArea$1, DelegatesARIATextbox);
190
+
191
+ var css_248z = "/**\n * Do not edit directly\n * Generated on Tue, 18 Apr 2023 16:20:35 GMT\n */\n:host {\n display: inline-block;\n}\n\n.base {\n display: inline-grid;\n width: inherit;\n grid-template-columns: 1fr;\n row-gap: 4px;\n}\n.base {\n --_appearance-color-text: var(--vvd-color-canvas-text);\n --_appearance-color-fill: var(--_connotation-color-backdrop);\n --_appearance-color-outline: var(--_connotation-color-intermediate);\n}\n.base.appearance-ghost {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.base:where(:hover, .hover):where(:not(:disabled, .disabled, .readonly)) {\n --_appearance-color-text: var(--vvd-color-canvas-text);\n --_appearance-color-fill: var(--_connotation-color-backdrop);\n --_appearance-color-outline: var(--_connotation-color-firm);\n}\n.base:where(:hover, .hover):where(:not(:disabled, .disabled, .readonly)).appearance-ghost {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: var(--_connotation-color-faint);\n --_appearance-color-outline: transparent;\n}\n.base:where(:disabled, .disabled) {\n --_appearance-color-text: var(--vvd-color-neutral-400);\n --_appearance-color-fill: var(--vvd-color-neutral-200);\n --_appearance-color-outline: var(--vvd-color-neutral-400);\n}\n.base:where(:disabled, .disabled).appearance-ghost {\n --_appearance-color-text: var(--vvd-color-neutral-400);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.base:where(.readonly):where(:not(:disabled, .disabled)) {\n --_appearance-color-text: var(--vvd-color-canvas-text);\n --_appearance-color-fill: var(--vvd-color-neutral-100);\n --_appearance-color-outline: var(--vvd-color-neutral-400);\n}\n.base:where(.readonly):where(:not(:disabled, .disabled)).appearance-ghost {\n --_appearance-color-text: var(--vvd-color-neutral-400);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.base.connotation-success {\n --_connotation-color-primary: var(--vvd-color-success-500);\n --_connotation-color-backdrop: var(--vvd-color-success-50);\n --_connotation-color-intermediate: var(--vvd-color-success-500);\n --_connotation-color-firm: var(--vvd-color-success-600);\n --_connotation-color-faint: var(--vvd-color-success-50);\n --_connotation-color-soft: var(--vvd-color-success-100);\n}\n.base.connotation-alert {\n --_connotation-color-primary: var(--vvd-color-alert-500);\n --_connotation-color-backdrop: var(--vvd-color-alert-50);\n --_connotation-color-intermediate: var(--vvd-color-alert-500);\n --_connotation-color-firm: var(--vvd-color-alert-600);\n --_connotation-color-faint: var(--vvd-color-alert-50);\n --_connotation-color-soft: var(--vvd-color-alert-100);\n}\n.base:not(.connotation-success, .connotation-alert) {\n --_connotation-color-primary: var(--vvd-color-canvas-text);\n --_connotation-color-backdrop: var(--vvd-color-canvas);\n --_connotation-color-intermediate: var(--vvd-color-neutral-500);\n --_connotation-color-firm: var(--vvd-color-canvas-text);\n --_connotation-color-faint: var(--vvd-color-neutral-50);\n --_connotation-color-soft: var(--vvd-color-neutral-100);\n}\n@supports (user-select: none) {\n .base {\n user-select: none;\n }\n}\n.base:not(.disabled) {\n --_low-ink-color: var(--vvd-color-neutral-600);\n}\n.base.disabled {\n --_low-ink-color: var(--_appearance-color-text);\n pointer-events: none;\n}\n\n.label {\n color: var(--vvd-color-canvas-text);\n contain: inline-size;\n font: var(--vvd-typography-base);\n grid-column: 1/3;\n grid-row: 1;\n line-height: 20px;\n}\n\n.control {\n padding: 8px 16px;\n border: 0 none;\n appearance: none; /* for box-shadow visibility on IOS */\n background-color: var(--_appearance-color-fill);\n border-radius: 6px;\n box-shadow: inset 0 0 0 1px var(--_appearance-color-outline);\n color: var(--_appearance-color-text);\n font: var(--vvd-typography-base);\n min-block-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2)));\n resize: none;\n transition: box-shadow 0.2s, background-color 0.2s, color 0.2s;\n}\n.control:disabled {\n cursor: not-allowed;\n opacity: 1; /* 2. correct opacity on iOS */\n pointer-events: none;\n -webkit-text-fill-color: var(--_appearance-color-text); /* 1. sets text fill to current `color` for safari */\n}\n.control::placeholder, .control:disabled::placeholder {\n opacity: 1; /* 2. correct opacity on iOS */\n pointer-events: none;\n -webkit-text-fill-color: var(--_low-ink-color); /* 1. sets text fill to current `color` for safari */\n}\n.control:focus {\n outline: 2px solid var(--focus-stroke-color, currentColor);\n outline-offset: -2px;\n}\n:host([resize=both]) .control {\n resize: both;\n}\n:host([resize=horizontal]) .control {\n resize: horizontal;\n}\n:host([resize=vertical]) .control {\n resize: vertical;\n}";
192
+
193
+ let TextArea = class TextArea extends TextArea$1 {};
194
+ __decorate([attr, __metadata("design:type", String)], TextArea.prototype, "wrap", void 0);
195
+ TextArea = __decorate([formElements], TextArea);
196
+ applyMixins(TextArea, FormElementCharCount, FormElementHelperText, FormElementSuccessText);
49
197
 
50
198
  let _ = t => t,
51
- _t;
199
+ _t,
200
+ _t2;
52
201
  const getClasses = ({
53
- open
54
- }) => classNames('control', ['open', Boolean(open)]);
55
- const TooltipTemplate = context => {
56
- const popupTag = context.tagFor(Popup);
202
+ value,
203
+ errorValidationMessage,
204
+ disabled,
205
+ placeholder,
206
+ readOnly,
207
+ successText
208
+ }) => classNames('base', ['readonly', readOnly], ['placeholder', Boolean(placeholder)], ['disabled', disabled], ['error connotation-alert', Boolean(errorValidationMessage)], ['has-value', Boolean(value)], ['success connotation-success', !!successText]);
209
+ function renderLabel() {
57
210
  return html(_t || (_t = _`
58
- <${0} class="${0}" arrow alternate
59
- placement=${0} open=${0} anchor=${0}
60
- exportparts="vvd-theme-alternate">
61
- <div class="tooltip" role="tooltip">
62
- <header part="vvd-theme-alternate" class="tooltip-header">
63
- <div class="tooltip-text">${0}</div>
64
- </header>
65
- </div>
66
- </${0}>`), popupTag, getClasses, x => x.placement, x => x.open, x => x.anchor, x => x.text, popupTag);
211
+ <label for="control" class="label">
212
+ ${0}
213
+ </label>`), x => x.label);
214
+ }
215
+ const TextAreaTemplate = context => {
216
+ return html(_t2 || (_t2 = _`
217
+ <div class="${0}">
218
+ ${0}
219
+ <textarea class="control"
220
+ ?autofocus="${0}"
221
+ placeholder="${0}"
222
+ name="${0}"
223
+ maxlength="${0}"
224
+ rows="${0}"
225
+ cols="${0}"
226
+ wrap="${0}"
227
+ ?readonly="${0}"
228
+ ?disabled="${0}"
229
+ ?required="${0}"
230
+ ?spellcheck="${0}"
231
+ :value="${0}"
232
+ aria-atomic="${0}"
233
+ aria-busy="${0}"
234
+ aria-controls="${0}"
235
+ aria-current="${0}"
236
+ aria-describedby="${0}"
237
+ aria-details="${0}"
238
+ aria-disabled="${0}"
239
+ aria-errormessage="${0}"
240
+ aria-flowto="${0}"
241
+ aria-haspopup="${0}"
242
+ aria-hidden="${0}"
243
+ aria-invalid="${0}"
244
+ aria-keyshortcuts="${0}"
245
+ aria-label="${0}"
246
+ aria-labelledby="${0}"
247
+ aria-live="${0}"
248
+ aria-owns="${0}"
249
+ aria-relevant="${0}"
250
+ aria-roledescription="${0}"
251
+ @input="${0}"
252
+ @change="${0}"
253
+ ${0}
254
+ >
255
+ </textarea>
256
+ ${0}
257
+ ${0}
258
+ ${0}
259
+ </div>
260
+ `), getClasses, when(x => x.label, renderLabel()), x => x.autofocus, x => x.placeholder ? x.placeholder : null, x => x.name ? x.name : null, x => x.maxlength ? x.maxlength : null, x => x.rows ? x.rows : null, x => x.cols ? x.cols : null, x => x.wrap ? x.wrap : null, x => x.readOnly, x => x.disabled, x => x.required, x => x.spellcheck, x => x.value, x => x.ariaAtomic, x => x.ariaBusy, x => x.ariaControls, x => x.ariaCurrent, x => x.ariaDescribedby, x => x.ariaDetails, x => x.ariaDisabled, x => x.ariaErrormessage, x => x.ariaFlowto, x => x.ariaHaspopup, x => x.ariaHidden, x => x.ariaInvalid, x => x.ariaKeyshortcuts, x => x.ariaLabel, x => x.ariaLabelledby, x => x.ariaLive, x => x.ariaOwns, x => x.ariaRelevant, x => x.ariaRoledescription, x => x.handleTextInput(), x => x.handleChange(), ref('control'), when(x => {
261
+ var _a;
262
+ return !x.successText && !x.errorValidationMessage && ((_a = x.helperText) === null || _a === void 0 ? void 0 : _a.length);
263
+ }, getFeedbackTemplate('helper', context)), when(x => !x.successText && x.errorValidationMessage, getFeedbackTemplate('error', context)), when(x => x.successText, getFeedbackTemplate('success', context)));
67
264
  };
68
265
 
69
- const tooltipDefinition = Tooltip.compose({
70
- baseName: 'tooltip',
71
- template: TooltipTemplate,
72
- styles: css_248z
266
+ const textAreaDefinition = TextArea.compose({
267
+ baseName: 'text-area',
268
+ template: TextAreaTemplate,
269
+ styles: css_248z,
270
+ shadowOptions: {
271
+ delegatesFocus: true
272
+ }
73
273
  });
74
- const tooltipRegistries = [tooltipDefinition(), ...popupRegistries];
75
- const registerTooltip = registerFactory(tooltipRegistries);
274
+ const textAreaRegistries = [textAreaDefinition(), ...iconRegistries, ...focusRegistries];
275
+ const registerTextArea = registerFactory(textAreaRegistries);
76
276
 
77
- export { tooltipRegistries as a, registerTooltip as r, tooltipDefinition as t };
277
+ export { textAreaRegistries as a, registerTextArea as r, textAreaDefinition as t };
@@ -1,79 +1,119 @@
1
1
  import { _ as __decorate, a as attr, b as __metadata, h as html, r as registerFactory } from './index.js';
2
- import { i as iconRegistries } from './definition3.js';
3
2
  import { f as focusRegistries } from './definition4.js';
3
+ import { i as iconRegistries } from './definition3.js';
4
4
  import { b as AffixIcon, a as affixIconTemplateFactory } from './affix.js';
5
- import { T as TreeItem$1 } from './tree-item.js';
5
+ import './focus.js';
6
+ import { f as formElements, F as FormElementSuccessText, a as FormElementHelperText, b as FormElementCharCount, g as getFeedbackTemplate } from './form-elements.js';
7
+ import { T as TextField$1 } from './text-field2.js';
6
8
  import { a as applyMixins } from './apply-mixins.js';
7
- import { I as Icon } from './icon.js';
9
+ import { c as css_248z } from './text-field.js';
8
10
  import { f as focusTemplateFactory } from './focus2.js';
9
- import { s as slotted, e as elements } from './slotted.js';
10
11
  import { w as when } from './when.js';
11
- import { c as children } from './children.js';
12
- import { c as classNames } from './class-names.js';
13
12
  import { r as ref } from './ref.js';
13
+ import { c as classNames } from './class-names.js';
14
14
 
15
- var css_248z = "/**\n * Do not edit directly\n * Generated on Thu, 30 Mar 2023 16:21:30 GMT\n */\n@supports selector(:focus-visible) {\n :host(:focus) {\n outline: none;\n }\n}\n.control {\n position: relative;\n display: inline-flex;\n box-sizing: border-box;\n align-items: center;\n background-color: var(--_appearance-color-fill);\n border-radius: 6px;\n box-shadow: inset 0 0 0 1px var(--_appearance-color-outline);\n color: var(--_appearance-color-text);\n font: var(--vvd-typography-base);\n gap: 12px;\n hyphens: auto;\n inline-size: 100%;\n min-block-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2)));\n padding-inline: 16px;\n text-decoration: none;\n vertical-align: middle;\n word-break: break-word;\n}\n.control {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.control:where(:disabled, .disabled) {\n --_appearance-color-text: var(--vvd-color-neutral-400);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: transparent;\n}\n.control:where(:hover, .hover):where(:not(:disabled, .disabled, .readonly)) {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: var(--_connotation-color-faint);\n --_appearance-color-outline: transparent;\n}\n.control:where(:active, .active):where(:not(:disabled, .disabled)) {\n --_appearance-color-text: var(--_connotation-color-primary);\n --_appearance-color-fill: var(--_connotation-color-soft);\n --_appearance-color-outline: transparent;\n}\n.control:where(.selected, [aria-current]):where(:not(:disabled, .disabled, :hover, .hover)) {\n --_appearance-color-text: var(--_connotation-color-primary-text);\n --_appearance-color-fill: var(--_connotation-color-primary);\n --_appearance-color-outline: transparent;\n}\n.control:where(.selected, [aria-current]):where(:hover, .hover) {\n --_appearance-color-text: var(--_connotation-color-primary-text);\n --_appearance-color-fill: var(--_connotation-color-primary-increment);\n --_appearance-color-outline: transparent;\n}\n.control {\n --_connotation-color-primary: var(--vvd-color-canvas-text);\n --_connotation-color-primary-text: var(--vvd-color-canvas);\n --_connotation-color-primary-increment: var(--vvd-color-neutral-800);\n --_connotation-color-faint: var(--vvd-color-neutral-50);\n --_connotation-color-soft: var(--vvd-color-neutral-100);\n}\n@supports selector(:focus-visible) {\n .control:focus {\n outline: none;\n }\n}\n@supports (user-select: none) {\n .control {\n user-select: none;\n }\n}\n.control:not(.disabled) {\n cursor: pointer;\n}\n.control.disabled {\n cursor: not-allowed;\n pointer-events: none;\n}\n.control .text {\n font: var(--vvd-typography-base);\n}\n\n.expandCollapseButton {\n display: flex;\n align-items: center;\n border-radius: 6px;\n font-size: 20px;\n}\n.expandCollapseButton .expandCollapseIcon {\n margin: 4px;\n}\n.expandCollapseButton:hover {\n background-color: var(--vvd-color-neutral-100);\n}\n\n.items {\n display: flex;\n flex-direction: column;\n gap: 4px;\n margin-block: 4px;\n padding-inline-start: 48px;\n}\n\n:host(:not(:focus-visible)) .focus-indicator {\n display: none;\n}\n\n.icon {\n font-size: 20px;\n line-height: 1;\n}\n.control:not(.disabled, .selected) .icon {\n color: var(--vvd-color-neutral-600);\n}";
16
-
17
- class TreeItem extends TreeItem$1 {}
18
- __decorate([attr, __metadata("design:type", String)], TreeItem.prototype, "text", void 0);
19
- applyMixins(TreeItem, AffixIcon);
15
+ let TextField = class TextField extends TextField$1 {};
16
+ __decorate([attr, __metadata("design:type", String)], TextField.prototype, "appearance", void 0);
17
+ __decorate([attr, __metadata("design:type", String)], TextField.prototype, "shape", void 0);
18
+ __decorate([attr, __metadata("design:type", String)], TextField.prototype, "autoComplete", void 0);
19
+ TextField = __decorate([formElements], TextField);
20
+ applyMixins(TextField, AffixIcon, FormElementCharCount, FormElementHelperText, FormElementSuccessText);
20
21
 
21
22
  let _ = t => t,
22
23
  _t,
23
24
  _t2,
24
25
  _t3;
25
- const getClasses = ({
26
+ const getStateClasses = ({
27
+ errorValidationMessage,
26
28
  disabled,
27
- selected
28
- }) => classNames('control', ['disabled', disabled], ['selected', Boolean(selected)]);
29
- const expandCollapseButton = context => {
30
- const iconTag = context.tagFor(Icon);
29
+ value,
30
+ readOnly,
31
+ placeholder,
32
+ appearance,
33
+ shape,
34
+ label,
35
+ successText
36
+ }) => classNames(['error connotation-alert', Boolean(errorValidationMessage)], ['disabled', disabled], ['has-value', Boolean(value)], ['readonly', readOnly], ['placeholder', Boolean(placeholder)], [`appearance-${appearance}`, Boolean(appearance)], [`shape-${shape}`, Boolean(shape)], ['no-label', !label], ['success connotation-success', Boolean(successText)]);
37
+ function renderLabel() {
31
38
  return html(_t || (_t = _`
32
- <div aria-hidden="true"
33
- class="expandCollapseButton"
34
- @click="${0}"
35
- ${0}
36
- >
37
- <${0} class="expandCollapseIcon" name="${0}"></${0}>
38
- </div>`), (x, c) => x.handleExpandCollapseButtonClick(c.event), ref('expandCollapseButton'), iconTag, x => x.expanded ? 'chevron-down-line' : 'chevron-right-line', iconTag);
39
- };
40
- const TreeItemTemplate = context => {
39
+ <label for="control" class="label">
40
+ ${0}
41
+ </label>`), x => x.label);
42
+ }
43
+ function renderCharCount() {
44
+ return html(_t2 || (_t2 = _`
45
+ <span class="char-count">${0} / ${0}</span>
46
+ `), x => x.value ? x.value.length : 0, x => x.maxlength);
47
+ }
48
+ const TextfieldTemplate = context => {
41
49
  const affixIconTemplate = affixIconTemplateFactory(context);
42
50
  const focusTemplate = focusTemplateFactory(context);
43
- return html(_t2 || (_t2 = _`
44
- <template
45
- role="treeitem"
46
- slot="${0}"
47
- tabindex="-1"
48
- aria-expanded="${0}"
49
- aria-selected="${0}"
50
- aria-disabled="${0}"
51
- @focusin="${0}"
52
- @focusout="${0}"
53
- ${0}
54
- >
55
- <div class="${0}">
56
- ${0}
57
- ${0}
58
- ${0}
59
- ${0}
60
- </div>
61
- ${0}
62
- </template>`), x => x.isNestedItem() ? 'item' : void 0, x => x.childItems && x.childItems.length > 0 ? x.expanded : void 0, x => x.selected, x => x.disabled, (x, c) => x.handleFocus(c.event), (x, c) => x.handleBlur(c.event), children({
63
- property: 'childItems',
64
- filter: elements()
65
- }), getClasses, () => focusTemplate, when(x => x.childItems && x.childItems.length > 0, expandCollapseButton(context)), x => affixIconTemplate(x.icon), x => x.text, when(x => x.childItems && x.childItems.length > 0 && x.expanded, html(_t3 || (_t3 = _`
66
- <div role="group" class="items">
67
- <slot name="item" ${0}></slot>
68
- </div>`), slotted('items'))));
51
+ return html(_t3 || (_t3 = _`
52
+ <div class="base ${0}">
53
+ ${0}
54
+ ${0}
55
+ <div class="fieldset">
56
+ ${0}
57
+ <input class="control"
58
+ id="control"
59
+ @input="${0}"
60
+ @change="${0}"
61
+ ?autofocus="${0}"
62
+ ?disabled="${0}"
63
+ list="${0}"
64
+ maxlength="${0}"
65
+ minlength="${0}"
66
+ pattern="${0}"
67
+ placeholder="${0}"
68
+ ?readonly="${0}"
69
+ ?required="${0}"
70
+ size="${0}"
71
+ autocomplete="${0}"
72
+ name="${0}"
73
+ ?spellcheck="${0}"
74
+ :value="${0}"
75
+ type="${0}"
76
+ aria-atomic="${0}"
77
+ aria-busy="${0}"
78
+ aria-controls="${0}"
79
+ aria-current="${0}"
80
+ aria-describedby="${0}"
81
+ aria-details="${0}"
82
+ aria-disabled="${0}"
83
+ aria-errormessage="${0}"
84
+ aria-flowto="${0}"
85
+ aria-haspopup="${0}"
86
+ aria-hidden="${0}"
87
+ aria-invalid="${0}"
88
+ aria-keyshortcuts="${0}"
89
+ aria-label="${0}"
90
+ aria-labelledby="${0}"
91
+ aria-live="${0}"
92
+ aria-owns="${0}"
93
+ aria-relevant="${0}"
94
+ aria-roledescription="${0}"
95
+ ${0}
96
+ />
97
+ ${0}
98
+ </div>
99
+ ${0}
100
+ ${0}
101
+ ${0}
102
+ </div>`), getStateClasses, when(x => x.charCount && x.maxlength, renderCharCount()), when(x => x.label, renderLabel()), x => affixIconTemplate(x.icon), x => x.handleTextInput(), x => x.handleChange(), x => x.autofocus, x => x.disabled, x => x.list, x => x.maxlength, x => x.minlength, x => x.pattern, x => x.placeholder, x => x.readOnly, x => x.required, x => x.size, x => x.autoComplete, x => x.name, x => x.spellcheck, x => x.value, x => x.type, x => x.ariaAtomic, x => x.ariaBusy, x => x.ariaControls, x => x.ariaCurrent, x => x.ariaDescribedby, x => x.ariaDetails, x => x.ariaDisabled, x => x.ariaErrormessage, x => x.ariaFlowto, x => x.ariaHaspopup, x => x.ariaHidden, x => x.ariaInvalid, x => x.ariaKeyshortcuts, x => x.ariaLabel, x => x.ariaLabelledby, x => x.ariaLive, x => x.ariaOwns, x => x.ariaRelevant, x => x.ariaRoledescription, ref('control'), () => focusTemplate, when(x => {
103
+ var _a;
104
+ return !x.successText && !x.errorValidationMessage && ((_a = x.helperText) === null || _a === void 0 ? void 0 : _a.length);
105
+ }, getFeedbackTemplate('helper', context)), when(x => !x.successText && x.errorValidationMessage, getFeedbackTemplate('error', context)), when(x => x.successText, getFeedbackTemplate('success', context)));
69
106
  };
70
107
 
71
- const treeItemDefinition = TreeItem.compose({
72
- baseName: 'tree-item',
73
- template: TreeItemTemplate,
74
- styles: css_248z
108
+ const textFieldDefinition = TextField.compose({
109
+ baseName: 'text-field',
110
+ template: TextfieldTemplate,
111
+ styles: css_248z,
112
+ shadowOptions: {
113
+ delegatesFocus: true
114
+ }
75
115
  });
76
- const treeItemRegistries = [treeItemDefinition(), ...iconRegistries, ...focusRegistries];
77
- const registerTreeItem = registerFactory(treeItemRegistries);
116
+ const textFieldRegistries = [textFieldDefinition(), ...iconRegistries, ...focusRegistries];
117
+ const registerTextField = registerFactory(textFieldRegistries);
78
118
 
79
- export { treeItemRegistries as a, registerTreeItem as r, treeItemDefinition as t };
119
+ export { textFieldRegistries as a, registerTextField as r, textFieldDefinition as t };