UNPKG

@itwin/presentation-components

Version:

React components based on iTwin.js Presentation library

106 lines 5.29 kB
/** @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