@itwin/presentation-components
Version:
React components based on iTwin.js Presentation library
106 lines • 5.29 kB
TypeScript
/** @packageDocumentation
* @module Tree
*/
import "../../common/DisposePolyfill.js";
import { AbstractTreeNodeLoaderWithProvider, HighlightableTreeProps, RenderedItemsRange, TreeEventHandler, TreeModel, TreeModelSource } from "@itwin/components-react";
import { PresentationTreeDataProviderProps } from "../DataProvider.js";
import { IFilteredPresentationTreeDataProvider, IPresentationTreeDataProvider } from "../IPresentationTreeDataProvider.js";
/**
* Properties for [[usePresentationTreeState]] hook.
* @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 UsePresentationTreeStateProps<TEventHandler extends TreeEventHandler = TreeEventHandler> extends PresentationTreeDataProviderProps {
/**
* Number of nodes in a single page. The created loader always requests at least
* a page of nodes, so it should be optimized for usability vs performance (using
* smaller pages gives better responsiveness, but makes overall performance
* slightly worse).
*
* Note: The prop is already defined in `PresentationTreeDataProviderProps` but specified here again to make it required.
*/
pagingSize: number;
/**
* Initialize tree data with the provided tree model.
*/
seedTreeModel?: TreeModel;
/**
* Factory function for creating custom tree events handler. Defaults to creating [TreeEventHandler]($components-react).
*
* Note: Must be memoized.
*/
eventHandlerFactory?: (props: PresentationTreeEventHandlerProps) => TEventHandler | undefined;
/**
* Parameters for filtering tree.
*/
filteringParams?: {
/** Filter text. */
filter: string;
/** Current active filter match. It is used to create [HighlightableTreeNodeProps]($components-react) for highlighting and stepping through filter matches. */
activeMatchIndex?: number;
};
/**
* Callback for when a tree node is loaded.
*/
onNodeLoaded?: (props: {
/** ID of the loaded node, `root` if it is the root. */
node: string;
/** Duration how long the load took in milliseconds. */
duration: number;
}) => void;
/**
* Callback for when the hierarchy limit is exceeded while loading nodes.
*/
onHierarchyLimitExceeded?: () => void;
}
/**
* Return type of [[usePresentationTreeState]] hook.
* @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 UsePresentationTreeStateResult<TEventHandler extends TreeEventHandler = TreeEventHandler> {
/** Tree node loader to be used with a tree component. */
nodeLoader: AbstractTreeNodeLoaderWithProvider<IPresentationTreeDataProvider>;
/** Event handler to be used with a tree component. */
eventHandler: TEventHandler;
/**
* Callback for when rendered tree node item range changes. This property should be passed to
* [ControlledTree]($components-react).
*/
onItemsRendered: (items: RenderedItemsRange) => void;
/**
* Information about filtering applied on tree.
*/
filteringResult?: {
/** Specifies whether filtering is in progress or not. */
isFiltering: boolean;
/** Filtered data provider used when loading nodes. */
filteredProvider?: IFilteredPresentationTreeDataProvider;
/** Props for highlighting filter matches in node label. */
highlightProps?: HighlightableTreeProps;
/** Total count of filter matches. */
matchesCount?: number;
};
}
/**
* Props passed to [[UsePresentationTreeStateProps.eventHandlerFactory]] when creating event handler.
* @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 PresentationTreeEventHandlerProps {
/** Node loader used to load nodes. */
nodeLoader: AbstractTreeNodeLoaderWithProvider<IPresentationTreeDataProvider>;
/** Model source containing tree model. */
modelSource: TreeModelSource;
}
/**
* Custom hook that creates and manages state for [ControlledTree]($components-react) component based on presentation data.
* @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 function usePresentationTreeState<TEventHandler extends TreeEventHandler = TreeEventHandler>({ onHierarchyLimitExceeded, onNodeLoaded, eventHandlerFactory, seedTreeModel, filteringParams, ...dataProviderProps }: UsePresentationTreeStateProps<TEventHandler>): UsePresentationTreeStateResult<TEventHandler> | undefined;
//# sourceMappingURL=UsePresentationTreeState.d.ts.map