@geoffcox/sterling-svelte 1.0.12 → 2.0.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 (219) hide show
  1. package/dist/Button.svelte +8 -46
  2. package/dist/Button.svelte.d.ts +9 -65
  3. package/dist/Callout.svelte +47 -72
  4. package/dist/Callout.svelte.d.ts +14 -55
  5. package/dist/Callout.types.d.ts +11 -0
  6. package/dist/Checkbox.svelte +12 -48
  7. package/dist/Checkbox.svelte.d.ts +9 -62
  8. package/dist/Dialog.svelte +30 -38
  9. package/dist/Dialog.svelte.d.ts +13 -36
  10. package/dist/Dropdown.svelte +39 -71
  11. package/dist/Dropdown.svelte.d.ts +17 -76
  12. package/dist/Input.svelte +16 -50
  13. package/dist/Input.svelte.d.ts +12 -74
  14. package/dist/Label.svelte +55 -161
  15. package/dist/Label.svelte.d.ts +16 -81
  16. package/dist/Link.svelte +9 -41
  17. package/dist/Link.svelte.d.ts +11 -64
  18. package/dist/List.svelte +35 -85
  19. package/dist/List.svelte.d.ts +19 -74
  20. package/dist/List.types.d.ts +3 -11
  21. package/dist/ListItem.svelte +27 -56
  22. package/dist/ListItem.svelte.d.ts +12 -66
  23. package/dist/Menu.svelte +18 -45
  24. package/dist/Menu.svelte.d.ts +13 -63
  25. package/dist/MenuBar.svelte +36 -78
  26. package/dist/MenuBar.svelte.d.ts +12 -57
  27. package/dist/MenuButton.svelte +56 -85
  28. package/dist/MenuButton.svelte.d.ts +19 -70
  29. package/dist/MenuItem.svelte +107 -151
  30. package/dist/MenuItem.svelte.d.ts +21 -82
  31. package/dist/MenuItem.types.d.ts +1 -9
  32. package/dist/MenuSeparator.svelte +9 -7
  33. package/dist/MenuSeparator.svelte.d.ts +6 -20
  34. package/dist/Popover.svelte +45 -64
  35. package/dist/Popover.svelte.d.ts +14 -58
  36. package/dist/Progress.constants.d.ts +1 -1
  37. package/dist/Progress.constants.js +1 -1
  38. package/dist/Progress.svelte +24 -71
  39. package/dist/Progress.svelte.d.ts +11 -60
  40. package/dist/Progress.types.d.ts +3 -3
  41. package/dist/Radio.svelte +19 -92
  42. package/dist/Radio.svelte.d.ts +11 -63
  43. package/dist/Select.svelte +55 -94
  44. package/dist/Select.svelte.d.ts +19 -82
  45. package/dist/Slider.svelte +41 -98
  46. package/dist/Slider.svelte.d.ts +18 -65
  47. package/dist/Switch.svelte +29 -78
  48. package/dist/Switch.svelte.d.ts +20 -73
  49. package/dist/Tab.svelte +23 -66
  50. package/dist/Tab.svelte.d.ts +11 -70
  51. package/dist/TabList.svelte +50 -76
  52. package/dist/TabList.svelte.d.ts +17 -69
  53. package/dist/TabList.types.d.ts +3 -11
  54. package/dist/TextArea.svelte +17 -59
  55. package/dist/TextArea.svelte.d.ts +18 -68
  56. package/dist/Tooltip.svelte +23 -66
  57. package/dist/Tooltip.svelte.d.ts +9 -69
  58. package/dist/Tree.svelte +32 -83
  59. package/dist/Tree.svelte.d.ts +14 -66
  60. package/dist/Tree.types.d.ts +3 -11
  61. package/dist/TreeChevron.svelte +10 -49
  62. package/dist/TreeChevron.svelte.d.ts +8 -52
  63. package/dist/TreeItem.svelte +105 -159
  64. package/dist/TreeItem.svelte.d.ts +21 -100
  65. package/dist/TreeItem.types.d.ts +2 -12
  66. package/dist/actions/clickOutside.d.ts +1 -0
  67. package/dist/actions/clickOutside.js +1 -0
  68. package/dist/actions/extraClass.d.ts +8 -0
  69. package/dist/actions/extraClass.js +14 -0
  70. package/dist/index.d.ts +4 -12
  71. package/dist/index.js +3 -9
  72. package/package.json +20 -22
  73. package/dist/Button.constants.d.ts +0 -2
  74. package/dist/Button.constants.js +0 -2
  75. package/dist/Button.types.d.ts +0 -6
  76. package/dist/ColorPicker.constants.d.ts +0 -1
  77. package/dist/ColorPicker.constants.js +0 -1
  78. package/dist/ColorPicker.svelte +0 -287
  79. package/dist/ColorPicker.svelte.d.ts +0 -52
  80. package/dist/ColorPicker.types.d.ts +0 -4
  81. package/dist/ColorPicker.types.js +0 -1
  82. package/dist/HexColorSliders.svelte +0 -103
  83. package/dist/HexColorSliders.svelte.d.ts +0 -51
  84. package/dist/HslColorSliders.svelte +0 -128
  85. package/dist/HslColorSliders.svelte.d.ts +0 -51
  86. package/dist/Label.types.d.ts +0 -6
  87. package/dist/Label.types.js +0 -1
  88. package/dist/MenuItemDisplay.svelte +0 -32
  89. package/dist/MenuItemDisplay.svelte.d.ts +0 -39
  90. package/dist/RgbColorSliders.svelte +0 -93
  91. package/dist/RgbColorSliders.svelte.d.ts +0 -24
  92. package/dist/TreeItemDisplay.svelte +0 -74
  93. package/dist/TreeItemDisplay.svelte.d.ts +0 -73
  94. package/dist/css/Button.base.css +0 -54
  95. package/dist/css/Button.colorful.css +0 -17
  96. package/dist/css/Button.css +0 -8
  97. package/dist/css/Button.disabled.css +0 -22
  98. package/dist/css/Button.secondary.colorful.css +0 -15
  99. package/dist/css/Button.secondary.css +0 -11
  100. package/dist/css/Button.shapes.css +0 -14
  101. package/dist/css/Button.tool.colorful.css +0 -13
  102. package/dist/css/Button.tool.css +0 -18
  103. package/dist/css/Callout.base.css +0 -55
  104. package/dist/css/Callout.colorful.css +0 -5
  105. package/dist/css/Callout.css +0 -2
  106. package/dist/css/Checkbox.base.css +0 -121
  107. package/dist/css/Checkbox.colorful.css +0 -17
  108. package/dist/css/Checkbox.css +0 -3
  109. package/dist/css/Checkbox.disabled.css +0 -28
  110. package/dist/css/ColorPicker.base.css +0 -23
  111. package/dist/css/ColorPicker.css +0 -1
  112. package/dist/css/Dialog.base.css +0 -114
  113. package/dist/css/Dialog.css +0 -1
  114. package/dist/css/Dropdown.base.css +0 -105
  115. package/dist/css/Dropdown.colorful.css +0 -23
  116. package/dist/css/Dropdown.composed.css +0 -11
  117. package/dist/css/Dropdown.css +0 -4
  118. package/dist/css/Dropdown.disabled.css +0 -32
  119. package/dist/css/HexColorSliders.base.css +0 -87
  120. package/dist/css/HexColorSliders.css +0 -1
  121. package/dist/css/HslColorSliders.base.css +0 -105
  122. package/dist/css/HslColorSliders.css +0 -1
  123. package/dist/css/Input.base.css +0 -72
  124. package/dist/css/Input.colorful.css +0 -22
  125. package/dist/css/Input.composed.css +0 -12
  126. package/dist/css/Input.css +0 -4
  127. package/dist/css/Input.disabled.css +0 -24
  128. package/dist/css/Label.base.css +0 -114
  129. package/dist/css/Label.boxed.colorful.css +0 -21
  130. package/dist/css/Label.boxed.css +0 -31
  131. package/dist/css/Label.colorful.css +0 -3
  132. package/dist/css/Label.css +0 -5
  133. package/dist/css/Label.disabled.css +0 -9
  134. package/dist/css/Link.base.css +0 -43
  135. package/dist/css/Link.colorful.css +0 -15
  136. package/dist/css/Link.css +0 -11
  137. package/dist/css/Link.disabled.css +0 -10
  138. package/dist/css/Link.ghost.colorful.css +0 -7
  139. package/dist/css/Link.ghost.css +0 -11
  140. package/dist/css/Link.text-underline.css +0 -8
  141. package/dist/css/Link.text-underline.ghost.css +0 -13
  142. package/dist/css/Link.undecorated.colorful.css +0 -8
  143. package/dist/css/Link.undecorated.css +0 -8
  144. package/dist/css/Link.undecorated.ghost.css +0 -8
  145. package/dist/css/Link.undecorated.underline.css +0 -8
  146. package/dist/css/List.base.css +0 -84
  147. package/dist/css/List.composed.css +0 -8
  148. package/dist/css/List.css +0 -3
  149. package/dist/css/List.disabled.css +0 -7
  150. package/dist/css/ListItem.base.css +0 -33
  151. package/dist/css/ListItem.css +0 -2
  152. package/dist/css/ListItem.disabled.css +0 -28
  153. package/dist/css/Menu.base.css +0 -21
  154. package/dist/css/Menu.css +0 -1
  155. package/dist/css/MenuBar.base.css +0 -9
  156. package/dist/css/MenuBar.css +0 -1
  157. package/dist/css/MenuButton.base.css +0 -13
  158. package/dist/css/MenuButton.css +0 -1
  159. package/dist/css/MenuItem.base.css +0 -48
  160. package/dist/css/MenuItem.css +0 -1
  161. package/dist/css/MenuItemDisplay.base.css +0 -79
  162. package/dist/css/MenuItemDisplay.css +0 -2
  163. package/dist/css/MenuItemDisplay.disabled.css +0 -28
  164. package/dist/css/MenuSeparator.base.css +0 -5
  165. package/dist/css/MenuSeparator.css +0 -1
  166. package/dist/css/Popover.css +0 -21
  167. package/dist/css/Progress.base.css +0 -85
  168. package/dist/css/Progress.css +0 -2
  169. package/dist/css/Progress.disabled.css +0 -17
  170. package/dist/css/Radio.base.css +0 -109
  171. package/dist/css/Radio.colorful.css +0 -18
  172. package/dist/css/Radio.css +0 -3
  173. package/dist/css/Radio.disabled.css +0 -28
  174. package/dist/css/RgbColorSliders.base.css +0 -94
  175. package/dist/css/RgbColorSliders.css +0 -1
  176. package/dist/css/Select.base.css +0 -101
  177. package/dist/css/Select.colorful.css +0 -24
  178. package/dist/css/Select.composed.css +0 -12
  179. package/dist/css/Select.css +0 -4
  180. package/dist/css/Select.disabled.css +0 -28
  181. package/dist/css/Slider.base.css +0 -152
  182. package/dist/css/Slider.colorful.css +0 -11
  183. package/dist/css/Slider.composed.css +0 -8
  184. package/dist/css/Slider.css +0 -4
  185. package/dist/css/Slider.disabled.css +0 -30
  186. package/dist/css/Switch.base.css +0 -175
  187. package/dist/css/Switch.colorful.css +0 -45
  188. package/dist/css/Switch.css +0 -3
  189. package/dist/css/Switch.disabled.css +0 -30
  190. package/dist/css/Tab.base.css +0 -96
  191. package/dist/css/Tab.colorful.css +0 -13
  192. package/dist/css/Tab.css +0 -3
  193. package/dist/css/Tab.disabled.css +0 -36
  194. package/dist/css/TabList.base.css +0 -34
  195. package/dist/css/TabList.css +0 -1
  196. package/dist/css/TextArea.base.css +0 -62
  197. package/dist/css/TextArea.colorful.css +0 -17
  198. package/dist/css/TextArea.composed.css +0 -8
  199. package/dist/css/TextArea.css +0 -4
  200. package/dist/css/TextArea.disabled.css +0 -28
  201. package/dist/css/Tooltip.base.css +0 -6
  202. package/dist/css/Tooltip.css +0 -1
  203. package/dist/css/Tree.base.css +0 -49
  204. package/dist/css/Tree.composed.css +0 -8
  205. package/dist/css/Tree.css +0 -3
  206. package/dist/css/Tree.disabled.css +0 -27
  207. package/dist/css/TreeChevron.base.css +0 -86
  208. package/dist/css/TreeChevron.css +0 -1
  209. package/dist/css/TreeItem.base.css +0 -3
  210. package/dist/css/TreeItem.css +0 -1
  211. package/dist/css/TreeItemDisplay.base.css +0 -48
  212. package/dist/css/TreeItemDisplay.colorful.css +0 -9
  213. package/dist/css/TreeItemDisplay.css +0 -3
  214. package/dist/css/TreeItemDisplay.disabled.css +0 -28
  215. package/dist/css/dark-mode.css +0 -134
  216. package/dist/css/light-mode.css +0 -134
  217. package/dist/css/sterling.css +0 -37
  218. package/dist/package.json +0 -108
  219. /package/dist/{Button.types.js → Callout.types.js} +0 -0
@@ -1,37 +1,14 @@
1
- import { SvelteComponent } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- [x: string]: any;
5
- backdropCloses?: boolean | undefined;
6
- open?: boolean | undefined;
7
- returnValue?: string | undefined;
8
- variant?: string | undefined;
9
- };
10
- events: {
11
- close: Event;
12
- cancel: Event;
13
- } & {
14
- [evt: string]: CustomEvent<any>;
15
- };
16
- slots: {
17
- content: {};
18
- header: {};
19
- title: {};
20
- body: {};
21
- footer: {};
22
- };
23
- exports?: undefined;
24
- bindings?: undefined;
1
+ import type { HTMLDialogAttributes } from 'svelte/elements';
2
+ import { type Snippet } from 'svelte';
3
+ type Props = HTMLDialogAttributes & {
4
+ backdropCloses?: boolean | null | undefined;
5
+ body?: Snippet;
6
+ content?: Snippet;
7
+ footer?: Snippet;
8
+ header?: Snippet;
9
+ returnValue?: string;
10
+ headerTitle?: string | Snippet;
25
11
  };
26
- export type DialogProps = typeof __propDef.props;
27
- export type DialogEvents = typeof __propDef.events;
28
- export type DialogSlots = typeof __propDef.slots;
29
- /**
30
- * A styled &lt;dialog&gt; element
31
- *
32
- * - Slots for typical dialog content.
33
- * - Props and events to make using &lt;dialog&gt; easier
34
- */
35
- export default class Dialog extends SvelteComponent<DialogProps, DialogEvents, DialogSlots> {
36
- }
37
- export {};
12
+ declare const Dialog: import("svelte").Component<Props, {}, "open" | "returnValue">;
13
+ type Dialog = ReturnType<typeof Dialog>;
14
+ export default Dialog;
@@ -1,4 +1,6 @@
1
- <script>import { createEventDispatcher } from 'svelte';
1
+ <svelte:options runes={true} />
2
+
3
+ <script lang="ts">import {} from 'svelte';
2
4
  import Popover from './Popover.svelte';
3
5
  import { clickOutside } from './actions/clickOutside';
4
6
  import { idGenerator } from './idGenerator';
@@ -6,27 +8,15 @@ import { prefersReducedMotion } from './mediaQueries/prefersReducedMotion';
6
8
  import { slide } from 'svelte/transition';
7
9
  import { usingKeyboard } from './mediaQueries/usingKeyboard';
8
10
  const popupId = idGenerator.nextId('Dropdown-popup');
9
- // ----- Props ----- //
10
- /** Disables the dropdown. */
11
- export let disabled = false;
12
- /** When true, the dropdown is open. */
13
- export let open = false;
14
- /** When the user clicks away from the dropdown, it remains open. */
15
- export let stayOpenOnClickAway = false;
16
- /** Additional class names to apply. */
17
- export let variant = '';
18
- // ----- State ----- //
19
- let dropdownRef;
20
- let popupContentRef;
21
- // ----- Events ----- //
22
- const dispatch = createEventDispatcher();
23
- const raiseOpen = (open) => {
24
- dispatch('open', { open });
25
- };
11
+ let { class: _class, children, disabled = false, open = $bindable(false), onOpen, stayOpenOnClickAway = false, button, buttonIcon, value, ...rest } = $props();
12
+ // svelte-ignore non_reactive_update
13
+ let dropdownRef = $state(undefined);
14
+ // svelte-ignore non_reactive_update
15
+ let popupContentRef = $state(undefined);
26
16
  // ----- Reactions ----- //
27
- $: {
28
- raiseOpen(open);
29
- }
17
+ $effect(() => {
18
+ onOpen?.(open);
19
+ });
30
20
  // ----- Methods ----- //
31
21
  export const click = () => {
32
22
  dropdownRef?.click();
@@ -37,13 +27,13 @@ export const blur = () => {
37
27
  export const focus = (options) => {
38
28
  dropdownRef?.focus(options);
39
29
  };
40
- // ----- Event Handlers ----- //
41
30
  const onClick = (event) => {
42
31
  if (!disabled) {
43
32
  open = !open;
44
33
  event.preventDefault();
45
34
  event.stopPropagation();
46
35
  }
36
+ rest.onclick?.(event);
47
37
  };
48
38
  const onKeydown = (event) => {
49
39
  if (!event.altKey && !event.ctrlKey && !event.shiftKey) {
@@ -52,14 +42,13 @@ const onKeydown = (event) => {
52
42
  open = !open;
53
43
  event.preventDefault();
54
44
  event.stopPropagation();
55
- return false;
56
45
  case 'Escape':
57
46
  open = false;
58
47
  event.preventDefault();
59
48
  event.stopPropagation();
60
- return false;
61
49
  }
62
50
  }
51
+ rest.onkeydown?.(event);
63
52
  };
64
53
  const onClickOutside = (event) => {
65
54
  if (!stayOpenOnClickAway) {
@@ -70,7 +59,7 @@ const onClickOutside = (event) => {
70
59
  const slideNoOp = (node, params) => {
71
60
  return { delay: 0, duration: 0 };
72
61
  };
73
- $: slideMotion = !$prefersReducedMotion ? slide : slideNoOp;
62
+ let slideMotion = $derived(!$prefersReducedMotion ? slide : slideNoOp);
74
63
  </script>
75
64
 
76
65
  <div
@@ -78,64 +67,43 @@ $: slideMotion = !$prefersReducedMotion ? slide : slideNoOp;
78
67
  aria-controls={popupId}
79
68
  aria-haspopup={true}
80
69
  aria-expanded={open}
81
- class={`sterling-dropdown ${variant}`}
70
+ class={`sterling-dropdown ${_class}`}
82
71
  class:disabled
83
72
  class:open
84
73
  class:using-keyboard={$usingKeyboard}
85
74
  role="combobox"
86
75
  tabindex="0"
87
- use:clickOutside={{ ignoreOthers: [popupContentRef] }}
88
- on:blur
89
- on:click
90
- on:click={onClick}
91
- on:copy
92
- on:cut
93
- on:dblclick
94
- on:dragend
95
- on:dragenter
96
- on:dragleave
97
- on:dragover
98
- on:dragstart
99
- on:drop
100
- on:focus
101
- on:focusin
102
- on:focusout
103
- on:keydown
104
- on:keydown={onKeydown}
105
- on:keypress
106
- on:keyup
107
- on:mousedown
108
- on:mouseenter
109
- on:mouseleave
110
- on:mousemove
111
- on:mouseover
112
- on:mouseout
113
- on:mouseup
114
- on:wheel|passive
115
- on:paste
116
- on:click_outside={onClickOutside}
117
- {...$$restProps}
76
+ use:clickOutside={{ ignoreOthers: [popupContentRef!], onclickoutside: onClickOutside }}
77
+ {...rest}
78
+ onclick={onClick}
79
+ onkeydown={onKeydown}
118
80
  >
119
- {#if $$slots.value}
120
- <div class="value">
121
- <slot name="value" {disabled} {open} {variant} />
122
- </div>
123
- {/if}
124
- <slot name="button" {disabled} {open} {variant}>
125
- <div class="button">
126
- <slot name="icon" {disabled} {open} {variant}>
127
- <div class="chevron" />
128
- </slot>
129
- </div>
130
- </slot>
81
+ <div class="value">
82
+ {#if value}
83
+ {#if typeof value === 'string'}
84
+ {value}
85
+ {:else}
86
+ {@render value()}
87
+ {/if}
88
+ {/if}
89
+ </div>
90
+ <div class="button">
91
+ {#if button}
92
+ {@render button()}
93
+ {:else if buttonIcon}
94
+ {@render buttonIcon()}
95
+ {:else}
96
+ <div class="chevron"></div>
97
+ {/if}
98
+ </div>
131
99
 
132
100
  <Popover reference={dropdownRef} open={!disabled && open} placement="bottom-start">
133
101
  <div
134
- class={`sterling-dropdown-popup-content ${variant}`}
102
+ class={`sterling-dropdown-popup-content ${_class}`}
135
103
  transition:slideMotion|global={{ duration: 200 }}
136
104
  bind:this={popupContentRef}
137
105
  >
138
- <slot {disabled} {open} {variant} />
106
+ {@render children?.()}
139
107
  </div>
140
108
  </Popover>
141
109
  </div>
@@ -1,77 +1,18 @@
1
- import { SvelteComponent } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- [x: string]: any;
5
- disabled?: boolean | undefined;
6
- open?: boolean | undefined;
7
- stayOpenOnClickAway?: boolean | undefined;
8
- variant?: string | undefined;
9
- click?: (() => void) | undefined;
10
- blur?: (() => void) | undefined;
11
- focus?: ((options?: FocusOptions) => void) | undefined;
12
- };
13
- events: {
14
- blur: FocusEvent;
15
- click: MouseEvent;
16
- copy: ClipboardEvent;
17
- cut: ClipboardEvent;
18
- dblclick: MouseEvent;
19
- dragend: DragEvent;
20
- dragenter: DragEvent;
21
- dragleave: DragEvent;
22
- dragover: DragEvent;
23
- dragstart: DragEvent;
24
- drop: DragEvent;
25
- focus: FocusEvent;
26
- focusin: FocusEvent;
27
- focusout: FocusEvent;
28
- keydown: KeyboardEvent;
29
- keypress: KeyboardEvent;
30
- keyup: KeyboardEvent;
31
- mousedown: MouseEvent;
32
- mouseenter: MouseEvent;
33
- mouseleave: MouseEvent;
34
- mousemove: MouseEvent;
35
- mouseover: MouseEvent;
36
- mouseout: MouseEvent;
37
- mouseup: MouseEvent;
38
- wheel: WheelEvent;
39
- paste: ClipboardEvent;
40
- open: CustomEvent<any>;
41
- } & {
42
- [evt: string]: CustomEvent<any>;
43
- };
44
- slots: {
45
- value: {
46
- disabled: boolean;
47
- open: boolean;
48
- variant: string;
49
- };
50
- button: {
51
- disabled: boolean;
52
- open: boolean;
53
- variant: string;
54
- };
55
- icon: {
56
- disabled: boolean;
57
- open: boolean;
58
- variant: string;
59
- };
60
- default: {
61
- disabled: boolean;
62
- open: boolean;
63
- variant: string;
64
- };
65
- };
66
- exports?: undefined;
67
- bindings?: undefined;
1
+ import { type Snippet } from 'svelte';
2
+ import type { HTMLAttributes } from 'svelte/elements';
3
+ type Props = HTMLAttributes<HTMLDivElement> & {
4
+ disabled?: boolean | null | undefined;
5
+ open?: boolean | null | undefined;
6
+ stayOpenOnClickAway?: boolean | null | undefined;
7
+ onOpen?: (open: boolean | null | undefined) => void;
8
+ button?: Snippet;
9
+ buttonIcon?: Snippet;
10
+ value?: string | Snippet;
68
11
  };
69
- export type DropdownProps = typeof __propDef.props;
70
- export type DropdownEvents = typeof __propDef.events;
71
- export type DropdownSlots = typeof __propDef.slots;
72
- export default class Dropdown extends SvelteComponent<DropdownProps, DropdownEvents, DropdownSlots> {
73
- get click(): () => void;
74
- get blur(): () => void;
75
- get focus(): (options?: FocusOptions | undefined) => void;
76
- }
77
- export {};
12
+ declare const Dropdown: import("svelte").Component<Props, {
13
+ click: () => void;
14
+ blur: () => void;
15
+ focus: (options?: FocusOptions) => void;
16
+ }, "open">;
17
+ type Dropdown = ReturnType<typeof Dropdown>;
18
+ export default Dropdown;
package/dist/Input.svelte CHANGED
@@ -1,19 +1,14 @@
1
- <script>import { idGenerator } from './idGenerator';
1
+ <svelte:options runes={true} />
2
+
3
+ <script lang="ts">import { idGenerator } from './idGenerator';
2
4
  import { usingKeyboard } from './mediaQueries/usingKeyboard';
3
- // ----- Props ----- //
4
- export let disabled = false;
5
- export let id = undefined;
6
- export let value = '';
7
- /** Additional class names to apply. */
8
- export let variant = '';
9
- // ----- State ----- //
5
+ let { id, children, class: _class, disabled = false, value = $bindable(undefined), ...rest } = $props();
10
6
  let inputRef;
11
- $: {
12
- if ($$slots.default && id === undefined) {
7
+ $effect(() => {
8
+ if (children && id === undefined) {
13
9
  id = idGenerator.nextId('Input');
14
10
  }
15
- }
16
- // ----- Methods ----- //
11
+ });
17
12
  export const blur = () => {
18
13
  inputRef?.blur();
19
14
  };
@@ -39,51 +34,22 @@ export const setRangeText = (replacement, start, end, selectionMode) => {
39
34
  };
40
35
  </script>
41
36
 
42
- {#if $$slots.default}
43
- <label class={`sterling-input-label ${variant}`} class:disabled for={id}>
44
- <slot {disabled} {value} {variant} />
37
+ {#if children}
38
+ <label class={['sterling-input-label', _class].filter(Boolean).join(' ')} class:disabled for={id}>
39
+ {@render children()}
45
40
  </label>
46
41
  {/if}
47
- <div class={`sterling-input ${variant}`} class:disabled class:using-keyboard={$usingKeyboard}>
42
+ <div
43
+ class={['sterling-input', _class].filter(Boolean).join(' ')}
44
+ class:disabled
45
+ class:using-keyboard={$usingKeyboard}
46
+ >
48
47
  <input
49
48
  bind:this={inputRef}
50
49
  class:using-keyboard={$usingKeyboard}
51
50
  {disabled}
52
51
  {id}
53
52
  bind:value
54
- on:beforeinput
55
- on:blur
56
- on:click
57
- on:change
58
- on:copy
59
- on:cut
60
- on:paste
61
- on:dblclick
62
- on:dragend
63
- on:dragenter
64
- on:dragleave
65
- on:dragover
66
- on:dragstart
67
- on:drop
68
- on:focus
69
- on:focusin
70
- on:focusout
71
- on:input
72
- on:invalid
73
- on:keydown
74
- on:keypress
75
- on:keyup
76
- on:mousedown
77
- on:mouseenter
78
- on:mouseleave
79
- on:mousemove
80
- on:mouseover
81
- on:mouseout
82
- on:mouseup
83
- on:select
84
- on:submit
85
- on:reset
86
- on:wheel|passive
87
- {...$$restProps}
53
+ {...rest}
88
54
  />
89
55
  </div>
@@ -1,74 +1,12 @@
1
- import { SvelteComponent } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- [x: string]: any;
5
- disabled?: boolean | undefined;
6
- id?: string | undefined;
7
- value?: string | undefined;
8
- variant?: string | undefined;
9
- blur?: (() => void) | undefined;
10
- click?: (() => void) | undefined;
11
- focus?: ((options?: FocusOptions) => void) | undefined;
12
- select?: (() => void) | undefined;
13
- setSelectionRange?: ((start: number | null, end: number | null, direction?: 'forward' | 'backward' | 'none') => void) | undefined;
14
- setRangeText?: ((replacement: string, start?: number, end?: number, selectionMode?: SelectionMode) => void) | undefined;
15
- };
16
- events: {
17
- beforeinput: InputEvent;
18
- blur: FocusEvent;
19
- click: MouseEvent;
20
- change: Event;
21
- copy: ClipboardEvent;
22
- cut: ClipboardEvent;
23
- paste: ClipboardEvent;
24
- dblclick: MouseEvent;
25
- dragend: DragEvent;
26
- dragenter: DragEvent;
27
- dragleave: DragEvent;
28
- dragover: DragEvent;
29
- dragstart: DragEvent;
30
- drop: DragEvent;
31
- focus: FocusEvent;
32
- focusin: FocusEvent;
33
- focusout: FocusEvent;
34
- input: Event;
35
- invalid: Event;
36
- keydown: KeyboardEvent;
37
- keypress: KeyboardEvent;
38
- keyup: KeyboardEvent;
39
- mousedown: MouseEvent;
40
- mouseenter: MouseEvent;
41
- mouseleave: MouseEvent;
42
- mousemove: MouseEvent;
43
- mouseover: MouseEvent;
44
- mouseout: MouseEvent;
45
- mouseup: MouseEvent;
46
- select: Event;
47
- submit: SubmitEvent;
48
- reset: Event;
49
- wheel: WheelEvent;
50
- } & {
51
- [evt: string]: CustomEvent<any>;
52
- };
53
- slots: {
54
- default: {
55
- disabled: boolean;
56
- value: string;
57
- variant: string;
58
- };
59
- };
60
- exports?: undefined;
61
- bindings?: undefined;
62
- };
63
- export type InputProps = typeof __propDef.props;
64
- export type InputEvents = typeof __propDef.events;
65
- export type InputSlots = typeof __propDef.slots;
66
- export default class Input extends SvelteComponent<InputProps, InputEvents, InputSlots> {
67
- get blur(): () => void;
68
- get click(): () => void;
69
- get focus(): (options?: FocusOptions | undefined) => void;
70
- get select(): () => void;
71
- get setSelectionRange(): (start: number | null, end: number | null, direction?: "forward" | "backward" | "none" | undefined) => void;
72
- get setRangeText(): (replacement: string, start?: number | undefined, end?: number | undefined, selectionMode?: SelectionMode | undefined) => void;
73
- }
74
- export {};
1
+ /// <reference types="svelte" />
2
+ import type { HTMLInputAttributes } from 'svelte/elements';
3
+ declare const Input: import("svelte").Component<HTMLInputAttributes, {
4
+ blur: () => void;
5
+ click: () => void;
6
+ focus: (options?: FocusOptions) => void;
7
+ select: () => void;
8
+ setSelectionRange: (start: number | null, end: number | null, direction?: 'forward' | 'backward' | 'none') => void;
9
+ setRangeText: (replacement: string, start?: number, end?: number, selectionMode?: SelectionMode) => void;
10
+ }, "value">;
11
+ type Input = ReturnType<typeof Input>;
12
+ export default Input;