@sveltia/ui 0.16.0 → 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 (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 +26 -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 +25 -22
  70. package/package/components/menu/menu.svelte.d.ts +50 -30
  71. package/package/components/radio/radio-group.svelte +36 -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 +30 -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 +11 -18
  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,50 +1,92 @@
1
1
  export default SelectButtonGroup;
2
- type SelectButtonGroup = SvelteComponent<$$__sveltets_2_PropsWithChildren<{
3
- [x: string]: any;
4
- class?: string | undefined;
5
- disabled?: boolean | undefined;
6
- invalid?: boolean | undefined;
7
- required?: boolean | undefined;
8
- hidden?: boolean | undefined;
9
- readonly?: boolean | undefined;
10
- }, {
11
- default: {};
12
- }>, {
13
- change: CustomEvent<any>;
14
- } & {
2
+ type SelectButtonGroup = SvelteComponent<Props & Record<string, any>, {
15
3
  [evt: string]: CustomEvent<any>;
16
- }, {
17
- default: {};
18
- }> & {
19
- $$bindings?: string | undefined;
4
+ }, {}> & {
5
+ $$bindings?: "" | undefined;
20
6
  };
21
7
  /**
22
8
  * A variant of `<RadioGroup>`, looking like normal buttons.
23
9
  * @see https://w3c.github.io/aria/#radiogroup
24
10
  * @see https://www.w3.org/WAI/ARIA/apg/patterns/radio/
25
11
  */
26
- declare const SelectButtonGroup: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{
27
- [x: string]: any;
12
+ declare const SelectButtonGroup: $$__sveltets_2_IsomorphicComponent<{
13
+ /**
14
+ * - The `class` attribute on the wrapper element.
15
+ */
28
16
  class?: string | undefined;
17
+ /**
18
+ * - Whether to hide the widget.
19
+ */
20
+ hidden?: boolean | undefined;
21
+ /**
22
+ * - Whether to disable the widget. An alias of the `aria-disabled`
23
+ * attribute.
24
+ */
29
25
  disabled?: boolean | undefined;
30
- invalid?: boolean | undefined;
26
+ /**
27
+ * - Whether to make the widget read-only. An alias of the
28
+ * `aria-readonly` attribute.
29
+ */
30
+ readonly?: boolean | undefined;
31
+ /**
32
+ * - Whether to mark the widget required. An alias of the
33
+ * `aria-required` attribute.
34
+ */
31
35
  required?: boolean | undefined;
36
+ /**
37
+ * - Whether to mark the widget invalid. An alias of the
38
+ * `aria-invalid` attribute.
39
+ */
40
+ invalid?: boolean | undefined;
41
+ /**
42
+ * - Primary slot content.
43
+ */
44
+ children?: import("svelte").Snippet<[]> | undefined;
45
+ /**
46
+ * - Custom `Change` event handler.
47
+ */
48
+ onChange?: ((event: CustomEvent) => void) | undefined;
49
+ } & Record<string, any>, {
50
+ [evt: string]: CustomEvent<any>;
51
+ }, {}, {}, "">;
52
+ type Props = {
53
+ /**
54
+ * - The `class` attribute on the wrapper element.
55
+ */
56
+ class?: string | undefined;
57
+ /**
58
+ * - Whether to hide the widget.
59
+ */
32
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 make the widget read-only. An alias of the
68
+ * `aria-readonly` attribute.
69
+ */
33
70
  readonly?: boolean | undefined;
34
- }, {
35
- default: {};
36
- }>, {
37
- change: CustomEvent<any>;
38
- } & {
39
- [evt: string]: CustomEvent<any>;
40
- }, {
41
- default: {};
42
- }, {}, string>;
43
- type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends {
44
- default: any;
45
- } ? Props extends Record<string, never> ? any : {
46
- children?: any;
47
- } : {});
71
+ /**
72
+ * - Whether to mark the widget required. An alias of the
73
+ * `aria-required` attribute.
74
+ */
75
+ required?: boolean | undefined;
76
+ /**
77
+ * - Whether to mark the widget invalid. An alias of the
78
+ * `aria-invalid` attribute.
79
+ */
80
+ invalid?: boolean | undefined;
81
+ /**
82
+ * - Primary slot content.
83
+ */
84
+ children?: import("svelte").Snippet<[]> | undefined;
85
+ /**
86
+ * - Custom `Change` event handler.
87
+ */
88
+ onChange?: ((event: CustomEvent) => void) | undefined;
89
+ };
48
90
  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> {
49
91
  new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
50
92
  $$bindings?: Bindings;
@@ -8,75 +8,32 @@
8
8
  import Button from './button.svelte';
9
9
 
10
10
  /**
11
- * CSS class name on the button.
12
- * @type {string}
11
+ * @typedef {object} Props
12
+ * @property {boolean} [selected] - Whether to select the widget. An alias of the `aria-checked`
13
+ * attribute. Because the UI is a button, we expose `selected` instead of `checked`.
13
14
  */
14
- let className = '';
15
- export { className as class };
16
- /**
17
- * The `value` attribute on the `<button>` element.
18
- * @type {string | undefined}
19
- */
20
- export let value = undefined;
21
- /**
22
- * Whether to select the widget. An alias of the `aria-checked` attribute.
23
- * Because the UI is a button, we expose `selected` instead of `checked`.
24
- * @type {boolean}
25
- */
26
- export let selected = false;
27
- /**
28
- * Whether to hide the widget. An alias of the `aria-hidden` attribute.
29
- * @type {boolean | undefined}
30
- */
31
- export let hidden = undefined;
32
- /**
33
- * Whether to disable the widget. An alias of the `aria-disabled` attribute.
34
- * @type {boolean}
35
- */
36
- export let disabled = false;
37
- /**
38
- * Text label displayed on the button.
39
- * @type {string}
40
- */
41
- export let label = '';
42
- /**
43
- * The style variant of the button.
44
- * @type {'primary' | 'secondary' | 'tertiary' | 'ghost' | 'link' | undefined}
45
- */
46
- export let variant = undefined;
47
- /**
48
- * The size of the button.
49
- * @type {'small' | 'medium' | 'large'}
50
- */
51
- export let size = 'medium';
15
+
52
16
  /**
53
- * Whether to only show an icon on the button and trim the padding.
54
- * @type {boolean}
55
- */
56
- export let iconic = false;
17
+ * @type {import('../../typedefs').ButtonProps & import('../../typedefs').CommonEventHandlers &
18
+ * Props & Record<string, any>}
19
+ */
20
+ let {
21
+ /* eslint-disable prefer-const */
22
+ selected = $bindable(false),
23
+ class: className,
24
+ onChange,
25
+ ...restProps
26
+ /* eslint-enable prefer-const */
27
+ } = $props();
57
28
  </script>
58
29
 
59
30
  <Button
31
+ {...restProps}
60
32
  role="radio"
61
33
  class="sui select-button {className}"
62
- {value}
63
- {hidden}
64
- {disabled}
65
- {label}
66
- {variant}
67
- {size}
68
- {iconic}
69
34
  aria-checked={selected}
70
- {...$$restProps}
71
- on:click
72
- on:dblclick
73
- on:select
74
- on:change
75
- on:change={(event) => {
35
+ onChange={(event) => {
76
36
  selected = event.detail.selected;
37
+ onChange?.(event);
77
38
  }}
78
- >
79
- <slot name="start-icon" slot="start-icon" />
80
- <slot />
81
- <slot name="end-icon" slot="end-icon" />
82
- </Button>
39
+ ></Button>
@@ -1,86 +1,30 @@
1
1
  export default SelectButton;
2
- type SelectButton = SvelteComponent<$$__sveltets_2_PropsWithChildren<{
3
- [x: string]: any;
4
- class?: string | undefined;
5
- disabled?: boolean | undefined;
6
- label?: string | undefined;
7
- size?: "small" | "medium" | "large" | undefined;
8
- value?: string | undefined;
9
- hidden?: boolean | undefined;
10
- variant?: "link" | "primary" | "secondary" | "tertiary" | "ghost" | undefined;
11
- iconic?: boolean | undefined;
12
- selected?: boolean | undefined;
13
- }, {
14
- 'start-icon': {
15
- slot: string;
16
- };
17
- default: {};
18
- 'end-icon': {
19
- slot: string;
20
- };
21
- }>, {
22
- click: MouseEvent;
23
- dblclick: MouseEvent;
24
- select: CustomEvent<any>;
25
- change: CustomEvent<any>;
26
- } & {
2
+ type SelectButton = SvelteComponent<ButtonProps & KeyboardEventHandlers & MouseEventHandlers & FocusEventHandlers & DragEventHandlers & Props & Record<string, any>, {
27
3
  [evt: string]: CustomEvent<any>;
28
- }, {
29
- 'start-icon': {
30
- slot: string;
31
- };
32
- default: {};
33
- 'end-icon': {
34
- slot: string;
35
- };
36
- }> & {
37
- $$bindings?: string | undefined;
4
+ }, {}> & {
5
+ $$bindings?: "selected" | undefined;
38
6
  };
39
7
  /**
40
8
  * A variant of `<Radio>`, looking like a normal button.
41
9
  * @see https://w3c.github.io/aria/#radio
42
10
  * @see https://www.w3.org/WAI/ARIA/apg/patterns/radio/
43
11
  */
44
- declare const SelectButton: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{
45
- [x: string]: any;
46
- class?: string | undefined;
47
- disabled?: boolean | undefined;
48
- label?: string | undefined;
49
- size?: "small" | "medium" | "large" | undefined;
50
- value?: string | undefined;
51
- hidden?: boolean | undefined;
52
- variant?: "primary" | "secondary" | "tertiary" | "ghost" | "link" | undefined;
53
- iconic?: boolean | undefined;
12
+ declare const SelectButton: $$__sveltets_2_IsomorphicComponent<import("../../typedefs").ButtonProps & import("../../typedefs").KeyboardEventHandlers & import("../../typedefs").MouseEventHandlers & import("../../typedefs").FocusEventHandlers & import("../../typedefs").DragEventHandlers & {
13
+ /**
14
+ * - Whether to select the widget. An alias of the `aria-checked`
15
+ * attribute. Because the UI is a button, we expose `selected` instead of `checked`.
16
+ */
54
17
  selected?: boolean | undefined;
55
- }, {
56
- 'start-icon': {
57
- slot: string;
58
- };
59
- default: {};
60
- 'end-icon': {
61
- slot: string;
62
- };
63
- }>, {
64
- click: MouseEvent;
65
- dblclick: MouseEvent;
66
- select: CustomEvent<any>;
67
- change: CustomEvent<any>;
68
- } & {
18
+ } & Record<string, any>, {
69
19
  [evt: string]: CustomEvent<any>;
70
- }, {
71
- 'start-icon': {
72
- slot: string;
73
- };
74
- default: {};
75
- 'end-icon': {
76
- slot: string;
77
- };
78
- }, {}, string>;
79
- type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends {
80
- default: any;
81
- } ? Props extends Record<string, never> ? any : {
82
- children?: any;
83
- } : {});
20
+ }, {}, {}, "selected">;
21
+ type Props = {
22
+ /**
23
+ * - Whether to select the widget. An alias of the `aria-checked`
24
+ * attribute. Because the UI is a button, we expose `selected` instead of `checked`.
25
+ */
26
+ selected?: boolean | undefined;
27
+ };
84
28
  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> {
85
29
  new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
86
30
  $$bindings?: Bindings;
@@ -12,65 +12,49 @@
12
12
  import Button from './button.svelte';
13
13
 
14
14
  /**
15
- * The `class` attribute on the `<button>` element.
16
- * @type {string}
15
+ * @typedef {object} Props
16
+ * @property {import('../../typedefs').PopupPosition} [popupPosition] - Where to show the dropdown
17
+ * menu.
18
+ * @property {boolean} [showPopupBackdrop] - Whether to show the backdrop for the popup.
19
+ * @property {import('svelte').Snippet} [chevronIcon] - Chevron slot content.
20
+ * @property {import('svelte').Snippet} [popup] - Popup slot content.
17
21
  */
18
- let className = '';
19
- export { className as class };
20
- /**
21
- * Whether to hide the widget. An alias of the `aria-hidden` attribute.
22
- * @type {boolean | undefined}
23
- */
24
- export let hidden = undefined;
25
- /**
26
- * Whether to disable the widget. An alias of the `aria-disabled` attribute.
27
- * @type {boolean}
28
- */
29
- export let disabled = false;
30
- /**
31
- * Text label displayed on the button.
32
- * @type {string}
33
- */
34
- export let label = '';
35
- /**
36
- * The style variant of the button.
37
- * @type {'primary' | 'secondary' | 'tertiary' | 'ghost' | undefined}
38
- */
39
- export let variant = undefined;
40
- /**
41
- * The size of the button.
42
- * @type {'small' | 'medium' | 'large' | undefined}
43
- */
44
- export let size = 'medium';
45
- /**
46
- * Where to show the dropdown menu.
47
- * @type {import('../../typedefs').PopupPosition}
48
- */
49
- export let popupPosition = 'bottom-left';
22
+
50
23
  /**
51
- * Whether to show the backdrop for the popup.
52
- * @type {boolean}
24
+ * @type {import('../../typedefs').ButtonProps & import('../../typedefs').CommonEventHandlers &
25
+ * Props & Record<string, any>}
53
26
  */
54
- export let showPopupBackdrop = false;
27
+ let {
28
+ /* eslint-disable prefer-const */
29
+ hidden = false,
30
+ disabled = false,
31
+ label = '',
32
+ variant = undefined,
33
+ size = 'medium',
34
+ popupPosition = 'bottom-left',
35
+ showPopupBackdrop = false,
36
+ chevronIcon,
37
+ popup: _popup,
38
+ ...restProps
39
+ /* eslint-enable prefer-const */
40
+ } = $props();
55
41
 
56
42
  /**
57
43
  * @type {HTMLElement | undefined}
58
44
  */
59
- let wrapper;
45
+ let wrapper = $state();
60
46
  </script>
61
47
 
62
48
  <div
49
+ bind:this={wrapper}
63
50
  role="group"
64
51
  class="sui split-button"
65
- hidden={hidden || undefined}
52
+ {hidden}
66
53
  aria-hidden={hidden}
67
54
  aria-disabled={disabled}
68
55
  aria-label={$_('_sui.split_button.x_options', { values: { name: label } })}
69
- bind:this={wrapper}
70
56
  >
71
- <Button class={className} {hidden} {disabled} {label} {variant} {size} {...$$restProps} on:click>
72
- <slot name="start-icon" slot="start-icon" />
73
- </Button>
57
+ <Button {...restProps} {hidden} {disabled} {label} {variant} {size}></Button>
74
58
  <MenuButton
75
59
  iconic
76
60
  {hidden}
@@ -82,10 +66,16 @@
82
66
  popupPositionBaseElement={wrapper}
83
67
  {showPopupBackdrop}
84
68
  >
85
- <slot name="chevron-icon" slot="end-icon">
86
- <Icon name="arrow_drop_down" class="small-arrow" />
87
- </slot>
88
- <slot name="popup" slot="popup" />
69
+ {#snippet endIcon()}
70
+ {#if chevronIcon}
71
+ {@render chevronIcon()}
72
+ {:else}
73
+ <Icon name="arrow_drop_down" class="small-arrow" />
74
+ {/if}
75
+ {/snippet}
76
+ {#snippet popup()}
77
+ {@render _popup?.()}
78
+ {/snippet}
89
79
  </MenuButton>
90
80
  </div>
91
81
 
@@ -1,30 +1,8 @@
1
1
  export default SplitButton;
2
- type SplitButton = SvelteComponent<{
3
- [x: string]: any;
4
- class?: string | undefined;
5
- disabled?: boolean | undefined;
6
- label?: string | undefined;
7
- size?: "small" | "medium" | "large" | undefined;
8
- hidden?: boolean | undefined;
9
- variant?: "primary" | "secondary" | "tertiary" | "ghost" | undefined;
10
- popupPosition?: PopupPosition | undefined;
11
- showPopupBackdrop?: boolean | undefined;
12
- }, {
13
- click: MouseEvent;
14
- } & {
2
+ type SplitButton = SvelteComponent<ButtonProps & KeyboardEventHandlers & MouseEventHandlers & FocusEventHandlers & DragEventHandlers & Props & Record<string, any>, {
15
3
  [evt: string]: CustomEvent<any>;
16
- }, {
17
- 'start-icon': {
18
- slot: string;
19
- };
20
- 'chevron-icon': {
21
- slot: string;
22
- };
23
- popup: {
24
- slot: string;
25
- };
26
- }> & {
27
- $$bindings?: string | undefined;
4
+ }, {}> & {
5
+ $$bindings?: "" | undefined;
28
6
  };
29
7
  /**
30
8
  * A combination of a normal `<Button>` (default action) and an arrow-only `<MenuButton>` (different
@@ -32,31 +10,46 @@ type SplitButton = SvelteComponent<{
32
10
  * Match Formatting and Keep Text Only options.
33
11
  * @see https://www.google.com/search?q=split+button&tbm=isch
34
12
  */
35
- declare const SplitButton: $$__sveltets_2_IsomorphicComponent<{
36
- [x: string]: any;
37
- class?: string | undefined;
38
- disabled?: boolean | undefined;
39
- label?: string | undefined;
40
- size?: "small" | "medium" | "large" | undefined;
41
- hidden?: boolean | undefined;
42
- variant?: "primary" | "secondary" | "tertiary" | "ghost" | undefined;
13
+ declare const SplitButton: $$__sveltets_2_IsomorphicComponent<import("../../typedefs").ButtonProps & import("../../typedefs").KeyboardEventHandlers & import("../../typedefs").MouseEventHandlers & import("../../typedefs").FocusEventHandlers & import("../../typedefs").DragEventHandlers & {
14
+ /**
15
+ * - Where to show the dropdown
16
+ * menu.
17
+ */
43
18
  popupPosition?: import("../../typedefs").PopupPosition | undefined;
19
+ /**
20
+ * - Whether to show the backdrop for the popup.
21
+ */
44
22
  showPopupBackdrop?: boolean | undefined;
45
- }, {
46
- click: MouseEvent;
47
- } & {
23
+ /**
24
+ * - Chevron slot content.
25
+ */
26
+ chevronIcon?: import("svelte").Snippet<[]> | undefined;
27
+ /**
28
+ * - Popup slot content.
29
+ */
30
+ popup?: import("svelte").Snippet<[]> | undefined;
31
+ } & Record<string, any>, {
48
32
  [evt: string]: CustomEvent<any>;
49
- }, {
50
- 'start-icon': {
51
- slot: string;
52
- };
53
- 'chevron-icon': {
54
- slot: string;
55
- };
56
- popup: {
57
- slot: string;
58
- };
59
- }, {}, string>;
33
+ }, {}, {}, "">;
34
+ type Props = {
35
+ /**
36
+ * - Where to show the dropdown
37
+ * menu.
38
+ */
39
+ popupPosition?: import("../../typedefs").PopupPosition | undefined;
40
+ /**
41
+ * - Whether to show the backdrop for the popup.
42
+ */
43
+ showPopupBackdrop?: boolean | undefined;
44
+ /**
45
+ * - Chevron slot content.
46
+ */
47
+ chevronIcon?: import("svelte").Snippet<[]> | undefined;
48
+ /**
49
+ * - Popup slot content.
50
+ */
51
+ popup?: import("svelte").Snippet<[]> | undefined;
52
+ };
60
53
  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> {
61
54
  new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
62
55
  $$bindings?: Bindings;