@nuralyui/dropdown 0.0.10 → 0.0.16
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/bundle.js +881 -0
- package/dropdown.component.d.ts +118 -0
- package/dropdown.component.js +376 -0
- package/dropdown.component.js.map +1 -0
- package/{hy-dropdown.style.d.ts → dropdown.style.d.ts} +1 -1
- package/dropdown.style.js +451 -0
- package/dropdown.style.js.map +1 -0
- package/dropdown.types.d.ts +83 -1
- package/dropdown.types.js.map +1 -1
- package/index.d.ts +2 -1
- package/index.js +2 -1
- package/index.js.map +1 -1
- package/package.json +17 -6
- package/react.d.ts +6 -2
- package/react.js +9 -5
- package/react.js.map +1 -1
- package/demo/hy-dropdowns-demo.d.ts +0 -19
- package/demo/hy-dropdowns-demo.d.ts.map +0 -1
- package/demo/hy-dropdowns-demo.js +0 -205
- package/demo/hy-dropdowns-demo.js.map +0 -1
- package/dropdown.types.d.ts.map +0 -1
- package/hy-dropdown.component.d.ts +0 -30
- package/hy-dropdown.component.d.ts.map +0 -1
- package/hy-dropdown.component.js +0 -183
- package/hy-dropdown.component.js.map +0 -1
- package/hy-dropdown.style.d.ts.map +0 -1
- package/hy-dropdown.style.js +0 -47
- package/hy-dropdown.style.js.map +0 -1
- package/index.d.ts.map +0 -1
- package/react.d.ts.map +0 -1
- package/templates/hy-dropdown-item.d.ts +0 -12
- package/templates/hy-dropdown-item.d.ts.map +0 -1
- package/templates/hy-dropdown-item.js +0 -55
- package/templates/hy-dropdown-item.js.map +0 -1
- package/templates/hy-dropdown-item.style.d.ts +0 -2
- package/templates/hy-dropdown-item.style.d.ts.map +0 -1
- package/templates/hy-dropdown-item.style.js +0 -34
- package/templates/hy-dropdown-item.style.js.map +0 -1
- package/templates/hy-dropdown-menu.d.ts +0 -18
- package/templates/hy-dropdown-menu.d.ts.map +0 -1
- package/templates/hy-dropdown-menu.js +0 -70
- package/templates/hy-dropdown-menu.js.map +0 -1
- package/templates/hy-dropdown-menu.style.d.ts +0 -2
- package/templates/hy-dropdown-menu.style.d.ts.map +0 -1
- package/templates/hy-dropdown-menu.style.js +0 -49
- package/templates/hy-dropdown-menu.style.js.map +0 -1
- package/test/hy-dropdown_test.d.ts +0 -4
- package/test/hy-dropdown_test.d.ts.map +0 -1
- package/test/hy-dropdown_test.js +0 -132
- package/test/hy-dropdown_test.js.map +0 -1
|
@@ -0,0 +1,451 @@
|
|
|
1
|
+
import { css } from 'lit';
|
|
2
|
+
export const styles = css `
|
|
3
|
+
:host {
|
|
4
|
+
display: inline-block;
|
|
5
|
+
position: relative;
|
|
6
|
+
color: var(--nuraly-color-text);
|
|
7
|
+
font-family: var(--nuraly-dropdown-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.dropdown {
|
|
11
|
+
position: relative;
|
|
12
|
+
display: inline-block;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.dropdown__trigger {
|
|
16
|
+
display: inline-block;
|
|
17
|
+
cursor: pointer;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.dropdown__trigger:focus-within {
|
|
21
|
+
outline: var(--nuraly-focus-outline, 2px solid #0f62fe);
|
|
22
|
+
outline-offset: var(--nuraly-focus-outline-offset, 1px);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.dropdown__panel {
|
|
26
|
+
position: absolute;
|
|
27
|
+
top: 100%;
|
|
28
|
+
left: 0;
|
|
29
|
+
z-index: var(--nuraly-dropdown-z-index, 9999);
|
|
30
|
+
background: var(--nuraly-color-dropdown-background, #ffffff);
|
|
31
|
+
border: var(--nuraly-dropdown-border-width, 1px) solid var(--nuraly-color-dropdown-border, #e0e0e0);
|
|
32
|
+
border-radius: var(--nuraly-dropdown-border-radius, 6px);
|
|
33
|
+
box-shadow: var(--nuraly-dropdown-shadow, 0 2px 6px rgba(0, 0, 0, 0.15));
|
|
34
|
+
min-width: var(--nuraly-dropdown-min-width, 10rem);
|
|
35
|
+
max-width: var(--nuraly-dropdown-max-width, 20rem);
|
|
36
|
+
max-height: var(--nuraly-dropdown-max-height, 200px);
|
|
37
|
+
overflow: auto;
|
|
38
|
+
/* Use opacity and visibility for smooth animations */
|
|
39
|
+
opacity: 0;
|
|
40
|
+
visibility: hidden;
|
|
41
|
+
transform: translateY(-8px);
|
|
42
|
+
transition: all var(--nuraly-dropdown-animation-duration, 0.15s) var(--nuraly-dropdown-animation-timing, ease);
|
|
43
|
+
/* Ensure proper containment */
|
|
44
|
+
box-sizing: border-box;
|
|
45
|
+
/* Create new stacking context to prevent layering issues */
|
|
46
|
+
isolation: isolate;
|
|
47
|
+
/* Force above other elements */
|
|
48
|
+
transform-origin: top center;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.dropdown__panel--open {
|
|
52
|
+
opacity: 1;
|
|
53
|
+
visibility: visible;
|
|
54
|
+
transform: translateY(0);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/* Alternative attribute-based selector (like select component) */
|
|
58
|
+
:host([open]) .dropdown__panel {
|
|
59
|
+
opacity: 1;
|
|
60
|
+
visibility: visible;
|
|
61
|
+
transform: translateY(0);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/* Placement variants */
|
|
65
|
+
.dropdown__panel--top,
|
|
66
|
+
.dropdown__panel--top-start,
|
|
67
|
+
.dropdown__panel--top-end {
|
|
68
|
+
top: auto;
|
|
69
|
+
bottom: 100%;
|
|
70
|
+
margin-bottom: 1px;
|
|
71
|
+
margin-top: 0;
|
|
72
|
+
transform: translateY(8px);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.dropdown__panel--top.dropdown__panel--open,
|
|
76
|
+
.dropdown__panel--top-start.dropdown__panel--open,
|
|
77
|
+
.dropdown__panel--top-end.dropdown__panel--open {
|
|
78
|
+
transform: translateY(0);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.dropdown__panel--bottom-end,
|
|
82
|
+
.dropdown__panel--top-end {
|
|
83
|
+
left: auto;
|
|
84
|
+
right: 0;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.dropdown__panel--bottom-start,
|
|
88
|
+
.dropdown__panel--top-start {
|
|
89
|
+
left: 0;
|
|
90
|
+
right: auto;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/* Size variants */
|
|
94
|
+
.dropdown__panel--small {
|
|
95
|
+
font-size: var(--nuraly-dropdown-small-font-size, 0.75rem);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.dropdown__panel--medium {
|
|
99
|
+
font-size: var(--nuraly-dropdown-font-size, 0.875rem);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.dropdown__panel--large {
|
|
103
|
+
font-size: var(--nuraly-dropdown-large-font-size, 1rem);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/* Animation variants */
|
|
107
|
+
|
|
108
|
+
/* No animation - instant show/hide */
|
|
109
|
+
.dropdown__panel--none {
|
|
110
|
+
transition: none;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.dropdown__panel--none:not(.dropdown__panel--open) {
|
|
114
|
+
opacity: 0;
|
|
115
|
+
visibility: hidden;
|
|
116
|
+
transform: none;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
.dropdown__panel--none.dropdown__panel--open {
|
|
120
|
+
opacity: 1;
|
|
121
|
+
visibility: visible;
|
|
122
|
+
transform: none;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/* Fade animation - opacity only */
|
|
126
|
+
.dropdown__panel--fade {
|
|
127
|
+
transition: opacity var(--nuraly-dropdown-animation-duration, 0.15s) var(--nuraly-dropdown-animation-timing, ease),
|
|
128
|
+
visibility var(--nuraly-dropdown-animation-duration, 0.15s) var(--nuraly-dropdown-animation-timing, ease);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.dropdown__panel--fade:not(.dropdown__panel--open) {
|
|
132
|
+
opacity: 0;
|
|
133
|
+
visibility: hidden;
|
|
134
|
+
transform: none;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.dropdown__panel--fade.dropdown__panel--open {
|
|
138
|
+
opacity: 1;
|
|
139
|
+
visibility: visible;
|
|
140
|
+
transform: none;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/* Slide animation - slide down/up with opacity */
|
|
144
|
+
.dropdown__panel--slide {
|
|
145
|
+
transition: opacity var(--nuraly-dropdown-animation-duration, 0.15s) var(--nuraly-dropdown-animation-timing, ease),
|
|
146
|
+
visibility var(--nuraly-dropdown-animation-duration, 0.15s) var(--nuraly-dropdown-animation-timing, ease),
|
|
147
|
+
transform var(--nuraly-dropdown-animation-duration, 0.15s) var(--nuraly-dropdown-animation-timing, ease);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
.dropdown__panel--slide:not(.dropdown__panel--open) {
|
|
151
|
+
opacity: 0;
|
|
152
|
+
visibility: hidden;
|
|
153
|
+
transform: translateY(-12px);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
.dropdown__panel--slide.dropdown__panel--open {
|
|
157
|
+
opacity: 1;
|
|
158
|
+
visibility: visible;
|
|
159
|
+
transform: translateY(0);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/* For top-positioned dropdowns, slide direction is reversed */
|
|
163
|
+
.dropdown__panel--slide.dropdown__panel--top:not(.dropdown__panel--open),
|
|
164
|
+
.dropdown__panel--slide.dropdown__panel--top-start:not(.dropdown__panel--open),
|
|
165
|
+
.dropdown__panel--slide.dropdown__panel--top-end:not(.dropdown__panel--open) {
|
|
166
|
+
transform: translateY(12px);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/* Scale animation - scale and opacity */
|
|
170
|
+
.dropdown__panel--scale {
|
|
171
|
+
transition: opacity var(--nuraly-dropdown-animation-duration, 0.15s) var(--nuraly-dropdown-animation-timing, ease),
|
|
172
|
+
visibility var(--nuraly-dropdown-animation-duration, 0.15s) var(--nuraly-dropdown-animation-timing, ease),
|
|
173
|
+
transform var(--nuraly-dropdown-animation-duration, 0.15s) cubic-bezier(0.25, 0.46, 0.45, 0.94);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
.dropdown__panel--scale:not(.dropdown__panel--open) {
|
|
177
|
+
opacity: 0;
|
|
178
|
+
visibility: hidden;
|
|
179
|
+
transform: scale(0.9) translateY(-8px);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
.dropdown__panel--scale.dropdown__panel--open {
|
|
183
|
+
opacity: 1;
|
|
184
|
+
visibility: visible;
|
|
185
|
+
transform: scale(1) translateY(0);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/* For top-positioned scale dropdowns */
|
|
189
|
+
.dropdown__panel--scale.dropdown__panel--top:not(.dropdown__panel--open),
|
|
190
|
+
.dropdown__panel--scale.dropdown__panel--top-start:not(.dropdown__panel--open),
|
|
191
|
+
.dropdown__panel--scale.dropdown__panel--top-end:not(.dropdown__panel--open) {
|
|
192
|
+
transform: scale(0.9) translateY(8px);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
.dropdown__panel--scale.dropdown__panel--top.dropdown__panel--open,
|
|
196
|
+
.dropdown__panel--scale.dropdown__panel--top-start.dropdown__panel--open,
|
|
197
|
+
.dropdown__panel--scale.dropdown__panel--top-end.dropdown__panel--open {
|
|
198
|
+
transform: scale(1) translateY(0);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/* Arrow */
|
|
202
|
+
.dropdown__arrow {
|
|
203
|
+
position: absolute;
|
|
204
|
+
width: 0;
|
|
205
|
+
height: 0;
|
|
206
|
+
border: var(--nuraly-dropdown-arrow-size) solid transparent;
|
|
207
|
+
border-bottom-color: var(--nuraly-dropdown-background);
|
|
208
|
+
top: calc(-1 * var(--nuraly-dropdown-arrow-size) * 2);
|
|
209
|
+
left: 50%;
|
|
210
|
+
transform: translateX(-50%);
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
.dropdown__arrow::before {
|
|
214
|
+
content: '';
|
|
215
|
+
position: absolute;
|
|
216
|
+
width: 0;
|
|
217
|
+
height: 0;
|
|
218
|
+
border: calc(var(--nuraly-dropdown-arrow-size) + 1px) solid transparent;
|
|
219
|
+
border-bottom-color: var(--nuraly-dropdown-border-color);
|
|
220
|
+
top: calc(-1 * var(--nuraly-dropdown-arrow-size) - 1px);
|
|
221
|
+
left: calc(-1 * var(--nuraly-dropdown-arrow-size) - 1px);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/* Content areas */
|
|
225
|
+
.dropdown__content {
|
|
226
|
+
overflow: auto;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
.dropdown__items {
|
|
230
|
+
display: flex;
|
|
231
|
+
flex-direction: column;
|
|
232
|
+
margin: 0;
|
|
233
|
+
padding: 0;
|
|
234
|
+
list-style: none;
|
|
235
|
+
overflow: visible; /* Allow submenus to extend outside */
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
.dropdown__item {
|
|
239
|
+
display: flex;
|
|
240
|
+
align-items: center;
|
|
241
|
+
gap: var(--nuraly-dropdown-item-gap);
|
|
242
|
+
padding: var(--nuraly-dropdown-item-padding);
|
|
243
|
+
background: var(--nuraly-color-dropdown-item-background);
|
|
244
|
+
border: none;
|
|
245
|
+
color: var(--nuraly-color-dropdown-item-text);
|
|
246
|
+
cursor: pointer;
|
|
247
|
+
text-align: left;
|
|
248
|
+
width: 100%;
|
|
249
|
+
min-height: var(--nuraly-dropdown-item-min-height);
|
|
250
|
+
transition: var(--nuraly-dropdown-item-transition);
|
|
251
|
+
font-size: inherit;
|
|
252
|
+
font-family: inherit;
|
|
253
|
+
line-height: var(--nuraly-dropdown-item-line-height);
|
|
254
|
+
position: relative;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
.dropdown__item:hover:not(.dropdown__item--disabled) {
|
|
258
|
+
background: var(--nuraly-color-dropdown-item-background-hover);
|
|
259
|
+
color: var(--nuraly-color-dropdown-item-text-hover);
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
.dropdown__item:focus {
|
|
263
|
+
outline: none;
|
|
264
|
+
background: var(--nuraly-color-dropdown-item-background-focus);
|
|
265
|
+
color: var(--nuraly-color-dropdown-item-text-focus);
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
.dropdown__item:focus-visible {
|
|
269
|
+
outline: 2px solid var(--nuraly-focus-color, #0f62fe);
|
|
270
|
+
outline-offset: -2px;
|
|
271
|
+
background: var(--nuraly-color-dropdown-item-background-focus);
|
|
272
|
+
color: var(--nuraly-color-dropdown-item-text-focus);
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
.dropdown__item:active:not(.dropdown__item--disabled) {
|
|
276
|
+
background: var(--nuraly-color-dropdown-item-background-active);
|
|
277
|
+
color: var(--nuraly-color-dropdown-item-text-active);
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
.dropdown__item--disabled {
|
|
281
|
+
opacity: var(--nuraly-dropdown-item-disabled-opacity, 0.5);
|
|
282
|
+
cursor: not-allowed;
|
|
283
|
+
pointer-events: none;
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
.dropdown__item-icon {
|
|
287
|
+
flex-shrink: 0;
|
|
288
|
+
width: var(--nuraly-dropdown-item-icon-size);
|
|
289
|
+
height: var(--nuraly-dropdown-item-icon-size);
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
.dropdown__item-label {
|
|
293
|
+
flex: 1;
|
|
294
|
+
overflow: hidden;
|
|
295
|
+
text-overflow: ellipsis;
|
|
296
|
+
white-space: nowrap;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
.dropdown__divider {
|
|
300
|
+
height: 1px;
|
|
301
|
+
background: var(--nuraly-dropdown-divider-color);
|
|
302
|
+
margin: var(--nuraly-dropdown-divider-margin);
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
/* Cascading dropdown styles */
|
|
306
|
+
.dropdown__item-container {
|
|
307
|
+
position: relative;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
/* Allow submenus to overflow when dropdown has cascading items */
|
|
311
|
+
:host([has-cascading]) .dropdown__panel {
|
|
312
|
+
overflow: visible !important;
|
|
313
|
+
max-height: none !important; /* Remove height restriction for cascading */
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
:host([has-cascading]) .dropdown__items {
|
|
317
|
+
overflow: visible !important;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/* For cascading dropdowns, we need to handle scrolling differently */
|
|
321
|
+
:host([has-cascading]) .dropdown__content {
|
|
322
|
+
overflow: visible !important;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
.dropdown__item--has-submenu {
|
|
326
|
+
display: flex;
|
|
327
|
+
justify-content: space-between;
|
|
328
|
+
align-items: center;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
.dropdown__submenu-arrow {
|
|
332
|
+
margin-left: auto;
|
|
333
|
+
font-size: 0.75em;
|
|
334
|
+
opacity: 0.6;
|
|
335
|
+
transition: transform 0.15s ease;
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
.dropdown__item--has-submenu:hover .dropdown__submenu-arrow {
|
|
339
|
+
opacity: 1;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
.dropdown__submenu {
|
|
343
|
+
position: absolute;
|
|
344
|
+
top: 0;
|
|
345
|
+
z-index: calc(var(--nuraly-dropdown-z-index, 9999) + 1);
|
|
346
|
+
background: var(--nuraly-color-dropdown-background, #ffffff);
|
|
347
|
+
border: var(--nuraly-dropdown-border-width, 1px) solid var(--nuraly-color-dropdown-border, #e0e0e0);
|
|
348
|
+
border-radius: var(--nuraly-dropdown-border-radius, 6px);
|
|
349
|
+
box-shadow: var(--nuraly-dropdown-shadow, 0 2px 6px rgba(0, 0, 0, 0.15));
|
|
350
|
+
min-width: var(--nuraly-dropdown-min-width, 10rem);
|
|
351
|
+
max-width: var(--nuraly-dropdown-max-width, 20rem);
|
|
352
|
+
max-height: var(--nuraly-dropdown-max-height, 200px);
|
|
353
|
+
overflow: auto;
|
|
354
|
+
box-sizing: border-box;
|
|
355
|
+
animation: fadeInSubmenu 0.15s ease;
|
|
356
|
+
/* Ensure submenu is visible */
|
|
357
|
+
opacity: 1;
|
|
358
|
+
visibility: visible;
|
|
359
|
+
pointer-events: auto;
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
.dropdown__custom-content {
|
|
363
|
+
padding: var(--nuraly-dropdown-item-padding, 8px 12px);
|
|
364
|
+
max-width: 100%;
|
|
365
|
+
box-sizing: border-box;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
/* Custom content styling */
|
|
369
|
+
.dropdown__custom-content h3,
|
|
370
|
+
.dropdown__custom-content h4 {
|
|
371
|
+
margin: 0 0 8px 0;
|
|
372
|
+
font-size: 0.875rem;
|
|
373
|
+
font-weight: 600;
|
|
374
|
+
color: var(--nuraly-color-text-primary);
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
.dropdown__custom-content p {
|
|
378
|
+
margin: 0 0 8px 0;
|
|
379
|
+
font-size: 0.75rem;
|
|
380
|
+
color: var(--nuraly-color-text-secondary);
|
|
381
|
+
line-height: 1.4;
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
.dropdown__custom-content button,
|
|
385
|
+
.dropdown__custom-content input,
|
|
386
|
+
.dropdown__custom-content select {
|
|
387
|
+
width: 100%;
|
|
388
|
+
margin-bottom: 8px;
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
.dropdown__custom-content button:last-child,
|
|
392
|
+
.dropdown__custom-content input:last-child,
|
|
393
|
+
.dropdown__custom-content p:last-child {
|
|
394
|
+
margin-bottom: 0;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
.dropdown__submenu--right {
|
|
398
|
+
left: 100%;
|
|
399
|
+
margin-left: 4px;
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
.dropdown__submenu--left {
|
|
403
|
+
right: 100%;
|
|
404
|
+
margin-right: 4px;
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
@keyframes fadeInSubmenu {
|
|
408
|
+
from {
|
|
409
|
+
opacity: 0;
|
|
410
|
+
transform: translateX(-8px);
|
|
411
|
+
}
|
|
412
|
+
to {
|
|
413
|
+
opacity: 1;
|
|
414
|
+
transform: translateX(0);
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
.dropdown__submenu--left {
|
|
419
|
+
animation-name: fadeInSubmenuLeft;
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
@keyframes fadeInSubmenuLeft {
|
|
423
|
+
from {
|
|
424
|
+
opacity: 0;
|
|
425
|
+
transform: translateX(8px);
|
|
426
|
+
}
|
|
427
|
+
to {
|
|
428
|
+
opacity: 1;
|
|
429
|
+
transform: translateX(0);
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
/* Focus styles for accessibility */
|
|
434
|
+
:host(:focus-within) .dropdown__trigger {
|
|
435
|
+
outline: var(--nuraly-dropdown-focus-outline);
|
|
436
|
+
outline-offset: var(--nuraly-dropdown-focus-offset);
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
/* Disabled state */
|
|
440
|
+
:host([disabled]) {
|
|
441
|
+
opacity: var(--nuraly-dropdown-disabled-opacity, 0.5);
|
|
442
|
+
pointer-events: none;
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
/* Hidden state */
|
|
446
|
+
[hidden] {
|
|
447
|
+
display: none !important;
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
`;
|
|
451
|
+
//# sourceMappingURL=dropdown.style.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dropdown.style.js","sourceRoot":"","sources":["../../../src/components/dropdown/dropdown.style.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgcxB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css`\n :host {\n display: inline-block;\n position: relative;\n color: var(--nuraly-color-text);\n font-family: var(--nuraly-dropdown-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif);\n }\n\n .dropdown {\n position: relative;\n display: inline-block;\n }\n\n .dropdown__trigger {\n display: inline-block;\n cursor: pointer;\n }\n\n .dropdown__trigger:focus-within {\n outline: var(--nuraly-focus-outline, 2px solid #0f62fe);\n outline-offset: var(--nuraly-focus-outline-offset, 1px);\n }\n\n .dropdown__panel {\n position: absolute;\n top: 100%;\n left: 0;\n z-index: var(--nuraly-dropdown-z-index, 9999);\n background: var(--nuraly-color-dropdown-background, #ffffff);\n border: var(--nuraly-dropdown-border-width, 1px) solid var(--nuraly-color-dropdown-border, #e0e0e0);\n border-radius: var(--nuraly-dropdown-border-radius, 6px);\n box-shadow: var(--nuraly-dropdown-shadow, 0 2px 6px rgba(0, 0, 0, 0.15));\n min-width: var(--nuraly-dropdown-min-width, 10rem);\n max-width: var(--nuraly-dropdown-max-width, 20rem);\n max-height: var(--nuraly-dropdown-max-height, 200px);\n overflow: auto;\n /* Use opacity and visibility for smooth animations */\n opacity: 0;\n visibility: hidden;\n transform: translateY(-8px);\n transition: all var(--nuraly-dropdown-animation-duration, 0.15s) var(--nuraly-dropdown-animation-timing, ease);\n /* Ensure proper containment */\n box-sizing: border-box;\n /* Create new stacking context to prevent layering issues */\n isolation: isolate;\n /* Force above other elements */\n transform-origin: top center;\n }\n\n .dropdown__panel--open {\n opacity: 1;\n visibility: visible;\n transform: translateY(0);\n }\n\n /* Alternative attribute-based selector (like select component) */\n :host([open]) .dropdown__panel {\n opacity: 1;\n visibility: visible;\n transform: translateY(0);\n }\n\n /* Placement variants */\n .dropdown__panel--top,\n .dropdown__panel--top-start,\n .dropdown__panel--top-end {\n top: auto;\n bottom: 100%;\n margin-bottom: 1px;\n margin-top: 0;\n transform: translateY(8px);\n }\n\n .dropdown__panel--top.dropdown__panel--open,\n .dropdown__panel--top-start.dropdown__panel--open,\n .dropdown__panel--top-end.dropdown__panel--open {\n transform: translateY(0);\n }\n\n .dropdown__panel--bottom-end,\n .dropdown__panel--top-end {\n left: auto;\n right: 0;\n }\n\n .dropdown__panel--bottom-start,\n .dropdown__panel--top-start {\n left: 0;\n right: auto;\n }\n\n /* Size variants */\n .dropdown__panel--small {\n font-size: var(--nuraly-dropdown-small-font-size, 0.75rem);\n }\n\n .dropdown__panel--medium {\n font-size: var(--nuraly-dropdown-font-size, 0.875rem);\n }\n\n .dropdown__panel--large {\n font-size: var(--nuraly-dropdown-large-font-size, 1rem);\n }\n\n /* Animation variants */\n \n /* No animation - instant show/hide */\n .dropdown__panel--none {\n transition: none;\n }\n\n .dropdown__panel--none:not(.dropdown__panel--open) {\n opacity: 0;\n visibility: hidden;\n transform: none;\n }\n\n .dropdown__panel--none.dropdown__panel--open {\n opacity: 1;\n visibility: visible;\n transform: none;\n }\n\n /* Fade animation - opacity only */\n .dropdown__panel--fade {\n transition: opacity var(--nuraly-dropdown-animation-duration, 0.15s) var(--nuraly-dropdown-animation-timing, ease),\n visibility var(--nuraly-dropdown-animation-duration, 0.15s) var(--nuraly-dropdown-animation-timing, ease);\n }\n\n .dropdown__panel--fade:not(.dropdown__panel--open) {\n opacity: 0;\n visibility: hidden;\n transform: none;\n }\n\n .dropdown__panel--fade.dropdown__panel--open {\n opacity: 1;\n visibility: visible;\n transform: none;\n }\n\n /* Slide animation - slide down/up with opacity */\n .dropdown__panel--slide {\n transition: opacity var(--nuraly-dropdown-animation-duration, 0.15s) var(--nuraly-dropdown-animation-timing, ease),\n visibility var(--nuraly-dropdown-animation-duration, 0.15s) var(--nuraly-dropdown-animation-timing, ease),\n transform var(--nuraly-dropdown-animation-duration, 0.15s) var(--nuraly-dropdown-animation-timing, ease);\n }\n\n .dropdown__panel--slide:not(.dropdown__panel--open) {\n opacity: 0;\n visibility: hidden;\n transform: translateY(-12px);\n }\n\n .dropdown__panel--slide.dropdown__panel--open {\n opacity: 1;\n visibility: visible;\n transform: translateY(0);\n }\n\n /* For top-positioned dropdowns, slide direction is reversed */\n .dropdown__panel--slide.dropdown__panel--top:not(.dropdown__panel--open),\n .dropdown__panel--slide.dropdown__panel--top-start:not(.dropdown__panel--open),\n .dropdown__panel--slide.dropdown__panel--top-end:not(.dropdown__panel--open) {\n transform: translateY(12px);\n }\n\n /* Scale animation - scale and opacity */\n .dropdown__panel--scale {\n transition: opacity var(--nuraly-dropdown-animation-duration, 0.15s) var(--nuraly-dropdown-animation-timing, ease),\n visibility var(--nuraly-dropdown-animation-duration, 0.15s) var(--nuraly-dropdown-animation-timing, ease),\n transform var(--nuraly-dropdown-animation-duration, 0.15s) cubic-bezier(0.25, 0.46, 0.45, 0.94);\n }\n\n .dropdown__panel--scale:not(.dropdown__panel--open) {\n opacity: 0;\n visibility: hidden;\n transform: scale(0.9) translateY(-8px);\n }\n\n .dropdown__panel--scale.dropdown__panel--open {\n opacity: 1;\n visibility: visible;\n transform: scale(1) translateY(0);\n }\n\n /* For top-positioned scale dropdowns */\n .dropdown__panel--scale.dropdown__panel--top:not(.dropdown__panel--open),\n .dropdown__panel--scale.dropdown__panel--top-start:not(.dropdown__panel--open),\n .dropdown__panel--scale.dropdown__panel--top-end:not(.dropdown__panel--open) {\n transform: scale(0.9) translateY(8px);\n }\n\n .dropdown__panel--scale.dropdown__panel--top.dropdown__panel--open,\n .dropdown__panel--scale.dropdown__panel--top-start.dropdown__panel--open,\n .dropdown__panel--scale.dropdown__panel--top-end.dropdown__panel--open {\n transform: scale(1) translateY(0);\n }\n\n /* Arrow */\n .dropdown__arrow {\n position: absolute;\n width: 0;\n height: 0;\n border: var(--nuraly-dropdown-arrow-size) solid transparent;\n border-bottom-color: var(--nuraly-dropdown-background);\n top: calc(-1 * var(--nuraly-dropdown-arrow-size) * 2);\n left: 50%;\n transform: translateX(-50%);\n }\n\n .dropdown__arrow::before {\n content: '';\n position: absolute;\n width: 0;\n height: 0;\n border: calc(var(--nuraly-dropdown-arrow-size) + 1px) solid transparent;\n border-bottom-color: var(--nuraly-dropdown-border-color);\n top: calc(-1 * var(--nuraly-dropdown-arrow-size) - 1px);\n left: calc(-1 * var(--nuraly-dropdown-arrow-size) - 1px);\n }\n\n /* Content areas */\n .dropdown__content {\n overflow: auto;\n }\n\n .dropdown__items {\n display: flex;\n flex-direction: column;\n margin: 0;\n padding: 0;\n list-style: none;\n overflow: visible; /* Allow submenus to extend outside */\n }\n\n .dropdown__item {\n display: flex;\n align-items: center;\n gap: var(--nuraly-dropdown-item-gap);\n padding: var(--nuraly-dropdown-item-padding);\n background: var(--nuraly-color-dropdown-item-background);\n border: none;\n color: var(--nuraly-color-dropdown-item-text);\n cursor: pointer;\n text-align: left;\n width: 100%;\n min-height: var(--nuraly-dropdown-item-min-height);\n transition: var(--nuraly-dropdown-item-transition);\n font-size: inherit;\n font-family: inherit;\n line-height: var(--nuraly-dropdown-item-line-height);\n position: relative;\n }\n\n .dropdown__item:hover:not(.dropdown__item--disabled) {\n background: var(--nuraly-color-dropdown-item-background-hover);\n color: var(--nuraly-color-dropdown-item-text-hover);\n }\n\n .dropdown__item:focus {\n outline: none;\n background: var(--nuraly-color-dropdown-item-background-focus);\n color: var(--nuraly-color-dropdown-item-text-focus);\n }\n\n .dropdown__item:focus-visible {\n outline: 2px solid var(--nuraly-focus-color, #0f62fe);\n outline-offset: -2px;\n background: var(--nuraly-color-dropdown-item-background-focus);\n color: var(--nuraly-color-dropdown-item-text-focus);\n }\n\n .dropdown__item:active:not(.dropdown__item--disabled) {\n background: var(--nuraly-color-dropdown-item-background-active);\n color: var(--nuraly-color-dropdown-item-text-active);\n }\n\n .dropdown__item--disabled {\n opacity: var(--nuraly-dropdown-item-disabled-opacity, 0.5);\n cursor: not-allowed;\n pointer-events: none;\n }\n\n .dropdown__item-icon {\n flex-shrink: 0;\n width: var(--nuraly-dropdown-item-icon-size);\n height: var(--nuraly-dropdown-item-icon-size);\n }\n\n .dropdown__item-label {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .dropdown__divider {\n height: 1px;\n background: var(--nuraly-dropdown-divider-color);\n margin: var(--nuraly-dropdown-divider-margin);\n }\n\n /* Cascading dropdown styles */\n .dropdown__item-container {\n position: relative;\n }\n\n /* Allow submenus to overflow when dropdown has cascading items */\n :host([has-cascading]) .dropdown__panel {\n overflow: visible !important;\n max-height: none !important; /* Remove height restriction for cascading */\n }\n\n :host([has-cascading]) .dropdown__items {\n overflow: visible !important;\n }\n\n /* For cascading dropdowns, we need to handle scrolling differently */\n :host([has-cascading]) .dropdown__content {\n overflow: visible !important;\n }\n\n .dropdown__item--has-submenu {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n\n .dropdown__submenu-arrow {\n margin-left: auto;\n font-size: 0.75em;\n opacity: 0.6;\n transition: transform 0.15s ease;\n }\n\n .dropdown__item--has-submenu:hover .dropdown__submenu-arrow {\n opacity: 1;\n }\n\n .dropdown__submenu {\n position: absolute;\n top: 0;\n z-index: calc(var(--nuraly-dropdown-z-index, 9999) + 1);\n background: var(--nuraly-color-dropdown-background, #ffffff);\n border: var(--nuraly-dropdown-border-width, 1px) solid var(--nuraly-color-dropdown-border, #e0e0e0);\n border-radius: var(--nuraly-dropdown-border-radius, 6px);\n box-shadow: var(--nuraly-dropdown-shadow, 0 2px 6px rgba(0, 0, 0, 0.15));\n min-width: var(--nuraly-dropdown-min-width, 10rem);\n max-width: var(--nuraly-dropdown-max-width, 20rem);\n max-height: var(--nuraly-dropdown-max-height, 200px);\n overflow: auto;\n box-sizing: border-box;\n animation: fadeInSubmenu 0.15s ease;\n /* Ensure submenu is visible */\n opacity: 1;\n visibility: visible;\n pointer-events: auto;\n }\n\n .dropdown__custom-content {\n padding: var(--nuraly-dropdown-item-padding, 8px 12px);\n max-width: 100%;\n box-sizing: border-box;\n }\n\n /* Custom content styling */\n .dropdown__custom-content h3,\n .dropdown__custom-content h4 {\n margin: 0 0 8px 0;\n font-size: 0.875rem;\n font-weight: 600;\n color: var(--nuraly-color-text-primary);\n }\n\n .dropdown__custom-content p {\n margin: 0 0 8px 0;\n font-size: 0.75rem;\n color: var(--nuraly-color-text-secondary);\n line-height: 1.4;\n }\n\n .dropdown__custom-content button,\n .dropdown__custom-content input,\n .dropdown__custom-content select {\n width: 100%;\n margin-bottom: 8px;\n }\n\n .dropdown__custom-content button:last-child,\n .dropdown__custom-content input:last-child,\n .dropdown__custom-content p:last-child {\n margin-bottom: 0;\n }\n\n .dropdown__submenu--right {\n left: 100%;\n margin-left: 4px;\n }\n\n .dropdown__submenu--left {\n right: 100%;\n margin-right: 4px;\n }\n\n @keyframes fadeInSubmenu {\n from {\n opacity: 0;\n transform: translateX(-8px);\n }\n to {\n opacity: 1;\n transform: translateX(0);\n }\n }\n\n .dropdown__submenu--left {\n animation-name: fadeInSubmenuLeft;\n }\n\n @keyframes fadeInSubmenuLeft {\n from {\n opacity: 0;\n transform: translateX(8px);\n }\n to {\n opacity: 1;\n transform: translateX(0);\n }\n }\n\n /* Focus styles for accessibility */\n :host(:focus-within) .dropdown__trigger {\n outline: var(--nuraly-dropdown-focus-outline);\n outline-offset: var(--nuraly-dropdown-focus-offset);\n }\n\n /* Disabled state */\n :host([disabled]) {\n opacity: var(--nuraly-dropdown-disabled-opacity, 0.5);\n pointer-events: none;\n }\n\n /* Hidden state */\n [hidden] {\n display: none !important;\n }\n\n`;"]}
|
package/dropdown.types.d.ts
CHANGED
|
@@ -1,4 +1,86 @@
|
|
|
1
|
-
|
|
1
|
+
import { TemplateResult } from 'lit';
|
|
2
|
+
/**
|
|
3
|
+
* Dropdown placement options
|
|
4
|
+
*/
|
|
5
|
+
export declare const enum DropdownPlacement {
|
|
6
|
+
Bottom = "bottom",
|
|
7
|
+
Top = "top",
|
|
8
|
+
BottomStart = "bottom-start",
|
|
9
|
+
BottomEnd = "bottom-end",
|
|
10
|
+
TopStart = "top-start",
|
|
11
|
+
TopEnd = "top-end",
|
|
12
|
+
Auto = "auto"
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Dropdown trigger events
|
|
16
|
+
*/
|
|
17
|
+
export declare const enum DropdownTrigger {
|
|
18
|
+
Click = "click",
|
|
19
|
+
Hover = "hover",
|
|
20
|
+
Focus = "focus",
|
|
21
|
+
Manual = "manual"
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Dropdown size variants
|
|
25
|
+
*/
|
|
26
|
+
export declare const enum DropdownSize {
|
|
27
|
+
Small = "small",
|
|
28
|
+
Medium = "medium",
|
|
29
|
+
Large = "large"
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Dropdown animation types
|
|
33
|
+
*/
|
|
34
|
+
export declare const enum DropdownAnimation {
|
|
35
|
+
None = "none",
|
|
36
|
+
Fade = "fade",
|
|
37
|
+
Slide = "slide",
|
|
38
|
+
Scale = "scale"
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Dropdown item configuration
|
|
42
|
+
*/
|
|
43
|
+
export interface DropdownItem {
|
|
44
|
+
id: string;
|
|
45
|
+
label: string;
|
|
46
|
+
value?: any;
|
|
47
|
+
icon?: string;
|
|
48
|
+
disabled?: boolean;
|
|
49
|
+
divider?: boolean;
|
|
50
|
+
options?: DropdownItem[];
|
|
51
|
+
customContent?: string | TemplateResult;
|
|
52
|
+
additionalData?: any;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Dropdown position information
|
|
56
|
+
*/
|
|
57
|
+
export interface DropdownPosition {
|
|
58
|
+
top: number;
|
|
59
|
+
left: number;
|
|
60
|
+
width: number;
|
|
61
|
+
height?: number;
|
|
62
|
+
placement: DropdownPlacement;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Dropdown configuration
|
|
66
|
+
*/
|
|
67
|
+
export interface DropdownConfig {
|
|
68
|
+
placement?: DropdownPlacement;
|
|
69
|
+
trigger?: DropdownTrigger;
|
|
70
|
+
size?: DropdownSize;
|
|
71
|
+
animation?: DropdownAnimation;
|
|
72
|
+
disabled?: boolean;
|
|
73
|
+
arrow?: boolean;
|
|
74
|
+
autoClose?: boolean;
|
|
75
|
+
closeOnEscape?: boolean;
|
|
76
|
+
closeOnOutsideClick?: boolean;
|
|
77
|
+
offset?: number;
|
|
78
|
+
delay?: number;
|
|
79
|
+
maxHeight?: string;
|
|
80
|
+
minWidth?: string;
|
|
81
|
+
items?: DropdownItem[];
|
|
82
|
+
}
|
|
83
|
+
export interface IOption extends DropdownItem {
|
|
2
84
|
label: string;
|
|
3
85
|
value?: string;
|
|
4
86
|
disabled?: boolean;
|
package/dropdown.types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dropdown.types.js","sourceRoot":"","sources":["../../../src/components/dropdown/dropdown.types.ts"],"names":[],"mappings":"","sourcesContent":["
|
|
1
|
+
{"version":3,"file":"dropdown.types.js","sourceRoot":"","sources":["../../../src/components/dropdown/dropdown.types.ts"],"names":[],"mappings":"","sourcesContent":["import { TemplateResult } from 'lit';\n\n/**\n * Dropdown placement options\n */\nexport const enum DropdownPlacement {\n Bottom = 'bottom',\n Top = 'top',\n BottomStart = 'bottom-start',\n BottomEnd = 'bottom-end',\n TopStart = 'top-start',\n TopEnd = 'top-end',\n Auto = 'auto'\n}\n\n/**\n * Dropdown trigger events\n */\nexport const enum DropdownTrigger {\n Click = 'click',\n Hover = 'hover',\n Focus = 'focus',\n Manual = 'manual'\n}\n\n/**\n * Dropdown size variants\n */\nexport const enum DropdownSize {\n Small = 'small',\n Medium = 'medium',\n Large = 'large'\n}\n\n/**\n * Dropdown animation types\n */\nexport const enum DropdownAnimation {\n None = 'none',\n Fade = 'fade',\n Slide = 'slide',\n Scale = 'scale'\n}\n\n/**\n * Dropdown item configuration\n */\nexport interface DropdownItem {\n id: string;\n label: string;\n value?: any;\n icon?: string;\n disabled?: boolean;\n divider?: boolean;\n options?: DropdownItem[]; // Cascading submenu items (use either this OR customContent)\n customContent?: string | TemplateResult; // Custom HTML string or Lit template for interactive submenu\n additionalData?: any;\n}\n\n/**\n * Dropdown position information\n */\nexport interface DropdownPosition {\n top: number;\n left: number;\n width: number;\n height?: number;\n placement: DropdownPlacement;\n}\n\n/**\n * Dropdown configuration\n */\nexport interface DropdownConfig {\n placement?: DropdownPlacement;\n trigger?: DropdownTrigger;\n size?: DropdownSize;\n animation?: DropdownAnimation;\n disabled?: boolean;\n arrow?: boolean;\n autoClose?: boolean;\n closeOnEscape?: boolean;\n closeOnOutsideClick?: boolean;\n offset?: number;\n delay?: number;\n maxHeight?: string;\n minWidth?: string;\n items?: DropdownItem[];\n}\n\n// Legacy interfaces for backward compatibility - will be deprecated\nexport interface IOption extends DropdownItem {\n label: string;\n value?: string;\n disabled?: boolean;\n icon?: string;\n children?: IOption[];\n additionalData?: any;\n}\n\nexport const enum TriggerMode {\n Click = 'click',\n Hover = 'hover',\n}\n\nexport const enum DropDownDirection {\n Right = 'right',\n Left = 'left',\n}\n"]}
|
package/index.d.ts
CHANGED
package/index.js
CHANGED
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/dropdown/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/dropdown/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC","sourcesContent":["export * from './dropdown.component.js';\nexport * from './dropdown.types.js';\n"]}
|
package/package.json
CHANGED
|
@@ -1,15 +1,26 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nuralyui/dropdown",
|
|
3
|
-
"version": "0.0.
|
|
4
|
-
"description": "",
|
|
3
|
+
"version": "0.0.16",
|
|
4
|
+
"description": "Dropdown component for NuralyUI",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"type": "module",
|
|
7
|
-
"dependencies": {
|
|
8
|
-
"dayjs": "^1.11.7"
|
|
9
|
-
},
|
|
10
7
|
"scripts": {
|
|
11
8
|
"test": "echo \"Error: no test specified\" && exit 1"
|
|
12
9
|
},
|
|
13
10
|
"author": "Labidi Aymen",
|
|
14
|
-
"license": "ISC"
|
|
11
|
+
"license": "ISC",
|
|
12
|
+
"exports": {
|
|
13
|
+
".": {
|
|
14
|
+
"import": "./index.js"
|
|
15
|
+
},
|
|
16
|
+
"./bundle": {
|
|
17
|
+
"import": "./bundle.js"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"files": [
|
|
21
|
+
"bundle.js",
|
|
22
|
+
"*.js",
|
|
23
|
+
"*.d.ts",
|
|
24
|
+
"*.js.map"
|
|
25
|
+
]
|
|
15
26
|
}
|
package/react.d.ts
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare const
|
|
1
|
+
import { NrDropdownElement } from './dropdown.component.js';
|
|
2
|
+
export declare const NrDropdown: import("@lit-labs/react").ReactWebComponent<NrDropdownElement, {
|
|
3
|
+
'nr-dropdown-open': string;
|
|
4
|
+
'nr-dropdown-close': string;
|
|
5
|
+
'nr-dropdown-item-click': string;
|
|
6
|
+
}>;
|
|
3
7
|
//# sourceMappingURL=react.d.ts.map
|
package/react.js
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { createComponent } from '@lit-labs/react';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import {
|
|
4
|
-
export const
|
|
5
|
-
tagName: '
|
|
6
|
-
elementClass:
|
|
3
|
+
import { NrDropdownElement } from './dropdown.component.js';
|
|
4
|
+
export const NrDropdown = createComponent({
|
|
5
|
+
tagName: 'nr-dropdown',
|
|
6
|
+
elementClass: NrDropdownElement,
|
|
7
7
|
react: React,
|
|
8
|
-
events: {
|
|
8
|
+
events: {
|
|
9
|
+
'nr-dropdown-open': 'onDropdownOpen',
|
|
10
|
+
'nr-dropdown-close': 'onDropdownClose',
|
|
11
|
+
'nr-dropdown-item-click': 'onDropdownItemClick'
|
|
12
|
+
},
|
|
9
13
|
});
|
|
10
14
|
//# sourceMappingURL=react.js.map
|
package/react.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.js","sourceRoot":"","sources":["../../../src/components/dropdown/react.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"react.js","sourceRoot":"","sources":["../../../src/components/dropdown/react.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,MAAM,CAAC,MAAM,UAAU,GAAG,eAAe,CAAC;IACxC,OAAO,EAAE,aAAa;IACtB,YAAY,EAAE,iBAAiB;IAC/B,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE;QACN,kBAAkB,EAAE,gBAAgB;QACpC,mBAAmB,EAAE,iBAAiB;QACtC,wBAAwB,EAAE,qBAAqB;KAChD;CACF,CAAC,CAAC","sourcesContent":["import { createComponent } from '@lit-labs/react';\nimport * as React from 'react';\nimport { NrDropdownElement } from './dropdown.component.js';\n\nexport const NrDropdown = createComponent({\n tagName: 'nr-dropdown',\n elementClass: NrDropdownElement,\n react: React,\n events: {\n 'nr-dropdown-open': 'onDropdownOpen',\n 'nr-dropdown-close': 'onDropdownClose',\n 'nr-dropdown-item-click': 'onDropdownItemClick'\n },\n});\n"]}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2023 Google Laabidi Aymen
|
|
4
|
-
* SPDX-License-Identifier: MIT
|
|
5
|
-
*/
|
|
6
|
-
import { LitElement } from 'lit';
|
|
7
|
-
import '../hy-dropdown.component';
|
|
8
|
-
import { IOption } from '../dropdown.types';
|
|
9
|
-
export declare class ElButtonDemoElement extends LitElement {
|
|
10
|
-
static styles: import("lit").CSSResult[];
|
|
11
|
-
options: IOption[];
|
|
12
|
-
render(): import("lit").TemplateResult<1>;
|
|
13
|
-
}
|
|
14
|
-
declare global {
|
|
15
|
-
interface HTMLElementTagNameMap {
|
|
16
|
-
'hy-dropdwon-demo': ElButtonDemoElement;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=hy-dropdowns-demo.d.ts.map
|