@kodaris/krubble-components 1.0.5 → 1.0.7

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 (51) hide show
  1. package/custom-elements.json +1568 -412
  2. package/dist/alert/alert.d.ts.map +1 -0
  3. package/dist/alert/alert.js.map +1 -0
  4. package/dist/code-demo/code-demo.d.ts.map +1 -1
  5. package/dist/code-demo/code-demo.js +2 -1
  6. package/dist/code-demo/code-demo.js.map +1 -1
  7. package/dist/form/index.d.ts +2 -0
  8. package/dist/form/index.d.ts.map +1 -1
  9. package/dist/form/index.js +2 -0
  10. package/dist/form/index.js.map +1 -1
  11. package/dist/form/select/select-option.d.ts +27 -0
  12. package/dist/form/select/select-option.d.ts.map +1 -0
  13. package/dist/form/select/select-option.js +50 -0
  14. package/dist/form/select/select-option.js.map +1 -0
  15. package/dist/form/select/select.d.ts +81 -0
  16. package/dist/form/select/select.d.ts.map +1 -0
  17. package/dist/form/select/select.js +519 -0
  18. package/dist/form/select/select.js.map +1 -0
  19. package/dist/form/text-field/text-field.d.ts +6 -0
  20. package/dist/form/text-field/text-field.d.ts.map +1 -1
  21. package/dist/form/text-field/text-field.js +38 -8
  22. package/dist/form/text-field/text-field.js.map +1 -1
  23. package/dist/index.d.ts +5 -2
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +6 -2
  26. package/dist/index.js.map +1 -1
  27. package/dist/krubble.bundled.js +1168 -120
  28. package/dist/krubble.bundled.js.map +1 -1
  29. package/dist/krubble.bundled.min.js +508 -60
  30. package/dist/krubble.bundled.min.js.map +1 -1
  31. package/dist/krubble.umd.js +1168 -119
  32. package/dist/krubble.umd.js.map +1 -1
  33. package/dist/krubble.umd.min.js +517 -69
  34. package/dist/krubble.umd.min.js.map +1 -1
  35. package/dist/style/base.d.ts +6 -0
  36. package/dist/style/base.d.ts.map +1 -0
  37. package/dist/style/base.js +34 -0
  38. package/dist/style/base.js.map +1 -0
  39. package/dist/tabs/tab.d.ts +54 -0
  40. package/dist/tabs/tab.d.ts.map +1 -0
  41. package/dist/tabs/tab.js +103 -0
  42. package/dist/tabs/tab.js.map +1 -0
  43. package/dist/tabs/tabs.d.ts +55 -0
  44. package/dist/tabs/tabs.d.ts.map +1 -0
  45. package/dist/tabs/tabs.js +319 -0
  46. package/dist/tabs/tabs.js.map +1 -0
  47. package/package.json +1 -1
  48. package/dist/alert.d.ts.map +0 -1
  49. package/dist/alert.js.map +0 -1
  50. /package/dist/{alert.d.ts → alert/alert.d.ts} +0 -0
  51. /package/dist/{alert.js → alert/alert.js} +0 -0
@@ -0,0 +1,519 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { LitElement, html, css, nothing } from 'lit';
8
+ import { customElement, property, query, state } from 'lit/decorators.js';
9
+ import { classMap } from 'lit/directives/class-map.js';
10
+ /**
11
+ * A select dropdown component that works with native browser forms.
12
+ *
13
+ * Uses ElementInternals for form association, allowing the component
14
+ * to participate in form submission, validation, and reset.
15
+ *
16
+ * @element kr-select
17
+ * @slot - The kr-select-option elements
18
+ */
19
+ let KRSelect = class KRSelect extends LitElement {
20
+ constructor() {
21
+ super();
22
+ /**
23
+ * The select label text
24
+ */
25
+ this.label = '';
26
+ /**
27
+ * The input name for form submission
28
+ */
29
+ this.name = '';
30
+ /**
31
+ * The currently selected value
32
+ */
33
+ this.value = '';
34
+ /**
35
+ * Placeholder text when no option is selected
36
+ */
37
+ this.placeholder = 'Select an option';
38
+ /**
39
+ * Whether the select is disabled
40
+ */
41
+ this.disabled = false;
42
+ /**
43
+ * Whether the field is required
44
+ */
45
+ this.required = false;
46
+ /**
47
+ * Whether the field is readonly
48
+ */
49
+ this.readonly = false;
50
+ /**
51
+ * Helper text shown below the select
52
+ */
53
+ this.hint = '';
54
+ this._isOpen = false;
55
+ this._highlightedIndex = -1;
56
+ this._touched = false;
57
+ this._handleInvalid = (e) => {
58
+ e.preventDefault();
59
+ this._touched = true;
60
+ };
61
+ this._handleOutsideClick = (e) => {
62
+ if (!this.contains(e.target)) {
63
+ this._close();
64
+ }
65
+ };
66
+ this._handleKeyDown = (e) => {
67
+ if (!this._isOpen)
68
+ return;
69
+ const options = Array.from(this.querySelectorAll('kr-select-option'));
70
+ switch (e.key) {
71
+ case 'Escape':
72
+ this._close();
73
+ this._triggerElement?.focus();
74
+ break;
75
+ case 'ArrowDown':
76
+ e.preventDefault();
77
+ if (options.some(o => !o.disabled)) {
78
+ let newIndex = this._highlightedIndex + 1;
79
+ while (newIndex < options.length && options[newIndex]?.disabled)
80
+ newIndex++;
81
+ if (newIndex < options.length)
82
+ this._highlightedIndex = newIndex;
83
+ }
84
+ break;
85
+ case 'ArrowUp':
86
+ e.preventDefault();
87
+ {
88
+ let newIndex = this._highlightedIndex - 1;
89
+ while (newIndex >= 0 && options[newIndex]?.disabled)
90
+ newIndex--;
91
+ if (newIndex >= 0)
92
+ this._highlightedIndex = newIndex;
93
+ }
94
+ break;
95
+ case 'Enter':
96
+ e.preventDefault();
97
+ if (this._highlightedIndex >= 0 && this._highlightedIndex < options.length) {
98
+ this._selectOption(options[this._highlightedIndex]);
99
+ }
100
+ break;
101
+ }
102
+ };
103
+ this._internals = this.attachInternals();
104
+ }
105
+ // Form-associated custom element callbacks
106
+ get form() {
107
+ return this._internals.form;
108
+ }
109
+ get validity() {
110
+ return this._internals.validity;
111
+ }
112
+ get validationMessage() {
113
+ return this._internals.validationMessage;
114
+ }
115
+ get willValidate() {
116
+ return this._internals.willValidate;
117
+ }
118
+ checkValidity() {
119
+ return this._internals.checkValidity();
120
+ }
121
+ reportValidity() {
122
+ return this._internals.reportValidity();
123
+ }
124
+ formResetCallback() {
125
+ this.value = '';
126
+ this._touched = false;
127
+ this._internals.setFormValue('');
128
+ this._internals.setValidity({});
129
+ }
130
+ formStateRestoreCallback(state) {
131
+ this.value = state;
132
+ }
133
+ connectedCallback() {
134
+ super.connectedCallback();
135
+ document.addEventListener('click', this._handleOutsideClick);
136
+ document.addEventListener('keydown', this._handleKeyDown);
137
+ this.addEventListener('invalid', this._handleInvalid);
138
+ }
139
+ firstUpdated() {
140
+ this._updateValidity();
141
+ }
142
+ updated(changedProperties) {
143
+ if (changedProperties.has('required') || changedProperties.has('value')) {
144
+ this._updateValidity();
145
+ }
146
+ }
147
+ disconnectedCallback() {
148
+ super.disconnectedCallback();
149
+ document.removeEventListener('click', this._handleOutsideClick);
150
+ document.removeEventListener('keydown', this._handleKeyDown);
151
+ this.removeEventListener('invalid', this._handleInvalid);
152
+ }
153
+ _toggle() {
154
+ if (this.disabled || this.readonly)
155
+ return;
156
+ if (this._isOpen) {
157
+ this._close();
158
+ }
159
+ else {
160
+ this._isOpen = true;
161
+ const options = Array.from(this.querySelectorAll('kr-select-option'));
162
+ this._highlightedIndex = options.findIndex(o => o.value === this.value);
163
+ }
164
+ }
165
+ _close() {
166
+ this._isOpen = false;
167
+ this._highlightedIndex = -1;
168
+ }
169
+ _selectOption(option) {
170
+ if (option.disabled)
171
+ return;
172
+ this.value = option.value;
173
+ this._internals.setFormValue(this.value);
174
+ this._updateValidity();
175
+ this.dispatchEvent(new Event('change', { bubbles: true, composed: true }));
176
+ this._close();
177
+ this._triggerElement?.focus();
178
+ }
179
+ _handleBlur() {
180
+ this._touched = true;
181
+ this._updateValidity();
182
+ }
183
+ _updateValidity() {
184
+ if (this.required && !this.value) {
185
+ this._internals.setValidity({ valueMissing: true }, 'Please select an option', this._triggerElement);
186
+ }
187
+ else {
188
+ this._internals.setValidity({});
189
+ }
190
+ }
191
+ render() {
192
+ const options = Array.from(this.querySelectorAll('kr-select-option'));
193
+ const selectedLabel = options.find(o => o.value === this.value)?.label;
194
+ return html `
195
+ <div class="wrapper">
196
+ ${this.label
197
+ ? html `
198
+ <label>
199
+ ${this.label}
200
+ ${this.required ? html `<span class="required" aria-hidden="true">*</span>` : ''}
201
+ </label>
202
+ `
203
+ : nothing}
204
+ <div class="select-wrapper">
205
+ <button
206
+ class=${classMap({
207
+ 'select-trigger': true,
208
+ 'select-trigger--open': this._isOpen,
209
+ 'select-trigger--invalid': this._touched && this.required && !this.value,
210
+ })}
211
+ type="button"
212
+ ?disabled=${this.disabled}
213
+ aria-haspopup="listbox"
214
+ aria-expanded=${this._isOpen}
215
+ @click=${this._toggle}
216
+ @blur=${this._handleBlur}
217
+ >
218
+ <span class=${classMap({
219
+ 'select-value': true,
220
+ 'select-placeholder': !selectedLabel
221
+ })}>
222
+ ${selectedLabel || this.placeholder}
223
+ </span>
224
+ <svg
225
+ class=${classMap({
226
+ 'chevron-icon': true,
227
+ 'select-icon': true,
228
+ 'select-icon--open': this._isOpen
229
+ })}
230
+ viewBox="0 0 20 20"
231
+ fill="currentColor"
232
+ >
233
+ <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd" />
234
+ </svg>
235
+ </button>
236
+
237
+ <div class=${classMap({
238
+ 'select-dropdown': true,
239
+ 'hidden': !this._isOpen
240
+ })} role="listbox">
241
+ <div class="select-options">
242
+ ${options.length === 0
243
+ ? html `<div class="select-empty">No options available</div>`
244
+ : options.map((option, idx) => {
245
+ const isSelected = option.value === this.value;
246
+ return html `
247
+ <div
248
+ class=${classMap({
249
+ 'select-option': true,
250
+ 'select-option--selected': isSelected,
251
+ 'select-option--disabled': option.disabled,
252
+ 'select-option--highlighted': idx === this._highlightedIndex,
253
+ })}
254
+ role="option"
255
+ aria-selected=${isSelected}
256
+ @click=${() => this._selectOption(option)}
257
+ @mouseenter=${() => (this._highlightedIndex = idx)}
258
+ >
259
+ ${option.label}
260
+ ${isSelected
261
+ ? html `<svg class="chevron-icon select-check" viewBox="0 0 20 20" fill="currentColor">
262
+ <path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd" />
263
+ </svg>`
264
+ : nothing}
265
+ </div>
266
+ `;
267
+ })}
268
+ </div>
269
+ </div>
270
+ </div>
271
+ ${this._touched && this.required && !this.value
272
+ ? html `<div class="validation-message">Please select an option</div>`
273
+ : this.hint
274
+ ? html `<div class="hint">${this.hint}</div>`
275
+ : ''}
276
+ </div>
277
+ <div class="options-slot">
278
+ <slot @slotchange=${() => this.requestUpdate()}></slot>
279
+ </div>
280
+ `;
281
+ }
282
+ // Public methods for programmatic control
283
+ focus() {
284
+ this._triggerElement?.focus();
285
+ }
286
+ blur() {
287
+ this._triggerElement?.blur();
288
+ }
289
+ };
290
+ KRSelect.styles = css `
291
+ :host {
292
+ display: block;
293
+ font-family: inherit;
294
+ }
295
+
296
+ .wrapper {
297
+ display: flex;
298
+ flex-direction: column;
299
+ gap: 0.25rem;
300
+ }
301
+
302
+ label {
303
+ font-size: 13px;
304
+ font-weight: 500;
305
+ color: var(--kr-select-label-color, #374151);
306
+ }
307
+
308
+ .required {
309
+ color: var(--kr-select-required-color, #ef4444);
310
+ margin-left: 0.125rem;
311
+ }
312
+
313
+ .select-wrapper {
314
+ position: relative;
315
+ }
316
+
317
+ .select-trigger {
318
+ display: flex;
319
+ align-items: center;
320
+ justify-content: space-between;
321
+ width: 100%;
322
+ padding: 0.5rem 0.75rem;
323
+ font-family: inherit;
324
+ font-size: 14px;
325
+ line-height: 1.5;
326
+ color: var(--kr-select-color, #111827);
327
+ background-color: var(--kr-select-bg, #fff);
328
+ border: 1px solid var(--kr-select-border-color, #d1d5db);
329
+ border-radius: 4px;
330
+ cursor: pointer;
331
+ transition: border-color 0.2s, box-shadow 0.2s;
332
+ text-align: left;
333
+ }
334
+
335
+ .select-trigger:hover:not(:disabled) {
336
+ border-color: var(--kr-select-hover-border-color, #9ca3af);
337
+ }
338
+
339
+ .select-trigger:focus {
340
+ outline: none;
341
+ border-color: var(--kr-select-focus-border-color, #2563eb);
342
+ box-shadow: 0 0 0 3px var(--kr-select-focus-ring-color, rgba(37, 99, 235, 0.1));
343
+ }
344
+
345
+ .select-trigger:disabled {
346
+ background-color: var(--kr-select-disabled-bg, #f3f4f6);
347
+ color: var(--kr-select-disabled-color, #9ca3af);
348
+ cursor: not-allowed;
349
+ }
350
+
351
+ .select-trigger--invalid {
352
+ border-color: var(--kr-select-error-border-color, #ef4444);
353
+ }
354
+
355
+ .select-trigger--invalid:focus {
356
+ border-color: var(--kr-select-error-border-color, #ef4444);
357
+ box-shadow: 0 0 0 3px var(--kr-select-error-ring-color, rgba(239, 68, 68, 0.1));
358
+ }
359
+
360
+ .select-trigger--open {
361
+ border-color: var(--kr-select-focus-border-color, #2563eb);
362
+ box-shadow: 0 0 0 3px var(--kr-select-focus-ring-color, rgba(37, 99, 235, 0.1));
363
+ }
364
+
365
+ .select-value {
366
+ flex: 1;
367
+ overflow: hidden;
368
+ text-overflow: ellipsis;
369
+ white-space: nowrap;
370
+ }
371
+
372
+ .select-placeholder {
373
+ color: var(--kr-select-placeholder-color, #9ca3af);
374
+ }
375
+
376
+ .select-icon {
377
+ flex-shrink: 0;
378
+ margin-left: 0.5rem;
379
+ color: var(--kr-select-icon-color, #6b7280);
380
+ transition: transform 0.2s;
381
+ }
382
+
383
+ .select-icon--open {
384
+ transform: rotate(180deg);
385
+ }
386
+
387
+ .select-dropdown {
388
+ position: absolute;
389
+ top: 100%;
390
+ left: 0;
391
+ right: 0;
392
+ z-index: 50;
393
+ margin-top: 0.25rem;
394
+ background-color: var(--kr-select-dropdown-bg, #fff);
395
+ border: 1px solid var(--kr-select-dropdown-border-color, #e5e7eb);
396
+ border-radius: 4px;
397
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
398
+ max-height: 300px;
399
+ overflow-y: auto;
400
+ }
401
+
402
+ .select-options {
403
+ padding: 0.25rem;
404
+ }
405
+
406
+ .select-option {
407
+ display: flex;
408
+ align-items: center;
409
+ gap: 0.5rem;
410
+ padding: 0.5rem 0.75rem;
411
+ font-size: 14px;
412
+ color: var(--kr-select-option-color, #111827);
413
+ cursor: pointer;
414
+ border-radius: 4px;
415
+ transition: background-color 0.15s;
416
+ }
417
+
418
+ .select-option:hover:not(.select-option--disabled) {
419
+ background-color: var(--kr-select-option-hover-bg, #f3f4f6);
420
+ }
421
+
422
+ .select-option--selected {
423
+ background-color: var(--kr-select-option-selected-bg, #eff6ff);
424
+ color: var(--kr-select-option-selected-color, #1d4ed8);
425
+ }
426
+
427
+ .select-option--selected:hover {
428
+ background-color: var(--kr-select-option-selected-hover-bg, #dbeafe);
429
+ }
430
+
431
+ .select-option--disabled {
432
+ color: var(--kr-select-option-disabled-color, #9ca3af);
433
+ cursor: not-allowed;
434
+ }
435
+
436
+ .select-option--highlighted {
437
+ background-color: var(--kr-select-option-hover-bg, #f3f4f6);
438
+ }
439
+
440
+ .select-empty {
441
+ padding: 1rem;
442
+ text-align: center;
443
+ color: var(--kr-select-empty-color, #6b7280);
444
+ font-size: 14px;
445
+ }
446
+
447
+ .select-check {
448
+ color: var(--kr-select-check-color, #2563eb);
449
+ flex-shrink: 0;
450
+ margin-left: auto;
451
+ }
452
+
453
+ .hint {
454
+ font-size: 0.75rem;
455
+ color: var(--kr-select-helper-color, #6b7280);
456
+ }
457
+
458
+ .validation-message {
459
+ font-size: 0.75rem;
460
+ color: var(--kr-select-error-color, #ef4444);
461
+ }
462
+
463
+ .hidden {
464
+ display: none;
465
+ }
466
+
467
+ .chevron-icon {
468
+ width: 16px;
469
+ height: 16px;
470
+ }
471
+
472
+ /* Hide the slot - options are rendered in dropdown */
473
+ .options-slot {
474
+ display: none;
475
+ }
476
+ `;
477
+ // Enable form association
478
+ KRSelect.formAssociated = true;
479
+ __decorate([
480
+ property({ type: String })
481
+ ], KRSelect.prototype, "label", void 0);
482
+ __decorate([
483
+ property({ type: String })
484
+ ], KRSelect.prototype, "name", void 0);
485
+ __decorate([
486
+ property({ type: String })
487
+ ], KRSelect.prototype, "value", void 0);
488
+ __decorate([
489
+ property({ type: String })
490
+ ], KRSelect.prototype, "placeholder", void 0);
491
+ __decorate([
492
+ property({ type: Boolean })
493
+ ], KRSelect.prototype, "disabled", void 0);
494
+ __decorate([
495
+ property({ type: Boolean })
496
+ ], KRSelect.prototype, "required", void 0);
497
+ __decorate([
498
+ property({ type: Boolean })
499
+ ], KRSelect.prototype, "readonly", void 0);
500
+ __decorate([
501
+ property({ type: String })
502
+ ], KRSelect.prototype, "hint", void 0);
503
+ __decorate([
504
+ state()
505
+ ], KRSelect.prototype, "_isOpen", void 0);
506
+ __decorate([
507
+ state()
508
+ ], KRSelect.prototype, "_highlightedIndex", void 0);
509
+ __decorate([
510
+ state()
511
+ ], KRSelect.prototype, "_touched", void 0);
512
+ __decorate([
513
+ query('.select-trigger')
514
+ ], KRSelect.prototype, "_triggerElement", void 0);
515
+ KRSelect = __decorate([
516
+ customElement('kr-select')
517
+ ], KRSelect);
518
+ export { KRSelect };
519
+ //# sourceMappingURL=select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.js","sourceRoot":"","sources":["../../../src/form/select/select.ts"],"names":[],"mappings":"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"}
@@ -75,6 +75,12 @@ export declare class KRTextField extends LitElement {
75
75
  reportValidity(): boolean;
76
76
  formResetCallback(): void;
77
77
  formStateRestoreCallback(state: string): void;
78
+ connectedCallback(): void;
79
+ disconnectedCallback(): void;
80
+ private _handleInvalid;
81
+ protected firstUpdated(): void;
82
+ updated(changedProperties: Map<string, unknown>): void;
83
+ private _updateValidity;
78
84
  private _handleInput;
79
85
  private _handleChange;
80
86
  private _handleBlur;
@@ -1 +1 @@
1
- {"version":3,"file":"text-field.d.ts","sourceRoot":"","sources":["../../../src/form/text-field/text-field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAI5C;;;;;;;GAOG;AACH,qBACa,WAAY,SAAQ,UAAU;IACzC,OAAgB,MAAM,0BAmEpB;IAGF,MAAM,CAAC,cAAc,UAAQ;IAE7B,OAAO,CAAC,UAAU,CAAmB;;IAOrC;;OAEG;IAEH,KAAK,SAAM;IAEX;;OAEG;IAEH,IAAI,SAAM;IAEV;;OAEG;IAEH,KAAK,SAAM;IAEX;;OAEG;IAEH,WAAW,SAAM;IAEjB;;OAEG;IAEH,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,CAAU;IAExE;;OAEG;IAEH,QAAQ,UAAS;IAEjB;;OAEG;IAEH,QAAQ,UAAS;IAEjB;;OAEG;IAEH,QAAQ,UAAS;IAEjB;;OAEG;IAEH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IAEH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IAEH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IAEH,YAAY,SAAM;IAElB;;OAEG;IAEH,IAAI,SAAM;IAGV,OAAO,CAAC,MAAM,CAAoB;IAGlC,OAAO,CAAC,QAAQ,CAAS;IAGzB,OAAO,CAAC,MAAM,CAAS;IAGvB,IAAI,IAAI,2BAEP;IAED,IAAI,QAAQ,kBAEX;IAED,IAAI,iBAAiB,WAEpB;IAED,IAAI,YAAY,YAEf;IAED,aAAa;IAIb,cAAc;IAId,iBAAiB;IAQjB,wBAAwB,CAAC,KAAK,EAAE,MAAM;IAItC,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,WAAW;IAKV,MAAM;IA2Cf,KAAK;IAIL,IAAI;IAIJ,MAAM;CAGP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,eAAe,EAAE,WAAW,CAAC;KAC9B;CACF"}
1
+ {"version":3,"file":"text-field.d.ts","sourceRoot":"","sources":["../../../src/form/text-field/text-field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAM5C;;;;;;;GAOG;AACH,qBACa,WAAY,SAAQ,UAAU;IACzC,OAAgB,MAAM,0BAmEpB;IAGF,MAAM,CAAC,cAAc,UAAQ;IAE7B,OAAO,CAAC,UAAU,CAAmB;;IAOrC;;OAEG;IAEH,KAAK,SAAM;IAEX;;OAEG;IAEH,IAAI,SAAM;IAEV;;OAEG;IAEH,KAAK,SAAM;IAEX;;OAEG;IAEH,WAAW,SAAM;IAEjB;;OAEG;IAEH,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,KAAK,GAAG,KAAK,GAAG,QAAQ,CAAU;IAExE;;OAEG;IAEH,QAAQ,UAAS;IAEjB;;OAEG;IAEH,QAAQ,UAAS;IAEjB;;OAEG;IAEH,QAAQ,UAAS;IAEjB;;OAEG;IAEH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IAEH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IAEH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IAEH,YAAY,SAAM;IAElB;;OAEG;IAEH,IAAI,SAAM;IAGV,OAAO,CAAC,MAAM,CAAoB;IAGlC,OAAO,CAAC,QAAQ,CAAS;IAGzB,OAAO,CAAC,MAAM,CAAS;IAGvB,IAAI,IAAI,2BAEP;IAED,IAAI,QAAQ,kBAEX;IAED,IAAI,iBAAiB,WAEpB;IAED,IAAI,YAAY,YAEf;IAED,aAAa;IAIb,cAAc;IAId,iBAAiB;IAQjB,wBAAwB,CAAC,KAAK,EAAE,MAAM;IAI7B,iBAAiB;IAKjB,oBAAoB;IAK7B,OAAO,CAAC,cAAc,CAGpB;cAEiB,YAAY;IAItB,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAMxD,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,WAAW;IAKV,MAAM;IA8Cf,KAAK;IAIL,IAAI;IAIJ,MAAM;CAGP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,eAAe,EAAE,WAAW,CAAC;KAC9B;CACF"}
@@ -6,6 +6,8 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import { LitElement, html, css } from 'lit';
8
8
  import { customElement, property, query, state } from 'lit/decorators.js';
9
+ import { classMap } from 'lit/directives/class-map.js';
10
+ import { ifDefined } from 'lit/directives/if-defined.js';
9
11
  import { live } from 'lit/directives/live.js';
10
12
  /**
11
13
  * A text field component that works with native browser forms.
@@ -60,6 +62,10 @@ let KRTextField = class KRTextField extends LitElement {
60
62
  this.hint = '';
61
63
  this._touched = false;
62
64
  this._dirty = false;
65
+ this._handleInvalid = (e) => {
66
+ e.preventDefault();
67
+ this._touched = true;
68
+ };
63
69
  this._internals = this.attachInternals();
64
70
  }
65
71
  // Form-associated custom element callbacks
@@ -91,11 +97,32 @@ let KRTextField = class KRTextField extends LitElement {
91
97
  formStateRestoreCallback(state) {
92
98
  this.value = state;
93
99
  }
100
+ connectedCallback() {
101
+ super.connectedCallback();
102
+ this.addEventListener('invalid', this._handleInvalid);
103
+ }
104
+ disconnectedCallback() {
105
+ super.disconnectedCallback();
106
+ this.removeEventListener('invalid', this._handleInvalid);
107
+ }
108
+ firstUpdated() {
109
+ this._updateValidity();
110
+ }
111
+ updated(changedProperties) {
112
+ if (changedProperties.has('required') || changedProperties.has('value')) {
113
+ this._updateValidity();
114
+ }
115
+ }
116
+ _updateValidity() {
117
+ if (this._input) {
118
+ this._internals.setValidity(this._input.validity, this._input.validationMessage);
119
+ }
120
+ }
94
121
  _handleInput(e) {
95
122
  this.value = e.target.value;
96
123
  this._dirty = true;
97
124
  this._internals.setFormValue(this.value);
98
- this._internals.setValidity(this._input.validity, this._input.validationMessage, this._input);
125
+ this._internals.setValidity(this._input.validity, this._input.validationMessage);
99
126
  }
100
127
  _handleChange(e) {
101
128
  this.value = e.target.value;
@@ -103,7 +130,7 @@ let KRTextField = class KRTextField extends LitElement {
103
130
  }
104
131
  _handleBlur() {
105
132
  this._touched = true;
106
- this._internals.setValidity(this._input.validity, this._input.validationMessage, this._input);
133
+ this._internals.setValidity(this._input.validity, this._input.validationMessage);
107
134
  }
108
135
  render() {
109
136
  let validationMessage = '';
@@ -122,6 +149,9 @@ let KRTextField = class KRTextField extends LitElement {
122
149
  : ''}
123
150
  <input
124
151
  id="input"
152
+ class=${classMap({
153
+ 'input--invalid': this._touched && this._input && !this._input.validity.valid
154
+ })}
125
155
  type=${this.type}
126
156
  name=${this.name}
127
157
  .value=${live(this.value)}
@@ -129,10 +159,10 @@ let KRTextField = class KRTextField extends LitElement {
129
159
  ?required=${this.required}
130
160
  ?disabled=${this.disabled}
131
161
  ?readonly=${this.readonly}
132
- minlength=${this.minlength ?? ''}
133
- maxlength=${this.maxlength ?? ''}
134
- pattern=${this.pattern ?? ''}
135
- autocomplete=${this.autocomplete}
162
+ minlength=${ifDefined(this.minlength)}
163
+ maxlength=${ifDefined(this.maxlength)}
164
+ pattern=${ifDefined(this.pattern)}
165
+ autocomplete=${ifDefined(this.autocomplete || undefined)}
136
166
  @input=${this._handleInput}
137
167
  @change=${this._handleChange}
138
168
  @blur=${this._handleBlur}
@@ -206,11 +236,11 @@ KRTextField.styles = css `
206
236
  color: var(--kr-text-field-placeholder-color, #9ca3af);
207
237
  }
208
238
 
209
- :host(:invalid) input {
239
+ input.input--invalid {
210
240
  border-color: var(--kr-text-field-error-border-color, #ef4444);
211
241
  }
212
242
 
213
- :host(:invalid) input:focus {
243
+ input.input--invalid:focus {
214
244
  box-shadow: 0 0 0 3px var(--kr-text-field-error-ring-color, rgba(239, 68, 68, 0.1));
215
245
  }
216
246
 
@@ -1 +1 @@
1
- {"version":3,"file":"text-field.js","sourceRoot":"","sources":["../../../src/form/text-field/text-field.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"text-field.js","sourceRoot":"","sources":["../../../src/form/text-field/text-field.ts"],"names":[],"mappings":"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"}