wunderbaum 0.3.2 → 0.3.3

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.
@@ -0,0 +1,362 @@
1
+ /*!
2
+ * Wunderbaum style sheet (generated from wunderbaum.scss)
3
+ * Copyright (c) 2021-2023, Martin Wendt. Released under the MIT license.
4
+ * v0.3.3, Wed, 07 Jun 2023 06:41:26 GMT (https://github.com/mar10/wunderbaum)
5
+ */
6
+ div.wunderbaum {
7
+ box-sizing: border-box;
8
+ height: 100%;
9
+ min-height: 4px;
10
+ background-color: white;
11
+ margin: 0;
12
+ padding: 0;
13
+ font-family: Helvetica, sans-serif;
14
+ font-size: 14px;
15
+ color: #56534c;
16
+ border: 2px solid #56534c;
17
+ border-radius: 4px;
18
+ background-clip: content-box;
19
+ overflow-x: auto;
20
+ overflow-y: scroll;
21
+ /* --- FIXED-COLUMN --- */
22
+ /* Fixed column must be opaque, i.e. have the bg color set. */
23
+ /* --- GRID --- */
24
+ /* --- FILTER --- */
25
+ /* --- DND --- */
26
+ /* --- SPECIAL EFFECTS --- */
27
+ /* Colorize indentation levels. */
28
+ /* Fade out expanders, when container is not hovered or active */
29
+ /* Skeleton */
30
+ /* Auto-hide checkboxes unless selected or hovered */ }
31
+ div.wunderbaum:focus, div.wunderbaum:focus-within {
32
+ border-color: #275dc5; }
33
+ div.wunderbaum.wb-disabled {
34
+ opacity: 0.7;
35
+ pointer-events: none; }
36
+ div.wunderbaum div.wb-list-container {
37
+ position: relative;
38
+ min-height: 4px; }
39
+ div.wunderbaum div.wb-header {
40
+ position: sticky;
41
+ top: 0;
42
+ z-index: 2; }
43
+ div.wunderbaum div.wb-header,
44
+ div.wunderbaum div.wb-list-container {
45
+ overflow: unset; }
46
+ div.wunderbaum div.wb-row {
47
+ position: absolute;
48
+ width: 100%;
49
+ height: 22px;
50
+ line-height: 22px;
51
+ border: 1px solid transparent; }
52
+ div.wunderbaum.wb-fixed-col {
53
+ /* Sticky firdt column (header and nodes) */ }
54
+ div.wunderbaum.wb-fixed-col span.wb-col:first-of-type {
55
+ position: sticky;
56
+ left: 0;
57
+ z-index: 1;
58
+ background-color: white; }
59
+ div.wunderbaum.wb-fixed-col div.wb-header span.wb-col:first-of-type {
60
+ background-color: #dedede; }
61
+ div.wunderbaum.wb-fixed-col div.wb-node-list div.wb-row.wb-active span.wb-col:first-of-type,
62
+ div.wunderbaum.wb-fixed-col div.wb-node-list div.wb-row.wb-selected span.wb-col:first-of-type {
63
+ background-color: #e5f3fb; }
64
+ div.wunderbaum.wb-fixed-col div.wb-node-list div.wb-row.wb-active:hover span.wb-col:first-of-type,
65
+ div.wunderbaum.wb-fixed-col div.wb-node-list div.wb-row.wb-selected:hover span.wb-col:first-of-type {
66
+ background-color: #dceff8; }
67
+ div.wunderbaum.wb-fixed-col div.wb-node-list div.wb-row:hover span.wb-col:first-of-type {
68
+ background-color: #f7fcfe; }
69
+ div.wunderbaum.wb-fixed-col:not(:focus-within) div.wb-node-list div.wb-row.wb-active span.wb-col:first-of-type,
70
+ div.wunderbaum.wb-fixed-col:not(:focus-within) div.wb-node-list div.wb-row.wb-selected span.wb-col:first-of-type, div.wunderbaum.wb-fixed-col:not(:focus) div.wb-node-list div.wb-row.wb-active span.wb-col:first-of-type,
71
+ div.wunderbaum.wb-fixed-col:not(:focus) div.wb-node-list div.wb-row.wb-selected span.wb-col:first-of-type {
72
+ background-color: #f0f0f0;
73
+ border-color: #acacac; }
74
+ div.wunderbaum.wb-fixed-col:not(:focus-within) div.wb-node-list div.wb-row.wb-active span.wb-col:first-of-type:hover span.wb-col:first-of-type,
75
+ div.wunderbaum.wb-fixed-col:not(:focus-within) div.wb-node-list div.wb-row.wb-selected span.wb-col:first-of-type:hover span.wb-col:first-of-type, div.wunderbaum.wb-fixed-col:not(:focus) div.wb-node-list div.wb-row.wb-active span.wb-col:first-of-type:hover span.wb-col:first-of-type,
76
+ div.wunderbaum.wb-fixed-col:not(:focus) div.wb-node-list div.wb-row.wb-selected span.wb-col:first-of-type:hover span.wb-col:first-of-type {
77
+ background-color: #eaeaea; }
78
+ div.wunderbaum:not(:focus-within) div.wb-node-list div.wb-row.wb-active, div.wunderbaum:not(:focus-within) div.wb-node-list div.wb-row.wb-selected, div.wunderbaum:not(:focus) div.wb-node-list div.wb-row.wb-active, div.wunderbaum:not(:focus) div.wb-node-list div.wb-row.wb-selected {
79
+ background-color: #f0f0f0;
80
+ border-color: #acacac; }
81
+ div.wunderbaum:not(:focus-within) div.wb-node-list div.wb-row.wb-active:hover, div.wunderbaum:not(:focus-within) div.wb-node-list div.wb-row.wb-selected:hover, div.wunderbaum:not(:focus) div.wb-node-list div.wb-row.wb-active:hover, div.wunderbaum:not(:focus) div.wb-node-list div.wb-row.wb-selected:hover {
82
+ background-color: #eaeaea; }
83
+ div.wunderbaum.wb-alternate div.wb-node-list div.wb-row:nth-of-type(even):not(.wb-active):not(.wb-selected) {
84
+ background-color: #f7f7f7; }
85
+ div.wunderbaum.wb-alternate div.wb-node-list div.wb-row:nth-of-type(even):not(.wb-active):not(.wb-selected):hover {
86
+ background-color: #f3f3f3; }
87
+ div.wunderbaum div.wb-node-list div.wb-row:hover {
88
+ background-color: #f7fcfe; }
89
+ div.wunderbaum div.wb-node-list div.wb-row.wb-active, div.wunderbaum div.wb-node-list div.wb-row.wb-selected {
90
+ background-color: #e5f3fb; }
91
+ div.wunderbaum div.wb-node-list div.wb-row.wb-active:hover, div.wunderbaum div.wb-node-list div.wb-row.wb-selected:hover {
92
+ background-color: #dceff8; }
93
+ div.wunderbaum div.wb-node-list div.wb-row.wb-focus:not(.wb-active) {
94
+ border-style: dotted;
95
+ border-color: #70c0e7; }
96
+ div.wunderbaum div.wb-node-list div.wb-row.wb-active {
97
+ border-style: solid;
98
+ border-color: #70c0e7; }
99
+ div.wunderbaum div.wb-node-list div.wb-row.wb-active:hover {
100
+ border-color: #26a0da; }
101
+ div.wunderbaum div.wb-node-list div.wb-row.wb-loading {
102
+ font-style: italic; }
103
+ div.wunderbaum div.wb-node-list div.wb-row.wb-busy,
104
+ div.wunderbaum div.wb-node-list div.wb-row i.wb-busy,
105
+ div.wunderbaum div.wb-node-list div.wb-row .wb-col.wb-busy {
106
+ font-style: italic;
107
+ background: repeating-linear-gradient(45deg, transparent, transparent 3.88px, #dedede 3.88px, #dedede 7.78px);
108
+ animation: wb-busy-animation 2s linear infinite; }
109
+ div.wunderbaum div.wb-node-list div.wb-row.wb-error, div.wunderbaum div.wb-node-list div.wb-row.wb-status-error {
110
+ color: #b5373b; }
111
+ div.wunderbaum div.wb-header {
112
+ position: sticky;
113
+ height: 22px;
114
+ border-bottom: 1px solid #56534c;
115
+ padding: 0;
116
+ background-color: #dedede; }
117
+ div.wunderbaum div.wb-header span.wb-col {
118
+ font-weight: bold;
119
+ overflow: visible; }
120
+ div.wunderbaum div.wb-header span.wb-col-title {
121
+ width: 100%;
122
+ overflow: hidden;
123
+ white-space: nowrap;
124
+ text-overflow: ellipsis; }
125
+ div.wunderbaum div.wb-header span.wb-col-resizer {
126
+ position: absolute;
127
+ top: 0;
128
+ right: -1px;
129
+ width: 3px;
130
+ border: none;
131
+ border-right: 2px solid #56534c;
132
+ height: 100%;
133
+ cursor: col-resize; }
134
+ div.wunderbaum span.wb-col {
135
+ position: absolute;
136
+ display: inline-block;
137
+ overflow: hidden;
138
+ height: 20px;
139
+ line-height: 20px;
140
+ padding: 0 2px;
141
+ border-right: 1px solid #dedede;
142
+ white-space: nowrap; }
143
+ div.wunderbaum span.wb-col:last-of-type {
144
+ border-right: none; }
145
+ div.wunderbaum span.wb-node {
146
+ user-select: none;
147
+ /* Fix Bootstrap Icon alignment */ }
148
+ div.wunderbaum span.wb-node i.wb-checkbox,
149
+ div.wunderbaum span.wb-node i.wb-expander,
150
+ div.wunderbaum span.wb-node i.wb-icon,
151
+ div.wunderbaum span.wb-node i.wb-indent {
152
+ height: 20px;
153
+ width: 20px;
154
+ padding: 2px 2px;
155
+ display: inline-block; }
156
+ div.wunderbaum span.wb-node i.bi::before {
157
+ vertical-align: baseline; }
158
+ div.wunderbaum span.wb-node img.wb-icon {
159
+ width: 16px;
160
+ height: 16px;
161
+ padding: 2px 2px; }
162
+ div.wunderbaum span.wb-node i.wb-indent::before {
163
+ content: "\00a0"; }
164
+ div.wunderbaum span.wb-node i.wb-expander.wb-spin,
165
+ div.wunderbaum span.wb-node i.wb-icon.wb-spin {
166
+ height: unset;
167
+ width: unset;
168
+ padding: 0 3px;
169
+ animation: wb-spin-animation 2s linear infinite; }
170
+ div.wunderbaum span.wb-node span.wb-title {
171
+ min-width: 1em;
172
+ vertical-align: top;
173
+ overflow-x: hidden;
174
+ display: inline-block;
175
+ white-space: nowrap;
176
+ text-overflow: ellipsis; }
177
+ div.wunderbaum.wb-grid div.wb-header div.wb-row span.wb-col:hover {
178
+ background-color: #c5c5c5; }
179
+ div.wunderbaum.wb-grid.wb-cell-mode div.wb-header div.wb-row span.wb-col.wb-active {
180
+ background-color: #dceff8; }
181
+ div.wunderbaum.wb-grid div.wb-node-list div.wb-row {
182
+ border-bottom-color: #dedede; }
183
+ div.wunderbaum.wb-grid div.wb-node-list div.wb-row:hover:not(.wb-active):not(.wb-selected) {
184
+ background-color: #f7fcfe; }
185
+ div.wunderbaum.wb-grid div.wb-node-list div.wb-row.wb-active {
186
+ border-bottom-color: #70c0e7; }
187
+ div.wunderbaum.wb-grid div.wb-node-list div.wb-row span.wb-col {
188
+ border-right: 1px solid #dedede; }
189
+ div.wunderbaum.wb-grid div.wb-node-list div.wb-row span.wb-col input.wb-input-edit,
190
+ div.wunderbaum.wb-grid div.wb-node-list div.wb-row span.wb-col > input[type="color"],
191
+ div.wunderbaum.wb-grid div.wb-node-list div.wb-row span.wb-col > input[type="date"],
192
+ div.wunderbaum.wb-grid div.wb-node-list div.wb-row span.wb-col > input[type="datetime"],
193
+ div.wunderbaum.wb-grid div.wb-node-list div.wb-row span.wb-col > input[type="datetime-local"],
194
+ div.wunderbaum.wb-grid div.wb-node-list div.wb-row span.wb-col > input[type="email"],
195
+ div.wunderbaum.wb-grid div.wb-node-list div.wb-row span.wb-col > input[type="month"],
196
+ div.wunderbaum.wb-grid div.wb-node-list div.wb-row span.wb-col > input[type="number"],
197
+ div.wunderbaum.wb-grid div.wb-node-list div.wb-row span.wb-col > input[type="password"],
198
+ div.wunderbaum.wb-grid div.wb-node-list div.wb-row span.wb-col > input[type="search"],
199
+ div.wunderbaum.wb-grid div.wb-node-list div.wb-row span.wb-col > input[type="tel"],
200
+ div.wunderbaum.wb-grid div.wb-node-list div.wb-row span.wb-col > input[type="text"],
201
+ div.wunderbaum.wb-grid div.wb-node-list div.wb-row span.wb-col > input[type="time"],
202
+ div.wunderbaum.wb-grid div.wb-node-list div.wb-row span.wb-col > input[type="url"],
203
+ div.wunderbaum.wb-grid div.wb-node-list div.wb-row span.wb-col > input[type="week"],
204
+ div.wunderbaum.wb-grid div.wb-node-list div.wb-row span.wb-col > select {
205
+ width: 100%;
206
+ max-height: 20px;
207
+ border: none; }
208
+ div.wunderbaum.wb-grid div.wb-node-list div.wb-row span.wb-col > input:focus,
209
+ div.wunderbaum.wb-grid div.wb-node-list div.wb-row span.wb-col > select:focus {
210
+ border: 1px dashed #70c0e7; }
211
+ div.wunderbaum.wb-grid.wb-cell-mode div.wb-row:not(.wb-colspan).wb-active span.wb-col.wb-active {
212
+ background-color: #b3b3b3; }
213
+ div.wunderbaum.wb-grid.wb-cell-mode:focus-within div.wb-row:not(.wb-colspan):not(.wb-selected) span.wb-col.wb-active, div.wunderbaum.wb-grid.wb-cell-mode:focus div.wb-row:not(.wb-colspan):not(.wb-selected) span.wb-col.wb-active {
214
+ background-color: #f7fcfe; }
215
+ div.wunderbaum.wb-grid.wb-cell-mode:focus-within div.wb-row:not(.wb-colspan):not(.wb-selected).wb-active, div.wunderbaum.wb-grid.wb-cell-mode:focus div.wb-row:not(.wb-colspan):not(.wb-selected).wb-active {
216
+ background-color: #f7fcfe; }
217
+ div.wunderbaum.wb-grid.wb-cell-mode:focus-within div.wb-row:not(.wb-colspan):not(.wb-selected).wb-active span.wb-col.wb-active, div.wunderbaum.wb-grid.wb-cell-mode:focus div.wb-row:not(.wb-colspan):not(.wb-selected).wb-active span.wb-col.wb-active {
218
+ background-color: #7dc6e9; }
219
+ div.wunderbaum.wb-grid.wb-alternate div.wb-node-list div.wb-row:nth-of-type(even):not(.wb-active):not(.wb-selected) {
220
+ background-color: #f7f7f7; }
221
+ div.wunderbaum.wb-grid.wb-alternate div.wb-node-list div.wb-row:nth-of-type(even):not(.wb-active):not(.wb-selected):hover {
222
+ background-color: #f3f3f3; }
223
+ div.wunderbaum.wb-grid:not(:focus-within) div.wb-node-list div.wb-row, div.wunderbaum.wb-grid:not(:focus) div.wb-node-list div.wb-row {
224
+ border-bottom-color: #dedede; }
225
+ div.wunderbaum.wb-ext-filter-dim div.wb-node-list div.wb-row, div.wunderbaum.wb-ext-filter-hide div.wb-node-list div.wb-row {
226
+ color: #dedede; }
227
+ div.wunderbaum.wb-ext-filter-dim div.wb-node-list div.wb-row.wb-submatch, div.wunderbaum.wb-ext-filter-hide div.wb-node-list div.wb-row.wb-submatch {
228
+ color: #868581; }
229
+ div.wunderbaum.wb-ext-filter-dim div.wb-node-list div.wb-row.wb-match, div.wunderbaum.wb-ext-filter-hide div.wb-node-list div.wb-row.wb-match {
230
+ color: #56534c; }
231
+ div.wunderbaum div.wb-row.wb-drag-source {
232
+ opacity: 0.5; }
233
+ div.wunderbaum div.wb-row.wb-drag-source .wb-node {
234
+ background-color: #d3d2ce; }
235
+ div.wunderbaum div.wb-row.wb-drop-target {
236
+ overflow: visible; }
237
+ div.wunderbaum div.wb-row.wb-drop-target .wb-node {
238
+ background-color: #d4ecf8;
239
+ overflow: visible; }
240
+ div.wunderbaum div.wb-row.wb-drop-target .wb-node .wb-icon {
241
+ position: relative;
242
+ overflow: visible; }
243
+ div.wunderbaum div.wb-row.wb-drop-target .wb-node .wb-icon::after {
244
+ position: absolute;
245
+ z-index: 1000;
246
+ content: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAQCAMAAABA3o1rAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAACKUExURe/v9/f39+//7+f35+f/79bW5wgIawwYd97e55Tnpc731rjA2d7350LOY1LWa7Xvvf///wAQcyAze97e773vxnuczgA5pQBCpdb33rXvxu//9whjxgBaxlKU1oOz5ABz3gB73tbn99bW1rXe/wCM9xiU997v/97e3gCc/xil/9bv/wic/+/3/wAAALM9X5QAAAAudFJOU////////////////////////////////////////////////////////////wCCj3NVAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAqUlEQVQoU6WQ2w6CMAxA54agsCHq1HlFBREv/f/fs1tHAoaoiedlbXrWtGXwhV8FNqAXuAi4DwkShmE0cgGIcSwCCgkSkrAxpEonot0DhQxJptFsbnOpdNdgsFh6VtYwyqzTmG+oijDY7hr22E4qY7QybeGQe46nsxP0Wwc3Q1GWl+qKec8MlqKubxX+xzV7tkDuD1+3d+heigT2zGx/hCMUeUj4wL8CwAsW1kqCTugMCwAAAABJRU5ErkJggg==);
247
+ left: 0;
248
+ top: 3px; }
249
+ div.wunderbaum div.wb-row.wb-drop-target.wb-drop-before .wb-node .wb-icon::after,
250
+ div.wunderbaum div.wb-row.wb-drop-target.wb-drop-after .wb-node .wb-icon::after {
251
+ content: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAAQCAMAAACROYkbAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAACNUExURe/v9/f39+//7+f35+f/79bW5wgIawwYd97e55Tnpc731rjA2d7350LOY1LWa7Xvvf///wAQcyAze97e773vxgAAAHuczgA5pQBCpdb33rXvxu//9whjxgBaxlKU1oOz5ABz3gB73tbn99bW1rXe/wCM9xiU997v/97e3gCc/xil/9bv/wic/+/3/wAAAParqS4AAAAvdFJOU/////////////////////////////////////////////////////////////8AWqU49wAAAAlwSFlzAAAOwwAADsMBx2+oZAAAALlJREFUOE/FktsSgiAQhglMS8WstKLzQTM77Ps/XguL16I208cFyzB8/LPAYCC/ErARzcCFx23pBgnGfjAxBYhpKDwq3SBB5DeGWCYz0SUDClIkmgeLpV7HMiNDbrbbYbBaWzbaoKTaJiHfQe5oYLA/NBwxTiyVyqTSghYwox4MTmfL5XozgqxjAtODoizv1QPXPXqgKer6WeH9+Iw9XgF5ve15/Q+6/SQSsE+q8yMcocoREgzg3wKAL4vrpBIKREShAAAAAElFTkSuQmCC);
252
+ left: 0;
253
+ top: -8px; }
254
+ div.wunderbaum div.wb-row.wb-drop-target.wb-drop-after .wb-node .wb-icon::after {
255
+ top: 14px; }
256
+ div.wunderbaum.wb-rainbow i.wb-expander:nth-child(4n + 1),
257
+ div.wunderbaum.wb-rainbow i.wb-indent:nth-child(4n + 1) {
258
+ background: #ffffc9; }
259
+ div.wunderbaum.wb-rainbow i.wb-expander:nth-child(4n + 2),
260
+ div.wunderbaum.wb-rainbow i.wb-indent:nth-child(4n + 2) {
261
+ background: #daffda; }
262
+ div.wunderbaum.wb-rainbow i.wb-expander:nth-child(4n + 3),
263
+ div.wunderbaum.wb-rainbow i.wb-indent:nth-child(4n + 3) {
264
+ background: #ffd9fe; }
265
+ div.wunderbaum.wb-rainbow i.wb-expander:nth-child(4n + 4),
266
+ div.wunderbaum.wb-rainbow i.wb-indent:nth-child(4n + 4) {
267
+ background: #ccfafa; }
268
+ div.wunderbaum.wb-fade-expander i.wb-expander {
269
+ transition: color 1.5s;
270
+ color: rgba(86, 83, 76, 0); }
271
+ div.wunderbaum.wb-fade-expander div.wb-row.wb-loading i.wb-expander,
272
+ div.wunderbaum.wb-fade-expander:hover i.wb-expander,
273
+ div.wunderbaum.wb-fade-expander:focus i.wb-expander,
274
+ div.wunderbaum.wb-fade-expander:focus-within i.wb-expander,
275
+ div.wunderbaum.wb-fade-expander [class*="wb-statusnode-"] i.wb-expander {
276
+ transition: color 0.6s;
277
+ color: #56534c; }
278
+ div.wunderbaum div.wb-row.wb-skeleton span.wb-title,
279
+ div.wunderbaum div.wb-row.wb-skeleton i.wb-icon {
280
+ animation: wb-skeleton-animation 1s linear infinite alternate;
281
+ border-radius: 0.25em;
282
+ color: transparent;
283
+ opacity: 0.7; }
284
+ div.wunderbaum.wb-checkbox-auto-hide i.wb-checkbox {
285
+ visibility: hidden; }
286
+ div.wunderbaum.wb-checkbox-auto-hide .wb-row:hover i.wb-checkbox,
287
+ div.wunderbaum.wb-checkbox-auto-hide .wb-row.wb-selected i.wb-checkbox {
288
+ visibility: unset; }
289
+ div.wunderbaum.wb-checkbox-auto-hide:focus .wb-row.wb-active i.wb-checkbox, div.wunderbaum.wb-checkbox-auto-hide:focus-within .wb-row.wb-active i.wb-checkbox {
290
+ visibility: unset; }
291
+
292
+ /* --- TOOL CLASSES --- */
293
+ .wb-helper-center {
294
+ text-align: center; }
295
+
296
+ .wb-helper-disabled {
297
+ color: #8c877c; }
298
+
299
+ .wb-helper-hidden {
300
+ display: none; }
301
+
302
+ .wb-helper-invalid {
303
+ color: #b5373b; }
304
+
305
+ .wb-helper-lazy-expander {
306
+ color: #26a0da; }
307
+
308
+ .wb-helper-link {
309
+ cursor: pointer; }
310
+
311
+ .wb-no-select {
312
+ user-select: none;
313
+ -webkit-user-select: none; }
314
+ .wb-no-select span.wb-title {
315
+ user-select: contain;
316
+ -webkit-user-select: contain; }
317
+
318
+ /* RTL support */
319
+ .wb-helper-start,
320
+ .wb-helper-start > input {
321
+ text-align: left; }
322
+
323
+ .wb-helper-end,
324
+ .wb-helper-end > input {
325
+ text-align: right; }
326
+
327
+ .wb-rtl .wb-helper-start,
328
+ .wb-rtl .wb-helper-start > input {
329
+ text-align: right; }
330
+
331
+ .wb-rtl .wb-helper-end,
332
+ .wb-rtl .wb-helper-end > input {
333
+ text-align: left; }
334
+
335
+ /* Class 'wb-tristate' is used to mark checkboxes that should toggle like
336
+ * indeterminate -> checked -> unchecked -> indeterminate ...
337
+ */
338
+ .wb-col input[type="checkbox"]:indeterminate {
339
+ color: #8c877c;
340
+ background-color: red; }
341
+
342
+ .wb-col input:invalid {
343
+ color: #b5373b;
344
+ background-color: #f5ddde; }
345
+
346
+ @keyframes wb-spin-animation {
347
+ 0% {
348
+ transform: rotate(0deg); }
349
+ to {
350
+ transform: rotate(1turn); } }
351
+
352
+ @keyframes wb-skeleton-animation {
353
+ 0% {
354
+ background-color: #a3b8c2; }
355
+ 100% {
356
+ background-color: #f0f3f5; } }
357
+
358
+ @keyframes wb-busy-animation {
359
+ 0% {
360
+ background-position: 0 0; }
361
+ 100% {
362
+ background-position: 0 22px; } }
@@ -1121,7 +1121,7 @@ declare module "wb_node" {
1121
1121
  * @param {function} callback the callback function.
1122
1122
  * Return false to stop iteration, return "skip" to skip this node and
1123
1123
  * its children only.
1124
- * @see {@link WunderbaumNode.*[Symbol.iterator]}, {@link Wunderbaum.visit}.
1124
+ * @see {@link IterableIterator<WunderbaumNode>}, {@link Wunderbaum.visit}.
1125
1125
  */
1126
1126
  visit(callback: NodeVisitCallback, includeSelf?: boolean): NodeVisitResponse;
1127
1127
  /** Call fn(node) for all parent nodes, bottom-up, including invisible system root.<br>
@@ -1225,7 +1225,7 @@ declare module "types" {
1225
1225
  event: KeyboardEvent;
1226
1226
  node: WunderbaumNode;
1227
1227
  info: WbEventInfo;
1228
- /** Canical name of the key including modifiers. @see {@link eventToString} */
1228
+ /** Canical name of the key including modifiers. @see {@link util.eventToString} */
1229
1229
  eventName: string;
1230
1230
  }
1231
1231
  export interface WbInitEventType extends WbTreeEventType {
@@ -1282,7 +1282,7 @@ declare module "types" {
1282
1282
  };
1283
1283
  /**
1284
1284
  * Column type definitions.
1285
- * @see {@link `Wunderbaum.columns`}
1285
+ * @see {@link Wunderbaum.columns}
1286
1286
  */
1287
1287
  export interface ColumnDefinition {
1288
1288
  /** Column ID as defined in `tree.columns` definition ("*" for title column). */
@@ -1448,7 +1448,7 @@ declare module "types" {
1448
1448
  /** Do not send events. @default false */
1449
1449
  noEvents?: boolean;
1450
1450
  }
1451
- /** Possible values for {@link Wunderbaum.navigate()}. */
1451
+ /** Possible values for {@link WunderbaumNode.navigate()}. */
1452
1452
  export interface NavigateOptions {
1453
1453
  /** Activate the new node (otherwise focus only). @default true */
1454
1454
  activate?: boolean;
@@ -1472,7 +1472,7 @@ declare module "types" {
1472
1472
  /** @internal. @default true */
1473
1473
  resizeCols?: boolean;
1474
1474
  }
1475
- /** Possible values for {@link scrollIntoView()} `options` argument. */
1475
+ /** Possible values for {@link WunderbaumNode.scrollIntoView()} `options` argument. */
1476
1476
  export interface ScrollIntoViewOptions {
1477
1477
  /** Do not animate (currently not implemented). @default false */
1478
1478
  noAnimation?: boolean;
@@ -1500,12 +1500,12 @@ declare module "types" {
1500
1500
  focusTree?: boolean;
1501
1501
  /** Optional original event that will be passed to the (de)activate handler. */
1502
1502
  event?: Event;
1503
- /** Call {@link setColumn}. */
1503
+ /** Call {@link Wunderbaum.setColumn}. */
1504
1504
  colIdx?: number;
1505
1505
  }
1506
1506
  /** Possible values for {@link WunderbaumNode.setExpanded()} `options` argument. */
1507
1507
  export interface SetExpandedOptions {
1508
- /** Ignore {@link minExpandLevel}. @default false */
1508
+ /** Ignore {@link WunderbaumOptions.minExpandLevel}. @default false */
1509
1509
  force?: boolean;
1510
1510
  /** Immediately update viewport (async otherwise). @default false */
1511
1511
  immediate?: boolean;
@@ -2424,7 +2424,7 @@ declare module "wunderbaum" {
2424
2424
  protected _updateRows(options?: any): boolean;
2425
2425
  /**
2426
2426
  * Call `callback(node)` for all nodes in hierarchical order (depth-first, pre-order).
2427
- * @see {@link Wunderbaum.*[Symbol.iterator]}, {@link WunderbaumNode.visit}.
2427
+ * @see {@link IterableIterator<WunderbaumNode>}, {@link WunderbaumNode.visit}.
2428
2428
  *
2429
2429
  * @param {function} callback the callback function.
2430
2430
  * Return false to stop iteration, return "skip" to skip this node and
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * Wunderbaum - util
3
3
  * Copyright (c) 2021-2023, Martin Wendt. Released under the MIT license.
4
- * v0.3.2, Mon, 05 Jun 2023 19:29:58 GMT (https://github.com/mar10/wunderbaum)
4
+ * v0.3.3, Wed, 07 Jun 2023 06:41:26 GMT (https://github.com/mar10/wunderbaum)
5
5
  */
6
6
  /** @module util */
7
7
  /** Readable names for `MouseEvent.button` */
@@ -756,7 +756,7 @@ var util = /*#__PURE__*/Object.freeze({
756
756
  /*!
757
757
  * Wunderbaum - types
758
758
  * Copyright (c) 2021-2023, Martin Wendt. Released under the MIT license.
759
- * v0.3.2, Mon, 05 Jun 2023 19:29:58 GMT (https://github.com/mar10/wunderbaum)
759
+ * v0.3.3, Wed, 07 Jun 2023 06:41:26 GMT (https://github.com/mar10/wunderbaum)
760
760
  */
761
761
  /**
762
762
  * Possible values for {@link WunderbaumNode.setModified()} and {@link Wunderbaum.setModified()}.
@@ -820,7 +820,7 @@ var NavModeEnum;
820
820
  /*!
821
821
  * Wunderbaum - wb_extension_base
822
822
  * Copyright (c) 2021-2023, Martin Wendt. Released under the MIT license.
823
- * v0.3.2, Mon, 05 Jun 2023 19:29:58 GMT (https://github.com/mar10/wunderbaum)
823
+ * v0.3.3, Wed, 07 Jun 2023 06:41:26 GMT (https://github.com/mar10/wunderbaum)
824
824
  */
825
825
  class WunderbaumExtension {
826
826
  constructor(tree, id, defaults) {
@@ -1111,7 +1111,7 @@ function debounce(func, wait = 0, options = {}) {
1111
1111
  /*!
1112
1112
  * Wunderbaum - ext-filter
1113
1113
  * Copyright (c) 2021-2023, Martin Wendt. Released under the MIT license.
1114
- * v0.3.2, Mon, 05 Jun 2023 19:29:58 GMT (https://github.com/mar10/wunderbaum)
1114
+ * v0.3.3, Wed, 07 Jun 2023 06:41:26 GMT (https://github.com/mar10/wunderbaum)
1115
1115
  */
1116
1116
  const START_MARKER = "\uFFF7";
1117
1117
  const END_MARKER = "\uFFF8";
@@ -1412,7 +1412,7 @@ function _markFuzzyMatchedChars(text, matches, escapeTitles = true) {
1412
1412
  /*!
1413
1413
  * Wunderbaum - ext-keynav
1414
1414
  * Copyright (c) 2021-2023, Martin Wendt. Released under the MIT license.
1415
- * v0.3.2, Mon, 05 Jun 2023 19:29:58 GMT (https://github.com/mar10/wunderbaum)
1415
+ * v0.3.3, Wed, 07 Jun 2023 06:41:26 GMT (https://github.com/mar10/wunderbaum)
1416
1416
  */
1417
1417
  const QUICKSEARCH_DELAY = 500;
1418
1418
  class KeynavExtension extends WunderbaumExtension {
@@ -1752,7 +1752,7 @@ class KeynavExtension extends WunderbaumExtension {
1752
1752
  /*!
1753
1753
  * Wunderbaum - ext-logger
1754
1754
  * Copyright (c) 2021-2023, Martin Wendt. Released under the MIT license.
1755
- * v0.3.2, Mon, 05 Jun 2023 19:29:58 GMT (https://github.com/mar10/wunderbaum)
1755
+ * v0.3.3, Wed, 07 Jun 2023 06:41:26 GMT (https://github.com/mar10/wunderbaum)
1756
1756
  */
1757
1757
  class LoggerExtension extends WunderbaumExtension {
1758
1758
  constructor(tree) {
@@ -1792,7 +1792,7 @@ class LoggerExtension extends WunderbaumExtension {
1792
1792
  /*!
1793
1793
  * Wunderbaum - common
1794
1794
  * Copyright (c) 2021-2023, Martin Wendt. Released under the MIT license.
1795
- * v0.3.2, Mon, 05 Jun 2023 19:29:58 GMT (https://github.com/mar10/wunderbaum)
1795
+ * v0.3.3, Wed, 07 Jun 2023 06:41:26 GMT (https://github.com/mar10/wunderbaum)
1796
1796
  */
1797
1797
  const DEFAULT_DEBUGLEVEL = 4; // Replaced by rollup script
1798
1798
  /**
@@ -2038,7 +2038,7 @@ function inflateSourceData(source) {
2038
2038
  /*!
2039
2039
  * Wunderbaum - ext-dnd
2040
2040
  * Copyright (c) 2021-2023, Martin Wendt. Released under the MIT license.
2041
- * v0.3.2, Mon, 05 Jun 2023 19:29:58 GMT (https://github.com/mar10/wunderbaum)
2041
+ * v0.3.3, Wed, 07 Jun 2023 06:41:26 GMT (https://github.com/mar10/wunderbaum)
2042
2042
  */
2043
2043
  const nodeMimeType = "application/x-wunderbaum-node";
2044
2044
  class DndExtension extends WunderbaumExtension {
@@ -2331,7 +2331,7 @@ class DndExtension extends WunderbaumExtension {
2331
2331
  /*!
2332
2332
  * Wunderbaum - drag_observer
2333
2333
  * Copyright (c) 2021-2023, Martin Wendt. Released under the MIT license.
2334
- * v0.3.2, Mon, 05 Jun 2023 19:29:58 GMT (https://github.com/mar10/wunderbaum)
2334
+ * v0.3.3, Wed, 07 Jun 2023 06:41:26 GMT (https://github.com/mar10/wunderbaum)
2335
2335
  */
2336
2336
  /**
2337
2337
  * Convert mouse- and touch events to 'dragstart', 'drag', and 'dragstop'.
@@ -2467,7 +2467,7 @@ class DragObserver {
2467
2467
  /*!
2468
2468
  * Wunderbaum - ext-grid
2469
2469
  * Copyright (c) 2021-2023, Martin Wendt. Released under the MIT license.
2470
- * v0.3.2, Mon, 05 Jun 2023 19:29:58 GMT (https://github.com/mar10/wunderbaum)
2470
+ * v0.3.3, Wed, 07 Jun 2023 06:41:26 GMT (https://github.com/mar10/wunderbaum)
2471
2471
  */
2472
2472
  class GridExtension extends WunderbaumExtension {
2473
2473
  constructor(tree) {
@@ -2504,7 +2504,7 @@ class GridExtension extends WunderbaumExtension {
2504
2504
  /*!
2505
2505
  * Wunderbaum - deferred
2506
2506
  * Copyright (c) 2021-2023, Martin Wendt. Released under the MIT license.
2507
- * v0.3.2, Mon, 05 Jun 2023 19:29:58 GMT (https://github.com/mar10/wunderbaum)
2507
+ * v0.3.3, Wed, 07 Jun 2023 06:41:26 GMT (https://github.com/mar10/wunderbaum)
2508
2508
  */
2509
2509
  /**
2510
2510
  * Implement a ES6 Promise, that exposes a resolve() and reject() method.
@@ -2557,7 +2557,7 @@ class Deferred {
2557
2557
  /*!
2558
2558
  * Wunderbaum - wunderbaum_node
2559
2559
  * Copyright (c) 2021-2023, Martin Wendt. Released under the MIT license.
2560
- * v0.3.2, Mon, 05 Jun 2023 19:29:58 GMT (https://github.com/mar10/wunderbaum)
2560
+ * v0.3.3, Wed, 07 Jun 2023 06:41:26 GMT (https://github.com/mar10/wunderbaum)
2561
2561
  */
2562
2562
  /** Top-level properties that can be passed with `data`. */
2563
2563
  const NODE_PROPS = new Set([
@@ -4529,7 +4529,7 @@ class WunderbaumNode {
4529
4529
  * @param {function} callback the callback function.
4530
4530
  * Return false to stop iteration, return "skip" to skip this node and
4531
4531
  * its children only.
4532
- * @see {@link WunderbaumNode.*[Symbol.iterator]}, {@link Wunderbaum.visit}.
4532
+ * @see {@link IterableIterator<WunderbaumNode>}, {@link Wunderbaum.visit}.
4533
4533
  */
4534
4534
  visit(callback, includeSelf = false) {
4535
4535
  let i, l, res = true, children = this.children;
@@ -4600,7 +4600,7 @@ WunderbaumNode.sequence = 0;
4600
4600
  /*!
4601
4601
  * Wunderbaum - ext-edit
4602
4602
  * Copyright (c) 2021-2023, Martin Wendt. Released under the MIT license.
4603
- * v0.3.2, Mon, 05 Jun 2023 19:29:58 GMT (https://github.com/mar10/wunderbaum)
4603
+ * v0.3.3, Wed, 07 Jun 2023 06:41:26 GMT (https://github.com/mar10/wunderbaum)
4604
4604
  */
4605
4605
  // const START_MARKER = "\uFFF7";
4606
4606
  class EditExtension extends WunderbaumExtension {
@@ -4896,8 +4896,8 @@ class EditExtension extends WunderbaumExtension {
4896
4896
  * https://github.com/mar10/wunderbaum
4897
4897
  *
4898
4898
  * Released under the MIT license.
4899
- * @version v0.3.2
4900
- * @date Mon, 05 Jun 2023 19:29:58 GMT
4899
+ * @version v0.3.3
4900
+ * @date Wed, 07 Jun 2023 06:41:26 GMT
4901
4901
  */
4902
4902
  class WbSystemRoot extends WunderbaumNode {
4903
4903
  constructor(tree) {
@@ -6699,7 +6699,7 @@ class Wunderbaum {
6699
6699
  }
6700
6700
  /**
6701
6701
  * Call `callback(node)` for all nodes in hierarchical order (depth-first, pre-order).
6702
- * @see {@link Wunderbaum.*[Symbol.iterator]}, {@link WunderbaumNode.visit}.
6702
+ * @see {@link IterableIterator<WunderbaumNode>}, {@link WunderbaumNode.visit}.
6703
6703
  *
6704
6704
  * @param {function} callback the callback function.
6705
6705
  * Return false to stop iteration, return "skip" to skip this node and
@@ -6929,7 +6929,7 @@ class Wunderbaum {
6929
6929
  }
6930
6930
  Wunderbaum.sequence = 0;
6931
6931
  /** Wunderbaum release version number "MAJOR.MINOR.PATCH". */
6932
- Wunderbaum.version = "v0.3.2"; // Set to semver by 'grunt release'
6932
+ Wunderbaum.version = "v0.3.3"; // Set to semver by 'grunt release'
6933
6933
  /** Expose some useful methods of the util.ts module as `Wunderbaum.util`. */
6934
6934
  Wunderbaum.util = util;
6935
6935