@sveltia/ui 0.7.5 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/package/components/alert/alert.svelte +4 -4
  2. package/package/components/alert/alert.svelte.d.ts +2 -2
  3. package/package/components/button/button.svelte +5 -3
  4. package/package/components/button/button.svelte.d.ts +6 -4
  5. package/package/components/button/select-button-group.svelte +9 -5
  6. package/package/components/button/select-button.svelte +5 -4
  7. package/package/components/button/select-button.svelte.d.ts +2 -0
  8. package/package/components/calendar/calendar.svelte +20 -14
  9. package/package/components/checkbox/checkbox-group.svelte +6 -5
  10. package/package/components/checkbox/checkbox.svelte +6 -4
  11. package/package/components/checkbox/checkbox.svelte.d.ts +2 -2
  12. package/package/components/dialog/alert-dialog.svelte +50 -0
  13. package/package/components/dialog/alert-dialog.svelte.d.ts +55 -0
  14. package/package/components/dialog/confirmation-dialog.svelte +55 -0
  15. package/package/components/dialog/confirmation-dialog.svelte.d.ts +57 -0
  16. package/package/components/dialog/dialog.svelte +165 -221
  17. package/package/components/dialog/dialog.svelte.d.ts +20 -12
  18. package/package/components/dialog/prompt-dialog.svelte +87 -0
  19. package/package/components/dialog/prompt-dialog.svelte.d.ts +72 -0
  20. package/package/components/disclosure/disclosure.svelte +3 -2
  21. package/package/components/divider/divider.svelte +1 -1
  22. package/package/components/divider/spacer.svelte +1 -12
  23. package/package/components/divider/spacer.svelte.d.ts +0 -2
  24. package/package/components/drawer/drawer.svelte +119 -209
  25. package/package/components/drawer/drawer.svelte.d.ts +13 -9
  26. package/package/components/grid/grid-body.svelte +51 -0
  27. package/package/components/grid/grid-body.svelte.d.ts +36 -0
  28. package/package/components/grid/grid-cell.svelte +22 -0
  29. package/package/components/grid/grid-cell.svelte.d.ts +34 -0
  30. package/package/components/grid/grid-col-header.svelte +22 -0
  31. package/package/components/grid/grid-col-header.svelte.d.ts +34 -0
  32. package/package/components/grid/grid-foot.svelte +27 -0
  33. package/package/components/grid/grid-foot.svelte.d.ts +34 -0
  34. package/package/components/grid/grid-head.svelte +27 -0
  35. package/package/components/grid/grid-head.svelte.d.ts +34 -0
  36. package/package/components/grid/grid-row-header.svelte +23 -0
  37. package/package/components/grid/grid-row-header.svelte.d.ts +34 -0
  38. package/package/components/grid/grid-row.svelte +37 -0
  39. package/package/components/grid/grid-row.svelte.d.ts +44 -0
  40. package/package/components/grid/grid.svelte +52 -0
  41. package/package/components/grid/grid.svelte.d.ts +42 -0
  42. package/package/components/icon/icon.svelte +6 -7
  43. package/package/components/icon/icon.svelte.d.ts +0 -2
  44. package/package/components/listbox/listbox.svelte +3 -3
  45. package/package/components/listbox/option-group.svelte +6 -5
  46. package/package/components/listbox/option.svelte +7 -28
  47. package/package/components/listbox/option.svelte.d.ts +2 -0
  48. package/package/components/menu/menu-button.svelte +26 -16
  49. package/package/components/menu/menu-button.svelte.d.ts +2 -2
  50. package/package/components/menu/menu-item-checkbox.svelte +5 -4
  51. package/package/components/menu/menu-item-checkbox.svelte.d.ts +2 -0
  52. package/package/components/menu/menu-item-group.svelte +4 -3
  53. package/package/components/menu/menu-item-radio.svelte +5 -4
  54. package/package/components/menu/menu-item-radio.svelte.d.ts +2 -0
  55. package/package/components/menu/menu-item.svelte +7 -5
  56. package/package/components/menu/menu-item.svelte.d.ts +4 -2
  57. package/package/components/menu/menu.svelte +1 -1
  58. package/package/components/radio/radio-group.svelte +5 -5
  59. package/package/components/radio/radio.svelte +5 -2
  60. package/package/components/radio/radio.svelte.d.ts +2 -0
  61. package/package/components/select/combobox.svelte +11 -9
  62. package/package/components/slider/slider.svelte +12 -5
  63. package/package/components/switch/switch.svelte +3 -2
  64. package/package/components/switch/switch.svelte.d.ts +2 -2
  65. package/package/components/table/table-body.svelte +31 -3
  66. package/package/components/table/table-body.svelte.d.ts +2 -0
  67. package/package/components/table/table-cell.svelte +3 -4
  68. package/package/components/table/table-cell.svelte.d.ts +1 -1
  69. package/package/components/table/table-col-header.svelte +1 -2
  70. package/package/components/table/table-foot.svelte +7 -3
  71. package/package/components/table/table-head.svelte +7 -3
  72. package/package/components/table/table-row-header.svelte +1 -2
  73. package/package/components/table/table-row.svelte +1 -14
  74. package/package/components/table/table-row.svelte.d.ts +0 -8
  75. package/package/components/table/table.svelte +5 -17
  76. package/package/components/table/table.svelte.d.ts +1 -7
  77. package/package/components/tabs/tab-list.svelte +7 -5
  78. package/package/components/tabs/tab-panel.svelte +1 -1
  79. package/package/components/tabs/tab.svelte +2 -1
  80. package/package/components/tabs/tab.svelte.d.ts +2 -0
  81. package/package/components/text-field/markdown-editor.svelte +30 -6
  82. package/package/components/text-field/markdown-editor.svelte.d.ts +2 -0
  83. package/package/components/text-field/number-input.svelte +36 -6
  84. package/package/components/text-field/number-input.svelte.d.ts +2 -0
  85. package/package/components/text-field/password-input.svelte +34 -8
  86. package/package/components/text-field/password-input.svelte.d.ts +2 -0
  87. package/package/components/text-field/search-bar.svelte +39 -11
  88. package/package/components/text-field/search-bar.svelte.d.ts +5 -0
  89. package/package/components/text-field/text-area.svelte +21 -2
  90. package/package/components/text-field/text-area.svelte.d.ts +2 -0
  91. package/package/components/text-field/text-input.svelte +22 -4
  92. package/package/components/text-field/text-input.svelte.d.ts +7 -2
  93. package/package/components/toast/toast.svelte +47 -17
  94. package/package/components/toast/toast.svelte.d.ts +7 -3
  95. package/package/components/toolbar/toolbar.svelte +3 -4
  96. package/package/components/util/app-shell.svelte +26 -27
  97. package/package/components/util/group.svelte +2 -2
  98. package/package/components/util/modal.svelte +220 -0
  99. package/package/components/util/modal.svelte.d.ts +83 -0
  100. package/package/components/util/popup.svelte +81 -127
  101. package/package/components/util/popup.svelte.d.ts +22 -18
  102. package/package/components/util/portal.svelte +1 -1
  103. package/package/index.d.ts +12 -0
  104. package/package/index.js +12 -0
  105. package/package/locales/en.d.ts +1 -0
  106. package/package/locales/en.js +1 -0
  107. package/package/locales/ja.d.ts +1 -0
  108. package/package/locales/ja.js +1 -0
  109. package/package/services/group.js +51 -13
  110. package/package/styles/core.scss +9 -26
  111. package/package/styles/variables.scss +12 -0
  112. package/package/typedef.d.ts +1 -0
  113. package/package/typedef.js +5 -0
  114. package/package.json +97 -1
@@ -0,0 +1,34 @@
1
+ /** @typedef {typeof __propDef.props} GridCellProps */
2
+ /** @typedef {typeof __propDef.events} GridCellEvents */
3
+ /** @typedef {typeof __propDef.slots} GridCellSlots */
4
+ /**
5
+ * The interactive version of `<TableCell>`.
6
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td
7
+ * @see https://w3c.github.io/aria/#gridcell
8
+ */
9
+ export default class GridCell extends SvelteComponent<{
10
+ [x: string]: any;
11
+ class?: string;
12
+ }, {
13
+ [evt: string]: CustomEvent<any>;
14
+ }, {
15
+ default: {};
16
+ }> {
17
+ }
18
+ export type GridCellProps = typeof __propDef.props;
19
+ export type GridCellEvents = typeof __propDef.events;
20
+ export type GridCellSlots = typeof __propDef.slots;
21
+ import { SvelteComponent } from "svelte";
22
+ declare const __propDef: {
23
+ props: {
24
+ [x: string]: any;
25
+ class?: string;
26
+ };
27
+ events: {
28
+ [evt: string]: CustomEvent<any>;
29
+ };
30
+ slots: {
31
+ default: {};
32
+ };
33
+ };
34
+ export {};
@@ -0,0 +1,22 @@
1
+ <!--
2
+ @component
3
+ The interactive version of `<TableColHeader>`.
4
+ @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th
5
+ @see https://w3c.github.io/aria/#columnheader
6
+ -->
7
+ <script>
8
+ /**
9
+ * The `class` attribute on the wrapper element.
10
+ * @type {string}
11
+ */
12
+ let className = '';
13
+ export { className as class };
14
+ </script>
15
+
16
+ <div role="columnheader" class="sui grid-col-header {className}" {...$$restProps}>
17
+ <slot />
18
+ </div>
19
+
20
+ <style>.grid-col-header {
21
+ display: table-cell;
22
+ }</style>
@@ -0,0 +1,34 @@
1
+ /** @typedef {typeof __propDef.props} GridColHeaderProps */
2
+ /** @typedef {typeof __propDef.events} GridColHeaderEvents */
3
+ /** @typedef {typeof __propDef.slots} GridColHeaderSlots */
4
+ /**
5
+ * The interactive version of `<TableColHeader>`.
6
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th
7
+ * @see https://w3c.github.io/aria/#columnheader
8
+ */
9
+ export default class GridColHeader extends SvelteComponent<{
10
+ [x: string]: any;
11
+ class?: string;
12
+ }, {
13
+ [evt: string]: CustomEvent<any>;
14
+ }, {
15
+ default: {};
16
+ }> {
17
+ }
18
+ export type GridColHeaderProps = typeof __propDef.props;
19
+ export type GridColHeaderEvents = typeof __propDef.events;
20
+ export type GridColHeaderSlots = typeof __propDef.slots;
21
+ import { SvelteComponent } from "svelte";
22
+ declare const __propDef: {
23
+ props: {
24
+ [x: string]: any;
25
+ class?: string;
26
+ };
27
+ events: {
28
+ [evt: string]: CustomEvent<any>;
29
+ };
30
+ slots: {
31
+ default: {};
32
+ };
33
+ };
34
+ export {};
@@ -0,0 +1,27 @@
1
+ <!--
2
+ @component
3
+ The interactive version of `<TableFoot>`.
4
+ @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tfoot
5
+ @see https://w3c.github.io/aria/#rowgroup
6
+ -->
7
+ <script>
8
+ /**
9
+ * The `class` attribute on the wrapper element.
10
+ * @type {string}
11
+ */
12
+ let className = '';
13
+ export { className as class };
14
+ </script>
15
+
16
+ <div
17
+ role="rowgroup"
18
+ class="sui grid-foot {className}"
19
+ aria-roledescription="grid foot"
20
+ {...$$restProps}
21
+ >
22
+ <slot />
23
+ </div>
24
+
25
+ <style>.grid-foot {
26
+ display: table-footer-group;
27
+ }</style>
@@ -0,0 +1,34 @@
1
+ /** @typedef {typeof __propDef.props} GridFootProps */
2
+ /** @typedef {typeof __propDef.events} GridFootEvents */
3
+ /** @typedef {typeof __propDef.slots} GridFootSlots */
4
+ /**
5
+ * The interactive version of `<TableFoot>`.
6
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tfoot
7
+ * @see https://w3c.github.io/aria/#rowgroup
8
+ */
9
+ export default class GridFoot extends SvelteComponent<{
10
+ [x: string]: any;
11
+ class?: string;
12
+ }, {
13
+ [evt: string]: CustomEvent<any>;
14
+ }, {
15
+ default: {};
16
+ }> {
17
+ }
18
+ export type GridFootProps = typeof __propDef.props;
19
+ export type GridFootEvents = typeof __propDef.events;
20
+ export type GridFootSlots = typeof __propDef.slots;
21
+ import { SvelteComponent } from "svelte";
22
+ declare const __propDef: {
23
+ props: {
24
+ [x: string]: any;
25
+ class?: string;
26
+ };
27
+ events: {
28
+ [evt: string]: CustomEvent<any>;
29
+ };
30
+ slots: {
31
+ default: {};
32
+ };
33
+ };
34
+ export {};
@@ -0,0 +1,27 @@
1
+ <!--
2
+ @component
3
+ The interactive version of `<TableThead>`.
4
+ @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/thead
5
+ @see https://w3c.github.io/aria/#rowgroup
6
+ -->
7
+ <script>
8
+ /**
9
+ * The `class` attribute on the wrapper element.
10
+ * @type {string}
11
+ */
12
+ let className = '';
13
+ export { className as class };
14
+ </script>
15
+
16
+ <div
17
+ role="rowgroup"
18
+ class="sui grid-head {className}"
19
+ aria-roledescription="grid head"
20
+ {...$$restProps}
21
+ >
22
+ <slot />
23
+ </div>
24
+
25
+ <style>.grid-head {
26
+ display: table-header-group;
27
+ }</style>
@@ -0,0 +1,34 @@
1
+ /** @typedef {typeof __propDef.props} GridHeadProps */
2
+ /** @typedef {typeof __propDef.events} GridHeadEvents */
3
+ /** @typedef {typeof __propDef.slots} GridHeadSlots */
4
+ /**
5
+ * The interactive version of `<TableThead>`.
6
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/thead
7
+ * @see https://w3c.github.io/aria/#rowgroup
8
+ */
9
+ export default class GridHead extends SvelteComponent<{
10
+ [x: string]: any;
11
+ class?: string;
12
+ }, {
13
+ [evt: string]: CustomEvent<any>;
14
+ }, {
15
+ default: {};
16
+ }> {
17
+ }
18
+ export type GridHeadProps = typeof __propDef.props;
19
+ export type GridHeadEvents = typeof __propDef.events;
20
+ export type GridHeadSlots = typeof __propDef.slots;
21
+ import { SvelteComponent } from "svelte";
22
+ declare const __propDef: {
23
+ props: {
24
+ [x: string]: any;
25
+ class?: string;
26
+ };
27
+ events: {
28
+ [evt: string]: CustomEvent<any>;
29
+ };
30
+ slots: {
31
+ default: {};
32
+ };
33
+ };
34
+ export {};
@@ -0,0 +1,23 @@
1
+ <!--
2
+ @component
3
+ The interactive version of `<TableRowHeader>`.
4
+ @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th
5
+ @see https://w3c.github.io/aria/#rowheader
6
+ -->
7
+ <script>
8
+ /**
9
+ * The `class` attribute on the wrapper element.
10
+ * @type {string}
11
+ */
12
+ let className = '';
13
+ export { className as class };
14
+ </script>
15
+
16
+ <div role="rowheader" class="sui grid-row-header {className}" {...$$restProps}>
17
+ <slot />
18
+ </div>
19
+
20
+ <style>.grid-row-header {
21
+ display: table-cell;
22
+ height: var(--sui-secondary-row-height);
23
+ }</style>
@@ -0,0 +1,34 @@
1
+ /** @typedef {typeof __propDef.props} GridRowHeaderProps */
2
+ /** @typedef {typeof __propDef.events} GridRowHeaderEvents */
3
+ /** @typedef {typeof __propDef.slots} GridRowHeaderSlots */
4
+ /**
5
+ * The interactive version of `<TableRowHeader>`.
6
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th
7
+ * @see https://w3c.github.io/aria/#rowheader
8
+ */
9
+ export default class GridRowHeader extends SvelteComponent<{
10
+ [x: string]: any;
11
+ class?: string;
12
+ }, {
13
+ [evt: string]: CustomEvent<any>;
14
+ }, {
15
+ default: {};
16
+ }> {
17
+ }
18
+ export type GridRowHeaderProps = typeof __propDef.props;
19
+ export type GridRowHeaderEvents = typeof __propDef.events;
20
+ export type GridRowHeaderSlots = typeof __propDef.slots;
21
+ import { SvelteComponent } from "svelte";
22
+ declare const __propDef: {
23
+ props: {
24
+ [x: string]: any;
25
+ class?: string;
26
+ };
27
+ events: {
28
+ [evt: string]: CustomEvent<any>;
29
+ };
30
+ slots: {
31
+ default: {};
32
+ };
33
+ };
34
+ export {};
@@ -0,0 +1,37 @@
1
+ <!--
2
+ @component
3
+ The interactive version of `<TableRow>`.
4
+ @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tr
5
+ @see https://w3c.github.io/aria/#row
6
+ -->
7
+ <script>
8
+ /**
9
+ * The `class` attribute on the wrapper element.
10
+ * @type {string}
11
+ */
12
+ let className = '';
13
+ export { className as class };
14
+ /**
15
+ * Whether to select the widget. An alias of the `aria-selected` attribute.
16
+ * @type {boolean}
17
+ */
18
+ export let selected = false;
19
+ </script>
20
+
21
+ <div
22
+ role="row"
23
+ class="sui grid-row {className}"
24
+ tabindex="0"
25
+ aria-selected={selected}
26
+ {...$$restProps}
27
+ on:click
28
+ on:select
29
+ on:change
30
+ >
31
+ <slot />
32
+ </div>
33
+
34
+ <style>.grid-row {
35
+ display: table-row;
36
+ height: var(--sui-primary-row-height);
37
+ }</style>
@@ -0,0 +1,44 @@
1
+ /** @typedef {typeof __propDef.props} GridRowProps */
2
+ /** @typedef {typeof __propDef.events} GridRowEvents */
3
+ /** @typedef {typeof __propDef.slots} GridRowSlots */
4
+ /**
5
+ * The interactive version of `<TableRow>`.
6
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/tr
7
+ * @see https://w3c.github.io/aria/#row
8
+ */
9
+ export default class GridRow extends SvelteComponent<{
10
+ [x: string]: any;
11
+ class?: string;
12
+ selected?: boolean;
13
+ }, {
14
+ click: MouseEvent;
15
+ select: Event;
16
+ change: Event;
17
+ } & {
18
+ [evt: string]: CustomEvent<any>;
19
+ }, {
20
+ default: {};
21
+ }> {
22
+ }
23
+ export type GridRowProps = typeof __propDef.props;
24
+ export type GridRowEvents = typeof __propDef.events;
25
+ export type GridRowSlots = typeof __propDef.slots;
26
+ import { SvelteComponent } from "svelte";
27
+ declare const __propDef: {
28
+ props: {
29
+ [x: string]: any;
30
+ class?: string;
31
+ selected?: boolean;
32
+ };
33
+ events: {
34
+ click: MouseEvent;
35
+ select: Event;
36
+ change: Event;
37
+ } & {
38
+ [evt: string]: CustomEvent<any>;
39
+ };
40
+ slots: {
41
+ default: {};
42
+ };
43
+ };
44
+ export {};
@@ -0,0 +1,52 @@
1
+ <!--
2
+ @component
3
+ The interactive version of `<Table>`.
4
+ @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/table
5
+ @see https://w3c.github.io/aria/#grid
6
+ -->
7
+ <script>
8
+ import { activateGroup } from '../../services/group';
9
+
10
+ /**
11
+ * The `class` attribute on the wrapper element.
12
+ * @type {string}
13
+ */
14
+ let className = '';
15
+ export { className as class };
16
+ /**
17
+ * Whether to allow selecting more than one `<GridRow>` and/or `<GridCell>`. An alias of the
18
+ * `aria-multiselectable` attribute.
19
+ * @type {boolean}
20
+ */
21
+ export let multiple = false;
22
+
23
+ /** @type {HTMLElement?} */
24
+ export let element = undefined;
25
+ </script>
26
+
27
+ <div
28
+ role="grid"
29
+ class="sui grid {className}"
30
+ aria-multiselectable={multiple}
31
+ {...$$restProps}
32
+ bind:this={element}
33
+ use:activateGroup
34
+ on:change
35
+ >
36
+ <slot />
37
+ </div>
38
+
39
+ <style>.grid {
40
+ display: table;
41
+ margin: var(--sui-focus-ring-width);
42
+ width: calc(100% - var(--sui-focus-ring-width) * 2);
43
+ }
44
+ .grid:global(.data) {
45
+ border-collapse: collapse;
46
+ }
47
+ .grid:global(.data) :global(.grid-col-header),
48
+ .grid:global(.data) :global(.grid-row-header),
49
+ .grid:global(.data) :global(.grid-cell) {
50
+ border: 1px solid var(--sui-secondary-border-color);
51
+ padding: 8px 8px;
52
+ }</style>
@@ -0,0 +1,42 @@
1
+ /** @typedef {typeof __propDef.props} GridProps */
2
+ /** @typedef {typeof __propDef.events} GridEvents */
3
+ /** @typedef {typeof __propDef.slots} GridSlots */
4
+ /**
5
+ * The interactive version of `<Table>`.
6
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/table
7
+ * @see https://w3c.github.io/aria/#grid
8
+ */
9
+ export default class Grid extends SvelteComponent<{
10
+ [x: string]: any;
11
+ class?: string;
12
+ multiple?: boolean;
13
+ element?: HTMLElement;
14
+ }, {
15
+ change: Event;
16
+ } & {
17
+ [evt: string]: CustomEvent<any>;
18
+ }, {
19
+ default: {};
20
+ }> {
21
+ }
22
+ export type GridProps = typeof __propDef.props;
23
+ export type GridEvents = typeof __propDef.events;
24
+ export type GridSlots = typeof __propDef.slots;
25
+ import { SvelteComponent } from "svelte";
26
+ declare const __propDef: {
27
+ props: {
28
+ [x: string]: any;
29
+ class?: string;
30
+ multiple?: boolean;
31
+ element?: HTMLElement | null;
32
+ };
33
+ events: {
34
+ change: Event;
35
+ } & {
36
+ [evt: string]: CustomEvent<any>;
37
+ };
38
+ slots: {
39
+ default: {};
40
+ };
41
+ };
42
+ export {};
@@ -5,22 +5,21 @@
5
5
  -->
6
6
  <script>
7
7
  /**
8
- * CSS class name on the button.
8
+ * The `class` attribute on the `span` element.
9
9
  * @type {string}
10
10
  */
11
11
  let className = '';
12
-
13
12
  export { className as class };
14
-
13
+ /**
14
+ * Icon name, e.g. `search`, `expand_more`, `close`, etc.
15
+ * @type {string}
16
+ */
15
17
  export let name = '';
16
-
17
- export let label = '';
18
18
  </script>
19
19
 
20
20
  <span
21
21
  class="sui icon material-symbols-outlined {className}"
22
- aria-label={label || undefined}
23
- aria-hidden={label ? undefined : true}
22
+ aria-hidden={!('aria-label' in $$restProps)}
24
23
  {...$$restProps}
25
24
  >
26
25
  {name}
@@ -9,7 +9,6 @@ export default class Icon extends SvelteComponent<{
9
9
  [x: string]: any;
10
10
  class?: string;
11
11
  name?: string;
12
- label?: string;
13
12
  }, {
14
13
  [evt: string]: CustomEvent<any>;
15
14
  }, {}> {
@@ -23,7 +22,6 @@ declare const __propDef: {
23
22
  [x: string]: any;
24
23
  class?: string;
25
24
  name?: string;
26
- label?: string;
27
25
  };
28
26
  events: {
29
27
  [evt: string]: CustomEvent<any>;
@@ -48,9 +48,9 @@
48
48
  </script>
49
49
 
50
50
  <div
51
+ role="listbox"
51
52
  class="sui listbox {className}"
52
53
  tabindex={disabled ? -1 : 0}
53
- role="listbox"
54
54
  hidden={hidden || undefined}
55
55
  aria-hidden={hidden}
56
56
  aria-disabled={disabled}
@@ -63,7 +63,7 @@
63
63
  on:click
64
64
  on:change
65
65
  >
66
- <div class="inner" inert={disabled}>
66
+ <div role="none" class="inner" inert={disabled}>
67
67
  <slot />
68
68
  </div>
69
69
  </div>
@@ -71,7 +71,7 @@
71
71
  <style>[role=listbox] {
72
72
  display: flex;
73
73
  flex-direction: column;
74
- margin: 0;
74
+ margin: var(--sui-focus-ring-width);
75
75
  border-width: 1px;
76
76
  border-color: var(--sui-listbox-border-color);
77
77
  border-radius: var(--sui-listbox-border-radius);
@@ -34,22 +34,23 @@
34
34
  </script>
35
35
 
36
36
  <div
37
- {id}
38
- class="sui optgroup {className}"
39
37
  role="group"
38
+ {id}
39
+ class="sui option-group {className}"
40
40
  hidden={hidden || undefined}
41
41
  aria-hidden={hidden}
42
42
  aria-disabled={disabled}
43
43
  aria-labelledby="{id}-label"
44
+ aria-roledescription="option group"
44
45
  {...$$restProps}
45
46
  >
46
- <div id="{id}-label" class="label" role="none">{label}</div>
47
- <div class="inner" inert={disabled}>
47
+ <div role="none" id="{id}-label" class="label">{label}</div>
48
+ <div role="none" class="inner" inert={disabled}>
48
49
  <slot />
49
50
  </div>
50
51
  </div>
51
52
 
52
- <style>.optgroup:not(:first-child) {
53
+ <style>.option-group:not(:first-child) {
53
54
  margin: 12px 0 0;
54
55
  }
55
56
 
@@ -5,7 +5,6 @@
5
5
  @see https://w3c.github.io/aria/#option
6
6
  -->
7
7
  <script>
8
- import { onMount } from 'svelte';
9
8
  import Button from '../button/button.svelte';
10
9
  import Icon from '../icon/icon.svelte';
11
10
 
@@ -40,37 +39,12 @@
40
39
  * @type {string | undefined}
41
40
  */
42
41
  export let value = undefined;
43
-
44
- /**
45
- * Reference to the `Button` component.
46
- * @type {Button | undefined}
47
- */
48
- let buttonComponent;
49
-
50
- /**
51
- * Event listener for the `select` event fired in `group.js`.
52
- * @param {CustomEvent} event `select` event.
53
- */
54
- const listener = ({ type }) => {
55
- selected = type === 'select';
56
- };
57
-
58
- onMount(() => {
59
- buttonComponent.element.addEventListener('select', listener);
60
- buttonComponent.element.addEventListener('unselect', listener);
61
-
62
- return () => {
63
- buttonComponent.element.removeEventListener('select', listener);
64
- buttonComponent.element.removeEventListener('unselect', listener);
65
- };
66
- });
67
42
  </script>
68
43
 
69
- <div class="sui option {className}" hidden={hidden || undefined}>
44
+ <div role="none" class="sui option {className}" hidden={hidden || undefined}>
70
45
  <Button
71
- bind:this={buttonComponent}
72
- tabindex="-1"
73
46
  role="option"
47
+ tabindex="-1"
74
48
  aria-selected={selected}
75
49
  {label}
76
50
  {value}
@@ -84,6 +58,10 @@
84
58
  on:dragend
85
59
  on:drop
86
60
  on:select
61
+ on:change
62
+ on:change={(event) => {
63
+ selected = /** @type {CustomEvent} */ (event).detail.selected;
64
+ }}
87
65
  >
88
66
  {#if selected}
89
67
  <Icon class="check" name="check" />
@@ -105,6 +83,7 @@
105
83
  display: flex;
106
84
  justify-content: space-between;
107
85
  gap: 4px;
86
+ margin: 0 !important;
108
87
  border-radius: var(--sui-option-border-radius);
109
88
  padding: var(--sui-option-padding);
110
89
  width: 100%;
@@ -21,6 +21,7 @@ export default class Option extends SvelteComponent<{
21
21
  dragend: DragEvent;
22
22
  drop: DragEvent;
23
23
  select: Event;
24
+ change: Event;
24
25
  } & {
25
26
  [evt: string]: CustomEvent<any>;
26
27
  }, {
@@ -54,6 +55,7 @@ declare const __propDef: {
54
55
  dragend: DragEvent;
55
56
  drop: DragEvent;
56
57
  select: Event;
58
+ change: Event;
57
59
  } & {
58
60
  [evt: string]: CustomEvent<any>;
59
61
  };