@geoffcox/sterling-svelte 0.0.26 → 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 +87 -55
- package/Dropdown.svelte.d.ts +4 -0
- package/Field.svelte +31 -31
- 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 +28 -16
- 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 +7 -7
- package/MenuBar.svelte +1 -1
- package/MenuButton.svelte +3 -5
- package/MenuItem.svelte +33 -11
- package/MenuItem.svelte.d.ts +1 -0
- package/MenuItemDisplay.svelte +7 -1
- package/MenuSeparator.svelte +3 -3
- package/Popover.svelte +66 -51
- 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 +30 -24
- 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 +52 -29
- package/TabList.svelte +21 -10
- package/TabList.svelte.d.ts +1 -0
- package/TabList.types.d.ts +1 -0
- package/TextArea.svelte +45 -20
- package/TextArea.svelte.d.ts +3 -2
- package/Tooltip.svelte +12 -11
- package/Tree.svelte +34 -21
- package/Tree.svelte.d.ts +2 -0
- package/Tree.types.d.ts +1 -0
- package/TreeChevron.svelte +1 -1
- package/TreeItem.svelte +40 -9
- 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 +8 -3
- package/index.js +7 -2
- package/package.json +10 -1
- 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/ListItem.svelte
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
<script>import { getContext } from "svelte";
|
|
2
2
|
import { LIST_CONTEXT_KEY } from "./List.constants";
|
|
3
|
-
import { readable } from "svelte/store";
|
|
3
|
+
import { readable, writable } from "svelte/store";
|
|
4
4
|
export let disabled = false;
|
|
5
5
|
export let value;
|
|
6
6
|
const {
|
|
7
|
+
colorful,
|
|
7
8
|
disabled: listDisabled,
|
|
8
9
|
selectedValue,
|
|
9
10
|
horizontal
|
|
10
11
|
} = getContext(LIST_CONTEXT_KEY) || {
|
|
12
|
+
colorful: readable(false),
|
|
11
13
|
disabled: readable(false),
|
|
12
|
-
selectedValue: void 0,
|
|
13
|
-
horizontal: false
|
|
14
|
+
selectedValue: writable(void 0),
|
|
15
|
+
horizontal: readable(false)
|
|
14
16
|
};
|
|
15
17
|
let itemRef;
|
|
16
18
|
$:
|
|
@@ -30,6 +32,7 @@ export const focus = (options) => {
|
|
|
30
32
|
aria-selected={selected}
|
|
31
33
|
bind:this={itemRef}
|
|
32
34
|
class="sterling-list-item"
|
|
35
|
+
class:colorful={$colorful}
|
|
33
36
|
class:disabled={disabled || $listDisabled}
|
|
34
37
|
class:item-disabled={disabled && !$listDisabled}
|
|
35
38
|
class:selected
|
|
@@ -65,7 +68,7 @@ export const focus = (options) => {
|
|
|
65
68
|
on:pointerover
|
|
66
69
|
on:pointerout
|
|
67
70
|
on:pointerup
|
|
68
|
-
on:wheel
|
|
71
|
+
on:wheel|passive
|
|
69
72
|
{...$$restProps}
|
|
70
73
|
>
|
|
71
74
|
<slot {disabled} {horizontal} {selected} {value}>{value}</slot>
|
|
@@ -75,7 +78,7 @@ export const focus = (options) => {
|
|
|
75
78
|
.sterling-list-item {
|
|
76
79
|
background-color: transparent;
|
|
77
80
|
box-sizing: border-box;
|
|
78
|
-
color: var(--stsv-
|
|
81
|
+
color: var(--stsv-common__color);
|
|
79
82
|
cursor: pointer;
|
|
80
83
|
margin: 0;
|
|
81
84
|
padding: 0.5em;
|
|
@@ -87,13 +90,23 @@ export const focus = (options) => {
|
|
|
87
90
|
}
|
|
88
91
|
|
|
89
92
|
.sterling-list-item:not(.disabled):not(.selected):hover {
|
|
90
|
-
background-color: var(--stsv-
|
|
91
|
-
color: var(--stsv-
|
|
93
|
+
background-color: var(--stsv-button__background-color--hover);
|
|
94
|
+
color: var(--stsv-button__color--hover);
|
|
92
95
|
}
|
|
93
96
|
|
|
94
97
|
.sterling-list-item.selected {
|
|
95
|
-
background-color: var(--stsv-
|
|
96
|
-
color: var(--stsv-
|
|
98
|
+
background-color: var(--stsv-button__background-color--active);
|
|
99
|
+
color: var(--stsv-button__color--active);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.sterling-list-item.colorful:not(.disabled):not(.selected):hover {
|
|
103
|
+
background-color: var(--stsv-button--colorful__background-color--hover);
|
|
104
|
+
color: var(--stsv-button--colorful__color--hover);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.sterling-list-item.colorful.selected {
|
|
108
|
+
background-color: var(--stsv-button--colorful__background-color--active);
|
|
109
|
+
color: var(--stsv-button--colorful__color--active);
|
|
97
110
|
}
|
|
98
111
|
|
|
99
112
|
.sterling-list-item.disabled {
|
|
@@ -102,7 +115,13 @@ export const focus = (options) => {
|
|
|
102
115
|
}
|
|
103
116
|
|
|
104
117
|
.sterling-list-item::after {
|
|
105
|
-
background:
|
|
118
|
+
background: repeating-linear-gradient(
|
|
119
|
+
45deg,
|
|
120
|
+
var(--stsv-common__background-color1--disabled),
|
|
121
|
+
var(--stsv-common__background-color1--disabled) 3px,
|
|
122
|
+
var(--stsv-common__background-color2--disabled) 3px,
|
|
123
|
+
var(--stsv-common__background-color2--disabled) 6px
|
|
124
|
+
);
|
|
106
125
|
bottom: 0;
|
|
107
126
|
content: '';
|
|
108
127
|
left: 0;
|
package/ListItem.svelte.d.ts
CHANGED
package/Menu.svelte
CHANGED
|
@@ -93,7 +93,7 @@ export const focusLastMenuItem = () => {
|
|
|
93
93
|
on:mouseout
|
|
94
94
|
on:mouseup
|
|
95
95
|
on:scroll
|
|
96
|
-
on:wheel
|
|
96
|
+
on:wheel|passive
|
|
97
97
|
on:paste
|
|
98
98
|
{...$$restProps}
|
|
99
99
|
>
|
|
@@ -104,11 +104,11 @@ export const focusLastMenuItem = () => {
|
|
|
104
104
|
|
|
105
105
|
<style>
|
|
106
106
|
.sterling-menu {
|
|
107
|
-
background-color: var(--stsv-
|
|
108
|
-
border-color: var(--stsv-
|
|
109
|
-
border-radius: var(--stsv-
|
|
110
|
-
border-style: var(--stsv-
|
|
111
|
-
border-width: var(--stsv-
|
|
107
|
+
background-color: var(--stsv-common__background-color);
|
|
108
|
+
border-color: var(--stsv-common__border-color);
|
|
109
|
+
border-radius: var(--stsv-common__border-radius);
|
|
110
|
+
border-style: var(--stsv-common__border-style);
|
|
111
|
+
border-width: var(--stsv-common__border-width);
|
|
112
112
|
box-sizing: border-box;
|
|
113
113
|
display: grid;
|
|
114
114
|
grid-template-columns: 1fr;
|
|
@@ -121,6 +121,6 @@ export const focusLastMenuItem = () => {
|
|
|
121
121
|
display: grid;
|
|
122
122
|
grid-template-columns: 1fr;
|
|
123
123
|
grid-template-rows: auto;
|
|
124
|
-
row-gap: calc(2 * var(--stsv-
|
|
124
|
+
row-gap: calc(2 * var(--stsv-common__outline-width));
|
|
125
125
|
}
|
|
126
126
|
</style>
|
package/MenuBar.svelte
CHANGED
package/MenuButton.svelte
CHANGED
|
@@ -6,7 +6,6 @@ import { MENU_ITEM_CONTEXT_KEY } from "./MenuItem.constants";
|
|
|
6
6
|
import { idGenerator } from "./idGenerator";
|
|
7
7
|
import Popover from "./Popover.svelte";
|
|
8
8
|
import { clickOutside } from "./actions/clickOutside";
|
|
9
|
-
import { usingKeyboard } from "./stores/usingKeyboard";
|
|
10
9
|
export let open = false;
|
|
11
10
|
export let shape = "rounded";
|
|
12
11
|
export let value;
|
|
@@ -46,10 +45,8 @@ export const focus = (options) => {
|
|
|
46
45
|
const onClick = async () => {
|
|
47
46
|
if (!open) {
|
|
48
47
|
openValues.set(["menu-button"]);
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
menuRef?.focusFirstMenuItem();
|
|
52
|
-
}
|
|
48
|
+
await tick();
|
|
49
|
+
menuRef?.focusFirstMenuItem();
|
|
53
50
|
} else {
|
|
54
51
|
open = false;
|
|
55
52
|
openValues.set([]);
|
|
@@ -78,6 +75,7 @@ const onClickOutside = (event) => {
|
|
|
78
75
|
closeAllMenus?.();
|
|
79
76
|
};
|
|
80
77
|
setContext(MENU_ITEM_CONTEXT_KEY, {
|
|
78
|
+
depth: 1,
|
|
81
79
|
openValues,
|
|
82
80
|
rootValue: value,
|
|
83
81
|
closeContainingMenu: () => {
|
package/MenuItem.svelte
CHANGED
|
@@ -16,6 +16,7 @@ import MenuItemDisplay from "./MenuItemDisplay.svelte";
|
|
|
16
16
|
import Popover from "./Popover.svelte";
|
|
17
17
|
import { usingKeyboard } from "./stores/usingKeyboard";
|
|
18
18
|
export let checked = false;
|
|
19
|
+
export let colorful = false;
|
|
19
20
|
export let composed = false;
|
|
20
21
|
export let disabled = false;
|
|
21
22
|
export let value;
|
|
@@ -258,6 +259,7 @@ setContext(MENU_ITEM_CONTEXT_KEY, {
|
|
|
258
259
|
aria-owns={menuId}
|
|
259
260
|
bind:this={menuItemRef}
|
|
260
261
|
class="sterling-menu-item"
|
|
262
|
+
class:colorful
|
|
261
263
|
class:composed
|
|
262
264
|
class:using-keyboard={usingKeyboard}
|
|
263
265
|
data-value={value}
|
|
@@ -296,7 +298,7 @@ setContext(MENU_ITEM_CONTEXT_KEY, {
|
|
|
296
298
|
on:pointerover
|
|
297
299
|
on:pointerout
|
|
298
300
|
on:pointerup
|
|
299
|
-
on:wheel
|
|
301
|
+
on:wheel|passive
|
|
300
302
|
on:click={onClick}
|
|
301
303
|
on:keydown={onKeyDown}
|
|
302
304
|
on:mouseenter={onMouseEnter}
|
|
@@ -337,11 +339,11 @@ setContext(MENU_ITEM_CONTEXT_KEY, {
|
|
|
337
339
|
.sterling-menu-item {
|
|
338
340
|
background-color: transparent;
|
|
339
341
|
border-color: transparent;
|
|
340
|
-
border-radius: var(--stsv-
|
|
342
|
+
border-radius: var(--stsv-button__border-radius);
|
|
341
343
|
border-style: none;
|
|
342
344
|
border-width: 0;
|
|
343
345
|
box-sizing: border-box;
|
|
344
|
-
color: var(--stsv-
|
|
346
|
+
color: var(--stsv-common__color);
|
|
345
347
|
cursor: pointer;
|
|
346
348
|
font: inherit;
|
|
347
349
|
margin: 0;
|
|
@@ -357,8 +359,8 @@ setContext(MENU_ITEM_CONTEXT_KEY, {
|
|
|
357
359
|
}
|
|
358
360
|
|
|
359
361
|
.sterling-menu-item:hover {
|
|
360
|
-
background-color: var(--stsv-
|
|
361
|
-
color: var(--stsv-
|
|
362
|
+
background-color: var(--stsv-button__background-color--hover);
|
|
363
|
+
color: var(--stsv-button__color--hover);
|
|
362
364
|
}
|
|
363
365
|
|
|
364
366
|
.sterling-menu-item:focus {
|
|
@@ -366,15 +368,35 @@ setContext(MENU_ITEM_CONTEXT_KEY, {
|
|
|
366
368
|
}
|
|
367
369
|
|
|
368
370
|
.sterling-menu-item.using-keyboard:focus {
|
|
369
|
-
border-color: var(--stsv-
|
|
370
|
-
outline-color: var(--stsv-
|
|
371
|
-
outline-offset: var(--stsv-
|
|
372
|
-
outline-style: var(--stsv-
|
|
373
|
-
outline-width: var(--stsv-
|
|
371
|
+
border-color: var(--stsv-button__border-color--focus);
|
|
372
|
+
outline-color: var(--stsv-common__outline-color);
|
|
373
|
+
outline-offset: var(--stsv-common__outline-offset);
|
|
374
|
+
outline-style: var(--stsv-common__outline-style);
|
|
375
|
+
outline-width: var(--stsv-common__outline-width);
|
|
374
376
|
}
|
|
375
377
|
|
|
376
378
|
.sterling-menu-item:focus {
|
|
377
|
-
background-color: var(--stsv-
|
|
379
|
+
background-color: var(--stsv-input__background-color--selected);
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
/** ----- colorful ----- */
|
|
383
|
+
|
|
384
|
+
.sterling-menu-item.colorful {
|
|
385
|
+
color: var(--stsv-common--colorful__color);
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
.sterling-menu-item.colorful:hover {
|
|
389
|
+
background-color: var(--stsv-button--colorful__background-color--hover);
|
|
390
|
+
color: var(--stsv-button--colorful__color--hover);
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
.sterling-menu-item.colorful.using-keyboard:focus {
|
|
394
|
+
border-color: var(--stsv-button--colorful__border-color--focus);
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
.sterling-menu-item.colorful:focus {
|
|
398
|
+
background-color: var(--stsv-button--colorful__background-color--focus);
|
|
399
|
+
color: var(--stsv-button--colorful__color--focus);
|
|
378
400
|
}
|
|
379
401
|
|
|
380
402
|
.sterling-menu-item.composed,
|
package/MenuItem.svelte.d.ts
CHANGED
package/MenuItemDisplay.svelte
CHANGED
|
@@ -103,7 +103,13 @@ export let menuItemRole = "menuitem";
|
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
.sterling-menu-item-display::after {
|
|
106
|
-
background:
|
|
106
|
+
background: repeating-linear-gradient(
|
|
107
|
+
45deg,
|
|
108
|
+
var(--stsv-common__background-color1--disabled),
|
|
109
|
+
var(--stsv-common__background-color1--disabled) 3px,
|
|
110
|
+
var(--stsv-common__background-color2--disabled) 3px,
|
|
111
|
+
var(--stsv-common__background-color2--disabled) 6px
|
|
112
|
+
);
|
|
107
113
|
bottom: 0;
|
|
108
114
|
content: '';
|
|
109
115
|
left: 0;
|
package/MenuSeparator.svelte
CHANGED
|
@@ -35,14 +35,14 @@ A styled line to visually separate menu items in a menu.
|
|
|
35
35
|
on:pointerover
|
|
36
36
|
on:pointerout
|
|
37
37
|
on:pointerup
|
|
38
|
-
on:wheel
|
|
38
|
+
on:wheel|passive
|
|
39
39
|
{...$$restProps}
|
|
40
40
|
/>
|
|
41
41
|
|
|
42
42
|
<style>
|
|
43
43
|
.sterling-menu-item-separator {
|
|
44
|
-
height: var(--stsv-
|
|
45
|
-
background-color: var(--stsv-
|
|
44
|
+
height: var(--stsv-common__border-width);
|
|
45
|
+
background-color: var(--stsv-common__border-color);
|
|
46
46
|
margin: 0.1em 0;
|
|
47
47
|
}
|
|
48
48
|
</style>
|
package/Popover.svelte
CHANGED
|
@@ -1,31 +1,37 @@
|
|
|
1
1
|
<script>import { onMount } from "svelte";
|
|
2
2
|
import { autoUpdate, computePosition, flip, offset } from "@floating-ui/dom";
|
|
3
3
|
import { portal } from "./actions/portal";
|
|
4
|
-
export let
|
|
4
|
+
export let offsetOptions = { mainAxis: 0, crossAxis: 0 };
|
|
5
5
|
export let open = false;
|
|
6
|
-
export let
|
|
6
|
+
export let persistent = false;
|
|
7
|
+
export let placement = "bottom-start";
|
|
7
8
|
export let portalHost = void 0;
|
|
9
|
+
export let reference;
|
|
8
10
|
let popupRef;
|
|
9
11
|
let popupPosition = { x: 0, y: 0 };
|
|
10
12
|
const hostId = "SterlingPopoverPortal";
|
|
11
13
|
const ensurePortalHost = () => {
|
|
12
|
-
if (
|
|
13
|
-
|
|
14
|
+
if (document) {
|
|
15
|
+
if (portalHost) {
|
|
16
|
+
return portalHost;
|
|
17
|
+
}
|
|
18
|
+
let host = document.querySelector(`#${hostId}`);
|
|
19
|
+
if (!host) {
|
|
20
|
+
console.log("creating portal host");
|
|
21
|
+
host = document.createElement("div");
|
|
22
|
+
host.id = hostId;
|
|
23
|
+
host.style.overflow = "visible";
|
|
24
|
+
document.body.append(host);
|
|
25
|
+
}
|
|
26
|
+
portalHost = host;
|
|
14
27
|
}
|
|
15
|
-
let host = document.querySelector(`#${hostId}`);
|
|
16
|
-
if (!host) {
|
|
17
|
-
host = document.createElement("div");
|
|
18
|
-
host.id = hostId;
|
|
19
|
-
host.style.overflow = "visible";
|
|
20
|
-
document.body.append(host);
|
|
21
|
-
}
|
|
22
|
-
portalHost = host;
|
|
23
28
|
};
|
|
24
29
|
let bodyHeight = 0;
|
|
25
30
|
const resizeObserver = new ResizeObserver((entries) => {
|
|
26
31
|
bodyHeight = entries[0].target.clientHeight;
|
|
27
32
|
});
|
|
28
|
-
|
|
33
|
+
$:
|
|
34
|
+
middleware = [offset(offsetOptions), flip()];
|
|
29
35
|
const computePopupPosition = async () => {
|
|
30
36
|
if (reference && popupRef) {
|
|
31
37
|
popupPosition = await computePosition(reference, popupRef, {
|
|
@@ -47,7 +53,7 @@ const autoUpdateMenuPosition = () => {
|
|
|
47
53
|
$:
|
|
48
54
|
popupRef, reference, autoUpdateMenuPosition();
|
|
49
55
|
$:
|
|
50
|
-
open, bodyHeight, placement, computePopupPosition();
|
|
56
|
+
open, bodyHeight, middleware, placement, computePopupPosition();
|
|
51
57
|
onMount(() => {
|
|
52
58
|
ensurePortalHost();
|
|
53
59
|
resizeObserver.observe(document.body);
|
|
@@ -55,46 +61,55 @@ onMount(() => {
|
|
|
55
61
|
resizeObserver.unobserve(document.body);
|
|
56
62
|
};
|
|
57
63
|
});
|
|
64
|
+
const onKeydown = (event) => {
|
|
65
|
+
if (event.key === "Escape") {
|
|
66
|
+
open = false;
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
ensurePortalHost();
|
|
58
70
|
</script>
|
|
59
71
|
|
|
60
|
-
|
|
61
|
-
<div
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
72
|
+
{#if open || persistent}
|
|
73
|
+
<div use:portal={{ target: portalHost ?? document.body }} class="sterling-popover-portal">
|
|
74
|
+
<div
|
|
75
|
+
bind:this={popupRef}
|
|
76
|
+
class="sterling-popover"
|
|
77
|
+
class:open
|
|
78
|
+
on:blur
|
|
79
|
+
on:click
|
|
80
|
+
on:copy
|
|
81
|
+
on:cut
|
|
82
|
+
on:dblclick
|
|
83
|
+
on:dragend
|
|
84
|
+
on:dragenter
|
|
85
|
+
on:dragleave
|
|
86
|
+
on:dragover
|
|
87
|
+
on:dragstart
|
|
88
|
+
on:drop
|
|
89
|
+
on:focus
|
|
90
|
+
on:focusin
|
|
91
|
+
on:focusout
|
|
92
|
+
on:keydown
|
|
93
|
+
on:keypress
|
|
94
|
+
on:keyup
|
|
95
|
+
on:mousedown
|
|
96
|
+
on:mouseenter
|
|
97
|
+
on:mouseleave
|
|
98
|
+
on:mousemove
|
|
99
|
+
on:mouseover
|
|
100
|
+
on:mouseout
|
|
101
|
+
on:mouseup
|
|
102
|
+
on:scroll
|
|
103
|
+
on:wheel|passive
|
|
104
|
+
on:paste
|
|
105
|
+
on:keydown={onKeydown}
|
|
106
|
+
{...$$restProps}
|
|
107
|
+
style="left:{popupPosition.x}px; top:{popupPosition.y}px"
|
|
108
|
+
>
|
|
109
|
+
<slot />
|
|
110
|
+
</div>
|
|
96
111
|
</div>
|
|
97
|
-
|
|
112
|
+
{/if}
|
|
98
113
|
|
|
99
114
|
<style>
|
|
100
115
|
.sterling-popover-portal {
|
package/Popover.svelte.d.ts
CHANGED
|
@@ -3,10 +3,12 @@ import type { Placement } from '@floating-ui/dom';
|
|
|
3
3
|
declare const __propDef: {
|
|
4
4
|
props: {
|
|
5
5
|
[x: string]: any;
|
|
6
|
-
|
|
6
|
+
offsetOptions?: import("@floating-ui/core").OffsetOptions | undefined;
|
|
7
7
|
open?: boolean | undefined;
|
|
8
|
-
|
|
8
|
+
persistent?: boolean | undefined;
|
|
9
|
+
placement?: Placement | undefined;
|
|
9
10
|
portalHost?: HTMLElement | undefined;
|
|
11
|
+
reference: HTMLElement;
|
|
10
12
|
};
|
|
11
13
|
events: {
|
|
12
14
|
blur: FocusEvent;
|
package/Progress.svelte
CHANGED
|
@@ -67,7 +67,7 @@ $:
|
|
|
67
67
|
on:pointerover
|
|
68
68
|
on:pointerout
|
|
69
69
|
on:pointerup
|
|
70
|
-
on:wheel
|
|
70
|
+
on:wheel|passive
|
|
71
71
|
{...$$restProps}
|
|
72
72
|
>
|
|
73
73
|
<div class="container" bind:clientWidth bind:clientHeight>
|
|
@@ -89,14 +89,14 @@ $:
|
|
|
89
89
|
align-content: flex-start;
|
|
90
90
|
align-items: flex-start;
|
|
91
91
|
display: block;
|
|
92
|
-
background: var(--stsv-
|
|
92
|
+
background: var(--stsv-common__background-color);
|
|
93
93
|
box-sizing: border-box;
|
|
94
94
|
height: 1em;
|
|
95
95
|
padding: 0.25em;
|
|
96
|
-
border-width: var(--stsv-
|
|
97
|
-
border-style: var(--stsv-
|
|
98
|
-
border-color: var(--stsv-
|
|
99
|
-
border-radius: var(--stsv-
|
|
96
|
+
border-width: var(--stsv-common__border-width);
|
|
97
|
+
border-style: var(--stsv-common__border-style);
|
|
98
|
+
border-color: var(--stsv-common__border-color);
|
|
99
|
+
border-radius: var(--stsv-common__border-radius);
|
|
100
100
|
transition: background-color 250ms, color 250ms, border-color 250ms;
|
|
101
101
|
}
|
|
102
102
|
|
|
@@ -108,7 +108,7 @@ $:
|
|
|
108
108
|
}
|
|
109
109
|
|
|
110
110
|
.indicator {
|
|
111
|
-
background-color: var(--stsv-
|
|
111
|
+
background-color: var(--stsv-common__border-color);
|
|
112
112
|
box-sizing: border-box;
|
|
113
113
|
height: 100%;
|
|
114
114
|
min-height: 1px;
|
|
@@ -140,30 +140,30 @@ $:
|
|
|
140
140
|
/* ----- Colorful ----- */
|
|
141
141
|
|
|
142
142
|
.indicator.info {
|
|
143
|
-
background-color: var(--stsv-
|
|
143
|
+
background-color: var(--stsv-status--info__border-color);
|
|
144
144
|
}
|
|
145
145
|
|
|
146
146
|
.indicator.success {
|
|
147
|
-
background-color: var(--stsv-
|
|
147
|
+
background-color: var(--stsv-status--success__border-color);
|
|
148
148
|
}
|
|
149
149
|
|
|
150
150
|
.indicator.warning {
|
|
151
|
-
background-color: var(--stsv-
|
|
151
|
+
background-color: var(--stsv-status--warning__border-color);
|
|
152
152
|
}
|
|
153
153
|
|
|
154
154
|
.indicator.error {
|
|
155
|
-
background-color: var(--stsv-
|
|
155
|
+
background-color: var(--stsv-status--error__border-color);
|
|
156
156
|
}
|
|
157
157
|
|
|
158
158
|
/* ----- Disabled ----- */
|
|
159
159
|
|
|
160
160
|
.sterling-progress.disabled {
|
|
161
|
-
background: var(--stsv-
|
|
162
|
-
border-color: var(--stsv-
|
|
161
|
+
background: var(--stsv-common__background-color--disabled);
|
|
162
|
+
border-color: var(--stsv-common__border-color--disabled);
|
|
163
163
|
}
|
|
164
164
|
|
|
165
165
|
.sterling-progress.disabled .indicator {
|
|
166
|
-
background-color: var(--stsv-
|
|
166
|
+
background-color: var(--stsv-common__color--disabled);
|
|
167
167
|
}
|
|
168
168
|
|
|
169
169
|
@media (prefers-reduced-motion) {
|
package/Radio.svelte
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<script>import { idGenerator } from "./idGenerator";
|
|
2
2
|
import Label from "./Label.svelte";
|
|
3
|
+
export let colorful = false;
|
|
3
4
|
export let checked = false;
|
|
4
5
|
export let disabled = false;
|
|
5
6
|
export let group = void 0;
|
|
@@ -59,7 +60,7 @@ const onChange = (e) => {
|
|
|
59
60
|
@component
|
|
60
61
|
A styled HTML input type=radio element with optional label.
|
|
61
62
|
-->
|
|
62
|
-
<div class="sterling-radio" class:disabled>
|
|
63
|
+
<div class="sterling-radio" class:colorful class:disabled>
|
|
63
64
|
<div class="container">
|
|
64
65
|
<input
|
|
65
66
|
bind:this={inputRef}
|
|
@@ -93,7 +94,7 @@ const onChange = (e) => {
|
|
|
93
94
|
on:mouseover
|
|
94
95
|
on:mouseout
|
|
95
96
|
on:mouseup
|
|
96
|
-
on:wheel
|
|
97
|
+
on:wheel|passive
|
|
97
98
|
{...$$restProps}
|
|
98
99
|
/>
|
|
99
100
|
<div class="indicator" />
|
|
@@ -152,10 +153,10 @@ const onChange = (e) => {
|
|
|
152
153
|
and there is not a parent CSS selector.
|
|
153
154
|
*/
|
|
154
155
|
.indicator {
|
|
155
|
-
background-color: var(--stsv-
|
|
156
|
-
border-color: var(--stsv-
|
|
157
|
-
border-style: var(--stsv-
|
|
158
|
-
border-width: var(--stsv-
|
|
156
|
+
background-color: var(--stsv-input__background-color);
|
|
157
|
+
border-color: var(--stsv-input__border-color);
|
|
158
|
+
border-style: var(--stsv-input__border-style);
|
|
159
|
+
border-width: var(--stsv-input__border-width);
|
|
159
160
|
border-radius: 10000px;
|
|
160
161
|
box-sizing: border-box;
|
|
161
162
|
display: inline-block;
|
|
@@ -167,20 +168,20 @@ const onChange = (e) => {
|
|
|
167
168
|
}
|
|
168
169
|
|
|
169
170
|
input:checked + .indicator {
|
|
170
|
-
background-color: var(--stsv-
|
|
171
|
-
border-color: var(--stsv-
|
|
171
|
+
background-color: var(--stsv-input__background-color);
|
|
172
|
+
border-color: var(--stsv-input__border-color);
|
|
172
173
|
}
|
|
173
174
|
|
|
174
175
|
.sterling-radio:not(.disabled):hover .indicator {
|
|
175
|
-
background-color: var(--stsv-
|
|
176
|
-
border-color: var(--stsv-
|
|
176
|
+
background-color: var(--stsv-input__background-color--hover);
|
|
177
|
+
border-color: var(--stsv-input__border-color--hover);
|
|
177
178
|
}
|
|
178
179
|
|
|
179
180
|
input:focus-visible + .indicator {
|
|
180
|
-
outline-color: var(--stsv-
|
|
181
|
-
outline-offset: var(--stsv-
|
|
182
|
-
outline-style: var(--stsv-
|
|
183
|
-
outline-width: var(--stsv-
|
|
181
|
+
outline-color: var(--stsv-common__outline-color);
|
|
182
|
+
outline-offset: var(--stsv-common__outline-offset);
|
|
183
|
+
outline-style: var(--stsv-common__outline-style);
|
|
184
|
+
outline-width: var(--stsv-common__outline-width);
|
|
184
185
|
}
|
|
185
186
|
|
|
186
187
|
.indicator::after {
|
|
@@ -197,7 +198,26 @@ const onChange = (e) => {
|
|
|
197
198
|
}
|
|
198
199
|
|
|
199
200
|
input:checked + .indicator::after {
|
|
200
|
-
background-color: var(--stsv-
|
|
201
|
+
background-color: var(--stsv-input__color);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
.sterling-radio.colorful .indicator {
|
|
205
|
+
background-color: var(--stsv-input--colorful__background-color);
|
|
206
|
+
border-color: var(--stsv-input--colorful__border-color);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
.sterling-radio.colorful input:checked + .indicator {
|
|
210
|
+
background-color: var(--stsv-input--colorful__background-color);
|
|
211
|
+
border-color: var(--stsv-input--colorful__border-color);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
.sterling-radio.colorful:not(.disabled):hover .indicator {
|
|
215
|
+
background-color: var(--stsv-input--colorful__background-color--hover);
|
|
216
|
+
border-color: var(--stsv-input--colorful__border-color--hover);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
.sterling-radio.colorful input:checked + .indicator::after {
|
|
220
|
+
background-color: var(--stsv-input--colorful__color);
|
|
201
221
|
}
|
|
202
222
|
|
|
203
223
|
.sterling-radio.disabled * {
|
|
@@ -205,7 +225,13 @@ const onChange = (e) => {
|
|
|
205
225
|
}
|
|
206
226
|
|
|
207
227
|
.container::after {
|
|
208
|
-
background:
|
|
228
|
+
background: repeating-linear-gradient(
|
|
229
|
+
45deg,
|
|
230
|
+
var(--stsv-common__background-color1--disabled),
|
|
231
|
+
var(--stsv-common__background-color1--disabled) 3px,
|
|
232
|
+
var(--stsv-common__background-color2--disabled) 3px,
|
|
233
|
+
var(--stsv-common__background-color2--disabled) 6px
|
|
234
|
+
);
|
|
209
235
|
border-radius: 10000px;
|
|
210
236
|
bottom: 0;
|
|
211
237
|
content: '';
|
package/Radio.svelte.d.ts
CHANGED