@phcdevworks/spectre-components 1.0.0 → 1.2.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.
- package/README.md +586 -107
- package/dist/base-B_9DJkh2.d.cts +38 -0
- package/dist/base-B_9DJkh2.d.ts +38 -0
- package/dist/button.cjs +252 -90
- package/dist/button.cjs.map +1 -1
- package/dist/button.d.cts +39 -37
- package/dist/button.d.ts +39 -37
- package/dist/button.js +252 -90
- package/dist/button.js.map +1 -1
- package/dist/checkbox.cjs +228 -67
- package/dist/checkbox.cjs.map +1 -1
- package/dist/checkbox.d.cts +21 -21
- package/dist/checkbox.d.ts +21 -21
- package/dist/checkbox.js +228 -67
- package/dist/checkbox.js.map +1 -1
- package/dist/fieldset.cjs +245 -56
- package/dist/fieldset.cjs.map +1 -1
- package/dist/fieldset.d.cts +35 -14
- package/dist/fieldset.d.ts +35 -14
- package/dist/fieldset.js +245 -56
- package/dist/fieldset.js.map +1 -1
- package/dist/form-9cZG1E9P.d.cts +10 -0
- package/dist/form-9cZG1E9P.d.ts +10 -0
- package/dist/index.cjs +647 -328
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.js +647 -328
- package/dist/index.js.map +1 -1
- package/dist/input.cjs +262 -77
- package/dist/input.cjs.map +1 -1
- package/dist/input.d.cts +72 -40
- package/dist/input.d.ts +72 -40
- package/dist/input.js +262 -77
- package/dist/input.js.map +1 -1
- package/dist/label.cjs +217 -55
- package/dist/label.cjs.map +1 -1
- package/dist/label.d.cts +17 -10
- package/dist/label.d.ts +17 -10
- package/dist/label.js +217 -55
- package/dist/label.js.map +1 -1
- package/dist/{projectable-DcnBRiko.d.cts → projectable-CIfxi7dv.d.cts} +1 -1
- package/dist/{projectable-SzbPvXfM.d.ts → projectable-Ksv9eoIr.d.ts} +1 -1
- package/dist/radio.cjs +248 -67
- package/dist/radio.cjs.map +1 -1
- package/dist/radio.d.cts +23 -21
- package/dist/radio.d.ts +23 -21
- package/dist/radio.js +248 -67
- package/dist/radio.js.map +1 -1
- package/dist/select.cjs +230 -67
- package/dist/select.cjs.map +1 -1
- package/dist/select.d.cts +27 -27
- package/dist/select.d.ts +27 -27
- package/dist/select.js +230 -67
- package/dist/select.js.map +1 -1
- package/dist/textarea.cjs +256 -77
- package/dist/textarea.cjs.map +1 -1
- package/dist/textarea.d.cts +53 -32
- package/dist/textarea.d.ts +53 -32
- package/dist/textarea.js +256 -77
- package/dist/textarea.js.map +1 -1
- package/package.json +22 -12
- package/dist/base-DQtCQ-dP.d.cts +0 -22
- package/dist/base-DQtCQ-dP.d.ts +0 -22
- package/dist/form-iI7vV-3W.d.cts +0 -6
- package/dist/form-iI7vV-3W.d.ts +0 -6
package/dist/textarea.cjs
CHANGED
|
@@ -9,22 +9,92 @@ var spectreUi = require('@phcdevworks/spectre-ui');
|
|
|
9
9
|
var SpectreBaseElement = class extends lit.LitElement {
|
|
10
10
|
constructor() {
|
|
11
11
|
super(...arguments);
|
|
12
|
-
this.
|
|
13
|
-
this.
|
|
14
|
-
this.
|
|
12
|
+
this._ariaLabel = null;
|
|
13
|
+
this._ariaLabelledBy = null;
|
|
14
|
+
this._ariaDescribedBy = null;
|
|
15
|
+
this._autocapitalize = "";
|
|
16
|
+
this._spellcheck = null;
|
|
17
|
+
this._title = "";
|
|
18
|
+
this._id = "";
|
|
19
|
+
}
|
|
20
|
+
get ariaLabel() {
|
|
21
|
+
return this._ariaLabel;
|
|
22
|
+
}
|
|
23
|
+
set ariaLabel(value) {
|
|
24
|
+
if (this._ariaLabel === value) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
this._ariaLabel = value;
|
|
28
|
+
this._removeHostAttribute("aria-label");
|
|
29
|
+
this.requestUpdate();
|
|
30
|
+
}
|
|
31
|
+
get ariaLabelledBy() {
|
|
32
|
+
return this._ariaLabelledBy;
|
|
33
|
+
}
|
|
34
|
+
set ariaLabelledBy(value) {
|
|
35
|
+
if (this._ariaLabelledBy === value) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
this._ariaLabelledBy = value;
|
|
39
|
+
this._removeHostAttribute("aria-labelledby");
|
|
40
|
+
this.requestUpdate();
|
|
41
|
+
}
|
|
42
|
+
get ariaDescribedBy() {
|
|
43
|
+
return this._ariaDescribedBy;
|
|
44
|
+
}
|
|
45
|
+
set ariaDescribedBy(value) {
|
|
46
|
+
if (this._ariaDescribedBy === value) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
this._ariaDescribedBy = value;
|
|
50
|
+
this._removeHostAttribute("aria-describedby");
|
|
51
|
+
this.requestUpdate();
|
|
52
|
+
}
|
|
53
|
+
get autocapitalize() {
|
|
54
|
+
return this._autocapitalize;
|
|
55
|
+
}
|
|
56
|
+
set autocapitalize(value) {
|
|
57
|
+
const normalizedValue = value ?? "";
|
|
58
|
+
if (this._autocapitalize === normalizedValue) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
this._autocapitalize = normalizedValue;
|
|
62
|
+
this._removeHostAttribute("autocapitalize");
|
|
63
|
+
this.requestUpdate();
|
|
64
|
+
}
|
|
65
|
+
get spellcheck() {
|
|
66
|
+
return this._spellcheck ?? super.spellcheck;
|
|
67
|
+
}
|
|
68
|
+
set spellcheck(value) {
|
|
69
|
+
if (this._spellcheck === value) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
this._spellcheck = value ?? null;
|
|
73
|
+
this._removeHostAttribute("spellcheck");
|
|
74
|
+
this.requestUpdate();
|
|
75
|
+
}
|
|
76
|
+
get title() {
|
|
77
|
+
return this._title;
|
|
78
|
+
}
|
|
79
|
+
set title(value) {
|
|
80
|
+
const normalizedValue = value ?? "";
|
|
81
|
+
if (this._title === normalizedValue) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
this._title = normalizedValue;
|
|
85
|
+
this._removeHostAttribute("title");
|
|
86
|
+
this.requestUpdate();
|
|
15
87
|
}
|
|
16
88
|
get id() {
|
|
17
|
-
return this._id
|
|
89
|
+
return this._id;
|
|
18
90
|
}
|
|
19
91
|
set id(value) {
|
|
20
|
-
|
|
92
|
+
const normalizedValue = value ?? "";
|
|
93
|
+
if (this._id === normalizedValue) {
|
|
21
94
|
return;
|
|
22
95
|
}
|
|
23
|
-
this._id =
|
|
24
|
-
|
|
25
|
-
if (HTMLElement.prototype.hasAttribute.call(host, "id")) {
|
|
26
|
-
HTMLElement.prototype.removeAttribute.call(host, "id");
|
|
27
|
-
}
|
|
96
|
+
this._id = normalizedValue;
|
|
97
|
+
this._removeHostAttribute("id");
|
|
28
98
|
this.requestUpdate();
|
|
29
99
|
}
|
|
30
100
|
// Spectre components intentionally render in light DOM so the global
|
|
@@ -34,36 +104,121 @@ var SpectreBaseElement = class extends lit.LitElement {
|
|
|
34
104
|
}
|
|
35
105
|
connectedCallback() {
|
|
36
106
|
super.connectedCallback();
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
107
|
+
const proxiedAttributes = [
|
|
108
|
+
"id",
|
|
109
|
+
"title",
|
|
110
|
+
"autocapitalize",
|
|
111
|
+
"spellcheck",
|
|
112
|
+
"aria-label",
|
|
113
|
+
"aria-labelledby",
|
|
114
|
+
"aria-describedby"
|
|
115
|
+
];
|
|
116
|
+
proxiedAttributes.forEach((attr) => {
|
|
117
|
+
const value = super.getAttribute(attr);
|
|
118
|
+
if (value !== null) {
|
|
119
|
+
this.setAttribute(attr, value);
|
|
120
|
+
}
|
|
121
|
+
});
|
|
41
122
|
}
|
|
42
123
|
getAttribute(qualifiedName) {
|
|
43
|
-
|
|
44
|
-
|
|
124
|
+
switch (qualifiedName) {
|
|
125
|
+
case "id":
|
|
126
|
+
return this.id || null;
|
|
127
|
+
case "title":
|
|
128
|
+
return this.title || null;
|
|
129
|
+
case "autocapitalize":
|
|
130
|
+
return this.autocapitalize || null;
|
|
131
|
+
case "spellcheck":
|
|
132
|
+
return this._spellcheck !== null ? String(this._spellcheck) : null;
|
|
133
|
+
case "aria-label":
|
|
134
|
+
return this.ariaLabel;
|
|
135
|
+
case "aria-labelledby":
|
|
136
|
+
return this.ariaLabelledBy;
|
|
137
|
+
case "aria-describedby":
|
|
138
|
+
return this.ariaDescribedBy;
|
|
139
|
+
default:
|
|
140
|
+
return super.getAttribute(qualifiedName);
|
|
45
141
|
}
|
|
46
|
-
return super.getAttribute(qualifiedName);
|
|
47
142
|
}
|
|
48
143
|
hasAttribute(qualifiedName) {
|
|
49
|
-
|
|
50
|
-
|
|
144
|
+
switch (qualifiedName) {
|
|
145
|
+
case "id":
|
|
146
|
+
return this.id !== "";
|
|
147
|
+
case "title":
|
|
148
|
+
return this.title !== "";
|
|
149
|
+
case "autocapitalize":
|
|
150
|
+
return this.autocapitalize !== "";
|
|
151
|
+
case "spellcheck":
|
|
152
|
+
return this._spellcheck !== null;
|
|
153
|
+
case "aria-label":
|
|
154
|
+
return this.ariaLabel !== null;
|
|
155
|
+
case "aria-labelledby":
|
|
156
|
+
return this.ariaLabelledBy !== null;
|
|
157
|
+
case "aria-describedby":
|
|
158
|
+
return this.ariaDescribedBy !== null;
|
|
159
|
+
default:
|
|
160
|
+
return super.hasAttribute(qualifiedName);
|
|
51
161
|
}
|
|
52
|
-
return super.hasAttribute(qualifiedName);
|
|
53
162
|
}
|
|
54
163
|
setAttribute(qualifiedName, value) {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
164
|
+
switch (qualifiedName) {
|
|
165
|
+
case "id":
|
|
166
|
+
this.id = value;
|
|
167
|
+
break;
|
|
168
|
+
case "title":
|
|
169
|
+
this.title = value;
|
|
170
|
+
break;
|
|
171
|
+
case "autocapitalize":
|
|
172
|
+
this.autocapitalize = value;
|
|
173
|
+
break;
|
|
174
|
+
case "spellcheck":
|
|
175
|
+
this.spellcheck = value !== "false";
|
|
176
|
+
break;
|
|
177
|
+
case "aria-label":
|
|
178
|
+
this.ariaLabel = value;
|
|
179
|
+
break;
|
|
180
|
+
case "aria-labelledby":
|
|
181
|
+
this.ariaLabelledBy = value;
|
|
182
|
+
break;
|
|
183
|
+
case "aria-describedby":
|
|
184
|
+
this.ariaDescribedBy = value;
|
|
185
|
+
break;
|
|
186
|
+
default:
|
|
187
|
+
super.setAttribute(qualifiedName, value);
|
|
58
188
|
}
|
|
59
|
-
super.setAttribute(qualifiedName, value);
|
|
60
189
|
}
|
|
61
190
|
removeAttribute(qualifiedName) {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
191
|
+
switch (qualifiedName) {
|
|
192
|
+
case "id":
|
|
193
|
+
this.id = "";
|
|
194
|
+
break;
|
|
195
|
+
case "title":
|
|
196
|
+
this.title = "";
|
|
197
|
+
break;
|
|
198
|
+
case "autocapitalize":
|
|
199
|
+
this.autocapitalize = "";
|
|
200
|
+
break;
|
|
201
|
+
case "spellcheck":
|
|
202
|
+
this.spellcheck = null;
|
|
203
|
+
break;
|
|
204
|
+
case "aria-label":
|
|
205
|
+
this.ariaLabel = null;
|
|
206
|
+
break;
|
|
207
|
+
case "aria-labelledby":
|
|
208
|
+
this.ariaLabelledBy = null;
|
|
209
|
+
break;
|
|
210
|
+
case "aria-describedby":
|
|
211
|
+
this.ariaDescribedBy = null;
|
|
212
|
+
break;
|
|
213
|
+
default:
|
|
214
|
+
super.removeAttribute(qualifiedName);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
_removeHostAttribute(name) {
|
|
218
|
+
const host = this;
|
|
219
|
+
if (HTMLElement.prototype.hasAttribute.call(host, name)) {
|
|
220
|
+
HTMLElement.prototype.removeAttribute.call(host, name);
|
|
65
221
|
}
|
|
66
|
-
super.removeAttribute(qualifiedName);
|
|
67
222
|
}
|
|
68
223
|
get forwardedAriaLabel() {
|
|
69
224
|
const value = this.ariaLabel?.trim();
|
|
@@ -78,15 +233,17 @@ var SpectreBaseElement = class extends lit.LitElement {
|
|
|
78
233
|
return value ? value : void 0;
|
|
79
234
|
}
|
|
80
235
|
};
|
|
81
|
-
SpectreBaseElement.properties = {
|
|
82
|
-
ariaLabel: { attribute: "aria-label", type: String },
|
|
83
|
-
ariaLabelledBy: { attribute: "aria-labelledby", type: String },
|
|
84
|
-
ariaDescribedBy: { attribute: "aria-describedby", type: String }
|
|
85
|
-
};
|
|
236
|
+
SpectreBaseElement.properties = {};
|
|
86
237
|
var spectreInputSizes = ["sm", "md", "lg"];
|
|
87
238
|
function isInputSize(value) {
|
|
88
239
|
return spectreInputSizes.includes(value);
|
|
89
240
|
}
|
|
241
|
+
function normalizeInt(value, fallback, min = 0) {
|
|
242
|
+
if (value == null || typeof value !== "number" || !Number.isInteger(value) || value < min) {
|
|
243
|
+
return fallback;
|
|
244
|
+
}
|
|
245
|
+
return value;
|
|
246
|
+
}
|
|
90
247
|
var DEFAULT_ROWS = 2;
|
|
91
248
|
var SpectreTextareaElement = class extends SpectreBaseElement {
|
|
92
249
|
constructor() {
|
|
@@ -102,42 +259,59 @@ var SpectreTextareaElement = class extends SpectreBaseElement {
|
|
|
102
259
|
this.rows = DEFAULT_ROWS;
|
|
103
260
|
this.size = "md";
|
|
104
261
|
this.success = false;
|
|
105
|
-
this.title = "";
|
|
106
262
|
this.value = "";
|
|
107
263
|
}
|
|
264
|
+
get autocapitalize() {
|
|
265
|
+
return super.autocapitalize;
|
|
266
|
+
}
|
|
267
|
+
set autocapitalize(value) {
|
|
268
|
+
super.autocapitalize = value;
|
|
269
|
+
}
|
|
270
|
+
get id() {
|
|
271
|
+
return super.id;
|
|
272
|
+
}
|
|
273
|
+
set id(value) {
|
|
274
|
+
super.id = value;
|
|
275
|
+
}
|
|
276
|
+
get spellcheck() {
|
|
277
|
+
return super.spellcheck;
|
|
278
|
+
}
|
|
279
|
+
set spellcheck(value) {
|
|
280
|
+
super.spellcheck = value;
|
|
281
|
+
}
|
|
282
|
+
get title() {
|
|
283
|
+
return super.title;
|
|
284
|
+
}
|
|
285
|
+
set title(value) {
|
|
286
|
+
super.title = value;
|
|
287
|
+
}
|
|
108
288
|
willUpdate(changedProperties) {
|
|
109
|
-
if (changedProperties.has("size") && !isInputSize(this.size)) {
|
|
289
|
+
if (changedProperties.has("size") && (this.size == null || !isInputSize(this.size))) {
|
|
110
290
|
this.size = "md";
|
|
111
291
|
}
|
|
112
292
|
if (changedProperties.has("rows")) {
|
|
113
|
-
|
|
114
|
-
this.rows = DEFAULT_ROWS;
|
|
115
|
-
}
|
|
293
|
+
this.rows = normalizeInt(this.rows, DEFAULT_ROWS, 1);
|
|
116
294
|
}
|
|
117
295
|
if (changedProperties.has("value") && this.value == null) {
|
|
118
296
|
this.value = "";
|
|
119
297
|
}
|
|
120
298
|
if (changedProperties.has("maxlength")) {
|
|
121
|
-
|
|
122
|
-
this.maxlength = void 0;
|
|
123
|
-
}
|
|
299
|
+
this.maxlength = normalizeInt(this.maxlength, void 0);
|
|
124
300
|
}
|
|
125
301
|
if (changedProperties.has("minlength")) {
|
|
126
|
-
|
|
127
|
-
this.minlength = void 0;
|
|
128
|
-
}
|
|
302
|
+
this.minlength = normalizeInt(this.minlength, void 0);
|
|
129
303
|
}
|
|
130
304
|
}
|
|
131
305
|
get textareaClasses() {
|
|
132
306
|
return spectreUi.getInputClasses({
|
|
133
|
-
fullWidth: this.fullWidth,
|
|
134
|
-
pill: this.pill,
|
|
307
|
+
fullWidth: this.fullWidth ?? false,
|
|
308
|
+
pill: this.pill ?? false,
|
|
135
309
|
size: this.size,
|
|
136
310
|
state: this.isDisabled ? this.disabled ? "disabled" : "loading" : this.invalid ? "error" : this.success ? "success" : "default"
|
|
137
311
|
});
|
|
138
312
|
}
|
|
139
313
|
get isDisabled() {
|
|
140
|
-
return this.disabled || this.loading;
|
|
314
|
+
return (this.disabled ?? false) || (this.loading ?? false);
|
|
141
315
|
}
|
|
142
316
|
get nativeTextarea() {
|
|
143
317
|
return this.querySelector("[data-sp-textarea-native]");
|
|
@@ -157,40 +331,45 @@ var SpectreTextareaElement = class extends SpectreBaseElement {
|
|
|
157
331
|
this.nativeTextarea?.blur();
|
|
158
332
|
}
|
|
159
333
|
render() {
|
|
160
|
-
return lit.html
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
334
|
+
return lit.html`<textarea
|
|
335
|
+
aria-busy="${this.loading ? "true" : "false"}"
|
|
336
|
+
aria-describedby="${ifDefined_js.ifDefined(this.forwardedAriaDescribedBy)}"
|
|
337
|
+
aria-invalid="${ifDefined_js.ifDefined(this.invalid ? "true" : void 0)}"
|
|
338
|
+
aria-label="${ifDefined_js.ifDefined(this.forwardedAriaLabel)}"
|
|
339
|
+
aria-labelledby="${ifDefined_js.ifDefined(this.forwardedAriaLabelledBy)}"
|
|
340
|
+
autocapitalize="${ifDefined_js.ifDefined(this.autocapitalize || void 0)}"
|
|
341
|
+
autocomplete="${ifDefined_js.ifDefined(this.autocomplete || void 0)}"
|
|
342
|
+
?autofocus="${this.autofocus}"
|
|
343
|
+
class="${this.textareaClasses}"
|
|
344
|
+
data-sp-textarea-native
|
|
345
|
+
?disabled="${this.isDisabled}"
|
|
346
|
+
enterkeyhint="${ifDefined_js.ifDefined(this.enterkeyhint || void 0)}"
|
|
347
|
+
form="${ifDefined_js.ifDefined(this.form || void 0)}"
|
|
348
|
+
inputmode="${ifDefined_js.ifDefined(this.inputmode || void 0)}"
|
|
349
|
+
?readonly="${this.readonly}"
|
|
350
|
+
?required="${this.required}"
|
|
351
|
+
id="${ifDefined_js.ifDefined(this.id || void 0)}"
|
|
352
|
+
maxlength="${ifDefined_js.ifDefined(this.maxlength)}"
|
|
353
|
+
minlength="${ifDefined_js.ifDefined(this.minlength)}"
|
|
354
|
+
name="${ifDefined_js.ifDefined(this.name || void 0)}"
|
|
355
|
+
placeholder="${ifDefined_js.ifDefined(this.placeholder || void 0)}"
|
|
356
|
+
rows="${this.rows}"
|
|
357
|
+
spellcheck="${ifDefined_js.ifDefined(
|
|
358
|
+
this.spellcheck === void 0 ? void 0 : String(this.spellcheck)
|
|
359
|
+
)}"
|
|
360
|
+
title="${ifDefined_js.ifDefined(this.title || void 0)}"
|
|
361
|
+
.value="${live_js.live(this.value)}"
|
|
362
|
+
@change="${this.handleChange}"
|
|
363
|
+
@input="${this.handleInput}"
|
|
364
|
+
></textarea>`;
|
|
188
365
|
}
|
|
189
366
|
};
|
|
190
367
|
SpectreTextareaElement.properties = {
|
|
368
|
+
autocapitalize: { type: String, reflect: true },
|
|
191
369
|
autocomplete: { type: String, reflect: true },
|
|
192
370
|
autofocus: { type: Boolean, reflect: true },
|
|
193
371
|
disabled: { type: Boolean, reflect: true },
|
|
372
|
+
enterkeyhint: { type: String, reflect: true },
|
|
194
373
|
form: { type: String },
|
|
195
374
|
fullWidth: { attribute: "full-width", type: Boolean, reflect: true },
|
|
196
375
|
inputmode: { type: String, reflect: true },
|
|
@@ -203,10 +382,10 @@ SpectreTextareaElement.properties = {
|
|
|
203
382
|
placeholder: { type: String, reflect: true },
|
|
204
383
|
readonly: { type: Boolean, reflect: true },
|
|
205
384
|
required: { type: Boolean, reflect: true },
|
|
206
|
-
rows: { type: Number },
|
|
385
|
+
rows: { type: Number, reflect: true },
|
|
207
386
|
size: { type: String, reflect: true },
|
|
387
|
+
spellcheck: { type: Boolean, reflect: true },
|
|
208
388
|
success: { type: Boolean, reflect: true },
|
|
209
|
-
title: { type: String, reflect: true },
|
|
210
389
|
value: { type: String }
|
|
211
390
|
};
|
|
212
391
|
function defineSpectreTextarea(tagName = "sp-textarea") {
|
package/dist/textarea.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/base.ts","../src/utils/form.ts","../src/components/textarea/sp-textarea.ts"],"names":["LitElement","getInputClasses","html","ifDefined","live"],"mappings":";;;;;;;;AAEO,IAAM,kBAAA,GAAN,cAAiCA,cAAA,CAAW;AAAA,EAA5C,WAAA,GAAA;AAAA,IAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AAOL,IAAA,IAAA,CAAA,SAAA,GAA2B,IAAA;AAC3B,IAAA,IAAA,CAAA,cAAA,GAAgC,IAAA;AAChC,IAAA,IAAA,CAAA,eAAA,GAAiC,IAAA;AAAA,EAAA;AAAA,EAIjC,IAAa,EAAA,GAAa;AACxB,IAAA,OAAO,KAAK,GAAA,IAAO,EAAA;AAAA,EACrB;AAAA,EAEA,IAAa,GAAG,KAAA,EAAe;AAC7B,IAAA,IAAA,CAAK,IAAA,CAAK,GAAA,IAAO,EAAA,MAAQ,KAAA,EAAO;AAC9B,MAAA;AAAA,IACF;AAEA,IAAA,IAAA,CAAK,GAAA,GAAM,KAAA;AAEX,IAAA,MAAM,IAAA,GAAO,IAAA;AACb,IAAA,IAAI,YAAY,SAAA,CAAU,YAAA,CAAa,IAAA,CAAK,IAAA,EAAM,IAAI,CAAA,EAAG;AACvD,MAAA,WAAA,CAAY,SAAA,CAAU,eAAA,CAAgB,IAAA,CAAK,IAAA,EAAM,IAAI,CAAA;AAAA,IACvD;AAEA,IAAA,IAAA,CAAK,aAAA,EAAc;AAAA,EACrB;AAAA;AAAA;AAAA,EAIA,gBAAA,GAAyB;AACvB,IAAA,OAAO,IAAA;AAAA,EACT;AAAA,EAES,iBAAA,GAA0B;AACjC,IAAA,KAAA,CAAM,iBAAA,EAAkB;AAExB,IAAA,MAAM,MAAA,GAAS,KAAA,CAAM,YAAA,CAAa,IAAI,CAAA;AACtC,IAAA,IAAI,WAAW,IAAA,EAAM;AACnB,MAAA,IAAA,CAAK,EAAA,GAAK,MAAA;AAAA,IACZ;AAAA,EACF;AAAA,EAES,aAAa,aAAA,EAAsC;AAC1D,IAAA,IAAI,kBAAkB,IAAA,EAAM;AAC1B,MAAA,OAAO,KAAK,EAAA,IAAM,IAAA;AAAA,IACpB;AAEA,IAAA,OAAO,KAAA,CAAM,aAAa,aAAa,CAAA;AAAA,EACzC;AAAA,EAES,aAAa,aAAA,EAAgC;AACpD,IAAA,IAAI,kBAAkB,IAAA,EAAM;AAC1B,MAAA,OAAO,KAAK,EAAA,KAAO,EAAA;AAAA,IACrB;AAEA,IAAA,OAAO,KAAA,CAAM,aAAa,aAAa,CAAA;AAAA,EACzC;AAAA,EAES,YAAA,CAAa,eAAuB,KAAA,EAAqB;AAChE,IAAA,IAAI,kBAAkB,IAAA,EAAM;AAC1B,MAAA,IAAA,CAAK,EAAA,GAAK,KAAA;AACV,MAAA;AAAA,IACF;AAEA,IAAA,KAAA,CAAM,YAAA,CAAa,eAAe,KAAK,CAAA;AAAA,EACzC;AAAA,EAES,gBAAgB,aAAA,EAA6B;AACpD,IAAA,IAAI,kBAAkB,IAAA,EAAM;AAC1B,MAAA,IAAA,CAAK,EAAA,GAAK,EAAA;AACV,MAAA;AAAA,IACF;AAEA,IAAA,KAAA,CAAM,gBAAgB,aAAa,CAAA;AAAA,EACrC;AAAA,EAEA,IAAc,kBAAA,GAAyC;AACrD,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,SAAA,EAAW,IAAA,EAAK;AACnC,IAAA,OAAO,QAAQ,KAAA,GAAQ,MAAA;AAAA,EACzB;AAAA,EAEA,IAAc,uBAAA,GAA8C;AAC1D,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,cAAA,EAAgB,IAAA,EAAK;AACxC,IAAA,OAAO,QAAQ,KAAA,GAAQ,MAAA;AAAA,EACzB;AAAA,EAEA,IAAc,wBAAA,GAA+C;AAC3D,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,eAAA,EAAiB,IAAA,EAAK;AACzC,IAAA,OAAO,QAAQ,KAAA,GAAQ,MAAA;AAAA,EACzB;AACF,CAAA;AA/Fa,kBAAA,CACJ,UAAA,GAAmC;AAAA,EACxC,SAAA,EAAW,EAAE,SAAA,EAAW,YAAA,EAAc,MAAM,MAAA,EAAO;AAAA,EACnD,cAAA,EAAgB,EAAE,SAAA,EAAW,iBAAA,EAAmB,MAAM,MAAA,EAAO;AAAA,EAC7D,eAAA,EAAiB,EAAE,SAAA,EAAW,kBAAA,EAAoB,MAAM,MAAA;AAC1D,CAAA;ACLK,IAAM,iBAAA,GAAoB,CAAC,IAAA,EAAM,IAAA,EAAM,IAAI,CAAA;AAG3C,SAAS,YAAY,KAAA,EAAmC;AAC7D,EAAA,OAAQ,iBAAA,CAAwC,SAAS,KAAK,CAAA;AAChE;AC4BA,IAAM,YAAA,GAAe,CAAA;AAEd,IAAM,sBAAA,GAAN,cACG,kBAAA,CACwB;AAAA,EAF3B,WAAA,GAAA;AAAA,IAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AA2BL,IAAA,IAAA,CAAA,SAAA,GAAY,KAAA;AACZ,IAAA,IAAA,CAAA,QAAA,GAAW,KAAA;AAEX,IAAA,IAAA,CAAA,SAAA,GAAY,KAAA;AAEZ,IAAA,IAAA,CAAA,OAAA,GAAU,KAAA;AACV,IAAA,IAAA,CAAA,OAAA,GAAU,KAAA;AAIV,IAAA,IAAA,CAAA,IAAA,GAAO,KAAA;AAEP,IAAA,IAAA,CAAA,QAAA,GAAW,KAAA;AACX,IAAA,IAAA,CAAA,QAAA,GAAW,KAAA;AACX,IAAA,IAAA,CAAA,IAAA,GAAO,YAAA;AACP,IAAA,IAAA,CAAA,IAAA,GAAyB,IAAA;AACzB,IAAA,IAAA,CAAA,OAAA,GAAU,KAAA;AACV,IAAA,IAAA,CAAS,KAAA,GAAQ,EAAA;AACjB,IAAA,IAAA,CAAA,KAAA,GAAQ,EAAA;AAAA,EAAA;AAAA,EAEW,WACjB,iBAAA,EACM;AACN,IAAA,IAAI,iBAAA,CAAkB,IAAI,MAAM,CAAA,IAAK,CAAC,WAAA,CAAY,IAAA,CAAK,IAAI,CAAA,EAAG;AAC5D,MAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AAAA,IACd;AAEA,IAAA,IAAI,iBAAA,CAAkB,GAAA,CAAI,MAAM,CAAA,EAAG;AACjC,MAAA,IACE,IAAA,CAAK,IAAA,IAAQ,IAAA,IACb,CAAC,MAAA,CAAO,SAAA,CAAU,IAAA,CAAK,IAAI,CAAA,IAC3B,IAAA,CAAK,IAAA,GAAO,CAAA,EACZ;AACA,QAAA,IAAA,CAAK,IAAA,GAAO,YAAA;AAAA,MACd;AAAA,IACF;AAEA,IAAA,IAAI,kBAAkB,GAAA,CAAI,OAAO,CAAA,IAAK,IAAA,CAAK,SAAS,IAAA,EAAM;AACxD,MAAA,IAAA,CAAK,KAAA,GAAQ,EAAA;AAAA,IACf;AAEA,IAAA,IAAI,iBAAA,CAAkB,GAAA,CAAI,WAAW,CAAA,EAAG;AACtC,MAAA,IACE,IAAA,CAAK,SAAA,IAAa,IAAA,IAClB,CAAC,MAAA,CAAO,SAAA,CAAU,IAAA,CAAK,SAAS,CAAA,IAChC,IAAA,CAAK,SAAA,GAAY,CAAA,EACjB;AACA,QAAA,IAAA,CAAK,SAAA,GAAY,MAAA;AAAA,MACnB;AAAA,IACF;AAEA,IAAA,IAAI,iBAAA,CAAkB,GAAA,CAAI,WAAW,CAAA,EAAG;AACtC,MAAA,IACE,IAAA,CAAK,SAAA,IAAa,IAAA,IAClB,CAAC,MAAA,CAAO,SAAA,CAAU,IAAA,CAAK,SAAS,CAAA,IAChC,IAAA,CAAK,SAAA,GAAY,CAAA,EACjB;AACA,QAAA,IAAA,CAAK,SAAA,GAAY,MAAA;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AAAA,EAEA,IAAY,eAAA,GAA0B;AACpC,IAAA,OAAOC,yBAAA,CAAgB;AAAA,MACrB,WAAW,IAAA,CAAK,SAAA;AAAA,MAChB,MAAM,IAAA,CAAK,IAAA;AAAA,MACX,MAAM,IAAA,CAAK,IAAA;AAAA,MACX,KAAA,EAAO,IAAA,CAAK,UAAA,GACR,IAAA,CAAK,QAAA,GACH,UAAA,GACA,SAAA,GACF,IAAA,CAAK,OAAA,GACH,OAAA,GACA,IAAA,CAAK,OAAA,GACH,SAAA,GACA;AAAA,KACT,CAAA;AAAA,EACH;AAAA,EAEA,IAAY,UAAA,GAAsB;AAChC,IAAA,OAAO,IAAA,CAAK,YAAY,IAAA,CAAK,OAAA;AAAA,EAC/B;AAAA,EAEA,IAAY,cAAA,GAA6C;AACvD,IAAA,OAAO,IAAA,CAAK,cAAc,2BAA2B,CAAA;AAAA,EACvD;AAAA,EAEQ,YAAY,KAAA,EAAoB;AACtC,IAAA,MAAM,WAAW,KAAA,CAAM,aAAA;AACvB,IAAA,IAAA,CAAK,QAAQ,QAAA,CAAS,KAAA;AAAA,EACxB;AAAA,EAEQ,aAAa,KAAA,EAAoB;AACvC,IAAA,MAAM,WAAW,KAAA,CAAM,aAAA;AACvB,IAAA,IAAA,CAAK,QAAQ,QAAA,CAAS,KAAA;AAAA,EACxB;AAAA,EAES,MAAM,OAAA,EAA8B;AAC3C,IAAA,IAAA,CAAK,cAAA,EAAgB,MAAM,OAAO,CAAA;AAAA,EACpC;AAAA,EAES,IAAA,GAAa;AACpB,IAAA,IAAA,CAAK,gBAAgB,IAAA,EAAK;AAAA,EAC5B;AAAA,EAES,MAAA,GAAS;AAChB,IAAA,OAAOC,QAAA;AAAA;AAAA,kBAAA,EAES,IAAA,CAAK,OAAA,GAAU,MAAA,GAAS,OAAO;AAAA,yBAAA,EACxBC,sBAAA,CAAU,IAAA,CAAK,wBAAwB,CAAC;AAAA,qBAAA,EAC5CA,sBAAA,CAAU,IAAA,CAAK,OAAA,GAAU,MAAA,GAAS,MAAS,CAAC;AAAA,mBAAA,EAC9CA,sBAAA,CAAU,IAAA,CAAK,kBAAkB,CAAC;AAAA,wBAAA,EAC7BA,sBAAA,CAAU,IAAA,CAAK,uBAAuB,CAAC;AAAA,qBAAA,EAC1CA,sBAAA,CAAU,IAAA,CAAK,YAAY,CAAC;AAAA,mBAAA,EAC9B,KAAK,SAAS;AAAA,cAAA,EACnB,KAAK,eAAe;AAAA;AAAA,kBAAA,EAEhB,KAAK,UAAU;AAAA,aAAA,EACpBA,sBAAA,CAAU,IAAA,CAAK,IAAI,CAAC;AAAA,kBAAA,EACfA,sBAAA,CAAU,IAAA,CAAK,SAAS,CAAC;AAAA,kBAAA,EACzB,KAAK,QAAQ;AAAA,kBAAA,EACb,KAAK,QAAQ;AAAA,WAAA,EACpBA,sBAAA,CAAU,IAAA,CAAK,EAAA,IAAM,MAAS,CAAC;AAAA,kBAAA,EACxBA,sBAAA,CAAU,IAAA,CAAK,SAAS,CAAC;AAAA,kBAAA,EACzBA,sBAAA,CAAU,IAAA,CAAK,SAAS,CAAC;AAAA,aAAA,EAC9BA,sBAAA,CAAU,IAAA,CAAK,IAAI,CAAC;AAAA,oBAAA,EACbA,sBAAA,CAAU,IAAA,CAAK,WAAW,CAAC;AAAA,aAAA,EAClC,KAAK,IAAI;AAAA,cAAA,EACRA,sBAAA,CAAU,IAAA,CAAK,KAAA,IAAS,MAAS,CAAC;AAAA,eAAA,EACjCC,YAAA,CAAK,IAAA,CAAK,KAAK,CAAC;AAAA,gBAAA,EACf,KAAK,YAAY;AAAA,eAAA,EAClB,KAAK,WAAW;AAAA;AAAA,IAAA,CAAA;AAAA,EAG/B;AACF;AAlKa,sBAAA,CAGJ,UAAA,GAAa;AAAA,EAClB,YAAA,EAAc,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,IAAA,EAAK;AAAA,EAC5C,SAAA,EAAW,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,EAC1C,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,EACzC,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAO;AAAA,EACrB,WAAW,EAAE,SAAA,EAAW,cAAc,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,EACnE,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,IAAA,EAAK;AAAA,EACzC,OAAA,EAAS,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,EACxC,OAAA,EAAS,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,EACxC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,IAAA,EAAK;AAAA,EACzC,SAAA,EAAW,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,IAAA,EAAK;AAAA,EACzC,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,IAAA,EAAK;AAAA,EACpC,IAAA,EAAM,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,EACrC,WAAA,EAAa,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,IAAA,EAAK;AAAA,EAC3C,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,EACzC,QAAA,EAAU,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,EACzC,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAO;AAAA,EACrB,IAAA,EAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,IAAA,EAAK;AAAA,EACpC,OAAA,EAAS,EAAE,IAAA,EAAM,OAAA,EAAS,SAAS,IAAA,EAAK;AAAA,EACxC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,SAAS,IAAA,EAAK;AAAA,EACrC,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA;AACjB,CAAA;AA4IK,SAAS,qBAAA,CACd,UAAU,aAAA,EACqB;AAC/B,EAAA,MAAM,eAAA,GAAkB,cAAA,CAAe,GAAA,CAAI,OAAO,CAAA;AAElD,EAAA,IAAI,eAAA,EAAiB;AACnB,IAAA,OAAO,eAAA;AAAA,EACT;AAEA,EAAA,cAAA,CAAe,MAAA,CAAO,SAAS,sBAAsB,CAAA;AACrD,EAAA,OAAO,sBAAA;AACT","file":"textarea.cjs","sourcesContent":["import { LitElement, type PropertyDeclarations } from 'lit';\n\nexport class SpectreBaseElement extends LitElement {\n static properties: PropertyDeclarations = {\n ariaLabel: { attribute: 'aria-label', type: String },\n ariaLabelledBy: { attribute: 'aria-labelledby', type: String },\n ariaDescribedBy: { attribute: 'aria-describedby', type: String },\n };\n\n ariaLabel: string | null = null;\n ariaLabelledBy: string | null = null;\n ariaDescribedBy: string | null = null;\n\n private _id?: string;\n\n override get id(): string {\n return this._id ?? '';\n }\n\n override set id(value: string) {\n if ((this._id ?? '') === value) {\n return;\n }\n\n this._id = value;\n\n const host = this as unknown as HTMLElement;\n if (HTMLElement.prototype.hasAttribute.call(host, 'id')) {\n HTMLElement.prototype.removeAttribute.call(host, 'id');\n }\n\n this.requestUpdate();\n }\n\n // Spectre components intentionally render in light DOM so the global\n // `@phcdevworks/spectre-ui` styling contract can apply directly.\n createRenderRoot(): this {\n return this;\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n const hostId = super.getAttribute('id');\n if (hostId !== null) {\n this.id = hostId;\n }\n }\n\n override getAttribute(qualifiedName: string): string | null {\n if (qualifiedName === 'id') {\n return this.id || null;\n }\n\n return super.getAttribute(qualifiedName);\n }\n\n override hasAttribute(qualifiedName: string): boolean {\n if (qualifiedName === 'id') {\n return this.id !== '';\n }\n\n return super.hasAttribute(qualifiedName);\n }\n\n override setAttribute(qualifiedName: string, value: string): void {\n if (qualifiedName === 'id') {\n this.id = value;\n return;\n }\n\n super.setAttribute(qualifiedName, value);\n }\n\n override removeAttribute(qualifiedName: string): void {\n if (qualifiedName === 'id') {\n this.id = '';\n return;\n }\n\n super.removeAttribute(qualifiedName);\n }\n\n protected get forwardedAriaLabel(): string | undefined {\n const value = this.ariaLabel?.trim();\n return value ? value : undefined;\n }\n\n protected get forwardedAriaLabelledBy(): string | undefined {\n const value = this.ariaLabelledBy?.trim();\n return value ? value : undefined;\n }\n\n protected get forwardedAriaDescribedBy(): string | undefined {\n const value = this.ariaDescribedBy?.trim();\n return value ? value : undefined;\n }\n}\n","import { type InputSize } from '@phcdevworks/spectre-ui';\n\nexport const spectreInputSizes = ['sm', 'md', 'lg'] as const;\nexport type SpectreInputSize = (typeof spectreInputSizes)[number];\n\nexport function isInputSize(value: string): value is InputSize {\n return (spectreInputSizes as readonly string[]).includes(value);\n}\n\nexport const spectreInputTypes = [\n 'text',\n 'email',\n 'password',\n 'search',\n 'tel',\n 'url',\n 'number',\n 'date',\n 'datetime-local',\n 'month',\n 'time',\n 'week',\n] as const;\n\nexport type SpectreInputType = (typeof spectreInputTypes)[number];\n\nexport function isInputType(value: string): value is SpectreInputType {\n return (spectreInputTypes as readonly string[]).includes(value);\n}\n","import { html } from 'lit';\nimport { live } from 'lit/directives/live.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\n\nimport { SpectreBaseElement } from '../../utils/base';\nimport { isInputSize, type SpectreInputSize } from '../../utils/form';\n\nimport { getInputClasses } from '@phcdevworks/spectre-ui';\n\nexport interface SpectreTextareaProps {\n ariaLabel?: string | null;\n ariaLabelledBy?: string | null;\n ariaDescribedBy?: string | null;\n autocomplete?: string;\n autofocus?: boolean;\n disabled?: boolean;\n form?: string;\n fullWidth?: boolean;\n inputmode?: string;\n invalid?: boolean;\n loading?: boolean;\n maxlength?: number | undefined;\n minlength?: number | undefined;\n name?: string | undefined;\n pill?: boolean;\n placeholder?: string | undefined;\n readonly?: boolean;\n required?: boolean;\n rows?: number;\n size?: SpectreInputSize;\n success?: boolean;\n title?: string;\n value?: string;\n}\n\nconst DEFAULT_ROWS = 2;\n\nexport class SpectreTextareaElement\n extends SpectreBaseElement\n implements SpectreTextareaProps {\n static properties = {\n autocomplete: { type: String, reflect: true },\n autofocus: { type: Boolean, reflect: true },\n disabled: { type: Boolean, reflect: true },\n form: { type: String },\n fullWidth: { attribute: 'full-width', type: Boolean, reflect: true },\n inputmode: { type: String, reflect: true },\n invalid: { type: Boolean, reflect: true },\n loading: { type: Boolean, reflect: true },\n maxlength: { type: Number, reflect: true },\n minlength: { type: Number, reflect: true },\n name: { type: String, reflect: true },\n pill: { type: Boolean, reflect: true },\n placeholder: { type: String, reflect: true },\n readonly: { type: Boolean, reflect: true },\n required: { type: Boolean, reflect: true },\n rows: { type: Number },\n size: { type: String, reflect: true },\n success: { type: Boolean, reflect: true },\n title: { type: String, reflect: true },\n value: { type: String },\n };\n\n autocomplete?: string;\n autofocus = false;\n disabled = false;\n form?: string;\n fullWidth = false;\n inputmode?: string;\n invalid = false;\n loading = false;\n maxlength?: number | undefined;\n minlength?: number | undefined;\n name?: string;\n pill = false;\n placeholder?: string;\n readonly = false;\n required = false;\n rows = DEFAULT_ROWS;\n size: SpectreInputSize = 'md';\n success = false;\n override title = '';\n value = '';\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>,\n ): void {\n if (changedProperties.has('size') && !isInputSize(this.size)) {\n this.size = 'md';\n }\n\n if (changedProperties.has('rows')) {\n if (\n this.rows == null ||\n !Number.isInteger(this.rows) ||\n this.rows < 1\n ) {\n this.rows = DEFAULT_ROWS;\n }\n }\n\n if (changedProperties.has('value') && this.value == null) {\n this.value = '';\n }\n\n if (changedProperties.has('maxlength')) {\n if (\n this.maxlength == null ||\n !Number.isInteger(this.maxlength) ||\n this.maxlength < 0\n ) {\n this.maxlength = undefined;\n }\n }\n\n if (changedProperties.has('minlength')) {\n if (\n this.minlength == null ||\n !Number.isInteger(this.minlength) ||\n this.minlength < 0\n ) {\n this.minlength = undefined;\n }\n }\n }\n\n private get textareaClasses(): string {\n return getInputClasses({\n fullWidth: this.fullWidth,\n pill: this.pill,\n size: this.size,\n state: this.isDisabled\n ? this.disabled\n ? 'disabled'\n : 'loading'\n : this.invalid\n ? 'error'\n : this.success\n ? 'success'\n : 'default',\n });\n }\n\n private get isDisabled(): boolean {\n return this.disabled || this.loading;\n }\n\n private get nativeTextarea(): HTMLTextAreaElement | null {\n return this.querySelector('[data-sp-textarea-native]');\n }\n\n private handleInput(event: Event): void {\n const textarea = event.currentTarget as HTMLTextAreaElement;\n this.value = textarea.value;\n }\n\n private handleChange(event: Event): void {\n const textarea = event.currentTarget as HTMLTextAreaElement;\n this.value = textarea.value;\n }\n\n override focus(options?: FocusOptions): void {\n this.nativeTextarea?.focus(options);\n }\n\n override blur(): void {\n this.nativeTextarea?.blur();\n }\n\n override render() {\n return html`\n <textarea\n aria-busy=${this.loading ? 'true' : 'false'}\n aria-describedby=${ifDefined(this.forwardedAriaDescribedBy)}\n aria-invalid=${ifDefined(this.invalid ? 'true' : undefined)}\n aria-label=${ifDefined(this.forwardedAriaLabel)}\n aria-labelledby=${ifDefined(this.forwardedAriaLabelledBy)}\n autocomplete=${ifDefined(this.autocomplete)}\n ?autofocus=${this.autofocus}\n class=${this.textareaClasses}\n data-sp-textarea-native\n ?disabled=${this.isDisabled}\n form=${ifDefined(this.form)}\n inputmode=${ifDefined(this.inputmode)}\n ?readonly=${this.readonly}\n ?required=${this.required}\n id=${ifDefined(this.id || undefined)}\n maxlength=${ifDefined(this.maxlength)}\n minlength=${ifDefined(this.minlength)}\n name=${ifDefined(this.name)}\n placeholder=${ifDefined(this.placeholder)}\n rows=${this.rows}\n title=${ifDefined(this.title || undefined)}\n .value=${live(this.value)}\n @change=${this.handleChange}\n @input=${this.handleInput}\n ></textarea>\n `;\n }\n}\n\nexport function defineSpectreTextarea(\n tagName = 'sp-textarea',\n): typeof SpectreTextareaElement {\n const existingElement = customElements.get(tagName);\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreTextareaElement;\n }\n\n customElements.define(tagName, SpectreTextareaElement);\n return SpectreTextareaElement;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/utils/base.ts","../src/utils/form.ts","../src/components/textarea/sp-textarea.ts"],"names":["LitElement","getInputClasses","html","ifDefined","live"],"mappings":"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","file":"textarea.cjs","sourcesContent":["import { LitElement, type PropertyDeclarations } from 'lit';\n\nexport class SpectreBaseElement extends LitElement {\n static properties: PropertyDeclarations = {};\n\n private _ariaLabel: string | null = null;\n private _ariaLabelledBy: string | null = null;\n private _ariaDescribedBy: string | null = null;\n private _autocapitalize = '';\n private _spellcheck: boolean | null = null;\n private _title = '';\n private _id = '';\n\n get ariaLabel(): string | null {\n return this._ariaLabel;\n }\n\n set ariaLabel(value: string | null) {\n if (this._ariaLabel === value) {\n return;\n }\n this._ariaLabel = value;\n this._removeHostAttribute('aria-label');\n this.requestUpdate();\n }\n\n get ariaLabelledBy(): string | null {\n return this._ariaLabelledBy;\n }\n\n set ariaLabelledBy(value: string | null) {\n if (this._ariaLabelledBy === value) {\n return;\n }\n this._ariaLabelledBy = value;\n this._removeHostAttribute('aria-labelledby');\n this.requestUpdate();\n }\n\n get ariaDescribedBy(): string | null {\n return this._ariaDescribedBy;\n }\n\n set ariaDescribedBy(value: string | null) {\n if (this._ariaDescribedBy === value) {\n return;\n }\n this._ariaDescribedBy = value;\n this._removeHostAttribute('aria-describedby');\n this.requestUpdate();\n }\n\n override get autocapitalize(): string {\n return this._autocapitalize;\n }\n\n override set autocapitalize(value: string | undefined | null) {\n const normalizedValue = value ?? '';\n if (this._autocapitalize === normalizedValue) {\n return;\n }\n this._autocapitalize = normalizedValue;\n this._removeHostAttribute('autocapitalize');\n this.requestUpdate();\n }\n\n override get spellcheck(): boolean {\n return this._spellcheck ?? super.spellcheck;\n }\n\n override set spellcheck(value: boolean | undefined | null) {\n if (this._spellcheck === value) {\n return;\n }\n this._spellcheck = value ?? null;\n this._removeHostAttribute('spellcheck');\n this.requestUpdate();\n }\n\n override get title(): string {\n return this._title;\n }\n\n override set title(value: string | undefined | null) {\n const normalizedValue = value ?? '';\n if (this._title === normalizedValue) {\n return;\n }\n this._title = normalizedValue;\n this._removeHostAttribute('title');\n this.requestUpdate();\n }\n\n override get id(): string {\n return this._id;\n }\n\n override set id(value: string | undefined | null) {\n const normalizedValue = value ?? '';\n if (this._id === normalizedValue) {\n return;\n }\n this._id = normalizedValue;\n this._removeHostAttribute('id');\n this.requestUpdate();\n }\n\n // Spectre components intentionally render in light DOM so the global\n // `@phcdevworks/spectre-ui` styling contract can apply directly.\n createRenderRoot(): this {\n return this;\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n const proxiedAttributes = [\n 'id',\n 'title',\n 'autocapitalize',\n 'spellcheck',\n 'aria-label',\n 'aria-labelledby',\n 'aria-describedby',\n ];\n\n proxiedAttributes.forEach((attr) => {\n const value = super.getAttribute(attr);\n if (value !== null) {\n this.setAttribute(attr, value);\n }\n });\n }\n\n override getAttribute(qualifiedName: string): string | null {\n switch (qualifiedName) {\n case 'id':\n return this.id || null;\n case 'title':\n return this.title || null;\n case 'autocapitalize':\n return this.autocapitalize || null;\n case 'spellcheck':\n return this._spellcheck !== null ? String(this._spellcheck) : null;\n case 'aria-label':\n return this.ariaLabel;\n case 'aria-labelledby':\n return this.ariaLabelledBy;\n case 'aria-describedby':\n return this.ariaDescribedBy;\n default:\n return super.getAttribute(qualifiedName);\n }\n }\n\n override hasAttribute(qualifiedName: string): boolean {\n switch (qualifiedName) {\n case 'id':\n return this.id !== '';\n case 'title':\n return this.title !== '';\n case 'autocapitalize':\n return this.autocapitalize !== '';\n case 'spellcheck':\n return this._spellcheck !== null;\n case 'aria-label':\n return this.ariaLabel !== null;\n case 'aria-labelledby':\n return this.ariaLabelledBy !== null;\n case 'aria-describedby':\n return this.ariaDescribedBy !== null;\n default:\n return super.hasAttribute(qualifiedName);\n }\n }\n\n override setAttribute(qualifiedName: string, value: string): void {\n switch (qualifiedName) {\n case 'id':\n this.id = value;\n break;\n case 'title':\n this.title = value;\n break;\n case 'autocapitalize':\n this.autocapitalize = value;\n break;\n case 'spellcheck':\n this.spellcheck = value !== 'false';\n break;\n case 'aria-label':\n this.ariaLabel = value;\n break;\n case 'aria-labelledby':\n this.ariaLabelledBy = value;\n break;\n case 'aria-describedby':\n this.ariaDescribedBy = value;\n break;\n default:\n super.setAttribute(qualifiedName, value);\n }\n }\n\n override removeAttribute(qualifiedName: string): void {\n switch (qualifiedName) {\n case 'id':\n this.id = '';\n break;\n case 'title':\n this.title = '';\n break;\n case 'autocapitalize':\n this.autocapitalize = '';\n break;\n case 'spellcheck':\n this.spellcheck = null;\n break;\n case 'aria-label':\n this.ariaLabel = null;\n break;\n case 'aria-labelledby':\n this.ariaLabelledBy = null;\n break;\n case 'aria-describedby':\n this.ariaDescribedBy = null;\n break;\n default:\n super.removeAttribute(qualifiedName);\n }\n }\n\n private _removeHostAttribute(name: string): void {\n const host = this as unknown as HTMLElement;\n if (HTMLElement.prototype.hasAttribute.call(host, name)) {\n // Use the native removeAttribute to avoid our own overridden version\n // which would reset the internal state.\n HTMLElement.prototype.removeAttribute.call(host, name);\n }\n }\n\n protected get forwardedAriaLabel(): string | undefined {\n const value = this.ariaLabel?.trim();\n return value ? value : undefined;\n }\n\n protected get forwardedAriaLabelledBy(): string | undefined {\n const value = this.ariaLabelledBy?.trim();\n return value ? value : undefined;\n }\n\n protected get forwardedAriaDescribedBy(): string | undefined {\n const value = this.ariaDescribedBy?.trim();\n return value ? value : undefined;\n }\n}\n","import {\n type ButtonSize,\n type ButtonVariant,\n type InputSize,\n} from '@phcdevworks/spectre-ui';\n\nexport const spectreInputSizes = ['sm', 'md', 'lg'] as const;\nexport type SpectreInputSize = (typeof spectreInputSizes)[number];\n\nexport function isInputSize(value: unknown): value is InputSize | ButtonSize {\n return (spectreInputSizes as readonly string[]).includes(value as string);\n}\n\nexport const spectreButtonVariants = [\n 'primary',\n 'secondary',\n 'ghost',\n 'danger',\n 'success',\n 'cta',\n 'accent',\n] as const;\n\nexport type SpectreButtonVariant = (typeof spectreButtonVariants)[number];\n\nexport function isButtonVariant(value: unknown): value is ButtonVariant {\n return (spectreButtonVariants as readonly string[]).includes(value as string);\n}\n\nexport const spectreButtonTypes = ['button', 'submit', 'reset'] as const;\n\nexport type SpectreButtonType = (typeof spectreButtonTypes)[number];\n\nexport function isButtonType(value: unknown): value is SpectreButtonType {\n return (spectreButtonTypes as readonly string[]).includes(value as string);\n}\n\nexport const spectreInputTypes = [\n 'text',\n 'email',\n 'password',\n 'search',\n 'tel',\n 'url',\n 'number',\n 'date',\n 'datetime-local',\n 'month',\n 'time',\n 'week',\n] as const;\n\nexport type SpectreInputType = (typeof spectreInputTypes)[number];\n\nexport function isInputType(value: unknown): value is SpectreInputType {\n return (spectreInputTypes as readonly string[]).includes(value as string);\n}\n\nexport function normalizeInt(\n value: unknown,\n fallback: number | undefined,\n min = 0,\n): number | undefined {\n if (\n value == null ||\n typeof value !== 'number' ||\n !Number.isInteger(value) ||\n value < min\n ) {\n return fallback;\n }\n return value;\n}\n","import { html } from 'lit';\nimport { live } from 'lit/directives/live.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\n\nimport { SpectreBaseElement } from '../../utils/base';\nimport {\n isInputSize,\n type SpectreInputSize,\n normalizeInt,\n} from '../../utils/form';\n\nimport { getInputClasses } from '@phcdevworks/spectre-ui';\n\nexport interface SpectreTextareaProps {\n ariaLabel?: string | null;\n ariaLabelledBy?: string | null;\n ariaDescribedBy?: string | null;\n autocapitalize?: string | undefined;\n autocomplete?: string | undefined;\n autofocus?: boolean | undefined;\n disabled?: boolean | undefined;\n enterkeyhint?: string | undefined;\n form?: string | undefined;\n fullWidth?: boolean | undefined;\n id?: string | null | undefined;\n inputmode?: string | undefined;\n invalid?: boolean | undefined;\n loading?: boolean | undefined;\n maxlength?: number | undefined;\n minlength?: number | undefined;\n name?: string | undefined;\n pill?: boolean | undefined;\n placeholder?: string | undefined;\n readonly?: boolean | undefined;\n required?: boolean | undefined;\n rows?: number | undefined;\n size?: SpectreInputSize | undefined;\n spellcheck?: boolean | undefined;\n success?: boolean | undefined;\n title?: string | null | undefined;\n value?: string | undefined;\n}\n\nconst DEFAULT_ROWS = 2;\n\nexport class SpectreTextareaElement\n extends SpectreBaseElement\n implements SpectreTextareaProps {\n static properties = {\n autocapitalize: { type: String, reflect: true },\n autocomplete: { type: String, reflect: true },\n autofocus: { type: Boolean, reflect: true },\n disabled: { type: Boolean, reflect: true },\n enterkeyhint: { type: String, reflect: true },\n form: { type: String },\n fullWidth: { attribute: 'full-width', type: Boolean, reflect: true },\n inputmode: { type: String, reflect: true },\n invalid: { type: Boolean, reflect: true },\n loading: { type: Boolean, reflect: true },\n maxlength: { type: Number, reflect: true },\n minlength: { type: Number, reflect: true },\n name: { type: String, reflect: true },\n pill: { type: Boolean, reflect: true },\n placeholder: { type: String, reflect: true },\n readonly: { type: Boolean, reflect: true },\n required: { type: Boolean, reflect: true },\n rows: { type: Number, reflect: true },\n size: { type: String, reflect: true },\n spellcheck: { type: Boolean, reflect: true },\n success: { type: Boolean, reflect: true },\n value: { type: String },\n };\n\n override get autocapitalize(): string {\n return super.autocapitalize;\n }\n\n override set autocapitalize(value: string | null | undefined) {\n super.autocapitalize = value;\n }\n\n autocomplete: string | undefined;\n autofocus = false;\n disabled = false;\n enterkeyhint: string | undefined;\n form: string | undefined;\n fullWidth = false;\n\n override get id(): string {\n return super.id;\n }\n\n override set id(value: string | null | undefined) {\n super.id = value;\n }\n\n inputmode: string | undefined;\n invalid = false;\n loading = false;\n maxlength: number | undefined;\n minlength: number | undefined;\n name: string | undefined;\n pill = false;\n placeholder: string | undefined;\n readonly = false;\n required = false;\n rows: number | undefined = DEFAULT_ROWS;\n size: SpectreInputSize | undefined = 'md';\n\n override get spellcheck(): boolean {\n return super.spellcheck;\n }\n\n override set spellcheck(value: boolean | null | undefined) {\n super.spellcheck = value;\n }\n\n success = false;\n\n override get title(): string {\n return super.title;\n }\n\n override set title(value: string | null | undefined) {\n super.title = value;\n }\n\n value: string | undefined = '';\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>,\n ): void {\n if (changedProperties.has('size') && (this.size == null || !isInputSize(this.size))) {\n this.size = 'md';\n }\n\n if (changedProperties.has('rows')) {\n this.rows = normalizeInt(this.rows, DEFAULT_ROWS, 1) as number;\n }\n\n if (changedProperties.has('value') && this.value == null) {\n this.value = '';\n }\n\n if (changedProperties.has('maxlength')) {\n this.maxlength = normalizeInt(this.maxlength, undefined);\n }\n\n if (changedProperties.has('minlength')) {\n this.minlength = normalizeInt(this.minlength, undefined);\n }\n }\n\n private get textareaClasses(): string {\n return getInputClasses({\n fullWidth: this.fullWidth ?? false,\n pill: this.pill ?? false,\n size: this.size as SpectreInputSize,\n state: this.isDisabled\n ? this.disabled\n ? 'disabled'\n : 'loading'\n : this.invalid\n ? 'error'\n : this.success\n ? 'success'\n : 'default',\n });\n }\n\n private get isDisabled(): boolean {\n return (this.disabled ?? false) || (this.loading ?? false);\n }\n\n private get nativeTextarea(): HTMLTextAreaElement | null {\n return this.querySelector('[data-sp-textarea-native]');\n }\n\n private handleInput(event: Event): void {\n const textarea = event.currentTarget as HTMLTextAreaElement;\n this.value = textarea.value;\n }\n\n private handleChange(event: Event): void {\n const textarea = event.currentTarget as HTMLTextAreaElement;\n this.value = textarea.value;\n }\n\n override focus(options?: FocusOptions): void {\n this.nativeTextarea?.focus(options);\n }\n\n override blur(): void {\n this.nativeTextarea?.blur();\n }\n\n override render() {\n return html`<textarea\n aria-busy=\"${this.loading ? 'true' : 'false'}\"\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-invalid=\"${ifDefined(this.invalid ? 'true' : undefined)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n autocapitalize=\"${ifDefined(this.autocapitalize || undefined)}\"\n autocomplete=\"${ifDefined(this.autocomplete || undefined)}\"\n ?autofocus=\"${this.autofocus}\"\n class=\"${this.textareaClasses}\"\n data-sp-textarea-native\n ?disabled=\"${this.isDisabled}\"\n enterkeyhint=\"${ifDefined(this.enterkeyhint || undefined)}\"\n form=\"${ifDefined(this.form || undefined)}\"\n inputmode=\"${ifDefined(this.inputmode || undefined)}\"\n ?readonly=\"${this.readonly}\"\n ?required=\"${this.required}\"\n id=\"${ifDefined(this.id || undefined)}\"\n maxlength=\"${ifDefined(this.maxlength)}\"\n minlength=\"${ifDefined(this.minlength)}\"\n name=\"${ifDefined(this.name || undefined)}\"\n placeholder=\"${ifDefined(this.placeholder || undefined)}\"\n rows=\"${this.rows}\"\n spellcheck=\"${ifDefined(\n this.spellcheck === undefined ? undefined : String(this.spellcheck),\n )}\"\n title=\"${ifDefined(this.title || undefined)}\"\n .value=\"${live(this.value)}\"\n @change=\"${this.handleChange}\"\n @input=\"${this.handleInput}\"\n ></textarea>`;\n }\n}\n\nexport function defineSpectreTextarea(\n tagName = 'sp-textarea',\n): typeof SpectreTextareaElement {\n const existingElement = customElements.get(tagName);\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreTextareaElement;\n }\n\n customElements.define(tagName, SpectreTextareaElement);\n return SpectreTextareaElement;\n}\n"]}
|