@sveltia/ui 0.16.0 → 0.17.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 (156) hide show
  1. package/package/components/alert/alert.svelte +22 -7
  2. package/package/components/alert/alert.svelte.d.ts +32 -28
  3. package/package/components/button/button-group.svelte +16 -6
  4. package/package/components/button/button-group.svelte.d.ts +23 -23
  5. package/package/components/button/button.svelte +41 -136
  6. package/package/components/button/button.svelte.d.ts +5 -146
  7. package/package/components/button/select-button-group.svelte +31 -37
  8. package/package/components/button/select-button-group.svelte.d.ts +76 -34
  9. package/package/components/button/select-button.svelte +19 -62
  10. package/package/components/button/select-button.svelte.d.ts +17 -73
  11. package/package/components/button/split-button.svelte +37 -47
  12. package/package/components/button/split-button.svelte.d.ts +40 -47
  13. package/package/components/calendar/calendar.svelte +80 -55
  14. package/package/components/calendar/calendar.svelte.d.ts +13 -10
  15. package/package/components/checkbox/checkbox-group.svelte +23 -20
  16. package/package/components/checkbox/checkbox-group.svelte.d.ts +49 -27
  17. package/package/components/checkbox/checkbox.svelte +57 -67
  18. package/package/components/checkbox/checkbox.svelte.d.ts +67 -55
  19. package/package/components/dialog/alert-dialog.svelte +9 -36
  20. package/package/components/dialog/alert-dialog.svelte.d.ts +5 -44
  21. package/package/components/dialog/confirmation-dialog.svelte +9 -41
  22. package/package/components/dialog/confirmation-dialog.svelte.d.ts +5 -46
  23. package/package/components/dialog/dialog.svelte +60 -105
  24. package/package/components/dialog/dialog.svelte.d.ts +5 -102
  25. package/package/components/dialog/prompt-dialog.svelte +32 -61
  26. package/package/components/dialog/prompt-dialog.svelte.d.ts +38 -62
  27. package/package/components/disclosure/disclosure.svelte +39 -34
  28. package/package/components/disclosure/disclosure.svelte.d.ts +74 -56
  29. package/package/components/divider/divider.svelte +18 -14
  30. package/package/components/divider/divider.svelte.d.ts +31 -10
  31. package/package/components/divider/spacer.svelte +13 -8
  32. package/package/components/divider/spacer.svelte.d.ts +20 -9
  33. package/package/components/drawer/drawer.svelte +63 -76
  34. package/package/components/drawer/drawer.svelte.d.ts +102 -84
  35. package/package/components/grid/grid-body.svelte +15 -10
  36. package/package/components/grid/grid-body.svelte.d.ts +30 -24
  37. package/package/components/grid/grid-cell.svelte +16 -6
  38. package/package/components/grid/grid-cell.svelte.d.ts +23 -23
  39. package/package/components/grid/grid-col-header.svelte +16 -6
  40. package/package/components/grid/grid-col-header.svelte.d.ts +23 -23
  41. package/package/components/grid/grid-foot.svelte +16 -6
  42. package/package/components/grid/grid-foot.svelte.d.ts +23 -23
  43. package/package/components/grid/grid-head.svelte +16 -6
  44. package/package/components/grid/grid-head.svelte.d.ts +23 -23
  45. package/package/components/grid/grid-row-header.svelte +16 -6
  46. package/package/components/grid/grid-row-header.svelte.d.ts +23 -23
  47. package/package/components/grid/grid-row.svelte +19 -23
  48. package/package/components/grid/grid-row.svelte.d.ts +48 -38
  49. package/package/components/grid/grid.svelte +28 -25
  50. package/package/components/grid/grid.svelte.d.ts +56 -32
  51. package/package/components/icon/icon.svelte +14 -9
  52. package/package/components/icon/icon.svelte.d.ts +20 -9
  53. package/package/components/listbox/listbox.svelte +46 -52
  54. package/package/components/listbox/listbox.svelte.d.ts +102 -40
  55. package/package/components/listbox/option-group.svelte +23 -19
  56. package/package/components/listbox/option-group.svelte.d.ts +49 -27
  57. package/package/components/listbox/option.svelte +44 -57
  58. package/package/components/listbox/option.svelte.d.ts +54 -84
  59. package/package/components/menu/menu-button.svelte +42 -63
  60. package/package/components/menu/menu-button.svelte.d.ts +18 -72
  61. package/package/components/menu/menu-item-checkbox.svelte +29 -41
  62. package/package/components/menu/menu-item-checkbox.svelte.d.ts +5 -44
  63. package/package/components/menu/menu-item-group.svelte +22 -19
  64. package/package/components/menu/menu-item-group.svelte.d.ts +41 -27
  65. package/package/components/menu/menu-item-radio.svelte +29 -41
  66. package/package/components/menu/menu-item-radio.svelte.d.ts +5 -44
  67. package/package/components/menu/menu-item.svelte +66 -75
  68. package/package/components/menu/menu-item.svelte.d.ts +5 -80
  69. package/package/components/menu/menu.svelte +27 -22
  70. package/package/components/menu/menu.svelte.d.ts +50 -30
  71. package/package/components/radio/radio-group.svelte +38 -42
  72. package/package/components/radio/radio-group.svelte.d.ts +85 -35
  73. package/package/components/radio/radio.svelte +45 -48
  74. package/package/components/radio/radio.svelte.d.ts +96 -42
  75. package/package/components/select/combobox.svelte +76 -101
  76. package/package/components/select/combobox.svelte.d.ts +5 -56
  77. package/package/components/select/select-tags.svelte +48 -59
  78. package/package/components/select/select-tags.svelte.d.ts +109 -28
  79. package/package/components/select/select.svelte +18 -37
  80. package/package/components/select/select.svelte.d.ts +5 -40
  81. package/package/components/slider/slider.svelte +71 -68
  82. package/package/components/slider/slider.svelte.d.ts +142 -31
  83. package/package/components/switch/switch.svelte +36 -46
  84. package/package/components/switch/switch.svelte.d.ts +83 -37
  85. package/package/components/table/table-body.svelte +15 -11
  86. package/package/components/table/table-body.svelte.d.ts +30 -24
  87. package/package/components/table/table-cell.svelte +16 -6
  88. package/package/components/table/table-cell.svelte.d.ts +23 -23
  89. package/package/components/table/table-col-header.svelte +16 -6
  90. package/package/components/table/table-col-header.svelte.d.ts +23 -23
  91. package/package/components/table/table-foot.svelte +16 -6
  92. package/package/components/table/table-foot.svelte.d.ts +23 -23
  93. package/package/components/table/table-head.svelte +16 -6
  94. package/package/components/table/table-head.svelte.d.ts +23 -23
  95. package/package/components/table/table-row-header.svelte +16 -6
  96. package/package/components/table/table-row-header.svelte.d.ts +23 -23
  97. package/package/components/table/table-row.svelte +16 -6
  98. package/package/components/table/table-row.svelte.d.ts +23 -23
  99. package/package/components/table/table.svelte +16 -6
  100. package/package/components/table/table.svelte.d.ts +23 -23
  101. package/package/components/tabs/tab-box.svelte +16 -9
  102. package/package/components/tabs/tab-box.svelte.d.ts +32 -22
  103. package/package/components/tabs/tab-list.svelte +36 -35
  104. package/package/components/tabs/tab-list.svelte.d.ts +65 -33
  105. package/package/components/tabs/tab-panel.svelte +16 -6
  106. package/package/components/tabs/tab-panel.svelte.d.ts +23 -23
  107. package/package/components/tabs/tab-panels.svelte +16 -6
  108. package/package/components/tabs/tab-panels.svelte.d.ts +23 -21
  109. package/package/components/tabs/tab.svelte +28 -25
  110. package/package/components/tabs/tab.svelte.d.ts +17 -63
  111. package/package/components/text-editor/lexical-root.svelte +38 -32
  112. package/package/components/text-editor/lexical-root.svelte.d.ts +74 -13
  113. package/package/components/text-editor/text-editor.svelte +63 -79
  114. package/package/components/text-editor/text-editor.svelte.d.ts +97 -20
  115. package/package/components/text-editor/toolbar/editor-toolbar.svelte +41 -24
  116. package/package/components/text-editor/toolbar/editor-toolbar.svelte.d.ts +32 -7
  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 +13 -6
  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 +4 -8
  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 +13 -6
  123. package/package/components/text-field/number-input.svelte +63 -81
  124. package/package/components/text-field/number-input.svelte.d.ts +48 -55
  125. package/package/components/text-field/password-input.svelte +38 -57
  126. package/package/components/text-field/password-input.svelte.d.ts +16 -45
  127. package/package/components/text-field/search-bar.svelte +45 -62
  128. package/package/components/text-field/search-bar.svelte.d.ts +25 -66
  129. package/package/components/text-field/text-area.svelte +38 -54
  130. package/package/components/text-field/text-area.svelte.d.ts +100 -35
  131. package/package/components/text-field/text-input.svelte +28 -86
  132. package/package/components/text-field/text-input.svelte.d.ts +4 -78
  133. package/package/components/toast/toast.svelte +36 -30
  134. package/package/components/toast/toast.svelte.d.ts +50 -28
  135. package/package/components/toolbar/toolbar.svelte +25 -25
  136. package/package/components/toolbar/toolbar.svelte.d.ts +57 -29
  137. package/package/components/util/app-shell.svelte +22 -10
  138. package/package/components/util/app-shell.svelte.d.ts +25 -29
  139. package/package/components/util/group.svelte +20 -15
  140. package/package/components/util/group.svelte.d.ts +40 -26
  141. package/package/components/util/modal.svelte +89 -105
  142. package/package/components/util/modal.svelte.d.ts +6 -71
  143. package/package/components/util/placeholder.svelte +21 -0
  144. package/package/components/util/{portal.svelte.d.ts → placeholder.svelte.d.ts} +17 -25
  145. package/package/components/util/popup.svelte +65 -62
  146. package/package/components/util/popup.svelte.d.ts +89 -77
  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 +12 -19
  152. package/package/components/util/portal.svelte +0 -36
  153. /package/package/services/{events.d.ts → events.svelte.d.ts} +0 -0
  154. /package/package/services/{events.js → events.svelte.js} +0 -0
  155. /package/package/services/{group.d.ts → group.svelte.d.ts} +0 -0
  156. /package/package/services/{popup.d.ts → popup.svelte.d.ts} +0 -0
@@ -1,114 +1,17 @@
1
1
  export default Dialog;
2
- type Dialog = SvelteComponent<$$__sveltets_2_PropsWithChildren<{
3
- [x: string]: any;
4
- title: string;
5
- class?: string | undefined;
6
- size?: "small" | "medium" | "large" | "x-large" | undefined;
7
- role?: "dialog" | "alertdialog" | undefined;
8
- open?: boolean | undefined;
9
- lightDismiss?: boolean | undefined;
10
- showClose?: boolean | undefined;
11
- showOk?: boolean | undefined;
12
- okLabel?: string | undefined;
13
- okDisabled?: boolean | undefined;
14
- showCancel?: boolean | undefined;
15
- cancelLabel?: string | undefined;
16
- cancelDisabled?: boolean | undefined;
17
- }, {
18
- 'extra-content': {
19
- slot: string;
20
- };
21
- header: {};
22
- 'header-extra': {};
23
- 'close-icon': {
24
- slot: string;
25
- };
26
- default: {};
27
- footer: {};
28
- 'footer-extra': {};
29
- }>, {
30
- opening: CustomEvent<any>;
31
- open: CustomEvent<any>;
32
- ok: CustomEvent<any>;
33
- cancel: CustomEvent<any>;
34
- closing: CustomEvent<any>;
35
- close: CustomEvent<any>;
36
- } & {
2
+ type Dialog = SvelteComponent<ModalProps & DialogProps & Record<string, any>, {
37
3
  [evt: string]: CustomEvent<any>;
38
- }, {
39
- 'extra-content': {
40
- slot: string;
41
- };
42
- header: {};
43
- 'header-extra': {};
44
- 'close-icon': {
45
- slot: string;
46
- };
47
- default: {};
48
- footer: {};
49
- 'footer-extra': {};
50
- }> & {
51
- $$bindings?: string | undefined;
4
+ }, {}> & {
5
+ $$bindings?: "value" | "open" | undefined;
52
6
  };
53
7
  /**
54
8
  * A feedback dialog widget based on the HTML `<dialog>` element.
55
9
  * @see https://w3c.github.io/aria/#dialog
56
10
  * @see https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/
57
11
  */
58
- declare const Dialog: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{
59
- [x: string]: any;
60
- title: string;
61
- class?: string | undefined;
62
- size?: "small" | "medium" | "large" | "x-large" | undefined;
63
- role?: "dialog" | "alertdialog" | undefined;
64
- open?: boolean | undefined;
65
- lightDismiss?: boolean | undefined;
66
- showClose?: boolean | undefined;
67
- showOk?: boolean | undefined;
68
- okLabel?: string | undefined;
69
- okDisabled?: boolean | undefined;
70
- showCancel?: boolean | undefined;
71
- cancelLabel?: string | undefined;
72
- cancelDisabled?: boolean | undefined;
73
- }, {
74
- 'extra-content': {
75
- slot: string;
76
- };
77
- header: {};
78
- 'header-extra': {};
79
- 'close-icon': {
80
- slot: string;
81
- };
82
- default: {};
83
- footer: {};
84
- 'footer-extra': {};
85
- }>, {
86
- opening: CustomEvent<any>;
87
- open: CustomEvent<any>;
88
- ok: CustomEvent<any>;
89
- cancel: CustomEvent<any>;
90
- closing: CustomEvent<any>;
91
- close: CustomEvent<any>;
92
- } & {
12
+ declare const Dialog: $$__sveltets_2_IsomorphicComponent<import("../../typedefs").ModalProps & import("../../typedefs").DialogProps & Record<string, any>, {
93
13
  [evt: string]: CustomEvent<any>;
94
- }, {
95
- 'extra-content': {
96
- slot: string;
97
- };
98
- header: {};
99
- 'header-extra': {};
100
- 'close-icon': {
101
- slot: string;
102
- };
103
- default: {};
104
- footer: {};
105
- 'footer-extra': {};
106
- }, {}, string>;
107
- type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends {
108
- default: any;
109
- } ? Props extends Record<string, never> ? any : {
110
- children?: any;
111
- } : {});
14
+ }, {}, {}, "value" | "open">;
112
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> {
113
16
  new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
114
17
  $$bindings?: Bindings;
@@ -7,82 +7,53 @@
7
7
  @see https://developer.mozilla.org/en-US/docs/Web/API/Window/prompt
8
8
  -->
9
9
  <script>
10
- import Dialog from './dialog.svelte';
11
10
  import TextInput from '../text-field/text-input.svelte';
11
+ import Dialog from './dialog.svelte';
12
12
 
13
13
  /**
14
- * The `class` attribute on the `<dialog>` element.
15
- * @type {string}
16
- */
17
- let className = '';
18
- export { className as class };
19
- /**
20
- * Whether to open the dialog.
21
- * @type {boolean}
22
- */
23
- export let open = false;
24
- /**
25
- * Text label displayed on the header. Required.
26
- * @type {string}
27
- */
28
- export let title;
29
- /**
30
- * Text label displayed on the OK button.
31
- * @type {string}
14
+ * @typedef {object} Props
15
+ * @property {string} [value] - Value entered on the textbox.
16
+ * @property {object} [textboxAttrs] - Extra attributes for the `<TextInput>`.
17
+ * @property {import('svelte').Snippet} [children] - Primary slot content.
18
+ * @property {import('svelte').Snippet} [input] - Input slot content.
32
19
  */
33
- export let okLabel = '';
34
- /**
35
- * Whether to disable the OK button.
36
- * @type {boolean}
37
- */
38
- export let okDisabled = false;
39
- /**
40
- * Text label displayed on the Cancel button.
41
- * @type {string}
42
- */
43
- export let cancelLabel = '';
44
- /**
45
- * Value entered on the textbox.
46
- * @type {string}
47
- */
48
- export let value = '';
20
+
49
21
  /**
50
- * Extra attributes for the `<TextInput>`.
51
- * @type {object}
22
+ * @type {import('../../typedefs').ModalProps & import('../../typedefs').DialogProps &
23
+ * import('../../typedefs').CommonEventHandlers & import('../../typedefs').InputEventHandlers &
24
+ * Props & Record<string, any>}
52
25
  */
53
- export let textboxAttrs = {};
26
+ let {
27
+ /* eslint-disable prefer-const */
28
+ open = $bindable(false),
29
+ value = $bindable(''),
30
+ textboxAttrs = {},
31
+ children,
32
+ input,
33
+ onkeydown,
34
+ onkeyup,
35
+ onkeypress,
36
+ oninput,
37
+ ...restProps
38
+ /* eslint-enable prefer-const */
39
+ } = $props();
54
40
  </script>
55
41
 
56
- <Dialog
57
- role="alertdialog"
58
- class={className}
59
- bind:open
60
- {title}
61
- {okLabel}
62
- {okDisabled}
63
- {cancelLabel}
64
- {...$$restProps}
65
- on:opening
66
- on:open
67
- on:ok
68
- on:cancel
69
- on:closing
70
- on:close
71
- >
72
- <slot />
42
+ <Dialog {...restProps} bind:open role="alertdialog">
43
+ {@render children?.()}
73
44
  <div class="input-outer">
74
- {#if $$slots.input}
75
- <slot name="input" />
45
+ {#if input}
46
+ {@render input()}
76
47
  {:else}
77
48
  <TextInput
78
49
  bind:value
79
50
  flex
80
51
  autofocus
81
52
  {...textboxAttrs}
82
- on:input
83
- on:keydown
84
- on:keyup
85
- on:keypress
53
+ {onkeydown}
54
+ {onkeyup}
55
+ {onkeypress}
56
+ {oninput}
86
57
  />
87
58
  {/if}
88
59
  </div>
@@ -1,35 +1,8 @@
1
1
  export default PromptDialog;
2
- type PromptDialog = SvelteComponent<$$__sveltets_2_PropsWithChildren<{
3
- [x: string]: any;
4
- title: string;
5
- class?: string | undefined;
6
- value?: string | undefined;
7
- open?: boolean | undefined;
8
- okLabel?: string | undefined;
9
- okDisabled?: boolean | undefined;
10
- cancelLabel?: string | undefined;
11
- textboxAttrs?: object | undefined;
12
- }, {
13
- default: {};
14
- input: {};
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
- input: Event;
23
- keydown: KeyboardEvent;
24
- keyup: KeyboardEvent;
25
- keypress: KeyboardEvent;
26
- } & {
2
+ type PromptDialog = SvelteComponent<ModalProps & DialogProps & KeyboardEventHandlers & MouseEventHandlers & FocusEventHandlers & DragEventHandlers & InputEventHandlers & Props & Record<string, any>, {
27
3
  [evt: string]: CustomEvent<any>;
28
- }, {
29
- default: {};
30
- input: {};
31
- }> & {
32
- $$bindings?: string | undefined;
4
+ }, {}> & {
5
+ $$bindings?: "value" | "open" | undefined;
33
6
  };
34
7
  /**
35
8
  * A modal prompt dialog. It shows the OK and Cancel buttons as well as a textbox, just like
@@ -38,41 +11,44 @@ type PromptDialog = SvelteComponent<$$__sveltets_2_PropsWithChildren<{
38
11
  * @see https://www.w3.org/WAI/ARIA/apg/patterns/alertdialog/
39
12
  * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/prompt
40
13
  */
41
- declare const PromptDialog: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{
42
- [x: string]: any;
43
- title: string;
44
- class?: string | undefined;
14
+ declare const PromptDialog: $$__sveltets_2_IsomorphicComponent<import("../../typedefs").ModalProps & import("../../typedefs").DialogProps & import("../../typedefs").KeyboardEventHandlers & import("../../typedefs").MouseEventHandlers & import("../../typedefs").FocusEventHandlers & import("../../typedefs").DragEventHandlers & import("../../typedefs").InputEventHandlers & {
15
+ /**
16
+ * - Value entered on the textbox.
17
+ */
45
18
  value?: string | undefined;
46
- open?: boolean | undefined;
47
- okLabel?: string | undefined;
48
- okDisabled?: boolean | undefined;
49
- cancelLabel?: string | undefined;
19
+ /**
20
+ * - Extra attributes for the `<TextInput>`.
21
+ */
50
22
  textboxAttrs?: object | undefined;
51
- }, {
52
- default: {};
53
- input: {};
54
- }>, {
55
- opening: CustomEvent<any>;
56
- open: CustomEvent<any>;
57
- ok: CustomEvent<any>;
58
- cancel: CustomEvent<any>;
59
- closing: CustomEvent<any>;
60
- close: CustomEvent<any>;
61
- input: Event;
62
- keydown: KeyboardEvent;
63
- keyup: KeyboardEvent;
64
- keypress: KeyboardEvent;
65
- } & {
23
+ /**
24
+ * - Primary slot content.
25
+ */
26
+ children?: import("svelte").Snippet<[]> | undefined;
27
+ /**
28
+ * - Input slot content.
29
+ */
30
+ input?: import("svelte").Snippet<[]> | undefined;
31
+ } & Record<string, any>, {
66
32
  [evt: string]: CustomEvent<any>;
67
- }, {
68
- default: {};
69
- input: {};
70
- }, {}, string>;
71
- type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends {
72
- default: any;
73
- } ? Props extends Record<string, never> ? any : {
74
- children?: any;
75
- } : {});
33
+ }, {}, {}, "value" | "open">;
34
+ type Props = {
35
+ /**
36
+ * - Value entered on the textbox.
37
+ */
38
+ value?: string | undefined;
39
+ /**
40
+ * - Extra attributes for the `<TextInput>`.
41
+ */
42
+ textboxAttrs?: object | undefined;
43
+ /**
44
+ * - Primary slot content.
45
+ */
46
+ children?: import("svelte").Snippet<[]> | undefined;
47
+ /**
48
+ * - Input slot content.
49
+ */
50
+ input?: import("svelte").Snippet<[]> | undefined;
51
+ };
76
52
  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> {
77
53
  new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
78
54
  $$bindings?: Bindings;
@@ -4,55 +4,56 @@
4
4
  @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details
5
5
  @see https://www.w3.org/WAI/ARIA/apg/patterns/disclosure/
6
6
  -->
7
- <svelte:options accessors={true} />
8
-
9
7
  <script>
10
8
  import { generateElementId } from '@sveltia/utils/element';
11
- import { createEventDispatcher } from 'svelte';
12
9
  import Button from '../button/button.svelte';
13
10
  import Icon from '../icon/icon.svelte';
14
11
 
15
12
  /**
16
- * The `class` attribute on the wrapper element.
17
- * @type {string}
18
- */
19
- let className = '';
20
- export { className as class };
21
- /**
22
- * Whether to hide the widget. An alias of the `aria-hidden` attribute.
23
- * @type {boolean | undefined}
24
- */
25
- export let hidden = undefined;
26
- /**
27
- * Whether to disable the widget. An alias of the `aria-disabled` attribute.
28
- * @type {boolean}
29
- */
30
- export let disabled = false;
31
- /**
32
- * Whether to show the content. An alias of the `aria-expanded` attribute.
33
- * @type {boolean}
13
+ * @typedef {object} Props
14
+ * @property {string} [class] - The `class` attribute on the wrapper element.
15
+ * @property {boolean} [hidden] - Whether to hide the widget. An alias of the `aria-hidden`
16
+ * attribute.
17
+ * @property {boolean} [disabled] - Whether to disable the widget. An alias of the `aria-disabled`
18
+ * attribute.
19
+ * @property {boolean} [expanded] - Whether to show the content. An alias of the `aria-expanded`
20
+ * attribute.
21
+ * @property {string} [label] - Text label displayed next to the expander.
22
+ * @property {import('svelte').Snippet} [children] - Primary slot content.
23
+ * @property {import('svelte').Snippet} [chevronIcon] - Chevron slot content.
24
+ * @property {(event: CustomEvent) => void} [onChange] - Custom `Change` event handler.
34
25
  */
35
- export let expanded = false;
26
+
36
27
  /**
37
- * Text label displayed next to the expander.
38
- * @type {string}
28
+ * @type {Props & Record<string, any>}
39
29
  */
40
- export let label = '';
30
+ let {
31
+ /* eslint-disable prefer-const */
32
+ expanded = $bindable(false),
33
+ class: className,
34
+ hidden = false,
35
+ disabled = false,
36
+ label = '',
37
+ children,
38
+ chevronIcon,
39
+ onChange,
40
+ ...restProps
41
+ /* eslint-enable prefer-const */
42
+ } = $props();
41
43
 
42
- const dispatch = createEventDispatcher();
43
44
  const id = generateElementId('disclosure');
44
45
  </script>
45
46
 
46
47
  <div
48
+ {...restProps}
47
49
  role="group"
48
50
  {id}
49
51
  class="sui disclosure {className}"
50
- hidden={hidden || undefined}
52
+ {hidden}
51
53
  aria-hidden={hidden}
52
54
  aria-disabled={disabled}
53
55
  aria-labelledby="{id}-header"
54
56
  aria-roledescription="disclosure"
55
- {...$$restProps}
56
57
  >
57
58
  <div role="none" class="inner" inert={disabled}>
58
59
  <Button
@@ -61,18 +62,22 @@
61
62
  {disabled}
62
63
  aria-controls="{id}-content"
63
64
  aria-expanded={expanded}
64
- on:click={() => {
65
+ onclick={() => {
65
66
  expanded = !expanded;
66
- dispatch('change', { expanded });
67
+ onChange?.(new CustomEvent('change', { detail: { expanded } }));
67
68
  }}
68
69
  >
69
- <slot name="chevron-icon" slot="start-icon">
70
- <Icon name="expand_more" />
71
- </slot>
70
+ {#snippet startIcon()}
71
+ {#if chevronIcon}
72
+ {@render chevronIcon()}
73
+ {:else}
74
+ <Icon name="expand_more" />
75
+ {/if}
76
+ {/snippet}
72
77
  {label}
73
78
  </Button>
74
79
  <div class="content" id="{id}-content" hidden={!expanded}>
75
- <slot />
80
+ {@render children?.()}
76
81
  </div>
77
82
  </div>
78
83
  </div>
@@ -1,72 +1,90 @@
1
1
  export default Disclosure;
2
- type Disclosure = SvelteComponent<$$__sveltets_2_PropsWithChildren<{
3
- [x: string]: any;
4
- class?: string | undefined;
5
- disabled?: boolean | undefined;
6
- label?: string | undefined;
7
- hidden?: boolean | undefined;
8
- expanded?: boolean | undefined;
9
- }, {
10
- 'chevron-icon': {
11
- slot: string;
12
- };
13
- default: {};
14
- }>, {
15
- change: CustomEvent<any>;
16
- } & {
2
+ type Disclosure = SvelteComponent<Props & Record<string, any>, {
17
3
  [evt: string]: CustomEvent<any>;
18
- }, {
19
- 'chevron-icon': {
20
- slot: string;
21
- };
22
- default: {};
23
- }> & {
24
- $$bindings?: string | undefined;
25
- } & {
26
- class: string;
27
- hidden: boolean | undefined;
28
- disabled: boolean;
29
- expanded: boolean;
30
- label: string;
4
+ }, {}> & {
5
+ $$bindings?: "expanded" | undefined;
31
6
  };
32
7
  /**
33
8
  * A disclosure (expander) widget. The equivalent of the HTML `<details>` element.
34
9
  * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details
35
10
  * @see https://www.w3.org/WAI/ARIA/apg/patterns/disclosure/
36
11
  */
37
- declare const Disclosure: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{
38
- [x: string]: any;
12
+ declare const Disclosure: $$__sveltets_2_IsomorphicComponent<{
13
+ /**
14
+ * - The `class` attribute on the wrapper element.
15
+ */
39
16
  class?: string | undefined;
17
+ /**
18
+ * - Whether to hide the widget. An alias of the `aria-hidden`
19
+ * attribute.
20
+ */
21
+ hidden?: boolean | undefined;
22
+ /**
23
+ * - Whether to disable the widget. An alias of the `aria-disabled`
24
+ * attribute.
25
+ */
40
26
  disabled?: boolean | undefined;
27
+ /**
28
+ * - Whether to show the content. An alias of the `aria-expanded`
29
+ * attribute.
30
+ */
31
+ expanded?: boolean | undefined;
32
+ /**
33
+ * - Text label displayed next to the expander.
34
+ */
41
35
  label?: string | undefined;
36
+ /**
37
+ * - Primary slot content.
38
+ */
39
+ children?: import("svelte").Snippet<[]> | undefined;
40
+ /**
41
+ * - Chevron slot content.
42
+ */
43
+ chevronIcon?: import("svelte").Snippet<[]> | undefined;
44
+ /**
45
+ * - Custom `Change` event handler.
46
+ */
47
+ onChange?: ((event: CustomEvent) => void) | undefined;
48
+ } & Record<string, any>, {
49
+ [evt: string]: CustomEvent<any>;
50
+ }, {}, {}, "expanded">;
51
+ type Props = {
52
+ /**
53
+ * - The `class` attribute on the wrapper element.
54
+ */
55
+ class?: string | undefined;
56
+ /**
57
+ * - Whether to hide the widget. An alias of the `aria-hidden`
58
+ * attribute.
59
+ */
42
60
  hidden?: boolean | undefined;
61
+ /**
62
+ * - Whether to disable the widget. An alias of the `aria-disabled`
63
+ * attribute.
64
+ */
65
+ disabled?: boolean | undefined;
66
+ /**
67
+ * - Whether to show the content. An alias of the `aria-expanded`
68
+ * attribute.
69
+ */
43
70
  expanded?: boolean | undefined;
44
- }, {
45
- 'chevron-icon': {
46
- slot: string;
47
- };
48
- default: {};
49
- }>, {
50
- change: CustomEvent<any>;
51
- } & {
52
- [evt: string]: CustomEvent<any>;
53
- }, {
54
- 'chevron-icon': {
55
- slot: string;
56
- };
57
- default: {};
58
- }, {
59
- class: string;
60
- hidden: boolean | undefined;
61
- disabled: boolean;
62
- expanded: boolean;
63
- label: string;
64
- }, string>;
65
- type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends {
66
- default: any;
67
- } ? Props extends Record<string, never> ? any : {
68
- children?: any;
69
- } : {});
71
+ /**
72
+ * - Text label displayed next to the expander.
73
+ */
74
+ label?: string | undefined;
75
+ /**
76
+ * - Primary slot content.
77
+ */
78
+ children?: import("svelte").Snippet<[]> | undefined;
79
+ /**
80
+ * - Chevron slot content.
81
+ */
82
+ chevronIcon?: import("svelte").Snippet<[]> | undefined;
83
+ /**
84
+ * - Custom `Change` event handler.
85
+ */
86
+ onChange?: ((event: CustomEvent) => void) | undefined;
87
+ };
70
88
  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> {
71
89
  new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
72
90
  $$bindings?: Bindings;
@@ -5,30 +5,34 @@
5
5
  -->
6
6
  <script>
7
7
  /**
8
- * CSS class name on the wrapper element.
9
- * @type {string}
8
+ * @typedef {object} Props
9
+ * @property {string} [class] - The `class` attribute on the wrapper element.
10
+ * @property {boolean} [hidden] - Whether to hide the widget. An alias of the `aria-hidden`
11
+ * attribute.
12
+ * @property {'horizontal'|'vertical'} [orientation] - Orientation of the widget. An alias of the
13
+ * `aria-orientation` attribute.
10
14
  */
11
- let className = '';
12
- export { className as class };
13
- /**
14
- * Whether to hide the widget. An alias of the `aria-hidden` attribute.
15
- * @type {boolean | undefined}
16
- */
17
- export let hidden = undefined;
15
+
18
16
  /**
19
- * Orientation of the widget. An alias of the `aria-orientation` attribute.
20
- * @type {'horizontal' | 'vertical'}
17
+ * @type {Props & Record<string, any>}
21
18
  */
22
- export let orientation = 'horizontal';
19
+ let {
20
+ /* eslint-disable prefer-const */
21
+ class: className,
22
+ hidden = false,
23
+ orientation = 'horizontal',
24
+ ...restProps
25
+ /* eslint-enable prefer-const */
26
+ } = $props();
23
27
  </script>
24
28
 
25
29
  <div
30
+ {...restProps}
26
31
  role="separator"
27
32
  class="sui divider {className}"
28
- hidden={hidden || undefined}
33
+ {hidden}
29
34
  aria-hidden={hidden}
30
35
  aria-orientation={orientation}
31
- {...$$restProps}
32
36
  ></div>
33
37
 
34
38
  <style>.divider {