@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
@@ -5,44 +5,45 @@
5
5
  @see https://w3c.github.io/aria/#grid
6
6
  -->
7
7
  <script>
8
- import { createEventDispatcher } from 'svelte';
9
- import { activateGroup } from '../../services/group';
8
+ import { activateGroup } from '../../services/group.svelte';
10
9
 
11
10
  /**
12
- * The `class` attribute on the wrapper element.
13
- * @type {string}
11
+ * @typedef {object} Props
12
+ * @property {string} [class] - The `class` attribute on the wrapper element.
13
+ * @property {boolean} [selected] - Whether to allow selecting more than one `<GridRow>` and/or
14
+ * `<GridCell>`. An alias of the `aria-multiselectable` attribute.
15
+ * @property {boolean} [clickToSelect] - Whether to select a row by clicking on it.
16
+ * @property {HTMLElement | undefined} [element] - A reference to the wrapper element.
17
+ * @property {import('svelte').Snippet} [children] - Primary slot content.
18
+ * @property {(event: CustomEvent) => void} [onChange] - Custom `Change` event handler.
14
19
  */
15
- let className = '';
16
- export { className as class };
17
- /**
18
- * Whether to allow selecting more than one `<GridRow>` and/or `<GridCell>`. An alias of the
19
- * `aria-multiselectable` attribute.
20
- * @type {boolean}
21
- */
22
- export let multiple = false;
20
+
23
21
  /**
24
- * Whether to select a row by clicking on it.
22
+ * @type {Props & Record<string, any>}
25
23
  */
26
- export let clickToSelect = true;
27
-
28
- /** @type {HTMLElement | undefined} */
29
- export let element = undefined;
30
-
31
- const dispatch = createEventDispatcher();
24
+ let {
25
+ /* eslint-disable prefer-const */
26
+ element = $bindable(),
27
+ class: className,
28
+ multiple = false,
29
+ clickToSelect = true,
30
+ children,
31
+ onChange,
32
+ ...restProps
33
+ /* eslint-enable prefer-const */
34
+ } = $props();
32
35
  </script>
33
36
 
34
37
  <div
38
+ bind:this={element}
39
+ {...restProps}
35
40
  role="grid"
36
41
  class="sui grid {className}"
37
42
  aria-multiselectable={multiple}
38
- {...$$restProps}
39
- bind:this={element}
43
+ {onChange}
40
44
  use:activateGroup={{ clickToSelect }}
41
- on:change={(/** @type {CustomEvent} */ event) => {
42
- dispatch('change', event.detail);
43
- }}
44
45
  >
45
- <slot />
46
+ {@render children?.()}
46
47
  </div>
47
48
 
48
49
  <style>.grid {
@@ -1,46 +1,70 @@
1
1
  export default Grid;
2
- type Grid = SvelteComponent<$$__sveltets_2_PropsWithChildren<{
3
- [x: string]: any;
4
- class?: string | undefined;
5
- multiple?: boolean | undefined;
6
- element?: HTMLElement | undefined;
7
- clickToSelect?: boolean | undefined;
8
- }, {
9
- default: {};
10
- }>, {
11
- change: CustomEvent<any>;
12
- } & {
2
+ type Grid = SvelteComponent<Props & Record<string, any>, {
13
3
  [evt: string]: CustomEvent<any>;
14
- }, {
15
- default: {};
16
- }> & {
17
- $$bindings?: string | undefined;
4
+ }, {}> & {
5
+ $$bindings?: "element" | undefined;
18
6
  };
19
7
  /**
20
8
  * The interactive version of `<Table>`.
21
9
  * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/table
22
10
  * @see https://w3c.github.io/aria/#grid
23
11
  */
24
- declare const Grid: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{
25
- [x: string]: any;
12
+ declare const Grid: $$__sveltets_2_IsomorphicComponent<{
13
+ /**
14
+ * - The `class` attribute on the wrapper element.
15
+ */
26
16
  class?: string | undefined;
27
- multiple?: boolean | undefined;
28
- element?: HTMLElement | undefined;
17
+ /**
18
+ * - Whether to allow selecting more than one `<GridRow>` and/or
19
+ * `<GridCell>`. An alias of the `aria-multiselectable` attribute.
20
+ */
21
+ selected?: boolean | undefined;
22
+ /**
23
+ * - Whether to select a row by clicking on it.
24
+ */
29
25
  clickToSelect?: boolean | undefined;
30
- }, {
31
- default: {};
32
- }>, {
33
- change: CustomEvent<any>;
34
- } & {
26
+ /**
27
+ * - A reference to the wrapper element.
28
+ */
29
+ element?: HTMLElement | undefined;
30
+ /**
31
+ * - Primary slot content.
32
+ */
33
+ children?: import("svelte").Snippet<[]> | undefined;
34
+ /**
35
+ * - Custom `Change` event handler.
36
+ */
37
+ onChange?: ((event: CustomEvent) => void) | undefined;
38
+ } & Record<string, any>, {
35
39
  [evt: string]: CustomEvent<any>;
36
- }, {
37
- default: {};
38
- }, {}, string>;
39
- type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends {
40
- default: any;
41
- } ? Props extends Record<string, never> ? any : {
42
- children?: any;
43
- } : {});
40
+ }, {}, {}, "element">;
41
+ type Props = {
42
+ /**
43
+ * - The `class` attribute on the wrapper element.
44
+ */
45
+ class?: string | undefined;
46
+ /**
47
+ * - Whether to allow selecting more than one `<GridRow>` and/or
48
+ * `<GridCell>`. An alias of the `aria-multiselectable` attribute.
49
+ */
50
+ selected?: boolean | undefined;
51
+ /**
52
+ * - Whether to select a row by clicking on it.
53
+ */
54
+ clickToSelect?: boolean | undefined;
55
+ /**
56
+ * - A reference to the wrapper element.
57
+ */
58
+ element?: HTMLElement | undefined;
59
+ /**
60
+ * - Primary slot content.
61
+ */
62
+ children?: import("svelte").Snippet<[]> | undefined;
63
+ /**
64
+ * - Custom `Change` event handler.
65
+ */
66
+ onChange?: ((event: CustomEvent) => void) | undefined;
67
+ };
44
68
  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> {
45
69
  new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
46
70
  $$bindings?: Bindings;
@@ -5,22 +5,27 @@
5
5
  -->
6
6
  <script>
7
7
  /**
8
- * The `class` attribute on the `span` element.
9
- * @type {string}
8
+ * @typedef {object} Props
9
+ * @property {string} [class] - The `class` attribute on the `span` element.
10
+ * @property {string} [name] - Icon name, e.g. `search`, `expand_more`, `close`, etc.
10
11
  */
11
- let className = '';
12
- export { className as class };
12
+
13
13
  /**
14
- * Icon name, e.g. `search`, `expand_more`, `close`, etc.
15
- * @type {string}
14
+ * @type {Props & Record<string, any>}
16
15
  */
17
- export let name = '';
16
+ let {
17
+ /* eslint-disable prefer-const */
18
+ class: className,
19
+ name,
20
+ ...restProps
21
+ /* eslint-enable prefer-const */
22
+ } = $props();
18
23
  </script>
19
24
 
20
25
  <span
26
+ {...restProps}
21
27
  class="sui icon material-symbols-outlined {className}"
22
- aria-hidden={!('aria-label' in $$restProps)}
23
- {...$$restProps}
28
+ aria-hidden={!('aria-label' in restProps)}
24
29
  >
25
30
  {name}
26
31
  </span>
@@ -1,24 +1,35 @@
1
1
  export default Icon;
2
- type Icon = SvelteComponent<{
3
- [x: string]: any;
4
- class?: string | undefined;
5
- name?: string | undefined;
6
- }, {
2
+ type Icon = SvelteComponent<Props & Record<string, any>, {
7
3
  [evt: string]: CustomEvent<any>;
8
4
  }, {}> & {
9
- $$bindings?: string | undefined;
5
+ $$bindings?: "" | undefined;
10
6
  };
11
7
  /**
12
8
  * A Material Symbols icon.
13
9
  * @see https://developers.google.com/fonts/docs/material_symbols
14
10
  */
15
11
  declare const Icon: $$__sveltets_2_IsomorphicComponent<{
16
- [x: string]: any;
12
+ /**
13
+ * - The `class` attribute on the `span` element.
14
+ */
17
15
  class?: string | undefined;
16
+ /**
17
+ * - Icon name, e.g. `search`, `expand_more`, `close`, etc.
18
+ */
18
19
  name?: string | undefined;
19
- }, {
20
+ } & Record<string, any>, {
20
21
  [evt: string]: CustomEvent<any>;
21
- }, {}, {}, string>;
22
+ }, {}, {}, "">;
23
+ type Props = {
24
+ /**
25
+ * - The `class` attribute on the `span` element.
26
+ */
27
+ class?: string | undefined;
28
+ /**
29
+ * - Icon name, e.g. `search`, `expand_more`, `close`, etc.
30
+ */
31
+ name?: string | undefined;
32
+ };
22
33
  interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
23
34
  new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
24
35
  $$bindings?: Bindings;
@@ -6,85 +6,79 @@
6
6
  @see https://www.w3.org/WAI/ARIA/apg/patterns/listbox/
7
7
  -->
8
8
  <script>
9
- import { createEventDispatcher } from 'svelte';
10
- import { activateGroup } from '../../services/group';
9
+ import { activateGroup } from '../../services/group.svelte';
11
10
 
12
11
  /**
13
- * The `class` attribute on the wrapper element.
14
- * @type {string}
15
- */
16
- let className = '';
17
- export { className as class };
18
- /**
19
- * Whether to hide the widget. An alias of the `aria-hidden` attribute.
20
- * @type {boolean | undefined}
21
- */
22
- export let hidden = undefined;
23
- /**
24
- * Whether to disable the widget. An alias of the `aria-disabled` attribute.
25
- * @type {boolean}
26
- */
27
- export let disabled = false;
28
- /**
29
- * Whether to make the widget read-only. An alias of the `aria-readonly` attribute.
30
- * @type {boolean}
31
- */
32
- export let readonly = false;
33
- /**
34
- * Whether to mark the widget required. An alias of the `aria-required` attribute.
35
- * @type {boolean}
36
- */
37
- export let required = false;
38
- /**
39
- * Whether to mark the widget invalid. An alias of the `aria-invalid` attribute.
40
- * @type {boolean}
41
- */
42
- export let invalid = false;
43
- /**
44
- * Whether to allow selecting more than one `<Option>`. An alias of the `aria-multiselectable`
12
+ * @typedef {object} Props
13
+ * @property {string} [class] - The `class` attribute on the wrapper element.
14
+ * @property {boolean} [hidden] - Whether to hide the widget. An alias of the `aria-hidden`
45
15
  * attribute.
46
- * @type {boolean}
16
+ * @property {boolean} [disabled] - Whether to disable the widget. An alias of the `aria-disabled`
17
+ * attribute.
18
+ * @property {boolean} [readonly] - Whether to make the widget read-only. An alias of the
19
+ * `aria-readonly` attribute.
20
+ * @property {boolean} [required] - Whether to mark the widget required. An alias of the
21
+ * `aria-required` attribute.
22
+ * @property {boolean} [invalid] - Whether to mark the widget invalid. An alias of the
23
+ * `aria-invalid` attribute.
24
+ * @property {boolean} [multiple] - Whether to allow selecting more than one `<Option>`. An alias
25
+ * of the `aria-multiselectable` attribute.
26
+ * @property {string} [searchTerms] - Search terms to be used to filter the items.
27
+ * @property {import('svelte').Snippet} [children] - Primary slot content.
28
+ * @property {(event: CustomEvent) => void} [onChange] - Custom `Change` event handler.
29
+ * @property {(event: CustomEvent) => void} [onFilter] - Custom `Filter` event handler.
47
30
  */
48
- export let multiple = false;
31
+
49
32
  /**
50
- * Search terms to be used to filter the items.
51
- * @type {string}
33
+ * @type {import('../../typedefs').CommonEventHandlers & Props & Record<string, any>}
52
34
  */
53
- export let searchTerms = '';
35
+ let {
36
+ /* eslint-disable prefer-const */
37
+ class: className,
38
+ hidden = false,
39
+ disabled = false,
40
+ readonly = false,
41
+ required = false,
42
+ invalid = false,
43
+ multiple = false,
44
+ searchTerms = '',
45
+ children,
46
+ onFilter,
47
+ ...restProps
48
+ /* eslint-enable prefer-const */
49
+ } = $props();
54
50
 
55
51
  /**
56
52
  * @type {boolean}
57
53
  */
58
- let filtered = false;
59
-
60
- const dispatch = createEventDispatcher();
54
+ let filtered = $state(false);
61
55
  </script>
62
56
 
63
57
  <div
58
+ {...restProps}
64
59
  role="listbox"
65
60
  class="sui listbox {className}"
66
61
  class:filtered
67
62
  tabindex={disabled ? -1 : 0}
68
- hidden={hidden || undefined}
63
+ {hidden}
69
64
  aria-hidden={hidden}
70
65
  aria-disabled={disabled}
71
66
  aria-readonly={readonly}
72
67
  aria-required={required}
73
68
  aria-invalid={invalid}
74
69
  aria-multiselectable={multiple}
75
- {...$$restProps}
76
- use:activateGroup={{ searchTerms }}
77
- on:click
78
- on:change={(/** @type {CustomEvent} */ event) => {
79
- dispatch('change', event.detail);
80
- }}
81
- on:filter
82
- on:filter={(/** @type {CustomEvent} */ { detail: { matched, total } }) => {
70
+ onFilter={(/** @type {CustomEvent} */ event) => {
71
+ const {
72
+ detail: { matched, total },
73
+ } = event;
74
+
83
75
  filtered = matched !== total;
76
+ onFilter?.(event);
84
77
  }}
78
+ use:activateGroup={{ searchTerms }}
85
79
  >
86
80
  <div role="none" class="inner" inert={disabled}>
87
- <slot />
81
+ {@render children?.()}
88
82
  </div>
89
83
  </div>
90
84
 
@@ -1,26 +1,8 @@
1
1
  export default Listbox;
2
- type Listbox = SvelteComponent<$$__sveltets_2_PropsWithChildren<{
3
- [x: string]: any;
4
- class?: string | undefined;
5
- disabled?: boolean | undefined;
6
- invalid?: boolean | undefined;
7
- multiple?: boolean | undefined;
8
- required?: boolean | undefined;
9
- hidden?: boolean | undefined;
10
- readonly?: boolean | undefined;
11
- searchTerms?: string | undefined;
12
- }, {
13
- default: {};
14
- }>, {
15
- click: MouseEvent;
16
- filter: Event | KeyboardEvent | UIEvent | ErrorEvent | AnimationEvent | MouseEvent | InputEvent | FocusEvent | CompositionEvent | ClipboardEvent | DragEvent | FormDataEvent | PointerEvent | ProgressEvent<EventTarget> | SecurityPolicyViolationEvent | SubmitEvent | TouchEvent | TransitionEvent | WheelEvent;
17
- change: CustomEvent<any>;
18
- } & {
2
+ type Listbox = SvelteComponent<KeyboardEventHandlers & MouseEventHandlers & FocusEventHandlers & DragEventHandlers & Props & Record<string, any>, {
19
3
  [evt: string]: CustomEvent<any>;
20
- }, {
21
- default: {};
22
- }> & {
23
- $$bindings?: string | undefined;
4
+ }, {}> & {
5
+ $$bindings?: "" | undefined;
24
6
  };
25
7
  /**
26
8
  * A list widget with selectable options. The equivalent of the HTML `<select multiple>` element.
@@ -28,32 +10,112 @@ type Listbox = SvelteComponent<$$__sveltets_2_PropsWithChildren<{
28
10
  * @see https://w3c.github.io/aria/#listbox
29
11
  * @see https://www.w3.org/WAI/ARIA/apg/patterns/listbox/
30
12
  */
31
- declare const Listbox: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{
32
- [x: string]: any;
13
+ declare const Listbox: $$__sveltets_2_IsomorphicComponent<import("../../typedefs").KeyboardEventHandlers & import("../../typedefs").MouseEventHandlers & import("../../typedefs").FocusEventHandlers & import("../../typedefs").DragEventHandlers & {
14
+ /**
15
+ * - The `class` attribute on the wrapper element.
16
+ */
33
17
  class?: string | undefined;
18
+ /**
19
+ * - Whether to hide the widget. An alias of the `aria-hidden`
20
+ * attribute.
21
+ */
22
+ hidden?: boolean | undefined;
23
+ /**
24
+ * - Whether to disable the widget. An alias of the `aria-disabled`
25
+ * attribute.
26
+ */
34
27
  disabled?: boolean | undefined;
28
+ /**
29
+ * - Whether to make the widget read-only. An alias of the
30
+ * `aria-readonly` attribute.
31
+ */
32
+ readonly?: boolean | undefined;
33
+ /**
34
+ * - Whether to mark the widget required. An alias of the
35
+ * `aria-required` attribute.
36
+ */
37
+ required?: boolean | undefined;
38
+ /**
39
+ * - Whether to mark the widget invalid. An alias of the
40
+ * `aria-invalid` attribute.
41
+ */
35
42
  invalid?: boolean | undefined;
43
+ /**
44
+ * - Whether to allow selecting more than one `<Option>`. An alias
45
+ * of the `aria-multiselectable` attribute.
46
+ */
36
47
  multiple?: boolean | undefined;
37
- required?: boolean | undefined;
48
+ /**
49
+ * - Search terms to be used to filter the items.
50
+ */
51
+ searchTerms?: string | undefined;
52
+ /**
53
+ * - Primary slot content.
54
+ */
55
+ children?: import("svelte").Snippet<[]> | undefined;
56
+ /**
57
+ * - Custom `Change` event handler.
58
+ */
59
+ onChange?: ((event: CustomEvent) => void) | undefined;
60
+ /**
61
+ * - Custom `Filter` event handler.
62
+ */
63
+ onFilter?: ((event: CustomEvent) => void) | undefined;
64
+ } & Record<string, any>, {
65
+ [evt: string]: CustomEvent<any>;
66
+ }, {}, {}, "">;
67
+ type Props = {
68
+ /**
69
+ * - The `class` attribute on the wrapper element.
70
+ */
71
+ class?: string | undefined;
72
+ /**
73
+ * - Whether to hide the widget. An alias of the `aria-hidden`
74
+ * attribute.
75
+ */
38
76
  hidden?: boolean | undefined;
77
+ /**
78
+ * - Whether to disable the widget. An alias of the `aria-disabled`
79
+ * attribute.
80
+ */
81
+ disabled?: boolean | undefined;
82
+ /**
83
+ * - Whether to make the widget read-only. An alias of the
84
+ * `aria-readonly` attribute.
85
+ */
39
86
  readonly?: boolean | undefined;
87
+ /**
88
+ * - Whether to mark the widget required. An alias of the
89
+ * `aria-required` attribute.
90
+ */
91
+ required?: boolean | undefined;
92
+ /**
93
+ * - Whether to mark the widget invalid. An alias of the
94
+ * `aria-invalid` attribute.
95
+ */
96
+ invalid?: boolean | undefined;
97
+ /**
98
+ * - Whether to allow selecting more than one `<Option>`. An alias
99
+ * of the `aria-multiselectable` attribute.
100
+ */
101
+ multiple?: boolean | undefined;
102
+ /**
103
+ * - Search terms to be used to filter the items.
104
+ */
40
105
  searchTerms?: string | undefined;
41
- }, {
42
- default: {};
43
- }>, {
44
- click: MouseEvent;
45
- filter: Event | KeyboardEvent | UIEvent | ErrorEvent | AnimationEvent | MouseEvent | InputEvent | FocusEvent | CompositionEvent | ClipboardEvent | DragEvent | FormDataEvent | PointerEvent | ProgressEvent<EventTarget> | SecurityPolicyViolationEvent | SubmitEvent | TouchEvent | TransitionEvent | WheelEvent;
46
- change: CustomEvent<any>;
47
- } & {
48
- [evt: string]: CustomEvent<any>;
49
- }, {
50
- default: {};
51
- }, {}, string>;
52
- type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends {
53
- default: any;
54
- } ? Props extends Record<string, never> ? any : {
55
- children?: any;
56
- } : {});
106
+ /**
107
+ * - Primary slot content.
108
+ */
109
+ children?: import("svelte").Snippet<[]> | undefined;
110
+ /**
111
+ * - Custom `Change` event handler.
112
+ */
113
+ onChange?: ((event: CustomEvent) => void) | undefined;
114
+ /**
115
+ * - Custom `Filter` event handler.
116
+ */
117
+ onFilter?: ((event: CustomEvent) => void) | undefined;
118
+ };
57
119
  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> {
58
120
  new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
59
121
  $$bindings?: Bindings;
@@ -10,43 +10,47 @@
10
10
  import { generateElementId } from '@sveltia/utils/element';
11
11
 
12
12
  /**
13
- * The `class` attribute on the wrapper element.
14
- * @type {string}
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 {string} [label] - The group’s label to be displayed above the child `<Option>`s.
20
+ * @property {import('svelte').Snippet} [children] - Primary slot content.
15
21
  */
16
- let className = '';
17
- export { className as class };
18
- /**
19
- * Whether to hide the widget. An alias of the `aria-hidden` attribute.
20
- * @type {boolean | undefined}
21
- */
22
- export let hidden = undefined;
23
- /**
24
- * Whether to disable the widget. An alias of the `aria-disabled` attribute.
25
- * @type {boolean}
26
- */
27
- export let disabled = false;
22
+
28
23
  /**
29
- * The group’s label to be displayed above the child `<Option>`s.
24
+ * @type {Props & Record<string, any>}
30
25
  */
31
- export let label = '';
26
+ let {
27
+ /* eslint-disable prefer-const */
28
+ class: className,
29
+ hidden = false,
30
+ disabled = false,
31
+ label = '',
32
+ children,
33
+ ...restProps
34
+ /* eslint-enable prefer-const */
35
+ } = $props();
32
36
 
33
37
  const id = generateElementId('optgroup');
34
38
  </script>
35
39
 
36
40
  <div
41
+ {...restProps}
37
42
  role="group"
38
43
  {id}
39
44
  class="sui option-group {className}"
40
- hidden={hidden || undefined}
45
+ {hidden}
41
46
  aria-hidden={hidden}
42
47
  aria-disabled={disabled}
43
48
  aria-labelledby="{id}-label"
44
49
  aria-roledescription="option group"
45
- {...$$restProps}
46
50
  >
47
51
  <div role="none" id="{id}-label" class="label">{label}</div>
48
52
  <div role="none" class="inner" inert={disabled}>
49
- <slot />
53
+ {@render children?.()}
50
54
  </div>
51
55
  </div>
52
56