Skip to content

Commit 3f59ea3

Browse files
committed
refactor(grid): continue refactoring shared code
1 parent 45c25e7 commit 3f59ea3

26 files changed

+441
-394
lines changed

projects/igniteui-angular/src/lib/grid-common/api.service.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { IFilteringExpression, FilteringLogic } from '../data-operations/filteri
55
import { ISortingExpression, SortingDirection } from '../data-operations/sorting-expression.interface';
66
import { IgxGridCellComponent } from './cell.component';
77
import { IgxColumnComponent } from './column.component';
8-
import { IgxGridRowComponent } from '../grid/row.component';
8+
import { IgxRowBaseComponent } from './row-base.component';
99
import { IFilteringOperation, FilteringExpressionsTree, IFilteringExpressionsTree } from '../../public_api';
1010
import { IGridEditEventArgs, IGridComponent } from './grid-interfaces';
1111

@@ -106,7 +106,7 @@ export abstract class IGridAPIService <T extends IGridComponent> {
106106
}
107107
}
108108

109-
public get_row_by_key(id: string, rowSelector: any): IgxGridRowComponent {
109+
public get_row_by_key(id: string, rowSelector: any): IgxRowBaseComponent<IGridComponent> {
110110
const primaryKey = this.get(id).primaryKey;
111111
if (primaryKey !== undefined && primaryKey !== null) {
112112
return this.get(id).dataRowList.find((row) => row.rowData[primaryKey] === rowSelector);
@@ -115,7 +115,7 @@ export abstract class IGridAPIService <T extends IGridComponent> {
115115
}
116116
}
117117

118-
public get_row_by_index(id: string, rowIndex: number): IgxGridRowComponent {
118+
public get_row_by_index(id: string, rowIndex: number): IgxRowBaseComponent<IGridComponent> {
119119
return this.get(id).rowList.find((row) => row.index === rowIndex);
120120
}
121121

projects/igniteui-angular/src/lib/grid/column-chooser-base.ts renamed to projects/igniteui-angular/src/lib/grid-common/column-hiding/column-chooser-base.ts

+4-5
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
import { ChangeDetectorRef, HostBinding, Input, OnDestroy } from '@angular/core';
2-
import { DataUtil } from '../data-operations/data-util';
3-
import { IgxStringFilteringOperand } from '../data-operations/filtering-condition';
4-
import { FilteringExpressionsTree, IFilteringExpressionsTree } from '../data-operations/filtering-expressions-tree';
5-
import { FilteringLogic, IFilteringExpression } from '../data-operations/filtering-expression.interface';
6-
import { FilteringStrategy } from '../data-operations/filtering-strategy';
2+
import { IgxStringFilteringOperand } from '../../data-operations/filtering-condition';
3+
import { FilteringExpressionsTree, IFilteringExpressionsTree } from '../../data-operations/filtering-expressions-tree';
4+
import { FilteringLogic, IFilteringExpression } from '../../data-operations/filtering-expression.interface';
5+
import { FilteringStrategy } from '../../data-operations/filtering-strategy';
76
import { ColumnChooserItemBase } from './column-chooser-item-base';
87

98
export enum ColumnDisplayOrder {

projects/igniteui-angular/src/lib/grid/column-hiding.component.ts renamed to projects/igniteui-angular/src/lib/grid-common/column-hiding/column-hiding.component.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ import {
88
Output
99
} from '@angular/core';
1010
import { FormsModule } from '@angular/forms';
11-
import { IgxCheckboxModule } from '../checkbox/checkbox.component';
12-
import { IgxButtonModule } from '../directives/button/button.directive';
11+
import { IgxCheckboxModule } from '../../checkbox/checkbox.component';
12+
import { IgxButtonModule } from '../../directives/button/button.directive';
1313
import { IColumnVisibilityChangedEventArgs, IgxColumnHidingItemDirective } from './column-hiding-item.directive';
14-
import { IgxInputGroupModule } from '../input-group/input-group.component';
14+
import { IgxInputGroupModule } from '../../input-group/input-group.component';
1515
import { ColumnChooserBase } from './column-chooser-base';
1616

1717
@Component({

projects/igniteui-angular/src/lib/grid-common/column.component.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ import { DataType } from '../data-operations/data-util';
1717
import { IgxTextHighlightDirective } from '../directives/text-highlight/text-highlight.directive';
1818
import { IGridAPIService } from './api.service';
1919
import { IgxGridCellComponent } from './cell.component';
20-
import { IgxDateSummaryOperand, IgxNumberSummaryOperand, IgxSummaryOperand } from '../grid/grid-summary';
21-
import { IgxGridRowComponent } from '../grid/row.component';
20+
import { IgxDateSummaryOperand, IgxNumberSummaryOperand, IgxSummaryOperand } from './grid-summary';
21+
import { IgxRowBaseComponent } from './row-base.component';
2222
import {
2323
IgxCellEditorTemplateDirective,
2424
IgxCellFooterTemplateDirective,
@@ -599,7 +599,7 @@ export class IgxColumnComponent implements AfterContentInit {
599599
* @memberof IgxColumnComponent
600600
*/
601601
get cells(): IgxGridCellComponent[] {
602-
return this.grid.rowList.filter((row) => row instanceof IgxGridRowComponent)
602+
return this.grid.rowList.filter((row) => row instanceof IgxRowBaseComponent)
603603
.map((row) => row.cells.filter((cell) => cell.columnIndex === this.index))
604604
.reduce((a, b) => a.concat(b), []);
605605
}

projects/igniteui-angular/src/lib/grid/grid-filtering-expression.component.ts renamed to projects/igniteui-angular/src/lib/grid-common/grid-filtering-expression.component.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ import {
1616
} from '@angular/core';
1717
import { Subject } from 'rxjs';
1818
import { DataType } from '../data-operations/data-util';
19-
import { IgxGridAPIService } from '../grid-common/api.service';
20-
import { IgxColumnComponent } from '../grid-common/column.component';
19+
import { IGridAPIService } from './api.service';
20+
import { IGridComponent } from './grid-interfaces';
2121
import { IFilteringExpression } from '../data-operations/filtering-expression.interface';
2222
import { FilteringExpressionsTree } from '../data-operations/filtering-expressions-tree';
2323
import { IFilteringOperation } from '../data-operations/filtering-condition';
@@ -87,7 +87,7 @@ export class IgxGridFilterExpressionComponent implements OnInit, OnDestroy, Afte
8787
protected unaryConditionChanged = new Subject();
8888
protected _value = null;
8989

90-
constructor(private zone: NgZone, public gridAPI: IgxGridAPIService, public cdr: ChangeDetectorRef) {
90+
constructor(private zone: NgZone, public gridAPI: IGridAPIService<IGridComponent>, public cdr: ChangeDetectorRef) {
9191
this.unaryConditionChanged.subscribe(() => this.unaryConditionChangedCallback());
9292
this.conditionChanged.subscribe(() => this.conditionChangedCallback());
9393
}

projects/igniteui-angular/src/lib/grid/grid-filtering.component.ts renamed to projects/igniteui-angular/src/lib/grid-common/grid-filtering.component.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ import {
1717
import { Subject, Subscription } from 'rxjs';
1818
import { DataType } from '../data-operations/data-util';
1919
import { IgxToggleDirective, IgxOverlayOutletDirective } from '../directives/toggle/toggle.directive';
20-
import { IgxGridAPIService } from '../grid-common/api.service';
21-
import { IgxColumnComponent } from '../grid-common/column.component';
20+
import { IGridAPIService } from './api.service';
21+
import { IGridComponent } from './grid-interfaces';
2222
import { FilteringExpressionsTree } from '../data-operations/filtering-expressions-tree';
2323
import { IgxButtonGroupComponent } from '../buttonGroup/buttonGroup.component';
2424
import { IgxGridFilterExpressionComponent } from './grid-filtering-expression.component';
@@ -85,7 +85,7 @@ export class IgxGridFilterComponent implements OnInit, OnDestroy, DoCheck {
8585
@ViewChild('logicOperators', { read: IgxButtonGroupComponent })
8686
protected logicOperators: IgxButtonGroupComponent;
8787

88-
constructor(public gridAPI: IgxGridAPIService, public cdr: ChangeDetectorRef, private elementRef: ElementRef) {
88+
constructor(public gridAPI: IGridAPIService<IGridComponent>, public cdr: ChangeDetectorRef, private elementRef: ElementRef) {
8989

9090
this.filteringLogicOptions = [
9191
{

projects/igniteui-angular/src/lib/grid-common/grid-interfaces.ts

+53-11
Original file line numberDiff line numberDiff line change
@@ -4,27 +4,32 @@ import {
44
EventEmitter
55
} from '@angular/core';
66

7+
import { IgxOverlayOutletDirective } from '../directives/toggle/toggle.directive';
8+
79
import { ISortingExpression } from '../data-operations/sorting-expression.interface';
810
import { IFilteringExpressionsTree } from '../data-operations/filtering-expressions-tree';
11+
import { IFilteringOperation } from '../data-operations/filtering-condition';
912

1013
import { IgxGridCellComponent } from './cell.component';
1114
import { IgxColumnComponent } from './column.component';
1215
import { IgxGridHeaderComponent } from './grid-header.component';
13-
import { IgxGridRowComponent } from '../grid/row.component';
16+
import { IgxRowBaseComponent } from './row-base.component';
1417

1518
import { IgxBaseExporter, IgxExporterOptionsBase } from '../services/index';
1619
import { IgxForOfDirective } from '../directives/for-of/for_of.directive';
1720

1821
import { DisplayDensity } from '../core/utils';
1922
import { IgxSelectionAPIService } from '../core/selection';
2023

24+
import { IColumnVisibilityChangedEventArgs } from './column-hiding/column-hiding-item.directive';
25+
2126
export interface IGridCellEventArgs {
2227
cell: IgxGridCellComponent;
2328
event: Event;
2429
}
2530

2631
export interface IGridEditEventArgs {
27-
row: IgxGridRowComponent;
32+
row: IgxRowBaseComponent<IGridComponent>;
2833
cell: IgxGridCellComponent;
2934
currentValue: any;
3035
newValue: any;
@@ -53,7 +58,7 @@ export interface IColumnResizeEventArgs {
5358
export interface IRowSelectionEventArgs {
5459
oldSelection: any[];
5560
newSelection: any[];
56-
row?: IgxGridRowComponent;
61+
row?: IgxRowBaseComponent<IGridComponent>;
5762
event?: Event;
5863
}
5964

@@ -88,15 +93,44 @@ export interface IColumnMovingEndEventArgs {
8893
cancel: boolean;
8994
}
9095

91-
export interface IGridComponent {
96+
export interface IToolbarComponent {
97+
exportExcel: boolean;
98+
exportCsv: boolean;
99+
toolbarTitle: string;
100+
exportText: string;
101+
exportExcelText: string;
102+
exportCsvText: string;
103+
columnHidingTitle: string;
104+
columnPinningTitle: string;
105+
106+
107+
onToolbarExporting: EventEmitter<IGridToolbarExportEventArgs>;
108+
}
109+
110+
export interface IVirtualizedComponent {
111+
verticalScrollContainer: IgxForOfDirective<any>;
112+
parentVirtDir: IgxForOfDirective<any>;
113+
headerContainer: IgxForOfDirective<any>;
114+
}
115+
116+
export interface IFilterableComponent {
117+
onFilteringDone: EventEmitter<IFilteringExpressionsTree>;
118+
119+
clearFilter(name?: string);
120+
filter(name: string, value: any, conditionOrExpressionTree?: IFilteringOperation | IFilteringExpressionsTree, ignoreCase?: boolean);
121+
}
122+
123+
export interface IGridComponent extends IToolbarComponent,
124+
IVirtualizedComponent,
125+
IFilterableComponent {
92126
id: string;
93127
columns: IgxColumnComponent[];
94128
data: any[];
95129
filteredData: any[];
96130
filteredSortedData: any[];
97131
primaryKey: string;
98132
rowList: QueryList<any>;
99-
dataRowList: QueryList<IgxGridRowComponent>;
133+
dataRowList: QueryList<IgxRowBaseComponent<IGridComponent>>;
100134
cdr: ChangeDetectorRef;
101135
sortingExpressions: ISortingExpression[];
102136
nativeElement: any;
@@ -114,6 +148,7 @@ export interface IGridComponent {
114148
hasMovableColumns: boolean;
115149
pinnedColumns: IgxColumnComponent[];
116150
unpinnedColumns: IgxColumnComponent[];
151+
pinnedColumnsText: string;
117152
visibleColumns: IgxColumnComponent[];
118153
headerList: QueryList<IgxGridHeaderComponent>;
119154
draggedColumn: IgxColumnComponent;
@@ -122,16 +157,20 @@ export interface IGridComponent {
122157
evenRowCSS: string;
123158
oddRowCSS: string;
124159
displayDensity: DisplayDensity | string;
125-
rowHeight: number;
126-
defaultRowHeight: number;
160+
outletDirective: IgxOverlayOutletDirective;
161+
hiddenColumnsCount: number;
162+
hiddenColumnsText: string;
163+
columnHiding: boolean;
164+
columnPinning: boolean;
165+
127166
rowSelectable: boolean;
128167
allRowsSelected: boolean;
129-
verticalScrollContainer: IgxForOfDirective<any>;
130-
parentVirtDir: IgxForOfDirective<any>;
131168
selectionAPI: IgxSelectionAPIService;
132169
unpinnedWidth: number;
133-
170+
calcHeight: number;
134171
calcPinnedContainerMaxWidth: number;
172+
rowHeight: number;
173+
defaultRowHeight: number;
135174

136175
// Events
137176
onEditDone: EventEmitter<IGridEditEventArgs>;
@@ -145,9 +184,12 @@ export interface IGridComponent {
145184
markForCheck();
146185
deselectRows(rowIDs: any[]);
147186
selectRows(rowIDs: any[], clearCurrentSelection?: boolean);
148-
triggerRowSelectionChange(newSelectionAsSet: Set<any>, row?: IgxGridRowComponent, event?: Event, headerStatus?: boolean);
187+
triggerRowSelectionChange(newSelectionAsSet: Set<any>,
188+
row?: IgxRowBaseComponent<IGridComponent>, event?: Event, headerStatus?: boolean);
149189
getPinnedWidth(takeHidden?: boolean);
150190
moveColumn(column: IgxColumnComponent, dropTarget: IgxColumnComponent);
151191
getCellByKey(rowSelector: any, columnField: string);
152192
trackColumnChanges(index, col);
193+
checkHeaderCheckboxStatus(headerStatus?: boolean);
194+
toggleColumnVisibility(args: IColumnVisibilityChangedEventArgs);
153195
}

projects/igniteui-angular/src/lib/grid/grid-summary.ts renamed to projects/igniteui-angular/src/lib/grid-common/grid-summary.ts

-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import { DataUtil } from '../data-operations/data-util';
2-
import { ISortingExpression, SortingDirection } from '../data-operations/sorting-expression.interface';
31
export interface ISummaryExpression {
42
fieldName: string;
53
customSummary?: any;

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
</button>
1616
<igx-drop-down #columnHidingDropdown>
1717
<igx-column-hiding
18-
[columns]="grid.columnList"
18+
[columns]="grid.columns"
1919
[title]="grid.columnHidingTitle"
2020
[filterColumnsPrompt]="filterColumnsPrompt"
2121
[columnsAreaMaxHeight]="defaultDropDownsMaxHeight"
@@ -36,7 +36,7 @@
3636
</button>
3737
<igx-drop-down #columnPinningDropdown>
3838
<igx-column-pinning
39-
[columns]="grid.columnList"
39+
[columns]="grid.columns"
4040
[title]="grid.columnPinningTitle"
4141
[filterColumnsPrompt]="filterColumnsPrompt"
4242
[columnsAreaMaxHeight]="defaultDropDownsMaxHeight"></igx-column-pinning>

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

+8-7
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,13 @@ import {
1616
IgxExcelExporterOptions,
1717
IgxExcelExporterService,
1818
AbsoluteScrollStrategy
19-
} from '../services/index';
20-
import { IgxGridAPIService } from '../grid-common/api.service';
21-
import { IgxGridComponent } from './grid.component';
19+
} from '../services';
20+
import { IGridAPIService } from './api.service';
21+
import { IGridComponent } from './grid-interfaces';
22+
import { IgxGridComponent } from '../grid/grid.component';
2223
import { IgxDropDownComponent } from '../drop-down/drop-down.component';
23-
import { IgxColumnHidingComponent } from './column-hiding.component';
24-
import { IgxColumnPinningComponent } from './column-pinning.component';
24+
import { IgxColumnHidingComponent } from './column-hiding/column-hiding.component';
25+
import { IgxColumnPinningComponent } from '../grid/column-pinning.component';
2526
import { OverlaySettings, PositionSettings, HorizontalAlignment, VerticalAlignment } from '../services/overlay/utilities';
2627
import { ConnectedPositioningStrategy } from '../services/overlay/position';
2728

@@ -151,7 +152,7 @@ export class IgxGridToolbarComponent {
151152
* const grid = this.igxGrid1.toolbar.grid;
152153
* ```
153154
*/
154-
public get grid(): IgxGridComponent {
155+
public get grid(): IGridComponent {
155156
return this.gridAPI.get(this.gridID);
156157
}
157158

@@ -250,7 +251,7 @@ export class IgxGridToolbarComponent {
250251
}
251252
}
252253

253-
constructor(public gridAPI: IgxGridAPIService,
254+
constructor(public gridAPI: IGridAPIService<IGridComponent>,
254255
public cdr: ChangeDetectorRef,
255256
@Optional() public excelExporter: IgxExcelExporterService,
256257
@Optional() public csvExporter: IgxCsvExporterService) {

projects/igniteui-angular/src/lib/grid/row.component.html renamed to projects/igniteui-angular/src/lib/grid-common/row-base.component.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
<ng-container *ngIf="grid.groupingExpressions.length > 0">
2-
<div class="igx-grid__row-indentation igx-grid__row-indentation--level-{{grid.groupingExpressions.length}}"></div>
1+
<ng-container *ngIf="indentation > 0">
2+
<div class="igx-grid__row-indentation igx-grid__row-indentation--level-{{indentation}}"></div>
33
</ng-container>
44
<ng-container *ngIf="rowSelectable">
55
<div class="igx-grid__cbx-selection">

0 commit comments

Comments
 (0)