vanilla-jui 1.7.10 → 1.7.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/dist/index.js +1 -1
  2. package/dist/index.umd.js +1 -1
  3. package/dist/style.css +1 -1
  4. package/package.json +1 -1
  5. package/src/components/accordion.ts +1 -1
  6. package/src/components/flow.ts +1 -1
  7. package/src/components/form.ts +1 -1
  8. package/src/components/modal.ts +1 -1
  9. package/src/css/index.css +1 -2
  10. package/src/css/layout.css +156 -63
  11. package/src/css/status.css +0 -1
  12. package/src/css/themes/default/accordion.css +37 -1
  13. package/src/css/themes/default/avatar.css +23 -1
  14. package/src/css/themes/default/badge.css +20 -3
  15. package/src/css/themes/default/breadcrumb.css +65 -1
  16. package/src/css/themes/default/button.css +64 -11
  17. package/src/css/themes/default/drop.css +19 -1
  18. package/src/css/themes/default/editor.css +781 -7
  19. package/src/css/themes/default/form.css +650 -2
  20. package/src/css/themes/default/index.css +17 -14
  21. package/src/css/themes/default/loading.css +144 -2
  22. package/src/css/themes/default/menu.css +113 -125
  23. package/src/css/themes/default/modal.css +26 -4
  24. package/src/css/themes/default/offcanvas.css +19 -1
  25. package/src/css/themes/default/pagination.css +13 -1
  26. package/src/css/themes/default/swiper.css +99 -1
  27. package/src/css/themes/default/tabs.css +50 -1
  28. package/src/css/themes/default/theme-palette.css +24 -1
  29. package/src/css/themes/default/tip.css +36 -1
  30. package/src/css/themes/default/toast.css +42 -1
  31. package/src/css/themes/default/toc.css +1 -1
  32. package/src/css/themes/default/toolbar.css +29 -1
  33. package/src/css/themes/default/tooltip.css +8 -2
  34. package/src/css/themes/default/tree.css +40 -3
  35. package/src/css/accordion.css +0 -47
  36. package/src/css/avatar.css +0 -27
  37. package/src/css/badge.css +0 -8
  38. package/src/css/breadcrumb.css +0 -71
  39. package/src/css/button.css +0 -32
  40. package/src/css/components.css +0 -28
  41. package/src/css/divider.css +0 -9
  42. package/src/css/drop.css +0 -21
  43. package/src/css/editor.css +0 -794
  44. package/src/css/form.css +0 -657
  45. package/src/css/loading.css +0 -150
  46. package/src/css/menu.css +0 -74
  47. package/src/css/modal.css +0 -33
  48. package/src/css/offcanvas.css +0 -23
  49. package/src/css/pagination.css +0 -15
  50. package/src/css/popup.css +0 -66
  51. package/src/css/skeleton.css +0 -72
  52. package/src/css/swiper.css +0 -107
  53. package/src/css/tabs.css +0 -58
  54. package/src/css/tag.css +0 -36
  55. package/src/css/theme-palette.css +0 -28
  56. package/src/css/themes/default/popup.css +0 -7
  57. package/src/css/themes/default/tag.css +0 -85
  58. package/src/css/tip.css +0 -40
  59. package/src/css/toast.css +0 -54
  60. package/src/css/toolbar.css +0 -34
  61. package/src/css/tooltip.css +0 -12
  62. package/src/css/tree.css +0 -51
  63. /package/src/css/{flow.css → themes/default/flow.css} +0 -0
@@ -1,25 +1,28 @@
1
- @import url('./toolbar.css');
2
- @import url('./editor.css');
3
- @import url('./button.css');
1
+ @import url('./modal.css');
2
+ @import url('./offcanvas.css');
3
+
4
+ @import url('./tabs.css');
4
5
  @import url('./avatar.css');
5
6
  @import url('./badge.css');
6
- /* @import url('./tag.css'); */
7
+ @import url('./button.css');
7
8
  @import url('./tip.css');
8
- @import url('./tabs.css');
9
- @import url('./popup.css');
10
- @import url('./toast.css');
11
- @import url('./modal.css');
12
- @import url('./offcanvas.css');
13
9
  @import url('./accordion.css');
10
+ @import url('./tree.css');
11
+
12
+ @import url('./flow.css');
13
+ @import url('./form.css');
14
+
14
15
  @import url('./drop.css');
15
- @import url('./tooltip.css');
16
+ @import url('./toast.css');
16
17
  @import url('./swiper.css');
17
18
  @import url('./breadcrumb.css');
18
- @import url('./loading.css');
19
- /* @import url('./table.css'); */
20
19
  @import url('./pagination.css');
21
20
  @import url('./menu.css');
22
21
  @import url('./toc.css');
23
- @import url('./tree.css');
22
+
24
23
  @import url('./theme-palette.css');
25
- @import url('./form.css');
24
+ @import url('./toolbar.css');
25
+ @import url('./editor.css');
26
+
27
+ @import url('./tooltip.css');
28
+ @import url('./loading.css');
@@ -1,16 +1,53 @@
1
- @layer themes {
1
+ @layer components {
2
2
  .j-loader {
3
3
  --loader-size: var(--font-size-md);
4
4
  --loader-width: 1.5px;
5
5
  --loader-style: solid;
6
6
  --loader-fg: currentcolor;
7
- --loader-speed: var(--speed-xl);
7
+
8
+ display: flex;
9
+ justify-content: center;
10
+ align-items: center;
11
+ position: absolute;
12
+ width: 100%;
13
+ height: 100%;
14
+ }
15
+
16
+ .j-loader .loader {
17
+ display: inline-block;
18
+ width: var(--loader-size);
19
+ height: var(--loader-size);
20
+ border-width: var(--loader-width);
21
+ border-style: var(--loader-style);
22
+ border-color: var(--loader-fg);
23
+ border-right-color: transparent;
24
+ border-radius: 50%;
25
+ animation: var(--speed-xl) linear infinite animate-spin;
26
+ }
27
+
28
+ .j-loader .polygon-loader {
29
+ width: var(--loader-size);
30
+ aspect-ratio: 1;
31
+ border-radius: 50%;
32
+ border: 1.5px solid var(--loader-fg);
33
+ animation:
34
+ polygon-loader-1 0.8s infinite linear alternate,
35
+ polygon-loader-2 1.6s infinite linear;
8
36
  }
9
37
 
10
38
  .j-loader .tone-loader {
11
39
  --loader-width: 2px;
12
40
  --loader-fg: var(--tone-soft);
13
41
  --loader-top-fg: var(--tone-solid);
42
+
43
+ width: var(--loader-size);
44
+ height: var(--loader-size);
45
+ border-width: var(--loader-width);
46
+ border-style: var(--loader-style);
47
+ border-color: var(--loader-fg);
48
+ border-top-color: var(--loader-top-fg);
49
+ border-radius: 50%;
50
+ animation: 1s linear infinite animate-spin;
14
51
  }
15
52
 
16
53
  .j-loader .flow-loader {
@@ -24,5 +61,110 @@
24
61
  #0000 calc(100% - var(--loader-width)),
25
62
  #000 0
26
63
  );
64
+
65
+ width: var(--loader-size);
66
+ height: var(--loader-size);
67
+ border: none;
68
+ border-radius: 50%;
69
+ aspect-ratio: 1;
70
+ background: var(--loader-bg);
71
+ mask: var(--loader-mask);
72
+ animation: 1s linear infinite animate-spin;
73
+ }
74
+
75
+ @keyframes polygon-loader-1 {
76
+ 0% {
77
+ clip-path: polygon(50% 50%, 0 0, 50% 0%, 50% 0%, 50% 0%, 50% 0%, 50% 0%);
78
+ }
79
+
80
+ 12.5% {
81
+ clip-path: polygon(
82
+ 50% 50%,
83
+ 0 0,
84
+ 50% 0%,
85
+ 100% 0%,
86
+ 100% 0%,
87
+ 100% 0%,
88
+ 100% 0%
89
+ );
90
+ }
91
+
92
+ 25% {
93
+ clip-path: polygon(
94
+ 50% 50%,
95
+ 0 0,
96
+ 50% 0%,
97
+ 100% 0%,
98
+ 100% 100%,
99
+ 100% 100%,
100
+ 100% 100%
101
+ );
102
+ }
103
+
104
+ 50% {
105
+ clip-path: polygon(
106
+ 50% 50%,
107
+ 0 0,
108
+ 50% 0%,
109
+ 100% 0%,
110
+ 100% 100%,
111
+ 50% 100%,
112
+ 0% 100%
113
+ );
114
+ }
115
+
116
+ 62.5% {
117
+ clip-path: polygon(
118
+ 50% 50%,
119
+ 100% 0,
120
+ 100% 0%,
121
+ 100% 0%,
122
+ 100% 100%,
123
+ 50% 100%,
124
+ 0% 100%
125
+ );
126
+ }
127
+
128
+ 75% {
129
+ clip-path: polygon(
130
+ 50% 50%,
131
+ 100% 100%,
132
+ 100% 100%,
133
+ 100% 100%,
134
+ 100% 100%,
135
+ 50% 100%,
136
+ 0% 100%
137
+ );
138
+ }
139
+
140
+ 100% {
141
+ clip-path: polygon(
142
+ 50% 50%,
143
+ 50% 100%,
144
+ 50% 100%,
145
+ 50% 100%,
146
+ 50% 100%,
147
+ 50% 100%,
148
+ 0% 100%
149
+ );
150
+ }
151
+ }
152
+
153
+ @keyframes polygon-loader-2 {
154
+ 0% {
155
+ transform: scaleY(1) rotate(0deg);
156
+ }
157
+
158
+ 49.99% {
159
+ transform: scaleY(1) rotate(135deg);
160
+ }
161
+
162
+ 50% {
163
+ transform: scaleY(-1) rotate(0deg);
164
+ }
165
+
166
+ 100% {
167
+ transform: scaleY(-1) rotate(-135deg);
168
+ }
27
169
  }
28
170
  }
@@ -1,48 +1,93 @@
1
- @layer themes {
1
+ @layer components {
2
2
  .j-menu {
3
- --menu-font-weight: var(--font-normal);
3
+ --menu-border-radius: var(--radius-md);
4
4
  --menu-item-icon-size: var(--font-size-lg);
5
5
  --menu-item-padding: 0.5rem 0.75rem;
6
6
  --menu-item-height: var(--el-height-md);
7
7
  --menu-item-line-height: var(--line-height);
8
- --menu-item-border-radius: var(--radius-md);
9
- --menu-link-gap: var(--space);
10
- --sub-menu-bg: var(--ui-surface-subtle);
11
- --sub-menu-border-width: 1px;
12
- --sub-menu-box-shadow: var(--shadow-sm);
13
- /* --sub-menu-item-hover-outline-width: 1px; */
8
+
9
+ font-weight: var(--font-medium);
10
+ width: 100%;
11
+ white-space: nowrap;
12
+ overflow-x: auto;
13
+ overflow-y: hidden;
14
+ scroll-behavior: smooth;
15
+ -ms-overflow-style: none;
16
+ scrollbar-width: none;
17
+ user-select: none;
18
+ }
19
+
20
+ .j-menu::-webkit-scrollbar {
21
+ display: none;
22
+ }
23
+
24
+ .j-menu ol,
25
+ .j-menu ul,
26
+ .j-menu ol li,
27
+ .j-menu ul li {
28
+ list-style: none;
29
+ margin: 0;
30
+ padding: 0;
31
+ }
32
+
33
+ .j-menu .menu {
34
+ display: flex;
35
+ align-items: center;
14
36
  }
15
37
 
16
38
  .j-menu .menu .menu-item {
17
39
  font-size: var(--font-size-md);
40
+ flex-shrink: 0;
18
41
  }
19
42
 
20
43
  .j-menu .menu .menu-item:not(:has(a)) {
21
44
  height: var(--menu-item-height);
22
45
  line-height: var(--menu-item-line-height);
23
- font-weight: var(--menu-font-weight);
46
+
24
47
  text-decoration: underline;
25
48
  text-decoration-style: wavy;
26
49
  text-decoration-color: var(--state-danger);
27
50
  text-underline-offset: 4px;
28
51
  padding: 4px 1rem;
52
+
53
+ position: relative;
54
+ cursor: help;
55
+ }
56
+
57
+ .j-menu .menu .menu-item:not(:has(a)):hover {
58
+ background: var(--state-danger-subtle);
59
+ border-radius: 4px;
60
+ }
61
+
62
+ .j-menu .menu .menu-item:not(:has(a)):hover::after {
63
+ content: 'Error';
64
+ position: absolute;
65
+ top: 0;
66
+ right: 0;
67
+ background: var(--state-danger);
68
+ color: var(--state-danger-fg);
69
+ font-size: 12px;
70
+ padding: 0 4px;
71
+ border-radius: 4px;
29
72
  }
30
73
 
31
74
  .j-menu .menu .menu-item a {
32
- gap: var(--menu-link-gap);
75
+ gap: var(--s2);
33
76
  color: currentColor;
34
- background-color: inherit;
35
77
  padding: var(--menu-item-padding);
36
78
  height: var(--menu-item-height);
37
79
  line-height: var(--menu-item-line-height);
38
- border-width: 1px;
39
- border-style: solid;
40
- border-color: transparent;
41
- border-radius: var(--menu-item-border-radius);
42
- }
43
-
44
- .j-menu > .menu > .menu-item > a {
80
+ border-radius: var(--menu-border-radius);
45
81
  font-weight: var(--font-medium);
82
+
83
+ display: flex;
84
+ justify-content: center;
85
+ align-items: center;
86
+ flex-wrap: nowrap;
87
+ white-space: nowrap;
88
+ appearance: button;
89
+ touch-action: manipulation;
90
+ text-decoration: none;
46
91
  }
47
92
 
48
93
  .j-menu .menu .menu-item a .el-icon,
@@ -51,16 +96,20 @@
51
96
  height: var(--menu-item-icon-size);
52
97
  }
53
98
 
99
+ .j-menu .menu .menu-item.menu-item-has-children > a {
100
+ position: relative;
101
+ }
102
+
54
103
  .j-menu .menu .menu-item.menu-item-has-children > a::after {
55
- content: '';
56
- width: 0;
57
- height: 0;
58
- margin-left: 4px;
59
- vertical-align: middle;
60
- border-left: 4px solid transparent;
61
- border-right: 4px solid transparent;
62
- border-top: 5px solid currentColor;
104
+ /* width: 0; */
105
+ /* height: 0; */
106
+ /* vertical-align: middle; */
63
107
  transition: transform 0.2s ease-in-out;
108
+
109
+ content: '';
110
+ border-left: 3px solid transparent;
111
+ border-right: 3px solid transparent;
112
+ border-top: 4px solid currentColor;
64
113
  }
65
114
 
66
115
  .j-menu .menu .menu-item.menu-item-has-children:hover > a::after {
@@ -68,40 +117,39 @@
68
117
  }
69
118
 
70
119
  .j-menu .menu .menu-item .sub-menu {
71
- /* transform: translateY(1px); */
72
- padding: var(--s2) 0;
73
- background: var(--sub-menu-bg);
74
- border-width: var(--sub-menu-border-width);
75
- border-style: solid;
76
- border-color: var(--ui-border-subtle);
77
- border-radius: var(--menu-item-border-radius);
120
+ padding: 4px;
121
+ border-radius: var(--menu-border-radius);
78
122
  min-width: 120px;
79
123
  max-width: 240px;
80
- box-shadow: var(--sub-menu-box-shadow);
124
+
125
+ background-color: var(--ui-bg-subtle);
126
+
127
+ @supports (color: color-mix(in srgb, red 50%, blue)) {
128
+ background-color: color-mix(
129
+ in srgb,
130
+ var(--ui-bg-subtle) 20%,
131
+ transparent
132
+ );
133
+ }
134
+
135
+ backdrop-filter: blur(8px);
136
+
137
+ display: none;
138
+ position: absolute;
81
139
  }
82
140
 
83
- .j-menu .menu .menu-item .sub-menu .menu-item a {
84
- border-radius: 0;
85
- height: auto;
141
+ .j-menu:not([data-menu-type='mobile']) .menu .menu-item .sub-menu {
142
+ box-shadow: var(--shadow-sm);
143
+ border: 1px solid var(--ui-border-subtle);
86
144
  }
87
145
 
88
- /* .j-menu .menu .menu-item .sub-menu .menu-item:hover a {
89
- background: var(--tone-solid);
90
- color: var(--tone-fg);
91
- outline-width: var(--sub-menu-item-hover-outline-width);
92
- outline-style: solid;
93
- outline-color: var(--tone-solid);
94
- background: var(--tone-soft);
95
- color: var(--tone-text);
96
- } */
146
+ .j-menu .menu .menu-item .sub-menu .menu-item a {
147
+ height: auto;
97
148
 
98
- /* .j-menu .menu .menu-item .sub-menu .menu-item:hover a,
99
- .j-menu .menu .menu-item a:hover,
100
- .j-menu .menu .menu-item.menu-item-has-children:hover>a {
101
- text-decoration: none;
102
- background: var(--tone-soft);
103
- color: var(--tone-text);
104
- } */
149
+ justify-content: flex-start;
150
+ flex-wrap: wrap;
151
+ white-space: normal;
152
+ }
105
153
 
106
154
  .j-menu .menu > .menu-item.current-menu-item > a,
107
155
  .j-menu .menu > .menu-item.current-menu-ancestor > a {
@@ -133,31 +181,20 @@
133
181
  > .sub-menu
134
182
  > .menu-item.current-menu-item
135
183
  a {
136
- text-decoration: none;
137
184
  background: var(--tone-soft);
138
185
  color: var(--tone-text);
139
- /* color: var(--tone-fg); */
140
- /* background-color: var(--tone-solid); */
141
- /* outline: 1px solid var(--tone-solid); */
142
186
  }
143
187
 
144
- .j-menu .menu .menu-item:not(:has(a)):hover,
145
- .j-menu[data-menu-type='mobile'] .menu .menu-item:not(:has(a)):hover {
146
- background: var(--state-danger-subtle);
147
- border-radius: var(--space);
188
+ .j-menu .menu .menu-item.menu-item-has-children:hover .sub-menu {
189
+ display: block;
190
+ z-index: var(--z-submenu);
148
191
  }
149
192
 
150
- .j-menu .menu .menu-item:not(:has(a)):hover::after,
151
- .j-menu[data-menu-type='mobile'] .menu .menu-item:not(:has(a)):hover::after {
152
- content: 'Error';
153
- position: absolute;
154
- top: 0;
155
- right: 0;
156
- background: var(--state-danger);
157
- color: var(--state-danger-fg);
158
- font-size: var(--font-size-sm);
159
- padding: 0 var(--space);
160
- border-radius: var(--space);
193
+ .j-menu:not([data-menu-type='mobile']):not([data-menu-type='bottom'])
194
+ .menu
195
+ .menu-item.menu-item-has-children
196
+ > a {
197
+ pointer-events: none;
161
198
  }
162
199
 
163
200
  /* list card menu */
@@ -329,15 +366,10 @@
329
366
  * 侧边栏菜单
330
367
  */
331
368
  .j-menu[data-menu-type='mobile'] {
332
- --menu-font-weight: var(--font-medium);
333
369
  --menu-item-line-height: var(--line-height-paragraph);
334
370
  --menu-item-height: var(--el-height-xl);
335
- --menu-item-border-radius: none;
371
+ --menu-border-radius: none;
336
372
  --menu-item-active-bg: var(--ui-bg-subtle);
337
- --sub-menu-border-width: 0;
338
- /* --sub-menu-item-hover-outline-width: 0; */
339
- --menu-link-gap: var(--s2);
340
- --sub-menu-box-shadow: none;
341
373
 
342
374
  overflow-x: hidden;
343
375
  overflow-y: auto;
@@ -402,7 +434,7 @@
402
434
  transition: opacity 0.3s ease-in-out;
403
435
  max-width: 100%;
404
436
  background: var(--ui-bg);
405
- padding-block: 0;
437
+ padding: 0;
406
438
  }
407
439
 
408
440
  .j-menu[data-menu-type='mobile'] .menu .menu-item a:hover,
@@ -433,21 +465,11 @@
433
465
  * 底部菜单
434
466
  */
435
467
  .j-menu[data-menu-type='bottom'] {
436
- --menu-item-border-radius: none;
437
- --sub-menu-bg: linear-gradient(
438
- to right,
439
- var(--ui-surface-subtle) 20%,
440
- var(--ui-border) 40%,
441
- var(--ui-outline) 50%,
442
- var(--ui-border) 60%,
443
- var(--ui-surface-subtle) 80%
444
- );
445
-
446
468
  position: fixed;
447
469
  bottom: 0;
448
470
  left: 0;
449
471
  overflow: visible;
450
- background: var(--ui-bg);
472
+ background-color: var(--ui-bg);
451
473
  z-index: var(--z-submenu);
452
474
  }
453
475
 
@@ -456,14 +478,7 @@
456
478
  justify-content: space-between;
457
479
  gap: 1px;
458
480
  border-top: 1px solid var(--ui-border-subtle);
459
- background: linear-gradient(
460
- to bottom,
461
- var(--ui-bg-subtle) 20%,
462
- var(--ui-border) 40%,
463
- var(--ui-outline) 50%,
464
- var(--ui-border) 60%,
465
- var(--ui-bg-subtle) 80%
466
- );
481
+ position: relative;
467
482
  }
468
483
 
469
484
  .j-menu[data-menu-type='bottom'] .menu .menu-item {
@@ -472,7 +487,6 @@
472
487
  display: flex;
473
488
  justify-content: center;
474
489
  align-items: center;
475
- background: var(--ui-bg-subtle);
476
490
  }
477
491
 
478
492
  .j-menu[data-menu-type='bottom'] .menu .menu-item a {
@@ -520,14 +534,11 @@
520
534
  flex-direction: column;
521
535
  align-items: center;
522
536
  justify-content: center;
523
- gap: 1px;
524
- padding-block: 0;
525
537
  min-width: var(--columns-6xs);
526
538
  max-width: var(--columns-2xs);
527
539
  left: 50%;
528
540
  transform: translateX(-50%) translateY(100%);
529
541
  bottom: calc(100% + var(--space));
530
- border: 1px solid var(--ui-border-subtle);
531
542
  transition:
532
543
  transform 0.3s ease-in-out,
533
544
  visibility 0.3s ease-in-out,
@@ -550,7 +561,6 @@
550
561
  > .sub-menu
551
562
  > .menu-item {
552
563
  white-space: normal;
553
- border: 1px solid transparent;
554
564
  }
555
565
 
556
566
  .j-menu[data-menu-type='bottom']
@@ -563,28 +573,6 @@
563
573
  justify-content: center;
564
574
  }
565
575
 
566
- .j-menu[data-menu-type='bottom']
567
- .menu
568
- .menu-item.menu-item-has-children
569
- > .sub-menu
570
- > .menu-item:first-of-type {
571
- border-top-left-radius: var(--radius-md);
572
- border-top-right-radius: var(--radius-md);
573
- }
574
-
575
- .j-menu[data-menu-type='bottom']
576
- .menu
577
- .menu-item.menu-item-has-children
578
- > .sub-menu
579
- > .menu-item:last-of-type {
580
- border-bottom-left-radius: var(--radius-md);
581
- border-bottom-right-radius: var(--radius-md);
582
- }
583
-
584
- .j-menu[data-menu-type='bottom'] .menu .menu-item:not(:has(a)):hover {
585
- background: var(--ui-bg-subtle);
586
- }
587
-
588
576
  .j-menu[data-menu-type='bottom'] .menu .menu-item:not(:has(a)):hover:after {
589
577
  top: -0.5rem;
590
578
  right: unset;
@@ -1,4 +1,4 @@
1
- @layer themes {
1
+ @layer components {
2
2
  .j-modal {
3
3
  --modal-header-padding: var(--s3) var(--s4) 0;
4
4
  --modal-body-padding: var(--s4);
@@ -13,13 +13,23 @@
13
13
  box-shadow: var(--shadow-md);
14
14
  min-width: 300px;
15
15
  max-width: 500px;
16
- max-height: 90vh;
16
+ max-height: 90lvh;
17
+ max-height: 90dvh;
18
+
19
+ overflow: hidden;
20
+ display: flex;
21
+ flex-direction: column;
22
+ position: relative;
17
23
  }
18
24
 
19
25
  .j-modal .modal-header {
20
26
  gap: var(--space);
21
27
  padding: var(--modal-header-padding);
22
28
  border-bottom: transparent;
29
+
30
+ display: flex;
31
+ justify-content: space-between;
32
+ align-items: center;
23
33
  }
24
34
 
25
35
  .j-modal .modal-header .modal-title {
@@ -35,6 +45,13 @@
35
45
  .j-modal .modal-body {
36
46
  padding: var(--modal-body-padding);
37
47
  min-height: 32px;
48
+
49
+ flex: 1;
50
+ position: relative;
51
+ overflow-y: auto;
52
+ overflow-wrap: break-word;
53
+ scrollbar-width: thin;
54
+ scrollbar-color: var(--ui-border) transparent;
38
55
  }
39
56
 
40
57
  .j-modal .modal-body p {
@@ -46,11 +63,16 @@
46
63
  gap: var(--s2);
47
64
  padding: var(--modal-footer-padding);
48
65
  border-top: 1px solid transparent;
66
+
67
+ display: flex;
68
+ justify-content: flex-end;
49
69
  }
50
70
 
51
71
  .j-modal.is-fullscreen {
52
- max-width: 100%;
53
- max-height: 100vh;
72
+ width: 100%;
73
+ height: 100%;
74
+ max-width: none;
75
+ max-height: none;
54
76
  }
55
77
 
56
78
  .j-modal.is-fullscreen .modal-header {
@@ -1,6 +1,14 @@
1
- @layer themes {
1
+ @layer components {
2
2
  .j-offcanvas-overlay {
3
3
  background: var(--ui-overlay-muted);
4
+
5
+ position: fixed;
6
+ top: 0;
7
+ left: 0;
8
+ width: 100%;
9
+ height: 100%;
10
+ pointer-events: auto;
11
+ z-index: var(--z-overlay);
4
12
  }
5
13
 
6
14
  .j-offcanvas {
@@ -10,6 +18,9 @@
10
18
 
11
19
  background: var(--ui-bg);
12
20
  box-shadow: var(--shadow-md);
21
+
22
+ position: fixed;
23
+ z-index: var(--z-offcanvas);
13
24
  }
14
25
 
15
26
  .j-offcanvas[data-direction='left'] {
@@ -47,4 +58,11 @@
47
58
  .j-font-md .j-offcanvas {
48
59
  --offcanvas-block-width: 316px;
49
60
  }
61
+
62
+ .j-offcanvas .offcanvas-content {
63
+ position: relative;
64
+ height: 100%;
65
+ overflow-y: auto;
66
+ scrollbar-width: none;
67
+ }
50
68
  }
@@ -1,4 +1,4 @@
1
- @layer themes {
1
+ @layer components {
2
2
  .j-pagination {
3
3
  font-size: var(--font-size-md);
4
4
  }
@@ -10,5 +10,17 @@
10
10
 
11
11
  .j-pagination .pagination {
12
12
  gap: 2px;
13
+
14
+ list-style: none;
15
+ display: flex;
16
+ justify-content: center;
17
+ align-items: center;
18
+ margin: 0;
19
+ padding: 0;
20
+ }
21
+
22
+ .j-pagination ul.pagination li {
23
+ margin: 0;
24
+ padding: 0;
13
25
  }
14
26
  }