@zengrid/core 1.2.2 → 1.3.0
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/index.cjs.js +1873 -1095
- package/dist/index.esm.js +1936 -1161
- package/dist/package.json +2 -2
- package/dist/src/datetime-core/formatting/date-formatter.d.ts +2 -0
- package/dist/src/datetime-core/formatting/date-formatter.d.ts.map +1 -1
- package/dist/src/datetime-core/theming/datetime.css +463 -407
- package/dist/src/editing/checkbox/checkbox-dom.d.ts.map +1 -1
- package/dist/src/editing/datetime/date-editor/date-editor.d.ts.map +1 -1
- package/dist/src/editing/datetime/date-range-editor/date-range-calendar.d.ts.map +1 -1
- package/dist/src/editing/editor-manager/editor-manager.d.ts +23 -1
- package/dist/src/editing/editor-manager/editor-manager.d.ts.map +1 -1
- package/dist/src/editing/number/number-editor.d.ts.map +1 -1
- package/dist/src/editing/select/select-editor.d.ts.map +1 -1
- package/dist/src/features/column-drag/drag-mouse-handler.d.ts +1 -0
- package/dist/src/features/column-drag/drag-mouse-handler.d.ts.map +1 -1
- package/dist/src/features/copy-paste/clipboard-manager.d.ts +24 -2
- package/dist/src/features/copy-paste/clipboard-manager.d.ts.map +1 -1
- package/dist/src/features/loading/loading-indicator.d.ts.map +1 -1
- package/dist/src/features/loading/loading.styles.css +346 -342
- package/dist/src/features/selection/selection-manager.d.ts +14 -0
- package/dist/src/features/selection/selection-manager.d.ts.map +1 -1
- package/dist/src/grid/grid-core.d.ts.map +1 -1
- package/dist/src/grid/grid-setup.d.ts.map +1 -1
- package/dist/src/index.d.ts +6 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/plugins/clipboard/clipboard-plugin.d.ts +21 -0
- package/dist/src/plugins/clipboard/clipboard-plugin.d.ts.map +1 -0
- package/dist/src/plugins/clipboard/index.d.ts +3 -0
- package/dist/src/plugins/clipboard/index.d.ts.map +1 -0
- package/dist/src/plugins/column/column-plugin.d.ts.map +1 -1
- package/dist/src/plugins/dom/dom-plugin.d.ts.map +1 -1
- package/dist/src/plugins/editing/editing-plugin.d.ts.map +1 -1
- package/dist/src/plugins/filter-ui/field-state-utils.d.ts +6 -0
- package/dist/src/plugins/filter-ui/field-state-utils.d.ts.map +1 -0
- package/dist/src/plugins/filter-ui/filter-chip-bar.d.ts +16 -0
- package/dist/src/plugins/filter-ui/filter-chip-bar.d.ts.map +1 -0
- package/dist/src/plugins/filter-ui/filter-chip-descriptors.d.ts +4 -0
- package/dist/src/plugins/filter-ui/filter-chip-descriptors.d.ts.map +1 -0
- package/dist/src/plugins/filter-ui/filter-popup-dom.d.ts +32 -0
- package/dist/src/plugins/filter-ui/filter-popup-dom.d.ts.map +1 -0
- package/dist/src/plugins/filter-ui/filter-popup.d.ts +3 -0
- package/dist/src/plugins/filter-ui/filter-popup.d.ts.map +1 -0
- package/dist/src/plugins/filter-ui/filter-ui-operators.d.ts +9 -0
- package/dist/src/plugins/filter-ui/filter-ui-operators.d.ts.map +1 -0
- package/dist/src/plugins/filter-ui/filter-ui-types.d.ts +56 -0
- package/dist/src/plugins/filter-ui/filter-ui-types.d.ts.map +1 -0
- package/dist/src/plugins/filter-ui/grid-filter-ui.d.ts +20 -0
- package/dist/src/plugins/filter-ui/grid-filter-ui.d.ts.map +1 -0
- package/dist/src/plugins/filter-ui/index.d.ts +1 -0
- package/dist/src/plugins/filter-ui/index.d.ts.map +1 -1
- package/dist/src/plugins/header/header-dom-operations.d.ts +6 -0
- package/dist/src/plugins/header/header-dom-operations.d.ts.map +1 -1
- package/dist/src/plugins/header/header-plugin.d.ts.map +1 -1
- package/dist/src/plugins/header/header-registry-setup.d.ts.map +1 -1
- package/dist/src/plugins/header/header-rendering.d.ts.map +1 -1
- package/dist/src/plugins/header/header-types.d.ts +8 -1
- package/dist/src/plugins/header/header-types.d.ts.map +1 -1
- package/dist/src/plugins/index.d.ts +4 -0
- package/dist/src/plugins/index.d.ts.map +1 -1
- package/dist/src/plugins/keyboard/index.d.ts +3 -0
- package/dist/src/plugins/keyboard/index.d.ts.map +1 -0
- package/dist/src/plugins/keyboard/keyboard-nav-utils.d.ts +13 -0
- package/dist/src/plugins/keyboard/keyboard-nav-utils.d.ts.map +1 -0
- package/dist/src/plugins/keyboard/keyboard-plugin.d.ts +17 -0
- package/dist/src/plugins/keyboard/keyboard-plugin.d.ts.map +1 -0
- package/dist/src/plugins/lifecycle/lifecycle-plugin.d.ts +1 -0
- package/dist/src/plugins/lifecycle/lifecycle-plugin.d.ts.map +1 -1
- package/dist/src/plugins/pagination/pagination-plugin.d.ts.map +1 -1
- package/dist/src/plugins/rendering/rendering-plugin.d.ts.map +1 -1
- package/dist/src/plugins/selection/selection-plugin.d.ts.map +1 -1
- package/dist/src/reactive/store.d.ts +1 -0
- package/dist/src/reactive/store.d.ts.map +1 -1
- package/dist/src/reactive/types.d.ts +1 -0
- package/dist/src/reactive/types.d.ts.map +1 -1
- package/dist/src/rendering/cache/renderer-cache.interface.d.ts +6 -0
- package/dist/src/rendering/cache/renderer-cache.interface.d.ts.map +1 -1
- package/dist/src/rendering/cell-positioner/cell-positioner.d.ts +21 -0
- package/dist/src/rendering/cell-positioner/cell-positioner.d.ts.map +1 -1
- package/dist/src/rendering/headers/header-renderer.interface.d.ts +6 -0
- package/dist/src/rendering/headers/header-renderer.interface.d.ts.map +1 -1
- package/dist/src/rendering/headers/renderers/sortable-header-renderer.d.ts +4 -0
- package/dist/src/rendering/headers/renderers/sortable-header-renderer.d.ts.map +1 -1
- package/dist/src/rendering/renderers/dropdown/dropdown-dom.d.ts.map +1 -1
- package/dist/src/rendering/renderers/dropdown/dropdown-renderer.d.ts +2 -0
- package/dist/src/rendering/renderers/dropdown/dropdown-renderer.d.ts.map +1 -1
- package/dist/src/rendering/renderers/dropdown/dropdown-state.d.ts.map +1 -1
- package/dist/src/rendering/renderers/renderer.interface.d.ts +7 -0
- package/dist/src/rendering/renderers/renderer.interface.d.ts.map +1 -1
- package/dist/src/styles/a11y.css +20 -0
- package/dist/src/styles/calendar.css +291 -0
- package/dist/src/styles/cell-overflow.css +129 -0
- package/dist/src/styles/cell-renderers.css +90 -0
- package/dist/src/styles/date-picker.css +125 -0
- package/dist/src/styles/dropdown.css +156 -0
- package/dist/src/styles/filter.css +166 -0
- package/dist/src/styles/grid.css +91 -287
- package/dist/src/styles/header.css +60 -0
- package/dist/src/styles/overlays.css +44 -0
- package/dist/src/styles/tokens.css +86 -0
- package/dist/src/styles.css +24 -1112
- package/dist/src/types/grid.d.ts +32 -2
- package/dist/src/types/grid.d.ts.map +1 -1
- package/package.json +3 -3
- package/dist/src/grid/filter-ui.d.ts +0 -71
- package/dist/src/grid/filter-ui.d.ts.map +0 -1
package/dist/src/styles.css
CHANGED
|
@@ -1,1112 +1,24 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ZenGrid Core Styles (Community Edition)
|
|
3
|
-
*
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
--zg-border-editing: #4caf50;
|
|
26
|
-
--zg-border-focus: #2196f3;
|
|
27
|
-
|
|
28
|
-
/* Colors - Text */
|
|
29
|
-
--zg-text-primary: #333333;
|
|
30
|
-
--zg-text-secondary: #666666;
|
|
31
|
-
--zg-text-disabled: #999999;
|
|
32
|
-
--zg-text-negative: #d32f2f;
|
|
33
|
-
--zg-text-link: #1976d2;
|
|
34
|
-
|
|
35
|
-
/* Colors - State */
|
|
36
|
-
--zg-state-success: #4caf50;
|
|
37
|
-
--zg-state-warning: #ff9800;
|
|
38
|
-
--zg-state-error: #f44336;
|
|
39
|
-
--zg-state-info: #2196f3;
|
|
40
|
-
|
|
41
|
-
/* Colors - Scrollbar */
|
|
42
|
-
--zg-scrollbar-thumb: rgba(0, 0, 0, 0.3);
|
|
43
|
-
--zg-scrollbar-thumb-hover: rgba(0, 0, 0, 0.5);
|
|
44
|
-
|
|
45
|
-
/* Spacing */
|
|
46
|
-
--zg-cell-padding-x: 8px;
|
|
47
|
-
--zg-cell-padding-y: 0;
|
|
48
|
-
--zg-header-padding: 12px;
|
|
49
|
-
--zg-border-width: 1px;
|
|
50
|
-
|
|
51
|
-
/* Typography */
|
|
52
|
-
--zg-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
|
53
|
-
--zg-font-size: 14px;
|
|
54
|
-
--zg-line-height: 1.5;
|
|
55
|
-
|
|
56
|
-
/* Shadows */
|
|
57
|
-
--zg-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
|
|
58
|
-
--zg-shadow-md: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
59
|
-
--zg-shadow-lg: 0 4px 8px rgba(0, 0, 0, 0.15);
|
|
60
|
-
|
|
61
|
-
/* Transitions */
|
|
62
|
-
--zg-transition-fast: 0.1s ease;
|
|
63
|
-
--zg-transition-normal: 0.2s ease;
|
|
64
|
-
|
|
65
|
-
/* Legacy aliases (backwards compat) */
|
|
66
|
-
--zg-bg-color: var(--zg-bg-primary);
|
|
67
|
-
--zg-text-color: var(--zg-text-primary);
|
|
68
|
-
--zg-header-bg: var(--zg-bg-secondary);
|
|
69
|
-
--zg-header-text: var(--zg-text-primary);
|
|
70
|
-
--zg-selected-bg: var(--zg-bg-selected);
|
|
71
|
-
--zg-selected-border: var(--zg-border-selected);
|
|
72
|
-
--zg-focus-ring: var(--zg-border-focus);
|
|
73
|
-
--zg-hover-bg: var(--zg-bg-hover);
|
|
74
|
-
--zg-cell-padding: var(--zg-cell-padding-y) var(--zg-cell-padding-x);
|
|
75
|
-
|
|
76
|
-
/* Calendar theming variables */
|
|
77
|
-
--zg-calendar-bg: var(--zg-bg-primary);
|
|
78
|
-
--zg-calendar-text: var(--zg-text-primary);
|
|
79
|
-
--zg-calendar-border: var(--zg-border-color);
|
|
80
|
-
--zg-calendar-header-bg: var(--zg-bg-secondary);
|
|
81
|
-
--zg-calendar-selected-bg: var(--zg-bg-selected);
|
|
82
|
-
--zg-calendar-selected-text: var(--zg-text-primary);
|
|
83
|
-
--zg-calendar-today-border: var(--zg-border-focus);
|
|
84
|
-
--zg-calendar-hover-bg: var(--zg-bg-hover);
|
|
85
|
-
--zg-calendar-disabled-text: var(--zg-text-disabled);
|
|
86
|
-
--zg-calendar-shadow: var(--zg-shadow-lg);
|
|
87
|
-
--zg-calendar-radius: 8px;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/* Grid container */
|
|
91
|
-
.zg-grid {
|
|
92
|
-
position: relative;
|
|
93
|
-
width: 100%;
|
|
94
|
-
height: 100%;
|
|
95
|
-
overflow: hidden;
|
|
96
|
-
background: var(--zg-bg-color);
|
|
97
|
-
font-family: var(--zg-font-family);
|
|
98
|
-
font-size: var(--zg-font-size);
|
|
99
|
-
line-height: var(--zg-line-height);
|
|
100
|
-
color: var(--zg-text-color);
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
/* Viewport (scrollable area) */
|
|
104
|
-
.zg-viewport {
|
|
105
|
-
position: relative;
|
|
106
|
-
width: 100%;
|
|
107
|
-
height: 100%;
|
|
108
|
-
overflow: auto;
|
|
109
|
-
will-change: scroll-position;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
/* Scroll container (defines virtual scroll area) */
|
|
113
|
-
.zg-scroll-container {
|
|
114
|
-
pointer-events: auto;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
/* Cell container (holds visible cells) */
|
|
118
|
-
.zg-cells {
|
|
119
|
-
position: absolute;
|
|
120
|
-
top: 0;
|
|
121
|
-
left: 0;
|
|
122
|
-
pointer-events: auto;
|
|
123
|
-
/* Performance optimization: hint browser about transform animations */
|
|
124
|
-
will-change: transform;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
/* Individual cell */
|
|
128
|
-
.zg-cell {
|
|
129
|
-
position: absolute;
|
|
130
|
-
box-sizing: border-box;
|
|
131
|
-
padding: var(--zg-cell-padding);
|
|
132
|
-
/* Use box-shadow instead of border for consistent rendering at fractional devicePixelRatio */
|
|
133
|
-
/* Borders render inconsistently at 125%/150% Windows scaling due to sub-pixel rounding */
|
|
134
|
-
box-shadow:
|
|
135
|
-
inset -1px 0 0 0 var(--zg-border-color),
|
|
136
|
-
inset 0 -1px 0 0 var(--zg-border-color);
|
|
137
|
-
background: var(--zg-bg-color);
|
|
138
|
-
color: var(--zg-text-color);
|
|
139
|
-
white-space: nowrap;
|
|
140
|
-
overflow: hidden;
|
|
141
|
-
text-overflow: ellipsis;
|
|
142
|
-
user-select: none;
|
|
143
|
-
|
|
144
|
-
/* Performance optimization: contain layout/style/paint within cell boundaries */
|
|
145
|
-
/* This helps browser optimize rendering by isolating cell changes */
|
|
146
|
-
contain: layout style paint;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
.zg-cell[data-col="0"] {
|
|
150
|
-
box-shadow:
|
|
151
|
-
inset 1px 0 0 0 var(--zg-border-color),
|
|
152
|
-
inset -1px 0 0 0 var(--zg-border-color),
|
|
153
|
-
inset 0 -1px 0 0 var(--zg-border-color);
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
.zg-cell:hover {
|
|
157
|
-
background: var(--zg-hover-bg);
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
/* Selected cell - unified row highlight: hide vertical dividers, show only top/bottom edges */
|
|
161
|
-
.zg-cell-selected {
|
|
162
|
-
background: var(--zg-selected-bg);
|
|
163
|
-
box-shadow:
|
|
164
|
-
inset 0 1px 0 0 var(--zg-selected-border),
|
|
165
|
-
inset 0 -1px 0 0 var(--zg-selected-border);
|
|
166
|
-
z-index: 1;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
/* First selected cell in row: add left edge */
|
|
170
|
-
.zg-cell-selected[data-col="0"] {
|
|
171
|
-
box-shadow:
|
|
172
|
-
inset 1px 0 0 0 var(--zg-selected-border),
|
|
173
|
-
inset 0 1px 0 0 var(--zg-selected-border),
|
|
174
|
-
inset 0 -1px 0 0 var(--zg-selected-border);
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
/* Active/focused cell */
|
|
178
|
-
.zg-cell-active {
|
|
179
|
-
outline: 2px solid var(--zg-focus-ring);
|
|
180
|
-
outline-offset: -2px;
|
|
181
|
-
z-index: 2;
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
/* Editing cell */
|
|
185
|
-
.zg-cell-editing {
|
|
186
|
-
outline: 2px solid var(--zg-focus-ring);
|
|
187
|
-
background: var(--zg-bg-color);
|
|
188
|
-
z-index: 3;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
.zg-cell-editing input {
|
|
192
|
-
width: 100%;
|
|
193
|
-
height: 100%;
|
|
194
|
-
border: none;
|
|
195
|
-
outline: none;
|
|
196
|
-
padding: 0;
|
|
197
|
-
font: inherit;
|
|
198
|
-
background: transparent;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
/* Headers */
|
|
202
|
-
.zg-header {
|
|
203
|
-
position: absolute;
|
|
204
|
-
top: 0;
|
|
205
|
-
left: 0;
|
|
206
|
-
right: 0;
|
|
207
|
-
z-index: 10;
|
|
208
|
-
background: var(--zg-header-bg);
|
|
209
|
-
color: var(--zg-header-text);
|
|
210
|
-
font-weight: 600;
|
|
211
|
-
border-bottom: 2px solid var(--zg-border-color);
|
|
212
|
-
box-shadow: 0 1px 3px rgba(0,0,0,0.1);
|
|
213
|
-
overflow: hidden;
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
.zg-header-cells {
|
|
217
|
-
display: flex;
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
.zg-header-cell {
|
|
221
|
-
box-sizing: border-box;
|
|
222
|
-
padding: var(--zg-header-padding);
|
|
223
|
-
border-right: var(--zg-border-width) solid var(--zg-border-color);
|
|
224
|
-
display: flex;
|
|
225
|
-
align-items: center;
|
|
226
|
-
cursor: pointer;
|
|
227
|
-
background: var(--zg-header-bg);
|
|
228
|
-
color: var(--zg-header-text);
|
|
229
|
-
font-weight: 600;
|
|
230
|
-
white-space: nowrap;
|
|
231
|
-
overflow: hidden;
|
|
232
|
-
text-overflow: ellipsis;
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
.zg-header-cell:first-child {
|
|
236
|
-
border-left: var(--zg-border-width) solid var(--zg-border-color);
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
.zg-header-cell:hover {
|
|
240
|
-
background: var(--zg-hover-bg);
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
/* Header checkbox */
|
|
244
|
-
.zg-header-checkbox {
|
|
245
|
-
justify-content: center;
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
.zg-header-checkbox-input {
|
|
249
|
-
cursor: pointer;
|
|
250
|
-
accent-color: var(--zg-selected-border);
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
/* Active filter chips */
|
|
254
|
-
.zg-filter-chip-bar {
|
|
255
|
-
position: absolute;
|
|
256
|
-
left: 0;
|
|
257
|
-
right: 0;
|
|
258
|
-
z-index: 9;
|
|
259
|
-
display: flex;
|
|
260
|
-
align-items: flex-start;
|
|
261
|
-
gap: 8px;
|
|
262
|
-
padding: 6px 8px;
|
|
263
|
-
border-bottom: 1px solid var(--zg-border-color);
|
|
264
|
-
background: var(--zg-bg-secondary, #f9f9f9);
|
|
265
|
-
box-sizing: border-box;
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
.zg-filter-chip-bar__title {
|
|
269
|
-
font-size: 12px;
|
|
270
|
-
font-weight: 600;
|
|
271
|
-
color: var(--zg-text-secondary, #666666);
|
|
272
|
-
line-height: 24px;
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
.zg-filter-chip-bar__list {
|
|
276
|
-
display: flex;
|
|
277
|
-
flex: 1;
|
|
278
|
-
flex-wrap: wrap;
|
|
279
|
-
gap: 6px;
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
.zg-filter-chip-bar__clear {
|
|
283
|
-
flex-shrink: 0;
|
|
284
|
-
padding: 4px 8px;
|
|
285
|
-
border: 1px solid var(--zg-border-color);
|
|
286
|
-
border-radius: 999px;
|
|
287
|
-
background: transparent;
|
|
288
|
-
color: var(--zg-text-secondary, #666666);
|
|
289
|
-
font-size: 12px;
|
|
290
|
-
cursor: pointer;
|
|
291
|
-
}
|
|
292
|
-
|
|
293
|
-
.zg-filter-chip {
|
|
294
|
-
display: inline-flex;
|
|
295
|
-
align-items: center;
|
|
296
|
-
gap: 6px;
|
|
297
|
-
min-width: 0;
|
|
298
|
-
padding: 4px 8px;
|
|
299
|
-
border: 1px solid var(--zg-border-color);
|
|
300
|
-
border-radius: 999px;
|
|
301
|
-
background: var(--zg-bg-color);
|
|
302
|
-
color: var(--zg-text-color);
|
|
303
|
-
box-shadow: var(--zg-shadow-sm);
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
.zg-filter-chip__label {
|
|
307
|
-
min-width: 0;
|
|
308
|
-
max-width: 320px;
|
|
309
|
-
overflow: hidden;
|
|
310
|
-
text-overflow: ellipsis;
|
|
311
|
-
white-space: nowrap;
|
|
312
|
-
font-size: 12px;
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
.zg-filter-chip__remove {
|
|
316
|
-
flex-shrink: 0;
|
|
317
|
-
border: 0;
|
|
318
|
-
padding: 0;
|
|
319
|
-
background: transparent;
|
|
320
|
-
color: inherit;
|
|
321
|
-
font-size: 14px;
|
|
322
|
-
line-height: 1;
|
|
323
|
-
cursor: pointer;
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
/* Filter popup */
|
|
327
|
-
.zg-filter-popup {
|
|
328
|
-
position: fixed;
|
|
329
|
-
min-width: 220px;
|
|
330
|
-
max-width: 320px;
|
|
331
|
-
background: var(--zg-bg-color);
|
|
332
|
-
color: var(--zg-text-color);
|
|
333
|
-
border: 1px solid var(--zg-border-color);
|
|
334
|
-
border-radius: 6px;
|
|
335
|
-
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
|
|
336
|
-
padding: 10px;
|
|
337
|
-
z-index: 2000;
|
|
338
|
-
font-size: 13px;
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
.zg-filter-popup__title {
|
|
342
|
-
font-weight: 600;
|
|
343
|
-
margin-bottom: 8px;
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
.zg-filter-popup__row {
|
|
347
|
-
display: flex;
|
|
348
|
-
flex-direction: column;
|
|
349
|
-
gap: 4px;
|
|
350
|
-
margin-bottom: 8px;
|
|
351
|
-
}
|
|
352
|
-
|
|
353
|
-
.zg-filter-popup__conditions {
|
|
354
|
-
display: flex;
|
|
355
|
-
flex-direction: column;
|
|
356
|
-
gap: 8px;
|
|
357
|
-
margin-bottom: 8px;
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
.zg-filter-popup__condition {
|
|
361
|
-
padding: 6px;
|
|
362
|
-
border: 1px solid var(--zg-border-color);
|
|
363
|
-
border-radius: 4px;
|
|
364
|
-
background: var(--zg-bg-secondary, #f9f9f9);
|
|
365
|
-
}
|
|
366
|
-
|
|
367
|
-
.zg-filter-popup__condition-actions {
|
|
368
|
-
display: flex;
|
|
369
|
-
justify-content: flex-end;
|
|
370
|
-
}
|
|
371
|
-
|
|
372
|
-
.zg-filter-popup__select,
|
|
373
|
-
.zg-filter-popup__input {
|
|
374
|
-
width: 100%;
|
|
375
|
-
padding: 6px 8px;
|
|
376
|
-
border: 1px solid var(--zg-border-color);
|
|
377
|
-
border-radius: 4px;
|
|
378
|
-
background: var(--zg-bg-color);
|
|
379
|
-
color: var(--zg-text-color);
|
|
380
|
-
font-size: 13px;
|
|
381
|
-
box-sizing: border-box;
|
|
382
|
-
}
|
|
383
|
-
|
|
384
|
-
.zg-filter-popup__actions {
|
|
385
|
-
display: flex;
|
|
386
|
-
gap: 8px;
|
|
387
|
-
justify-content: flex-end;
|
|
388
|
-
}
|
|
389
|
-
|
|
390
|
-
.zg-filter-popup__btn {
|
|
391
|
-
padding: 6px 10px;
|
|
392
|
-
border: 1px solid var(--zg-border-color);
|
|
393
|
-
background: var(--zg-header-bg);
|
|
394
|
-
color: var(--zg-header-text);
|
|
395
|
-
border-radius: 4px;
|
|
396
|
-
cursor: pointer;
|
|
397
|
-
font-size: 12px;
|
|
398
|
-
}
|
|
399
|
-
|
|
400
|
-
.zg-filter-popup__btn--add {
|
|
401
|
-
width: 100%;
|
|
402
|
-
margin-bottom: 8px;
|
|
403
|
-
}
|
|
404
|
-
|
|
405
|
-
.zg-filter-popup__btn--remove {
|
|
406
|
-
padding: 4px 8px;
|
|
407
|
-
font-size: 11px;
|
|
408
|
-
}
|
|
409
|
-
|
|
410
|
-
.zg-filter-popup__btn.primary {
|
|
411
|
-
background: var(--zg-selected-border);
|
|
412
|
-
border-color: var(--zg-selected-border);
|
|
413
|
-
color: #fff;
|
|
414
|
-
}
|
|
415
|
-
|
|
416
|
-
/* Selection overlay */
|
|
417
|
-
.zg-selection-overlay {
|
|
418
|
-
position: absolute;
|
|
419
|
-
pointer-events: none;
|
|
420
|
-
border: 2px solid var(--zg-selected-border);
|
|
421
|
-
background: transparent;
|
|
422
|
-
z-index: 5;
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
/* Focus ring (separate element for virtual scrolling) */
|
|
426
|
-
.zg-focus-ring {
|
|
427
|
-
position: absolute;
|
|
428
|
-
pointer-events: none;
|
|
429
|
-
border: 2px solid var(--zg-focus-ring);
|
|
430
|
-
box-shadow: inset 0 0 0 1px #ffffff;
|
|
431
|
-
z-index: 6;
|
|
432
|
-
}
|
|
433
|
-
|
|
434
|
-
/* Loading indicator */
|
|
435
|
-
.zg-loading {
|
|
436
|
-
position: absolute;
|
|
437
|
-
top: 50%;
|
|
438
|
-
left: 50%;
|
|
439
|
-
transform: translate(-50%, -50%);
|
|
440
|
-
z-index: 100;
|
|
441
|
-
}
|
|
442
|
-
|
|
443
|
-
/* Accessibility - screen reader only */
|
|
444
|
-
.zg-sr-only {
|
|
445
|
-
position: absolute;
|
|
446
|
-
width: 1px;
|
|
447
|
-
height: 1px;
|
|
448
|
-
padding: 0;
|
|
449
|
-
margin: -1px;
|
|
450
|
-
overflow: hidden;
|
|
451
|
-
clip: rect(0, 0, 0, 0);
|
|
452
|
-
white-space: nowrap;
|
|
453
|
-
border-width: 0;
|
|
454
|
-
}
|
|
455
|
-
|
|
456
|
-
/* RTL support */
|
|
457
|
-
.zg-grid[dir='rtl'] {
|
|
458
|
-
direction: rtl;
|
|
459
|
-
}
|
|
460
|
-
|
|
461
|
-
.zg-grid[dir='rtl'] .zg-cell {
|
|
462
|
-
box-shadow:
|
|
463
|
-
inset 1px 0 0 0 var(--zg-border-color),
|
|
464
|
-
inset 0 -1px 0 0 var(--zg-border-color);
|
|
465
|
-
}
|
|
466
|
-
|
|
467
|
-
/* Dark theme - applied via ThemeManager inline CSS variables on container.
|
|
468
|
-
Legacy .zg-theme-dark class is still set for backwards compat but
|
|
469
|
-
no CSS overrides are needed here since the theme manager handles it. */
|
|
470
|
-
|
|
471
|
-
/* High contrast mode */
|
|
472
|
-
@media (prefers-contrast: high) {
|
|
473
|
-
.zg-grid {
|
|
474
|
-
--zg-border-color: #000000;
|
|
475
|
-
--zg-selected-border: #000000;
|
|
476
|
-
}
|
|
477
|
-
}
|
|
478
|
-
|
|
479
|
-
/* ===== Cell Renderers ===== */
|
|
480
|
-
|
|
481
|
-
/* Number renderer */
|
|
482
|
-
.zg-cell-number {
|
|
483
|
-
text-align: right;
|
|
484
|
-
font-variant-numeric: tabular-nums;
|
|
485
|
-
}
|
|
486
|
-
|
|
487
|
-
.zg-cell-negative {
|
|
488
|
-
color: var(--zg-text-negative, #d32f2f);
|
|
489
|
-
}
|
|
490
|
-
|
|
491
|
-
/* Image renderer */
|
|
492
|
-
.zg-cell-image {
|
|
493
|
-
display: flex;
|
|
494
|
-
align-items: center;
|
|
495
|
-
justify-content: center;
|
|
496
|
-
padding: 2px;
|
|
497
|
-
}
|
|
498
|
-
|
|
499
|
-
.zg-cell-image__img {
|
|
500
|
-
max-width: 100%;
|
|
501
|
-
max-height: 100%;
|
|
502
|
-
object-fit: contain;
|
|
503
|
-
}
|
|
504
|
-
|
|
505
|
-
/* Advanced cell renderer */
|
|
506
|
-
.zg-cell-advanced {
|
|
507
|
-
overflow: hidden;
|
|
508
|
-
}
|
|
509
|
-
|
|
510
|
-
.zg-cell-advanced__icon {
|
|
511
|
-
flex-shrink: 0;
|
|
512
|
-
}
|
|
513
|
-
|
|
514
|
-
.zg-cell-advanced__text {
|
|
515
|
-
flex: 1;
|
|
516
|
-
overflow: hidden;
|
|
517
|
-
text-overflow: ellipsis;
|
|
518
|
-
white-space: nowrap;
|
|
519
|
-
}
|
|
520
|
-
|
|
521
|
-
.zg-badge {
|
|
522
|
-
display: inline-flex;
|
|
523
|
-
align-items: center;
|
|
524
|
-
justify-content: center;
|
|
525
|
-
padding: 2px 6px;
|
|
526
|
-
border-radius: 4px;
|
|
527
|
-
font-size: 0.75em;
|
|
528
|
-
font-weight: 500;
|
|
529
|
-
background: var(--zg-badge-bg, #e0e0e0);
|
|
530
|
-
color: var(--zg-badge-color, #333);
|
|
531
|
-
}
|
|
532
|
-
|
|
533
|
-
/* === Cell Overflow Modes === */
|
|
534
|
-
|
|
535
|
-
/* Clip mode (default) - already applied in .zg-cell base styles */
|
|
536
|
-
.zg-cell-overflow-clip {
|
|
537
|
-
overflow: hidden;
|
|
538
|
-
white-space: nowrap;
|
|
539
|
-
text-overflow: clip;
|
|
540
|
-
}
|
|
541
|
-
|
|
542
|
-
/* Ellipsis mode - already applied in .zg-cell base styles */
|
|
543
|
-
.zg-cell-overflow-ellipsis {
|
|
544
|
-
overflow: hidden;
|
|
545
|
-
white-space: nowrap;
|
|
546
|
-
text-overflow: ellipsis;
|
|
547
|
-
}
|
|
548
|
-
|
|
549
|
-
/* Wrap mode (requires autoHeight for proper row expansion) */
|
|
550
|
-
.zg-cell-overflow-wrap {
|
|
551
|
-
white-space: normal !important;
|
|
552
|
-
word-wrap: break-word;
|
|
553
|
-
overflow-wrap: break-word;
|
|
554
|
-
overflow: visible !important;
|
|
555
|
-
}
|
|
556
|
-
|
|
557
|
-
/* Scroll mode (scrolls within fixed cell height) */
|
|
558
|
-
.zg-cell-overflow-scroll {
|
|
559
|
-
overflow-y: auto;
|
|
560
|
-
overflow-x: hidden;
|
|
561
|
-
white-space: normal;
|
|
562
|
-
word-wrap: break-word;
|
|
563
|
-
scroll-behavior: smooth;
|
|
564
|
-
scrollbar-width: thin;
|
|
565
|
-
contain: layout style; /* Remove paint containment so scrollbar can render */
|
|
566
|
-
}
|
|
567
|
-
|
|
568
|
-
.zg-cell-overflow-scroll::-webkit-scrollbar {
|
|
569
|
-
width: 6px;
|
|
570
|
-
}
|
|
571
|
-
|
|
572
|
-
.zg-cell-overflow-scroll::-webkit-scrollbar-track {
|
|
573
|
-
background: rgba(0, 0, 0, 0.05);
|
|
574
|
-
border-radius: 3px;
|
|
575
|
-
}
|
|
576
|
-
|
|
577
|
-
.zg-cell-overflow-scroll::-webkit-scrollbar-thumb {
|
|
578
|
-
background: rgba(0, 0, 0, 0.2);
|
|
579
|
-
border-radius: 3px;
|
|
580
|
-
}
|
|
581
|
-
|
|
582
|
-
.zg-cell-overflow-scroll::-webkit-scrollbar-thumb:hover {
|
|
583
|
-
background: rgba(0, 0, 0, 0.3);
|
|
584
|
-
}
|
|
585
|
-
|
|
586
|
-
/* Expand mode (alias for wrap, requires autoHeight) */
|
|
587
|
-
.zg-cell-overflow-expand {
|
|
588
|
-
white-space: normal !important;
|
|
589
|
-
word-wrap: break-word;
|
|
590
|
-
overflow-wrap: break-word;
|
|
591
|
-
overflow: visible !important;
|
|
592
|
-
}
|
|
593
|
-
|
|
594
|
-
/* Chip cell overrides - allow proper overflow handling */
|
|
595
|
-
.zg-cell-chip {
|
|
596
|
-
white-space: nowrap;
|
|
597
|
-
overflow: hidden; /* Clip chips to cell bounds by default */
|
|
598
|
-
contain: layout style; /* Relax paint containment for chip rendering */
|
|
599
|
-
}
|
|
600
|
-
|
|
601
|
-
/* When chip cell has scroll mode, enable horizontal scrolling */
|
|
602
|
-
.zg-cell-overflow-scroll.zg-cell-chip {
|
|
603
|
-
overflow-x: auto; /* Allow horizontal scrolling */
|
|
604
|
-
overflow-y: hidden; /* Prevent vertical overflow */
|
|
605
|
-
display: flex; /* Enable flexbox for proper containment */
|
|
606
|
-
align-items: center; /* Vertically center chips */
|
|
607
|
-
white-space: nowrap; /* Keep chips in single line */
|
|
608
|
-
scrollbar-width: thin; /* Thin scrollbar for Firefox */
|
|
609
|
-
contain: layout style; /* Remove paint containment so scrollbar can render */
|
|
610
|
-
}
|
|
611
|
-
|
|
612
|
-
.zg-cell-overflow-scroll.zg-cell-chip::-webkit-scrollbar {
|
|
613
|
-
height: 6px; /* Horizontal scrollbar height */
|
|
614
|
-
}
|
|
615
|
-
|
|
616
|
-
.zg-cell-overflow-scroll.zg-cell-chip::-webkit-scrollbar-track {
|
|
617
|
-
background: rgba(0, 0, 0, 0.05);
|
|
618
|
-
}
|
|
619
|
-
|
|
620
|
-
.zg-cell-overflow-scroll.zg-cell-chip::-webkit-scrollbar-thumb {
|
|
621
|
-
background: rgba(0, 0, 0, 0.2);
|
|
622
|
-
border-radius: 3px;
|
|
623
|
-
}
|
|
624
|
-
|
|
625
|
-
.zg-cell-overflow-scroll.zg-cell-chip::-webkit-scrollbar-thumb:hover {
|
|
626
|
-
background: rgba(0, 0, 0, 0.3);
|
|
627
|
-
}
|
|
628
|
-
|
|
629
|
-
/* Chip renderer */
|
|
630
|
-
.zg-chip-container {
|
|
631
|
-
display: flex;
|
|
632
|
-
align-items: center;
|
|
633
|
-
gap: 4px;
|
|
634
|
-
max-width: 100%; /* Constrain to cell width */
|
|
635
|
-
}
|
|
636
|
-
|
|
637
|
-
/* Chip container overflow modes */
|
|
638
|
-
.zg-chip-container--wrap {
|
|
639
|
-
flex-wrap: wrap;
|
|
640
|
-
min-height: 100%; /* Allow row to expand */
|
|
641
|
-
}
|
|
642
|
-
|
|
643
|
-
.zg-chip-container--scroll {
|
|
644
|
-
flex-wrap: nowrap;
|
|
645
|
-
overflow-x: auto;
|
|
646
|
-
overflow-y: hidden;
|
|
647
|
-
max-height: 100%;
|
|
648
|
-
scrollbar-width: none; /* Firefox */
|
|
649
|
-
}
|
|
650
|
-
|
|
651
|
-
.zg-chip-container--scroll::-webkit-scrollbar {
|
|
652
|
-
display: none; /* Chrome/Safari */
|
|
653
|
-
}
|
|
654
|
-
|
|
655
|
-
.zg-chip-container--collapse {
|
|
656
|
-
flex-wrap: nowrap;
|
|
657
|
-
overflow: hidden;
|
|
658
|
-
}
|
|
659
|
-
|
|
660
|
-
/* Button Renderer Styles */
|
|
661
|
-
.zg-cell.zg-cell-button {
|
|
662
|
-
display: flex;
|
|
663
|
-
align-items: center;
|
|
664
|
-
justify-content: center;
|
|
665
|
-
}
|
|
666
|
-
|
|
667
|
-
.zg-button {
|
|
668
|
-
line-height: 1;
|
|
669
|
-
text-align: center;
|
|
670
|
-
}
|
|
671
|
-
|
|
672
|
-
/* Checkbox Renderer Styles */
|
|
673
|
-
.zg-cell.zg-cell-checkbox-container {
|
|
674
|
-
display: flex;
|
|
675
|
-
align-items: center;
|
|
676
|
-
justify-content: center;
|
|
677
|
-
padding: 0 !important; /* Override default cell padding */
|
|
678
|
-
}
|
|
679
|
-
|
|
680
|
-
.zg-checkbox-wrapper {
|
|
681
|
-
display: flex;
|
|
682
|
-
align-items: center;
|
|
683
|
-
justify-content: center;
|
|
684
|
-
}
|
|
685
|
-
|
|
686
|
-
.zg-cell-checkbox {
|
|
687
|
-
cursor: pointer;
|
|
688
|
-
width: 16px;
|
|
689
|
-
height: 16px;
|
|
690
|
-
margin: 0;
|
|
691
|
-
}
|
|
692
|
-
|
|
693
|
-
/* Reduced motion */
|
|
694
|
-
@media (prefers-reduced-motion: reduce) {
|
|
695
|
-
.zg-grid * {
|
|
696
|
-
transition: none !important;
|
|
697
|
-
animation: none !important;
|
|
698
|
-
}
|
|
699
|
-
}
|
|
700
|
-
|
|
701
|
-
/* ============================================
|
|
702
|
-
Date Picker Calendar Overrides
|
|
703
|
-
============================================ */
|
|
704
|
-
|
|
705
|
-
/* Calendar wrapper styling */
|
|
706
|
-
.vanilla-calendar-wrapper,
|
|
707
|
-
.date-range-calendar-wrapper {
|
|
708
|
-
font-family: var(--zg-font-family, inherit);
|
|
709
|
-
background: var(--zg-calendar-bg);
|
|
710
|
-
color: var(--zg-calendar-text);
|
|
711
|
-
border: 1px solid var(--zg-calendar-border);
|
|
712
|
-
border-radius: var(--zg-calendar-radius);
|
|
713
|
-
box-shadow: var(--zg-calendar-shadow);
|
|
714
|
-
}
|
|
715
|
-
|
|
716
|
-
/* Calendar header */
|
|
717
|
-
.vanilla-calendar__header {
|
|
718
|
-
background: var(--zg-calendar-header-bg);
|
|
719
|
-
border-bottom: 1px solid var(--zg-calendar-border);
|
|
720
|
-
}
|
|
721
|
-
|
|
722
|
-
/* Selected day */
|
|
723
|
-
.vanilla-calendar__day_selected {
|
|
724
|
-
background: var(--zg-calendar-selected-bg) !important;
|
|
725
|
-
color: var(--zg-calendar-selected-text) !important;
|
|
726
|
-
}
|
|
727
|
-
|
|
728
|
-
/* Hover state */
|
|
729
|
-
.vanilla-calendar__day:hover:not(.vanilla-calendar__day_disabled) {
|
|
730
|
-
background: var(--zg-calendar-hover-bg);
|
|
731
|
-
}
|
|
732
|
-
|
|
733
|
-
/* Today indicator */
|
|
734
|
-
.vanilla-calendar__day_today {
|
|
735
|
-
border: 2px solid var(--zg-calendar-today-border);
|
|
736
|
-
}
|
|
737
|
-
|
|
738
|
-
/* Disabled days */
|
|
739
|
-
.vanilla-calendar__day_disabled {
|
|
740
|
-
color: var(--zg-calendar-disabled-text);
|
|
741
|
-
}
|
|
742
|
-
|
|
743
|
-
/* Dark theme adjustments */
|
|
744
|
-
.zg-theme-dark .vanilla-calendar-wrapper,
|
|
745
|
-
.zg-theme-dark .date-range-calendar-wrapper {
|
|
746
|
-
--zg-calendar-disabled-text: #666666;
|
|
747
|
-
}
|
|
748
|
-
|
|
749
|
-
/* ============================================
|
|
750
|
-
Custom Date Range Picker Styles
|
|
751
|
-
============================================ */
|
|
752
|
-
|
|
753
|
-
.zg-date-range-picker {
|
|
754
|
-
--drp-primary: #4f7df3;
|
|
755
|
-
--drp-primary-hover: #3b6ce7;
|
|
756
|
-
--drp-text: #374151;
|
|
757
|
-
--drp-text-light: #9ca3af;
|
|
758
|
-
--drp-border: #e5e7eb;
|
|
759
|
-
--drp-bg: #ffffff;
|
|
760
|
-
--drp-bg-selected: #4f7df3;
|
|
761
|
-
--drp-bg-hover: #f3f4f6;
|
|
762
|
-
}
|
|
763
|
-
|
|
764
|
-
/* Calendar container within date range picker */
|
|
765
|
-
.zg-date-range-picker .zg-custom-calendar {
|
|
766
|
-
min-width: 280px;
|
|
767
|
-
}
|
|
768
|
-
|
|
769
|
-
/* Override vanilla-calendar v3 styles (vc- prefix) */
|
|
770
|
-
.zg-date-range-picker .vc-wrapper,
|
|
771
|
-
.zg-date-range-picker .vc {
|
|
772
|
-
background: transparent !important;
|
|
773
|
-
border: none !important;
|
|
774
|
-
box-shadow: none !important;
|
|
775
|
-
padding: 0 !important;
|
|
776
|
-
font-family: inherit !important;
|
|
777
|
-
}
|
|
778
|
-
|
|
779
|
-
.zg-date-range-picker .vc-header {
|
|
780
|
-
background: transparent !important;
|
|
781
|
-
border: none !important;
|
|
782
|
-
padding: 0 0 12px 0 !important;
|
|
783
|
-
margin-bottom: 8px !important;
|
|
784
|
-
display: flex !important;
|
|
785
|
-
align-items: center !important;
|
|
786
|
-
justify-content: center !important;
|
|
787
|
-
gap: 8px !important;
|
|
788
|
-
}
|
|
789
|
-
|
|
790
|
-
/* Month/Year buttons - dropdown style */
|
|
791
|
-
.zg-date-range-picker .vc-header__content {
|
|
792
|
-
display: flex !important;
|
|
793
|
-
gap: 8px !important;
|
|
794
|
-
align-items: center !important;
|
|
795
|
-
justify-content: center !important;
|
|
796
|
-
}
|
|
797
|
-
|
|
798
|
-
.zg-date-range-picker .vc-month,
|
|
799
|
-
.zg-date-range-picker .vc-year {
|
|
800
|
-
font-size: 14px !important;
|
|
801
|
-
font-weight: 400 !important;
|
|
802
|
-
color: var(--drp-text) !important;
|
|
803
|
-
background: transparent !important;
|
|
804
|
-
border: 1px solid var(--drp-border) !important;
|
|
805
|
-
border-radius: 6px !important;
|
|
806
|
-
padding: 6px 28px 6px 12px !important;
|
|
807
|
-
cursor: pointer !important;
|
|
808
|
-
position: relative !important;
|
|
809
|
-
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E") !important;
|
|
810
|
-
background-repeat: no-repeat !important;
|
|
811
|
-
background-position: right 8px center !important;
|
|
812
|
-
}
|
|
813
|
-
|
|
814
|
-
.zg-date-range-picker .vc-month:hover,
|
|
815
|
-
.zg-date-range-picker .vc-year:hover {
|
|
816
|
-
border-color: var(--drp-text-light) !important;
|
|
817
|
-
}
|
|
818
|
-
|
|
819
|
-
/* Arrow buttons - smaller and subtle */
|
|
820
|
-
.zg-date-range-picker .vc-arrow {
|
|
821
|
-
width: 28px !important;
|
|
822
|
-
height: 28px !important;
|
|
823
|
-
background: transparent !important;
|
|
824
|
-
border: 1px solid var(--drp-border) !important;
|
|
825
|
-
border-radius: 6px !important;
|
|
826
|
-
color: var(--drp-text-light) !important;
|
|
827
|
-
cursor: pointer !important;
|
|
828
|
-
display: flex !important;
|
|
829
|
-
align-items: center !important;
|
|
830
|
-
justify-content: center !important;
|
|
831
|
-
transition: all 0.15s !important;
|
|
832
|
-
visibility: visible !important; /* Override vanilla-calendar's hidden state */
|
|
833
|
-
}
|
|
834
|
-
|
|
835
|
-
.zg-date-range-picker .vc-arrow:hover {
|
|
836
|
-
border-color: var(--drp-text) !important;
|
|
837
|
-
color: var(--drp-text) !important;
|
|
838
|
-
background: var(--drp-bg-hover) !important;
|
|
839
|
-
}
|
|
840
|
-
|
|
841
|
-
/* Week day headers */
|
|
842
|
-
.zg-date-range-picker .vc-week {
|
|
843
|
-
display: grid !important;
|
|
844
|
-
grid-template-columns: repeat(7, 1fr) !important;
|
|
845
|
-
gap: 0 !important;
|
|
846
|
-
margin-bottom: 4px !important;
|
|
847
|
-
}
|
|
848
|
-
|
|
849
|
-
.zg-date-range-picker .vc-week__day {
|
|
850
|
-
font-size: 12px !important;
|
|
851
|
-
font-weight: 500 !important;
|
|
852
|
-
color: var(--drp-text-light) !important;
|
|
853
|
-
text-align: center !important;
|
|
854
|
-
padding: 8px 0 !important;
|
|
855
|
-
text-transform: uppercase !important;
|
|
856
|
-
}
|
|
857
|
-
|
|
858
|
-
/* Days grid */
|
|
859
|
-
.zg-date-range-picker .vc-dates {
|
|
860
|
-
display: grid !important;
|
|
861
|
-
grid-template-columns: repeat(7, 1fr) !important;
|
|
862
|
-
gap: 2px !important;
|
|
863
|
-
}
|
|
864
|
-
|
|
865
|
-
/* Individual day button */
|
|
866
|
-
.zg-date-range-picker .vc-date__btn {
|
|
867
|
-
width: 36px !important;
|
|
868
|
-
height: 36px !important;
|
|
869
|
-
display: flex !important;
|
|
870
|
-
align-items: center !important;
|
|
871
|
-
justify-content: center !important;
|
|
872
|
-
border-radius: 6px !important;
|
|
873
|
-
font-size: 14px !important;
|
|
874
|
-
font-weight: 400 !important;
|
|
875
|
-
color: var(--drp-text) !important;
|
|
876
|
-
background: transparent !important;
|
|
877
|
-
border: none !important;
|
|
878
|
-
cursor: pointer !important;
|
|
879
|
-
transition: background 0.15s, color 0.15s !important;
|
|
880
|
-
margin: 0 auto !important;
|
|
881
|
-
}
|
|
882
|
-
|
|
883
|
-
.zg-date-range-picker .vc-date__btn:hover:not([disabled]):not(.vc-date__btn_selected) {
|
|
884
|
-
background: var(--drp-bg-hover) !important;
|
|
885
|
-
}
|
|
886
|
-
|
|
887
|
-
/* Selected day */
|
|
888
|
-
.zg-date-range-picker .vc-date__btn_selected,
|
|
889
|
-
.zg-date-range-picker .vc-date__btn[data-vc-date-selected] {
|
|
890
|
-
background: var(--drp-bg-selected) !important;
|
|
891
|
-
color: #ffffff !important;
|
|
892
|
-
font-weight: 500 !important;
|
|
893
|
-
}
|
|
894
|
-
|
|
895
|
-
/* Today indicator */
|
|
896
|
-
.zg-date-range-picker .vc-date__btn_today:not(.vc-date__btn_selected) {
|
|
897
|
-
border: 1px solid var(--drp-primary) !important;
|
|
898
|
-
color: var(--drp-primary) !important;
|
|
899
|
-
}
|
|
900
|
-
|
|
901
|
-
/* Disabled days */
|
|
902
|
-
.zg-date-range-picker .vc-date__btn[disabled],
|
|
903
|
-
.zg-date-range-picker .vc-date__btn_disabled {
|
|
904
|
-
color: #d1d5db !important;
|
|
905
|
-
cursor: not-allowed !important;
|
|
906
|
-
}
|
|
907
|
-
|
|
908
|
-
/* Days from other months */
|
|
909
|
-
.zg-date-range-picker .vc-date__btn_prev,
|
|
910
|
-
.zg-date-range-picker .vc-date__btn_next {
|
|
911
|
-
color: #d1d5db !important;
|
|
912
|
-
}
|
|
913
|
-
|
|
914
|
-
/* ============================================
|
|
915
|
-
Weekend/Holiday Override Styles
|
|
916
|
-
Fix cross-browser consistency (Windows/Linux Chrome)
|
|
917
|
-
============================================ */
|
|
918
|
-
|
|
919
|
-
/* Weekend day headers (Sat, Sun) - override vanilla-calendar default red styling */
|
|
920
|
-
.zg-date-range-picker .vc-week__day_weekend,
|
|
921
|
-
.zg-date-range-picker .vc-week__day:nth-child(6),
|
|
922
|
-
.zg-date-range-picker .vc-week__day:nth-child(7) {
|
|
923
|
-
color: var(--drp-text-light) !important; /* Same as regular weekdays */
|
|
924
|
-
}
|
|
925
|
-
|
|
926
|
-
/* Weekend date buttons - override vanilla-calendar default red styling */
|
|
927
|
-
.zg-date-range-picker .vc-date__btn_weekend {
|
|
928
|
-
color: var(--drp-text) !important; /* Same as regular days */
|
|
929
|
-
}
|
|
930
|
-
|
|
931
|
-
/* Weekend dates that are selected */
|
|
932
|
-
.zg-date-range-picker .vc-date__btn_weekend.vc-date__btn_selected,
|
|
933
|
-
.zg-date-range-picker .vc-date__btn_weekend[data-vc-date-selected] {
|
|
934
|
-
color: #ffffff !important;
|
|
935
|
-
}
|
|
936
|
-
|
|
937
|
-
/* Weekend dates that are today but not selected */
|
|
938
|
-
.zg-date-range-picker .vc-date__btn_weekend.vc-date__btn_today:not(.vc-date__btn_selected) {
|
|
939
|
-
color: var(--drp-primary) !important;
|
|
940
|
-
}
|
|
941
|
-
|
|
942
|
-
/* Weekend dates that are from other months */
|
|
943
|
-
.zg-date-range-picker .vc-date__btn_weekend.vc-date__btn_prev,
|
|
944
|
-
.zg-date-range-picker .vc-date__btn_weekend.vc-date__btn_next {
|
|
945
|
-
color: #d1d5db !important;
|
|
946
|
-
}
|
|
947
|
-
|
|
948
|
-
/* Holiday styling override (if any holidays are marked) */
|
|
949
|
-
.zg-date-range-picker .vc-date__btn_holiday {
|
|
950
|
-
color: var(--drp-text) !important;
|
|
951
|
-
background: transparent !important;
|
|
952
|
-
}
|
|
953
|
-
|
|
954
|
-
/* Holiday that is selected */
|
|
955
|
-
.zg-date-range-picker .vc-date__btn_holiday.vc-date__btn_selected {
|
|
956
|
-
color: #ffffff !important;
|
|
957
|
-
background: var(--drp-bg-selected) !important;
|
|
958
|
-
}
|
|
959
|
-
|
|
960
|
-
/* ============================================
|
|
961
|
-
Vanilla Calendar Wrapper Overrides
|
|
962
|
-
(for single date picker - VanillaDateEditor)
|
|
963
|
-
============================================ */
|
|
964
|
-
|
|
965
|
-
/* Weekend day headers for single date picker */
|
|
966
|
-
.vanilla-calendar-wrapper .vc-week__day_weekend,
|
|
967
|
-
.vanilla-calendar-wrapper .vc-week__day:nth-child(6),
|
|
968
|
-
.vanilla-calendar-wrapper .vc-week__day:nth-child(7) {
|
|
969
|
-
color: #9ca3af !important; /* Neutral gray */
|
|
970
|
-
}
|
|
971
|
-
|
|
972
|
-
/* Weekend date buttons for single date picker */
|
|
973
|
-
.vanilla-calendar-wrapper .vc-date__btn_weekend {
|
|
974
|
-
color: var(--zg-calendar-text, #374151) !important;
|
|
975
|
-
}
|
|
976
|
-
|
|
977
|
-
/* Selected weekend date for single date picker */
|
|
978
|
-
.vanilla-calendar-wrapper .vc-date__btn_weekend.vc-date__btn_selected {
|
|
979
|
-
color: #ffffff !important;
|
|
980
|
-
}
|
|
981
|
-
|
|
982
|
-
/* Weekend dates from other months */
|
|
983
|
-
.vanilla-calendar-wrapper .vc-date__btn_weekend.vc-date__btn_prev,
|
|
984
|
-
.vanilla-calendar-wrapper .vc-date__btn_weekend.vc-date__btn_next {
|
|
985
|
-
color: #d1d5db !important;
|
|
986
|
-
}
|
|
987
|
-
|
|
988
|
-
/* ============================================
|
|
989
|
-
Date Picker Renderer Styles
|
|
990
|
-
============================================ */
|
|
991
|
-
|
|
992
|
-
/* Container */
|
|
993
|
-
.zg-date-picker-wrapper {
|
|
994
|
-
display: flex;
|
|
995
|
-
width: 100%;
|
|
996
|
-
height: 100%;
|
|
997
|
-
align-items: center;
|
|
998
|
-
}
|
|
999
|
-
|
|
1000
|
-
/* Trigger button */
|
|
1001
|
-
.zg-date-picker-trigger {
|
|
1002
|
-
display: flex;
|
|
1003
|
-
align-items: center;
|
|
1004
|
-
justify-content: space-between;
|
|
1005
|
-
width: 100%;
|
|
1006
|
-
padding: 6px 8px;
|
|
1007
|
-
border: 1px solid var(--zg-border-color, #d0d0d0);
|
|
1008
|
-
border-radius: 4px;
|
|
1009
|
-
background: var(--zg-bg-primary, #ffffff);
|
|
1010
|
-
color: var(--zg-text-color, #333333);
|
|
1011
|
-
font-family: inherit;
|
|
1012
|
-
font-size: inherit;
|
|
1013
|
-
cursor: pointer;
|
|
1014
|
-
text-align: left;
|
|
1015
|
-
transition: border-color 0.15s ease, box-shadow 0.15s ease;
|
|
1016
|
-
}
|
|
1017
|
-
|
|
1018
|
-
.zg-date-picker-trigger:hover:not(:disabled) {
|
|
1019
|
-
border-color: var(--zg-focus-ring, #1976d2);
|
|
1020
|
-
}
|
|
1021
|
-
|
|
1022
|
-
.zg-date-picker-trigger:focus {
|
|
1023
|
-
outline: none;
|
|
1024
|
-
border-color: var(--zg-focus-ring, #1976d2);
|
|
1025
|
-
box-shadow: 0 0 0 2px rgba(25, 118, 210, 0.2);
|
|
1026
|
-
}
|
|
1027
|
-
|
|
1028
|
-
/* Editing state - use CSS variable, not hardcoded green */
|
|
1029
|
-
.zg-cell-editing .zg-date-picker-trigger {
|
|
1030
|
-
outline: 2px solid var(--zg-border-editing, #4caf50);
|
|
1031
|
-
outline-offset: -1px;
|
|
1032
|
-
}
|
|
1033
|
-
|
|
1034
|
-
/* Open state */
|
|
1035
|
-
.zg-date-picker-open .zg-date-picker-trigger {
|
|
1036
|
-
border-color: var(--zg-focus-ring, #1976d2);
|
|
1037
|
-
}
|
|
1038
|
-
|
|
1039
|
-
/* Disabled state */
|
|
1040
|
-
.zg-date-picker-trigger:disabled,
|
|
1041
|
-
.zg-date-picker-disabled {
|
|
1042
|
-
background: var(--zg-hover-bg, #f5f5f5);
|
|
1043
|
-
color: var(--zg-text-color, #999999);
|
|
1044
|
-
opacity: 0.6;
|
|
1045
|
-
cursor: not-allowed;
|
|
1046
|
-
}
|
|
1047
|
-
|
|
1048
|
-
/* Text display */
|
|
1049
|
-
.zg-date-picker-text {
|
|
1050
|
-
flex: 1;
|
|
1051
|
-
overflow: hidden;
|
|
1052
|
-
text-overflow: ellipsis;
|
|
1053
|
-
white-space: nowrap;
|
|
1054
|
-
}
|
|
1055
|
-
|
|
1056
|
-
/* Empty placeholder */
|
|
1057
|
-
.zg-date-picker-empty .zg-date-picker-text {
|
|
1058
|
-
color: var(--zg-text-color, #999999);
|
|
1059
|
-
opacity: 0.6;
|
|
1060
|
-
}
|
|
1061
|
-
|
|
1062
|
-
/* Calendar icon */
|
|
1063
|
-
.zg-date-picker-icon {
|
|
1064
|
-
flex-shrink: 0;
|
|
1065
|
-
margin-left: 8px;
|
|
1066
|
-
color: var(--zg-text-color, #666666);
|
|
1067
|
-
opacity: 0.7;
|
|
1068
|
-
}
|
|
1069
|
-
|
|
1070
|
-
.zg-date-picker-icon svg {
|
|
1071
|
-
display: block;
|
|
1072
|
-
width: 16px;
|
|
1073
|
-
height: 16px;
|
|
1074
|
-
}
|
|
1075
|
-
|
|
1076
|
-
/* Popup container */
|
|
1077
|
-
.zg-date-picker-popup {
|
|
1078
|
-
position: fixed;
|
|
1079
|
-
z-index: 10003;
|
|
1080
|
-
background: var(--zg-calendar-bg, #ffffff);
|
|
1081
|
-
border: 1px solid var(--zg-calendar-border, #e0e0e0);
|
|
1082
|
-
border-radius: var(--zg-calendar-radius, 8px);
|
|
1083
|
-
box-shadow: var(--zg-shadow-lg, 0 4px 20px rgba(0, 0, 0, 0.15));
|
|
1084
|
-
}
|
|
1085
|
-
|
|
1086
|
-
/* Calendar wrapper */
|
|
1087
|
-
.zg-date-picker-calendar-wrapper {
|
|
1088
|
-
padding: 4px;
|
|
1089
|
-
}
|
|
1090
|
-
|
|
1091
|
-
/* Dark theme adjustments */
|
|
1092
|
-
[data-theme="dark"] .zg-date-picker-trigger,
|
|
1093
|
-
.zg-theme-dark .zg-date-picker-trigger {
|
|
1094
|
-
background: var(--zg-bg-primary, #1e1e1e);
|
|
1095
|
-
border-color: var(--zg-border-color, #444444);
|
|
1096
|
-
color: var(--zg-text-color, #e0e0e0);
|
|
1097
|
-
}
|
|
1098
|
-
|
|
1099
|
-
[data-theme="dark"] .zg-date-picker-popup,
|
|
1100
|
-
.zg-theme-dark .zg-date-picker-popup {
|
|
1101
|
-
background: var(--zg-calendar-bg, #2d2d2d);
|
|
1102
|
-
border-color: var(--zg-calendar-border, #444444);
|
|
1103
|
-
}
|
|
1104
|
-
|
|
1105
|
-
/* Cell state classes */
|
|
1106
|
-
.zg-cell-date-picker {
|
|
1107
|
-
/* Cell containing date picker */
|
|
1108
|
-
}
|
|
1109
|
-
|
|
1110
|
-
.zg-date-picker-has-value .zg-date-picker-text {
|
|
1111
|
-
font-weight: 400;
|
|
1112
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* ZenGrid Core Styles (Community Edition)
|
|
3
|
+
*
|
|
4
|
+
* Feature-split entry point. The actual rules live in ./styles/*.css and are
|
|
5
|
+
* composed here in source (cascade) order. Plain @imports keep ZenGrid on the
|
|
6
|
+
* normal cascade so its defaults apply out of the box — a consumer who targets
|
|
7
|
+
* a ZenGrid selector still overrides via specificity, but a generic reset
|
|
8
|
+
* (e.g. `* { padding: 0 }`) does not defeat ZenGrid's structural defaults.
|
|
9
|
+
*
|
|
10
|
+
* Order (later wins for equal specificity):
|
|
11
|
+
* tokens < grid < header < filter < overlays < cell-renderers
|
|
12
|
+
* < cell-overflow < calendar < date-picker < dropdown < a11y
|
|
13
|
+
*/
|
|
14
|
+
@import './styles/tokens.css';
|
|
15
|
+
@import './styles/grid.css';
|
|
16
|
+
@import './styles/header.css';
|
|
17
|
+
@import './styles/filter.css';
|
|
18
|
+
@import './styles/overlays.css';
|
|
19
|
+
@import './styles/cell-renderers.css';
|
|
20
|
+
@import './styles/cell-overflow.css';
|
|
21
|
+
@import './styles/calendar.css';
|
|
22
|
+
@import './styles/date-picker.css';
|
|
23
|
+
@import './styles/dropdown.css';
|
|
24
|
+
@import './styles/a11y.css';
|