tyrell-components 1.0.0-TC44 → 1.0.0-TC46
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/dist/tyrell.js +1 -1
- package/lib/base/ty-component.d.ts +12 -7
- package/lib/base/ty-component.js +8 -139
- package/lib/components/button.d.ts +2 -16
- package/lib/components/button.js +0 -36
- package/lib/components/calendar-month.d.ts +2 -48
- package/lib/components/calendar-month.js +4 -166
- package/lib/components/calendar-navigation.d.ts +3 -48
- package/lib/components/calendar-navigation.js +3 -126
- package/lib/components/calendar.d.ts +3 -80
- package/lib/components/calendar.js +8 -230
- package/lib/components/checkbox.d.ts +4 -71
- package/lib/components/checkbox.js +7 -151
- package/lib/components/copy.d.ts +3 -56
- package/lib/components/copy.js +1 -120
- package/lib/components/date-picker.d.ts +10 -160
- package/lib/components/date-picker.js +31 -577
- package/lib/components/file-upload.d.ts +3 -15
- package/lib/components/file-upload.js +0 -37
- package/lib/components/icon.d.ts +3 -24
- package/lib/components/icon.js +1 -90
- package/lib/components/input.d.ts +7 -107
- package/lib/components/input.js +4 -193
- package/lib/components/modal.d.ts +3 -26
- package/lib/components/modal.js +1 -188
- package/lib/components/option.d.ts +2 -9
- package/lib/components/option.js +0 -48
- package/lib/components/popup.d.ts +2 -17
- package/lib/components/popup.js +3 -130
- package/lib/components/radio.d.ts +3 -23
- package/lib/components/radio.js +0 -63
- package/lib/components/resize-observer.d.ts +2 -30
- package/lib/components/resize-observer.js +0 -45
- package/lib/components/scroll-container.d.ts +2 -12
- package/lib/components/scroll-container.js +3 -46
- package/lib/components/select.d.ts +43 -150
- package/lib/components/select.js +68 -558
- package/lib/components/selected-tags.d.ts +4 -47
- package/lib/components/selected-tags.js +0 -94
- package/lib/components/step.d.ts +1 -6
- package/lib/components/step.js +0 -6
- package/lib/components/switch.d.ts +0 -11
- package/lib/components/switch.js +2 -36
- package/lib/components/tab.d.ts +1 -6
- package/lib/components/tab.js +0 -7
- package/lib/components/tabs.d.ts +3 -63
- package/lib/components/tabs.js +2 -282
- package/lib/components/tag.d.ts +2 -36
- package/lib/components/tag.js +5 -105
- package/lib/components/textarea.d.ts +6 -86
- package/lib/components/textarea.js +2 -173
- package/lib/components/tooltip.d.ts +3 -11
- package/lib/components/tooltip.js +0 -154
- package/lib/components/wizard.d.ts +4 -54
- package/lib/components/wizard.js +0 -228
- package/lib/icons/fontawesome/brands.d.ts +0 -1
- package/lib/icons/fontawesome/brands.js +0 -8
- package/lib/icons/fontawesome/regular.d.ts +0 -1
- package/lib/icons/fontawesome/regular.js +0 -8
- package/lib/icons/fontawesome/solid.d.ts +0 -1
- package/lib/icons/fontawesome/solid.js +0 -8
- package/lib/icons/heroicons/micro.d.ts +0 -1
- package/lib/icons/heroicons/micro.js +0 -8
- package/lib/icons/heroicons/mini.d.ts +0 -1
- package/lib/icons/heroicons/mini.js +0 -8
- package/lib/icons/heroicons/outline.d.ts +0 -1
- package/lib/icons/heroicons/outline.js +0 -8
- package/lib/icons/heroicons/solid.d.ts +0 -1
- package/lib/icons/heroicons/solid.js +0 -8
- package/lib/icons/lucide.d.ts +0 -1
- package/lib/icons/lucide.js +0 -1872
- package/lib/icons/material/filled.d.ts +0 -1
- package/lib/icons/material/filled.js +0 -10
- package/lib/icons/material/outlined.d.ts +0 -1
- package/lib/icons/material/outlined.js +0 -10
- package/lib/icons/material/round.d.ts +0 -1
- package/lib/icons/material/round.js +0 -10
- package/lib/icons/material/sharp.d.ts +0 -1
- package/lib/icons/material/sharp.js +0 -10
- package/lib/icons/material/two-tone.d.ts +0 -1
- package/lib/icons/material/two-tone.js +0 -10
- package/lib/index.d.ts +0 -1
- package/lib/index.js +0 -20
- package/lib/styles/button.d.ts +2 -20
- package/lib/styles/button.js +13 -120
- package/lib/styles/calendar-month.d.ts +1 -5
- package/lib/styles/calendar-month.js +3 -60
- package/lib/styles/calendar-navigation.d.ts +2 -6
- package/lib/styles/calendar-navigation.js +1 -26
- package/lib/styles/calendar.d.ts +1 -2
- package/lib/styles/calendar.js +0 -13
- package/lib/styles/checkbox.d.ts +0 -1
- package/lib/styles/checkbox.js +1 -23
- package/lib/styles/copy.d.ts +0 -1
- package/lib/styles/copy.js +2 -17
- package/lib/styles/custom-scrollbar.d.ts +1 -2
- package/lib/styles/custom-scrollbar.js +3 -18
- package/lib/styles/date-picker.d.ts +1 -5
- package/lib/styles/date-picker.js +5 -35
- package/lib/styles/file-upload.d.ts +1 -2
- package/lib/styles/file-upload.js +0 -15
- package/lib/styles/icon.d.ts +2 -6
- package/lib/styles/icon.js +1 -26
- package/lib/styles/input.d.ts +1 -6
- package/lib/styles/input.js +3 -53
- package/lib/styles/modal.d.ts +1 -2
- package/lib/styles/modal.js +3 -23
- package/lib/styles/option.d.ts +2 -6
- package/lib/styles/option.js +1 -11
- package/lib/styles/popup.d.ts +1 -2
- package/lib/styles/popup.js +4 -25
- package/lib/styles/radio.d.ts +0 -1
- package/lib/styles/radio.js +1 -15
- package/lib/styles/resize-observer.d.ts +1 -2
- package/lib/styles/resize-observer.js +0 -7
- package/lib/styles/scroll-container.d.ts +1 -2
- package/lib/styles/scroll-container.js +0 -19
- package/lib/styles/select-base.d.ts +0 -1
- package/lib/styles/select-base.js +9 -70
- package/lib/styles/select.d.ts +1 -2
- package/lib/styles/select.js +50 -18
- package/lib/styles/step.d.ts +1 -2
- package/lib/styles/step.js +0 -4
- package/lib/styles/switch.d.ts +0 -1
- package/lib/styles/switch.js +2 -20
- package/lib/styles/tab.d.ts +1 -2
- package/lib/styles/tab.js +0 -5
- package/lib/styles/tabs.d.ts +3 -11
- package/lib/styles/tabs.js +4 -47
- package/lib/styles/tag.d.ts +1 -5
- package/lib/styles/tag.js +2 -31
- package/lib/styles/textarea.d.ts +1 -2
- package/lib/styles/textarea.js +0 -44
- package/lib/styles/tooltip.d.ts +0 -1
- package/lib/styles/tooltip.js +0 -10
- package/lib/styles/wizard.d.ts +5 -21
- package/lib/styles/wizard.js +5 -85
- package/lib/types/common.d.ts +0 -2
- package/lib/types/common.js +0 -12
- package/lib/utils/calendar-utils.d.ts +4 -21
- package/lib/utils/calendar-utils.js +4 -177
- package/lib/utils/custom-scrollbar.d.ts +6 -20
- package/lib/utils/custom-scrollbar.js +1 -45
- package/lib/utils/flavor-sheet.d.ts +0 -1
- package/lib/utils/flavor-sheet.js +0 -23
- package/lib/utils/icon-registry.d.ts +0 -2
- package/lib/utils/icon-registry.js +1 -107
- package/lib/utils/icons.d.ts +0 -1
- package/lib/utils/icons.js +0 -9
- package/lib/utils/loader-registry.d.ts +0 -1
- package/lib/utils/loader-registry.js +0 -32
- package/lib/utils/locale.d.ts +2 -23
- package/lib/utils/locale.js +0 -86
- package/lib/utils/mobile.d.ts +0 -1
- package/lib/utils/mobile.js +0 -17
- package/lib/utils/number-format.d.ts +0 -2
- package/lib/utils/number-format.js +2 -65
- package/lib/utils/positioning.d.ts +4 -2
- package/lib/utils/positioning.js +2 -54
- package/lib/utils/property-capture.d.ts +5 -27
- package/lib/utils/property-capture.js +0 -108
- package/lib/utils/property-manager.d.ts +0 -1
- package/lib/utils/property-manager.js +0 -70
- package/lib/utils/resize-observer.d.ts +0 -1
- package/lib/utils/resize-observer.js +0 -36
- package/lib/utils/scroll-lock.d.ts +4 -11
- package/lib/utils/scroll-lock.js +0 -107
- package/lib/utils/styles.d.ts +0 -1
- package/lib/utils/styles.js +0 -24
- package/lib/version.d.ts +1 -2
- package/lib/version.js +1 -11
- package/package.json +2 -2
- package/lib/base/ty-component.d.ts.map +0 -1
- package/lib/base/ty-component.js.map +0 -1
- package/lib/components/button.d.ts.map +0 -1
- package/lib/components/button.js.map +0 -1
- package/lib/components/calendar-month.d.ts.map +0 -1
- package/lib/components/calendar-month.js.map +0 -1
- package/lib/components/calendar-navigation.d.ts.map +0 -1
- package/lib/components/calendar-navigation.js.map +0 -1
- package/lib/components/calendar.d.ts.map +0 -1
- package/lib/components/calendar.js.map +0 -1
- package/lib/components/checkbox.d.ts.map +0 -1
- package/lib/components/checkbox.js.map +0 -1
- package/lib/components/copy.d.ts.map +0 -1
- package/lib/components/copy.js.map +0 -1
- package/lib/components/date-picker.d.ts.map +0 -1
- package/lib/components/date-picker.js.map +0 -1
- package/lib/components/file-upload.d.ts.map +0 -1
- package/lib/components/file-upload.js.map +0 -1
- package/lib/components/icon.d.ts.map +0 -1
- package/lib/components/icon.js.map +0 -1
- package/lib/components/input.d.ts.map +0 -1
- package/lib/components/input.js.map +0 -1
- package/lib/components/modal.d.ts.map +0 -1
- package/lib/components/modal.js.map +0 -1
- package/lib/components/option.d.ts.map +0 -1
- package/lib/components/option.js.map +0 -1
- package/lib/components/popup.d.ts.map +0 -1
- package/lib/components/popup.js.map +0 -1
- package/lib/components/radio.d.ts.map +0 -1
- package/lib/components/radio.js.map +0 -1
- package/lib/components/resize-observer.d.ts.map +0 -1
- package/lib/components/resize-observer.js.map +0 -1
- package/lib/components/scroll-container.d.ts.map +0 -1
- package/lib/components/scroll-container.js.map +0 -1
- package/lib/components/select.d.ts.map +0 -1
- package/lib/components/select.js.map +0 -1
- package/lib/components/selected-tags.d.ts.map +0 -1
- package/lib/components/selected-tags.js.map +0 -1
- package/lib/components/step.d.ts.map +0 -1
- package/lib/components/step.js.map +0 -1
- package/lib/components/switch.d.ts.map +0 -1
- package/lib/components/switch.js.map +0 -1
- package/lib/components/tab.d.ts.map +0 -1
- package/lib/components/tab.js.map +0 -1
- package/lib/components/tabs.d.ts.map +0 -1
- package/lib/components/tabs.js.map +0 -1
- package/lib/components/tag.d.ts.map +0 -1
- package/lib/components/tag.js.map +0 -1
- package/lib/components/textarea.d.ts.map +0 -1
- package/lib/components/textarea.js.map +0 -1
- package/lib/components/tooltip.d.ts.map +0 -1
- package/lib/components/tooltip.js.map +0 -1
- package/lib/components/wizard.d.ts.map +0 -1
- package/lib/components/wizard.js.map +0 -1
- package/lib/icons/fontawesome/brands.d.ts.map +0 -1
- package/lib/icons/fontawesome/brands.js.map +0 -1
- package/lib/icons/fontawesome/regular.d.ts.map +0 -1
- package/lib/icons/fontawesome/regular.js.map +0 -1
- package/lib/icons/fontawesome/solid.d.ts.map +0 -1
- package/lib/icons/fontawesome/solid.js.map +0 -1
- package/lib/icons/heroicons/micro.d.ts.map +0 -1
- package/lib/icons/heroicons/micro.js.map +0 -1
- package/lib/icons/heroicons/mini.d.ts.map +0 -1
- package/lib/icons/heroicons/mini.js.map +0 -1
- package/lib/icons/heroicons/outline.d.ts.map +0 -1
- package/lib/icons/heroicons/outline.js.map +0 -1
- package/lib/icons/heroicons/solid.d.ts.map +0 -1
- package/lib/icons/heroicons/solid.js.map +0 -1
- package/lib/icons/lucide.d.ts.map +0 -1
- package/lib/icons/lucide.js.map +0 -1
- package/lib/icons/material/filled.d.ts.map +0 -1
- package/lib/icons/material/filled.js.map +0 -1
- package/lib/icons/material/outlined.d.ts.map +0 -1
- package/lib/icons/material/outlined.js.map +0 -1
- package/lib/icons/material/round.d.ts.map +0 -1
- package/lib/icons/material/round.js.map +0 -1
- package/lib/icons/material/sharp.d.ts.map +0 -1
- package/lib/icons/material/sharp.js.map +0 -1
- package/lib/icons/material/two-tone.d.ts.map +0 -1
- package/lib/icons/material/two-tone.js.map +0 -1
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js.map +0 -1
- package/lib/styles/button.d.ts.map +0 -1
- package/lib/styles/button.js.map +0 -1
- package/lib/styles/calendar-month.d.ts.map +0 -1
- package/lib/styles/calendar-month.js.map +0 -1
- package/lib/styles/calendar-navigation.d.ts.map +0 -1
- package/lib/styles/calendar-navigation.js.map +0 -1
- package/lib/styles/calendar.d.ts.map +0 -1
- package/lib/styles/calendar.js.map +0 -1
- package/lib/styles/checkbox.d.ts.map +0 -1
- package/lib/styles/checkbox.js.map +0 -1
- package/lib/styles/copy.d.ts.map +0 -1
- package/lib/styles/copy.js.map +0 -1
- package/lib/styles/custom-scrollbar.d.ts.map +0 -1
- package/lib/styles/custom-scrollbar.js.map +0 -1
- package/lib/styles/date-picker.d.ts.map +0 -1
- package/lib/styles/date-picker.js.map +0 -1
- package/lib/styles/file-upload.d.ts.map +0 -1
- package/lib/styles/file-upload.js.map +0 -1
- package/lib/styles/icon.d.ts.map +0 -1
- package/lib/styles/icon.js.map +0 -1
- package/lib/styles/input.d.ts.map +0 -1
- package/lib/styles/input.js.map +0 -1
- package/lib/styles/modal.d.ts.map +0 -1
- package/lib/styles/modal.js.map +0 -1
- package/lib/styles/multiselect.d.ts +0 -8
- package/lib/styles/multiselect.d.ts.map +0 -1
- package/lib/styles/multiselect.js +0 -849
- package/lib/styles/multiselect.js.map +0 -1
- package/lib/styles/option.d.ts.map +0 -1
- package/lib/styles/option.js.map +0 -1
- package/lib/styles/popup.d.ts.map +0 -1
- package/lib/styles/popup.js.map +0 -1
- package/lib/styles/radio.d.ts.map +0 -1
- package/lib/styles/radio.js.map +0 -1
- package/lib/styles/resize-observer.d.ts.map +0 -1
- package/lib/styles/resize-observer.js.map +0 -1
- package/lib/styles/scroll-container.d.ts.map +0 -1
- package/lib/styles/scroll-container.js.map +0 -1
- package/lib/styles/select-base.d.ts.map +0 -1
- package/lib/styles/select-base.js.map +0 -1
- package/lib/styles/select.d.ts.map +0 -1
- package/lib/styles/select.js.map +0 -1
- package/lib/styles/step.d.ts.map +0 -1
- package/lib/styles/step.js.map +0 -1
- package/lib/styles/switch.d.ts.map +0 -1
- package/lib/styles/switch.js.map +0 -1
- package/lib/styles/tab.d.ts.map +0 -1
- package/lib/styles/tab.js.map +0 -1
- package/lib/styles/tabs.d.ts.map +0 -1
- package/lib/styles/tabs.js.map +0 -1
- package/lib/styles/tag.d.ts.map +0 -1
- package/lib/styles/tag.js.map +0 -1
- package/lib/styles/textarea.d.ts.map +0 -1
- package/lib/styles/textarea.js.map +0 -1
- package/lib/styles/tooltip.d.ts.map +0 -1
- package/lib/styles/tooltip.js.map +0 -1
- package/lib/styles/wizard.d.ts.map +0 -1
- package/lib/styles/wizard.js.map +0 -1
- package/lib/types/common.d.ts.map +0 -1
- package/lib/types/common.js.map +0 -1
- package/lib/utils/calendar-utils.d.ts.map +0 -1
- package/lib/utils/calendar-utils.js.map +0 -1
- package/lib/utils/custom-scrollbar.d.ts.map +0 -1
- package/lib/utils/custom-scrollbar.js.map +0 -1
- package/lib/utils/flavor-sheet.d.ts.map +0 -1
- package/lib/utils/flavor-sheet.js.map +0 -1
- package/lib/utils/icon-registry.d.ts.map +0 -1
- package/lib/utils/icon-registry.js.map +0 -1
- package/lib/utils/icons.d.ts.map +0 -1
- package/lib/utils/icons.js.map +0 -1
- package/lib/utils/loader-registry.d.ts.map +0 -1
- package/lib/utils/loader-registry.js.map +0 -1
- package/lib/utils/locale.d.ts.map +0 -1
- package/lib/utils/locale.js.map +0 -1
- package/lib/utils/mobile.d.ts.map +0 -1
- package/lib/utils/mobile.js.map +0 -1
- package/lib/utils/number-format.d.ts.map +0 -1
- package/lib/utils/number-format.js.map +0 -1
- package/lib/utils/parse-boolean.d.ts +0 -39
- package/lib/utils/parse-boolean.d.ts.map +0 -1
- package/lib/utils/parse-boolean.js +0 -58
- package/lib/utils/parse-boolean.js.map +0 -1
- package/lib/utils/positioning.d.ts.map +0 -1
- package/lib/utils/positioning.js.map +0 -1
- package/lib/utils/property-capture.d.ts.map +0 -1
- package/lib/utils/property-capture.js.map +0 -1
- package/lib/utils/property-manager.d.ts.map +0 -1
- package/lib/utils/property-manager.js.map +0 -1
- package/lib/utils/resize-observer.d.ts.map +0 -1
- package/lib/utils/resize-observer.js.map +0 -1
- package/lib/utils/scroll-lock.d.ts.map +0 -1
- package/lib/utils/scroll-lock.js.map +0 -1
- package/lib/utils/styles.d.ts.map +0 -1
- package/lib/utils/styles.js.map +0 -1
- package/lib/version.d.ts.map +0 -1
- package/lib/version.js.map +0 -1
|
@@ -1,18 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* TyFileUpload Web Component
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* a styleable, drag-and-drop-capable equivalent that works everywhere.
|
|
6
|
-
*
|
|
7
|
-
* - Click to browse or drag-and-drop
|
|
8
|
-
* - Multiple file support
|
|
9
|
-
* - Accept filter passed to the underlying file input
|
|
10
|
-
* - Emits `change` with `{ files, names }` on every selection
|
|
11
|
-
* - Form-associated: participates in FormData and form.reset()
|
|
12
|
-
*
|
|
13
|
-
* @example
|
|
14
|
-
* <ty-file-upload name="avatar" accept="image/*" label="Profile photo"></ty-file-upload>
|
|
15
|
-
* <ty-file-upload name="docs" multiple accept=".pdf,.docx" label="Attachments"></ty-file-upload>
|
|
2
|
+
* TyFileUpload Web Component — drop zone + file picker primitive. Replaces
|
|
3
|
+
* `<input type="file">` with a styleable, drag-and-drop-capable equivalent.
|
|
4
|
+
* Form-associated: participates in FormData and form.reset().
|
|
16
5
|
*/
|
|
17
6
|
import { TyComponent } from "../base/ty-component.js";
|
|
18
7
|
import type { PropertyChange } from "../utils/property-manager.js";
|
|
@@ -118,4 +107,3 @@ export declare class TyFileUpload extends TyComponent<FileUploadState> implement
|
|
|
118
107
|
protected render(): void;
|
|
119
108
|
}
|
|
120
109
|
export {};
|
|
121
|
-
//# sourceMappingURL=file-upload.d.ts.map
|
|
@@ -1,19 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TyFileUpload Web Component
|
|
3
|
-
*
|
|
4
|
-
* Drop zone + file picker primitive. Replaces `<input type="file">` with
|
|
5
|
-
* a styleable, drag-and-drop-capable equivalent that works everywhere.
|
|
6
|
-
*
|
|
7
|
-
* - Click to browse or drag-and-drop
|
|
8
|
-
* - Multiple file support
|
|
9
|
-
* - Accept filter passed to the underlying file input
|
|
10
|
-
* - Emits `change` with `{ files, names }` on every selection
|
|
11
|
-
* - Form-associated: participates in FormData and form.reset()
|
|
12
|
-
*
|
|
13
|
-
* @example
|
|
14
|
-
* <ty-file-upload name="avatar" accept="image/*" label="Profile photo"></ty-file-upload>
|
|
15
|
-
* <ty-file-upload name="docs" multiple accept=".pdf,.docx" label="Attachments"></ty-file-upload>
|
|
16
|
-
*/
|
|
17
1
|
import { TyComponent } from "../base/ty-component.js";
|
|
18
2
|
import { ensureStyles } from "../utils/styles.js";
|
|
19
3
|
import { fileUploadStyles } from "../styles/file-upload.js";
|
|
@@ -69,9 +53,6 @@ export class TyFileUpload extends TyComponent {
|
|
|
69
53
|
}
|
|
70
54
|
return fd;
|
|
71
55
|
}
|
|
72
|
-
// ============================================================================
|
|
73
|
-
// PUBLIC API
|
|
74
|
-
// ============================================================================
|
|
75
56
|
get files() {
|
|
76
57
|
return [...this._files];
|
|
77
58
|
}
|
|
@@ -126,9 +107,6 @@ export class TyFileUpload extends TyComponent {
|
|
|
126
107
|
get form() {
|
|
127
108
|
return this._internals.form;
|
|
128
109
|
}
|
|
129
|
-
// ============================================================================
|
|
130
|
-
// INTERNAL FILE MANAGEMENT
|
|
131
|
-
// ============================================================================
|
|
132
110
|
setFiles(newFiles) {
|
|
133
111
|
this._files = this.multiple ? newFiles : newFiles.slice(0, 1);
|
|
134
112
|
this.updateFormValue();
|
|
@@ -150,9 +128,6 @@ export class TyFileUpload extends TyComponent {
|
|
|
150
128
|
if (fileInput)
|
|
151
129
|
fileInput.value = "";
|
|
152
130
|
}
|
|
153
|
-
// ============================================================================
|
|
154
|
-
// EVENT LISTENERS
|
|
155
|
-
// ============================================================================
|
|
156
131
|
setupEventListeners() {
|
|
157
132
|
if (this._listenersSetup)
|
|
158
133
|
return;
|
|
@@ -251,9 +226,6 @@ export class TyFileUpload extends TyComponent {
|
|
|
251
226
|
fileInput.removeEventListener("change", this._inputChangeHandler);
|
|
252
227
|
this._listenersSetup = false;
|
|
253
228
|
}
|
|
254
|
-
// ============================================================================
|
|
255
|
-
// RENDERING
|
|
256
|
-
// ============================================================================
|
|
257
229
|
buildDropZoneClasses() {
|
|
258
230
|
const classes = ["drop-zone"];
|
|
259
231
|
if (this._isDragging)
|
|
@@ -336,7 +308,6 @@ export class TyFileUpload extends TyComponent {
|
|
|
336
308
|
shadow.appendChild(container);
|
|
337
309
|
this.setupEventListeners();
|
|
338
310
|
}
|
|
339
|
-
// Label
|
|
340
311
|
const labelEl = container.querySelector(".upload-label");
|
|
341
312
|
if (this.label) {
|
|
342
313
|
labelEl.style.display = "";
|
|
@@ -353,21 +324,17 @@ export class TyFileUpload extends TyComponent {
|
|
|
353
324
|
else {
|
|
354
325
|
labelEl.style.display = "none";
|
|
355
326
|
}
|
|
356
|
-
// Drop zone
|
|
357
327
|
const dropZone = container.querySelector(".drop-zone");
|
|
358
328
|
dropZone.className = this.buildDropZoneClasses();
|
|
359
329
|
dropZone.tabIndex = this.disabled ? -1 : 0;
|
|
360
330
|
dropZone.setAttribute("aria-disabled", String(this.disabled));
|
|
361
331
|
dropZone.setAttribute("aria-label", this.placeholder || "Upload files");
|
|
362
|
-
// File input
|
|
363
332
|
const fileInput = container.querySelector(".file-input");
|
|
364
333
|
fileInput.multiple = this.multiple;
|
|
365
334
|
fileInput.accept = this.accept;
|
|
366
335
|
fileInput.disabled = this.disabled;
|
|
367
|
-
// Upload icon — hide once files are selected to give room to the compact zone
|
|
368
336
|
const uploadIcon = container.querySelector(".upload-icon");
|
|
369
337
|
uploadIcon.style.display = this._files.length > 0 ? "none" : "";
|
|
370
|
-
// Hint text
|
|
371
338
|
const hintEl = container.querySelector(".upload-hint");
|
|
372
339
|
if (this._files.length > 0) {
|
|
373
340
|
hintEl.innerHTML = `<strong>${this._files.length} file${this._files.length !== 1 ? "s" : ""} selected</strong>`;
|
|
@@ -375,7 +342,6 @@ export class TyFileUpload extends TyComponent {
|
|
|
375
342
|
else {
|
|
376
343
|
hintEl.innerHTML = `Drop files here or <span class="browse-link">click to browse</span>`;
|
|
377
344
|
}
|
|
378
|
-
// Sub-hint
|
|
379
345
|
const subHintEl = container.querySelector(".upload-sub-hint");
|
|
380
346
|
if (this.accept && this._files.length === 0) {
|
|
381
347
|
subHintEl.textContent = `Accepted: ${this.accept}`;
|
|
@@ -384,10 +350,8 @@ export class TyFileUpload extends TyComponent {
|
|
|
384
350
|
else {
|
|
385
351
|
subHintEl.style.display = "none";
|
|
386
352
|
}
|
|
387
|
-
// File list
|
|
388
353
|
const fileList = container.querySelector(".file-list");
|
|
389
354
|
this.renderFileList(fileList);
|
|
390
|
-
// Error message
|
|
391
355
|
const errorEl = container.querySelector(".error-message");
|
|
392
356
|
errorEl.textContent = this.error;
|
|
393
357
|
errorEl.style.display = this.error ? "" : "none";
|
|
@@ -438,4 +402,3 @@ TyFileUpload.properties = {
|
|
|
438
402
|
if (!customElements.get("ty-file-upload")) {
|
|
439
403
|
customElements.define("ty-file-upload", TyFileUpload);
|
|
440
404
|
}
|
|
441
|
-
//# sourceMappingURL=file-upload.js.map
|
package/lib/components/icon.d.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* TyIcon Web Component
|
|
3
|
-
* PORTED FROM: clj/ty/components/icon.cljs
|
|
4
|
-
* SVG icon component with size variants and animations
|
|
2
|
+
* TyIcon Web Component — SVG icon with size variants and animations.
|
|
5
3
|
*/
|
|
6
4
|
import type { IconSize, IconTempo, TyIconElement } from '../types/common.js';
|
|
7
5
|
import { TyComponent } from '../base/ty-component.js';
|
|
@@ -19,13 +17,6 @@ interface IconState {
|
|
|
19
17
|
}
|
|
20
18
|
/**
|
|
21
19
|
* Ty Icon Component
|
|
22
|
-
*
|
|
23
|
-
* @example
|
|
24
|
-
* ```html
|
|
25
|
-
* <ty-icon name="check"></ty-icon>
|
|
26
|
-
* <ty-icon name="spinner" spin></ty-icon>
|
|
27
|
-
* <ty-icon name="heart" size="xl"></ty-icon>
|
|
28
|
-
* ```
|
|
29
20
|
*/
|
|
30
21
|
export declare class TyIcon extends TyComponent<IconState> implements TyIconElement {
|
|
31
22
|
static formAssociated: boolean;
|
|
@@ -69,13 +60,7 @@ export declare class TyIcon extends TyComponent<IconState> implements TyIconElem
|
|
|
69
60
|
*/
|
|
70
61
|
private _slot;
|
|
71
62
|
constructor();
|
|
72
|
-
/**
|
|
73
|
-
* Called when component connects to DOM
|
|
74
|
-
*/
|
|
75
63
|
protected onConnect(): void;
|
|
76
|
-
/**
|
|
77
|
-
* Called when component disconnects from DOM
|
|
78
|
-
*/
|
|
79
64
|
protected onDisconnect(): void;
|
|
80
65
|
/**
|
|
81
66
|
* Handle property changes - called BEFORE render
|
|
@@ -97,13 +82,8 @@ export declare class TyIcon extends TyComponent<IconState> implements TyIconElem
|
|
|
97
82
|
/** Update host element classes */
|
|
98
83
|
private updateClasses;
|
|
99
84
|
/**
|
|
100
|
-
* Render the icon SVG
|
|
101
|
-
*
|
|
102
|
-
* 1. Check memory registry (instant)
|
|
103
|
-
* 2. If found in memory -> render immediately
|
|
104
|
-
* 3. If not in memory -> show NOT_FOUND_ICON immediately (prevents empty state)
|
|
105
|
-
* 4. Then check cache asynchronously and replace if found
|
|
106
|
-
* 5. Only re-render if SVG actually changed
|
|
85
|
+
* Render the icon SVG. Unknown/unset names fall back to NOT_FOUND_ICON
|
|
86
|
+
* immediately rather than rendering nothing (prevents layout shift).
|
|
107
87
|
*/
|
|
108
88
|
protected render(): void;
|
|
109
89
|
/**
|
|
@@ -115,4 +95,3 @@ export declare class TyIcon extends TyComponent<IconState> implements TyIconElem
|
|
|
115
95
|
private renderSvg;
|
|
116
96
|
}
|
|
117
97
|
export { IconRegistry };
|
|
118
|
-
//# sourceMappingURL=icon.d.ts.map
|
package/lib/components/icon.js
CHANGED
|
@@ -1,101 +1,49 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TyIcon Web Component
|
|
3
|
-
* PORTED FROM: clj/ty/components/icon.cljs
|
|
4
|
-
* SVG icon component with size variants and animations
|
|
5
|
-
*/
|
|
6
1
|
import { TyComponent } from '../base/ty-component.js';
|
|
7
2
|
import { ensureStyles } from '../utils/styles.js';
|
|
8
3
|
import { iconStyles } from '../styles/icon.js';
|
|
9
4
|
import * as IconRegistry from '../utils/icon-registry.js';
|
|
10
5
|
let _iconIdCounter = 0;
|
|
11
|
-
/** Fallback SVG for missing icons - More visible to prevent layout shift */
|
|
12
6
|
const NOT_FOUND_ICON = `<svg xmlns="http://www.w3.org/2000/svg"
|
|
13
7
|
viewBox="0 0 512 512"
|
|
14
8
|
fill="currentColor"
|
|
15
9
|
opacity="0.2">
|
|
16
10
|
<path d="M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512z"/>
|
|
17
11
|
</svg>`;
|
|
18
|
-
/**
|
|
19
|
-
* Ty Icon Component
|
|
20
|
-
*
|
|
21
|
-
* @example
|
|
22
|
-
* ```html
|
|
23
|
-
* <ty-icon name="check"></ty-icon>
|
|
24
|
-
* <ty-icon name="spinner" spin></ty-icon>
|
|
25
|
-
* <ty-icon name="heart" size="xl"></ty-icon>
|
|
26
|
-
* ```
|
|
27
|
-
*/
|
|
28
12
|
export class TyIcon extends TyComponent {
|
|
29
13
|
constructor() {
|
|
30
|
-
super();
|
|
31
|
-
// ============================================================================
|
|
32
|
-
// INTERNAL STATE - Not managed by PropertyManager
|
|
33
|
-
// ============================================================================
|
|
14
|
+
super();
|
|
34
15
|
this._watchId = null;
|
|
35
|
-
/** Track currently rendered SVG to avoid unnecessary re-renders */
|
|
36
16
|
this._currentSvg = '';
|
|
37
|
-
/**
|
|
38
|
-
* Single shadow-DOM <slot> that holds either:
|
|
39
|
-
* - light-DOM children supplied by the user (server-side path: pasted SVG), or
|
|
40
|
-
* - fallback content driven by the registry (`name=`) or NOT_FOUND_ICON.
|
|
41
|
-
*
|
|
42
|
-
* Browser slot semantics handle precedence: when the host has assigned nodes,
|
|
43
|
-
* the slot's fallback content is hidden automatically — no detection logic needed.
|
|
44
|
-
*/
|
|
45
17
|
this._slot = null;
|
|
46
|
-
// Apply styles to shadow root
|
|
47
18
|
ensureStyles(this.shadowRoot, { css: iconStyles, id: 'ty-icon' });
|
|
48
|
-
// Build the slot once. Fallback content shows when no light-DOM children are slotted.
|
|
49
19
|
this._slot = document.createElement('slot');
|
|
50
20
|
this._slot.innerHTML = NOT_FOUND_ICON;
|
|
51
21
|
this._currentSvg = NOT_FOUND_ICON;
|
|
52
22
|
this.shadowRoot.appendChild(this._slot);
|
|
53
23
|
}
|
|
54
|
-
// observedAttributes auto-generated by TyComponent from properties config
|
|
55
|
-
// ============================================================================
|
|
56
|
-
// TYCOMPONENT LIFECYCLE HOOKS
|
|
57
|
-
// ============================================================================
|
|
58
|
-
/**
|
|
59
|
-
* Called when component connects to DOM
|
|
60
|
-
*/
|
|
61
24
|
onConnect() {
|
|
62
|
-
// Generate unique watch ID
|
|
63
25
|
this._watchId = `ty-icon-${++_iconIdCounter}`;
|
|
64
|
-
// Watch for registry changes that affect this icon
|
|
65
26
|
if (this.name) {
|
|
66
27
|
IconRegistry.addWatcher(this._watchId, this.name, (changedIcons) => {
|
|
67
|
-
// Re-render if our icon changed
|
|
68
28
|
if (this.name && changedIcons.has(this.name)) {
|
|
69
29
|
this.render();
|
|
70
30
|
}
|
|
71
31
|
});
|
|
72
32
|
}
|
|
73
|
-
// Update host element classes
|
|
74
33
|
this.updateClasses();
|
|
75
|
-
// TyComponent will call render() automatically after this hook
|
|
76
34
|
}
|
|
77
|
-
/**
|
|
78
|
-
* Called when component disconnects from DOM
|
|
79
|
-
*/
|
|
80
35
|
onDisconnect() {
|
|
81
|
-
// Clean up watcher
|
|
82
36
|
if (this._watchId) {
|
|
83
37
|
IconRegistry.removeWatcher(this._watchId);
|
|
84
38
|
this._watchId = null;
|
|
85
39
|
}
|
|
86
40
|
}
|
|
87
|
-
/**
|
|
88
|
-
* Handle property changes - called BEFORE render
|
|
89
|
-
* Detects name changes to update icon registry watcher
|
|
90
|
-
*/
|
|
91
41
|
onPropertiesChanged(changes) {
|
|
92
42
|
for (const change of changes) {
|
|
93
43
|
if (change.name === 'name') {
|
|
94
|
-
// Remove old watcher
|
|
95
44
|
if (this._watchId) {
|
|
96
45
|
IconRegistry.removeWatcher(this._watchId);
|
|
97
46
|
}
|
|
98
|
-
// Re-add watcher for new name
|
|
99
47
|
const newName = change.newValue || '';
|
|
100
48
|
if (newName && this.isConnected) {
|
|
101
49
|
this._watchId = `ty-icon-${++_iconIdCounter}`;
|
|
@@ -107,12 +55,8 @@ export class TyIcon extends TyComponent {
|
|
|
107
55
|
}
|
|
108
56
|
}
|
|
109
57
|
}
|
|
110
|
-
// Update host element classes for any visual change
|
|
111
58
|
this.updateClasses();
|
|
112
59
|
}
|
|
113
|
-
// ============================================================================
|
|
114
|
-
// PROPERTY ACCESSORS - Simple wrappers (no logic!)
|
|
115
|
-
// ============================================================================
|
|
116
60
|
get name() {
|
|
117
61
|
return this.getProperty('name');
|
|
118
62
|
}
|
|
@@ -145,32 +89,23 @@ export class TyIcon extends TyComponent {
|
|
|
145
89
|
set tempo(value) {
|
|
146
90
|
this.setProperty('tempo', value || '');
|
|
147
91
|
}
|
|
148
|
-
// ============================================================================
|
|
149
|
-
// RENDERING
|
|
150
|
-
// ============================================================================
|
|
151
|
-
/** Build CSS classes for the host element */
|
|
152
92
|
buildClasses() {
|
|
153
93
|
const classes = [];
|
|
154
|
-
// Size class
|
|
155
94
|
const size = this.getProperty('size');
|
|
156
95
|
if (size) {
|
|
157
96
|
classes.push(`icon-${size}`);
|
|
158
97
|
}
|
|
159
|
-
// Animation classes
|
|
160
98
|
if (this.getProperty('spin')) {
|
|
161
99
|
classes.push('icon-spin');
|
|
162
100
|
}
|
|
163
101
|
if (this.getProperty('pulse')) {
|
|
164
102
|
classes.push('icon-pulse');
|
|
165
103
|
}
|
|
166
|
-
// Tempo class
|
|
167
104
|
const tempo = this.getProperty('tempo');
|
|
168
105
|
if (tempo && (this.getProperty('spin') || this.getProperty('pulse'))) {
|
|
169
106
|
classes.push(`icon-tempo-${tempo}`);
|
|
170
107
|
}
|
|
171
|
-
// Preserve user-added classes that don't conflict
|
|
172
108
|
const currentClasses = this.className.split(/\s+/).filter(cls => {
|
|
173
|
-
// Filter out component-managed classes
|
|
174
109
|
return cls &&
|
|
175
110
|
!cls.startsWith('icon-') &&
|
|
176
111
|
cls !== 'icon-spin' &&
|
|
@@ -178,29 +113,18 @@ export class TyIcon extends TyComponent {
|
|
|
178
113
|
});
|
|
179
114
|
return [...classes, ...currentClasses];
|
|
180
115
|
}
|
|
181
|
-
/** Update host element classes */
|
|
182
116
|
updateClasses() {
|
|
183
117
|
const newClasses = this.buildClasses().join(' ');
|
|
184
118
|
if (this.className !== newClasses) {
|
|
185
119
|
this.className = newClasses;
|
|
186
120
|
}
|
|
187
121
|
}
|
|
188
|
-
/**
|
|
189
|
-
* Render the icon SVG
|
|
190
|
-
* Smart rendering strategy:
|
|
191
|
-
* 1. Check memory registry (instant)
|
|
192
|
-
* 2. If found in memory -> render immediately
|
|
193
|
-
* 3. If not in memory -> show NOT_FOUND_ICON immediately (prevents empty state)
|
|
194
|
-
* 4. Then check cache asynchronously and replace if found
|
|
195
|
-
* 5. Only re-render if SVG actually changed
|
|
196
|
-
*/
|
|
197
122
|
render() {
|
|
198
123
|
const name = this.getProperty('name');
|
|
199
124
|
if (!name) {
|
|
200
125
|
this.renderSvg(NOT_FOUND_ICON);
|
|
201
126
|
return;
|
|
202
127
|
}
|
|
203
|
-
// Fast path: Check memory registry first
|
|
204
128
|
const memorySvg = IconRegistry.getIcon(name);
|
|
205
129
|
if (memorySvg) {
|
|
206
130
|
this.renderSvg(memorySvg);
|
|
@@ -208,14 +132,7 @@ export class TyIcon extends TyComponent {
|
|
|
208
132
|
}
|
|
209
133
|
this.renderSvg(NOT_FOUND_ICON);
|
|
210
134
|
}
|
|
211
|
-
/**
|
|
212
|
-
* Update the slot's fallback content.
|
|
213
|
-
* If the user has slotted light-DOM children (e.g., raw <svg>), the browser
|
|
214
|
-
* shows those instead and the fallback stays hidden — but we still keep it
|
|
215
|
-
* up to date so removing the children reveals the right registry/fallback SVG.
|
|
216
|
-
*/
|
|
217
135
|
renderSvg(svg) {
|
|
218
|
-
// Only render if content actually changed
|
|
219
136
|
if (this._currentSvg === svg) {
|
|
220
137
|
return;
|
|
221
138
|
}
|
|
@@ -226,9 +143,6 @@ export class TyIcon extends TyComponent {
|
|
|
226
143
|
}
|
|
227
144
|
}
|
|
228
145
|
TyIcon.formAssociated = false;
|
|
229
|
-
// ============================================================================
|
|
230
|
-
// PROPERTY CONFIGURATION - Declarative property lifecycle
|
|
231
|
-
// ============================================================================
|
|
232
146
|
TyIcon.properties = {
|
|
233
147
|
name: { type: 'string', visual: true, default: '' },
|
|
234
148
|
size: { type: 'string', visual: true, default: '' },
|
|
@@ -236,10 +150,7 @@ TyIcon.properties = {
|
|
|
236
150
|
pulse: { type: 'boolean', visual: true, default: false },
|
|
237
151
|
tempo: { type: 'string', visual: true, default: '' },
|
|
238
152
|
};
|
|
239
|
-
// Register the custom element
|
|
240
153
|
if (!customElements.get('ty-icon')) {
|
|
241
154
|
customElements.define('ty-icon', TyIcon);
|
|
242
155
|
}
|
|
243
|
-
// Export for use in other modules
|
|
244
156
|
export { IconRegistry };
|
|
245
|
-
//# sourceMappingURL=icon.js.map
|
|
@@ -1,63 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* TyInput Web Component
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* Enhanced input component with:
|
|
7
|
-
* - Label, error messages, semantic styling
|
|
8
|
-
* - Icon slots (start/end)
|
|
9
|
-
* - Numeric formatting with shadow values
|
|
10
|
-
* - Currency, percent, compact notation
|
|
11
|
-
* - Format-on-blur / raw-on-focus behavior
|
|
12
|
-
* - Debounce (0-5000ms) for input/change events
|
|
13
|
-
* - Immediate event firing on blur (cancels pending debounce)
|
|
14
|
-
*
|
|
15
|
-
* NOTE: Checkbox functionality is in separate ty-checkbox component
|
|
2
|
+
* TyInput Web Component - text input with label, error, icon slots and
|
|
3
|
+
* locale-aware numeric formatting (format-on-blur / raw-on-focus via a parsed
|
|
4
|
+
* "shadow value"). Debounce 0-5000ms; blur flushes any pending debounced event.
|
|
16
5
|
*/
|
|
17
6
|
import type { Flavor, Size, InputType, TyInputElement } from '../types/common.js';
|
|
18
7
|
import { TyComponent } from '../base/ty-component.js';
|
|
19
8
|
import type { PropertyChange } from '../utils/property-manager.js';
|
|
20
|
-
/**
|
|
21
|
-
* Ty Input Component (Phase D - Complete with Debounce)
|
|
22
|
-
*
|
|
23
|
-
* @example
|
|
24
|
-
* ```html
|
|
25
|
-
* <!-- Basic input -->
|
|
26
|
-
* <ty-input label="Email" type="email" placeholder="Enter email" required></ty-input>
|
|
27
|
-
*
|
|
28
|
-
* <!-- With icons -->
|
|
29
|
-
* <ty-input label="Search">
|
|
30
|
-
* <ty-icon slot="start" name="search"></ty-icon>
|
|
31
|
-
* </ty-input>
|
|
32
|
-
*
|
|
33
|
-
* <!-- With debounce (500ms) -->
|
|
34
|
-
* <ty-input
|
|
35
|
-
* label="Search"
|
|
36
|
-
* debounce="500"
|
|
37
|
-
* placeholder="Type to search...">
|
|
38
|
-
* </ty-input>
|
|
39
|
-
*
|
|
40
|
-
* <!-- Currency formatting -->
|
|
41
|
-
* <ty-input
|
|
42
|
-
* label="Price"
|
|
43
|
-
* type="currency"
|
|
44
|
-
* currency="USD"
|
|
45
|
-
* locale="en-US"
|
|
46
|
-
* value="1234.56">
|
|
47
|
-
* </ty-input>
|
|
48
|
-
*
|
|
49
|
-
* <!-- Percent formatting -->
|
|
50
|
-
* <ty-input
|
|
51
|
-
* label="Tax Rate"
|
|
52
|
-
* type="percent"
|
|
53
|
-
* value="15"
|
|
54
|
-
* precision="2">
|
|
55
|
-
* </ty-input>
|
|
56
|
-
* ```
|
|
57
|
-
*/
|
|
58
|
-
/**
|
|
59
|
-
* Internal state interface for TyInput component
|
|
60
|
-
*/
|
|
61
9
|
interface InputState {
|
|
62
10
|
shadowValue: number | string | null;
|
|
63
11
|
isFocused: boolean;
|
|
@@ -165,51 +113,23 @@ export declare class TyInput extends TyComponent<InputState> implements TyInputE
|
|
|
165
113
|
private _changeDebounceTimer;
|
|
166
114
|
private _localeObserver?;
|
|
167
115
|
constructor();
|
|
168
|
-
/**
|
|
169
|
-
* Called when component connects to DOM
|
|
170
|
-
* TyComponent already handled pre-connection property capture
|
|
171
|
-
*/
|
|
116
|
+
/** TyComponent already handled pre-connection property capture. */
|
|
172
117
|
protected onConnect(): void;
|
|
173
118
|
/** Custom (non-built-in) flavors — see utils/flavor-sheet.ts. */
|
|
174
119
|
private _syncCustomFlavor;
|
|
175
|
-
/**
|
|
176
|
-
* Called when component disconnects from DOM
|
|
177
|
-
*/
|
|
178
120
|
protected onDisconnect(): void;
|
|
179
|
-
/**
|
|
180
|
-
* Handle property changes - called BEFORE render
|
|
181
|
-
* This replaces the old attributeChangedCallback logic
|
|
182
|
-
*/
|
|
121
|
+
/** Handle property changes — called BEFORE render. */
|
|
183
122
|
protected onPropertiesChanged(changes: PropertyChange[]): void;
|
|
184
|
-
/**
|
|
185
|
-
* Hook: Called when form is reset
|
|
186
|
-
* Clear shadow value and focus state
|
|
187
|
-
*/
|
|
188
123
|
protected onFormReset(): void;
|
|
189
124
|
/**
|
|
190
125
|
* Override form value to return shadow value
|
|
191
126
|
* This ensures numeric types submit their parsed values
|
|
192
127
|
*/
|
|
193
128
|
protected getFormValue(): FormDataEntryValue | null;
|
|
194
|
-
/**
|
|
195
|
-
* Initialize shadow value from the initial value attribute
|
|
196
|
-
*/
|
|
197
129
|
private initializeShadowValue;
|
|
198
|
-
/**
|
|
199
|
-
* Parse a string value to the appropriate shadow value type
|
|
200
|
-
*/
|
|
201
130
|
private parseShadowValue;
|
|
202
|
-
/**
|
|
203
|
-
* Check if current input should format numbers
|
|
204
|
-
*/
|
|
205
131
|
private shouldFormat;
|
|
206
|
-
/**
|
|
207
|
-
* Get the format configuration for current input
|
|
208
|
-
*/
|
|
209
132
|
private getFormatConfig;
|
|
210
|
-
/**
|
|
211
|
-
* Get the display value (formatted or raw)
|
|
212
|
-
*/
|
|
213
133
|
private getDisplayValue;
|
|
214
134
|
get type(): InputType;
|
|
215
135
|
set type(v: InputType);
|
|
@@ -240,32 +160,13 @@ export declare class TyInput extends TyComponent<InputState> implements TyInputE
|
|
|
240
160
|
get debounce(): number;
|
|
241
161
|
set debounce(v: number | string);
|
|
242
162
|
get form(): HTMLFormElement | null;
|
|
243
|
-
/**
|
|
244
|
-
* Build CSS class list for input wrapper
|
|
245
|
-
*/
|
|
246
163
|
private buildClassList;
|
|
247
|
-
/**
|
|
248
|
-
* Dispatch input event (helper method for debouncing)
|
|
249
|
-
*/
|
|
250
164
|
private dispatchInputEvent;
|
|
251
|
-
/**
|
|
252
|
-
* Dispatch change event (helper method for debouncing)
|
|
253
|
-
*/
|
|
254
165
|
private dispatchChangeEvent;
|
|
255
|
-
/**
|
|
256
|
-
* Remove event listeners for cleanup
|
|
257
|
-
*/
|
|
258
166
|
private removeEventListeners;
|
|
259
|
-
/**
|
|
260
|
-
* Setup event listeners for input element
|
|
261
|
-
* IMPORTANT: Only called ONCE, not on every render (like ClojureScript)
|
|
262
|
-
*/
|
|
167
|
+
/** IMPORTANT: Only called ONCE, not on every render. */
|
|
263
168
|
private setupEventListeners;
|
|
264
|
-
/**
|
|
265
|
-
* Render the input component with wrapper and slots
|
|
266
|
-
* Phase C: Uses getDisplayValue() for formatted output
|
|
267
|
-
*
|
|
268
|
-
*/
|
|
169
|
+
/** Render the input component with wrapper and slots. */
|
|
269
170
|
render(): void;
|
|
270
171
|
/**
|
|
271
172
|
* Wire the password reveal toggle (rendered only for type="password").
|
|
@@ -282,4 +183,3 @@ export declare class TyInput extends TyComponent<InputState> implements TyInputE
|
|
|
282
183
|
private updateValidity;
|
|
283
184
|
}
|
|
284
185
|
export {};
|
|
285
|
-
//# sourceMappingURL=input.d.ts.map
|