tyrell-components 1.0.0-TC54 → 1.0.0-TC56
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +53 -53
- package/css/tyrell-theme.css +7 -2
- package/css/tyrell.css +6 -15
- package/dist/tyrell-theme.css +1 -1
- package/dist/tyrell.css +1 -1
- package/dist/tyrell.js +1 -1
- package/lib/base/ty-component.d.ts +14 -0
- package/lib/base/ty-component.d.ts.map +1 -0
- package/lib/base/ty-component.js +27 -0
- package/lib/base/ty-component.js.map +1 -0
- package/lib/components/button.d.ts.map +1 -0
- package/lib/components/button.js +7 -0
- package/lib/components/button.js.map +1 -0
- package/lib/components/calendar-month.d.ts.map +1 -0
- package/lib/components/calendar-month.js +20 -6
- package/lib/components/calendar-month.js.map +1 -0
- package/lib/components/calendar-navigation.d.ts +11 -0
- package/lib/components/calendar-navigation.d.ts.map +1 -0
- package/lib/components/calendar-navigation.js +51 -40
- package/lib/components/calendar-navigation.js.map +1 -0
- package/lib/components/calendar.d.ts +31 -3
- package/lib/components/calendar.d.ts.map +1 -0
- package/lib/components/calendar.js +197 -18
- package/lib/components/calendar.js.map +1 -0
- package/lib/components/checkbox.d.ts.map +1 -0
- package/lib/components/checkbox.js +3 -3
- package/lib/components/checkbox.js.map +1 -0
- package/lib/components/copy.d.ts.map +1 -0
- package/lib/components/copy.js +14 -6
- package/lib/components/copy.js.map +1 -0
- package/lib/components/date-picker.d.ts +15 -9
- package/lib/components/date-picker.d.ts.map +1 -0
- package/lib/components/date-picker.js +187 -236
- package/lib/components/date-picker.js.map +1 -0
- package/lib/components/dropdown.d.ts +403 -0
- package/lib/components/dropdown.d.ts.map +1 -0
- package/lib/components/dropdown.js +1315 -0
- package/lib/components/dropdown.js.map +1 -0
- package/lib/components/file-upload.d.ts +4 -0
- package/lib/components/file-upload.js +14 -0
- package/lib/components/icon.d.ts.map +1 -0
- package/lib/components/icon.js.map +1 -0
- package/lib/components/input.d.ts.map +1 -0
- package/lib/components/input.js +3 -3
- package/lib/components/input.js.map +1 -0
- package/lib/components/modal.d.ts +2 -8
- package/lib/components/modal.d.ts.map +1 -0
- package/lib/components/modal.js +8 -18
- package/lib/components/modal.js.map +1 -0
- package/lib/components/multiselect.d.ts +389 -0
- package/lib/components/multiselect.d.ts.map +1 -0
- package/lib/components/multiselect.js +1301 -0
- package/lib/components/multiselect.js.map +1 -0
- package/lib/components/option.d.ts.map +1 -0
- package/lib/components/option.js +1 -1
- package/lib/components/option.js.map +1 -0
- package/lib/components/popup.d.ts.map +1 -0
- package/lib/components/popup.js +4 -1
- package/lib/components/popup.js.map +1 -0
- package/lib/components/radio.d.ts +15 -0
- package/lib/components/radio.js +34 -4
- package/lib/components/resize-observer.d.ts.map +1 -0
- package/lib/components/resize-observer.js.map +1 -0
- package/lib/components/scroll-container.d.ts +3 -2
- package/lib/components/scroll-container.d.ts.map +1 -0
- package/lib/components/scroll-container.js +14 -19
- package/lib/components/scroll-container.js.map +1 -0
- package/lib/components/select.d.ts +52 -16
- package/lib/components/select.js +170 -67
- package/lib/components/step.d.ts.map +1 -0
- package/lib/components/step.js.map +1 -0
- package/lib/components/switch.js +3 -3
- package/lib/components/tab.d.ts +49 -1
- package/lib/components/tab.d.ts.map +1 -0
- package/lib/components/tab.js +151 -10
- package/lib/components/tab.js.map +1 -0
- package/lib/components/tabs.d.ts +14 -2
- package/lib/components/tabs.d.ts.map +1 -0
- package/lib/components/tabs.js +186 -130
- package/lib/components/tabs.js.map +1 -0
- package/lib/components/tag.d.ts +4 -7
- package/lib/components/tag.d.ts.map +1 -0
- package/lib/components/tag.js +6 -7
- package/lib/components/tag.js.map +1 -0
- package/lib/components/textarea.d.ts +4 -3
- package/lib/components/textarea.d.ts.map +1 -0
- package/lib/components/textarea.js +16 -15
- package/lib/components/textarea.js.map +1 -0
- package/lib/components/tooltip.d.ts +4 -3
- package/lib/components/tooltip.d.ts.map +1 -0
- package/lib/components/tooltip.js +34 -24
- package/lib/components/tooltip.js.map +1 -0
- package/lib/components/wizard.d.ts +5 -4
- package/lib/components/wizard.d.ts.map +1 -0
- package/lib/components/wizard.js +120 -156
- package/lib/components/wizard.js.map +1 -0
- package/lib/icons/fontawesome/brands.d.ts.map +1 -0
- package/lib/icons/fontawesome/brands.js.map +1 -0
- package/lib/icons/fontawesome/regular.d.ts.map +1 -0
- package/lib/icons/fontawesome/regular.js.map +1 -0
- package/lib/icons/fontawesome/solid.d.ts.map +1 -0
- package/lib/icons/fontawesome/solid.js.map +1 -0
- package/lib/icons/heroicons/micro.d.ts.map +1 -0
- package/lib/icons/heroicons/micro.js.map +1 -0
- package/lib/icons/heroicons/mini.d.ts.map +1 -0
- package/lib/icons/heroicons/mini.js.map +1 -0
- package/lib/icons/heroicons/outline.d.ts.map +1 -0
- package/lib/icons/heroicons/outline.js.map +1 -0
- package/lib/icons/heroicons/solid.d.ts.map +1 -0
- package/lib/icons/heroicons/solid.js.map +1 -0
- package/lib/icons/lucide.d.ts.map +1 -0
- package/lib/icons/lucide.js.map +1 -0
- package/lib/icons/material/filled.d.ts.map +1 -0
- package/lib/icons/material/filled.js.map +1 -0
- package/lib/icons/material/outlined.d.ts.map +1 -0
- package/lib/icons/material/outlined.js.map +1 -0
- package/lib/icons/material/round.d.ts.map +1 -0
- package/lib/icons/material/round.js.map +1 -0
- package/lib/icons/material/sharp.d.ts.map +1 -0
- package/lib/icons/material/sharp.js.map +1 -0
- package/lib/icons/material/two-tone.d.ts.map +1 -0
- package/lib/icons/material/two-tone.js.map +1 -0
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js.map +1 -0
- package/lib/styles/button.d.ts.map +1 -0
- package/lib/styles/button.js +68 -58
- package/lib/styles/button.js.map +1 -0
- package/lib/styles/calendar-month.d.ts +3 -0
- package/lib/styles/calendar-month.d.ts.map +1 -0
- package/lib/styles/calendar-month.js +47 -31
- package/lib/styles/calendar-month.js.map +1 -0
- package/lib/styles/calendar-navigation.d.ts +1 -1
- package/lib/styles/calendar-navigation.d.ts.map +1 -0
- package/lib/styles/calendar-navigation.js +55 -22
- package/lib/styles/calendar-navigation.js.map +1 -0
- package/lib/styles/calendar.d.ts +3 -2
- package/lib/styles/calendar.d.ts.map +1 -0
- package/lib/styles/calendar.js +75 -0
- package/lib/styles/calendar.js.map +1 -0
- package/lib/styles/checkbox.js +22 -10
- package/lib/styles/copy.d.ts.map +1 -0
- package/lib/styles/copy.js +5 -1
- package/lib/styles/copy.js.map +1 -0
- package/lib/styles/date-picker.d.ts.map +1 -0
- package/lib/styles/date-picker.js +52 -22
- package/lib/styles/date-picker.js.map +1 -0
- package/lib/styles/dropdown.d.ts +12 -0
- package/lib/styles/dropdown.d.ts.map +1 -0
- package/lib/styles/dropdown.js +725 -0
- package/lib/styles/dropdown.js.map +1 -0
- package/lib/styles/icon.d.ts.map +1 -0
- package/lib/styles/icon.js.map +1 -0
- package/lib/styles/input.d.ts.map +1 -0
- package/lib/styles/input.js.map +1 -0
- package/lib/styles/modal.d.ts.map +1 -0
- package/lib/styles/modal.js.map +1 -0
- package/lib/styles/multiselect.d.ts +6 -0
- package/lib/styles/multiselect.d.ts.map +1 -0
- package/lib/styles/multiselect.js +568 -0
- package/lib/styles/multiselect.js.map +1 -0
- package/lib/styles/option.d.ts +1 -1
- package/lib/styles/option.d.ts.map +1 -0
- package/lib/styles/option.js +3 -3
- package/lib/styles/option.js.map +1 -0
- package/lib/styles/popup.d.ts +1 -1
- package/lib/styles/popup.d.ts.map +1 -0
- package/lib/styles/popup.js +8 -5
- package/lib/styles/popup.js.map +1 -0
- package/lib/styles/radio.js +8 -2
- package/lib/styles/resize-observer.d.ts.map +1 -0
- package/lib/styles/resize-observer.js.map +1 -0
- package/lib/styles/scroll-container.d.ts +1 -1
- package/lib/styles/scroll-container.d.ts.map +1 -0
- package/lib/styles/scroll-container.js +1 -1
- package/lib/styles/scroll-container.js.map +1 -0
- package/lib/styles/select-base.js +81 -14
- package/lib/styles/select.d.ts +1 -1
- package/lib/styles/select.js +6 -0
- package/lib/styles/step.d.ts +1 -1
- package/lib/styles/step.d.ts.map +1 -0
- package/lib/styles/step.js +1 -9
- package/lib/styles/step.js.map +1 -0
- package/lib/styles/switch.js +6 -3
- package/lib/styles/tab.d.ts +1 -1
- package/lib/styles/tab.d.ts.map +1 -0
- package/lib/styles/tab.js +67 -3
- package/lib/styles/tab.js.map +1 -0
- package/lib/styles/tabs.d.ts +1 -1
- package/lib/styles/tabs.d.ts.map +1 -0
- package/lib/styles/tabs.js +7 -3
- package/lib/styles/tabs.js.map +1 -0
- package/lib/styles/tag.d.ts.map +1 -0
- package/lib/styles/tag.js +1 -2
- package/lib/styles/tag.js.map +1 -0
- package/lib/styles/textarea.d.ts.map +1 -0
- package/lib/styles/textarea.js.map +1 -0
- package/lib/styles/tooltip.d.ts.map +1 -0
- package/lib/styles/tooltip.js.map +1 -0
- package/lib/styles/wizard.d.ts +9 -5
- package/lib/styles/wizard.d.ts.map +1 -0
- package/lib/styles/wizard.js +211 -99
- package/lib/styles/wizard.js.map +1 -0
- package/lib/types/common.d.ts +2 -2
- package/lib/types/common.d.ts.map +1 -0
- package/lib/types/common.js.map +1 -0
- package/lib/utils/calendar-utils.d.ts.map +1 -0
- package/lib/utils/calendar-utils.js.map +1 -0
- package/lib/utils/icon-registry.d.ts.map +1 -0
- package/lib/utils/icon-registry.js.map +1 -0
- package/lib/utils/locale.d.ts.map +1 -0
- package/lib/utils/locale.js.map +1 -0
- package/lib/utils/number-format.d.ts.map +1 -0
- package/lib/utils/number-format.js.map +1 -0
- package/lib/utils/parse-boolean.d.ts +39 -0
- package/lib/utils/parse-boolean.d.ts.map +1 -0
- package/lib/utils/parse-boolean.js +23 -0
- package/lib/utils/parse-boolean.js.map +1 -0
- package/lib/utils/positioning.d.ts.map +1 -0
- package/lib/utils/positioning.js.map +1 -0
- package/lib/utils/property-capture.d.ts.map +1 -0
- package/lib/utils/property-capture.js.map +1 -0
- package/lib/utils/property-manager.d.ts +1 -1
- package/lib/utils/property-manager.d.ts.map +1 -0
- package/lib/utils/property-manager.js +2 -0
- package/lib/utils/property-manager.js.map +1 -0
- package/lib/utils/resize-observer.d.ts.map +1 -0
- package/lib/utils/resize-observer.js.map +1 -0
- package/lib/utils/scroll-lock.d.ts.map +1 -0
- package/lib/utils/scroll-lock.js.map +1 -0
- package/lib/utils/styles.d.ts.map +1 -0
- package/lib/utils/styles.js.map +1 -0
- package/lib/utils/validity.d.ts +26 -0
- package/lib/utils/validity.js +53 -0
- package/lib/version.d.ts +1 -1
- package/lib/version.d.ts.map +1 -0
- package/lib/version.js +1 -1
- package/lib/version.js.map +1 -0
- package/package.json +25 -4
|
@@ -0,0 +1,403 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TyDropdown Web Component
|
|
3
|
+
* PORTED FROM: clj/ty/components/dropdown.cljs
|
|
4
|
+
*
|
|
5
|
+
* A semantic dropdown component with:
|
|
6
|
+
* - Desktop mode with smart positioning
|
|
7
|
+
* - Mobile mode with full-screen modal
|
|
8
|
+
* - Search and filtering capabilities
|
|
9
|
+
* - Keyboard navigation
|
|
10
|
+
* - Form association for native form submission
|
|
11
|
+
* - Rich option support (option, ty-option, ty-tag)
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```html
|
|
15
|
+
* <!-- Basic dropdown -->
|
|
16
|
+
* <ty-dropdown label="Country" placeholder="Select country" required>
|
|
17
|
+
* <option value="us">United States</option>
|
|
18
|
+
* <option value="uk">United Kingdom</option>
|
|
19
|
+
* <option value="ca">Canada</option>
|
|
20
|
+
* </ty-dropdown>
|
|
21
|
+
*
|
|
22
|
+
* <!-- With rich options -->
|
|
23
|
+
* <ty-dropdown label="User" searchable>
|
|
24
|
+
* <ty-option value="1">
|
|
25
|
+
* <div class="flex items-center gap-2">
|
|
26
|
+
* <img src="avatar1.jpg" class="w-8 h-8 rounded-full" />
|
|
27
|
+
* <span>John Doe</span>
|
|
28
|
+
* </div>
|
|
29
|
+
* </ty-option>
|
|
30
|
+
* </ty-dropdown>
|
|
31
|
+
*
|
|
32
|
+
* <!-- Not searchable (external search) -->
|
|
33
|
+
* <ty-dropdown label="Search API" not-searchable>
|
|
34
|
+
* <option value="1">Result 1</option>
|
|
35
|
+
* </ty-dropdown>
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
import type { Flavor, Size } from '../types/common.js';
|
|
39
|
+
import { TyComponent } from '../base/ty-component.js';
|
|
40
|
+
import type { PropertyChange } from '../utils/property-manager.js';
|
|
41
|
+
/**
|
|
42
|
+
* Option data structure
|
|
43
|
+
*/
|
|
44
|
+
interface OptionData {
|
|
45
|
+
value: string;
|
|
46
|
+
text: string;
|
|
47
|
+
element: HTMLElement;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Component state structure
|
|
51
|
+
*/
|
|
52
|
+
interface DropdownState {
|
|
53
|
+
open: boolean;
|
|
54
|
+
search: string;
|
|
55
|
+
highlightedIndex: number;
|
|
56
|
+
filteredOptions: OptionData[];
|
|
57
|
+
currentValue: string | null;
|
|
58
|
+
mode: 'desktop' | 'mobile';
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Ty Dropdown Component
|
|
62
|
+
*/
|
|
63
|
+
export declare class TyDropdown extends TyComponent<DropdownState> {
|
|
64
|
+
protected static properties: {
|
|
65
|
+
value: {
|
|
66
|
+
type: "string";
|
|
67
|
+
visual: boolean;
|
|
68
|
+
formValue: boolean;
|
|
69
|
+
emitChange: boolean;
|
|
70
|
+
default: string;
|
|
71
|
+
};
|
|
72
|
+
name: {
|
|
73
|
+
type: "string";
|
|
74
|
+
default: string;
|
|
75
|
+
};
|
|
76
|
+
placeholder: {
|
|
77
|
+
type: "string";
|
|
78
|
+
visual: boolean;
|
|
79
|
+
default: string;
|
|
80
|
+
};
|
|
81
|
+
label: {
|
|
82
|
+
type: "string";
|
|
83
|
+
visual: boolean;
|
|
84
|
+
default: string;
|
|
85
|
+
};
|
|
86
|
+
disabled: {
|
|
87
|
+
type: "boolean";
|
|
88
|
+
visual: boolean;
|
|
89
|
+
default: boolean;
|
|
90
|
+
};
|
|
91
|
+
readonly: {
|
|
92
|
+
type: "boolean";
|
|
93
|
+
visual: boolean;
|
|
94
|
+
default: boolean;
|
|
95
|
+
};
|
|
96
|
+
required: {
|
|
97
|
+
type: "boolean";
|
|
98
|
+
visual: boolean;
|
|
99
|
+
default: boolean;
|
|
100
|
+
};
|
|
101
|
+
searchable: {
|
|
102
|
+
type: "boolean";
|
|
103
|
+
visual: boolean;
|
|
104
|
+
default: boolean;
|
|
105
|
+
aliases: {
|
|
106
|
+
'not-searchable': boolean;
|
|
107
|
+
};
|
|
108
|
+
};
|
|
109
|
+
clearable: {
|
|
110
|
+
type: "boolean";
|
|
111
|
+
visual: boolean;
|
|
112
|
+
default: boolean;
|
|
113
|
+
aliases: {
|
|
114
|
+
'not-clearable': boolean;
|
|
115
|
+
};
|
|
116
|
+
};
|
|
117
|
+
size: {
|
|
118
|
+
type: "string";
|
|
119
|
+
visual: boolean;
|
|
120
|
+
default: string;
|
|
121
|
+
validate: (v: any) => boolean;
|
|
122
|
+
coerce: (v: any) => any;
|
|
123
|
+
};
|
|
124
|
+
flavor: {
|
|
125
|
+
type: "string";
|
|
126
|
+
visual: boolean;
|
|
127
|
+
default: string;
|
|
128
|
+
validate: (v: any) => boolean;
|
|
129
|
+
coerce: (v: any) => any;
|
|
130
|
+
};
|
|
131
|
+
delay: {
|
|
132
|
+
type: "number";
|
|
133
|
+
default: number;
|
|
134
|
+
validate: (v: any) => boolean;
|
|
135
|
+
coerce: (v: any) => number;
|
|
136
|
+
};
|
|
137
|
+
};
|
|
138
|
+
private _value;
|
|
139
|
+
private _name;
|
|
140
|
+
private _placeholder;
|
|
141
|
+
private _label;
|
|
142
|
+
private _disabled;
|
|
143
|
+
private _readonly;
|
|
144
|
+
private _required;
|
|
145
|
+
private _searchable;
|
|
146
|
+
private _clearable;
|
|
147
|
+
private _size;
|
|
148
|
+
private _flavor;
|
|
149
|
+
private _state;
|
|
150
|
+
private _scrollLockId;
|
|
151
|
+
private _stubClickHandler;
|
|
152
|
+
private _outsideClickHandler;
|
|
153
|
+
private _optionClickHandler;
|
|
154
|
+
private _searchInputHandler;
|
|
155
|
+
private _searchBlurHandler;
|
|
156
|
+
private _blockSearchClick;
|
|
157
|
+
private _keyboardHandler;
|
|
158
|
+
private _clearClickHandler;
|
|
159
|
+
private _delay;
|
|
160
|
+
private _searchDebounceTimer;
|
|
161
|
+
constructor();
|
|
162
|
+
render(): void;
|
|
163
|
+
/**
|
|
164
|
+
* Called when component is connected to DOM
|
|
165
|
+
* TyComponent handles property capture automatically
|
|
166
|
+
*/
|
|
167
|
+
protected onConnect(): void;
|
|
168
|
+
/**
|
|
169
|
+
* Called when component is disconnected from DOM
|
|
170
|
+
* Clean up event listeners and timers
|
|
171
|
+
*/
|
|
172
|
+
protected onDisconnect(): void;
|
|
173
|
+
/**
|
|
174
|
+
* Called when properties change
|
|
175
|
+
* Handle state synchronization BEFORE render
|
|
176
|
+
*/
|
|
177
|
+
protected onPropertiesChanged(changes: PropertyChange[]): void;
|
|
178
|
+
/**
|
|
179
|
+
* Get the form value for this component
|
|
180
|
+
* TyComponent calls this automatically when formValue property changes
|
|
181
|
+
*/
|
|
182
|
+
protected getFormValue(): FormDataEntryValue | null;
|
|
183
|
+
/**
|
|
184
|
+
* Parse dropdown value (single string)
|
|
185
|
+
*/
|
|
186
|
+
private parseValue;
|
|
187
|
+
/**
|
|
188
|
+
* Validate flavor attribute
|
|
189
|
+
*/
|
|
190
|
+
private validateFlavor;
|
|
191
|
+
/**
|
|
192
|
+
* Initialize component state from attributes
|
|
193
|
+
*/
|
|
194
|
+
private initializeState;
|
|
195
|
+
/**
|
|
196
|
+
* Update placeholder text in existing rendered HTML
|
|
197
|
+
* Called when placeholder changes after initial render
|
|
198
|
+
*/
|
|
199
|
+
private updatePlaceholderInDOM;
|
|
200
|
+
/**
|
|
201
|
+
* Update form value via ElementInternals
|
|
202
|
+
*/
|
|
203
|
+
/**
|
|
204
|
+
* Get all option elements from slot
|
|
205
|
+
* Supports: <option>, <ty-option>, <ty-tag>
|
|
206
|
+
*/
|
|
207
|
+
private getOptions;
|
|
208
|
+
/**
|
|
209
|
+
* Extract value and text from option element
|
|
210
|
+
*/
|
|
211
|
+
private getOptionData;
|
|
212
|
+
/**
|
|
213
|
+
* Clear all selections
|
|
214
|
+
*/
|
|
215
|
+
private clearSelection;
|
|
216
|
+
/**
|
|
217
|
+
* Select an option
|
|
218
|
+
*/
|
|
219
|
+
private selectOption;
|
|
220
|
+
/**
|
|
221
|
+
* Sync selected option based on current value
|
|
222
|
+
*/
|
|
223
|
+
private syncSelectedOption;
|
|
224
|
+
/**
|
|
225
|
+
* Update component value attribute for consistency
|
|
226
|
+
*/
|
|
227
|
+
private updateComponentValue;
|
|
228
|
+
/**
|
|
229
|
+
* Update selection display (show/hide placeholder)
|
|
230
|
+
*/
|
|
231
|
+
private updateSelectionDisplay;
|
|
232
|
+
private updateClearButton;
|
|
233
|
+
/**
|
|
234
|
+
* Dispatch change event
|
|
235
|
+
*/
|
|
236
|
+
private dispatchChangeEvent;
|
|
237
|
+
private filterOptions;
|
|
238
|
+
private updateOptionVisibility;
|
|
239
|
+
/**
|
|
240
|
+
* Clear all option highlights
|
|
241
|
+
*/
|
|
242
|
+
private clearHighlights;
|
|
243
|
+
private highlightOption;
|
|
244
|
+
/**
|
|
245
|
+
* Setup event listeners
|
|
246
|
+
*/
|
|
247
|
+
private setupDesktopEventListeners;
|
|
248
|
+
/**
|
|
249
|
+
* Lock scroll with consistent ID generation
|
|
250
|
+
*/
|
|
251
|
+
private lockDropdownScroll;
|
|
252
|
+
/**
|
|
253
|
+
* Unlock scroll using stored ID
|
|
254
|
+
*/
|
|
255
|
+
private unlockDropdownScroll;
|
|
256
|
+
/**
|
|
257
|
+
* Initialize options state when opening dropdown/modal
|
|
258
|
+
* @param highlightSelected - Whether to highlight the currently selected option
|
|
259
|
+
*/
|
|
260
|
+
private initializeOptionsState;
|
|
261
|
+
/**
|
|
262
|
+
* Base stub click handler - validates state then calls open callback
|
|
263
|
+
* @param e - Click event
|
|
264
|
+
* @param openCallback - Function to call to open (desktop or mobile)
|
|
265
|
+
*/
|
|
266
|
+
private handleStubClickBase;
|
|
267
|
+
/**
|
|
268
|
+
* Base option click handler - finds option, selects it, then calls close callback
|
|
269
|
+
* @param e - Click event
|
|
270
|
+
* @param closeCallback - Function to call to close (desktop or mobile)
|
|
271
|
+
*/
|
|
272
|
+
private handleOptionClickBase;
|
|
273
|
+
/**
|
|
274
|
+
* Base clear click handler - clears selection and optionally closes
|
|
275
|
+
* @param e - Click event
|
|
276
|
+
* @param closeCallback - Optional function to call to close (mobile only)
|
|
277
|
+
*/
|
|
278
|
+
private handleClearClickBase;
|
|
279
|
+
/**
|
|
280
|
+
* Calculate and set dropdown position with smart direction detection
|
|
281
|
+
*/
|
|
282
|
+
private calculateDesktopPosition;
|
|
283
|
+
/**
|
|
284
|
+
* Open dropdown dialog
|
|
285
|
+
*/
|
|
286
|
+
private openDesktopDropdown;
|
|
287
|
+
/**
|
|
288
|
+
* Close dropdown dialog
|
|
289
|
+
*/
|
|
290
|
+
private closeDesktopDropdown;
|
|
291
|
+
/**
|
|
292
|
+
* Handle outside click to close dropdown
|
|
293
|
+
*/
|
|
294
|
+
private handleDesktopOutsideClick;
|
|
295
|
+
/**
|
|
296
|
+
* Handle search input changes
|
|
297
|
+
*/
|
|
298
|
+
private handleSearchInput;
|
|
299
|
+
/**
|
|
300
|
+
* Handle search blur - DISABLED
|
|
301
|
+
* Previously caused race conditions with option clicks.
|
|
302
|
+
* Search reset now handled in closeDesktopDropdown() instead.
|
|
303
|
+
*/
|
|
304
|
+
private handleSearchBlur;
|
|
305
|
+
/**
|
|
306
|
+
* Block search input click from bubbling
|
|
307
|
+
* Prevents search input clicks from triggering outside click handler
|
|
308
|
+
*/
|
|
309
|
+
private blockSearchClick;
|
|
310
|
+
/**
|
|
311
|
+
* Dispatch search event for external search handling
|
|
312
|
+
* With optional delay/debounce support
|
|
313
|
+
*/
|
|
314
|
+
private dispatchSearchEvent;
|
|
315
|
+
/**
|
|
316
|
+
* Fire the actual search event
|
|
317
|
+
*/
|
|
318
|
+
private fireSearchEvent;
|
|
319
|
+
/**
|
|
320
|
+
* Handle keyboard navigation
|
|
321
|
+
*/
|
|
322
|
+
private handleDesktopKeyboard;
|
|
323
|
+
/**
|
|
324
|
+
* Handle stub click - open dropdown
|
|
325
|
+
*/
|
|
326
|
+
private handleDesktopStubClick;
|
|
327
|
+
/**
|
|
328
|
+
* Handle option click - select option and close
|
|
329
|
+
*/
|
|
330
|
+
private handleDesktopOptionClick;
|
|
331
|
+
/**
|
|
332
|
+
* Handle clear button click - clear selection
|
|
333
|
+
* CRITICAL: Must prevent dropdown from opening!
|
|
334
|
+
*/
|
|
335
|
+
private handleDesktopClearClick;
|
|
336
|
+
/**
|
|
337
|
+
* Build CSS class list for stub
|
|
338
|
+
*/
|
|
339
|
+
private buildStubClasses;
|
|
340
|
+
/**
|
|
341
|
+
* Render desktop mode with dialog
|
|
342
|
+
*/
|
|
343
|
+
private renderDesktop;
|
|
344
|
+
/**
|
|
345
|
+
* Render mobile mode with full-screen modal
|
|
346
|
+
*/
|
|
347
|
+
private renderMobile;
|
|
348
|
+
/**
|
|
349
|
+
* Setup event listeners for mobile mode
|
|
350
|
+
*/
|
|
351
|
+
private setupMobileEventListeners;
|
|
352
|
+
/**
|
|
353
|
+
* Handle mobile stub click - open modal
|
|
354
|
+
*/
|
|
355
|
+
private handleMobileStubClick;
|
|
356
|
+
/**
|
|
357
|
+
* Handle mobile option click - select and close
|
|
358
|
+
*/
|
|
359
|
+
private handleMobileOptionClick;
|
|
360
|
+
/**
|
|
361
|
+
* Handle mobile keyboard navigation
|
|
362
|
+
*/
|
|
363
|
+
private handleMobileKeyboard;
|
|
364
|
+
/**
|
|
365
|
+
* Handle clear click in mobile modal
|
|
366
|
+
*/
|
|
367
|
+
private handleMobileClearClick;
|
|
368
|
+
/**
|
|
369
|
+
* Open mobile modal
|
|
370
|
+
*/
|
|
371
|
+
private openMobileModal;
|
|
372
|
+
/**
|
|
373
|
+
* Close mobile modal
|
|
374
|
+
*/
|
|
375
|
+
private closeMobileModal;
|
|
376
|
+
get value(): string;
|
|
377
|
+
set value(v: string);
|
|
378
|
+
get name(): string;
|
|
379
|
+
set name(v: string);
|
|
380
|
+
get placeholder(): string;
|
|
381
|
+
set placeholder(v: string);
|
|
382
|
+
get label(): string;
|
|
383
|
+
set label(v: string);
|
|
384
|
+
get disabled(): boolean;
|
|
385
|
+
set disabled(v: boolean);
|
|
386
|
+
get readonly(): boolean;
|
|
387
|
+
set readonly(v: boolean);
|
|
388
|
+
get required(): boolean;
|
|
389
|
+
set required(v: boolean);
|
|
390
|
+
get searchable(): boolean;
|
|
391
|
+
set searchable(v: boolean);
|
|
392
|
+
get clearable(): boolean;
|
|
393
|
+
set clearable(v: boolean);
|
|
394
|
+
get size(): Size;
|
|
395
|
+
set size(v: Size);
|
|
396
|
+
get flavor(): Flavor;
|
|
397
|
+
set flavor(v: Flavor);
|
|
398
|
+
get delay(): number;
|
|
399
|
+
set delay(v: number);
|
|
400
|
+
get form(): HTMLFormElement | null;
|
|
401
|
+
}
|
|
402
|
+
export {};
|
|
403
|
+
//# sourceMappingURL=dropdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dropdown.d.ts","sourceRoot":"","sources":["../../src/components/dropdown.ts"],"names":[],"mappings":"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"}
|