@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,48 +1,129 @@
1
1
  export default SelectTags;
2
- type SelectTags = SvelteComponent<{
3
- [x: string]: any;
2
+ type SelectTags = SvelteComponent<Props & Record<string, any>, {
3
+ [evt: string]: CustomEvent<any>;
4
+ }, {}> & {
5
+ $$bindings?: "values" | undefined;
6
+ };
7
+ declare const SelectTags: $$__sveltets_2_IsomorphicComponent<{
8
+ /**
9
+ * - Available
10
+ * options.
11
+ */
4
12
  options: {
5
13
  label: string;
6
14
  value: string;
7
- searchValue?: string | undefined;
15
+ searchValue?: string;
8
16
  }[];
9
- class?: string | undefined;
10
- disabled?: boolean | undefined;
11
- invalid?: boolean | undefined;
17
+ /**
18
+ * - Selected option values.
19
+ */
20
+ values?: string[] | undefined;
21
+ /**
22
+ * - Maximum number of selectable options.
23
+ */
12
24
  max?: number | undefined;
13
- required?: boolean | undefined;
25
+ /**
26
+ * - The `class` attribute on the wrapper element.
27
+ */
28
+ class?: string | undefined;
29
+ /**
30
+ * - Whether to hide the widget.
31
+ */
14
32
  hidden?: boolean | undefined;
33
+ /**
34
+ * - Whether to disable the widget. An alias of the `aria-disabled`
35
+ * attribute.
36
+ */
37
+ disabled?: boolean | undefined;
38
+ /**
39
+ * - Whether to make the widget read-only. An alias of the
40
+ * `aria-readonly` attribute.
41
+ */
15
42
  readonly?: boolean | undefined;
16
- values?: string[] | undefined;
17
- }, {
18
- RemoveValue: CustomEvent<any>;
19
- AddValue: CustomEvent<any>;
20
- } & {
43
+ /**
44
+ * - Whether to mark the widget required. An alias of the
45
+ * `aria-required` attribute.
46
+ */
47
+ required?: boolean | undefined;
48
+ /**
49
+ * - Whether to mark the widget invalid. An alias of the
50
+ * `aria-invalid` attribute.
51
+ */
52
+ invalid?: boolean | undefined;
53
+ /**
54
+ * - Primary slot content.
55
+ */
56
+ children?: import("svelte").Snippet<[]> | undefined;
57
+ /**
58
+ * - Custom `AddValue` event handler.
59
+ */
60
+ onAddValue?: ((event: CustomEvent) => void) | undefined;
61
+ /**
62
+ * - Custom `RemoveValue` event handler.
63
+ */
64
+ onRemoveValue?: ((event: CustomEvent) => void) | undefined;
65
+ } & Record<string, any>, {
21
66
  [evt: string]: CustomEvent<any>;
22
- }, {}> & {
23
- $$bindings?: string | undefined;
24
- };
25
- declare const SelectTags: $$__sveltets_2_IsomorphicComponent<{
26
- [x: string]: any;
67
+ }, {}, {}, "values">;
68
+ type Props = {
69
+ /**
70
+ * - Available
71
+ * options.
72
+ */
27
73
  options: {
28
74
  label: string;
29
75
  value: string;
30
76
  searchValue?: string;
31
77
  }[];
32
- class?: string | undefined;
33
- disabled?: boolean | undefined;
34
- invalid?: boolean | undefined;
78
+ /**
79
+ * - Selected option values.
80
+ */
81
+ values?: string[] | undefined;
82
+ /**
83
+ * - Maximum number of selectable options.
84
+ */
35
85
  max?: number | undefined;
36
- required?: boolean | undefined;
86
+ /**
87
+ * - The `class` attribute on the wrapper element.
88
+ */
89
+ class?: string | undefined;
90
+ /**
91
+ * - Whether to hide the widget.
92
+ */
37
93
  hidden?: boolean | undefined;
94
+ /**
95
+ * - Whether to disable the widget. An alias of the `aria-disabled`
96
+ * attribute.
97
+ */
98
+ disabled?: boolean | undefined;
99
+ /**
100
+ * - Whether to make the widget read-only. An alias of the
101
+ * `aria-readonly` attribute.
102
+ */
38
103
  readonly?: boolean | undefined;
39
- values?: string[] | undefined;
40
- }, {
41
- RemoveValue: CustomEvent<any>;
42
- AddValue: CustomEvent<any>;
43
- } & {
44
- [evt: string]: CustomEvent<any>;
45
- }, {}, {}, string>;
104
+ /**
105
+ * - Whether to mark the widget required. An alias of the
106
+ * `aria-required` attribute.
107
+ */
108
+ required?: boolean | undefined;
109
+ /**
110
+ * - Whether to mark the widget invalid. An alias of the
111
+ * `aria-invalid` attribute.
112
+ */
113
+ invalid?: boolean | undefined;
114
+ /**
115
+ * - Primary slot content.
116
+ */
117
+ children?: import("svelte").Snippet<[]> | undefined;
118
+ /**
119
+ * - Custom `AddValue` event handler.
120
+ */
121
+ onAddValue?: ((event: CustomEvent) => void) | undefined;
122
+ /**
123
+ * - Custom `RemoveValue` event handler.
124
+ */
125
+ onRemoveValue?: ((event: CustomEvent) => void) | undefined;
126
+ };
46
127
  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> {
47
128
  new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
48
129
  $$bindings?: Bindings;
@@ -9,44 +9,26 @@
9
9
  import Combobox from './combobox.svelte';
10
10
 
11
11
  /**
12
- * The `class` attribute on the wrapper element.
13
- * @type {string}
12
+ * @type {import('../../typedefs').ComboboxProps & Record<string, any>}
14
13
  */
15
- let className = '';
16
- export { className as class };
17
- /**
18
- * Whether to hide the widget. An alias of the `aria-hidden` attribute.
19
- * @type {boolean | undefined}
20
- */
21
- export let hidden = undefined;
22
- /**
23
- * Whether to disable the widget. An alias of the `aria-disabled` attribute.
24
- * @type {boolean}
25
- */
26
- export let disabled = false;
27
- /**
28
- * Whether to make the widget read-only. An alias of the `aria-readonly` attribute.
29
- * @type {boolean}
30
- */
31
- export let readonly = false;
32
- /**
33
- * Whether to disable the widget. An alias of the `aria-required` attribute.
34
- * @type {boolean}
35
- */
36
- export let required = false;
37
- /**
38
- * Whether to mark the widget invalid. An alias of the `aria-invalid` attribute.
39
- * @type {boolean}
40
- */
41
- export let invalid = false;
42
- /**
43
- * Selected option’s value.
44
- * @type {any} = string | number | undefined
45
- */
46
- export let value = undefined;
14
+ let {
15
+ /* eslint-disable prefer-const */
16
+ value = $bindable(),
17
+ class: className,
18
+ hidden = false,
19
+ disabled = false,
20
+ readonly = false,
21
+ required = false,
22
+ invalid = false,
23
+ children,
24
+ onChange,
25
+ ...restProps
26
+ /* eslint-enable prefer-const */
27
+ } = $props();
47
28
  </script>
48
29
 
49
30
  <Combobox
31
+ {...restProps}
50
32
  bind:value
51
33
  class="sui select {className}"
52
34
  {hidden}
@@ -54,9 +36,8 @@
54
36
  {readonly}
55
37
  {required}
56
38
  {invalid}
57
- {...$$restProps}
39
+ {onChange}
58
40
  editable={false}
59
- on:change
60
41
  >
61
- <slot />
42
+ {@render children?.()}
62
43
  </Combobox>
@@ -1,23 +1,8 @@
1
1
  export default Select;
2
- type Select = 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
- value?: any;
9
- hidden?: boolean | undefined;
10
- readonly?: boolean | undefined;
11
- }, {
12
- default: {};
13
- }>, {
14
- change: CustomEvent<any>;
15
- } & {
2
+ type Select = SvelteComponent<ComboboxProps & Record<string, any>, {
16
3
  [evt: string]: CustomEvent<any>;
17
- }, {
18
- default: {};
19
- }> & {
20
- $$bindings?: string | undefined;
4
+ }, {}> & {
5
+ $$bindings?: "value" | undefined;
21
6
  };
22
7
  /**
23
8
  * A select-only variant of `<Combobox>`. The equivalent of the HTML `<select>` element.
@@ -25,29 +10,9 @@ type Select = SvelteComponent<$$__sveltets_2_PropsWithChildren<{
25
10
  * @see https://w3c.github.io/aria/#combobox
26
11
  * @see https://www.w3.org/WAI/ARIA/apg/patterns/combobox/examples/combobox-select-only/
27
12
  */
28
- declare const Select: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{
29
- [x: string]: any;
30
- class?: string | undefined;
31
- disabled?: boolean | undefined;
32
- invalid?: boolean | undefined;
33
- required?: boolean | undefined;
34
- value?: any;
35
- hidden?: boolean | undefined;
36
- readonly?: boolean | undefined;
37
- }, {
38
- default: {};
39
- }>, {
40
- change: CustomEvent<any>;
41
- } & {
13
+ declare const Select: $$__sveltets_2_IsomorphicComponent<import("../../typedefs").ComboboxProps & Record<string, any>, {
42
14
  [evt: string]: CustomEvent<any>;
43
- }, {
44
- default: {};
45
- }, {}, string>;
46
- type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends {
47
- default: any;
48
- } ? Props extends Record<string, never> ? any : {
49
- children?: any;
50
- } : {});
15
+ }, {}, {}, "value">;
51
16
  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> {
52
17
  new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
53
18
  $$bindings?: Bindings;
@@ -8,71 +8,72 @@
8
8
  @see https://www.w3.org/WAI/ARIA/apg/patterns/slider-multithumb/
9
9
  -->
10
10
  <script>
11
- import { createEventDispatcher, onMount } from 'svelte';
11
+ import { onMount } from 'svelte';
12
12
 
13
13
  /**
14
- * The `class` attribute on the wrapper element.
15
- * @type {string}
14
+ * @typedef {object} Props
15
+ * @property {number} [value] - Current value.
16
+ * @property {number} [min] - Minimum allowed value. An alias of the `aria-valuemin` attribute.
17
+ * @property {number} [max] - Maximum allowed value. An alias of the `aria-valuemax` attribute.
18
+ * @property {string} [sliderLabel] - `aria-label` on the slider.
19
+ * @property {[number, number] | undefined} [values] - Value list for a multi-thumb slider.
20
+ * @property {[string, string] | undefined} [sliderLabels] - `aria-label` on a multi-thumb slider.
21
+ * @property {number} [step] - Step option like `<input type="range">`.
22
+ * @property {(string[] | number[])} [optionLabels] - Visible labels on the slider.
23
+ * @property {boolean} [flex] - Make the text input container flexible.
24
+ * @property {string} [class] - The `class` attribute on the wrapper element.
25
+ * @property {boolean} [hidden] - Whether to hide the widget.
26
+ * @property {boolean} [disabled] - Whether to disable the widget. An alias of the `aria-disabled`
27
+ * attribute.
28
+ * @property {boolean} [readonly] - Whether to make the widget read-only. An alias of the
29
+ * `aria-readonly` attribute.
30
+ * @property {boolean} [invalid] - Whether to mark the widget invalid. An alias of the
31
+ * `aria-invalid` attribute.
32
+ * @property {import('svelte').Snippet} [children] - Primary slot content.
33
+ * @property {(detail: { values?: number[], value?: number }) => void} [onChange] - `change` event
34
+ * handler.
16
35
  */
17
- let className = '';
18
- export { className as class };
19
- /**
20
- * Whether to hide the widget. An alias of the `aria-hidden` attribute.
21
- * @type {boolean | undefined}
22
- */
23
- export let hidden = undefined;
24
- /**
25
- * Whether to disable the widget. An alias of the `aria-disabled` attribute.
26
- * @type {boolean}
27
- */
28
- export let disabled = false;
29
- /**
30
- * Whether to make the widget read-only. An alias of the `aria-readonly` attribute.
31
- * @type {boolean}
32
- */
33
- export let readonly = false;
34
- /**
35
- * Whether to mark the widget invalid. An alias of the `aria-invalid` attribute.
36
- * @type {boolean}
37
- */
38
- export let invalid = false;
39
- /**
40
- * Minimum allowed value. An alias of the `aria-valuemin` attribute.
41
- * @type {number}
42
- */
43
- export let min = 0;
36
+
44
37
  /**
45
- * Maximum allowed value. An alias of the `aria-valuemax` attribute.
46
- * @type {number}
38
+ * @type {Props & Record<string, any>}
47
39
  */
48
- export let max = 100;
40
+ let {
41
+ /* eslint-disable prefer-const */
42
+ value = $bindable(0),
43
+ min = 0,
44
+ max = 100,
45
+ sliderLabel = '',
46
+ values = undefined,
47
+ sliderLabels = undefined,
48
+ step = 1,
49
+ optionLabels = [],
50
+ class: className,
51
+ hidden = false,
52
+ disabled = false,
53
+ readonly = false,
54
+ invalid = false,
55
+ children,
56
+ onChange,
57
+ ...restProps
58
+ /* eslint-enable prefer-const */
59
+ } = $props();
60
+
61
+ const multiThumb = $derived(Array.isArray(values));
49
62
 
50
- export let value = 0;
51
- export let sliderLabel = '';
52
- /** @type {[number, number] | undefined} */
53
- export let values = undefined;
54
- /** @type {[string, string] | undefined} */
55
- export let sliderLabels = undefined;
56
- export let step = 1;
57
- /** @type {(string[] | number[])} */
58
- export let optionLabels = [];
59
-
60
- $: multiThumb = Array.isArray(values);
61
-
62
- const dispatch = createEventDispatcher();
63
63
  /** @type {HTMLElement | undefined} */
64
- let base = undefined;
65
- let barWidth = 0;
64
+ let base = $state();
65
+ let barWidth = $state(0);
66
66
  /** @type {number[]} */
67
- let positionList = [];
67
+ let positionList = $state([]);
68
68
  /** @type {number[]} */
69
- let valueList = [];
70
- let startX = 0;
71
- let startScreenX = 0;
72
- const sliderPositions = [0, 0];
73
- let dragging = false;
74
- let targetPointerId = 0;
75
- let targetValueIndex = 0;
69
+ let valueList = $state([]);
70
+ let startX = $state(0);
71
+ let startScreenX = $state(0);
72
+ // eslint-disable-next-line prefer-const
73
+ let sliderPositions = $state([0, 0]);
74
+ let dragging = $state(false);
75
+ let targetPointerId = $state(0);
76
+ let targetValueIndex = $state(0);
76
77
 
77
78
  /**
78
79
  * Move a thumb with mouse.
@@ -104,6 +105,7 @@
104
105
 
105
106
  if (multiThumb) {
106
107
  /** @type {[number, number]} */ (values)[targetValueIndex] = valueList[index];
108
+ values = [.../** @type {[number, number]} */ (values)];
107
109
  } else {
108
110
  value = valueList[index];
109
111
  }
@@ -155,6 +157,7 @@
155
157
 
156
158
  if (multiThumb) {
157
159
  /** @type {[number, number]} */ (values)[valueIndex] = valueList[index];
160
+ values = [.../** @type {[number, number]} */ (values)];
158
161
  } else {
159
162
  value = valueList[index];
160
163
  }
@@ -242,10 +245,10 @@
242
245
 
243
246
  sliderPositions[0] = positionList[valueList.indexOf(value0)];
244
247
  sliderPositions[1] = positionList[valueList.indexOf(value1)];
245
- dispatch('change', { values });
248
+ onChange?.({ values });
246
249
  } else {
247
250
  sliderPositions[0] = positionList[valueList.indexOf(value)];
248
- dispatch('change', { value });
251
+ onChange?.({ value });
249
252
  }
250
253
  };
251
254
 
@@ -282,28 +285,28 @@
282
285
  };
283
286
  });
284
287
 
285
- $: {
288
+ $effect(() => {
286
289
  void value;
287
290
  void values;
288
291
  onValueChange();
289
- }
292
+ });
290
293
  </script>
291
294
 
292
295
  <svelte:body
293
- on:click={() => {
296
+ onclick={() => {
294
297
  dragging = false;
295
298
  }}
296
299
  />
297
300
 
298
301
  <div
302
+ {...restProps}
299
303
  role="none"
300
304
  class="sui slider {className}"
301
305
  class:disabled
302
306
  class:readonly
303
- hidden={hidden || undefined}
304
- {...$$restProps}
307
+ {hidden}
305
308
  >
306
- <div role="none" class="base" bind:this={base} on:pointerdown={(event) => onPointerDown(event)}>
309
+ <div bind:this={base} role="none" class="base" onpointerdown={(event) => onPointerDown(event)}>
307
310
  <div role="none" class="base-bar"></div>
308
311
  <div
309
312
  class="slider-bar"
@@ -322,8 +325,8 @@
322
325
  aria-valuemax={max}
323
326
  aria-valuenow={multiThumb ? values?.[0] : value}
324
327
  style:left="{sliderPositions[0]}px"
325
- on:pointerdown={(event) => onPointerDown(event, 0)}
326
- on:keydown={(event) => onKeyDown(event, 0)}
328
+ onpointerdown={(event) => onPointerDown(event, 0)}
329
+ onkeydown={(event) => onKeyDown(event, 0)}
327
330
  ></div>
328
331
  {#if multiThumb}
329
332
  <div
@@ -338,8 +341,8 @@
338
341
  aria-valuemax={max}
339
342
  aria-valuenow={values?.[1]}
340
343
  style:left="{sliderPositions[1]}px"
341
- on:pointerdown={(event) => onPointerDown(event, 1)}
342
- on:keydown={(event) => onKeyDown(event, 1)}
344
+ onpointerdown={(event) => onPointerDown(event, 1)}
345
+ onkeydown={(event) => onKeyDown(event, 1)}
343
346
  ></div>
344
347
  {/if}
345
348
  {#if optionLabels.length}
@@ -1,25 +1,8 @@
1
1
  export default Slider;
2
- type Slider = SvelteComponent<{
3
- [x: string]: any;
4
- class?: string | undefined;
5
- disabled?: boolean | undefined;
6
- invalid?: boolean | undefined;
7
- max?: number | undefined;
8
- min?: number | undefined;
9
- step?: number | undefined;
10
- value?: number | undefined;
11
- hidden?: boolean | undefined;
12
- readonly?: boolean | undefined;
13
- values?: [number, number] | undefined;
14
- sliderLabel?: string | undefined;
15
- sliderLabels?: [string, string] | undefined;
16
- optionLabels?: string[] | number[] | undefined;
17
- }, {
18
- change: CustomEvent<any>;
19
- } & {
2
+ type Slider = SvelteComponent<Props & Record<string, any>, {
20
3
  [evt: string]: CustomEvent<any>;
21
4
  }, {}> & {
22
- $$bindings?: string | undefined;
5
+ $$bindings?: "value" | undefined;
23
6
  };
24
7
  /**
25
8
  * The equivalent of the HTML `<input type="range">` element, but it comes with the multi-thumb
@@ -30,25 +13,153 @@ type Slider = SvelteComponent<{
30
13
  * @see https://www.w3.org/WAI/ARIA/apg/patterns/slider-multithumb/
31
14
  */
32
15
  declare const Slider: $$__sveltets_2_IsomorphicComponent<{
33
- [x: string]: any;
34
- class?: string | undefined;
35
- disabled?: boolean | undefined;
36
- invalid?: boolean | undefined;
37
- max?: number | undefined;
16
+ /**
17
+ * - Current value.
18
+ */
19
+ value?: number | undefined;
20
+ /**
21
+ * - Minimum allowed value. An alias of the `aria-valuemin` attribute.
22
+ */
38
23
  min?: number | undefined;
24
+ /**
25
+ * - Maximum allowed value. An alias of the `aria-valuemax` attribute.
26
+ */
27
+ max?: number | undefined;
28
+ /**
29
+ * - `aria-label` on the slider.
30
+ */
31
+ sliderLabel?: string | undefined;
32
+ /**
33
+ * - Value list for a multi-thumb slider.
34
+ */
35
+ values?: [number, number] | undefined;
36
+ /**
37
+ * - `aria-label` on a multi-thumb slider.
38
+ */
39
+ sliderLabels?: [string, string] | undefined;
40
+ /**
41
+ * - Step option like `<input type="range">`.
42
+ */
39
43
  step?: number | undefined;
40
- value?: number | undefined;
44
+ /**
45
+ * - Visible labels on the slider.
46
+ */
47
+ optionLabels?: string[] | number[] | undefined;
48
+ /**
49
+ * - Make the text input container flexible.
50
+ */
51
+ flex?: boolean | undefined;
52
+ /**
53
+ * - The `class` attribute on the wrapper element.
54
+ */
55
+ class?: string | undefined;
56
+ /**
57
+ * - Whether to hide the widget.
58
+ */
41
59
  hidden?: boolean | undefined;
60
+ /**
61
+ * - Whether to disable the widget. An alias of the `aria-disabled`
62
+ * attribute.
63
+ */
64
+ disabled?: boolean | undefined;
65
+ /**
66
+ * - Whether to make the widget read-only. An alias of the
67
+ * `aria-readonly` attribute.
68
+ */
42
69
  readonly?: boolean | undefined;
43
- values?: [number, number] | undefined;
70
+ /**
71
+ * - Whether to mark the widget invalid. An alias of the
72
+ * `aria-invalid` attribute.
73
+ */
74
+ invalid?: boolean | undefined;
75
+ /**
76
+ * - Primary slot content.
77
+ */
78
+ children?: import("svelte").Snippet<[]> | undefined;
79
+ /**
80
+ * - `change` event
81
+ * handler.
82
+ */
83
+ onChange?: ((detail: {
84
+ values?: number[];
85
+ value?: number;
86
+ }) => void) | undefined;
87
+ } & Record<string, any>, {
88
+ [evt: string]: CustomEvent<any>;
89
+ }, {}, {}, "value">;
90
+ type Props = {
91
+ /**
92
+ * - Current value.
93
+ */
94
+ value?: number | undefined;
95
+ /**
96
+ * - Minimum allowed value. An alias of the `aria-valuemin` attribute.
97
+ */
98
+ min?: number | undefined;
99
+ /**
100
+ * - Maximum allowed value. An alias of the `aria-valuemax` attribute.
101
+ */
102
+ max?: number | undefined;
103
+ /**
104
+ * - `aria-label` on the slider.
105
+ */
44
106
  sliderLabel?: string | undefined;
107
+ /**
108
+ * - Value list for a multi-thumb slider.
109
+ */
110
+ values?: [number, number] | undefined;
111
+ /**
112
+ * - `aria-label` on a multi-thumb slider.
113
+ */
45
114
  sliderLabels?: [string, string] | undefined;
115
+ /**
116
+ * - Step option like `<input type="range">`.
117
+ */
118
+ step?: number | undefined;
119
+ /**
120
+ * - Visible labels on the slider.
121
+ */
46
122
  optionLabels?: string[] | number[] | undefined;
47
- }, {
48
- change: CustomEvent<any>;
49
- } & {
50
- [evt: string]: CustomEvent<any>;
51
- }, {}, {}, string>;
123
+ /**
124
+ * - Make the text input container flexible.
125
+ */
126
+ flex?: boolean | undefined;
127
+ /**
128
+ * - The `class` attribute on the wrapper element.
129
+ */
130
+ class?: string | undefined;
131
+ /**
132
+ * - Whether to hide the widget.
133
+ */
134
+ hidden?: boolean | undefined;
135
+ /**
136
+ * - Whether to disable the widget. An alias of the `aria-disabled`
137
+ * attribute.
138
+ */
139
+ disabled?: boolean | undefined;
140
+ /**
141
+ * - Whether to make the widget read-only. An alias of the
142
+ * `aria-readonly` attribute.
143
+ */
144
+ readonly?: boolean | undefined;
145
+ /**
146
+ * - Whether to mark the widget invalid. An alias of the
147
+ * `aria-invalid` attribute.
148
+ */
149
+ invalid?: boolean | undefined;
150
+ /**
151
+ * - Primary slot content.
152
+ */
153
+ children?: import("svelte").Snippet<[]> | undefined;
154
+ /**
155
+ * - `change` event
156
+ * handler.
157
+ */
158
+ onChange?: ((detail: {
159
+ values?: number[];
160
+ value?: number;
161
+ }) => void) | undefined;
162
+ };
52
163
  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> {
53
164
  new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
54
165
  $$bindings?: Bindings;