@sveltia/ui 0.7.5 → 0.8.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 +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 +78 -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 +6 -16
- package/package/components/toast/toast.svelte.d.ts +2 -2
- 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.json +97 -1
|
@@ -42,16 +42,17 @@
|
|
|
42
42
|
</script>
|
|
43
43
|
|
|
44
44
|
<div
|
|
45
|
+
role="group"
|
|
45
46
|
{id}
|
|
46
47
|
class="sui disclosure {className}"
|
|
47
|
-
role="group"
|
|
48
48
|
hidden={hidden || undefined}
|
|
49
49
|
aria-hidden={hidden}
|
|
50
50
|
aria-disabled={disabled}
|
|
51
51
|
aria-labelledby="{id}-header"
|
|
52
|
+
aria-roledescription="disclosure"
|
|
52
53
|
{...$$restProps}
|
|
53
54
|
>
|
|
54
|
-
<div class="inner" inert={disabled}>
|
|
55
|
+
<div role="none" class="inner" inert={disabled}>
|
|
55
56
|
<Button
|
|
56
57
|
class="header"
|
|
57
58
|
id="{id}-header"
|
|
@@ -9,11 +9,6 @@
|
|
|
9
9
|
*/
|
|
10
10
|
let className = '';
|
|
11
11
|
export { className as class };
|
|
12
|
-
/**
|
|
13
|
-
* Whether to hide the widget. An alias of the `aria-hidden` attribute.
|
|
14
|
-
* @type {boolean | undefined}
|
|
15
|
-
*/
|
|
16
|
-
export let hidden = undefined;
|
|
17
12
|
/**
|
|
18
13
|
* Whether to make the spacer flexible.
|
|
19
14
|
* @type {boolean}
|
|
@@ -21,13 +16,7 @@
|
|
|
21
16
|
export let flex = false;
|
|
22
17
|
</script>
|
|
23
18
|
|
|
24
|
-
<div
|
|
25
|
-
class="sui spacer {className}"
|
|
26
|
-
class:flex
|
|
27
|
-
hidden={hidden || undefined}
|
|
28
|
-
aria-hidden={hidden}
|
|
29
|
-
{...$$restProps}
|
|
30
|
-
/>
|
|
19
|
+
<div role="none" class="sui spacer {className}" class:flex {...$$restProps} />
|
|
31
20
|
|
|
32
21
|
<style>.spacer.flex {
|
|
33
22
|
flex: auto;
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
export default class Spacer extends SvelteComponent<{
|
|
6
6
|
[x: string]: any;
|
|
7
7
|
class?: string;
|
|
8
|
-
hidden?: boolean;
|
|
9
8
|
flex?: boolean;
|
|
10
9
|
}, {
|
|
11
10
|
[evt: string]: CustomEvent<any>;
|
|
@@ -19,7 +18,6 @@ declare const __propDef: {
|
|
|
19
18
|
props: {
|
|
20
19
|
[x: string]: any;
|
|
21
20
|
class?: string;
|
|
22
|
-
hidden?: boolean | undefined;
|
|
23
21
|
flex?: boolean;
|
|
24
22
|
};
|
|
25
23
|
events: {
|
|
@@ -5,332 +5,242 @@
|
|
|
5
5
|
@see https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/
|
|
6
6
|
-->
|
|
7
7
|
<script>
|
|
8
|
-
import { createEventDispatcher, onMount } from 'svelte';
|
|
9
8
|
import { _ } from 'svelte-i18n';
|
|
9
|
+
import { getRandomId } from '../../services/util';
|
|
10
10
|
import Button from '../button/button.svelte';
|
|
11
11
|
import Spacer from '../divider/spacer.svelte';
|
|
12
12
|
import Icon from '../icon/icon.svelte';
|
|
13
|
+
import Modal from '../util/modal.svelte';
|
|
13
14
|
|
|
14
15
|
/**
|
|
15
|
-
*
|
|
16
|
+
* The `class` attribute on the content element.
|
|
16
17
|
* @type {string}
|
|
17
18
|
*/
|
|
18
19
|
let className = '';
|
|
19
|
-
|
|
20
20
|
export { className as class };
|
|
21
|
-
|
|
22
21
|
/**
|
|
23
22
|
* Whether to open the drawer.
|
|
23
|
+
* @type {boolean}
|
|
24
24
|
*/
|
|
25
25
|
export let open = false;
|
|
26
|
-
|
|
27
26
|
/**
|
|
28
27
|
* Title text displayed on the header.
|
|
28
|
+
* @type {string}
|
|
29
29
|
*/
|
|
30
30
|
export let title = '';
|
|
31
|
-
|
|
32
31
|
/**
|
|
33
32
|
* Position of the drawer.
|
|
34
|
-
* @type {
|
|
33
|
+
* @type {'top' | 'right' | 'bottom' | 'left'}
|
|
35
34
|
*/
|
|
36
35
|
export let position = 'right';
|
|
37
|
-
|
|
38
36
|
/**
|
|
39
37
|
* Width or height of the drawer.
|
|
40
|
-
* @type {
|
|
38
|
+
* @type {'small' | 'medium' | 'large' | 'x-large'}
|
|
41
39
|
*/
|
|
42
40
|
export let size = 'small';
|
|
43
|
-
|
|
44
41
|
/**
|
|
45
42
|
* Whether to show the Close button.
|
|
46
|
-
* @type {
|
|
43
|
+
* @type {'inside' | 'outside' | false}
|
|
47
44
|
*/
|
|
48
45
|
export let showClose = 'outside';
|
|
49
|
-
|
|
50
46
|
/**
|
|
51
|
-
* Whether to close the
|
|
47
|
+
* Whether to close the modal when the backdrop (outside of the modal) is clicked.
|
|
48
|
+
* @type {boolean}
|
|
52
49
|
*/
|
|
53
|
-
export let
|
|
54
|
-
|
|
50
|
+
export let lightDismiss = false;
|
|
55
51
|
/**
|
|
56
|
-
* Whether to keep the content when the
|
|
52
|
+
* Whether to keep the content in the DOM tree when the modal is not displayed.
|
|
53
|
+
* @type {boolean}
|
|
57
54
|
*/
|
|
58
55
|
export let keepContent = false;
|
|
59
56
|
|
|
60
|
-
const dispatch = createEventDispatcher();
|
|
61
|
-
/** @type {?HTMLDialogElement} */
|
|
62
|
-
let dialog;
|
|
63
|
-
/** @type {?HTMLFormElement} */
|
|
64
|
-
let form;
|
|
65
|
-
let showDialog = false;
|
|
66
|
-
let showContent = false;
|
|
67
|
-
|
|
68
|
-
$: orientation = position === 'right' || position === 'left' ? 'vertical' : 'horizontal';
|
|
69
|
-
|
|
70
57
|
/**
|
|
71
|
-
*
|
|
58
|
+
* The ID of the drawer.
|
|
59
|
+
* @type {string}
|
|
72
60
|
*/
|
|
73
|
-
const
|
|
74
|
-
(document.querySelector('.sui.app-shell') ?? document.body).appendChild(dialog);
|
|
75
|
-
showContent = true;
|
|
76
|
-
dialog.showModal();
|
|
77
|
-
|
|
78
|
-
window.requestAnimationFrame(() => {
|
|
79
|
-
showDialog = true;
|
|
80
|
-
});
|
|
81
|
-
};
|
|
82
|
-
|
|
61
|
+
const id = getRandomId('drawer');
|
|
83
62
|
/**
|
|
84
|
-
*
|
|
63
|
+
* A reference to the modal component.
|
|
64
|
+
* @type {Modal}
|
|
85
65
|
*/
|
|
86
|
-
|
|
87
|
-
showDialog = false;
|
|
88
|
-
|
|
89
|
-
if (dialog.returnValue === 'ok') {
|
|
90
|
-
dispatch('ok');
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
if (dialog.returnValue === 'cancel') {
|
|
94
|
-
dispatch('cancel');
|
|
95
|
-
}
|
|
66
|
+
let modal;
|
|
96
67
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
await new Promise((resolve) => {
|
|
100
|
-
form.addEventListener('transitionend', () => resolve(), { once: true });
|
|
101
|
-
});
|
|
102
|
-
|
|
103
|
-
showContent = false;
|
|
104
|
-
dialog?.close();
|
|
105
|
-
dialog?.remove();
|
|
106
|
-
};
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
*
|
|
110
|
-
*/
|
|
111
|
-
const toggleDialog = () => {
|
|
112
|
-
if (dialog) {
|
|
113
|
-
if (open) {
|
|
114
|
-
openDialog();
|
|
115
|
-
} else {
|
|
116
|
-
closeDialog();
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
};
|
|
120
|
-
|
|
121
|
-
$: {
|
|
122
|
-
void open;
|
|
123
|
-
toggleDialog();
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
onMount(() => {
|
|
127
|
-
dialog.remove();
|
|
128
|
-
|
|
129
|
-
// onUnmount
|
|
130
|
-
return () => {
|
|
131
|
-
dialog?.close();
|
|
132
|
-
dialog?.remove();
|
|
133
|
-
};
|
|
134
|
-
});
|
|
68
|
+
$: orientation = position === 'right' || position === 'left' ? 'vertical' : 'horizontal';
|
|
135
69
|
</script>
|
|
136
70
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
71
|
+
<Modal
|
|
72
|
+
{id}
|
|
73
|
+
class="drawer"
|
|
74
|
+
bind:open
|
|
75
|
+
showBackdrop
|
|
76
|
+
{lightDismiss}
|
|
77
|
+
{keepContent}
|
|
142
78
|
{...$$restProps}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
on:
|
|
150
|
-
// Cancelled with the Escape key
|
|
151
|
-
open = false;
|
|
152
|
-
}}
|
|
79
|
+
bind:this={modal}
|
|
80
|
+
on:opening
|
|
81
|
+
on:open
|
|
82
|
+
on:ok
|
|
83
|
+
on:cancel
|
|
84
|
+
on:closing
|
|
85
|
+
on:close
|
|
153
86
|
>
|
|
154
|
-
<
|
|
155
|
-
<div class="extra-control">
|
|
87
|
+
<div role="none" class="content {className} {size} {position} {orientation}">
|
|
88
|
+
<div role="none" class="extra-control">
|
|
156
89
|
{#if showClose === 'outside'}
|
|
157
90
|
<Button
|
|
158
91
|
variant="ghost"
|
|
159
92
|
iconic
|
|
160
93
|
class="close"
|
|
94
|
+
aria-label={$_('_sui.close')}
|
|
95
|
+
aria-controls={id}
|
|
161
96
|
on:click={() => {
|
|
162
|
-
|
|
163
|
-
open = false;
|
|
97
|
+
modal.close('close');
|
|
164
98
|
}}
|
|
165
99
|
>
|
|
166
|
-
<Icon slot="start-icon" name="close"
|
|
100
|
+
<Icon slot="start-icon" name="close" />
|
|
167
101
|
</Button>
|
|
168
102
|
{/if}
|
|
169
103
|
</div>
|
|
170
|
-
{#if
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
<slot name="header-extra" />
|
|
182
|
-
{/if}
|
|
183
|
-
{#if showClose === 'inside'}
|
|
184
|
-
<Button
|
|
185
|
-
variant="ghost"
|
|
186
|
-
iconic
|
|
187
|
-
class="close"
|
|
188
|
-
on:click={() => {
|
|
189
|
-
dialog.returnValue = 'close';
|
|
190
|
-
open = false;
|
|
191
|
-
}}
|
|
192
|
-
>
|
|
193
|
-
<Icon slot="start-icon" name="close" label={$_('_sui.close')} />
|
|
194
|
-
</Button>
|
|
195
|
-
{/if}
|
|
104
|
+
{#if title || showClose === 'inside' || $$slots.header || $$slots['header-extra']}
|
|
105
|
+
<div role="none" class="header">
|
|
106
|
+
{#if $$slots.header}
|
|
107
|
+
<slot name="header" />
|
|
108
|
+
{:else}
|
|
109
|
+
<div role="none" class="title">
|
|
110
|
+
{title}
|
|
111
|
+
</div>
|
|
112
|
+
<Spacer flex={true} />
|
|
113
|
+
{#if $$slots['header-extra']}
|
|
114
|
+
<slot name="header-extra" />
|
|
196
115
|
{/if}
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
116
|
+
{#if showClose === 'inside'}
|
|
117
|
+
<Button
|
|
118
|
+
variant="ghost"
|
|
119
|
+
iconic
|
|
120
|
+
class="close"
|
|
121
|
+
aria-label={$_('_sui.close')}
|
|
122
|
+
aria-controls={id}
|
|
123
|
+
on:click={() => {
|
|
124
|
+
modal.close('close');
|
|
125
|
+
}}
|
|
126
|
+
>
|
|
127
|
+
<Icon slot="start-icon" name="close" />
|
|
128
|
+
</Button>
|
|
129
|
+
{/if}
|
|
130
|
+
{/if}
|
|
201
131
|
</div>
|
|
202
|
-
{#if $$slots.footer}
|
|
203
|
-
<div class="footer">
|
|
204
|
-
<slot name="footer" />
|
|
205
|
-
</div>
|
|
206
|
-
{/if}
|
|
207
132
|
{/if}
|
|
208
|
-
|
|
209
|
-
|
|
133
|
+
<div role="none" class="main">
|
|
134
|
+
<slot />
|
|
135
|
+
</div>
|
|
136
|
+
{#if $$slots.footer}
|
|
137
|
+
<div role="none" class="footer">
|
|
138
|
+
<slot name="footer" />
|
|
139
|
+
</div>
|
|
140
|
+
{/if}
|
|
141
|
+
</div>
|
|
142
|
+
</Modal>
|
|
210
143
|
|
|
211
|
-
<style
|
|
212
|
-
overflow: hidden;
|
|
213
|
-
outline: 0;
|
|
214
|
-
background-color: var(--sui-popup-backdrop-color);
|
|
215
|
-
}
|
|
216
|
-
dialog.open form {
|
|
217
|
-
opacity: 1;
|
|
218
|
-
transform: translateX(0%);
|
|
219
|
-
transition-duration: 100ms;
|
|
220
|
-
}
|
|
221
|
-
dialog:not(.open) {
|
|
222
|
-
pointer-events: none !important;
|
|
223
|
-
}
|
|
224
|
-
dialog:not(.open) form {
|
|
225
|
-
opacity: 0;
|
|
226
|
-
transform: translateX(105%);
|
|
227
|
-
pointer-events: none;
|
|
228
|
-
transition-duration: 200ms;
|
|
229
|
-
}
|
|
230
|
-
dialog:not(.open) :global(*) {
|
|
231
|
-
pointer-events: none !important;
|
|
232
|
-
}
|
|
233
|
-
dialog :global(a),
|
|
234
|
-
dialog :global(input),
|
|
235
|
-
dialog :global(textarea),
|
|
236
|
-
dialog :global(button),
|
|
237
|
-
dialog :global([tabindex="0"]) {
|
|
238
|
-
pointer-events: all;
|
|
239
|
-
}
|
|
240
|
-
dialog form {
|
|
144
|
+
<style>.content {
|
|
241
145
|
position: absolute;
|
|
242
146
|
display: flex;
|
|
243
147
|
flex-direction: column;
|
|
244
148
|
border-radius: 4px;
|
|
245
|
-
max-width:
|
|
246
|
-
max-height:
|
|
149
|
+
max-width: 100dvw;
|
|
150
|
+
max-height: 100dvh;
|
|
247
151
|
background-color: var(--sui-secondary-background-color-translucent);
|
|
248
|
-
-webkit-backdrop-filter: blur(32px);
|
|
249
|
-
backdrop-filter: blur(32px);
|
|
250
152
|
box-shadow: 0 8px 16px var(--sui-popup-shadow-color);
|
|
251
|
-
|
|
252
|
-
|
|
153
|
+
-webkit-backdrop-filter: blur(16px);
|
|
154
|
+
backdrop-filter: blur(16px);
|
|
155
|
+
transition-property: transform;
|
|
253
156
|
}
|
|
254
|
-
|
|
157
|
+
.content .extra-control {
|
|
255
158
|
position: absolute;
|
|
256
159
|
}
|
|
257
|
-
|
|
160
|
+
.content .extra-control :global(button.close) {
|
|
258
161
|
margin: 8px;
|
|
259
162
|
}
|
|
260
|
-
dialog.
|
|
163
|
+
:global(dialog.open) .content {
|
|
164
|
+
transition-duration: 150ms;
|
|
165
|
+
transform: translateX(0%);
|
|
166
|
+
}
|
|
167
|
+
:global(dialog:not(.open)) .content {
|
|
168
|
+
transition-duration: 300ms;
|
|
169
|
+
}
|
|
170
|
+
.content.right {
|
|
261
171
|
inset: 0 0 0 auto;
|
|
262
172
|
}
|
|
263
|
-
|
|
173
|
+
.content.right .extra-control {
|
|
264
174
|
inset: 0 100% auto auto;
|
|
265
175
|
}
|
|
266
|
-
dialog
|
|
176
|
+
:global(dialog:not(.open)) .content.right {
|
|
267
177
|
transform: translateX(105%);
|
|
268
178
|
}
|
|
269
|
-
|
|
179
|
+
.content.left {
|
|
270
180
|
inset: 0 auto 0 0;
|
|
271
181
|
}
|
|
272
|
-
|
|
182
|
+
.content.left .extra-control {
|
|
273
183
|
inset: 0 auto auto 100%;
|
|
274
184
|
}
|
|
275
|
-
dialog
|
|
185
|
+
:global(dialog:not(.open)) .content.left {
|
|
276
186
|
transform: translateX(-105%);
|
|
277
187
|
}
|
|
278
|
-
|
|
188
|
+
.content.vertical {
|
|
279
189
|
height: 100%;
|
|
280
|
-
max-width:
|
|
190
|
+
max-width: 100dvw;
|
|
281
191
|
}
|
|
282
|
-
dialog.
|
|
283
|
-
max-width: calc(
|
|
192
|
+
:global(dialog.open) .content.vertical {
|
|
193
|
+
max-width: calc(100dvw - 56px);
|
|
284
194
|
transform: translateX(0%);
|
|
285
195
|
}
|
|
286
|
-
|
|
196
|
+
.content.vertical.small {
|
|
287
197
|
width: 400px;
|
|
288
198
|
}
|
|
289
|
-
|
|
199
|
+
.content.vertical.medium {
|
|
290
200
|
width: 600px;
|
|
291
201
|
}
|
|
292
|
-
|
|
202
|
+
.content.vertical.large {
|
|
293
203
|
width: 800px;
|
|
294
204
|
}
|
|
295
|
-
|
|
205
|
+
.content.vertical.x-large {
|
|
296
206
|
width: 1000px;
|
|
297
207
|
}
|
|
298
|
-
|
|
208
|
+
.content.top {
|
|
299
209
|
inset: 0 0 auto 0;
|
|
300
210
|
}
|
|
301
|
-
|
|
211
|
+
.content.top .extra-control {
|
|
302
212
|
inset: 100% 0 auto auto;
|
|
303
213
|
}
|
|
304
|
-
dialog
|
|
214
|
+
:global(dialog:not(.open)) .content.top {
|
|
305
215
|
transform: translateY(-105%);
|
|
306
216
|
}
|
|
307
|
-
|
|
217
|
+
.content.bottom {
|
|
308
218
|
inset: auto 0 0 0;
|
|
309
219
|
}
|
|
310
|
-
|
|
220
|
+
.content.bottom .extra-control {
|
|
311
221
|
inset: auto 0 100% auto;
|
|
312
222
|
}
|
|
313
|
-
dialog
|
|
223
|
+
:global(dialog:not(.open)) .content.bottom {
|
|
314
224
|
transform: translateY(105%);
|
|
315
225
|
}
|
|
316
|
-
|
|
226
|
+
.content.horizontal {
|
|
317
227
|
width: 100%;
|
|
318
|
-
max-height:
|
|
228
|
+
max-height: 100dvh;
|
|
319
229
|
}
|
|
320
|
-
dialog.
|
|
321
|
-
max-height: calc(
|
|
230
|
+
:global(dialog.open) .content.horizontal {
|
|
231
|
+
max-height: calc(100dvh - 56px);
|
|
322
232
|
transform: translateY(0%);
|
|
323
233
|
}
|
|
324
|
-
|
|
234
|
+
.content.horizontal.small {
|
|
325
235
|
height: 400px;
|
|
326
236
|
}
|
|
327
|
-
|
|
237
|
+
.content.horizontal.medium {
|
|
328
238
|
height: 600px;
|
|
329
239
|
}
|
|
330
|
-
|
|
240
|
+
.content.horizontal.large {
|
|
331
241
|
height: 800px;
|
|
332
242
|
}
|
|
333
|
-
|
|
243
|
+
.content.horizontal.x-large {
|
|
334
244
|
height: 1000px;
|
|
335
245
|
}
|
|
336
246
|
|
|
@@ -12,14 +12,16 @@ export default class Drawer extends SvelteComponent<{
|
|
|
12
12
|
title?: string;
|
|
13
13
|
size?: "small" | "medium" | "large" | "x-large";
|
|
14
14
|
position?: "top" | "right" | "bottom" | "left";
|
|
15
|
-
keepContent?: boolean;
|
|
16
15
|
open?: boolean;
|
|
16
|
+
lightDismiss?: boolean;
|
|
17
|
+
keepContent?: boolean;
|
|
17
18
|
showClose?: false | "inside" | "outside";
|
|
18
|
-
closeOnBackdropClick?: boolean;
|
|
19
19
|
}, {
|
|
20
|
-
|
|
20
|
+
opening: CustomEvent<any>;
|
|
21
|
+
open: CustomEvent<any>;
|
|
21
22
|
ok: CustomEvent<any>;
|
|
22
23
|
cancel: CustomEvent<any>;
|
|
24
|
+
closing: CustomEvent<any>;
|
|
23
25
|
close: CustomEvent<any>;
|
|
24
26
|
} & {
|
|
25
27
|
[evt: string]: CustomEvent<any>;
|
|
@@ -39,17 +41,19 @@ declare const __propDef: {
|
|
|
39
41
|
[x: string]: any;
|
|
40
42
|
class?: string;
|
|
41
43
|
title?: string;
|
|
42
|
-
size?:
|
|
43
|
-
position?:
|
|
44
|
-
keepContent?: boolean;
|
|
44
|
+
size?: 'small' | 'medium' | 'large' | 'x-large';
|
|
45
|
+
position?: 'top' | 'right' | 'bottom' | 'left';
|
|
45
46
|
open?: boolean;
|
|
46
|
-
|
|
47
|
-
|
|
47
|
+
lightDismiss?: boolean;
|
|
48
|
+
keepContent?: boolean;
|
|
49
|
+
showClose?: 'inside' | 'outside' | false;
|
|
48
50
|
};
|
|
49
51
|
events: {
|
|
50
|
-
|
|
52
|
+
opening: CustomEvent<any>;
|
|
53
|
+
open: CustomEvent<any>;
|
|
51
54
|
ok: CustomEvent<any>;
|
|
52
55
|
cancel: CustomEvent<any>;
|
|
56
|
+
closing: CustomEvent<any>;
|
|
53
57
|
close: CustomEvent<any>;
|
|
54
58
|
} & {
|
|
55
59
|
[evt: string]: CustomEvent<any>;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
@component
|
|
3
|
+
The interactive version of `<TableBody>`.
|
|
4
|
+
@see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tbody
|
|
5
|
+
@see https://w3c.github.io/aria/#rowgroup
|
|
6
|
+
-->
|
|
7
|
+
<script>
|
|
8
|
+
import { getRandomId } from '../../services/util';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* The `class` attribute on the wrapper element.
|
|
12
|
+
* @type {string}
|
|
13
|
+
*/
|
|
14
|
+
let className = '';
|
|
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');
|
|
24
|
+
</script>
|
|
25
|
+
|
|
26
|
+
<div
|
|
27
|
+
role="rowgroup"
|
|
28
|
+
class="sui grid-body row-group {className}"
|
|
29
|
+
aria-labelledby={label ? `${id}-label` : undefined}
|
|
30
|
+
aria-roledescription="grid 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}
|
|
38
|
+
<slot />
|
|
39
|
+
</div>
|
|
40
|
+
|
|
41
|
+
<style>.grid-body {
|
|
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;
|
|
51
|
+
}</style>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/** @typedef {typeof __propDef.props} GridBodyProps */
|
|
2
|
+
/** @typedef {typeof __propDef.events} GridBodyEvents */
|
|
3
|
+
/** @typedef {typeof __propDef.slots} GridBodySlots */
|
|
4
|
+
/**
|
|
5
|
+
* The interactive version of `<TableBody>`.
|
|
6
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tbody
|
|
7
|
+
* @see https://w3c.github.io/aria/#rowgroup
|
|
8
|
+
*/
|
|
9
|
+
export default class GridBody extends SvelteComponent<{
|
|
10
|
+
[x: string]: any;
|
|
11
|
+
class?: string;
|
|
12
|
+
label?: string;
|
|
13
|
+
}, {
|
|
14
|
+
[evt: string]: CustomEvent<any>;
|
|
15
|
+
}, {
|
|
16
|
+
default: {};
|
|
17
|
+
}> {
|
|
18
|
+
}
|
|
19
|
+
export type GridBodyProps = typeof __propDef.props;
|
|
20
|
+
export type GridBodyEvents = typeof __propDef.events;
|
|
21
|
+
export type GridBodySlots = typeof __propDef.slots;
|
|
22
|
+
import { SvelteComponent } from "svelte";
|
|
23
|
+
declare const __propDef: {
|
|
24
|
+
props: {
|
|
25
|
+
[x: string]: any;
|
|
26
|
+
class?: string;
|
|
27
|
+
label?: string;
|
|
28
|
+
};
|
|
29
|
+
events: {
|
|
30
|
+
[evt: string]: CustomEvent<any>;
|
|
31
|
+
};
|
|
32
|
+
slots: {
|
|
33
|
+
default: {};
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
@component
|
|
3
|
+
The interactive version of `<TableCell>`.
|
|
4
|
+
@see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td
|
|
5
|
+
@see https://w3c.github.io/aria/#gridcell
|
|
6
|
+
-->
|
|
7
|
+
<script>
|
|
8
|
+
/**
|
|
9
|
+
* The `class` attribute on the wrapper element.
|
|
10
|
+
* @type {string}
|
|
11
|
+
*/
|
|
12
|
+
let className = '';
|
|
13
|
+
export { className as class };
|
|
14
|
+
</script>
|
|
15
|
+
|
|
16
|
+
<div role="gridcell" class="sui grid-cell {className}" {...$$restProps}>
|
|
17
|
+
<slot />
|
|
18
|
+
</div>
|
|
19
|
+
|
|
20
|
+
<style>.grid-cell {
|
|
21
|
+
display: table-cell;
|
|
22
|
+
}</style>
|