@geoffcox/sterling-svelte 0.0.16 → 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.
- package/{buttons/Button.svelte → Button.svelte} +27 -27
- package/{inputs/Checkbox.svelte → Checkbox.svelte} +15 -15
- package/{surfaces/Dialog.svelte → Dialog.svelte} +34 -21
- package/{inputs/Input.svelte → Input.svelte} +22 -22
- package/Label.svelte +52 -0
- package/Label.svelte.d.ts +42 -0
- package/List.constants.d.ts +1 -0
- package/List.constants.js +1 -0
- package/List.svelte +324 -0
- package/List.svelte.d.ts +69 -0
- package/List.types.d.ts +6 -0
- package/ListItem.svelte +90 -0
- package/ListItem.svelte.d.ts +51 -0
- package/{containers/Menu.svelte → Menu.svelte} +42 -27
- package/{containers/MenuBar.svelte → MenuBar.svelte} +13 -13
- package/{buttons/MenuButton.svelte → MenuButton.svelte} +17 -17
- package/{buttons/MenuButton.svelte.d.ts → MenuButton.svelte.d.ts} +1 -1
- package/{containers/MenuItem.svelte → MenuItem.svelte} +42 -54
- package/{containers/MenuItem.svelte.d.ts → MenuItem.svelte.d.ts} +2 -2
- package/{containers/MenuSeparator.svelte → MenuSeparator.svelte} +2 -2
- package/Menus.types.d.ts +22 -0
- package/{containers/Menus.utils.d.ts → Menus.utils.d.ts} +2 -2
- package/{containers/Menus.utils.js → Menus.utils.js} +6 -6
- package/{surfaces/Portal.svelte → Portal.svelte} +1 -1
- package/{display/Progress.svelte → Progress.svelte} +14 -14
- package/{inputs/Radio.svelte → Radio.svelte} +15 -15
- package/{inputs/Select.svelte → Select.svelte} +92 -98
- package/{inputs/Select.svelte.d.ts → Select.svelte.d.ts} +20 -25
- package/{inputs/Slider.svelte → Slider.svelte} +49 -24
- package/Slider.svelte.d.ts +53 -0
- package/{inputs/Switch.svelte → Switch.svelte} +38 -38
- package/Tab.svelte +181 -0
- package/{containers/Tab.svelte.d.ts → Tab.svelte.d.ts} +12 -15
- package/TabList.svelte +247 -0
- package/{containers/TabList.svelte.d.ts → TabList.svelte.d.ts} +21 -21
- package/TabList.types.d.ts +7 -0
- package/{inputs/TextArea.svelte → TextArea.svelte} +22 -22
- package/Tooltip.svelte +182 -0
- package/Tooltip.svelte.d.ts +24 -0
- package/Tooltip.types.d.ts +3 -0
- package/Tooltip.types.js +1 -0
- package/Tree.constants.d.ts +2 -0
- package/Tree.constants.js +2 -0
- package/Tree.svelte +142 -0
- package/Tree.svelte.d.ts +25 -0
- package/Tree.types.d.ts +28 -0
- package/Tree.types.js +1 -0
- package/{containers/TreeChevron.svelte → TreeChevron.svelte} +3 -3
- package/TreeItem.svelte +276 -0
- package/TreeItem.svelte.d.ts +65 -0
- package/{containers/TreeItem.svelte → TreeItemDisplay.svelte} +18 -18
- package/{containers/TreeItem.svelte.d.ts → TreeItemDisplay.svelte.d.ts} +11 -14
- package/{forwardEvents.js → actions/forwardEvents.js} +0 -2
- package/index.d.ts +42 -31
- package/index.js +39 -25
- package/package.json +44 -41
- package/theme/darkTheme.js +66 -74
- package/theme/lightTheme.js +66 -74
- package/containers/List.svelte +0 -249
- package/containers/List.svelte.d.ts +0 -68
- package/containers/ListItem.svelte +0 -48
- package/containers/ListItem.svelte.d.ts +0 -26
- package/containers/Menus.types.d.ts +0 -22
- package/containers/Tab.svelte +0 -327
- package/containers/TabList.svelte +0 -126
- package/containers/Tabs.types.d.ts +0 -12
- package/containers/Tree.constants.d.ts +0 -2
- package/containers/Tree.constants.js +0 -2
- package/containers/Tree.svelte +0 -222
- package/containers/Tree.svelte.d.ts +0 -50
- package/containers/Tree.types.d.ts +0 -47
- package/containers/TreeNode.svelte +0 -266
- package/containers/TreeNode.svelte.d.ts +0 -43
- package/display/Label.svelte +0 -27
- package/display/Label.svelte.d.ts +0 -20
- package/inputs/Slider.svelte.d.ts +0 -28
- package/surfaces/CloseX.svelte +0 -5
- package/surfaces/CloseX.svelte.d.ts +0 -23
- /package/{buttons/Button.svelte.d.ts → Button.svelte.d.ts} +0 -0
- /package/{buttons/Button.types.d.ts → Button.types.d.ts} +0 -0
- /package/{buttons/Button.types.js → Button.types.js} +0 -0
- /package/{inputs/Checkbox.svelte.d.ts → Checkbox.svelte.d.ts} +0 -0
- /package/{surfaces/Dialog.svelte.d.ts → Dialog.svelte.d.ts} +0 -0
- /package/{inputs/Input.svelte.d.ts → Input.svelte.d.ts} +0 -0
- /package/{containers/Menus.types.js → List.types.js} +0 -0
- /package/{containers/Menu.svelte.d.ts → Menu.svelte.d.ts} +0 -0
- /package/{containers/MenuBar.svelte.d.ts → MenuBar.svelte.d.ts} +0 -0
- /package/{containers/MenuItemDisplay.svelte → MenuItemDisplay.svelte} +0 -0
- /package/{containers/MenuItemDisplay.svelte.d.ts → MenuItemDisplay.svelte.d.ts} +0 -0
- /package/{containers/MenuSeparator.svelte.d.ts → MenuSeparator.svelte.d.ts} +0 -0
- /package/{containers/Menus.constants.d.ts → Menus.constants.d.ts} +0 -0
- /package/{containers/Menus.constants.js → Menus.constants.js} +0 -0
- /package/{containers/Tabs.types.js → Menus.types.js} +0 -0
- /package/{surfaces/Portal.svelte.d.ts → Portal.svelte.d.ts} +0 -0
- /package/{display/Progress.svelte.d.ts → Progress.svelte.d.ts} +0 -0
- /package/{display/Progress.types.d.ts → Progress.types.d.ts} +0 -0
- /package/{display/Progress.types.js → Progress.types.js} +0 -0
- /package/{inputs/Radio.svelte.d.ts → Radio.svelte.d.ts} +0 -0
- /package/{inputs/Switch.svelte.d.ts → Switch.svelte.d.ts} +0 -0
- /package/{containers/Tabs.constants.d.ts → TabList.constants.d.ts} +0 -0
- /package/{containers/Tabs.constants.js → TabList.constants.js} +0 -0
- /package/{containers/Tree.types.js → TabList.types.js} +0 -0
- /package/{inputs/TextArea.svelte.d.ts → TextArea.svelte.d.ts} +0 -0
- /package/{inputs/TextArea.types.d.ts → TextArea.types.d.ts} +0 -0
- /package/{inputs/TextArea.types.js → TextArea.types.js} +0 -0
- /package/{containers/TreeChevron.svelte.d.ts → TreeChevron.svelte.d.ts} +0 -0
- /package/{clickOutside.d.ts → actions/clickOutside.d.ts} +0 -0
- /package/{clickOutside.js → actions/clickOutside.js} +0 -0
- /package/{forwardEvents.d.ts → actions/forwardEvents.d.ts} +0 -0
- /package/{portal.d.ts → actions/portal.d.ts} +0 -0
- /package/{portal.js → actions/portal.js} +0 -0
package/TreeItem.svelte
ADDED
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
<script>import { getContext, setContext } from "svelte";
|
|
2
|
+
import { slide } from "svelte/transition";
|
|
3
|
+
import { treeContextKey, treeItemContextKey } from "./Tree.constants";
|
|
4
|
+
import TreeItemDisplay from "./TreeItemDisplay.svelte";
|
|
5
|
+
import { writable } from "svelte/store";
|
|
6
|
+
export let disabled = false;
|
|
7
|
+
export let value;
|
|
8
|
+
const {
|
|
9
|
+
expandedValues,
|
|
10
|
+
selectedValue,
|
|
11
|
+
disabled: treeDisabled
|
|
12
|
+
} = getContext(treeContextKey);
|
|
13
|
+
const { depth = 0, disabled: parentDisabled } = getContext(treeItemContextKey) || {};
|
|
14
|
+
let treeItemRef;
|
|
15
|
+
$:
|
|
16
|
+
hasChildren = $$slots.default;
|
|
17
|
+
$:
|
|
18
|
+
expanded = $expandedValues.includes(value);
|
|
19
|
+
$:
|
|
20
|
+
selected = $selectedValue === value;
|
|
21
|
+
$:
|
|
22
|
+
_disabled = disabled || $parentDisabled || $treeDisabled;
|
|
23
|
+
const disabledStore = writable(_disabled);
|
|
24
|
+
$: {
|
|
25
|
+
disabledStore.set(_disabled);
|
|
26
|
+
}
|
|
27
|
+
const collapseItem = (index) => {
|
|
28
|
+
if (!disabled) {
|
|
29
|
+
index = index ?? $expandedValues.findIndex((id) => id === value);
|
|
30
|
+
if (index !== -1) {
|
|
31
|
+
expandedValues.set([
|
|
32
|
+
...$expandedValues.slice(0, index),
|
|
33
|
+
...$expandedValues.slice(index + 1)
|
|
34
|
+
]);
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return false;
|
|
39
|
+
};
|
|
40
|
+
const expandItem = (index) => {
|
|
41
|
+
if (!disabled) {
|
|
42
|
+
index = index ?? $expandedValues.findIndex((id) => id === value);
|
|
43
|
+
if (index === -1) {
|
|
44
|
+
expandedValues.set([...$expandedValues, value]);
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return false;
|
|
49
|
+
};
|
|
50
|
+
const toggleExpanded = () => {
|
|
51
|
+
if (!disabled) {
|
|
52
|
+
const index = $expandedValues.findIndex((id) => id === value);
|
|
53
|
+
return index !== -1 ? collapseItem(index) : expandItem(index);
|
|
54
|
+
}
|
|
55
|
+
return false;
|
|
56
|
+
};
|
|
57
|
+
const focusItem = (treeItemElement) => {
|
|
58
|
+
if (!_disabled) {
|
|
59
|
+
const item = treeItemElement.querySelector(".item");
|
|
60
|
+
item?.focus();
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
const selectItemById = (value2) => {
|
|
64
|
+
if (!_disabled) {
|
|
65
|
+
selectedValue.set(value2);
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
export const selectItem = () => {
|
|
69
|
+
if (!_disabled) {
|
|
70
|
+
selectItemById(value);
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
const selectParentItem = () => {
|
|
74
|
+
if (!_disabled) {
|
|
75
|
+
let candidate = treeItemRef.parentElement?.closest('[role="treeitem"][data-value]');
|
|
76
|
+
let candidateValue = candidate?.getAttribute("data-value");
|
|
77
|
+
if (candidateValue && candidate) {
|
|
78
|
+
selectItemById(candidateValue);
|
|
79
|
+
focusItem(candidate);
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return false;
|
|
84
|
+
};
|
|
85
|
+
const selectNextItem = () => {
|
|
86
|
+
if (!_disabled) {
|
|
87
|
+
let candidateValue = void 0;
|
|
88
|
+
let candidate = treeItemRef.querySelector('[role="treeitem"][data-value]');
|
|
89
|
+
candidateValue = candidate?.getAttribute("data-value");
|
|
90
|
+
if (!candidateValue) {
|
|
91
|
+
candidate = treeItemRef.nextElementSibling;
|
|
92
|
+
while (candidate && candidate.getAttribute("data-value") === null) {
|
|
93
|
+
candidate = candidate.nextElementSibling;
|
|
94
|
+
}
|
|
95
|
+
candidateValue = candidate?.getAttribute("data-value");
|
|
96
|
+
}
|
|
97
|
+
if (!candidateValue) {
|
|
98
|
+
let ancestor = treeItemRef.parentElement?.closest(
|
|
99
|
+
'[role="treeitem"][data-value]'
|
|
100
|
+
);
|
|
101
|
+
while (ancestor && !candidateValue) {
|
|
102
|
+
candidate = ancestor?.nextElementSibling;
|
|
103
|
+
candidateValue = candidate?.getAttribute("data-value");
|
|
104
|
+
ancestor = ancestor.parentElement?.closest('[role="treeitem"][data-value]');
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
if (candidateValue && candidate) {
|
|
108
|
+
selectItemById(candidateValue);
|
|
109
|
+
focusItem(candidate);
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return false;
|
|
114
|
+
};
|
|
115
|
+
const selectPreviousItem = () => {
|
|
116
|
+
if (!_disabled) {
|
|
117
|
+
let candidate = void 0;
|
|
118
|
+
let candidateValue = void 0;
|
|
119
|
+
const previousSibling = treeItemRef?.previousElementSibling;
|
|
120
|
+
if (previousSibling) {
|
|
121
|
+
const decendants = previousSibling.querySelectorAll('[role="treeitem"][data-value]');
|
|
122
|
+
if (decendants) {
|
|
123
|
+
candidate = decendants[decendants.length - 1];
|
|
124
|
+
candidateValue = candidate?.getAttribute("data-value");
|
|
125
|
+
}
|
|
126
|
+
if (!candidateValue) {
|
|
127
|
+
candidate = previousSibling;
|
|
128
|
+
candidateValue = candidate?.getAttribute("data-value");
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (!candidateValue) {
|
|
132
|
+
candidate = treeItemRef.parentElement?.closest('[role="treeitem"][data-value]');
|
|
133
|
+
candidateValue = candidate?.getAttribute("data-value");
|
|
134
|
+
}
|
|
135
|
+
if (candidateValue && candidate) {
|
|
136
|
+
selectItemById(candidateValue);
|
|
137
|
+
focusItem(candidate);
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return false;
|
|
142
|
+
};
|
|
143
|
+
const onClick = () => {
|
|
144
|
+
if (!_disabled) {
|
|
145
|
+
toggleExpanded();
|
|
146
|
+
selectItem();
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
const onKeydown = (event) => {
|
|
150
|
+
if (!event.altKey && !event.ctrlKey && !event.shiftKey) {
|
|
151
|
+
switch (event.key) {
|
|
152
|
+
case "Enter":
|
|
153
|
+
case " ":
|
|
154
|
+
if (toggleExpanded()) {
|
|
155
|
+
event.preventDefault();
|
|
156
|
+
event.stopPropagation();
|
|
157
|
+
return false;
|
|
158
|
+
}
|
|
159
|
+
break;
|
|
160
|
+
case "ArrowRight":
|
|
161
|
+
if (hasChildren) {
|
|
162
|
+
if (expanded) {
|
|
163
|
+
if (selectNextItem()) {
|
|
164
|
+
event.preventDefault();
|
|
165
|
+
event.stopPropagation();
|
|
166
|
+
return false;
|
|
167
|
+
}
|
|
168
|
+
} else if (expandItem()) {
|
|
169
|
+
event.preventDefault();
|
|
170
|
+
event.stopPropagation();
|
|
171
|
+
return false;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
break;
|
|
175
|
+
case "ArrowLeft":
|
|
176
|
+
if (hasChildren && expanded) {
|
|
177
|
+
if (collapseItem()) {
|
|
178
|
+
event.preventDefault();
|
|
179
|
+
event.stopPropagation();
|
|
180
|
+
return false;
|
|
181
|
+
}
|
|
182
|
+
} else if (selectParentItem()) {
|
|
183
|
+
event.preventDefault();
|
|
184
|
+
event.stopPropagation();
|
|
185
|
+
return false;
|
|
186
|
+
}
|
|
187
|
+
break;
|
|
188
|
+
case "ArrowUp":
|
|
189
|
+
if (selectPreviousItem()) {
|
|
190
|
+
event.preventDefault();
|
|
191
|
+
event.stopPropagation();
|
|
192
|
+
return false;
|
|
193
|
+
}
|
|
194
|
+
break;
|
|
195
|
+
case "ArrowDown":
|
|
196
|
+
if (selectNextItem()) {
|
|
197
|
+
event.preventDefault();
|
|
198
|
+
event.stopPropagation();
|
|
199
|
+
return false;
|
|
200
|
+
}
|
|
201
|
+
break;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
};
|
|
205
|
+
setContext(treeItemContextKey, { depth: depth + 1, disabled: disabledStore });
|
|
206
|
+
</script>
|
|
207
|
+
|
|
208
|
+
<!--
|
|
209
|
+
@component
|
|
210
|
+
A item in a Tree displaying the item and children.
|
|
211
|
+
-->
|
|
212
|
+
<div
|
|
213
|
+
aria-selected={selected ? true : undefined}
|
|
214
|
+
aria-expanded={expanded}
|
|
215
|
+
bind:this={treeItemRef}
|
|
216
|
+
class="sterling-tree-item"
|
|
217
|
+
class:disabled={_disabled}
|
|
218
|
+
data-value={value}
|
|
219
|
+
role="treeitem"
|
|
220
|
+
on:blur
|
|
221
|
+
on:click
|
|
222
|
+
on:dblclick
|
|
223
|
+
on:focus
|
|
224
|
+
on:focusin
|
|
225
|
+
on:focusout
|
|
226
|
+
on:keydown
|
|
227
|
+
on:keypress
|
|
228
|
+
on:keyup
|
|
229
|
+
on:mousedown
|
|
230
|
+
on:mouseenter
|
|
231
|
+
on:mouseleave
|
|
232
|
+
on:mousemove
|
|
233
|
+
on:mouseover
|
|
234
|
+
on:mouseout
|
|
235
|
+
on:mouseup
|
|
236
|
+
on:pointercancel
|
|
237
|
+
on:pointerdown
|
|
238
|
+
on:pointerenter
|
|
239
|
+
on:pointerleave
|
|
240
|
+
on:pointermove
|
|
241
|
+
on:pointerover
|
|
242
|
+
on:pointerout
|
|
243
|
+
on:pointerup
|
|
244
|
+
on:wheel
|
|
245
|
+
{...$$restProps}
|
|
246
|
+
>
|
|
247
|
+
<!-- svelte-ignore a11y-no-noninteractive-tabindex -->
|
|
248
|
+
<div
|
|
249
|
+
class="item"
|
|
250
|
+
class:selected
|
|
251
|
+
tabindex={selected ? 0 : -1}
|
|
252
|
+
on:click={onClick}
|
|
253
|
+
on:keydown={onKeydown}
|
|
254
|
+
>
|
|
255
|
+
<slot name="item" {depth} disabled={_disabled} {expanded} {hasChildren} {selected} {value}>
|
|
256
|
+
<TreeItemDisplay {depth} disabled={_disabled} {expanded} {hasChildren} {selected} {value}>
|
|
257
|
+
<svelte:fragment let:depth let:disabled let:expanded let:hasChildren let:selected let:value>
|
|
258
|
+
<slot name="label" {depth} {disabled} {expanded} {hasChildren} {selected} {value}
|
|
259
|
+
>{value}</slot
|
|
260
|
+
>
|
|
261
|
+
</svelte:fragment>
|
|
262
|
+
</TreeItemDisplay>
|
|
263
|
+
</slot>
|
|
264
|
+
</div>
|
|
265
|
+
{#if expanded && hasChildren}
|
|
266
|
+
<div class="children" transition:slide={{ duration: 200 }} role="group">
|
|
267
|
+
<slot />
|
|
268
|
+
</div>
|
|
269
|
+
{/if}
|
|
270
|
+
</div>
|
|
271
|
+
|
|
272
|
+
<style>
|
|
273
|
+
.item {
|
|
274
|
+
outline: none;
|
|
275
|
+
}
|
|
276
|
+
</style>
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {
|
|
4
|
+
[x: string]: any;
|
|
5
|
+
disabled?: boolean | undefined;
|
|
6
|
+
value: string;
|
|
7
|
+
selectItem?: (() => void) | undefined;
|
|
8
|
+
};
|
|
9
|
+
events: {
|
|
10
|
+
blur: FocusEvent;
|
|
11
|
+
click: MouseEvent;
|
|
12
|
+
dblclick: MouseEvent;
|
|
13
|
+
focus: FocusEvent;
|
|
14
|
+
focusin: FocusEvent;
|
|
15
|
+
focusout: FocusEvent;
|
|
16
|
+
keydown: KeyboardEvent;
|
|
17
|
+
keypress: KeyboardEvent;
|
|
18
|
+
keyup: KeyboardEvent;
|
|
19
|
+
mousedown: MouseEvent;
|
|
20
|
+
mouseenter: MouseEvent;
|
|
21
|
+
mouseleave: MouseEvent;
|
|
22
|
+
mousemove: MouseEvent;
|
|
23
|
+
mouseover: MouseEvent;
|
|
24
|
+
mouseout: MouseEvent;
|
|
25
|
+
mouseup: MouseEvent;
|
|
26
|
+
pointercancel: PointerEvent;
|
|
27
|
+
pointerdown: PointerEvent;
|
|
28
|
+
pointerenter: PointerEvent;
|
|
29
|
+
pointerleave: PointerEvent;
|
|
30
|
+
pointermove: PointerEvent;
|
|
31
|
+
pointerover: PointerEvent;
|
|
32
|
+
pointerout: PointerEvent;
|
|
33
|
+
pointerup: PointerEvent;
|
|
34
|
+
wheel: WheelEvent;
|
|
35
|
+
} & {
|
|
36
|
+
[evt: string]: CustomEvent<any>;
|
|
37
|
+
};
|
|
38
|
+
slots: {
|
|
39
|
+
item: {
|
|
40
|
+
depth: number;
|
|
41
|
+
disabled: boolean;
|
|
42
|
+
expanded: boolean;
|
|
43
|
+
hasChildren: boolean;
|
|
44
|
+
selected: boolean;
|
|
45
|
+
value: string;
|
|
46
|
+
};
|
|
47
|
+
label: {
|
|
48
|
+
depth: number;
|
|
49
|
+
disabled: boolean;
|
|
50
|
+
expanded: boolean;
|
|
51
|
+
hasChildren: boolean;
|
|
52
|
+
selected: boolean;
|
|
53
|
+
value: string;
|
|
54
|
+
};
|
|
55
|
+
default: {};
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
export type TreeItemProps = typeof __propDef.props;
|
|
59
|
+
export type TreeItemEvents = typeof __propDef.events;
|
|
60
|
+
export type TreeItemSlots = typeof __propDef.slots;
|
|
61
|
+
/** A item in a Tree displaying the item and children. */
|
|
62
|
+
export default class TreeItem extends SvelteComponentTyped<TreeItemProps, TreeItemEvents, TreeItemSlots> {
|
|
63
|
+
get selectItem(): () => void;
|
|
64
|
+
}
|
|
65
|
+
export {};
|
|
@@ -3,17 +3,16 @@ export let depth = 0;
|
|
|
3
3
|
export let disabled = false;
|
|
4
4
|
export let expanded = false;
|
|
5
5
|
export let hasChildren = false;
|
|
6
|
+
export let value;
|
|
6
7
|
export let selected = false;
|
|
7
|
-
export let nodeId;
|
|
8
|
-
export let node = void 0;
|
|
9
8
|
</script>
|
|
10
9
|
|
|
11
10
|
<div
|
|
12
|
-
class="sterling-tree-
|
|
11
|
+
class="sterling-tree-item"
|
|
13
12
|
class:disabled
|
|
14
13
|
class:expanded
|
|
15
14
|
class:selected
|
|
16
|
-
style={`--sterling-tree-
|
|
15
|
+
style={`--sterling-tree-item-depth: ${depth}`}
|
|
17
16
|
on:blur
|
|
18
17
|
on:click
|
|
19
18
|
on:dblclick
|
|
@@ -42,43 +41,44 @@ export let node = void 0;
|
|
|
42
41
|
{...$$restProps}
|
|
43
42
|
>
|
|
44
43
|
<TreeChevron {expanded} {hasChildren} />
|
|
45
|
-
<slot {depth} {disabled} {expanded} {hasChildren} {selected} {
|
|
44
|
+
<slot {depth} {disabled} {expanded} {hasChildren} {selected} {value} />
|
|
46
45
|
</div>
|
|
47
46
|
|
|
48
47
|
<style>
|
|
49
|
-
.sterling-tree-
|
|
48
|
+
.sterling-tree-item {
|
|
50
49
|
align-content: center;
|
|
51
50
|
align-items: center;
|
|
52
51
|
background-color: transparent;
|
|
53
52
|
box-sizing: border-box;
|
|
54
|
-
color: var(--Input__color);
|
|
53
|
+
color: var(--stsv-Input__color);
|
|
55
54
|
display: grid;
|
|
56
55
|
grid-template-columns: auto 1fr;
|
|
57
56
|
column-gap: 0.25em;
|
|
58
57
|
margin: 0;
|
|
59
58
|
outline: none;
|
|
60
59
|
padding: 0.5em;
|
|
61
|
-
padding-left: calc(0.5em * var(--sterling-tree-
|
|
60
|
+
padding-left: calc(0.2em + (0.5em * var(--sterling-tree-item-depth)));
|
|
62
61
|
text-overflow: ellipsis;
|
|
63
62
|
transition: background-color 250ms, color 250ms, border-color 250ms;
|
|
64
63
|
white-space: nowrap;
|
|
65
64
|
}
|
|
66
65
|
|
|
67
|
-
.sterling-tree-
|
|
68
|
-
background-color: var(--Button__background-color--hover);
|
|
69
|
-
color: var(--Button__color--hover);
|
|
66
|
+
.sterling-tree-item:hover {
|
|
67
|
+
background-color: var(--stsv-Button__background-color--hover);
|
|
68
|
+
color: var(--stsv-Button__color--hover);
|
|
70
69
|
}
|
|
71
70
|
|
|
72
|
-
.sterling-tree-
|
|
73
|
-
background-color: var(--Input__background-color--selected);
|
|
74
|
-
color: var(--Input__color--selected);
|
|
71
|
+
.sterling-tree-item.selected {
|
|
72
|
+
background-color: var(--stsv-Input__background-color--selected);
|
|
73
|
+
color: var(--stsv-Input__color--selected);
|
|
75
74
|
}
|
|
76
75
|
|
|
77
|
-
.sterling-tree-
|
|
78
|
-
color: var(--
|
|
76
|
+
.sterling-tree-item.disabled {
|
|
77
|
+
color: var(--stsv-Common__color--disabled);
|
|
78
|
+
cursor: not-allowed;
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
-
.sterling-tree-
|
|
81
|
+
.sterling-tree-item.leaf {
|
|
82
82
|
border: none;
|
|
83
83
|
background: currentColor;
|
|
84
84
|
border-radius: 50%;
|
|
@@ -89,7 +89,7 @@ export let node = void 0;
|
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
@media (prefers-reduced-motion) {
|
|
92
|
-
.sterling-tree-
|
|
92
|
+
.sterling-tree-item {
|
|
93
93
|
transition: none;
|
|
94
94
|
}
|
|
95
95
|
}
|
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
import { SvelteComponentTyped } from "svelte";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
props(): {
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {
|
|
5
4
|
[x: string]: any;
|
|
6
5
|
depth?: number | undefined;
|
|
7
6
|
disabled?: boolean | undefined;
|
|
8
7
|
expanded?: boolean | undefined;
|
|
9
8
|
hasChildren?: boolean | undefined;
|
|
9
|
+
value: string;
|
|
10
10
|
selected?: boolean | undefined;
|
|
11
|
-
nodeId: string;
|
|
12
|
-
node?: TreeNodeData<T> | undefined;
|
|
13
11
|
};
|
|
14
|
-
events
|
|
12
|
+
events: {
|
|
15
13
|
blur: FocusEvent;
|
|
16
14
|
click: MouseEvent;
|
|
17
15
|
dblclick: MouseEvent;
|
|
@@ -40,21 +38,20 @@ declare class __sveltets_Render<T> {
|
|
|
40
38
|
} & {
|
|
41
39
|
[evt: string]: CustomEvent<any>;
|
|
42
40
|
};
|
|
43
|
-
slots
|
|
41
|
+
slots: {
|
|
44
42
|
default: {
|
|
45
43
|
depth: number;
|
|
46
44
|
disabled: boolean;
|
|
47
45
|
expanded: boolean;
|
|
48
46
|
hasChildren: boolean;
|
|
49
47
|
selected: boolean;
|
|
50
|
-
|
|
51
|
-
nodeId: string;
|
|
48
|
+
value: string;
|
|
52
49
|
};
|
|
53
50
|
};
|
|
54
|
-
}
|
|
55
|
-
export type
|
|
56
|
-
export type
|
|
57
|
-
export type
|
|
58
|
-
export default class
|
|
51
|
+
};
|
|
52
|
+
export type TreeItemDisplayProps = typeof __propDef.props;
|
|
53
|
+
export type TreeItemDisplayEvents = typeof __propDef.events;
|
|
54
|
+
export type TreeItemDisplaySlots = typeof __propDef.slots;
|
|
55
|
+
export default class TreeItemDisplay extends SvelteComponentTyped<TreeItemDisplayProps, TreeItemDisplayEvents, TreeItemDisplaySlots> {
|
|
59
56
|
}
|
|
60
57
|
export {};
|
|
@@ -2,11 +2,9 @@ import { custom_event } from 'svelte/internal';
|
|
|
2
2
|
export const forwardEvents = (node, params) => {
|
|
3
3
|
const addListeners = (node, target, events, customEvents) => {
|
|
4
4
|
let forward = (event) => {
|
|
5
|
-
console.log('forward', node, target, event);
|
|
6
5
|
target.dispatchEvent(event);
|
|
7
6
|
};
|
|
8
7
|
let forwardCustom = (event) => {
|
|
9
|
-
console.log('custom forward', node, target, event);
|
|
10
8
|
const customEvent = event;
|
|
11
9
|
target.dispatchEvent(custom_event(customEvent.type, customEvent.detail, {
|
|
12
10
|
bubbles: customEvent.bubbles,
|
package/index.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
export { clickOutside } from './actions/clickOutside';
|
|
2
|
+
export { forwardEvents } from './actions/forwardEvents';
|
|
3
|
+
export { portal } from './actions/portal';
|
|
1
4
|
export { type Theme, type ThemeActionParams } from './theme/types';
|
|
2
5
|
export { applyDarkTheme } from './theme/applyDarkTheme';
|
|
3
6
|
export { applyLightTheme } from './theme/applyLightTheme';
|
|
@@ -6,34 +9,42 @@ export { darkTheme } from './theme/darkTheme';
|
|
|
6
9
|
export { lightTheme } from './theme/lightTheme';
|
|
7
10
|
export { neutrals } from './theme/colors';
|
|
8
11
|
export { toggleDarkTheme } from './theme/toggleDarkTheme';
|
|
9
|
-
export {
|
|
10
|
-
export {
|
|
11
|
-
export type {
|
|
12
|
-
export type {
|
|
13
|
-
export type { ProgressColorful } from './
|
|
14
|
-
export type {
|
|
15
|
-
export type {
|
|
16
|
-
export type {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
import
|
|
22
|
-
import
|
|
23
|
-
import
|
|
24
|
-
import
|
|
25
|
-
import
|
|
26
|
-
import
|
|
27
|
-
import
|
|
28
|
-
import
|
|
29
|
-
import
|
|
30
|
-
import
|
|
31
|
-
import
|
|
32
|
-
import
|
|
33
|
-
import
|
|
34
|
-
import
|
|
35
|
-
import
|
|
36
|
-
import
|
|
37
|
-
import
|
|
38
|
-
import
|
|
39
|
-
|
|
12
|
+
export { menuBarContextKey, menuItemContextKey } from './Menus.constants';
|
|
13
|
+
export type { ButtonVariant, ButtonShape } from './Button.types';
|
|
14
|
+
export type { ListContext } from './List.types';
|
|
15
|
+
export type { MenuBarContext, MenuItemContext, MenuItemRegistration } from './Menus.types';
|
|
16
|
+
export type { ProgressColorful } from './Progress.types';
|
|
17
|
+
export type { TabListContext } from './TabList.types';
|
|
18
|
+
export type { TextAreaResize } from './TextArea.types';
|
|
19
|
+
export type { TooltipAutoShow, TooltipPlacement } from './Tooltip.types';
|
|
20
|
+
export type { TreeContext, TreeItemContext } from './Tree.types';
|
|
21
|
+
export { listContextKey } from './List.constants';
|
|
22
|
+
export { tabListContextKey } from './TabList.constants';
|
|
23
|
+
export { treeContextKey, treeItemContextKey } from './Tree.constants';
|
|
24
|
+
import Button from './Button.svelte';
|
|
25
|
+
import Checkbox from './Checkbox.svelte';
|
|
26
|
+
import Dialog from './Dialog.svelte';
|
|
27
|
+
import Input from './Input.svelte';
|
|
28
|
+
import Label from './Label.svelte';
|
|
29
|
+
import List from './List.svelte';
|
|
30
|
+
import ListItem from './ListItem.svelte';
|
|
31
|
+
import Menu from './Menu.svelte';
|
|
32
|
+
import MenuBar from './MenuBar.svelte';
|
|
33
|
+
import MenuButton from './MenuButton.svelte';
|
|
34
|
+
import MenuItem from './MenuItem.svelte';
|
|
35
|
+
import MenuItemDisplay from './MenuItemDisplay.svelte';
|
|
36
|
+
import MenuSeparator from './MenuSeparator.svelte';
|
|
37
|
+
import Progress from './Progress.svelte';
|
|
38
|
+
import Radio from './Radio.svelte';
|
|
39
|
+
import Select from './Select.svelte';
|
|
40
|
+
import Slider from './Slider.svelte';
|
|
41
|
+
import Switch from './Switch.svelte';
|
|
42
|
+
import Tab from './Tab.svelte';
|
|
43
|
+
import TabList from './TabList.svelte';
|
|
44
|
+
import TextArea from './TextArea.svelte';
|
|
45
|
+
import Tooltip from './Tooltip.svelte';
|
|
46
|
+
import Tree from './Tree.svelte';
|
|
47
|
+
import TreeChevron from './TreeChevron.svelte';
|
|
48
|
+
import TreeItem from './TreeItem.svelte';
|
|
49
|
+
import TreeItemDisplay from './TreeItemDisplay.svelte';
|
|
50
|
+
export { Button, Checkbox, Dialog, Input, Label, List, ListItem, Menu, MenuBar, MenuButton, MenuItem, MenuItemDisplay, MenuSeparator, Progress, Radio, Select, Slider, Switch, Tab, TabList, TextArea, Tooltip, Tree, TreeChevron, TreeItem, TreeItemDisplay };
|
package/index.js
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
// ----- actions ----- //
|
|
2
|
+
export { clickOutside } from './actions/clickOutside';
|
|
3
|
+
export { forwardEvents } from './actions/forwardEvents';
|
|
4
|
+
export { portal } from './actions/portal';
|
|
5
|
+
// ----- theme ----- //
|
|
1
6
|
export {} from './theme/types';
|
|
2
7
|
export { applyDarkTheme } from './theme/applyDarkTheme';
|
|
3
8
|
export { applyLightTheme } from './theme/applyLightTheme';
|
|
@@ -6,28 +11,37 @@ export { darkTheme } from './theme/darkTheme';
|
|
|
6
11
|
export { lightTheme } from './theme/lightTheme';
|
|
7
12
|
export { neutrals } from './theme/colors';
|
|
8
13
|
export { toggleDarkTheme } from './theme/toggleDarkTheme';
|
|
9
|
-
|
|
10
|
-
export { menuBarContextKey, menuItemContextKey } from './
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
import
|
|
17
|
-
import
|
|
18
|
-
import
|
|
19
|
-
import
|
|
20
|
-
import
|
|
21
|
-
import
|
|
22
|
-
import
|
|
23
|
-
import
|
|
24
|
-
import
|
|
25
|
-
import
|
|
26
|
-
import
|
|
27
|
-
import
|
|
28
|
-
import
|
|
29
|
-
import
|
|
30
|
-
import
|
|
31
|
-
import
|
|
32
|
-
import
|
|
33
|
-
|
|
14
|
+
// ----- Button ----- //
|
|
15
|
+
export { menuBarContextKey, menuItemContextKey } from './Menus.constants';
|
|
16
|
+
// ----- Component constants ----- //
|
|
17
|
+
export { listContextKey } from './List.constants';
|
|
18
|
+
export { tabListContextKey } from './TabList.constants';
|
|
19
|
+
export { treeContextKey, treeItemContextKey } from './Tree.constants';
|
|
20
|
+
// ----- Components ----- //
|
|
21
|
+
import Button from './Button.svelte';
|
|
22
|
+
import Checkbox from './Checkbox.svelte';
|
|
23
|
+
import Dialog from './Dialog.svelte';
|
|
24
|
+
import Input from './Input.svelte';
|
|
25
|
+
import Label from './Label.svelte';
|
|
26
|
+
import List from './List.svelte';
|
|
27
|
+
import ListItem from './ListItem.svelte';
|
|
28
|
+
import Menu from './Menu.svelte';
|
|
29
|
+
import MenuBar from './MenuBar.svelte';
|
|
30
|
+
import MenuButton from './MenuButton.svelte';
|
|
31
|
+
import MenuItem from './MenuItem.svelte';
|
|
32
|
+
import MenuItemDisplay from './MenuItemDisplay.svelte';
|
|
33
|
+
import MenuSeparator from './MenuSeparator.svelte';
|
|
34
|
+
import Progress from './Progress.svelte';
|
|
35
|
+
import Radio from './Radio.svelte';
|
|
36
|
+
import Select from './Select.svelte';
|
|
37
|
+
import Slider from './Slider.svelte';
|
|
38
|
+
import Switch from './Switch.svelte';
|
|
39
|
+
import Tab from './Tab.svelte';
|
|
40
|
+
import TabList from './TabList.svelte';
|
|
41
|
+
import TextArea from './TextArea.svelte';
|
|
42
|
+
import Tooltip from './Tooltip.svelte';
|
|
43
|
+
import Tree from './Tree.svelte';
|
|
44
|
+
import TreeChevron from './TreeChevron.svelte';
|
|
45
|
+
import TreeItem from './TreeItem.svelte';
|
|
46
|
+
import TreeItemDisplay from './TreeItemDisplay.svelte';
|
|
47
|
+
export { Button, Checkbox, Dialog, Input, Label, List, ListItem, Menu, MenuBar, MenuButton, MenuItem, MenuItemDisplay, MenuSeparator, Progress, Radio, Select, Slider, Switch, Tab, TabList, TextArea, Tooltip, Tree, TreeChevron, TreeItem, TreeItemDisplay };
|