Skip to content

Commit 8bbb4c9

Browse files
authored
Merge pull request #9400 from IgniteUI/dTsvetkov/fix-9349-11.1.x
fix(toolbar): Fixed columnToggle emitter -11.1.x
2 parents a1c5c8e + f656990 commit 8bbb4c9

File tree

4 files changed

+18
-13
lines changed

4 files changed

+18
-13
lines changed

projects/igniteui-angular/src/lib/grids/column-actions/column-actions.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ <h4 [attr.id]='titleID' class="igx-column-actions__header-title" *ngIf="title">{
2020
| sortActionColumns:columnDisplayOrder:pipeTrigger;"
2121
class="igx-column-actions__columns-item"
2222
[readonly]="true"
23-
(click)="toggleColumn($event, column)"
23+
(click)="toggleColumn(column)"
2424
[checked]="actionsDirective.columnChecked(column)"
2525
[style.margin-left.px]="column.level * indentation">
2626
{{ column.header || column.field }}

projects/igniteui-angular/src/lib/grids/column-actions/column-actions.component.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -406,12 +406,9 @@ export class IgxColumnActionsComponent implements DoCheck {
406406
/**
407407
* @hidden @internal
408408
*/
409-
public toggleColumn(event: IChangeCheckboxEventArgs, column: IgxColumnComponent) {
409+
public toggleColumn(column: IgxColumnComponent) {
410410
this.actionsDirective.toggleColumn(column);
411411

412-
this.onColumnToggled.emit({
413-
column,
414-
checked: event.checked
415-
});
412+
this.onColumnToggled.emit({column, checked: this.actionsDirective.columnChecked(column)});
416413
}
417414
}

projects/igniteui-angular/src/lib/grids/grid/column-hiding.spec.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -159,31 +159,31 @@ describe('Column Hiding UI #grid', () => {
159159

160160
expect(columnChooser.onColumnToggled.emit).toHaveBeenCalledTimes(1);
161161
expect(columnChooser.onColumnToggled.emit).toHaveBeenCalledWith(
162-
{ column: grid.getColumnByName('ReleaseDate'), checked: undefined });
162+
{ column: grid.getColumnByName('ReleaseDate'), checked: false });
163163
expect(grid.columnVisibilityChanging.emit).toHaveBeenCalledTimes(1);
164164
expect(grid.onColumnVisibilityChanged.emit).toHaveBeenCalledTimes(1);
165165

166166
GridFunctions.clickColumnChooserItem(columnChooserElement, 'ReleaseDate');
167167

168168
expect(columnChooser.onColumnToggled.emit).toHaveBeenCalledTimes(2);
169169
expect(columnChooser.onColumnToggled.emit).toHaveBeenCalledWith(
170-
{ column: grid.getColumnByName('ReleaseDate'), checked: undefined });
170+
{ column: grid.getColumnByName('ReleaseDate'), checked: true });
171171
expect(grid.columnVisibilityChanging.emit).toHaveBeenCalledTimes(2);
172172
expect(grid.onColumnVisibilityChanged.emit).toHaveBeenCalledTimes(2);
173173

174174
GridFunctions.clickColumnChooserItem(columnChooserElement, 'Downloads');
175175

176176
expect(columnChooser.onColumnToggled.emit).toHaveBeenCalledTimes(3);
177177
expect(columnChooser.onColumnToggled.emit).toHaveBeenCalledWith(
178-
{ column: grid.getColumnByName('Downloads'), checked: undefined });
178+
{ column: grid.getColumnByName('Downloads'), checked: true });
179179
expect(grid.columnVisibilityChanging.emit).toHaveBeenCalledTimes(3);
180180
expect(grid.onColumnVisibilityChanged.emit).toHaveBeenCalledTimes(3);
181181

182182
GridFunctions.clickColumnChooserItem(columnChooserElement, 'Downloads');
183183

184184
expect(columnChooser.onColumnToggled.emit).toHaveBeenCalledTimes(4);
185185
expect(columnChooser.onColumnToggled.emit).toHaveBeenCalledWith(
186-
{ column: grid.getColumnByName('Downloads'), checked: undefined });
186+
{ column: grid.getColumnByName('Downloads'), checked: false });
187187
expect(grid.columnVisibilityChanging.emit).toHaveBeenCalledTimes(4);
188188
expect(grid.onColumnVisibilityChanged.emit).toHaveBeenCalledTimes(4);
189189
});

projects/igniteui-angular/src/lib/grids/toolbar/grid-toolbar.base.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Directive, Host, Input, EventEmitter, OnDestroy, Output } from '@angular/core';
2-
import { Subject } from 'rxjs';
2+
import { Subject, Subscription } from 'rxjs';
33
import { first, takeUntil } from 'rxjs/operators';
44
import { IgxToggleDirective, ToggleViewCancelableEventArgs, ToggleViewEventArgs } from '../../directives/toggle/toggle.directive';
55
import {
@@ -72,6 +72,7 @@ export abstract class BaseToolbarDirective implements OnDestroy {
7272
public columnToggle = new EventEmitter<IColumnToggledEventArgs>();
7373

7474
private $destroyer = new Subject<boolean>();
75+
private $sub: Subscription;
7576

7677
/**
7778
* Returns the grid containing this component.
@@ -89,7 +90,7 @@ export abstract class BaseToolbarDirective implements OnDestroy {
8990
/** @hidden @internal */
9091
public toggle(anchorElement: HTMLElement, toggleRef: IgxToggleDirective, actions?: IgxColumnActionsComponent): void {
9192
if (actions) {
92-
this._setupListeners(toggleRef);
93+
this._setupListeners(toggleRef, actions);
9394
const setHeight = () => actions.columnsAreaMaxHeight = this.columnListHeight ?? `${Math.max(this.grid.calcHeight, 200)}px`;
9495
toggleRef.onOpening.pipe(first()).subscribe(setHeight);
9596
}
@@ -103,7 +104,14 @@ export abstract class BaseToolbarDirective implements OnDestroy {
103104
columnActions.querySelector('input')?.focus();
104105
}
105106

106-
private _setupListeners(toggleRef: IgxToggleDirective) {
107+
private _setupListeners(toggleRef: IgxToggleDirective, actions? : IgxColumnActionsComponent) {
108+
if (actions){
109+
if (!this.$sub || this.$sub.closed){
110+
this.$sub = actions.onColumnToggled.subscribe((event) => this.columnToggle.emit(event));
111+
}else {
112+
this.$sub.unsubscribe();
113+
}
114+
}
107115
/** The if statement prevents emitting open and close events twice */
108116
if (toggleRef.collapsed) {
109117
toggleRef.onOpening.pipe(first(), takeUntil(this.$destroyer)).subscribe((event) => this.opening.emit(event));

0 commit comments

Comments
 (0)