@phcdevworks/spectre-components 0.0.1 → 1.0.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 (61) hide show
  1. package/dist/base-DQtCQ-dP.d.cts +22 -0
  2. package/dist/base-DQtCQ-dP.d.ts +22 -0
  3. package/dist/button.cjs +149 -124
  4. package/dist/button.cjs.map +1 -1
  5. package/dist/button.d.cts +15 -40
  6. package/dist/button.d.ts +15 -40
  7. package/dist/button.js +150 -125
  8. package/dist/button.js.map +1 -1
  9. package/dist/checkbox.cjs +140 -25
  10. package/dist/checkbox.cjs.map +1 -1
  11. package/dist/checkbox.d.cts +32 -32
  12. package/dist/checkbox.d.ts +32 -32
  13. package/dist/checkbox.js +141 -26
  14. package/dist/checkbox.js.map +1 -1
  15. package/dist/fieldset.cjs +96 -50
  16. package/dist/fieldset.cjs.map +1 -1
  17. package/dist/fieldset.d.cts +24 -36
  18. package/dist/fieldset.d.ts +24 -36
  19. package/dist/fieldset.js +96 -50
  20. package/dist/fieldset.js.map +1 -1
  21. package/dist/form-iI7vV-3W.d.cts +6 -0
  22. package/dist/form-iI7vV-3W.d.ts +6 -0
  23. package/dist/index.cjs +298 -826
  24. package/dist/index.cjs.map +1 -1
  25. package/dist/index.d.cts +5 -2
  26. package/dist/index.d.ts +5 -2
  27. package/dist/index.js +300 -827
  28. package/dist/index.js.map +1 -1
  29. package/dist/input.cjs +70 -59
  30. package/dist/input.cjs.map +1 -1
  31. package/dist/input.d.cts +25 -36
  32. package/dist/input.d.ts +25 -36
  33. package/dist/input.js +70 -59
  34. package/dist/input.js.map +1 -1
  35. package/dist/label.cjs +101 -38
  36. package/dist/label.cjs.map +1 -1
  37. package/dist/label.d.cts +16 -20
  38. package/dist/label.d.ts +16 -20
  39. package/dist/label.js +101 -38
  40. package/dist/label.js.map +1 -1
  41. package/dist/projectable-DcnBRiko.d.cts +17 -0
  42. package/dist/projectable-SzbPvXfM.d.ts +17 -0
  43. package/dist/radio.cjs +140 -25
  44. package/dist/radio.cjs.map +1 -1
  45. package/dist/radio.d.cts +32 -32
  46. package/dist/radio.d.ts +32 -32
  47. package/dist/radio.js +141 -26
  48. package/dist/radio.js.map +1 -1
  49. package/dist/select.cjs +142 -113
  50. package/dist/select.cjs.map +1 -1
  51. package/dist/select.d.cts +23 -41
  52. package/dist/select.d.ts +23 -41
  53. package/dist/select.js +143 -113
  54. package/dist/select.js.map +1 -1
  55. package/dist/textarea.cjs +24 -223
  56. package/dist/textarea.cjs.map +1 -1
  57. package/dist/textarea.d.cts +20 -32
  58. package/dist/textarea.d.ts +20 -32
  59. package/dist/textarea.js +24 -223
  60. package/dist/textarea.js.map +1 -1
  61. package/package.json +11 -11
package/dist/textarea.cjs CHANGED
@@ -6,46 +6,12 @@ var ifDefined_js = require('lit/directives/if-defined.js');
6
6
  var spectreUi = require('@phcdevworks/spectre-ui');
7
7
 
8
8
  // src/components/textarea/sp-textarea.ts
9
- var spectreInputTypes = [
10
- "text",
11
- "email",
12
- "password",
13
- "search",
14
- "tel",
15
- "url",
16
- "number",
17
- "date",
18
- "datetime-local",
19
- "month",
20
- "time",
21
- "week"
22
- ];
23
- var spectreInputSizes = ["sm", "md", "lg"];
24
- function isInputType(value) {
25
- return spectreInputTypes.includes(value);
26
- }
27
- function isInputSize(value) {
28
- return spectreInputSizes.includes(value);
29
- }
30
- var SpectreInputElement = class extends lit.LitElement {
9
+ var SpectreBaseElement = class extends lit.LitElement {
31
10
  constructor() {
32
11
  super(...arguments);
33
12
  this.ariaLabel = null;
34
13
  this.ariaLabelledBy = null;
35
14
  this.ariaDescribedBy = null;
36
- this.autofocus = false;
37
- this.disabled = false;
38
- this.fullWidth = false;
39
- this.invalid = false;
40
- this.loading = false;
41
- this.pill = false;
42
- this.readonly = false;
43
- this.required = false;
44
- this.size = "md";
45
- this.success = false;
46
- this.title = "";
47
- this.type = "text";
48
- this.value = "";
49
15
  }
50
16
  get id() {
51
17
  return this._id ?? "";
@@ -61,6 +27,8 @@ var SpectreInputElement = class extends lit.LitElement {
61
27
  }
62
28
  this.requestUpdate();
63
29
  }
30
+ // Spectre components intentionally render in light DOM so the global
31
+ // `@phcdevworks/spectre-ui` styling contract can apply directly.
64
32
  createRenderRoot() {
65
33
  return this;
66
34
  }
@@ -97,136 +65,32 @@ var SpectreInputElement = class extends lit.LitElement {
97
65
  }
98
66
  super.removeAttribute(qualifiedName);
99
67
  }
100
- willUpdate(changedProperties) {
101
- if (changedProperties.has("size") && !isInputSize(this.size)) {
102
- this.size = "md";
103
- }
104
- if (changedProperties.has("type") && !isInputType(this.type)) {
105
- this.type = "text";
106
- }
107
- if (changedProperties.has("value") && this.value == null) {
108
- this.value = "";
109
- }
110
- if (changedProperties.has("maxlength")) {
111
- if (this.maxlength == null || !Number.isInteger(this.maxlength) || this.maxlength < 0) {
112
- this.maxlength = void 0;
113
- }
114
- }
115
- if (changedProperties.has("minlength")) {
116
- if (this.minlength == null || !Number.isInteger(this.minlength) || this.minlength < 0) {
117
- this.minlength = void 0;
118
- }
119
- }
120
- }
121
- get inputClasses() {
122
- return spectreUi.getInputClasses({
123
- fullWidth: this.fullWidth,
124
- pill: this.pill,
125
- size: this.size,
126
- state: this.isDisabled ? this.disabled ? "disabled" : "loading" : this.invalid ? "error" : this.success ? "success" : "default"
127
- });
128
- }
129
- get isDisabled() {
130
- return this.disabled || this.loading;
131
- }
132
- get nativeInput() {
133
- return this.querySelector("[data-sp-input-native]");
134
- }
135
68
  get forwardedAriaLabel() {
136
- const ariaLabel = this.ariaLabel?.trim();
137
- return ariaLabel ? ariaLabel : void 0;
69
+ const value = this.ariaLabel?.trim();
70
+ return value ? value : void 0;
138
71
  }
139
72
  get forwardedAriaLabelledBy() {
140
- const ariaLabelledBy = this.ariaLabelledBy?.trim();
141
- return ariaLabelledBy ? ariaLabelledBy : void 0;
73
+ const value = this.ariaLabelledBy?.trim();
74
+ return value ? value : void 0;
142
75
  }
143
76
  get forwardedAriaDescribedBy() {
144
- const ariaDescribedBy = this.ariaDescribedBy?.trim();
145
- return ariaDescribedBy ? ariaDescribedBy : void 0;
146
- }
147
- handleInput(event) {
148
- const input = event.currentTarget;
149
- this.value = input.value;
150
- }
151
- handleChange(event) {
152
- const input = event.currentTarget;
153
- this.value = input.value;
154
- }
155
- focus(options) {
156
- this.nativeInput?.focus(options);
157
- }
158
- blur() {
159
- this.nativeInput?.blur();
160
- }
161
- render() {
162
- return lit.html`
163
- <input
164
- aria-busy=${this.loading ? "true" : "false"}
165
- aria-describedby=${ifDefined_js.ifDefined(this.forwardedAriaDescribedBy)}
166
- aria-invalid=${ifDefined_js.ifDefined(this.invalid ? "true" : void 0)}
167
- aria-label=${ifDefined_js.ifDefined(this.forwardedAriaLabel)}
168
- aria-labelledby=${ifDefined_js.ifDefined(this.forwardedAriaLabelledBy)}
169
- autocomplete=${ifDefined_js.ifDefined(this.autocomplete)}
170
- ?autofocus=${this.autofocus}
171
- class=${this.inputClasses}
172
- data-sp-input-native
173
- ?disabled=${this.isDisabled}
174
- ?readonly=${this.readonly}
175
- ?required=${this.required}
176
- id=${ifDefined_js.ifDefined(this.id || void 0)}
177
- inputmode=${ifDefined_js.ifDefined(this.inputmode)}
178
- max=${ifDefined_js.ifDefined(this.max)}
179
- maxlength=${ifDefined_js.ifDefined(this.maxlength)}
180
- min=${ifDefined_js.ifDefined(this.min)}
181
- minlength=${ifDefined_js.ifDefined(this.minlength)}
182
- name=${ifDefined_js.ifDefined(this.name)}
183
- placeholder=${ifDefined_js.ifDefined(this.placeholder)}
184
- step=${ifDefined_js.ifDefined(this.step)}
185
- title=${ifDefined_js.ifDefined(this.title || void 0)}
186
- type=${this.type}
187
- .value=${live_js.live(this.value)}
188
- @change=${this.handleChange}
189
- @input=${this.handleInput}
190
- />
191
- `;
77
+ const value = this.ariaDescribedBy?.trim();
78
+ return value ? value : void 0;
192
79
  }
193
80
  };
194
- SpectreInputElement.properties = {
81
+ SpectreBaseElement.properties = {
195
82
  ariaLabel: { attribute: "aria-label", type: String },
196
83
  ariaLabelledBy: { attribute: "aria-labelledby", type: String },
197
- ariaDescribedBy: { attribute: "aria-describedby", type: String },
198
- autocomplete: { type: String },
199
- autofocus: { type: Boolean, reflect: true },
200
- disabled: { type: Boolean, reflect: true },
201
- fullWidth: { attribute: "full-width", type: Boolean, reflect: true },
202
- inputmode: { type: String },
203
- invalid: { type: Boolean, reflect: true },
204
- loading: { type: Boolean, reflect: true },
205
- max: { type: String },
206
- maxlength: { type: Number },
207
- min: { type: String },
208
- minlength: { type: Number },
209
- name: { type: String },
210
- pill: { type: Boolean, reflect: true },
211
- placeholder: { type: String },
212
- readonly: { type: Boolean, reflect: true },
213
- required: { type: Boolean, reflect: true },
214
- size: { type: String, reflect: true },
215
- step: { type: String },
216
- success: { type: Boolean, reflect: true },
217
- title: { type: String, reflect: true },
218
- type: { type: String, reflect: true },
219
- value: { type: String }
84
+ ariaDescribedBy: { attribute: "aria-describedby", type: String }
220
85
  };
221
-
222
- // src/components/textarea/sp-textarea.ts
86
+ var spectreInputSizes = ["sm", "md", "lg"];
87
+ function isInputSize(value) {
88
+ return spectreInputSizes.includes(value);
89
+ }
223
90
  var DEFAULT_ROWS = 2;
224
- var SpectreTextareaElement = class extends lit.LitElement {
91
+ var SpectreTextareaElement = class extends SpectreBaseElement {
225
92
  constructor() {
226
93
  super(...arguments);
227
- this.ariaLabel = null;
228
- this.ariaLabelledBy = null;
229
- this.ariaDescribedBy = null;
230
94
  this.autofocus = false;
231
95
  this.disabled = false;
232
96
  this.fullWidth = false;
@@ -241,56 +105,6 @@ var SpectreTextareaElement = class extends lit.LitElement {
241
105
  this.title = "";
242
106
  this.value = "";
243
107
  }
244
- get id() {
245
- return this._id ?? "";
246
- }
247
- set id(value) {
248
- if ((this._id ?? "") === value) {
249
- return;
250
- }
251
- this._id = value;
252
- const host = this;
253
- if (HTMLElement.prototype.hasAttribute.call(host, "id")) {
254
- HTMLElement.prototype.removeAttribute.call(host, "id");
255
- }
256
- this.requestUpdate();
257
- }
258
- createRenderRoot() {
259
- return this;
260
- }
261
- connectedCallback() {
262
- super.connectedCallback();
263
- const hostId = super.getAttribute("id");
264
- if (hostId !== null) {
265
- this.id = hostId;
266
- }
267
- }
268
- getAttribute(qualifiedName) {
269
- if (qualifiedName === "id") {
270
- return this.id || null;
271
- }
272
- return super.getAttribute(qualifiedName);
273
- }
274
- hasAttribute(qualifiedName) {
275
- if (qualifiedName === "id") {
276
- return this.id !== "";
277
- }
278
- return super.hasAttribute(qualifiedName);
279
- }
280
- setAttribute(qualifiedName, value) {
281
- if (qualifiedName === "id") {
282
- this.id = value;
283
- return;
284
- }
285
- super.setAttribute(qualifiedName, value);
286
- }
287
- removeAttribute(qualifiedName) {
288
- if (qualifiedName === "id") {
289
- this.id = "";
290
- return;
291
- }
292
- super.removeAttribute(qualifiedName);
293
- }
294
108
  willUpdate(changedProperties) {
295
109
  if (changedProperties.has("size") && !isInputSize(this.size)) {
296
110
  this.size = "md";
@@ -328,18 +142,6 @@ var SpectreTextareaElement = class extends lit.LitElement {
328
142
  get nativeTextarea() {
329
143
  return this.querySelector("[data-sp-textarea-native]");
330
144
  }
331
- get forwardedAriaLabel() {
332
- const ariaLabel = this.ariaLabel?.trim();
333
- return ariaLabel ? ariaLabel : void 0;
334
- }
335
- get forwardedAriaLabelledBy() {
336
- const ariaLabelledBy = this.ariaLabelledBy?.trim();
337
- return ariaLabelledBy ? ariaLabelledBy : void 0;
338
- }
339
- get forwardedAriaDescribedBy() {
340
- const ariaDescribedBy = this.ariaDescribedBy?.trim();
341
- return ariaDescribedBy ? ariaDescribedBy : void 0;
342
- }
343
145
  handleInput(event) {
344
146
  const textarea = event.currentTarget;
345
147
  this.value = textarea.value;
@@ -367,6 +169,7 @@ var SpectreTextareaElement = class extends lit.LitElement {
367
169
  class=${this.textareaClasses}
368
170
  data-sp-textarea-native
369
171
  ?disabled=${this.isDisabled}
172
+ form=${ifDefined_js.ifDefined(this.form)}
370
173
  inputmode=${ifDefined_js.ifDefined(this.inputmode)}
371
174
  ?readonly=${this.readonly}
372
175
  ?required=${this.required}
@@ -385,21 +188,19 @@ var SpectreTextareaElement = class extends lit.LitElement {
385
188
  }
386
189
  };
387
190
  SpectreTextareaElement.properties = {
388
- ariaLabel: { attribute: "aria-label", type: String },
389
- ariaLabelledBy: { attribute: "aria-labelledby", type: String },
390
- ariaDescribedBy: { attribute: "aria-describedby", type: String },
391
- autocomplete: { type: String },
191
+ autocomplete: { type: String, reflect: true },
392
192
  autofocus: { type: Boolean, reflect: true },
393
193
  disabled: { type: Boolean, reflect: true },
194
+ form: { type: String },
394
195
  fullWidth: { attribute: "full-width", type: Boolean, reflect: true },
395
- inputmode: { type: String },
196
+ inputmode: { type: String, reflect: true },
396
197
  invalid: { type: Boolean, reflect: true },
397
198
  loading: { type: Boolean, reflect: true },
398
- maxlength: { type: Number },
399
- minlength: { type: Number },
400
- name: { type: String },
199
+ maxlength: { type: Number, reflect: true },
200
+ minlength: { type: Number, reflect: true },
201
+ name: { type: String, reflect: true },
401
202
  pill: { type: Boolean, reflect: true },
402
- placeholder: { type: String },
203
+ placeholder: { type: String, reflect: true },
403
204
  readonly: { type: Boolean, reflect: true },
404
205
  required: { type: Boolean, reflect: true },
405
206
  rows: { type: Number },
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/input/sp-input.ts","../src/components/textarea/sp-textarea.ts"],"names":["LitElement","getInputClasses","html","ifDefined","live"],"mappings":"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","file":"textarea.cjs","sourcesContent":["import { LitElement, html } from 'lit';\nimport { live } from 'lit/directives/live.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\n\nimport {\n getInputClasses,\n type InputSize,\n} from '@phcdevworks/spectre-ui';\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 const spectreInputSizes = ['sm', 'md', 'lg'] as const;\n\nexport type SpectreInputType = (typeof spectreInputTypes)[number];\nexport type SpectreInputSize = (typeof spectreInputSizes)[number];\n\nexport interface SpectreInputProps {\n autocomplete?: string;\n autofocus?: boolean;\n disabled?: boolean;\n fullWidth?: boolean;\n inputmode?: string;\n invalid?: boolean;\n loading?: boolean;\n max?: string;\n maxlength?: number | undefined;\n min?: string;\n minlength?: number | undefined;\n name?: string;\n pill?: boolean;\n placeholder?: string;\n readonly?: boolean;\n required?: boolean;\n size?: SpectreInputSize;\n step?: string;\n success?: boolean;\n title?: string;\n type?: SpectreInputType;\n value?: string;\n}\n\nfunction isInputType(value: string): value is SpectreInputType {\n return (spectreInputTypes as readonly string[]).includes(value);\n}\n\nexport function isInputSize(value: string): value is InputSize {\n return (spectreInputSizes as readonly string[]).includes(value);\n}\n\nexport class SpectreInputElement extends LitElement implements SpectreInputProps {\n static properties = {\n ariaLabel: { attribute: 'aria-label', type: String },\n ariaLabelledBy: { attribute: 'aria-labelledby', type: String },\n ariaDescribedBy: { attribute: 'aria-describedby', type: String },\n autocomplete: { type: String },\n autofocus: { type: Boolean, reflect: true },\n disabled: { type: Boolean, reflect: true },\n fullWidth: { attribute: 'full-width', type: Boolean, reflect: true },\n inputmode: { type: String },\n invalid: { type: Boolean, reflect: true },\n loading: { type: Boolean, reflect: true },\n max: { type: String },\n maxlength: { type: Number },\n min: { type: String },\n minlength: { type: Number },\n name: { type: String },\n pill: { type: Boolean, reflect: true },\n placeholder: { type: String },\n readonly: { type: Boolean, reflect: true },\n required: { type: Boolean, reflect: true },\n size: { type: String, reflect: true },\n step: { type: String },\n success: { type: Boolean, reflect: true },\n title: { type: String, reflect: true },\n type: { type: String, reflect: true },\n value: { type: String },\n };\n\n ariaLabel: string | null = null;\n ariaLabelledBy: string | null = null;\n ariaDescribedBy: string | null = null;\n autocomplete?: string;\n autofocus = false;\n disabled = false;\n fullWidth = false;\n inputmode?: string;\n invalid = false;\n loading = false;\n max?: string;\n maxlength?: number | undefined;\n min?: string;\n minlength?: number | undefined;\n name?: string;\n pill = false;\n placeholder?: string;\n readonly = false;\n required = false;\n size: SpectreInputSize = 'md';\n step?: string;\n success = false;\n override title = '';\n type: SpectreInputType = 'text';\n value = '';\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 createRenderRoot(): this {\n // Spectre components intentionally render in light DOM so the global\n // `@phcdevworks/spectre-ui` styling contract can apply directly.\n return this;\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n const hostId = super.getAttribute('id');\n\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 override willUpdate(changedProperties: Map<PropertyKey, unknown>): void {\n if (changedProperties.has('size') && !isInputSize(this.size)) {\n this.size = 'md';\n }\n\n if (changedProperties.has('type') && !isInputType(this.type)) {\n this.type = 'text';\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 inputClasses(): 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 nativeInput(): HTMLInputElement | null {\n return this.querySelector('[data-sp-input-native]');\n }\n\n private get forwardedAriaLabel(): string | undefined {\n const ariaLabel = this.ariaLabel?.trim();\n return ariaLabel ? ariaLabel : undefined;\n }\n\n private get forwardedAriaLabelledBy(): string | undefined {\n const ariaLabelledBy = this.ariaLabelledBy?.trim();\n return ariaLabelledBy ? ariaLabelledBy : undefined;\n }\n\n private get forwardedAriaDescribedBy(): string | undefined {\n const ariaDescribedBy = this.ariaDescribedBy?.trim();\n return ariaDescribedBy ? ariaDescribedBy : undefined;\n }\n\n private handleInput(event: Event): void {\n const input = event.currentTarget as HTMLInputElement;\n this.value = input.value;\n }\n\n private handleChange(event: Event): void {\n const input = event.currentTarget as HTMLInputElement;\n this.value = input.value;\n }\n\n override focus(options?: FocusOptions): void {\n this.nativeInput?.focus(options);\n }\n\n override blur(): void {\n this.nativeInput?.blur();\n }\n\n override render() {\n return html`\n <input\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.inputClasses}\n data-sp-input-native\n ?disabled=${this.isDisabled}\n ?readonly=${this.readonly}\n ?required=${this.required}\n id=${ifDefined(this.id || undefined)}\n inputmode=${ifDefined(this.inputmode)}\n max=${ifDefined(this.max)}\n maxlength=${ifDefined(this.maxlength)}\n min=${ifDefined(this.min)}\n minlength=${ifDefined(this.minlength)}\n name=${ifDefined(this.name)}\n placeholder=${ifDefined(this.placeholder)}\n step=${ifDefined(this.step)}\n title=${ifDefined(this.title || undefined)}\n type=${this.type}\n .value=${live(this.value)}\n @change=${this.handleChange}\n @input=${this.handleInput}\n />\n `;\n }\n}\n\nexport function defineSpectreInput(tagName = 'sp-input'): typeof SpectreInputElement {\n const existingElement = customElements.get(tagName);\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreInputElement;\n }\n\n customElements.define(tagName, SpectreInputElement);\n return SpectreInputElement;\n}\n","import { LitElement, html } from 'lit';\nimport { live } from 'lit/directives/live.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\n\nimport { getInputClasses } from '@phcdevworks/spectre-ui';\n\nimport {\n isInputSize,\n type SpectreInputSize,\n} from '../input/sp-input';\n\nexport interface SpectreTextareaProps {\n autocomplete?: string;\n autofocus?: boolean;\n disabled?: boolean;\n fullWidth?: boolean;\n inputmode?: string;\n invalid?: boolean;\n loading?: boolean;\n maxlength?: number | undefined;\n minlength?: number | undefined;\n name?: string;\n pill?: boolean;\n placeholder?: string;\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 LitElement\n implements SpectreTextareaProps {\n static properties = {\n ariaLabel: { attribute: 'aria-label', type: String },\n ariaLabelledBy: { attribute: 'aria-labelledby', type: String },\n ariaDescribedBy: { attribute: 'aria-describedby', type: String },\n autocomplete: { type: String },\n autofocus: { type: Boolean, reflect: true },\n disabled: { type: Boolean, reflect: true },\n fullWidth: { attribute: 'full-width', type: Boolean, reflect: true },\n inputmode: { type: String },\n invalid: { type: Boolean, reflect: true },\n loading: { type: Boolean, reflect: true },\n maxlength: { type: Number },\n minlength: { type: Number },\n name: { type: String },\n pill: { type: Boolean, reflect: true },\n placeholder: { type: String },\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 ariaLabel: string | null = null;\n ariaLabelledBy: string | null = null;\n ariaDescribedBy: string | null = null;\n autocomplete?: string;\n autofocus = false;\n disabled = false;\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 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 createRenderRoot(): this {\n // Spectre components intentionally render in light DOM so the global\n // `@phcdevworks/spectre-ui` styling contract can apply directly.\n return this;\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n const hostId = super.getAttribute('id');\n\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 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 get forwardedAriaLabel(): string | undefined {\n const ariaLabel = this.ariaLabel?.trim();\n return ariaLabel ? ariaLabel : undefined;\n }\n\n private get forwardedAriaLabelledBy(): string | undefined {\n const ariaLabelledBy = this.ariaLabelledBy?.trim();\n return ariaLabelledBy ? ariaLabelledBy : undefined;\n }\n\n private get forwardedAriaDescribedBy(): string | undefined {\n const ariaDescribedBy = this.ariaDescribedBy?.trim();\n return ariaDescribedBy ? ariaDescribedBy : undefined;\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 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 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,20 +1,25 @@
1
1
  import * as lit_html from 'lit-html';
2
- import { LitElement } from 'lit';
3
- import { SpectreInputSize } from './input.cjs';
2
+ import { S as SpectreBaseElement } from './base-DQtCQ-dP.cjs';
3
+ import { S as SpectreInputSize } from './form-iI7vV-3W.cjs';
4
+ import 'lit';
4
5
 
5
6
  interface SpectreTextareaProps {
7
+ ariaLabel?: string | null;
8
+ ariaLabelledBy?: string | null;
9
+ ariaDescribedBy?: string | null;
6
10
  autocomplete?: string;
7
11
  autofocus?: boolean;
8
12
  disabled?: boolean;
13
+ form?: string;
9
14
  fullWidth?: boolean;
10
15
  inputmode?: string;
11
16
  invalid?: boolean;
12
17
  loading?: boolean;
13
18
  maxlength?: number | undefined;
14
19
  minlength?: number | undefined;
15
- name?: string;
20
+ name?: string | undefined;
16
21
  pill?: boolean;
17
- placeholder?: string;
22
+ placeholder?: string | undefined;
18
23
  readonly?: boolean;
19
24
  required?: boolean;
20
25
  rows?: number;
@@ -23,22 +28,11 @@ interface SpectreTextareaProps {
23
28
  title?: string;
24
29
  value?: string;
25
30
  }
26
- declare class SpectreTextareaElement extends LitElement implements SpectreTextareaProps {
31
+ declare class SpectreTextareaElement extends SpectreBaseElement implements SpectreTextareaProps {
27
32
  static properties: {
28
- ariaLabel: {
29
- attribute: string;
30
- type: StringConstructor;
31
- };
32
- ariaLabelledBy: {
33
- attribute: string;
34
- type: StringConstructor;
35
- };
36
- ariaDescribedBy: {
37
- attribute: string;
38
- type: StringConstructor;
39
- };
40
33
  autocomplete: {
41
34
  type: StringConstructor;
35
+ reflect: boolean;
42
36
  };
43
37
  autofocus: {
44
38
  type: BooleanConstructor;
@@ -48,6 +42,9 @@ declare class SpectreTextareaElement extends LitElement implements SpectreTextar
48
42
  type: BooleanConstructor;
49
43
  reflect: boolean;
50
44
  };
45
+ form: {
46
+ type: StringConstructor;
47
+ };
51
48
  fullWidth: {
52
49
  attribute: string;
53
50
  type: BooleanConstructor;
@@ -55,6 +52,7 @@ declare class SpectreTextareaElement extends LitElement implements SpectreTextar
55
52
  };
56
53
  inputmode: {
57
54
  type: StringConstructor;
55
+ reflect: boolean;
58
56
  };
59
57
  invalid: {
60
58
  type: BooleanConstructor;
@@ -66,12 +64,15 @@ declare class SpectreTextareaElement extends LitElement implements SpectreTextar
66
64
  };
67
65
  maxlength: {
68
66
  type: NumberConstructor;
67
+ reflect: boolean;
69
68
  };
70
69
  minlength: {
71
70
  type: NumberConstructor;
71
+ reflect: boolean;
72
72
  };
73
73
  name: {
74
74
  type: StringConstructor;
75
+ reflect: boolean;
75
76
  };
76
77
  pill: {
77
78
  type: BooleanConstructor;
@@ -79,6 +80,7 @@ declare class SpectreTextareaElement extends LitElement implements SpectreTextar
79
80
  };
80
81
  placeholder: {
81
82
  type: StringConstructor;
83
+ reflect: boolean;
82
84
  };
83
85
  readonly: {
84
86
  type: BooleanConstructor;
@@ -107,12 +109,10 @@ declare class SpectreTextareaElement extends LitElement implements SpectreTextar
107
109
  type: StringConstructor;
108
110
  };
109
111
  };
110
- ariaLabel: string | null;
111
- ariaLabelledBy: string | null;
112
- ariaDescribedBy: string | null;
113
112
  autocomplete?: string;
114
113
  autofocus: boolean;
115
114
  disabled: boolean;
115
+ form?: string;
116
116
  fullWidth: boolean;
117
117
  inputmode?: string;
118
118
  invalid: boolean;
@@ -129,22 +129,10 @@ declare class SpectreTextareaElement extends LitElement implements SpectreTextar
129
129
  success: boolean;
130
130
  title: string;
131
131
  value: string;
132
- private _id?;
133
- get id(): string;
134
- set id(value: string);
135
- createRenderRoot(): this;
136
- connectedCallback(): void;
137
- getAttribute(qualifiedName: string): string | null;
138
- hasAttribute(qualifiedName: string): boolean;
139
- setAttribute(qualifiedName: string, value: string): void;
140
- removeAttribute(qualifiedName: string): void;
141
132
  protected willUpdate(changedProperties: Map<PropertyKey, unknown>): void;
142
133
  private get textareaClasses();
143
134
  private get isDisabled();
144
135
  private get nativeTextarea();
145
- private get forwardedAriaLabel();
146
- private get forwardedAriaLabelledBy();
147
- private get forwardedAriaDescribedBy();
148
136
  private handleInput;
149
137
  private handleChange;
150
138
  focus(options?: FocusOptions): void;