@itwin/presentation-components
Version:
React components based on iTwin.js Presentation library
68 lines • 3.61 kB
TypeScript
/** @packageDocumentation
* @module InstancesFilter
*/
import { PrimitiveValue } from "@itwin/appui-abstract";
import { PropertyFilter, PropertyFilterRuleGroupOperator, PropertyFilterRuleOperator } from "@itwin/components-react";
import { GenericInstanceFilter } from "@itwin/core-common";
import { ClassInfo, Descriptor, PropertiesField } from "@itwin/presentation-common";
/**
* Type that describes instance filter based on [Descriptor]($presentation-common) fields. It can be
* one filter condition or group of filter conditions joined by logical operator.
* @public
*/
export type PresentationInstanceFilter = PresentationInstanceFilterConditionGroup | PresentationInstanceFilterCondition;
/**
* Data structure that describes group of filter condition joined by logical operator.
* @public
*/
export interface PresentationInstanceFilterConditionGroup {
/** Operator that should be used to join conditions. */
operator: `${PropertyFilterRuleGroupOperator}`;
/** Conditions in this group. */
conditions: PresentationInstanceFilter[];
}
/**
* Data structure that describes single filter condition.
* @public
*/
export interface PresentationInstanceFilterCondition {
/** [PropertiesField]($presentation-common) that contains property used in this condition. */
field: PropertiesField;
/** Operator that should be used to compare property value. */
operator: `${PropertyFilterRuleOperator}`;
/** Value that property should be compared to. */
value?: PrimitiveValue;
}
/** @public */
export declare namespace PresentationInstanceFilter {
/**
* Converts filter built by [usePropertyFilterBuilder]($components-react) into presentation specific format.
* @throws if presentation data cannot be found for properties used in `filter`.
*/
function fromComponentsPropertyFilter(descriptor: Descriptor, filter: PropertyFilter): PresentationInstanceFilter;
/**
* Converts [[PresentationInstanceFilter]] into format used by [usePropertyFilterBuilder]($components-react).
* @throws if fields used in filter cannot be found in `descriptor`.
*/
function toComponentsPropertyFilter(descriptor: Descriptor, filter: PresentationInstanceFilter): PropertyFilter;
/**
* Extracts information from [[PresentationInstanceFilter]] and creates a [GenericInstanceFilter]($common) for building queries.
*/
function toGenericInstanceFilter(filter: PresentationInstanceFilter, filteredClasses?: ClassInfo[]): GenericInstanceFilter;
/**
* Creates [[PresentationInstanceFilter]] from given [GenericInstanceFilter]($common).
* @throws if fields used in `filter` cannot be found in `descriptor`.
*/
function fromGenericInstanceFilter(descriptor: Descriptor, filter: GenericInstanceFilter): PresentationInstanceFilter;
/**
* Function that checks if supplied [[PresentationInstanceFilter]] is [[PresentationInstanceFilterConditionGroup]].
*/
function isConditionGroup(filter: PresentationInstanceFilter): filter is PresentationInstanceFilterConditionGroup;
/**
* Function that creates equality condition based on supplied [[PropertiesField]] and [[PrimitiveValue]] that is compatible
* with `UniquePropertyValuesSelector`.
* If [[PrimitiveValue.value]] is `undefined` created condition uses `is-null` or `is-not-null` operator.
*/
function createPrimitiveValueEqualityCondition(field: PropertiesField, operator: "is-equal" | "is-not-equal", value: PrimitiveValue): PresentationInstanceFilterCondition;
}
//# sourceMappingURL=PresentationInstanceFilter.d.ts.map