@poirazis/supercomponents-shared 1.2.11 → 1.2.13
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.js +11081 -10997
- package/dist/index.umd.cjs +13 -13
- package/package.json +1 -1
- package/src/lib/SuperField/SuperField.svelte +1 -1
- package/src/lib/SuperForm/InnerForm.svelte +68 -19
- package/src/lib/SuperForm/SuperForm.svelte +13 -3
- package/src/lib/SuperTable/SuperTable.css +9 -6
- package/src/lib/SuperTable/SuperTable.svelte +207 -193
- package/src/lib/SuperTable/controls/ColumnsSection.svelte +11 -19
- package/src/lib/SuperTable/controls/RowButtonsColumn.svelte +4 -4
- package/src/lib/SuperTable/controls/SelectionColumn.svelte +9 -10
- package/src/lib/SuperTable/overlays/AddNewRowOverlay.svelte +1 -1
- package/src/lib/SuperTableCells/CellAttachmentExpanded.svelte +0 -1
- package/src/lib/SuperTableCells/CellAttachmentSlider.svelte +0 -1
- package/src/lib/SuperTableCells/CellBoolean.svelte +0 -1
- package/src/lib/SuperTableCells/CellCommon.css +60 -88
- package/src/lib/SuperTableCells/CellDateRange.svelte +6 -32
- package/src/lib/SuperTableCells/CellDatetime.svelte +3 -4
- package/src/lib/SuperTableCells/CellJSON.svelte +1 -4
- package/src/lib/SuperTableCells/CellLink.svelte +22 -21
- package/src/lib/SuperTableCells/CellLinkAdvanced.svelte +3 -7
- package/src/lib/SuperTableCells/CellLinkPickerSelect.svelte +7 -4
- package/src/lib/SuperTableCells/CellNumber.svelte +18 -23
- package/src/lib/SuperTableCells/CellOptions.svelte +39 -37
- package/src/lib/SuperTableCells/CellSQLLink.svelte +85 -66
- package/src/lib/SuperTableCells/CellSQLLinkPicker.svelte +66 -36
- package/src/lib/SuperTableCells/CellString.svelte +9 -25
- package/src/lib/SuperTableCells/CellStringMask.svelte +119 -26
- package/src/lib/SuperTableCells/CellStringSimple.svelte +6 -8
- package/src/lib/SuperTableColumn/SuperTableColumn.svelte +10 -10
- package/src/lib/SuperTableColumn/parts/SuperColumnHeader.svelte +4 -1
- package/src/lib/SuperTableColumn/parts/SuperColumnRow.svelte +25 -21
- package/src/lib/SuperTabs/SuperTabs.svelte +28 -23
- package/src/lib/SuperTable/controls/SuperTableWelcome.svelte +0 -58
|
@@ -1,7 +1,28 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
import { createEventDispatcher, onMount, onDestroy } from "svelte";
|
|
3
3
|
import fsm from "svelte-fsm";
|
|
4
|
-
import
|
|
4
|
+
import {
|
|
5
|
+
Masked,
|
|
6
|
+
InputMask,
|
|
7
|
+
createMask,
|
|
8
|
+
MaskedPattern,
|
|
9
|
+
MaskedRegExp,
|
|
10
|
+
MaskedNumber,
|
|
11
|
+
MaskedDate,
|
|
12
|
+
MaskedEnum,
|
|
13
|
+
MaskedRange,
|
|
14
|
+
MaskedDynamic,
|
|
15
|
+
} from "imask";
|
|
16
|
+
|
|
17
|
+
// Register mask classes with Masked.overloads to ensure they're available for createMask
|
|
18
|
+
// This is required for imask 6.x to properly handle pattern-based masks
|
|
19
|
+
if (MaskedPattern && Masked.overloads) {
|
|
20
|
+
// Ensure MaskedPattern is available as an overload
|
|
21
|
+
if (!Masked.overloads.find((o) => o.mask === MaskedPattern)) {
|
|
22
|
+
Masked.overloads.unshift({ mask: MaskedPattern });
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
5
26
|
const dispatch = createEventDispatcher();
|
|
6
27
|
|
|
7
28
|
export let value;
|
|
@@ -23,9 +44,53 @@
|
|
|
23
44
|
let inputMask;
|
|
24
45
|
let inputElement;
|
|
25
46
|
|
|
47
|
+
function createMaskInstance(maskPattern) {
|
|
48
|
+
if (!maskPattern) return null;
|
|
49
|
+
try {
|
|
50
|
+
// For imask 6.x, explicitly create a MaskedPattern instance
|
|
51
|
+
// This avoids the "Masked class is not found" error by directly instantiating
|
|
52
|
+
const mask = new MaskedPattern({
|
|
53
|
+
mask: maskPattern,
|
|
54
|
+
lazy: false,
|
|
55
|
+
placeholderChar: "_",
|
|
56
|
+
});
|
|
57
|
+
return mask;
|
|
58
|
+
} catch (patternError) {
|
|
59
|
+
try {
|
|
60
|
+
// Fallback: try as a regex pattern
|
|
61
|
+
const mask = new MaskedRegExp({
|
|
62
|
+
mask: new RegExp(maskPattern),
|
|
63
|
+
lazy: false,
|
|
64
|
+
});
|
|
65
|
+
return mask;
|
|
66
|
+
} catch (regexError) {
|
|
67
|
+
try {
|
|
68
|
+
// Last fallback: use generic createMask
|
|
69
|
+
return createMask({
|
|
70
|
+
mask: maskPattern,
|
|
71
|
+
lazy: false,
|
|
72
|
+
});
|
|
73
|
+
} catch (createError) {
|
|
74
|
+
console.error(
|
|
75
|
+
"Failed to create mask - pattern:",
|
|
76
|
+
maskPattern,
|
|
77
|
+
"errors:",
|
|
78
|
+
{
|
|
79
|
+
patternError: patternError?.message,
|
|
80
|
+
regexError: regexError?.message,
|
|
81
|
+
createError: createError?.message,
|
|
82
|
+
},
|
|
83
|
+
);
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
26
90
|
function applyMask(rawValue) {
|
|
27
91
|
if (!mask || !rawValue) return rawValue;
|
|
28
|
-
const tempMask =
|
|
92
|
+
const tempMask = createMaskInstance(mask);
|
|
93
|
+
if (!tempMask) return rawValue;
|
|
29
94
|
tempMask.unmaskedValue = rawValue;
|
|
30
95
|
return tempMask.value;
|
|
31
96
|
}
|
|
@@ -42,7 +107,11 @@
|
|
|
42
107
|
return;
|
|
43
108
|
}
|
|
44
109
|
|
|
45
|
-
const tempMask =
|
|
110
|
+
const tempMask = createMaskInstance(mask);
|
|
111
|
+
if (!tempMask) {
|
|
112
|
+
isComplete = false;
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
46
115
|
tempMask.resolve(localValue);
|
|
47
116
|
isComplete = tempMask.isComplete;
|
|
48
117
|
}
|
|
@@ -158,16 +227,18 @@
|
|
|
158
227
|
// For input validation, check if typed key is valid for mask
|
|
159
228
|
if (e.key.length === 1 && mask) {
|
|
160
229
|
// Check if key matches mask pattern (e.g., for "00000", only digits)
|
|
161
|
-
const tempMask =
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
e.
|
|
170
|
-
|
|
230
|
+
const tempMask = createMaskInstance(mask);
|
|
231
|
+
if (tempMask) {
|
|
232
|
+
const currentLength = (localValue || "").length;
|
|
233
|
+
// Get the expected pattern for this position
|
|
234
|
+
// For simplicity, if mask contains only digits or specific chars, check if key matches
|
|
235
|
+
const placeholder =
|
|
236
|
+
tempMask.blocks?.[0]?.placeholder ||
|
|
237
|
+
(tempMask.mask?.includes("0") ? "0" : null);
|
|
238
|
+
if (placeholder === "0" && !/\d/.test(e.key)) {
|
|
239
|
+
e.preventDefault();
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
171
242
|
}
|
|
172
243
|
}
|
|
173
244
|
},
|
|
@@ -180,6 +251,7 @@
|
|
|
180
251
|
$: error = cellOptions?.error;
|
|
181
252
|
$: icon = error ? "ph ph-warning" : cellOptions?.icon;
|
|
182
253
|
$: cellState.reset(value);
|
|
254
|
+
$: displayValue = inEdit ? localValue : applyMask(value);
|
|
183
255
|
|
|
184
256
|
const focus = (node) => {
|
|
185
257
|
node?.focus();
|
|
@@ -217,18 +289,41 @@
|
|
|
217
289
|
};
|
|
218
290
|
}
|
|
219
291
|
|
|
220
|
-
|
|
221
|
-
|
|
292
|
+
try {
|
|
293
|
+
// Try to create mask instance using MaskedPattern first
|
|
294
|
+
const maskInstance = createMaskInstance(maskPattern);
|
|
295
|
+
if (maskInstance) {
|
|
296
|
+
inputMask = new InputMask(node, { mask: maskPattern });
|
|
297
|
+
} else {
|
|
298
|
+
throw new Error("Failed to create mask instance");
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
inputMask.unmaskedValue = localValue || "";
|
|
222
302
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
303
|
+
inputMask.on("accept", () => {
|
|
304
|
+
localValue = inputMask.unmaskedValue;
|
|
305
|
+
updateIsComplete();
|
|
306
|
+
lastEdit = new Date();
|
|
307
|
+
});
|
|
228
308
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
309
|
+
inputMask.on("complete", () => {
|
|
310
|
+
isComplete = true;
|
|
311
|
+
});
|
|
312
|
+
} catch (e) {
|
|
313
|
+
console.error("Error initializing IMask:", e);
|
|
314
|
+
// Fallback to plain input without masking
|
|
315
|
+
const handleInput = (e) => {
|
|
316
|
+
localValue = node.value;
|
|
317
|
+
lastEdit = new Date();
|
|
318
|
+
};
|
|
319
|
+
node.addEventListener("input", handleInput);
|
|
320
|
+
node.value = localValue || "";
|
|
321
|
+
return {
|
|
322
|
+
destroy() {
|
|
323
|
+
node.removeEventListener("input", handleInput);
|
|
324
|
+
},
|
|
325
|
+
};
|
|
326
|
+
}
|
|
232
327
|
|
|
233
328
|
return {
|
|
234
329
|
destroy() {
|
|
@@ -268,7 +363,6 @@
|
|
|
268
363
|
bind:this={inputElement}
|
|
269
364
|
tabindex="0"
|
|
270
365
|
class="editor"
|
|
271
|
-
class:with-icon={cellOptions.icon}
|
|
272
366
|
{placeholder}
|
|
273
367
|
style:color={!isComplete
|
|
274
368
|
? "var(--spectrum-global-color-gray-700)"
|
|
@@ -296,13 +390,12 @@
|
|
|
296
390
|
<div
|
|
297
391
|
class="value"
|
|
298
392
|
tabindex={cellOptions.readonly || cellOptions.disabled ? "-1" : "0"}
|
|
299
|
-
class:with-icon={cellOptions.icon}
|
|
300
393
|
class:placeholder={!value}
|
|
301
394
|
style:justify-content={cellOptions.align}
|
|
302
395
|
on:focusin={cellState.focus}
|
|
303
396
|
>
|
|
304
397
|
<span>
|
|
305
|
-
{
|
|
398
|
+
{displayValue || placeholder}
|
|
306
399
|
</span>
|
|
307
400
|
</div>
|
|
308
401
|
{/if}
|
|
@@ -10,12 +10,11 @@
|
|
|
10
10
|
debounce: 250,
|
|
11
11
|
};
|
|
12
12
|
|
|
13
|
-
$: formattedValue =
|
|
14
|
-
cellOptions
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
: undefined;;
|
|
13
|
+
$: formattedValue = cellOptions?.template
|
|
14
|
+
? processStringSync(cellOptions.template, {
|
|
15
|
+
value,
|
|
16
|
+
})
|
|
17
|
+
: undefined;
|
|
19
18
|
|
|
20
19
|
$: placeholder =
|
|
21
20
|
cellOptions.readonly || cellOptions.disabled
|
|
@@ -39,12 +38,11 @@
|
|
|
39
38
|
style:font-weight={cellOptions.fontWeight}
|
|
40
39
|
>
|
|
41
40
|
{#if cellOptions.icon}
|
|
42
|
-
<i class={cellOptions.icon + " icon"}></i>
|
|
41
|
+
<i class={cellOptions.icon + " field-icon"}></i>
|
|
43
42
|
{/if}
|
|
44
43
|
|
|
45
44
|
<div
|
|
46
45
|
class="value"
|
|
47
|
-
class:with-icon={cellOptions.icon}
|
|
48
46
|
class:placeholder={!value}
|
|
49
47
|
style:justify-content={cellOptions.align}
|
|
50
48
|
>
|
|
@@ -28,6 +28,8 @@
|
|
|
28
28
|
const stbState = getContext("stbState");
|
|
29
29
|
const stbAPI = getContext("stbAPI");
|
|
30
30
|
|
|
31
|
+
const data = getContext("data");
|
|
32
|
+
|
|
31
33
|
// Cell Components Map
|
|
32
34
|
const cellComponents = {
|
|
33
35
|
string: CellString,
|
|
@@ -68,7 +70,6 @@
|
|
|
68
70
|
export let columnOptions;
|
|
69
71
|
export let sticky;
|
|
70
72
|
export let scrollPos;
|
|
71
|
-
export let stbData;
|
|
72
73
|
|
|
73
74
|
// Internal Variables
|
|
74
75
|
let id = Math.random() * 100;
|
|
@@ -106,9 +107,7 @@
|
|
|
106
107
|
})
|
|
107
108
|
: undefined;
|
|
108
109
|
|
|
109
|
-
$: values = $
|
|
110
|
-
deepGet(row, $columnOptionsStore.name)
|
|
111
|
-
);
|
|
110
|
+
$: values = $data.map((row) => deepGet(row, $columnOptionsStore.name));
|
|
112
111
|
|
|
113
112
|
$: if ($stbSortColumn == $columnOptionsStore.name) {
|
|
114
113
|
sorted = $stbSortOrder;
|
|
@@ -139,7 +138,7 @@
|
|
|
139
138
|
color: $columnOptionsStore.color,
|
|
140
139
|
controlType: "checkbox",
|
|
141
140
|
};
|
|
142
|
-
}
|
|
141
|
+
},
|
|
143
142
|
);
|
|
144
143
|
|
|
145
144
|
const headerCellOptions = derivedMemo(
|
|
@@ -160,7 +159,7 @@
|
|
|
160
159
|
initialState: "Editing",
|
|
161
160
|
role: "inlineInput",
|
|
162
161
|
};
|
|
163
|
-
}
|
|
162
|
+
},
|
|
164
163
|
);
|
|
165
164
|
|
|
166
165
|
// Allow the Super Table to bind to the Super Column State Machine to control it
|
|
@@ -177,7 +176,7 @@
|
|
|
177
176
|
if (columnOptions.canSort) {
|
|
178
177
|
stbState.sortBy(
|
|
179
178
|
columnOptions.name,
|
|
180
|
-
sorted == "ascending" ? "descending" : "ascending"
|
|
179
|
+
sorted == "ascending" ? "descending" : "ascending",
|
|
181
180
|
);
|
|
182
181
|
sorted = "ascending" ? "descending" : "ascending";
|
|
183
182
|
}
|
|
@@ -188,7 +187,7 @@
|
|
|
188
187
|
unlockWidth() {
|
|
189
188
|
if (resizing) return;
|
|
190
189
|
$lockWidth = 0;
|
|
191
|
-
if (!columnOptions.asComponent) this.lockWidth.debounce(
|
|
190
|
+
if (!columnOptions.asComponent) this.lockWidth.debounce(150);
|
|
192
191
|
},
|
|
193
192
|
startResizing(e) {
|
|
194
193
|
e.stopPropagation();
|
|
@@ -244,6 +243,7 @@
|
|
|
244
243
|
return "Idle";
|
|
245
244
|
},
|
|
246
245
|
clear() {
|
|
246
|
+
stbState.clearFilter(id);
|
|
247
247
|
return "Idle";
|
|
248
248
|
},
|
|
249
249
|
},
|
|
@@ -259,7 +259,7 @@
|
|
|
259
259
|
},
|
|
260
260
|
EditingCell: {
|
|
261
261
|
_enter() {
|
|
262
|
-
$lockWidth = viewport.clientWidth;
|
|
262
|
+
$lockWidth = Math.max(viewport.clientWidth, 160);
|
|
263
263
|
stbState.edit.debounce(30);
|
|
264
264
|
},
|
|
265
265
|
patchRow(index, id, rev, field, change) {
|
|
@@ -395,7 +395,7 @@
|
|
|
395
395
|
{/if}
|
|
396
396
|
|
|
397
397
|
<SuperColumnBody
|
|
398
|
-
rows={$
|
|
398
|
+
rows={$data}
|
|
399
399
|
rowHeight={$stbSettings.appearance.rowHeight}
|
|
400
400
|
field={$columnOptionsStore.name}
|
|
401
401
|
idField={$stbSettings.data.idColumn}
|
|
@@ -28,6 +28,10 @@
|
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
$: isEntering = $columnState == "Entering";
|
|
31
|
+
$: if ($columnState == "Idle") {
|
|
32
|
+
filterValue = null;
|
|
33
|
+
filterOperator = $columnOptions.defaultFilteringOperator;
|
|
34
|
+
}
|
|
31
35
|
|
|
32
36
|
const handleValueChange = (e) => {
|
|
33
37
|
if (e.detail != undefined && e.detail != null && e.detail != "") {
|
|
@@ -125,7 +129,6 @@
|
|
|
125
129
|
fieldSchema={$columnOptions.schema}
|
|
126
130
|
multi={filterOperator == "containsAny" || filterOperator == "oneOf"}
|
|
127
131
|
on:change={handleValueChange}
|
|
128
|
-
on:cancel={columnState.cancel}
|
|
129
132
|
on:focusout={handleBlur}
|
|
130
133
|
/>
|
|
131
134
|
{:else}
|
|
@@ -21,16 +21,18 @@
|
|
|
21
21
|
export let isLast;
|
|
22
22
|
export let disabled;
|
|
23
23
|
|
|
24
|
-
// the default height
|
|
25
|
-
|
|
26
|
-
let viewport;
|
|
27
24
|
let info;
|
|
28
25
|
|
|
29
|
-
|
|
26
|
+
// Get Row overrides from metadata or fallback to column settings
|
|
27
|
+
$: color = $rowMetadata[index]?.color;
|
|
28
|
+
$: height = $rowMetadata[index]?.height;
|
|
29
|
+
$: bgcolor = $rowMetadata[index]?.bgcolor;
|
|
30
|
+
|
|
30
31
|
$: id = row?.[idField] ?? index;
|
|
31
32
|
$: value = deepGet(row, field);
|
|
32
|
-
$:
|
|
33
|
-
$:
|
|
33
|
+
$: hovered = $stbHovered == index || $stbMenuID == index;
|
|
34
|
+
$: selected = $rowMetadata?.[index]?.selected ?? false;
|
|
35
|
+
$: disabled = $rowMetadata?.[index]?.disabled ?? false;
|
|
34
36
|
$: hasChildren = $columnSettings.hasChildren > 0;
|
|
35
37
|
|
|
36
38
|
const patchRow = async (change) => {
|
|
@@ -73,37 +75,39 @@
|
|
|
73
75
|
} else return obj[path] ?? undefined;
|
|
74
76
|
};
|
|
75
77
|
|
|
78
|
+
const onClick = () => {
|
|
79
|
+
if (disabled) return;
|
|
80
|
+
stbState.handleRowClick(index, field, deepGet(row, field), id);
|
|
81
|
+
};
|
|
76
82
|
onDestroy(() => {
|
|
77
83
|
if ($stbEditing == index) {
|
|
78
84
|
columnState.exitedit();
|
|
79
85
|
}
|
|
80
86
|
});
|
|
87
|
+
|
|
88
|
+
const onContextMenu = (e) => {
|
|
89
|
+
stbAPI.showContextMenu(index, e.__root);
|
|
90
|
+
};
|
|
81
91
|
</script>
|
|
82
92
|
|
|
83
93
|
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
84
94
|
<!-- svelte-ignore a11y-no-static-element-interactions -->
|
|
85
95
|
<!-- svelte-ignore a11y-no-noninteractive-tabindex -->
|
|
86
96
|
<div
|
|
87
|
-
bind:this={viewport}
|
|
88
97
|
class="super-row"
|
|
89
|
-
class:
|
|
90
|
-
class:
|
|
91
|
-
class:
|
|
92
|
-
class:
|
|
98
|
+
class:selected
|
|
99
|
+
class:hovered
|
|
100
|
+
class:isEditing
|
|
101
|
+
class:disabled
|
|
93
102
|
class:isLast
|
|
94
|
-
style:height
|
|
95
|
-
style:color
|
|
96
|
-
style:background-color={
|
|
103
|
+
style:height
|
|
104
|
+
style:color
|
|
105
|
+
style:background-color={bgcolor}
|
|
97
106
|
style:justify-content={$columnSettings.align}
|
|
98
107
|
on:mouseenter={() => ($stbHovered = index)}
|
|
99
108
|
on:mouseleave={() => ($stbHovered = undefined)}
|
|
100
|
-
on:click={
|
|
101
|
-
|
|
102
|
-
stbState.handleRowClick(index, field, deepGet(row, field), id);
|
|
103
|
-
}}
|
|
104
|
-
on:contextmenu|preventDefault={() => {
|
|
105
|
-
stbAPI.showContextMenu(index, viewport);
|
|
106
|
-
}}
|
|
109
|
+
on:click={onClick}
|
|
110
|
+
on:contextmenu|preventDefault={onContextMenu}
|
|
107
111
|
>
|
|
108
112
|
{#if !hasChildren}
|
|
109
113
|
<svelte:component
|
|
@@ -15,14 +15,14 @@
|
|
|
15
15
|
export let tabsIconsOnly;
|
|
16
16
|
export let list_icon;
|
|
17
17
|
export let list_title;
|
|
18
|
-
export let
|
|
18
|
+
export let tabsWidth = "200px";
|
|
19
19
|
|
|
20
20
|
export let quietTabs;
|
|
21
21
|
|
|
22
22
|
// Computed for repeated logic
|
|
23
23
|
$: isVertical = tabsPosition == "left" || theme === "list";
|
|
24
24
|
$: justify = direction === "row" ? hAlign : vAlign;
|
|
25
|
-
$: button = theme === "buttons"
|
|
25
|
+
$: button = theme === "buttons";
|
|
26
26
|
</script>
|
|
27
27
|
|
|
28
28
|
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
@@ -33,15 +33,14 @@
|
|
|
33
33
|
class:quietTabs
|
|
34
34
|
class:list={theme === "list"}
|
|
35
35
|
class:vertical={isVertical}
|
|
36
|
-
class:wide={theme === "wideButtons" && wide}
|
|
37
36
|
style:justify-content={justify}
|
|
37
|
+
style:width={isVertical ? tabsWidth || "200px" : "100%"}
|
|
38
38
|
>
|
|
39
39
|
<div
|
|
40
40
|
class="tabs"
|
|
41
41
|
class:vertical={isVertical}
|
|
42
42
|
class:buttons={button}
|
|
43
43
|
class:list={theme === "list"}
|
|
44
|
-
class:wide={theme === "wideButtons" && wide}
|
|
45
44
|
style:justify-content={buttonsAlignment}
|
|
46
45
|
style:--tab-alignment={tabsAlignment}
|
|
47
46
|
style:--tab-track-thickness="1px"
|
|
@@ -74,7 +73,7 @@
|
|
|
74
73
|
{#if container.icon}
|
|
75
74
|
<i
|
|
76
75
|
class={container.icon}
|
|
77
|
-
style:font-size={tabsIconsOnly ? "20px" :
|
|
76
|
+
style:font-size={tabsIconsOnly ? "20px" : "inherit"}
|
|
78
77
|
style:color={container.color}
|
|
79
78
|
></i>
|
|
80
79
|
{/if}
|
|
@@ -104,30 +103,24 @@
|
|
|
104
103
|
}
|
|
105
104
|
|
|
106
105
|
.outer-tabs.vertical {
|
|
106
|
+
padding-left: 0.25rem;
|
|
107
|
+
padding-right: 0.25rem;
|
|
107
108
|
flex-direction: column;
|
|
108
109
|
align-items: stretch;
|
|
109
|
-
margin-right: 0.75rem;
|
|
110
110
|
margin-bottom: unset;
|
|
111
|
-
width: 10rem;
|
|
112
|
-
background-color: var(--spectrum-global-color-gray-100);
|
|
113
111
|
--selected-tab: var(--spectrum-global-color-gray-200);
|
|
114
112
|
}
|
|
115
113
|
|
|
116
|
-
.outer-tabs.vertical.wide {
|
|
117
|
-
width: 14rem;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
114
|
.tabs {
|
|
121
115
|
flex: auto;
|
|
122
116
|
display: flex;
|
|
123
117
|
gap: 1rem;
|
|
124
|
-
padding: 0.
|
|
125
|
-
border-bottom: 1px solid var(--spectrum-global-color-gray-
|
|
126
|
-
border-top: 1px solid var(--spectrum-global-color-gray-200);
|
|
118
|
+
padding-bottom: 0.25rem;
|
|
119
|
+
border-bottom: 1px solid var(--spectrum-global-color-gray-300);
|
|
127
120
|
}
|
|
128
121
|
|
|
129
122
|
.tabs.buttons {
|
|
130
|
-
gap: 0.
|
|
123
|
+
gap: 0.25rem;
|
|
131
124
|
}
|
|
132
125
|
|
|
133
126
|
.tabs.list {
|
|
@@ -170,21 +163,31 @@
|
|
|
170
163
|
}
|
|
171
164
|
|
|
172
165
|
.tab.button {
|
|
173
|
-
border-radius:
|
|
174
|
-
padding: 0.
|
|
166
|
+
border-radius: 0.25rem;
|
|
167
|
+
padding: 0.5rem 1rem;
|
|
168
|
+
font-weight: 600;
|
|
169
|
+
line-height: 14px;
|
|
170
|
+
border: 1px solid transparent;
|
|
171
|
+
height: 1.85rem;
|
|
175
172
|
}
|
|
176
173
|
|
|
177
174
|
.tab.button.vertical {
|
|
178
175
|
width: 100%;
|
|
176
|
+
padding: 0.5rem 0.75rem;
|
|
179
177
|
}
|
|
180
178
|
|
|
181
179
|
.tab.button:active:not(.disabled):not(.list-section) {
|
|
182
|
-
background-color:
|
|
180
|
+
background-color: rgb(
|
|
181
|
+
from var(--spectrum-global-color-gray-200) r g b / 0.85
|
|
182
|
+
);
|
|
183
183
|
}
|
|
184
184
|
|
|
185
185
|
.tab.button.selected {
|
|
186
|
-
color: var(--spectrum-global-color-gray-
|
|
187
|
-
|
|
186
|
+
color: var(--spectrum-global-color-gray-700);
|
|
187
|
+
border: 1px solid var(--spectrum-global-color-gray-300);
|
|
188
|
+
background-color: rgb(
|
|
189
|
+
from var(--spectrum-global-color-gray-200) r g b / 0.85
|
|
190
|
+
);
|
|
188
191
|
}
|
|
189
192
|
|
|
190
193
|
.tab.list {
|
|
@@ -234,11 +237,13 @@
|
|
|
234
237
|
|
|
235
238
|
.tab:hover:not(.disabled):not(.list-title):not(.list-section) {
|
|
236
239
|
cursor: pointer;
|
|
237
|
-
color: var(--spectrum-global-color-gray-800);
|
|
238
240
|
}
|
|
239
241
|
|
|
240
242
|
.tab.button:hover:not(.selected) {
|
|
241
|
-
background-color:
|
|
243
|
+
background-color: rgb(
|
|
244
|
+
from var(--spectrum-global-color-gray-200) r g b / 0.65
|
|
245
|
+
);
|
|
246
|
+
border-color: var(--spectrum-global-color-gray-200);
|
|
242
247
|
}
|
|
243
248
|
|
|
244
249
|
.tab.selected {
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
function autoSetup() {}
|
|
3
|
-
</script>
|
|
4
|
-
|
|
5
|
-
<div class="welcome">
|
|
6
|
-
<div class="welcome-icon">
|
|
7
|
-
<svg
|
|
8
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
9
|
-
width="64"
|
|
10
|
-
height="64"
|
|
11
|
-
viewBox="0 0 18 18"
|
|
12
|
-
>
|
|
13
|
-
<defs>
|
|
14
|
-
<style>
|
|
15
|
-
.fill {
|
|
16
|
-
fill: #1da1f2;
|
|
17
|
-
}
|
|
18
|
-
</style>
|
|
19
|
-
</defs>
|
|
20
|
-
<title>S Table 18 N</title>
|
|
21
|
-
<rect
|
|
22
|
-
id="Canvas"
|
|
23
|
-
fill="#ff13dc"
|
|
24
|
-
opacity="0"
|
|
25
|
-
width="18"
|
|
26
|
-
height="18"
|
|
27
|
-
/><path
|
|
28
|
-
class="fill"
|
|
29
|
-
d="M16.5,1H1.5a.5.5,0,0,0-.5.5v15a.5.5,0,0,0,.5.5h15a.5.5,0,0,0,.5-.5V1.5A.5.5,0,0,0,16.5,1ZM6,16H2V14H6Zm0-3H2V11H6Zm0-3H2V8H6Zm10,6H7V14h9Zm0-3H7V11h9Zm0-3H7V8h9Zm0-3H2V2H16Z"
|
|
30
|
-
></p>
|
|
31
|
-
</svg>
|
|
32
|
-
</div>
|
|
33
|
-
|
|
34
|
-
<div class="welcome-text">
|
|
35
|
-
<h2>Welcome to the Super Table Component</h2>
|
|
36
|
-
<p>You need to connect your Super Table to a Data Provider</p>
|
|
37
|
-
<p>and select the <strong>Unique ID Column</strong></p>
|
|
38
|
-
<p>Then add some Super Columns to start designing you table</p>
|
|
39
|
-
</div>
|
|
40
|
-
</div>
|
|
41
|
-
|
|
42
|
-
<style>
|
|
43
|
-
h2 {
|
|
44
|
-
padding-top: none;
|
|
45
|
-
margin-top: unset;
|
|
46
|
-
}
|
|
47
|
-
.welcome {
|
|
48
|
-
display: flex;
|
|
49
|
-
flex-direction: row;
|
|
50
|
-
justify-content: flex-start;
|
|
51
|
-
align-content: middle;
|
|
52
|
-
gap: 20px;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
.welcome-text,
|
|
56
|
-
.welcome-icon {
|
|
57
|
-
}
|
|
58
|
-
</style>
|