@ixfx/components 0.15.5 → 0.16.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle/index.d.ts +986 -49
- package/bundle/index.js +765 -729
- package/dist/ac-token.js +1 -1
- package/dist/crumb-navigation-BbqfmkYs.d.ts +147 -0
- package/dist/crumb-navigation-YnFVFqrx.js +1290 -0
- package/dist/crumbs.d.ts +2 -115
- package/dist/crumbs.js +1 -1179
- package/dist/{data-grid-C1sZX6n9.js → data-grid-Cqxuwgbb.js} +615 -210
- package/dist/{data-grid-D7qzmMMp.d.ts → data-grid-Csh5EJW9.d.ts} +55 -4
- package/dist/data-grid.d.ts +3 -3
- package/dist/data-grid.js +1 -1
- package/dist/{detail-list-q8bs67BM.js → detail-list-Bo5ze3SN.js} +234 -9
- package/dist/{detail-list-CKIKlszv.d.ts → detail-list-DSZ1DDor.d.ts} +48 -4
- package/dist/detail-list.d.ts +4 -4
- package/dist/detail-list.js +1 -1
- package/dist/{flat-list-DXMyDiSH.d.ts → flat-list-CT9kX3TQ.d.ts} +27 -4
- package/dist/flat-list.d.ts +2 -2
- package/dist/flat-list.js +123 -4
- package/dist/{grid-list-y6dWJYu3.js → grid-list-D0dJNVEF.js} +278 -76
- package/dist/{grid-list-0e7snW6t.d.ts → grid-list-DDLrWRxm.d.ts} +128 -22
- package/dist/grid-list.d.ts +3 -3
- package/dist/grid-list.js +1 -1
- package/dist/{incr-search-JIhwB49y.js → incr-search-CgbL-OlS.js} +140 -10
- package/dist/incr-search.d.ts +1 -1
- package/dist/incr-search.js +1 -1
- package/dist/index-9ttcdwlL.d.ts +71 -0
- package/dist/index-Bnm-kKGC.d.ts +475 -0
- package/dist/{index-KN2MW_xD.d.ts → index-CUErGhCg.d.ts} +31 -4
- package/dist/{index-DEVyVIn8.d.ts → index-D-lZNlHa.d.ts} +52 -6
- package/dist/index.d.ts +341 -21
- package/dist/index.js +2286 -884
- package/dist/{list-native-drag-controller-O2Nruqpi.d.ts → list-native-drag-controller-D_UrXipS.d.ts} +1 -1
- package/dist/{list-selection-controller-BeE70lbB.js → list-selection-controller-5L0Nj9tR.js} +87 -2
- package/dist/miller-DUqiUAWQ.js +2230 -0
- package/dist/miller.d.ts +4 -437
- package/dist/miller.js +1 -1815
- package/dist/narrowed-text.js +1 -1
- package/dist/pending-BGidHppL.js +91 -0
- package/dist/scroll-hover-guard-Cjw6179Q.js +35 -0
- package/dist/{split-layout-JK3xWVX2.d.ts → split-layout-CophkNeU.d.ts} +41 -3
- package/dist/{split-layout-Deoxy47d.js → split-layout-DTY4PJRp.js} +251 -19
- package/dist/split-layout.d.ts +1 -1
- package/dist/split-layout.js +1 -1
- package/dist/sunburst-tree.d.ts +2 -2
- package/dist/sunburst-tree.js +1 -1
- package/dist/{sunbursttree-list-yXwS-uEI.js → sunbursttree-list-B_M0YTEA.js} +299 -80
- package/dist/{sunbursttree-list--Z0uyh8O.d.ts → sunbursttree-list-DePuFYlU.d.ts} +40 -3
- package/dist/tree-CftHwtEb.js +146 -0
- package/dist/{tree-D8VxvR9u.js → tree-DAlgvaHB.js} +276 -48
- package/dist/{tree-component-C6UHO-w9.d.ts → tree-component-DgfkxmVY.d.ts} +19 -8
- package/dist/tree.d.ts +3 -3
- package/dist/tree.js +1 -1
- package/dist/types-LU1u0CB8.d.ts +87 -0
- package/dist/vertical-list-DyKPKGxK.js +1993 -0
- package/dist/{vertical-list-D8MksoTp.d.ts → vertical-list-SAx56U-l.d.ts} +31 -3
- package/dist/vertical-list.d.ts +3 -3
- package/dist/vertical-list.js +1 -1789
- package/dist/view-state-controller-BdyXWUUM.js +305 -0
- package/docs-user/README.md +2 -0
- package/docs-user/crumbs.md +27 -0
- package/docs-user/data-grid.md +79 -5
- package/docs-user/detail-list.md +69 -0
- package/docs-user/dock.md +63 -12
- package/docs-user/flat-list.md +27 -0
- package/docs-user/grid-list.md +69 -13
- package/docs-user/hyperbolic-tree.md +31 -4
- package/docs-user/icicle-tree.md +36 -0
- package/docs-user/index.json +12 -2
- package/docs-user/llms.txt +2 -0
- package/docs-user/miller.md +52 -21
- package/docs-user/multicol-list.md +50 -8
- package/docs-user/split-layout.md +45 -17
- package/docs-user/sunburst-tree.md +32 -2
- package/docs-user/tree.md +45 -6
- package/docs-user/treemap.md +32 -0
- package/docs-user/twosplit-layout.md +22 -0
- package/docs-user/user-catalog.md +1 -1
- package/docs-user/vertical-list.md +55 -7
- package/llms.txt +2 -0
- package/package.json +2 -2
|
@@ -0,0 +1,475 @@
|
|
|
1
|
+
import { E as TreeSearchHost, M as TreeDataModel, a as TreeComponent, i as TreeCollapseEvent, j as TreeTickleEvent, k as TreeSelectEvent, n as TreeActivateEvent, o as TreeComponentEventMap, w as TreeNavigateOptions, x as TreeItemClickEvent, y as TreeExpandEvent } from "./tree-component-DgfkxmVY.js";
|
|
2
|
+
import { a as TreeItem, n as TreeExclusivity, o as TreeNode, r as TreeFilterPredicate, s as TreeSelectionFilter, t as LoadChildrenCallback } from "./types-Jky6oNAp.js";
|
|
3
|
+
import { a as ViewStateBase, n as ScrollState, t as GetViewStateOptions } from "./types-LU1u0CB8.js";
|
|
4
|
+
import "./index-9ttcdwlL.js";
|
|
5
|
+
import { S as ListSearchController } from "./index-CUErGhCg.js";
|
|
6
|
+
import { n as TickledController } from "./tickled-controller-DodxD3eQ.js";
|
|
7
|
+
import { LitElement, PropertyValues, TemplateResult, nothing } from "lit";
|
|
8
|
+
import { CommandRegistry } from "@clinth/ui-commands";
|
|
9
|
+
import { TraversableTree } from "@ixfx/collections";
|
|
10
|
+
//#region src/miller/types.d.ts
|
|
11
|
+
type MillerSelectionMode = `implicit` | `standard` | `manual` | `checked` | `vscode`;
|
|
12
|
+
/** Detail for the `header-click` event fired when a column header is clicked. */
|
|
13
|
+
type MillerHeaderClickDetail = {
|
|
14
|
+
/** Zero-based column index whose header was clicked. */
|
|
15
|
+
depth: number;
|
|
16
|
+
/** The header text (label of the column's parent node). */
|
|
17
|
+
label: string;
|
|
18
|
+
/**
|
|
19
|
+
* Ancestry chain from the root node down to (and including) the node
|
|
20
|
+
* whose label is shown in this header.
|
|
21
|
+
* - depth 0 → [root]
|
|
22
|
+
* - depth 1 → [root, selectedAtDepth0]
|
|
23
|
+
* - depth d → [root, sel[0], …, sel[d-1]]
|
|
24
|
+
*/
|
|
25
|
+
path: Array<TreeNode>;
|
|
26
|
+
};
|
|
27
|
+
/** Detail for the `item-dblclick` event. */
|
|
28
|
+
type MillerItemDblClickDetail = {
|
|
29
|
+
node: TreeNode;
|
|
30
|
+
depth: number;
|
|
31
|
+
};
|
|
32
|
+
/** Detail for the `rebase` event fired when the view root changes. */
|
|
33
|
+
type MillerRebaseDetail = {
|
|
34
|
+
/** The new view root, or `undefined` when the view was restored to the full tree. */
|
|
35
|
+
viewRoot: TreeNode | undefined;
|
|
36
|
+
/**
|
|
37
|
+
* Ancestry chain from the true root down to and including the new view root.
|
|
38
|
+
* Empty when the view shows the full tree.
|
|
39
|
+
*/
|
|
40
|
+
path: Array<TreeNode>;
|
|
41
|
+
};
|
|
42
|
+
/** Detail for the `item-rightclick` event. */
|
|
43
|
+
type MillerItemRightClickDetail = {
|
|
44
|
+
node: TreeNode;
|
|
45
|
+
depth: number;
|
|
46
|
+
mouseEvent: MouseEvent;
|
|
47
|
+
};
|
|
48
|
+
/** Detail for the `header-rightclick` event. */
|
|
49
|
+
type MillerHeaderRightClickDetail = {
|
|
50
|
+
depth: number;
|
|
51
|
+
label: string;
|
|
52
|
+
path: Array<TreeNode>;
|
|
53
|
+
mouseEvent: MouseEvent;
|
|
54
|
+
};
|
|
55
|
+
type MillerHeaderClickEvent = CustomEvent<MillerHeaderClickDetail>;
|
|
56
|
+
type MillerItemDblClickEvent = CustomEvent<MillerItemDblClickDetail>;
|
|
57
|
+
type MillerItemRightClickEvent = CustomEvent<MillerItemRightClickDetail>;
|
|
58
|
+
type MillerHeaderRightClickEvent = CustomEvent<MillerHeaderRightClickDetail>;
|
|
59
|
+
type MillerRebaseEvent = CustomEvent<MillerRebaseDetail>;
|
|
60
|
+
/**
|
|
61
|
+
* A snapshot of all display states for a single item in the miller columns.
|
|
62
|
+
*
|
|
63
|
+
* - `selected`: the item is part of the active selection.
|
|
64
|
+
* - `open`: the item is an ancestor of the current deepest column (it is on
|
|
65
|
+
* the currently open path, regardless of whether it is also selected).
|
|
66
|
+
* - `focused`: the keyboard cursor is currently on this item.
|
|
67
|
+
* - `isLeaf`: the item has no children and cannot be expanded.
|
|
68
|
+
*/
|
|
69
|
+
type MillerItemState = {
|
|
70
|
+
selected: boolean;
|
|
71
|
+
open: boolean;
|
|
72
|
+
focused: boolean;
|
|
73
|
+
isLeaf: boolean;
|
|
74
|
+
};
|
|
75
|
+
//#endregion
|
|
76
|
+
//#region src/miller/miller-view-state.d.ts
|
|
77
|
+
/**
|
|
78
|
+
* Pure view-state helpers for `ixfx-miller-*`. The element runs these
|
|
79
|
+
* whenever its data changes (new root, lazy load, `invalidateStructure()`)
|
|
80
|
+
* and on `setViewState()`; see docs/infra-view-state.md.
|
|
81
|
+
*/
|
|
82
|
+
/** `ixfx-miller-list` view state. */
|
|
83
|
+
type MillerListViewState = ViewStateBase & {
|
|
84
|
+
/**
|
|
85
|
+
* Key of the open branch at each depth, from column 0 down, relative to the
|
|
86
|
+
* view root. A Miller view has exactly one open branch per column, so this
|
|
87
|
+
* is an ordered path rather than an `expanded` record.
|
|
88
|
+
*/
|
|
89
|
+
readonly path?: readonly string[];
|
|
90
|
+
/** User-resized column widths in px, keyed by column depth. */
|
|
91
|
+
readonly columnWidths?: Readonly<Record<string, number>>;
|
|
92
|
+
/** Per-column scroll, keyed by the key of the node whose children the column lists. */
|
|
93
|
+
readonly columnScroll?: Readonly<Record<string, ScrollState>>;
|
|
94
|
+
};
|
|
95
|
+
//#endregion
|
|
96
|
+
//#region src/miller/miller-base.d.ts
|
|
97
|
+
/**
|
|
98
|
+
* Base class for Miller column components. Handles column lifecycle,
|
|
99
|
+
* column resizing, keyboard navigation, and selection modes.
|
|
100
|
+
*
|
|
101
|
+
* Subclasses must override `renderColumnContent`.
|
|
102
|
+
*
|
|
103
|
+
* ## Interaction modes (`interactionMode`)
|
|
104
|
+
*
|
|
105
|
+
* Controls how clicks map to selection changes. Default: `'standard'`.
|
|
106
|
+
*
|
|
107
|
+
* - `implicit`: Selection follows the cursor path (navigation mode).
|
|
108
|
+
* - `standard`: Single click selects; Shift+click range-selects within a column;
|
|
109
|
+
* Cmd/Ctrl+click toggles individual items.
|
|
110
|
+
* - `manual`: Component never modifies selection. Use `selectedKeys` / `setSelected`
|
|
111
|
+
* / `clearSelection` to drive state externally.
|
|
112
|
+
* - `checked`: Checkboxes on every item (rendered by subclass via `_isChecked` /
|
|
113
|
+
* `_handleCheckboxClick`). Clicking the item navigates/expands; clicking the
|
|
114
|
+
* checkbox toggles selection of the node and all loaded descendants.
|
|
115
|
+
*
|
|
116
|
+
* ## Events
|
|
117
|
+
* - `expand`: FYI event fired after a column opens. Detail: `{ node, depth }`
|
|
118
|
+
* - `collapse`: FYI event fired when a column closes. Detail: `{ node, depth }`
|
|
119
|
+
* - `header-click`: fired when a column header is clicked (requires `headers` attr).
|
|
120
|
+
* Detail: `{ depth, label, path: MillerNode[] }`
|
|
121
|
+
* - `activate`: fired when Enter is pressed on an item. Detail: `{ node, depth }`
|
|
122
|
+
* - `select`: fired when the selection set changes. Detail: `{ selected, previous }`
|
|
123
|
+
* - `item-click`: fired on any item click. Detail: `{ node, depth }`
|
|
124
|
+
* - `tickle`: fired when an item is hovered or keyboard cursor moves to it. Detail: `{ node, depth }`
|
|
125
|
+
*
|
|
126
|
+
* ## CSS variables
|
|
127
|
+
* - `--column-bg`: var(--surface-3)
|
|
128
|
+
* - `--column-header-bg`: var(--surface-2)
|
|
129
|
+
* - `--column-header-text`: var(--surface-muted-text)
|
|
130
|
+
* - `--column-separator`: var(--surface-5)
|
|
131
|
+
* - `--column-resize-handle`: var(--surface-5)
|
|
132
|
+
* - `--column-resize-handle-hover`: var(--accent)
|
|
133
|
+
* - `--column-resize-width`: 4px
|
|
134
|
+
* - `--item-hover-bg`: var(--item-bg-tickled)
|
|
135
|
+
* - `--item-selected-bg`: var(--item-bg-selected)
|
|
136
|
+
* - `--item-selected-text`: var(--item-text-selected)
|
|
137
|
+
*/
|
|
138
|
+
declare class MillerBaseElement extends LitElement implements TreeComponent, TreeSearchHost {
|
|
139
|
+
#private;
|
|
140
|
+
root: TreeNode | undefined;
|
|
141
|
+
model: TreeDataModel | undefined;
|
|
142
|
+
headers: boolean;
|
|
143
|
+
/**
|
|
144
|
+
* When true, the last (rightmost) column grows to fill any remaining
|
|
145
|
+
* horizontal space in the host. All other columns size to their content
|
|
146
|
+
* (`max-content`), unless the user has manually resized them.
|
|
147
|
+
*
|
|
148
|
+
* When the user clicks into an item in the stretched column and a new
|
|
149
|
+
* column opens, the previously-last column automatically transitions back
|
|
150
|
+
* to its content-based width and the new last column stretches instead.
|
|
151
|
+
* Explicit user-resized widths (via the resize handle) always win over
|
|
152
|
+
* stretching.
|
|
153
|
+
*/
|
|
154
|
+
stretchLastColumn: boolean;
|
|
155
|
+
/**
|
|
156
|
+
* Alternative node to use as the display root (Finder-style column-view
|
|
157
|
+
* rebase). When set, column 0 shows this node's children and all depths,
|
|
158
|
+
* headers, and key paths are relative to it. When `undefined` (default),
|
|
159
|
+
* the full `root` tree is shown.
|
|
160
|
+
*
|
|
161
|
+
* Prefer `rebaseTo()` / `rebaseUp()` over assigning this directly — they
|
|
162
|
+
* validate the target and report whether the view changed. Assigning a new
|
|
163
|
+
* `root` (or receiving one via `model`) silently clears the view root.
|
|
164
|
+
*/
|
|
165
|
+
viewRoot: TreeNode | undefined;
|
|
166
|
+
/**
|
|
167
|
+
* Controls the column-level interaction pattern (how clicks map to column changes).
|
|
168
|
+
* This is distinct from `selectionFilter` (which restricts which node kinds are selectable).
|
|
169
|
+
* Default: `'standard'`.
|
|
170
|
+
*/
|
|
171
|
+
interactionMode: MillerSelectionMode;
|
|
172
|
+
selectionFilter: TreeSelectionFilter;
|
|
173
|
+
exclusivity: TreeExclusivity;
|
|
174
|
+
/**
|
|
175
|
+
* Callback to load children for a lazy node.
|
|
176
|
+
* Superseded by `model` when both are set.
|
|
177
|
+
* If not set and `model` is not set, clicking a lazy node opens an empty column.
|
|
178
|
+
*/
|
|
179
|
+
loadChildren: LoadChildrenCallback | undefined;
|
|
180
|
+
filterPredicate: TreeFilterPredicate | undefined;
|
|
181
|
+
/**
|
|
182
|
+
* Space-separated subset of `navigate select filter` — limits which
|
|
183
|
+
* incremental-search modes are offered. Unset ⇒ all three; empty ⇒ search
|
|
184
|
+
* disabled. See `docs/infra-incremental.md`.
|
|
185
|
+
*/
|
|
186
|
+
searchModes: string | undefined;
|
|
187
|
+
protected _columns: TreeNode[][];
|
|
188
|
+
protected _loadingDepth: number | undefined;
|
|
189
|
+
protected _selectedByDepth: Map<number, TreeNode>;
|
|
190
|
+
protected _selectedKeys: Set<string>;
|
|
191
|
+
protected _selectedNodes: Set<TreeNode>;
|
|
192
|
+
/**
|
|
193
|
+
* Whether restoring view state may call `loadChildren` / `model` to open a
|
|
194
|
+
* saved path through branches that aren't loaded yet (one load at a time,
|
|
195
|
+
* cascading down the path). Default `true`.
|
|
196
|
+
*/
|
|
197
|
+
restoreLoads: boolean;
|
|
198
|
+
/** Incremental search (navigate / select / filter). See `docs/infra-incremental.md`. */
|
|
199
|
+
readonly search: ListSearchController<{
|
|
200
|
+
node: TreeNode;
|
|
201
|
+
depth: number;
|
|
202
|
+
}>;
|
|
203
|
+
/** Command registry carrying this component's `list.search.*` commands. */
|
|
204
|
+
get registry(): CommandRegistry<unknown> | undefined;
|
|
205
|
+
tickled: TickledController<string>;
|
|
206
|
+
willUpdate(_changedProps: PropertyValues): void;
|
|
207
|
+
updated(changedProps: PropertyValues): void;
|
|
208
|
+
firstUpdated(): void;
|
|
209
|
+
connectedCallback(): void;
|
|
210
|
+
disconnectedCallback(): void;
|
|
211
|
+
/**
|
|
212
|
+
* Snapshot the open path, selection, keyboard cursor, column widths and
|
|
213
|
+
* column scroll as plain JSON, keyed by `item.key`. Includes pending state
|
|
214
|
+
* for keys not currently loaded.
|
|
215
|
+
*/
|
|
216
|
+
getViewState(options?: GetViewStateOptions<MillerListViewState>): MillerListViewState;
|
|
217
|
+
/**
|
|
218
|
+
* Apply saved view state. Fields present replace the current ones; keys not
|
|
219
|
+
* loaded yet are applied as they appear — including via `loadChildren` /
|
|
220
|
+
* `model` for the saved path when `restoreLoads`.
|
|
221
|
+
*/
|
|
222
|
+
setViewState(state: Partial<MillerListViewState>): void;
|
|
223
|
+
clearPendingViewState(): void;
|
|
224
|
+
/** Read current selection as an immutable set of item keys. */
|
|
225
|
+
get selectedKeys(): ReadonlySet<string>;
|
|
226
|
+
/** Replace entire selection and trigger a re-render. */
|
|
227
|
+
set selectedKeys(keys: Iterable<string>);
|
|
228
|
+
/** The most recently selected node. */
|
|
229
|
+
get selectedNode(): TreeNode | undefined;
|
|
230
|
+
set selectedNode(node: TreeNode | undefined);
|
|
231
|
+
/** Full selection set (implements TreeComponent interface). */
|
|
232
|
+
get selectedNodes(): ReadonlySet<TreeNode>;
|
|
233
|
+
/** Add `node` to the selection (respects selectionFilter). Dispatches `select` event. */
|
|
234
|
+
select(node: TreeNode): void;
|
|
235
|
+
/** Remove `node` from the selection. Dispatches `select` event. */
|
|
236
|
+
deselect(node: TreeNode): void;
|
|
237
|
+
/**
|
|
238
|
+
* Clear all selection and trigger a re-render.
|
|
239
|
+
*/
|
|
240
|
+
clearSelection(): void;
|
|
241
|
+
/** Not implemented on miller-list. */
|
|
242
|
+
selectAll(): void;
|
|
243
|
+
/** Not implemented on miller-list. */
|
|
244
|
+
deselectAll(): void;
|
|
245
|
+
/**
|
|
246
|
+
* Select or deselect a single node by key.
|
|
247
|
+
* In `checked` interactionMode this also recursively selects/deselects all loaded descendants.
|
|
248
|
+
*/
|
|
249
|
+
setSelected(node: TreeNode, selected: boolean): void;
|
|
250
|
+
/**
|
|
251
|
+
* Return all MillerNodes whose key is in `_selectedKeys`, searching only
|
|
252
|
+
* the currently visible columns.
|
|
253
|
+
*/
|
|
254
|
+
getSelected(): TreeNode[];
|
|
255
|
+
/**
|
|
256
|
+
* Programmatically navigate to a node by key path, relative to the current
|
|
257
|
+
* view root (rebased or full tree).
|
|
258
|
+
*/
|
|
259
|
+
navigateTo(keys: readonly string[], options?: TreeNavigateOptions): boolean;
|
|
260
|
+
/**
|
|
261
|
+
* Re-sync the element with children arrays patched in place (see
|
|
262
|
+
* `MillerTreeController.sync()`): columns whose selected node was removed are
|
|
263
|
+
* closed, selection entries for removed nodes are dropped, then it re-renders.
|
|
264
|
+
*/
|
|
265
|
+
invalidateStructure(): void;
|
|
266
|
+
/**
|
|
267
|
+
* Programmatically navigate to the first node (breadth-first) matching a predicate.
|
|
268
|
+
*/
|
|
269
|
+
navigateToNode(predicate: (node: TreeNode) => boolean): boolean;
|
|
270
|
+
/** Open the columns down to `key` and move the cursor to it, without changing the selection (search "navigate" mode). */
|
|
271
|
+
revealKey(key: string): boolean;
|
|
272
|
+
/** Replace the selection with `nodes` (search "select" mode). */
|
|
273
|
+
selectMany(nodes: Iterable<TreeNode>): void;
|
|
274
|
+
getNodes(): ReadonlyArray<{
|
|
275
|
+
node: TreeNode;
|
|
276
|
+
depth: number;
|
|
277
|
+
}>;
|
|
278
|
+
/**
|
|
279
|
+
* Rebase the view to show `target`'s children in column 0 (Finder column-view
|
|
280
|
+
* behavior on double-click), keeping the full tree in `root`.
|
|
281
|
+
*
|
|
282
|
+
* - Pass a `MillerNode` (used as-is) or a key (looked up in the full tree).
|
|
283
|
+
* - Pass `undefined` to restore the full-tree view.
|
|
284
|
+
* - Rebasing to the true root is equivalent to restoring the full view.
|
|
285
|
+
* - Leaves are refused (returns `false`).
|
|
286
|
+
*
|
|
287
|
+
* Selection is cleared; all depths, headers, and key paths are relative to
|
|
288
|
+
* the new view root. Fires a `rebase` event when the view actually changes.
|
|
289
|
+
* Returns `false` when nothing changed (unknown key, leaf, or same view).
|
|
290
|
+
*/
|
|
291
|
+
rebaseTo(target: TreeNode | string | undefined): boolean;
|
|
292
|
+
/**
|
|
293
|
+
* Rebase one level up from the current view root (no-op at the full tree).
|
|
294
|
+
* Fires a `rebase` event when the view actually changes.
|
|
295
|
+
*/
|
|
296
|
+
rebaseUp(): boolean;
|
|
297
|
+
protected renderColumnContent(nodes: TreeNode[], depth: number): TemplateResult | typeof nothing;
|
|
298
|
+
protected _handleItemClick(node: TreeNode, depth: number, event?: MouseEvent): void;
|
|
299
|
+
/**
|
|
300
|
+
* Called by subclasses (in `checked` interactionMode) when a checkbox is clicked.
|
|
301
|
+
*/
|
|
302
|
+
protected _handleCheckboxClick(event: MouseEvent, node: TreeNode, _depth: number): void;
|
|
303
|
+
/**
|
|
304
|
+
* Called by subclasses when an item is double-clicked.
|
|
305
|
+
*/
|
|
306
|
+
protected _handleItemDblClick(node: TreeNode, depth: number, _event: MouseEvent): void;
|
|
307
|
+
/**
|
|
308
|
+
* Called by subclasses when an item is right-clicked.
|
|
309
|
+
*/
|
|
310
|
+
protected _handleItemRightClick(node: TreeNode, depth: number, event: MouseEvent): void;
|
|
311
|
+
/**
|
|
312
|
+
* Called by subclasses when a column header is right-clicked.
|
|
313
|
+
*/
|
|
314
|
+
protected _handleHeaderRightClick(event: MouseEvent, depth: number): void;
|
|
315
|
+
protected _isSelected(node: TreeNode, depth: number): boolean;
|
|
316
|
+
protected _isOpen(node: TreeNode, depth: number): boolean;
|
|
317
|
+
/**
|
|
318
|
+
* Return the display state for an item identified by key at a given depth.
|
|
319
|
+
*/
|
|
320
|
+
getItemState(key: string, depth: number): MillerItemState | undefined;
|
|
321
|
+
/**
|
|
322
|
+
* Override to provide a custom loading indicator.
|
|
323
|
+
*/
|
|
324
|
+
protected renderLoadingIndicator(): TemplateResult | typeof nothing;
|
|
325
|
+
protected render(): TemplateResult<1>;
|
|
326
|
+
protected _getFocusedIndex(depth: number): number;
|
|
327
|
+
protected _isFocused(node: TreeNode, depth: number): boolean;
|
|
328
|
+
/**
|
|
329
|
+
* Called by subclasses when pointer enters an item.
|
|
330
|
+
* Fires tickle event and switches to mouse mode.
|
|
331
|
+
*/
|
|
332
|
+
protected _handleItemPointerEnter(node: TreeNode, depth: number): void;
|
|
333
|
+
/**
|
|
334
|
+
* Called by subclasses when pointer leaves the column container.
|
|
335
|
+
*/
|
|
336
|
+
protected _handleColumnPointerLeave(): void;
|
|
337
|
+
static styles: import("lit").CSSResult[];
|
|
338
|
+
}
|
|
339
|
+
declare global {
|
|
340
|
+
interface HTMLElementTagNameMap {
|
|
341
|
+
'ixfx-miller-base': MillerBaseElement;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
interface MillerBaseElementEventMap extends TreeComponentEventMap {
|
|
345
|
+
'item-click': TreeItemClickEvent;
|
|
346
|
+
'expand': TreeExpandEvent;
|
|
347
|
+
'collapse': TreeCollapseEvent;
|
|
348
|
+
'select': TreeSelectEvent;
|
|
349
|
+
'tickle': TreeTickleEvent;
|
|
350
|
+
'activate': TreeActivateEvent;
|
|
351
|
+
'item-dblclick': CustomEvent<MillerItemDblClickDetail>;
|
|
352
|
+
'item-rightclick': CustomEvent<MillerItemRightClickDetail>;
|
|
353
|
+
'header-click': CustomEvent<MillerHeaderClickDetail>;
|
|
354
|
+
'header-rightclick': CustomEvent<MillerHeaderRightClickDetail>;
|
|
355
|
+
'rebase': CustomEvent<MillerRebaseDetail>;
|
|
356
|
+
}
|
|
357
|
+
interface MillerBaseElement {
|
|
358
|
+
addEventListener: (<K extends keyof MillerBaseElementEventMap>(type: K, listener: (this: MillerBaseElement, event: MillerBaseElementEventMap[K]) => void, options?: boolean | AddEventListenerOptions) => void) & ((type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions) => void);
|
|
359
|
+
removeEventListener: (<K extends keyof MillerBaseElementEventMap>(type: K, listener: (this: MillerBaseElement, event: MillerBaseElementEventMap[K]) => void, options?: boolean | EventListenerOptions) => void) & ((type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions) => void);
|
|
360
|
+
}
|
|
361
|
+
//#endregion
|
|
362
|
+
//#region src/miller/miller-list.d.ts
|
|
363
|
+
/**
|
|
364
|
+
* Miller columns with a vertical list layout — items stack in rows like macOS Finder.
|
|
365
|
+
*
|
|
366
|
+
* Usage:
|
|
367
|
+
* ```html
|
|
368
|
+
* <ixfx-miller-list id="miller"></ixfx-miller-list>
|
|
369
|
+
* <script>
|
|
370
|
+
* const el = document.getElementById('miller');
|
|
371
|
+
* el.root = { item: { key: 'root', label: 'Root' }, children: [...] };
|
|
372
|
+
* el.addEventListener('expand', ({ detail }) => {
|
|
373
|
+
* detail.node.children = fetchChildren(detail.node.item.key);
|
|
374
|
+
* el.requestUpdate();
|
|
375
|
+
* });
|
|
376
|
+
* </script>
|
|
377
|
+
* ```
|
|
378
|
+
*/
|
|
379
|
+
declare class MillerListElement extends MillerBaseElement {
|
|
380
|
+
#private;
|
|
381
|
+
protected renderColumnContent(nodes: TreeNode[], depth: number): TemplateResult;
|
|
382
|
+
static styles: import("lit").CSSResult[];
|
|
383
|
+
}
|
|
384
|
+
declare global {
|
|
385
|
+
interface HTMLElementTagNameMap {
|
|
386
|
+
'ixfx-miller-list': MillerListElement;
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
//#endregion
|
|
390
|
+
//#region src/miller/miller-tree-controller.d.ts
|
|
391
|
+
type MillerTreeControllerOptions<T> = {
|
|
392
|
+
/**
|
|
393
|
+
* Convert a tree node's value to a `MillerItem`.
|
|
394
|
+
* You must supply at minimum `key` and `label`.
|
|
395
|
+
* If `isLeaf` is omitted the controller infers it from whether the
|
|
396
|
+
* `TraversableTree` node has any children.
|
|
397
|
+
*/
|
|
398
|
+
valueToItem: (value: T, node: TraversableTree<T>) => TreeItem;
|
|
399
|
+
/**
|
|
400
|
+
* Children loader installed on the element by `connect()`. Defaults to a
|
|
401
|
+
* synchronous read from the source tree. `sync()` never touches it.
|
|
402
|
+
*/
|
|
403
|
+
loadChildren?: LoadChildrenCallback;
|
|
404
|
+
};
|
|
405
|
+
/**
|
|
406
|
+
* Bridges an `ixfx` `TraversableTree<T>` with an `ixfx-miller-*` component.
|
|
407
|
+
*
|
|
408
|
+
* Usage:
|
|
409
|
+
* ```ts
|
|
410
|
+
* import { Trees } from '@ixfx/collections';
|
|
411
|
+
* import { MillerTreeController } from 'ixfx-components/miller';
|
|
412
|
+
*
|
|
413
|
+
* const root = Trees.Mutable.createNode({ key: 'root', label: 'Root' });
|
|
414
|
+
* Trees.Mutable.addValue({ key: 'a', label: 'Alpha' }, root);
|
|
415
|
+
*
|
|
416
|
+
* const ctrl = new MillerTreeController(
|
|
417
|
+
* Trees.Mutable.asDynamicTraversable(root),
|
|
418
|
+
* document.querySelector('ixfx-miller-list'),
|
|
419
|
+
* { valueToItem: v => ({ key: v.key, label: v.label }) }
|
|
420
|
+
* );
|
|
421
|
+
* ctrl.connect();
|
|
422
|
+
* ```
|
|
423
|
+
*
|
|
424
|
+
* Children are populated lazily: the controller provides a `loadChildren`
|
|
425
|
+
* callback that synchronously reads from the underlying tree.
|
|
426
|
+
*
|
|
427
|
+
* Call `disconnect()` to remove all event listeners and release resources.
|
|
428
|
+
*/
|
|
429
|
+
declare class MillerTreeController<T> {
|
|
430
|
+
#private;
|
|
431
|
+
constructor(root: TraversableTree<T>, element: MillerBaseElement, options: MillerTreeControllerOptions<T>);
|
|
432
|
+
/**
|
|
433
|
+
* Wire up the controller: sets `element.root` and provides `loadChildren` callback.
|
|
434
|
+
* Safe to call again after `disconnect()`.
|
|
435
|
+
*/
|
|
436
|
+
connect(): void;
|
|
437
|
+
/** Remove all event listeners and release internal state. */
|
|
438
|
+
disconnect(): void;
|
|
439
|
+
/**
|
|
440
|
+
* Navigate the component to the first node (depth-first) in the ixfx tree
|
|
441
|
+
* whose value satisfies `predicate`.
|
|
442
|
+
*
|
|
443
|
+
* Any ancestor `MillerNode`s with unloaded children are populated
|
|
444
|
+
* synchronously before calling `element.navigateTo()`.
|
|
445
|
+
*
|
|
446
|
+
* Key paths are relative to the element's current view root: when the view
|
|
447
|
+
* is rebased, only matches at or below the view root can be reached.
|
|
448
|
+
*
|
|
449
|
+
* Returns `false` if no matching node is found.
|
|
450
|
+
*/
|
|
451
|
+
navigateToValue(predicate: (value: T) => boolean, options?: TreeNavigateOptions): boolean;
|
|
452
|
+
/**
|
|
453
|
+
* Navigate using item keys **relative to the element's current view root**
|
|
454
|
+
* (the real root when not rebased). Ancestors with unloaded children are
|
|
455
|
+
* populated first. Returns `false` if a key is missing.
|
|
456
|
+
*/
|
|
457
|
+
navigateToKeyPath(keys: readonly string[], options?: TreeNavigateOptions): boolean;
|
|
458
|
+
/**
|
|
459
|
+
* Navigate to the source node with this identity. Returns `false` when it is
|
|
460
|
+
* unknown or lies outside a rebased view (keys are relative to the view root).
|
|
461
|
+
*/
|
|
462
|
+
navigateToIdentity(identity: unknown, options?: TreeNavigateOptions): boolean;
|
|
463
|
+
/** The source node whose item key is `key`, if it has been materialised. */
|
|
464
|
+
lookupByKey(key: string): TraversableTree<T> | undefined;
|
|
465
|
+
/**
|
|
466
|
+
* Re-derive children for every already-materialised node from the source tree
|
|
467
|
+
* and patch them in place. Children arrays are mutated (not replaced) so open
|
|
468
|
+
* columns keep their references, and `MillerNode`s are reused by key so
|
|
469
|
+
* selection survives. A rebased `viewRoot` is reset only if its node was
|
|
470
|
+
* removed. `loadChildren` is left alone. Refreshes the element once.
|
|
471
|
+
*/
|
|
472
|
+
sync(): void;
|
|
473
|
+
}
|
|
474
|
+
//#endregion
|
|
475
|
+
export { MillerRebaseEvent as _, MillerBaseElementEventMap as a, MillerHeaderClickEvent as c, MillerItemDblClickDetail as d, MillerItemDblClickEvent as f, MillerRebaseDetail as g, MillerItemState as h, MillerBaseElement as i, MillerHeaderRightClickDetail as l, MillerItemRightClickEvent as m, MillerTreeControllerOptions as n, MillerListViewState as o, MillerItemRightClickDetail as p, MillerListElement as r, MillerHeaderClickDetail as s, MillerTreeController as t, MillerHeaderRightClickEvent as u, MillerSelectionMode as v };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "./icon-CDGprSdE.js";
|
|
2
|
-
import { E as TreeSearchHost } from "./tree-component-
|
|
2
|
+
import { E as TreeSearchHost } from "./tree-component-DgfkxmVY.js";
|
|
3
3
|
import { o as TreeNode } from "./types-Jky6oNAp.js";
|
|
4
4
|
import { ReactiveController, ReactiveControllerHost, TemplateResult, nothing } from "lit";
|
|
5
5
|
import { FzfOptions } from "fzf";
|
|
@@ -143,7 +143,8 @@ declare class IncrSearchTreeController {
|
|
|
143
143
|
* - `navigate` — move the cursor to the best match; ↑/↓ cycle between matches;
|
|
144
144
|
* Enter activates the current match and closes.
|
|
145
145
|
* - `select` — (re)select every item whose label matches, live as you type.
|
|
146
|
-
* - `filter` — hide items that don't match; restored when the popover closes
|
|
146
|
+
* - `filter` — hide items that don't match; restored when the popover closes
|
|
147
|
+
* (unless `stickyFilter` keeps it on Enter).
|
|
147
148
|
*/
|
|
148
149
|
type ListSearchMode = `navigate` | `select` | `filter`;
|
|
149
150
|
/** Canonical order — used for the switch-row and to normalise a requested set. */
|
|
@@ -196,6 +197,8 @@ interface ListSearchControllerOptions<TItem> {
|
|
|
196
197
|
modes?: readonly ListSearchMode[];
|
|
197
198
|
fzf?: Partial<FzfOptions<SearchItem>>;
|
|
198
199
|
placeholder?: string;
|
|
200
|
+
/** Initial {@link ListSearchController.stickyFilter}. Default false. */
|
|
201
|
+
stickyFilter?: boolean;
|
|
199
202
|
}
|
|
200
203
|
type ListSearchHost = ReactiveControllerHost & HTMLElement & {
|
|
201
204
|
renderRoot?: DocumentFragment | HTMLElement;
|
|
@@ -208,6 +211,12 @@ type ListSearchHost = ReactiveControllerHost & HTMLElement & {
|
|
|
208
211
|
*/
|
|
209
212
|
declare class ListSearchController<TItem> implements ReactiveController {
|
|
210
213
|
#private;
|
|
214
|
+
/**
|
|
215
|
+
* When true, Enter in `filter` mode closes the popover but keeps the filter,
|
|
216
|
+
* shown as a "Filtered: …" chip. Clear it with the chip's ×, Escape on the
|
|
217
|
+
* host, or {@link clearFilter}; click the chip to edit the query.
|
|
218
|
+
*/
|
|
219
|
+
stickyFilter: boolean;
|
|
211
220
|
constructor(host: ListSearchHost, options: ListSearchControllerOptions<TItem>);
|
|
212
221
|
/** `false` when no modes are available — the host should register no commands and render no field. */
|
|
213
222
|
get enabled(): boolean;
|
|
@@ -225,20 +234,38 @@ declare class ListSearchController<TItem> implements ReactiveController {
|
|
|
225
234
|
get query(): string;
|
|
226
235
|
get matchCount(): number;
|
|
227
236
|
get matchIndex(): number;
|
|
237
|
+
/** The query of a filter kept applied after the popover closed (see {@link stickyFilter}). */
|
|
238
|
+
get keptFilter(): string | undefined;
|
|
228
239
|
hostConnected(): void;
|
|
229
240
|
hostDisconnected(): void;
|
|
230
|
-
/**
|
|
241
|
+
/**
|
|
242
|
+
* Open the popover in `mode` (clamped to the available set). When it is
|
|
243
|
+
* already open the query is kept: the mode switches if it differs and the
|
|
244
|
+
* input is refocused with its text selected.
|
|
245
|
+
*/
|
|
231
246
|
open(mode: ListSearchMode): void;
|
|
232
247
|
/** Close the popover, restoring any live filter. Selection / cursor stay put. */
|
|
233
248
|
close(): void;
|
|
249
|
+
/** Remove a filter kept by {@link stickyFilter}. No-op when none is kept. */
|
|
250
|
+
clearFilter(): void;
|
|
234
251
|
setQuery(query: string): void;
|
|
235
252
|
/** Re-interpret the current query under a new mode (undoing the old mode's effect). */
|
|
236
253
|
switchMode(next: ListSearchMode): void;
|
|
254
|
+
/**
|
|
255
|
+
* Step through {@link registeredModes} (wrapping) and switch to the result.
|
|
256
|
+
* Bound to Tab / Shift+Tab in the popover input.
|
|
257
|
+
*/
|
|
258
|
+
cycleMode(delta: 1 | -1): void;
|
|
259
|
+
/** Refocus the popover input (text selected) without touching the query. No-op when closed. */
|
|
260
|
+
focus(): void;
|
|
237
261
|
/** One-shot: turn the current match set into the selection, staying in the current mode. */
|
|
238
262
|
selectMatches(): void;
|
|
239
263
|
nextMatch(): void;
|
|
240
264
|
prevMatch(): void;
|
|
241
|
-
/**
|
|
265
|
+
/**
|
|
266
|
+
* Enter: in `navigate` activate the current match; then close. In `filter`
|
|
267
|
+
* with {@link stickyFilter} and a query, close but keep the filter.
|
|
268
|
+
*/
|
|
242
269
|
commit(): void;
|
|
243
270
|
/** Rebuild the searchable item set from the adapter. Called on open and on container mutation. */
|
|
244
271
|
refresh(): void;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { B as ListNativeDragStartDetail, C as TreeItemDblClickEvent, D as TreeSelectAllOptions, E as TreeSearchHost, L as ListDragPreviewRenderer, M as TreeDataModel, R as ListDragPreviewSourceResolver, _ as TreeDropTarget, a as TreeComponent, c as TreeDragContext, d as TreeDragStartEvent, h as TreeDropEvent, i as TreeCollapseEvent, j as TreeTickleEvent, k as TreeSelectEvent, l as TreeDragEndEvent, m as TreeDropDetail, n as TreeActivateEvent, o as TreeComponentEventMap, p as TreeDropContext, s as TreeDndMode, u as TreeDragOverEvent, w as TreeNavigateOptions, x as TreeItemClickEvent, y as TreeExpandEvent } from "./tree-component-DgfkxmVY.js";
|
|
2
2
|
import { a as TreeItem, i as TreeInteractionMode, n as TreeExclusivity, o as TreeNode, r as TreeFilterPredicate, s as TreeSelectionFilter, t as LoadChildrenCallback } from "./types-Jky6oNAp.js";
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
3
|
+
import { a as ViewStateBase, t as GetViewStateOptions } from "./types-LU1u0CB8.js";
|
|
4
|
+
import "./index-9ttcdwlL.js";
|
|
5
|
+
import { S as ListSearchController } from "./index-CUErGhCg.js";
|
|
6
|
+
import { t as ListNativeDragController } from "./list-native-drag-controller-D_UrXipS.js";
|
|
5
7
|
import { n as TickledController } from "./tickled-controller-DodxD3eQ.js";
|
|
6
8
|
import { LitElement, PropertyValues, ReactiveController, ReactiveControllerHost, TemplateResult, nothing } from "lit";
|
|
7
9
|
import { CommandRegistry } from "@clinth/ui-commands";
|
|
@@ -12,6 +14,10 @@ type TreeConfig = {
|
|
|
12
14
|
indent: number;
|
|
13
15
|
};
|
|
14
16
|
//#endregion
|
|
17
|
+
//#region src/tree/tree-view-state.d.ts
|
|
18
|
+
/** `ixfx-tree-list` view state. All fields are the shared base fields. */
|
|
19
|
+
type TreeListViewState = ViewStateBase;
|
|
20
|
+
//#endregion
|
|
15
21
|
//#region src/tree/tree-base.d.ts
|
|
16
22
|
/**
|
|
17
23
|
* `auto` windows the list once it has more than `virtualizeThreshold` visible
|
|
@@ -40,6 +46,13 @@ declare class TreeBaseElement extends LitElement implements TreeComponent, TreeS
|
|
|
40
46
|
get selectedNodes(): ReadonlySet<TreeNode>;
|
|
41
47
|
filterPredicate: TreeFilterPredicate | undefined;
|
|
42
48
|
disableKeyboardNavigation: boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Let hover follow rows that scroll beneath a stationary pointer. Off by
|
|
51
|
+
* default: while a scroll gesture is active, row `pointerenter` is ignored so
|
|
52
|
+
* the hover cursor holds still instead of trailing the content. Hover resumes
|
|
53
|
+
* on the next real pointer movement, or when the pointer leaves the tree.
|
|
54
|
+
*/
|
|
55
|
+
scrollHoverTickle: boolean;
|
|
43
56
|
registry: CommandRegistry<unknown> | undefined;
|
|
44
57
|
/**
|
|
45
58
|
* Space-separated subset of `navigate select filter` — limits which
|
|
@@ -89,6 +102,12 @@ declare class TreeBaseElement extends LitElement implements TreeComponent, TreeS
|
|
|
89
102
|
applyInternalDrop: boolean;
|
|
90
103
|
/** Immutable: replace via `#setExpanded` so the flat-row cache is invalidated. */
|
|
91
104
|
protected _expandedKeys: ReadonlySet<string>;
|
|
105
|
+
/**
|
|
106
|
+
* Whether restoring view state may call `loadChildren` / `model` to open
|
|
107
|
+
* saved branches that aren't loaded yet (one at a time, cascading down the
|
|
108
|
+
* saved path). Default `true`.
|
|
109
|
+
*/
|
|
110
|
+
restoreLoads: boolean;
|
|
92
111
|
/** Bumped whenever `_selectedNodes` content may have changed. */
|
|
93
112
|
protected _selectionVersion: number;
|
|
94
113
|
/**
|
|
@@ -103,6 +122,13 @@ declare class TreeBaseElement extends LitElement implements TreeComponent, TreeS
|
|
|
103
122
|
/** Depths at which any loaded node carries an icon (stable across expansion). */
|
|
104
123
|
protected get _depthsWithIcons(): ReadonlySet<number>;
|
|
105
124
|
protected tickled: TickledController<string>;
|
|
125
|
+
/**
|
|
126
|
+
* Row `pointerenter` funnel: moves the hover cursor unless a scroll gesture
|
|
127
|
+
* is sliding rows beneath a stationary pointer (see `scrollHoverTickle`).
|
|
128
|
+
* Subclasses rendering their own rows should call this rather than the
|
|
129
|
+
* tickled controller directly.
|
|
130
|
+
*/
|
|
131
|
+
protected _handleRowPointerEnter(node: TreeNode, depth: number): void;
|
|
106
132
|
protected _focusedDepth: number;
|
|
107
133
|
/** Incremental search (navigate / select / filter). See `docs/infra-incremental.md`. */
|
|
108
134
|
readonly search: ListSearchController<{
|
|
@@ -132,11 +158,31 @@ declare class TreeBaseElement extends LitElement implements TreeComponent, TreeS
|
|
|
132
158
|
disconnectedCallback(): void;
|
|
133
159
|
getConfig(): TreeConfig;
|
|
134
160
|
setConfig(config: Partial<TreeConfig>): void;
|
|
161
|
+
/**
|
|
162
|
+
* Snapshot selection, expansion, cursor and scroll as plain JSON, keyed by
|
|
163
|
+
* `item.key`. Includes pending state for keys not currently loaded.
|
|
164
|
+
*/
|
|
165
|
+
getViewState(options?: GetViewStateOptions<TreeListViewState>): TreeListViewState;
|
|
166
|
+
/**
|
|
167
|
+
* Apply saved view state. Fields present replace the current ones; keys
|
|
168
|
+
* that aren't loaded yet are applied as they appear — including via
|
|
169
|
+
* `loadChildren` / `model` for saved-open branches when `restoreLoads`.
|
|
170
|
+
*/
|
|
171
|
+
setViewState(state: Partial<TreeListViewState>): void;
|
|
172
|
+
clearPendingViewState(): void;
|
|
135
173
|
select(node: TreeNode): void;
|
|
136
174
|
deselect(node: TreeNode): void;
|
|
137
175
|
clearSelection(): void;
|
|
138
|
-
|
|
139
|
-
|
|
176
|
+
/**
|
|
177
|
+
* Select every selectable node in the tree, or only the matches while a
|
|
178
|
+
* `filterPredicate` is active. Nodes inside collapsed branches are included;
|
|
179
|
+
* unloaded (lazy) children are not. With `visibleOnly`, only rows that are
|
|
180
|
+
* showing are selected (Ctrl+A). In `checked` mode checking a row checks its
|
|
181
|
+
* descendants, so `visibleOnly` makes no difference there.
|
|
182
|
+
*/
|
|
183
|
+
selectAll(options?: TreeSelectAllOptions): void;
|
|
184
|
+
/** Mirror of {@link selectAll}: deselect the same set of nodes it would select. */
|
|
185
|
+
deselectAll(options?: TreeSelectAllOptions): void;
|
|
140
186
|
/**
|
|
141
187
|
* Expand every already-loaded branch in a single update. With `maxDepth`,
|
|
142
188
|
* only branches at depth < `maxDepth` are expanded (the root's children are
|
|
@@ -378,4 +424,4 @@ declare class TreeDropController implements ReactiveController {
|
|
|
378
424
|
hostDisconnected(): void;
|
|
379
425
|
}
|
|
380
426
|
//#endregion
|
|
381
|
-
export { TreeDropVisibleRow as a, TreeListElement as c, TreeBaseElement as d, TreeBaseElementEventMap as f, TreeDropRowInfo as i, TreeCheckboxState as l,
|
|
427
|
+
export { TreeDropVisibleRow as a, TreeListElement as c, TreeBaseElement as d, TreeBaseElementEventMap as f, TreeConfig as h, TreeDropRowInfo as i, TreeCheckboxState as l, TreeListViewState as m, TreeDropControllerConfig as n, TreeController as o, TreeVirtualize as p, TreeDropResolvedDrag as r, TreeControllerOptions as s, TreeDropController as t, TreeAnimation as u };
|