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