@sveltia/ui 0.15.16 → 0.17.0
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/package/components/alert/alert.svelte +22 -7
- package/package/components/alert/alert.svelte.d.ts +47 -31
- package/package/components/button/button-group.svelte +16 -6
- package/package/components/button/button-group.svelte.d.ts +38 -28
- package/package/components/button/button.svelte +41 -136
- package/package/components/button/button.svelte.d.ts +20 -162
- package/package/components/button/select-button-group.svelte +31 -37
- package/package/components/button/select-button-group.svelte.d.ts +91 -39
- package/package/components/button/select-button.svelte +19 -62
- package/package/components/button/select-button.svelte.d.ts +31 -65
- package/package/components/button/split-button.svelte +37 -47
- package/package/components/button/split-button.svelte.d.ts +54 -60
- package/package/components/calendar/calendar.svelte +80 -55
- package/package/components/calendar/calendar.svelte.d.ts +30 -26
- package/package/components/checkbox/checkbox-group.svelte +23 -20
- package/package/components/checkbox/checkbox-group.svelte.d.ts +64 -32
- package/package/components/checkbox/checkbox.svelte +57 -67
- package/package/components/checkbox/checkbox.svelte.d.ts +81 -53
- package/package/components/dialog/alert-dialog.svelte +9 -36
- package/package/components/dialog/alert-dialog.svelte.d.ts +20 -49
- package/package/components/dialog/confirmation-dialog.svelte +9 -41
- package/package/components/dialog/confirmation-dialog.svelte.d.ts +20 -51
- package/package/components/dialog/dialog.svelte +60 -105
- package/package/components/dialog/dialog.svelte.d.ts +19 -86
- package/package/components/dialog/prompt-dialog.svelte +32 -61
- package/package/components/dialog/prompt-dialog.svelte.d.ts +53 -65
- package/package/components/disclosure/disclosure.svelte +39 -34
- package/package/components/disclosure/disclosure.svelte.d.ts +88 -57
- package/package/components/divider/divider.svelte +18 -14
- package/package/components/divider/divider.svelte.d.ts +48 -26
- package/package/components/divider/spacer.svelte +13 -8
- package/package/components/divider/spacer.svelte.d.ts +37 -25
- package/package/components/drawer/drawer.svelte +63 -76
- package/package/components/drawer/drawer.svelte.d.ts +116 -70
- package/package/components/grid/grid-body.svelte +15 -10
- package/package/components/grid/grid-body.svelte.d.ts +45 -29
- package/package/components/grid/grid-cell.svelte +16 -6
- package/package/components/grid/grid-cell.svelte.d.ts +38 -28
- package/package/components/grid/grid-col-header.svelte +16 -6
- package/package/components/grid/grid-col-header.svelte.d.ts +38 -28
- package/package/components/grid/grid-foot.svelte +16 -6
- package/package/components/grid/grid-foot.svelte.d.ts +38 -28
- package/package/components/grid/grid-head.svelte +16 -6
- package/package/components/grid/grid-head.svelte.d.ts +38 -28
- package/package/components/grid/grid-row-header.svelte +16 -6
- package/package/components/grid/grid-row-header.svelte.d.ts +38 -28
- package/package/components/grid/grid-row.svelte +19 -23
- package/package/components/grid/grid-row.svelte.d.ts +63 -43
- package/package/components/grid/grid.svelte +26 -25
- package/package/components/grid/grid.svelte.d.ts +71 -37
- package/package/components/icon/icon.svelte +14 -9
- package/package/components/icon/icon.svelte.d.ts +37 -25
- package/package/components/listbox/listbox.svelte +46 -52
- package/package/components/listbox/listbox.svelte.d.ts +117 -45
- package/package/components/listbox/option-group.svelte +23 -19
- package/package/components/listbox/option-group.svelte.d.ts +64 -32
- package/package/components/listbox/option.svelte +44 -57
- package/package/components/listbox/option.svelte.d.ts +68 -74
- package/package/components/menu/menu-button.svelte +42 -63
- package/package/components/menu/menu-button.svelte.d.ts +35 -62
- package/package/components/menu/menu-item-checkbox.svelte +29 -41
- package/package/components/menu/menu-item-checkbox.svelte.d.ts +20 -49
- package/package/components/menu/menu-item-group.svelte +22 -19
- package/package/components/menu/menu-item-group.svelte.d.ts +56 -32
- package/package/components/menu/menu-item-radio.svelte +29 -41
- package/package/components/menu/menu-item-radio.svelte.d.ts +20 -49
- package/package/components/menu/menu-item.svelte +66 -75
- package/package/components/menu/menu-item.svelte.d.ts +19 -68
- package/package/components/menu/menu.svelte +25 -22
- package/package/components/menu/menu.svelte.d.ts +65 -35
- package/package/components/radio/radio-group.svelte +36 -42
- package/package/components/radio/radio-group.svelte.d.ts +100 -40
- package/package/components/radio/radio.svelte +45 -48
- package/package/components/radio/radio.svelte.d.ts +111 -47
- package/package/components/select/combobox.svelte +76 -101
- package/package/components/select/combobox.svelte.d.ts +19 -54
- package/package/components/select/select-tags.svelte +48 -59
- package/package/components/select/select-tags.svelte.d.ts +127 -45
- package/package/components/select/select.svelte +18 -37
- package/package/components/select/select.svelte.d.ts +20 -45
- package/package/components/slider/slider.svelte +71 -68
- package/package/components/slider/slider.svelte.d.ts +159 -47
- package/package/components/switch/switch.svelte +36 -46
- package/package/components/switch/switch.svelte.d.ts +98 -42
- package/package/components/table/table-body.svelte +15 -11
- package/package/components/table/table-body.svelte.d.ts +45 -29
- package/package/components/table/table-cell.svelte +16 -6
- package/package/components/table/table-cell.svelte.d.ts +38 -28
- package/package/components/table/table-col-header.svelte +16 -6
- package/package/components/table/table-col-header.svelte.d.ts +38 -28
- package/package/components/table/table-foot.svelte +16 -6
- package/package/components/table/table-foot.svelte.d.ts +38 -28
- package/package/components/table/table-head.svelte +16 -6
- package/package/components/table/table-head.svelte.d.ts +38 -28
- package/package/components/table/table-row-header.svelte +16 -6
- package/package/components/table/table-row-header.svelte.d.ts +38 -28
- package/package/components/table/table-row.svelte +16 -6
- package/package/components/table/table-row.svelte.d.ts +38 -28
- package/package/components/table/table.svelte +16 -6
- package/package/components/table/table.svelte.d.ts +38 -28
- package/package/components/tabs/tab-box.svelte +16 -9
- package/package/components/tabs/tab-box.svelte.d.ts +47 -27
- package/package/components/tabs/tab-list.svelte +36 -35
- package/package/components/tabs/tab-list.svelte.d.ts +80 -38
- package/package/components/tabs/tab-panel.svelte +16 -6
- package/package/components/tabs/tab-panel.svelte.d.ts +38 -28
- package/package/components/tabs/tab-panels.svelte +16 -6
- package/package/components/tabs/tab-panels.svelte.d.ts +38 -26
- package/package/components/tabs/tab.svelte +28 -25
- package/package/components/tabs/tab.svelte.d.ts +31 -55
- package/package/components/text-editor/lexical-root.svelte +38 -32
- package/package/components/text-editor/lexical-root.svelte.d.ts +91 -29
- package/package/components/text-editor/text-editor.svelte +63 -79
- package/package/components/text-editor/text-editor.svelte.d.ts +114 -36
- package/package/components/text-editor/toolbar/editor-toolbar.svelte +41 -24
- package/package/components/text-editor/toolbar/editor-toolbar.svelte.d.ts +49 -23
- package/package/components/text-editor/toolbar/format-text-button.svelte +15 -5
- package/package/components/text-editor/toolbar/format-text-button.svelte.d.ts +30 -22
- package/package/components/text-editor/toolbar/insert-link-button.svelte +18 -16
- package/package/components/text-editor/toolbar/insert-link-button.svelte.d.ts +20 -23
- package/package/components/text-editor/toolbar/toggle-block-menu-item.svelte +19 -7
- package/package/components/text-editor/toolbar/toggle-block-menu-item.svelte.d.ts +30 -22
- package/package/components/text-field/number-input.svelte +63 -81
- package/package/components/text-field/number-input.svelte.d.ts +62 -68
- package/package/components/text-field/password-input.svelte +38 -57
- package/package/components/text-field/password-input.svelte.d.ts +30 -58
- package/package/components/text-field/search-bar.svelte +45 -62
- package/package/components/text-field/search-bar.svelte.d.ts +42 -87
- package/package/components/text-field/text-area.svelte +38 -54
- package/package/components/text-field/text-area.svelte.d.ts +116 -50
- package/package/components/text-field/text-input.svelte +30 -86
- package/package/components/text-field/text-input.svelte.d.ts +20 -105
- package/package/components/toast/toast.svelte +36 -30
- package/package/components/toast/toast.svelte.d.ts +65 -33
- package/package/components/toolbar/toolbar.svelte +25 -25
- package/package/components/toolbar/toolbar.svelte.d.ts +72 -34
- package/package/components/util/app-shell.svelte +22 -10
- package/package/components/util/app-shell.svelte.d.ts +40 -34
- package/package/components/util/group.svelte +20 -15
- package/package/components/util/group.svelte.d.ts +55 -31
- package/package/components/util/modal.svelte +89 -105
- package/package/components/util/modal.svelte.d.ts +24 -82
- package/package/components/util/placeholder.svelte +21 -0
- package/package/components/util/placeholder.svelte.d.ts +34 -0
- package/package/components/util/popup.svelte +65 -62
- package/package/components/util/popup.svelte.d.ts +104 -82
- package/package/services/{group.js → group.svelte.js} +11 -12
- package/package/services/{popup.js → popup.svelte.js} +6 -5
- package/package/typedefs.d.ts +545 -0
- package/package/typedefs.js +202 -0
- package/package.json +16 -23
- package/package/components/util/portal.svelte +0 -36
- package/package/components/util/portal.svelte.d.ts +0 -32
- /package/package/services/{events.d.ts → events.svelte.d.ts} +0 -0
- /package/package/services/{events.js → events.svelte.js} +0 -0
- /package/package/services/{group.d.ts → group.svelte.d.ts} +0 -0
- /package/package/services/{popup.d.ts → popup.svelte.d.ts} +0 -0
|
@@ -1,57 +1,139 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
export default SelectTags;
|
|
2
|
+
type SelectTags = SvelteComponent<Props & Record<string, any>, {
|
|
3
|
+
[evt: string]: CustomEvent<any>;
|
|
4
|
+
}, {}> & {
|
|
5
|
+
$$bindings?: "values" | undefined;
|
|
6
|
+
};
|
|
7
|
+
declare const SelectTags: $$__sveltets_2_IsomorphicComponent<{
|
|
8
|
+
/**
|
|
9
|
+
* - Available
|
|
10
|
+
* options.
|
|
11
|
+
*/
|
|
6
12
|
options: {
|
|
7
13
|
label: string;
|
|
8
14
|
value: string;
|
|
9
15
|
searchValue?: string;
|
|
10
16
|
}[];
|
|
17
|
+
/**
|
|
18
|
+
* - Selected option values.
|
|
19
|
+
*/
|
|
20
|
+
values?: string[] | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* - Maximum number of selectable options.
|
|
23
|
+
*/
|
|
24
|
+
max?: number | undefined;
|
|
25
|
+
/**
|
|
26
|
+
* - The `class` attribute on the wrapper element.
|
|
27
|
+
*/
|
|
11
28
|
class?: string | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* - Whether to hide the widget.
|
|
31
|
+
*/
|
|
32
|
+
hidden?: boolean | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* - Whether to disable the widget. An alias of the `aria-disabled`
|
|
35
|
+
* attribute.
|
|
36
|
+
*/
|
|
12
37
|
disabled?: boolean | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* - Whether to make the widget read-only. An alias of the
|
|
40
|
+
* `aria-readonly` attribute.
|
|
41
|
+
*/
|
|
42
|
+
readonly?: boolean | undefined;
|
|
43
|
+
/**
|
|
44
|
+
* - Whether to mark the widget required. An alias of the
|
|
45
|
+
* `aria-required` attribute.
|
|
46
|
+
*/
|
|
47
|
+
required?: boolean | undefined;
|
|
48
|
+
/**
|
|
49
|
+
* - Whether to mark the widget invalid. An alias of the
|
|
50
|
+
* `aria-invalid` attribute.
|
|
51
|
+
*/
|
|
13
52
|
invalid?: boolean | undefined;
|
|
53
|
+
/**
|
|
54
|
+
* - Primary slot content.
|
|
55
|
+
*/
|
|
56
|
+
children?: import("svelte").Snippet<[]> | undefined;
|
|
57
|
+
/**
|
|
58
|
+
* - Custom `AddValue` event handler.
|
|
59
|
+
*/
|
|
60
|
+
onAddValue?: ((event: CustomEvent) => void) | undefined;
|
|
61
|
+
/**
|
|
62
|
+
* - Custom `RemoveValue` event handler.
|
|
63
|
+
*/
|
|
64
|
+
onRemoveValue?: ((event: CustomEvent) => void) | undefined;
|
|
65
|
+
} & Record<string, any>, {
|
|
66
|
+
[evt: string]: CustomEvent<any>;
|
|
67
|
+
}, {}, {}, "values">;
|
|
68
|
+
type Props = {
|
|
69
|
+
/**
|
|
70
|
+
* - Available
|
|
71
|
+
* options.
|
|
72
|
+
*/
|
|
73
|
+
options: {
|
|
74
|
+
label: string;
|
|
75
|
+
value: string;
|
|
76
|
+
searchValue?: string;
|
|
77
|
+
}[];
|
|
78
|
+
/**
|
|
79
|
+
* - Selected option values.
|
|
80
|
+
*/
|
|
81
|
+
values?: string[] | undefined;
|
|
82
|
+
/**
|
|
83
|
+
* - Maximum number of selectable options.
|
|
84
|
+
*/
|
|
14
85
|
max?: number | undefined;
|
|
15
|
-
|
|
86
|
+
/**
|
|
87
|
+
* - The `class` attribute on the wrapper element.
|
|
88
|
+
*/
|
|
89
|
+
class?: string | undefined;
|
|
90
|
+
/**
|
|
91
|
+
* - Whether to hide the widget.
|
|
92
|
+
*/
|
|
16
93
|
hidden?: boolean | undefined;
|
|
94
|
+
/**
|
|
95
|
+
* - Whether to disable the widget. An alias of the `aria-disabled`
|
|
96
|
+
* attribute.
|
|
97
|
+
*/
|
|
98
|
+
disabled?: boolean | undefined;
|
|
99
|
+
/**
|
|
100
|
+
* - Whether to make the widget read-only. An alias of the
|
|
101
|
+
* `aria-readonly` attribute.
|
|
102
|
+
*/
|
|
17
103
|
readonly?: boolean | undefined;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
invalid?: boolean | undefined;
|
|
41
|
-
max?: number | undefined;
|
|
42
|
-
required?: boolean | undefined;
|
|
43
|
-
hidden?: boolean | undefined;
|
|
44
|
-
readonly?: boolean | undefined;
|
|
45
|
-
values?: string[] | undefined;
|
|
46
|
-
};
|
|
47
|
-
events: {
|
|
48
|
-
RemoveValue: CustomEvent<any>;
|
|
49
|
-
AddValue: CustomEvent<any>;
|
|
50
|
-
} & {
|
|
51
|
-
[evt: string]: CustomEvent<any>;
|
|
52
|
-
};
|
|
53
|
-
slots: {};
|
|
54
|
-
exports?: undefined;
|
|
55
|
-
bindings?: undefined;
|
|
104
|
+
/**
|
|
105
|
+
* - Whether to mark the widget required. An alias of the
|
|
106
|
+
* `aria-required` attribute.
|
|
107
|
+
*/
|
|
108
|
+
required?: boolean | undefined;
|
|
109
|
+
/**
|
|
110
|
+
* - Whether to mark the widget invalid. An alias of the
|
|
111
|
+
* `aria-invalid` attribute.
|
|
112
|
+
*/
|
|
113
|
+
invalid?: boolean | undefined;
|
|
114
|
+
/**
|
|
115
|
+
* - Primary slot content.
|
|
116
|
+
*/
|
|
117
|
+
children?: import("svelte").Snippet<[]> | undefined;
|
|
118
|
+
/**
|
|
119
|
+
* - Custom `AddValue` event handler.
|
|
120
|
+
*/
|
|
121
|
+
onAddValue?: ((event: CustomEvent) => void) | undefined;
|
|
122
|
+
/**
|
|
123
|
+
* - Custom `RemoveValue` event handler.
|
|
124
|
+
*/
|
|
125
|
+
onRemoveValue?: ((event: CustomEvent) => void) | undefined;
|
|
56
126
|
};
|
|
57
|
-
|
|
127
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
128
|
+
new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
|
|
129
|
+
$$bindings?: Bindings;
|
|
130
|
+
} & Exports;
|
|
131
|
+
(internal: unknown, props: Props & {
|
|
132
|
+
$$events?: Events;
|
|
133
|
+
$$slots?: Slots;
|
|
134
|
+
}): Exports & {
|
|
135
|
+
$set?: any;
|
|
136
|
+
$on?: any;
|
|
137
|
+
};
|
|
138
|
+
z_$$bindings?: Bindings;
|
|
139
|
+
}
|
|
@@ -9,44 +9,26 @@
|
|
|
9
9
|
import Combobox from './combobox.svelte';
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
13
|
-
* @type {string}
|
|
12
|
+
* @type {import('../../typedefs').ComboboxProps & Record<string, any>}
|
|
14
13
|
*/
|
|
15
|
-
let
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
* @type {boolean}
|
|
30
|
-
*/
|
|
31
|
-
export let readonly = false;
|
|
32
|
-
/**
|
|
33
|
-
* Whether to disable the widget. An alias of the `aria-required` attribute.
|
|
34
|
-
* @type {boolean}
|
|
35
|
-
*/
|
|
36
|
-
export let required = false;
|
|
37
|
-
/**
|
|
38
|
-
* Whether to mark the widget invalid. An alias of the `aria-invalid` attribute.
|
|
39
|
-
* @type {boolean}
|
|
40
|
-
*/
|
|
41
|
-
export let invalid = false;
|
|
42
|
-
/**
|
|
43
|
-
* Selected option’s value.
|
|
44
|
-
* @type {(string | number | undefined)}
|
|
45
|
-
*/
|
|
46
|
-
export let value = undefined;
|
|
14
|
+
let {
|
|
15
|
+
/* eslint-disable prefer-const */
|
|
16
|
+
value = $bindable(),
|
|
17
|
+
class: className,
|
|
18
|
+
hidden = false,
|
|
19
|
+
disabled = false,
|
|
20
|
+
readonly = false,
|
|
21
|
+
required = false,
|
|
22
|
+
invalid = false,
|
|
23
|
+
children,
|
|
24
|
+
onChange,
|
|
25
|
+
...restProps
|
|
26
|
+
/* eslint-enable prefer-const */
|
|
27
|
+
} = $props();
|
|
47
28
|
</script>
|
|
48
29
|
|
|
49
30
|
<Combobox
|
|
31
|
+
{...restProps}
|
|
50
32
|
bind:value
|
|
51
33
|
class="sui select {className}"
|
|
52
34
|
{hidden}
|
|
@@ -54,9 +36,8 @@
|
|
|
54
36
|
{readonly}
|
|
55
37
|
{required}
|
|
56
38
|
{invalid}
|
|
57
|
-
{
|
|
39
|
+
{onChange}
|
|
58
40
|
editable={false}
|
|
59
|
-
on:change
|
|
60
41
|
>
|
|
61
|
-
|
|
42
|
+
{@render children?.()}
|
|
62
43
|
</Combobox>
|
|
@@ -1,53 +1,28 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
export default Select;
|
|
2
|
+
type Select = SvelteComponent<ComboboxProps & Record<string, any>, {
|
|
3
|
+
[evt: string]: CustomEvent<any>;
|
|
4
|
+
}, {}> & {
|
|
5
|
+
$$bindings?: "value" | undefined;
|
|
6
|
+
};
|
|
4
7
|
/**
|
|
5
8
|
* A select-only variant of `<Combobox>`. The equivalent of the HTML `<select>` element.
|
|
6
9
|
* @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select
|
|
7
10
|
* @see https://w3c.github.io/aria/#combobox
|
|
8
11
|
* @see https://www.w3.org/WAI/ARIA/apg/patterns/combobox/examples/combobox-select-only/
|
|
9
12
|
*/
|
|
10
|
-
|
|
11
|
-
[x: string]: any;
|
|
12
|
-
class?: string | undefined;
|
|
13
|
-
disabled?: boolean | undefined;
|
|
14
|
-
invalid?: boolean | undefined;
|
|
15
|
-
required?: boolean | undefined;
|
|
16
|
-
value?: (string | number | undefined);
|
|
17
|
-
hidden?: boolean | undefined;
|
|
18
|
-
readonly?: boolean | undefined;
|
|
19
|
-
}, {
|
|
20
|
-
change: CustomEvent<any>;
|
|
21
|
-
} & {
|
|
13
|
+
declare const Select: $$__sveltets_2_IsomorphicComponent<import("../../typedefs").ComboboxProps & Record<string, any>, {
|
|
22
14
|
[evt: string]: CustomEvent<any>;
|
|
23
|
-
}, {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
class?: string | undefined;
|
|
35
|
-
disabled?: boolean | undefined;
|
|
36
|
-
invalid?: boolean | undefined;
|
|
37
|
-
required?: boolean | undefined;
|
|
38
|
-
value?: (string | number | undefined);
|
|
39
|
-
hidden?: boolean | undefined;
|
|
40
|
-
readonly?: boolean | undefined;
|
|
41
|
-
};
|
|
42
|
-
events: {
|
|
43
|
-
change: CustomEvent<any>;
|
|
44
|
-
} & {
|
|
45
|
-
[evt: string]: CustomEvent<any>;
|
|
15
|
+
}, {}, {}, "value">;
|
|
16
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
17
|
+
new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
|
|
18
|
+
$$bindings?: Bindings;
|
|
19
|
+
} & Exports;
|
|
20
|
+
(internal: unknown, props: Props & {
|
|
21
|
+
$$events?: Events;
|
|
22
|
+
$$slots?: Slots;
|
|
23
|
+
}): Exports & {
|
|
24
|
+
$set?: any;
|
|
25
|
+
$on?: any;
|
|
46
26
|
};
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
};
|
|
50
|
-
exports?: undefined;
|
|
51
|
-
bindings?: undefined;
|
|
52
|
-
};
|
|
53
|
-
export {};
|
|
27
|
+
z_$$bindings?: Bindings;
|
|
28
|
+
}
|
|
@@ -8,71 +8,72 @@
|
|
|
8
8
|
@see https://www.w3.org/WAI/ARIA/apg/patterns/slider-multithumb/
|
|
9
9
|
-->
|
|
10
10
|
<script>
|
|
11
|
-
import {
|
|
11
|
+
import { onMount } from 'svelte';
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
15
|
-
* @
|
|
14
|
+
* @typedef {object} Props
|
|
15
|
+
* @property {number} [value] - Current value.
|
|
16
|
+
* @property {number} [min] - Minimum allowed value. An alias of the `aria-valuemin` attribute.
|
|
17
|
+
* @property {number} [max] - Maximum allowed value. An alias of the `aria-valuemax` attribute.
|
|
18
|
+
* @property {string} [sliderLabel] - `aria-label` on the slider.
|
|
19
|
+
* @property {[number, number] | undefined} [values] - Value list for a multi-thumb slider.
|
|
20
|
+
* @property {[string, string] | undefined} [sliderLabels] - `aria-label` on a multi-thumb slider.
|
|
21
|
+
* @property {number} [step] - Step option like `<input type="range">`.
|
|
22
|
+
* @property {(string[] | number[])} [optionLabels] - Visible labels on the slider.
|
|
23
|
+
* @property {boolean} [flex] - Make the text input container flexible.
|
|
24
|
+
* @property {string} [class] - The `class` attribute on the wrapper element.
|
|
25
|
+
* @property {boolean} [hidden] - Whether to hide the widget.
|
|
26
|
+
* @property {boolean} [disabled] - Whether to disable the widget. An alias of the `aria-disabled`
|
|
27
|
+
* attribute.
|
|
28
|
+
* @property {boolean} [readonly] - Whether to make the widget read-only. An alias of the
|
|
29
|
+
* `aria-readonly` attribute.
|
|
30
|
+
* @property {boolean} [invalid] - Whether to mark the widget invalid. An alias of the
|
|
31
|
+
* `aria-invalid` attribute.
|
|
32
|
+
* @property {import('svelte').Snippet} [children] - Primary slot content.
|
|
33
|
+
* @property {(detail: { values?: number[], value?: number }) => void} [onChange] - `change` event
|
|
34
|
+
* handler.
|
|
16
35
|
*/
|
|
17
|
-
|
|
18
|
-
export { className as class };
|
|
19
|
-
/**
|
|
20
|
-
* Whether to hide the widget. An alias of the `aria-hidden` attribute.
|
|
21
|
-
* @type {boolean | undefined}
|
|
22
|
-
*/
|
|
23
|
-
export let hidden = undefined;
|
|
24
|
-
/**
|
|
25
|
-
* Whether to disable the widget. An alias of the `aria-disabled` attribute.
|
|
26
|
-
* @type {boolean}
|
|
27
|
-
*/
|
|
28
|
-
export let disabled = false;
|
|
29
|
-
/**
|
|
30
|
-
* Whether to make the widget read-only. An alias of the `aria-readonly` attribute.
|
|
31
|
-
* @type {boolean}
|
|
32
|
-
*/
|
|
33
|
-
export let readonly = false;
|
|
34
|
-
/**
|
|
35
|
-
* Whether to mark the widget invalid. An alias of the `aria-invalid` attribute.
|
|
36
|
-
* @type {boolean}
|
|
37
|
-
*/
|
|
38
|
-
export let invalid = false;
|
|
39
|
-
/**
|
|
40
|
-
* Minimum allowed value. An alias of the `aria-valuemin` attribute.
|
|
41
|
-
* @type {number}
|
|
42
|
-
*/
|
|
43
|
-
export let min = 0;
|
|
36
|
+
|
|
44
37
|
/**
|
|
45
|
-
*
|
|
46
|
-
* @type {number}
|
|
38
|
+
* @type {Props & Record<string, any>}
|
|
47
39
|
*/
|
|
48
|
-
|
|
40
|
+
let {
|
|
41
|
+
/* eslint-disable prefer-const */
|
|
42
|
+
value = $bindable(0),
|
|
43
|
+
min = 0,
|
|
44
|
+
max = 100,
|
|
45
|
+
sliderLabel = '',
|
|
46
|
+
values = undefined,
|
|
47
|
+
sliderLabels = undefined,
|
|
48
|
+
step = 1,
|
|
49
|
+
optionLabels = [],
|
|
50
|
+
class: className,
|
|
51
|
+
hidden = false,
|
|
52
|
+
disabled = false,
|
|
53
|
+
readonly = false,
|
|
54
|
+
invalid = false,
|
|
55
|
+
children,
|
|
56
|
+
onChange,
|
|
57
|
+
...restProps
|
|
58
|
+
/* eslint-enable prefer-const */
|
|
59
|
+
} = $props();
|
|
60
|
+
|
|
61
|
+
const multiThumb = $derived(Array.isArray(values));
|
|
49
62
|
|
|
50
|
-
export let value = 0;
|
|
51
|
-
export let sliderLabel = '';
|
|
52
|
-
/** @type {[number, number] | undefined} */
|
|
53
|
-
export let values = undefined;
|
|
54
|
-
/** @type {[string, string] | undefined} */
|
|
55
|
-
export let sliderLabels = undefined;
|
|
56
|
-
export let step = 1;
|
|
57
|
-
/** @type {(string[] | number[])} */
|
|
58
|
-
export let optionLabels = [];
|
|
59
|
-
|
|
60
|
-
$: multiThumb = Array.isArray(values);
|
|
61
|
-
|
|
62
|
-
const dispatch = createEventDispatcher();
|
|
63
63
|
/** @type {HTMLElement | undefined} */
|
|
64
|
-
let base =
|
|
65
|
-
let barWidth = 0;
|
|
64
|
+
let base = $state();
|
|
65
|
+
let barWidth = $state(0);
|
|
66
66
|
/** @type {number[]} */
|
|
67
|
-
let positionList = [];
|
|
67
|
+
let positionList = $state([]);
|
|
68
68
|
/** @type {number[]} */
|
|
69
|
-
let valueList = [];
|
|
70
|
-
let startX = 0;
|
|
71
|
-
let startScreenX = 0;
|
|
72
|
-
|
|
73
|
-
let
|
|
74
|
-
let
|
|
75
|
-
let
|
|
69
|
+
let valueList = $state([]);
|
|
70
|
+
let startX = $state(0);
|
|
71
|
+
let startScreenX = $state(0);
|
|
72
|
+
// eslint-disable-next-line prefer-const
|
|
73
|
+
let sliderPositions = $state([0, 0]);
|
|
74
|
+
let dragging = $state(false);
|
|
75
|
+
let targetPointerId = $state(0);
|
|
76
|
+
let targetValueIndex = $state(0);
|
|
76
77
|
|
|
77
78
|
/**
|
|
78
79
|
* Move a thumb with mouse.
|
|
@@ -104,6 +105,7 @@
|
|
|
104
105
|
|
|
105
106
|
if (multiThumb) {
|
|
106
107
|
/** @type {[number, number]} */ (values)[targetValueIndex] = valueList[index];
|
|
108
|
+
values = [.../** @type {[number, number]} */ (values)];
|
|
107
109
|
} else {
|
|
108
110
|
value = valueList[index];
|
|
109
111
|
}
|
|
@@ -155,6 +157,7 @@
|
|
|
155
157
|
|
|
156
158
|
if (multiThumb) {
|
|
157
159
|
/** @type {[number, number]} */ (values)[valueIndex] = valueList[index];
|
|
160
|
+
values = [.../** @type {[number, number]} */ (values)];
|
|
158
161
|
} else {
|
|
159
162
|
value = valueList[index];
|
|
160
163
|
}
|
|
@@ -242,10 +245,10 @@
|
|
|
242
245
|
|
|
243
246
|
sliderPositions[0] = positionList[valueList.indexOf(value0)];
|
|
244
247
|
sliderPositions[1] = positionList[valueList.indexOf(value1)];
|
|
245
|
-
|
|
248
|
+
onChange?.({ values });
|
|
246
249
|
} else {
|
|
247
250
|
sliderPositions[0] = positionList[valueList.indexOf(value)];
|
|
248
|
-
|
|
251
|
+
onChange?.({ value });
|
|
249
252
|
}
|
|
250
253
|
};
|
|
251
254
|
|
|
@@ -282,28 +285,28 @@
|
|
|
282
285
|
};
|
|
283
286
|
});
|
|
284
287
|
|
|
285
|
-
|
|
288
|
+
$effect(() => {
|
|
286
289
|
void value;
|
|
287
290
|
void values;
|
|
288
291
|
onValueChange();
|
|
289
|
-
}
|
|
292
|
+
});
|
|
290
293
|
</script>
|
|
291
294
|
|
|
292
295
|
<svelte:body
|
|
293
|
-
|
|
296
|
+
onclick={() => {
|
|
294
297
|
dragging = false;
|
|
295
298
|
}}
|
|
296
299
|
/>
|
|
297
300
|
|
|
298
301
|
<div
|
|
302
|
+
{...restProps}
|
|
299
303
|
role="none"
|
|
300
304
|
class="sui slider {className}"
|
|
301
305
|
class:disabled
|
|
302
306
|
class:readonly
|
|
303
|
-
|
|
304
|
-
{...$$restProps}
|
|
307
|
+
{hidden}
|
|
305
308
|
>
|
|
306
|
-
<div role="none" class="base"
|
|
309
|
+
<div bind:this={base} role="none" class="base" onpointerdown={(event) => onPointerDown(event)}>
|
|
307
310
|
<div role="none" class="base-bar"></div>
|
|
308
311
|
<div
|
|
309
312
|
class="slider-bar"
|
|
@@ -322,8 +325,8 @@
|
|
|
322
325
|
aria-valuemax={max}
|
|
323
326
|
aria-valuenow={multiThumb ? values?.[0] : value}
|
|
324
327
|
style:left="{sliderPositions[0]}px"
|
|
325
|
-
|
|
326
|
-
|
|
328
|
+
onpointerdown={(event) => onPointerDown(event, 0)}
|
|
329
|
+
onkeydown={(event) => onKeyDown(event, 0)}
|
|
327
330
|
></div>
|
|
328
331
|
{#if multiThumb}
|
|
329
332
|
<div
|
|
@@ -338,8 +341,8 @@
|
|
|
338
341
|
aria-valuemax={max}
|
|
339
342
|
aria-valuenow={values?.[1]}
|
|
340
343
|
style:left="{sliderPositions[1]}px"
|
|
341
|
-
|
|
342
|
-
|
|
344
|
+
onpointerdown={(event) => onPointerDown(event, 1)}
|
|
345
|
+
onkeydown={(event) => onKeyDown(event, 1)}
|
|
343
346
|
></div>
|
|
344
347
|
{/if}
|
|
345
348
|
{#if optionLabels.length}
|