Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(query-builder): exit edit mode on chip/add button click #15207

Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
7d8a92e
fix(query-builder): exit edit mode on item click
teodosiah Jan 7, 2025
e959dc8
fix(query-builder): exit edit mode on add btn click
teodosiah Jan 7, 2025
f3a9428
fix(query-builder): remove unnecessary focus and detectChanges
teodosiah Jan 8, 2025
e65e526
Merge branch 'ipetrov/query-builder-drag-and-drop-nogap' of https://g…
teodosiah Jan 8, 2025
1812556
fix(query-builder): exit edit on drag & delete, fix drop-down pos
teodosiah Jan 8, 2025
de47ddb
fix(query-builder): address review comments
teodosiah Jan 9, 2025
89a7ace
fix(query-builder): exit edit on group, entity and field click
teodosiah Jan 9, 2025
3bef539
fix(query-builder): reuse exitEditAddMode method
teodosiah Jan 9, 2025
cda31f9
Merge branch 'ipetrov/query-builder-drag-and-drop-nogap' of https://g…
teodosiah Jan 10, 2025
109fdc0
Merge branch 'ipetrov/query-builder-drag-and-drop-nogap' of https://g…
teodosiah Jan 14, 2025
afe81ac
Merge branch 'thristodorova/query-builder-exit-edit-mode' of https://…
teodosiah Jan 14, 2025
fba33a4
Merge branch 'ipetrov/query-builder-drag-and-drop-nogap' of https://g…
teodosiah Jan 17, 2025
7d82baf
fix(query-builder): prevent exit edit of inner query
teodosiah Jan 20, 2025
5be348e
Merge branch 'ipetrov/query-builder-drag-and-drop-nogap' of https://g…
teodosiah Jan 20, 2025
ef0f172
fix(query-builder): prevent exit edit on drag icon focus
teodosiah Jan 20, 2025
4a36681
Merge branch 'ipetrov/query-builder-drag-and-drop-nogap' of https://g…
teodosiah Jan 21, 2025
a388c91
test(query-builder): add exit edit mode on same level tests
teodosiah Jan 21, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,7 @@
<div igxDragIgnore class="igx-filter-tree__expression-actions">
<button #addExpressionButton igxDragIgnore igxIconButton="flat" [igxDropDownItemNavigation]="addOptionsDropDown"
aria-labelledby="add-expression" (keydown)="invokeClick($event)"
(click)="openExpressionAdd(expressionItem, addExpressionButton)"
(click)="clickExpressionAdd(expressionItem, addExpressionButton)"
(blur)="addExpressionBlur()">
<igx-icon id="add-expression">add</igx-icon>
</button>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ import {
Component, Input, ViewChild, ChangeDetectorRef, ViewChildren, QueryList, ElementRef, OnDestroy, HostBinding
} from '@angular/core';
import { FormsModule } from '@angular/forms';
import { filter, fromEvent, map, retry, sampleTime, Subject, Subscription } from 'rxjs';
import { filter, fromEvent, sampleTime, Subject, Subscription } from 'rxjs';
import { IButtonGroupEventArgs, IgxButtonGroupComponent } from '../buttonGroup/buttonGroup.component';
import { IBaseChipEventArgs, IChipEnterDragAreaEventArgs, IgxChipComponent } from '../chips/chip.component';
import { IgxChipComponent } from '../chips/chip.component';
import { IQueryBuilderResourceStrings, QueryBuilderResourceStringsEN } from '../core/i18n/query-builder-resources';
import { PlatformUtil } from '../core/utils';
import { DataType, DataUtil } from '../data-operations/data-util';
Expand Down Expand Up @@ -54,8 +54,8 @@ import { IgxTooltipDirective } from '../directives/tooltip/tooltip.directive';
import { IgxTooltipTargetDirective } from '../directives/tooltip/tooltip-target.directive';
import { IgxQueryBuilderSearchValueTemplateDirective } from './query-builder.directives';
import { IgxQueryBuilderComponent } from './query-builder.component';
import { IChipsAreaReorderEventArgs, IgxChipsAreaComponent } from "../chips/chips-area.component";
import { IgxDragDirective, IgxDragIgnoreDirective, IgxDragHandleDirective, IDragBaseEventArgs, IDragStartEventArgs, IDropBaseEventArgs, IDropDroppedEventArgs, IgxDropDirective } from '../directives/drag-drop/drag-drop.directive';
import { IgxChipsAreaComponent } from "../chips/chips-area.component";
import { IgxDragDirective, IgxDragIgnoreDirective, IgxDragHandleDirective, IgxDropDirective } from '../directives/drag-drop/drag-drop.directive';
import { IgxDropDownComponent } from '../drop-down/drop-down.component';
import { IgxDropDownItemComponent } from '../drop-down/drop-down-item.component';
import { IgxDropDownItemNavigationDirective } from '../drop-down/drop-down-navigation.directive';
Expand Down Expand Up @@ -262,7 +262,11 @@ export class IgxQueryBuilderTreeComponent implements AfterViewInit, OnDestroy {
this._selectedReturnFields = [];
}

this.init();
if(!this._preventInit) {
this.init();

this._preventInit = false;
teodosiah marked this conversation as resolved.
Show resolved Hide resolved
}
}

/**
Expand Down Expand Up @@ -506,6 +510,7 @@ export class IgxQueryBuilderTreeComponent implements AfterViewInit, OnDestroy {
private _currentGroupButtonsContainer: ElementRef;
private _addModeExpression: ExpressionOperandItem;
private _editedExpression: ExpressionOperandItem;
private _preventInit = false;
private _prevFocusedContainer: ElementRef;
private _selectedGroups: ExpressionGroupItem[] = [];
private _expandedExpressions: IFilteringExpression[] = [];
Expand Down Expand Up @@ -744,7 +749,7 @@ export class IgxQueryBuilderTreeComponent implements AfterViewInit, OnDestroy {
/**
* @hidden @internal
*/
public addCondition(parent: ExpressionGroupItem, afterExpression?: ExpressionItem) {
public addCondition(parent: ExpressionGroupItem, afterExpression?: ExpressionOperandItem) {
this.cancelOperandAdd();

const operandItem = new ExpressionOperandItem({
Expand Down Expand Up @@ -965,6 +970,10 @@ export class IgxQueryBuilderTreeComponent implements AfterViewInit, OnDestroy {
* @hidden @internal
*/
public onChipRemove(expressionItem: ExpressionItem) {
if(this._editedExpression) {
this.exitOperandEdit();
this.cancelOperandAdd();
}
this.deleteItem(expressionItem);
}

Expand All @@ -991,6 +1000,10 @@ export class IgxQueryBuilderTreeComponent implements AfterViewInit, OnDestroy {

//When we pick up a chip
public onMoveStart(sourceDragElement: HTMLElement, sourceExpressionItem: ExpressionItem): void {
if(this._editedExpression) {
this.exitOperandEdit();
this.cancelOperandAdd();
}
//console.log('Picked up:', event, sourceDragElement);
this.resetDragAndDrop(true);
this.sourceExpressionItem = sourceExpressionItem;
Expand Down Expand Up @@ -1412,9 +1425,73 @@ export class IgxQueryBuilderTreeComponent implements AfterViewInit, OnDestroy {
* @hidden @internal
*/
public enterExpressionEdit(expressionItem: ExpressionOperandItem) {
this.exitOperandEdit();
this.cancelOperandAdd();
if (this._editedExpression) {
this.exitOperandEdit();
this.cancelOperandAdd();

this._preventInit = true;
}
this.cdr.detectChanges();
this.enterEditMode(expressionItem);
}


/**
* @hidden @internal
*/
public clickExpressionAdd(expressionItem: ExpressionOperandItem, targetButton: HTMLElement) {
if (this._editedExpression) {
this.exitOperandEdit();
this.cancelOperandAdd();

this._preventInit = true;
}
this.cdr.detectChanges();
this.openExpressionAddDialog(expressionItem, targetButton);
}

/**
* @hidden @internal
*/
public openExpressionAddDialog(expressionItem: ExpressionOperandItem, targetButton: HTMLElement) {
teodosiah marked this conversation as resolved.
Show resolved Hide resolved
this.addExpressionDropDownOverlaySettings.target = targetButton;
this.addExpressionDropDownOverlaySettings.positionStrategy = new ConnectedPositioningStrategy({
horizontalDirection: HorizontalAlignment.Right,
horizontalStartPoint: HorizontalAlignment.Right,
verticalStartPoint: VerticalAlignment.Bottom
});

this.addExpressionItemDropDown.open(this.addExpressionDropDownOverlaySettings);
}

/**
* @hidden @internal
*/
public enterExpressionAdd(event: ISelectionEventArgs, expressionItem: ExpressionOperandItem) {
if (this._addModeExpression) {
this._addModeExpression.inAddMode = false;
}

if (this.parentExpression) {
this.inEditModeChange.emit(this.parentExpression);
}

const parent = expressionItem.parent ?? this.rootGroup;
requestAnimationFrame(() => {
if (event.newSelection.value === 'addCondition') {
this.addCondition(parent, expressionItem);
} else if (event.newSelection.value === 'addGroup') {
this.addReverseGroup(parent, expressionItem);
}
expressionItem.inAddMode = true;
this._addModeExpression = expressionItem;
})
}

/**
* @hidden @internal
*/
public enterEditMode(expressionItem: ExpressionOperandItem) {
if (this._editedExpression) {
this._editedExpression.inEditMode = false;
}
Expand Down Expand Up @@ -1457,7 +1534,6 @@ export class IgxQueryBuilderTreeComponent implements AfterViewInit, OnDestroy {
this.conditionSelectOverlaySettings.positionStrategy = new AutoPositionStrategy();
}


if (!this.selectedField) {
this.fieldSelect.input.nativeElement.focus();
} else if (this.selectedField.filters.condition(this.selectedCondition)?.isUnary) {
Expand All @@ -1468,46 +1544,6 @@ export class IgxQueryBuilderTreeComponent implements AfterViewInit, OnDestroy {
}
}


/**
* @hidden @internal
*/
public openExpressionAdd(expressionItem: ExpressionOperandItem, targetButton: HTMLElement) {
this.exitOperandEdit();

this.addExpressionDropDownOverlaySettings.target = targetButton;
this.addExpressionDropDownOverlaySettings.positionStrategy = new ConnectedPositioningStrategy({
horizontalDirection: HorizontalAlignment.Right,
horizontalStartPoint: HorizontalAlignment.Right,
verticalStartPoint: VerticalAlignment.Bottom
});
this.addExpressionItemDropDown.open(this.addExpressionDropDownOverlaySettings);
}

/**
* @hidden @internal
*/
public enterExpressionAdd(event: ISelectionEventArgs, expressionItem: ExpressionOperandItem) {
if (this._addModeExpression) {
this._addModeExpression.inAddMode = false;
}

if (this.parentExpression) {
this.inEditModeChange.emit(this.parentExpression);
}

const parent = expressionItem.parent ?? this.rootGroup;
requestAnimationFrame(() => {
if (event.newSelection.value === 'addCondition') {
this.addCondition(parent, expressionItem);
} else if (event.newSelection.value === 'addGroup') {
this.addReverseGroup(parent, expressionItem);
}
expressionItem.inAddMode = true;
this._addModeExpression = expressionItem;
})
}

/**
* @hidden @internal
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ export class IgxQueryBuilderComponent implements OnDestroy {
this._fields = fields;
this.entities = [
{
name: null,
name: null,
fields: fields
}
];
Expand Down