Skip to content

Commit 81784d0

Browse files
authored
Merge branch 'master' into rkaraivanov/multi-column-headers
2 parents c385a1b + 66abd0c commit 81784d0

File tree

4 files changed

+171
-248
lines changed

4 files changed

+171
-248
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -854,12 +854,12 @@ describe('Column Hiding UI', () => {
854854
});
855855

856856
function getColumnChooserButton() {
857-
const button = fix.debugElement.queryAll(By.css('button')).find((b) => b.nativeElement.name === 'btnColumnChooser');
857+
const button = fix.debugElement.queryAll(By.css('button')).find((b) => b.nativeElement.name === 'btnColumnHiding');
858858
return button ? button.nativeElement : undefined;
859859
}
860860

861861
function getColumnChooserButtonIcon() {
862-
const button = fix.debugElement.queryAll(By.css('button')).find((b) => b.nativeElement.name === 'btnColumnChooser');
862+
const button = fix.debugElement.queryAll(By.css('button')).find((b) => b.nativeElement.name === 'btnColumnHiding');
863863
return button.query(By.css('igx-icon')).nativeElement;
864864
}
865865

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
<div class="igx-grid-toolbar__actions">
66

77
<div *ngIf="grid.columnHiding">
8-
<button igxButton="flat" name="btnColumnChooser" igxButton igxRipple
9-
(click)="columnHidingDropdown.toggle()">
8+
<button igxButton="flat" #columnHidingButton name="btnColumnHiding" igxButton igxRipple
9+
(click)="toggleColumnHidingUI()">
1010
<div class="igx-grid-toolbar__button-space">
1111
<igx-icon *ngIf="grid.hiddenColumnsCount > 0">visibility_off</igx-icon>
1212
<igx-icon *ngIf="grid.hiddenColumnsCount === 0">visibility</igx-icon>
@@ -32,13 +32,13 @@
3232
</span>
3333
</button>
3434

35-
<div igxToggle #directive="toggle" class="igx-filtering__options--to-left">
35+
<igx-drop-down #exportDropdown>
3636
<ul class="igx-grid-toolbar__dd-list">
3737
<li class="igx-grid-toolbar__dd-list-items" igxRipple *ngIf="shouldShowExportExcelButton" id="btnExportExcel"
3838
(click)="exportToExcelClicked()">{{ getExportExcelText() }}</li>
3939
<li class="igx-grid-toolbar__dd-list-items" igxRipple *ngIf="shouldShowExportCsvButton" id="btnExportCsv"
4040
(click)="exportToCsvClicked()">{{ getExportCsvText() }}</li>
4141
</ul>
42-
</div>
42+
</igx-drop-down>
4343
</div>
4444
</div>

projects/igniteui-angular/src/lib/grid/grid-toolbar.component.ts

Lines changed: 35 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ import {
44
HostBinding,
55
Input,
66
Optional,
7-
ViewChild
7+
ViewChild,
8+
ElementRef
89
} from '@angular/core';
910

1011
import { IgxToggleDirective } from '../directives/toggle/toggle.directive';
@@ -13,11 +14,14 @@ import { CsvFileTypes,
1314
IgxCsvExporterOptions,
1415
IgxCsvExporterService,
1516
IgxExcelExporterOptions,
16-
IgxExcelExporterService } from '../services/index';
17+
IgxExcelExporterService,
18+
CloseScrollStrategy} from '../services/index';
1719
import { IgxGridAPIService } from './api.service';
1820
import { IgxGridComponent } from './grid.component';
1921
import { IgxDropDownComponent } from '../drop-down/drop-down.component';
2022
import { IgxColumnHidingComponent } from './column-hiding.component';
23+
import { OverlaySettings, PositionSettings, HorizontalAlignment, VerticalAlignment } from '../services/overlay/utilities';
24+
import { ConnectedPositioningStrategy } from '../services/overlay/position';
2125

2226
@Component({
2327
selector: 'igx-grid-toolbar',
@@ -29,15 +33,21 @@ export class IgxGridToolbarComponent {
2933
@Input()
3034
public gridID: string;
3135

32-
@ViewChild(IgxToggleDirective, { read: IgxToggleDirective })
33-
protected toggleDirective: IgxToggleDirective;
34-
3536
@ViewChild('columnHidingDropdown', { read: IgxDropDownComponent })
3637
public columnHidingDropdown: IgxDropDownComponent;
3738

3839
@ViewChild(IgxColumnHidingComponent)
3940
public columnHidingUI: IgxColumnHidingComponent;
4041

42+
@ViewChild('columnHidingButton')
43+
public columnHidingButton;
44+
45+
@ViewChild('exportDropdown', { read: IgxDropDownComponent })
46+
public exportDropdown: IgxDropDownComponent;
47+
48+
@ViewChild('btnExport')
49+
public exportButton;
50+
4151
public get grid(): IgxGridComponent {
4252
return this.gridAPI.get(this.gridID);
4353
}
@@ -60,6 +70,21 @@ export class IgxGridToolbarComponent {
6070
@Optional() public csvExporter: IgxCsvExporterService) {
6171
}
6272

73+
private _positionSettings: PositionSettings = {
74+
horizontalDirection: HorizontalAlignment.Left,
75+
horizontalStartPoint: HorizontalAlignment.Right,
76+
verticalDirection: VerticalAlignment.Bottom,
77+
verticalStartPoint: VerticalAlignment.Bottom
78+
};
79+
80+
private _overlaySettings: OverlaySettings = {
81+
positionStrategy: new ConnectedPositioningStrategy(this._positionSettings),
82+
scrollStrategy: new CloseScrollStrategy(),
83+
modal: false,
84+
closeOnOutsideClick: true
85+
};
86+
87+
6388
public getTitle(): string {
6489
return this.grid != null ? this.grid.toolbarTitle : '';
6590
}
@@ -77,7 +102,9 @@ export class IgxGridToolbarComponent {
77102
}
78103

79104
public exportClicked() {
80-
this.toggleDirective.collapsed = !this.toggleDirective.collapsed;
105+
106+
this._overlaySettings.positionStrategy.settings.target = this.exportButton.nativeElement;
107+
this.exportDropdown.toggle(this._overlaySettings);
81108
}
82109

83110
public exportToExcelClicked() {
@@ -106,6 +133,7 @@ export class IgxGridToolbarComponent {
106133
}
107134

108135
public toggleColumnHidingUI() {
109-
this.columnHidingDropdown.toggle();
136+
this._overlaySettings.positionStrategy.settings.target = this.columnHidingButton.nativeElement;
137+
this.columnHidingDropdown.toggle(this._overlaySettings);
110138
}
111139
}

0 commit comments

Comments
 (0)