Skip to content

Commit 30f3761

Browse files
authored
Merge branch 'master' into change-cell-row-add
2 parents e75633e + ef0f4af commit 30f3761

31 files changed

+623
-252
lines changed

CHANGELOG.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,32 @@
33
All notable changes for each version of this project will be documented in this file.
44

55
## 12.1.0
6+
67
### New Features
8+
- `Toolbar Actions`
9+
- Exposed a new input property `overlaySettings` for all column actions (`hiding` | `pinning` | `advanced filtering` | `exporter`). Example below:
10+
11+
```html
12+
<igx-grid-toolbar-actions>
13+
<igx-grid-toolbar-pinning [overlaySettings]="overlaySettingsGlobal"></igx-grid-toolbar-pinning>
14+
<igx-grid-toolbar-hiding [overlaySettings]="overlaySettingsAuto"></igx-grid-toolbar-hiding>
15+
</igx-grid-toolbar-actions>
16+
```
717
- `Exporters`'s `columnExporting` event now supports changing the index of the column in the exported file.
18+
- `IgxPaginatorComponent`
19+
- Added `paging` and `pagingDone` events; `paging` event is cancellable and is emitted before pagination is performed, `pagingDone` event gives you information about the previous and the current page number and is not cancellable; Also `IgxPageSizeSelectorComponent` and `IgxPageNavigationComponent` are introduced and now the paginator components allows you to define a custom content, as it is shown in the example below:
20+
```html
21+
<igx-paginator #paginator>
22+
<igx-paginator-content>
23+
<igx-page-size></igx-page-size>
24+
<button [disabled]="paginator.isFirstPage" (click)="paginator.previousPage()">PREV</button>
25+
<span>Page {{paginator.page}} of {{paginator.totalPages}}</span>
26+
<button [disabled]="paginator.isLastPage" (click)="paginator.nextPage()">NEXT</button>
27+
</igx-paginator-content>
28+
</igx-paginator>
29+
```
30+
31+
- `Exporters`'s `columnExporting` event now supports changing the index of the column in the exported file.
832
```typescript
933
this.excelExporterService.columnExporting.subscribe((col) => {
1034
if (col.field === 'Index') {
@@ -13,6 +37,15 @@ All notable changes for each version of this project will be documented in this
1337
});
1438
```
1539
### General
40+
- `IgxPaginatorComponent`
41+
- Deprecated properties `selectLabel` and `prepositionPage` are now removed;
42+
- **Breaking Change** - the following properties are removed
43+
- `pagerEnabled`
44+
- `pagerHidden `
45+
- `dropdownEnabled`
46+
- `dropdownHidden`
47+
48+
1649
- **Breaking Change** - `IgxOverlayService` events are renamed as follows:
1750
- `onOpening` -> `opening`
1851
- `onOpened` -> `opened`

projects/igniteui-angular/src/lib/core/styles/components/paginator/_paginator-component.scss

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,40 +3,43 @@
33
/// @author <a href="https://github.com/simeonoff" target="_blank">Simeon Simeonoff</a>
44
////
55

6-
76
@include b(igx-paginator) {
87
$this: bem--selector-to-string(&);
98
@include register-component(str-slice($this, 2, -1));
109

1110
@extend %igx-paginator !optional;
1211

13-
@include e(label) {
14-
@extend %igx-paginator__label !optional;
12+
@include m(cosy) {
13+
@extend %igx-paginator !optional;
14+
@extend %igx-paginator--cosy !optional;
1515
}
1616

17-
@include e(select) {
18-
@extend %igx-paginator__select !optional;
17+
@include m(compact) {
18+
@extend %igx-paginator !optional;
19+
@extend %igx-paginator--compact !optional;
1920
}
21+
}
2022

21-
@include e(select-input) {
22-
@extend %igx-paginator__select-input !optional;
23-
}
23+
@include b(igx-page-nav) {
24+
@extend %igx-page-nav !optional;
2425

25-
@include e(pager) {
26-
@extend %igx-paginator__pager !optional;
26+
@include e(text) {
27+
@extend %igx-page-nav__text !optional;
2728
}
29+
}
2830

29-
@include e(pager-text) {
30-
@extend %igx-paginator__pager-text !optional;
31-
}
31+
@include b(igx-page-size) {
32+
@extend %igx-page-size !optional;
3233

33-
@include m(cosy) {
34-
@extend %igx-paginator !optional;
35-
@extend %igx-paginator--cosy !optional;
34+
@include e(label) {
35+
@extend %igx-page-size__label !optional;
3636
}
3737

38-
@include m(compact) {
39-
@extend %igx-paginator !optional;
40-
@extend %igx-paginator--compact !optional;
38+
@include e(select) {
39+
@extend %igx-page-size__select !optional;
4140
}
4241
}
42+
43+
@include b(igx-paginator-content) {
44+
@extend %igx-paginator-content !optional;
45+
}

projects/igniteui-angular/src/lib/core/styles/components/paginator/_paginator-theme.scss

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -107,20 +107,32 @@
107107
height: map-get($paginator-height, 'compact');
108108
}
109109

110-
111-
%igx-paginator__label {
112-
margin-#{$right}: 8px;
113-
@include ellipsis();
110+
%igx-paginator-content {
111+
display: flex;
112+
align-items: center;
113+
justify-content: space-between;
114+
width: 100%;
114115
}
115116

116-
%igx-paginator__select {
117+
%igx-page-size {
117118
display: flex;
118119
justify-content: flex-start;
119120
align-items: center;
120121
flex: 1;
121122
}
122123

123-
%igx-paginator__pager {
124+
%igx-page-size__label {
125+
margin-#{$right}: 8px;
126+
@include ellipsis();
127+
}
128+
129+
%igx-page-size__select {
130+
display: flex;
131+
max-width: 90px;
132+
min-width: 80px;
133+
}
134+
135+
%igx-page-nav {
124136
display: flex;
125137
justify-content: flex-end;
126138
align-items: center;
@@ -137,13 +149,7 @@
137149
}
138150
}
139151

140-
%igx-paginator__pager-text {
152+
%igx-page-nav__text {
141153
display: flex;
142154
}
143-
144-
%igx-paginator__select-input {
145-
display: flex;
146-
max-width: 90px;
147-
min-width: 80px;
148-
}
149155
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import {
1313
import { IgxColumnComponent } from '../columns/column.component';
1414
import { ColumnDisplayOrder } from '../common/enums';
1515
import { IgxColumnActionsBaseDirective } from './column-actions-base.directive';
16-
import { IgxCheckboxComponent, IChangeCheckboxEventArgs } from '../../checkbox/checkbox.component';
16+
import { IgxCheckboxComponent } from '../../checkbox/checkbox.component';
1717
import { IColumnToggledEventArgs } from '../common/events';
1818
import { IgxGridBaseDirective } from '../grid-base.directive';
1919
import { DeprecateProperty } from '../../core/deprecateDecorators';

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

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -69,15 +69,6 @@ export interface IPinColumnEventArgs extends IBaseEventArgs {
6969
*/
7070
export interface IPinColumnCancellableEventArgs extends IPinColumnEventArgs, CancelableEventArgs {
7171
}
72-
73-
/**
74-
* The event arguments after a page is changed.
75-
*/
76-
export interface IPageEventArgs extends IBaseEventArgs {
77-
previous: number;
78-
current: number;
79-
}
80-
8172
export interface IRowDataEventArgs extends IBaseEventArgs {
8273
data: any;
8374
}

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,6 @@ import {
119119
IRowSelectionEventArgs,
120120
IPinColumnEventArgs,
121121
IGridEditEventArgs,
122-
IPageEventArgs,
123122
IRowDataEventArgs,
124123
IColumnResizeEventArgs,
125124
IColumnMovingStartEventArgs,
@@ -159,6 +158,7 @@ import { IgxActionStripComponent } from '../action-strip/action-strip.component'
159158
import { DeprecateProperty } from '../core/deprecateDecorators';
160159
import { RowType } from './common/row.interface';
161160
import { IgxGridRowComponent } from './grid/grid-row.component';
161+
import { IPageEventArgs } from '../paginator/paginator_interfaces';
162162

163163
let FAKE_ROW_ID = -1;
164164

@@ -5914,20 +5914,21 @@ export abstract class IgxGridBaseDirective extends DisplayDensityBase implements
59145914
/**
59155915
* Opens the advanced filtering dialog.
59165916
*/
5917-
public openAdvancedFilteringDialog() {
5917+
public openAdvancedFilteringDialog(overlaySettings?: OverlaySettings) {
5918+
const settings = overlaySettings ? overlaySettings : this._advancedFilteringOverlaySettings;
59185919
if (!this._advancedFilteringOverlayId) {
59195920
this._advancedFilteringOverlaySettings.target =
59205921
(this as any).rootGrid ? (this as any).rootGrid.nativeElement : this.nativeElement;
59215922
this._advancedFilteringOverlaySettings.outlet = this.outlet;
59225923

59235924
this._advancedFilteringOverlayId = this.overlayService.attach(
59245925
IgxAdvancedFilteringDialogComponent,
5925-
this._advancedFilteringOverlaySettings,
5926+
settings,
59265927
{
59275928
injector: this.viewRef.injector,
59285929
componentFactoryResolver: this.resolver
59295930
});
5930-
this.overlayService.show(this._advancedFilteringOverlayId, this._advancedFilteringOverlaySettings);
5931+
this.overlayService.show(this._advancedFilteringOverlayId);
59315932
}
59325933
}
59335934

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

Lines changed: 55 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
import { Component } from '@angular/core';
1+
import { Component, ViewChild } from '@angular/core';
22
import { TestBed, fakeAsync, ComponentFixture } from '@angular/core/testing';
33
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
4-
import { IgxCsvExporterService, IgxExcelExporterService } from '../../services/public_api';
4+
import { AbsoluteScrollStrategy, GlobalPositionStrategy, IgxCsvExporterService, IgxExcelExporterService } from '../../services/public_api';
55
import { IgxGridModule } from './public_api';
66
import { configureTestSuite } from '../../test-utils/configure-suite';
7+
import { BaseToolbarColumnActionsDirective } from '../toolbar/grid-toolbar.base';
78

89

910
const TOOLBAR_TAG = 'igx-grid-toolbar';
@@ -154,6 +155,28 @@ describe('IgxGrid - Grid Toolbar #grid - ', () => {
154155
expect($('#excelEntry').textContent).toMatch(instance.customExcelText);
155156
expect($('#csvEntry').textContent).toMatch(instance.customCSVText);
156157
});
158+
159+
it('Setting overlaySettings for each toolbar columns action', () => {
160+
const defaultSettings = instance.pinningAction.overlaySettings;
161+
const defaultFiltSettings = instance.advancedFiltAction.overlaySettings;
162+
const defaultExportSettings = instance.exporterAction.overlaySettings;
163+
164+
instance.pinningAction.overlaySettings = instance.overlaySettings;
165+
instance.hidingAction.overlaySettings = instance.overlaySettings;
166+
fixture.detectChanges();
167+
168+
expect(defaultSettings).not.toEqual(instance.pinningAction.overlaySettings);
169+
expect(defaultSettings).not.toEqual(instance.hidingAction.overlaySettings);
170+
expect(defaultFiltSettings).toEqual(instance.advancedFiltAction.overlaySettings);
171+
expect(defaultExportSettings).toEqual(instance.exporterAction.overlaySettings);
172+
173+
instance.advancedFiltAction.overlaySettings = instance.overlaySettings;
174+
instance.exporterAction.overlaySettings = instance.overlaySettings;
175+
fixture.detectChanges();
176+
177+
expect(defaultFiltSettings).not.toEqual(instance.advancedFiltAction.overlaySettings);
178+
expect(defaultExportSettings).not.toEqual(instance.exporterAction.overlaySettings);
179+
});
157180
});
158181
});
159182

@@ -188,12 +211,12 @@ export class DefaultToolbarComponent {
188211
<igx-grid [data]="data" [autoGenerate]="true">
189212
<igx-grid-toolbar>
190213
<igx-grid-toolbar-actions>
191-
<igx-grid-toolbar-pinning></igx-grid-toolbar-pinning>
192-
<igx-grid-toolbar-hiding></igx-grid-toolbar-hiding>
193-
<igx-grid-toolbar-advanced-filtering>
214+
<igx-grid-toolbar-pinning #pinningAction></igx-grid-toolbar-pinning>
215+
<igx-grid-toolbar-hiding #hidingAction ></igx-grid-toolbar-hiding>
216+
<igx-grid-toolbar-advanced-filtering #advancedFiltAction>
194217
{{ advancedFilteringTitle }}
195218
</igx-grid-toolbar-advanced-filtering>
196-
<igx-grid-toolbar-exporter [exportCSV]="exportCSV" [exportExcel]="exportExcel" [filename]="exportFilename">
219+
<igx-grid-toolbar-exporter #exporterAction [exportCSV]="exportCSV" [exportExcel]="exportExcel" [filename]="exportFilename">
197220
{{ exporterText }}
198221
<span id="excelEntry" excelText>{{ customExcelText }}</span>
199222
<span id="csvEntry" csvText>{{ customCSVText }}</span>
@@ -204,14 +227,32 @@ export class DefaultToolbarComponent {
204227
`
205228
})
206229
export class ToolbarActionsComponent {
207-
data = [];
208-
advancedFilteringTitle = 'Custom button text';
209-
exportCSV = true;
210-
exportExcel = true;
211-
exportFilename = '';
212-
exporterText = 'Exporter Options';
213-
customExcelText = '<< Excel export >>';
214-
customCSVText = '<< CSV export >>';
230+
@ViewChild('pinningAction', {static: true})
231+
public pinningAction;
232+
233+
@ViewChild('hidingAction', {static: true})
234+
public hidingAction;
235+
236+
@ViewChild('advancedFiltAction', {static: true})
237+
public advancedFiltAction;
238+
239+
@ViewChild('exporterAction', {static: true})
240+
public exporterAction;
241+
242+
public data = [];
243+
public advancedFilteringTitle = 'Custom button text';
244+
public exportCSV = true;
245+
public exportExcel = true;
246+
public exportFilename = '';
247+
public exporterText = 'Exporter Options';
248+
public customExcelText = '<< Excel export >>';
249+
public customCSVText = '<< CSV export >>';
250+
public overlaySettings = {
251+
positionStrategy: new GlobalPositionStrategy(),
252+
scrollStrategy: new AbsoluteScrollStrategy(),
253+
modal: true,
254+
closeOnEscape: false
255+
};
215256

216257
constructor() {
217258
this.data = [...DATA];

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2205,7 +2205,7 @@ describe('IgxGrid Component Tests #grid', () => {
22052205
grid.cdr.detectChanges();
22062206
const headers = fix.debugElement.queryAll(By.css(COLUMN_HEADER_CLASS));
22072207
const gridBody = fix.debugElement.query(By.css(TBODY_CLASS));
2208-
const paging = fix.debugElement.query(By.css('.igx-paginator__pager'));
2208+
const paging = fix.debugElement.query(By.css('igx-page-nav'));
22092209
const summaries = fix.debugElement.queryAll(By.css('igx-grid-summary-cell'));
22102210
expect(headers.length).toBe(4);
22112211
expect(summaries.length).toBe(4);
@@ -2230,7 +2230,7 @@ describe('IgxGrid Component Tests #grid', () => {
22302230
grid.cdr.detectChanges();
22312231
const headers = fix.debugElement.queryAll(By.css(COLUMN_HEADER_CLASS));
22322232
const gridBody = fix.debugElement.query(By.css(TBODY_CLASS));
2233-
const paging = fix.debugElement.query(By.css('.igx-paginator__pager'));
2233+
const paging = fix.debugElement.query(By.css('igx-page-nav'));
22342234
expect(headers.length).toBe(4);
22352235
expect(parseInt(window.getComputedStyle(gridBody.nativeElement).height, 10)).toBe(204);
22362236
expect(parseInt(window.getComputedStyle(paging.nativeElement).height, 10)).toBe(36);

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ const verifyGridPager = (fix, rowsCount, firstCellValue, pagerText, buttonsVisib
1919
if (pagerText != null) {
2020
expect(grid.nativeElement.querySelector(PAGER_CLASS)).toBeDefined();
2121
expect(grid.nativeElement.querySelectorAll('igx-select').length).toEqual(1);
22-
expect(grid.nativeElement.querySelector('.igx-paginator__pager > div').textContent).toMatch(pagerText);
22+
expect(grid.nativeElement.querySelector('.igx-page-nav__text').textContent).toMatch(pagerText);
2323
}
2424
if (buttonsVisibility != null && buttonsVisibility.length === 4) {
2525
const pagingButtons = GridFunctions.getPagingButtons(grid.nativeElement);

projects/igniteui-angular/src/lib/grids/toolbar/grid-toolbar-advanced-filtering.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<button igxButton="outlined" [displayDensity]="grid.displayDensity" name="btnAdvancedFiltering" igxRipple
22
[title]="grid?.resourceStrings.igx_grid_toolbar_advanced_filtering_button_tooltip"
3-
(click)="grid.openAdvancedFilteringDialog()"
3+
(click)="grid.openAdvancedFilteringDialog(overlaySettings)"
44
[ngClass]="grid.advancedFilteringExpressionsTree ? 'igx-grid-toolbar__adv-filter--filtered' : 'igx-grid-toolbar__adv-filter'">
55
<igx-icon>filter_list</igx-icon>
66
<span #ref>

0 commit comments

Comments
 (0)