@sveltia/ui 0.7.4 → 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.
Files changed (118) hide show
  1. package/package/components/alert/alert.svelte +4 -4
  2. package/package/components/alert/alert.svelte.d.ts +2 -2
  3. package/package/components/button/button.svelte +13 -3
  4. package/package/components/button/button.svelte.d.ts +11 -4
  5. package/package/components/button/select-button-group.svelte +12 -8
  6. package/package/components/button/select-button.svelte +5 -4
  7. package/package/components/button/select-button.svelte.d.ts +2 -0
  8. package/package/components/calendar/calendar.svelte +20 -14
  9. package/package/components/checkbox/checkbox-group.svelte +6 -5
  10. package/package/components/checkbox/checkbox.svelte +16 -9
  11. package/package/components/checkbox/checkbox.svelte.d.ts +2 -2
  12. package/package/components/dialog/alert-dialog.svelte +50 -0
  13. package/package/components/dialog/alert-dialog.svelte.d.ts +55 -0
  14. package/package/components/dialog/confirmation-dialog.svelte +55 -0
  15. package/package/components/dialog/confirmation-dialog.svelte.d.ts +57 -0
  16. package/package/components/dialog/dialog.svelte +164 -220
  17. package/package/components/dialog/dialog.svelte.d.ts +20 -12
  18. package/package/components/dialog/prompt-dialog.svelte +78 -0
  19. package/package/components/dialog/prompt-dialog.svelte.d.ts +72 -0
  20. package/package/components/disclosure/disclosure.svelte +3 -3
  21. package/package/components/divider/divider.svelte +1 -1
  22. package/package/components/divider/spacer.svelte +1 -12
  23. package/package/components/divider/spacer.svelte.d.ts +0 -2
  24. package/package/components/drawer/drawer.svelte +118 -208
  25. package/package/components/drawer/drawer.svelte.d.ts +12 -8
  26. package/package/components/grid/grid-body.svelte +51 -0
  27. package/package/components/grid/grid-body.svelte.d.ts +36 -0
  28. package/package/components/grid/grid-cell.svelte +22 -0
  29. package/package/components/grid/grid-cell.svelte.d.ts +34 -0
  30. package/package/components/grid/grid-col-header.svelte +22 -0
  31. package/package/components/grid/grid-col-header.svelte.d.ts +34 -0
  32. package/package/components/grid/grid-foot.svelte +27 -0
  33. package/package/components/grid/grid-foot.svelte.d.ts +34 -0
  34. package/package/components/grid/grid-head.svelte +27 -0
  35. package/package/components/grid/grid-head.svelte.d.ts +34 -0
  36. package/package/components/grid/grid-row-header.svelte +23 -0
  37. package/package/components/grid/grid-row-header.svelte.d.ts +34 -0
  38. package/package/components/grid/grid-row.svelte +37 -0
  39. package/package/components/grid/grid-row.svelte.d.ts +44 -0
  40. package/package/components/grid/grid.svelte +52 -0
  41. package/package/components/grid/grid.svelte.d.ts +42 -0
  42. package/package/components/icon/icon.svelte +6 -7
  43. package/package/components/icon/icon.svelte.d.ts +0 -2
  44. package/package/components/listbox/listbox.svelte +6 -6
  45. package/package/components/listbox/option-group.svelte +6 -5
  46. package/package/components/listbox/option.svelte +7 -28
  47. package/package/components/listbox/option.svelte.d.ts +2 -0
  48. package/package/components/menu/menu-button.svelte +26 -16
  49. package/package/components/menu/menu-button.svelte.d.ts +2 -2
  50. package/package/components/menu/menu-item-checkbox.svelte +5 -4
  51. package/package/components/menu/menu-item-checkbox.svelte.d.ts +2 -0
  52. package/package/components/menu/menu-item-group.svelte +4 -3
  53. package/package/components/menu/menu-item-radio.svelte +5 -4
  54. package/package/components/menu/menu-item-radio.svelte.d.ts +2 -0
  55. package/package/components/menu/menu-item.svelte +7 -5
  56. package/package/components/menu/menu-item.svelte.d.ts +4 -2
  57. package/package/components/menu/menu.svelte +1 -1
  58. package/package/components/radio/radio-group.svelte +8 -8
  59. package/package/components/radio/radio-group.svelte.d.ts +2 -2
  60. package/package/components/radio/radio.svelte +5 -2
  61. package/package/components/radio/radio.svelte.d.ts +2 -0
  62. package/package/components/select/combobox.svelte +55 -35
  63. package/package/components/select/combobox.svelte.d.ts +3 -2
  64. package/package/components/select/select.svelte +10 -9
  65. package/package/components/select/select.svelte.d.ts +4 -3
  66. package/package/components/slider/slider.svelte +15 -7
  67. package/package/components/switch/switch.svelte +9 -6
  68. package/package/components/switch/switch.svelte.d.ts +2 -2
  69. package/package/components/table/table-body.svelte +31 -3
  70. package/package/components/table/table-body.svelte.d.ts +2 -0
  71. package/package/components/table/table-cell.svelte +3 -4
  72. package/package/components/table/table-cell.svelte.d.ts +1 -1
  73. package/package/components/table/table-col-header.svelte +1 -2
  74. package/package/components/table/table-foot.svelte +7 -3
  75. package/package/components/table/table-head.svelte +7 -3
  76. package/package/components/table/table-row-header.svelte +1 -2
  77. package/package/components/table/table-row.svelte +1 -14
  78. package/package/components/table/table-row.svelte.d.ts +0 -8
  79. package/package/components/table/table.svelte +5 -17
  80. package/package/components/table/table.svelte.d.ts +1 -7
  81. package/package/components/tabs/tab-list.svelte +7 -5
  82. package/package/components/tabs/tab-panel.svelte +1 -1
  83. package/package/components/tabs/tab.svelte +2 -1
  84. package/package/components/tabs/tab.svelte.d.ts +2 -0
  85. package/package/components/text-field/markdown-editor.svelte +36 -9
  86. package/package/components/text-field/markdown-editor.svelte.d.ts +2 -0
  87. package/package/components/text-field/number-input.svelte +107 -43
  88. package/package/components/text-field/number-input.svelte.d.ts +2 -0
  89. package/package/components/text-field/password-input.svelte +43 -12
  90. package/package/components/text-field/password-input.svelte.d.ts +2 -0
  91. package/package/components/text-field/search-bar.svelte +43 -13
  92. package/package/components/text-field/search-bar.svelte.d.ts +5 -0
  93. package/package/components/text-field/text-area.svelte +26 -6
  94. package/package/components/text-field/text-area.svelte.d.ts +2 -0
  95. package/package/components/text-field/text-input.svelte +37 -7
  96. package/package/components/text-field/text-input.svelte.d.ts +14 -4
  97. package/package/components/toast/toast.svelte +6 -16
  98. package/package/components/toast/toast.svelte.d.ts +2 -2
  99. package/package/components/toolbar/toolbar.svelte +3 -4
  100. package/package/components/util/app-shell.svelte +34 -29
  101. package/package/components/util/group.svelte +2 -2
  102. package/package/components/util/modal.svelte +220 -0
  103. package/package/components/util/modal.svelte.d.ts +83 -0
  104. package/package/components/util/popup.svelte +80 -121
  105. package/package/components/util/popup.svelte.d.ts +22 -13
  106. package/package/components/util/portal.svelte +1 -1
  107. package/package/index.d.ts +12 -0
  108. package/package/index.js +12 -0
  109. package/package/locales/en.d.ts +1 -0
  110. package/package/locales/en.js +1 -0
  111. package/package/locales/ja.d.ts +1 -0
  112. package/package/locales/ja.js +1 -0
  113. package/package/services/group.js +67 -13
  114. package/package/services/popup.d.ts +5 -1
  115. package/package/services/popup.js +22 -19
  116. package/package/styles/core.scss +13 -26
  117. package/package/styles/variables.scss +14 -2
  118. package/package.json +107 -11
@@ -0,0 +1,55 @@
1
+ <!--
2
+ @component
3
+ A modal confirmation dialog. It shows the OK and Cancel buttons, just like `window.confirm()`.
4
+ @see https://w3c.github.io/aria/#alertdialog
5
+ @see https://www.w3.org/WAI/ARIA/apg/patterns/alertdialog/
6
+ @see https://developer.mozilla.org/en-US/docs/Web/API/Window/confirm
7
+ -->
8
+ <script>
9
+ import Dialog from './dialog.svelte';
10
+
11
+ /**
12
+ * The `class` attribute on the `<dialog>` element.
13
+ * @type {string}
14
+ */
15
+ let className = '';
16
+ export { className as class };
17
+ /**
18
+ * Whether to open the dialog.
19
+ * @type {boolean}
20
+ */
21
+ export let open = false;
22
+ /**
23
+ * Text label displayed on the header. Required.
24
+ * @type {string}
25
+ */
26
+ export let title;
27
+ /**
28
+ * Text label displayed on the OK button.
29
+ * @type {string}
30
+ */
31
+ export let okLabel = '';
32
+ /**
33
+ * Text label displayed on the Cancel button.
34
+ * @type {string}
35
+ */
36
+ export let cancelLabel = '';
37
+ </script>
38
+
39
+ <Dialog
40
+ role="alertdialog"
41
+ class={className}
42
+ bind:open
43
+ {title}
44
+ {okLabel}
45
+ {cancelLabel}
46
+ {...$$restProps}
47
+ on:opening
48
+ on:open
49
+ on:ok
50
+ on:cancel
51
+ on:closing
52
+ on:close
53
+ >
54
+ <slot />
55
+ </Dialog>
@@ -0,0 +1,57 @@
1
+ /** @typedef {typeof __propDef.props} ConfirmationDialogProps */
2
+ /** @typedef {typeof __propDef.events} ConfirmationDialogEvents */
3
+ /** @typedef {typeof __propDef.slots} ConfirmationDialogSlots */
4
+ /**
5
+ * A modal confirmation dialog. It shows the OK and Cancel buttons, just like `window.confirm()`.
6
+ * @see https://w3c.github.io/aria/#alertdialog
7
+ * @see https://www.w3.org/WAI/ARIA/apg/patterns/alertdialog/
8
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/confirm
9
+ */
10
+ export default class ConfirmationDialog extends SvelteComponent<{
11
+ [x: string]: any;
12
+ title: string;
13
+ class?: string;
14
+ open?: boolean;
15
+ okLabel?: string;
16
+ cancelLabel?: string;
17
+ }, {
18
+ opening: CustomEvent<any>;
19
+ open: CustomEvent<any>;
20
+ ok: CustomEvent<any>;
21
+ cancel: CustomEvent<any>;
22
+ closing: CustomEvent<any>;
23
+ close: CustomEvent<any>;
24
+ } & {
25
+ [evt: string]: CustomEvent<any>;
26
+ }, {
27
+ default: {};
28
+ }> {
29
+ }
30
+ export type ConfirmationDialogProps = typeof __propDef.props;
31
+ export type ConfirmationDialogEvents = typeof __propDef.events;
32
+ export type ConfirmationDialogSlots = typeof __propDef.slots;
33
+ import { SvelteComponent } from "svelte";
34
+ declare const __propDef: {
35
+ props: {
36
+ [x: string]: any;
37
+ title: string;
38
+ class?: string;
39
+ open?: boolean;
40
+ okLabel?: string;
41
+ cancelLabel?: string;
42
+ };
43
+ events: {
44
+ opening: CustomEvent<any>;
45
+ open: CustomEvent<any>;
46
+ ok: CustomEvent<any>;
47
+ cancel: CustomEvent<any>;
48
+ closing: CustomEvent<any>;
49
+ close: CustomEvent<any>;
50
+ } & {
51
+ [evt: string]: CustomEvent<any>;
52
+ };
53
+ slots: {
54
+ default: {};
55
+ };
56
+ };
57
+ export {};
@@ -5,289 +5,232 @@
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
- * CSS class name on the button.
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
- export let open = false;
23
-
24
- export let title = '';
25
-
21
+ /**
22
+ * The `role` attribute on the `<dialog>` element.
23
+ * @type {'dialog' | 'alertdialog'}
24
+ */
25
+ export let role = 'dialog';
26
26
  /**
27
27
  * Width of the dialog.
28
28
  * @type {('small' | 'medium' | 'large' | 'x-large')}
29
29
  */
30
30
  export let size = 'medium';
31
-
32
- export let modal = true;
33
-
34
- export let showCancel = true;
35
-
36
- export let showOk = true;
37
-
31
+ /**
32
+ * Whether to open the dialog.
33
+ * @type {boolean}
34
+ */
35
+ export let open = false;
36
+ /**
37
+ * Text label displayed on the header. Required.
38
+ * @type {string}
39
+ */
40
+ export let title;
41
+ /**
42
+ * Whether to show the Close button on the header.
43
+ * @type {boolean}
44
+ */
38
45
  export let showClose = false;
39
-
46
+ /**
47
+ * Whether to show the OK button on the footer.
48
+ * @type {boolean}
49
+ */
50
+ export let showOk = true;
51
+ /**
52
+ * Text label displayed on the OK button.
53
+ * @type {string}
54
+ */
40
55
  export let okLabel = '';
41
-
56
+ /**
57
+ * Whether to disable the OK button.
58
+ * @type {boolean}
59
+ */
42
60
  export let okDisabled = false;
43
-
61
+ /**
62
+ * Whether to show the Cancel button on the footer.
63
+ * @type {boolean}
64
+ */
65
+ export let showCancel = true;
66
+ /**
67
+ * Text label displayed on the Cancel button.
68
+ * @type {string}
69
+ */
44
70
  export let cancelLabel = '';
45
-
71
+ /**
72
+ * Whether to disable the Cancel button.
73
+ * @type {boolean}
74
+ */
46
75
  export let cancelDisabled = false;
47
-
48
- export let closeOnBackdropClick = false;
49
-
50
- const dispatch = createEventDispatcher();
51
- /** @type {?HTMLDialogElement} */
52
- let dialog;
53
- /** @type {?HTMLFormElement} */
54
- let form;
55
- let showDialog = false;
56
- let showContent = false;
57
-
58
76
  /**
59
- *
77
+ * Whether to close the modal when the backdrop (outside of the modal) is clicked.
78
+ * @type {boolean}
60
79
  */
61
- const openDialog = async () => {
62
- (document.querySelector('.sui.app-shell') ?? document.body).appendChild(dialog);
63
- showContent = true;
64
-
65
- if (modal) {
66
- dialog.showModal();
67
- } else {
68
- dialog.show();
69
- }
70
-
71
- window.requestAnimationFrame(() => {
72
- showDialog = true;
73
- });
74
- };
80
+ export let lightDismiss = false;
75
81
 
76
82
  /**
77
- *
83
+ * The ID of the drawer.
84
+ * @type {string}
78
85
  */
79
- const closeDialog = async () => {
80
- showDialog = false;
81
-
82
- await new Promise((resolve) => {
83
- form.addEventListener('transitionend', () => resolve(), { once: true });
84
- });
85
-
86
- showContent = false;
87
- dialog?.close();
88
- dialog?.remove();
89
-
90
- if (['ok', 'cancel'].includes(dialog?.returnValue)) {
91
- dispatch(dialog?.returnValue);
92
- }
93
-
94
- dispatch('close', dialog?.returnValue);
95
- };
96
-
86
+ const id = getRandomId('dialog');
97
87
  /**
98
- *
88
+ * a reference to the modal component.
89
+ * @type {Modal}
99
90
  */
100
- const toggleDialog = () => {
101
- if (dialog) {
102
- if (open) {
103
- openDialog();
104
- } else {
105
- closeDialog();
106
- }
107
- }
108
- };
109
-
110
- $: {
111
- void open;
112
- toggleDialog();
113
- }
114
-
115
- onMount(() => {
116
- dialog.remove();
117
-
118
- // onUnmount
119
- return () => {
120
- dialog?.close();
121
- dialog?.remove();
122
- };
123
- });
91
+ let modal;
124
92
  </script>
125
93
 
126
- <!-- svelte-ignore a11y-no-noninteractive-element-interactions -->
127
- <dialog
128
- bind:this={dialog}
129
- class="sui dialog {className} {size}"
130
- class:open={showDialog}
131
- aria-label={title}
94
+ <Modal
95
+ {role}
96
+ {id}
97
+ class="dialog"
98
+ aria-label={$$slots.header ? undefined : title}
99
+ aria-labelledby={$$slots.header ? title : `${id}-title`}
100
+ aria-describedby="{id}-body"
101
+ bind:open
102
+ showBackdrop
103
+ {lightDismiss}
132
104
  {...$$restProps}
133
- on:click={({ target }) => {
134
- if (closeOnBackdropClick && /** @type {HTMLElement?} */ (target)?.matches('dialog')) {
135
- dialog.returnValue = 'cancel';
136
- open = false;
137
- }
138
- }}
139
- on:cancel|preventDefault={() => {
140
- // Cancelled with the Escape key
141
- open = false;
142
- }}
105
+ bind:this={modal}
106
+ on:opening
107
+ on:open
108
+ on:ok
109
+ on:cancel
110
+ on:closing
111
+ on:close
143
112
  >
144
- <form method="dialog" bind:this={form} on:submit|preventDefault>
145
- {#if showContent}
146
- {#if title || showClose || $$slots.header || $$slots['header-extra']}
147
- <div class="header">
148
- {#if $$slots.header}
149
- <slot name="header" />
150
- {:else}
151
- <div class="title">
152
- {title}
153
- </div>
154
- <Spacer flex={true} />
155
- {#if $$slots['header-extra']}
156
- <slot name="header-extra" />
157
- {/if}
158
- {#if showClose}
159
- <Button
160
- variant="ghost"
161
- iconic
162
- on:click={() => {
163
- dialog.returnValue = 'close';
164
- open = false;
165
- }}
166
- >
167
- <Icon slot="start-icon" name="close" label={$_('_sui.close')} />
168
- </Button>
169
- {/if}
113
+ <div role="none" class="content {className} {size}">
114
+ {#if title || showClose || $$slots.header || $$slots['header-extra']}
115
+ <div role="none" class="header">
116
+ {#if $$slots.header}
117
+ <slot name="header" />
118
+ {:else}
119
+ <div role="none" id="{id}-title" class="title">
120
+ {title}
121
+ </div>
122
+ <Spacer flex={true} />
123
+ {#if $$slots['header-extra']}
124
+ <slot name="header-extra" />
170
125
  {/if}
171
- </div>
172
- {/if}
173
- <div class="main">
174
- <slot />
126
+ {#if showClose}
127
+ <Button
128
+ variant="ghost"
129
+ iconic
130
+ aria-label={$_('_sui.close')}
131
+ aria-controls={id}
132
+ on:click={() => {
133
+ modal.close('close');
134
+ }}
135
+ >
136
+ <Icon slot="start-icon" name="close" />
137
+ </Button>
138
+ {/if}
139
+ {/if}
175
140
  </div>
176
- {#if showOk || showCancel || $$slots.footer || $$slots['footer-extra']}
177
- <div class="footer">
178
- {#if $$slots.footer}
179
- <slot name="footer" />
180
- {:else}
181
- {#if $$slots['footer-extra']}
182
- <slot name="footer-extra" />
183
- {/if}
184
- <Spacer flex={true} />
185
- {#if showOk}
186
- <Button
187
- variant="primary"
188
- label={okLabel || $_('_sui.ok')}
189
- disabled={okDisabled}
190
- on:click={() => {
191
- dialog.returnValue = 'ok';
192
- open = false;
193
- }}
194
- />
195
- {/if}
196
- {#if showCancel}
197
- <Button
198
- variant="secondary"
199
- label={cancelLabel || $_('_sui.cancel')}
200
- disabled={cancelDisabled}
201
- on:click={() => {
202
- dialog.returnValue = 'cancel';
203
- open = false;
204
- }}
205
- />
206
- {/if}
141
+ {/if}
142
+ <div role="none" id="{id}-body" class="body">
143
+ <slot />
144
+ </div>
145
+ {#if showOk || showCancel || $$slots.footer || $$slots['footer-extra']}
146
+ <div role="none" class="footer">
147
+ {#if $$slots.footer}
148
+ <slot name="footer" />
149
+ {:else}
150
+ {#if $$slots['footer-extra']}
151
+ <slot name="footer-extra" />
207
152
  {/if}
208
- </div>
209
- {/if}
153
+ <Spacer flex={true} />
154
+ {#if showOk}
155
+ <Button
156
+ variant="primary"
157
+ label={okLabel || $_('_sui.ok')}
158
+ disabled={okDisabled}
159
+ on:click={() => {
160
+ modal.close('ok');
161
+ }}
162
+ />
163
+ {/if}
164
+ {#if showCancel}
165
+ <Button
166
+ variant="secondary"
167
+ label={cancelLabel || $_('_sui.cancel')}
168
+ disabled={cancelDisabled}
169
+ on:click={() => {
170
+ modal.close('cancel');
171
+ }}
172
+ />
173
+ {/if}
174
+ {/if}
175
+ </div>
210
176
  {/if}
211
- </form>
212
- </dialog>
177
+ </div>
178
+ </Modal>
213
179
 
214
- <style>dialog {
215
- display: flex;
216
- justify-content: center;
217
- align-items: center;
218
- outline: 0;
219
- background-color: var(--sui-popup-backdrop-color);
220
- }
221
- dialog.open form {
222
- opacity: 1;
223
- transform: scale(100%);
224
- transition-duration: 100ms;
225
- }
226
- dialog:not(.open) {
227
- pointer-events: none !important;
228
- }
229
- dialog:not(.open) form {
230
- opacity: 0;
231
- transform: scale(90%);
232
- pointer-events: none;
233
- transition-duration: 200ms;
234
- }
235
- dialog:not(.open) :global(*) {
236
- pointer-events: none !important;
237
- }
238
- dialog :global(a),
239
- dialog :global(input[aria-disabled="false"]),
240
- dialog :global(textarea[aria-disabled="false"]),
241
- dialog :global(button[aria-disabled="false"]),
242
- dialog :global([tabindex="0"]) {
243
- pointer-events: all;
244
- }
245
- dialog form {
180
+ <style>.content {
181
+ position: relative;
246
182
  display: flex;
247
183
  flex-direction: column;
248
184
  border-radius: 4px;
249
- max-width: calc(100vw - 32px);
185
+ max-width: calc(100dvw - 32px);
250
186
  background-color: var(--sui-secondary-background-color-translucent);
187
+ box-shadow: 0 8px 16px var(--sui-popup-shadow-color);
251
188
  -webkit-backdrop-filter: blur(16px);
252
189
  backdrop-filter: blur(16px);
253
- box-shadow: 0 8px 16px var(--sui-popup-shadow-color);
254
- will-change: opacity, transform;
255
- transition-property: opacity, transform;
190
+ transition-property: transform;
191
+ }
192
+ :global(dialog.open) .content {
193
+ transition-duration: 150ms;
194
+ transform: scale(100%);
195
+ }
196
+ :global(dialog:not(.open)) .content {
197
+ transition-duration: 300ms;
198
+ transform: scale(90%);
256
199
  }
257
- dialog.small form {
200
+ .content.small {
258
201
  width: 400px;
259
202
  max-height: 400px;
260
203
  }
261
204
  @media (max-height: 400px) {
262
- dialog.small form {
263
- max-height: calc(100vh - 32px);
205
+ .content.small {
206
+ max-height: calc(100dvh - 32px);
264
207
  }
265
208
  }
266
- dialog.medium form {
209
+ .content.medium {
267
210
  width: 600px;
268
211
  max-height: 600px;
269
212
  }
270
213
  @media (max-height: 600px) {
271
- dialog.medium form {
272
- max-height: calc(100vh - 32px);
214
+ .content.medium {
215
+ max-height: calc(100dvh - 32px);
273
216
  }
274
217
  }
275
- dialog.large form {
218
+ .content.large {
276
219
  width: 800px;
277
220
  max-height: 800px;
278
221
  }
279
222
  @media (max-height: 800px) {
280
- dialog.large form {
281
- max-height: calc(100vh - 32px);
223
+ .content.large {
224
+ max-height: calc(100dvh - 32px);
282
225
  }
283
226
  }
284
- dialog.x-large form {
227
+ .content.x-large {
285
228
  width: 1000px;
286
229
  max-height: 1000px;
287
230
  }
288
231
  @media (max-height: 1000px) {
289
- dialog.x-large form {
290
- max-height: calc(100vh - 32px);
232
+ .content.x-large {
233
+ max-height: calc(100dvh - 32px);
291
234
  }
292
235
  }
293
236
 
@@ -295,7 +238,7 @@ dialog.x-large form {
295
238
  .footer {
296
239
  display: flex;
297
240
  align-items: center;
298
- gap: 8px;
241
+ gap: 4px;
299
242
  }
300
243
 
301
244
  .header {
@@ -314,8 +257,9 @@ dialog.x-large form {
314
257
  margin: 0 24px 24px;
315
258
  }
316
259
 
317
- .main {
260
+ .body {
318
261
  overflow: auto;
319
262
  margin: 24px 24px;
320
263
  white-space: normal;
264
+ line-height: var(--sui-line-height-compact);
321
265
  }</style>
@@ -8,21 +8,25 @@
8
8
  */
9
9
  export default class Dialog extends SvelteComponent<{
10
10
  [x: string]: any;
11
+ title: string;
11
12
  class?: string;
12
- title?: string;
13
13
  size?: "small" | "medium" | "large" | "x-large";
14
+ role?: "dialog" | "alertdialog";
14
15
  open?: boolean;
15
- modal?: boolean;
16
- showCancel?: boolean;
17
- showOk?: boolean;
16
+ lightDismiss?: boolean;
18
17
  showClose?: boolean;
18
+ showOk?: boolean;
19
19
  okLabel?: string;
20
20
  okDisabled?: boolean;
21
+ showCancel?: boolean;
21
22
  cancelLabel?: string;
22
23
  cancelDisabled?: boolean;
23
- closeOnBackdropClick?: boolean;
24
24
  }, {
25
- submit: SubmitEvent;
25
+ opening: CustomEvent<any>;
26
+ open: CustomEvent<any>;
27
+ ok: CustomEvent<any>;
28
+ cancel: CustomEvent<any>;
29
+ closing: CustomEvent<any>;
26
30
  close: CustomEvent<any>;
27
31
  } & {
28
32
  [evt: string]: CustomEvent<any>;
@@ -41,22 +45,26 @@ import { SvelteComponent } from "svelte";
41
45
  declare const __propDef: {
42
46
  props: {
43
47
  [x: string]: any;
48
+ title: string;
44
49
  class?: string;
45
- title?: string;
46
50
  size?: ('small' | 'medium' | 'large' | 'x-large');
51
+ role?: 'dialog' | 'alertdialog';
47
52
  open?: boolean;
48
- modal?: boolean;
49
- showCancel?: boolean;
50
- showOk?: boolean;
53
+ lightDismiss?: boolean;
51
54
  showClose?: boolean;
55
+ showOk?: boolean;
52
56
  okLabel?: string;
53
57
  okDisabled?: boolean;
58
+ showCancel?: boolean;
54
59
  cancelLabel?: string;
55
60
  cancelDisabled?: boolean;
56
- closeOnBackdropClick?: boolean;
57
61
  };
58
62
  events: {
59
- submit: SubmitEvent;
63
+ opening: CustomEvent<any>;
64
+ open: CustomEvent<any>;
65
+ ok: CustomEvent<any>;
66
+ cancel: CustomEvent<any>;
67
+ closing: CustomEvent<any>;
60
68
  close: CustomEvent<any>;
61
69
  } & {
62
70
  [evt: string]: CustomEvent<any>;