tree-element 0.1.1 → 0.3.0
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/README.md +43 -31
- package/lib/animation.d.ts +2 -2
- package/lib/animation.d.ts.map +1 -1
- package/lib/animation.js +16 -12
- package/lib/animation.js.map +1 -1
- package/lib/classNames.d.ts.map +1 -1
- package/lib/classNames.js +2 -2
- package/lib/classNames.js.map +1 -1
- package/lib/dataLoader.d.ts +1 -0
- package/lib/dataLoader.d.ts.map +1 -1
- package/lib/dataLoader.js +22 -20
- package/lib/dataLoader.js.map +1 -1
- package/lib/dragAndDropHandler/binarySearch.js +3 -3
- package/lib/dragAndDropHandler/binarySearch.js.map +1 -1
- package/lib/dragAndDropHandler/dragElement.d.ts.map +1 -1
- package/lib/dragAndDropHandler/dragElement.js +11 -13
- package/lib/dragAndDropHandler/dragElement.js.map +1 -1
- package/lib/dragAndDropHandler/generateHitAreas.d.ts.map +1 -1
- package/lib/dragAndDropHandler/generateHitAreas.js +25 -25
- package/lib/dragAndDropHandler/generateHitAreas.js.map +1 -1
- package/lib/dragAndDropHandler/index.d.ts.map +1 -1
- package/lib/dragAndDropHandler/index.js +125 -158
- package/lib/dragAndDropHandler/index.js.map +1 -1
- package/lib/dragAndDropHandler/iterateVisibleNodes.d.ts.map +1 -1
- package/lib/dragAndDropHandler/iterateVisibleNodes.js +23 -22
- package/lib/dragAndDropHandler/iterateVisibleNodes.js.map +1 -1
- package/lib/dragAndDropHandler/types.d.ts.map +1 -1
- package/lib/elementsRenderer.d.ts +20 -7
- package/lib/elementsRenderer.d.ts.map +1 -1
- package/lib/elementsRenderer.js +195 -136
- package/lib/elementsRenderer.js.map +1 -1
- package/lib/events.d.ts +44 -11
- package/lib/events.d.ts.map +1 -1
- package/lib/index.d.ts +36 -13
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +386 -349
- package/lib/index.js.map +1 -1
- package/lib/keyHandler.d.ts +13 -8
- package/lib/keyHandler.d.ts.map +1 -1
- package/lib/keyHandler.js +106 -51
- package/lib/keyHandler.js.map +1 -1
- package/lib/methodTypes.d.ts +3 -3
- package/lib/methodTypes.d.ts.map +1 -1
- package/lib/mouseHandler.d.ts +1 -1
- package/lib/mouseHandler.d.ts.map +1 -1
- package/lib/mouseHandler.js +36 -49
- package/lib/mouseHandler.js.map +1 -1
- package/lib/mouseUtils.d.ts.map +1 -1
- package/lib/mouseUtils.js +2 -2
- package/lib/mouseUtils.js.map +1 -1
- package/lib/node.d.ts +47 -16
- package/lib/node.d.ts.map +1 -1
- package/lib/node.js +169 -171
- package/lib/node.js.map +1 -1
- package/lib/nodeElement/borderDropHint.d.ts.map +1 -1
- package/lib/nodeElement/borderDropHint.js +4 -5
- package/lib/nodeElement/borderDropHint.js.map +1 -1
- package/lib/nodeElement/folderElement.d.ts +8 -5
- package/lib/nodeElement/folderElement.d.ts.map +1 -1
- package/lib/nodeElement/folderElement.js +75 -67
- package/lib/nodeElement/folderElement.js.map +1 -1
- package/lib/nodeElement/ghostDropHint.d.ts.map +1 -1
- package/lib/nodeElement/ghostDropHint.js +13 -13
- package/lib/nodeElement/ghostDropHint.js.map +1 -1
- package/lib/nodeElement/index.d.ts +2 -1
- package/lib/nodeElement/index.d.ts.map +1 -1
- package/lib/nodeElement/index.js +38 -30
- package/lib/nodeElement/index.js.map +1 -1
- package/lib/nodeUtils.d.ts.map +1 -1
- package/lib/nodeUtils.js +1 -1
- package/lib/nodeUtils.js.map +1 -1
- package/lib/options.d.ts +19 -3
- package/lib/options.d.ts.map +1 -1
- package/lib/positionUtils.js +3 -3
- package/lib/positionUtils.js.map +1 -1
- package/lib/requestUrl.d.ts +1 -1
- package/lib/requestUrl.d.ts.map +1 -1
- package/lib/requestUrl.js +6 -17
- package/lib/requestUrl.js.map +1 -1
- package/lib/saveStateHandler.d.ts.map +1 -1
- package/lib/saveStateHandler.js +59 -89
- package/lib/saveStateHandler.js.map +1 -1
- package/lib/scrollHandler/containerScrollParent.d.ts.map +1 -1
- package/lib/scrollHandler/containerScrollParent.js +11 -18
- package/lib/scrollHandler/containerScrollParent.js.map +1 -1
- package/lib/scrollHandler/createScrollParent.d.ts.map +1 -1
- package/lib/scrollHandler/createScrollParent.js +12 -13
- package/lib/scrollHandler/createScrollParent.js.map +1 -1
- package/lib/scrollHandler/documentScrollParent.d.ts.map +1 -1
- package/lib/scrollHandler/documentScrollParent.js +18 -27
- package/lib/scrollHandler/documentScrollParent.js.map +1 -1
- package/lib/scrollHandler/scrollParent.d.ts.map +1 -1
- package/lib/scrollHandler/scrollParent.js +30 -34
- package/lib/scrollHandler/scrollParent.js.map +1 -1
- package/lib/scrollHandler.d.ts.map +1 -1
- package/lib/scrollHandler.js +11 -14
- package/lib/scrollHandler.js.map +1 -1
- package/lib/selectNodeHandler.d.ts +4 -2
- package/lib/selectNodeHandler.d.ts.map +1 -1
- package/lib/selectNodeHandler.js +64 -83
- package/lib/selectNodeHandler.js.map +1 -1
- package/lib/setDefaultOptions.d.ts.map +1 -1
- package/lib/setDefaultOptions.js +34 -38
- package/lib/setDefaultOptions.js.map +1 -1
- package/lib/triggerCustomEvent.d.ts.map +1 -1
- package/lib/triggerCustomEvent.js +2 -2
- package/lib/triggerCustomEvent.js.map +1 -1
- package/lib/util.d.ts.map +1 -1
- package/lib/util.js +2 -2
- package/lib/util.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/lib/version.js.map +1 -1
- package/package.json +43 -32
- package/src/animation.ts +14 -12
- package/src/classNames.ts +52 -52
- package/src/dataLoader.ts +79 -71
- package/src/dragAndDropHandler/binarySearch.ts +17 -17
- package/src/dragAndDropHandler/dragElement.ts +51 -50
- package/src/dragAndDropHandler/generateHitAreas.ts +156 -161
- package/src/dragAndDropHandler/index.ts +334 -348
- package/src/dragAndDropHandler/iterateVisibleNodes.ts +61 -63
- package/src/dragAndDropHandler/types.ts +5 -5
- package/src/elementsRenderer.ts +377 -294
- package/src/events.ts +241 -208
- package/src/header.txt +1 -1
- package/src/index.ts +259 -229
- package/src/keyHandler.ts +179 -115
- package/src/methodTypes.ts +7 -10
- package/src/mouseHandler.ts +316 -316
- package/src/mouseUtils.ts +14 -14
- package/src/node.ts +773 -771
- package/src/nodeElement/borderDropHint.ts +25 -25
- package/src/nodeElement/folderElement.ts +116 -102
- package/src/nodeElement/ghostDropHint.ts +64 -62
- package/src/nodeElement/index.ts +81 -73
- package/src/nodeUtils.ts +5 -5
- package/src/options.ts +25 -5
- package/src/requestUrl.ts +7 -14
- package/src/saveStateHandler.ts +191 -207
- package/src/scrollHandler/containerScrollParent.ts +40 -49
- package/src/scrollHandler/createScrollParent.ts +26 -27
- package/src/scrollHandler/documentScrollParent.ts +66 -72
- package/src/scrollHandler/scrollParent.ts +90 -86
- package/src/scrollHandler.ts +45 -45
- package/src/selectNodeHandler.ts +171 -165
- package/src/setDefaultOptions.ts +44 -32
- package/src/triggerCustomEvent.ts +7 -3
- package/src/util.ts +2 -3
- package/src/version.ts +1 -1
- package/tree_element.css +87 -69
- package/tree_element.debug.js +3866 -3831
- package/tree_element.debug.js.map +1 -1
- package/tree_element.js +2 -2
- package/tree_element.js.map +1 -1
package/src/events.ts
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import type { Node, NodeData, Position } from "./node";
|
|
2
2
|
|
|
3
3
|
export interface MoveInfo {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
4
|
+
doMove: () => void;
|
|
5
|
+
movedNode: Node;
|
|
6
|
+
originalEvent: Event;
|
|
7
|
+
position: Position;
|
|
8
|
+
previousParent: Node | null;
|
|
9
|
+
targetNode: Node;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
// The CustomEvent of a tree event, for example `TreeEvent<"tree.select">`.
|
|
13
13
|
export type TreeEvent<Name extends TreeEventName = TreeEventName> = CustomEvent<
|
|
14
|
-
|
|
14
|
+
TreeEvents[Name]
|
|
15
15
|
>;
|
|
16
16
|
|
|
17
17
|
export type TreeEventName = keyof TreeEvents;
|
|
@@ -22,223 +22,256 @@ export type TreeEventName = keyof TreeEvents;
|
|
|
22
22
|
// events are ordered chronologically instead of alphabetically.
|
|
23
23
|
/* eslint-disable perfectionist/sort-interfaces */
|
|
24
24
|
export interface TreeEvents {
|
|
25
|
+
/**
|
|
26
|
+
* Dispatched once, after the tree is rendered for the first time. With
|
|
27
|
+
* `dataUrl` this is after the data has arrived, so it is the moment the
|
|
28
|
+
* api is safe to use:
|
|
29
|
+
*
|
|
30
|
+
* ```js
|
|
31
|
+
* element.addEventListener("tree.init", () => {
|
|
32
|
+
* tree.selectNode(tree.getNodeByName("node1"));
|
|
33
|
+
* });
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* No `detail`.
|
|
37
|
+
*
|
|
38
|
+
* With inline `data`, the tree is rendered inside the constructor, so
|
|
39
|
+
* this event has already fired by the time the constructor returns. Add
|
|
40
|
+
* the listener to the element _before_ creating the tree:
|
|
41
|
+
*
|
|
42
|
+
* ```js
|
|
43
|
+
* const element = document.getElementById("tree1");
|
|
44
|
+
*
|
|
45
|
+
* element.addEventListener("tree.init", () => {
|
|
46
|
+
* // ...
|
|
47
|
+
* });
|
|
48
|
+
*
|
|
49
|
+
* const tree = new TreeElement({ data, htmlElement: element });
|
|
50
|
+
* ```
|
|
51
|
+
*
|
|
52
|
+
* @group Lifecycle
|
|
53
|
+
*/
|
|
54
|
+
"tree.init": undefined;
|
|
55
|
+
/**
|
|
56
|
+
* Dispatched after the tree has been re-rendered. No `detail`.
|
|
57
|
+
*
|
|
58
|
+
* @group Lifecycle
|
|
59
|
+
*/
|
|
60
|
+
"tree.refresh": undefined;
|
|
61
|
+
/**
|
|
62
|
+
* Dispatched when a node title is clicked. Call `preventDefault()` to
|
|
63
|
+
* stop the tree from selecting the node:
|
|
64
|
+
*
|
|
65
|
+
* ```js
|
|
66
|
+
* element.addEventListener("tree.click", (e) => {
|
|
67
|
+
* e.preventDefault();
|
|
68
|
+
* console.log("clicked", e.detail.node.name, "but not selected");
|
|
69
|
+
* });
|
|
70
|
+
* ```
|
|
71
|
+
*
|
|
72
|
+
* @group Mouse
|
|
73
|
+
*/
|
|
74
|
+
"tree.click": {
|
|
75
|
+
node: Node;
|
|
76
|
+
originalEvent: MouseEvent;
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* Dispatched when a node title is double clicked.
|
|
80
|
+
*
|
|
81
|
+
* @group Mouse
|
|
82
|
+
*/
|
|
83
|
+
"tree.dblclick": {
|
|
84
|
+
node: Node;
|
|
85
|
+
originalEvent: MouseEvent;
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* Dispatched on a right click on a node, unless `useContextMenu` is
|
|
89
|
+
* `false`. The browser's own menu is suppressed.
|
|
90
|
+
*
|
|
91
|
+
* @group Mouse
|
|
92
|
+
*/
|
|
93
|
+
"tree.contextmenu": {
|
|
94
|
+
node: Node;
|
|
95
|
+
originalEvent: MouseEvent;
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* Dispatched when `Enter` is pressed on the selected node, or on the
|
|
99
|
+
* focused node when no node is selected. Use it for what a click on a
|
|
100
|
+
* link would do, like opening the edit page of the node:
|
|
101
|
+
*
|
|
102
|
+
* ```js
|
|
103
|
+
* element.addEventListener("tree.activate", (e) => {
|
|
104
|
+
* window.location.href = e.detail.node.url;
|
|
105
|
+
* });
|
|
106
|
+
* ```
|
|
107
|
+
*
|
|
108
|
+
* @group Keyboard
|
|
109
|
+
*/
|
|
110
|
+
"tree.activate": {
|
|
111
|
+
node: Node;
|
|
112
|
+
originalEvent: KeyboardEvent;
|
|
113
|
+
};
|
|
114
|
+
/**
|
|
115
|
+
* Dispatched when a folder is opened, after the animation.
|
|
116
|
+
*
|
|
117
|
+
* @group Opening and closing
|
|
118
|
+
*/
|
|
119
|
+
"tree.open": {
|
|
120
|
+
node: Node;
|
|
121
|
+
};
|
|
122
|
+
/**
|
|
123
|
+
* Dispatched when a folder is closed, after the animation.
|
|
124
|
+
*
|
|
125
|
+
* @group Opening and closing
|
|
126
|
+
*/
|
|
127
|
+
"tree.close": {
|
|
128
|
+
node: Node;
|
|
129
|
+
};
|
|
130
|
+
/**
|
|
131
|
+
* Dispatched when a node is selected. A deselection is
|
|
132
|
+
* [`tree.deselect`](#tree-deselect) instead, so `node` is always a node
|
|
133
|
+
* here.
|
|
134
|
+
*
|
|
135
|
+
* ```js
|
|
136
|
+
* element.addEventListener("tree.select", (e) => {
|
|
137
|
+
* console.log("selected", e.detail.node.name);
|
|
138
|
+
* });
|
|
139
|
+
* ```
|
|
140
|
+
*
|
|
141
|
+
* @group Selection
|
|
142
|
+
*/
|
|
143
|
+
"tree.select": {
|
|
25
144
|
/**
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
*
|
|
30
|
-
* ```js
|
|
31
|
-
* element.addEventListener("tree.init", () => {
|
|
32
|
-
* tree.selectNode(tree.getNodeByName("node1"));
|
|
33
|
-
* });
|
|
34
|
-
* ```
|
|
35
|
-
*
|
|
36
|
-
* No `detail`.
|
|
37
|
-
*
|
|
38
|
-
* With inline `data`, the tree is rendered inside the constructor, so
|
|
39
|
-
* this event has already fired by the time the constructor returns. Add
|
|
40
|
-
* the listener to the element _before_ creating the tree:
|
|
41
|
-
*
|
|
42
|
-
* ```js
|
|
43
|
-
* const element = document.getElementById("tree1");
|
|
44
|
-
*
|
|
45
|
-
* element.addEventListener("tree.init", () => {
|
|
46
|
-
* // ...
|
|
47
|
-
* });
|
|
48
|
-
*
|
|
49
|
-
* const tree = new TreeElement({ data, htmlElement: element });
|
|
50
|
-
* ```
|
|
51
|
-
*
|
|
52
|
-
* @group Lifecycle
|
|
53
|
-
*/
|
|
54
|
-
"tree.init": undefined;
|
|
145
|
+
The node that was selected before, if any.
|
|
146
|
+
*/
|
|
147
|
+
deselectedNode: Node | null;
|
|
55
148
|
/**
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
149
|
+
The node that is now selected.
|
|
150
|
+
*/
|
|
151
|
+
node: Node;
|
|
152
|
+
};
|
|
153
|
+
/**
|
|
154
|
+
* Dispatched when the selected node is deselected, which happens when it
|
|
155
|
+
* is clicked again or passed to `selectNode` again with
|
|
156
|
+
* `mustToggle: true`. No `tree.select` is dispatched for it.
|
|
157
|
+
*
|
|
158
|
+
* ```js
|
|
159
|
+
* element.addEventListener("tree.deselect", (e) => {
|
|
160
|
+
* console.log("deselected", e.detail.node.name);
|
|
161
|
+
* });
|
|
162
|
+
* ```
|
|
163
|
+
*
|
|
164
|
+
* Selecting another node does not dispatch it — that is a `tree.select`
|
|
165
|
+
* with the previous node in `deselectedNode`. It is also not dispatched
|
|
166
|
+
* by `selectNode` without `mustToggle: true`, `selectNode(null)`,
|
|
167
|
+
* `removeFromSelection`, `removeNode`, `loadData` and restoring a saved
|
|
168
|
+
* state.
|
|
169
|
+
*
|
|
170
|
+
* @group Selection
|
|
171
|
+
*/
|
|
172
|
+
"tree.deselect": {
|
|
173
|
+
node: Node;
|
|
174
|
+
};
|
|
175
|
+
/**
|
|
176
|
+
* Dispatched when a node is dropped after a drag.
|
|
177
|
+
*
|
|
178
|
+
* | `detail` | Type |
|
|
179
|
+
* | ------------------------- | --------------------------------- |
|
|
180
|
+
* | `moveInfo.movedNode` | `Node` |
|
|
181
|
+
* | `moveInfo.targetNode` | `Node` |
|
|
182
|
+
* | `moveInfo.position` | `"before" \| "after" \| "inside"` |
|
|
183
|
+
* | `moveInfo.previousParent` | `Node \| null` |
|
|
184
|
+
* | `moveInfo.originalEvent` | `Event` |
|
|
185
|
+
* | `moveInfo.doMove` | `() => void` |
|
|
186
|
+
*
|
|
187
|
+
* Call `preventDefault()` to keep the tree as it is, and
|
|
188
|
+
* `moveInfo.doMove()` to apply the move later. See
|
|
189
|
+
* [Drag and drop](/guide/drag-and-drop#reacting-to-a-move).
|
|
190
|
+
*
|
|
191
|
+
* @group Drag and drop
|
|
192
|
+
*/
|
|
193
|
+
"tree.move": {
|
|
61
194
|
/**
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
*/
|
|
74
|
-
"tree.click": {
|
|
75
|
-
node: Node;
|
|
76
|
-
originalEvent: MouseEvent;
|
|
77
|
-
};
|
|
195
|
+
@hidden The fields are in the table above.
|
|
196
|
+
*/
|
|
197
|
+
moveInfo: MoveInfo;
|
|
198
|
+
};
|
|
199
|
+
/**
|
|
200
|
+
* Dispatched when data is set on the tree, both from the `data` option
|
|
201
|
+
* and from a url.
|
|
202
|
+
*
|
|
203
|
+
* @group Loading data
|
|
204
|
+
*/
|
|
205
|
+
"tree.set_data": {
|
|
78
206
|
/**
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
207
|
+
The node whose children were replaced, if it was a subtree.
|
|
208
|
+
*/
|
|
209
|
+
node?: Node;
|
|
210
|
+
treeData?: NodeData[];
|
|
211
|
+
};
|
|
212
|
+
/**
|
|
213
|
+
* Dispatched when a request starts.
|
|
214
|
+
*
|
|
215
|
+
* @group Loading data
|
|
216
|
+
*/
|
|
217
|
+
"tree.loading_data": {
|
|
218
|
+
element: HTMLElement;
|
|
87
219
|
/**
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
220
|
+
The node whose children are loading, if it is a subtree.
|
|
221
|
+
*/
|
|
222
|
+
node?: Node;
|
|
223
|
+
};
|
|
224
|
+
/**
|
|
225
|
+
* Dispatched when a request finishes. It is dispatched when the request
|
|
226
|
+
* fails too; a [`tree.load_failed`](#tree-load-failed) follows it.
|
|
227
|
+
*
|
|
228
|
+
* @group Loading data
|
|
229
|
+
*/
|
|
230
|
+
"tree.loaded_data": {
|
|
231
|
+
element: HTMLElement;
|
|
97
232
|
/**
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
233
|
+
The node whose children were loaded, if it was a subtree.
|
|
234
|
+
*/
|
|
235
|
+
node?: Node;
|
|
236
|
+
};
|
|
237
|
+
/**
|
|
238
|
+
* Dispatched when a request returns an error status or fails with a
|
|
239
|
+
* network error, after `tree.loaded_data`:
|
|
240
|
+
*
|
|
241
|
+
* ```js
|
|
242
|
+
* element.addEventListener("tree.load_failed", (e) => {
|
|
243
|
+
* if (e.detail.response) {
|
|
244
|
+
* console.error("loading the tree failed", e.detail.response.status);
|
|
245
|
+
* } else {
|
|
246
|
+
* console.error("loading the tree failed", e.detail.error);
|
|
247
|
+
* }
|
|
248
|
+
* });
|
|
249
|
+
* ```
|
|
250
|
+
*
|
|
251
|
+
* @group Loading data
|
|
252
|
+
*/
|
|
253
|
+
"tree.load_failed": {
|
|
105
254
|
/**
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
*/
|
|
110
|
-
"tree.close": {
|
|
111
|
-
node: Node;
|
|
112
|
-
};
|
|
255
|
+
The error thrown by `fetch`, if the request failed with a network error.
|
|
256
|
+
*/
|
|
257
|
+
error?: unknown;
|
|
113
258
|
/**
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
* ```js
|
|
119
|
-
* element.addEventListener("tree.select", (e) => {
|
|
120
|
-
* console.log("selected", e.detail.node.name);
|
|
121
|
-
* });
|
|
122
|
-
* ```
|
|
123
|
-
*
|
|
124
|
-
* @group Selection
|
|
125
|
-
*/
|
|
126
|
-
"tree.select": {
|
|
127
|
-
/** The node that was selected before, if any. */
|
|
128
|
-
deselectedNode: Node | null;
|
|
129
|
-
/** The node that is now selected. */
|
|
130
|
-
node: Node;
|
|
131
|
-
};
|
|
132
|
-
/**
|
|
133
|
-
* Dispatched when the selected node is deselected, which happens when it
|
|
134
|
-
* is clicked again or passed to `selectNode` again. No `tree.select` is
|
|
135
|
-
* dispatched for it.
|
|
136
|
-
*
|
|
137
|
-
* ```js
|
|
138
|
-
* element.addEventListener("tree.deselect", (e) => {
|
|
139
|
-
* console.log("deselected", e.detail.node.name);
|
|
140
|
-
* });
|
|
141
|
-
* ```
|
|
142
|
-
*
|
|
143
|
-
* Selecting another node does not dispatch it — that is a `tree.select`
|
|
144
|
-
* with the previous node in `deselectedNode`. It is also not dispatched
|
|
145
|
-
* with `mustToggle: false`, or by `selectNode(null)`,
|
|
146
|
-
* `removeFromSelection`, `removeNode`, `loadData` and restoring a saved
|
|
147
|
-
* state.
|
|
148
|
-
*
|
|
149
|
-
* @group Selection
|
|
150
|
-
*/
|
|
151
|
-
"tree.deselect": {
|
|
152
|
-
node: Node;
|
|
153
|
-
};
|
|
154
|
-
/**
|
|
155
|
-
* Dispatched when a node is dropped after a drag.
|
|
156
|
-
*
|
|
157
|
-
* | `detail` | Type |
|
|
158
|
-
* | ------------------------- | --------------------------------- |
|
|
159
|
-
* | `moveInfo.movedNode` | `Node` |
|
|
160
|
-
* | `moveInfo.targetNode` | `Node` |
|
|
161
|
-
* | `moveInfo.position` | `"before" \| "after" \| "inside"` |
|
|
162
|
-
* | `moveInfo.previousParent` | `Node \| null` |
|
|
163
|
-
* | `moveInfo.originalEvent` | `Event` |
|
|
164
|
-
* | `moveInfo.doMove` | `() => void` |
|
|
165
|
-
*
|
|
166
|
-
* Call `preventDefault()` to keep the tree as it is, and
|
|
167
|
-
* `moveInfo.doMove()` to apply the move later. See
|
|
168
|
-
* [Drag and drop](/guide/drag-and-drop#reacting-to-a-move).
|
|
169
|
-
*
|
|
170
|
-
* @group Drag and drop
|
|
171
|
-
*/
|
|
172
|
-
"tree.move": {
|
|
173
|
-
/** @hidden The fields are in the table above. */
|
|
174
|
-
moveInfo: MoveInfo;
|
|
175
|
-
};
|
|
176
|
-
/**
|
|
177
|
-
* Dispatched when data is set on the tree, both from the `data` option
|
|
178
|
-
* and from a url.
|
|
179
|
-
*
|
|
180
|
-
* @group Loading data
|
|
181
|
-
*/
|
|
182
|
-
"tree.set_data": {
|
|
183
|
-
/** The node whose children were replaced, if it was a subtree. */
|
|
184
|
-
node?: Node;
|
|
185
|
-
treeData?: NodeData[];
|
|
186
|
-
};
|
|
187
|
-
/**
|
|
188
|
-
* Dispatched when a request starts.
|
|
189
|
-
*
|
|
190
|
-
* @group Loading data
|
|
191
|
-
*/
|
|
192
|
-
"tree.loading_data": {
|
|
193
|
-
element: HTMLElement;
|
|
194
|
-
/** The node whose children are loading, if it is a subtree. */
|
|
195
|
-
node?: Node;
|
|
196
|
-
};
|
|
197
|
-
/**
|
|
198
|
-
* Dispatched when a request finishes. It is dispatched when the request
|
|
199
|
-
* fails too; a [`tree.load_failed`](#tree-load-failed) follows it.
|
|
200
|
-
*
|
|
201
|
-
* @group Loading data
|
|
202
|
-
*/
|
|
203
|
-
"tree.loaded_data": {
|
|
204
|
-
element: HTMLElement;
|
|
205
|
-
/** The node whose children were loaded, if it was a subtree. */
|
|
206
|
-
node?: Node;
|
|
207
|
-
};
|
|
208
|
-
/**
|
|
209
|
-
* Dispatched when a request returns an error status or fails with a
|
|
210
|
-
* network error, after `tree.loaded_data`:
|
|
211
|
-
*
|
|
212
|
-
* ```js
|
|
213
|
-
* element.addEventListener("tree.load_failed", (e) => {
|
|
214
|
-
* if (e.detail.response) {
|
|
215
|
-
* console.error("loading the tree failed", e.detail.response.status);
|
|
216
|
-
* } else {
|
|
217
|
-
* console.error("loading the tree failed", e.detail.error);
|
|
218
|
-
* }
|
|
219
|
-
* });
|
|
220
|
-
* ```
|
|
221
|
-
*
|
|
222
|
-
* @group Loading data
|
|
223
|
-
*/
|
|
224
|
-
"tree.load_failed": {
|
|
225
|
-
/** The error thrown by `fetch`, if the request failed with a network error. */
|
|
226
|
-
error?: unknown;
|
|
227
|
-
/** The response, if the request returned an error status. */
|
|
228
|
-
response?: Response;
|
|
229
|
-
};
|
|
259
|
+
The response, if the request returned an error status.
|
|
260
|
+
*/
|
|
261
|
+
response?: Response;
|
|
262
|
+
};
|
|
230
263
|
}
|
|
231
264
|
/* eslint-enable perfectionist/sort-interfaces */
|
|
232
265
|
|
|
233
266
|
type TreeEventMap = {
|
|
234
|
-
|
|
267
|
+
[Name in TreeEventName]: TreeEvent<Name>;
|
|
235
268
|
};
|
|
236
269
|
|
|
237
270
|
// Type `addEventListener("tree.select", ...)` on elements, the document and the window.
|
|
238
271
|
declare global {
|
|
239
|
-
|
|
272
|
+
interface DocumentEventMap extends TreeEventMap {}
|
|
240
273
|
|
|
241
|
-
|
|
274
|
+
interface HTMLElementEventMap extends TreeEventMap {}
|
|
242
275
|
|
|
243
|
-
|
|
276
|
+
interface WindowEventMap extends TreeEventMap {}
|
|
244
277
|
}
|
package/src/header.txt
CHANGED