@sveltia/ui 0.15.16 → 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 (157) hide show
  1. package/package/components/alert/alert.svelte +22 -7
  2. package/package/components/alert/alert.svelte.d.ts +47 -31
  3. package/package/components/button/button-group.svelte +16 -6
  4. package/package/components/button/button-group.svelte.d.ts +38 -28
  5. package/package/components/button/button.svelte +41 -136
  6. package/package/components/button/button.svelte.d.ts +20 -162
  7. package/package/components/button/select-button-group.svelte +31 -37
  8. package/package/components/button/select-button-group.svelte.d.ts +91 -39
  9. package/package/components/button/select-button.svelte +19 -62
  10. package/package/components/button/select-button.svelte.d.ts +31 -65
  11. package/package/components/button/split-button.svelte +37 -47
  12. package/package/components/button/split-button.svelte.d.ts +54 -60
  13. package/package/components/calendar/calendar.svelte +80 -55
  14. package/package/components/calendar/calendar.svelte.d.ts +30 -26
  15. package/package/components/checkbox/checkbox-group.svelte +23 -20
  16. package/package/components/checkbox/checkbox-group.svelte.d.ts +64 -32
  17. package/package/components/checkbox/checkbox.svelte +57 -67
  18. package/package/components/checkbox/checkbox.svelte.d.ts +81 -53
  19. package/package/components/dialog/alert-dialog.svelte +9 -36
  20. package/package/components/dialog/alert-dialog.svelte.d.ts +20 -49
  21. package/package/components/dialog/confirmation-dialog.svelte +9 -41
  22. package/package/components/dialog/confirmation-dialog.svelte.d.ts +20 -51
  23. package/package/components/dialog/dialog.svelte +60 -105
  24. package/package/components/dialog/dialog.svelte.d.ts +19 -86
  25. package/package/components/dialog/prompt-dialog.svelte +32 -61
  26. package/package/components/dialog/prompt-dialog.svelte.d.ts +53 -65
  27. package/package/components/disclosure/disclosure.svelte +39 -34
  28. package/package/components/disclosure/disclosure.svelte.d.ts +88 -57
  29. package/package/components/divider/divider.svelte +18 -14
  30. package/package/components/divider/divider.svelte.d.ts +48 -26
  31. package/package/components/divider/spacer.svelte +13 -8
  32. package/package/components/divider/spacer.svelte.d.ts +37 -25
  33. package/package/components/drawer/drawer.svelte +63 -76
  34. package/package/components/drawer/drawer.svelte.d.ts +116 -70
  35. package/package/components/grid/grid-body.svelte +15 -10
  36. package/package/components/grid/grid-body.svelte.d.ts +45 -29
  37. package/package/components/grid/grid-cell.svelte +16 -6
  38. package/package/components/grid/grid-cell.svelte.d.ts +38 -28
  39. package/package/components/grid/grid-col-header.svelte +16 -6
  40. package/package/components/grid/grid-col-header.svelte.d.ts +38 -28
  41. package/package/components/grid/grid-foot.svelte +16 -6
  42. package/package/components/grid/grid-foot.svelte.d.ts +38 -28
  43. package/package/components/grid/grid-head.svelte +16 -6
  44. package/package/components/grid/grid-head.svelte.d.ts +38 -28
  45. package/package/components/grid/grid-row-header.svelte +16 -6
  46. package/package/components/grid/grid-row-header.svelte.d.ts +38 -28
  47. package/package/components/grid/grid-row.svelte +19 -23
  48. package/package/components/grid/grid-row.svelte.d.ts +63 -43
  49. package/package/components/grid/grid.svelte +26 -25
  50. package/package/components/grid/grid.svelte.d.ts +71 -37
  51. package/package/components/icon/icon.svelte +14 -9
  52. package/package/components/icon/icon.svelte.d.ts +37 -25
  53. package/package/components/listbox/listbox.svelte +46 -52
  54. package/package/components/listbox/listbox.svelte.d.ts +117 -45
  55. package/package/components/listbox/option-group.svelte +23 -19
  56. package/package/components/listbox/option-group.svelte.d.ts +64 -32
  57. package/package/components/listbox/option.svelte +44 -57
  58. package/package/components/listbox/option.svelte.d.ts +68 -74
  59. package/package/components/menu/menu-button.svelte +42 -63
  60. package/package/components/menu/menu-button.svelte.d.ts +35 -62
  61. package/package/components/menu/menu-item-checkbox.svelte +29 -41
  62. package/package/components/menu/menu-item-checkbox.svelte.d.ts +20 -49
  63. package/package/components/menu/menu-item-group.svelte +22 -19
  64. package/package/components/menu/menu-item-group.svelte.d.ts +56 -32
  65. package/package/components/menu/menu-item-radio.svelte +29 -41
  66. package/package/components/menu/menu-item-radio.svelte.d.ts +20 -49
  67. package/package/components/menu/menu-item.svelte +66 -75
  68. package/package/components/menu/menu-item.svelte.d.ts +19 -68
  69. package/package/components/menu/menu.svelte +25 -22
  70. package/package/components/menu/menu.svelte.d.ts +65 -35
  71. package/package/components/radio/radio-group.svelte +36 -42
  72. package/package/components/radio/radio-group.svelte.d.ts +100 -40
  73. package/package/components/radio/radio.svelte +45 -48
  74. package/package/components/radio/radio.svelte.d.ts +111 -47
  75. package/package/components/select/combobox.svelte +76 -101
  76. package/package/components/select/combobox.svelte.d.ts +19 -54
  77. package/package/components/select/select-tags.svelte +48 -59
  78. package/package/components/select/select-tags.svelte.d.ts +127 -45
  79. package/package/components/select/select.svelte +18 -37
  80. package/package/components/select/select.svelte.d.ts +20 -45
  81. package/package/components/slider/slider.svelte +71 -68
  82. package/package/components/slider/slider.svelte.d.ts +159 -47
  83. package/package/components/switch/switch.svelte +36 -46
  84. package/package/components/switch/switch.svelte.d.ts +98 -42
  85. package/package/components/table/table-body.svelte +15 -11
  86. package/package/components/table/table-body.svelte.d.ts +45 -29
  87. package/package/components/table/table-cell.svelte +16 -6
  88. package/package/components/table/table-cell.svelte.d.ts +38 -28
  89. package/package/components/table/table-col-header.svelte +16 -6
  90. package/package/components/table/table-col-header.svelte.d.ts +38 -28
  91. package/package/components/table/table-foot.svelte +16 -6
  92. package/package/components/table/table-foot.svelte.d.ts +38 -28
  93. package/package/components/table/table-head.svelte +16 -6
  94. package/package/components/table/table-head.svelte.d.ts +38 -28
  95. package/package/components/table/table-row-header.svelte +16 -6
  96. package/package/components/table/table-row-header.svelte.d.ts +38 -28
  97. package/package/components/table/table-row.svelte +16 -6
  98. package/package/components/table/table-row.svelte.d.ts +38 -28
  99. package/package/components/table/table.svelte +16 -6
  100. package/package/components/table/table.svelte.d.ts +38 -28
  101. package/package/components/tabs/tab-box.svelte +16 -9
  102. package/package/components/tabs/tab-box.svelte.d.ts +47 -27
  103. package/package/components/tabs/tab-list.svelte +36 -35
  104. package/package/components/tabs/tab-list.svelte.d.ts +80 -38
  105. package/package/components/tabs/tab-panel.svelte +16 -6
  106. package/package/components/tabs/tab-panel.svelte.d.ts +38 -28
  107. package/package/components/tabs/tab-panels.svelte +16 -6
  108. package/package/components/tabs/tab-panels.svelte.d.ts +38 -26
  109. package/package/components/tabs/tab.svelte +28 -25
  110. package/package/components/tabs/tab.svelte.d.ts +31 -55
  111. package/package/components/text-editor/lexical-root.svelte +38 -32
  112. package/package/components/text-editor/lexical-root.svelte.d.ts +91 -29
  113. package/package/components/text-editor/text-editor.svelte +63 -79
  114. package/package/components/text-editor/text-editor.svelte.d.ts +114 -36
  115. package/package/components/text-editor/toolbar/editor-toolbar.svelte +41 -24
  116. package/package/components/text-editor/toolbar/editor-toolbar.svelte.d.ts +49 -23
  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 +30 -22
  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 +20 -23
  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 +30 -22
  123. package/package/components/text-field/number-input.svelte +63 -81
  124. package/package/components/text-field/number-input.svelte.d.ts +62 -68
  125. package/package/components/text-field/password-input.svelte +38 -57
  126. package/package/components/text-field/password-input.svelte.d.ts +30 -58
  127. package/package/components/text-field/search-bar.svelte +45 -62
  128. package/package/components/text-field/search-bar.svelte.d.ts +42 -87
  129. package/package/components/text-field/text-area.svelte +38 -54
  130. package/package/components/text-field/text-area.svelte.d.ts +116 -50
  131. package/package/components/text-field/text-input.svelte +30 -86
  132. package/package/components/text-field/text-input.svelte.d.ts +20 -105
  133. package/package/components/toast/toast.svelte +36 -30
  134. package/package/components/toast/toast.svelte.d.ts +65 -33
  135. package/package/components/toolbar/toolbar.svelte +25 -25
  136. package/package/components/toolbar/toolbar.svelte.d.ts +72 -34
  137. package/package/components/util/app-shell.svelte +22 -10
  138. package/package/components/util/app-shell.svelte.d.ts +40 -34
  139. package/package/components/util/group.svelte +20 -15
  140. package/package/components/util/group.svelte.d.ts +55 -31
  141. package/package/components/util/modal.svelte +89 -105
  142. package/package/components/util/modal.svelte.d.ts +24 -82
  143. package/package/components/util/placeholder.svelte +21 -0
  144. package/package/components/util/placeholder.svelte.d.ts +34 -0
  145. package/package/components/util/popup.svelte +65 -62
  146. package/package/components/util/popup.svelte.d.ts +104 -82
  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 +16 -23
  152. package/package/components/util/portal.svelte +0 -36
  153. package/package/components/util/portal.svelte.d.ts +0 -32
  154. /package/package/services/{events.d.ts → events.svelte.d.ts} +0 -0
  155. /package/package/services/{events.js → events.svelte.js} +0 -0
  156. /package/package/services/{group.d.ts → group.svelte.d.ts} +0 -0
  157. /package/package/services/{popup.d.ts → popup.svelte.d.ts} +0 -0
@@ -1,25 +1,33 @@
1
- /** @typedef {typeof __propDef.props} ToggleBlockMenuItemProps */
2
- /** @typedef {typeof __propDef.events} ToggleBlockMenuItemEvents */
3
- /** @typedef {typeof __propDef.slots} ToggleBlockMenuItemSlots */
4
- export default class ToggleBlockMenuItem extends SvelteComponent<{
1
+ export default ToggleBlockMenuItem;
2
+ type ToggleBlockMenuItem = SvelteComponent<Props & Record<string, any>, {
3
+ [evt: string]: CustomEvent<any>;
4
+ }, {}> & {
5
+ $$bindings?: "" | undefined;
6
+ };
7
+ declare const ToggleBlockMenuItem: $$__sveltets_2_IsomorphicComponent<{
8
+ /**
9
+ * - Button type.
10
+ */
5
11
  type: import("../../../typedefs").TextEditorBlockType;
6
- }, {
12
+ } & Record<string, any>, {
7
13
  [evt: string]: CustomEvent<any>;
8
- }, {}> {
9
- }
10
- export type ToggleBlockMenuItemProps = typeof __propDef.props;
11
- export type ToggleBlockMenuItemEvents = typeof __propDef.events;
12
- export type ToggleBlockMenuItemSlots = typeof __propDef.slots;
13
- import { SvelteComponent } from "svelte";
14
- declare const __propDef: {
15
- props: {
16
- type: import("../../../typedefs").TextEditorBlockType;
17
- };
18
- events: {
19
- [evt: string]: CustomEvent<any>;
20
- };
21
- slots: {};
22
- exports?: undefined;
23
- bindings?: undefined;
14
+ }, {}, {}, "">;
15
+ type Props = {
16
+ /**
17
+ * - Button type.
18
+ */
19
+ type: import("../../../typedefs").TextEditorBlockType;
24
20
  };
25
- export {};
21
+ 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> {
22
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
23
+ $$bindings?: Bindings;
24
+ } & Exports;
25
+ (internal: unknown, props: Props & {
26
+ $$events?: Events;
27
+ $$slots?: Slots;
28
+ }): Exports & {
29
+ $set?: any;
30
+ $on?: any;
31
+ };
32
+ z_$$bindings?: Bindings;
33
+ }
@@ -12,77 +12,56 @@
12
12
  import TextInput from './text-input.svelte';
13
13
 
14
14
  /**
15
- * The `class` attribute on the wrapper element.
16
- * @type {string}
15
+ * @typedef {object} Props
16
+ * @property {number | undefined} [min] - Minimum allowed value.
17
+ * @property {number | undefined} [max] - Maximum allowed value.
18
+ * @property {number} [step] - Value to be added or removed when using the up/down arrow key or
19
+ * button.
20
+ * @property {import('svelte').Snippet} [increaseIcon] - Increase icon slot content.
21
+ * @property {import('svelte').Snippet} [decreaseIcon] - Decrease icon slot content.
17
22
  */
18
- let className = '';
19
- export { className as class };
20
- /**
21
- * Make the text input container flexible.
22
- * @type {boolean}
23
- */
24
- export let flex = false;
25
- /**
26
- * Whether to hide the widget. An alias of the `aria-hidden` attribute.
27
- * @type {boolean | undefined}
28
- */
29
- export let hidden = undefined;
30
- /**
31
- * Whether to disable the widget. An alias of the `aria-disabled` attribute.
32
- * @type {boolean}
33
- */
34
- export let disabled = false;
35
- /**
36
- * Whether to disable the widget. An alias of `aria-readonly` attribute.
37
- * @type {boolean}
38
- */
39
- export let readonly = false;
40
- /**
41
- * Whether to mark the widget required. An alias of the `aria-required` attribute.
42
- * @type {boolean}
43
- */
44
- export let required = false;
45
- /**
46
- * Whether to mark the widget invalid. An alias of the `aria-invalid` attribute.
47
- * @type {boolean}
48
- */
49
- export let invalid = false;
50
- /**
51
- * Input value.
52
- * @type {string | undefined}
53
- */
54
- export let value = undefined;
55
- /**
56
- * Minimum allowed value.
57
- * @type {number | undefined}
58
- */
59
- export let min = undefined;
60
- /**
61
- * Maximum allowed value.
62
- * @type {number | undefined}
63
- */
64
- export let max = undefined;
23
+
65
24
  /**
66
- * Value to be added or removed when using the up/down arrow key or button.
25
+ * @type {import('../../typedefs').TextInputProps & import('../../typedefs').CommonEventHandlers &
26
+ * import('../../typedefs').InputEventHandlers & Props & Record<string, any>}
67
27
  */
68
- export let step = 1;
28
+ let {
29
+ /* eslint-disable prefer-const */
30
+ value = $bindable(),
31
+ invalid = $bindable(false),
32
+ flex = false,
33
+ min = undefined,
34
+ max = undefined,
35
+ step = 1,
36
+ class: className,
37
+ hidden = false,
38
+ disabled = false,
39
+ readonly = false,
40
+ required = false,
41
+ children,
42
+ increaseIcon,
43
+ decreaseIcon,
44
+ onChange,
45
+ ...restProps
46
+ /* eslint-enable prefer-const */
47
+ } = $props();
69
48
 
70
49
  const id = generateElementId('input');
71
- let edited = false;
72
-
73
- $: maximumFractionDigits = String(step).split('.')[1]?.length || 0;
74
- $: isMin = typeof min === 'number' && Number(value || 0) <= min;
75
- $: isMax = typeof max === 'number' && Number(value || 0) >= max;
50
+ let edited = $state(false);
76
51
 
77
- $: invalid =
78
- (required && edited && (value === undefined || value === '')) ||
79
- (value !== undefined &&
80
- value !== '' &&
81
- (Number.isNaN(Number(value)) ||
82
- (typeof min === 'number' && Number(value || 0) < min) ||
83
- (typeof max === 'number' && Number(value || 0) > max)));
52
+ const maximumFractionDigits = $derived(String(step).split('.')[1]?.length || 0);
53
+ const isMin = $derived(typeof min === 'number' && Number(value || 0) <= min);
54
+ const isMax = $derived(typeof max === 'number' && Number(value || 0) >= max);
84
55
 
85
- let component;
56
+ $effect(() => {
57
+ invalid =
58
+ (required && edited && (value === undefined || value === '')) ||
59
+ (value !== undefined &&
60
+ value !== '' &&
61
+ (Number.isNaN(Number(value)) ||
62
+ (typeof min === 'number' && Number(value || 0) < min) ||
63
+ (typeof max === 'number' && Number(value || 0) > max)));
64
+ });
86
65
 
87
66
  /**
88
67
  * Decrease the number.
@@ -113,7 +92,7 @@
113
92
  class:flex
114
93
  class:disabled
115
94
  class:readonly
116
- hidden={hidden || undefined}
95
+ {hidden}
117
96
  >
118
97
  <div role="none" class="buttons">
119
98
  <Button
@@ -121,29 +100,38 @@
121
100
  disabled={disabled || readonly || Number.isNaN(Number(value)) || isMax}
122
101
  aria-label={$_('_sui.number_input.increase')}
123
102
  aria-controls={id}
124
- on:click={() => {
103
+ onclick={() => {
125
104
  increase();
126
105
  }}
127
106
  >
128
- <slot name="increase-icon" slot="start-icon">
129
- <Icon name="expand_less" />
130
- </slot>
107
+ {#snippet startIcon()}
108
+ {#if increaseIcon}
109
+ {@render increaseIcon()}
110
+ {:else}
111
+ <Icon name="expand_less" />
112
+ {/if}
113
+ {/snippet}
131
114
  </Button>
132
115
  <Button
133
116
  iconic
134
117
  disabled={disabled || readonly || Number.isNaN(Number(value)) || isMin}
135
118
  aria-label={$_('_sui.number_input.decrease')}
136
119
  aria-controls={id}
137
- on:click={() => {
120
+ onclick={() => {
138
121
  decrease();
139
122
  }}
140
123
  >
141
- <slot name="decrease-icon" slot="start-icon">
142
- <Icon name="expand_more" />
143
- </slot>
124
+ {#snippet startIcon()}
125
+ {#if decreaseIcon}
126
+ {@render decreaseIcon()}
127
+ {:else}
128
+ <Icon name="expand_more" />
129
+ {/if}
130
+ {/snippet}
144
131
  </Button>
145
132
  </div>
146
133
  <TextInput
134
+ {...restProps}
147
135
  role="spinbutton"
148
136
  {id}
149
137
  bind:value
@@ -158,9 +146,7 @@
158
146
  aria-valuemin={min}
159
147
  aria-valuemax={max}
160
148
  inputmode={maximumFractionDigits > 0 ? 'decimal' : 'numeric'}
161
- {...$$restProps}
162
- bind:this={component}
163
- on:keydown={(event) => {
149
+ onkeydown={(event) => {
164
150
  const { key, ctrlKey, metaKey, altKey, shiftKey } = event;
165
151
  const hasModifier = shiftKey || altKey || ctrlKey || metaKey;
166
152
 
@@ -178,11 +164,7 @@
178
164
  edited = true;
179
165
  }
180
166
  }}
181
- on:keydown
182
- on:keyup
183
- on:keypress
184
- on:input
185
- on:change
167
+ {onChange}
186
168
  />
187
169
  </div>
188
170
 
@@ -1,78 +1,72 @@
1
- /** @typedef {typeof __propDef.props} NumberInputProps */
2
- /** @typedef {typeof __propDef.events} NumberInputEvents */
3
- /** @typedef {typeof __propDef.slots} NumberInputSlots */
1
+ export default NumberInput;
2
+ type NumberInput = SvelteComponent<TextInputProps & KeyboardEventHandlers & MouseEventHandlers & FocusEventHandlers & DragEventHandlers & InputEventHandlers & Props & Record<string, any>, {
3
+ [evt: string]: CustomEvent<any>;
4
+ }, {}> & {
5
+ $$bindings?: "invalid" | "value" | undefined;
6
+ };
4
7
  /**
5
8
  * The equivalent of the HTML `<input type="number">` element.
6
9
  * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/number
7
10
  * @see https://w3c.github.io/aria/#textbox
8
11
  */
9
- export default class NumberInput extends SvelteComponent<{
10
- [x: string]: any;
11
- class?: string | undefined;
12
- disabled?: boolean | undefined;
13
- invalid?: boolean | undefined;
14
- max?: number | undefined;
12
+ declare const NumberInput: $$__sveltets_2_IsomorphicComponent<import("../../typedefs").TextInputProps & import("../../typedefs").KeyboardEventHandlers & import("../../typedefs").MouseEventHandlers & import("../../typedefs").FocusEventHandlers & import("../../typedefs").DragEventHandlers & import("../../typedefs").InputEventHandlers & {
13
+ /**
14
+ * - Minimum allowed value.
15
+ */
15
16
  min?: number | undefined;
16
- required?: boolean | undefined;
17
+ /**
18
+ * - Maximum allowed value.
19
+ */
20
+ max?: number | undefined;
21
+ /**
22
+ * - Value to be added or removed when using the up/down arrow key or
23
+ * button.
24
+ */
17
25
  step?: number | undefined;
18
- value?: string | undefined;
19
- hidden?: boolean | undefined;
20
- readonly?: boolean | undefined;
21
- flex?: boolean | undefined;
22
- }, {
23
- keydown: KeyboardEvent;
24
- keyup: KeyboardEvent;
25
- keypress: KeyboardEvent;
26
- input: Event;
27
- change: Event;
28
- } & {
26
+ /**
27
+ * - Increase icon slot content.
28
+ */
29
+ increaseIcon?: import("svelte").Snippet<[]> | undefined;
30
+ /**
31
+ * - Decrease icon slot content.
32
+ */
33
+ decreaseIcon?: import("svelte").Snippet<[]> | undefined;
34
+ } & Record<string, any>, {
29
35
  [evt: string]: CustomEvent<any>;
30
- }, {
31
- 'increase-icon': {
32
- slot: string;
33
- };
34
- 'decrease-icon': {
35
- slot: string;
36
+ }, {}, {}, "invalid" | "value">;
37
+ type Props = {
38
+ /**
39
+ * - Minimum allowed value.
40
+ */
41
+ min?: number | undefined;
42
+ /**
43
+ * - Maximum allowed value.
44
+ */
45
+ max?: number | undefined;
46
+ /**
47
+ * - Value to be added or removed when using the up/down arrow key or
48
+ * button.
49
+ */
50
+ step?: number | undefined;
51
+ /**
52
+ * - Increase icon slot content.
53
+ */
54
+ increaseIcon?: import("svelte").Snippet<[]> | undefined;
55
+ /**
56
+ * - Decrease icon slot content.
57
+ */
58
+ decreaseIcon?: import("svelte").Snippet<[]> | undefined;
59
+ };
60
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
61
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
62
+ $$bindings?: Bindings;
63
+ } & Exports;
64
+ (internal: unknown, props: Props & {
65
+ $$events?: Events;
66
+ $$slots?: Slots;
67
+ }): Exports & {
68
+ $set?: any;
69
+ $on?: any;
36
70
  };
37
- }> {
71
+ z_$$bindings?: Bindings;
38
72
  }
39
- export type NumberInputProps = typeof __propDef.props;
40
- export type NumberInputEvents = typeof __propDef.events;
41
- export type NumberInputSlots = typeof __propDef.slots;
42
- import { SvelteComponent } from "svelte";
43
- declare const __propDef: {
44
- props: {
45
- [x: string]: any;
46
- class?: string | undefined;
47
- disabled?: boolean | undefined;
48
- invalid?: boolean | undefined;
49
- max?: number | undefined;
50
- min?: number | undefined;
51
- required?: boolean | undefined;
52
- step?: number | undefined;
53
- value?: string | undefined;
54
- hidden?: boolean | undefined;
55
- readonly?: boolean | undefined;
56
- flex?: boolean | undefined;
57
- };
58
- events: {
59
- keydown: KeyboardEvent;
60
- keyup: KeyboardEvent;
61
- keypress: KeyboardEvent;
62
- input: Event;
63
- change: Event;
64
- } & {
65
- [evt: string]: CustomEvent<any>;
66
- };
67
- slots: {
68
- 'increase-icon': {
69
- slot: string;
70
- };
71
- 'decrease-icon': {
72
- slot: string;
73
- };
74
- };
75
- exports?: undefined;
76
- bindings?: undefined;
77
- };
78
- export {};
@@ -13,60 +13,42 @@
13
13
  import TextInput from './text-input.svelte';
14
14
 
15
15
  /**
16
- * The `class` attribute on the wrapper element.
17
- * @type {string}
16
+ * @typedef {object} Props
17
+ * @property {import('svelte').Snippet} [visibilityIcon] - Visibility icon slot content.
18
18
  */
19
- let className = '';
20
- export { className as class };
21
- /**
22
- * Make the text input container flexible.
23
- * @type {boolean}
24
- */
25
- export let flex = false;
26
- /**
27
- * Whether to hide the widget. An alias of the `aria-hidden` attribute.
28
- * @type {boolean | undefined}
29
- */
30
- export let hidden = undefined;
31
- /**
32
- * Whether to disable the widget. An alias of the `aria-disabled` attribute.
33
- * @type {boolean}
34
- */
35
- export let disabled = false;
36
- /**
37
- * Whether to disable the widget. An alias of `aria-readonly` attribute.
38
- * @type {boolean}
39
- */
40
- export let readonly = false;
41
- /**
42
- * Whether to mark the widget required. An alias of the `aria-required` attribute.
43
- * @type {boolean}
44
- */
45
- export let required = false;
46
- /**
47
- * Whether to mark the widget invalid. An alias of the `aria-invalid` attribute.
48
- * @type {boolean}
49
- */
50
- export let invalid = false;
19
+
51
20
  /**
52
- * Input value.
53
- * @type {string | undefined}
21
+ * @type {import('../../typedefs').TextInputProps & import('../../typedefs').CommonEventHandlers &
22
+ * import('../../typedefs').InputEventHandlers & Props & Record<string, any>}
54
23
  */
55
- export let value = undefined;
24
+ let {
25
+ /* eslint-disable prefer-const */
26
+ value = $bindable(),
27
+ flex = false,
28
+ class: className,
29
+ hidden = false,
30
+ disabled = false,
31
+ readonly = false,
32
+ required = false,
33
+ invalid = false,
34
+ children,
35
+ visibilityIcon,
36
+ ...restProps
37
+ /* eslint-enable prefer-const */
38
+ } = $props();
56
39
 
57
40
  const id = generateElementId('input');
58
41
 
59
42
  /**
60
- * @type {TextInput}
43
+ * Reference to the `<input>` element.
44
+ * @type {HTMLInputElement | undefined}
61
45
  */
62
- let inputComponent;
63
- let passwordVisible = false;
46
+ let inputElement = $state();
47
+ let passwordVisible = $state(false);
64
48
 
65
- $: {
66
- if (inputComponent) {
67
- inputComponent.element?.setAttribute('type', passwordVisible ? 'text' : 'password');
68
- }
69
- }
49
+ $effect(() => {
50
+ inputElement?.setAttribute('type', passwordVisible ? 'text' : 'password');
51
+ });
70
52
  </script>
71
53
 
72
54
  <div
@@ -75,9 +57,11 @@
75
57
  class:flex
76
58
  class:disabled
77
59
  class:readonly
78
- hidden={hidden || undefined}
60
+ {hidden}
79
61
  >
80
62
  <TextInput
63
+ bind:element={inputElement}
64
+ {...restProps}
81
65
  {id}
82
66
  bind:value
83
67
  type="password"
@@ -88,13 +72,6 @@
88
72
  {readonly}
89
73
  {required}
90
74
  {invalid}
91
- {...$$restProps}
92
- bind:this={inputComponent}
93
- on:keydown
94
- on:keyup
95
- on:keypress
96
- on:input
97
- on:change
98
75
  />
99
76
  <Button
100
77
  iconic
@@ -104,13 +81,17 @@
104
81
  passwordVisible ? '_sui.password_input.hide_password' : '_sui.password_input.show_password',
105
82
  )}
106
83
  aria-controls={id}
107
- on:click={() => {
84
+ onclick={() => {
108
85
  passwordVisible = !passwordVisible;
109
86
  }}
110
87
  >
111
- <slot name="visibility-icon" slot="start-icon">
112
- <Icon name={passwordVisible ? 'visibility_off' : 'visibility'} />
113
- </slot>
88
+ {#snippet startIcon()}
89
+ {#if visibilityIcon}
90
+ {@render visibilityIcon()}
91
+ {:else}
92
+ <Icon name={passwordVisible ? 'visibility_off' : 'visibility'} />
93
+ {/if}
94
+ {/snippet}
114
95
  </Button>
115
96
  </div>
116
97
 
@@ -1,67 +1,39 @@
1
- /** @typedef {typeof __propDef.props} PasswordInputProps */
2
- /** @typedef {typeof __propDef.events} PasswordInputEvents */
3
- /** @typedef {typeof __propDef.slots} PasswordInputSlots */
1
+ export default PasswordInput;
2
+ type PasswordInput = SvelteComponent<TextInputProps & KeyboardEventHandlers & MouseEventHandlers & FocusEventHandlers & DragEventHandlers & InputEventHandlers & Props & Record<string, any>, {
3
+ [evt: string]: CustomEvent<any>;
4
+ }, {}> & {
5
+ $$bindings?: "value" | undefined;
6
+ };
4
7
  /**
5
8
  * The equivalent of the HTML `<input type="password">` element, but it comes with the Show/Hide
6
9
  * button.
7
10
  * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/password
8
11
  * @see https://w3c.github.io/aria/#textbox
9
12
  */
10
- export default class PasswordInput extends SvelteComponent<{
11
- [x: string]: any;
12
- class?: string | undefined;
13
- disabled?: boolean | undefined;
14
- invalid?: boolean | undefined;
15
- required?: boolean | undefined;
16
- value?: string | undefined;
17
- hidden?: boolean | undefined;
18
- readonly?: boolean | undefined;
19
- flex?: boolean | undefined;
20
- }, {
21
- keydown: KeyboardEvent;
22
- keyup: KeyboardEvent;
23
- keypress: KeyboardEvent;
24
- input: Event;
25
- change: Event;
26
- } & {
13
+ declare const PasswordInput: $$__sveltets_2_IsomorphicComponent<import("../../typedefs").TextInputProps & import("../../typedefs").KeyboardEventHandlers & import("../../typedefs").MouseEventHandlers & import("../../typedefs").FocusEventHandlers & import("../../typedefs").DragEventHandlers & import("../../typedefs").InputEventHandlers & {
14
+ /**
15
+ * - Visibility icon slot content.
16
+ */
17
+ visibilityIcon?: import("svelte").Snippet<[]> | undefined;
18
+ } & Record<string, any>, {
27
19
  [evt: string]: CustomEvent<any>;
28
- }, {
29
- 'visibility-icon': {
30
- slot: string;
20
+ }, {}, {}, "value">;
21
+ type Props = {
22
+ /**
23
+ * - Visibility icon slot content.
24
+ */
25
+ visibilityIcon?: import("svelte").Snippet<[]> | undefined;
26
+ };
27
+ 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> {
28
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
29
+ $$bindings?: Bindings;
30
+ } & Exports;
31
+ (internal: unknown, props: Props & {
32
+ $$events?: Events;
33
+ $$slots?: Slots;
34
+ }): Exports & {
35
+ $set?: any;
36
+ $on?: any;
31
37
  };
32
- }> {
38
+ z_$$bindings?: Bindings;
33
39
  }
34
- export type PasswordInputProps = typeof __propDef.props;
35
- export type PasswordInputEvents = typeof __propDef.events;
36
- export type PasswordInputSlots = typeof __propDef.slots;
37
- import { SvelteComponent } from "svelte";
38
- declare const __propDef: {
39
- props: {
40
- [x: string]: any;
41
- class?: string | undefined;
42
- disabled?: boolean | undefined;
43
- invalid?: boolean | undefined;
44
- required?: boolean | undefined;
45
- value?: string | undefined;
46
- hidden?: boolean | undefined;
47
- readonly?: boolean | undefined;
48
- flex?: boolean | undefined;
49
- };
50
- events: {
51
- keydown: KeyboardEvent;
52
- keyup: KeyboardEvent;
53
- keypress: KeyboardEvent;
54
- input: Event;
55
- change: Event;
56
- } & {
57
- [evt: string]: CustomEvent<any>;
58
- };
59
- slots: {
60
- 'visibility-icon': {
61
- slot: string;
62
- };
63
- };
64
- exports?: undefined;
65
- bindings?: undefined;
66
- };
67
- export {};