@sveltia/ui 0.15.16 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/package/components/alert/alert.svelte +22 -7
  2. package/package/components/alert/alert.svelte.d.ts +47 -31
  3. package/package/components/button/button-group.svelte +16 -6
  4. package/package/components/button/button-group.svelte.d.ts +38 -28
  5. package/package/components/button/button.svelte +41 -136
  6. package/package/components/button/button.svelte.d.ts +20 -162
  7. package/package/components/button/select-button-group.svelte +31 -37
  8. package/package/components/button/select-button-group.svelte.d.ts +91 -39
  9. package/package/components/button/select-button.svelte +19 -62
  10. package/package/components/button/select-button.svelte.d.ts +31 -65
  11. package/package/components/button/split-button.svelte +37 -47
  12. package/package/components/button/split-button.svelte.d.ts +54 -60
  13. package/package/components/calendar/calendar.svelte +80 -55
  14. package/package/components/calendar/calendar.svelte.d.ts +30 -26
  15. package/package/components/checkbox/checkbox-group.svelte +23 -20
  16. package/package/components/checkbox/checkbox-group.svelte.d.ts +64 -32
  17. package/package/components/checkbox/checkbox.svelte +57 -67
  18. package/package/components/checkbox/checkbox.svelte.d.ts +81 -53
  19. package/package/components/dialog/alert-dialog.svelte +9 -36
  20. package/package/components/dialog/alert-dialog.svelte.d.ts +20 -49
  21. package/package/components/dialog/confirmation-dialog.svelte +9 -41
  22. package/package/components/dialog/confirmation-dialog.svelte.d.ts +20 -51
  23. package/package/components/dialog/dialog.svelte +60 -105
  24. package/package/components/dialog/dialog.svelte.d.ts +19 -86
  25. package/package/components/dialog/prompt-dialog.svelte +32 -61
  26. package/package/components/dialog/prompt-dialog.svelte.d.ts +53 -65
  27. package/package/components/disclosure/disclosure.svelte +39 -34
  28. package/package/components/disclosure/disclosure.svelte.d.ts +88 -57
  29. package/package/components/divider/divider.svelte +18 -14
  30. package/package/components/divider/divider.svelte.d.ts +48 -26
  31. package/package/components/divider/spacer.svelte +13 -8
  32. package/package/components/divider/spacer.svelte.d.ts +37 -25
  33. package/package/components/drawer/drawer.svelte +63 -76
  34. package/package/components/drawer/drawer.svelte.d.ts +116 -70
  35. package/package/components/grid/grid-body.svelte +15 -10
  36. package/package/components/grid/grid-body.svelte.d.ts +45 -29
  37. package/package/components/grid/grid-cell.svelte +16 -6
  38. package/package/components/grid/grid-cell.svelte.d.ts +38 -28
  39. package/package/components/grid/grid-col-header.svelte +16 -6
  40. package/package/components/grid/grid-col-header.svelte.d.ts +38 -28
  41. package/package/components/grid/grid-foot.svelte +16 -6
  42. package/package/components/grid/grid-foot.svelte.d.ts +38 -28
  43. package/package/components/grid/grid-head.svelte +16 -6
  44. package/package/components/grid/grid-head.svelte.d.ts +38 -28
  45. package/package/components/grid/grid-row-header.svelte +16 -6
  46. package/package/components/grid/grid-row-header.svelte.d.ts +38 -28
  47. package/package/components/grid/grid-row.svelte +19 -23
  48. package/package/components/grid/grid-row.svelte.d.ts +63 -43
  49. package/package/components/grid/grid.svelte +26 -25
  50. package/package/components/grid/grid.svelte.d.ts +71 -37
  51. package/package/components/icon/icon.svelte +14 -9
  52. package/package/components/icon/icon.svelte.d.ts +37 -25
  53. package/package/components/listbox/listbox.svelte +46 -52
  54. package/package/components/listbox/listbox.svelte.d.ts +117 -45
  55. package/package/components/listbox/option-group.svelte +23 -19
  56. package/package/components/listbox/option-group.svelte.d.ts +64 -32
  57. package/package/components/listbox/option.svelte +44 -57
  58. package/package/components/listbox/option.svelte.d.ts +68 -74
  59. package/package/components/menu/menu-button.svelte +42 -63
  60. package/package/components/menu/menu-button.svelte.d.ts +35 -62
  61. package/package/components/menu/menu-item-checkbox.svelte +29 -41
  62. package/package/components/menu/menu-item-checkbox.svelte.d.ts +20 -49
  63. package/package/components/menu/menu-item-group.svelte +22 -19
  64. package/package/components/menu/menu-item-group.svelte.d.ts +56 -32
  65. package/package/components/menu/menu-item-radio.svelte +29 -41
  66. package/package/components/menu/menu-item-radio.svelte.d.ts +20 -49
  67. package/package/components/menu/menu-item.svelte +66 -75
  68. package/package/components/menu/menu-item.svelte.d.ts +19 -68
  69. package/package/components/menu/menu.svelte +25 -22
  70. package/package/components/menu/menu.svelte.d.ts +65 -35
  71. package/package/components/radio/radio-group.svelte +36 -42
  72. package/package/components/radio/radio-group.svelte.d.ts +100 -40
  73. package/package/components/radio/radio.svelte +45 -48
  74. package/package/components/radio/radio.svelte.d.ts +111 -47
  75. package/package/components/select/combobox.svelte +76 -101
  76. package/package/components/select/combobox.svelte.d.ts +19 -54
  77. package/package/components/select/select-tags.svelte +48 -59
  78. package/package/components/select/select-tags.svelte.d.ts +127 -45
  79. package/package/components/select/select.svelte +18 -37
  80. package/package/components/select/select.svelte.d.ts +20 -45
  81. package/package/components/slider/slider.svelte +71 -68
  82. package/package/components/slider/slider.svelte.d.ts +159 -47
  83. package/package/components/switch/switch.svelte +36 -46
  84. package/package/components/switch/switch.svelte.d.ts +98 -42
  85. package/package/components/table/table-body.svelte +15 -11
  86. package/package/components/table/table-body.svelte.d.ts +45 -29
  87. package/package/components/table/table-cell.svelte +16 -6
  88. package/package/components/table/table-cell.svelte.d.ts +38 -28
  89. package/package/components/table/table-col-header.svelte +16 -6
  90. package/package/components/table/table-col-header.svelte.d.ts +38 -28
  91. package/package/components/table/table-foot.svelte +16 -6
  92. package/package/components/table/table-foot.svelte.d.ts +38 -28
  93. package/package/components/table/table-head.svelte +16 -6
  94. package/package/components/table/table-head.svelte.d.ts +38 -28
  95. package/package/components/table/table-row-header.svelte +16 -6
  96. package/package/components/table/table-row-header.svelte.d.ts +38 -28
  97. package/package/components/table/table-row.svelte +16 -6
  98. package/package/components/table/table-row.svelte.d.ts +38 -28
  99. package/package/components/table/table.svelte +16 -6
  100. package/package/components/table/table.svelte.d.ts +38 -28
  101. package/package/components/tabs/tab-box.svelte +16 -9
  102. package/package/components/tabs/tab-box.svelte.d.ts +47 -27
  103. package/package/components/tabs/tab-list.svelte +36 -35
  104. package/package/components/tabs/tab-list.svelte.d.ts +80 -38
  105. package/package/components/tabs/tab-panel.svelte +16 -6
  106. package/package/components/tabs/tab-panel.svelte.d.ts +38 -28
  107. package/package/components/tabs/tab-panels.svelte +16 -6
  108. package/package/components/tabs/tab-panels.svelte.d.ts +38 -26
  109. package/package/components/tabs/tab.svelte +28 -25
  110. package/package/components/tabs/tab.svelte.d.ts +31 -55
  111. package/package/components/text-editor/lexical-root.svelte +38 -32
  112. package/package/components/text-editor/lexical-root.svelte.d.ts +91 -29
  113. package/package/components/text-editor/text-editor.svelte +63 -79
  114. package/package/components/text-editor/text-editor.svelte.d.ts +114 -36
  115. package/package/components/text-editor/toolbar/editor-toolbar.svelte +41 -24
  116. package/package/components/text-editor/toolbar/editor-toolbar.svelte.d.ts +49 -23
  117. package/package/components/text-editor/toolbar/format-text-button.svelte +15 -5
  118. package/package/components/text-editor/toolbar/format-text-button.svelte.d.ts +30 -22
  119. package/package/components/text-editor/toolbar/insert-link-button.svelte +18 -16
  120. package/package/components/text-editor/toolbar/insert-link-button.svelte.d.ts +20 -23
  121. package/package/components/text-editor/toolbar/toggle-block-menu-item.svelte +19 -7
  122. package/package/components/text-editor/toolbar/toggle-block-menu-item.svelte.d.ts +30 -22
  123. package/package/components/text-field/number-input.svelte +63 -81
  124. package/package/components/text-field/number-input.svelte.d.ts +62 -68
  125. package/package/components/text-field/password-input.svelte +38 -57
  126. package/package/components/text-field/password-input.svelte.d.ts +30 -58
  127. package/package/components/text-field/search-bar.svelte +45 -62
  128. package/package/components/text-field/search-bar.svelte.d.ts +42 -87
  129. package/package/components/text-field/text-area.svelte +38 -54
  130. package/package/components/text-field/text-area.svelte.d.ts +116 -50
  131. package/package/components/text-field/text-input.svelte +30 -86
  132. package/package/components/text-field/text-input.svelte.d.ts +20 -105
  133. package/package/components/toast/toast.svelte +36 -30
  134. package/package/components/toast/toast.svelte.d.ts +65 -33
  135. package/package/components/toolbar/toolbar.svelte +25 -25
  136. package/package/components/toolbar/toolbar.svelte.d.ts +72 -34
  137. package/package/components/util/app-shell.svelte +22 -10
  138. package/package/components/util/app-shell.svelte.d.ts +40 -34
  139. package/package/components/util/group.svelte +20 -15
  140. package/package/components/util/group.svelte.d.ts +55 -31
  141. package/package/components/util/modal.svelte +89 -105
  142. package/package/components/util/modal.svelte.d.ts +24 -82
  143. package/package/components/util/placeholder.svelte +21 -0
  144. package/package/components/util/placeholder.svelte.d.ts +34 -0
  145. package/package/components/util/popup.svelte +65 -62
  146. package/package/components/util/popup.svelte.d.ts +104 -82
  147. package/package/services/{group.js → group.svelte.js} +11 -12
  148. package/package/services/{popup.js → popup.svelte.js} +6 -5
  149. package/package/typedefs.d.ts +545 -0
  150. package/package/typedefs.js +202 -0
  151. package/package.json +16 -23
  152. package/package/components/util/portal.svelte +0 -36
  153. package/package/components/util/portal.svelte.d.ts +0 -32
  154. /package/package/services/{events.d.ts → events.svelte.d.ts} +0 -0
  155. /package/package/services/{events.js → events.svelte.js} +0 -0
  156. /package/package/services/{group.d.ts → group.svelte.d.ts} +0 -0
  157. /package/package/services/{popup.d.ts → popup.svelte.d.ts} +0 -0
@@ -1,85 +1,27 @@
1
- /** @typedef {typeof __propDef.props} ModalProps */
2
- /** @typedef {typeof __propDef.events} ModalEvents */
3
- /** @typedef {typeof __propDef.slots} ModalSlots */
4
- /** A generic modal top-layer helper based on the HTML `<dialog>` element. */
5
- export default class Modal extends SvelteComponent<{
6
- [x: string]: any;
7
- class?: string | undefined;
8
- close?: ((returnValue: string) => void) | undefined;
9
- dialog?: HTMLDialogElement | undefined;
10
- role?: "dialog" | "none" | "alertdialog" | undefined;
11
- open?: boolean | undefined;
12
- showBackdrop?: boolean | undefined;
13
- lightDismiss?: boolean | undefined;
14
- escapeDismiss?: boolean | undefined;
15
- keepContent?: boolean | undefined;
16
- }, {
17
- opening: CustomEvent<any>;
18
- open: CustomEvent<any>;
19
- closing: CustomEvent<any>;
20
- close: CustomEvent<any>;
1
+ export default Modal;
2
+ type Modal = SvelteComponent<ModalProps & Record<string, any>, {
3
+ [evt: string]: CustomEvent<any>;
4
+ }, {}> & {
5
+ $$bindings?: "dialog" | "open" | undefined;
21
6
  } & {
7
+ close: (returnValue: string) => void;
8
+ };
9
+ /** A generic modal top-layer helper based on the HTML `<dialog>` element. */
10
+ declare const Modal: $$__sveltets_2_IsomorphicComponent<import("../../typedefs").ModalProps & Record<string, any>, {
22
11
  [evt: string]: CustomEvent<any>;
23
- }, {
24
- 'extra-content': {};
25
- default: {};
26
- }> {
27
- get close(): (returnValue: string) => void;
28
- /**accessor*/
29
- set class(_: string | undefined);
30
- get class(): string | undefined;
31
- /**accessor*/
32
- set role(_: "dialog" | "none" | "alertdialog" | undefined);
33
- get role(): "dialog" | "none" | "alertdialog" | undefined;
34
- /**accessor*/
35
- set open(_: boolean | undefined);
36
- get open(): boolean | undefined;
37
- /**accessor*/
38
- set showBackdrop(_: boolean | undefined);
39
- get showBackdrop(): boolean | undefined;
40
- /**accessor*/
41
- set lightDismiss(_: boolean | undefined);
42
- get lightDismiss(): boolean | undefined;
43
- /**accessor*/
44
- set escapeDismiss(_: boolean | undefined);
45
- get escapeDismiss(): boolean | undefined;
46
- /**accessor*/
47
- set keepContent(_: boolean | undefined);
48
- get keepContent(): boolean | undefined;
49
- /**accessor*/
50
- set dialog(_: HTMLDialogElement | undefined);
51
- get dialog(): HTMLDialogElement | undefined;
52
- }
53
- export type ModalProps = typeof __propDef.props;
54
- export type ModalEvents = typeof __propDef.events;
55
- export type ModalSlots = typeof __propDef.slots;
56
- import { SvelteComponent } from "svelte";
57
- declare const __propDef: {
58
- props: {
59
- [x: string]: any;
60
- class?: string | undefined;
61
- close?: ((returnValue: string) => void) | undefined;
62
- dialog?: HTMLDialogElement | undefined;
63
- role?: "dialog" | "none" | "alertdialog" | undefined;
64
- open?: boolean | undefined;
65
- showBackdrop?: boolean | undefined;
66
- lightDismiss?: boolean | undefined;
67
- escapeDismiss?: boolean | undefined;
68
- keepContent?: boolean | undefined;
12
+ }, {}, {
13
+ close: (returnValue: string) => void;
14
+ }, "dialog" | "open">;
15
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
16
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
17
+ $$bindings?: Bindings;
18
+ } & Exports;
19
+ (internal: unknown, props: Props & {
20
+ $$events?: Events;
21
+ $$slots?: Slots;
22
+ }): Exports & {
23
+ $set?: any;
24
+ $on?: any;
69
25
  };
70
- events: {
71
- opening: CustomEvent<any>;
72
- open: CustomEvent<any>;
73
- closing: CustomEvent<any>;
74
- close: CustomEvent<any>;
75
- } & {
76
- [evt: string]: CustomEvent<any>;
77
- };
78
- slots: {
79
- 'extra-content': {};
80
- default: {};
81
- };
82
- exports?: undefined;
83
- bindings?: undefined;
84
- };
85
- export {};
26
+ z_$$bindings?: Bindings;
27
+ }
@@ -0,0 +1,21 @@
1
+ <!--
2
+ @component
3
+ @see https://github.com/sveltejs/svelte/issues/3088
4
+ -->
5
+ <script>
6
+ /**
7
+ * @typedef {object} Props
8
+ * @property {import('svelte').Snippet} [children] - Primary slot content.
9
+ */
10
+
11
+ /**
12
+ * @type {Props & Record<string, any>}
13
+ */
14
+ let {
15
+ /* eslint-disable prefer-const */
16
+ children,
17
+ /* eslint-enable prefer-const */
18
+ } = $props();
19
+ </script>
20
+
21
+ {@render children?.()}
@@ -0,0 +1,34 @@
1
+ export default Placeholder;
2
+ type Placeholder = SvelteComponent<Props & Record<string, any>, {
3
+ [evt: string]: CustomEvent<any>;
4
+ }, {}> & {
5
+ $$bindings?: "" | undefined;
6
+ };
7
+ /** @see https://github.com/sveltejs/svelte/issues/3088 */
8
+ declare const Placeholder: $$__sveltets_2_IsomorphicComponent<{
9
+ /**
10
+ * - Primary slot content.
11
+ */
12
+ children?: import("svelte").Snippet<[]> | undefined;
13
+ } & Record<string, any>, {
14
+ [evt: string]: CustomEvent<any>;
15
+ }, {}, {}, "">;
16
+ type Props = {
17
+ /**
18
+ * - Primary slot content.
19
+ */
20
+ children?: import("svelte").Snippet<[]> | undefined;
21
+ };
22
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
23
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
24
+ $$bindings?: Bindings;
25
+ } & Exports;
26
+ (internal: unknown, props: Props & {
27
+ $$events?: Events;
28
+ $$slots?: Slots;
29
+ }): Exports & {
30
+ $set?: any;
31
+ $on?: any;
32
+ };
33
+ z_$$bindings?: Bindings;
34
+ }
@@ -2,75 +2,70 @@
2
2
  @component
3
3
  Generic popup helper.
4
4
  -->
5
- <svelte:options accessors={true} />
6
-
7
5
  <script>
8
6
  import { sleep } from '@sveltia/utils/misc';
9
7
  import { onMount } from 'svelte';
10
8
  import { writable } from 'svelte/store';
11
- import { activatePopup } from '../../services/popup';
9
+ import { activatePopup } from '../../services/popup.svelte.js';
12
10
  import Modal from './modal.svelte';
13
11
 
14
12
  /**
15
- * The `class` attribute on the content element.
16
- * @type {string}
17
- */
18
- let className = '';
19
- export { className as class };
20
- /**
21
- * Whether to open the popup.
22
- * @type {import('svelte/store').Writable<boolean>}
23
- */
24
- export let open = writable(false);
25
- /**
26
- * Whether to show the backdrop.
27
- * @type {boolean}
28
- */
29
- export let showBackdrop = false;
30
- /**
31
- * A reference to the anchor element that opens the popup. Typically a `<button>`.
32
- * @type {HTMLElement | undefined}
33
- */
34
- export let anchor;
35
- /**
36
- * A reference to the content element.
37
- * @type {HTMLElement | undefined}
38
- */
39
- export let content = undefined;
40
- /**
41
- * Where to show the popup.
42
- * @type {import('../../typedefs').PopupPosition}
13
+ * @typedef {object} Props
14
+ * @property {string} [class] - The `class` attribute on the content element.
15
+ * @property {boolean} [open] - Whether to open the popup.
16
+ * @property {HTMLElement} anchor - A reference to the anchor element that opens the popup.
17
+ * Typically a `<button>`.
18
+ * @property {HTMLElement | undefined} [content] - A reference to the content element.
19
+ * @property {import('../../typedefs').PopupPosition} [position] - Where to show the popup.
20
+ * @property {HTMLElement | undefined} [positionBaseElement] - The base element of
21
+ * {@link position}. If omitted, this will be {@link anchor}.
22
+ * @property {boolean} [touchOptimized] - Whether to show the popup at the center of the screen on
23
+ * mobile/tablet and ignore the defined dropdown `position`.
24
+ * @property {import('svelte').Snippet} [children] - Primary slot content.
25
+ * @property {import('svelte').Snippet} [extraContent] - Extra slot content.
26
+ * @property {(event: CustomEvent) => void} [onOpen] - Custom `Open` event handler.
43
27
  */
44
- export let position = 'bottom-left';
28
+
45
29
  /**
46
- * The base element of {@link position}. If omitted, this will be {@link anchor}.
47
- * @type {HTMLElement | undefined}
30
+ * @type {import('../../typedefs').ModalProps & Props & Record<string, any>}
48
31
  */
49
- export let positionBaseElement = undefined;
32
+ let {
33
+ /* eslint-disable prefer-const */
34
+ open = $bindable(false),
35
+ content = $bindable(undefined),
36
+ class: className,
37
+ showBackdrop = false,
38
+ anchor,
39
+ position = 'bottom-left',
40
+ positionBaseElement = undefined,
41
+ touchOptimized = false,
42
+ children,
43
+ onOpen,
44
+ ...restProps
45
+ /* eslint-enable prefer-const */
46
+ } = $props();
47
+
50
48
  /**
51
- * Whether to show the popup at the center of the screen on mobile/tablet and ignore the defined
52
- * dropdown `position`.
53
49
  * @type {boolean}
54
50
  */
55
- export let touchOptimized = false;
56
-
51
+ let initialized = $state(false);
57
52
  /**
58
- * A reference to the modal component.
59
- * @type {Modal}
53
+ * A reference to the `<dialog>` element.
54
+ * @type {HTMLDialogElement | undefined}
60
55
  */
61
- let modal;
56
+ let dialogElement = $state();
62
57
  /**
63
58
  * Whether the touch is enabled on the user device.
64
59
  * @type {boolean}
65
60
  */
66
- let touchEnabled = false;
61
+ let touchEnabled = $state(false);
67
62
  /**
68
63
  * The type of the content displayed in the popup, defined with the `aria-haspopup` attribute on
69
64
  * the anchor element.
70
65
  * @type {string | undefined}
71
66
  * @see https://w3c.github.io/aria/#aria-haspopup
72
67
  */
73
- let contentType;
68
+ let contentType = $state();
74
69
  /**
75
70
  * Style to be applied to the content.
76
71
  * @type {import('svelte/store').Writable<any>}
@@ -86,17 +81,30 @@
86
81
  * Initialize the popup.
87
82
  */
88
83
  const init = () => {
89
- ({ open, style } = activatePopup(anchor, modal.dialog, position, positionBaseElement));
84
+ let openStore = writable(false);
85
+
86
+ ({ style, open: openStore } = activatePopup(
87
+ anchor,
88
+ dialogElement,
89
+ position,
90
+ positionBaseElement,
91
+ ));
92
+
93
+ openStore.subscribe((_open) => {
94
+ open = _open;
95
+ });
96
+
90
97
  contentType = anchor?.getAttribute('aria-haspopup') ?? undefined;
98
+ initialized = true;
91
99
  };
92
100
 
93
- $: {
94
- if (anchor && modal?.dialog) {
101
+ $effect(() => {
102
+ if (anchor && dialogElement && !initialized) {
95
103
  init();
96
104
  }
97
- }
105
+ });
98
106
 
99
- $: touch = touchOptimized && touchEnabled;
107
+ const touch = $derived(touchOptimized && touchEnabled);
100
108
 
101
109
  onMount(() => {
102
110
  touchEnabled = globalThis.matchMedia('(pointer: coarse)').matches;
@@ -104,21 +112,17 @@
104
112
  </script>
105
113
 
106
114
  <Modal
115
+ {...restProps}
116
+ bind:dialog={dialogElement}
107
117
  role="none"
108
118
  class="popup"
109
- bind:open={$open}
119
+ bind:open
110
120
  showBackdrop={showBackdrop ?? touch}
111
121
  lightDismiss={true}
112
122
  keepContent={true}
113
- bind:this={modal}
114
- {...$$restProps}
115
- on:opening
116
- on:open
117
- on:ok
118
- on:cancel
119
- on:closing
120
- on:close
121
- on:open={async () => {
123
+ onOpen={async (event) => {
124
+ onOpen?.(event);
125
+
122
126
  await sleep(100);
123
127
 
124
128
  if (!content) {
@@ -137,8 +141,8 @@
137
141
  }
138
142
  }}
139
143
  >
140
- <slot name="extra-content" slot="extra-content" />
141
144
  <div
145
+ bind:this={content}
142
146
  role="none"
143
147
  class="content {className} {contentType}"
144
148
  class:touch
@@ -148,9 +152,8 @@
148
152
  style:max-width={$style.maxWidth}
149
153
  style:max-height={$style.height}
150
154
  style:visibility={$style.inset ? undefined : 'hidden'}
151
- bind:this={content}
152
155
  >
153
- <slot />
156
+ {@render children?.()}
154
157
  </div>
155
158
  </Modal>
156
159
 
@@ -1,90 +1,112 @@
1
- /** @typedef {typeof __propDef.props} PopupProps */
2
- /** @typedef {typeof __propDef.events} PopupEvents */
3
- /** @typedef {typeof __propDef.slots} PopupSlots */
1
+ export default Popup;
2
+ type Popup = SvelteComponent<ModalProps & Props & Record<string, any>, {
3
+ [evt: string]: CustomEvent<any>;
4
+ }, {}> & {
5
+ $$bindings?: "open" | "content" | undefined;
6
+ };
4
7
  /** Generic popup helper. */
5
- export default class Popup extends SvelteComponent<{
6
- [x: string]: any;
7
- anchor: HTMLElement | undefined;
8
+ declare const Popup: $$__sveltets_2_IsomorphicComponent<import("../../typedefs").ModalProps & {
9
+ /**
10
+ * - The `class` attribute on the content element.
11
+ */
8
12
  class?: string | undefined;
9
- position?: import("../../typedefs").PopupPosition | undefined;
10
- open?: import("svelte/store").Writable<boolean> | undefined;
11
- showBackdrop?: boolean | undefined;
13
+ /**
14
+ * - Whether to open the popup.
15
+ */
16
+ open?: boolean | undefined;
17
+ /**
18
+ * - A reference to the anchor element that opens the popup.
19
+ * Typically a `<button>`.
20
+ */
21
+ anchor: HTMLElement;
22
+ /**
23
+ * - A reference to the content element.
24
+ */
12
25
  content?: HTMLElement | undefined;
26
+ /**
27
+ * - Where to show the popup.
28
+ */
29
+ position?: import("../../typedefs").PopupPosition | undefined;
30
+ /**
31
+ * - The base element of
32
+ * {@link position}. If omitted, this will be {@link anchor}.
33
+ */
13
34
  positionBaseElement?: HTMLElement | undefined;
35
+ /**
36
+ * - Whether to show the popup at the center of the screen on
37
+ * mobile/tablet and ignore the defined dropdown `position`.
38
+ */
14
39
  touchOptimized?: boolean | undefined;
15
- }, {
16
- opening: CustomEvent<any>;
17
- open: CustomEvent<any>;
18
- ok: CustomEvent<any>;
19
- cancel: CustomEvent<any>;
20
- closing: CustomEvent<any>;
21
- close: CustomEvent<any>;
22
- } & {
40
+ /**
41
+ * - Primary slot content.
42
+ */
43
+ children?: import("svelte").Snippet<[]> | undefined;
44
+ /**
45
+ * - Extra slot content.
46
+ */
47
+ extraContent?: import("svelte").Snippet<[]> | undefined;
48
+ /**
49
+ * - Custom `Open` event handler.
50
+ */
51
+ onOpen?: ((event: CustomEvent) => void) | undefined;
52
+ } & Record<string, any>, {
23
53
  [evt: string]: CustomEvent<any>;
24
- }, {
25
- 'extra-content': {
26
- slot: string;
54
+ }, {}, {}, "open" | "content">;
55
+ type Props = {
56
+ /**
57
+ * - The `class` attribute on the content element.
58
+ */
59
+ class?: string | undefined;
60
+ /**
61
+ * - Whether to open the popup.
62
+ */
63
+ open?: boolean | undefined;
64
+ /**
65
+ * - A reference to the anchor element that opens the popup.
66
+ * Typically a `<button>`.
67
+ */
68
+ anchor: HTMLElement;
69
+ /**
70
+ * - A reference to the content element.
71
+ */
72
+ content?: HTMLElement | undefined;
73
+ /**
74
+ * - Where to show the popup.
75
+ */
76
+ position?: import("../../typedefs").PopupPosition | undefined;
77
+ /**
78
+ * - The base element of
79
+ * {@link position}. If omitted, this will be {@link anchor}.
80
+ */
81
+ positionBaseElement?: HTMLElement | undefined;
82
+ /**
83
+ * - Whether to show the popup at the center of the screen on
84
+ * mobile/tablet and ignore the defined dropdown `position`.
85
+ */
86
+ touchOptimized?: boolean | undefined;
87
+ /**
88
+ * - Primary slot content.
89
+ */
90
+ children?: import("svelte").Snippet<[]> | undefined;
91
+ /**
92
+ * - Extra slot content.
93
+ */
94
+ extraContent?: import("svelte").Snippet<[]> | undefined;
95
+ /**
96
+ * - Custom `Open` event handler.
97
+ */
98
+ onOpen?: ((event: CustomEvent) => void) | undefined;
99
+ };
100
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
101
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
102
+ $$bindings?: Bindings;
103
+ } & Exports;
104
+ (internal: unknown, props: Props & {
105
+ $$events?: Events;
106
+ $$slots?: Slots;
107
+ }): Exports & {
108
+ $set?: any;
109
+ $on?: any;
27
110
  };
28
- default: {};
29
- }> {
30
- /**accessor*/
31
- set class(_: string | undefined);
32
- get class(): string | undefined;
33
- /**accessor*/
34
- set open(_: import("svelte/store").Writable<boolean> | undefined);
35
- get open(): import("svelte/store").Writable<boolean> | undefined;
36
- /**accessor*/
37
- set showBackdrop(_: boolean | undefined);
38
- get showBackdrop(): boolean | undefined;
39
- /**accessor*/
40
- set anchor(_: HTMLElement | undefined);
41
- get anchor(): HTMLElement | undefined;
42
- /**accessor*/
43
- set content(_: HTMLElement | undefined);
44
- get content(): HTMLElement | undefined;
45
- /**accessor*/
46
- set position(_: import("../../typedefs").PopupPosition | undefined);
47
- get position(): import("../../typedefs").PopupPosition | undefined;
48
- /**accessor*/
49
- set positionBaseElement(_: HTMLElement | undefined);
50
- get positionBaseElement(): HTMLElement | undefined;
51
- /**accessor*/
52
- set touchOptimized(_: boolean | undefined);
53
- get touchOptimized(): boolean | undefined;
111
+ z_$$bindings?: Bindings;
54
112
  }
55
- export type PopupProps = typeof __propDef.props;
56
- export type PopupEvents = typeof __propDef.events;
57
- export type PopupSlots = typeof __propDef.slots;
58
- import { SvelteComponent } from "svelte";
59
- declare const __propDef: {
60
- props: {
61
- [x: string]: any;
62
- anchor: HTMLElement | undefined;
63
- class?: string | undefined;
64
- position?: import("../../typedefs").PopupPosition | undefined;
65
- open?: import("svelte/store").Writable<boolean> | undefined;
66
- showBackdrop?: boolean | undefined;
67
- content?: HTMLElement | undefined;
68
- positionBaseElement?: HTMLElement | undefined;
69
- touchOptimized?: boolean | undefined;
70
- };
71
- events: {
72
- opening: CustomEvent<any>;
73
- open: CustomEvent<any>;
74
- ok: CustomEvent<any>;
75
- cancel: CustomEvent<any>;
76
- closing: CustomEvent<any>;
77
- close: CustomEvent<any>;
78
- } & {
79
- [evt: string]: CustomEvent<any>;
80
- };
81
- slots: {
82
- 'extra-content': {
83
- slot: string;
84
- };
85
- default: {};
86
- };
87
- exports?: undefined;
88
- bindings?: undefined;
89
- };
90
- export {};
@@ -67,7 +67,7 @@ class Group {
67
67
  * @todo Check for added elements probably with `MutationObserver`.
68
68
  */
69
69
  constructor(parent, { clickToSelect = true } = {}) {
70
- parent.dispatchEvent(new CustomEvent('initializing'));
70
+ parent.dispatchEvent(new CustomEvent('Initializing'));
71
71
 
72
72
  this.parent = parent;
73
73
  this.role = /** @type {string} */ (parent.getAttribute('role'));
@@ -148,7 +148,7 @@ class Group {
148
148
  this.onKeyDown(event);
149
149
  });
150
150
 
151
- parent.dispatchEvent(new CustomEvent('initialized'));
151
+ parent.dispatchEvent(new CustomEvent('Initialized'));
152
152
  }
153
153
 
154
154
  /**
@@ -252,11 +252,11 @@ class Group {
252
252
  if (multiSelect && isTarget && (selectByClick || selectByKeydown)) {
253
253
  element.setAttribute(this.childSelectedAttr, String(!isSelected));
254
254
  element.dispatchEvent(
255
- new CustomEvent('change', { detail: { [this.childSelectedProp]: !isSelected } }),
255
+ new CustomEvent('Change', { detail: { [this.childSelectedProp]: !isSelected } }),
256
256
  );
257
257
 
258
258
  if (!isSelected) {
259
- element.dispatchEvent(new CustomEvent('select'));
259
+ element.dispatchEvent(new CustomEvent('Select'));
260
260
  }
261
261
  }
262
262
 
@@ -267,11 +267,11 @@ class Group {
267
267
  ) {
268
268
  element.setAttribute(this.childSelectedAttr, String(isTarget));
269
269
  element.dispatchEvent(
270
- new CustomEvent('change', { detail: { [this.childSelectedProp]: isTarget } }),
270
+ new CustomEvent('Change', { detail: { [this.childSelectedProp]: isTarget } }),
271
271
  );
272
272
 
273
273
  if (isTarget) {
274
- element.dispatchEvent(new CustomEvent('select'));
274
+ element.dispatchEvent(new CustomEvent('Select'));
275
275
  }
276
276
  }
277
277
 
@@ -282,14 +282,14 @@ class Group {
282
282
 
283
283
  if (isTarget) {
284
284
  element.focus();
285
- element.dispatchEvent(new CustomEvent('focus'));
285
+ element.dispatchEvent(new CustomEvent('Focus'));
286
286
  }
287
287
  });
288
288
  } else {
289
289
  element.classList.toggle('focused', isTarget);
290
290
 
291
291
  if (isTarget) {
292
- element.dispatchEvent(new CustomEvent('focus'));
292
+ element.dispatchEvent(new CustomEvent('Focus'));
293
293
  }
294
294
  }
295
295
 
@@ -326,7 +326,7 @@ class Group {
326
326
  });
327
327
 
328
328
  this.parent.dispatchEvent(
329
- new CustomEvent('change', {
329
+ new CustomEvent('Change', {
330
330
  detail: {
331
331
  value: /** @type {any} */ (newTarget).value,
332
332
  name: /** @type {any} */ (newTarget).name,
@@ -481,14 +481,14 @@ class Group {
481
481
 
482
482
  const hidden = !_terms.every((term) => searchValue.includes(term));
483
483
 
484
- member.dispatchEvent(new CustomEvent('toggle', { detail: { hidden } }));
484
+ member.dispatchEvent(new CustomEvent('Toggle', { detail: { hidden } }));
485
485
 
486
486
  return hidden;
487
487
  })
488
488
  .filter((hidden) => !hidden).length;
489
489
 
490
490
  this.parent.dispatchEvent(
491
- new CustomEvent('filter', { detail: { matched, total: this.allMembers.length } }),
491
+ new CustomEvent('Filter', { detail: { matched, total: this.allMembers.length } }),
492
492
  );
493
493
  }
494
494
  }
@@ -499,7 +499,6 @@ class Group {
499
499
  * @param {object} [params] - Action params.
500
500
  * @returns {import('svelte/action').ActionReturn} Action.
501
501
  */
502
- // eslint-disable-next-line no-unused-vars
503
502
  export const activateGroup = (parent, params) => {
504
503
  const group = new Group(parent, params);
505
504