@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/Dropdown.svelte
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
<script>import { createEventDispatcher } from "svelte";
|
|
2
|
-
import
|
|
2
|
+
import Popover from "./Popover.svelte";
|
|
3
3
|
import { clickOutside } from "./actions/clickOutside";
|
|
4
4
|
import { idGenerator } from "./idGenerator";
|
|
5
|
+
import { prefersReducedMotion } from "./stores/prefersReducedMotion";
|
|
6
|
+
import { slide } from "svelte/transition";
|
|
5
7
|
const popupId = idGenerator.nextId("Dropdown-popup");
|
|
8
|
+
export let colorful = false;
|
|
6
9
|
export let composed = false;
|
|
7
10
|
export let disabled = false;
|
|
8
11
|
export let open = false;
|
|
@@ -35,9 +38,15 @@ const onClick = (event) => {
|
|
|
35
38
|
const onKeydown = (event) => {
|
|
36
39
|
if (!event.altKey && !event.ctrlKey && !event.shiftKey) {
|
|
37
40
|
switch (event.key) {
|
|
41
|
+
case " ":
|
|
42
|
+
open = !open;
|
|
43
|
+
event.preventDefault();
|
|
44
|
+
event.stopPropagation();
|
|
45
|
+
return false;
|
|
38
46
|
case "Escape":
|
|
39
47
|
open = false;
|
|
40
48
|
event.preventDefault();
|
|
49
|
+
event.stopPropagation();
|
|
41
50
|
return false;
|
|
42
51
|
}
|
|
43
52
|
}
|
|
@@ -47,6 +56,11 @@ const onClickOutside = (event) => {
|
|
|
47
56
|
open = false;
|
|
48
57
|
}
|
|
49
58
|
};
|
|
59
|
+
const slideNoOp = (node, params) => {
|
|
60
|
+
return { delay: 0, duration: 0 };
|
|
61
|
+
};
|
|
62
|
+
$:
|
|
63
|
+
slideMotion = !$prefersReducedMotion ? slide : slideNoOp;
|
|
50
64
|
</script>
|
|
51
65
|
|
|
52
66
|
<div
|
|
@@ -55,6 +69,7 @@ const onClickOutside = (event) => {
|
|
|
55
69
|
aria-haspopup={true}
|
|
56
70
|
aria-expanded={open}
|
|
57
71
|
class="sterling-dropdown"
|
|
72
|
+
class:colorful
|
|
58
73
|
class:composed
|
|
59
74
|
class:disabled
|
|
60
75
|
role="combobox"
|
|
@@ -86,35 +101,40 @@ const onClickOutside = (event) => {
|
|
|
86
101
|
on:mouseover
|
|
87
102
|
on:mouseout
|
|
88
103
|
on:mouseup
|
|
89
|
-
on:wheel
|
|
104
|
+
on:wheel|passive
|
|
90
105
|
on:paste
|
|
91
106
|
on:click_outside={onClickOutside}
|
|
92
107
|
{...$$restProps}
|
|
93
108
|
>
|
|
94
|
-
<slot name="value" {composed} {disabled} {open} />
|
|
95
|
-
<slot name="button" {composed} {disabled} {open}>
|
|
109
|
+
<slot name="value" {colorful} {composed} {disabled} {open} />
|
|
110
|
+
<slot name="button" {colorful} {composed} {disabled} {open}>
|
|
96
111
|
<div class="button">
|
|
97
112
|
<div class="chevron" />
|
|
98
113
|
</div>
|
|
99
114
|
</slot>
|
|
100
115
|
|
|
101
|
-
<
|
|
102
|
-
<div
|
|
103
|
-
|
|
116
|
+
<Popover reference={dropdownRef} open={!disabled && open}>
|
|
117
|
+
<div
|
|
118
|
+
class="popup-content"
|
|
119
|
+
transition:slideMotion={{ duration: 200 }}
|
|
120
|
+
class:colorful
|
|
121
|
+
bind:this={popupContentRef}
|
|
122
|
+
>
|
|
123
|
+
<slot {colorful} {composed} {disabled} {open} />
|
|
104
124
|
</div>
|
|
105
|
-
</
|
|
125
|
+
</Popover>
|
|
106
126
|
</div>
|
|
107
127
|
|
|
108
128
|
<style>
|
|
109
129
|
.sterling-dropdown {
|
|
110
130
|
align-content: stretch;
|
|
111
131
|
align-items: stretch;
|
|
112
|
-
background-color: var(--stsv-
|
|
113
|
-
border-color: var(--stsv-
|
|
114
|
-
border-radius: var(--stsv-
|
|
115
|
-
border-style: var(--stsv-
|
|
116
|
-
border-width: var(--stsv-
|
|
117
|
-
color: var(--stsv-
|
|
132
|
+
background-color: var(--stsv-input__background-color);
|
|
133
|
+
border-color: var(--stsv-input__border-color);
|
|
134
|
+
border-radius: var(--stsv-button__border-radius);
|
|
135
|
+
border-style: var(--stsv-input__border-style);
|
|
136
|
+
border-width: var(--stsv-input__border-width);
|
|
137
|
+
color: var(--stsv-input__color);
|
|
118
138
|
display: grid;
|
|
119
139
|
grid-template-columns: 1fr 2em;
|
|
120
140
|
grid-template-rows: auto;
|
|
@@ -125,19 +145,37 @@ const onClickOutside = (event) => {
|
|
|
125
145
|
}
|
|
126
146
|
|
|
127
147
|
.sterling-dropdown:hover {
|
|
128
|
-
background-color: var(--stsv-
|
|
129
|
-
border-color: var(--stsv-
|
|
130
|
-
color: var(--stsv-
|
|
148
|
+
background-color: var(--stsv-input__background-color--hover);
|
|
149
|
+
border-color: var(--stsv-input__border-color--hover);
|
|
150
|
+
color: var(--stsv-input__color--hover);
|
|
131
151
|
}
|
|
132
152
|
|
|
133
153
|
.sterling-dropdown:focus {
|
|
134
|
-
background-color: var(--stsv-
|
|
135
|
-
border-color: var(--stsv-
|
|
136
|
-
color: var(--stsv-
|
|
137
|
-
outline-color: var(--stsv-
|
|
138
|
-
outline-offset: var(--stsv-
|
|
139
|
-
outline-style: var(--stsv-
|
|
140
|
-
outline-width: var(--stsv-
|
|
154
|
+
background-color: var(--stsv-input__background-color--focus);
|
|
155
|
+
border-color: var(--stsv-input__border-color--focus);
|
|
156
|
+
color: var(--stsv-input__color--focus);
|
|
157
|
+
outline-color: var(--stsv-common__outline-color);
|
|
158
|
+
outline-offset: var(--stsv-common__outline-offset);
|
|
159
|
+
outline-style: var(--stsv-common__outline-style);
|
|
160
|
+
outline-width: var(--stsv-common__outline-width);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
.sterling-dropdown.colorful {
|
|
164
|
+
background-color: var(--stsv-input--colorful__background-color);
|
|
165
|
+
border-color: var(--stsv-input--colorful__border-color);
|
|
166
|
+
color: var(--stsv-input--colorful__color);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
.sterling-dropdown.colorful:hover {
|
|
170
|
+
background-color: var(--stsv-input--colorful__background-color--hover);
|
|
171
|
+
border-color: var(--stsv-input--colorful__border-color--hover);
|
|
172
|
+
color: var(--stsv-input--colorful__color--hover);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
.sterling-dropdown.colorful:focus {
|
|
176
|
+
background-color: var(--stsv-input--colorful__background-color--focus);
|
|
177
|
+
border-color: var(--stsv-input--colorful__border-color--focus);
|
|
178
|
+
color: var(--stsv-input--colorful__color--focus);
|
|
141
179
|
}
|
|
142
180
|
|
|
143
181
|
.sterling-dropdown.disabled {
|
|
@@ -145,8 +183,18 @@ const onClickOutside = (event) => {
|
|
|
145
183
|
outline: none;
|
|
146
184
|
}
|
|
147
185
|
|
|
186
|
+
.sterling-dropdown.disabled .button {
|
|
187
|
+
cursor: not-allowed;
|
|
188
|
+
}
|
|
189
|
+
|
|
148
190
|
.sterling-dropdown::after {
|
|
149
|
-
background:
|
|
191
|
+
background: repeating-linear-gradient(
|
|
192
|
+
45deg,
|
|
193
|
+
var(--stsv-common__background-color1--disabled),
|
|
194
|
+
var(--stsv-common__background-color1--disabled) 3px,
|
|
195
|
+
var(--stsv-common__background-color2--disabled) 3px,
|
|
196
|
+
var(--stsv-common__background-color2--disabled) 6px
|
|
197
|
+
);
|
|
150
198
|
bottom: 0;
|
|
151
199
|
content: '';
|
|
152
200
|
left: 0;
|
|
@@ -187,7 +235,8 @@ const onClickOutside = (event) => {
|
|
|
187
235
|
background: none;
|
|
188
236
|
margin: 0;
|
|
189
237
|
height: 100%;
|
|
190
|
-
width:
|
|
238
|
+
min-width: 2em;
|
|
239
|
+
min-height: 2em;
|
|
191
240
|
}
|
|
192
241
|
|
|
193
242
|
.chevron::after {
|
|
@@ -216,32 +265,24 @@ const onClickOutside = (event) => {
|
|
|
216
265
|
transform-origin: 50% 50%;
|
|
217
266
|
}
|
|
218
267
|
|
|
219
|
-
.popup {
|
|
220
|
-
background-color: var(--stsv-
|
|
221
|
-
border-color: var(--stsv-
|
|
222
|
-
border-radius: var(--stsv-
|
|
223
|
-
border-style: var(--stsv-
|
|
224
|
-
border-width: var(--stsv-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
display: none;
|
|
228
|
-
overflow: visible;
|
|
229
|
-
outline: none;
|
|
230
|
-
position: absolute;
|
|
231
|
-
box-shadow: rgba(0, 0, 0, 0.4) 2px 2px 4px -1px;
|
|
232
|
-
width: fit-content;
|
|
233
|
-
height: fit-content;
|
|
234
|
-
z-index: 1;
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
.popup.open {
|
|
268
|
+
.popup-content {
|
|
269
|
+
background-color: var(--stsv-common__background-color);
|
|
270
|
+
border-color: var(--stsv-common__border-color);
|
|
271
|
+
border-radius: var(--stsv-common__border-radius);
|
|
272
|
+
border-style: var(--stsv-common__border-style);
|
|
273
|
+
border-width: var(--stsv-common__border-width);
|
|
274
|
+
color: var(--stsv-common__color);
|
|
275
|
+
padding: 0.25em;
|
|
238
276
|
display: grid;
|
|
239
277
|
grid-template-columns: 1fr;
|
|
240
278
|
grid-template-rows: 1fr;
|
|
279
|
+
overflow: hidden;
|
|
241
280
|
}
|
|
242
281
|
|
|
243
|
-
.popup-content {
|
|
244
|
-
|
|
282
|
+
.popup-content.colorful {
|
|
283
|
+
background-color: var(--stsv-common--colorful__background-color);
|
|
284
|
+
border-color: var(--stsv-common--colorful__border-color);
|
|
285
|
+
color: var(--stsv-common--colorful__color);
|
|
245
286
|
}
|
|
246
287
|
|
|
247
288
|
@media (prefers-reduced-motion) {
|
package/Dropdown.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
|
open?: boolean | undefined;
|
|
@@ -43,16 +44,19 @@ declare const __propDef: {
|
|
|
43
44
|
};
|
|
44
45
|
slots: {
|
|
45
46
|
value: {
|
|
47
|
+
colorful: boolean;
|
|
46
48
|
composed: boolean;
|
|
47
49
|
disabled: boolean;
|
|
48
50
|
open: boolean;
|
|
49
51
|
};
|
|
50
52
|
button: {
|
|
53
|
+
colorful: boolean;
|
|
51
54
|
composed: boolean;
|
|
52
55
|
disabled: boolean;
|
|
53
56
|
open: boolean;
|
|
54
57
|
};
|
|
55
58
|
default: {
|
|
59
|
+
colorful: boolean;
|
|
56
60
|
composed: boolean;
|
|
57
61
|
disabled: boolean;
|
|
58
62
|
open: boolean;
|
package/Field.svelte
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
<script>import
|
|
2
|
-
import {
|
|
3
|
-
import Tooltip from "./Tooltip.svelte";
|
|
1
|
+
<script>import Tooltip from "./Tooltip.svelte";
|
|
2
|
+
import { usingKeyboard } from "./stores/usingKeyboard";
|
|
4
3
|
export let forwardClick = false;
|
|
5
4
|
let htmlFor = void 0;
|
|
6
5
|
export { htmlFor as for };
|
|
@@ -62,11 +61,6 @@ $: {
|
|
|
62
61
|
});
|
|
63
62
|
}
|
|
64
63
|
}
|
|
65
|
-
let keyborg = createKeyborg(window);
|
|
66
|
-
let usingKeyboard = keyborg.isNavigatingWithKeyboard();
|
|
67
|
-
const keyborgHandler = (value) => {
|
|
68
|
-
usingKeyboard = value;
|
|
69
|
-
};
|
|
70
64
|
export const click = () => {
|
|
71
65
|
fieldRef?.click();
|
|
72
66
|
};
|
|
@@ -76,12 +70,6 @@ export const blur = () => {
|
|
|
76
70
|
export const focus = (options) => {
|
|
77
71
|
fieldRef?.focus(options);
|
|
78
72
|
};
|
|
79
|
-
onMount(() => {
|
|
80
|
-
keyborg.subscribe(keyborgHandler);
|
|
81
|
-
return () => {
|
|
82
|
-
keyborg.unsubscribe(keyborgHandler);
|
|
83
|
-
};
|
|
84
|
-
});
|
|
85
73
|
const onClick = () => {
|
|
86
74
|
if (forwardClick) {
|
|
87
75
|
targetRef?.click();
|
|
@@ -94,7 +82,7 @@ const onClick = () => {
|
|
|
94
82
|
aria-disabled={targetDisabled}
|
|
95
83
|
class="sterling-field"
|
|
96
84
|
class:disabled={targetDisabled}
|
|
97
|
-
class:using-keyboard={usingKeyboard}
|
|
85
|
+
class:using-keyboard={$usingKeyboard}
|
|
98
86
|
for={htmlFor}
|
|
99
87
|
on:blur
|
|
100
88
|
on:click
|
|
@@ -122,7 +110,7 @@ const onClick = () => {
|
|
|
122
110
|
on:mouseout
|
|
123
111
|
on:mouseup
|
|
124
112
|
on:scroll
|
|
125
|
-
on:wheel
|
|
113
|
+
on:wheel|passive
|
|
126
114
|
on:paste
|
|
127
115
|
{...$$restProps}
|
|
128
116
|
>
|
|
@@ -163,13 +151,13 @@ const onClick = () => {
|
|
|
163
151
|
|
|
164
152
|
<style>
|
|
165
153
|
.sterling-field {
|
|
166
|
-
background-color: var(--stsv-
|
|
167
|
-
border-color: var(--stsv-
|
|
168
|
-
border-radius: var(--stsv-
|
|
169
|
-
border-style: var(--stsv-
|
|
170
|
-
border-width: var(--stsv-
|
|
154
|
+
background-color: var(--stsv-input__background-color);
|
|
155
|
+
border-color: var(--stsv-input__border-color);
|
|
156
|
+
border-radius: var(--stsv-input__border-radius);
|
|
157
|
+
border-style: var(--stsv-input__border-style);
|
|
158
|
+
border-width: var(--stsv-input__border-width);
|
|
171
159
|
box-sizing: border-box;
|
|
172
|
-
color: var(--stsv-
|
|
160
|
+
color: var(--stsv-input__color);
|
|
173
161
|
display: flex;
|
|
174
162
|
flex-direction: column;
|
|
175
163
|
font: inherit;
|
|
@@ -181,18 +169,18 @@ const onClick = () => {
|
|
|
181
169
|
}
|
|
182
170
|
|
|
183
171
|
.sterling-field:not(.disabled):hover {
|
|
184
|
-
background-color: var(--stsv-
|
|
185
|
-
border-color: var(--stsv-
|
|
186
|
-
color: var(--stsv-
|
|
172
|
+
background-color: var(--stsv-input__background-color--hover);
|
|
173
|
+
border-color: var(--stsv-input__border-color--hover);
|
|
174
|
+
color: var(--stsv-input__color--hover);
|
|
187
175
|
}
|
|
188
176
|
|
|
189
177
|
.sterling-field.using-keyboard:focus-within {
|
|
190
|
-
border-color: var(--stsv-
|
|
191
|
-
color: var(--stsv-
|
|
192
|
-
outline-color: var(--stsv-
|
|
193
|
-
outline-offset: var(--stsv-
|
|
194
|
-
outline-style: var(--stsv-
|
|
195
|
-
outline-width: var(--stsv-
|
|
178
|
+
border-color: var(--stsv-input__border-color--focus);
|
|
179
|
+
color: var(--stsv-input__color--focus);
|
|
180
|
+
outline-color: var(--stsv-common__outline-color);
|
|
181
|
+
outline-offset: var(--stsv-common__outline-offset);
|
|
182
|
+
outline-style: var(--stsv-common__outline-style);
|
|
183
|
+
outline-width: var(--stsv-common__outline-width);
|
|
196
184
|
}
|
|
197
185
|
|
|
198
186
|
.sterling-field.disabled {
|
|
@@ -204,7 +192,7 @@ const onClick = () => {
|
|
|
204
192
|
}
|
|
205
193
|
|
|
206
194
|
.label-text {
|
|
207
|
-
color: var(--stsv-
|
|
195
|
+
color: var(--stsv-common__color--secondary);
|
|
208
196
|
font-size: 0.8em;
|
|
209
197
|
margin: 0.5em 0.7em 0.2em 0.2em;
|
|
210
198
|
}
|
|
@@ -220,35 +208,35 @@ const onClick = () => {
|
|
|
220
208
|
.message {
|
|
221
209
|
box-sizing: border-box;
|
|
222
210
|
font-size: 0.8em;
|
|
223
|
-
background-color: var(--stsv-
|
|
224
|
-
color: var(--stsv-
|
|
211
|
+
background-color: var(--stsv-common__background-color--secondary);
|
|
212
|
+
color: var(--stsv-common__color--secondary);
|
|
225
213
|
padding: 0.5em;
|
|
226
214
|
width: 100%;
|
|
227
215
|
transition: background-color 250ms, color 250ms, border-color 250ms;
|
|
228
216
|
}
|
|
229
217
|
|
|
230
218
|
.message.info {
|
|
231
|
-
background-color: var(--stsv-
|
|
232
|
-
border-color: var(--stsv-
|
|
233
|
-
color: var(--stsv-
|
|
219
|
+
background-color: var(--stsv-status--info__background-color);
|
|
220
|
+
border-color: var(--stsv-status--info__border-color);
|
|
221
|
+
color: var(--stsv-status--info__color);
|
|
234
222
|
}
|
|
235
223
|
|
|
236
224
|
.message.success {
|
|
237
|
-
background-color: var(--stsv-
|
|
238
|
-
border-color: var(--stsv-
|
|
239
|
-
color: var(--stsv-
|
|
225
|
+
background-color: var(--stsv-status--success__background-color);
|
|
226
|
+
border-color: var(--stsv-status--success__border-color);
|
|
227
|
+
color: var(--stsv-status--success__color);
|
|
240
228
|
}
|
|
241
229
|
|
|
242
230
|
.message.warning {
|
|
243
|
-
background-color: var(--stsv-
|
|
244
|
-
border-color: var(--stsv-
|
|
245
|
-
color: var(--stsv-
|
|
231
|
+
background-color: var(--stsv-status--warning__background-color);
|
|
232
|
+
border-color: var(--stsv-status--warning__border-color);
|
|
233
|
+
color: var(--stsv-status--warning__color);
|
|
246
234
|
}
|
|
247
235
|
|
|
248
236
|
.message.error {
|
|
249
|
-
background-color: var(--stsv-
|
|
250
|
-
border-color: var(--
|
|
251
|
-
color: var(--stsv-
|
|
237
|
+
background-color: var(--stsv-status--error__background-color);
|
|
238
|
+
border-color: var(--stsv_--error-color);
|
|
239
|
+
color: var(--stsv-status--error__color);
|
|
252
240
|
}
|
|
253
241
|
|
|
254
242
|
.required {
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
<script>import { createEventDispatcher } from "svelte";
|
|
2
|
+
import Input from "./Input.svelte";
|
|
3
|
+
import Slider from "./Slider.svelte";
|
|
4
|
+
export let red = 0;
|
|
5
|
+
export let green = 0;
|
|
6
|
+
export let blue = 0;
|
|
7
|
+
export let alpha = 255;
|
|
8
|
+
export let colorful = false;
|
|
9
|
+
let redText = red.toString(16).padStart(2, "0");
|
|
10
|
+
let greenText = green.toString(16).padStart(2, "0");
|
|
11
|
+
let blueText = blue.toString(16).padStart(2, "0");
|
|
12
|
+
let alphaText = alpha.toString(16).padStart(2, "0");
|
|
13
|
+
$: {
|
|
14
|
+
redText = red.toString(16).padStart(2, "0");
|
|
15
|
+
}
|
|
16
|
+
$: {
|
|
17
|
+
greenText = green.toString(16).padStart(2, "0");
|
|
18
|
+
}
|
|
19
|
+
$: {
|
|
20
|
+
blueText = blue.toString(16).padStart(2, "0");
|
|
21
|
+
}
|
|
22
|
+
$: {
|
|
23
|
+
alphaText = alpha.toString(16).padStart(2, "0");
|
|
24
|
+
}
|
|
25
|
+
const dispatcher = createEventDispatcher();
|
|
26
|
+
const raiseChange = () => {
|
|
27
|
+
dispatcher("change", { red, green, blue, alpha });
|
|
28
|
+
};
|
|
29
|
+
$:
|
|
30
|
+
red, green, blue, alpha, raiseChange();
|
|
31
|
+
const onRedInputChange = (event) => {
|
|
32
|
+
const inputChangeEvent = event;
|
|
33
|
+
const text = inputChangeEvent?.currentTarget?.value;
|
|
34
|
+
red = text ? Number.parseInt(text, 16) : red;
|
|
35
|
+
};
|
|
36
|
+
const onGreenInputChange = (event) => {
|
|
37
|
+
const inputChangeEvent = event;
|
|
38
|
+
const text = inputChangeEvent?.currentTarget?.value;
|
|
39
|
+
green = text ? Number.parseInt(text, 16) : green;
|
|
40
|
+
};
|
|
41
|
+
const onBlueInputChange = (event) => {
|
|
42
|
+
const inputChangeEvent = event;
|
|
43
|
+
const text = inputChangeEvent?.currentTarget?.value;
|
|
44
|
+
blue = text ? Number.parseInt(text, 16) : blue;
|
|
45
|
+
};
|
|
46
|
+
const onAlphaInputchange = (event) => {
|
|
47
|
+
const inputChangeEvent = event;
|
|
48
|
+
const text = inputChangeEvent?.currentTarget?.value;
|
|
49
|
+
alpha = text ? Number.parseInt(text, 16) : alpha;
|
|
50
|
+
};
|
|
51
|
+
</script>
|
|
52
|
+
|
|
53
|
+
<div class="sterling-rgb-color-sliders">
|
|
54
|
+
<div class="slider red-slider">
|
|
55
|
+
<Slider {colorful} min={0} max={255} precision={0} bind:value={red} />
|
|
56
|
+
</div>
|
|
57
|
+
<Input {colorful} bind:value={redText} on:change={(e) => onRedInputChange(e)} />
|
|
58
|
+
<div class="slider green-slider">
|
|
59
|
+
<Slider {colorful} min={0} max={255} precision={0} bind:value={green} />
|
|
60
|
+
</div>
|
|
61
|
+
<Input {colorful} bind:value={greenText} on:change={(e) => onGreenInputChange(e)} />
|
|
62
|
+
<div class="slider blue-slider">
|
|
63
|
+
<Slider {colorful} min={0} max={255} precision={0} bind:value={blue} />
|
|
64
|
+
</div>
|
|
65
|
+
<Input {colorful} bind:value={blueText} on:change={(e) => onBlueInputChange(e)} />
|
|
66
|
+
<div class="alpha" style={`--red:${red};--green:${green};--blue:${blue}`}>
|
|
67
|
+
<div class="alpha-hatch" />
|
|
68
|
+
<div class="alpha-gradient" />
|
|
69
|
+
<div class="slider alpha-slider">
|
|
70
|
+
<Slider {colorful} min={0} max={255} precision={0} bind:value={alpha} />
|
|
71
|
+
</div>
|
|
72
|
+
</div>
|
|
73
|
+
<Input {colorful} bind:value={alphaText} on:change={(e) => onAlphaInputchange(e)} />
|
|
74
|
+
</div>
|
|
75
|
+
|
|
76
|
+
<style>
|
|
77
|
+
.sterling-rgb-color-sliders {
|
|
78
|
+
align-items: center;
|
|
79
|
+
display: grid;
|
|
80
|
+
grid-template-columns: 1fr 4em;
|
|
81
|
+
column-gap: 0.5em;
|
|
82
|
+
row-gap: 0.25em;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.slider :global(.fill),
|
|
86
|
+
.slider :global(.sterling-slider.colorful .fill) {
|
|
87
|
+
background-color: transparent;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.slider :global(.track),
|
|
91
|
+
.slider :global(.sterling-slider.colorful .track) {
|
|
92
|
+
background-color: transparent;
|
|
93
|
+
background-image: linear-gradient(to right, #ffffff, #ffffff 1px, #000000 1px, #000000);
|
|
94
|
+
background-size: 2px 100%;
|
|
95
|
+
opacity: 0.1;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.red-slider {
|
|
99
|
+
background: linear-gradient(to right, black 0%, rgb(255, 0, 0) 100%);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.green-slider {
|
|
103
|
+
background: linear-gradient(to right, black 0%, rgb(0, 255, 0) 100%);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.blue-slider {
|
|
107
|
+
background: linear-gradient(to right, black 0%, rgb(0, 0, 255) 100%);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.alpha {
|
|
111
|
+
display: grid;
|
|
112
|
+
grid-template-columns: 1fr;
|
|
113
|
+
grid-template-rows: 1fr;
|
|
114
|
+
place-content: stretch;
|
|
115
|
+
place-items: stretch;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.alpha-gradient,
|
|
119
|
+
.alpha-hatch,
|
|
120
|
+
.alpha-slider {
|
|
121
|
+
grid-row: 1 / span 1;
|
|
122
|
+
grid-column: 1 / span 1;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.alpha-hatch {
|
|
126
|
+
background-color: #eee;
|
|
127
|
+
opacity: 0.1;
|
|
128
|
+
background-image: repeating-linear-gradient(
|
|
129
|
+
45deg,
|
|
130
|
+
#444 25%,
|
|
131
|
+
transparent 25%,
|
|
132
|
+
transparent 75%,
|
|
133
|
+
#444 75%,
|
|
134
|
+
#444
|
|
135
|
+
),
|
|
136
|
+
repeating-linear-gradient(45deg, #444 25%, #eee 25%, #eee 75%, #444 75%, #444),
|
|
137
|
+
repeating-linear-gradient(-45deg, #444 25%, transparent 25%, transparent 75%, #444 75%, #444),
|
|
138
|
+
repeating-linear-gradient(-45deg, #444 25%, #eee 25%, #eee 75%, #444 75%, #444);
|
|
139
|
+
background-position: 0 0, 4px 4px;
|
|
140
|
+
background-size: 8px 8px;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
.alpha-gradient {
|
|
144
|
+
background: linear-gradient(
|
|
145
|
+
to right,
|
|
146
|
+
rgba(var(--red), var(--green), var(--blue), 0) 0%,
|
|
147
|
+
rgba(var(--red), var(--green), var(--blue), 100) 100%
|
|
148
|
+
);
|
|
149
|
+
}
|
|
150
|
+
</style>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {
|
|
4
|
+
red?: number | undefined;
|
|
5
|
+
green?: number | undefined;
|
|
6
|
+
blue?: number | undefined;
|
|
7
|
+
alpha?: number | undefined;
|
|
8
|
+
colorful?: boolean | undefined;
|
|
9
|
+
};
|
|
10
|
+
events: {
|
|
11
|
+
change: CustomEvent<any>;
|
|
12
|
+
} & {
|
|
13
|
+
[evt: string]: CustomEvent<any>;
|
|
14
|
+
};
|
|
15
|
+
slots: {};
|
|
16
|
+
};
|
|
17
|
+
export type HexColorSlidersProps = typeof __propDef.props;
|
|
18
|
+
export type HexColorSlidersEvents = typeof __propDef.events;
|
|
19
|
+
export type HexColorSlidersSlots = typeof __propDef.slots;
|
|
20
|
+
export default class HexColorSliders extends SvelteComponentTyped<HexColorSlidersProps, HexColorSlidersEvents, HexColorSlidersSlots> {
|
|
21
|
+
}
|
|
22
|
+
export {};
|