@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,282 +1,122 @@
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';
1
+ import { F as FoundationElement, U as __classPrivateFieldGet, _ as __decorate, a as attr, b as __metadata, h as html, r as registerFactory } from './index.js';
2
2
  import { i as iconRegistries } from './definition3.js';
3
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';
4
+ import { b as AffixIcon, a as affixIconTemplateFactory } from './affix.js';
8
5
  import { a as applyMixins } from './apply-mixins.js';
9
- import { F as FormAssociated } from './form-associated.js';
10
6
  import { f as focusTemplateFactory } from './focus2.js';
7
+ import { I as Icon } from './icon.js';
11
8
  import { w as when } from './when.js';
12
- import { r as ref } from './ref.js';
13
9
  import { c as classNames } from './class-names.js';
14
10
 
15
- class _TextArea extends FoundationElement {
16
- }
17
- /**
18
- * A form-associated base class for the {@link @microsoft/fast-foundation#(TextArea:class)} component.
19
- *
20
- * @internal
21
- */
22
- class FormAssociatedTextArea extends FormAssociated(_TextArea) {
23
- constructor() {
24
- super(...arguments);
25
- this.proxy = document.createElement("textarea");
26
- }
27
- }
28
-
29
- /**
30
- * Resize mode for a TextArea
31
- * @public
32
- */
33
- const TextAreaResize = {
34
- /**
35
- * No resize.
36
- */
37
- none: "none",
38
- /**
39
- * Resize vertically and horizontally.
40
- */
41
- both: "both",
42
- /**
43
- * Resize horizontally.
44
- */
45
- horizontal: "horizontal",
46
- /**
47
- * Resize vertically.
48
- */
49
- vertical: "vertical",
50
- };
51
-
52
- /**
53
- * A Text Area Custom HTML Element.
54
- * Based largely on the {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea | <textarea> element }.
55
- *
56
- * @slot - The default slot for the label
57
- * @csspart label - The label
58
- * @csspart root - The element wrapping the control
59
- * @csspart control - The textarea element
60
- * @fires change - Emits a custom 'change' event when the textarea emits a change event
61
- *
62
- * @public
63
- */
64
- class TextArea$1 extends FormAssociatedTextArea {
65
- constructor() {
66
- super(...arguments);
67
- /**
68
- * The resize mode of the element.
69
- * @public
70
- * @remarks
71
- * HTML Attribute: resize
72
- */
73
- this.resize = TextAreaResize.none;
74
- /**
75
- * Sizes the element horizontally by a number of character columns.
76
- *
77
- * @public
78
- * @remarks
79
- * HTML Attribute: cols
80
- */
81
- this.cols = 20;
82
- /**
83
- * @internal
84
- */
85
- this.handleTextInput = () => {
86
- this.value = this.control.value;
87
- };
88
- }
89
- readOnlyChanged() {
90
- if (this.proxy instanceof HTMLTextAreaElement) {
91
- this.proxy.readOnly = this.readOnly;
92
- }
93
- }
94
- autofocusChanged() {
95
- if (this.proxy instanceof HTMLTextAreaElement) {
96
- this.proxy.autofocus = this.autofocus;
97
- }
98
- }
99
- listChanged() {
100
- if (this.proxy instanceof HTMLTextAreaElement) {
101
- this.proxy.setAttribute("list", this.list);
102
- }
103
- }
104
- maxlengthChanged() {
105
- if (this.proxy instanceof HTMLTextAreaElement) {
106
- this.proxy.maxLength = this.maxlength;
107
- }
108
- }
109
- minlengthChanged() {
110
- if (this.proxy instanceof HTMLTextAreaElement) {
111
- this.proxy.minLength = this.minlength;
112
- }
113
- }
114
- spellcheckChanged() {
115
- if (this.proxy instanceof HTMLTextAreaElement) {
116
- this.proxy.spellcheck = this.spellcheck;
117
- }
118
- }
119
- /**
120
- * Selects all the text in the text area
121
- *
122
- * @public
123
- */
124
- select() {
125
- this.control.select();
126
- /**
127
- * The select event does not permeate the shadow DOM boundary.
128
- * This fn effectively proxies the select event,
129
- * emitting a `select` event whenever the internal
130
- * control emits a `select` event
131
- */
132
- this.$emit("select");
11
+ var _Tag_select;
12
+ class Tag extends FoundationElement {
13
+ constructor() {
14
+ super(...arguments);
15
+ this.removable = false;
16
+ this.disabled = false;
17
+ this.selectable = false;
18
+ this.selected = false;
19
+ _Tag_select.set(this, () => {
20
+ if (!this.selectable || this.disabled) {
21
+ return;
22
+ }
23
+ this.selected = !this.selected;
24
+ this.$emit('selected-change');
25
+ });
26
+ }
27
+ remove() {
28
+ if (!this.removable || this.selectable) {
29
+ return;
133
30
  }
134
- /**
135
- * Change event handler for inner control.
136
- * @remarks
137
- * "Change" events are not `composable` so they will not
138
- * permeate the shadow DOM boundary. This fn effectively proxies
139
- * the change event, emitting a `change` event whenever the internal
140
- * control emits a `change` event
141
- * @internal
142
- */
143
- handleChange() {
144
- this.$emit("change");
31
+ this.$emit('removed');
32
+ this.parentElement && this.parentElement.removeChild(this);
33
+ }
34
+ handleKeydown(e) {
35
+ if (e.key === 'Enter') {
36
+ __classPrivateFieldGet(this, _Tag_select, "f").call(this);
145
37
  }
146
- /** {@inheritDoc (FormAssociated:interface).validate} */
147
- validate() {
148
- super.validate(this.control);
38
+ if (e.key === 'Delete' || e.key === 'Backspace') {
39
+ this.remove();
149
40
  }
41
+ return true;
42
+ }
43
+ handleClick() {
44
+ __classPrivateFieldGet(this, _Tag_select, "f").call(this);
45
+ }
150
46
  }
151
- __decorate([
152
- attr({ mode: "boolean" })
153
- ], TextArea$1.prototype, "readOnly", void 0);
154
- __decorate([
155
- attr
156
- ], TextArea$1.prototype, "resize", void 0);
157
- __decorate([
158
- attr({ mode: "boolean" })
159
- ], TextArea$1.prototype, "autofocus", void 0);
160
- __decorate([
161
- attr({ attribute: "form" })
162
- ], TextArea$1.prototype, "formId", void 0);
163
- __decorate([
164
- attr
165
- ], TextArea$1.prototype, "list", void 0);
166
- __decorate([
167
- attr({ converter: nullableNumberConverter })
168
- ], TextArea$1.prototype, "maxlength", void 0);
169
- __decorate([
170
- attr({ converter: nullableNumberConverter })
171
- ], TextArea$1.prototype, "minlength", void 0);
172
- __decorate([
173
- attr
174
- ], TextArea$1.prototype, "name", void 0);
175
- __decorate([
176
- attr
177
- ], TextArea$1.prototype, "placeholder", void 0);
178
- __decorate([
179
- attr({ converter: nullableNumberConverter, mode: "fromView" })
180
- ], TextArea$1.prototype, "cols", void 0);
181
- __decorate([
182
- attr({ converter: nullableNumberConverter, mode: "fromView" })
183
- ], TextArea$1.prototype, "rows", void 0);
184
- __decorate([
185
- attr({ mode: "boolean" })
186
- ], TextArea$1.prototype, "spellcheck", void 0);
187
- __decorate([
188
- observable
189
- ], TextArea$1.prototype, "defaultSlottedNodes", void 0);
190
- applyMixins(TextArea$1, DelegatesARIATextbox);
191
-
192
- var css_248z = "/**\n * Do not edit directly\n * Generated on Thu, 30 Mar 2023 16:21:30 GMT\n */\n:host {\n display: inline-block;\n}\n\n.base {\n display: inline-grid;\n width: 100%;\n gap: 4px;\n grid-template-columns: 1fr max-content;\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.fieldset {\n position: relative;\n display: flex;\n align-items: center;\n border-radius: 6px;\n grid-column: 1/3;\n}\n\n.control {\n width: 100%;\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: inherit;\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 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@supports selector(:focus-visible) {\n .control:focus {\n outline: none;\n }\n}\n\n.focus-indicator {\n --focus-stroke-gap-color: transparent;\n pointer-events: none;\n}\n.fieldset:not(:focus-visible, :focus-within) > .focus-indicator {\n display: none;\n}";
47
+ _Tag_select = new WeakMap();
48
+ __decorate([attr, __metadata("design:type", String)], Tag.prototype, "connotation", void 0);
49
+ __decorate([attr, __metadata("design:type", String)], Tag.prototype, "shape", void 0);
50
+ __decorate([attr, __metadata("design:type", String)], Tag.prototype, "appearance", void 0);
51
+ __decorate([attr, __metadata("design:type", String)], Tag.prototype, "label", void 0);
52
+ __decorate([attr({
53
+ mode: 'boolean'
54
+ }), __metadata("design:type", Object)], Tag.prototype, "removable", void 0);
55
+ __decorate([attr({
56
+ mode: 'boolean'
57
+ }), __metadata("design:type", Object)], Tag.prototype, "disabled", void 0);
58
+ __decorate([attr({
59
+ mode: 'boolean'
60
+ }), __metadata("design:type", Object)], Tag.prototype, "selectable", void 0);
61
+ __decorate([attr({
62
+ mode: 'boolean'
63
+ }), __metadata("design:type", Object)], Tag.prototype, "selected", void 0);
64
+ applyMixins(Tag, AffixIcon);
193
65
 
194
- let TextArea = class TextArea extends TextArea$1 {};
195
- __decorate([attr, __metadata("design:type", String)], TextArea.prototype, "wrap", void 0);
196
- TextArea = __decorate([formElements], TextArea);
197
- applyMixins(TextArea, FormElementCharCount, FormElementHelperText, FormElementSuccessText);
66
+ var css_248z = "/**\n * Do not edit directly\n * Generated on Tue, 18 Apr 2023 16:20:35 GMT\n */\n.base {\n --tag-block-size: calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density, 0), 2) - 16));\n position: relative;\n display: inline-flex;\n box-sizing: border-box;\n align-items: center;\n background-color: var(--_appearance-color-fill);\n block-size: var(--tag-block-size);\n box-shadow: inset 0 0 0 1px var(--_appearance-color-outline);\n color: var(--_appearance-color-text);\n column-gap: 8px;\n font: var(--vvd-typography-base);\n max-inline-size: 100%;\n padding-inline: 8px;\n vertical-align: middle;\n /* Shape */\n}\n.base.connotation-cta {\n --_connotation-color-contrast: var(--vvd-color-cta-800);\n --_connotation-color-soft: var(--vvd-color-cta-100);\n --_connotation-color-pale: var(--vvd-color-cta-300);\n --_connotation-color-fierce: var(--vvd-color-cta-700);\n --_connotation-color-firm: var(--vvd-color-cta-600);\n --_connotation-color-faint: var(--vvd-color-cta-50);\n}\n.base:not(.connotation-cta) {\n --_connotation-color-contrast: var(--vvd-color-neutral-800);\n --_connotation-color-soft: var(--vvd-color-neutral-100);\n --_connotation-color-pale: var(--vvd-color-neutral-300);\n --_connotation-color-fierce: var(--vvd-color-neutral-700);\n --_connotation-color-firm: var(--vvd-color-canvas-text);\n --_connotation-color-faint: var(--vvd-color-neutral-50);\n}\n.base {\n --_appearance-color-text: var(--_connotation-color-contrast);\n --_appearance-color-fill: var(--_connotation-color-soft);\n --_appearance-color-outline: transparent;\n}\n.base.appearance-duotone {\n --_appearance-color-text: var(--_connotation-color-fierce);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: var(--_connotation-color-pale);\n}\n.base:where(:hover, .hover):where(:not(:disabled, .disabled, .readonly)) {\n --_appearance-color-text: var(--_connotation-color-contrast);\n --_appearance-color-fill: var(--_connotation-color-faint);\n --_appearance-color-outline: transparent;\n}\n.base:where(:hover, .hover):where(:not(:disabled, .disabled, .readonly)).appearance-duotone {\n --_appearance-color-text: var(--_connotation-color-fierce);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: var(--_connotation-color-firm);\n}\n.base:where(:active, .active):where(:not(:disabled, .disabled)) {\n --_appearance-color-text: var(--_connotation-color-contrast);\n --_appearance-color-fill: var(--_connotation-color-pale);\n --_appearance-color-outline: transparent;\n}\n.base:where(:active, .active):where(:not(:disabled, .disabled)).appearance-duotone {\n --_appearance-color-text: var(--_connotation-color-fierce);\n --_appearance-color-fill: var(--_connotation-color-faint);\n --_appearance-color-outline: var(--_connotation-color-pale);\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: transparent;\n}\n.base:where(:disabled, .disabled).appearance-duotone {\n --_appearance-color-text: var(--vvd-color-neutral-400);\n --_appearance-color-fill: transparent;\n --_appearance-color-outline: var(--vvd-color-neutral-200);\n}\n.base:where(.selected, [aria-current]):where(:not(:disabled, .disabled, :hover, .hover)) {\n --_appearance-color-text: var(--_connotation-color-contrast);\n --_appearance-color-fill: var(--_connotation-color-pale);\n --_appearance-color-outline: transparent;\n}\n.base:where(.selected, [aria-current]):where(:not(:disabled, .disabled, :hover, .hover)).appearance-duotone {\n --_appearance-color-text: var(--_connotation-color-fierce);\n --_appearance-color-fill: var(--_connotation-color-faint);\n --_appearance-color-outline: var(--_connotation-color-pale);\n}\n.base:not(.shape-pill) {\n border-radius: 4px;\n}\n.base.shape-pill {\n border-radius: 14px;\n}\n@supports selector(:focus-visible) {\n .base:focus {\n outline: none;\n }\n}\n@supports (user-select: none) {\n .base {\n user-select: none;\n }\n}\n.base:not(.disabled) {\n cursor: pointer;\n}\n.base.disabled {\n cursor: not-allowed;\n pointer-events: none;\n}\n.base.removable {\n cursor: auto;\n}\n\n.label {\n overflow: hidden;\n max-inline-size: 100%;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.icon {\n font-size: calc(var(--tag-block-size) / 1.5);\n line-height: 1;\n}\n.icon > * {\n vertical-align: middle;\n}\n\n.dismiss-button {\n display: flex;\n align-items: center;\n background-color: var(--_appearance-color-fill);\n border-radius: inherit;\n cursor: pointer;\n}\n\n.base:not(:focus-visible) .focus-indicator {\n display: none;\n}";
198
67
 
199
68
  let _ = t => t,
200
69
  _t,
201
- _t2;
70
+ _t2,
71
+ _t3,
72
+ _t4;
202
73
  const getClasses = ({
203
- value,
204
- errorValidationMessage,
74
+ connotation,
75
+ appearance,
76
+ shape,
205
77
  disabled,
206
- placeholder,
207
- readOnly,
208
- successText
209
- }) => classNames('base', ['readonly', readOnly], ['placeholder', Boolean(placeholder)], ['disabled', disabled], ['error connotation-alert', Boolean(errorValidationMessage)], ['has-value', Boolean(value)], ['success connotation-success', !!successText]);
210
- function renderLabel() {
78
+ selectable,
79
+ removable,
80
+ selected
81
+ }) => classNames('base', ['disabled', disabled], ['selectable', selectable], ['active', selectable && selected], ['removable', removable && !selectable], [`connotation-${connotation}`, Boolean(connotation)], [`appearance-${appearance}`, Boolean(appearance)], [`shape-${shape}`, Boolean(shape)]);
82
+ function renderDismissButton(iconTag) {
211
83
  return html(_t || (_t = _`
212
- <label for="control" class="label">
213
- ${0}
214
- </label>`), x => x.label);
84
+ <span
85
+ aria-hidden="true"
86
+ class="dismiss-button"
87
+ @click="${0}">
88
+ <${0} name="close-line"></${0}>
89
+ </span>`), x => x.remove(), iconTag, iconTag);
215
90
  }
216
- const TextAreaTemplate = context => {
91
+ const tagTemplate = context => {
92
+ const affixIconTemplate = affixIconTemplateFactory(context);
93
+ const iconTag = context.tagFor(Icon);
217
94
  const focusTemplate = focusTemplateFactory(context);
218
95
  return html(_t2 || (_t2 = _`
219
- <div class="${0}">
220
- ${0}
221
- <div class="fieldset">
222
- <textarea class="control"
223
- ?autofocus="${0}"
224
- placeholder="${0}"
225
- name="${0}"
226
- maxlength="${0}"
227
- rows="${0}"
228
- cols="${0}"
229
- wrap="${0}"
230
- ?readonly="${0}"
231
- ?disabled="${0}"
232
- ?required="${0}"
233
- ?spellcheck="${0}"
234
- :value="${0}"
235
- aria-atomic="${0}"
236
- aria-busy="${0}"
237
- aria-controls="${0}"
238
- aria-current="${0}"
239
- aria-describedby="${0}"
240
- aria-details="${0}"
241
- aria-disabled="${0}"
242
- aria-errormessage="${0}"
243
- aria-flowto="${0}"
244
- aria-haspopup="${0}"
245
- aria-hidden="${0}"
246
- aria-invalid="${0}"
247
- aria-keyshortcuts="${0}"
248
- aria-label="${0}"
249
- aria-labelledby="${0}"
250
- aria-live="${0}"
251
- aria-owns="${0}"
252
- aria-relevant="${0}"
253
- aria-roledescription="${0}"
254
- @input="${0}"
255
- @change="${0}"
256
- ${0}
257
- >
258
- </textarea>
259
- ${0}
260
- </div>
96
+ <span class="${0}"
97
+ role="option"
98
+ aria-disabled="${0}"
99
+ aria-selected="${0}"
100
+ tabindex="${0}"
101
+ @keydown="${0}"
102
+ @click="${0}">
103
+ ${0}
104
+ ${0}
261
105
  ${0}
262
106
  ${0}
263
107
  ${0}
264
- </div>
265
- `), 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'), () => focusTemplate, when(x => {
266
- var _a;
267
- return !x.successText && !x.errorValidationMessage && ((_a = x.helperText) === null || _a === void 0 ? void 0 : _a.length);
268
- }, getFeedbackTemplate('helper', context)), when(x => !x.successText && x.errorValidationMessage, getFeedbackTemplate('error', context)), when(x => x.successText, getFeedbackTemplate('success', context)));
108
+ </span>`), getClasses, x => x.disabled, x => x.selectable, x => x.disabled ? null : 0, (x, c) => x.handleKeydown(c.event), x => x.handleClick(), x => affixIconTemplate(x.icon), when(x => x.label, x => html(_t3 || (_t3 = _`<span class="label">${0}</span>`), x.label)), when(x => x.removable && !x.selectable, renderDismissButton(iconTag)), when(x => x.selectable && x.selected, html(_t4 || (_t4 = _`<${0} class="selectable-icon" name="check-line"></${0}>`), iconTag, iconTag)), () => focusTemplate);
269
109
  };
270
110
 
271
- const textAreaDefinition = TextArea.compose({
272
- baseName: 'text-area',
273
- template: TextAreaTemplate,
111
+ const tagDefinition = Tag.compose({
112
+ baseName: 'tag',
113
+ template: tagTemplate,
274
114
  styles: css_248z,
275
115
  shadowOptions: {
276
116
  delegatesFocus: true
277
117
  }
278
118
  });
279
- const textAreaRegistries = [textAreaDefinition(), ...iconRegistries, ...focusRegistries];
280
- const registerTextArea = registerFactory(textAreaRegistries);
119
+ const tagRegistries = [tagDefinition(), ...iconRegistries, ...focusRegistries];
120
+ const registerTag = registerFactory(tagRegistries);
281
121
 
282
- export { textAreaRegistries as a, registerTextArea as r, textAreaDefinition as t };
122
+ export { registerTag as r, tagDefinition as t };
@@ -1,119 +1,27 @@
1
- import { _ as __decorate, a as attr, b as __metadata, h as html, r as registerFactory } from './index.js';
2
- import { f as focusRegistries } from './definition4.js';
3
- import { i as iconRegistries } from './definition3.js';
4
- import { b as AffixIcon, a as affixIconTemplateFactory } from './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 { T as TextField$1 } from './text-field2.js';
8
- import { a as applyMixins } from './apply-mixins.js';
9
- import { c as css_248z } from './text-field.js';
10
- import { f as focusTemplateFactory } from './focus2.js';
11
- import { w as when } from './when.js';
12
- import { r as ref } from './ref.js';
1
+ import { F as FoundationElement, h as html, r as registerFactory } from './index.js';
13
2
  import { c as classNames } from './class-names.js';
14
3
 
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);
4
+ var css_248z = ".base {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}";
21
5
 
22
- let _ = t => t,
23
- _t,
24
- _t2,
25
- _t3;
26
- const getStateClasses = ({
27
- errorValidationMessage,
28
- disabled,
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() {
38
- return html(_t || (_t = _`
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 => {
49
- const affixIconTemplate = affixIconTemplateFactory(context);
50
- const focusTemplate = focusTemplateFactory(context);
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)));
6
+ class TagGroup extends FoundationElement {}
7
+
8
+ let _2 = t => t,
9
+ _t;
10
+ const getClasses = _ => classNames('base');
11
+ const TagGroupTemplate = () => {
12
+ return html(_t || (_t = _2`
13
+ <div class="${0}" role="listbox" aria-orientation="horizontal">
14
+ <slot></slot>
15
+ </div>
16
+ `), getClasses);
106
17
  };
107
18
 
108
- const textFieldDefinition = TextField.compose({
109
- baseName: 'text-field',
110
- template: TextfieldTemplate,
111
- styles: css_248z,
112
- shadowOptions: {
113
- delegatesFocus: true
114
- }
19
+ const tagGroupDefinition = TagGroup.compose({
20
+ baseName: 'tag-group',
21
+ template: TagGroupTemplate,
22
+ styles: css_248z
115
23
  });
116
- const textFieldRegistries = [textFieldDefinition(), ...iconRegistries, ...focusRegistries];
117
- const registerTextField = registerFactory(textFieldRegistries);
24
+ const tagGroupRegistries = [tagGroupDefinition()];
25
+ const registerTagGroup = registerFactory(tagGroupRegistries);
118
26
 
119
- export { textFieldRegistries as a, registerTextField as r, textFieldDefinition as t };
27
+ export { tagGroupRegistries as a, registerTagGroup as r, tagGroupDefinition as t };