@guiexpert/table 1.1.91 → 1.1.93
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/README.md +5 -1
- package/css/main.css +79 -0
- package/css/table-classes.css +63 -0
- package/css/table-color-vars.css +16 -0
- package/index.cjs +58 -34
- package/index.d.ts +11 -0
- package/index.js +2425 -1243
- package/lib/table/aria/live-announcer.d.ts +9 -0
- package/lib/table/crud/crud-table-model-factory.d.ts +8 -0
- package/lib/table/data/common/event/ge-state-change-event.d.ts +30 -0
- package/lib/table/data/options/auto-restore-options.d.ts +14 -2
- package/lib/table/data/options/auto-restore-options.if.d.ts +94 -52
- package/lib/table/data/options/default-row-id.d.ts +4 -0
- package/lib/table/data/options/overlay-options.d.ts +30 -0
- package/lib/table/data/options/overlay-options.if.d.ts +79 -0
- package/lib/table/data/options/table-options.d.ts +3 -0
- package/lib/table/data/options/table-options.if.d.ts +35 -0
- package/lib/table/data/tablemodel/areamodel/area-model-array-of-arrays.d.ts +7 -0
- package/lib/table/data/tablemodel/areamodel/area-model-cell-groups.d.ts +31 -0
- package/lib/table/data/tablemodel/areamodel/area-model-object-array.d.ts +13 -0
- package/lib/table/data/tablemodel/areamodel/area-model-tree.d.ts +9 -0
- package/lib/table/data/tablemodel/areamodel/area-model.if.d.ts +19 -0
- package/lib/table/data/tablemodel/areamodel/cover-grid-body-model.d.ts +7 -0
- package/lib/table/data/tablemodel/cellgroup/cell-group.d.ts +2 -0
- package/lib/table/data/tablemodel/cellgroup/cell-group.if.d.ts +6 -0
- package/lib/table/data/tablemodel/column/column-visibility.d.ts +5 -0
- package/lib/table/ele-scope.d.ts +17 -0
- package/lib/table/event-adapter.d.ts +3 -0
- package/lib/table/event-listener.if.d.ts +8 -0
- package/lib/table/mouse-handler.d.ts +2 -0
- package/lib/table/overlay/calc-overlay-kind.d.ts +31 -0
- package/lib/table/overlay/ge-overlay-kind.type.d.ts +17 -0
- package/lib/table/overlay/table-overlay.d.ts +108 -0
- package/lib/table/render-scope.d.ts +26 -2
- package/lib/table/service/convenience-dom.service.d.ts +1 -1
- package/lib/table/state/state-storage.if.d.ts +39 -0
- package/lib/table/state/table-state-migration.d.ts +36 -0
- package/lib/table/state/table-state-part.d.ts +13 -0
- package/lib/table/state/table-state.if.d.ts +181 -0
- package/lib/table/state/table-state.service.d.ts +158 -0
- package/lib/table/table-api.d.ts +154 -0
- package/lib/table/table-scope.d.ts +78 -31
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -27,13 +27,17 @@ This is the UI-agnostic table component for your next web app. 😊
|
|
|
27
27
|
- Tree table (Hierarchical View)
|
|
28
28
|
- Accessibility: screen readers (WAI-ARIA grid/treegrid, row/column counts with virtual scrolling, announcements of
|
|
29
29
|
sorting, filter and copy) and full keyboard navigation (arrows, Home/End, Page Up/Down, header focus, Enter) – since 1.1.91
|
|
30
|
+
- Overlays "Loading…" (CSS spinner, `tableApi.showLoadingOverlay()`, `loading` prop in the wrappers) and
|
|
31
|
+
"No rows to show" / "No matching rows" (automatic) – plain HTML/CSS, since 1.1.92
|
|
30
32
|
- Custom Filtering
|
|
31
33
|
- In-place Cell Editing
|
|
32
34
|
- Userdefined Key and Mouse Events
|
|
33
35
|
- Customizable Look & Feel (via CSS variables)
|
|
34
36
|
- Row sorting
|
|
35
37
|
- Column Reordering (Drag and Drop)
|
|
36
|
-
- State
|
|
38
|
+
- State persistence: column layout (width, order, visibility), sorting, scroll position, tree, checked and selected
|
|
39
|
+
rows, header groups – in `localStorage` (`autoRestoreOptions`) or on your server (`tableApi.getState()` /
|
|
40
|
+
`applyState()`, `initialState`, `onStateChanged`); stored by property and row id, never by index – since 1.1.92
|
|
37
41
|
- Customizable Cell Contents via Renderer for Header, Body and Footer
|
|
38
42
|
- Full control over the HTML structure and style
|
|
39
43
|
|
package/css/main.css
CHANGED
|
@@ -154,6 +154,69 @@
|
|
|
154
154
|
}
|
|
155
155
|
|
|
156
156
|
|
|
157
|
+
/* Overlays over the body: "Loading…" with a CSS spinner, "No rows to show", "No matching rows" (since 1.1.92).
|
|
158
|
+
Position and size are set inline by the table (the visible body), display is switched inline (none / flex). */
|
|
159
|
+
.ge-table-overlay {
|
|
160
|
+
z-index: 10000; /* above .ge-table-body-east (999) and the focus frame (9999) */
|
|
161
|
+
box-sizing: border-box;
|
|
162
|
+
overflow: hidden;
|
|
163
|
+
align-items: center;
|
|
164
|
+
justify-content: center;
|
|
165
|
+
pointer-events: none; /* "no rows" never blocks */
|
|
166
|
+
color: var(--ge-table-overlay-color);
|
|
167
|
+
}
|
|
168
|
+
.ge-table-overlay-loading {
|
|
169
|
+
background-color: var(--ge-table-overlay-bg);
|
|
170
|
+
}
|
|
171
|
+
.ge-table-overlay-blocking {
|
|
172
|
+
pointer-events: auto; /* catches clicks, hover and the context menu while loading */
|
|
173
|
+
cursor: progress;
|
|
174
|
+
}
|
|
175
|
+
.ge-table-overlay-content {
|
|
176
|
+
display: flex;
|
|
177
|
+
flex-direction: column;
|
|
178
|
+
align-items: center;
|
|
179
|
+
gap: 10px;
|
|
180
|
+
max-width: 100%;
|
|
181
|
+
padding-inline: 16px;
|
|
182
|
+
box-sizing: border-box;
|
|
183
|
+
text-align: center;
|
|
184
|
+
}
|
|
185
|
+
.ge-table-overlay-loading .ge-table-overlay-content {
|
|
186
|
+
/* a small card: the text stays readable over the rows of a refresh */
|
|
187
|
+
padding: 12px 20px;
|
|
188
|
+
border-radius: 8px;
|
|
189
|
+
background-color: var(--ge-table-overlay-content-bg);
|
|
190
|
+
box-shadow: 0 1px 6px rgba(0, 0, 0, 0.18);
|
|
191
|
+
}
|
|
192
|
+
.ge-table-overlay-text {
|
|
193
|
+
color: var(--ge-table-overlay-color);
|
|
194
|
+
font-size: 14px;
|
|
195
|
+
line-height: 1.4;
|
|
196
|
+
overflow-wrap: anywhere;
|
|
197
|
+
}
|
|
198
|
+
.ge-table-spinner {
|
|
199
|
+
flex: none;
|
|
200
|
+
box-sizing: border-box;
|
|
201
|
+
width: var(--ge-table-spinner-size);
|
|
202
|
+
height: var(--ge-table-spinner-size);
|
|
203
|
+
border: 3px solid var(--ge-table-spinner-track-color);
|
|
204
|
+
border-top-color: var(--ge-table-spinner-color);
|
|
205
|
+
border-radius: 50%;
|
|
206
|
+
animation: ge-table-spin 0.8s linear infinite;
|
|
207
|
+
}
|
|
208
|
+
@keyframes ge-table-spin {
|
|
209
|
+
to {
|
|
210
|
+
transform: rotate(360deg);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
@media (prefers-reduced-motion: reduce) {
|
|
214
|
+
.ge-table-spinner {
|
|
215
|
+
animation: none; /* a still ring segment and the text */
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
|
|
157
220
|
.ge-table { background-color: var(--ge-table-bg); }
|
|
158
221
|
|
|
159
222
|
.ge-table-header-west { background-color: var(--ge-table-header-west-bg); }
|
|
@@ -336,6 +399,14 @@
|
|
|
336
399
|
before 1.1.91: #fcb515 (1.8 : 1) and #36BB6C (2.5 : 1) */
|
|
337
400
|
--ge-table-color-star-rating: #a86f00;
|
|
338
401
|
--ge-table-color-progress-bar: #1e874b;
|
|
402
|
+
|
|
403
|
+
/* Overlays "Loading…" / "No rows" (since 1.1.92) */
|
|
404
|
+
--ge-table-overlay-bg: rgba(255, 255, 255, 0.7);
|
|
405
|
+
--ge-table-overlay-content-bg: #fff;
|
|
406
|
+
--ge-table-overlay-color: #333;
|
|
407
|
+
--ge-table-spinner-color: #1a73e8;
|
|
408
|
+
--ge-table-spinner-track-color: rgba(0, 0, 0, 0.12);
|
|
409
|
+
--ge-table-spinner-size: 28px;
|
|
339
410
|
}
|
|
340
411
|
|
|
341
412
|
|
|
@@ -410,6 +481,14 @@ html[data-theme="dark"] {
|
|
|
410
481
|
|
|
411
482
|
--ge-table-color-star-rating: #fcb515;
|
|
412
483
|
--ge-table-color-progress-bar: #36BB6C;
|
|
484
|
+
|
|
485
|
+
/* Overlays "Loading…" / "No rows" (since 1.1.92) */
|
|
486
|
+
--ge-table-overlay-bg: rgba(17, 24, 39, 0.7); /* --ge-table-bg of the dark theme */
|
|
487
|
+
--ge-table-overlay-content-bg: #1f2937;
|
|
488
|
+
--ge-table-overlay-color: #ddd;
|
|
489
|
+
--ge-table-spinner-color: #8ab4f8;
|
|
490
|
+
--ge-table-spinner-track-color: rgba(255, 255, 255, 0.18);
|
|
491
|
+
--ge-table-spinner-size: 28px;
|
|
413
492
|
}
|
|
414
493
|
/* Tree table */
|
|
415
494
|
|
package/css/table-classes.css
CHANGED
|
@@ -152,3 +152,66 @@
|
|
|
152
152
|
.ge-table-col-div:has(> .ge-table-sorted-icon-div) .ge-table-label {
|
|
153
153
|
padding-right: 22px;
|
|
154
154
|
}
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
/* Overlays over the body: "Loading…" with a CSS spinner, "No rows to show", "No matching rows" (since 1.1.92).
|
|
158
|
+
Position and size are set inline by the table (the visible body), display is switched inline (none / flex). */
|
|
159
|
+
.ge-table-overlay {
|
|
160
|
+
z-index: 10000; /* above .ge-table-body-east (999) and the focus frame (9999) */
|
|
161
|
+
box-sizing: border-box;
|
|
162
|
+
overflow: hidden;
|
|
163
|
+
align-items: center;
|
|
164
|
+
justify-content: center;
|
|
165
|
+
pointer-events: none; /* "no rows" never blocks */
|
|
166
|
+
color: var(--ge-table-overlay-color);
|
|
167
|
+
}
|
|
168
|
+
.ge-table-overlay-loading {
|
|
169
|
+
background-color: var(--ge-table-overlay-bg);
|
|
170
|
+
}
|
|
171
|
+
.ge-table-overlay-blocking {
|
|
172
|
+
pointer-events: auto; /* catches clicks, hover and the context menu while loading */
|
|
173
|
+
cursor: progress;
|
|
174
|
+
}
|
|
175
|
+
.ge-table-overlay-content {
|
|
176
|
+
display: flex;
|
|
177
|
+
flex-direction: column;
|
|
178
|
+
align-items: center;
|
|
179
|
+
gap: 10px;
|
|
180
|
+
max-width: 100%;
|
|
181
|
+
padding-inline: 16px;
|
|
182
|
+
box-sizing: border-box;
|
|
183
|
+
text-align: center;
|
|
184
|
+
}
|
|
185
|
+
.ge-table-overlay-loading .ge-table-overlay-content {
|
|
186
|
+
/* a small card: the text stays readable over the rows of a refresh */
|
|
187
|
+
padding: 12px 20px;
|
|
188
|
+
border-radius: 8px;
|
|
189
|
+
background-color: var(--ge-table-overlay-content-bg);
|
|
190
|
+
box-shadow: 0 1px 6px rgba(0, 0, 0, 0.18);
|
|
191
|
+
}
|
|
192
|
+
.ge-table-overlay-text {
|
|
193
|
+
color: var(--ge-table-overlay-color);
|
|
194
|
+
font-size: 14px;
|
|
195
|
+
line-height: 1.4;
|
|
196
|
+
overflow-wrap: anywhere;
|
|
197
|
+
}
|
|
198
|
+
.ge-table-spinner {
|
|
199
|
+
flex: none;
|
|
200
|
+
box-sizing: border-box;
|
|
201
|
+
width: var(--ge-table-spinner-size);
|
|
202
|
+
height: var(--ge-table-spinner-size);
|
|
203
|
+
border: 3px solid var(--ge-table-spinner-track-color);
|
|
204
|
+
border-top-color: var(--ge-table-spinner-color);
|
|
205
|
+
border-radius: 50%;
|
|
206
|
+
animation: ge-table-spin 0.8s linear infinite;
|
|
207
|
+
}
|
|
208
|
+
@keyframes ge-table-spin {
|
|
209
|
+
to {
|
|
210
|
+
transform: rotate(360deg);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
@media (prefers-reduced-motion: reduce) {
|
|
214
|
+
.ge-table-spinner {
|
|
215
|
+
animation: none; /* a still ring segment and the text */
|
|
216
|
+
}
|
|
217
|
+
}
|
package/css/table-color-vars.css
CHANGED
|
@@ -83,6 +83,14 @@ html, html[data-theme="light"] {
|
|
|
83
83
|
before 1.1.91: #fcb515 (1.8 : 1) and #36BB6C (2.5 : 1) */
|
|
84
84
|
--ge-table-color-star-rating: #a86f00;
|
|
85
85
|
--ge-table-color-progress-bar: #1e874b;
|
|
86
|
+
|
|
87
|
+
/* Overlays "Loading…" / "No rows" (since 1.1.92) */
|
|
88
|
+
--ge-table-overlay-bg: rgba(255, 255, 255, 0.7);
|
|
89
|
+
--ge-table-overlay-content-bg: #fff;
|
|
90
|
+
--ge-table-overlay-color: #333;
|
|
91
|
+
--ge-table-spinner-color: #1a73e8;
|
|
92
|
+
--ge-table-spinner-track-color: rgba(0, 0, 0, 0.12);
|
|
93
|
+
--ge-table-spinner-size: 28px;
|
|
86
94
|
}
|
|
87
95
|
|
|
88
96
|
|
|
@@ -157,4 +165,12 @@ html[data-theme="dark"] {
|
|
|
157
165
|
|
|
158
166
|
--ge-table-color-star-rating: #fcb515;
|
|
159
167
|
--ge-table-color-progress-bar: #36BB6C;
|
|
168
|
+
|
|
169
|
+
/* Overlays "Loading…" / "No rows" (since 1.1.92) */
|
|
170
|
+
--ge-table-overlay-bg: rgba(17, 24, 39, 0.7); /* --ge-table-bg of the dark theme */
|
|
171
|
+
--ge-table-overlay-content-bg: #1f2937;
|
|
172
|
+
--ge-table-overlay-color: #ddd;
|
|
173
|
+
--ge-table-spinner-color: #8ab4f8;
|
|
174
|
+
--ge-table-spinner-track-color: rgba(255, 255, 255, 0.18);
|
|
175
|
+
--ge-table-spinner-size: 28px;
|
|
160
176
|
}
|