vanilla-jui 1.5.36 → 1.5.37

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vanilla-jui",
3
- "version": "1.5.36",
3
+ "version": "1.5.37",
4
4
  "private": false,
5
5
  "description": "A lightweight, reactive, and fully customizable vanilla JS UI library.",
6
6
  "keywords": [
package/src/css/menu.css CHANGED
@@ -34,20 +34,9 @@
34
34
 
35
35
  .j-menu .menu .menu-item {
36
36
  flex-shrink: 0;
37
- font-size: var(--menu-font-size);
38
37
  }
39
38
 
40
39
  .j-menu .menu .menu-item:not(:has(a)) {
41
- height: var(--menu-item-height);
42
- line-height: var(--menu-item-line-height);
43
- font-weight: var(--menu-font-weight);
44
- text-decoration: underline;
45
- -webkit-text-decoration-style: wavy;
46
- text-decoration-style: wavy;
47
- -webkit-text-decoration-color: var(--state-danger);
48
- text-decoration-color: var(--state-danger);
49
- text-underline-offset: 4px;
50
- padding: 4px 1rem;
51
40
  position: relative;
52
41
  cursor: help;
53
42
  }
@@ -64,25 +53,6 @@
64
53
  appearance: button;
65
54
  touch-action: manipulation;
66
55
  text-decoration: none;
67
-
68
- gap: var(--menu-link-gap);
69
- color: currentColor;
70
- background-color: inherit;
71
- font-weight: var(--font-medium);
72
-
73
- padding: var(--menu-item-padding);
74
- height: var(--menu-item-height);
75
- line-height: var(--menu-item-line-height);
76
- border-width: var(--menu-item-border-width);
77
- border-style: solid;
78
- border-color: var(--ui-border);
79
- border-radius: var(--menu-item-border-radius);
80
- }
81
-
82
- .j-menu .menu .menu-item a .el-icon,
83
- .j-menu .menu .menu-item a svg {
84
- width: var(--menu-item-icon-size);
85
- height: var(--menu-item-icon-size);
86
56
  }
87
57
 
88
58
  .j-menu:not([data-menu-type='mobile']):not([data-menu-type='bottom'])
@@ -92,36 +62,9 @@
92
62
  pointer-events: none;
93
63
  }
94
64
 
95
- .j-menu .menu .menu-item.menu-item-has-children > a::after {
96
- content: '';
97
- width: 0;
98
- height: 0;
99
- margin-left: 4px;
100
- vertical-align: middle;
101
- border-left: 4px solid transparent;
102
- border-right: 4px solid transparent;
103
- border-top: 5px solid currentColor;
104
- transition: transform 0.2s ease-in-out;
105
- }
106
-
107
- .j-menu .menu .menu-item.menu-item-has-children:hover > a::after {
108
- transform: rotate(180deg);
109
- }
110
-
111
- /* submenu */
112
65
  .j-menu .menu .menu-item .sub-menu {
113
66
  display: none;
114
67
  position: absolute;
115
- transform: translateY(1px);
116
- padding: var(--s2) 0;
117
- background: var(--sub-menu-bg);
118
- border-width: var(--sub-menu-border-width);
119
- border-style: var(--sub-menu-border-style);
120
- border-color: var(--sub-menu-border-color);
121
- border-radius: var(--sub-menu-border-radius);
122
- min-width: var(--sub-menu-min-width);
123
- max-width: var(--sub-menu-max-width);
124
- box-shadow: var(--sub-menu-box-shadow);
125
68
  }
126
69
 
127
70
  .j-menu .menu .menu-item .sub-menu .menu-item a {
@@ -136,518 +79,4 @@
136
79
  display: block;
137
80
  z-index: var(--z-submenu);
138
81
  }
139
-
140
- .j-menu .menu .menu-item .sub-menu .menu-item:hover a {
141
- background: var(--sub-menu-item-hover-bg);
142
- color: var(--sub-menu-item-hover-fg);
143
- outline-width: var(--sub-menu-item-hover-outline-width);
144
- outline-style: var(--sub-menu-item-hover-outline-style);
145
- outline-color: var(--sub-menu-item-hover-outline-color);
146
- }
147
-
148
- /* menu status */
149
- .j-menu .menu .menu-item a:hover,
150
- .j-menu .menu .menu-item.menu-item-has-children:hover > a {
151
- text-decoration: none;
152
- background: var(--menu-item-hover-bg);
153
- color: var(--menu-item-hover-fg);
154
- }
155
-
156
- .j-menu .menu > .menu-item.current-menu-item > a {
157
- color: var(--menu-link-current-fg);
158
- }
159
-
160
- .j-menu
161
- .menu
162
- .menu-item.current-menu-item
163
- > .sub-menu
164
- > .menu-item:not(.current-menu-item)
165
- a {
166
- color: inherit;
167
- }
168
-
169
- .j-menu
170
- .menu-item.current-menu-item
171
- > .sub-menu
172
- > .menu-item:not(.current-menu-item):hover
173
- a {
174
- color: var(--tone-fg);
175
- }
176
-
177
- .j-menu
178
- .menu-item.menu-item-has-children:hover
179
- > .sub-menu
180
- > .menu-item.current-menu-item
181
- a {
182
- color: var(--tone-fg);
183
- background-color: var(--tone-solid);
184
- outline: 1px solid var(--tone-solid);
185
- }
186
-
187
- /* error status */
188
- .j-menu .menu .menu-item:not(:has(a)):hover,
189
- .j-menu[data-menu-type='mobile'] .menu .menu-item:not(:has(a)):hover {
190
- background: var(--menu-item-error-bg);
191
- border-radius: var(--space);
192
- }
193
-
194
- .j-menu .menu .menu-item:not(:has(a)):hover::after,
195
- .j-menu[data-menu-type='mobile'] .menu .menu-item:not(:has(a)):hover::after {
196
- content: 'Error';
197
- position: absolute;
198
- top: 0;
199
- right: 0;
200
- background: var(--menu-item-error-tip-bg);
201
- color: var(--menu-item-error-tip-fg);
202
- font-size: var(--menu-item-error-tip-font-size);
203
- padding: var(--menu-item-error-tip-padding);
204
- border-radius: var(--space);
205
- }
206
-
207
- /* menu extensions */
208
- /* list card menu */
209
- .j-menu .menu-item.menu-item-has-children.list-card-menu:hover > .sub-menu {
210
- min-width: 240px;
211
- max-width: 360px;
212
- width: auto;
213
- display: grid;
214
- grid-template-columns: repeat(2, 1fr);
215
- transform: translateX(-20%) translateY(1px);
216
- }
217
-
218
- .j-menu .menu-item.list-card-menu > .sub-menu > .menu-item > a {
219
- overflow: hidden;
220
- display: -webkit-box;
221
- -webkit-box-orient: vertical;
222
- -webkit-line-clamp: 1;
223
- line-clamp: 1;
224
- padding: calc(var(--space) * 1.25) calc(var(--space) * 2.5);
225
- line-height: 1.75;
226
- }
227
-
228
- /* advanced card menu */
229
- .j-menu
230
- .menu-item.menu-item-has-children.advanced-card-menu:hover
231
- > .sub-menu {
232
- display: grid;
233
- grid-template-columns: repeat(6, 1fr);
234
- grid-template-rows: repeat(6, 1fr);
235
- grid-column-gap: var(--space);
236
- grid-row-gap: var(--space);
237
- min-width: 400px;
238
- max-width: 600px;
239
- padding-right: var(--s2);
240
- transform: translateX(-33.33%) translateY(1px);
241
- }
242
-
243
- .j-menu
244
- .menu-item.menu-item-has-children.advanced-card-menu:hover
245
- > .sub-menu
246
- img {
247
- margin: 0;
248
- }
249
-
250
- .j-menu
251
- .menu-item.menu-item-has-children.advanced-card-menu:hover
252
- > .sub-menu
253
- > .menu-item:nth-child(1) {
254
- grid-area: 1 / 1 / 2 / 3;
255
- }
256
-
257
- .j-menu
258
- .menu-item.menu-item-has-children.advanced-card-menu:hover
259
- > .sub-menu
260
- > .menu-item:nth-child(2) {
261
- grid-area: 1 / 3 / 4 / 5;
262
- }
263
-
264
- .j-menu
265
- .menu-item.menu-item-has-children.advanced-card-menu:hover
266
- > .sub-menu
267
- > .menu-item:nth-child(3) {
268
- grid-area: 1 / 5 / 4 / 7;
269
- }
270
-
271
- .j-menu
272
- .menu-item.menu-item-has-children.advanced-card-menu:hover
273
- > .sub-menu
274
- > .menu-item:nth-child(4) {
275
- grid-area: 2 / 1 / 3 / 3;
276
- }
277
-
278
- .j-menu
279
- .menu-item.menu-item-has-children.advanced-card-menu:hover
280
- > .sub-menu
281
- > .menu-item:nth-child(5) {
282
- grid-area: 3 / 1 / 4 / 3;
283
- }
284
-
285
- .j-menu
286
- .menu-item.menu-item-has-children.advanced-card-menu:hover
287
- > .sub-menu
288
- > .menu-item:nth-child(6) {
289
- grid-area: 4 / 1 / 5 / 3;
290
- }
291
-
292
- .j-menu
293
- .menu-item.menu-item-has-children.advanced-card-menu:hover
294
- > .sub-menu
295
- > .menu-item:nth-child(7) {
296
- grid-area: 4 / 3 / 7 / 5;
297
- }
298
-
299
- .j-menu
300
- .menu-item.menu-item-has-children.advanced-card-menu:hover
301
- > .sub-menu
302
- > .menu-item:nth-child(8) {
303
- grid-area: 4 / 5 / 7 / 7;
304
- }
305
-
306
- .j-menu
307
- .menu-item.menu-item-has-children.advanced-card-menu:hover
308
- > .sub-menu
309
- > .menu-item:nth-child(9) {
310
- grid-area: 5 / 1 / 6 / 3;
311
- }
312
-
313
- .j-menu
314
- .menu-item.menu-item-has-children.advanced-card-menu:hover
315
- > .sub-menu
316
- > .menu-item:nth-child(10) {
317
- grid-area: 6 / 1 / 7 / 3;
318
- }
319
-
320
- .j-menu
321
- .menu-item.menu-item-has-children.advanced-card-menu:hover
322
- > .sub-menu
323
- > .menu-item:nth-child(2)
324
- a,
325
- .j-menu
326
- .menu-item.menu-item-has-children.advanced-card-menu:hover
327
- > .sub-menu
328
- > .menu-item:nth-child(3)
329
- a,
330
- .j-menu
331
- .menu-item.menu-item-has-children.advanced-card-menu:hover
332
- > .sub-menu
333
- > .menu-item:nth-child(7)
334
- a,
335
- .j-menu
336
- .menu-item.menu-item-has-children.advanced-card-menu:hover
337
- > .sub-menu
338
- > .menu-item:nth-child(8)
339
- a {
340
- padding: 0;
341
- }
342
-
343
- .j-menu
344
- .menu-item.menu-item-has-children.advanced-card-menu:hover
345
- > .sub-menu
346
- > .menu-item:nth-child(2)
347
- a:hover,
348
- .j-menu
349
- .menu-item.menu-item-has-children.advanced-card-menu:hover
350
- > .sub-menu
351
- > .menu-item:nth-child(3)
352
- a:hover,
353
- .j-menu
354
- .menu-item.menu-item-has-children.advanced-card-menu:hover
355
- > .sub-menu
356
- > .menu-item:nth-child(7)
357
- a:hover,
358
- .j-menu
359
- .menu-item.menu-item-has-children.advanced-card-menu:hover
360
- > .sub-menu
361
- > .menu-item:nth-child(8)
362
- a:hover {
363
- background-color: transparent;
364
- outline-color: transparent;
365
- }
366
-
367
- /* mobile menu */
368
- .j-menu[data-menu-type='mobile'] {
369
- background: var(--ui-bg);
370
- overflow-x: hidden;
371
- overflow-y: auto;
372
- scrollbar-width: thin;
373
- scrollbar-color: var(--ui-border) transparent;
374
- height: 100%;
375
- }
376
-
377
- .j-menu[data-menu-type='mobile'] .menu {
378
- flex-direction: column;
379
- align-items: flex-start;
380
- position: relative;
381
- }
382
-
383
- .j-menu[data-menu-type='mobile'] .menu .menu-item {
384
- width: 100%;
385
- }
386
-
387
- .j-menu[data-menu-type='mobile'] .menu .menu-item:not(:has(a)) {
388
- padding: var(--menu-item-padding);
389
- }
390
-
391
- .j-menu[data-menu-type='mobile'] .menu .menu-item a {
392
- justify-content: flex-start;
393
- flex-wrap: wrap;
394
- gap: var(--s2);
395
- white-space: normal;
396
- min-height: var(--el-height-2xl);
397
- position: relative;
398
- line-height: var(--line-height-paragraph);
399
- }
400
-
401
- .j-menu[data-menu-type='mobile']
402
- .menu
403
- .menu-item.menu-item-has-children
404
- > a::after {
405
- vertical-align: middle;
406
- position: absolute;
407
- right: 1rem;
408
- margin: 0;
409
- border-left: 5px solid currentColor;
410
- border-bottom: 4px solid transparent;
411
- border-top: 4px solid transparent;
412
- }
413
-
414
- .j-menu[data-menu-type='mobile']
415
- .menu
416
- .menu-item.menu-item-has-children:hover
417
- > a::after {
418
- transform: none;
419
- }
420
-
421
- .j-menu[data-menu-type='mobile'] .menu .menu-item .sub-menu {
422
- display: block;
423
- top: 0;
424
- left: 0;
425
- width: 100%;
426
- visibility: hidden;
427
- opacity: 0;
428
- /* transform: translateX(80%); */
429
- transition:
430
- /* transform 0.3s ease-in-out, */
431
- /* visibility 0.3s ease-in-out, */ opacity 0.3s ease-in-out;
432
- max-width: 100%;
433
- background: var(--ui-bg);
434
- padding-block: 0;
435
- }
436
-
437
- .j-menu[data-menu-type='mobile'] .menu .sub-menu .menu-item:hover a {
438
- background: var(--menu-item-hover-bg);
439
- color: var(--menu-item-hover-bg);
440
- }
441
-
442
- .j-menu[data-menu-type='mobile'] .menu .menu-item:active {
443
- background: var(--menu-item-active-bg);
444
- }
445
-
446
- .j-menu[data-menu-type='mobile']
447
- .menu
448
- .menu-item.menu-item-has-children.is-active
449
- > .sub-menu {
450
- visibility: visible;
451
- opacity: 1;
452
- /* transform: translateX(0); */
453
- z-index: var(--z-submenu);
454
- height: 100%;
455
- }
456
-
457
- /* bottom menu */
458
- .j-menu[data-menu-type='bottom'] {
459
- position: fixed;
460
- bottom: 0;
461
- left: 0;
462
- overflow: visible;
463
- background: var(--ui-bg);
464
- z-index: var(--z-submenu);
465
- }
466
-
467
- .j-menu[data-menu-type='bottom'] .menu {
468
- position: relative;
469
- justify-content: space-between;
470
- gap: 1px;
471
- border-top: 1px solid var(--ui-border-subtle);
472
- background: var(--menu-bg);
473
- }
474
-
475
- .j-menu[data-menu-type='bottom'] .menu .menu-item {
476
- flex-shrink: unset;
477
- width: 100%;
478
- display: flex;
479
- justify-content: center;
480
- align-items: center;
481
- background: var(--menu-item-bg);
482
- }
483
-
484
- .j-menu[data-menu-type='bottom'] .menu .menu-item a {
485
- width: 100%;
486
- height: var(--menu-item-height);
487
- color: var(--ui-fg);
488
- }
489
-
490
- .j-menu[data-menu-type='bottom']
491
- > .menu
492
- > .menu-item.menu-item-has-children
493
- > a::after {
494
- content: '☰';
495
- font-size: var(--font-size-sm);
496
- margin-left: unset;
497
- border: unset;
498
- width: unset;
499
- height: unset;
500
- transition: unset;
501
- }
502
-
503
- .j-menu[data-menu-type='bottom']
504
- > .menu
505
- .menu-item.menu-item-has-children:hover
506
- > a::after {
507
- transform: none;
508
- }
509
-
510
- .j-menu[data-menu-type='bottom'] .menu .menu-item.current-menu-parent > a,
511
- .j-menu[data-menu-type='bottom'] .menu .menu-item.current-menu-item > a,
512
- .j-menu[data-menu-type='bottom']
513
- .menu
514
- .menu-item.menu-item-has-children.is-active
515
- > a {
516
- color: var(--tone-solid);
517
- }
518
-
519
- .j-menu[data-menu-type='bottom']
520
- .menu
521
- .menu-item.menu-item-has-children
522
- > .sub-menu {
523
- opacity: 0;
524
- visibility: hidden;
525
- display: flex;
526
- flex-direction: column;
527
- align-items: center;
528
- justify-content: center;
529
- gap: 1px;
530
- padding-block: 0;
531
- min-width: var(--columns-6xs);
532
- max-width: var(--columns-2xs);
533
- left: 50%;
534
- transform: translateX(-50%) translateY(100%);
535
- bottom: calc(100% + var(--space));
536
- transition:
537
- transform 0.3s ease-in-out,
538
- visibility 0.3s ease-in-out,
539
- opacity 0.3s ease-in-out;
540
- z-index: -1;
541
- }
542
-
543
- .j-menu[data-menu-type='bottom']
544
- .menu
545
- .menu-item.menu-item-has-children.is-active
546
- > .sub-menu {
547
- opacity: 1;
548
- visibility: visible;
549
- transform: translateX(-50%) translateY(0%);
550
- }
551
-
552
- .j-menu[data-menu-type='bottom']
553
- .menu
554
- .menu-item.menu-item-has-children
555
- > .sub-menu
556
- > .menu-item {
557
- white-space: normal;
558
- border: 1px solid transparent;
559
- }
560
-
561
- .j-menu[data-menu-type='bottom']
562
- .menu
563
- .menu-item.menu-item-has-children
564
- > .sub-menu
565
- > .menu-item
566
- > a {
567
- min-height: var(--menu-item-height);
568
- justify-content: center;
569
- }
570
-
571
- .j-menu[data-menu-type='bottom']
572
- .menu
573
- .menu-item.menu-item-has-children
574
- > .sub-menu
575
- > .menu-item:first-of-type {
576
- border-top-left-radius: var(--sub-menu-border-radius);
577
- border-top-right-radius: var(--sub-menu-border-radius);
578
- }
579
-
580
- .j-menu[data-menu-type='bottom']
581
- .menu
582
- .menu-item.menu-item-has-children
583
- > .sub-menu
584
- > .menu-item:last-of-type {
585
- border-bottom-left-radius: var(--sub-menu-border-radius);
586
- border-bottom-right-radius: var(--sub-menu-border-radius);
587
- }
588
-
589
- .j-menu[data-menu-type='bottom'] .menu .menu-item:not(:has(a)):hover {
590
- background: var(--menu-item-bg);
591
- }
592
-
593
- .j-menu[data-menu-type='bottom'] .menu .menu-item:not(:has(a)):hover:after {
594
- top: -0.5rem;
595
- right: unset;
596
- }
597
-
598
- /* drop menu */
599
- .drop-menu .drop-container {
600
- min-width: 100px;
601
- max-width: 200px;
602
- padding: var(--s2);
603
- font-size: var(--font-size-md);
604
- background-color: var(--ui-surface-subtle);
605
- border-radius: var(--radius-sm);
606
- }
607
-
608
- .drop-menu ul,
609
- .drop-menu ol,
610
- .drop-menu ul li,
611
- .drop-menu ol li {
612
- list-style: none;
613
- margin: 0;
614
- padding: 0;
615
- }
616
-
617
- .drop-menu .menu-item a {
618
- display: flex;
619
- align-items: center;
620
- gap: var(--s2);
621
- width: 100%;
622
- padding: var(--space) var(--s2);
623
- text-decoration: none;
624
- color: var(--ui-fg-muted);
625
- -webkit-user-select: none;
626
- -moz-user-select: none;
627
- -ms-user-select: none;
628
- user-select: none;
629
- border-radius: var(--radius-sm);
630
- transition: none;
631
- }
632
-
633
- .drop-menu .menu-item a .menu-text {
634
- flex-grow: 1;
635
- }
636
-
637
- .drop-menu .menu-item a:hover {
638
- background-color: var(--tone-solid);
639
- color: var(--tone-fg);
640
- }
641
-
642
- .drop-menu .el-icon,
643
- .drop-menu svg {
644
- width: var(--font-size-lg);
645
- height: var(--font-size-lg);
646
- }
647
-
648
- .drop-menu .menu-item.menu-heading {
649
- padding: 2px var(--s2);
650
- color: var(--ui-fg-soft);
651
- font-size: var(--font-size-sm);
652
- }
653
82
  }