@fluentui/web-components 3.0.0-beta.83 → 3.0.0-beta.85

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 (204) hide show
  1. package/CHANGELOG.md +20 -2
  2. package/dist/dts/accordion-item/accordion-item.base.d.ts +71 -0
  3. package/dist/dts/accordion-item/accordion-item.d.ts +1 -71
  4. package/dist/dts/accordion-item/index.d.ts +2 -1
  5. package/dist/dts/anchor-button/anchor-button.base.d.ts +144 -0
  6. package/dist/dts/anchor-button/anchor-button.d.ts +2 -144
  7. package/dist/dts/anchor-button/index.d.ts +3 -1
  8. package/dist/dts/avatar/avatar.base.d.ts +42 -0
  9. package/dist/dts/avatar/avatar.d.ts +2 -42
  10. package/dist/dts/avatar/index.d.ts +2 -1
  11. package/dist/dts/button/button.base.d.ts +242 -0
  12. package/dist/dts/button/button.d.ts +2 -242
  13. package/dist/dts/button/index.d.ts +2 -1
  14. package/dist/dts/checkbox/checkbox.base.d.ts +288 -0
  15. package/dist/dts/checkbox/checkbox.d.ts +1 -288
  16. package/dist/dts/checkbox/index.d.ts +2 -1
  17. package/dist/dts/divider/divider.base.d.ts +49 -0
  18. package/dist/dts/divider/divider.d.ts +2 -49
  19. package/dist/dts/divider/index.d.ts +2 -1
  20. package/dist/dts/dropdown/dropdown.base.d.ts +418 -0
  21. package/dist/dts/dropdown/dropdown.d.ts +2 -418
  22. package/dist/dts/dropdown/dropdown.options.d.ts +1 -1
  23. package/dist/dts/dropdown/dropdown.template.d.ts +1 -1
  24. package/dist/dts/dropdown/index.d.ts +2 -1
  25. package/dist/dts/field/field.base.d.ts +120 -0
  26. package/dist/dts/field/field.d.ts +2 -120
  27. package/dist/dts/field/index.d.ts +2 -1
  28. package/dist/dts/index-rollup.d.ts +2 -0
  29. package/dist/dts/index.d.ts +7 -8
  30. package/dist/dts/link/link.d.ts +1 -1
  31. package/dist/dts/listbox/listbox.d.ts +1 -1
  32. package/dist/dts/progress-bar/index.d.ts +2 -1
  33. package/dist/dts/progress-bar/progress-bar.base.d.ts +73 -0
  34. package/dist/dts/progress-bar/progress-bar.d.ts +2 -73
  35. package/dist/dts/radio/radio.d.ts +1 -1
  36. package/dist/dts/rating-display/index.d.ts +2 -1
  37. package/dist/dts/rating-display/rating-display.base.d.ts +89 -0
  38. package/dist/dts/rating-display/rating-display.d.ts +1 -89
  39. package/dist/dts/spinner/index.d.ts +2 -1
  40. package/dist/dts/spinner/spinner.base.d.ts +14 -0
  41. package/dist/dts/spinner/spinner.d.ts +1 -14
  42. package/dist/dts/switch/switch.d.ts +1 -1
  43. package/dist/dts/tablist/index.d.ts +2 -1
  44. package/dist/dts/tablist/tablist.base.d.ts +95 -0
  45. package/dist/dts/tablist/tablist.d.ts +2 -95
  46. package/dist/dts/tabs/tabs.base.d.ts +90 -0
  47. package/dist/dts/tabs/tabs.d.ts +2 -90
  48. package/dist/dts/text-input/index.d.ts +2 -1
  49. package/dist/dts/text-input/text-input.base.d.ts +393 -0
  50. package/dist/dts/text-input/text-input.d.ts +2 -393
  51. package/dist/dts/textarea/index.d.ts +2 -1
  52. package/dist/dts/textarea/textarea.base.d.ts +347 -0
  53. package/dist/dts/textarea/textarea.d.ts +2 -347
  54. package/dist/dts/tree/define.d.ts +1 -0
  55. package/dist/dts/tree/index.d.ts +4 -0
  56. package/dist/dts/tree/tree.bench.d.ts +3 -0
  57. package/dist/dts/tree/tree.d.ts +88 -0
  58. package/dist/dts/tree/tree.definition.d.ts +8 -0
  59. package/dist/dts/tree/tree.styles.d.ts +1 -0
  60. package/dist/dts/tree/tree.template.d.ts +2 -0
  61. package/dist/dts/tree-item/define.d.ts +1 -0
  62. package/dist/dts/tree-item/index.d.ts +5 -0
  63. package/dist/dts/tree-item/tree-item.bench.d.ts +3 -0
  64. package/dist/dts/tree-item/tree-item.d.ts +121 -0
  65. package/dist/dts/tree-item/tree-item.definition.d.ts +8 -0
  66. package/dist/dts/tree-item/tree-item.options.d.ts +22 -0
  67. package/dist/dts/tree-item/tree-item.styles.d.ts +1 -0
  68. package/dist/dts/tree-item/tree-item.template.d.ts +2 -0
  69. package/dist/esm/accordion/accordion.js +1 -1
  70. package/dist/esm/accordion/accordion.js.map +1 -1
  71. package/dist/esm/accordion-item/accordion-item.base.js +94 -0
  72. package/dist/esm/accordion-item/accordion-item.base.js.map +1 -0
  73. package/dist/esm/accordion-item/accordion-item.js +2 -91
  74. package/dist/esm/accordion-item/accordion-item.js.map +1 -1
  75. package/dist/esm/accordion-item/index.js +2 -1
  76. package/dist/esm/accordion-item/index.js.map +1 -1
  77. package/dist/esm/anchor-button/anchor-button.base.js +147 -0
  78. package/dist/esm/anchor-button/anchor-button.base.js.map +1 -0
  79. package/dist/esm/anchor-button/anchor-button.js +3 -145
  80. package/dist/esm/anchor-button/anchor-button.js.map +1 -1
  81. package/dist/esm/anchor-button/index.js +3 -1
  82. package/dist/esm/anchor-button/index.js.map +1 -1
  83. package/dist/esm/avatar/avatar.base.js +28 -0
  84. package/dist/esm/avatar/avatar.base.js.map +1 -0
  85. package/dist/esm/avatar/avatar.js +2 -26
  86. package/dist/esm/avatar/avatar.js.map +1 -1
  87. package/dist/esm/avatar/index.js +2 -1
  88. package/dist/esm/avatar/index.js.map +1 -1
  89. package/dist/esm/button/button.base.js +283 -0
  90. package/dist/esm/button/button.base.js.map +1 -0
  91. package/dist/esm/button/button.js +3 -281
  92. package/dist/esm/button/button.js.map +1 -1
  93. package/dist/esm/button/button.styles.js +2 -1
  94. package/dist/esm/button/button.styles.js.map +1 -1
  95. package/dist/esm/button/index.js +2 -1
  96. package/dist/esm/button/index.js.map +1 -1
  97. package/dist/esm/checkbox/checkbox.base.js +366 -0
  98. package/dist/esm/checkbox/checkbox.base.js.map +1 -0
  99. package/dist/esm/checkbox/checkbox.js +2 -363
  100. package/dist/esm/checkbox/checkbox.js.map +1 -1
  101. package/dist/esm/checkbox/index.js +2 -1
  102. package/dist/esm/checkbox/index.js.map +1 -1
  103. package/dist/esm/divider/divider.base.js +61 -0
  104. package/dist/esm/divider/divider.base.js.map +1 -0
  105. package/dist/esm/divider/divider.js +3 -58
  106. package/dist/esm/divider/divider.js.map +1 -1
  107. package/dist/esm/divider/index.js +2 -1
  108. package/dist/esm/divider/index.js.map +1 -1
  109. package/dist/esm/dropdown/dropdown.base.js +677 -0
  110. package/dist/esm/dropdown/dropdown.base.js.map +1 -0
  111. package/dist/esm/dropdown/dropdown.js +3 -674
  112. package/dist/esm/dropdown/dropdown.js.map +1 -1
  113. package/dist/esm/dropdown/index.js +2 -1
  114. package/dist/esm/dropdown/index.js.map +1 -1
  115. package/dist/esm/field/field.base.js +189 -0
  116. package/dist/esm/field/field.base.js.map +1 -0
  117. package/dist/esm/field/field.js +3 -187
  118. package/dist/esm/field/field.js.map +1 -1
  119. package/dist/esm/field/index.js +2 -1
  120. package/dist/esm/field/index.js.map +1 -1
  121. package/dist/esm/index-rollup.js +2 -0
  122. package/dist/esm/index-rollup.js.map +1 -1
  123. package/dist/esm/index.js +6 -5
  124. package/dist/esm/index.js.map +1 -1
  125. package/dist/esm/link/link.js +1 -1
  126. package/dist/esm/link/link.js.map +1 -1
  127. package/dist/esm/progress-bar/index.js +2 -1
  128. package/dist/esm/progress-bar/index.js.map +1 -1
  129. package/dist/esm/progress-bar/progress-bar.base.js +90 -0
  130. package/dist/esm/progress-bar/progress-bar.base.js.map +1 -0
  131. package/dist/esm/progress-bar/progress-bar.js +3 -87
  132. package/dist/esm/progress-bar/progress-bar.js.map +1 -1
  133. package/dist/esm/radio/radio.js +1 -1
  134. package/dist/esm/radio/radio.js.map +1 -1
  135. package/dist/esm/rating-display/index.js +2 -1
  136. package/dist/esm/rating-display/index.js.map +1 -1
  137. package/dist/esm/rating-display/rating-display.base.js +94 -0
  138. package/dist/esm/rating-display/rating-display.base.js.map +1 -0
  139. package/dist/esm/rating-display/rating-display.js +2 -92
  140. package/dist/esm/rating-display/rating-display.js.map +1 -1
  141. package/dist/esm/spinner/index.js +2 -1
  142. package/dist/esm/spinner/index.js.map +1 -1
  143. package/dist/esm/spinner/spinner.base.js +18 -0
  144. package/dist/esm/spinner/spinner.base.js.map +1 -0
  145. package/dist/esm/spinner/spinner.js +2 -17
  146. package/dist/esm/spinner/spinner.js.map +1 -1
  147. package/dist/esm/switch/switch.js +1 -1
  148. package/dist/esm/switch/switch.js.map +1 -1
  149. package/dist/esm/tablist/index.js +2 -1
  150. package/dist/esm/tablist/index.js.map +1 -1
  151. package/dist/esm/tablist/tablist.base.js +248 -0
  152. package/dist/esm/tablist/tablist.base.js.map +1 -0
  153. package/dist/esm/tablist/tablist.js +3 -245
  154. package/dist/esm/tablist/tablist.js.map +1 -1
  155. package/dist/esm/tabs/tabs.base.js +279 -0
  156. package/dist/esm/tabs/tabs.base.js.map +1 -0
  157. package/dist/esm/tabs/tabs.js +2 -276
  158. package/dist/esm/tabs/tabs.js.map +1 -1
  159. package/dist/esm/text-input/index.js +2 -1
  160. package/dist/esm/text-input/index.js.map +1 -1
  161. package/dist/esm/text-input/text-input.base.js +409 -0
  162. package/dist/esm/text-input/text-input.base.js.map +1 -0
  163. package/dist/esm/text-input/text-input.js +3 -407
  164. package/dist/esm/text-input/text-input.js.map +1 -1
  165. package/dist/esm/textarea/index.js +2 -1
  166. package/dist/esm/textarea/index.js.map +1 -1
  167. package/dist/esm/textarea/textarea.base.js +494 -0
  168. package/dist/esm/textarea/textarea.base.js.map +1 -0
  169. package/dist/esm/textarea/textarea.js +3 -491
  170. package/dist/esm/textarea/textarea.js.map +1 -1
  171. package/dist/esm/tree/define.js +4 -0
  172. package/dist/esm/tree/define.js.map +1 -0
  173. package/dist/esm/tree/index.js +5 -0
  174. package/dist/esm/tree/index.js.map +1 -0
  175. package/dist/esm/tree/tree.bench.js +10 -0
  176. package/dist/esm/tree/tree.bench.js.map +1 -0
  177. package/dist/esm/tree/tree.definition.js +16 -0
  178. package/dist/esm/tree/tree.definition.js.map +1 -0
  179. package/dist/esm/tree/tree.js +274 -0
  180. package/dist/esm/tree/tree.js.map +1 -0
  181. package/dist/esm/tree/tree.styles.js +9 -0
  182. package/dist/esm/tree/tree.styles.js.map +1 -0
  183. package/dist/esm/tree/tree.template.js +18 -0
  184. package/dist/esm/tree/tree.template.js.map +1 -0
  185. package/dist/esm/tree-item/define.js +4 -0
  186. package/dist/esm/tree-item/define.js.map +1 -0
  187. package/dist/esm/tree-item/index.js +5 -0
  188. package/dist/esm/tree-item/index.js.map +1 -0
  189. package/dist/esm/tree-item/tree-item.bench.js +10 -0
  190. package/dist/esm/tree-item/tree-item.bench.js.map +1 -0
  191. package/dist/esm/tree-item/tree-item.definition.js +16 -0
  192. package/dist/esm/tree-item/tree-item.definition.js.map +1 -0
  193. package/dist/esm/tree-item/tree-item.js +201 -0
  194. package/dist/esm/tree-item/tree-item.js.map +1 -0
  195. package/dist/esm/tree-item/tree-item.options.js +24 -0
  196. package/dist/esm/tree-item/tree-item.options.js.map +1 -0
  197. package/dist/esm/tree-item/tree-item.styles.js +170 -0
  198. package/dist/esm/tree-item/tree-item.styles.js.map +1 -0
  199. package/dist/esm/tree-item/tree-item.template.js +41 -0
  200. package/dist/esm/tree-item/tree-item.template.js.map +1 -0
  201. package/dist/web-components.d.ts +157 -0
  202. package/dist/web-components.js +1445 -842
  203. package/dist/web-components.min.js +310 -303
  204. package/package.json +5 -1
@@ -0,0 +1,494 @@
1
+ import { __decorate } from "tslib";
2
+ import { attr, FASTElement, nullableNumberConverter, observable } from '@microsoft/fast-element';
3
+ import { hasMatchingState, swapStates, toggleState } from '../utils/element-internals.js';
4
+ import { TextAreaResize } from './textarea.options.js';
5
+ /**
6
+ * A Text Area Custom HTML Element.
7
+ * Based largely on the {@link https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea | `<textarea>`} element.
8
+ *
9
+ * @slot - The default content/value of the component.
10
+ * @slot label - The content for the `<label>`, it should be a `<fluent-label>` element.
11
+ * @csspart label - The `<label>` element.
12
+ * @csspart root - The container element of the `<textarea>` element.
13
+ * @csspart control - The internal `<textarea>` element.
14
+ * @fires change - Fires after the control loses focus, if the content has changed.
15
+ * @fires select - Fires when the `select()` method is called.
16
+ *
17
+ * @public
18
+ */
19
+ export class BaseTextArea extends FASTElement {
20
+ /**
21
+ * The form-associated flag.
22
+ * @see {@link https://html.spec.whatwg.org/multipage/custom-elements.html#custom-elements-face-example | Form-associated custom elements}
23
+ *
24
+ * @public
25
+ */
26
+ static { this.formAssociated = true; }
27
+ defaultSlottedNodesChanged() {
28
+ const next = this.getContent();
29
+ this.defaultValue = next;
30
+ this.value = next;
31
+ }
32
+ labelSlottedNodesChanged() {
33
+ if (this.labelEl) {
34
+ this.labelEl.hidden = !this.labelSlottedNodes.length;
35
+ }
36
+ this.labelSlottedNodes.forEach(node => {
37
+ node.disabled = this.disabled;
38
+ node.required = this.required;
39
+ });
40
+ }
41
+ autoResizeChanged() {
42
+ this.maybeCreateAutoSizerEl();
43
+ toggleState(this.elementInternals, 'auto-resize', this.autoResize);
44
+ }
45
+ disabledChanged() {
46
+ this.setDisabledSideEffect(this.disabled);
47
+ }
48
+ /**
49
+ * The form element that’s associated to the element, or `null` if no form is associated.
50
+ *
51
+ * @public
52
+ */
53
+ get form() {
54
+ return this.elementInternals.form;
55
+ }
56
+ /**
57
+ * A `NodeList` of `<label>` element associated with the element.
58
+ * @see The {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement/labels | `labels`} property
59
+ *
60
+ * @public
61
+ */
62
+ get labels() {
63
+ return this.elementInternals.labels;
64
+ }
65
+ readOnlyChanged() {
66
+ this.elementInternals.ariaReadOnly = `${!!this.readOnly}`;
67
+ }
68
+ requiredChanged() {
69
+ this.elementInternals.ariaRequired = `${!!this.required}`;
70
+ if (this.labelSlottedNodes?.length) {
71
+ this.labelSlottedNodes.forEach(node => (node.required = this.required));
72
+ }
73
+ }
74
+ resizeChanged(prev, next) {
75
+ swapStates(this.elementInternals, prev, next, TextAreaResize, 'resize-');
76
+ toggleState(this.elementInternals, 'resize', hasMatchingState(TextAreaResize, next) && next !== TextAreaResize.none);
77
+ }
78
+ /**
79
+ * The length of the current value.
80
+ * @see The {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement#textLength | 'textLength'} property
81
+ *
82
+ * @public
83
+ */
84
+ get textLength() {
85
+ return this.controlEl.textLength;
86
+ }
87
+ /**
88
+ * The type of the element, which is always "textarea".
89
+ * @see The {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement/type | `type`} property
90
+ *
91
+ * @public
92
+ */
93
+ get type() {
94
+ return 'textarea';
95
+ }
96
+ /**
97
+ * The element's validity state.
98
+ *
99
+ * @public
100
+ * @remarks
101
+ * Reflects the {@link https://developer.mozilla.org/docs/Web/API/ElementInternals/validity | `ElementInternals.validity`} property.
102
+ */
103
+ get validity() {
104
+ return this.elementInternals.validity;
105
+ }
106
+ /**
107
+ * The validation message.
108
+ *
109
+ * @public
110
+ * @remarks
111
+ * Reflects the {@link https://developer.mozilla.org/docs/Web/API/ElementInternals/validationMessage | `ElementInternals.validationMessage`} property.
112
+ */
113
+ get validationMessage() {
114
+ return this.elementInternals.validationMessage || this.controlEl.validationMessage;
115
+ }
116
+ /**
117
+ * Determines if the control can be submitted for constraint validation.
118
+ *
119
+ * @public
120
+ * @remarks
121
+ * Reflects the {@link https://developer.mozilla.org/docs/Web/API/ElementInternals/willValidate | `ElementInternals.willValidate`} property.
122
+ */
123
+ get willValidate() {
124
+ return this.elementInternals.willValidate;
125
+ }
126
+ /**
127
+ * The text content of the element before user interaction.
128
+ * @see The {@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement#defaultvalue | `defaultValue`} property
129
+ *
130
+ * @public
131
+ * @remarks
132
+ * In order to set the initial/default value, an author should either add the default value in the HTML as the children
133
+ * of the component, or setting this property in JavaScript. Setting `innerHTML`, `innerText`, or `textContent` on this
134
+ * component will not change the default value or the content displayed inside the component.
135
+ */
136
+ get defaultValue() {
137
+ return this.controlEl?.defaultValue ?? this.preConnectControlEl.defaultValue;
138
+ }
139
+ set defaultValue(next) {
140
+ const controlEl = this.controlEl ?? this.preConnectControlEl;
141
+ controlEl.defaultValue = next;
142
+ if (this.controlEl && !this.userInteracted) {
143
+ this.controlEl.value = next;
144
+ }
145
+ }
146
+ /**
147
+ * The value of the element.
148
+ *
149
+ * @public
150
+ * @remarks
151
+ * Reflects the `value` property.
152
+ */
153
+ get value() {
154
+ return this.controlEl?.value ?? this.preConnectControlEl.value;
155
+ }
156
+ set value(next) {
157
+ const controlEl = this.controlEl ?? this.preConnectControlEl;
158
+ controlEl.value = next;
159
+ this.setFormValue(next);
160
+ this.setValidity();
161
+ }
162
+ constructor() {
163
+ super();
164
+ /**
165
+ * The internal {@link https://developer.mozilla.org/docs/Web/API/ElementInternals | `ElementInternals`} instance for the component.
166
+ *
167
+ * @internal
168
+ */
169
+ this.elementInternals = this.attachInternals();
170
+ this.userInteracted = false;
171
+ this.preConnectControlEl = document.createElement('textarea');
172
+ /**
173
+ * Indicates whether the element’s block size (height) should be automatically changed based on the content.
174
+ * Note: When this property’s value is set to be `true`, the element should not have a fixed block-size
175
+ * defined in CSS. Instead, use `min-height` or `min-block-size`.
176
+ *
177
+ * @public
178
+ * @remarks
179
+ * HTML Attribute: `auto-resize`
180
+ */
181
+ this.autoResize = false;
182
+ /**
183
+ * Sets the element's disabled state.
184
+ * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Attributes/disabled | `disabled`} attribute
185
+ *
186
+ * @public
187
+ * @remarks
188
+ * HTML Attribute: `disabled`
189
+ */
190
+ this.disabled = false;
191
+ /**
192
+ * Indicates whether the element displays a box shadow. This only has effect when `appearance` is set to be `filled-darker` or `filled-lighter`.
193
+ *
194
+ * @public
195
+ * @remarks
196
+ * HTML Attribute: `display-shadow`
197
+ */
198
+ this.displayShadow = false;
199
+ /**
200
+ * When true, the control will be immutable by user interaction.
201
+ * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Attributes/readonly | `readonly`} attribute
202
+ *
203
+ * @public
204
+ * @remarks
205
+ * HTML Attribute: `readonly`
206
+ */
207
+ this.readOnly = false;
208
+ /**
209
+ * The element's required attribute.
210
+ *
211
+ * @public
212
+ * @remarks
213
+ * HTML Attribute: `required`
214
+ */
215
+ this.required = false;
216
+ /**
217
+ * Indicates whether the element can be resized by end users.
218
+ *
219
+ * @public
220
+ * @remarks
221
+ * HTML Attribute: `resize`
222
+ */
223
+ this.resize = TextAreaResize.none;
224
+ /**
225
+ * Controls whether or not to enable spell checking for the input field, or if the default spell checking configuration should be used.
226
+ * @see The {@link https://developer.mozilla.org/docs/Web/HTML/Global_attributes/spellcheck | `spellcheck`} attribute
227
+ *
228
+ * @public
229
+ * @remarks
230
+ * HTML Attribute: `spellcheck`
231
+ */
232
+ this.spellcheck = false;
233
+ // TODO: Re-enabled this when Reference Target is out.
234
+ // this.elementInternals.role = 'textbox';
235
+ // this.elementInternals.ariaMultiLine = 'true';
236
+ }
237
+ /**
238
+ * @internal
239
+ */
240
+ connectedCallback() {
241
+ super.connectedCallback();
242
+ this.setDefaultValue();
243
+ this.maybeCreateAutoSizerEl();
244
+ this.bindEvents();
245
+ this.observeControlElAttrs();
246
+ }
247
+ /**
248
+ * @internal
249
+ */
250
+ disconnectedCallback() {
251
+ super.disconnectedCallback();
252
+ this.autoSizerObserver?.disconnect();
253
+ this.controlElAttrObserver?.disconnect();
254
+ }
255
+ /**
256
+ * Resets the value to its initial value when the form is reset.
257
+ *
258
+ * @internal
259
+ */
260
+ formResetCallback() {
261
+ this.value = this.defaultValue;
262
+ }
263
+ /**
264
+ * @internal
265
+ */
266
+ formDisabledCallback(disabled) {
267
+ this.setDisabledSideEffect(disabled);
268
+ this.setValidity();
269
+ }
270
+ /**
271
+ * Reflects the {@link https://developer.mozilla.org/docs/Web/API/ElementInternals/setFormValue | `ElementInternals.setFormValue()`} method.
272
+ *
273
+ * @internal
274
+ */
275
+ setFormValue(value, state) {
276
+ this.elementInternals.setFormValue(value, value ?? state);
277
+ }
278
+ /**
279
+ * Checks the validity of the element and returns the result.
280
+ *
281
+ * @public
282
+ * @remarks
283
+ * Reflects the {@link https://developer.mozilla.org/docs/Web/API/ElementInternals/checkValidity | `HTMLInputElement.checkValidity()`} method.
284
+ */
285
+ checkValidity() {
286
+ return this.elementInternals.checkValidity();
287
+ }
288
+ /**
289
+ * Reports the validity of the element.
290
+ *
291
+ * @public
292
+ * @remarks
293
+ * Reflects the {@link https://developer.mozilla.org/docs/Web/API/ElementInternals/reportValidity | `HTMLInputElement.reportValidity()`} method.
294
+ */
295
+ reportValidity() {
296
+ return this.elementInternals.reportValidity();
297
+ }
298
+ /**
299
+ * Sets the custom validity message.
300
+ * @param message - The message to set
301
+ *
302
+ * @public
303
+ */
304
+ setCustomValidity(message) {
305
+ this.elementInternals.setValidity({ customError: !!message }, !!message ? message.toString() : undefined);
306
+ this.reportValidity();
307
+ }
308
+ /**
309
+ * Sets the validity of the control.
310
+ *
311
+ * @param flags - Validity flags. If not provided, the control's `validity` will be used.
312
+ * @param message - Optional message to supply. If not provided, the control's `validationMessage` will be used. If the control does not have a `validationMessage`, the message will be empty.
313
+ * @param anchor - Optional anchor to use for the validation message. If not provided, the control will be used.
314
+ *
315
+ * @internal
316
+ */
317
+ setValidity(flags, message, anchor) {
318
+ if (!this.$fastController.isConnected) {
319
+ return;
320
+ }
321
+ if (this.disabled || this.readOnly) {
322
+ this.elementInternals.setValidity({});
323
+ }
324
+ else {
325
+ this.elementInternals.setValidity(flags ?? this.controlEl.validity, message ?? this.controlEl.validationMessage, anchor ?? this.controlEl);
326
+ }
327
+ if (this.userInteracted) {
328
+ this.toggleUserValidityState();
329
+ }
330
+ }
331
+ /**
332
+ * Selects the content in the element.
333
+ *
334
+ * @public
335
+ */
336
+ select() {
337
+ this.controlEl.select();
338
+ }
339
+ setDefaultValue() {
340
+ this.defaultValue = this.innerHTML.trim() || this.preConnectControlEl.defaultValue || '';
341
+ this.value = this.preConnectControlEl.value || this.defaultValue;
342
+ this.setFormValue(this.value);
343
+ this.setValidity();
344
+ this.preConnectControlEl = null;
345
+ }
346
+ bindEvents() {
347
+ this.controlEl.addEventListener('input', () => (this.userInteracted = true), { once: true });
348
+ }
349
+ /**
350
+ * Gets the content inside the light DOM, if any HTML element is present, use its `outerHTML` value.
351
+ */
352
+ getContent() {
353
+ return (this.defaultSlottedNodes
354
+ .map(node => {
355
+ switch (node.nodeType) {
356
+ case Node.ELEMENT_NODE:
357
+ return node.outerHTML;
358
+ case Node.TEXT_NODE:
359
+ return node.textContent.trim();
360
+ default:
361
+ return '';
362
+ }
363
+ })
364
+ .join('') || '');
365
+ }
366
+ observeControlElAttrs() {
367
+ this.controlElAttrObserver = new MutationObserver(() => {
368
+ this.setValidity();
369
+ });
370
+ this.controlElAttrObserver.observe(this.controlEl, {
371
+ attributes: true,
372
+ attributeFilter: ['disabled', 'required', 'readonly', 'maxlength', 'minlength'],
373
+ });
374
+ }
375
+ setDisabledSideEffect(disabled) {
376
+ this.elementInternals.ariaDisabled = `${disabled}`;
377
+ if (this.controlEl) {
378
+ this.controlEl.disabled = disabled;
379
+ }
380
+ if (this.labelSlottedNodes?.length) {
381
+ this.labelSlottedNodes.forEach(node => (node.disabled = this.disabled));
382
+ }
383
+ }
384
+ toggleUserValidityState() {
385
+ toggleState(this.elementInternals, 'user-invalid', !this.validity.valid);
386
+ toggleState(this.elementInternals, 'user-valid', this.validity.valid);
387
+ }
388
+ // Technique inspired by https://css-tricks.com/the-cleanest-trick-for-autogrowing-textareas/
389
+ // TODO: This should be removed after `field-sizing: content` is widely supported
390
+ // https://caniuse.com/mdn-css_properties_field-sizing_content
391
+ maybeCreateAutoSizerEl() {
392
+ if (CSS.supports('field-sizing: content')) {
393
+ return;
394
+ }
395
+ if (!this.autoResize) {
396
+ this.autoSizerEl?.remove();
397
+ this.autoSizerObserver?.disconnect();
398
+ return;
399
+ }
400
+ if (!this.autoSizerEl) {
401
+ this.autoSizerEl = document.createElement('div');
402
+ this.autoSizerEl.classList.add('auto-sizer');
403
+ this.autoSizerEl.ariaHidden = 'true';
404
+ }
405
+ this.shadowRoot.prepend(this.autoSizerEl);
406
+ // The `ResizeObserver` is used to observe when the component gains
407
+ // explicit block size, when so, the `autoSizerEl` element should be
408
+ // removed to let the defined blocked size dictate the component’s block size.
409
+ if (!this.autoSizerObserver) {
410
+ this.autoSizerObserver = new ResizeObserver((_, observer) => {
411
+ const blockSizePropName = window.getComputedStyle(this).writingMode.startsWith('horizontal')
412
+ ? 'height'
413
+ : 'width';
414
+ if (this.style.getPropertyValue(blockSizePropName) !== '') {
415
+ this.autoSizerEl?.remove();
416
+ observer.disconnect();
417
+ }
418
+ });
419
+ }
420
+ this.autoSizerObserver.observe(this);
421
+ }
422
+ /**
423
+ * @internal
424
+ */
425
+ handleControlInput() {
426
+ if (this.autoResize && this.autoSizerEl) {
427
+ this.autoSizerEl.textContent = this.value + ' ';
428
+ }
429
+ this.setFormValue(this.value);
430
+ this.setValidity();
431
+ }
432
+ /**
433
+ * @internal
434
+ */
435
+ handleControlChange() {
436
+ this.toggleUserValidityState();
437
+ this.$emit('change');
438
+ }
439
+ /**
440
+ * @internal
441
+ */
442
+ handleControlSelect() {
443
+ this.$emit('select');
444
+ }
445
+ }
446
+ __decorate([
447
+ observable
448
+ ], BaseTextArea.prototype, "defaultSlottedNodes", void 0);
449
+ __decorate([
450
+ observable
451
+ ], BaseTextArea.prototype, "labelSlottedNodes", void 0);
452
+ __decorate([
453
+ attr
454
+ ], BaseTextArea.prototype, "autocomplete", void 0);
455
+ __decorate([
456
+ attr({ attribute: 'auto-resize', mode: 'boolean' })
457
+ ], BaseTextArea.prototype, "autoResize", void 0);
458
+ __decorate([
459
+ attr({ attribute: 'dirname' })
460
+ ], BaseTextArea.prototype, "dirName", void 0);
461
+ __decorate([
462
+ attr({ mode: 'boolean' })
463
+ ], BaseTextArea.prototype, "disabled", void 0);
464
+ __decorate([
465
+ attr({ attribute: 'display-shadow', mode: 'boolean' })
466
+ ], BaseTextArea.prototype, "displayShadow", void 0);
467
+ __decorate([
468
+ attr({ attribute: 'form' })
469
+ ], BaseTextArea.prototype, "initialForm", void 0);
470
+ __decorate([
471
+ attr({ attribute: 'maxlength', converter: nullableNumberConverter })
472
+ ], BaseTextArea.prototype, "maxLength", void 0);
473
+ __decorate([
474
+ attr({ attribute: 'minlength', converter: nullableNumberConverter })
475
+ ], BaseTextArea.prototype, "minLength", void 0);
476
+ __decorate([
477
+ attr
478
+ ], BaseTextArea.prototype, "name", void 0);
479
+ __decorate([
480
+ attr
481
+ ], BaseTextArea.prototype, "placeholder", void 0);
482
+ __decorate([
483
+ attr({ attribute: 'readonly', mode: 'boolean' })
484
+ ], BaseTextArea.prototype, "readOnly", void 0);
485
+ __decorate([
486
+ attr({ mode: 'boolean' })
487
+ ], BaseTextArea.prototype, "required", void 0);
488
+ __decorate([
489
+ attr({ mode: 'fromView' })
490
+ ], BaseTextArea.prototype, "resize", void 0);
491
+ __decorate([
492
+ attr({ mode: 'boolean' })
493
+ ], BaseTextArea.prototype, "spellcheck", void 0);
494
+ //# sourceMappingURL=textarea.base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textarea.base.js","sourceRoot":"","sources":["../../../src/textarea/textarea.base.ts"],"names":[],"mappings":"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"}