@vonage/vivid 4.5.0 → 4.6.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 (170) hide show
  1. package/custom-elements.json +1091 -187
  2. package/elevation/index.cjs +1 -1
  3. package/elevation/index.js +1 -1
  4. package/index.cjs +62 -56
  5. package/index.js +20 -19
  6. package/lib/components.d.ts +1 -0
  7. package/lib/menu/menu.d.ts +2 -1
  8. package/lib/number-field/number-field.d.ts +3 -1
  9. package/lib/searchable-select/definition.d.ts +4 -0
  10. package/lib/searchable-select/locale.d.ts +6 -0
  11. package/lib/searchable-select/option-tag.d.ts +14 -0
  12. package/lib/searchable-select/option-tag.template.d.ts +4 -0
  13. package/lib/searchable-select/searchable-select.d.ts +29 -0
  14. package/lib/searchable-select/searchable-select.form-associated.d.ts +10 -0
  15. package/lib/searchable-select/searchable-select.template.d.ts +4 -0
  16. package/lib/select/select.d.ts +3 -1
  17. package/lib/tab/locale.d.ts +3 -0
  18. package/lib/tab/tab.d.ts +5 -1
  19. package/lib/tag/definition.d.ts +1 -0
  20. package/lib/text-field/text-field.d.ts +3 -1
  21. package/locales/de-DE.cjs +12 -0
  22. package/locales/de-DE.js +12 -0
  23. package/locales/en-GB.cjs +12 -0
  24. package/locales/en-GB.js +12 -0
  25. package/locales/en-US.cjs +12 -0
  26. package/locales/en-US.js +12 -0
  27. package/locales/ja-JP.cjs +12 -0
  28. package/locales/ja-JP.js +12 -0
  29. package/locales/zh-CN.cjs +12 -0
  30. package/locales/zh-CN.js +12 -0
  31. package/package.json +1 -1
  32. package/popup/index.cjs +1 -1
  33. package/popup/index.js +1 -1
  34. package/searchable-select/index.cjs +5 -0
  35. package/searchable-select/index.js +3 -0
  36. package/select/index.cjs +1 -1
  37. package/select/index.js +1 -1
  38. package/selectable-box/index.cjs +1 -1
  39. package/selectable-box/index.js +1 -1
  40. package/shared/definition11.cjs +1 -1
  41. package/shared/definition11.js +1 -1
  42. package/shared/definition14.cjs +1 -1
  43. package/shared/definition14.js +1 -1
  44. package/shared/definition16.cjs +1 -1
  45. package/shared/definition16.js +1 -1
  46. package/shared/definition18.cjs +2 -2
  47. package/shared/definition18.js +2 -2
  48. package/shared/definition19.cjs +2 -2
  49. package/shared/definition19.js +2 -2
  50. package/shared/definition20.cjs +14 -34
  51. package/shared/definition20.js +14 -34
  52. package/shared/definition21.cjs +1 -1
  53. package/shared/definition21.js +1 -1
  54. package/shared/definition26.cjs +1 -1
  55. package/shared/definition26.js +1 -1
  56. package/shared/definition29.cjs +4 -0
  57. package/shared/definition29.js +4 -0
  58. package/shared/definition30.cjs +2 -1
  59. package/shared/definition30.js +2 -1
  60. package/shared/definition35.cjs +12 -7
  61. package/shared/definition35.js +12 -7
  62. package/shared/definition36.cjs +50 -207
  63. package/shared/definition36.js +51 -207
  64. package/shared/definition4.cjs +1 -1
  65. package/shared/definition4.js +1 -1
  66. package/shared/definition42.cjs +1 -1
  67. package/shared/definition42.js +1 -1
  68. package/shared/definition43.cjs +993 -645
  69. package/shared/definition43.js +989 -642
  70. package/shared/definition44.cjs +723 -112
  71. package/shared/definition44.js +722 -111
  72. package/shared/definition45.cjs +121 -80
  73. package/shared/definition45.js +119 -78
  74. package/shared/definition46.cjs +81 -614
  75. package/shared/definition46.js +80 -612
  76. package/shared/definition47.cjs +608 -114
  77. package/shared/definition47.js +606 -113
  78. package/shared/definition48.cjs +116 -134
  79. package/shared/definition48.js +115 -133
  80. package/shared/definition49.cjs +149 -19
  81. package/shared/definition49.js +148 -18
  82. package/shared/definition5.cjs +1 -1
  83. package/shared/definition5.js +1 -1
  84. package/shared/definition50.cjs +21 -82
  85. package/shared/definition50.js +20 -81
  86. package/shared/definition51.cjs +77 -539
  87. package/shared/definition51.js +76 -538
  88. package/shared/definition52.cjs +568 -28
  89. package/shared/definition52.js +567 -27
  90. package/shared/definition53.cjs +28 -123
  91. package/shared/definition53.js +26 -122
  92. package/shared/definition54.cjs +115 -295
  93. package/shared/definition54.js +114 -294
  94. package/shared/definition55.cjs +251 -311
  95. package/shared/definition55.js +251 -311
  96. package/shared/definition56.cjs +299 -780
  97. package/shared/definition56.js +298 -779
  98. package/shared/definition57.cjs +800 -102
  99. package/shared/definition57.js +799 -101
  100. package/shared/definition58.cjs +92 -63
  101. package/shared/definition58.js +91 -62
  102. package/shared/definition59.cjs +117 -75
  103. package/shared/definition59.js +116 -74
  104. package/shared/definition60.cjs +70 -285
  105. package/shared/definition60.js +71 -286
  106. package/shared/definition61.cjs +274 -66146
  107. package/shared/definition61.js +273 -66145
  108. package/shared/definition62.cjs +66160 -27
  109. package/shared/definition62.js +66158 -25
  110. package/shared/definition63.cjs +24 -1952
  111. package/shared/definition63.js +23 -1950
  112. package/shared/definition64.cjs +1976 -0
  113. package/shared/definition64.js +1971 -0
  114. package/shared/listbox-option.cjs +204 -0
  115. package/shared/listbox-option.js +201 -0
  116. package/shared/listbox.cjs +3 -3
  117. package/shared/listbox.js +1 -1
  118. package/shared/localization/Locale.d.ts +4 -0
  119. package/shared/presentationDate.cjs +2 -2
  120. package/shared/presentationDate.js +2 -2
  121. package/shared/scrollIntoView.cjs +51 -0
  122. package/shared/scrollIntoView.js +49 -0
  123. package/shared/slider.template.cjs +1 -1
  124. package/shared/slider.template.js +1 -1
  125. package/shared/text-field.cjs +1 -1
  126. package/shared/text-field.js +1 -1
  127. package/shared/utils/scrollIntoView.d.ts +1 -0
  128. package/side-drawer/index.cjs +1 -1
  129. package/side-drawer/index.js +1 -1
  130. package/slider/index.cjs +1 -1
  131. package/slider/index.js +1 -1
  132. package/split-button/index.cjs +1 -1
  133. package/split-button/index.js +1 -1
  134. package/styles/core/all.css +1 -1
  135. package/styles/core/theme.css +1 -1
  136. package/styles/core/typography.css +1 -1
  137. package/styles/tokens/theme-dark.css +4 -4
  138. package/styles/tokens/theme-light.css +4 -4
  139. package/styles/tokens/vivid-2-compat.css +1 -1
  140. package/switch/index.cjs +1 -1
  141. package/switch/index.js +1 -1
  142. package/tab/index.cjs +1 -1
  143. package/tab/index.js +1 -1
  144. package/tab-panel/index.cjs +1 -1
  145. package/tab-panel/index.js +1 -1
  146. package/tabs/index.cjs +1 -1
  147. package/tabs/index.js +1 -1
  148. package/tag/index.cjs +1 -1
  149. package/tag/index.js +1 -1
  150. package/tag-group/index.cjs +1 -1
  151. package/tag-group/index.js +1 -1
  152. package/text-area/index.cjs +1 -1
  153. package/text-area/index.js +1 -1
  154. package/text-field/index.cjs +1 -1
  155. package/text-field/index.js +1 -1
  156. package/time-picker/index.cjs +1 -1
  157. package/time-picker/index.js +1 -1
  158. package/toggletip/index.cjs +1 -1
  159. package/toggletip/index.js +1 -1
  160. package/tooltip/index.cjs +1 -1
  161. package/tooltip/index.js +1 -1
  162. package/tree-item/index.cjs +1 -1
  163. package/tree-item/index.js +1 -1
  164. package/tree-view/index.cjs +1 -1
  165. package/tree-view/index.js +1 -1
  166. package/video-player/index.cjs +1 -1
  167. package/video-player/index.js +1 -1
  168. package/vivid.api.json +295 -0
  169. package/api-extractor.json +0 -25
  170. package/tsdoc-metadata.json +0 -11
@@ -1,325 +1,145 @@
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';
1
+ import { F as FoundationElement, a as attr, h as html, r as registerFactory } from './index.js';
2
2
  import { a as iconRegistries } from './definition27.js';
3
- import { R as Reflector } from './Reflector.js';
4
- import { a as applyMixinsWithObservables } from './applyMixinsWithObservables.js';
5
- import { D as DelegatesARIATextbox } from './text-field2.js';
3
+ import { A as AffixIcon, a as affixIconTemplateFactory, I as IconWrapper } from './affix.js';
6
4
  import { a as applyMixins } from './apply-mixins.js';
7
- import { F as FormAssociated } from './form-associated.js';
8
- import { e as errorText, f as formElements, F as FormElementSuccessText, a as FormElementHelperText, b as FormElementCharCount, g as getFeedbackTemplate } from './form-elements.js';
5
+ import { I as Icon } from './icon.js';
9
6
  import { w as when } from './when.js';
10
- import { r as ref } from './ref.js';
11
7
  import { c as classNames } from './class-names.js';
12
8
 
13
- class _TextArea extends FoundationElement {
14
- }
15
- /**
16
- * A form-associated base class for the {@link @microsoft/fast-foundation#(TextArea:class)} component.
17
- *
18
- * @internal
19
- */
20
- class FormAssociatedTextArea extends FormAssociated(_TextArea) {
21
- constructor() {
22
- super(...arguments);
23
- this.proxy = document.createElement("textarea");
24
- }
25
- }
26
-
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",
48
- };
49
-
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
- };
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);
189
-
190
- const styles = ":host{display:inline-block}.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-firm);--_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-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.base:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: 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))}.base{display:inline-grid;grid-template-columns:1fr max-content;inline-size:100%;row-gap:4px}@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{box-sizing:border-box;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*(32 + 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}";
191
-
192
9
  var __defProp = Object.defineProperty;
193
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
194
- var __typeError = (msg) => {
195
- throw TypeError(msg);
196
- };
197
10
  var __decorateClass = (decorators, target, key, kind) => {
198
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
11
+ var result = void 0 ;
199
12
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
200
13
  if (decorator = decorators[i])
201
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
202
- if (kind && result) __defProp(target, key, result);
14
+ result = (decorator(target, key, result) ) || result;
15
+ if (result) __defProp(target, key, result);
203
16
  return result;
204
17
  };
205
- var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
206
- var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
207
- var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
208
- var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
209
- var _reflectToTextArea;
210
- let TextArea = class extends TextArea$1 {
18
+ class Tag extends FoundationElement {
211
19
  constructor() {
212
20
  super(...arguments);
213
- __privateAdd(this, _reflectToTextArea);
21
+ this.removable = false;
22
+ this.disabled = false;
23
+ this.selectable = false;
24
+ this.selected = false;
25
+ this.#select = () => {
26
+ if (!this.selectable || this.disabled) {
27
+ return;
28
+ }
29
+ this.selected = !this.selected;
30
+ this.$emit("selected-change");
31
+ };
32
+ }
33
+ remove() {
34
+ if (!this.removable || this.selectable) {
35
+ return;
36
+ }
37
+ this.$emit("removed");
38
+ this.parentElement && this.parentElement.removeChild(this);
214
39
  }
215
- connectedCallback() {
216
- super.connectedCallback();
217
- __privateSet(this, _reflectToTextArea, new Reflector(this, this.control));
218
- __privateGet(this, _reflectToTextArea).property("value", "value", true);
40
+ #select;
41
+ handleKeydown(e) {
42
+ if (e.key === "Enter") {
43
+ this.#select();
44
+ }
45
+ if (e.key === "Delete" || e.key === "Backspace") {
46
+ this.remove();
47
+ }
48
+ return true;
219
49
  }
220
- disconnectedCallback() {
221
- super.disconnectedCallback();
222
- __privateGet(this, _reflectToTextArea).destroy();
50
+ handleClick() {
51
+ this.#select();
223
52
  }
224
- };
225
- _reflectToTextArea = new WeakMap();
53
+ }
226
54
  __decorateClass([
227
55
  attr
228
- ], TextArea.prototype, "wrap", 2);
229
- TextArea = __decorateClass([
230
- errorText,
231
- formElements
232
- ], TextArea);
233
- applyMixinsWithObservables(
234
- TextArea,
235
- FormElementCharCount,
236
- FormElementHelperText,
237
- FormElementSuccessText
238
- );
56
+ ], Tag.prototype, "connotation");
57
+ __decorateClass([
58
+ attr
59
+ ], Tag.prototype, "shape");
60
+ __decorateClass([
61
+ attr
62
+ ], Tag.prototype, "appearance");
63
+ __decorateClass([
64
+ attr
65
+ ], Tag.prototype, "label");
66
+ __decorateClass([
67
+ attr({ mode: "boolean" })
68
+ ], Tag.prototype, "removable");
69
+ __decorateClass([
70
+ attr({ mode: "boolean" })
71
+ ], Tag.prototype, "disabled");
72
+ __decorateClass([
73
+ attr({ mode: "boolean" })
74
+ ], Tag.prototype, "selectable");
75
+ __decorateClass([
76
+ attr({ mode: "boolean" })
77
+ ], Tag.prototype, "selected");
78
+ applyMixins(Tag, AffixIcon);
79
+
80
+ const styles = ".base.connotation-cta{--_connotation-color-contrast: var(--vvd-tag-cta-contrast, var(--vvd-color-cta-800));--_connotation-color-soft: var(--vvd-tag-cta-soft, var(--vvd-color-cta-100));--_connotation-color-pale: var(--vvd-tag-cta-pale, var(--vvd-color-cta-300));--_connotation-color-fierce: var(--vvd-tag-cta-fierce, var(--vvd-color-cta-700));--_connotation-color-firm-all: var(--vvd-tag-cta-firm-all, var(--vvd-color-cta-600));--_connotation-color-faint: var(--vvd-tag-cta-faint, var(--vvd-color-cta-50));--_connotation-color-dim: var(--vvd-tag-cta-dim, var(--vvd-color-cta-200))}.base:not(.connotation-cta){--_connotation-color-contrast: var(--vvd-tag-accent-contrast, var(--vvd-color-neutral-800));--_connotation-color-soft: var(--vvd-tag-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-pale: var(--vvd-tag-accent-pale, var(--vvd-color-neutral-300));--_connotation-color-fierce: var(--vvd-tag-accent-fierce, var(--vvd-color-neutral-700));--_connotation-color-firm-all: var(--vvd-tag-accent-firm-all, var(--vvd-color-neutral-600));--_connotation-color-faint: var(--vvd-tag-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-dim: var(--vvd-tag-accent-dim, var(--vvd-color-neutral-200))}.base{--_appearance-color-text: var(--_connotation-color-contrast);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.base.appearance-duotone{--_appearance-color-text: var(--_connotation-color-firm-all);--_appearance-color-fill: transparent;--_appearance-color-outline: var(--_connotation-color-pale)}.base:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-contrast);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.base:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)).appearance-duotone{--_appearance-color-text: var(--_connotation-color-firm-all);--_appearance-color-fill: transparent;--_appearance-color-outline: var(--_connotation-color-firm-all)}.base:where(.active,:active):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-contrast);--_appearance-color-fill: var(--_connotation-color-dim);--_appearance-color-outline: transparent}.base:where(.active,:active):where(:not(.disabled,:disabled)).appearance-duotone{--_appearance-color-text: var(--_connotation-color-firm-all);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: var(--_connotation-color-pale)}.base:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: var(--vvd-color-neutral-100);--_appearance-color-outline: transparent}.base:where(.disabled,:disabled).appearance-duotone{--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: var(--vvd-color-neutral-100)}.base:where(.selected):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-contrast);--_appearance-color-fill: var(--_connotation-color-pale);--_appearance-color-outline: transparent}.base:where(.selected):where(:not(.disabled,:disabled)).appearance-duotone{--_appearance-color-text: var(--_connotation-color-firm-all);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: var(--_connotation-color-pale)}.base{--tag-block-size: calc(1px*(24 + 4*clamp(-1, var(--vvd-size-density, 0), 2))) ;position:relative;display:inline-flex;box-sizing:border-box;align-items:center;background-color:var(--_appearance-color-fill);block-size:var(--tag-block-size);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);color:var(--_appearance-color-text);column-gap:8px;font:var(--vvd-typography-base-bold);max-inline-size:100%;padding-inline:8px;vertical-align:middle}.base:not(.shape-pill){border-radius:4px}.base.shape-pill{border-radius:16px}.base: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))}@supports (user-select: none){.base{user-select:none}}.base:not(.disabled){cursor:pointer}.base.disabled{cursor:not-allowed;pointer-events:none}.base.removable{cursor:auto}.label{overflow:hidden;max-inline-size:100%;text-overflow:ellipsis;white-space:nowrap}slot[name=icon]{font-size:calc(var(--tag-block-size) / 1.5);line-height:1}.dismiss-button{display:flex;align-items:center;border-radius:inherit;background-color:var(--_appearance-color-fill);cursor:pointer}";
239
81
 
240
82
  const getClasses = ({
241
- value,
242
- errorValidationMessage,
83
+ connotation,
84
+ appearance,
85
+ shape,
243
86
  disabled,
244
- placeholder,
245
- readOnly,
246
- successText
87
+ selectable,
88
+ removable,
89
+ selected
247
90
  }) => classNames(
248
91
  "base",
249
- ["readonly", readOnly],
250
- ["placeholder", Boolean(placeholder)],
251
92
  ["disabled", disabled],
252
- ["error", Boolean(errorValidationMessage)],
253
- ["has-value", Boolean(value)],
254
- ["success", !!successText]
93
+ ["selectable", selectable],
94
+ ["selected", selectable && selected],
95
+ ["removable", removable && !selectable],
96
+ [`connotation-${connotation}`, Boolean(connotation)],
97
+ [`appearance-${appearance}`, Boolean(appearance)],
98
+ [`shape-${shape}`, Boolean(shape)]
255
99
  );
256
- function renderLabel() {
257
- return html` <label for="control" class="label">
258
- ${(x) => x.label}
259
- </label>`;
260
- }
261
- function renderCharCount() {
100
+ function renderDismissButton(iconTag) {
262
101
  return html`
263
- <span class="char-count"
264
- >${(x) => x.value ? x.value.length : 0} / ${(x) => x.maxlength}</span
265
- >
266
- `;
102
+ <span
103
+ aria-hidden="true"
104
+ class="dismiss-button"
105
+ @click="${(x) => x.remove()}">
106
+ <${iconTag} name="close-line"></${iconTag}>
107
+ </span>`;
267
108
  }
268
- const TextAreaTemplate = (context) => {
269
- return html`
270
- <div class="${getClasses}">
271
- ${when((x) => x.charCount && x.maxlength, renderCharCount())}
272
- ${when((x) => x.label, renderLabel())}
273
- <textarea
274
- class="control"
275
- id="control"
276
- ?autofocus="${(x) => x.autofocus}"
277
- placeholder="${(x) => x.placeholder ? x.placeholder : null}"
278
- name="${(x) => x.name ? x.name : null}"
279
- minlength="${(x) => x.minlength ? x.minlength : null}"
280
- maxlength="${(x) => x.maxlength ? x.maxlength : null}"
281
- rows="${(x) => x.rows ? x.rows : null}"
282
- cols="${(x) => x.cols ? x.cols : null}"
283
- wrap="${(x) => x.wrap ? x.wrap : null}"
284
- ?readonly="${(x) => x.readOnly}"
285
- ?disabled="${(x) => x.disabled}"
286
- ?required="${(x) => x.required}"
287
- ?spellcheck="${(x) => x.spellcheck}"
288
- aria-atomic="${(x) => x.ariaAtomic}"
289
- aria-busy="${(x) => x.ariaBusy}"
290
- aria-current="${(x) => x.ariaCurrent}"
291
- aria-details="${(x) => x.ariaDetails}"
292
- aria-disabled="${(x) => x.ariaDisabled}"
293
- aria-errormessage="${(x) => x.ariaErrormessage}"
294
- aria-haspopup="${(x) => x.ariaHaspopup}"
295
- aria-hidden="${(x) => x.ariaHidden}"
296
- aria-invalid="${(x) => x.ariaInvalid}"
297
- aria-keyshortcuts="${(x) => x.ariaKeyshortcuts}"
298
- aria-label="${(x) => x.ariaLabel}"
299
- aria-live="${(x) => x.ariaLive}"
300
- aria-relevant="${(x) => x.ariaRelevant}"
301
- aria-roledescription="${(x) => x.ariaRoledescription}"
302
- @input="${(x) => x.handleTextInput()}"
303
- @change="${(x) => x.handleChange()}"
304
- ${ref("control")}
305
- >
306
- </textarea>
307
- ${getFeedbackTemplate(context)}
308
- </div>
309
- `;
109
+ const tagTemplate = (context) => {
110
+ const affixIconTemplate = affixIconTemplateFactory(context);
111
+ const iconTag = context.tagFor(Icon);
112
+ return html` <span
113
+ class="${getClasses}"
114
+ role="option"
115
+ aria-disabled="${(x) => x.disabled}"
116
+ aria-selected="${(x) => x.selectable}"
117
+ tabindex="${(x) => x.disabled ? null : 0}"
118
+ @keydown="${(x, c) => x.handleKeydown(c.event)}"
119
+ @click="${(x) => x.handleClick()}"
120
+ >
121
+ ${(x) => affixIconTemplate(x.icon, IconWrapper.Slot)}
122
+ ${when(
123
+ (x) => x.label,
124
+ (x) => html`<span class="label">${x.label}</span>`
125
+ )}
126
+ ${when((x) => x.removable && !x.selectable, renderDismissButton(iconTag))}
127
+ ${when(
128
+ (x) => x.selectable && x.selected,
129
+ html`<${iconTag} class="selectable-icon" name="check-circle-solid"></${iconTag}>`
130
+ )}
131
+ </span>`;
310
132
  };
311
133
 
312
- const textAreaDefinition = TextArea.compose(
313
- {
314
- baseName: "text-area",
315
- template: TextAreaTemplate,
316
- styles,
317
- shadowOptions: {
318
- delegatesFocus: true
319
- }
134
+ const tagDefinition = Tag.compose({
135
+ baseName: "tag",
136
+ template: tagTemplate,
137
+ styles,
138
+ shadowOptions: {
139
+ delegatesFocus: true
320
140
  }
321
- );
322
- const textAreaRegistries = [textAreaDefinition(), ...iconRegistries];
323
- const registerTextArea = registerFactory(textAreaRegistries);
141
+ });
142
+ const tagRegistries = [tagDefinition(), ...iconRegistries];
143
+ const registerTag = registerFactory(tagRegistries);
324
144
 
325
- export { textAreaRegistries as a, registerTextArea as r, textAreaDefinition as t };
145
+ export { tagRegistries as a, registerTag as r, tagDefinition as t };