Skip to content

Commit 4dbf4e4

Browse files
committed
chore(*): adding checkbox toggle event
1 parent d0b862f commit 4dbf4e4

File tree

6 files changed

+69
-20
lines changed

6 files changed

+69
-20
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

23-
(change)="actionsDirective.toggleColumn(column)"
23+
(change)="toggleColumn($event, 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: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,15 @@ import {
55
ViewChildren,
66
QueryList,
77
DoCheck,
8-
KeyValueDiffers
8+
KeyValueDiffers,
9+
EventEmitter,
10+
Output
911
} from '@angular/core';
1012
import { IgxColumnComponent } from '../columns/column.component';
1113
import { ColumnDisplayOrder } from '../common/enums';
1214
import { IgxColumnActionsBaseDirective } from './column-actions-base.directive';
13-
import { IgxCheckboxComponent } from '../../checkbox/checkbox.component';
15+
import { IgxCheckboxComponent, IChangeCheckboxEventArgs } from '../../checkbox/checkbox.component';
16+
import { IColumnToggledEventArgs } from '../common/events';
1417

1518
let NEXT_ID = 0;
1619
/**
@@ -271,24 +274,14 @@ export class IgxColumnActionsComponent implements DoCheck {
271274
public indentation = 30;
272275

273276
/**
274-
* An event that is emitted after the columns visibility is changed.
275-
* Provides references to the `column` and the `newValue` properties as event arguments.
277+
* An event that is emitted after a column's checked state is changed.
278+
* Provides references to the `column` and the `checked` properties as event arguments.
276279
* ```html
277-
* <igx-column-hiding (onColumnVisibilityChanged) = "onColumnVisibilityChanged($event)"></igx-column-hiding>
280+
* <igx-column-actions (onColumnToggled)="onColumnToggled($event)"></igx-column-actions>
278281
* ```
279282
*/
280-
// @Output()
281-
// public onColumnVisibilityChanged = new EventEmitter<IColumnVisibilityChangedEventArgs>();
282-
283-
/**
284-
* Gets the count of the hidden columns.
285-
* ```typescript
286-
* let hiddenColumnsCount = this.columnHiding.hiddenColumnsCount;
287-
* ```
288-
*/
289-
// public get hiddenColumnsCount() {
290-
// return (this.columns) ? this.columns.filter((col) => col.hidden).length : 0;
291-
// }
283+
@Output()
284+
public onColumnToggled = new EventEmitter<IColumnToggledEventArgs>();
292285

293286
/**
294287
* @hidden @internal
@@ -406,4 +399,15 @@ export class IgxColumnActionsComponent implements DoCheck {
406399
public checkAllColumns() {
407400
this.actionsDirective.checkAll();
408401
}
402+
403+
/**
404+
* @hidden @internal
405+
*/
406+
public toggleColumn(event: IChangeCheckboxEventArgs, column: IgxColumnComponent) {
407+
this.onColumnToggled.emit({
408+
column: column,
409+
checked: event.checked
410+
});
411+
this.actionsDirective.toggleColumn(column);
412+
}
409413
}

projects/igniteui-angular/src/lib/grids/common/events.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,3 +162,14 @@ export interface IGridScrollEventArgs extends IBaseEventArgs {
162162
/** The new scroll position */
163163
scrollPosition: number;
164164
}
165+
166+
/**
167+
* Event emitted when a checkbox in the checkbox
168+
* list of an IgxColumnActions component is clicked.
169+
*/
170+
export interface IColumnToggledEventArgs extends IBaseEventArgs {
171+
/** The column that is toggled. */
172+
column: IgxColumnComponent;
173+
/** The checked state after the action. */
174+
checked: boolean;
175+
}

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

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,35 @@ describe('Column Hiding UI #grid', () => {
148148
verifyCheckbox('Released', false, false, columnChooserElement, fix);
149149
});
150150

151+
it('onColumnToggled event is fired on toggling checkboxes.', () => {
152+
spyOn(columnChooser.onColumnToggled, 'emit').and.callThrough();
153+
154+
GridFunctions.clickColumnChooserItem(columnChooserElement, 'ReleaseDate');
155+
156+
expect(columnChooser.onColumnToggled.emit).toHaveBeenCalledTimes(1);
157+
expect(columnChooser.onColumnToggled.emit).toHaveBeenCalledWith(
158+
{ column: grid.getColumnByName('ReleaseDate'), checked: undefined });
159+
160+
GridFunctions.clickColumnChooserItem(columnChooserElement, 'ReleaseDate');
161+
162+
expect(columnChooser.onColumnToggled.emit).toHaveBeenCalledTimes(2);
163+
expect(columnChooser.onColumnToggled.emit).toHaveBeenCalledWith(
164+
{ column: grid.getColumnByName('ReleaseDate'), checked: undefined });
165+
166+
GridFunctions.clickColumnChooserItem(columnChooserElement, 'Downloads');
167+
168+
expect(columnChooser.onColumnToggled.emit).toHaveBeenCalledTimes(3);
169+
expect(columnChooser.onColumnToggled.emit).toHaveBeenCalledWith(
170+
{ column: grid.getColumnByName('Downloads'), checked: undefined });
171+
172+
173+
GridFunctions.clickColumnChooserItem(columnChooserElement, 'Downloads');
174+
175+
expect(columnChooser.onColumnToggled.emit).toHaveBeenCalledTimes(4);
176+
expect(columnChooser.onColumnToggled.emit).toHaveBeenCalledWith(
177+
{ column: grid.getColumnByName('Downloads'), checked: undefined });
178+
});
179+
151180
it('does not show any items when all columns disabled is true.', () => {
152181
grid.columns.forEach((col) => col.disableHiding = true);
153182
fix.detectChanges();

src/app/grid-column-actions/grid-column-actions.sample.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ <h4>Hiding Action</h4>
1515
<igx-column-actions
1616
igxColumnHiding
1717
[columns]="grid1.columns"
18-
[title]="grid1.columnHidingTitle">
18+
[title]="grid1.columnHidingTitle"
19+
(onColumnToggled)="columnToggled($event)">
1920
</igx-column-actions>
2021
</div>
2122
</article>

src/app/grid-column-actions/grid-column-actions.sample.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Component, OnInit, ViewChild } from '@angular/core';
2-
import { IgxGridComponent } from 'igniteui-angular';
2+
import { IgxGridComponent, IColumnToggledEventArgs } from 'igniteui-angular';
33

44
@Component({
55
providers: [],
@@ -15,6 +15,10 @@ export class GridColumnActionsSampleComponent implements OnInit {
1515
data: any[];
1616
columns: any[];
1717

18+
columnToggled(event: IColumnToggledEventArgs) {
19+
console.log(event);
20+
}
21+
1822
ngOnInit(): void {
1923
this.columns = [
2024
{ field: 'ID', width: '200px', hidden: false },

0 commit comments

Comments
 (0)