@itwin/presentation-components
Version:
React components based on iTwin.js Presentation library
125 lines • 6.01 kB
TypeScript
/** @packageDocumentation
* @module InstancesFilter
*/
import { PropertyDescription } from "@itwin/appui-abstract";
import { PropertyFilterBuilderRuleValueRendererProps } from "@itwin/components-react";
import { IModelConnection } from "@itwin/core-frontend";
import { ClassId, ClassInfo, Descriptor, InstanceFilterDefinition, Keys, PropertiesField } from "@itwin/presentation-common";
import { WithConstraints } from "../common/ContentBuilder.js";
import { PresentationInstanceFilter, PresentationInstanceFilterConditionGroup } from "./PresentationInstanceFilter.js";
/**
* Function that checks if supplied [[PresentationInstanceFilter]] is [[PresentationInstanceFilterConditionGroup]].
* @beta
* @deprecated in 5.0. Use `PresentationInstanceFilter.isConditionGroup` instead.
*/
export declare function isPresentationInstanceFilterConditionGroup(filter: PresentationInstanceFilter): filter is PresentationInstanceFilterConditionGroup;
/**
* Converts [[PresentationInstanceFilter]] into [InstanceFilterDefinition]($presentation-common) that can be passed
* to [PresentationManager]($presentation-frontend) through request options in order to filter results.
* @beta
* @deprecated in 5.0. Use `createInstanceFilterDefinition` instead.
*/
export declare function convertToInstanceFilterDefinition(filter: PresentationInstanceFilter, imodel: IModelConnection): Promise<InstanceFilterDefinition>;
/**
* Data structure that stores information about filter built by [[PresentationInstanceFilterDialog]].
* @public
*/
export interface PresentationInstanceFilterInfo {
/** Instance filter. */
filter: PresentationInstanceFilter | undefined;
/** Classes of the properties used in filter. */
usedClasses: ClassInfo[];
}
/**
* Data structure that contains information about property used for building filter.
* @public
*/
export interface PresentationInstanceFilterPropertyInfo {
/** Content descriptor field that represents this property. */
field: PropertiesField;
/** Property description */
propertyDescription: WithConstraints<PropertyDescription>;
/** Ids of the classes where this property is defined. */
sourceClassIds: ClassId[];
/**
* Id of the class where this property is defined.
* @deprecated in 5.8. Use [[sourceClassIds]] instead.
*/
sourceClassId: ClassId;
/** Name of the class that was used to access this property. */
className: string;
/** Label of related property category. */
categoryLabel?: string;
}
/**
* Props for [[useInstanceFilterPropertyInfos]] hook.
* @public
*/
export interface UseInstanceFilterPropertyInfosProps {
/** Descriptor to pull properties from. */
descriptor: Descriptor;
}
/**
* Custom hook that collects properties from descriptor for filter building.
* @public
*/
export declare function useInstanceFilterPropertyInfos({ descriptor }: UseInstanceFilterPropertyInfosProps): {
propertyInfos: PresentationInstanceFilterPropertyInfo[];
propertyRenderer: (name: string) => import("react/jsx-runtime.js").JSX.Element;
};
/**
* Props for [[PresentationFilterBuilderValueRenderer]].
* @public
*/
export interface PresentationFilterBuilderValueRendererProps extends PropertyFilterBuilderRuleValueRendererProps {
/** iModel used to pull data from. */
imodel: IModelConnection;
/** Descriptor used to get properties for filter builder. */
descriptor: Descriptor;
/** Keys used to create the descriptor. */
descriptorInputKeys?: Keys;
/** Currently Selected classes. Improves filter property value list relevence. If not provided, the filter may include broader, less relevant options.*/
selectedClasses?: ClassInfo[];
}
/**
* Custom renderer of the filter rule value input. It extends default value input functionality:
* - For `IsEqual` and `IsNotEqual` operators it renders a selector with unique property values. Unique values are collected from
* the instances described by the descriptor ([[PresentationFilterBuilderValueRendererProps.descriptor]] and [[PresentationFilterBuilderValueRendererProps.descriptorInputKeys]]).
* - For kind of quantity properties it renders input with units support.
*
* @public
*/
export declare function PresentationFilterBuilderValueRenderer({ imodel, descriptor, descriptorInputKeys, selectedClasses, ...props }: PresentationFilterBuilderValueRendererProps): import("react/jsx-runtime.js").JSX.Element;
/**
* Props for [[PresentationInstanceFilterBuilder]] component.
* @public
*/
export interface PresentationInstanceFilterBuilderProps {
/** iModel connection to pull data from. */
imodel: IModelConnection;
/** Descriptor containing properties and classes that should be available for building filter. */
descriptor: Descriptor;
/** Callback that is invoked when filter changes. */
onInstanceFilterChanged: (filter?: PresentationInstanceFilterInfo) => void;
/**
* Specifies how deep rule groups can be nested.
* @deprecated in 5.0. The component doesn't support multi-level nesting anymore.
*/
ruleGroupDepthLimit?: number;
/** Initial filter that will be show when component is mounted. */
initialFilter?: PresentationInstanceFilterInfo;
}
/**
* Component for building complex instance filters for filtering content and nodes produced
* by [PresentationManager]($presentation-frontend).
*
* @public
*/
export declare function PresentationInstanceFilterBuilder(props: PresentationInstanceFilterBuilderProps): import("react/jsx-runtime.js").JSX.Element;
/**
* Creates [InstanceFilterDefinition]($presentation-common) from [[PresentationInstanceFilterInfo]]. Created definition
* can be passed to [PresentationManager]($presentation-frontend) through request options in order to filter results.
* @public
*/
export declare function createInstanceFilterDefinition(info: PresentationInstanceFilterInfo, imodel: IModelConnection): Promise<InstanceFilterDefinition>;
//# sourceMappingURL=PresentationFilterBuilder.d.ts.map