@guiexpert/table 1.1.90 → 1.1.92
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 +8 -2
- package/css/main.css +129 -4
- package/css/table-classes.css +93 -0
- package/css/table-color-classes.css +3 -1
- package/css/table-color-vars.css +20 -2
- package/css/table-tree.css +13 -1
- package/index.cjs +111 -96
- package/index.d.ts +203 -184
- package/index.js +4927 -2096
- package/lib/common/debounce.d.ts +1 -0
- package/lib/common/decorator/avoid-double-execution.decorator.d.ts +2 -0
- package/lib/common/escape-html.d.ts +22 -0
- package/lib/common/generator/column-def-generator-service.d.ts +2 -1
- package/lib/common/generator/domain/property-type.d.ts +19 -0
- package/lib/common/generator/domain/value-info.d.ts +2 -1
- package/lib/common/generator/json-service.d.ts +1 -0
- package/lib/common/generator/property-type.service.d.ts +3 -2
- package/lib/common/generator/scheme-generator-service.d.ts +3 -1
- package/lib/common/generator/string-util.d.ts +7 -0
- package/lib/common/throttle.d.ts +1 -0
- package/lib/table/action/action-id.type.d.ts +5 -1
- package/lib/table/action/on-action-triggered.if.d.ts +2 -1
- package/lib/table/action/osx-shortcut-actionId-mapping.d.ts +3 -1
- package/lib/table/action/shortcut-actionid-mapping.type.d.ts +3 -1
- package/lib/table/action/shortcut-util.d.ts +12 -0
- package/lib/table/action/shortcut.service.d.ts +5 -3
- package/lib/table/action/windows-shortcut-actionId-mapping.d.ts +3 -1
- package/lib/table/aria/aria-grid-info.d.ts +76 -0
- package/lib/table/aria/aria-ids.d.ts +56 -0
- package/lib/table/aria/aria-texts.d.ts +34 -0
- package/lib/table/aria/aria-texts.if.d.ts +88 -0
- package/lib/table/aria/live-announcer.d.ts +62 -0
- package/lib/table/aria/tree-aria-info.d.ts +58 -0
- package/lib/table/checkbox/all-rows-checkbox-model.d.ts +31 -0
- package/lib/table/checkbox/checkbox-model.d.ts +3 -2
- package/lib/table/checkbox/checkbox-model.if.d.ts +2 -1
- package/lib/table/checkbox/tree-checkbox-model.d.ts +19 -4
- package/lib/table/color/color-rgb.d.ts +2 -1
- package/lib/table/color/color-rgb.if.d.ts +2 -0
- package/lib/table/color/ge-css-color-util.d.ts +25 -2
- package/lib/table/color/three-color-gradient-arg.d.ts +3 -2
- package/lib/table/color/three-color-gradient-arg.if.d.ts +3 -1
- package/lib/table/color/two-color-gradient-arg.d.ts +3 -2
- package/lib/table/color/two-color-gradient-arg.if.d.ts +3 -1
- package/lib/table/crud/column-widths.d.ts +2 -1
- package/lib/table/crud/column-widths.if.d.ts +1 -0
- package/lib/table/crud/crud-action.d.ts +1 -0
- package/lib/table/crud/crud-object-edit.d.ts +25 -3
- package/lib/table/crud/crud-object-view.d.ts +6 -0
- package/lib/table/crud/crud-options.d.ts +35 -4
- package/lib/table/crud/crud-options.if.d.ts +3 -2
- package/lib/table/crud/crud-table-model-factory.d.ts +72 -8
- package/lib/table/crud/url-info.d.ts +2 -1
- package/lib/table/crud/url-info.if.d.ts +1 -0
- package/lib/table/crud/urls.if.d.ts +2 -1
- package/lib/table/css-vars.d.ts +1 -0
- package/lib/table/data/chunk/chunk.data-event.d.ts +3 -2
- package/lib/table/data/chunk/chunk.data-event.if.d.ts +2 -1
- package/lib/table/data/chunk/request-chunk.d.ts +2 -1
- package/lib/table/data/chunk/request-chunk.if.d.ts +1 -0
- package/lib/table/data/common/aligns.d.ts +18 -0
- package/lib/table/data/common/area-map-factory.d.ts +3 -2
- package/lib/table/data/common/area-map.d.ts +3 -1
- package/lib/table/data/common/area-map.type.d.ts +1 -0
- package/lib/table/data/common/args-adjust-columns-to-row-parent-params.d.ts +6 -4
- package/lib/table/data/common/args-render-cell-div.d.ts +5 -3
- package/lib/table/data/common/boolean-function.d.ts +10 -0
- package/lib/table/data/common/cell-range.d.ts +16 -7
- package/lib/table/data/common/checkbox-column-def.d.ts +6 -4
- package/lib/table/data/common/checked-type.d.ts +2 -0
- package/lib/table/data/common/event/ge-cell-indices.d.ts +2 -0
- package/lib/table/data/common/event/ge-key-event.d.ts +2 -0
- package/lib/table/data/common/event/ge-model-change-event.d.ts +16 -2
- package/lib/table/data/common/event/ge-mouse-event.d.ts +52 -4
- package/lib/table/data/common/event/ge-scroll-event.d.ts +27 -1
- package/lib/table/data/common/event/ge-state-change-event.d.ts +30 -0
- package/lib/table/data/common/event/input/table-cell-update-event.d.ts +14 -10
- package/lib/table/data/common/event/input/table-cell-update-event.if.d.ts +3 -1
- package/lib/table/data/common/filter-function.d.ts +2 -0
- package/lib/table/data/common/get-t.d.ts +2 -0
- package/lib/table/data/common/index-and-px.d.ts +2 -0
- package/lib/table/data/common/size-unit.type.d.ts +2 -0
- package/lib/table/data/common/size.d.ts +13 -2
- package/lib/table/data/common/size.if.d.ts +3 -1
- package/lib/table/data/common/sizes.d.ts +133 -1
- package/lib/table/data/common/sort-item.d.ts +16 -3
- package/lib/table/data/common/sort-state.type.d.ts +2 -0
- package/lib/table/data/common/tree-arrow.type.d.ts +2 -0
- package/lib/table/data/common/tree-row-if.d.ts +22 -1
- package/lib/table/data/common/tree-row.d.ts +3 -1
- package/lib/table/data/common/value-label.d.ts +2 -1
- package/lib/table/data/common/value-label.if.d.ts +1 -0
- package/lib/table/data/div-scope.type.d.ts +2 -0
- package/lib/table/data/event/mouse-target-data.d.ts +5 -3
- package/lib/table/data/geo-data.d.ts +2 -0
- package/lib/table/data/options/auto-restore-options.d.ts +44 -1
- package/lib/table/data/options/auto-restore-options.if.d.ts +95 -45
- package/lib/table/data/options/default-row-heights.d.ts +20 -2
- package/lib/table/data/options/default-row-heights.if.d.ts +4 -1
- package/lib/table/data/options/default-row-id.d.ts +4 -0
- package/lib/table/data/options/header-group-options.d.ts +3 -2
- package/lib/table/data/options/header-group-options.if.d.ts +3 -4
- package/lib/table/data/options/icon.d.ts +2 -1
- package/lib/table/data/options/icon.if.d.ts +2 -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/sorted-options.d.ts +3 -2
- package/lib/table/data/options/sorted-options.if.d.ts +3 -1
- package/lib/table/data/options/table-options.d.ts +40 -13
- package/lib/table/data/options/table-options.if.d.ts +152 -44
- package/lib/table/data/options/tree-options.d.ts +3 -2
- package/lib/table/data/options/tree-options.if.d.ts +3 -1
- package/lib/table/data/side-ident.type.d.ts +2 -0
- package/lib/table/data/table-model-and-options.d.ts +5 -3
- package/lib/table/data/table-model-and-options.if.d.ts +4 -2
- package/lib/table/data/tablemodel/area-ident.type.d.ts +4 -0
- package/lib/table/data/tablemodel/areamodel/abstract-area-model.d.ts +10 -9
- package/lib/table/data/tablemodel/areamodel/area-model-array-of-arrays.d.ts +13 -4
- package/lib/table/data/tablemodel/areamodel/area-model-cell-groups.d.ts +44 -12
- package/lib/table/data/tablemodel/areamodel/area-model-hidden.d.ts +9 -7
- package/lib/table/data/tablemodel/areamodel/area-model-object-array-with-columndefs.d.ts +16 -14
- package/lib/table/data/tablemodel/areamodel/area-model-object-array.d.ts +48 -31
- package/lib/table/data/tablemodel/areamodel/area-model-tree.d.ts +162 -11
- package/lib/table/data/tablemodel/areamodel/area-model.d.ts +66 -104
- package/lib/table/data/tablemodel/areamodel/area-model.if.d.ts +75 -50
- package/lib/table/data/tablemodel/areamodel/async-area-model-object-array.d.ts +5 -5
- package/lib/table/data/tablemodel/areamodel/col-and-rowspan-model.d.ts +14 -3
- package/lib/table/data/tablemodel/areamodel/cover-grid-body-model.d.ts +17 -8
- package/lib/table/data/tablemodel/areamodel/has-default-row-height-if.d.ts +1 -0
- package/lib/table/data/tablemodel/areamodel/object-array-holder.if.d.ts +1 -0
- package/lib/table/data/tablemodel/cellgroup/cell-group-ext.d.ts +3 -2
- package/lib/table/data/tablemodel/cellgroup/cell-group.d.ts +4 -1
- package/lib/table/data/tablemodel/cellgroup/cell-group.if.d.ts +34 -0
- package/lib/table/data/tablemodel/cellgroup/cellgroup-factory.d.ts +4 -3
- package/lib/table/data/tablemodel/column/column-def.d.ts +67 -10
- package/lib/table/data/tablemodel/column/column-def.if.d.ts +63 -96
- package/lib/table/data/tablemodel/column/column-visibility.d.ts +11 -0
- package/lib/table/data/tablemodel/cover-grid-table-model.d.ts +11 -10
- package/lib/table/data/tablemodel/padding.d.ts +2 -0
- package/lib/table/data/tablemodel/table-model.d.ts +75 -14
- package/lib/table/data/tablemodel/table-model.if.d.ts +52 -8
- package/lib/table/ele-scope.d.ts +53 -5
- package/lib/table/event-adapter.d.ts +20 -10
- package/lib/table/event-checkbox-changed-handler.d.ts +2 -1
- package/lib/table/event-listener.if.d.ts +50 -9
- package/lib/table/factory/cover-grid-factory.d.ts +4 -3
- package/lib/table/factory/table-factory.d.ts +103 -64
- package/lib/table/factory/tree-factory.d.ts +45 -3
- package/lib/table/focus/event-focus-changed-listener.if.d.ts +5 -3
- package/lib/table/focus/focus-model.d.ts +7 -5
- package/lib/table/focus/focus-model.if.d.ts +22 -1
- package/lib/table/focus/focus.type.d.ts +2 -0
- package/lib/table/input-handler.d.ts +5 -1
- package/lib/table/instanceof-workaround.d.ts +16 -0
- package/lib/table/license-manager.d.ts +2 -0
- package/lib/table/mouse-handler.d.ts +20 -9
- 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 +141 -27
- package/lib/table/renderer/action/action-event-listener.if.d.ts +2 -1
- package/lib/table/renderer/action/action-event.d.ts +4 -3
- package/lib/table/renderer/action/action-event.if.d.ts +2 -1
- package/lib/table/renderer/action/actions-cell-renderer.d.ts +8 -7
- package/lib/table/renderer/cell-group-ext-cell-renderer.d.ts +8 -7
- package/lib/table/renderer/cell-render.if.d.ts +41 -4
- package/lib/table/renderer/checkbox-boolean-property-cell-renderer.d.ts +7 -5
- package/lib/table/renderer/checkbox-cell-renderer.d.ts +8 -5
- package/lib/table/renderer/date-to-int-date-cell-renderer.d.ts +6 -5
- package/lib/table/renderer/date-to-iso-cell-renderer.d.ts +6 -5
- package/lib/table/renderer/date-to-locale-date-cell-renderer.d.ts +6 -5
- package/lib/table/renderer/date-to-tec-cell-renderer.d.ts +6 -5
- package/lib/table/renderer/edit/edit-cell-renderer.type.d.ts +2 -1
- package/lib/table/renderer/edit/edit-input-pipe-for-number.d.ts +2 -1
- package/lib/table/renderer/edit/edit-input-pipe.if.d.ts +2 -0
- package/lib/table/renderer/edit/input-cell-renderer.d.ts +6 -5
- package/lib/table/renderer/edit/select-cell-renderer.d.ts +7 -6
- package/lib/table/renderer/male-female-to-icon-cell-renderer.d.ts +19 -6
- package/lib/table/renderer/number-cell-progress-bar-cell-renderer.d.ts +11 -6
- package/lib/table/renderer/number-cell-renderer.d.ts +6 -5
- package/lib/table/renderer/positive-and-negative-number-renderer.d.ts +6 -5
- package/lib/table/renderer/progress-bar-cell-renderer.d.ts +12 -6
- package/lib/table/renderer/renderer-cleanup-fn.type.d.ts +1 -0
- package/lib/table/renderer/renderer.d.ts +3 -2
- package/lib/table/renderer/simple-array-cell-renderer.d.ts +6 -5
- package/lib/table/renderer/star-rating-cell-renderer.d.ts +12 -6
- package/lib/table/renderer/true-false-cell-renderer.d.ts +17 -5
- package/lib/table/resize-handler.d.ts +3 -1
- package/lib/table/selection/event-selection-changed-listener.if.d.ts +2 -1
- package/lib/table/selection/multi-rows-selection-model.d.ts +7 -4
- package/lib/table/selection/selection-model.d.ts +112 -10
- package/lib/table/selection/selection-model.if.d.ts +48 -3
- package/lib/table/selection/selection-service.d.ts +35 -7
- package/lib/table/selection/selection.type.d.ts +3 -0
- package/lib/table/service/abstract-store-state.service.d.ts +1 -1
- package/lib/table/service/convenience-dom.service.d.ts +37 -14
- package/lib/table/service/copy-service.d.ts +18 -4
- package/lib/table/service/copy-service.if.d.ts +4 -3
- package/lib/table/service/data/collapsed-expanded.data.d.ts +1 -0
- package/lib/table/service/data/html-style.type.d.ts +1 -0
- package/lib/table/service/dom-service.if.d.ts +30 -0
- package/lib/table/service/excel-service.d.ts +24 -1
- package/lib/table/service/excel-service.if.d.ts +7 -0
- package/lib/table/service/ge-filter.service.d.ts +1 -0
- package/lib/table/service/simple-dom-service.d.ts +3 -1
- package/lib/table/service/store-state-collapsed-expand.service.d.ts +4 -3
- package/lib/table/service/store-state-scroll-pos.service.d.ts +3 -2
- package/lib/table/service/store-state-sorting.service.d.ts +4 -3
- package/lib/table/service/tree-row.service.d.ts +5 -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 +450 -550
- package/lib/table/table-scope.d.ts +288 -114
- package/package.json +23 -8
package/README.md
CHANGED
|
@@ -25,20 +25,26 @@ This is the UI-agnostic table component for your next web app. 😊
|
|
|
25
25
|
- Row and Column Spanning
|
|
26
26
|
- Fixed Columns (Left and Right)
|
|
27
27
|
- Tree table (Hierarchical View)
|
|
28
|
-
- Accessibility
|
|
28
|
+
- Accessibility: screen readers (WAI-ARIA grid/treegrid, row/column counts with virtual scrolling, announcements of
|
|
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
|
|
29
32
|
- Custom Filtering
|
|
30
33
|
- In-place Cell Editing
|
|
31
34
|
- Userdefined Key and Mouse Events
|
|
32
35
|
- Customizable Look & Feel (via CSS variables)
|
|
33
36
|
- Row sorting
|
|
34
37
|
- Column Reordering (Drag and Drop)
|
|
35
|
-
- 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
|
|
36
41
|
- Customizable Cell Contents via Renderer for Header, Body and Footer
|
|
37
42
|
- Full control over the HTML structure and style
|
|
38
43
|
|
|
39
44
|
|
|
40
45
|
## Links
|
|
41
46
|
|
|
47
|
+
- [Training: GuiExpert Table step by step](https://gui.expert/training/)
|
|
42
48
|
- [Demos](https://gui.expert/demos)
|
|
43
49
|
- [Documentation](https://gui.expert/doc)
|
|
44
50
|
- [API](https://gui.expert/api)
|
package/css/main.css
CHANGED
|
@@ -7,6 +7,26 @@
|
|
|
7
7
|
height: 100%;
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
+
/* Keyboard focus ring of the table (the table is one tab stop; the focused cell has its own frame). */
|
|
11
|
+
.ge-table:focus-visible {
|
|
12
|
+
outline: 2px solid var(--ge-table-focus-outline-color, var(--ge-table-focus-border));
|
|
13
|
+
outline-offset: -2px;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/* Visually hidden, but read by screen readers – e.g. a text alternative in an own cell renderer:
|
|
17
|
+
<span class="ge-table-sr-only">75 percent</span> */
|
|
18
|
+
.ge-table-sr-only {
|
|
19
|
+
position: absolute !important;
|
|
20
|
+
width: 1px !important;
|
|
21
|
+
height: 1px !important;
|
|
22
|
+
padding: 0 !important;
|
|
23
|
+
margin: -1px !important;
|
|
24
|
+
overflow: hidden !important;
|
|
25
|
+
clip: rect(0, 0, 0, 0) !important;
|
|
26
|
+
white-space: nowrap !important;
|
|
27
|
+
border: 0 !important;
|
|
28
|
+
}
|
|
29
|
+
|
|
10
30
|
.ge-table-col-div {
|
|
11
31
|
text-align: center;
|
|
12
32
|
line-height: 2.5;
|
|
@@ -108,6 +128,16 @@
|
|
|
108
128
|
line-height: 2;
|
|
109
129
|
}
|
|
110
130
|
}
|
|
131
|
+
/* a nested object: its fields, headed by the property name */
|
|
132
|
+
fieldset.form-group {
|
|
133
|
+
border: 0;
|
|
134
|
+
margin: 0;
|
|
135
|
+
padding: 0;
|
|
136
|
+
legend {
|
|
137
|
+
font-weight: bold;
|
|
138
|
+
padding: 6px 0;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
111
141
|
}
|
|
112
142
|
.ge-table-dialog-footer {
|
|
113
143
|
display: flex;
|
|
@@ -124,6 +154,69 @@
|
|
|
124
154
|
}
|
|
125
155
|
|
|
126
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
|
+
|
|
127
220
|
.ge-table { background-color: var(--ge-table-bg); }
|
|
128
221
|
|
|
129
222
|
.ge-table-header-west { background-color: var(--ge-table-header-west-bg); }
|
|
@@ -194,7 +287,9 @@
|
|
|
194
287
|
.ge-table-hover-column { background-color: var(--ge-table-hover-column-bg); }
|
|
195
288
|
.ge-table-hover-row { background-color: var(--ge-table-hover-row-bg); }
|
|
196
289
|
|
|
197
|
-
.ge-table-focus-
|
|
290
|
+
/* Focus frame of the focused cell (2 px). --ge-table-focus-outline-color (not set by default) overrides the
|
|
291
|
+
color of the cell frame and of the host's keyboard focus ring at once. */
|
|
292
|
+
.ge-table-focus-border { background-color: var(--ge-table-focus-outline-color, var(--ge-table-focus-border)); }
|
|
198
293
|
.ge-table-color-col-resize-handle-hover { background-color: var(--ge-table-color-col-resize-handle-hover-bg); }
|
|
199
294
|
.ge-table-color-dragged-col-div { background-color: var(--ge-table-color-dragged-col-div-bg); }
|
|
200
295
|
.ge-table-color-drop-zone { background-color: var(--ge-table-color-drop-zone-bg); }
|
|
@@ -300,8 +395,18 @@
|
|
|
300
395
|
--ge-table-color-drop-zone: #fafafa;
|
|
301
396
|
--ge-table-color-tree-arrow-collapsed-color: var(--ge-table-body-west-text);
|
|
302
397
|
|
|
303
|
-
|
|
304
|
-
|
|
398
|
+
/* light theme: ≥ 3 : 1 against white (WCAG 1.4.11, the stars and bars are images for screen readers);
|
|
399
|
+
before 1.1.91: #fcb515 (1.8 : 1) and #36BB6C (2.5 : 1) */
|
|
400
|
+
--ge-table-color-star-rating: #a86f00;
|
|
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;
|
|
305
410
|
}
|
|
306
411
|
|
|
307
412
|
|
|
@@ -376,6 +481,14 @@ html[data-theme="dark"] {
|
|
|
376
481
|
|
|
377
482
|
--ge-table-color-star-rating: #fcb515;
|
|
378
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;
|
|
379
492
|
}
|
|
380
493
|
/* Tree table */
|
|
381
494
|
|
|
@@ -422,10 +535,22 @@ html[data-theme="dark"] {
|
|
|
422
535
|
padding-left: 116px;
|
|
423
536
|
}
|
|
424
537
|
|
|
425
|
-
.ge-table-col-tree.ge-table-tree-deep-
|
|
538
|
+
.ge-table-col-tree.ge-table-tree-deep-6 {
|
|
426
539
|
padding-left: 136px;
|
|
427
540
|
}
|
|
428
541
|
|
|
542
|
+
.ge-table-col-tree.ge-table-tree-deep-7 {
|
|
543
|
+
padding-left: 156px;
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
.ge-table-col-tree.ge-table-tree-deep-8 {
|
|
547
|
+
padding-left: 176px;
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
.ge-table-col-tree.ge-table-tree-deep-9 {
|
|
551
|
+
padding-left: 196px;
|
|
552
|
+
}
|
|
553
|
+
|
|
429
554
|
.ge-table-col-div.ge-table-col-tree.ge-table-tree-cell {
|
|
430
555
|
display: grid;
|
|
431
556
|
grid-template-columns: 16px 1fr;
|
package/css/table-classes.css
CHANGED
|
@@ -7,6 +7,26 @@
|
|
|
7
7
|
height: 100%;
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
+
/* Keyboard focus ring of the table (the table is one tab stop; the focused cell has its own frame). */
|
|
11
|
+
.ge-table:focus-visible {
|
|
12
|
+
outline: 2px solid var(--ge-table-focus-outline-color, var(--ge-table-focus-border));
|
|
13
|
+
outline-offset: -2px;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/* Visually hidden, but read by screen readers – e.g. a text alternative in an own cell renderer:
|
|
17
|
+
<span class="ge-table-sr-only">75 percent</span> */
|
|
18
|
+
.ge-table-sr-only {
|
|
19
|
+
position: absolute !important;
|
|
20
|
+
width: 1px !important;
|
|
21
|
+
height: 1px !important;
|
|
22
|
+
padding: 0 !important;
|
|
23
|
+
margin: -1px !important;
|
|
24
|
+
overflow: hidden !important;
|
|
25
|
+
clip: rect(0, 0, 0, 0) !important;
|
|
26
|
+
white-space: nowrap !important;
|
|
27
|
+
border: 0 !important;
|
|
28
|
+
}
|
|
29
|
+
|
|
10
30
|
.ge-table-col-div {
|
|
11
31
|
text-align: center;
|
|
12
32
|
line-height: 2.5;
|
|
@@ -108,6 +128,16 @@
|
|
|
108
128
|
line-height: 2;
|
|
109
129
|
}
|
|
110
130
|
}
|
|
131
|
+
/* a nested object: its fields, headed by the property name */
|
|
132
|
+
fieldset.form-group {
|
|
133
|
+
border: 0;
|
|
134
|
+
margin: 0;
|
|
135
|
+
padding: 0;
|
|
136
|
+
legend {
|
|
137
|
+
font-weight: bold;
|
|
138
|
+
padding: 6px 0;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
111
141
|
}
|
|
112
142
|
.ge-table-dialog-footer {
|
|
113
143
|
display: flex;
|
|
@@ -122,3 +152,66 @@
|
|
|
122
152
|
.ge-table-col-div:has(> .ge-table-sorted-icon-div) .ge-table-label {
|
|
123
153
|
padding-right: 22px;
|
|
124
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
|
+
}
|
|
@@ -70,7 +70,9 @@
|
|
|
70
70
|
.ge-table-hover-column { background-color: var(--ge-table-hover-column-bg); }
|
|
71
71
|
.ge-table-hover-row { background-color: var(--ge-table-hover-row-bg); }
|
|
72
72
|
|
|
73
|
-
.ge-table-focus-
|
|
73
|
+
/* Focus frame of the focused cell (2 px). --ge-table-focus-outline-color (not set by default) overrides the
|
|
74
|
+
color of the cell frame and of the host's keyboard focus ring at once. */
|
|
75
|
+
.ge-table-focus-border { background-color: var(--ge-table-focus-outline-color, var(--ge-table-focus-border)); }
|
|
74
76
|
.ge-table-color-col-resize-handle-hover { background-color: var(--ge-table-color-col-resize-handle-hover-bg); }
|
|
75
77
|
.ge-table-color-dragged-col-div { background-color: var(--ge-table-color-dragged-col-div-bg); }
|
|
76
78
|
.ge-table-color-drop-zone { background-color: var(--ge-table-color-drop-zone-bg); }
|
package/css/table-color-vars.css
CHANGED
|
@@ -79,8 +79,18 @@ html, html[data-theme="light"] {
|
|
|
79
79
|
--ge-table-color-drop-zone: #fafafa;
|
|
80
80
|
--ge-table-color-tree-arrow-collapsed-color: var(--ge-table-body-west-text);
|
|
81
81
|
|
|
82
|
-
|
|
83
|
-
|
|
82
|
+
/* light theme: ≥ 3 : 1 against white (WCAG 1.4.11, the stars and bars are images for screen readers);
|
|
83
|
+
before 1.1.91: #fcb515 (1.8 : 1) and #36BB6C (2.5 : 1) */
|
|
84
|
+
--ge-table-color-star-rating: #a86f00;
|
|
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;
|
|
84
94
|
}
|
|
85
95
|
|
|
86
96
|
|
|
@@ -155,4 +165,12 @@ html[data-theme="dark"] {
|
|
|
155
165
|
|
|
156
166
|
--ge-table-color-star-rating: #fcb515;
|
|
157
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;
|
|
158
176
|
}
|
package/css/table-tree.css
CHANGED
|
@@ -43,10 +43,22 @@
|
|
|
43
43
|
padding-left: 116px;
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
.ge-table-col-tree.ge-table-tree-deep-
|
|
46
|
+
.ge-table-col-tree.ge-table-tree-deep-6 {
|
|
47
47
|
padding-left: 136px;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
+
.ge-table-col-tree.ge-table-tree-deep-7 {
|
|
51
|
+
padding-left: 156px;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.ge-table-col-tree.ge-table-tree-deep-8 {
|
|
55
|
+
padding-left: 176px;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.ge-table-col-tree.ge-table-tree-deep-9 {
|
|
59
|
+
padding-left: 196px;
|
|
60
|
+
}
|
|
61
|
+
|
|
50
62
|
.ge-table-col-div.ge-table-col-tree.ge-table-tree-cell {
|
|
51
63
|
display: grid;
|
|
52
64
|
grid-template-columns: 16px 1fr;
|