@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,70 +1,18 @@
1
- import { SvelteComponent } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- [x: string]: any;
5
- disabled?: boolean | undefined;
6
- selectedValue?: string | undefined;
7
- vertical?: boolean | undefined;
8
- variant?: string | undefined;
9
- blur?: (() => void) | undefined;
10
- focus?: ((options?: FocusOptions) => void) | undefined;
11
- selectFirstTab?: (() => boolean) | undefined;
12
- selectPreviousTab?: (() => boolean) | undefined;
13
- selectNextTab?: (() => boolean) | undefined;
14
- selectLastTab?: (() => boolean) | undefined;
15
- };
16
- events: {
17
- blur: FocusEvent;
18
- click: MouseEvent;
19
- copy: ClipboardEvent;
20
- cut: ClipboardEvent;
21
- dblclick: MouseEvent;
22
- dragend: DragEvent;
23
- dragenter: DragEvent;
24
- dragleave: DragEvent;
25
- dragover: DragEvent;
26
- dragstart: DragEvent;
27
- drop: DragEvent;
28
- focus: FocusEvent;
29
- focusin: FocusEvent;
30
- focusout: FocusEvent;
31
- keydown: KeyboardEvent;
32
- keypress: KeyboardEvent;
33
- keyup: KeyboardEvent;
34
- mousedown: MouseEvent;
35
- mouseenter: MouseEvent;
36
- mouseleave: MouseEvent;
37
- mousemove: MouseEvent;
38
- mouseover: MouseEvent;
39
- mouseout: MouseEvent;
40
- mouseup: MouseEvent;
41
- scroll: Event;
42
- wheel: WheelEvent;
43
- paste: ClipboardEvent;
44
- select: CustomEvent<any>;
45
- } & {
46
- [evt: string]: CustomEvent<any>;
47
- };
48
- slots: {
49
- default: {
50
- disabled: boolean;
51
- selectedValue: string | undefined;
52
- variant: string;
53
- vertical: boolean;
54
- };
55
- };
56
- exports?: undefined;
57
- bindings?: undefined;
1
+ /// <reference types="svelte" />
2
+ import type { HTMLAttributes } from 'svelte/elements';
3
+ type Props = HTMLAttributes<HTMLDivElement> & {
4
+ disabled?: boolean | null;
5
+ selectedValue?: string;
6
+ vertical?: boolean | null;
7
+ onSelect?: (value?: string) => void;
58
8
  };
59
- export type TabListProps = typeof __propDef.props;
60
- export type TabListEvents = typeof __propDef.events;
61
- export type TabListSlots = typeof __propDef.slots;
62
- export default class TabList extends SvelteComponent<TabListProps, TabListEvents, TabListSlots> {
63
- get blur(): () => void;
64
- get focus(): (options?: FocusOptions | undefined) => void;
65
- get selectFirstTab(): () => boolean;
66
- get selectPreviousTab(): () => boolean;
67
- get selectNextTab(): () => boolean;
68
- get selectLastTab(): () => boolean;
69
- }
70
- export {};
9
+ declare const TabList: import("svelte").Component<Props, {
10
+ blur: () => void;
11
+ focus: (options?: FocusOptions) => void;
12
+ selectFirstTab: () => boolean;
13
+ selectPreviousTab: () => boolean;
14
+ selectNextTab: () => boolean;
15
+ selectLastTab: () => boolean;
16
+ }, "selectedValue">;
17
+ type TabList = ReturnType<typeof TabList>;
18
+ export default TabList;
@@ -1,13 +1,5 @@
1
- /// <reference types="svelte" />
2
- import type { Readable, Writable } from 'svelte/store';
3
- /**
4
- * The context for a TabList and its tabs.
5
- */
6
1
  export type TabListContext = {
7
- /** When true, the tablist and its tabs are disabled. */
8
- disabled: Readable<boolean>;
9
- /** The value of the currently selected tab. */
10
- selectedValue: Writable<string | undefined>;
11
- /** When true, the tabs are displayed vertically. */
12
- vertical: Readable<boolean>;
2
+ disabled?: boolean | null | undefined;
3
+ selectedValue?: string | undefined;
4
+ vertical?: boolean | null | undefined;
13
5
  };
@@ -1,17 +1,9 @@
1
- <script>import { onMount, tick } from 'svelte';
2
- // ----- Props ----- //
3
- export let disabled = false;
4
- export let value = '';
5
- /** When true, the text area will resize itself vertically to fit text.*/
6
- export let autoHeight = false;
7
- /** Sets the resize handle direction. */
8
- export let resize = 'none';
9
- /** Additional class names to apply. */
10
- export let variant = '';
11
- // ----- State ----- //
1
+ <svelte:options runes={true} />
2
+
3
+ <script lang="ts">import { tick } from 'svelte';
4
+ let { class: _class, disabled = false, value = $bindable(''), autoHeight = false, resize = $bindable('none'), style, ...rest } = $props();
12
5
  let textAreaRef;
13
6
  const correctResize = async () => {
14
- console.log('correctResize');
15
7
  await tick();
16
8
  setTimeout(() => {
17
9
  if (autoHeight) {
@@ -26,8 +18,6 @@ const correctResize = async () => {
26
18
  }
27
19
  }, 0);
28
20
  };
29
- $: autoHeight, resize, correctResize();
30
- // ----- autoHeight ----- //
31
21
  const autoSetHeight = () => {
32
22
  if (autoHeight && textAreaRef) {
33
23
  // the style must be directly set to avoid re-rendering looping latency
@@ -36,15 +26,16 @@ const autoSetHeight = () => {
36
26
  textAreaRef.style.height = `${textAreaRef.scrollHeight}px`;
37
27
  }
38
28
  };
39
- $: autoHeight, autoSetHeight();
40
- // ----- Event Handlers ----- //
41
- const onInput = () => {
42
- autoSetHeight();
43
- };
44
- onMount(() => {
29
+ $effect(() => {
30
+ autoHeight;
31
+ resize;
32
+ correctResize();
45
33
  autoSetHeight();
46
34
  });
47
- // ----- Methods ----- //
35
+ const onInput = (event) => {
36
+ autoSetHeight();
37
+ rest.oninput?.(event);
38
+ };
48
39
  export const blur = () => {
49
40
  textAreaRef?.blur();
50
41
  };
@@ -70,47 +61,14 @@ export const setRangeText = (replacement, start, end, selectionMode) => {
70
61
  };
71
62
  </script>
72
63
 
73
- <div class={`sterling-text-area ${variant}`} class:disabled>
64
+ <div class={`sterling-text-area ${_class}`} class:disabled>
74
65
  <textarea
75
66
  bind:this={textAreaRef}
76
67
  bind:value
77
68
  {disabled}
78
69
  rows="1"
79
- style={`--TextArea__resize: ${resize};`}
80
- on:beforeinput
81
- on:blur
82
- on:click
83
- on:change
84
- on:copy
85
- on:cut
86
- on:paste
87
- on:dblclick
88
- on:dragend
89
- on:dragenter
90
- on:dragleave
91
- on:dragover
92
- on:dragstart
93
- on:drop
94
- on:focus
95
- on:focusin
96
- on:focusout
97
- on:input
98
- on:invalid
99
- on:keydown
100
- on:keypress
101
- on:keyup
102
- on:mousedown
103
- on:mouseenter
104
- on:mouseleave
105
- on:mousemove
106
- on:mouseover
107
- on:mouseout
108
- on:mouseup
109
- on:select
110
- on:submit
111
- on:reset
112
- on:wheel|passive
113
- on:input={onInput}
114
- {...$$restProps}
115
- />
70
+ {...rest}
71
+ oninput={onInput}
72
+ style={`--TextArea__resize: ${resize};${style}`}
73
+ ></textarea>
116
74
  </div>
@@ -1,69 +1,19 @@
1
- import { SvelteComponent } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- [x: string]: any;
5
- disabled?: boolean | undefined;
6
- value?: string | undefined;
7
- autoHeight?: boolean | undefined;
8
- resize?: "none" | "vertical" | "horizontal" | "both" | undefined;
9
- variant?: string | undefined;
10
- blur?: (() => void) | undefined;
11
- click?: (() => void) | undefined;
12
- focus?: ((options?: FocusOptions) => void) | undefined;
13
- select?: (() => void) | undefined;
14
- setSelectionRange?: ((start: number | null, end: number | null, direction?: 'forward' | 'backward' | 'none') => void) | undefined;
15
- setRangeText?: ((replacement: string, start?: number, end?: number, selectionMode?: SelectionMode) => void) | undefined;
16
- };
17
- events: {
18
- beforeinput: InputEvent;
19
- blur: FocusEvent;
20
- click: MouseEvent;
21
- change: Event;
22
- copy: ClipboardEvent;
23
- cut: ClipboardEvent;
24
- paste: ClipboardEvent;
25
- dblclick: MouseEvent;
26
- dragend: DragEvent;
27
- dragenter: DragEvent;
28
- dragleave: DragEvent;
29
- dragover: DragEvent;
30
- dragstart: DragEvent;
31
- drop: DragEvent;
32
- focus: FocusEvent;
33
- focusin: FocusEvent;
34
- focusout: FocusEvent;
35
- input: Event;
36
- invalid: Event;
37
- keydown: KeyboardEvent;
38
- keypress: KeyboardEvent;
39
- keyup: KeyboardEvent;
40
- mousedown: MouseEvent;
41
- mouseenter: MouseEvent;
42
- mouseleave: MouseEvent;
43
- mousemove: MouseEvent;
44
- mouseover: MouseEvent;
45
- mouseout: MouseEvent;
46
- mouseup: MouseEvent;
47
- select: Event;
48
- submit: SubmitEvent;
49
- reset: Event;
50
- wheel: WheelEvent;
51
- } & {
52
- [evt: string]: CustomEvent<any>;
53
- };
54
- slots: {};
55
- exports?: undefined;
56
- bindings?: undefined;
1
+ /// <reference types="svelte" />
2
+ import type { TextAreaResize } from './TextArea.types';
3
+ import type { HTMLTextareaAttributes } from 'svelte/elements';
4
+ type Props = HTMLTextareaAttributes & {
5
+ autoHeight?: boolean | null | undefined;
6
+ disabled?: boolean | null | undefined;
7
+ value?: string;
8
+ resize?: TextAreaResize;
57
9
  };
58
- export type TextAreaProps = typeof __propDef.props;
59
- export type TextAreaEvents = typeof __propDef.events;
60
- export type TextAreaSlots = typeof __propDef.slots;
61
- export default class TextArea extends SvelteComponent<TextAreaProps, TextAreaEvents, TextAreaSlots> {
62
- get blur(): () => void;
63
- get click(): () => void;
64
- get focus(): (options?: FocusOptions | undefined) => void;
65
- get select(): () => void;
66
- get setSelectionRange(): (start: number | null, end: number | null, direction?: "forward" | "backward" | "none" | undefined) => void;
67
- get setRangeText(): (replacement: string, start?: number | undefined, end?: number | undefined, selectionMode?: SelectionMode | undefined) => void;
68
- }
69
- export {};
10
+ declare const TextArea: import("svelte").Component<Props, {
11
+ blur: () => void;
12
+ click: () => void;
13
+ focus: (options?: FocusOptions) => void;
14
+ select: () => void;
15
+ setSelectionRange: (start: number | null, end: number | null, direction?: 'forward' | 'backward' | 'none') => void;
16
+ setRangeText: (replacement: string, start?: number, end?: number, selectionMode?: SelectionMode) => void;
17
+ }, "value" | "resize">;
18
+ type TextArea = ReturnType<typeof TextArea>;
19
+ export default TextArea;
@@ -1,22 +1,11 @@
1
- <script>import { onMount } from 'svelte';
1
+ <svelte:options runes={true} />
2
+
3
+ <script lang="ts">import { onMount } from 'svelte';
2
4
  import Callout from './Callout.svelte';
3
- // ----- Props ----- //
4
- // Forwarded to Callout
5
- export let conditionalRender = true;
6
- export let crossAxisOffset = 0;
7
- export let mainAxisOffset = 0;
8
- export let open = false;
9
- export let placement = 'top-start';
10
- export let portalHost = undefined;
11
- export let variant = '';
12
- /** When true, the tooltip is disabled and will not be shown. */
13
- export let disabled = false;
14
- /** The duration of mouse hover before showing the tooltip. */
15
- export let hoverDelayMilliseconds = 1000;
16
- // ----- State ----- //
17
- let originRef;
18
- $: reference = $$slots.default ? originRef?.previousElementSibling : undefined;
19
- // ----- Show/Hide ----- //
5
+ let { children, class: _class, disabled = false, hoverDelayMilliseconds = 1000, open = $bindable(false), tip, ...rest } = $props();
6
+ let originRef = $state();
7
+ let reference = $derived(!!children ? originRef?.previousElementSibling : undefined);
8
+ $inspect({ reference });
20
9
  const show = () => {
21
10
  if (!disabled) {
22
11
  open = true;
@@ -30,11 +19,11 @@ const delayShow = () => {
30
19
  show();
31
20
  }, hoverDelayMilliseconds);
32
21
  };
33
- $: {
22
+ $effect(() => {
34
23
  if (disabled) {
35
24
  hide();
36
25
  }
37
- }
26
+ });
38
27
  // ----- Event Listeners ----- //
39
28
  let cleanupAutoShowUpdate = () => { };
40
29
  const autoShowUpdate = () => {
@@ -51,56 +40,24 @@ const autoShowUpdate = () => {
51
40
  };
52
41
  }
53
42
  };
54
- $: reference, autoShowUpdate();
43
+ $effect(() => {
44
+ reference;
45
+ autoShowUpdate();
46
+ });
55
47
  // ----- EventHandlers ----- //
56
48
  onMount(() => {
57
49
  autoShowUpdate();
58
50
  });
59
51
  </script>
60
52
 
61
- <slot {disabled} {hoverDelayMilliseconds} {open} {variant} />
62
- <div class="sterling-tooltip-origin" bind:this={originRef} />
63
- <Callout
64
- {conditionalRender}
65
- {crossAxisOffset}
66
- {mainAxisOffset}
67
- {open}
68
- {placement}
69
- {portalHost}
70
- {reference}
71
- {variant}
72
- on:blur
73
- on:click
74
- on:dblclick
75
- on:dragend
76
- on:dragenter
77
- on:dragleave
78
- on:dragover
79
- on:dragstart
80
- on:drop
81
- on:focus
82
- on:focusin
83
- on:focusout
84
- on:keydown
85
- on:keypress
86
- on:keyup
87
- on:mousedown
88
- on:mouseenter
89
- on:mouseleave
90
- on:mousemove
91
- on:mouseover
92
- on:mouseout
93
- on:mouseup
94
- on:pointercancel
95
- on:pointerdown
96
- on:pointerenter
97
- on:pointerleave
98
- on:pointermove
99
- on:pointerover
100
- on:pointerout
101
- on:pointerup
102
- on:wheel
103
- {...$$restProps}
104
- >
105
- <slot name="tip" {placement} {variant} />
53
+ {@render children?.()}
54
+ <div class="sterling-tooltip-origin" bind:this={originRef}></div>
55
+ <Callout class={_class} {open} {reference} {...rest}>
56
+ {#if tip}
57
+ {#if typeof tip === 'string'}
58
+ {tip}
59
+ {:else}
60
+ {@render tip()}
61
+ {/if}
62
+ {/if}
106
63
  </Callout>
@@ -1,70 +1,10 @@
1
- import { SvelteComponent } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- [x: string]: any;
5
- conditionalRender?: boolean | undefined;
6
- crossAxisOffset?: number | undefined;
7
- mainAxisOffset?: number | undefined;
8
- open?: boolean | undefined;
9
- placement?: string | undefined;
10
- portalHost?: HTMLElement | undefined;
11
- variant?: string | undefined;
12
- disabled?: boolean | undefined;
13
- hoverDelayMilliseconds?: number | undefined;
14
- };
15
- events: {
16
- blur: FocusEvent;
17
- click: MouseEvent;
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
- pointercancel: CustomEvent<any>;
39
- pointerdown: CustomEvent<any>;
40
- pointerenter: CustomEvent<any>;
41
- pointerleave: CustomEvent<any>;
42
- pointermove: CustomEvent<any>;
43
- pointerover: CustomEvent<any>;
44
- pointerout: CustomEvent<any>;
45
- pointerup: CustomEvent<any>;
46
- wheel: WheelEvent;
47
- } & {
48
- [evt: string]: CustomEvent<any>;
49
- };
50
- slots: {
51
- default: {
52
- disabled: boolean;
53
- hoverDelayMilliseconds: number;
54
- open: boolean;
55
- variant: string;
56
- };
57
- tip: {
58
- placement: string;
59
- variant: string;
60
- };
61
- };
62
- exports?: undefined;
63
- bindings?: undefined;
1
+ import { type Snippet } from 'svelte';
2
+ import type { CalloutProps } from './Callout.types';
3
+ type Props = Omit<CalloutProps, 'reference'> & {
4
+ disabled?: boolean;
5
+ hoverDelayMilliseconds?: number;
6
+ tip?: string | Snippet;
64
7
  };
65
- export type TooltipProps = typeof __propDef.props;
66
- export type TooltipEvents = typeof __propDef.events;
67
- export type TooltipSlots = typeof __propDef.slots;
68
- export default class Tooltip extends SvelteComponent<TooltipProps, TooltipEvents, TooltipSlots> {
69
- }
70
- export {};
8
+ declare const Tooltip: import("svelte").Component<Props, {}, "open">;
9
+ type Tooltip = ReturnType<typeof Tooltip>;
10
+ export default Tooltip;
package/dist/Tree.svelte CHANGED
@@ -1,104 +1,53 @@
1
- <script>import { createEventDispatcher, setContext } from 'svelte';
2
- import { writable } from 'svelte/store';
3
- import { TREE_CONTEXT_KEY } from './Tree.constants';
1
+ <svelte:options runes={true} />
2
+
3
+ <script lang="ts">import { setContext } from 'svelte';
4
4
  import { usingKeyboard } from './mediaQueries/usingKeyboard';
5
- // ----- Props ----- //
6
- /** When true, the tree and its descendants are disabled. */
7
- export let disabled = false;
8
- /** The value of the currently selected item. */
9
- export let selectedValue = undefined;
10
- /** The values of items that are expanded. */
11
- export let expandedValues = [];
12
- /** Additional class names to apply. */
13
- export let variant = '';
14
- // ----- State ----- //
5
+ import { TREE_CONTEXT_KEY } from './Tree.constants';
6
+ let { children, class: _class, disabled = false, expandedValues = $bindable([]), onExpandCollapse, onSelect, selectedValue = $bindable(undefined), ...rest } = $props();
15
7
  let treeRef;
16
- const disabledStore = writable(disabled);
17
- const expandedValuesStore = writable(expandedValues);
18
- const selectedValueStore = writable(selectedValue);
19
- // ----- Methods ----- //
8
+ let treeContext = {
9
+ get disabled() {
10
+ return disabled;
11
+ },
12
+ get expandedValues() {
13
+ return expandedValues;
14
+ },
15
+ set expandedValues(value) {
16
+ expandedValues = value;
17
+ },
18
+ get selectedValue() {
19
+ return selectedValue;
20
+ },
21
+ set selectedValue(value) {
22
+ selectedValue = value;
23
+ }
24
+ };
25
+ setContext(TREE_CONTEXT_KEY, treeContext);
26
+ $effect(() => {
27
+ onSelect?.(selectedValue);
28
+ });
29
+ $effect(() => {
30
+ onExpandCollapse?.(expandedValues);
31
+ });
20
32
  export const blur = () => {
21
33
  treeRef?.blur();
22
34
  };
23
35
  export const focus = (options) => {
24
36
  treeRef?.focus(options);
25
37
  };
26
- // ----- Events ----- //
27
- const dispatch = createEventDispatcher();
28
- const raiseExpandCollapse = (expandedValues) => {
29
- dispatch('expandCollapse', { expandedValues });
30
- };
31
- const raiseSelect = (selectedValue) => {
32
- dispatch('select', { selectedValue });
33
- };
34
- // ----- Reactions ----- //
35
- $: {
36
- selectedValueStore.set(selectedValue);
37
- }
38
- $: {
39
- selectedValue = $selectedValueStore;
40
- raiseSelect($selectedValueStore);
41
- }
42
- $: {
43
- expandedValuesStore.set(expandedValues);
44
- }
45
- $: {
46
- expandedValues = $expandedValuesStore;
47
- raiseExpandCollapse($expandedValuesStore);
48
- }
49
- $: {
50
- disabledStore.set(disabled);
51
- }
52
- // ----- Set Context ----- //
53
- setContext(TREE_CONTEXT_KEY, {
54
- disabled: disabledStore,
55
- expandedValues: expandedValuesStore,
56
- selectedValue: selectedValueStore
57
- });
58
38
  </script>
59
39
 
60
40
  <div
61
41
  bind:this={treeRef}
62
42
  aria-disabled={disabled}
63
- class={`sterling-tree ${variant}`}
43
+ class={`sterling-tree ${_class}`}
64
44
  class:disabled
65
45
  class:using-keyboard={$usingKeyboard}
66
46
  role="tree"
67
47
  tabindex="0"
68
- on:blur
69
- on:click
70
- on:dblclick
71
- on:dragend
72
- on:dragenter
73
- on:dragleave
74
- on:dragover
75
- on:dragstart
76
- on:drop
77
- on:focus
78
- on:focusin
79
- on:focusout
80
- on:keydown
81
- on:keypress
82
- on:keyup
83
- on:mousedown
84
- on:mouseenter
85
- on:mouseleave
86
- on:mousemove
87
- on:mouseover
88
- on:mouseout
89
- on:mouseup
90
- on:pointercancel
91
- on:pointerdown
92
- on:pointerenter
93
- on:pointerleave
94
- on:pointermove
95
- on:pointerover
96
- on:pointerout
97
- on:pointerup
98
- on:wheel|passive
99
- {...$$restProps}
48
+ {...rest}
100
49
  >
101
50
  <div class="container">
102
- <slot {disabled} {expandedValues} {selectedValue} {variant} />
51
+ {@render children?.()}
103
52
  </div>
104
53
  </div>