@poirazis/supercomponents-shared 1.2.16 → 1.2.19
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 +17785 -22317
- package/dist/index.umd.cjs +19 -19
- package/package.json +13 -13
- package/src/index.js +1 -0
- package/src/index.ts +1 -0
- package/src/lib/SuperButton/SuperButton.svelte +90 -43
- package/src/lib/SuperField/SuperField.svelte +2 -3
- package/src/lib/SuperForm/InnerForm.svelte +7 -8
- package/src/lib/SuperTable/SuperTable.css +13 -6
- package/src/lib/SuperTable/SuperTable.svelte +53 -38
- package/src/lib/SuperTable/constants.js +1 -1
- package/src/lib/SuperTable/controls/RowButtonsColumn.svelte +34 -18
- package/src/lib/SuperTable/controls/SelectionColumn.svelte +6 -5
- package/src/lib/SuperTableCells/CellBoolean.svelte +52 -45
- package/src/lib/SuperTableCells/CellCommon.css +0 -5
- package/src/lib/SuperTableCells/CellDatetime.svelte +268 -120
- package/src/lib/SuperTableCells/CellLink.svelte +16 -7
- package/src/lib/SuperTableCells/CellLinkPickerSelect.svelte +28 -24
- package/src/lib/SuperTableCells/CellLinkPickerTree.svelte +22 -20
- package/src/lib/SuperTableCells/CellNumber.svelte +55 -53
- package/src/lib/SuperTableCells/CellOptions.svelte +60 -33
- package/src/lib/SuperTableCells/CellOptionsAdvanced.svelte +131 -129
- package/src/lib/SuperTableCells/CellSQLLink.svelte +35 -33
- package/src/lib/SuperTableCells/CellSQLLinkPicker.svelte +4 -7
- package/src/lib/SuperTableCells/CellString.svelte +49 -47
- package/src/lib/SuperTableCells/CellStringMask.svelte +41 -40
- package/src/lib/SuperTableColumn/SuperTableColumn.svelte +2 -0
- package/src/lib/SuperTableColumn/parts/SuperColumnBody.svelte +1 -0
- package/src/lib/SuperTableColumn/parts/SuperColumnHeader.svelte +44 -42
- package/src/lib/SuperTableColumn/parts/SuperColumnRow.svelte +1 -1
- package/src/lib/SuperTabs/SuperTabs.svelte +33 -17
- package/src/lib/UI/elements/Checkbox.svelte +69 -11
- package/src/lib/UI/elements/Switch.svelte +162 -0
- package/src/lib/UI/elements/Textbox.svelte +210 -0
- package/src/lib/UI/elements/Tooltip.svelte +15 -43
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
|
|
6
6
|
const stbSettings = getContext("stbSettings");
|
|
7
7
|
const stbState = getContext("stbState");
|
|
8
|
-
const stbData = getContext("stbData");
|
|
9
8
|
const stbHorizontalScrollPos = getContext("stbHorizontalScrollPos");
|
|
10
9
|
const stbHovered = getContext("stbHovered");
|
|
11
10
|
const stbEditing = getContext("stbEditing");
|
|
@@ -16,6 +15,8 @@
|
|
|
16
15
|
|
|
17
16
|
const stbAPI = getContext("stbAPI");
|
|
18
17
|
|
|
18
|
+
const allContext = getContext("context");
|
|
19
|
+
|
|
19
20
|
export let right;
|
|
20
21
|
export let rowMenu;
|
|
21
22
|
export let rowMenuItems;
|
|
@@ -57,6 +58,12 @@
|
|
|
57
58
|
<div
|
|
58
59
|
class="super-column-body"
|
|
59
60
|
style:margin-top={"var(--super-column-top-offset)"}
|
|
61
|
+
style:border-right={right
|
|
62
|
+
? null
|
|
63
|
+
: "1px solid var(--super-table-devider-color, --spectrum-global-color-gray-200)"}
|
|
64
|
+
style:border-left={right
|
|
65
|
+
? "1px solid var(--super-table-devider-color, --spectrum-global-color-gray-200)"
|
|
66
|
+
: null}
|
|
60
67
|
class:quiet
|
|
61
68
|
class:sticky
|
|
62
69
|
class:zebra={$stbSettings.appearance.zebraColors}
|
|
@@ -70,13 +77,13 @@
|
|
|
70
77
|
class:hovered={$stbHovered == visibleRow || $stbMenuID == visibleRow}
|
|
71
78
|
class:is-editing={$stbEditing == visibleRow}
|
|
72
79
|
class:disabled={$rowMetadata[visibleRow].disabled}
|
|
73
|
-
style:
|
|
80
|
+
style:height={$rowMetadata[visibleRow].height + "px"}
|
|
74
81
|
style:padding-right={canScroll && right ? "1.5rem" : "0.5rem"}
|
|
75
82
|
>
|
|
76
83
|
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
77
84
|
<div
|
|
78
85
|
class="row-buttons"
|
|
79
|
-
style:gap={inlineButtons.length > 1 ? "0.
|
|
86
|
+
style:gap={inlineButtons.length > 1 ? "0.25rem" : "0rem"}
|
|
80
87
|
>
|
|
81
88
|
{#if rowMenu && inlineButtons?.length}
|
|
82
89
|
{#each inlineButtons as { conditions, disabledTemplate, onClick, disabled, ...rest }}
|
|
@@ -89,6 +96,7 @@
|
|
|
89
96
|
stbAPI.shouldDisableButton(
|
|
90
97
|
disabledTemplate,
|
|
91
98
|
stbAPI.enrichContext($data[visibleRow]),
|
|
99
|
+
$allContext,
|
|
92
100
|
)}
|
|
93
101
|
onClick={() => {
|
|
94
102
|
stbAPI.executeRowButtonAction(visibleRow, onClick);
|
|
@@ -99,7 +107,7 @@
|
|
|
99
107
|
{/if}
|
|
100
108
|
{#if rowMenu && menuItems?.length}
|
|
101
109
|
<SuperButton
|
|
102
|
-
size="
|
|
110
|
+
size="XS"
|
|
103
111
|
icon={menuIcon}
|
|
104
112
|
text=""
|
|
105
113
|
quiet="true"
|
|
@@ -134,20 +142,28 @@
|
|
|
134
142
|
{#if menuItems?.length}
|
|
135
143
|
<!-- svelte-ignore a11y-no-static-element-interactions -->
|
|
136
144
|
<div class="action-menu">
|
|
137
|
-
{#each menuItems as { text, icon, disabled, onClick, size }}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
145
|
+
{#each menuItems as { text, icon, disabled, onClick, size, conditions, disabledTemplate }}
|
|
146
|
+
{#if stbAPI.shouldShowButton(conditions || [], stbAPI.enrichContext($data[$stbMenuID]))}
|
|
147
|
+
<SuperButton
|
|
148
|
+
{size}
|
|
149
|
+
{icon}
|
|
150
|
+
{text}
|
|
151
|
+
disabled={disabled ||
|
|
152
|
+
$stbEditing == $stbMenuID ||
|
|
153
|
+
$rowMetadata[$stbMenuID].disabled ||
|
|
154
|
+
stbAPI.shouldDisableButton(
|
|
155
|
+
disabledTemplate,
|
|
156
|
+
stbAPI.enrichContext($data[$stbMenuID]),
|
|
157
|
+
)}
|
|
158
|
+
menuItem
|
|
159
|
+
menuAlign={right ? "right" : "left"}
|
|
160
|
+
onClick={() => {
|
|
161
|
+
stbAPI.executeRowButtonAction($stbMenuID, onClick);
|
|
162
|
+
openMenu = false;
|
|
163
|
+
$stbMenuID = undefined;
|
|
164
|
+
}}
|
|
165
|
+
/>
|
|
166
|
+
{/if}
|
|
151
167
|
{/each}
|
|
152
168
|
</div>
|
|
153
169
|
{/if}
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
class:quiet
|
|
74
74
|
class:sticky
|
|
75
75
|
style:margin-top={"var(--super-column-top-offset)"}
|
|
76
|
-
style:border-right={"1px solid var(--spectrum-global-color-gray-200)"}
|
|
76
|
+
style:border-right={"1px solid var(--super-table-devider-color, --spectrum-global-color-gray-200)"}
|
|
77
77
|
>
|
|
78
78
|
{#each $stbVisibleRows as visibleRow (visibleRow)}
|
|
79
79
|
{@const selected = $stbRowMetadata[visibleRow]?.selected}
|
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
{#if $stbSettings.features.canSelect && !hideSelectionColumn}
|
|
96
96
|
<Checkbox
|
|
97
97
|
checked={selected}
|
|
98
|
-
|
|
98
|
+
locked={$stbRowMetadata[visibleRow]?.disabled}
|
|
99
99
|
hovered={$stbHovered == visibleRow}
|
|
100
100
|
on:change={() => stbAPI.selectRow(visibleRow)}
|
|
101
101
|
/>
|
|
@@ -128,11 +128,12 @@
|
|
|
128
128
|
<style>
|
|
129
129
|
.selection {
|
|
130
130
|
flex: auto;
|
|
131
|
-
padding-left: 0.
|
|
132
|
-
padding-right: 0.
|
|
133
|
-
gap:
|
|
131
|
+
padding-left: 0.5rem;
|
|
132
|
+
padding-right: 0.5rem;
|
|
133
|
+
gap: 0.5rem;
|
|
134
134
|
font-size: 13px;
|
|
135
135
|
font-weight: 500;
|
|
136
136
|
align-items: center;
|
|
137
|
+
justify-content: center;
|
|
137
138
|
}
|
|
138
139
|
</style>
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
<script>
|
|
2
|
-
import { createEventDispatcher
|
|
2
|
+
import { createEventDispatcher } from "svelte";
|
|
3
3
|
import fsm from "svelte-fsm";
|
|
4
|
+
import Switch from "../UI/elements/Switch.svelte";
|
|
5
|
+
import Checkbox from "../UI/elements/Checkbox.svelte";
|
|
4
6
|
import "./CellCommon.css";
|
|
5
7
|
|
|
6
8
|
export let value;
|
|
@@ -21,20 +23,20 @@
|
|
|
21
23
|
View: {
|
|
22
24
|
focus() {
|
|
23
25
|
if (!cellOptions.readonly && !cellOptions.disabled) return "Editing";
|
|
24
|
-
editor?.focus();
|
|
25
26
|
},
|
|
26
27
|
},
|
|
27
28
|
Editing: {
|
|
28
29
|
_enter() {
|
|
29
30
|
originalValue = value;
|
|
30
|
-
editor?.focus();
|
|
31
31
|
dispatch("enteredit");
|
|
32
32
|
},
|
|
33
33
|
_exit() {
|
|
34
34
|
dispatch("exitedit");
|
|
35
35
|
},
|
|
36
|
-
focus() {
|
|
37
|
-
|
|
36
|
+
focus() {},
|
|
37
|
+
toggle() {
|
|
38
|
+
value = !value;
|
|
39
|
+
dispatch("change", value);
|
|
38
40
|
},
|
|
39
41
|
change(e) {
|
|
40
42
|
if (cellOptions.debounce) dispatch("change", value);
|
|
@@ -56,15 +58,10 @@
|
|
|
56
58
|
$: inline = cellOptions.role == "inlineInput";
|
|
57
59
|
$: inEdit = $cellState == "Editing";
|
|
58
60
|
$: isDirty = inEdit && originalValue !== value;
|
|
59
|
-
$: checkbox = cellOptions?.controlType == "checkbox";
|
|
60
61
|
$: tableCell = cellOptions.role == "tableCell";
|
|
61
62
|
$: inlineLabel = cellOptions.inlineLabel;
|
|
62
63
|
$: icon = cellOptions.error ? "ri-error-warning-line" : cellOptions.icon;
|
|
63
64
|
$: error = cellOptions.error;
|
|
64
|
-
|
|
65
|
-
const focus = (node) => {
|
|
66
|
-
if (cellOptions.role == "tableCell") node.focus();
|
|
67
|
-
};
|
|
68
65
|
</script>
|
|
69
66
|
|
|
70
67
|
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
@@ -72,6 +69,7 @@
|
|
|
72
69
|
<!-- svelte-ignore a11y-no-static-element-interactions -->
|
|
73
70
|
<div
|
|
74
71
|
class="superCell"
|
|
72
|
+
tabindex={cellOptions.disabled || cellOptions.readonly ? undefined : "1"}
|
|
75
73
|
class:inEdit
|
|
76
74
|
class:isDirty={isDirty && cellOptions.showDirty}
|
|
77
75
|
class:inline
|
|
@@ -84,6 +82,11 @@
|
|
|
84
82
|
? "var(--spectrum-global-color-gray-50)"
|
|
85
83
|
: cellOptions.background}
|
|
86
84
|
style:font-weight={cellOptions.fontWeight}
|
|
85
|
+
on:keydown={(e) => {
|
|
86
|
+
if (e.code == "Space") cellState.toggle();
|
|
87
|
+
}}
|
|
88
|
+
on:focusin={cellState.focus}
|
|
89
|
+
on:focusout={cellState.submit}
|
|
87
90
|
>
|
|
88
91
|
{#if icon}
|
|
89
92
|
<i class={icon + " field-icon"} class:with-error={error}></i>
|
|
@@ -95,48 +98,40 @@
|
|
|
95
98
|
class:naked-field={!tableCell}
|
|
96
99
|
style:justify-content={cellOptions.align ?? "center"}
|
|
97
100
|
>
|
|
98
|
-
{#if
|
|
99
|
-
<div class="
|
|
100
|
-
<
|
|
101
|
-
|
|
102
|
-
bind:checked={value}
|
|
103
|
-
bind:this={editor}
|
|
104
|
-
type="checkbox"
|
|
101
|
+
{#if cellOptions.controlType == "switch"}
|
|
102
|
+
<div class="switch-wrapper">
|
|
103
|
+
<Switch
|
|
104
|
+
checked={value}
|
|
105
105
|
disabled={cellOptions.disabled || cellOptions.readonly}
|
|
106
|
-
|
|
107
|
-
on:
|
|
108
|
-
|
|
109
|
-
|
|
106
|
+
size="medium"
|
|
107
|
+
on:change={(e) => {
|
|
108
|
+
value = e.detail.checked;
|
|
109
|
+
cellState.change();
|
|
110
|
+
}}
|
|
110
111
|
/>
|
|
111
|
-
<span class="spectrum-Switch-switch"></span>
|
|
112
112
|
{#if inlineLabel}
|
|
113
|
-
<span class="
|
|
113
|
+
<span class="switch-label">{inlineLabel}</span>
|
|
114
114
|
{/if}
|
|
115
115
|
</div>
|
|
116
116
|
{:else}
|
|
117
|
-
<
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
117
|
+
<div class="checkbox-wrapper">
|
|
118
|
+
<Checkbox
|
|
119
|
+
checked={value}
|
|
120
|
+
size="medium"
|
|
121
|
+
disabled={cellOptions.disabled || cellOptions.readonly}
|
|
122
|
+
on:change={(e) => {
|
|
123
|
+
value = e.detail.checked;
|
|
124
|
+
cellState.change();
|
|
125
|
+
}}
|
|
126
|
+
/>
|
|
127
|
+
{#if inlineLabel}
|
|
128
|
+
<span class="checkbox-label">{inlineLabel}</span>
|
|
129
|
+
{/if}
|
|
130
|
+
</div>
|
|
131
131
|
{/if}
|
|
132
132
|
</div>
|
|
133
133
|
{:else}
|
|
134
|
-
<div
|
|
135
|
-
class="value"
|
|
136
|
-
tabIndex="0"
|
|
137
|
-
style:justify-content={cellOptions.align ?? "center"}
|
|
138
|
-
on:focusin={cellState.focus}
|
|
139
|
-
>
|
|
134
|
+
<div class="value" style:justify-content={cellOptions.align ?? "center"}>
|
|
140
135
|
{#if value}
|
|
141
136
|
<i class="ri-check-line valueicon"></i>
|
|
142
137
|
{:else if cellOptions.showFalse}
|
|
@@ -147,8 +142,20 @@
|
|
|
147
142
|
</div>
|
|
148
143
|
|
|
149
144
|
<style>
|
|
150
|
-
.
|
|
151
|
-
|
|
145
|
+
.switch-wrapper {
|
|
146
|
+
display: flex;
|
|
147
|
+
align-items: center;
|
|
148
|
+
gap: 0.5rem;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
.checkbox-wrapper {
|
|
152
|
+
display: flex;
|
|
153
|
+
align-items: center;
|
|
154
|
+
gap: 0.5rem;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
.switch-label {
|
|
158
|
+
margin-left: 0.25rem;
|
|
152
159
|
}
|
|
153
160
|
|
|
154
161
|
.checkbox-label {
|
|
@@ -362,11 +362,6 @@
|
|
|
362
362
|
.superCell.formInput.has-popup {
|
|
363
363
|
background-color: var(--spectrum-global-color-gray-50);
|
|
364
364
|
|
|
365
|
-
&:hover:not(.disabled):not(.readonly):not(.inEdit) {
|
|
366
|
-
border-color: var(--spectrum-global-color-gray-100) !important;
|
|
367
|
-
cursor: pointer;
|
|
368
|
-
}
|
|
369
|
-
|
|
370
365
|
&.inEdit {
|
|
371
366
|
border: 1px solid var(--spectrum-global-color-gray-200) !important;
|
|
372
367
|
background-color: var(--spectrum-global-color-gray-200) !important;
|