@sveltia/ui 0.78.4 → 0.79.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.
Files changed (183) hide show
  1. package/dist/components/alert/alert-content.svelte +51 -0
  2. package/dist/components/alert/alert-content.svelte.d.ts +39 -0
  3. package/dist/components/alert/alert.d.ts +3 -0
  4. package/dist/components/alert/alert.js +21 -0
  5. package/dist/components/alert/alert.svelte +6 -30
  6. package/dist/components/alert/infobar.svelte +7 -21
  7. package/dist/components/alert/infobar.svelte.d.ts +2 -2
  8. package/dist/components/button/button.svelte +11 -11
  9. package/dist/components/button/button.svelte.d.ts +2 -2
  10. package/dist/components/button/select-button.svelte +1 -1
  11. package/dist/components/button/select-button.svelte.d.ts +2 -2
  12. package/dist/components/button/split-button.svelte +1 -1
  13. package/dist/components/button/split-button.svelte.d.ts +3 -3
  14. package/dist/components/calendar/calendar.d.ts +2 -0
  15. package/dist/components/calendar/calendar.js +34 -0
  16. package/dist/components/calendar/calendar.svelte +49 -5
  17. package/dist/components/checkbox/checkbox.svelte +11 -4
  18. package/dist/components/checkbox/checkbox.svelte.d.ts +2 -2
  19. package/dist/components/dialog/alert-dialog.svelte +1 -1
  20. package/dist/components/dialog/alert-dialog.svelte.d.ts +2 -2
  21. package/dist/components/dialog/confirmation-dialog.svelte +1 -1
  22. package/dist/components/dialog/confirmation-dialog.svelte.d.ts +2 -2
  23. package/dist/components/dialog/dialog.svelte +8 -18
  24. package/dist/components/dialog/dialog.svelte.d.ts +2 -2
  25. package/dist/components/dialog/modal-close-button.svelte +50 -0
  26. package/dist/components/dialog/modal-close-button.svelte.d.ts +43 -0
  27. package/dist/components/dialog/prompt-dialog.svelte +1 -1
  28. package/dist/components/dialog/prompt-dialog.svelte.d.ts +4 -4
  29. package/dist/components/disclosure/disclosure.svelte +1 -1
  30. package/dist/components/drawer/drawer.svelte +12 -34
  31. package/dist/components/drawer/drawer.svelte.d.ts +1 -1
  32. package/dist/components/emoji/caret.d.ts +1 -1
  33. package/dist/components/emoji/caret.js +1 -1
  34. package/dist/components/emoji/emoji-suggestions.svelte +1 -1
  35. package/dist/components/emoji/emoji-suggestions.svelte.d.ts +3 -3
  36. package/dist/components/emoji/emoji.d.ts +2 -2
  37. package/dist/components/emoji/emoji.js +1 -1
  38. package/dist/components/emoji/position.d.ts +2 -2
  39. package/dist/components/emoji/position.js +1 -1
  40. package/dist/components/grid/grid-body.svelte +6 -2
  41. package/dist/components/grid/grid-cell.svelte +3 -9
  42. package/dist/components/grid/grid-col-header.svelte +3 -9
  43. package/dist/components/grid/grid-foot.svelte +4 -11
  44. package/dist/components/grid/grid-head.svelte +4 -11
  45. package/dist/components/grid/grid-row-header.svelte +3 -10
  46. package/dist/components/grid/grid-row.svelte +3 -16
  47. package/dist/components/listbox/listbox.svelte +1 -1
  48. package/dist/components/listbox/listbox.svelte.d.ts +1 -1
  49. package/dist/components/listbox/option.svelte +1 -1
  50. package/dist/components/listbox/option.svelte.d.ts +2 -2
  51. package/dist/components/menu/menu-button.svelte +2 -2
  52. package/dist/components/menu/menu-button.svelte.d.ts +4 -4
  53. package/dist/components/menu/menu-item-checkable.svelte +71 -0
  54. package/dist/components/menu/menu-item-checkable.svelte.d.ts +25 -0
  55. package/dist/components/menu/menu-item-checkbox.svelte +3 -36
  56. package/dist/components/menu/menu-item-checkbox.svelte.d.ts +3 -3
  57. package/dist/components/menu/menu-item-group.svelte +8 -5
  58. package/dist/components/menu/menu-item-group.svelte.d.ts +9 -1
  59. package/dist/components/menu/menu-item-radio.svelte +3 -36
  60. package/dist/components/menu/menu-item-radio.svelte.d.ts +3 -3
  61. package/dist/components/menu/menu-item.svelte +22 -6
  62. package/dist/components/menu/menu-item.svelte.d.ts +4 -4
  63. package/dist/components/radio/radio.svelte +12 -1
  64. package/dist/components/resizable-pane/resizable-handle.svelte +14 -18
  65. package/dist/components/resizable-pane/resizable-pane-group.svelte +9 -6
  66. package/dist/components/resizable-pane/resizable-pane.svelte +4 -4
  67. package/dist/components/resizable-pane/resizable-pane.svelte.d.ts +7 -6
  68. package/dist/components/resizable-pane/sizing.d.ts +5 -4
  69. package/dist/components/resizable-pane/sizing.js +84 -25
  70. package/dist/components/scroll/infinite-scroll.svelte +16 -21
  71. package/dist/components/select/combobox.svelte +43 -52
  72. package/dist/components/select/combobox.svelte.d.ts +2 -2
  73. package/dist/components/select/select-tags.svelte +7 -1
  74. package/dist/components/select/select.svelte +2 -22
  75. package/dist/components/select/select.svelte.d.ts +1 -1
  76. package/dist/components/slider/slider.d.ts +6 -0
  77. package/dist/components/slider/slider.js +55 -2
  78. package/dist/components/slider/slider.svelte +63 -32
  79. package/dist/components/table/table-cell.svelte +3 -9
  80. package/dist/components/table/table-col-header.svelte +3 -9
  81. package/dist/components/table/table-foot.svelte +4 -11
  82. package/dist/components/table/table-head.svelte +4 -11
  83. package/dist/components/table/table-part.svelte +69 -0
  84. package/dist/components/table/table-part.svelte.d.ts +48 -0
  85. package/dist/components/table/table-row-header.svelte +3 -10
  86. package/dist/components/table/table-row.svelte +3 -10
  87. package/dist/components/tabs/tab-list.svelte +12 -0
  88. package/dist/components/tabs/tab.svelte +1 -1
  89. package/dist/components/tabs/tab.svelte.d.ts +2 -2
  90. package/dist/components/text-editor/constants.d.ts +5 -5
  91. package/dist/components/text-editor/constants.js +1 -1
  92. package/dist/components/text-editor/core.d.ts +4 -5
  93. package/dist/components/text-editor/core.js +372 -285
  94. package/dist/components/text-editor/emoji-autocomplete.svelte +1 -1
  95. package/dist/components/text-editor/lexical-root.svelte +4 -2
  96. package/dist/components/text-editor/raw-markdown.d.ts +6 -33
  97. package/dist/components/text-editor/raw-markdown.js +63 -8
  98. package/dist/components/text-editor/shiki/facade.d.ts +1 -1
  99. package/dist/components/text-editor/shiki/facade.js +63 -48
  100. package/dist/components/text-editor/shiki/generated.d.ts +1 -1
  101. package/dist/components/text-editor/shiki/generated.js +1 -1
  102. package/dist/components/text-editor/shiki/highlighter.d.ts +6 -1
  103. package/dist/components/text-editor/shiki/highlighter.js +3 -4
  104. package/dist/components/text-editor/shiki/loader.d.ts +1 -1
  105. package/dist/components/text-editor/shiki/loader.js +1 -1
  106. package/dist/components/text-editor/shiki/version.d.ts +1 -1
  107. package/dist/components/text-editor/shiki/version.js +1 -1
  108. package/dist/components/text-editor/store.svelte.d.ts +1 -1
  109. package/dist/components/text-editor/store.svelte.js +29 -2
  110. package/dist/components/text-editor/text-editor.svelte +2 -2
  111. package/dist/components/text-editor/text-editor.svelte.d.ts +3 -3
  112. package/dist/components/text-editor/toolbar/code-language-switcher.svelte +24 -16
  113. package/dist/components/text-editor/toolbar/format-text-button.svelte +7 -31
  114. package/dist/components/text-editor/toolbar/format-text-button.svelte.d.ts +1 -1
  115. package/dist/components/text-editor/toolbar/insert-component.d.ts +3 -0
  116. package/dist/components/text-editor/toolbar/insert-component.js +34 -0
  117. package/dist/components/text-editor/toolbar/insert-item-button.svelte +4 -24
  118. package/dist/components/text-editor/toolbar/insert-item-button.svelte.d.ts +1 -1
  119. package/dist/components/text-editor/toolbar/insert-link-button.svelte +9 -25
  120. package/dist/components/text-editor/toolbar/insert-menu-button.svelte +4 -24
  121. package/dist/components/text-editor/toolbar/insert-menu-button.svelte.d.ts +1 -1
  122. package/dist/components/text-editor/toolbar/text-editor-toolbar.svelte +1 -1
  123. package/dist/components/text-editor/toolbar/toggle-block-menu-item.svelte +31 -35
  124. package/dist/components/text-editor/toolbar/toggle-block-menu-item.svelte.d.ts +1 -1
  125. package/dist/components/text-editor/toolbar/toolbar-wrapper.svelte +0 -10
  126. package/dist/components/text-editor/toolbar/toolbar-wrapper.svelte.d.ts +1 -11
  127. package/dist/components/text-editor/transformers/table.d.ts +0 -1
  128. package/dist/components/text-editor/transformers/table.js +1 -2
  129. package/dist/components/text-field/emoji-autocomplete.svelte +1 -1
  130. package/dist/components/text-field/masked-input.svelte +179 -0
  131. package/dist/components/text-field/masked-input.svelte.d.ts +42 -0
  132. package/dist/components/text-field/number-input.js +7 -1
  133. package/dist/components/text-field/number-input.svelte +13 -5
  134. package/dist/components/text-field/number-input.svelte.d.ts +3 -3
  135. package/dist/components/text-field/password-input.svelte +3 -116
  136. package/dist/components/text-field/password-input.svelte.d.ts +3 -3
  137. package/dist/components/text-field/search-bar.svelte +1 -1
  138. package/dist/components/text-field/search-bar.svelte.d.ts +3 -3
  139. package/dist/components/text-field/secret-input.svelte +3 -119
  140. package/dist/components/text-field/secret-input.svelte.d.ts +3 -3
  141. package/dist/components/text-field/text-area.svelte +1 -1
  142. package/dist/components/text-field/text-area.svelte.d.ts +3 -3
  143. package/dist/components/text-field/text-input.svelte +1 -1
  144. package/dist/components/text-field/text-input.svelte.d.ts +3 -3
  145. package/dist/components/toast/toast.svelte +11 -20
  146. package/dist/components/toast/toast.svelte.d.ts +1 -1
  147. package/dist/components/tree/tree-item.svelte +1 -1
  148. package/dist/components/tree/tree-item.svelte.d.ts +1 -1
  149. package/dist/components/tree/tree.svelte +1 -1
  150. package/dist/components/tree/tree.svelte.d.ts +1 -1
  151. package/dist/components/util/font-links.svelte +1 -0
  152. package/dist/components/util/modal.svelte +37 -1
  153. package/dist/components/util/modal.svelte.d.ts +1 -1
  154. package/dist/components/util/popup.svelte +2 -5
  155. package/dist/components/util/popup.svelte.d.ts +2 -2
  156. package/dist/components/util/visibility-observer.svelte +1 -0
  157. package/dist/locales/ar.yaml +1 -1
  158. package/dist/locales/sk.yaml +136 -0
  159. package/dist/services/group.svelte.d.ts +10 -1
  160. package/dist/services/group.svelte.js +361 -251
  161. package/dist/services/navigation.d.ts +19 -0
  162. package/dist/services/navigation.js +84 -0
  163. package/dist/services/popup-position.d.ts +90 -0
  164. package/dist/services/popup-position.js +275 -0
  165. package/dist/services/popup.svelte.d.ts +16 -17
  166. package/dist/services/popup.svelte.js +25 -169
  167. package/dist/services/scroll.d.ts +1 -0
  168. package/dist/services/scroll.js +17 -0
  169. package/dist/services/select.svelte.d.ts +2 -2
  170. package/dist/services/select.svelte.js +1 -1
  171. package/dist/services/text.d.ts +2 -0
  172. package/dist/services/text.js +28 -0
  173. package/dist/services/tree.svelte.d.ts +3 -11
  174. package/dist/services/tree.svelte.js +35 -77
  175. package/dist/services/type-ahead.d.ts +0 -4
  176. package/dist/services/type-ahead.js +3 -1
  177. package/dist/services/widget.d.ts +8 -0
  178. package/dist/services/widget.js +39 -0
  179. package/dist/shiki-engine.js +15 -15
  180. package/dist/styles/mixins.scss +126 -0
  181. package/dist/typedefs.d.ts +5 -0
  182. package/dist/typedefs.js +2 -0
  183. package/package.json +24 -20
@@ -9,11 +9,11 @@
9
9
  import { sleep } from '@sveltia/utils/misc';
10
10
  import Button from '../button/button.svelte';
11
11
  import Spacer from '../divider/spacer.svelte';
12
- import Icon from '../icon/icon.svelte';
13
12
  import Modal from '../util/modal.svelte';
13
+ import ModalCloseButton from './modal-close-button.svelte';
14
14
 
15
15
  /**
16
- * @import { DialogProps, ModalProps } from '../../typedefs';
16
+ * @import { DialogProps, ModalProps } from '../../typedefs.js';
17
17
  */
18
18
 
19
19
  /**
@@ -50,7 +50,7 @@
50
50
  } = $props();
51
51
 
52
52
  /**
53
- * The ID of the drawer.
53
+ * The ID of the dialog.
54
54
  * @type {string}
55
55
  */
56
56
  const id = $props.id();
@@ -139,23 +139,13 @@
139
139
  <Spacer flex={true} />
140
140
  {@render headerExtra?.()}
141
141
  {#if showClose}
142
- <Button
143
- variant="ghost"
144
- iconic
145
- aria-label={_('_sui.close')}
146
- aria-controls={id}
147
- onclick={() => {
142
+ <ModalCloseButton
143
+ controls={id}
144
+ {closeIcon}
145
+ onClose={() => {
148
146
  modal?.close('close');
149
147
  }}
150
- >
151
- {#snippet startIcon()}
152
- {#if closeIcon}
153
- {@render closeIcon()}
154
- {:else}
155
- <Icon name="close" />
156
- {/if}
157
- {/snippet}
158
- </Button>
148
+ />
159
149
  {/if}
160
150
  {/if}
161
151
  </div>
@@ -9,5 +9,5 @@ type Dialog = {
9
9
  * @see https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/
10
10
  */
11
11
  declare const Dialog: import("svelte").Component<ModalProps & DialogProps & Record<string, any>, {}, "value" | "open">;
12
- import type { ModalProps } from '../../typedefs';
13
- import type { DialogProps } from '../../typedefs';
12
+ import type { ModalProps } from '../../typedefs.js';
13
+ import type { DialogProps } from '../../typedefs.js';
@@ -0,0 +1,50 @@
1
+ <!--
2
+ @component
3
+ The Close button shared by `<Dialog>` and `<Drawer>`. Internal; not exported.
4
+ -->
5
+ <script>
6
+ import { _ } from '@sveltia/i18n';
7
+ import Button from '../button/button.svelte';
8
+ import Icon from '../icon/icon.svelte';
9
+
10
+ /**
11
+ * @import { Snippet } from 'svelte';
12
+ */
13
+
14
+ /**
15
+ * @typedef {object} Props
16
+ * @property {string} [class] The `class` attribute on the button.
17
+ * @property {string} controls ID of the dialog or drawer the button closes.
18
+ * @property {Snippet} [closeIcon] Custom icon, used instead of the default one.
19
+ * @property {() => void} onClose Callback invoked when the button is clicked.
20
+ */
21
+
22
+ /** @type {Props} */
23
+ let {
24
+ /* eslint-disable prefer-const */
25
+ class: className = undefined,
26
+ controls,
27
+ closeIcon = undefined,
28
+ onClose,
29
+ /* eslint-enable prefer-const */
30
+ } = $props();
31
+ </script>
32
+
33
+ <Button
34
+ variant="ghost"
35
+ iconic
36
+ class={className}
37
+ aria-label={_('_sui.close')}
38
+ aria-controls={controls}
39
+ onclick={() => {
40
+ onClose();
41
+ }}
42
+ >
43
+ {#snippet startIcon()}
44
+ {#if closeIcon}
45
+ {@render closeIcon()}
46
+ {:else}
47
+ <Icon name="close" />
48
+ {/if}
49
+ {/snippet}
50
+ </Button>
@@ -0,0 +1,43 @@
1
+ export default ModalCloseButton;
2
+ type ModalCloseButton = {
3
+ $on?(type: string, callback: (e: any) => void): () => void;
4
+ $set?(props: Partial<Props>): void;
5
+ };
6
+ /** The Close button shared by `<Dialog>` and `<Drawer>`. Internal; not exported. */
7
+ declare const ModalCloseButton: import("svelte").Component<{
8
+ /**
9
+ * The `class` attribute on the button.
10
+ */
11
+ class?: string | undefined;
12
+ /**
13
+ * ID of the dialog or drawer the button closes.
14
+ */
15
+ controls: string;
16
+ /**
17
+ * Custom icon, used instead of the default one.
18
+ */
19
+ closeIcon?: Snippet<[]> | undefined;
20
+ /**
21
+ * Callback invoked when the button is clicked.
22
+ */
23
+ onClose: () => void;
24
+ }, {}, "">;
25
+ type Props = {
26
+ /**
27
+ * The `class` attribute on the button.
28
+ */
29
+ class?: string | undefined;
30
+ /**
31
+ * ID of the dialog or drawer the button closes.
32
+ */
33
+ controls: string;
34
+ /**
35
+ * Custom icon, used instead of the default one.
36
+ */
37
+ closeIcon?: Snippet<[]> | undefined;
38
+ /**
39
+ * Callback invoked when the button is clicked.
40
+ */
41
+ onClose: () => void;
42
+ };
43
+ import type { Snippet } from 'svelte';
@@ -17,7 +17,7 @@
17
17
  * DialogProps,
18
18
  * InputEventHandlers,
19
19
  * ModalProps,
20
- * } from '../../typedefs';
20
+ * } from '../../typedefs.js';
21
21
  */
22
22
 
23
23
  /**
@@ -10,7 +10,7 @@ type PromptDialog = {
10
10
  * @see https://www.w3.org/WAI/ARIA/apg/patterns/alertdialog/
11
11
  * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/prompt
12
12
  */
13
- declare const PromptDialog: import("svelte").Component<ModalProps & DialogProps & import("../../typedefs").KeyboardEventHandlers & import("../../typedefs").MouseEventHandlers & import("../../typedefs").PointerEventHandlers & import("../../typedefs").FocusEventHandlers & import("../../typedefs").DragEventHandlers & InputEventHandlers & {
13
+ declare const PromptDialog: import("svelte").Component<ModalProps & DialogProps & import("../../typedefs.js").KeyboardEventHandlers & import("../../typedefs.js").MouseEventHandlers & import("../../typedefs.js").PointerEventHandlers & import("../../typedefs.js").FocusEventHandlers & import("../../typedefs.js").DragEventHandlers & InputEventHandlers & {
14
14
  /**
15
15
  * Value entered on the textbox.
16
16
  */
@@ -48,7 +48,7 @@ type Props = {
48
48
  */
49
49
  input?: Snippet<[]> | undefined;
50
50
  };
51
- import type { ModalProps } from '../../typedefs';
52
- import type { DialogProps } from '../../typedefs';
53
- import type { InputEventHandlers } from '../../typedefs';
51
+ import type { ModalProps } from '../../typedefs.js';
52
+ import type { DialogProps } from '../../typedefs.js';
53
+ import type { InputEventHandlers } from '../../typedefs.js';
54
54
  import type { Snippet } from 'svelte';
@@ -68,7 +68,7 @@
68
68
  aria-expanded={expanded}
69
69
  onclick={() => {
70
70
  expanded = !expanded;
71
- onChange?.(new CustomEvent('change', { detail: { expanded } }));
71
+ onChange?.(new CustomEvent('Change', { detail: { expanded } }));
72
72
  }}
73
73
  >
74
74
  {#snippet startIcon()}
@@ -5,11 +5,9 @@
5
5
  @see https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/
6
6
  -->
7
7
  <script>
8
- import { _ } from '@sveltia/i18n';
9
8
  import { untrack } from 'svelte';
10
- import Button from '../button/button.svelte';
11
9
  import Spacer from '../divider/spacer.svelte';
12
- import Icon from '../icon/icon.svelte';
10
+ import ModalCloseButton from '../dialog/modal-close-button.svelte';
13
11
  import Modal from '../util/modal.svelte';
14
12
  import {
15
13
  addSwipeSample,
@@ -21,7 +19,7 @@
21
19
 
22
20
  /**
23
21
  * @import { Snippet } from 'svelte';
24
- * @import { ModalProps } from '../../typedefs';
22
+ * @import { ModalProps } from '../../typedefs.js';
25
23
  * @import { SwipeState } from './drawer.js';
26
24
  */
27
25
 
@@ -251,24 +249,14 @@
251
249
  {/if}
252
250
  <div role="none" class="extra-control">
253
251
  {#if showClose === 'outside'}
254
- <Button
255
- variant="ghost"
256
- iconic
252
+ <ModalCloseButton
257
253
  class="close"
258
- aria-label={_('_sui.close')}
259
- aria-controls={id}
260
- onclick={() => {
254
+ controls={id}
255
+ {closeIcon}
256
+ onClose={() => {
261
257
  modal?.close('close');
262
258
  }}
263
- >
264
- {#snippet startIcon()}
265
- {#if closeIcon}
266
- {@render closeIcon()}
267
- {:else}
268
- <Icon name="close" />
269
- {/if}
270
- {/snippet}
271
- </Button>
259
+ />
272
260
  {/if}
273
261
  </div>
274
262
  {#if title || showClose === 'inside' || header || headerExtra}
@@ -282,24 +270,14 @@
282
270
  <Spacer flex={true} />
283
271
  {@render headerExtra?.()}
284
272
  {#if showClose === 'inside'}
285
- <Button
286
- variant="ghost"
287
- iconic
273
+ <ModalCloseButton
288
274
  class="close"
289
- aria-label={_('_sui.close')}
290
- aria-controls={id}
291
- onclick={() => {
275
+ controls={id}
276
+ {closeIcon}
277
+ onClose={() => {
292
278
  modal?.close('close');
293
279
  }}
294
- >
295
- {#snippet startIcon()}
296
- {#if closeIcon}
297
- {@render closeIcon()}
298
- {:else}
299
- <Icon name="close" />
300
- {/if}
301
- {/snippet}
302
- </Button>
280
+ />
303
281
  {/if}
304
282
  </div>
305
283
  {/if}
@@ -140,5 +140,5 @@ type Props = {
140
140
  */
141
141
  extraContent?: Snippet<[]> | undefined;
142
142
  };
143
- import type { ModalProps } from '../../typedefs';
143
+ import type { ModalProps } from '../../typedefs.js';
144
144
  import type { Snippet } from 'svelte';
@@ -1,2 +1,2 @@
1
1
  export function getFieldCaretRect(element: HTMLInputElement | HTMLTextAreaElement, start: number, end: number): EmojiAnchorRect | undefined;
2
- import type { EmojiAnchorRect } from '../../typedefs';
2
+ import type { EmojiAnchorRect } from '../../typedefs.js';
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @import { EmojiAnchorRect } from '../../typedefs';
2
+ * @import { EmojiAnchorRect } from '../../typedefs.js';
3
3
  */
4
4
 
5
5
  /**
@@ -16,7 +16,7 @@
16
16
  import { getSuggestionListPosition } from './position.js';
17
17
 
18
18
  /**
19
- * @import { EmojiAnchorRect, EmojiEntry, EmojiTrigger } from '../../typedefs';
19
+ * @import { EmojiAnchorRect, EmojiEntry, EmojiTrigger } from '../../typedefs.js';
20
20
  */
21
21
 
22
22
  /**
@@ -61,6 +61,6 @@ type Props = {
61
61
  */
62
62
  ariaOwner?: HTMLElement | undefined;
63
63
  };
64
- import type { EmojiTrigger } from '../../typedefs';
65
- import type { EmojiAnchorRect } from '../../typedefs';
66
- import type { EmojiEntry } from '../../typedefs';
64
+ import type { EmojiTrigger } from '../../typedefs.js';
65
+ import type { EmojiAnchorRect } from '../../typedefs.js';
66
+ import type { EmojiEntry } from '../../typedefs.js';
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @import { EmojiEntry } from '../../typedefs';
2
+ * @import { EmojiEntry } from '../../typedefs.js';
3
3
  */
4
4
  /**
5
5
  * Regular expression that matches an emoji shortcode being typed at the end of a line, like `:smi`.
@@ -30,4 +30,4 @@ export function getEmojiMatchRank({ name, aliases }: EmojiEntry, query: string):
30
30
  export function searchEmojis(query: string): EmojiEntry[];
31
31
  export function getEmojiInsertText(emoji: string, textAfterCaret: string): string;
32
32
  export function detectEmojiTrigger(textBeforeCaret: string): string | undefined;
33
- import type { EmojiEntry } from '../../typedefs';
33
+ import type { EmojiEntry } from '../../typedefs.js';
@@ -1,7 +1,7 @@
1
1
  import { EMOJI_DATA } from './generated.js';
2
2
 
3
3
  /**
4
- * @import { EmojiEntry } from '../../typedefs';
4
+ * @import { EmojiEntry } from '../../typedefs.js';
5
5
  */
6
6
 
7
7
  /**
@@ -3,7 +3,7 @@
3
3
  * tested against arbitrary viewports.
4
4
  */
5
5
  /**
6
- * @import { EmojiAnchorRect } from '../../typedefs';
6
+ * @import { EmojiAnchorRect } from '../../typedefs.js';
7
7
  */
8
8
  /**
9
9
  * Width of the dropdown, also enforced in the component’s stylesheet.
@@ -41,4 +41,4 @@ export type SuggestionListPosition = {
41
41
  */
42
42
  maxHeight: string;
43
43
  };
44
- import type { EmojiAnchorRect } from '../../typedefs';
44
+ import type { EmojiAnchorRect } from '../../typedefs.js';
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  /**
7
- * @import { EmojiAnchorRect } from '../../typedefs';
7
+ * @import { EmojiAnchorRect } from '../../typedefs.js';
8
8
  */
9
9
 
10
10
  /**
@@ -54,7 +54,7 @@
54
54
  */
55
55
  const toggle = () => {
56
56
  expanded = !expanded;
57
- onChange?.(new CustomEvent('change', { detail: { expanded } }));
57
+ onChange?.(new CustomEvent('Change', { detail: { expanded } }));
58
58
  };
59
59
 
60
60
  /**
@@ -91,7 +91,11 @@
91
91
  aria-roledescription={_('_sui.role_descriptions.grid_body')}
92
92
  >
93
93
  {#if label}
94
- <div role="row" class="row-group-caption" {@attach handleCaptionClick}>
94
+ <!--
95
+ The caption is a row the keyboard can land on, but not one that can be selected: clicking or
96
+ pressing Enter on it toggles the group instead
97
+ -->
98
+ <div role="row" class="row-group-caption" data-selectable="false" {@attach handleCaptionClick}>
95
99
  <!-- We need `colspan` here but cannot place `<th>` under `<div>`, so use a hack -->
96
100
  <svelte:element this={"th"} role="columnheader" id="{id}-label" colspan="9999">
97
101
  {#if hasExpander}
@@ -5,6 +5,8 @@
5
5
  @see https://w3c.github.io/aria/#gridcell
6
6
  -->
7
7
  <script>
8
+ import TablePart from '../table/table-part.svelte';
9
+
8
10
  /**
9
11
  * @import { Snippet } from 'svelte';
10
12
  */
@@ -20,17 +22,9 @@
20
22
  */
21
23
  let {
22
24
  /* eslint-disable prefer-const */
23
- class: className,
24
- children,
25
25
  ...restProps
26
26
  /* eslint-enable prefer-const */
27
27
  } = $props();
28
28
  </script>
29
29
 
30
- <div {...restProps} role="gridcell" class="sui grid-cell {className}">
31
- {@render children?.()}
32
- </div>
33
-
34
- <style>.grid-cell {
35
- display: table-cell;
36
- }</style>
30
+ <TablePart {...restProps} role="gridcell" kind="grid-cell" />
@@ -5,6 +5,8 @@
5
5
  @see https://w3c.github.io/aria/#columnheader
6
6
  -->
7
7
  <script>
8
+ import TablePart from '../table/table-part.svelte';
9
+
8
10
  /**
9
11
  * @import { Snippet } from 'svelte';
10
12
  */
@@ -20,17 +22,9 @@
20
22
  */
21
23
  let {
22
24
  /* eslint-disable prefer-const */
23
- class: className,
24
- children,
25
25
  ...restProps
26
26
  /* eslint-enable prefer-const */
27
27
  } = $props();
28
28
  </script>
29
29
 
30
- <div {...restProps} role="columnheader" class="sui grid-col-header {className}">
31
- {@render children?.()}
32
- </div>
33
-
34
- <style>.grid-col-header {
35
- display: table-cell;
36
- }</style>
30
+ <TablePart {...restProps} role="columnheader" kind="grid-col-header" />
@@ -6,6 +6,7 @@
6
6
  -->
7
7
  <script>
8
8
  import { _ } from '@sveltia/i18n';
9
+ import TablePart from '../table/table-part.svelte';
9
10
 
10
11
  /**
11
12
  * @import { Snippet } from 'svelte';
@@ -22,22 +23,14 @@
22
23
  */
23
24
  let {
24
25
  /* eslint-disable prefer-const */
25
- class: className,
26
- children,
27
26
  ...restProps
28
27
  /* eslint-enable prefer-const */
29
28
  } = $props();
30
29
  </script>
31
30
 
32
- <div
31
+ <TablePart
33
32
  {...restProps}
34
33
  role="rowgroup"
35
- class="sui grid-foot {className}"
34
+ kind="grid-foot"
36
35
  aria-roledescription={_('_sui.role_descriptions.grid_foot')}
37
- >
38
- {@render children?.()}
39
- </div>
40
-
41
- <style>.grid-foot {
42
- display: table-footer-group;
43
- }</style>
36
+ />
@@ -6,6 +6,7 @@
6
6
  -->
7
7
  <script>
8
8
  import { _ } from '@sveltia/i18n';
9
+ import TablePart from '../table/table-part.svelte';
9
10
 
10
11
  /**
11
12
  * @import { Snippet } from 'svelte';
@@ -22,22 +23,14 @@
22
23
  */
23
24
  let {
24
25
  /* eslint-disable prefer-const */
25
- class: className,
26
- children,
27
26
  ...restProps
28
27
  /* eslint-enable prefer-const */
29
28
  } = $props();
30
29
  </script>
31
30
 
32
- <div
31
+ <TablePart
33
32
  {...restProps}
34
33
  role="rowgroup"
35
- class="sui grid-head {className}"
34
+ kind="grid-head"
36
35
  aria-roledescription={_('_sui.role_descriptions.grid_head')}
37
- >
38
- {@render children?.()}
39
- </div>
40
-
41
- <style>.grid-head {
42
- display: table-header-group;
43
- }</style>
36
+ />
@@ -5,6 +5,8 @@
5
5
  @see https://w3c.github.io/aria/#rowheader
6
6
  -->
7
7
  <script>
8
+ import TablePart from '../table/table-part.svelte';
9
+
8
10
  /**
9
11
  * @import { Snippet } from 'svelte';
10
12
  */
@@ -20,18 +22,9 @@
20
22
  */
21
23
  let {
22
24
  /* eslint-disable prefer-const */
23
- class: className,
24
- children,
25
25
  ...restProps
26
26
  /* eslint-enable prefer-const */
27
27
  } = $props();
28
28
  </script>
29
29
 
30
- <div {...restProps} role="rowheader" class="sui grid-row-header {className}">
31
- {@render children?.()}
32
- </div>
33
-
34
- <style>.grid-row-header {
35
- display: table-cell;
36
- height: var(--sui-secondary-row-height);
37
- }</style>
30
+ <TablePart {...restProps} role="rowheader" kind="grid-row-header" />
@@ -5,6 +5,8 @@
5
5
  @see https://w3c.github.io/aria/#row
6
6
  -->
7
7
  <script>
8
+ import TablePart from '../table/table-part.svelte';
9
+
8
10
  /**
9
11
  * @import { Snippet } from 'svelte';
10
12
  */
@@ -24,25 +26,10 @@
24
26
  */
25
27
  let {
26
28
  /* eslint-disable prefer-const */
27
- class: className,
28
29
  selected = false,
29
- children,
30
30
  ...restProps
31
31
  /* eslint-enable prefer-const */
32
32
  } = $props();
33
33
  </script>
34
34
 
35
- <div
36
- {...restProps}
37
- role="row"
38
- class="sui grid-row {className}"
39
- tabindex="0"
40
- aria-selected={selected}
41
- >
42
- {@render children?.()}
43
- </div>
44
-
45
- <style>.grid-row {
46
- display: table-row;
47
- height: var(--sui-primary-row-height);
48
- }</style>
35
+ <TablePart {...restProps} role="row" kind="grid-row" tabindex="0" aria-selected={selected} />
@@ -10,7 +10,7 @@
10
10
 
11
11
  /**
12
12
  * @import { Snippet } from 'svelte';
13
- * @import { ButtonProps, CommonEventHandlers } from '../../typedefs';
13
+ * @import { ButtonProps, CommonEventHandlers } from '../../typedefs.js';
14
14
  */
15
15
 
16
16
  /**
@@ -9,7 +9,7 @@ type Listbox = {
9
9
  * @see https://w3c.github.io/aria/#listbox
10
10
  * @see https://www.w3.org/WAI/ARIA/apg/patterns/listbox/
11
11
  */
12
- declare const Listbox: import("svelte").Component<import("../../typedefs").KeyboardEventHandlers & import("../../typedefs").MouseEventHandlers & import("../../typedefs").PointerEventHandlers & import("../../typedefs").FocusEventHandlers & import("../../typedefs").DragEventHandlers & {
12
+ declare const Listbox: import("svelte").Component<import("../../typedefs.js").KeyboardEventHandlers & import("../../typedefs.js").MouseEventHandlers & import("../../typedefs.js").PointerEventHandlers & import("../../typedefs.js").FocusEventHandlers & import("../../typedefs.js").DragEventHandlers & {
13
13
  /**
14
14
  * The `class` attribute on the wrapper element.
15
15
  */
@@ -13,7 +13,7 @@
13
13
 
14
14
  /**
15
15
  * @import { Snippet } from 'svelte';
16
- * @import { ButtonProps, CommonEventHandlers } from '../../typedefs';
16
+ * @import { ButtonProps, CommonEventHandlers } from '../../typedefs.js';
17
17
  */
18
18
 
19
19
  /**
@@ -8,7 +8,7 @@ type Option = {
8
8
  * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/option
9
9
  * @see https://w3c.github.io/aria/#option
10
10
  */
11
- declare const Option: import("svelte").Component<ButtonProps & import("../../typedefs").KeyboardEventHandlers & import("../../typedefs").MouseEventHandlers & import("../../typedefs").PointerEventHandlers & import("../../typedefs").FocusEventHandlers & import("../../typedefs").DragEventHandlers & {
11
+ declare const Option: import("svelte").Component<ButtonProps & import("../../typedefs.js").KeyboardEventHandlers & import("../../typedefs.js").MouseEventHandlers & import("../../typedefs.js").PointerEventHandlers & import("../../typedefs.js").FocusEventHandlers & import("../../typedefs.js").DragEventHandlers & {
12
12
  /**
13
13
  * The `class` attribute on the wrapper element.
14
14
  */
@@ -62,5 +62,5 @@ type Props = {
62
62
  */
63
63
  checkIcon?: Snippet<[]> | undefined;
64
64
  };
65
- import type { ButtonProps } from '../../typedefs';
65
+ import type { ButtonProps } from '../../typedefs.js';
66
66
  import type { Snippet } from 'svelte';
@@ -9,13 +9,13 @@
9
9
  import Popup from '../util/popup.svelte';
10
10
 
11
11
  /**
12
- * @import { ButtonProps, CommonEventHandlers } from '../../typedefs';
12
+ * @import { ButtonProps, CommonEventHandlers } from '../../typedefs.js';
13
13
  */
14
14
 
15
15
  /**
16
16
  * @typedef {object} Props
17
17
  * @property {HTMLElement} [popupPositionBaseElement] The base element of {@link popupPosition}.
18
- * If omitted, this will be {@link buttonComponent}.
18
+ * If omitted, this will be the button itself.
19
19
  */
20
20
 
21
21
  /**