@geoffcox/sterling-svelte 0.0.15 → 0.0.17

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 (110) hide show
  1. package/@types/clickOutside.d.ts +9 -3
  2. package/{buttons/Button.svelte → Button.svelte} +27 -27
  3. package/{inputs/Checkbox.svelte → Checkbox.svelte} +16 -16
  4. package/{surfaces/Dialog.svelte → Dialog.svelte} +34 -21
  5. package/{inputs/Input.svelte → Input.svelte} +22 -22
  6. package/Label.svelte +52 -0
  7. package/Label.svelte.d.ts +42 -0
  8. package/List.constants.d.ts +1 -0
  9. package/List.constants.js +1 -0
  10. package/List.svelte +324 -0
  11. package/List.svelte.d.ts +69 -0
  12. package/List.types.d.ts +6 -0
  13. package/ListItem.svelte +90 -0
  14. package/ListItem.svelte.d.ts +51 -0
  15. package/Menu.svelte +115 -0
  16. package/Menu.svelte.d.ts +20 -0
  17. package/MenuBar.svelte +97 -0
  18. package/MenuBar.svelte.d.ts +43 -0
  19. package/MenuButton.svelte +102 -0
  20. package/MenuButton.svelte.d.ts +54 -0
  21. package/MenuItem.svelte +338 -0
  22. package/MenuItem.svelte.d.ts +61 -0
  23. package/MenuItemDisplay.svelte +97 -0
  24. package/MenuItemDisplay.svelte.d.ts +21 -0
  25. package/MenuSeparator.svelte +42 -0
  26. package/MenuSeparator.svelte.d.ts +76 -0
  27. package/Menus.constants.d.ts +2 -0
  28. package/Menus.constants.js +2 -0
  29. package/Menus.types.d.ts +22 -0
  30. package/Menus.utils.d.ts +5 -0
  31. package/Menus.utils.js +20 -0
  32. package/Portal.svelte +14 -0
  33. package/Portal.svelte.d.ts +21 -0
  34. package/{display/Progress.svelte → Progress.svelte} +14 -14
  35. package/{inputs/Radio.svelte → Radio.svelte} +15 -15
  36. package/{inputs/Select.svelte → Select.svelte} +96 -102
  37. package/{inputs/Select.svelte.d.ts → Select.svelte.d.ts} +20 -25
  38. package/{inputs/Slider.svelte → Slider.svelte} +49 -24
  39. package/{inputs/Slider.svelte.d.ts → Slider.svelte.d.ts} +25 -0
  40. package/{inputs/Switch.svelte → Switch.svelte} +38 -38
  41. package/Tab.svelte +181 -0
  42. package/{containers/Tab.svelte.d.ts → Tab.svelte.d.ts} +12 -15
  43. package/TabList.svelte +247 -0
  44. package/{containers/TabList.svelte.d.ts → TabList.svelte.d.ts} +21 -21
  45. package/TabList.types.d.ts +7 -0
  46. package/{inputs/TextArea.svelte → TextArea.svelte} +23 -23
  47. package/TextArea.types.js +1 -0
  48. package/Tooltip.svelte +182 -0
  49. package/Tooltip.svelte.d.ts +24 -0
  50. package/Tooltip.types.d.ts +3 -0
  51. package/Tooltip.types.js +1 -0
  52. package/Tree.constants.d.ts +2 -0
  53. package/Tree.constants.js +2 -0
  54. package/Tree.svelte +142 -0
  55. package/Tree.svelte.d.ts +25 -0
  56. package/Tree.types.d.ts +28 -0
  57. package/Tree.types.js +1 -0
  58. package/{containers/TreeChevron.svelte → TreeChevron.svelte} +3 -3
  59. package/TreeItem.svelte +276 -0
  60. package/TreeItem.svelte.d.ts +65 -0
  61. package/{containers/TreeItem.svelte → TreeItemDisplay.svelte} +18 -18
  62. package/{containers/TreeItem.svelte.d.ts → TreeItemDisplay.svelte.d.ts} +11 -14
  63. package/{clickOutside.js → actions/clickOutside.js} +3 -1
  64. package/actions/forwardEvents.d.ts +12 -0
  65. package/actions/forwardEvents.js +32 -0
  66. package/actions/portal.d.ts +8 -0
  67. package/actions/portal.js +19 -0
  68. package/index.d.ts +42 -24
  69. package/index.js +39 -19
  70. package/package.json +45 -29
  71. package/theme/darkTheme.js +66 -74
  72. package/theme/lightTheme.js +66 -74
  73. package/containers/List.svelte +0 -249
  74. package/containers/List.svelte.d.ts +0 -68
  75. package/containers/ListItem.svelte +0 -48
  76. package/containers/ListItem.svelte.d.ts +0 -26
  77. package/containers/Tab.svelte +0 -327
  78. package/containers/TabList.svelte +0 -126
  79. package/containers/Tabs.types.d.ts +0 -12
  80. package/containers/Tree.constants.d.ts +0 -2
  81. package/containers/Tree.constants.js +0 -2
  82. package/containers/Tree.svelte +0 -222
  83. package/containers/Tree.svelte.d.ts +0 -50
  84. package/containers/Tree.types.d.ts +0 -47
  85. package/containers/TreeNode.svelte +0 -267
  86. package/containers/TreeNode.svelte.d.ts +0 -43
  87. package/display/Label.svelte +0 -27
  88. package/display/Label.svelte.d.ts +0 -20
  89. package/surfaces/CloseX.svelte +0 -5
  90. package/surfaces/CloseX.svelte.d.ts +0 -23
  91. /package/{buttons/Button.svelte.d.ts → Button.svelte.d.ts} +0 -0
  92. /package/{buttons/Button.types.d.ts → Button.types.d.ts} +0 -0
  93. /package/{buttons/Button.types.js → Button.types.js} +0 -0
  94. /package/{inputs/Checkbox.svelte.d.ts → Checkbox.svelte.d.ts} +0 -0
  95. /package/{surfaces/Dialog.svelte.d.ts → Dialog.svelte.d.ts} +0 -0
  96. /package/{inputs/Input.svelte.d.ts → Input.svelte.d.ts} +0 -0
  97. /package/{containers/Tabs.types.js → List.types.js} +0 -0
  98. /package/{containers/Tree.types.js → Menus.types.js} +0 -0
  99. /package/{display/Progress.svelte.d.ts → Progress.svelte.d.ts} +0 -0
  100. /package/{display/Progress.types.d.ts → Progress.types.d.ts} +0 -0
  101. /package/{display/Progress.types.js → Progress.types.js} +0 -0
  102. /package/{inputs/Radio.svelte.d.ts → Radio.svelte.d.ts} +0 -0
  103. /package/{inputs/Switch.svelte.d.ts → Switch.svelte.d.ts} +0 -0
  104. /package/{containers/Tabs.constants.d.ts → TabList.constants.d.ts} +0 -0
  105. /package/{containers/Tabs.constants.js → TabList.constants.js} +0 -0
  106. /package/{inputs/TextArea.types.js → TabList.types.js} +0 -0
  107. /package/{inputs/TextArea.svelte.d.ts → TextArea.svelte.d.ts} +0 -0
  108. /package/{inputs/TextArea.types.d.ts → TextArea.types.d.ts} +0 -0
  109. /package/{containers/TreeChevron.svelte.d.ts → TreeChevron.svelte.d.ts} +0 -0
  110. /package/{clickOutside.d.ts → actions/clickOutside.d.ts} +0 -0
@@ -1,5 +1,5 @@
1
1
  <script>import { v4 as uuid } from "uuid";
2
- import Label from "../display/Label.svelte";
2
+ import Label from "./Label.svelte";
3
3
  export let value;
4
4
  export let resize = "none";
5
5
  export let disabled = false;
@@ -39,7 +39,6 @@ $:
39
39
  on:focus
40
40
  on:focusin
41
41
  on:focusout
42
- on:input={onInput}
43
42
  on:input
44
43
  on:invalid
45
44
  on:keydown
@@ -56,6 +55,7 @@ $:
56
55
  on:submit
57
56
  on:reset
58
57
  on:wheel
58
+ on:input={onInput}
59
59
  {disabled}
60
60
  rows="1"
61
61
  {...$$restProps}
@@ -64,13 +64,13 @@ $:
64
64
 
65
65
  <style>
66
66
  .sterling-text-area {
67
- background-color: var(--Input__background-color);
68
- border-color: var(--Input__border-color);
69
- border-radius: var(--Input__border-radius);
70
- border-style: var(--Input__border-style);
71
- border-width: var(--Input__border-width);
67
+ background-color: var(--stsv-Input__background-color);
68
+ border-color: var(--stsv-Input__border-color);
69
+ border-radius: var(--stsv-Input__border-radius);
70
+ border-style: var(--stsv-Input__border-style);
71
+ border-width: var(--stsv-Input__border-width);
72
72
  box-sizing: border-box;
73
- color: var(--Input__color);
73
+ color: var(--stsv-Input__color);
74
74
  overflow: hidden;
75
75
  width: 100%;
76
76
  height: 100%;
@@ -83,25 +83,25 @@ $:
83
83
  }
84
84
 
85
85
  .sterling-text-area:hover {
86
- background-color: var(--Input__background-color--hover);
87
- border-color: var(--Input__border-color--hover);
88
- color: var(--Input__color--hover);
86
+ background-color: var(--stsv-Input__background-color--hover);
87
+ border-color: var(--stsv-Input__border-color--hover);
88
+ color: var(--stsv-Input__color--hover);
89
89
  }
90
90
 
91
91
  .sterling-text-area:focus-wthin {
92
- background-color: var(--Input__background-color--focus);
93
- border-color: var(--Input__border-color--focus);
94
- color: var(--Input__color--focus);
95
- outline-color: var(--Common__outline-color);
96
- outline-offset: var(--Common__outline-offset);
97
- outline-style: var(--Common__outline-style);
98
- outline-width: var(--Common__outline-width);
92
+ background-color: var(--stsv-Input__background-color--focus);
93
+ border-color: var(--stsv-Input__border-color--focus);
94
+ color: var(--stsv-Input__color--focus);
95
+ outline-color: var(--stsv-Common__outline-color);
96
+ outline-offset: var(--stsv-Common__outline-offset);
97
+ outline-style: var(--stsv-Common__outline-style);
98
+ outline-width: var(--stsv-Common__outline-width);
99
99
  }
100
100
 
101
101
  .sterling-text-area:disabled {
102
- background-color: var(--Input__background-color--disabled);
103
- border-color: var(---Input__border-color--disabled);
104
- color: var(--Input__color--disabled);
102
+ background-color: var(--stsv-Common__background-color--disabled);
103
+ border-color: var(--stsv--Common__border-color--disabled);
104
+ color: var(--stsv-Common__color--disabled);
105
105
  cursor: not-allowed;
106
106
  }
107
107
 
@@ -128,12 +128,12 @@ $:
128
128
  }
129
129
 
130
130
  textarea::placeholder {
131
- color: var(--Display__color--faint);
131
+ color: var(--stsv-Display__color--faint);
132
132
  transition: background-color 250ms, color 250ms, border-color 250ms;
133
133
  }
134
134
 
135
135
  textarea:disabled::placeholder {
136
- color: var(--Display__color--disabled);
136
+ color: var(--stsv-Display__color--disabled);
137
137
  }
138
138
 
139
139
  .sterling-text-area > :global(label) {
@@ -0,0 +1 @@
1
+ export {};
package/Tooltip.svelte ADDED
@@ -0,0 +1,182 @@
1
+ <script>import { portal } from "./actions/portal";
2
+ import { arrow, autoUpdate, computePosition, flip, offset } from "@floating-ui/dom";
3
+ import { onMount } from "svelte";
4
+ import { fade } from "svelte/transition";
5
+ export let autoShow = void 0;
6
+ export let hoverDelayMilliseconds = 1e3;
7
+ export let open = false;
8
+ export let placement = "top";
9
+ export let portalTarget = void 0;
10
+ let anchorRef;
11
+ let tooltipRef;
12
+ let arrowRef;
13
+ let position = void 0;
14
+ $:
15
+ reference = $$slots.default ? anchorRef?.previousElementSibling : void 0;
16
+ const computeTooltipPosition = async () => {
17
+ if (reference && tooltipRef && arrowRef) {
18
+ const floatingOffset = Math.sqrt(2 * arrowRef.offsetWidth ** 2) / 2;
19
+ const middleware = [
20
+ offset(floatingOffset),
21
+ flip({ fallbackPlacements: ["top", "bottom", "right", "left"] }),
22
+ arrow({
23
+ element: arrowRef
24
+ })
25
+ ];
26
+ console.log(placement);
27
+ position = await computePosition(reference, tooltipRef, {
28
+ placement,
29
+ middleware
30
+ });
31
+ } else {
32
+ position = void 0;
33
+ }
34
+ };
35
+ let cleanupAutoUpdate = () => {
36
+ };
37
+ const autoUpdateTooltipPosition = () => {
38
+ cleanupAutoUpdate();
39
+ cleanupAutoUpdate = () => {
40
+ };
41
+ if (reference && tooltipRef) {
42
+ cleanupAutoUpdate = autoUpdate(reference, tooltipRef, computeTooltipPosition);
43
+ }
44
+ };
45
+ $:
46
+ reference, tooltipRef, autoUpdateTooltipPosition();
47
+ $:
48
+ open, placement, computeTooltipPosition();
49
+ $:
50
+ tipStyle = position ? `left:${position.x}px; top:${position.y}px;` : "";
51
+ const getArrowPlacementStyle = (position2) => {
52
+ if (position2?.placement) {
53
+ switch (position2.placement) {
54
+ case "top":
55
+ case "top-start":
56
+ case "top-end":
57
+ return `bottom: -${arrowRef.offsetWidth}px;transform:translate(0, -50%) rotate(135deg);`;
58
+ case "right":
59
+ case "right-start":
60
+ case "right-end":
61
+ return `left: -${arrowRef.offsetWidth}px;transform:translate(50%, 0) rotate(225deg);`;
62
+ case "bottom":
63
+ case "bottom-start":
64
+ case "bottom-end":
65
+ return `top: -${arrowRef.offsetWidth}px;transform:translate(0, 50%) rotate(-45deg);`;
66
+ case "left":
67
+ case "left-start":
68
+ case "left-end":
69
+ return `right: -${arrowRef.offsetWidth}px;transform:translate(-50%, 0) rotate(45deg);`;
70
+ }
71
+ }
72
+ return "";
73
+ };
74
+ const getArrowOffsetStyle = (position2) => {
75
+ const arrow2 = position2?.middlewareData?.arrow;
76
+ if (arrow2) {
77
+ if (arrow2.x !== null && arrow2.x !== void 0) {
78
+ return `left: ${arrow2.x}px;`;
79
+ } else if (arrow2.y !== null && arrow2.y !== void 0) {
80
+ return `top: ${arrow2.y}px;`;
81
+ }
82
+ }
83
+ return "";
84
+ };
85
+ $:
86
+ arrowStyle = getArrowPlacementStyle(position) + getArrowOffsetStyle(position);
87
+ const show = () => open = true;
88
+ const hide = () => open = false;
89
+ const toggle = () => open = !open;
90
+ const delayShow = () => {
91
+ hoverDelayMilliseconds === 0 ? show() : setTimeout(() => {
92
+ show();
93
+ }, hoverDelayMilliseconds);
94
+ };
95
+ let cleanupAutoShowUpdate = () => {
96
+ };
97
+ const autoShowUpdate = () => {
98
+ cleanupAutoShowUpdate();
99
+ cleanupAutoShowUpdate = () => {
100
+ };
101
+ const element = reference;
102
+ if (element) {
103
+ switch (autoShow) {
104
+ case "click":
105
+ element.addEventListener("click", toggle);
106
+ cleanupAutoShowUpdate = () => element.removeEventListener("click", toggle);
107
+ break;
108
+ case "hover":
109
+ element.addEventListener("mouseenter", delayShow);
110
+ element.addEventListener("mouseleave", hide);
111
+ cleanupAutoShowUpdate = () => {
112
+ element.removeEventListener("mouseenter", delayShow);
113
+ element.removeEventListener("mouseleave", hide);
114
+ };
115
+ }
116
+ }
117
+ };
118
+ $:
119
+ reference, autoShow, autoShowUpdate();
120
+ let mounted = false;
121
+ onMount(() => {
122
+ mounted = true;
123
+ portalTarget = portalTarget || document.body;
124
+ autoUpdateTooltipPosition();
125
+ computeTooltipPosition();
126
+ autoShowUpdate();
127
+ });
128
+ </script>
129
+
130
+ <slot />
131
+ <div class="sterling-tooltip-anchor" bind:this={anchorRef} />
132
+
133
+ {#if open}
134
+ <div
135
+ class="sterling-tooltip-portal"
136
+ use:portal={{ target: document.body }}
137
+ transition:fade={{ duration: 250 }}
138
+ >
139
+ <div bind:this={tooltipRef} class="sterling-tooltip" style={tipStyle}>
140
+ <div class="arrow" bind:this={arrowRef} style={arrowStyle} />
141
+ <slot name="tip" />
142
+ </div>
143
+ </div>
144
+ {/if}
145
+
146
+ <style>
147
+ .sterling-tooltip-anchor {
148
+ display: none;
149
+ width: 0;
150
+ height: 0;
151
+ }
152
+
153
+ .sterling-tooltip-portal {
154
+ position: relative;
155
+ overflow: visible;
156
+ }
157
+
158
+ .sterling-tooltip {
159
+ background-color: var(--stsv-Common__background-color);
160
+ border-color: var(--stsv-Common__border-color);
161
+ border-radius: var(--stsv-Common__border-radius);
162
+ border-style: var(--stsv-Common__border-style);
163
+ border-width: var(--stsv-Common__border-width);
164
+ color: var(--stsv-Common__color);
165
+ position: absolute;
166
+ overflow: visible;
167
+ box-shadow: rgba(0, 0, 0, 0.4) 2px 2px 4px -1px;
168
+ z-index: 4;
169
+ }
170
+
171
+ .arrow {
172
+ position: absolute;
173
+ width: 10px;
174
+ height: 10px;
175
+ background-color: var(--stsv-Common__background-color);
176
+ border-color: var(--stsv-Common__border-color);
177
+ border-radius: var(--stsv-Common__border-radius);
178
+ border-style: var(--stsv-Common__border-style);
179
+ border-width: var(--stsv-Common__border-width);
180
+ clip-path: polygon(0% 1%, 100% 1%, 100% 100%, 0% 1%);
181
+ }
182
+ </style>
@@ -0,0 +1,24 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ import type { TooltipAutoShow } from './Tooltip.types';
3
+ declare const __propDef: {
4
+ props: {
5
+ autoShow?: TooltipAutoShow | undefined;
6
+ hoverDelayMilliseconds?: number | undefined;
7
+ open?: boolean | undefined;
8
+ placement?: import("@floating-ui/core").Placement | undefined;
9
+ portalTarget?: HTMLElement | undefined;
10
+ };
11
+ events: {
12
+ [evt: string]: CustomEvent<any>;
13
+ };
14
+ slots: {
15
+ default: {};
16
+ tip: {};
17
+ };
18
+ };
19
+ export type TooltipProps = typeof __propDef.props;
20
+ export type TooltipEvents = typeof __propDef.events;
21
+ export type TooltipSlots = typeof __propDef.slots;
22
+ export default class Tooltip extends SvelteComponentTyped<TooltipProps, TooltipEvents, TooltipSlots> {
23
+ }
24
+ export {};
@@ -0,0 +1,3 @@
1
+ import type { Placement } from '@floating-ui/dom';
2
+ export type TooltipAutoShow = 'hover' | 'click';
3
+ export type TooltipPlacement = Placement;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ export declare const treeContextKey = "sterlingTree";
2
+ export declare const treeItemContextKey = "sterlingTreeItem";
@@ -0,0 +1,2 @@
1
+ export const treeContextKey = 'sterlingTree';
2
+ export const treeItemContextKey = 'sterlingTreeItem';
package/Tree.svelte ADDED
@@ -0,0 +1,142 @@
1
+ <script>import { createKeyborg } from "keyborg";
2
+ import { createEventDispatcher, onMount, setContext } from "svelte";
3
+ import { writable } from "svelte/store";
4
+ import { v4 as uuid } from "uuid";
5
+ import Label from "./Label.svelte";
6
+ import { treeContextKey } from "./Tree.constants";
7
+ const inputId = uuid();
8
+ export let composed = false;
9
+ export let disabled = false;
10
+ export let selectedValue = void 0;
11
+ export let expandedValues = [];
12
+ const selectedValueStore = writable(selectedValue);
13
+ const expandedValuesStore = writable(expandedValues);
14
+ const disabledStore = writable(disabled);
15
+ setContext(treeContextKey, {
16
+ expandedValues: expandedValuesStore,
17
+ selectedValue: selectedValueStore,
18
+ disabled: disabledStore
19
+ });
20
+ const dispatch = createEventDispatcher();
21
+ const raiseExpandCollapse = (expandedValues2) => {
22
+ dispatch("expandCollapse", { expandedValues: expandedValues2 });
23
+ };
24
+ const raiseSelect = (selectedValue2) => {
25
+ dispatch("select", { selectedValue: selectedValue2 });
26
+ };
27
+ let keyborg = createKeyborg(window);
28
+ let usingKeyboard = keyborg.isNavigatingWithKeyboard();
29
+ const keyborgHandler = (value) => {
30
+ usingKeyboard = value;
31
+ };
32
+ $: {
33
+ selectedValueStore.set(selectedValue);
34
+ }
35
+ $: {
36
+ selectedValue = $selectedValueStore;
37
+ raiseSelect($selectedValueStore);
38
+ }
39
+ $: {
40
+ expandedValuesStore.set(expandedValues);
41
+ }
42
+ $: {
43
+ expandedValues = $expandedValuesStore;
44
+ raiseExpandCollapse($expandedValuesStore);
45
+ }
46
+ $: {
47
+ disabledStore.set(disabled);
48
+ }
49
+ onMount(() => {
50
+ keyborg.subscribe(keyborgHandler);
51
+ return () => {
52
+ keyborg.unsubscribe(keyborgHandler);
53
+ };
54
+ });
55
+ </script>
56
+
57
+ <!-- svelte-ignore a11y-no-noninteractive-tabindex -->
58
+ <div
59
+ aria-disabled={disabled}
60
+ class="sterling-tree"
61
+ class:disabled
62
+ class:composed
63
+ class:using-keyboard={usingKeyboard}
64
+ >
65
+ {#if $$slots.label}
66
+ <Label {disabled} for={inputId}>
67
+ <slot name="label" />
68
+ </Label>
69
+ {/if}
70
+ <div class="tree" role="tree">
71
+ <slot />
72
+ </div>
73
+ </div>
74
+
75
+ <style>
76
+ .sterling-tree {
77
+ background-color: var(--stsv-Common__background-color);
78
+ border-color: var(--stsv-Common__border-color);
79
+ border-radius: var(--stsv-Common__border-radius);
80
+ border-style: var(--stsv-Common__border-style);
81
+ border-width: var(--stsv-Common__border-width);
82
+ box-sizing: border-box;
83
+ color: var(--stsv-Common__color);
84
+ display: grid;
85
+ grid-template-columns: 1fr;
86
+ grid-template-rows: auto 1fr;
87
+ height: 100%;
88
+ margin: 0;
89
+ overflow: hidden;
90
+ transition: background-color 250ms, color 250ms, border-color 250ms;
91
+ }
92
+
93
+ .sterling-tree:hover {
94
+ border-color: var(--stsv-Common__border-color--hover);
95
+ color: var(--stsv-Common__color--hover);
96
+ }
97
+
98
+ .sterling-tree.using-keyboard:focus-within {
99
+ border-color: var(--stsv-Button__border-color--focus);
100
+ color: var(--stsv-Common__color--focus);
101
+ outline-color: var(--stsv-Common__outline-color);
102
+ outline-offset: var(--stsv-Common__outline-offset);
103
+ outline-style: var(--stsv-Common__outline-style);
104
+ outline-width: var(--stsv-Common__outline-width);
105
+ }
106
+
107
+ .sterling-tree.disabled {
108
+ background-color: var(--stsv-Common__background-color--disabled);
109
+ border-color: var(--stsv--Common__border-color--disabled);
110
+ color: var(--stsv-Common__color--disabled);
111
+ cursor: not-allowed;
112
+ }
113
+
114
+ .sterling-tree.composed,
115
+ .sterling-tree:hover.composed,
116
+ .sterling-tree:focus-visible.composed,
117
+ .sterling-tree.disabled.composed {
118
+ background: none;
119
+ border: none;
120
+ outline: none;
121
+ }
122
+
123
+ .sterling-tree > :global(label) {
124
+ font-size: 0.7em;
125
+ margin: 0.5em 0.7em;
126
+ }
127
+
128
+ .sterling-tree > :global(label):empty {
129
+ margin: 0;
130
+ }
131
+
132
+ .tree {
133
+ display: flex;
134
+ flex-direction: column;
135
+ flex-wrap: nowrap;
136
+ grid-row: 2 / span 1;
137
+ overflow-x: hidden;
138
+ overflow-y: scroll;
139
+ outline: none;
140
+ position: relative;
141
+ }
142
+ </style>
@@ -0,0 +1,25 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ composed?: boolean | undefined;
5
+ disabled?: boolean | undefined;
6
+ selectedValue?: string | undefined;
7
+ expandedValues?: string[] | undefined;
8
+ };
9
+ events: {
10
+ expandCollapse: CustomEvent<any>;
11
+ select: CustomEvent<any>;
12
+ } & {
13
+ [evt: string]: CustomEvent<any>;
14
+ };
15
+ slots: {
16
+ label: {};
17
+ default: {};
18
+ };
19
+ };
20
+ export type TreeProps = typeof __propDef.props;
21
+ export type TreeEvents = typeof __propDef.events;
22
+ export type TreeSlots = typeof __propDef.slots;
23
+ export default class Tree extends SvelteComponentTyped<TreeProps, TreeEvents, TreeSlots> {
24
+ }
25
+ export {};
@@ -0,0 +1,28 @@
1
+ import type { Readable, Writable } from 'svelte/store';
2
+ /**
3
+ * Context for a Tree and its tree items.
4
+ */
5
+ export type TreeContext = {
6
+ /**
7
+ * The IDs of the expanded ttree tree items.
8
+ */
9
+ expandedValues: Writable<string[]>;
10
+ /**
11
+ * The ID of the selected tree tree item.
12
+ */
13
+ selectedValue: Writable<string | undefined>;
14
+ /** If the tree is disabled */
15
+ disabled: Readable<boolean>;
16
+ };
17
+ /**
18
+ * The context for a tree item.
19
+ */
20
+ export type TreeItemContext = {
21
+ /**
22
+ * How many levels deep this tree item is in the tree hierarchy.
23
+ * A top level item's depth is zero.
24
+ */
25
+ depth: number;
26
+ /** If the tree item is disabled */
27
+ disabled: Readable<boolean>;
28
+ };
package/Tree.types.js ADDED
@@ -0,0 +1 @@
1
+ export {};
@@ -1,7 +1,7 @@
1
1
  <script>import { onMount } from "svelte";
2
2
  export let expanded = false;
3
3
  export let hasChildren = false;
4
- let lastValue = expanded;
4
+ let previousExpanded = expanded;
5
5
  let mounted = false;
6
6
  onMount(() => {
7
7
  setTimeout(() => {
@@ -10,10 +10,10 @@ onMount(() => {
10
10
  });
11
11
  let animate = false;
12
12
  $: {
13
- if (expanded !== lastValue && mounted) {
13
+ if (expanded !== previousExpanded && mounted) {
14
14
  animate = true;
15
15
  }
16
- lastValue = expanded;
16
+ previousExpanded = expanded;
17
17
  }
18
18
  </script>
19
19