@itwin/presentation-components
Version:
React components based on iTwin.js Presentation library
80 lines • 4.43 kB
TypeScript
/** @packageDocumentation
* @module Tree
*/
import "../../common/DisposePolyfill.js";
import { AbstractTreeNodeLoaderWithProvider, TreeEditingParams, TreeEventHandler, TreeModelChanges, TreeNodeItem, TreeSelectionModificationEventArgs, TreeSelectionReplacementEventArgs } from "@itwin/components-react";
import { Keys, KeySet, NodeKey } from "@itwin/presentation-common";
import { SelectionChangeType } from "@itwin/presentation-frontend";
import { IPresentationTreeDataProvider } from "../IPresentationTreeDataProvider.js";
/**
* Data structure that describes parameters for UnifiedSelectionTreeEventHandler
* @public
* @deprecated in 5.7. All tree-related APIs have been deprecated in favor of the new generation hierarchy
* building APIs (see https://github.com/iTwin/presentation/blob/33e79ee8d77f30580a9bab81a72884bda008db25/README.md#the-packages).
*/
export interface UnifiedSelectionTreeEventHandlerParams {
/** Node loader used to load children when node is expanded. */
nodeLoader: AbstractTreeNodeLoaderWithProvider<IPresentationTreeDataProvider>;
/**
* Unique name for SelectionHandler to avoid handling events raised by itself. The
* name is created if not provided.
*/
name?: string;
/** Specifies whether children should be disposed when parent node is collapsed or not. */
collapsedChildrenDisposalEnabled?: boolean;
/** Parameters used for node editing. */
editingParams?: TreeEditingParams;
}
/**
* Tree event handler that handles unified selection.
* Extends wrapped tree event handler's functionality by adding, removing or replacing nodes in
* unified selection. It also reacts to unified selection changes and selects/deselects tree nodes
* according changes.
*
* **Note:** conditions used to determine if node is selected and nodes that should be added to
* unified selection can be controlled by overriding 'shouldSelectNode' and 'createKeysForSelection' methods.
*
* @public
* @deprecated in 5.7. All tree-related APIs have been deprecated in favor of the new generation hierarchy
* building APIs (see https://github.com/iTwin/presentation/blob/33e79ee8d77f30580a9bab81a72884bda008db25/README.md#the-packages).
*/
export declare class UnifiedSelectionTreeEventHandler extends TreeEventHandler {
#private;
constructor(params: UnifiedSelectionTreeEventHandlerParams);
/** Disposes this event handler */
[Symbol.dispose](): void;
/** @deprecated in 5.7. Use `[Symbol.dispose]` instead. */
dispose(): void;
onSelectionModified({ modifications }: TreeSelectionModificationEventArgs): import("@itwin/components-react").Subscription | undefined;
onSelectionReplaced({ replacements }: TreeSelectionReplacementEventArgs): import("@itwin/components-react").Subscription | undefined;
selectNodes(modelChange?: TreeModelChanges): void;
/** @deprecated in 4.0. Use [[isPresentationTreeNodeItem]] and [[PresentationTreeNodeItem.key]] to get [NodeKey]($presentation-common). */
protected getNodeKey(node: TreeNodeItem): NodeKey;
/**
* Determines if node should be selected.
* Default implementation returns true if node key is in selection
* or node is ECInstance node and instance key is in selection.
*/
protected shouldSelectNode(node: TreeNodeItem, selection: Readonly<KeySet>): boolean;
/**
* Returns node keys that should be added, removed or used to replace unified selection.
* Default implementation returns keys of supplied nodes.
*/
protected createKeysForSelection(nodes: TreeNodeItem[], _selectionType: SelectionChangeType): Keys;
protected getKeys(nodes: TreeNodeItem[]): Keys;
private addToSelection;
private removeFromSelection;
private replaceSelection;
private onSelectionChanged;
private updateAllNodes;
private updateAffectedNodes;
private updateNodeSelectionState;
}
/**
* A custom hook which creates and disposes [[UnifiedSelectionTreeEventHandler]]
* @public
* @deprecated in 4.x. This hook is not compatible with React 18 `StrictMode`. Use [[usePresentationTreeState]] and
* [[UsePresentationTreeProps.eventHandlerFactory]] instead or manually create and dispose [[UnifiedSelectionTreeEventHandler]].
*/
export declare function useUnifiedSelectionTreeEventHandler(props: UnifiedSelectionTreeEventHandlerParams): UnifiedSelectionTreeEventHandler;
//# sourceMappingURL=UseUnifiedSelection.d.ts.map