@geoffcox/sterling-svelte 0.0.25 → 0.0.27
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/Button.svelte +79 -24
- package/Button.svelte.d.ts +1 -0
- package/Checkbox.svelte +44 -19
- package/Checkbox.svelte.d.ts +1 -0
- package/ColorPicker.constants.d.ts +1 -0
- package/ColorPicker.constants.js +1 -0
- package/ColorPicker.svelte +226 -0
- package/ColorPicker.svelte.d.ts +22 -0
- package/ColorPicker.types.d.ts +4 -0
- package/ColorPicker.types.js +1 -0
- package/Dialog.svelte +10 -10
- package/Dropdown.svelte +88 -47
- package/Dropdown.svelte.d.ts +4 -0
- package/Field.svelte +34 -46
- package/HexColorSliders.svelte +150 -0
- package/HexColorSliders.svelte.d.ts +22 -0
- package/HslColorSliders.svelte +187 -0
- package/HslColorSliders.svelte.d.ts +22 -0
- package/Input.svelte +49 -21
- package/Input.svelte.d.ts +2 -1
- package/Label.svelte +3 -3
- package/Link.svelte +63 -17
- package/Link.svelte.d.ts +1 -0
- package/List.svelte +31 -30
- package/List.svelte.d.ts +1 -0
- package/List.types.d.ts +4 -3
- package/ListItem.svelte +29 -10
- package/ListItem.svelte.d.ts +1 -1
- package/Menu.svelte +92 -121
- package/Menu.svelte.d.ts +8 -2
- package/MenuBar.svelte +77 -32
- package/MenuBar.types.d.ts +2 -2
- package/MenuButton.svelte +48 -28
- package/MenuItem.constants.d.ts +1 -0
- package/MenuItem.constants.js +1 -0
- package/MenuItem.svelte +202 -139
- package/MenuItem.svelte.d.ts +7 -3
- package/MenuItem.types.d.ts +14 -5
- package/MenuItem.utils.d.ts +2 -0
- package/MenuItem.utils.js +16 -0
- package/MenuItemDisplay.svelte +9 -2
- package/MenuItemDisplay.svelte.d.ts +1 -0
- package/MenuSeparator.svelte +3 -3
- package/Popover.svelte +68 -64
- package/Popover.svelte.d.ts +4 -2
- package/Progress.svelte +14 -14
- package/Radio.svelte +42 -16
- package/Radio.svelte.d.ts +1 -0
- package/RgbColorSliders.svelte +161 -0
- package/RgbColorSliders.svelte.d.ts +22 -0
- package/Select.svelte +50 -32
- package/Slider.svelte +108 -118
- package/Slider.svelte.d.ts +1 -0
- package/Switch.svelte +97 -34
- package/Switch.svelte.d.ts +1 -0
- package/Tab.svelte +53 -30
- package/TabList.svelte +23 -28
- package/TabList.svelte.d.ts +1 -0
- package/TabList.types.d.ts +1 -1
- package/TextArea.svelte +45 -20
- package/TextArea.svelte.d.ts +3 -2
- package/Tooltip.svelte +12 -11
- package/Tree.svelte +37 -35
- package/Tree.svelte.d.ts +2 -0
- package/Tree.types.d.ts +1 -0
- package/TreeChevron.svelte +1 -1
- package/TreeItem.svelte +47 -10
- package/TreeItem.svelte.d.ts +2 -0
- package/TreeItemDisplay.svelte +26 -8
- package/TreeItemDisplay.svelte.d.ts +2 -0
- package/actions/clickOutside.js +1 -1
- package/actions/trapKeyboardFocus.d.ts +3 -0
- package/actions/trapKeyboardFocus.js +52 -0
- package/floating-ui.types.d.ts +2 -0
- package/index.d.ts +10 -5
- package/index.js +8 -3
- package/package.json +12 -1
- package/stores/prefersReducedMotion.d.ts +1 -0
- package/stores/prefersReducedMotion.js +10 -0
- package/stores/usingKeyboard.d.ts +1 -0
- package/stores/usingKeyboard.js +13 -0
- package/theme/applyTheme.js +3 -2
- package/theme/colors.d.ts +1 -0
- package/theme/colors.js +28 -13
- package/theme/darkTheme.js +130 -87
- package/theme/lightTheme.js +107 -87
package/Tab.svelte
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
<script>import { getContext } from "svelte";
|
|
2
2
|
import { TAB_LIST_CONTEXT_KEY } from "./TabList.constants";
|
|
3
|
+
import { usingKeyboard } from "./stores/usingKeyboard";
|
|
3
4
|
export let disabled = false;
|
|
4
5
|
export let selected = false;
|
|
5
6
|
export let text = void 0;
|
|
6
7
|
export let value;
|
|
7
8
|
let tabRef;
|
|
8
9
|
const {
|
|
10
|
+
colorful,
|
|
9
11
|
disabled: tabListDisabled,
|
|
10
12
|
selectedValue,
|
|
11
|
-
usingKeyboard,
|
|
12
13
|
vertical
|
|
13
14
|
} = getContext(TAB_LIST_CONTEXT_KEY);
|
|
14
15
|
$:
|
|
@@ -36,6 +37,7 @@ export const focus = (options) => {
|
|
|
36
37
|
bind:this={tabRef}
|
|
37
38
|
aria-selected={selected}
|
|
38
39
|
class="sterling-tab"
|
|
40
|
+
class:colorful={$colorful}
|
|
39
41
|
disabled={_disabled}
|
|
40
42
|
class:selected
|
|
41
43
|
class:using-keyboard={$usingKeyboard}
|
|
@@ -74,7 +76,7 @@ export const focus = (options) => {
|
|
|
74
76
|
on:pointerover
|
|
75
77
|
on:pointerout
|
|
76
78
|
on:pointerup
|
|
77
|
-
on:wheel
|
|
79
|
+
on:wheel|passive
|
|
78
80
|
>
|
|
79
81
|
<div class="content">
|
|
80
82
|
<slot disabled={_disabled} {selected} {value} {text}>
|
|
@@ -90,13 +92,13 @@ export const focus = (options) => {
|
|
|
90
92
|
.sterling-tab {
|
|
91
93
|
align-content: center;
|
|
92
94
|
align-items: center;
|
|
93
|
-
background-color: var(--stsv-
|
|
95
|
+
background-color: var(--stsv-common__background-color);
|
|
94
96
|
border-color: transparent;
|
|
95
|
-
border-radius: var(--stsv-
|
|
96
|
-
border-style: var(--stsv-
|
|
97
|
+
border-radius: var(--stsv-button__border-radius);
|
|
98
|
+
border-style: var(--stsv-common__border-style);
|
|
97
99
|
border-width: 0;
|
|
98
100
|
box-sizing: border-box;
|
|
99
|
-
color: var(--stsv-
|
|
101
|
+
color: var(--stsv-common__color);
|
|
100
102
|
cursor: pointer;
|
|
101
103
|
display: grid;
|
|
102
104
|
font: inherit;
|
|
@@ -127,30 +129,28 @@ export const focus = (options) => {
|
|
|
127
129
|
column-gap: 0.15em;
|
|
128
130
|
}
|
|
129
131
|
|
|
130
|
-
.sterling-tab:hover {
|
|
131
|
-
background-color: var(--stsv-Common__background-color--hover);
|
|
132
|
-
color: var(--stsv-Common__color--hover);
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
.sterling-tab:active {
|
|
136
|
-
background-color: var(--stsv-Common__background-color--active);
|
|
137
|
-
color: var(--stsv-Common__color--active);
|
|
138
|
-
}
|
|
139
|
-
|
|
140
132
|
.sterling-tab.using-keyboard:focus-visible {
|
|
141
|
-
outline-color: var(--stsv-
|
|
142
|
-
outline-offset: var(--stsv-
|
|
143
|
-
outline-style: var(--stsv-
|
|
144
|
-
outline-width: var(--stsv-
|
|
133
|
+
outline-color: var(--stsv-common__outline-color);
|
|
134
|
+
outline-offset: var(--stsv-common__outline-offset);
|
|
135
|
+
outline-style: var(--stsv-common__outline-style);
|
|
136
|
+
outline-width: var(--stsv-common__outline-width);
|
|
145
137
|
}
|
|
146
138
|
|
|
139
|
+
/* ----- disabled -----*/
|
|
140
|
+
|
|
147
141
|
.sterling-tab:disabled {
|
|
148
142
|
cursor: not-allowed;
|
|
149
143
|
outline: none;
|
|
150
144
|
}
|
|
151
145
|
|
|
152
146
|
.sterling-tab::after {
|
|
153
|
-
background:
|
|
147
|
+
background: repeating-linear-gradient(
|
|
148
|
+
45deg,
|
|
149
|
+
var(--stsv-common__background-color1--disabled),
|
|
150
|
+
var(--stsv-common__background-color1--disabled) 3px,
|
|
151
|
+
var(--stsv-common__background-color2--disabled) 3px,
|
|
152
|
+
var(--stsv-common__background-color2--disabled) 6px
|
|
153
|
+
);
|
|
154
154
|
bottom: 0;
|
|
155
155
|
content: '';
|
|
156
156
|
left: 0;
|
|
@@ -166,6 +166,8 @@ export const focus = (options) => {
|
|
|
166
166
|
opacity: 1;
|
|
167
167
|
}
|
|
168
168
|
|
|
169
|
+
/* ----- content -----*/
|
|
170
|
+
|
|
169
171
|
.content {
|
|
170
172
|
padding: 0 0.2em;
|
|
171
173
|
}
|
|
@@ -174,6 +176,8 @@ export const focus = (options) => {
|
|
|
174
176
|
padding-top: 0.25em;
|
|
175
177
|
}
|
|
176
178
|
|
|
179
|
+
/* ----- indicator -----*/
|
|
180
|
+
|
|
177
181
|
.indicator {
|
|
178
182
|
background-color: transparent;
|
|
179
183
|
border-radius: 10000px;
|
|
@@ -190,24 +194,43 @@ export const focus = (options) => {
|
|
|
190
194
|
width: 0.4em;
|
|
191
195
|
}
|
|
192
196
|
|
|
193
|
-
.sterling-tab:hover .indicator {
|
|
194
|
-
background-color: var(--stsv-
|
|
197
|
+
.sterling-tab:not(.selected):not(:active):hover .indicator {
|
|
198
|
+
background-color: var(--stsv-input__border-color--hover);
|
|
199
|
+
opacity: 0.3;
|
|
195
200
|
}
|
|
196
201
|
|
|
197
202
|
.sterling-tab:active .indicator {
|
|
198
|
-
background-color: var(--stsv-
|
|
203
|
+
background-color: var(--stsv-input__border-color--selected);
|
|
199
204
|
}
|
|
200
205
|
|
|
201
|
-
.sterling-tab
|
|
202
|
-
|
|
203
|
-
.sterling-tab:disabled:active .indicator {
|
|
204
|
-
background-color: transparent;
|
|
206
|
+
.sterling-tab.selected .indicator {
|
|
207
|
+
background-color: var(--stsv-input__border-color--selected);
|
|
205
208
|
}
|
|
206
209
|
|
|
207
|
-
|
|
208
|
-
|
|
210
|
+
/* ----- indicator colorful -----*/
|
|
211
|
+
|
|
212
|
+
.sterling-tab.colorful:not(.selected):not(:active):hover .indicator {
|
|
213
|
+
background-color: var(--stsv-input--colorful__border-color--hover);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
.sterling-tab.colorful:active .indicator {
|
|
217
|
+
background-color: var(--stsv-input--colorful__border-color--selected);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
.sterling-tab.colorful.selected .indicator {
|
|
221
|
+
background-color: var(--stsv-input--colorful__border-color--selected);
|
|
209
222
|
}
|
|
210
223
|
|
|
224
|
+
/* ----- indicator disabled -----*/
|
|
225
|
+
|
|
226
|
+
.sterling-tab:disabled:not(.selected) .indicator,
|
|
227
|
+
.sterling-tab:disabled:not(.selected):hover .indicator,
|
|
228
|
+
.sterling-tab:disabled:not(.selected):active .indicator {
|
|
229
|
+
background-color: transparent;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/* ----- reduced motion -----*/
|
|
233
|
+
|
|
211
234
|
@media (prefers-reduced-motion) {
|
|
212
235
|
.sterling-tab,
|
|
213
236
|
.sterling-tab::after,
|
package/TabList.svelte
CHANGED
|
@@ -1,21 +1,19 @@
|
|
|
1
|
-
<script>import {
|
|
2
|
-
import { createEventDispatcher, onMount, setContext } from "svelte";
|
|
1
|
+
<script>import { createEventDispatcher, setContext } from "svelte";
|
|
3
2
|
import { writable } from "svelte/store";
|
|
4
3
|
import { TAB_LIST_CONTEXT_KEY } from "./TabList.constants";
|
|
4
|
+
import { usingKeyboard } from "./stores/usingKeyboard";
|
|
5
|
+
export let colorful = false;
|
|
5
6
|
export let disabled = false;
|
|
6
7
|
export let vertical = false;
|
|
7
8
|
export let selectedValue = void 0;
|
|
8
|
-
let keyborg = createKeyborg(window);
|
|
9
|
-
let usingKeyboard = keyborg.isNavigatingWithKeyboard();
|
|
10
|
-
const keyborgHandler = (value) => {
|
|
11
|
-
usingKeyboard = value;
|
|
12
|
-
};
|
|
13
9
|
let tabListRef;
|
|
14
10
|
let lastSelectedTabRef;
|
|
11
|
+
const colorfulStore = writable(colorful);
|
|
15
12
|
const disabledStore = writable(disabled);
|
|
16
13
|
const selectedValueStore = writable(selectedValue);
|
|
17
|
-
const usingKeyboardStore = writable(usingKeyboard);
|
|
18
14
|
const verticalStore = writable(vertical);
|
|
15
|
+
$:
|
|
16
|
+
colorfulStore.set(colorful);
|
|
19
17
|
$:
|
|
20
18
|
disabledStore.set(disabled);
|
|
21
19
|
$:
|
|
@@ -23,8 +21,6 @@ $:
|
|
|
23
21
|
$: {
|
|
24
22
|
selectedValue = $selectedValueStore;
|
|
25
23
|
}
|
|
26
|
-
$:
|
|
27
|
-
usingKeyboardStore.set(usingKeyboard);
|
|
28
24
|
$:
|
|
29
25
|
verticalStore.set(vertical);
|
|
30
26
|
const dispatch = createEventDispatcher();
|
|
@@ -38,7 +34,12 @@ export const blur = () => {
|
|
|
38
34
|
tabListRef?.blur();
|
|
39
35
|
};
|
|
40
36
|
export const focus = (options) => {
|
|
41
|
-
|
|
37
|
+
let selectedItem = getSelectedTabElement();
|
|
38
|
+
if (selectedValue && selectedItem) {
|
|
39
|
+
selectTab(selectedValue, selectedItem);
|
|
40
|
+
} else {
|
|
41
|
+
selectFirstTab();
|
|
42
|
+
}
|
|
42
43
|
};
|
|
43
44
|
const isElementTab = (candidate) => {
|
|
44
45
|
return candidate && candidate.getAttribute("data-value") !== null && candidate.getAttribute("data-value") !== void 0 && candidate.getAttribute("role") === "tab";
|
|
@@ -69,8 +70,8 @@ export const selectFirstTab = () => {
|
|
|
69
70
|
return false;
|
|
70
71
|
};
|
|
71
72
|
export const selectPreviousTab = () => {
|
|
72
|
-
let
|
|
73
|
-
let candidate =
|
|
73
|
+
let selectedTab = getSelectedTabElement();
|
|
74
|
+
let candidate = selectedTab?.previousElementSibling;
|
|
74
75
|
while (candidate && !isElementTab(candidate)) {
|
|
75
76
|
candidate = candidate.previousElementSibling;
|
|
76
77
|
}
|
|
@@ -82,8 +83,8 @@ export const selectPreviousTab = () => {
|
|
|
82
83
|
return false;
|
|
83
84
|
};
|
|
84
85
|
export const selectNextTab = () => {
|
|
85
|
-
let
|
|
86
|
-
let candidate =
|
|
86
|
+
let selectedTab = getSelectedTabElement();
|
|
87
|
+
let candidate = selectedTab?.nextElementSibling;
|
|
87
88
|
while (candidate && !isElementTab(candidate)) {
|
|
88
89
|
candidate = candidate.nextElementSibling;
|
|
89
90
|
}
|
|
@@ -106,12 +107,6 @@ export const selectLastTab = () => {
|
|
|
106
107
|
}
|
|
107
108
|
return false;
|
|
108
109
|
};
|
|
109
|
-
onMount(() => {
|
|
110
|
-
keyborg.subscribe(keyborgHandler);
|
|
111
|
-
return () => {
|
|
112
|
-
keyborg.unsubscribe(keyborgHandler);
|
|
113
|
-
};
|
|
114
|
-
});
|
|
115
110
|
const onClick = (event) => {
|
|
116
111
|
if (!disabled) {
|
|
117
112
|
let candidate = event.target;
|
|
@@ -126,7 +121,6 @@ const onClick = (event) => {
|
|
|
126
121
|
}
|
|
127
122
|
};
|
|
128
123
|
const onKeydown = (event) => {
|
|
129
|
-
console.log("tabList onKeydown", event);
|
|
130
124
|
if (!disabled && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) {
|
|
131
125
|
switch (event.key) {
|
|
132
126
|
case "Home":
|
|
@@ -173,9 +167,9 @@ const onKeydown = (event) => {
|
|
|
173
167
|
}
|
|
174
168
|
};
|
|
175
169
|
setContext(TAB_LIST_CONTEXT_KEY, {
|
|
170
|
+
colorful: colorfulStore,
|
|
176
171
|
disabled: disabledStore,
|
|
177
172
|
selectedValue: selectedValueStore,
|
|
178
|
-
usingKeyboard: usingKeyboardStore,
|
|
179
173
|
vertical: verticalStore
|
|
180
174
|
});
|
|
181
175
|
</script>
|
|
@@ -184,9 +178,10 @@ setContext(TAB_LIST_CONTEXT_KEY, {
|
|
|
184
178
|
aria-orientation={vertical ? 'vertical' : 'horizontal'}
|
|
185
179
|
bind:this={tabListRef}
|
|
186
180
|
class="sterling-tab-list"
|
|
187
|
-
|
|
188
|
-
class:vertical
|
|
181
|
+
class:colorful
|
|
189
182
|
class:disabled
|
|
183
|
+
class:vertical
|
|
184
|
+
role="tablist"
|
|
190
185
|
on:blur
|
|
191
186
|
on:click
|
|
192
187
|
on:click={onClick}
|
|
@@ -214,7 +209,7 @@ setContext(TAB_LIST_CONTEXT_KEY, {
|
|
|
214
209
|
on:mouseout
|
|
215
210
|
on:mouseup
|
|
216
211
|
on:scroll
|
|
217
|
-
on:wheel
|
|
212
|
+
on:wheel|passive
|
|
218
213
|
on:paste
|
|
219
214
|
{...$$restProps}
|
|
220
215
|
>
|
|
@@ -226,7 +221,7 @@ setContext(TAB_LIST_CONTEXT_KEY, {
|
|
|
226
221
|
box-sizing: border-box;
|
|
227
222
|
display: grid;
|
|
228
223
|
margin: 0;
|
|
229
|
-
padding: calc(2 * var(--stsv-
|
|
224
|
+
padding: calc(2 * var(--stsv-common__outline-width));
|
|
230
225
|
}
|
|
231
226
|
|
|
232
227
|
.sterling-tab-list:not(.vertical) {
|
|
@@ -248,7 +243,7 @@ setContext(TAB_LIST_CONTEXT_KEY, {
|
|
|
248
243
|
}
|
|
249
244
|
|
|
250
245
|
.sterling-tab-list:hover {
|
|
251
|
-
color: var(--stsv-
|
|
246
|
+
color: var(--stsv-common__color--hover);
|
|
252
247
|
}
|
|
253
248
|
|
|
254
249
|
@media (prefers-reduced-motion) {
|
package/TabList.svelte.d.ts
CHANGED
package/TabList.types.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Readable, Writable } from 'svelte/store';
|
|
2
2
|
export type TabListContext = {
|
|
3
|
+
colorful: Readable<boolean>;
|
|
3
4
|
disabled: Readable<boolean>;
|
|
4
5
|
selectedValue: Writable<string | undefined>;
|
|
5
|
-
usingKeyboard: Readable<boolean>;
|
|
6
6
|
vertical: Readable<boolean>;
|
|
7
7
|
};
|
package/TextArea.svelte
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<script>import { onMount } from "svelte";
|
|
2
2
|
export let autoHeight = false;
|
|
3
|
+
export let colorful = false;
|
|
3
4
|
export let disabled = false;
|
|
4
5
|
export let resize = "none";
|
|
5
6
|
export let value = "";
|
|
@@ -42,7 +43,7 @@ export const setRangeText = (replacement, start, end, selectionMode) => {
|
|
|
42
43
|
};
|
|
43
44
|
</script>
|
|
44
45
|
|
|
45
|
-
<div class="sterling-text-area" class:disabled>
|
|
46
|
+
<div class="sterling-text-area" class:colorful class:disabled>
|
|
46
47
|
<textarea
|
|
47
48
|
bind:this={textAreaRef}
|
|
48
49
|
bind:value
|
|
@@ -81,7 +82,7 @@ export const setRangeText = (replacement, start, end, selectionMode) => {
|
|
|
81
82
|
on:select
|
|
82
83
|
on:submit
|
|
83
84
|
on:reset
|
|
84
|
-
on:wheel
|
|
85
|
+
on:wheel|passive
|
|
85
86
|
on:input={onInput}
|
|
86
87
|
{...$$restProps}
|
|
87
88
|
/>
|
|
@@ -95,13 +96,13 @@ export const setRangeText = (replacement, start, end, selectionMode) => {
|
|
|
95
96
|
}
|
|
96
97
|
|
|
97
98
|
textarea {
|
|
98
|
-
background-color: var(--stsv-
|
|
99
|
-
border-color: var(--stsv-
|
|
100
|
-
border-radius: var(--stsv-
|
|
101
|
-
border-style: var(--stsv-
|
|
102
|
-
border-width: var(--stsv-
|
|
99
|
+
background-color: var(--stsv-input__background-color);
|
|
100
|
+
border-color: var(--stsv-input__border-color);
|
|
101
|
+
border-radius: var(--stsv-input__border-radius);
|
|
102
|
+
border-style: var(--stsv-input__border-style);
|
|
103
|
+
border-width: var(--stsv-input__border-width);
|
|
103
104
|
box-sizing: border-box;
|
|
104
|
-
color: var(--stsv-
|
|
105
|
+
color: var(--stsv-input__color);
|
|
105
106
|
display: block;
|
|
106
107
|
font: inherit;
|
|
107
108
|
line-height: inherit;
|
|
@@ -117,19 +118,37 @@ export const setRangeText = (replacement, start, end, selectionMode) => {
|
|
|
117
118
|
}
|
|
118
119
|
|
|
119
120
|
textarea:hover {
|
|
120
|
-
background-color: var(--stsv-
|
|
121
|
-
border-color: var(--stsv-
|
|
122
|
-
color: var(--stsv-
|
|
121
|
+
background-color: var(--stsv-input__background-color--hover);
|
|
122
|
+
border-color: var(--stsv-input__border-color--hover);
|
|
123
|
+
color: var(--stsv-input__color--hover);
|
|
123
124
|
}
|
|
124
125
|
|
|
125
126
|
textarea:focus {
|
|
126
|
-
background-color: var(--stsv-
|
|
127
|
-
border-color: var(--stsv-
|
|
128
|
-
color: var(--stsv-
|
|
129
|
-
outline-color: var(--stsv-
|
|
130
|
-
outline-offset: var(--stsv-
|
|
131
|
-
outline-style: var(--stsv-
|
|
132
|
-
outline-width: var(--stsv-
|
|
127
|
+
background-color: var(--stsv-input__background-color--focus);
|
|
128
|
+
border-color: var(--stsv-input__border-color--focus);
|
|
129
|
+
color: var(--stsv-input__color--focus);
|
|
130
|
+
outline-color: var(--stsv-common__outline-color);
|
|
131
|
+
outline-offset: var(--stsv-common__outline-offset);
|
|
132
|
+
outline-style: var(--stsv-common__outline-style);
|
|
133
|
+
outline-width: var(--stsv-common__outline-width);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.sterling-text-area.colorful textarea {
|
|
137
|
+
background-color: var(--stsv-input--colorful__background-color);
|
|
138
|
+
border-color: var(--stsv-input--colorful__border-color);
|
|
139
|
+
color: var(--stsv-input--colorful__color);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.sterling-text-area.colorful textarea:hover {
|
|
143
|
+
background-color: var(--stsv-input--colorful__background-color--hover);
|
|
144
|
+
border-color: var(--stsv-input--colorful__border-color--hover);
|
|
145
|
+
color: var(--stsv-input--colorful__color--hover);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
.sterling-text-area.colorful textarea:focus {
|
|
149
|
+
background-color: var(--stsv-input--colorful__background-color--focus);
|
|
150
|
+
border-color: var(--stsv-input--colorful__border-color--focus);
|
|
151
|
+
color: var(--stsv-input--colorful__color--focus);
|
|
133
152
|
}
|
|
134
153
|
|
|
135
154
|
.sterling-text-area:disabled {
|
|
@@ -138,7 +157,13 @@ export const setRangeText = (replacement, start, end, selectionMode) => {
|
|
|
138
157
|
}
|
|
139
158
|
|
|
140
159
|
.sterling-text-area::after {
|
|
141
|
-
background:
|
|
160
|
+
background: repeating-linear-gradient(
|
|
161
|
+
45deg,
|
|
162
|
+
var(--stsv-common__background-color1--disabled),
|
|
163
|
+
var(--stsv-common__background-color1--disabled) 3px,
|
|
164
|
+
var(--stsv-common__background-color2--disabled) 3px,
|
|
165
|
+
var(--stsv-common__background-color2--disabled) 6px
|
|
166
|
+
);
|
|
142
167
|
bottom: 0;
|
|
143
168
|
content: '';
|
|
144
169
|
left: 0;
|
|
@@ -155,7 +180,7 @@ export const setRangeText = (replacement, start, end, selectionMode) => {
|
|
|
155
180
|
}
|
|
156
181
|
|
|
157
182
|
textarea::placeholder {
|
|
158
|
-
color: var(--stsv-
|
|
183
|
+
color: var(--stsv-common__color--subtle);
|
|
159
184
|
transition: background-color 250ms, color 250ms, border-color 250ms;
|
|
160
185
|
}
|
|
161
186
|
|
package/TextArea.svelte.d.ts
CHANGED
|
@@ -3,8 +3,9 @@ declare const __propDef: {
|
|
|
3
3
|
props: {
|
|
4
4
|
[x: string]: any;
|
|
5
5
|
autoHeight?: boolean | undefined;
|
|
6
|
+
colorful?: boolean | undefined;
|
|
6
7
|
disabled?: boolean | undefined;
|
|
7
|
-
resize?: "none" | "
|
|
8
|
+
resize?: "none" | "vertical" | "horizontal" | "both" | undefined;
|
|
8
9
|
value?: string | undefined;
|
|
9
10
|
blur?: (() => void) | undefined;
|
|
10
11
|
click?: (() => void) | undefined;
|
|
@@ -60,7 +61,7 @@ export default class TextArea extends SvelteComponentTyped<TextAreaProps, TextAr
|
|
|
60
61
|
get click(): () => void;
|
|
61
62
|
get focus(): (options?: FocusOptions | undefined) => void;
|
|
62
63
|
get select(): () => void;
|
|
63
|
-
get setSelectionRange(): (start: number | null, end: number | null, direction?: "
|
|
64
|
+
get setSelectionRange(): (start: number | null, end: number | null, direction?: "forward" | "backward" | "none" | undefined) => void;
|
|
64
65
|
get setRangeText(): (replacement: string, start?: number | undefined, end?: number | undefined, selectionMode?: SelectionMode | undefined) => void;
|
|
65
66
|
}
|
|
66
67
|
export {};
|
package/Tooltip.svelte
CHANGED
|
@@ -114,6 +114,7 @@ const autoShowUpdate = () => {
|
|
|
114
114
|
cleanupAutoShowUpdate = () => {
|
|
115
115
|
};
|
|
116
116
|
const element = reference;
|
|
117
|
+
open = false;
|
|
117
118
|
if (element) {
|
|
118
119
|
switch (showOn) {
|
|
119
120
|
case "click":
|
|
@@ -171,12 +172,12 @@ onMount(() => {
|
|
|
171
172
|
}
|
|
172
173
|
|
|
173
174
|
.sterling-tooltip {
|
|
174
|
-
background-color: var(--stsv-
|
|
175
|
-
border-color: var(--stsv-
|
|
176
|
-
border-radius: var(--stsv-
|
|
177
|
-
border-style: var(--stsv-
|
|
178
|
-
border-width: var(--stsv-
|
|
179
|
-
color: var(--stsv-
|
|
175
|
+
background-color: var(--stsv-common__background-color);
|
|
176
|
+
border-color: var(--stsv-common__border-color);
|
|
177
|
+
border-radius: var(--stsv-common__border-radius);
|
|
178
|
+
border-style: var(--stsv-common__border-style);
|
|
179
|
+
border-width: var(--stsv-common__border-width);
|
|
180
|
+
color: var(--stsv-common__color);
|
|
180
181
|
position: absolute;
|
|
181
182
|
overflow: visible;
|
|
182
183
|
box-shadow: rgba(0, 0, 0, 0.4) 2px 2px 4px -1px;
|
|
@@ -187,11 +188,11 @@ onMount(() => {
|
|
|
187
188
|
position: absolute;
|
|
188
189
|
width: 10px;
|
|
189
190
|
height: 10px;
|
|
190
|
-
background-color: var(--stsv-
|
|
191
|
-
border-color: var(--stsv-
|
|
192
|
-
border-radius: var(--stsv-
|
|
193
|
-
border-style: var(--stsv-
|
|
194
|
-
border-width: var(--stsv-
|
|
191
|
+
background-color: var(--stsv-common__background-color);
|
|
192
|
+
border-color: var(--stsv-common__border-color);
|
|
193
|
+
border-radius: var(--stsv-common__border-radius);
|
|
194
|
+
border-style: var(--stsv-common__border-style);
|
|
195
|
+
border-width: var(--stsv-common__border-width);
|
|
195
196
|
clip-path: polygon(0% 1%, 100% 1%, 100% 100%, 0% 1%);
|
|
196
197
|
}
|
|
197
198
|
</style>
|
package/Tree.svelte
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
<script>import {
|
|
2
|
-
import { createEventDispatcher, onMount, setContext } from "svelte";
|
|
1
|
+
<script>import { createEventDispatcher, setContext } from "svelte";
|
|
3
2
|
import { writable } from "svelte/store";
|
|
4
3
|
import { TREE_CONTEXT_KEY } from "./Tree.constants";
|
|
4
|
+
import { usingKeyboard } from "./stores/usingKeyboard";
|
|
5
|
+
export let colorful = false;
|
|
5
6
|
export let composed = false;
|
|
6
7
|
export let disabled = false;
|
|
7
8
|
export let selectedValue = void 0;
|
|
8
9
|
export let expandedValues = [];
|
|
9
10
|
let treeRef;
|
|
10
|
-
const
|
|
11
|
-
const expandedValuesStore = writable(expandedValues);
|
|
11
|
+
const colorfulStore = writable(colorful);
|
|
12
12
|
const disabledStore = writable(disabled);
|
|
13
|
+
const expandedValuesStore = writable(expandedValues);
|
|
14
|
+
const selectedValueStore = writable(selectedValue);
|
|
13
15
|
export const blur = () => {
|
|
14
16
|
treeRef?.blur();
|
|
15
17
|
};
|
|
@@ -23,11 +25,6 @@ const raiseExpandCollapse = (expandedValues2) => {
|
|
|
23
25
|
const raiseSelect = (selectedValue2) => {
|
|
24
26
|
dispatch("select", { selectedValue: selectedValue2 });
|
|
25
27
|
};
|
|
26
|
-
let keyborg = createKeyborg(window);
|
|
27
|
-
let usingKeyboard = keyborg.isNavigatingWithKeyboard();
|
|
28
|
-
const keyborgHandler = (value) => {
|
|
29
|
-
usingKeyboard = value;
|
|
30
|
-
};
|
|
31
28
|
$: {
|
|
32
29
|
selectedValueStore.set(selectedValue);
|
|
33
30
|
}
|
|
@@ -42,19 +39,17 @@ $: {
|
|
|
42
39
|
expandedValues = $expandedValuesStore;
|
|
43
40
|
raiseExpandCollapse($expandedValuesStore);
|
|
44
41
|
}
|
|
42
|
+
$: {
|
|
43
|
+
colorfulStore.set(colorful);
|
|
44
|
+
}
|
|
45
45
|
$: {
|
|
46
46
|
disabledStore.set(disabled);
|
|
47
47
|
}
|
|
48
|
-
onMount(() => {
|
|
49
|
-
keyborg.subscribe(keyborgHandler);
|
|
50
|
-
return () => {
|
|
51
|
-
keyborg.unsubscribe(keyborgHandler);
|
|
52
|
-
};
|
|
53
|
-
});
|
|
54
48
|
setContext(TREE_CONTEXT_KEY, {
|
|
49
|
+
colorful: colorfulStore,
|
|
50
|
+
disabled: disabledStore,
|
|
55
51
|
expandedValues: expandedValuesStore,
|
|
56
|
-
selectedValue: selectedValueStore
|
|
57
|
-
disabled: disabledStore
|
|
52
|
+
selectedValue: selectedValueStore
|
|
58
53
|
});
|
|
59
54
|
</script>
|
|
60
55
|
|
|
@@ -63,9 +58,10 @@ setContext(TREE_CONTEXT_KEY, {
|
|
|
63
58
|
bind:this={treeRef}
|
|
64
59
|
aria-disabled={disabled}
|
|
65
60
|
class="sterling-tree"
|
|
61
|
+
class:colorful
|
|
66
62
|
class:composed
|
|
67
63
|
class:disabled
|
|
68
|
-
class:using-keyboard={usingKeyboard}
|
|
64
|
+
class:using-keyboard={$usingKeyboard}
|
|
69
65
|
role="tree"
|
|
70
66
|
on:blur
|
|
71
67
|
on:click
|
|
@@ -97,23 +93,23 @@ setContext(TREE_CONTEXT_KEY, {
|
|
|
97
93
|
on:pointerover
|
|
98
94
|
on:pointerout
|
|
99
95
|
on:pointerup
|
|
100
|
-
on:wheel
|
|
96
|
+
on:wheel|passive
|
|
101
97
|
{...$$restProps}
|
|
102
98
|
>
|
|
103
99
|
<div class="container">
|
|
104
|
-
<slot {composed} {disabled} />
|
|
100
|
+
<slot {colorful} {composed} {disabled} />
|
|
105
101
|
</div>
|
|
106
102
|
</div>
|
|
107
103
|
|
|
108
104
|
<style>
|
|
109
105
|
.sterling-tree {
|
|
110
|
-
background-color: var(--stsv-
|
|
111
|
-
border-color: var(--stsv-
|
|
112
|
-
border-radius: var(--stsv-
|
|
113
|
-
border-style: var(--stsv-
|
|
114
|
-
border-width: var(--stsv-
|
|
106
|
+
background-color: var(--stsv-common__background-color);
|
|
107
|
+
border-color: var(--stsv-common__border-color);
|
|
108
|
+
border-radius: var(--stsv-common__border-radius);
|
|
109
|
+
border-style: var(--stsv-common__border-style);
|
|
110
|
+
border-width: var(--stsv-common__border-width);
|
|
115
111
|
box-sizing: border-box;
|
|
116
|
-
color: var(--stsv-
|
|
112
|
+
color: var(--stsv-common__color);
|
|
117
113
|
height: 100%;
|
|
118
114
|
overflow-x: hidden;
|
|
119
115
|
overflow-y: auto;
|
|
@@ -122,17 +118,17 @@ setContext(TREE_CONTEXT_KEY, {
|
|
|
122
118
|
}
|
|
123
119
|
|
|
124
120
|
.sterling-tree:hover {
|
|
125
|
-
border-color: var(--stsv-
|
|
126
|
-
color: var(--stsv-
|
|
121
|
+
border-color: var(--stsv-input__border-color--hover);
|
|
122
|
+
color: var(--stsv-input__color--hover);
|
|
127
123
|
}
|
|
128
124
|
|
|
129
125
|
.sterling-tree.using-keyboard:focus-within {
|
|
130
|
-
border-color: var(--stsv-
|
|
131
|
-
color: var(--stsv-
|
|
132
|
-
outline-color: var(--stsv-
|
|
133
|
-
outline-offset: var(--stsv-
|
|
134
|
-
outline-style: var(--stsv-
|
|
135
|
-
outline-width: var(--stsv-
|
|
126
|
+
border-color: var(--stsv-button__border-color--focus);
|
|
127
|
+
color: var(--stsv-input__color--focus);
|
|
128
|
+
outline-color: var(--stsv-common__outline-color);
|
|
129
|
+
outline-offset: var(--stsv-common__outline-offset);
|
|
130
|
+
outline-style: var(--stsv-common__outline-style);
|
|
131
|
+
outline-width: var(--stsv-common__outline-width);
|
|
136
132
|
}
|
|
137
133
|
|
|
138
134
|
.sterling-tree.composed,
|
|
@@ -158,7 +154,13 @@ setContext(TREE_CONTEXT_KEY, {
|
|
|
158
154
|
}
|
|
159
155
|
|
|
160
156
|
.container::after {
|
|
161
|
-
background:
|
|
157
|
+
background: repeating-linear-gradient(
|
|
158
|
+
45deg,
|
|
159
|
+
var(--stsv-common__background-color1--disabled),
|
|
160
|
+
var(--stsv-common__background-color1--disabled) 3px,
|
|
161
|
+
var(--stsv-common__background-color2--disabled) 3px,
|
|
162
|
+
var(--stsv-common__background-color2--disabled) 6px
|
|
163
|
+
);
|
|
162
164
|
bottom: 0;
|
|
163
165
|
content: '';
|
|
164
166
|
left: 0;
|
package/Tree.svelte.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { SvelteComponentTyped } from "svelte";
|
|
|
2
2
|
declare const __propDef: {
|
|
3
3
|
props: {
|
|
4
4
|
[x: string]: any;
|
|
5
|
+
colorful?: boolean | undefined;
|
|
5
6
|
composed?: boolean | undefined;
|
|
6
7
|
disabled?: boolean | undefined;
|
|
7
8
|
selectedValue?: string | undefined;
|
|
@@ -48,6 +49,7 @@ declare const __propDef: {
|
|
|
48
49
|
};
|
|
49
50
|
slots: {
|
|
50
51
|
default: {
|
|
52
|
+
colorful: boolean;
|
|
51
53
|
composed: boolean;
|
|
52
54
|
disabled: boolean;
|
|
53
55
|
};
|
package/Tree.types.d.ts
CHANGED