Skip to content

Commit 6679c84

Browse files
authored
Merge branch '8.1.x' into ddimitrov/fix-5479-8.1.x
2 parents 8b1daad + 1d45e7f commit 6679c84

16 files changed

+315
-88
lines changed

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,14 @@ All notable changes for each version of this project will be documented in this
2626
```
2727
- `igx-paginator`
2828
- Replaces the current paginator in all grids. Can be used as a standalone component.
29+
<br/>Have in mind that if you have set the `paginationTemplate`, you may have to modify your css to display the pagination correctly. The style should be something similar to:
30+
```
31+
.pagination-container {
32+
display: flex;
33+
justify-content: center;
34+
align-items: center;
35+
}
36+
```
2937
- `IgxCombo`
3038
- Input `[overlaySettings]` - allows an object of type `OverlaySettings` to be passed. These custom overlay settings control how the drop-down list displays.
3139
- `IgxForOf` now offers usage of local variables `even`, `odd`, `first` and `last` to help with the distinction of the currently iterated element.

ROADMAP.md

Lines changed: 73 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -2,41 +2,82 @@
22

33
# Current Milestone
44

5-
## Milestone 8 (Due by July, 2019)
5+
## Milestone 9 (Due by September, 2019)
6+
7+
1. IgxGrid Advanced Filtering [#5496](https://github.com/IgniteUI/igniteui-angular/issues/5496)
8+
2. IgxGrid row and cell selection modes [#4989](https://github.com/IgniteUI/igniteui-angular/issues/4989)
9+
3. Fluent Theme [#5335](https://github.com/IgniteUI/igniteui-angular/issues/5335)
10+
4. Drag and Drop enhancements [#5319](https://github.com/IgniteUI/igniteui-angular/issues/5319)
11+
12+
## Going down the road
13+
14+
1. Row-pinning
15+
2. Column Groups expand/collapse, with column grouping templates
16+
3. Visual Cell merging
17+
18+
# Previous Milestones
19+
20+
## Milestone 8 (Released July 22nd, 2019)
621

722
1. **[DONE]** Grid Multi-Row Layout keyboard nav [#4708](https://github.com/IgniteUI/igniteui-angular/issues/4708) Released in [8.0.0](https://github.com/IgniteUI/igniteui-angular/releases/tag/8.0.0), [7.3.4](https://github.com/IgniteUI/igniteui-angular/releases/tag/7.3.4)
823
2. **[DONE]** Angular 8 compatibility [#4908](https://github.com/IgniteUI/igniteui-angular/issues/4908) Released in [8.0.0](https://github.com/IgniteUI/igniteui-angular/releases/tag/8.0.0)
924
3. **[DONE]** Display density for Drop Downs [#2960](https://github.com/IgniteUI/igniteui-angular/issues/2960) Released in [8.0.1](https://github.com/IgniteUI/igniteui-angular/releases/tag/8.0.1), [7.3.4](https://github.com/IgniteUI/igniteui-angular/releases/tag/7.3.4), [7.2.12](https://github.com/IgniteUI/igniteui-angular/releases/tag/7.2.12)
10-
4. Slider custom labels #4594
11-
5. Copy data from the igxGrid #4907
12-
6. BottomNav and Tabs integration with router outlet container [#4297](https://github.com/IgniteUI/igniteui-angular/issues/4297)
25+
4. **[DONE]** Slider custom labels [#4594](https://github.com/IgniteUI/igniteui-angular/issues/4594)
26+
5. **[DONE]** Copy data from the igxGrid [#4907](https://github.com/IgniteUI/igniteui-angular/issues/4907)
27+
6. **[DONE]** BottomNav and Tabs integration with router outlet container [#4297](https://github.com/IgniteUI/igniteui-angular/issues/4297)
1328
7. **[DONE]** Date/Time pickers action buttons customization [#4647](https://github.com/IgniteUI/igniteui-angular/issues/4647) Released in [8.0.0](https://github.com/IgniteUI/igniteui-angular/releases/tag/8.0.0)
1429
8. **[DONE]** Square and oval presets in theming [#4964](https://github.com/IgniteUI/igniteui-angular/issues/4964) Released in [8.0.0](https://github.com/IgniteUI/igniteui-angular/releases/tag/8.0.0)
15-
9. Grid column group header templates [#3344](https://github.com/IgniteUI/igniteui-angular/issues/3344)
30+
9. **[DONE]** Grid column group header templates [#3344](https://github.com/IgniteUI/igniteui-angular/issues/3344)
1631

32+
## Milestone 7 (13.05.2019)
1733

18-
## Going down the road
34+
1. **[DONE]** Multi-cell Selection #3915
35+
2. **[DONE]** Grid Multi-Row Layout #4384
36+
3. **[DONE]** Grid Row Dragging #3993
37+
3. **[DONE]** List, button, button group display density support #4393 #4502 #4532
1938

20-
1. Advanced Filtering
21-
2. Row-pinning
22-
3. Column Groups expand/collapse, with column grouping templates
23-
4. Visual Cell merging
39+
## Milestone 6 (Due March 8th, 2019)
2440

41+
1. **[DONE]** Hierarchical Grid #827
42+
2. **[DROPPED]** igxGrid rendering strategies (like record-based rendering) #2384
43+
3. **[DONE]** Auto-complete (inline editable) #3585
44+
4. **[DONE]** Excel Style Filtering #3592
45+
5. **[DONE]** Inline date and time pickers (with drop down/toggle) #3034 #2337
46+
6. **[DONE]** igxSelect Component #3148
2547

26-
# Previous Milestones
48+
## Milestone 5 (14.12.2018)
2749

28-
## Milestone 1 (by January 15th, 2018)
50+
1. **[DONE]** TreeGrid summaries
51+
2. **[DONE]** Grid GroupBy summaries
52+
3. **[DONE]** Banner Component [issue](https://github.com/IgniteUI/igniteui-angular/issues/2672)
53+
4. **[DONE]** Toolbar Templatable and NavBar Templatable
54+
55+
## Milestone 4 (November 30th, 2018)
56+
57+
1. **[Done]** Tree Grid [issue](https://github.com/IgniteUI/igniteui-angular/issues/2530)
58+
2. **[Done]** Quick Per-column Search in the igxGrid [issue](https://github.com/IgniteUI/igniteui-angular/issues/542)
59+
3. **[Done]** Expandable Panel [issue](https://github.com/IgniteUI/igniteui-angular/issues/307)
60+
4. **[Done]** Conditional Cell Styling capability [issue](https://github.com/IgniteUI/igniteui-angular/issues/1079)
61+
5. **[Done]** igxTypography for theming
62+
6. **[Done]** Tooltip [issue](https://github.com/IgniteUI/igniteui-angular/issues/1710)
63+
7. **[Removed]** Vertical Tabs - material doesn't define vertical tabs
64+
8. **[Done]** Row Editing with transactions (Batch editing) [issue](https://github.com/IgniteUI/igniteui-angular/issues/566)
65+
9. **[Done]** Adding Disabled Dates and Special Dates options in igxCalander [issue](https://github.com/IgniteUI/igniteui-angular/issues/1980)
66+
10. **[Done]** Drag and Drop Directive
67+
68+
## Milestone 3 (by July 6th, 2018)
69+
70+
1. **[DONE]** Grouping
71+
2. **[DONE]** Grid Multi-column Headers [issue](https://github.com/IgniteUI/igniteui-angular/issues/488)
72+
3. **[DONE]** Combo
73+
4. **[DONE]** Column Hiding UI
74+
5. **[DONE]** Operations UI - column chooser
75+
6. **[DONE]** Advanced Filtering
76+
7. **[DONE]** Column Moving
77+
8. **[DONE]** Update to Angular 6
78+
9. **[DONE]** Design: Release Updated Design System (Sketch UI kits, UI patterns, screens, documentation)
79+
10. **[DONE]** Design: Data dense theme for data grid
2980

30-
1. **[DONE]** Row objects - 1st sprint (by November 20th, 2017) [issue](https://github.com/IgniteUI/igniteui-angular/issues/479)
31-
In order to implement virtualization in the Grid, we would need a row object to be abstracted.
32-
2. **[DONE]** Cell objects - 2nd sprint (by December 11th, 2017) [issue](https://github.com/IgniteUI/igniteui-angular/issues/480)
33-
3. **[DONE]** Grid Row virtualization - after row objects and virtualization are implemented
34-
4. **[DONE]** Grid Column virtualization - after row objects and column component refactoring are done
35-
This feature enables Grid columns to be virtualized. The feature splits records into parts, and only a certain part of the record is rendered.
36-
5. **[DONE]** Alternating row style [issue](https://github.com/IgniteUI/igniteui-angular/issues/489)
37-
6. **[DONE]** Ignite UI CLI integration [issue](https://github.com/IgniteUI/ignite-ui-cli/issues/53)
38-
Ignite UI CLI will also provide Ignite UI for Angular templates, views, and components integration. All features of the CLI will be accessible in the context of Ignite UI for Angular, as well as the full Ignite UI product suite.
39-
4081
## Milestone 2 (due April 25th, 2018)
4182

4283
1. **[DONE]** Expanding Ignite UI CLI views and templates with Ignite UI for Angular
@@ -57,52 +98,14 @@
5798
13. **[DONE]** Charting: Category Chart types Line (Area, Column, Point, StepLine, StepArea, Spline, SplineArea, Waterfall
5899
14. **[DONE]** Charting: Financial Chart types
59100

101+
## Milestone 1 (by January 15th, 2018)
60102

61-
## Milestone 3 (by July 6th, 2018)
62-
63-
1. **[DONE]** Grouping
64-
2. **[DONE]** Grid Multi-column Headers [issue](https://github.com/IgniteUI/igniteui-angular/issues/488)
65-
3. **[DONE]** Combo
66-
4. **[DONE]** Column Hiding UI
67-
5. **[DONE]** Operations UI - column chooser
68-
6. **[DONE]** Advanced Filtering
69-
7. **[DONE]** Column Moving
70-
8. **[DONE]** Update to Angular 6
71-
9. **[DONE]** Design: Release Updated Design System (Sketch UI kits, UI patterns, screens, documentation)
72-
10. **[DONE]** Design: Data dense theme for data grid
73-
74-
## Milestone 4 (November 30th, 2018)
75-
76-
1. **[Done]** Tree Grid [issue](https://github.com/IgniteUI/igniteui-angular/issues/2530)
77-
2. **[Done]** Quick Per-column Search in the igxGrid [issue](https://github.com/IgniteUI/igniteui-angular/issues/542)
78-
3. **[Done]** Expandable Panel [issue](https://github.com/IgniteUI/igniteui-angular/issues/307)
79-
4. **[Done]** Conditional Cell Styling capability [issue](https://github.com/IgniteUI/igniteui-angular/issues/1079)
80-
5. **[Done]** igxTypography for theming
81-
6. **[Done]** Tooltip [issue](https://github.com/IgniteUI/igniteui-angular/issues/1710)
82-
7. **[Removed]** Vertical Tabs - material doesn't define vertical tabs
83-
8. **[Done]** Row Editing with transactions (Batch editing) [issue](https://github.com/IgniteUI/igniteui-angular/issues/566)
84-
9. **[Done]** Adding Disabled Dates and Special Dates options in igxCalander [issue](https://github.com/IgniteUI/igniteui-angular/issues/1980)
85-
10. **[Done]** Drag and Drop Directive
86-
87-
## Milestone 5 (14.12.2018)
88-
89-
1. **[DONE]** TreeGrid summaries
90-
2. **[DONE]** Grid GroupBy summaries
91-
3. **[DONE]** Banner Component [issue](https://github.com/IgniteUI/igniteui-angular/issues/2672)
92-
4. **[DONE]** Toolbar Templatable and NavBar Templatable
93-
94-
## Milestone 6 (Due March 8th, 2019)
95-
96-
1. **[DONE]** Hierarchical Grid #827
97-
2. **[DROPPED]** igxGrid rendering strategies (like record-based rendering) #2384
98-
3. **[DONE]** Auto-complete (inline editable) #3585
99-
4. **[DONE]** Excel Style Filtering #3592
100-
5. **[DONE]** Inline date and time pickers (with drop down/toggle) #3034 #2337
101-
6. **[DONE]** igxSelect Component #3148
102-
103-
## Milestone 7 (13.05.2019)
104-
105-
1. **[DONE]** Multi-cell Selection #3915
106-
2. **[DONE]** Grid Multi-Row Layout #4384
107-
3. **[DONE]** Grid Row Dragging #3993
108-
3. **[DONE]** List, button, button group display density support #4393 #4502 #4532
103+
1. **[DONE]** Row objects - 1st sprint (by November 20th, 2017) [issue](https://github.com/IgniteUI/igniteui-angular/issues/479)
104+
In order to implement virtualization in the Grid, we would need a row object to be abstracted.
105+
2. **[DONE]** Cell objects - 2nd sprint (by December 11th, 2017) [issue](https://github.com/IgniteUI/igniteui-angular/issues/480)
106+
3. **[DONE]** Grid Row virtualization - after row objects and virtualization are implemented
107+
4. **[DONE]** Grid Column virtualization - after row objects and column component refactoring are done
108+
This feature enables Grid columns to be virtualized. The feature splits records into parts, and only a certain part of the record is rendered.
109+
5. **[DONE]** Alternating row style [issue](https://github.com/IgniteUI/igniteui-angular/issues/489)
110+
6. **[DONE]** Ignite UI CLI integration [issue](https://github.com/IgniteUI/ignite-ui-cli/issues/53)
111+
Ignite UI CLI will also provide Ignite UI for Angular templates, views, and components integration. All features of the CLI will be accessible in the context of Ignite UI for Angular, as well as the full Ignite UI product suite.

projects/igniteui-angular/src/lib/directives/for-of/for_of.directive.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -679,7 +679,7 @@ export class IgxForOfDirective<T> implements OnInit, OnChanges, DoCheck, OnDestr
679679

680680
const containerSize = parseInt(this.igxForContainerSize, 10);
681681
const maxRealScrollTop = event.target.children[0].scrollHeight - containerSize;
682-
const realPercentScrolled = event.target.scrollTop / maxRealScrollTop;
682+
const realPercentScrolled = maxRealScrollTop !== 0 ? event.target.scrollTop / maxRealScrollTop : 0;
683683
if (!this._bScrollInternal) {
684684
const maxVirtScrollTop = this._virtHeight - containerSize;
685685
this._virtScrollTop = realPercentScrolled * maxVirtScrollTop;
@@ -1512,7 +1512,7 @@ export class IgxGridForOfDirective<T> extends IgxForOfDirective<T> implements On
15121512

15131513
const containerSize = parseInt(this.igxForContainerSize, 10);
15141514
const maxRealScrollTop = event.target.children[0].scrollHeight - containerSize;
1515-
const realPercentScrolled = event.target.scrollTop / maxRealScrollTop;
1515+
const realPercentScrolled = maxRealScrollTop !== 0 ? event.target.scrollTop / maxRealScrollTop : 0;
15161516
if (!this._bScrollInternal) {
15171517
const maxVirtScrollTop = this._virtHeight - containerSize;
15181518
this._virtScrollTop = realPercentScrolled * maxVirtScrollTop;

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

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -566,7 +566,7 @@ export abstract class IgxGridBaseComponent extends DisplayDensityBase implements
566566

567567
@Input()
568568
get rowDraggable(): boolean {
569-
return this._rowDrag;
569+
return this._rowDrag && this.hasVisibleColumns;
570570
}
571571

572572
/**
@@ -2500,6 +2500,10 @@ export abstract class IgxGridBaseComponent extends DisplayDensityBase implements
25002500
* @hidden
25012501
*/
25022502
protected _wheelListener = null;
2503+
/**
2504+
* @hidden
2505+
*/
2506+
protected _hasVisibleColumns;
25032507
protected _allowFiltering = false;
25042508
protected _filterMode = FilterMode.quickFilter;
25052509
private resizeHandler;
@@ -2777,6 +2781,7 @@ export abstract class IgxGridBaseComponent extends DisplayDensityBase implements
27772781
this.resetColumnsCaches();
27782782
this.resetColumnCollections();
27792783
this.resetCachedWidths();
2784+
this.hasVisibleColumns = undefined;
27802785
this._columnGroups = this.columnList.some(col => col.columnGroup);
27812786
}
27822787

@@ -3313,7 +3318,7 @@ export abstract class IgxGridBaseComponent extends DisplayDensityBase implements
33133318
}
33143319

33153320
get showRowCheckboxes(): boolean {
3316-
return this.rowSelectable && this.columns.length > this.hiddenColumnsCount;
3321+
return this.rowSelectable && this.hasVisibleColumns;
33173322
}
33183323

33193324
/**
@@ -3939,6 +3944,20 @@ export abstract class IgxGridBaseComponent extends DisplayDensityBase implements
39393944
get rootSummariesEnabled(): boolean {
39403945
return this.summaryCalculationMode !== GridSummaryCalculationMode.childLevelsOnly;
39413946
}
3947+
3948+
/**
3949+
* @hidden
3950+
*/
3951+
get hasVisibleColumns(): boolean {
3952+
if (this._hasVisibleColumns === undefined) {
3953+
return this.columnList ? this.columnList.some(c => !c.hidden) : false;
3954+
}
3955+
return this._hasVisibleColumns;
3956+
}
3957+
3958+
set hasVisibleColumns(value) {
3959+
this._hasVisibleColumns = value;
3960+
}
39423961
/**
39433962
* Returns if the `IgxGridComponent` has moveable columns.
39443963
* ```typescript
@@ -4630,7 +4649,7 @@ export abstract class IgxGridBaseComponent extends DisplayDensityBase implements
46304649
* @hidden
46314650
*/
46324651
public updateHeaderCheckboxStatusOnFilter(data) {
4633-
if (!data) {
4652+
if (!data || !this.hasVisibleColumns || !this.headerCheckbox) {
46344653
this.checkHeaderCheckboxStatus();
46354654
return;
46364655
}

projects/igniteui-angular/src/lib/grids/grid-common.pipes.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,3 +98,17 @@ export class IgxGridPaginatorOptionsPipe implements PipeTransform {
9898
return Array.from(new Set([...values])).sort((a, b) => a - b);
9999
}
100100
}
101+
102+
@Pipe({
103+
name: 'visibleColumns',
104+
pure: true
105+
})
106+
export class IgxHasVisibleColumnsPipe implements PipeTransform {
107+
transform(values: any[], hasVisibleColumns) {
108+
if (!(values && values.length)) {
109+
return values;
110+
}
111+
return hasVisibleColumns ? values : [];
112+
}
113+
114+
}

projects/igniteui-angular/src/lib/grids/grid-pipes.module.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ import {
77
IgxGridNotGroupedPipe,
88
IgxGridTopLevelColumns,
99
IgxGridCellStylesPipe,
10-
IgxGridPaginatorOptionsPipe
10+
IgxGridPaginatorOptionsPipe,
11+
IgxHasVisibleColumnsPipe
1112
} from './grid-common.pipes';
1213

1314
@NgModule({
@@ -19,7 +20,8 @@ import {
1920
IgxGridNotGroupedPipe,
2021
IgxGridTopLevelColumns,
2122
IgxGridCellStylesPipe,
22-
IgxGridPaginatorOptionsPipe
23+
IgxGridPaginatorOptionsPipe,
24+
IgxHasVisibleColumnsPipe
2325
],
2426
exports: [
2527
IgxDatePipeComponent,
@@ -29,7 +31,8 @@ import {
2931
IgxGridNotGroupedPipe,
3032
IgxGridTopLevelColumns,
3133
IgxGridCellStylesPipe,
32-
IgxGridPaginatorOptionsPipe
34+
IgxGridPaginatorOptionsPipe,
35+
IgxHasVisibleColumnsPipe
3336
],
3437
imports: [
3538
CommonModule

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

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import { ColumnHidingTestComponent, ColumnGroupsHidingTestComponent } from '../.
1313
import { UIInteractions, wait } from '../../test-utils/ui-interactions.spec';
1414
import { GridFunctions } from '../../test-utils/grid-functions.spec';
1515
import { HelperUtils } from '../../test-utils/helper-utils.spec';
16-
16+
import { SortingDirection } from '../../data-operations/sorting-expression.interface';
1717
import { configureTestSuite } from '../../test-utils/configure-suite';
1818
import { take } from 'rxjs/internal/operators/take';
1919

@@ -588,6 +588,53 @@ describe('Column Hiding UI', () => {
588588
expect(getButtonDisabledState('Hide All')).toBe(false, 'Hide All is not enabled!');
589589
}));
590590

591+
it('- When Hide All columns no rows should be rendered', fakeAsync(() => {
592+
grid.rowSelectable = true;
593+
grid.paging = true;
594+
grid.rowDraggable = true;
595+
tick(30);
596+
fix.detectChanges();
597+
598+
grid.groupBy({
599+
fieldName: 'Released', dir: SortingDirection.Desc, ignoreCase: false
600+
});
601+
fix.detectChanges();
602+
603+
let fixEl = fix.nativeElement, gridEl = grid.nativeElement;
604+
let tHeadItems = fixEl.querySelector('igx-grid-header-group');
605+
let gridRows = fixEl.querySelector('igx-grid-row');
606+
let paging = fixEl.querySelector('.igx-grid-paginator');
607+
let rowSelectors = gridEl.querySelector('.igx-checkbox');
608+
let dragIndicators = gridEl.querySelector('.igx-grid__drag-indicator');
609+
let verticalScrollBar = gridEl.querySelector('.igx-grid__tbody-scrollbar[hidden]');
610+
611+
expect(tHeadItems).not.toBeNull();
612+
expect(gridRows).not.toBeNull();
613+
expect(paging).not.toBeNull();
614+
expect(rowSelectors).not.toBeNull();
615+
expect(dragIndicators).not.toBeNull();
616+
expect(verticalScrollBar).toBeNull();
617+
618+
grid.columnList.forEach((col) => col.hidden = true);
619+
tick(30);
620+
fix.detectChanges();
621+
fixEl = fix.nativeElement, gridEl = grid.nativeElement;
622+
623+
tHeadItems = fixEl.querySelector('igx-grid-header-group');
624+
gridRows = fixEl.querySelector('igx-grid-row');
625+
paging = fixEl.querySelector('.igx-grid-paginator');
626+
rowSelectors = gridEl.querySelector('.igx-checkbox');
627+
dragIndicators = gridEl.querySelector('.igx-grid__drag-indicator');
628+
verticalScrollBar = gridEl.querySelector('.igx-grid__tbody-scrollbar[hidden]');
629+
630+
expect(tHeadItems).toBeNull();
631+
expect(gridRows).toBeNull();
632+
expect(paging).toBeNull();
633+
expect(rowSelectors).toBeNull();
634+
expect(dragIndicators).toBeNull();
635+
expect(verticalScrollBar).not.toBeNull();
636+
}));
637+
591638
it('- Show All button operates over the filtered in columns only', (async () => {
592639
grid.columns[1].disableHiding = false;
593640
columnChooser.hideAllColumns();

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -953,10 +953,8 @@ describe('IgxGrid - Row Selection', () => {
953953

954954
grid.columns.forEach(c => c.hidden = true);
955955
fix.detectChanges();
956-
headerCheck = fix.nativeElement.querySelector('.igx-grid__thead').querySelector('.igx-checkbox__input');
957-
rowCheck = grid.getRowByIndex(0).nativeElement.querySelector('.igx-checkbox__input');
956+
headerCheck = fix.nativeElement.querySelector('.igx-checkbox__input');
958957
expect(headerCheck).toBeNull();
959-
expect(rowCheck).toBeNull();
960958

961959
grid.columns.forEach(c => c.hidden = false);
962960
fix.detectChanges();

0 commit comments

Comments
 (0)