@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,267 +0,0 @@
1
- <script>import { getContext, setContext } from "svelte";
2
- import { slide } from "svelte/transition";
3
- import { treeContextKey, treeNodeContextKey } from "./Tree.constants";
4
- import TreeItem from "./TreeItem.svelte";
5
- export let disabled = false;
6
- export let nodeId;
7
- export let node = void 0;
8
- const { getNodeId, expandedNodeIds, selectedNodeId, selectedNodeEventHandlers } = getContext(treeContextKey);
9
- const { parentNodeId, depth } = getContext(treeNodeContextKey);
10
- if (nodeId && node) {
11
- if (nodeId !== getNodeId(node)) {
12
- throw new Error("The nodeId does not match node.nodeId.");
13
- }
14
- } else if (node) {
15
- nodeId = getNodeId(node);
16
- } else if (!nodeId) {
17
- throw new Error("Both nodeId and node are missing.");
18
- }
19
- setContext("sterlingTreeNode", { parentNodeId: nodeId, depth: depth + 1 });
20
- let treeNodeRef;
21
- let itemRef;
22
- $:
23
- hasChildren = (node?.children?.length || 0) > 0 || $$slots.children || $$slots.default;
24
- $:
25
- expanded = $expandedNodeIds.includes(nodeId);
26
- $:
27
- selected = $selectedNodeId === nodeId;
28
- const collapseNode = (index) => {
29
- if (!disabled) {
30
- index = index ?? $expandedNodeIds.findIndex((id) => id === nodeId);
31
- if (index !== -1) {
32
- expandedNodeIds.set([
33
- ...$expandedNodeIds.slice(0, index),
34
- ...$expandedNodeIds.slice(index + 1)
35
- ]);
36
- }
37
- }
38
- };
39
- const expandNode = (index) => {
40
- if (!disabled) {
41
- index = index ?? $expandedNodeIds.findIndex((id) => id === nodeId);
42
- if (index === -1) {
43
- expandedNodeIds.set([...$expandedNodeIds, nodeId]);
44
- }
45
- }
46
- };
47
- const toggleExpanded = () => {
48
- if (!disabled) {
49
- const index = $expandedNodeIds.findIndex((id) => id === nodeId);
50
- index !== -1 ? collapseNode(index) : expandNode(index);
51
- }
52
- };
53
- const selectNodeById = (nodeId2) => {
54
- if (!disabled) {
55
- selectedNodeId.set(nodeId2);
56
- }
57
- };
58
- export const selectNode = () => {
59
- if (!disabled) {
60
- selectNodeById(nodeId);
61
- }
62
- };
63
- const selectParentNode = () => {
64
- if (!disabled && parentNodeId) {
65
- selectNodeById(parentNodeId);
66
- }
67
- };
68
- const selectNextNode = () => {
69
- if (!disabled) {
70
- let nextNodeId = void 0;
71
- const decendants = treeNodeRef.getElementsByClassName("sterling-tree-node");
72
- const last = decendants.length > 0 ? decendants.item(0) : void 0;
73
- nextNodeId = last?.getAttribute("data-node-id");
74
- if (!nextNodeId) {
75
- nextNodeId = treeNodeRef.nextElementSibling?.getAttribute("data-node-id");
76
- }
77
- if (!nextNodeId) {
78
- let ancestor = treeNodeRef.closest(".sterling-tree-node");
79
- while (ancestor && !nextNodeId) {
80
- nextNodeId = ancestor?.nextElementSibling?.getAttribute("data-node-id");
81
- ancestor = ancestor.parentElement?.closest(".sterling-tree-node");
82
- }
83
- }
84
- if (nextNodeId) {
85
- selectNodeById(nextNodeId);
86
- }
87
- }
88
- };
89
- const selectPreviousNode = () => {
90
- if (!disabled) {
91
- let prevNodeId = void 0;
92
- const previousSibling = treeNodeRef?.previousElementSibling;
93
- if (previousSibling) {
94
- const decendants = previousSibling.getElementsByClassName("sterling-tree-node");
95
- const last = decendants.length > 0 ? decendants.item(decendants.length - 1) : previousSibling;
96
- prevNodeId = last?.getAttribute("data-node-id");
97
- }
98
- if (!prevNodeId) {
99
- prevNodeId = parentNodeId;
100
- }
101
- if (prevNodeId) {
102
- selectNodeById(prevNodeId);
103
- }
104
- }
105
- };
106
- const onItemClick = () => {
107
- console.log("onItemClick");
108
- toggleExpanded();
109
- selectNode();
110
- };
111
- const onKeydown = (event) => {
112
- if (!event.altKey && !event.ctrlKey && !event.shiftKey) {
113
- switch (event.key) {
114
- case "Enter":
115
- case " ":
116
- toggleExpanded();
117
- event.preventDefault();
118
- return false;
119
- case "ArrowRight":
120
- if (!expanded && hasChildren) {
121
- expandNode();
122
- } else {
123
- selectNextNode();
124
- }
125
- event.preventDefault();
126
- return false;
127
- case "ArrowLeft":
128
- if (expanded && hasChildren) {
129
- collapseNode();
130
- } else if (parentNodeId) {
131
- selectParentNode();
132
- } else {
133
- selectPreviousNode();
134
- }
135
- event.preventDefault();
136
- return false;
137
- case "ArrowUp":
138
- selectPreviousNode();
139
- event.preventDefault();
140
- return false;
141
- case "ArrowDown":
142
- selectNextNode();
143
- event.preventDefault();
144
- return false;
145
- }
146
- }
147
- };
148
- $: {
149
- if (selected) {
150
- selectedNodeEventHandlers.set({ onKeydown });
151
- treeNodeRef?.scrollIntoView({ behavior: "smooth", block: "nearest", inline: "nearest" });
152
- }
153
- }
154
- </script>
155
-
156
- <!--
157
- @component
158
- A node in a Tree displaying the item and children.
159
- -->
160
- <div
161
- aria-selected={selected ? true : undefined}
162
- aria-expanded={expanded}
163
- class="sterling-tree-node"
164
- class:disabled
165
- bind:this={treeNodeRef}
166
- data-node-id={nodeId}
167
- role="treeitem"
168
- >
169
- <!-- svelte-ignore a11y-click-events-have-key-events -->
170
- <div bind:this={itemRef} class="item" class:selected on:click={onItemClick}>
171
- <slot name="item" {disabled} {expanded} {hasChildren} {depth} {node} {nodeId} {selected}>
172
- <TreeItem {disabled} {expanded} {hasChildren} {depth} {node} {nodeId} {selected}>
173
- <svelte:fragment
174
- let:disabled
175
- let:expanded
176
- let:hasChildren
177
- let:depth
178
- let:node
179
- let:nodeId
180
- let:selected
181
- >
182
- <slot name="label" {disabled} {expanded} {hasChildren} {depth} {node} {nodeId} {selected}
183
- >{nodeId}</slot
184
- >
185
- </svelte:fragment>
186
- </TreeItem>
187
- </slot>
188
- </div>
189
- {#if expanded && hasChildren}
190
- <div class="children" transition:slide={{ duration: 200 }} role="group">
191
- <slot name="children">
192
- {#if node?.children}
193
- {#each node.children as child}
194
- <svelte:self {disabled} node={child} nodeId={child.nodeId}>
195
- <!--
196
- Forward the item slot into each tree node.
197
- It is cleanest to have a fragment for the TreeNode item slot to
198
- capture the let params, then apply them to the Tree item slot.
199
- -->
200
- <svelte:fragment
201
- slot="item"
202
- let:disabled
203
- let:expanded
204
- let:hasChildren
205
- let:depth
206
- let:node
207
- let:nodeId
208
- let:selected
209
- >
210
- <slot
211
- name="item"
212
- {disabled}
213
- {expanded}
214
- {hasChildren}
215
- {depth}
216
- {node}
217
- {nodeId}
218
- {selected}
219
- >
220
- <!--
221
- Svelte prevents conditionally applying slots.
222
- This repeats exact same item slot default for this child
223
- so the item slot is passed down the tree.
224
- -->
225
- <TreeItem {disabled} {expanded} {hasChildren} {depth} {node} {nodeId} {selected}>
226
- <svelte:fragment
227
- let:disabled
228
- let:expanded
229
- let:hasChildren
230
- let:depth
231
- let:node
232
- let:nodeId
233
- let:selected
234
- >
235
- <!-- This uses the label slot for the TreeItem default slot. -->
236
- <slot
237
- name="label"
238
- {disabled}
239
- {expanded}
240
- {hasChildren}
241
- {depth}
242
- {node}
243
- {nodeId}
244
- {selected}>{nodeId}</slot
245
- >
246
- </svelte:fragment>
247
- </TreeItem>
248
- </slot>
249
- </svelte:fragment>
250
- </svelte:self>
251
- {/each}
252
- {/if}
253
- </slot>
254
- <slot />
255
- </div>
256
- {/if}
257
- </div>
258
-
259
- <style>
260
- .item {
261
- outline: none;
262
- }
263
-
264
- .item:focus-visible {
265
- border: 1px solid blue;
266
- }
267
- </style>
@@ -1,43 +0,0 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- import type { TreeNodeData } from './Tree.types';
3
- declare class __sveltets_Render<T> {
4
- props(): {
5
- disabled?: boolean | undefined;
6
- nodeId: string;
7
- node?: TreeNodeData<T> | undefined;
8
- selectNode?: (() => void) | undefined;
9
- };
10
- events(): {} & {
11
- [evt: string]: CustomEvent<any>;
12
- };
13
- slots(): {
14
- item: {
15
- disabled: any;
16
- expanded: any;
17
- hasChildren: any;
18
- depth: any;
19
- node: any;
20
- nodeId: any;
21
- selected: any;
22
- };
23
- label: {
24
- disabled: any;
25
- expanded: any;
26
- hasChildren: any;
27
- depth: any;
28
- node: any;
29
- nodeId: any;
30
- selected: any;
31
- };
32
- children: {};
33
- default: {};
34
- };
35
- }
36
- export type TreeNodeProps<T> = ReturnType<__sveltets_Render<T>['props']>;
37
- export type TreeNodeEvents<T> = ReturnType<__sveltets_Render<T>['events']>;
38
- export type TreeNodeSlots<T> = ReturnType<__sveltets_Render<T>['slots']>;
39
- /** A node in a Tree displaying the item and children. */
40
- export default class TreeNode<T> extends SvelteComponentTyped<TreeNodeProps<T>, TreeNodeEvents<T>, TreeNodeSlots<T>> {
41
- get selectNode(): () => void;
42
- }
43
- export {};
@@ -1,27 +0,0 @@
1
- <script>export let disabled = false;
2
- </script>
3
-
4
- <label class="sterling-label" class:disabled {...$$restProps}>
5
- <slot />
6
- </label>
7
-
8
- <!--
9
- @component
10
- A styled HTML label element
11
- -->
12
- <style>
13
- label {
14
- transition: opacity 250ms;
15
- font: inherit;
16
- }
17
-
18
- label.disabled {
19
- opacity: 0.5;
20
- }
21
-
22
- @media (prefers-reduced-motion) {
23
- label {
24
- transition: none;
25
- }
26
- }
27
- </style>
@@ -1,20 +0,0 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- declare const __propDef: {
3
- props: {
4
- [x: string]: any;
5
- disabled?: boolean | undefined;
6
- };
7
- events: {
8
- [evt: string]: CustomEvent<any>;
9
- };
10
- slots: {
11
- default: {};
12
- };
13
- };
14
- export type LabelProps = typeof __propDef.props;
15
- export type LabelEvents = typeof __propDef.events;
16
- export type LabelSlots = typeof __propDef.slots;
17
- /** A styled HTML label element */
18
- export default class Label extends SvelteComponentTyped<LabelProps, LabelEvents, LabelSlots> {
19
- }
20
- export {};
@@ -1,5 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 16 16" {...$$restProps}>
2
- <path
3
- d="M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708z"
4
- />
5
- </svg>
@@ -1,23 +0,0 @@
1
- /** @typedef {typeof __propDef.props} CloseXProps */
2
- /** @typedef {typeof __propDef.events} CloseXEvents */
3
- /** @typedef {typeof __propDef.slots} CloseXSlots */
4
- export default class CloseX extends SvelteComponentTyped<{
5
- [x: string]: never;
6
- }, {
7
- [evt: string]: CustomEvent<any>;
8
- }, {}> {
9
- }
10
- export type CloseXProps = typeof __propDef.props;
11
- export type CloseXEvents = typeof __propDef.events;
12
- export type CloseXSlots = typeof __propDef.slots;
13
- import { SvelteComponentTyped } from "svelte";
14
- declare const __propDef: {
15
- props: {
16
- [x: string]: never;
17
- };
18
- events: {
19
- [evt: string]: CustomEvent<any>;
20
- };
21
- slots: {};
22
- };
23
- export {};
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes