import { IQueryBuilderResourceStrings, FilteringLogic, IFilteringExpression, PlatformUtil, IExpressionTree, EntityType, FieldType, IgxOverlayOutletDirective, OverlaySettings, IFilteringExpressionsTree, trackByIdentity } from 'igniteui-angular/core'; import * as i0 from '@angular/core'; import { TemplateRef, ElementRef, AfterViewInit, OnDestroy, ChangeDetectorRef, EventEmitter, QueryList } from '@angular/core'; import { IgxChipComponent } from 'igniteui-angular/chips'; import { IgxSelectComponent } from 'igniteui-angular/select'; import { IComboSelectionChangingEventArgs } from 'igniteui-angular/combo'; import { IChangeCheckboxEventArgs } from 'igniteui-angular/checkbox'; import { ISelectionEventArgs } from 'igniteui-angular/drop-down'; import { IgxIconService } from 'igniteui-angular/icon'; declare class IgxQueryBuilderHeaderComponent { private _resourceStrings; /** * @hidden @internal */ get getClass(): string; /** * Sets the title of the `IgxQueryBuilderHeaderComponent`. * * @example * ```html * * ``` */ title: string; /** * Show/hide the legend. * * @example * ```html * * ``` * @deprecated in version 19.1.0. */ showLegend: boolean; /** * Sets the resource strings. * By default it uses EN resources. * * @deprecated in version 19.1.0. */ set resourceStrings(value: IQueryBuilderResourceStrings); /** * Returns the resource strings. */ get resourceStrings(): IQueryBuilderResourceStrings; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } /** * Defines the custom template that will be used for the search value input of condition in edit mode * * @igxModule IgxQueryBuilderModule * @igxKeywords query builder, query builder search value * @igxGroup Data entry and display * * @example * * * * * */ declare class IgxQueryBuilderSearchValueTemplateDirective { template: TemplateRef; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵdir: i0.ɵɵDirectiveDeclaration; } /** * @hidden @internal */ declare class ExpressionItem { parent: ExpressionGroupItem; expanded: boolean; constructor(parent?: ExpressionGroupItem); } /** * @hidden @internal */ declare class ExpressionGroupItem extends ExpressionItem { operator: FilteringLogic; children: ExpressionItem[]; constructor(operator: FilteringLogic, parent?: ExpressionGroupItem); } /** * @hidden @internal */ declare class ExpressionOperandItem extends ExpressionItem { expression: IFilteringExpression; inEditMode: boolean; inAddMode: boolean; hovered: boolean; focused: boolean; fieldLabel: string; constructor(expression: IFilteringExpression, parent: ExpressionGroupItem); } /** @hidden @internal */ declare class IgxQueryBuilderDragService { /** The ExpressionItem that's actually the drop ghost's content */ dropGhostExpression: ExpressionItem; isKeyboardDrag: boolean; private _queryBuilderTreeComponent; private _queryBuilderTreeComponentElRef; private _sourceExpressionItem; private _sourceElement; private _targetExpressionItem; private _dropUnder; private _ghostChipMousemoveSubscription$; private _keyboardSubscription$; private _keyDragCurrentIndex; private _keyDragInitialIndex; private _isKeyDragsFirstMove; /** Stores a flat ordered list of possible drop locations as Tuple <[targetExpression, dropUnder]>, while performing the keyboard drag&drop */ private _possibleDropLocations; private _timeoutId; /** Get the dragged ghost as a HTMLElement*/ private get getDragGhostElement(); /** Get the drop ghost chip component */ private get getDropGhostElement(); private get getMainExpressionTree(); register(tree: IgxQueryBuilderTreeComponent, el: ElementRef): void; /** When chip is picked up for dragging * * @param sourceDragElement The HTML element of the chip that's been dragged * @param sourceExpressionItem The expressionItem of the chip that's been dragged * @param isKeyboardDrag If it's a mouse drag or keyboard reorder * */ onMoveStart(sourceDragElement: HTMLElement, sourceExpressionItem: ExpressionItem, isKeyboardDrag: boolean): void; /** When dragged chip is let go outside a proper drop zone */ onMoveEnd(): void; /** When mouse drag enters a chip's area * @param targetDragElement The HTML element of the drop area chip that's been dragged to * @param targetExpressionItem The expressionItem of the drop area chip that's been dragged to */ onChipEnter(targetDragElement: HTMLElement, targetExpressionItem: ExpressionItem): void; /** When mouse drag moves in a div's drop area * @param targetDragElement The HTML element of the drop area chip that's been dragged to * @param targetExpressionItem The expressionItem of the drop area chip that's been dragged to */ onDivOver(targetDragElement: HTMLElement, targetExpressionItem: ExpressionItem): void; /** When mouse drag moves in a chip's drop area * @param targetDragElement The HTML element of the drop area chip that's been dragged to */ onChipOver(targetDragElement: HTMLElement): void; /** When mouse drag leaves a chip's drop area */ onChipLeave(): void; /** When dragged chip is let go in div's drop area * @param targetExpressionItem The expressionItem of the drop area chip that's been dragged to */ onDivDropped(targetExpressionItem: ExpressionItem): void; /** When dragged chip is let go in chip's drop area */ onChipDropped(): void; /** When mouse drag moves in a AND/OR drop area * @param targetDragElement The HTML element of the drop area chip that's been dragged to * @param targetExpressionItem The expressionItem of the drop area chip that's been dragged to */ onGroupRootOver(targetDragElement: HTMLElement, targetExpressionItem: ExpressionGroupItem): void; /** When mouse drag moves in 'Add condition' button's drop area * @param addConditionElement The Add condition button HTML Element * @param rootGroup The root group of the query tree */ onAddConditionEnter(addConditionElement: HTMLElement, rootGroup: ExpressionGroupItem): void; /** When chip's drag indicator is focused * * @param sourceDragElement The HTML element of the chip that's been dragged * @param sourceExpressionItem The expressionItem of the chip that's been dragged * */ onChipDragIndicatorFocus(sourceDragElement: HTMLElement, sourceExpressionItem: ExpressionItem): void; /** When chip's drag indicator looses focus*/ onChipDragIndicatorFocusOut(): void; /** Upon blurring the tree, if Keyboard drag is underway and the next active item is not the drop ghost's drag indicator icon, cancel the drag&drop procedure*/ onDragFocusOut(): void; /** Checks if the dragged ghost is horizontally on the same line with the drop ghost*/ private dragGhostIsOnDropGhostRow; /** Checks if the dragged ghost is north or south of a target element's center*/ private ghostInLowerPart; /** Make a copy of the _sourceExpressionItem's chip and paste it in the tree north or south of the _targetExpressionItem's chip */ private renderDropGhostChip; /** Set the cursor when dragging a ghost*/ private setDragCursor; /** Removes the drop ghost expression from the tree and it's chip effectively */ private clearDropGhost; /** Reset Drag&Drop vars. Optionally the drag source vars too*/ private resetDragAndDrop; /** Start listening for drag and drop specific keys */ private listenToKeyboard; /** Perform up/down movement of drop ghost along the expression tree*/ private arrowDrag; /** Produces a flat ordered list of possible drop locations as Tuple <[targetExpression, dropUnder]>, while performing the keyboard drag&drop */ private getPossibleDropLocations; /** Counts how many chips will be in the tree (from top to bottom) before the dropped one */ private countChipsBeforeDropLocation; /** Sets the z-index of the drag ghost with a little delay, since we don't have access to ghostCreated() but we know it's executed right after moveStart() */ private setDragGhostZIndex; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } /** @hidden */ declare class IgxQueryBuilderTreeComponent implements AfterViewInit, OnDestroy { cdr: ChangeDetectorRef; dragService: IgxQueryBuilderDragService; protected platform: PlatformUtil; private elRef; protected _localeId: string; /** * @hidden @internal */ _expressionTree: IExpressionTree; /** * @hidden @internal */ _expressionTreeCopy: IExpressionTree; /** * @hidden @internal */ get getClass(): string; /** * Sets/gets the entities. */ entities: EntityType[]; /** * Sets/gets the parent query builder component. */ queryBuilder: IgxQueryBuilderComponent; /** * Sets/gets the search value template. */ searchValueTemplate: TemplateRef; /** * Returns the parent expression operand. */ get parentExpression(): ExpressionOperandItem; /** * Sets the parent expression operand. */ set parentExpression(value: ExpressionOperandItem); /** * Returns the fields. */ get fields(): FieldType[]; /** * Sets the fields. */ set fields(fields: FieldType[]); /** * Returns the expression tree. */ get expressionTree(): IExpressionTree; /** * Sets the expression tree. */ set expressionTree(expressionTree: IExpressionTree); /** * Gets the `locale` of the query builder. * If not set, defaults to application's locale. */ get locale(): string; /** * Sets the `locale` of the query builder. * Expects a valid BCP 47 language tag. */ set locale(value: string); /** * Sets the resource strings. * By default it uses EN resources. */ set resourceStrings(value: IQueryBuilderResourceStrings); /** * Returns the resource strings. */ get resourceStrings(): IQueryBuilderResourceStrings; /** * Gets/sets the expected return field. */ expectedReturnField: string; /** * Event fired as the expression tree is changed. */ expressionTreeChange: EventEmitter; /** * Event fired if a nested query builder tree is being edited. */ inEditModeChange: EventEmitter; protected entitySelect: IgxSelectComponent; private editingInputs; private returnFieldsCombo; protected returnFieldSelect: IgxSelectComponent; private fieldSelect; private conditionSelect; private searchValueInput; private picker; private addRootAndGroupButton; private addConditionButton; private entityChangeDialog; private addExpressionItemDropDown; private groupContextMenuDropDown; /** * @hidden @internal */ expressionsChips: QueryList; protected set editingInputsContainer(value: ElementRef); /** @hidden */ protected get editingInputsContainer(): ElementRef; protected set currentGroupButtonsContainer(value: ElementRef); /** @hidden */ protected get currentGroupButtonsContainer(): ElementRef; private expressionsContainer; private overlayOutlet; private innerQueries; /** * @hidden @internal */ innerQueryNewExpressionTree: IExpressionTree; /** * @hidden @internal */ rootGroup: ExpressionGroupItem; /** * @hidden @internal */ selectedExpressions: ExpressionOperandItem[]; /** * @hidden @internal */ currentGroup: ExpressionGroupItem; /** * @hidden @internal */ contextualGroup: ExpressionGroupItem; /** * @hidden @internal */ filteringLogics: any; /** * @hidden @internal */ selectedCondition: string; /** * @hidden @internal */ searchValue: { value: any; }; /** * @hidden @internal */ pickerOutlet: IgxOverlayOutletDirective | ElementRef; /** * @hidden @internal */ prevFocusedExpression: ExpressionOperandItem; /** * @hidden @internal */ initialOperator: number; /** * @hidden @internal */ returnFieldSelectOverlaySettings: OverlaySettings; /** * @hidden @internal */ entitySelectOverlaySettings: OverlaySettings; /** * @hidden @internal */ fieldSelectOverlaySettings: OverlaySettings; /** * @hidden @internal */ conditionSelectOverlaySettings: OverlaySettings; /** * @hidden @internal */ addExpressionDropDownOverlaySettings: OverlaySettings; /** * @hidden @internal */ groupContextMenuDropDownOverlaySettings: OverlaySettings; private destroy$; private _timeoutId; private _lastFocusedChipIndex; private _focusDelay; private _parentExpression; private _selectedEntity; private _selectedReturnFields; private _selectedField; private _editingInputsContainer; private _currentGroupButtonsContainer; private _addModeExpression; private _editedExpression; private _preventInit; private _prevFocusedContainer; private _expandedExpressions; private _fields; private _locale; private _entityNewValue; private _resourceStrings; /** * Returns if the select entity dropdown at the root level is disabled after the initial selection. */ get disableEntityChange(): boolean; /** * Returns if the fields combo at the root level is disabled. */ get disableReturnFieldsChange(): boolean; /** * Returns the current level. */ get level(): number; private _positionSettings; private _overlaySettings; /** @hidden */ protected isAdvancedFiltering(): boolean; /** @hidden */ protected isHierarchicalNestedQuery(): boolean; /** @hidden */ protected isSearchValueInputDisabled(): boolean; constructor(); /** * @hidden @internal */ ngAfterViewInit(): void; /** * @hidden @internal */ ngOnDestroy(): void; /** * @hidden @internal */ set selectedEntity(value: string); /** * @hidden @internal */ get selectedEntity(): EntityType; /** * @hidden @internal */ onEntitySelectChanging(event: ISelectionEventArgs): void; /** * @hidden */ onShowEntityChangeDialogChange(eventArgs: IChangeCheckboxEventArgs): void; /** * @hidden */ onEntityChangeCancel(): void; /** * @hidden */ onEntityChangeConfirm(): void; /** * @hidden @internal */ set selectedReturnFields(value: string[]); /** * @hidden @internal */ get selectedReturnFields(): string[]; /** * @hidden @internal */ set selectedField(value: FieldType); /** * @hidden @internal */ get selectedField(): FieldType; /** * @hidden @internal * * used by the grid */ setPickerOutlet(outlet?: IgxOverlayOutletDirective | ElementRef): void; /** * @hidden @internal * * used by the grid */ get isContextMenuVisible(): boolean; /** * @hidden @internal */ get hasEditedExpression(): boolean; /** * @hidden @internal */ addCondition(parent: ExpressionGroupItem, afterExpression?: ExpressionOperandItem, isUIInteraction?: boolean): void; /** * @hidden @internal */ addReverseGroup(parent?: ExpressionGroupItem, afterExpression?: ExpressionItem): void; /** * @hidden @internal */ endGroup(groupItem: ExpressionGroupItem): void; /** * @hidden @internal */ commitExpression(): void; /** * @hidden @internal */ discardExpression(expressionItem?: ExpressionOperandItem): void; /** * @hidden @internal */ commitOperandEdit(): void; /** * @hidden @internal */ cancelOperandAdd(): void; /** * @hidden @internal */ deleteItem: (expressionItem: ExpressionItem, skipEmit?: boolean) => void; /** * @hidden @internal */ cancelOperandEdit(): void; /** * @hidden @internal */ operandCanBeCommitted(): boolean; /** * @hidden @internal */ canCommitCurrentState(): boolean; /** * @hidden @internal */ commitCurrentState(): void; /** * @hidden @internal */ exitEditAddMode(shouldPreventInit?: boolean): void; /** * @hidden @internal * * used by the grid */ exitOperandEdit(): void; /** * @hidden @internal */ isExpressionGroup(expression: ExpressionItem): boolean; /** * @hidden @internal */ onExpressionFocus(expressionItem: ExpressionOperandItem): void; /** * @hidden @internal */ onExpressionBlur(event: any, expressionItem: ExpressionOperandItem): void; /** * @hidden @internal */ onChipRemove(expressionItem: ExpressionItem): void; /** * @hidden @internal */ focusChipAfterDrag: (index: number) => void; /** * @hidden @internal */ addExpressionBlur(): void; /** * @hidden @internal */ onChipClick(expressionItem: ExpressionOperandItem, chip: IgxChipComponent): void; /** * @hidden @internal */ enterExpressionEdit(expressionItem: ExpressionOperandItem, chip?: IgxChipComponent): void; /** * @hidden @internal */ clickExpressionAdd(targetButton: HTMLElement, chip: IgxChipComponent): void; /** * @hidden @internal */ openExpressionAddDialog(targetButton: HTMLElement): void; /** * @hidden @internal */ enterExpressionAdd(event: ISelectionEventArgs, expressionItem: ExpressionOperandItem): void; /** * @hidden @internal */ enterEditMode(expressionItem: ExpressionOperandItem): void; /** * @hidden @internal */ onConditionSelectChanging(event: ISelectionEventArgs): void; /** * @hidden @internal */ onKeyDown(eventArgs: KeyboardEvent): void; /** * @hidden @internal */ onGroupClick(groupContextMenuDropDown: any, targetButton: HTMLButtonElement, groupItem: ExpressionGroupItem): void; /** * @hidden @internal */ getOperator(expressionItem: any): any; /** * @hidden @internal */ getSwitchGroupText(expressionItem: any): string; /** * @hidden @internal */ onGroupContextMenuDropDownSelectionChanging(event: ISelectionEventArgs): void; /** * @hidden @internal */ ungroup(): void; /** * @hidden @internal */ selectFilteringLogic(index: number): void; /** * @hidden @internal */ getConditionFriendlyName(name: string): string; /** * @hidden @internal */ isDate(value: any): value is Date; /** * @hidden @internal */ invokeClick(eventArgs: KeyboardEvent): void; /** * @hidden @internal */ openPicker(args: KeyboardEvent): void; /** * @hidden @internal */ onOutletPointerDown(event: any): void; /** * @hidden @internal */ getConditionList(): string[]; /** * @hidden @internal */ getFormatter(field: string): (value: any, rowData?: any) => any; /** * @hidden @internal */ getFormat(field: string): string; /** * @hidden @internal * * used by the grid */ setAddButtonFocus(): void; /** * @hidden @internal */ context(expression: ExpressionItem, afterExpression?: ExpressionItem): { $implicit: ExpressionItem; afterExpression: ExpressionItem; }; formatReturnFields(innerTree: IFilteringExpressionsTree): string; isInEditMode(): boolean; onInEditModeChanged(expressionItem: ExpressionOperandItem): void; getExpressionTreeCopy(expressionTree: IExpressionTree, shouldAssignInnerQueryExprTree?: boolean): IExpressionTree; onSelectAllClicked(): void; onReturnFieldSelectChanging(event: IComboSelectionChangingEventArgs | ISelectionEventArgs): void; initExpressionTree(selectedEntityName: string, selectedReturnFields: string[]): void; getSearchValueTemplateContext(defaultSearchValueTemplate: any): any; private getPipeArgs; private selectDefaultCondition; private getFilters; private addGroup; private createExpressionGroupItem; private createExpressionTreeFromGroupItem; private scrollElementIntoView; private focusEditedExpressionChip; private init; /** rootGroup is recreated after clicking Apply, which sets new expressionTree and calls init()*/ protected trackExpressionItem: typeof trackByIdentity; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; } /** * A component used for operating with complex filters by creating or editing conditions * and grouping them using AND/OR logic. * It is used internally in the Advanced Filtering of the Grid. * * @example * ```html * * * ``` */ declare class IgxQueryBuilderComponent implements OnDestroy { protected iconService: IgxIconService; /** * @hidden @internal */ cssClass: string; /** * @hidden @internal */ display: string; /** * Gets/sets whether the confirmation dialog should be shown when changing entity. * Default value is `true`. */ showEntityChangeDialog: boolean; /** * Gets the list of entities available for the IgxQueryBuilderComponent. * * Each entity describes a logical group of fields that can be used in queries. * An entity can optionally have child entities, allowing nested sub-queries. * * @returns An array of {@link EntityType} objects. */ get entities(): EntityType[]; /** * Sets the list of entities for the IgxQueryBuilderComponent. * If the `expressionTree` is defined, it will be recreated with the new entities. * * Each entity should be an {@link EntityType} object describing the fields and optionally child entities. * * Example: * ```ts * [ * { * name: 'Orders', * fields: [{ field: 'OrderID', dataType: 'number' }], * childEntities: [ * { * name: 'OrderDetails', * fields: [{ field: 'ProductID', dataType: 'number' }] * } * ] * } * ] * ``` * * @param entities - The array of entities to set. */ set entities(entities: EntityType[]); /** * Gets the list of fields for the QueryBuilder. * * @deprecated since version 19.1.0. Use the `entities` property instead. * @hidden */ get fields(): FieldType[]; /** * Sets the list of fields for the QueryBuilder. * Automatically wraps them into a single entity to maintain backward compatibility. * * @param fields - The array of fields to set. * @deprecated since version 19.1.0. Use the `entities` property instead. * @hidden */ set fields(fields: FieldType[]); /** * Returns the expression tree. */ get expressionTree(): IExpressionTree; /** * Sets the expression tree. */ set expressionTree(expressionTree: IExpressionTree); /** * Gets the `locale` of the query builder. * If not set, defaults to application's locale. */ locale: string; /** * Sets the resource strings. * By default it uses EN resources. */ set resourceStrings(value: IQueryBuilderResourceStrings); /** * Returns the resource strings. */ get resourceStrings(): IQueryBuilderResourceStrings; /** * Disables subsequent entity changes at the root level after the initial selection. */ disableEntityChange: boolean; /** * Disables return fields changes at the root level. */ disableReturnFieldsChange: boolean; /** * Event fired as the expression tree is changed. * * ```html * * ``` */ expressionTreeChange: EventEmitter; /** * @hidden @internal */ searchValueTemplate: TemplateRef; /** * @hidden @internal */ queryTree: IgxQueryBuilderTreeComponent; private destroy$; private _resourceStrings; private _expressionTree; private _fields; private _entities; private _shouldEmitTreeChange; constructor(); /** * Returns whether the expression tree can be committed in the current state. */ canCommit(): boolean; /** * Commits the expression tree in the current state if it is valid. If not throws an exception. */ commit(): void; /** * Discards all unsaved changes to the expression tree. */ discard(): void; /** * @hidden @internal */ ngOnDestroy(): void; /** * @hidden @internal * * used by the grid */ setPickerOutlet(outlet?: IgxOverlayOutletDirective | ElementRef): void; /** * @hidden @internal * * used by the grid */ get isContextMenuVisible(): boolean; /** * @hidden @internal * * used by the grid */ exitOperandEdit(): void; /** * @hidden @internal * * used by the grid */ setAddButtonFocus(): void; onExpressionTreeChange(tree: IExpressionTree): void; private registerSVGIcons; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵcmp: i0.ɵɵComponentDeclaration; static ngAcceptInputType_showEntityChangeDialog: unknown; } declare const IGX_QUERY_BUILDER_DIRECTIVES: readonly [typeof IgxQueryBuilderComponent, typeof IgxQueryBuilderHeaderComponent, typeof IgxQueryBuilderSearchValueTemplateDirective]; /** * @hidden * IMPORTANT: The following is NgModule exported for backwards-compatibility before standalone components */ declare class IgxQueryBuilderModule { static ɵfac: i0.ɵɵFactoryDeclaration; static ɵmod: i0.ɵɵNgModuleDeclaration; static ɵinj: i0.ɵɵInjectorDeclaration; } export { IGX_QUERY_BUILDER_DIRECTIVES, IgxQueryBuilderComponent, IgxQueryBuilderHeaderComponent, IgxQueryBuilderModule, IgxQueryBuilderSearchValueTemplateDirective };