@sveltia/ui 0.7.5 → 0.8.1
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 +4 -4
- package/package/components/alert/alert.svelte.d.ts +2 -2
- package/package/components/button/button.svelte +5 -3
- package/package/components/button/button.svelte.d.ts +6 -4
- package/package/components/button/select-button-group.svelte +9 -5
- package/package/components/button/select-button.svelte +5 -4
- package/package/components/button/select-button.svelte.d.ts +2 -0
- package/package/components/calendar/calendar.svelte +20 -14
- package/package/components/checkbox/checkbox-group.svelte +6 -5
- package/package/components/checkbox/checkbox.svelte +6 -4
- package/package/components/checkbox/checkbox.svelte.d.ts +2 -2
- package/package/components/dialog/alert-dialog.svelte +50 -0
- package/package/components/dialog/alert-dialog.svelte.d.ts +55 -0
- package/package/components/dialog/confirmation-dialog.svelte +55 -0
- package/package/components/dialog/confirmation-dialog.svelte.d.ts +57 -0
- package/package/components/dialog/dialog.svelte +165 -221
- package/package/components/dialog/dialog.svelte.d.ts +20 -12
- package/package/components/dialog/prompt-dialog.svelte +87 -0
- package/package/components/dialog/prompt-dialog.svelte.d.ts +72 -0
- package/package/components/disclosure/disclosure.svelte +3 -2
- package/package/components/divider/divider.svelte +1 -1
- package/package/components/divider/spacer.svelte +1 -12
- package/package/components/divider/spacer.svelte.d.ts +0 -2
- package/package/components/drawer/drawer.svelte +119 -209
- package/package/components/drawer/drawer.svelte.d.ts +13 -9
- package/package/components/grid/grid-body.svelte +51 -0
- package/package/components/grid/grid-body.svelte.d.ts +36 -0
- package/package/components/grid/grid-cell.svelte +22 -0
- package/package/components/grid/grid-cell.svelte.d.ts +34 -0
- package/package/components/grid/grid-col-header.svelte +22 -0
- package/package/components/grid/grid-col-header.svelte.d.ts +34 -0
- package/package/components/grid/grid-foot.svelte +27 -0
- package/package/components/grid/grid-foot.svelte.d.ts +34 -0
- package/package/components/grid/grid-head.svelte +27 -0
- package/package/components/grid/grid-head.svelte.d.ts +34 -0
- package/package/components/grid/grid-row-header.svelte +23 -0
- package/package/components/grid/grid-row-header.svelte.d.ts +34 -0
- package/package/components/grid/grid-row.svelte +37 -0
- package/package/components/grid/grid-row.svelte.d.ts +44 -0
- package/package/components/grid/grid.svelte +52 -0
- package/package/components/grid/grid.svelte.d.ts +42 -0
- package/package/components/icon/icon.svelte +6 -7
- package/package/components/icon/icon.svelte.d.ts +0 -2
- package/package/components/listbox/listbox.svelte +3 -3
- package/package/components/listbox/option-group.svelte +6 -5
- package/package/components/listbox/option.svelte +7 -28
- package/package/components/listbox/option.svelte.d.ts +2 -0
- package/package/components/menu/menu-button.svelte +26 -16
- package/package/components/menu/menu-button.svelte.d.ts +2 -2
- package/package/components/menu/menu-item-checkbox.svelte +5 -4
- package/package/components/menu/menu-item-checkbox.svelte.d.ts +2 -0
- package/package/components/menu/menu-item-group.svelte +4 -3
- package/package/components/menu/menu-item-radio.svelte +5 -4
- package/package/components/menu/menu-item-radio.svelte.d.ts +2 -0
- package/package/components/menu/menu-item.svelte +7 -5
- package/package/components/menu/menu-item.svelte.d.ts +4 -2
- package/package/components/menu/menu.svelte +1 -1
- package/package/components/radio/radio-group.svelte +5 -5
- package/package/components/radio/radio.svelte +5 -2
- package/package/components/radio/radio.svelte.d.ts +2 -0
- package/package/components/select/combobox.svelte +11 -9
- package/package/components/slider/slider.svelte +12 -5
- package/package/components/switch/switch.svelte +3 -2
- package/package/components/switch/switch.svelte.d.ts +2 -2
- package/package/components/table/table-body.svelte +31 -3
- package/package/components/table/table-body.svelte.d.ts +2 -0
- package/package/components/table/table-cell.svelte +3 -4
- package/package/components/table/table-cell.svelte.d.ts +1 -1
- package/package/components/table/table-col-header.svelte +1 -2
- package/package/components/table/table-foot.svelte +7 -3
- package/package/components/table/table-head.svelte +7 -3
- package/package/components/table/table-row-header.svelte +1 -2
- package/package/components/table/table-row.svelte +1 -14
- package/package/components/table/table-row.svelte.d.ts +0 -8
- package/package/components/table/table.svelte +5 -17
- package/package/components/table/table.svelte.d.ts +1 -7
- package/package/components/tabs/tab-list.svelte +7 -5
- package/package/components/tabs/tab-panel.svelte +1 -1
- package/package/components/tabs/tab.svelte +2 -1
- package/package/components/tabs/tab.svelte.d.ts +2 -0
- package/package/components/text-field/markdown-editor.svelte +30 -6
- package/package/components/text-field/markdown-editor.svelte.d.ts +2 -0
- package/package/components/text-field/number-input.svelte +36 -6
- package/package/components/text-field/number-input.svelte.d.ts +2 -0
- package/package/components/text-field/password-input.svelte +34 -8
- package/package/components/text-field/password-input.svelte.d.ts +2 -0
- package/package/components/text-field/search-bar.svelte +39 -11
- package/package/components/text-field/search-bar.svelte.d.ts +5 -0
- package/package/components/text-field/text-area.svelte +21 -2
- package/package/components/text-field/text-area.svelte.d.ts +2 -0
- package/package/components/text-field/text-input.svelte +22 -4
- package/package/components/text-field/text-input.svelte.d.ts +7 -2
- package/package/components/toast/toast.svelte +47 -17
- package/package/components/toast/toast.svelte.d.ts +7 -3
- package/package/components/toolbar/toolbar.svelte +3 -4
- package/package/components/util/app-shell.svelte +26 -27
- package/package/components/util/group.svelte +2 -2
- package/package/components/util/modal.svelte +220 -0
- package/package/components/util/modal.svelte.d.ts +83 -0
- package/package/components/util/popup.svelte +81 -127
- package/package/components/util/popup.svelte.d.ts +22 -18
- package/package/components/util/portal.svelte +1 -1
- package/package/index.d.ts +12 -0
- package/package/index.js +12 -0
- package/package/locales/en.d.ts +1 -0
- package/package/locales/en.js +1 -0
- package/package/locales/ja.d.ts +1 -0
- package/package/locales/ja.js +1 -0
- package/package/services/group.js +51 -13
- package/package/styles/core.scss +9 -26
- package/package/styles/variables.scss +12 -0
- package/package/typedef.d.ts +1 -0
- package/package/typedef.js +5 -0
- package/package.json +97 -1
|
@@ -67,23 +67,33 @@
|
|
|
67
67
|
};
|
|
68
68
|
</script>
|
|
69
69
|
|
|
70
|
-
<
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
70
|
+
<div role="none" class="wrapper">
|
|
71
|
+
<Button
|
|
72
|
+
class="sui menu-button {className}"
|
|
73
|
+
{hidden}
|
|
74
|
+
{disabled}
|
|
75
|
+
{label}
|
|
76
|
+
{variant}
|
|
77
|
+
{size}
|
|
78
|
+
{iconic}
|
|
79
|
+
aria-haspopup="menu"
|
|
80
|
+
{...$$restProps}
|
|
81
|
+
bind:this={buttonComponent}
|
|
82
|
+
>
|
|
83
|
+
<slot name="start-icon" slot="start-icon" />
|
|
84
|
+
<slot />
|
|
85
|
+
<slot name="end-icon" slot="end-icon" />
|
|
86
|
+
</Button>
|
|
87
|
+
</div>
|
|
86
88
|
|
|
87
89
|
<Popup anchor={buttonComponent?.element} position={popupPosition} bind:this={popupComponent}>
|
|
88
90
|
<slot name="popup" />
|
|
89
91
|
</Popup>
|
|
92
|
+
|
|
93
|
+
<style>.wrapper {
|
|
94
|
+
display: contents;
|
|
95
|
+
}
|
|
96
|
+
.wrapper :global(.icon:last-child) {
|
|
97
|
+
margin: 0 -2px;
|
|
98
|
+
font-size: 20px;
|
|
99
|
+
}</style>
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
export default class MenuButton extends SvelteComponent<{
|
|
9
9
|
[x: string]: any;
|
|
10
10
|
class?: string;
|
|
11
|
-
label?: string;
|
|
12
11
|
focus?: () => void;
|
|
12
|
+
label?: string;
|
|
13
13
|
disabled?: boolean;
|
|
14
14
|
size?: "small" | "medium" | "large";
|
|
15
15
|
hidden?: boolean;
|
|
@@ -38,8 +38,8 @@ declare const __propDef: {
|
|
|
38
38
|
props: {
|
|
39
39
|
[x: string]: any;
|
|
40
40
|
class?: string;
|
|
41
|
-
label?: string;
|
|
42
41
|
focus?: () => void;
|
|
42
|
+
label?: string;
|
|
43
43
|
disabled?: boolean;
|
|
44
44
|
size?: 'small' | 'medium' | 'large';
|
|
45
45
|
hidden?: boolean | undefined;
|
|
@@ -44,8 +44,8 @@
|
|
|
44
44
|
</script>
|
|
45
45
|
|
|
46
46
|
<MenuItem
|
|
47
|
-
class="sui menu-item-checkbox {className}"
|
|
48
47
|
role="menuitemcheckbox"
|
|
48
|
+
class="sui menu-item-checkbox {className}"
|
|
49
49
|
{label}
|
|
50
50
|
{hidden}
|
|
51
51
|
{disabled}
|
|
@@ -54,10 +54,11 @@
|
|
|
54
54
|
{iconLabel}
|
|
55
55
|
{...$$restProps}
|
|
56
56
|
on:click
|
|
57
|
-
on:click={() => {
|
|
58
|
-
checked = !checked;
|
|
59
|
-
}}
|
|
60
57
|
on:select
|
|
58
|
+
on:change
|
|
59
|
+
on:change={(event) => {
|
|
60
|
+
checked = /** @type {CustomEvent} */ (event).detail.checked;
|
|
61
|
+
}}
|
|
61
62
|
>
|
|
62
63
|
<slot />
|
|
63
64
|
<svelte:component this={checked ? Icon : undefined} slot="end-icon" name="check" />
|
|
@@ -17,6 +17,7 @@ export default class MenuItemCheckbox extends SvelteComponent<{
|
|
|
17
17
|
}, {
|
|
18
18
|
click: MouseEvent;
|
|
19
19
|
select: Event;
|
|
20
|
+
change: Event;
|
|
20
21
|
} & {
|
|
21
22
|
[evt: string]: CustomEvent<any>;
|
|
22
23
|
}, {
|
|
@@ -41,6 +42,7 @@ declare const __propDef: {
|
|
|
41
42
|
events: {
|
|
42
43
|
click: MouseEvent;
|
|
43
44
|
select: Event;
|
|
45
|
+
change: Event;
|
|
44
46
|
} & {
|
|
45
47
|
[evt: string]: CustomEvent<any>;
|
|
46
48
|
};
|
|
@@ -30,19 +30,20 @@
|
|
|
30
30
|
</script>
|
|
31
31
|
|
|
32
32
|
<div
|
|
33
|
+
role="group"
|
|
33
34
|
{id}
|
|
34
35
|
class="sui menu-item-group {className}"
|
|
35
36
|
hidden={hidden || undefined}
|
|
36
|
-
role="group"
|
|
37
37
|
aria-hidden={hidden}
|
|
38
38
|
aria-disabled={disabled}
|
|
39
39
|
aria-labelledby={title ? '{id}-title' : undefined}
|
|
40
|
+
aria-roledescription="menu item group"
|
|
40
41
|
{...$$restProps}
|
|
41
42
|
>
|
|
42
43
|
{#if title}
|
|
43
|
-
<div class="title" id="{id}-title">{title}</div>
|
|
44
|
+
<div role="none" class="title" id="{id}-title">{title}</div>
|
|
44
45
|
{/if}
|
|
45
|
-
<div class="inner" inert={disabled}>
|
|
46
|
+
<div role="none" class="inner" inert={disabled}>
|
|
46
47
|
<slot />
|
|
47
48
|
</div>
|
|
48
49
|
</div>
|
|
@@ -45,8 +45,8 @@
|
|
|
45
45
|
</script>
|
|
46
46
|
|
|
47
47
|
<MenuItem
|
|
48
|
-
class="sui menu-item-radio {className}"
|
|
49
48
|
role="menuitemradio"
|
|
49
|
+
class="sui menu-item-radio {className}"
|
|
50
50
|
{label}
|
|
51
51
|
{hidden}
|
|
52
52
|
{disabled}
|
|
@@ -55,10 +55,11 @@
|
|
|
55
55
|
{iconLabel}
|
|
56
56
|
{...$$restProps}
|
|
57
57
|
on:click
|
|
58
|
-
on:click={() => {
|
|
59
|
-
checked = !checked;
|
|
60
|
-
}}
|
|
61
58
|
on:select
|
|
59
|
+
on:change
|
|
60
|
+
on:change={(event) => {
|
|
61
|
+
checked = /** @type {CustomEvent} */ (event).detail.checked;
|
|
62
|
+
}}
|
|
62
63
|
>
|
|
63
64
|
<slot />
|
|
64
65
|
<svelte:component this={checked ? Icon : undefined} slot="end-icon" name="check" />
|
|
@@ -18,6 +18,7 @@ export default class MenuItemRadio extends SvelteComponent<{
|
|
|
18
18
|
}, {
|
|
19
19
|
click: MouseEvent;
|
|
20
20
|
select: Event;
|
|
21
|
+
change: Event;
|
|
21
22
|
} & {
|
|
22
23
|
[evt: string]: CustomEvent<any>;
|
|
23
24
|
}, {
|
|
@@ -42,6 +43,7 @@ declare const __propDef: {
|
|
|
42
43
|
events: {
|
|
43
44
|
click: MouseEvent;
|
|
44
45
|
select: Event;
|
|
46
|
+
change: Event;
|
|
45
47
|
} & {
|
|
46
48
|
[evt: string]: CustomEvent<any>;
|
|
47
49
|
};
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
$: hasChildren = role === 'menuitem' && $$slots.default;
|
|
53
53
|
</script>
|
|
54
54
|
|
|
55
|
-
<div class="sui menuitem {className}" hidden={hidden || undefined}>
|
|
55
|
+
<div role="none" class="sui menuitem {className}" hidden={hidden || undefined}>
|
|
56
56
|
<Button
|
|
57
57
|
{role}
|
|
58
58
|
{hidden}
|
|
@@ -73,20 +73,21 @@
|
|
|
73
73
|
}
|
|
74
74
|
}}
|
|
75
75
|
on:select
|
|
76
|
+
on:change
|
|
76
77
|
>
|
|
77
78
|
{#if iconName}
|
|
78
|
-
<Icon slot="start-icon" name={iconName} label={iconLabel} />
|
|
79
|
+
<Icon slot="start-icon" name={iconName} aria-label={iconLabel} />
|
|
79
80
|
{/if}
|
|
80
81
|
{#if label}
|
|
81
|
-
<span class="label">{label}</span>
|
|
82
|
+
<span role="none" class="label">{label}</span>
|
|
82
83
|
{/if}
|
|
83
84
|
{#if $$slots['end-icon']}
|
|
84
|
-
<span class="icon-outer">
|
|
85
|
+
<span role="none" class="icon-outer">
|
|
85
86
|
<slot name="end-icon" />
|
|
86
87
|
</span>
|
|
87
88
|
{/if}
|
|
88
89
|
{#if hasChildren}
|
|
89
|
-
<span class="icon-outer">
|
|
90
|
+
<span role="none" class="icon-outer">
|
|
90
91
|
<Icon name="chevron_right" />
|
|
91
92
|
</span>
|
|
92
93
|
{/if}
|
|
@@ -107,6 +108,7 @@
|
|
|
107
108
|
display: flex;
|
|
108
109
|
justify-content: space-between !important;
|
|
109
110
|
border-radius: var(--sui-option-border-radius);
|
|
111
|
+
margin: 0 !important;
|
|
110
112
|
padding: 0 16px;
|
|
111
113
|
width: 100%;
|
|
112
114
|
min-width: 160px;
|
|
@@ -10,13 +10,14 @@ export default class MenuItem extends SvelteComponent<{
|
|
|
10
10
|
class?: string;
|
|
11
11
|
label?: string;
|
|
12
12
|
disabled?: boolean;
|
|
13
|
-
hidden?: boolean;
|
|
14
13
|
role?: "menuitem" | "menuitemcheckbox" | "menuitemradio";
|
|
14
|
+
hidden?: boolean;
|
|
15
15
|
iconName?: string;
|
|
16
16
|
iconLabel?: string;
|
|
17
17
|
}, {
|
|
18
18
|
click: MouseEvent;
|
|
19
19
|
select: Event;
|
|
20
|
+
change: Event;
|
|
20
21
|
} & {
|
|
21
22
|
[evt: string]: CustomEvent<any>;
|
|
22
23
|
}, {
|
|
@@ -34,14 +35,15 @@ declare const __propDef: {
|
|
|
34
35
|
class?: string;
|
|
35
36
|
label?: string | undefined;
|
|
36
37
|
disabled?: boolean;
|
|
37
|
-
hidden?: boolean | undefined;
|
|
38
38
|
role?: 'menuitem' | 'menuitemcheckbox' | 'menuitemradio';
|
|
39
|
+
hidden?: boolean | undefined;
|
|
39
40
|
iconName?: string;
|
|
40
41
|
iconLabel?: string;
|
|
41
42
|
};
|
|
42
43
|
events: {
|
|
43
44
|
click: MouseEvent;
|
|
44
45
|
select: Event;
|
|
46
|
+
change: Event;
|
|
45
47
|
} & {
|
|
46
48
|
[evt: string]: CustomEvent<any>;
|
|
47
49
|
};
|
|
@@ -46,9 +46,9 @@
|
|
|
46
46
|
</script>
|
|
47
47
|
|
|
48
48
|
<div
|
|
49
|
+
role="radiogroup"
|
|
49
50
|
class="sui radio-group {className} {orientation}"
|
|
50
51
|
tabindex="-1"
|
|
51
|
-
role="radiogroup"
|
|
52
52
|
hidden={hidden || undefined}
|
|
53
53
|
aria-hidden={hidden}
|
|
54
54
|
aria-disabled={disabled}
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
use:activateGroup
|
|
61
61
|
on:change
|
|
62
62
|
>
|
|
63
|
-
<div class="inner" inert={disabled}>
|
|
63
|
+
<div role="none" class="inner" inert={disabled}>
|
|
64
64
|
<slot />
|
|
65
65
|
</div>
|
|
66
66
|
</div>
|
|
@@ -72,16 +72,16 @@
|
|
|
72
72
|
outline-width: 0 !important;
|
|
73
73
|
}
|
|
74
74
|
.radio-group.horizontal {
|
|
75
|
-
gap:
|
|
75
|
+
gap: 8px;
|
|
76
76
|
align-items: center;
|
|
77
77
|
}
|
|
78
78
|
.radio-group.vertical {
|
|
79
|
-
gap:
|
|
79
|
+
gap: 4px;
|
|
80
80
|
flex-direction: column;
|
|
81
81
|
}
|
|
82
82
|
@media (pointer: coarse) {
|
|
83
83
|
.radio-group.vertical {
|
|
84
|
-
gap:
|
|
84
|
+
gap: 8px;
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
|
|
@@ -56,9 +56,9 @@
|
|
|
56
56
|
</script>
|
|
57
57
|
|
|
58
58
|
<span
|
|
59
|
+
role="none"
|
|
59
60
|
class="sui radio {className}"
|
|
60
61
|
class:disabled
|
|
61
|
-
role="none"
|
|
62
62
|
hidden={hidden || undefined}
|
|
63
63
|
{...$$restProps}
|
|
64
64
|
on:click={(event) => {
|
|
@@ -68,8 +68,8 @@
|
|
|
68
68
|
}}
|
|
69
69
|
>
|
|
70
70
|
<Button
|
|
71
|
-
{id}
|
|
72
71
|
role="radio"
|
|
72
|
+
{id}
|
|
73
73
|
{hidden}
|
|
74
74
|
{disabled}
|
|
75
75
|
{name}
|
|
@@ -82,6 +82,7 @@
|
|
|
82
82
|
checked = true;
|
|
83
83
|
}}
|
|
84
84
|
on:select
|
|
85
|
+
on:change
|
|
85
86
|
/>
|
|
86
87
|
{#if $$slots.default || label}
|
|
87
88
|
<label id="{id}-label">
|
|
@@ -98,6 +99,7 @@
|
|
|
98
99
|
display: inline-flex;
|
|
99
100
|
align-items: center;
|
|
100
101
|
gap: 8px;
|
|
102
|
+
margin: var(--sui-focus-ring-width);
|
|
101
103
|
color: var(--sui-control-foreground-color);
|
|
102
104
|
font-family: var(--sui-control-font-family);
|
|
103
105
|
font-size: var(--sui-control-font-size);
|
|
@@ -126,6 +128,7 @@
|
|
|
126
128
|
.radio :global(button) {
|
|
127
129
|
justify-content: center;
|
|
128
130
|
overflow: hidden;
|
|
131
|
+
margin: 0 !important;
|
|
129
132
|
border-width: 1.5px;
|
|
130
133
|
border-color: var(--sui-checkbox-border-color);
|
|
131
134
|
border-radius: var(--sui-checkbox-height);
|
|
@@ -18,6 +18,7 @@ export default class Radio extends SvelteComponent<{
|
|
|
18
18
|
hidden?: boolean;
|
|
19
19
|
}, {
|
|
20
20
|
select: Event;
|
|
21
|
+
change: Event;
|
|
21
22
|
} & {
|
|
22
23
|
[evt: string]: CustomEvent<any>;
|
|
23
24
|
}, {
|
|
@@ -41,6 +42,7 @@ declare const __propDef: {
|
|
|
41
42
|
};
|
|
42
43
|
events: {
|
|
43
44
|
select: Event;
|
|
45
|
+
change: Event;
|
|
44
46
|
} & {
|
|
45
47
|
[evt: string]: CustomEvent<any>;
|
|
46
48
|
};
|
|
@@ -100,13 +100,13 @@
|
|
|
100
100
|
}
|
|
101
101
|
</script>
|
|
102
102
|
|
|
103
|
-
<div class="sui combobox {className}" hidden={hidden || undefined} {...$$restProps}>
|
|
103
|
+
<div role="none" class="sui combobox {className}" hidden={hidden || undefined} {...$$restProps}>
|
|
104
104
|
{#if !editable}
|
|
105
105
|
<div
|
|
106
|
+
role="combobox"
|
|
106
107
|
{id}
|
|
107
108
|
class:selected={value !== undefined}
|
|
108
109
|
tabindex={disabled ? -1 : 0}
|
|
109
|
-
role="combobox"
|
|
110
110
|
aria-controls="{id}-popup"
|
|
111
111
|
aria-expanded={$isPopupOpen}
|
|
112
112
|
aria-hidden={hidden}
|
|
@@ -117,7 +117,7 @@
|
|
|
117
117
|
{...$$restProps}
|
|
118
118
|
bind:this={comboboxElement}
|
|
119
119
|
>
|
|
120
|
-
<div class="label">
|
|
120
|
+
<div role="none" class="label">
|
|
121
121
|
{value !== undefined ? label : $_('_sui.combobox.select_an_option')}
|
|
122
122
|
</div>
|
|
123
123
|
</div>
|
|
@@ -145,6 +145,7 @@
|
|
|
145
145
|
{hidden}
|
|
146
146
|
{disabled}
|
|
147
147
|
tabindex={readonly || disabled ? -1 : 0}
|
|
148
|
+
aria-label={$isPopupOpen ? $_('_sui.collapse') : $_('_sui.expand')}
|
|
148
149
|
aria-controls="{id}-popup"
|
|
149
150
|
aria-expanded={$isPopupOpen}
|
|
150
151
|
on:click={(event) => {
|
|
@@ -156,11 +157,7 @@
|
|
|
156
157
|
}
|
|
157
158
|
}}
|
|
158
159
|
>
|
|
159
|
-
<Icon
|
|
160
|
-
slot="start-icon"
|
|
161
|
-
name="expand_more"
|
|
162
|
-
label={$isPopupOpen ? $_('_sui.collapse') : $_('_sui.expand')}
|
|
163
|
-
/>
|
|
160
|
+
<Icon slot="start-icon" name="expand_more" />
|
|
164
161
|
</Button>
|
|
165
162
|
</div>
|
|
166
163
|
<Popup
|
|
@@ -168,7 +165,6 @@
|
|
|
168
165
|
class="combobox"
|
|
169
166
|
anchor={comboboxElement ?? inputComponent?.element}
|
|
170
167
|
{position}
|
|
171
|
-
keepContent={true}
|
|
172
168
|
touchOptimized={true}
|
|
173
169
|
bind:open={isPopupOpen}
|
|
174
170
|
bind:this={popupComponent}
|
|
@@ -185,6 +181,7 @@
|
|
|
185
181
|
</Popup>
|
|
186
182
|
|
|
187
183
|
<style>.combobox {
|
|
184
|
+
margin: var(--sui-focus-ring-width);
|
|
188
185
|
display: flex;
|
|
189
186
|
align-items: center;
|
|
190
187
|
position: relative;
|
|
@@ -203,6 +200,7 @@
|
|
|
203
200
|
position: absolute;
|
|
204
201
|
inset: 0 0 auto auto;
|
|
205
202
|
z-index: 1;
|
|
203
|
+
margin: 0 !important;
|
|
206
204
|
border-top-left-radius: 0;
|
|
207
205
|
border-bottom-left-radius: 0;
|
|
208
206
|
}
|
|
@@ -244,6 +242,10 @@
|
|
|
244
242
|
white-space: nowrap;
|
|
245
243
|
text-overflow: ellipsis;
|
|
246
244
|
}
|
|
245
|
+
.combobox :global(.text-input) {
|
|
246
|
+
margin: 0 !important;
|
|
247
|
+
width: 100% !important;
|
|
248
|
+
}
|
|
247
249
|
.combobox :global(input) {
|
|
248
250
|
padding: 0 32px 0 8px;
|
|
249
251
|
width: 0;
|
|
@@ -250,6 +250,10 @@
|
|
|
250
250
|
* Initialize the variables.
|
|
251
251
|
*/
|
|
252
252
|
const init = () => {
|
|
253
|
+
if (!base) {
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
|
|
253
257
|
barWidth = base.clientWidth;
|
|
254
258
|
|
|
255
259
|
const stepCount = (max - min) / step + 1;
|
|
@@ -262,13 +266,15 @@
|
|
|
262
266
|
};
|
|
263
267
|
|
|
264
268
|
onMount(() => {
|
|
269
|
+
const observer = new ResizeObserver(() => init());
|
|
265
270
|
const query = window.matchMedia('(pointer: coarse)');
|
|
266
271
|
|
|
267
|
-
|
|
272
|
+
observer.observe(base);
|
|
268
273
|
query.addEventListener('change', init);
|
|
269
274
|
init();
|
|
270
275
|
|
|
271
276
|
return () => {
|
|
277
|
+
observer.disconnect();
|
|
272
278
|
query.removeEventListener('change', init);
|
|
273
279
|
};
|
|
274
280
|
});
|
|
@@ -287,21 +293,21 @@
|
|
|
287
293
|
/>
|
|
288
294
|
|
|
289
295
|
<div
|
|
296
|
+
role="none"
|
|
290
297
|
class="sui slider {className}"
|
|
291
298
|
class:disabled
|
|
292
299
|
class:readonly
|
|
293
|
-
role="none"
|
|
294
300
|
hidden={hidden || undefined}
|
|
295
301
|
{...$$restProps}
|
|
296
302
|
on:click|preventDefault|stopPropagation
|
|
297
303
|
>
|
|
298
304
|
<div
|
|
299
|
-
class="base"
|
|
300
305
|
role="none"
|
|
306
|
+
class="base"
|
|
301
307
|
bind:this={base}
|
|
302
308
|
on:click|preventDefault|stopPropagation={(event) => onClick(event)}
|
|
303
309
|
>
|
|
304
|
-
<div class="base-bar" />
|
|
310
|
+
<div role="none" class="base-bar" />
|
|
305
311
|
<div
|
|
306
312
|
class="slider-bar"
|
|
307
313
|
style:left="{multiThumb ? sliderPositions[0] : 0}px"
|
|
@@ -342,8 +348,8 @@
|
|
|
342
348
|
{#if optionLabels.length}
|
|
343
349
|
{#each optionLabels as label, index}
|
|
344
350
|
<span
|
|
351
|
+
role="none"
|
|
345
352
|
class="label"
|
|
346
|
-
role="presentation"
|
|
347
353
|
style:left="{(barWidth / (optionLabels.length - 1)) * index}px"
|
|
348
354
|
>
|
|
349
355
|
{label}
|
|
@@ -356,6 +362,7 @@
|
|
|
356
362
|
<style>.slider {
|
|
357
363
|
position: relative;
|
|
358
364
|
display: inline-block;
|
|
365
|
+
margin: var(--sui-focus-ring-width);
|
|
359
366
|
padding: var(--sui-checkbox-height) calc(var(--sui-checkbox-height) / 2);
|
|
360
367
|
touch-action: none;
|
|
361
368
|
}
|
|
@@ -49,9 +49,9 @@
|
|
|
49
49
|
</script>
|
|
50
50
|
|
|
51
51
|
<button
|
|
52
|
+
role="switch"
|
|
52
53
|
class="sui switch {className}"
|
|
53
54
|
type="button"
|
|
54
|
-
role="switch"
|
|
55
55
|
hidden={hidden || undefined}
|
|
56
56
|
disabled={disabled || undefined}
|
|
57
57
|
aria-checked={checked}
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
}
|
|
68
68
|
}}
|
|
69
69
|
>
|
|
70
|
-
<span />
|
|
70
|
+
<span role="none" />
|
|
71
71
|
{#if label}
|
|
72
72
|
{label}
|
|
73
73
|
{:else}
|
|
@@ -79,6 +79,7 @@
|
|
|
79
79
|
display: inline-flex;
|
|
80
80
|
align-items: center;
|
|
81
81
|
gap: 8px;
|
|
82
|
+
margin: var(--sui-focus-ring-width);
|
|
82
83
|
border-width: 0;
|
|
83
84
|
border-style: solid;
|
|
84
85
|
border-color: transparent;
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
export default class Switch extends SvelteComponent<{
|
|
10
10
|
[x: string]: any;
|
|
11
11
|
class?: string;
|
|
12
|
-
label?: string;
|
|
13
12
|
invalid?: boolean;
|
|
13
|
+
label?: string;
|
|
14
14
|
checked?: boolean | "mixed";
|
|
15
15
|
disabled?: boolean;
|
|
16
16
|
required?: boolean;
|
|
@@ -30,8 +30,8 @@ declare const __propDef: {
|
|
|
30
30
|
props: {
|
|
31
31
|
[x: string]: any;
|
|
32
32
|
class?: string;
|
|
33
|
-
label?: string | undefined;
|
|
34
33
|
invalid?: boolean;
|
|
34
|
+
label?: string | undefined;
|
|
35
35
|
checked?: boolean | 'mixed';
|
|
36
36
|
disabled?: boolean;
|
|
37
37
|
required?: boolean;
|
|
@@ -5,19 +5,47 @@
|
|
|
5
5
|
@see https://w3c.github.io/aria/#rowgroup
|
|
6
6
|
-->
|
|
7
7
|
<script>
|
|
8
|
+
import { getRandomId } from '../../services/util';
|
|
9
|
+
|
|
8
10
|
/**
|
|
9
|
-
*
|
|
11
|
+
* The `class` attribute on the wrapper element.
|
|
10
12
|
* @type {string}
|
|
11
13
|
*/
|
|
12
14
|
let className = '';
|
|
13
|
-
|
|
14
15
|
export { className as class };
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Display label for the row group.
|
|
19
|
+
* @type {string}
|
|
20
|
+
*/
|
|
21
|
+
export let label = '';
|
|
22
|
+
|
|
23
|
+
const id = getRandomId('tbody');
|
|
15
24
|
</script>
|
|
16
25
|
|
|
17
|
-
<div
|
|
26
|
+
<div
|
|
27
|
+
role="rowgroup"
|
|
28
|
+
class="sui table-body row-group {className}"
|
|
29
|
+
aria-labelledby={label ? `${id}-label` : undefined}
|
|
30
|
+
aria-roledescription="table body"
|
|
31
|
+
{...$$restProps}
|
|
32
|
+
>
|
|
33
|
+
{#if label}
|
|
34
|
+
<tr class="row-group-caption">
|
|
35
|
+
<th id="{id}-label" colspan="9999" scope="rowgroup">{label}</th>
|
|
36
|
+
</tr>
|
|
37
|
+
{/if}
|
|
18
38
|
<slot />
|
|
19
39
|
</div>
|
|
20
40
|
|
|
21
41
|
<style>.table-body {
|
|
22
42
|
display: table-row-group;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
th {
|
|
46
|
+
padding: 8px;
|
|
47
|
+
color: var(--sui-secondary-foreground-color);
|
|
48
|
+
background-color: var(--sui-secondary-background-color);
|
|
49
|
+
font-size: var(--sui-font-size-default);
|
|
50
|
+
text-align: left;
|
|
23
51
|
}</style>
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
export default class TableBody extends SvelteComponent<{
|
|
10
10
|
[x: string]: any;
|
|
11
11
|
class?: string;
|
|
12
|
+
label?: string;
|
|
12
13
|
}, {
|
|
13
14
|
[evt: string]: CustomEvent<any>;
|
|
14
15
|
}, {
|
|
@@ -23,6 +24,7 @@ declare const __propDef: {
|
|
|
23
24
|
props: {
|
|
24
25
|
[x: string]: any;
|
|
25
26
|
class?: string;
|
|
27
|
+
label?: string;
|
|
26
28
|
};
|
|
27
29
|
events: {
|
|
28
30
|
[evt: string]: CustomEvent<any>;
|
|
@@ -2,19 +2,18 @@
|
|
|
2
2
|
@component
|
|
3
3
|
The equivalent of the HTML `<td>` element.
|
|
4
4
|
@see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td
|
|
5
|
-
@see https://w3c.github.io/aria/#
|
|
5
|
+
@see https://w3c.github.io/aria/#cell
|
|
6
6
|
-->
|
|
7
7
|
<script>
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
9
|
+
* The `class` attribute on the wrapper element.
|
|
10
10
|
* @type {string}
|
|
11
11
|
*/
|
|
12
12
|
let className = '';
|
|
13
|
-
|
|
14
13
|
export { className as class };
|
|
15
14
|
</script>
|
|
16
15
|
|
|
17
|
-
<div role="
|
|
16
|
+
<div role="cell" class="sui table-cell {className}" {...$$restProps}>
|
|
18
17
|
<slot />
|
|
19
18
|
</div>
|
|
20
19
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
/**
|
|
5
5
|
* The equivalent of the HTML `<td>` element.
|
|
6
6
|
* @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td
|
|
7
|
-
* @see https://w3c.github.io/aria/#
|
|
7
|
+
* @see https://w3c.github.io/aria/#cell
|
|
8
8
|
*/
|
|
9
9
|
export default class TableCell extends SvelteComponent<{
|
|
10
10
|
[x: string]: any;
|