@geoffcox/sterling-svelte 0.0.26 → 0.0.28
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 +81 -25
- package/Button.svelte.d.ts +3 -0
- package/Checkbox.svelte +56 -26
- package/Checkbox.svelte.d.ts +2 -0
- package/ColorPicker.constants.d.ts +1 -0
- package/ColorPicker.constants.js +1 -0
- package/ColorPicker.svelte +257 -0
- package/ColorPicker.svelte.d.ts +49 -0
- package/ColorPicker.types.d.ts +4 -0
- package/Dialog.svelte +10 -10
- package/Dropdown.svelte +97 -58
- package/Dropdown.svelte.d.ts +4 -0
- package/HexColorSliders.svelte +171 -0
- package/HexColorSliders.svelte.d.ts +22 -0
- package/HslColorSliders.svelte +208 -0
- package/HslColorSliders.svelte.d.ts +22 -0
- package/Input.svelte +59 -25
- package/Input.svelte.d.ts +3 -2
- package/Label.constants.d.ts +1 -0
- package/Label.constants.js +1 -0
- package/Label.svelte +212 -14
- package/Label.svelte.d.ts +24 -4
- package/Label.types.d.ts +4 -0
- package/Label.types.js +1 -0
- package/Link.svelte +62 -16
- package/Link.svelte.d.ts +1 -0
- package/List.svelte +29 -16
- package/List.svelte.d.ts +1 -0
- package/List.types.d.ts +4 -3
- package/ListItem.svelte +30 -10
- package/ListItem.svelte.d.ts +1 -1
- package/Menu.svelte +7 -7
- package/MenuBar.svelte +1 -1
- package/MenuButton.svelte +3 -9
- package/MenuButton.svelte.d.ts +2 -4
- package/MenuItem.svelte +34 -12
- package/MenuItem.svelte.d.ts +2 -1
- package/MenuItemDisplay.svelte +8 -1
- package/MenuSeparator.svelte +3 -3
- package/Popover.svelte +66 -51
- package/Popover.svelte.d.ts +4 -2
- package/Progress.constants.d.ts +1 -1
- package/Progress.constants.js +1 -1
- package/Progress.svelte +34 -28
- package/Progress.svelte.d.ts +1 -1
- package/Progress.types.d.ts +3 -3
- package/Radio.svelte +54 -23
- package/Radio.svelte.d.ts +2 -0
- package/RgbColorSliders.svelte +182 -0
- package/RgbColorSliders.svelte.d.ts +22 -0
- package/Select.svelte +32 -25
- package/Select.svelte.d.ts +1 -1
- package/Slider.svelte +111 -123
- package/Slider.svelte.d.ts +1 -0
- package/Switch.svelte +112 -41
- package/Switch.svelte.d.ts +3 -2
- package/Tab.svelte +53 -29
- package/Tab.svelte.d.ts +7 -4
- package/TabList.svelte +21 -11
- package/TabList.svelte.d.ts +1 -0
- package/TabList.types.d.ts +1 -0
- package/TextArea.svelte +48 -22
- package/TextArea.svelte.d.ts +4 -3
- package/Tooltip.svelte +59 -16
- package/Tooltip.svelte.d.ts +34 -2
- package/Tree.svelte +35 -21
- package/Tree.svelte.d.ts +2 -0
- package/Tree.types.d.ts +6 -8
- package/TreeChevron.svelte +1 -1
- package/TreeItem.svelte +40 -9
- package/TreeItem.svelte.d.ts +2 -0
- package/TreeItem.types.d.ts +4 -4
- package/TreeItemDisplay.svelte +28 -9
- package/TreeItemDisplay.svelte.d.ts +3 -1
- 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 +14 -10
- package/index.js +11 -7
- package/package.json +12 -4
- package/theme/applyTheme.js +3 -2
- package/theme/colors.d.ts +1 -0
- package/theme/colors.js +28 -13
- package/theme/darkTheme.js +129 -87
- package/theme/lightTheme.js +109 -90
- package/Field.constants.d.ts +0 -1
- package/Field.constants.js +0 -1
- package/Field.svelte +0 -265
- package/Field.svelte.d.ts +0 -75
- package/Field.types.d.ts +0 -4
- /package/{Field.types.js → ColorPicker.types.js} +0 -0
package/Label.svelte.d.ts
CHANGED
|
@@ -2,9 +2,15 @@ import { SvelteComponentTyped } from "svelte";
|
|
|
2
2
|
declare const __propDef: {
|
|
3
3
|
props: {
|
|
4
4
|
[x: string]: any;
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
for?: string | undefined;
|
|
6
|
+
forwardClick?: boolean | undefined;
|
|
7
|
+
text?: string | undefined;
|
|
8
|
+
message?: string | undefined;
|
|
9
|
+
required?: boolean | undefined;
|
|
10
|
+
requiredReason?: string | undefined;
|
|
11
|
+
status?: string | undefined;
|
|
7
12
|
click?: (() => void) | undefined;
|
|
13
|
+
blur?: (() => void) | undefined;
|
|
8
14
|
focus?: ((options?: FocusOptions) => void) | undefined;
|
|
9
15
|
};
|
|
10
16
|
events: {
|
|
@@ -39,8 +45,22 @@ declare const __propDef: {
|
|
|
39
45
|
[evt: string]: CustomEvent<any>;
|
|
40
46
|
};
|
|
41
47
|
slots: {
|
|
42
|
-
|
|
48
|
+
text: {
|
|
49
|
+
disabled: boolean;
|
|
50
|
+
for: string | undefined;
|
|
51
|
+
forwardClick: boolean;
|
|
52
|
+
text: string | undefined;
|
|
53
|
+
required: boolean;
|
|
54
|
+
};
|
|
55
|
+
default: {};
|
|
56
|
+
message: {
|
|
43
57
|
disabled: boolean;
|
|
58
|
+
message: string | undefined;
|
|
59
|
+
required: boolean;
|
|
60
|
+
status: string;
|
|
61
|
+
};
|
|
62
|
+
required: {
|
|
63
|
+
requiredReason: string;
|
|
44
64
|
};
|
|
45
65
|
};
|
|
46
66
|
};
|
|
@@ -48,8 +68,8 @@ export type LabelProps = typeof __propDef.props;
|
|
|
48
68
|
export type LabelEvents = typeof __propDef.events;
|
|
49
69
|
export type LabelSlots = typeof __propDef.slots;
|
|
50
70
|
export default class Label extends SvelteComponentTyped<LabelProps, LabelEvents, LabelSlots> {
|
|
51
|
-
get blur(): () => void;
|
|
52
71
|
get click(): () => void;
|
|
72
|
+
get blur(): () => void;
|
|
53
73
|
get focus(): (options?: FocusOptions | undefined) => void;
|
|
54
74
|
}
|
|
55
75
|
export {};
|
package/Label.types.d.ts
ADDED
package/Label.types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/Link.svelte
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<script>export let href;
|
|
2
2
|
export let disabled = false;
|
|
3
|
+
export let colorful = false;
|
|
3
4
|
export let variant = "regular";
|
|
4
5
|
let linkRef;
|
|
5
6
|
export const blur = () => {
|
|
@@ -16,6 +17,7 @@ export const focus = (options) => {
|
|
|
16
17
|
<a
|
|
17
18
|
bind:this={linkRef}
|
|
18
19
|
class="sterling-link"
|
|
20
|
+
class:colorful
|
|
19
21
|
class:disabled
|
|
20
22
|
class:ghost={variant === 'ghost'}
|
|
21
23
|
class:undecorated={variant === 'undecorated'}
|
|
@@ -50,7 +52,7 @@ export const focus = (options) => {
|
|
|
50
52
|
on:pointerover
|
|
51
53
|
on:pointerout
|
|
52
54
|
on:pointerup
|
|
53
|
-
on:wheel
|
|
55
|
+
on:wheel|passive
|
|
54
56
|
{...$$restProps}><slot {disabled} {href} {variant} /></a
|
|
55
57
|
>
|
|
56
58
|
|
|
@@ -61,10 +63,10 @@ export const focus = (options) => {
|
|
|
61
63
|
border-left: none;
|
|
62
64
|
border-right: none;
|
|
63
65
|
border-radius: 0;
|
|
64
|
-
border-bottom-style: var(--stsv-
|
|
65
|
-
border-bottom-width: calc(var(--stsv-
|
|
66
|
-
border-bottom-color: var(--stsv-
|
|
67
|
-
color: var(--stsv-
|
|
66
|
+
border-bottom-style: var(--stsv-common__border-style);
|
|
67
|
+
border-bottom-width: calc(var(--stsv-common__border-width));
|
|
68
|
+
border-bottom-color: var(--stsv-common__border-color);
|
|
69
|
+
color: var(--stsv-common__color);
|
|
68
70
|
cursor: pointer;
|
|
69
71
|
font: inherit;
|
|
70
72
|
text-decoration: none;
|
|
@@ -75,34 +77,78 @@ export const focus = (options) => {
|
|
|
75
77
|
}
|
|
76
78
|
|
|
77
79
|
a:visited {
|
|
78
|
-
border-bottom-color: var(--stsv-
|
|
80
|
+
border-bottom-color: var(--stsv-input__border-color);
|
|
79
81
|
}
|
|
80
82
|
|
|
83
|
+
a:hover {
|
|
84
|
+
border-bottom-color: var(--stsv-input__border-color--hover);
|
|
85
|
+
color: var(--stsv-input__color--hover);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
a:active {
|
|
89
|
+
border-bottom-color: var(--stsv-input__border-color--selected);
|
|
90
|
+
color: var(--stsv-input__color--active);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/* ----- colorful ----- */
|
|
94
|
+
|
|
95
|
+
a.colorful,
|
|
96
|
+
a.colorful:visited {
|
|
97
|
+
border-bottom-color: var(--stsv-input--colorful__border-color);
|
|
98
|
+
color: var(--stsv-input--colorful__color);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
a.colorful:hover {
|
|
102
|
+
border-bottom-color: var(--stsv-input--colorful__border-color--hover);
|
|
103
|
+
color: var(--stsv-input--colorful__color--hover);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
a.colorful:active {
|
|
107
|
+
border-bottom-color: var(--stsv-input--colorful__border-color--selected);
|
|
108
|
+
color: var(--stsv-input--colorful__color--active);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/* ----- ghost ----- */
|
|
112
|
+
|
|
81
113
|
a.ghost {
|
|
82
114
|
border-bottom-color: transparent;
|
|
83
115
|
}
|
|
84
116
|
|
|
85
|
-
a:hover {
|
|
86
|
-
border-bottom-color: var(--stsv-
|
|
87
|
-
color: var(--stsv-Button__color--hover);
|
|
117
|
+
a.ghost:hover {
|
|
118
|
+
border-bottom-color: var(--stsv-input__border-color--hover);
|
|
88
119
|
}
|
|
89
120
|
|
|
90
|
-
a:active {
|
|
91
|
-
border-bottom-color: var(--stsv-
|
|
92
|
-
color: var(--stsv-Button__color--active);
|
|
121
|
+
a.ghost:active {
|
|
122
|
+
border-bottom-color: var(--stsv-input__border-color--selected);
|
|
93
123
|
}
|
|
94
124
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
125
|
+
/* ----- ghost colorful ----- */
|
|
126
|
+
|
|
127
|
+
a.ghost.colorful:hover {
|
|
128
|
+
border-bottom-color: var(--stsv-input--colorful__border-color--hover);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
a.ghost.colorful:active {
|
|
132
|
+
border-bottom-color: var(--stsv-input--colorful__border-color--selected);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/* ----- disabled ----- */
|
|
136
|
+
|
|
137
|
+
a.disabled,
|
|
138
|
+
a.disabled:visited,
|
|
139
|
+
a.disabled:hover,
|
|
140
|
+
a.disabled:active {
|
|
141
|
+
border-bottom-color: var(--stsv-common__border-color--disabled);
|
|
142
|
+
color: var(--stsv-common__color--disabled);
|
|
98
143
|
cursor: not-allowed;
|
|
99
144
|
pointer-events: none;
|
|
100
145
|
}
|
|
101
146
|
|
|
147
|
+
/* ----- undecorated ----- */
|
|
102
148
|
a.undecorated,
|
|
103
149
|
a.undecorated:hover,
|
|
104
150
|
a.undecorated:active,
|
|
105
151
|
a.undecorated:visited {
|
|
106
|
-
border:
|
|
152
|
+
border-bottom-color: transparent;
|
|
107
153
|
}
|
|
108
154
|
</style>
|
package/Link.svelte.d.ts
CHANGED
package/List.svelte
CHANGED
|
@@ -2,15 +2,20 @@
|
|
|
2
2
|
import { writable } from "svelte/store";
|
|
3
3
|
import { LIST_CONTEXT_KEY } from "./List.constants";
|
|
4
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 horizontal = false;
|
|
8
9
|
export let selectedValue = void 0;
|
|
9
10
|
let listRef;
|
|
10
11
|
let lastSelectedItemRef;
|
|
12
|
+
const colorfulStore = writable(colorful);
|
|
11
13
|
const disabledStore = writable(disabled);
|
|
12
14
|
const horizontalStore = writable(horizontal);
|
|
13
15
|
const selectedValueStore = writable(selectedValue);
|
|
16
|
+
$: {
|
|
17
|
+
colorfulStore.set(colorful);
|
|
18
|
+
}
|
|
14
19
|
$: {
|
|
15
20
|
disabledStore.set(disabled);
|
|
16
21
|
}
|
|
@@ -166,6 +171,7 @@ const onKeydown = (event) => {
|
|
|
166
171
|
}
|
|
167
172
|
};
|
|
168
173
|
setContext(LIST_CONTEXT_KEY, {
|
|
174
|
+
colorful: colorfulStore,
|
|
169
175
|
disabled: disabledStore,
|
|
170
176
|
selectedValue: selectedValueStore,
|
|
171
177
|
horizontal: horizontalStore
|
|
@@ -216,7 +222,7 @@ A list of items where a single item can be selected.
|
|
|
216
222
|
on:mouseout
|
|
217
223
|
on:mouseup
|
|
218
224
|
on:scroll
|
|
219
|
-
on:wheel
|
|
225
|
+
on:wheel|passive
|
|
220
226
|
on:paste
|
|
221
227
|
{...$$restProps}
|
|
222
228
|
>
|
|
@@ -227,13 +233,13 @@ A list of items where a single item can be selected.
|
|
|
227
233
|
|
|
228
234
|
<style>
|
|
229
235
|
.sterling-list {
|
|
230
|
-
background-color: var(--stsv-
|
|
231
|
-
border-color: var(--stsv-
|
|
232
|
-
border-radius: var(--stsv-
|
|
233
|
-
border-style: var(--stsv-
|
|
234
|
-
border-width: var(--stsv-
|
|
236
|
+
background-color: var(--stsv-common__background-color);
|
|
237
|
+
border-color: var(--stsv-input__border-color);
|
|
238
|
+
border-radius: var(--stsv-input__border-radius);
|
|
239
|
+
border-style: var(--stsv-input__border-style);
|
|
240
|
+
border-width: var(--stsv-input__border-width);
|
|
235
241
|
box-sizing: border-box;
|
|
236
|
-
color: var(--stsv-
|
|
242
|
+
color: var(--stsv-input__color);
|
|
237
243
|
height: 100%;
|
|
238
244
|
overflow-x: hidden;
|
|
239
245
|
overflow-y: auto;
|
|
@@ -252,17 +258,17 @@ A list of items where a single item can be selected.
|
|
|
252
258
|
}
|
|
253
259
|
|
|
254
260
|
.sterling-list:hover {
|
|
255
|
-
border-color: var(--stsv-
|
|
256
|
-
color: var(--stsv-
|
|
261
|
+
border-color: var(--stsv-input__border-color--hover);
|
|
262
|
+
color: var(--stsv-input__color--hover);
|
|
257
263
|
}
|
|
258
264
|
|
|
259
265
|
.sterling-list.using-keyboard:focus-within {
|
|
260
|
-
border-color: var(--stsv-
|
|
261
|
-
color: var(--stsv-
|
|
262
|
-
outline-color: var(--stsv-
|
|
263
|
-
outline-offset: var(--stsv-
|
|
264
|
-
outline-style: var(--stsv-
|
|
265
|
-
outline-width: var(--stsv-
|
|
266
|
+
border-color: var(--stsv-input__border-color--focus);
|
|
267
|
+
color: var(--stsv-input__color--focus);
|
|
268
|
+
outline-color: var(--stsv-common__outline-color);
|
|
269
|
+
outline-offset: var(--stsv-common__outline-offset);
|
|
270
|
+
outline-style: var(--stsv-common__outline-style);
|
|
271
|
+
outline-width: var(--stsv-common__outline-width);
|
|
266
272
|
}
|
|
267
273
|
|
|
268
274
|
.sterling-list.composed,
|
|
@@ -292,7 +298,14 @@ A list of items where a single item can be selected.
|
|
|
292
298
|
}
|
|
293
299
|
|
|
294
300
|
.container::after {
|
|
295
|
-
background:
|
|
301
|
+
background: repeating-linear-gradient(
|
|
302
|
+
var(--stsv-common--disabled__stripe-angle),
|
|
303
|
+
var(--stsv-common--disabled__stripe-color),
|
|
304
|
+
var(--stsv-common--disabled__stripe-color) var(--stsv-common--disabled__stripe-width),
|
|
305
|
+
var(--stsv-common--disabled__stripe-color--alt) var(--stsv-common--disabled__stripe-width),
|
|
306
|
+
var(--stsv-common--disabled__stripe-color--alt)
|
|
307
|
+
calc(2 * var(--stsv-common--disabled__stripe-width))
|
|
308
|
+
);
|
|
296
309
|
content: '';
|
|
297
310
|
bottom: 0;
|
|
298
311
|
left: 0;
|
package/List.svelte.d.ts
CHANGED
package/List.types.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Readable, Writable } from 'svelte/store';
|
|
2
2
|
export type ListContext = {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
colorful?: Readable<boolean>;
|
|
4
|
+
disabled?: Readable<boolean>;
|
|
5
|
+
selectedValue?: Writable<string | undefined>;
|
|
6
|
+
horizontal?: Readable<boolean>;
|
|
6
7
|
};
|
package/ListItem.svelte
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
<script>import { getContext } from "svelte";
|
|
2
|
+
import { readable, writable } from "svelte/store";
|
|
2
3
|
import { LIST_CONTEXT_KEY } from "./List.constants";
|
|
3
|
-
import { readable } 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,14 @@ export const focus = (options) => {
|
|
|
102
115
|
}
|
|
103
116
|
|
|
104
117
|
.sterling-list-item::after {
|
|
105
|
-
background:
|
|
118
|
+
background: repeating-linear-gradient(
|
|
119
|
+
var(--stsv-common--disabled__stripe-angle),
|
|
120
|
+
var(--stsv-common--disabled__stripe-color),
|
|
121
|
+
var(--stsv-common--disabled__stripe-color) var(--stsv-common--disabled__stripe-width),
|
|
122
|
+
var(--stsv-common--disabled__stripe-color--alt) var(--stsv-common--disabled__stripe-width),
|
|
123
|
+
var(--stsv-common--disabled__stripe-color--alt)
|
|
124
|
+
calc(2 * var(--stsv-common--disabled__stripe-width))
|
|
125
|
+
);
|
|
106
126
|
bottom: 0;
|
|
107
127
|
content: '';
|
|
108
128
|
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,11 +6,8 @@ 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
|
-
export let shape = "rounded";
|
|
12
10
|
export let value;
|
|
13
|
-
export let variant = "regular";
|
|
14
11
|
const instanceId = idGenerator.nextId("MenuButton");
|
|
15
12
|
let buttonRef;
|
|
16
13
|
let reference;
|
|
@@ -46,10 +43,8 @@ export const focus = (options) => {
|
|
|
46
43
|
const onClick = async () => {
|
|
47
44
|
if (!open) {
|
|
48
45
|
openValues.set(["menu-button"]);
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
menuRef?.focusFirstMenuItem();
|
|
52
|
-
}
|
|
46
|
+
await tick();
|
|
47
|
+
menuRef?.focusFirstMenuItem();
|
|
53
48
|
} else {
|
|
54
49
|
open = false;
|
|
55
50
|
openValues.set([]);
|
|
@@ -78,6 +73,7 @@ const onClickOutside = (event) => {
|
|
|
78
73
|
closeAllMenus?.();
|
|
79
74
|
};
|
|
80
75
|
setContext(MENU_ITEM_CONTEXT_KEY, {
|
|
76
|
+
depth: 1,
|
|
81
77
|
openValues,
|
|
82
78
|
rootValue: value,
|
|
83
79
|
closeContainingMenu: () => {
|
|
@@ -101,8 +97,6 @@ setContext(MENU_ITEM_CONTEXT_KEY, {
|
|
|
101
97
|
aria-owns={menuId}
|
|
102
98
|
data-value={value}
|
|
103
99
|
data-root-value={value}
|
|
104
|
-
{variant}
|
|
105
|
-
{shape}
|
|
106
100
|
on:blur
|
|
107
101
|
on:click
|
|
108
102
|
on:click={onClick}
|
package/MenuButton.svelte.d.ts
CHANGED
|
@@ -3,9 +3,7 @@ declare const __propDef: {
|
|
|
3
3
|
props: {
|
|
4
4
|
[x: string]: any;
|
|
5
5
|
open?: boolean | undefined;
|
|
6
|
-
shape?: "circular" | "rounded" | "square" | undefined;
|
|
7
6
|
value: string;
|
|
8
|
-
variant?: "regular" | "outline" | "ghost" | undefined;
|
|
9
7
|
click?: (() => void) | undefined;
|
|
10
8
|
blur?: (() => void) | undefined;
|
|
11
9
|
focus?: ((options?: FocusOptions) => void) | undefined;
|
|
@@ -50,8 +48,8 @@ declare const __propDef: {
|
|
|
50
48
|
};
|
|
51
49
|
slots: {
|
|
52
50
|
default: {
|
|
53
|
-
shape:
|
|
54
|
-
variant:
|
|
51
|
+
shape: any;
|
|
52
|
+
variant: any;
|
|
55
53
|
};
|
|
56
54
|
items: {};
|
|
57
55
|
};
|
package/MenuItem.svelte
CHANGED
|
@@ -16,11 +16,12 @@ 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
|
-
export let value;
|
|
22
22
|
export let role = "menuitem";
|
|
23
23
|
export let text = void 0;
|
|
24
|
+
export let value;
|
|
24
25
|
const {
|
|
25
26
|
isMenuBarItem,
|
|
26
27
|
openValues = writable([]),
|
|
@@ -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
|
@@ -3,11 +3,12 @@ declare const __propDef: {
|
|
|
3
3
|
props: {
|
|
4
4
|
[x: string]: any;
|
|
5
5
|
checked?: boolean | undefined;
|
|
6
|
+
colorful?: boolean | undefined;
|
|
6
7
|
composed?: boolean | undefined;
|
|
7
8
|
disabled?: boolean | undefined;
|
|
8
|
-
value: string;
|
|
9
9
|
role?: "menuitem" | "menuitemcheckbox" | "menuitemradio" | undefined;
|
|
10
10
|
text?: string | undefined;
|
|
11
|
+
value: string;
|
|
11
12
|
blur?: (() => void) | undefined;
|
|
12
13
|
click?: (() => void) | undefined;
|
|
13
14
|
focus?: ((options?: FocusOptions) => void) | undefined;
|
package/MenuItemDisplay.svelte
CHANGED
|
@@ -103,7 +103,14 @@ export let menuItemRole = "menuitem";
|
|
|
103
103
|
}
|
|
104
104
|
|
|
105
105
|
.sterling-menu-item-display::after {
|
|
106
|
-
background:
|
|
106
|
+
background: repeating-linear-gradient(
|
|
107
|
+
var(--stsv-common--disabled__stripe-angle),
|
|
108
|
+
var(--stsv-common--disabled__stripe-color),
|
|
109
|
+
var(--stsv-common--disabled__stripe-color) var(--stsv-common--disabled__stripe-width),
|
|
110
|
+
var(--stsv-common--disabled__stripe-color--alt) var(--stsv-common--disabled__stripe-width),
|
|
111
|
+
var(--stsv-common--disabled__stripe-color--alt)
|
|
112
|
+
calc(2 * var(--stsv-common--disabled__stripe-width))
|
|
113
|
+
);
|
|
107
114
|
bottom: 0;
|
|
108
115
|
content: '';
|
|
109
116
|
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>
|