@keenmate/pure-admin-core 1.4.0 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/css/main.css +126 -2
- package/package.json +6 -5
- package/src/scss/core-components/_cards.scss +41 -0
- package/src/scss/core-components/_detail-panel.scss +7 -2
- package/src/scss/core-components/_tables.scss +50 -0
- package/src/scss/core-components/_utilities.scss +24 -0
- package/src/scss/variables/_system.scss +1 -0
package/dist/css/main.css
CHANGED
|
@@ -5340,6 +5340,7 @@ body:not(.sidebar-hidden) .pa-layout__sidebar--icon-collapse .pa-sidebar__icon {
|
|
|
5340
5340
|
display: flex;
|
|
5341
5341
|
justify-content: space-between;
|
|
5342
5342
|
align-items: center;
|
|
5343
|
+
gap: 1.6rem;
|
|
5343
5344
|
min-width: 0;
|
|
5344
5345
|
}
|
|
5345
5346
|
.pa-card__header h1,
|
|
@@ -5368,9 +5369,40 @@ body:not(.sidebar-hidden) .pa-layout__sidebar--icon-collapse .pa-sidebar__icon {
|
|
|
5368
5369
|
color: var(--pa-text-color-1);
|
|
5369
5370
|
font-size: 1.6rem;
|
|
5370
5371
|
}
|
|
5372
|
+
.pa-card__header > h1,
|
|
5373
|
+
.pa-card__header > h2,
|
|
5374
|
+
.pa-card__header > h3,
|
|
5375
|
+
.pa-card__header > h4,
|
|
5376
|
+
.pa-card__header > h5,
|
|
5377
|
+
.pa-card__header > h6 {
|
|
5378
|
+
flex-shrink: 0;
|
|
5379
|
+
}
|
|
5380
|
+
.pa-card__header > p {
|
|
5381
|
+
flex: 1;
|
|
5382
|
+
min-width: 0;
|
|
5383
|
+
overflow: hidden;
|
|
5384
|
+
text-overflow: ellipsis;
|
|
5385
|
+
white-space: nowrap;
|
|
5386
|
+
color: var(--pa-text-color-2);
|
|
5387
|
+
font-size: 1.4rem;
|
|
5388
|
+
}
|
|
5389
|
+
.pa-card__header .pa-card__actions,
|
|
5390
|
+
.pa-card__header .pa-btn-group {
|
|
5391
|
+
flex-shrink: 0;
|
|
5392
|
+
}
|
|
5371
5393
|
.pa-card__header .pa-btn {
|
|
5372
5394
|
margin-top: -0.25rem;
|
|
5373
5395
|
margin-bottom: -0.25rem;
|
|
5396
|
+
flex-shrink: 0;
|
|
5397
|
+
}
|
|
5398
|
+
.pa-card__header--wrap {
|
|
5399
|
+
flex-wrap: wrap;
|
|
5400
|
+
}
|
|
5401
|
+
.pa-card__header--wrap > p {
|
|
5402
|
+
white-space: normal;
|
|
5403
|
+
flex-basis: 100%;
|
|
5404
|
+
order: 1;
|
|
5405
|
+
margin-top: 0.4rem;
|
|
5374
5406
|
}
|
|
5375
5407
|
.pa-card__title {
|
|
5376
5408
|
display: flex;
|
|
@@ -10501,6 +10533,10 @@ web-multiselect {
|
|
|
10501
10533
|
.pa-table-card:hover {
|
|
10502
10534
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
|
10503
10535
|
}
|
|
10536
|
+
.pa-table-card:has(.pa-detail-view) .pa-table-card__body {
|
|
10537
|
+
position: relative;
|
|
10538
|
+
overflow: hidden;
|
|
10539
|
+
}
|
|
10504
10540
|
.pa-table-card__header {
|
|
10505
10541
|
padding: 0.5rem 1rem;
|
|
10506
10542
|
min-height: 4rem;
|
|
@@ -10569,6 +10605,27 @@ web-multiselect {
|
|
|
10569
10605
|
.pa-table-card__body .pa-table tbody tr:last-child td {
|
|
10570
10606
|
border-bottom: none;
|
|
10571
10607
|
}
|
|
10608
|
+
.pa-table-card__body .pa-detail-view {
|
|
10609
|
+
height: 100%;
|
|
10610
|
+
}
|
|
10611
|
+
.pa-table-card__body .pa-detail-view .pa-detail-view__main .pa-table {
|
|
10612
|
+
border-radius: 0;
|
|
10613
|
+
}
|
|
10614
|
+
.pa-table-card__body .pa-detail-view .pa-detail-view__main .pa-table th:first-child,
|
|
10615
|
+
.pa-table-card__body .pa-detail-view .pa-detail-view__main .pa-table td:first-child {
|
|
10616
|
+
padding-inline-start: 1rem;
|
|
10617
|
+
}
|
|
10618
|
+
.pa-table-card__body .pa-detail-view .pa-detail-view__main .pa-table th:last-child,
|
|
10619
|
+
.pa-table-card__body .pa-detail-view .pa-detail-view__main .pa-table td:last-child {
|
|
10620
|
+
padding-inline-end: 1rem;
|
|
10621
|
+
}
|
|
10622
|
+
.pa-table-card__body .pa-detail-view .pa-detail-view__main .pa-table tbody tr:last-child td {
|
|
10623
|
+
border-bottom: none;
|
|
10624
|
+
}
|
|
10625
|
+
.pa-table-card__body .pa-detail-view .pa-detail-view__main web-grid {
|
|
10626
|
+
--wg-cell-padding-left: 1rem;
|
|
10627
|
+
--wg-cell-padding-right: 1rem;
|
|
10628
|
+
}
|
|
10572
10629
|
.pa-table-card__footer {
|
|
10573
10630
|
padding: 1.2rem 1rem;
|
|
10574
10631
|
border-top: 1px solid var(--pa-border-color);
|
|
@@ -10724,6 +10781,10 @@ web-multiselect {
|
|
|
10724
10781
|
border-radius: 0;
|
|
10725
10782
|
padding-inline: 0;
|
|
10726
10783
|
}
|
|
10784
|
+
.pa-table-card--plain .pa-table-card__body:has(.pa-detail-view--overlay) {
|
|
10785
|
+
position: relative;
|
|
10786
|
+
overflow: hidden;
|
|
10787
|
+
}
|
|
10727
10788
|
.pa-table-card--plain .pa-table-card__footer {
|
|
10728
10789
|
background: transparent;
|
|
10729
10790
|
border-top: none;
|
|
@@ -13771,14 +13832,17 @@ code {
|
|
|
13771
13832
|
top: 0;
|
|
13772
13833
|
inset-inline-end: 0;
|
|
13773
13834
|
height: 100%;
|
|
13774
|
-
z-index:
|
|
13835
|
+
z-index: 3501;
|
|
13836
|
+
}
|
|
13837
|
+
.pa-detail-view--overlay .pa-detail-view__panel--open {
|
|
13838
|
+
max-width: 100%;
|
|
13775
13839
|
}
|
|
13776
13840
|
|
|
13777
13841
|
.pa-detail-view__overlay {
|
|
13778
13842
|
position: absolute;
|
|
13779
13843
|
inset: 0;
|
|
13780
13844
|
background-color: var(--pa-detail-panel-overlay-bg);
|
|
13781
|
-
z-index:
|
|
13845
|
+
z-index: 3500;
|
|
13782
13846
|
opacity: 0;
|
|
13783
13847
|
visibility: hidden;
|
|
13784
13848
|
cursor: pointer;
|
|
@@ -14559,6 +14623,62 @@ html.font-size-xlarge {
|
|
|
14559
14623
|
max-height: 50rem;
|
|
14560
14624
|
}
|
|
14561
14625
|
|
|
14626
|
+
.h-full {
|
|
14627
|
+
height: 100%;
|
|
14628
|
+
}
|
|
14629
|
+
|
|
14630
|
+
.h-screen {
|
|
14631
|
+
height: 100vh;
|
|
14632
|
+
}
|
|
14633
|
+
|
|
14634
|
+
.min-h-full {
|
|
14635
|
+
min-height: 100%;
|
|
14636
|
+
}
|
|
14637
|
+
|
|
14638
|
+
.min-h-screen {
|
|
14639
|
+
min-height: 100vh;
|
|
14640
|
+
}
|
|
14641
|
+
|
|
14642
|
+
.max-h-full {
|
|
14643
|
+
max-height: 100%;
|
|
14644
|
+
}
|
|
14645
|
+
|
|
14646
|
+
.max-h-screen {
|
|
14647
|
+
max-height: 100vh;
|
|
14648
|
+
}
|
|
14649
|
+
|
|
14650
|
+
.flex-1 {
|
|
14651
|
+
flex: 1 1 0%;
|
|
14652
|
+
}
|
|
14653
|
+
|
|
14654
|
+
.flex-auto {
|
|
14655
|
+
flex: 1 1 auto;
|
|
14656
|
+
}
|
|
14657
|
+
|
|
14658
|
+
.flex-initial {
|
|
14659
|
+
flex: 0 1 auto;
|
|
14660
|
+
}
|
|
14661
|
+
|
|
14662
|
+
.flex-none {
|
|
14663
|
+
flex: none;
|
|
14664
|
+
}
|
|
14665
|
+
|
|
14666
|
+
.flex-grow {
|
|
14667
|
+
flex-grow: 1;
|
|
14668
|
+
}
|
|
14669
|
+
|
|
14670
|
+
.flex-grow-0 {
|
|
14671
|
+
flex-grow: 0;
|
|
14672
|
+
}
|
|
14673
|
+
|
|
14674
|
+
.flex-shrink {
|
|
14675
|
+
flex-shrink: 1;
|
|
14676
|
+
}
|
|
14677
|
+
|
|
14678
|
+
.flex-shrink-0 {
|
|
14679
|
+
flex-shrink: 0;
|
|
14680
|
+
}
|
|
14681
|
+
|
|
14562
14682
|
.overflow-auto {
|
|
14563
14683
|
overflow: auto;
|
|
14564
14684
|
}
|
|
@@ -14594,6 +14714,10 @@ html.font-size-xlarge {
|
|
|
14594
14714
|
overflow-x: overlay;
|
|
14595
14715
|
}
|
|
14596
14716
|
|
|
14717
|
+
.pa-scroll-lock {
|
|
14718
|
+
overflow: hidden !important;
|
|
14719
|
+
}
|
|
14720
|
+
|
|
14597
14721
|
.cursor-pointer {
|
|
14598
14722
|
cursor: pointer;
|
|
14599
14723
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@keenmate/pure-admin-core",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.1",
|
|
4
4
|
"description": "Lightweight, data-focused HTML/CSS admin framework built with PureCSS foundation and comprehensive component system",
|
|
5
5
|
"style": "dist/css/main.css",
|
|
6
6
|
"exports": {
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"components",
|
|
39
39
|
"ui-kit"
|
|
40
40
|
],
|
|
41
|
-
"author": "
|
|
41
|
+
"author": "KeenMate",
|
|
42
42
|
"license": "MIT",
|
|
43
43
|
"peerDependencies": {
|
|
44
44
|
"sass": "^1.0.0"
|
|
@@ -48,12 +48,13 @@
|
|
|
48
48
|
},
|
|
49
49
|
"repository": {
|
|
50
50
|
"type": "git",
|
|
51
|
-
"url": "git+https://github.com/pure-admin
|
|
51
|
+
"url": "git+https://github.com/KeenMate/pure-admin.git",
|
|
52
|
+
"directory": "packages/core"
|
|
52
53
|
},
|
|
53
54
|
"bugs": {
|
|
54
|
-
"url": "https://github.com/pure-admin/
|
|
55
|
+
"url": "https://github.com/KeenMate/pure-admin/issues"
|
|
55
56
|
},
|
|
56
|
-
"homepage": "https://github.com/pure-admin
|
|
57
|
+
"homepage": "https://github.com/KeenMate/pure-admin#readme",
|
|
57
58
|
"publishConfig": {
|
|
58
59
|
"access": "public"
|
|
59
60
|
}
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
display: flex;
|
|
30
30
|
justify-content: space-between;
|
|
31
31
|
align-items: center;
|
|
32
|
+
gap: $spacing-base; // Gap between header elements (title, description, actions)
|
|
32
33
|
min-width: 0; // Enable text truncation
|
|
33
34
|
|
|
34
35
|
// Reset margins/paddings for all native elements
|
|
@@ -61,10 +62,50 @@
|
|
|
61
62
|
font-size: $font-size-base;
|
|
62
63
|
}
|
|
63
64
|
|
|
65
|
+
// Direct heading children - don't shrink (for three-part layout)
|
|
66
|
+
> h1,
|
|
67
|
+
> h2,
|
|
68
|
+
> h3,
|
|
69
|
+
> h4,
|
|
70
|
+
> h5,
|
|
71
|
+
> h6 {
|
|
72
|
+
flex-shrink: 0;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// Description paragraphs - flexible middle, truncate with ellipsis
|
|
76
|
+
> p {
|
|
77
|
+
flex: 1;
|
|
78
|
+
min-width: 0;
|
|
79
|
+
overflow: hidden;
|
|
80
|
+
text-overflow: ellipsis;
|
|
81
|
+
white-space: nowrap;
|
|
82
|
+
color: var(--pa-text-color-2);
|
|
83
|
+
font-size: $font-size-sm;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// Actions container - fixed, doesn't shrink
|
|
87
|
+
.pa-card__actions,
|
|
88
|
+
.pa-btn-group {
|
|
89
|
+
flex-shrink: 0;
|
|
90
|
+
}
|
|
91
|
+
|
|
64
92
|
// Buttons in card headers - negative margin to prevent header height growth
|
|
65
93
|
.pa-btn {
|
|
66
94
|
margin-top: -0.25rem;
|
|
67
95
|
margin-bottom: -0.25rem;
|
|
96
|
+
flex-shrink: 0;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// Wrap modifier - allow description to wrap (for mobile or long descriptions)
|
|
100
|
+
&--wrap {
|
|
101
|
+
flex-wrap: wrap;
|
|
102
|
+
|
|
103
|
+
> p {
|
|
104
|
+
white-space: normal;
|
|
105
|
+
flex-basis: 100%;
|
|
106
|
+
order: 1;
|
|
107
|
+
margin-top: $spacing-xs;
|
|
108
|
+
}
|
|
68
109
|
}
|
|
69
110
|
}
|
|
70
111
|
|
|
@@ -66,7 +66,12 @@
|
|
|
66
66
|
top: 0;
|
|
67
67
|
inset-inline-end: 0; // RTL: flips to left
|
|
68
68
|
height: 100%;
|
|
69
|
-
z-index:
|
|
69
|
+
z-index: $z-index-detail-panel-card + 1; // 3501 - Below header (4000)
|
|
70
|
+
|
|
71
|
+
// In card overlay mode, constrain panel width to container
|
|
72
|
+
&--open {
|
|
73
|
+
max-width: 100%; // Don't exceed container width
|
|
74
|
+
}
|
|
70
75
|
}
|
|
71
76
|
}
|
|
72
77
|
|
|
@@ -75,7 +80,7 @@
|
|
|
75
80
|
position: absolute;
|
|
76
81
|
inset: 0; // Covers full container
|
|
77
82
|
background-color: var(--pa-detail-panel-overlay-bg);
|
|
78
|
-
z-index:
|
|
83
|
+
z-index: $z-index-detail-panel-card; // 3500 - Below panel and header
|
|
79
84
|
opacity: 0;
|
|
80
85
|
visibility: hidden;
|
|
81
86
|
cursor: pointer;
|
|
@@ -79,6 +79,14 @@
|
|
|
79
79
|
box-shadow: $shadow-lg;
|
|
80
80
|
}
|
|
81
81
|
|
|
82
|
+
// When containing a detail view, allow body to establish positioning context
|
|
83
|
+
&:has(.pa-detail-view) {
|
|
84
|
+
.pa-table-card__body {
|
|
85
|
+
position: relative;
|
|
86
|
+
overflow: hidden; // Clip detail panel to card boundaries
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
82
90
|
&__header {
|
|
83
91
|
padding: $card-header-padding-v $card-header-padding-h;
|
|
84
92
|
min-height: $card-header-min-height;
|
|
@@ -162,6 +170,39 @@
|
|
|
162
170
|
border-bottom: none;
|
|
163
171
|
}
|
|
164
172
|
}
|
|
173
|
+
|
|
174
|
+
// Detail view inside table card body
|
|
175
|
+
// Supports both inline split-view and overlay modes
|
|
176
|
+
.pa-detail-view {
|
|
177
|
+
height: 100%;
|
|
178
|
+
|
|
179
|
+
// Table inside detail view main area
|
|
180
|
+
.pa-detail-view__main {
|
|
181
|
+
.pa-table {
|
|
182
|
+
border-radius: 0;
|
|
183
|
+
|
|
184
|
+
th:first-child,
|
|
185
|
+
td:first-child {
|
|
186
|
+
padding-inline-start: $card-header-padding-h;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
th:last-child,
|
|
190
|
+
td:last-child {
|
|
191
|
+
padding-inline-end: $card-header-padding-h;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
tbody tr:last-child td {
|
|
195
|
+
border-bottom: none;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
// web-grid inside detail view
|
|
200
|
+
web-grid {
|
|
201
|
+
--wg-cell-padding-left: #{$card-header-padding-h};
|
|
202
|
+
--wg-cell-padding-right: #{$card-header-padding-h};
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
165
206
|
}
|
|
166
207
|
|
|
167
208
|
&__footer {
|
|
@@ -263,6 +304,15 @@
|
|
|
263
304
|
padding-inline: 0;
|
|
264
305
|
}
|
|
265
306
|
|
|
307
|
+
// Body in plain mode with detail view - ensure proper containment
|
|
308
|
+
.pa-table-card__body {
|
|
309
|
+
// When containing overlay detail view, establish positioning context
|
|
310
|
+
&:has(.pa-detail-view--overlay) {
|
|
311
|
+
position: relative;
|
|
312
|
+
overflow: hidden;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
|
|
266
316
|
// Footer in plain mode
|
|
267
317
|
.pa-table-card__footer {
|
|
268
318
|
background: transparent;
|
|
@@ -94,6 +94,24 @@ html.font-size-xlarge {
|
|
|
94
94
|
.max-h-40x { max-height: 40rem; } // 640px
|
|
95
95
|
.max-h-50x { max-height: 50rem; } // 800px
|
|
96
96
|
|
|
97
|
+
// Percentage-based height utilities - for filling available space
|
|
98
|
+
.h-full { height: 100%; }
|
|
99
|
+
.h-screen { height: 100vh; }
|
|
100
|
+
.min-h-full { min-height: 100%; }
|
|
101
|
+
.min-h-screen { min-height: 100vh; }
|
|
102
|
+
.max-h-full { max-height: 100%; }
|
|
103
|
+
.max-h-screen { max-height: 100vh; }
|
|
104
|
+
|
|
105
|
+
// Flex utilities - for filling available space in flex containers
|
|
106
|
+
.flex-1 { flex: 1 1 0%; } // Grow and shrink equally, ignore content size
|
|
107
|
+
.flex-auto { flex: 1 1 auto; } // Grow and shrink, based on content size
|
|
108
|
+
.flex-initial { flex: 0 1 auto; } // Shrink but don't grow (default)
|
|
109
|
+
.flex-none { flex: none; } // Don't grow or shrink
|
|
110
|
+
.flex-grow { flex-grow: 1; } // Grow to fill space
|
|
111
|
+
.flex-grow-0 { flex-grow: 0; } // Don't grow
|
|
112
|
+
.flex-shrink { flex-shrink: 1; } // Allow shrinking
|
|
113
|
+
.flex-shrink-0 { flex-shrink: 0; } // Don't shrink
|
|
114
|
+
|
|
97
115
|
// Overflow utilities - pair with height/max-height for scrollable content
|
|
98
116
|
.overflow-auto { overflow: auto; }
|
|
99
117
|
.overflow-y-auto { overflow-y: auto; }
|
|
@@ -118,6 +136,12 @@ html.font-size-xlarge {
|
|
|
118
136
|
overflow-x: overlay;
|
|
119
137
|
}
|
|
120
138
|
|
|
139
|
+
// Scroll lock - prevents body scrolling when overlays are open
|
|
140
|
+
// Apply to <body> element via JavaScript
|
|
141
|
+
.pa-scroll-lock {
|
|
142
|
+
overflow: hidden !important;
|
|
143
|
+
}
|
|
144
|
+
|
|
121
145
|
// Cursor utilities
|
|
122
146
|
.cursor-pointer { cursor: pointer; }
|
|
123
147
|
.cursor-help { cursor: help; }
|
|
@@ -8,6 +8,7 @@ $z-index-base: 0 !default;
|
|
|
8
8
|
$z-index-content: 1000 !default;
|
|
9
9
|
$z-index-sidebar: 2000 !default;
|
|
10
10
|
$z-index-sidebar-fixed: 3000 !default;
|
|
11
|
+
$z-index-detail-panel-card: 3500 !default; // Card overlay detail panel (below header)
|
|
11
12
|
$z-index-header: 4000 !default;
|
|
12
13
|
$z-index-profile-panel: 5000 !default;
|
|
13
14
|
$z-index-modal-backdrop: 6000 !default;
|