@sveltia/ui 0.9.0 → 0.10.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 (118) hide show
  1. package/package/components/alert/alert.svelte +2 -4
  2. package/package/components/alert/alert.svelte.d.ts +2 -2
  3. package/package/components/button/button.svelte +78 -26
  4. package/package/components/button/button.svelte.d.ts +73 -63
  5. package/package/components/button/select-button-group.svelte +6 -1
  6. package/package/components/button/select-button-group.svelte.d.ts +13 -13
  7. package/package/components/button/select-button.svelte +2 -1
  8. package/package/components/button/select-button.svelte.d.ts +19 -19
  9. package/package/components/button/split-button.svelte +10 -2
  10. package/package/components/button/split-button.svelte.d.ts +19 -11
  11. package/package/components/calendar/calendar.svelte +2 -2
  12. package/package/components/calendar/calendar.svelte.d.ts +2 -2
  13. package/package/components/checkbox/checkbox-group.svelte.d.ts +7 -7
  14. package/package/components/checkbox/checkbox.svelte +8 -6
  15. package/package/components/checkbox/checkbox.svelte.d.ts +22 -16
  16. package/package/components/dialog/alert-dialog.svelte.d.ts +6 -6
  17. package/package/components/dialog/confirmation-dialog.svelte.d.ts +8 -8
  18. package/package/components/dialog/dialog.svelte +17 -15
  19. package/package/components/dialog/dialog.svelte.d.ts +30 -24
  20. package/package/components/dialog/prompt-dialog.svelte +1 -1
  21. package/package/components/dialog/prompt-dialog.svelte.d.ts +12 -12
  22. package/package/components/disclosure/disclosure.svelte +6 -1
  23. package/package/components/disclosure/disclosure.svelte.d.ts +29 -19
  24. package/package/components/divider/divider.svelte.d.ts +5 -5
  25. package/package/components/divider/spacer.svelte.d.ts +4 -4
  26. package/package/components/drawer/drawer.svelte +34 -16
  27. package/package/components/drawer/drawer.svelte.d.ts +22 -16
  28. package/package/components/grid/grid-body.svelte.d.ts +4 -4
  29. package/package/components/grid/grid-cell.svelte.d.ts +2 -2
  30. package/package/components/grid/grid-col-header.svelte.d.ts +2 -2
  31. package/package/components/grid/grid-foot.svelte.d.ts +2 -2
  32. package/package/components/grid/grid-head.svelte.d.ts +2 -2
  33. package/package/components/grid/grid-row-header.svelte.d.ts +2 -2
  34. package/package/components/grid/grid-row.svelte +10 -2
  35. package/package/components/grid/grid-row.svelte.d.ts +8 -8
  36. package/package/components/grid/grid.svelte +7 -2
  37. package/package/components/grid/grid.svelte.d.ts +8 -8
  38. package/package/components/icon/icon.svelte.d.ts +4 -4
  39. package/package/components/listbox/listbox.svelte +11 -5
  40. package/package/components/listbox/listbox.svelte.d.ts +15 -15
  41. package/package/components/listbox/option-group.svelte.d.ts +7 -7
  42. package/package/components/listbox/option.svelte +4 -2
  43. package/package/components/listbox/option.svelte.d.ts +15 -13
  44. package/package/components/menu/menu-button.svelte +8 -2
  45. package/package/components/menu/menu-button.svelte.d.ts +20 -18
  46. package/package/components/menu/menu-item-checkbox.svelte +1 -1
  47. package/package/components/menu/menu-item-checkbox.svelte.d.ts +16 -16
  48. package/package/components/menu/menu-item-group.svelte +1 -1
  49. package/package/components/menu/menu-item-group.svelte.d.ts +7 -7
  50. package/package/components/menu/menu-item-radio.svelte +1 -1
  51. package/package/components/menu/menu-item-radio.svelte.d.ts +16 -16
  52. package/package/components/menu/menu-item.svelte +32 -19
  53. package/package/components/menu/menu-item.svelte.d.ts +32 -18
  54. package/package/components/menu/menu.svelte +13 -7
  55. package/package/components/menu/menu.svelte.d.ts +7 -7
  56. package/package/components/radio/radio-group.svelte +6 -1
  57. package/package/components/radio/radio-group.svelte.d.ts +15 -15
  58. package/package/components/radio/radio.svelte +1 -1
  59. package/package/components/radio/radio.svelte.d.ts +14 -14
  60. package/package/components/select/combobox.svelte +10 -8
  61. package/package/components/select/combobox.svelte.d.ts +22 -16
  62. package/package/components/select/select.svelte.d.ts +12 -12
  63. package/package/components/slider/slider.svelte +26 -22
  64. package/package/components/slider/slider.svelte.d.ts +23 -23
  65. package/package/components/switch/switch.svelte +5 -0
  66. package/package/components/switch/switch.svelte.d.ts +18 -14
  67. package/package/components/table/table-body.svelte.d.ts +4 -4
  68. package/package/components/table/table-cell.svelte.d.ts +2 -2
  69. package/package/components/table/table-col-header.svelte.d.ts +2 -2
  70. package/package/components/table/table-foot.svelte.d.ts +2 -2
  71. package/package/components/table/table-head.svelte.d.ts +2 -2
  72. package/package/components/table/table-row-header.svelte.d.ts +2 -2
  73. package/package/components/table/table-row.svelte.d.ts +2 -2
  74. package/package/components/table/table.svelte.d.ts +2 -2
  75. package/package/components/tabs/tab-box.svelte +30 -0
  76. package/package/components/tabs/tab-box.svelte.d.ts +33 -0
  77. package/package/components/tabs/tab-list.svelte +105 -22
  78. package/package/components/tabs/tab-list.svelte.d.ts +10 -10
  79. package/package/components/tabs/tab-panel.svelte +6 -2
  80. package/package/components/tabs/tab-panel.svelte.d.ts +2 -2
  81. package/package/components/tabs/tab-panels.svelte +32 -0
  82. package/package/components/tabs/tab-panels.svelte.d.ts +31 -0
  83. package/package/components/tabs/tab.svelte.d.ts +11 -11
  84. package/package/components/text-field/markdown-editor.svelte.d.ts +12 -12
  85. package/package/components/text-field/number-input.svelte +11 -4
  86. package/package/components/text-field/number-input.svelte.d.ts +40 -20
  87. package/package/components/text-field/password-input.svelte +7 -3
  88. package/package/components/text-field/password-input.svelte.d.ts +30 -18
  89. package/package/components/text-field/search-bar.svelte +7 -3
  90. package/package/components/text-field/search-bar.svelte.d.ts +46 -36
  91. package/package/components/text-field/text-area.svelte +4 -2
  92. package/package/components/text-field/text-area.svelte.d.ts +25 -21
  93. package/package/components/text-field/text-input.svelte +17 -2
  94. package/package/components/text-field/text-input.svelte.d.ts +53 -53
  95. package/package/components/toast/toast.svelte +16 -12
  96. package/package/components/toast/toast.svelte.d.ts +8 -8
  97. package/package/components/toolbar/toolbar.svelte.d.ts +8 -8
  98. package/package/components/util/app-shell.svelte +22 -6
  99. package/package/components/util/app-shell.svelte.d.ts +2 -0
  100. package/package/components/util/group.svelte.d.ts +5 -5
  101. package/package/components/util/modal.svelte +26 -9
  102. package/package/components/util/modal.svelte.d.ts +34 -34
  103. package/package/components/util/popup.svelte +35 -13
  104. package/package/components/util/popup.svelte.d.ts +33 -28
  105. package/package/components/util/portal.svelte +5 -3
  106. package/package/components/util/portal.svelte.d.ts +2 -2
  107. package/package/index.d.ts +5 -3
  108. package/package/index.js +6 -4
  109. package/package/services/events.d.ts +1 -1
  110. package/package/services/events.js +11 -8
  111. package/package/services/group.js +100 -30
  112. package/package/services/popup.d.ts +27 -13
  113. package/package/services/popup.js +23 -9
  114. package/package/services/util.d.ts +2 -2
  115. package/package/services/util.js +5 -5
  116. package/package/styles/core.scss +1 -0
  117. package/package/styles/variables.scss +1 -0
  118. package/package.json +39 -23
@@ -45,14 +45,18 @@
45
45
  export let keepContent = false;
46
46
  /**
47
47
  * A reference to the `<dialog>` element.
48
- * @type {HTMLDialogElement}
48
+ * @type {HTMLDialogElement | undefined}
49
49
  */
50
50
  export let dialog = undefined;
51
51
  /**
52
52
  * Close the modal.
53
- * @param {string} returnValue Return value to be used for `<dialog>`.
53
+ * @param {string} returnValue - Return value to be used for `<dialog>`.
54
54
  */
55
55
  export const close = (returnValue) => {
56
+ if (!dialog) {
57
+ return;
58
+ }
59
+
56
60
  dialog.returnValue = returnValue;
57
61
  open = false;
58
62
  };
@@ -69,7 +73,8 @@
69
73
  const waitForTransition = async () =>
70
74
  new Promise((resolve) => {
71
75
  /**
72
- * @param {TransitionEvent} event `transition` event.
76
+ * Transition event listener.
77
+ * @param {TransitionEvent} event - `transition` event.
73
78
  */
74
79
  const listener = (event) => {
75
80
  if (event.target === dialog) {
@@ -78,13 +83,17 @@
78
83
  }
79
84
  };
80
85
 
81
- dialog.addEventListener('transitionend', listener);
86
+ dialog?.addEventListener('transitionend', listener);
82
87
  });
83
88
 
84
89
  /**
85
90
  * Show the modal.
86
91
  */
87
92
  const openDialog = async () => {
93
+ if (!dialog) {
94
+ return;
95
+ }
96
+
88
97
  dispatch('opening');
89
98
  (document.querySelector('.sui.app-shell') ?? document.body).appendChild(dialog);
90
99
  showContent = true;
@@ -102,6 +111,10 @@
102
111
  * Hide the modal.
103
112
  */
104
113
  const closeDialog = async () => {
114
+ if (!dialog) {
115
+ return;
116
+ }
117
+
105
118
  dispatch('closing');
106
119
  setActiveClass = false;
107
120
  setOpenClass = false;
@@ -110,12 +123,12 @@
110
123
  dialog.close();
111
124
  dialog.remove();
112
125
 
113
- if (['ok', 'cancel'].includes(dialog?.returnValue)) {
126
+ if (['ok', 'cancel'].includes(dialog.returnValue)) {
114
127
  dispatch(dialog?.returnValue);
115
128
  }
116
129
 
117
- dispatch('close', dialog?.returnValue);
118
- dialog.returnValue = undefined;
130
+ dispatch('close', dialog.returnValue);
131
+ dialog.returnValue = '';
119
132
  };
120
133
 
121
134
  /**
@@ -138,7 +151,7 @@
138
151
  }
139
152
 
140
153
  onMount(() => {
141
- dialog.remove();
154
+ dialog?.remove();
142
155
 
143
156
  // onUnmount
144
157
  return () => {
@@ -157,7 +170,11 @@
157
170
  {...$$restProps}
158
171
  bind:this={dialog}
159
172
  on:click={({ target }) => {
160
- if (lightDismiss && /** @type {HTMLElement?} */ (target)?.matches('dialog')) {
173
+ if (
174
+ dialog &&
175
+ lightDismiss &&
176
+ /** @type {HTMLElement | undefined} */ (target)?.matches('dialog')
177
+ ) {
161
178
  dialog.returnValue = 'cancel';
162
179
  open = false;
163
180
  }
@@ -4,15 +4,15 @@
4
4
  /** A generic modal top-layer helper based on the HTML `<dialog>` element. */
5
5
  export default class Modal extends SvelteComponent<{
6
6
  [x: string]: any;
7
- class?: string;
8
- close?: (returnValue: string) => void;
9
- dialog?: HTMLDialogElement;
10
- role?: "dialog" | "none" | "alertdialog";
11
- open?: boolean;
12
- showBackdrop?: boolean;
13
- lightDismiss?: boolean;
14
- escapeDismiss?: boolean;
15
- keepContent?: boolean;
7
+ class?: string | undefined;
8
+ close?: ((returnValue: string) => void) | undefined;
9
+ dialog?: HTMLDialogElement | undefined;
10
+ role?: "dialog" | "none" | "alertdialog" | undefined;
11
+ open?: boolean | undefined;
12
+ showBackdrop?: boolean | undefined;
13
+ lightDismiss?: boolean | undefined;
14
+ escapeDismiss?: boolean | undefined;
15
+ keepContent?: boolean | undefined;
16
16
  }, {
17
17
  opening: CustomEvent<any>;
18
18
  open: CustomEvent<any>;
@@ -26,29 +26,29 @@ export default class Modal extends SvelteComponent<{
26
26
  }> {
27
27
  get close(): (returnValue: string) => void;
28
28
  /**accessor*/
29
- set class(arg: string);
30
- get class(): string;
29
+ set class(arg: string | undefined);
30
+ get class(): string | undefined;
31
31
  /**accessor*/
32
- set role(arg: "dialog" | "none" | "alertdialog");
33
- get role(): "dialog" | "none" | "alertdialog";
32
+ set role(arg: "dialog" | "none" | "alertdialog" | undefined);
33
+ get role(): "dialog" | "none" | "alertdialog" | undefined;
34
34
  /**accessor*/
35
- set open(arg: boolean);
36
- get open(): boolean;
35
+ set open(arg: boolean | undefined);
36
+ get open(): boolean | undefined;
37
37
  /**accessor*/
38
- set showBackdrop(arg: boolean);
39
- get showBackdrop(): boolean;
38
+ set showBackdrop(arg: boolean | undefined);
39
+ get showBackdrop(): boolean | undefined;
40
40
  /**accessor*/
41
- set lightDismiss(arg: boolean);
42
- get lightDismiss(): boolean;
41
+ set lightDismiss(arg: boolean | undefined);
42
+ get lightDismiss(): boolean | undefined;
43
43
  /**accessor*/
44
- set escapeDismiss(arg: boolean);
45
- get escapeDismiss(): boolean;
44
+ set escapeDismiss(arg: boolean | undefined);
45
+ get escapeDismiss(): boolean | undefined;
46
46
  /**accessor*/
47
- set keepContent(arg: boolean);
48
- get keepContent(): boolean;
47
+ set keepContent(arg: boolean | undefined);
48
+ get keepContent(): boolean | undefined;
49
49
  /**accessor*/
50
- set dialog(arg: HTMLDialogElement);
51
- get dialog(): HTMLDialogElement;
50
+ set dialog(arg: HTMLDialogElement | undefined);
51
+ get dialog(): HTMLDialogElement | undefined;
52
52
  }
53
53
  export type ModalProps = typeof __propDef.props;
54
54
  export type ModalEvents = typeof __propDef.events;
@@ -57,15 +57,15 @@ import { SvelteComponent } from "svelte";
57
57
  declare const __propDef: {
58
58
  props: {
59
59
  [x: string]: any;
60
- class?: string;
61
- close?: (returnValue: string) => void;
62
- dialog?: HTMLDialogElement;
63
- role?: 'dialog' | 'alertdialog' | 'none';
64
- open?: boolean;
65
- showBackdrop?: boolean;
66
- lightDismiss?: boolean;
67
- escapeDismiss?: boolean;
68
- keepContent?: boolean;
60
+ class?: string | undefined;
61
+ close?: ((returnValue: string) => void) | undefined;
62
+ dialog?: HTMLDialogElement | undefined;
63
+ role?: "dialog" | "none" | "alertdialog" | undefined;
64
+ open?: boolean | undefined;
65
+ showBackdrop?: boolean | undefined;
66
+ lightDismiss?: boolean | undefined;
67
+ escapeDismiss?: boolean | undefined;
68
+ keepContent?: boolean | undefined;
69
69
  };
70
70
  events: {
71
71
  opening: CustomEvent<any>;
@@ -22,14 +22,19 @@
22
22
  * @type {import('svelte/store').Writable<boolean>}
23
23
  */
24
24
  export let open = writable(false);
25
+ /**
26
+ * Whether to show the backdrop.
27
+ * @type {boolean}
28
+ */
29
+ export let showBackdrop = false;
25
30
  /**
26
31
  * A reference to the anchor element that opens the popup. Typically a `<button>`.
27
- * @type {HTMLElement}
32
+ * @type {HTMLElement | undefined}
28
33
  */
29
34
  export let anchor;
30
35
  /**
31
36
  * A reference to the content element.
32
- * @type {HTMLElement}
37
+ * @type {HTMLElement | undefined}
33
38
  */
34
39
  export let content = undefined;
35
40
  /**
@@ -39,7 +44,7 @@
39
44
  export let position = 'bottom-left';
40
45
  /**
41
46
  * The base element of {@link position}. If omitted, this will be {@link anchor}.
42
- * @type {HTMLElement}
47
+ * @type {HTMLElement | undefined}
43
48
  */
44
49
  export let positionBaseElement = undefined;
45
50
  /**
@@ -62,7 +67,7 @@
62
67
  /**
63
68
  * The type of the content displayed in the popup, defined with the `aria-haspopup` attribute on
64
69
  * the anchor element.
65
- * @type {string}
70
+ * @type {string | undefined}
66
71
  * @see https://w3c.github.io/aria/#aria-haspopup
67
72
  */
68
73
  let contentType;
@@ -80,7 +85,7 @@
80
85
  $: {
81
86
  if (anchor && modal?.dialog) {
82
87
  ({ open, style } = activatePopup(anchor, modal.dialog, position, positionBaseElement));
83
- contentType = anchor.getAttribute('aria-haspopup');
88
+ contentType = anchor.getAttribute('aria-haspopup') ?? undefined;
84
89
  }
85
90
  }
86
91
 
@@ -95,7 +100,7 @@
95
100
  role="none"
96
101
  class="popup"
97
102
  bind:open={$open}
98
- showBackdrop={touch}
103
+ showBackdrop={showBackdrop ?? touch}
99
104
  lightDismiss={true}
100
105
  keepContent={true}
101
106
  bind:this={modal}
@@ -109,6 +114,10 @@
109
114
  on:open={async () => {
110
115
  await sleep(100);
111
116
 
117
+ if (!content) {
118
+ return;
119
+ }
120
+
112
121
  const target = /** @type {HTMLElement} */ (
113
122
  content.querySelector('[tabindex]:not([aria-disabled="true"])')
114
123
  );
@@ -147,17 +156,30 @@
147
156
  backdrop-filter: blur(16px);
148
157
  transition-property: opacity, transform;
149
158
  }
150
- .content.listbox, .content.menu {
151
- border-width: 1px;
152
- border-style: solid;
153
- border-color: var(--sui-secondary-border-color);
154
- border-radius: 4px;
159
+ .content.menu {
160
+ border-width: var(--sui-menu-border-width, 1px);
161
+ border-style: var(--sui-menu-border-style, solid);
162
+ border-color: var(--sui-menu-border-width, var(--sui-secondary-border-color));
163
+ border-radius: var(--sui-menu-border-radius, 4px);
164
+ padding: var(--sui-menu-padding, 4px);
155
165
  }
156
- .content.listbox :global(.sui.listbox),
157
- .content.listbox :global(.sui.menu), .content.menu :global(.sui.listbox),
158
166
  .content.menu :global(.sui.menu) {
159
167
  border-width: 0;
160
168
  border-radius: 0;
169
+ padding: 0;
170
+ background-color: transparent;
171
+ }
172
+ .content.listbox {
173
+ border-width: var(--sui-listbox-border-width, 1px);
174
+ border-style: var(--sui-listbox-border-style, solid);
175
+ border-color: var(--sui-listbox-border-width, var(--sui-secondary-border-color));
176
+ border-radius: var(--sui-listbox-border-radius, 4px);
177
+ padding: var(--sui-listbox-padding, 4px);
178
+ }
179
+ .content.listbox :global(.sui.listbox) {
180
+ border-width: 0;
181
+ border-radius: 0;
182
+ padding: 0;
161
183
  background-color: transparent;
162
184
  }
163
185
  .content.touch {
@@ -4,13 +4,14 @@
4
4
  /** Generic popup helper. */
5
5
  export default class Popup extends SvelteComponent<{
6
6
  [x: string]: any;
7
- anchor: HTMLElement;
8
- class?: string;
9
- position?: PopupPosition;
10
- open?: import("svelte/store").Writable<boolean>;
11
- content?: HTMLElement;
12
- positionBaseElement?: HTMLElement;
13
- touchOptimized?: boolean;
7
+ anchor: HTMLElement | undefined;
8
+ class?: string | undefined;
9
+ position?: PopupPosition | undefined;
10
+ open?: import("svelte/store").Writable<boolean> | undefined;
11
+ showBackdrop?: boolean | undefined;
12
+ content?: HTMLElement | undefined;
13
+ positionBaseElement?: HTMLElement | undefined;
14
+ touchOptimized?: boolean | undefined;
14
15
  }, {
15
16
  opening: CustomEvent<any>;
16
17
  open: CustomEvent<any>;
@@ -24,26 +25,29 @@ export default class Popup extends SvelteComponent<{
24
25
  default: {};
25
26
  }> {
26
27
  /**accessor*/
27
- set class(arg: string);
28
- get class(): string;
28
+ set class(arg: string | undefined);
29
+ get class(): string | undefined;
29
30
  /**accessor*/
30
- set open(arg: import("svelte/store").Writable<boolean>);
31
- get open(): import("svelte/store").Writable<boolean>;
31
+ set open(arg: import("svelte/store").Writable<boolean> | undefined);
32
+ get open(): import("svelte/store").Writable<boolean> | undefined;
32
33
  /**accessor*/
33
- set anchor(arg: HTMLElement);
34
- get anchor(): HTMLElement;
34
+ set showBackdrop(arg: boolean | undefined);
35
+ get showBackdrop(): boolean | undefined;
35
36
  /**accessor*/
36
- set content(arg: HTMLElement);
37
- get content(): HTMLElement;
37
+ set anchor(arg: HTMLElement | undefined);
38
+ get anchor(): HTMLElement | undefined;
38
39
  /**accessor*/
39
- set position(arg: PopupPosition);
40
- get position(): PopupPosition;
40
+ set content(arg: HTMLElement | undefined);
41
+ get content(): HTMLElement | undefined;
41
42
  /**accessor*/
42
- set positionBaseElement(arg: HTMLElement);
43
- get positionBaseElement(): HTMLElement;
43
+ set position(arg: PopupPosition | undefined);
44
+ get position(): PopupPosition | undefined;
44
45
  /**accessor*/
45
- set touchOptimized(arg: boolean);
46
- get touchOptimized(): boolean;
46
+ set positionBaseElement(arg: HTMLElement | undefined);
47
+ get positionBaseElement(): HTMLElement | undefined;
48
+ /**accessor*/
49
+ set touchOptimized(arg: boolean | undefined);
50
+ get touchOptimized(): boolean | undefined;
47
51
  }
48
52
  export type PopupProps = typeof __propDef.props;
49
53
  export type PopupEvents = typeof __propDef.events;
@@ -52,13 +56,14 @@ import { SvelteComponent } from "svelte";
52
56
  declare const __propDef: {
53
57
  props: {
54
58
  [x: string]: any;
55
- anchor: HTMLElement;
56
- class?: string;
57
- position?: PopupPosition;
58
- open?: import('svelte/store').Writable<boolean>;
59
- content?: HTMLElement;
60
- positionBaseElement?: HTMLElement;
61
- touchOptimized?: boolean;
59
+ anchor: HTMLElement | undefined;
60
+ class?: string | undefined;
61
+ position?: PopupPosition | undefined;
62
+ open?: import("svelte/store").Writable<boolean> | undefined;
63
+ showBackdrop?: boolean | undefined;
64
+ content?: HTMLElement | undefined;
65
+ positionBaseElement?: HTMLElement | undefined;
66
+ touchOptimized?: boolean | undefined;
62
67
  };
63
68
  events: {
64
69
  opening: CustomEvent<any>;
@@ -13,15 +13,17 @@
13
13
 
14
14
  export { className as class };
15
15
 
16
- /** @type {HTMLElement} */
16
+ /** @type {HTMLElement | undefined} */
17
17
  let ref;
18
18
 
19
19
  onMount(() => {
20
- document.body.appendChild(ref);
20
+ if (ref) {
21
+ document.body.appendChild(ref);
22
+ }
21
23
  });
22
24
 
23
25
  onDestroy(() => {
24
- ref.remove();
26
+ ref?.remove();
25
27
  });
26
28
  </script>
27
29
 
@@ -4,7 +4,7 @@
4
4
  /** @see https://github.com/sveltejs/svelte/issues/3088 */
5
5
  export default class Portal extends SvelteComponent<{
6
6
  [x: string]: any;
7
- class?: string;
7
+ class?: string | undefined;
8
8
  }, {
9
9
  [evt: string]: CustomEvent<any>;
10
10
  }, {
@@ -18,7 +18,7 @@ import { SvelteComponent } from "svelte";
18
18
  declare const __propDef: {
19
19
  props: {
20
20
  [x: string]: any;
21
- class?: string;
21
+ class?: string | undefined;
22
22
  };
23
23
  events: {
24
24
  [evt: string]: CustomEvent<any>;
@@ -1,7 +1,7 @@
1
1
  export function initLocales({ fallbackLocale, initialLocale }?: {
2
- fallbackLocale?: string;
3
- initialLocale?: string;
4
- }): void;
2
+ fallbackLocale?: string | undefined;
3
+ initialLocale?: string | undefined;
4
+ } | undefined): void;
5
5
  export { default as Alert } from "./components/alert/alert.svelte";
6
6
  export { default as Button } from "./components/button/button.svelte";
7
7
  export { default as SelectButtonGroup } from "./components/button/select-button-group.svelte";
@@ -50,8 +50,10 @@ export { default as TableHead } from "./components/table/table-head.svelte";
50
50
  export { default as TableRowHeader } from "./components/table/table-row-header.svelte";
51
51
  export { default as TableRow } from "./components/table/table-row.svelte";
52
52
  export { default as Table } from "./components/table/table.svelte";
53
+ export { default as TabBox } from "./components/tabs/tab-box.svelte";
53
54
  export { default as TabList } from "./components/tabs/tab-list.svelte";
54
55
  export { default as TabPanel } from "./components/tabs/tab-panel.svelte";
56
+ export { default as TabPanels } from "./components/tabs/tab-panels.svelte";
55
57
  export { default as Tab } from "./components/tabs/tab.svelte";
56
58
  export { default as MarkdownEditor } from "./components/text-field/markdown-editor.svelte";
57
59
  export { default as NumberInput } from "./components/text-field/number-input.svelte";
package/package/index.js CHANGED
@@ -2,9 +2,9 @@ import { addMessages, init } from 'svelte-i18n';
2
2
 
3
3
  /**
4
4
  * Load strings and initialize the locales.
5
- * @param {object} [init] Initialize options.
6
- * @param {string} [init.fallbackLocale] Fallback locale.
7
- * @param {string} [init.initialLocale] Initial locale.
5
+ * @param {object} [init] - Initialize options.
6
+ * @param {string} [init.fallbackLocale] - Fallback locale.
7
+ * @param {string} [init.initialLocale] - Initial locale.
8
8
  * @see https://github.com/kaisermann/svelte-i18n/blob/main/docs/Getting%20Started.md
9
9
  * @see https://vitejs.dev/guide/features.html#glob-import
10
10
  */
@@ -13,7 +13,7 @@ export const initLocales = ({ fallbackLocale = 'en', initialLocale = 'en' } = {}
13
13
  const modules = import.meta.glob('./locales/*.js', { eager: true });
14
14
 
15
15
  Object.entries(modules).forEach(([path, { strings }]) => {
16
- const [, locale] = path.match(/([a-zA-Z-]+)\.js/);
16
+ const [, locale] = /** @type {string[]} */ (path.match(/([a-zA-Z-]+)\.js/));
17
17
 
18
18
  // Add `_sui` suffix to avoid collision with app localization
19
19
  addMessages(locale, /** @type {any} */ ({ _sui: strings }));
@@ -75,8 +75,10 @@ export { default as TableHead } from './components/table/table-head.svelte';
75
75
  export { default as TableRowHeader } from './components/table/table-row-header.svelte';
76
76
  export { default as TableRow } from './components/table/table-row.svelte';
77
77
  export { default as Table } from './components/table/table.svelte';
78
+ export { default as TabBox } from './components/tabs/tab-box.svelte';
78
79
  export { default as TabList } from './components/tabs/tab-list.svelte';
79
80
  export { default as TabPanel } from './components/tabs/tab-panel.svelte';
81
+ export { default as TabPanels } from './components/tabs/tab-panels.svelte';
80
82
  export { default as Tab } from './components/tabs/tab.svelte';
81
83
  export { default as MarkdownEditor } from './components/text-field/markdown-editor.svelte';
82
84
  export { default as NumberInput } from './components/text-field/number-input.svelte';
@@ -1,3 +1,3 @@
1
1
  export function isMac(): boolean;
2
2
  export function matchShortcuts(event: KeyboardEvent, shortcuts: string): boolean;
3
- export function activateKeyShortcuts(element: (HTMLInputElement | HTMLButtonElement), shortcuts?: string): import('svelte/action').ActionReturn;
3
+ export function activateKeyShortcuts(element: (HTMLInputElement | HTMLButtonElement), shortcuts?: string | undefined): import('svelte/action').ActionReturn;
@@ -8,8 +8,8 @@ export const isMac = () =>
8
8
 
9
9
  /**
10
10
  * Whether the event matches the given keyboard shortcuts.
11
- * @param {KeyboardEvent} event `keydown` or `keypress` event.
12
- * @param {string} shortcuts Keyboard shortcuts like `A` or `Ctrl+S`.
11
+ * @param {KeyboardEvent} event - `keydown` or `keypress` event.
12
+ * @param {string} shortcuts - Keyboard shortcuts like `A` or `Ctrl+S`.
13
13
  * @returns {boolean} Result.
14
14
  * @see https://w3c.github.io/aria/#aria-keyshortcuts
15
15
  */
@@ -47,10 +47,10 @@ export const matchShortcuts = (event, shortcuts) => {
47
47
 
48
48
  /**
49
49
  * Activate keyboard shortcuts.
50
- * @param {(HTMLInputElement | HTMLButtonElement)} element Element.
51
- * @param {string} [shortcuts] Keyboard shortcuts like `A` or `Accel+S` to focus and click the text
52
- * field or button. Multiple shortcuts can be defined space-separated. The `Accel` modifier will be
53
- * replaced with `Ctrl` on Windows/Linux and `Command` on macOS.
50
+ * @param {(HTMLInputElement | HTMLButtonElement)} element - Element.
51
+ * @param {string} [shortcuts] - Keyboard shortcuts like `A` or `Accel+S` to focus and click the
52
+ * text field or button. Multiple shortcuts can be defined space-separated. The `Accel` modifier
53
+ * will be replaced with `Ctrl` on Windows/Linux and `Command` on macOS.
54
54
  * @returns {import('svelte/action').ActionReturn} Actions.
55
55
  */
56
56
  export const activateKeyShortcuts = (element, shortcuts = '') => {
@@ -59,10 +59,13 @@ export const activateKeyShortcuts = (element, shortcuts = '') => {
59
59
 
60
60
  /**
61
61
  * Handle the event.
62
- * @param {KeyboardEvent} event `keydown` event.
62
+ * @param {KeyboardEvent} event - `keydown` event.
63
63
  */
64
64
  const handler = (event) => {
65
- if (!!element.offsetParent && matchShortcuts(event, platformKeyShortcuts)) {
65
+ if (
66
+ !!element.offsetParent &&
67
+ matchShortcuts(event, /** @type {string} */ (platformKeyShortcuts))
68
+ ) {
66
69
  event.preventDefault();
67
70
 
68
71
  if (!element.disabled) {