igniteui-angular 12.3.16 → 12.3.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +252 -252
- package/bundles/igniteui-angular.umd.js +199 -42
- package/bundles/igniteui-angular.umd.js.map +1 -1
- package/esm2015/lib/carousel/carousel-base.js +1 -1
- package/esm2015/lib/carousel/public_api.js +1 -1
- package/esm2015/lib/data-operations/filtering-condition.js +150 -6
- package/esm2015/lib/grids/common/cell.interface.js +1 -1
- package/esm2015/lib/grids/common/crud.service.js +9 -6
- package/esm2015/lib/grids/common/pipes.js +2 -2
- package/esm2015/lib/grids/filtering/advanced-filtering/advanced-filtering-dialog.component.js +2 -2
- package/esm2015/lib/grids/filtering/excel-style/excel-style-header.component.js +2 -2
- package/esm2015/lib/grids/filtering/excel-style/public_api.js +1 -1
- package/esm2015/lib/grids/grid/grid.component.js +5 -3
- package/esm2015/lib/grids/grid-base.directive.js +4 -6
- package/esm2015/lib/grids/grid-navigation.service.js +12 -6
- package/esm2015/lib/grids/grid-public-cell.js +1 -1
- package/esm2015/lib/grids/grid-public-row.js +1 -1
- package/esm2015/lib/grids/grouping/group-by-area.directive.js +2 -2
- package/esm2015/lib/grids/hierarchical-grid/hierarchical-grid-navigation.service.js +3 -3
- package/esm2015/lib/grids/hierarchical-grid/hierarchical-grid.component.js +2 -2
- package/esm2015/lib/grids/toolbar/grid-toolbar-advanced-filtering.component.js +2 -2
- package/esm2015/lib/grids/toolbar/grid-toolbar-exporter.component.js +2 -2
- package/esm2015/lib/grids/toolbar/grid-toolbar-hiding.component.js +2 -2
- package/esm2015/lib/grids/toolbar/grid-toolbar-pinning.component.js +2 -2
- package/esm2015/lib/grids/tree-grid/tree-grid.component.js +2 -2
- package/esm2015/lib/grids/tree-grid/tree-grid.filtering.strategy.js +1 -1
- package/esm2015/lib/simple-combo/simple-combo.component.js +6 -2
- package/esm2015/lib/tabs/bottom-nav/bottom-nav-content.component.js +2 -2
- package/esm2015/lib/tabs/bottom-nav/bottom-nav-header.component.js +2 -2
- package/esm2015/lib/tabs/bottom-nav/bottom-nav-item.component.js +2 -2
- package/esm2015/lib/tabs/bottom-nav/bottom-nav.component.js +2 -2
- package/esm2015/lib/tabs/bottom-nav/bottom-nav.directives.js +1 -1
- package/esm2015/lib/tabs/bottom-nav/bottom-nav.module.js +1 -1
- package/esm2015/lib/tabs/bottom-nav/public_api.js +1 -1
- package/esm2015/lib/tabs/public_api.js +1 -1
- package/esm2015/lib/tabs/tab-content.directive.js +1 -1
- package/esm2015/lib/tabs/tab-header.directive.js +1 -1
- package/esm2015/lib/tabs/tab-item.directive.js +1 -1
- package/esm2015/lib/tabs/tabs/public_api.js +1 -1
- package/esm2015/lib/tabs/tabs/tab-content.component.js +2 -2
- package/esm2015/lib/tabs/tabs/tab-header.component.js +2 -2
- package/esm2015/lib/tabs/tabs/tab-item.component.js +2 -2
- package/esm2015/lib/tabs/tabs/tabs.component.js +2 -2
- package/esm2015/lib/tabs/tabs/tabs.directives.js +1 -1
- package/esm2015/lib/tabs/tabs/tabs.module.js +1 -1
- package/esm2015/lib/tabs/tabs.base.js +1 -1
- package/esm2015/lib/tabs/tabs.directive.js +1 -1
- package/fesm2015/igniteui-angular.js +200 -43
- package/fesm2015/igniteui-angular.js.map +1 -1
- package/igniteui-angular.metadata.json +1 -1
- package/lib/data-operations/filtering-condition.d.ts +1 -1
- package/lib/grids/common/pipes.d.ts +1 -1
- package/lib/grids/grouping/group-by-area.directive.d.ts +1 -1
- package/lib/simple-combo/simple-combo.component.d.ts +2 -0
- package/migrations/update-12_1_0/changes/classes.json +28 -28
- package/package.json +1 -1
|
@@ -2863,13 +2863,9 @@ class IgxDateFilteringOperand extends IgxBaseDateTimeFilteringOperand {
|
|
|
2863
2863
|
}].concat(this.operations);
|
|
2864
2864
|
}
|
|
2865
2865
|
}
|
|
2866
|
-
class IgxDateTimeFilteringOperand extends
|
|
2866
|
+
class IgxDateTimeFilteringOperand extends IgxBaseDateTimeFilteringOperand {
|
|
2867
2867
|
constructor() {
|
|
2868
2868
|
super();
|
|
2869
|
-
let index = this.operations.indexOf(this.condition('equals'));
|
|
2870
|
-
this.operations.splice(index, 1);
|
|
2871
|
-
index = this.operations.indexOf(this.condition('doesNotEqual'));
|
|
2872
|
-
this.operations.splice(index, 1);
|
|
2873
2869
|
this.operations = [{
|
|
2874
2870
|
name: 'equals',
|
|
2875
2871
|
isUnary: false,
|
|
@@ -2906,6 +2902,154 @@ class IgxDateTimeFilteringOperand extends IgxDateFilteringOperand {
|
|
|
2906
2902
|
targetp.minutes !== searchp.minutes ||
|
|
2907
2903
|
targetp.seconds !== searchp.seconds;
|
|
2908
2904
|
}
|
|
2905
|
+
}, {
|
|
2906
|
+
name: 'before',
|
|
2907
|
+
isUnary: false,
|
|
2908
|
+
iconName: 'is-before',
|
|
2909
|
+
logic: (target, searchVal) => {
|
|
2910
|
+
if (!target) {
|
|
2911
|
+
return false;
|
|
2912
|
+
}
|
|
2913
|
+
this.validateInputData(target);
|
|
2914
|
+
return target < searchVal;
|
|
2915
|
+
}
|
|
2916
|
+
}, {
|
|
2917
|
+
name: 'after',
|
|
2918
|
+
isUnary: false,
|
|
2919
|
+
iconName: 'is-after',
|
|
2920
|
+
logic: (target, searchVal) => {
|
|
2921
|
+
if (!target) {
|
|
2922
|
+
return false;
|
|
2923
|
+
}
|
|
2924
|
+
this.validateInputData(target);
|
|
2925
|
+
return target > searchVal;
|
|
2926
|
+
}
|
|
2927
|
+
}, {
|
|
2928
|
+
name: 'today',
|
|
2929
|
+
isUnary: true,
|
|
2930
|
+
iconName: 'today',
|
|
2931
|
+
logic: (target) => {
|
|
2932
|
+
if (!target) {
|
|
2933
|
+
return false;
|
|
2934
|
+
}
|
|
2935
|
+
this.validateInputData(target);
|
|
2936
|
+
const d = IgxDateTimeFilteringOperand.getDateParts(target, 'yMd');
|
|
2937
|
+
const now = IgxDateTimeFilteringOperand.getDateParts(new Date(), 'yMd');
|
|
2938
|
+
return d.year === now.year &&
|
|
2939
|
+
d.month === now.month &&
|
|
2940
|
+
d.day === now.day;
|
|
2941
|
+
}
|
|
2942
|
+
}, {
|
|
2943
|
+
name: 'yesterday',
|
|
2944
|
+
isUnary: true,
|
|
2945
|
+
iconName: 'yesterday',
|
|
2946
|
+
logic: (target) => {
|
|
2947
|
+
if (!target) {
|
|
2948
|
+
return false;
|
|
2949
|
+
}
|
|
2950
|
+
this.validateInputData(target);
|
|
2951
|
+
const td = IgxDateTimeFilteringOperand.getDateParts(target, 'yMd');
|
|
2952
|
+
const y = ((d) => new Date(d.setDate(d.getDate() - 1)))(new Date());
|
|
2953
|
+
const yesterday = IgxDateTimeFilteringOperand.getDateParts(y, 'yMd');
|
|
2954
|
+
return td.year === yesterday.year &&
|
|
2955
|
+
td.month === yesterday.month &&
|
|
2956
|
+
td.day === yesterday.day;
|
|
2957
|
+
}
|
|
2958
|
+
}, {
|
|
2959
|
+
name: 'thisMonth',
|
|
2960
|
+
isUnary: true,
|
|
2961
|
+
iconName: 'this-month',
|
|
2962
|
+
logic: (target) => {
|
|
2963
|
+
if (!target) {
|
|
2964
|
+
return false;
|
|
2965
|
+
}
|
|
2966
|
+
this.validateInputData(target);
|
|
2967
|
+
const d = IgxDateTimeFilteringOperand.getDateParts(target, 'yM');
|
|
2968
|
+
const now = IgxDateTimeFilteringOperand.getDateParts(new Date(), 'yM');
|
|
2969
|
+
return d.year === now.year &&
|
|
2970
|
+
d.month === now.month;
|
|
2971
|
+
}
|
|
2972
|
+
}, {
|
|
2973
|
+
name: 'lastMonth',
|
|
2974
|
+
isUnary: true,
|
|
2975
|
+
iconName: 'last-month',
|
|
2976
|
+
logic: (target) => {
|
|
2977
|
+
if (!target) {
|
|
2978
|
+
return false;
|
|
2979
|
+
}
|
|
2980
|
+
this.validateInputData(target);
|
|
2981
|
+
const d = IgxDateTimeFilteringOperand.getDateParts(target, 'yM');
|
|
2982
|
+
const now = IgxDateTimeFilteringOperand.getDateParts(new Date(), 'yM');
|
|
2983
|
+
if (!now.month) {
|
|
2984
|
+
now.month = 11;
|
|
2985
|
+
now.year -= 1;
|
|
2986
|
+
}
|
|
2987
|
+
else {
|
|
2988
|
+
now.month--;
|
|
2989
|
+
}
|
|
2990
|
+
return d.year === now.year &&
|
|
2991
|
+
d.month === now.month;
|
|
2992
|
+
}
|
|
2993
|
+
}, {
|
|
2994
|
+
name: 'nextMonth',
|
|
2995
|
+
isUnary: true,
|
|
2996
|
+
iconName: 'next-month',
|
|
2997
|
+
logic: (target) => {
|
|
2998
|
+
if (!target) {
|
|
2999
|
+
return false;
|
|
3000
|
+
}
|
|
3001
|
+
this.validateInputData(target);
|
|
3002
|
+
const d = IgxDateTimeFilteringOperand.getDateParts(target, 'yM');
|
|
3003
|
+
const now = IgxDateTimeFilteringOperand.getDateParts(new Date(), 'yM');
|
|
3004
|
+
if (now.month === 11) {
|
|
3005
|
+
now.month = 0;
|
|
3006
|
+
now.year += 1;
|
|
3007
|
+
}
|
|
3008
|
+
else {
|
|
3009
|
+
now.month++;
|
|
3010
|
+
}
|
|
3011
|
+
return d.year === now.year &&
|
|
3012
|
+
d.month === now.month;
|
|
3013
|
+
}
|
|
3014
|
+
}, {
|
|
3015
|
+
name: 'thisYear',
|
|
3016
|
+
isUnary: true,
|
|
3017
|
+
iconName: 'this-year',
|
|
3018
|
+
logic: (target) => {
|
|
3019
|
+
if (!target) {
|
|
3020
|
+
return false;
|
|
3021
|
+
}
|
|
3022
|
+
this.validateInputData(target);
|
|
3023
|
+
const d = IgxDateTimeFilteringOperand.getDateParts(target, 'y');
|
|
3024
|
+
const now = IgxDateTimeFilteringOperand.getDateParts(new Date(), 'y');
|
|
3025
|
+
return d.year === now.year;
|
|
3026
|
+
}
|
|
3027
|
+
}, {
|
|
3028
|
+
name: 'lastYear',
|
|
3029
|
+
isUnary: true,
|
|
3030
|
+
iconName: 'last-year',
|
|
3031
|
+
logic: (target) => {
|
|
3032
|
+
if (!target) {
|
|
3033
|
+
return false;
|
|
3034
|
+
}
|
|
3035
|
+
this.validateInputData(target);
|
|
3036
|
+
const d = IgxDateTimeFilteringOperand.getDateParts(target, 'y');
|
|
3037
|
+
const now = IgxDateTimeFilteringOperand.getDateParts(new Date(), 'y');
|
|
3038
|
+
return d.year === now.year - 1;
|
|
3039
|
+
}
|
|
3040
|
+
}, {
|
|
3041
|
+
name: 'nextYear',
|
|
3042
|
+
isUnary: true,
|
|
3043
|
+
iconName: 'next-year',
|
|
3044
|
+
logic: (target) => {
|
|
3045
|
+
if (!target) {
|
|
3046
|
+
return false;
|
|
3047
|
+
}
|
|
3048
|
+
this.validateInputData(target);
|
|
3049
|
+
const d = IgxDateTimeFilteringOperand.getDateParts(target, 'y');
|
|
3050
|
+
const now = IgxDateTimeFilteringOperand.getDateParts(new Date(), 'y');
|
|
3051
|
+
return d.year === now.year + 1;
|
|
3052
|
+
}
|
|
2909
3053
|
}].concat(this.operations);
|
|
2910
3054
|
}
|
|
2911
3055
|
}
|
|
@@ -6514,7 +6658,8 @@ class IgxRowAddCrudState extends IgxRowCrudState {
|
|
|
6514
6658
|
* @hidden @internal
|
|
6515
6659
|
*/
|
|
6516
6660
|
endRowTransaction(commit, event) {
|
|
6517
|
-
|
|
6661
|
+
const isAddRow = this.row && this.row.getClassName() === IgxAddRow.name;
|
|
6662
|
+
if (isAddRow) {
|
|
6518
6663
|
this.grid.rowAdded.pipe(first$1()).subscribe((addRowArgs) => {
|
|
6519
6664
|
const rowData = addRowArgs.data;
|
|
6520
6665
|
const pinnedIndex = this.grid.pinnedRecords.findIndex(x => x[this.primaryKey] === rowData[this.primaryKey]);
|
|
@@ -6530,10 +6675,12 @@ class IgxRowAddCrudState extends IgxRowCrudState {
|
|
|
6530
6675
|
if (args.cancel) {
|
|
6531
6676
|
return args;
|
|
6532
6677
|
}
|
|
6533
|
-
|
|
6534
|
-
|
|
6535
|
-
|
|
6536
|
-
|
|
6678
|
+
if (isAddRow) {
|
|
6679
|
+
this.endAddRow();
|
|
6680
|
+
if (commit) {
|
|
6681
|
+
this.grid.rowAddedNotifier.next({ data: args.newValue });
|
|
6682
|
+
this.grid.rowAdded.emit({ data: args.newValue });
|
|
6683
|
+
}
|
|
6537
6684
|
}
|
|
6538
6685
|
return args;
|
|
6539
6686
|
}
|
|
@@ -37080,6 +37227,10 @@ class IgxSimpleComboComponent extends IgxComboBaseDirective {
|
|
|
37080
37227
|
super.onBlur();
|
|
37081
37228
|
}
|
|
37082
37229
|
/** @hidden @internal */
|
|
37230
|
+
onFocus() {
|
|
37231
|
+
this._internalFilter = this.comboInput.value || '';
|
|
37232
|
+
}
|
|
37233
|
+
/** @hidden @internal */
|
|
37083
37234
|
getEditElement() {
|
|
37084
37235
|
return this.comboInput.nativeElement;
|
|
37085
37236
|
}
|
|
@@ -37215,7 +37366,7 @@ class IgxSimpleComboComponent extends IgxComboBaseDirective {
|
|
|
37215
37366
|
IgxSimpleComboComponent.decorators = [
|
|
37216
37367
|
{ type: Component, args: [{
|
|
37217
37368
|
selector: 'igx-simple-combo',
|
|
37218
|
-
template: "<igx-input-group #inputGroup [displayDensity]=\"displayDensity\" [suppressInputAutofocus]=\"true\" [type]=\"type\">\n <ng-container ngProjectAs=\"[igxLabel]\">\n <ng-content select=\"[igxLabel]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-prefix\">\n <ng-content select=\"igx-prefix\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-hint, [igxHint]\">\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n </ng-container>\n\n <input #comboInput igxInput [value]=\"value\" (input)=\"handleInputChange($event)\" (keyup)=\"handleKeyUp($event)\"\n (keydown)=\"handleKeyDown($event)\" (blur)=\"onBlur()\" [attr.placeholder]=\"placeholder\" aria-autocomplete=\"both\"\n [attr.aria-owns]=\"dropdown.id\" [attr.aria-labelledby]=\"ariaLabelledBy\" [disabled]=\"disabled\"\n [igxTextSelection]=\"!composing\" />\n\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix\"></ng-content>\n </ng-container>\n <igx-suffix *ngIf=\"comboInput.value.length\" aria-label=\"Clear Selection\" class=\"igx-combo__clear-button\"\n (click)=\"handleClear($event)\">\n <ng-container *ngIf=\"clearIconTemplate\">\n <ng-container *ngTemplateOutlet=\"clearIconTemplate\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!clearIconTemplate\">\n clear\n </igx-icon>\n </igx-suffix>\n <igx-suffix *ngIf=\"showSearchCaseIcon\">\n <igx-icon family=\"imx-icons\" name=\"case-sensitive\" [active]=\"filteringOptions.caseSensitive\"\n (click)=\"toggleCaseSensitive()\">\n </igx-icon>\n </igx-suffix>\n <igx-suffix class=\"igx-combo__toggle-button\">\n <ng-container *ngIf=\"toggleIconTemplate\">\n <ng-container *ngTemplateOutlet=\"toggleIconTemplate; context: {$implicit: collapsed}\"></ng-container>\n </ng-container>\n <igx-icon (click)=\"onClick($event)\" *ngIf=\"!toggleIconTemplate\">\n {{ dropdown.collapsed ? 'arrow_drop_down' : 'arrow_drop_up'}}\n </igx-icon>\n </igx-suffix>\n</igx-input-group>\n\n<igx-combo-drop-down #igxComboDropDown class=\"igx-combo__drop-down\" [displayDensity]=\"displayDensity\"\n [width]=\"itemsWidth || '100%'\" (opening)=\"handleOpening($event)\" (closing)=\"handleClosing($event)\"\n (opened)=\"handleOpened()\" (closed)=\"handleClosed()\" [singleMode]=\"true\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\">\n </ng-container>\n <div #dropdownItemContainer class=\"igx-combo__content\" [style.overflow]=\"'hidden'\"\n [style.maxHeight.px]=\"itemsMaxHeight\" [igxDropDownItemNavigation]=\"dropdown\" (focus)=\"dropdown.onFocus()\"\n [tabindex]=\"dropdown.collapsed ? -1 : 0\" role=\"listbox\" [attr.id]=\"dropdown.id\"\n (keydown)=\"handleItemKeyDown($event)\">\n <igx-combo-item role=\"option\" [singleMode]=\"true\" [itemHeight]='itemHeight' (click)=\"handleItemClick()\" *igxFor=\"let item of data\n | comboClean\n | comboFiltering:filterValue:displayKey:filteringOptions:true\n | comboGrouping:groupKey:valueKey\n index as rowIndex; containerSize: itemsMaxHeight; scrollOrientation: 'vertical'; itemSize: itemHeight\"\n [value]=\"item\" [isHeader]=\"item.isHeader\" [index]=\"rowIndex\">\n <ng-container *ngIf=\"item.isHeader\">\n <ng-container\n *ngTemplateOutlet=\"headerItemTemplate ? headerItemTemplate : headerItemBase;\n context: {$implicit: item, data: data, valueKey: valueKey, groupKey: groupKey, displayKey: displayKey}\">\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!item.isHeader\">\n <ng-container #listItem\n *ngTemplateOutlet=\"template; context: {$implicit: item, data: data, valueKey: valueKey, displayKey: displayKey};\">\n </ng-container>\n </ng-container>\n </igx-combo-item>\n </div>\n\n <div class=\"igx-combo__add\" *ngIf=\"filteredData.length === 0 || isAddButtonVisible()\">\n <div class=\"igx-combo__empty\" *ngIf=\"filteredData.length === 0\">\n <ng-container *ngTemplateOutlet=\"emptyTemplate ? emptyTemplate : empty\">\n </ng-container>\n </div>\n <igx-combo-add-item #addItem [itemHeight]=\"itemHeight\" *ngIf=\"isAddButtonVisible()\"\n [tabindex]=\"dropdown.collapsed ? -1 : customValueFlag ? 1 : -1\" class=\"igx-combo__add-item\" role=\"button\"\n aria-label=\"Add Item\" [index]=\"virtualScrollContainer.igxForOf.length\">\n <ng-container *ngTemplateOutlet=\"addItemTemplate ? addItemTemplate : addItemDefault\">\n </ng-container>\n </igx-combo-add-item>\n </div>\n <ng-container *ngTemplateOutlet=\"footerTemplate\">\n </ng-container>\n</igx-combo-drop-down>\n\n<ng-template #complex let-display let-data=\"data\" let-key=\"displayKey\">\n {{display[key]}}\n</ng-template>\n<ng-template #primitive let-display>\n {{display}}\n</ng-template>\n<ng-template #empty>\n <span>The list is empty</span>\n</ng-template>\n<ng-template #addItemDefault let-control>\n <button igxButton=\"flat\" igxRipple>Add item</button>\n</ng-template>\n<ng-template #headerItemBase let-item let-key=\"valueKey\" let-groupKey=\"groupKey\">\n {{ item[key] }}\n</ng-template>\n",
|
|
37369
|
+
template: "<igx-input-group #inputGroup [displayDensity]=\"displayDensity\" [suppressInputAutofocus]=\"true\" [type]=\"type\">\n <ng-container ngProjectAs=\"[igxLabel]\">\n <ng-content select=\"[igxLabel]\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-prefix\">\n <ng-content select=\"igx-prefix\"></ng-content>\n </ng-container>\n <ng-container ngProjectAs=\"igx-hint, [igxHint]\">\n <ng-content select=\"igx-hint, [igxHint]\"></ng-content>\n </ng-container>\n\n <input #comboInput igxInput [value]=\"value\" (focus)=\"onFocus()\" (input)=\"handleInputChange($event)\" (keyup)=\"handleKeyUp($event)\"\n (keydown)=\"handleKeyDown($event)\" (blur)=\"onBlur()\" [attr.placeholder]=\"placeholder\" aria-autocomplete=\"both\"\n [attr.aria-owns]=\"dropdown.id\" [attr.aria-labelledby]=\"ariaLabelledBy\" [disabled]=\"disabled\"\n [igxTextSelection]=\"!composing\" />\n\n <ng-container ngProjectAs=\"igx-suffix\">\n <ng-content select=\"igx-suffix\"></ng-content>\n </ng-container>\n <igx-suffix *ngIf=\"comboInput.value.length\" aria-label=\"Clear Selection\" class=\"igx-combo__clear-button\"\n (click)=\"handleClear($event)\">\n <ng-container *ngIf=\"clearIconTemplate\">\n <ng-container *ngTemplateOutlet=\"clearIconTemplate\"></ng-container>\n </ng-container>\n <igx-icon *ngIf=\"!clearIconTemplate\">\n clear\n </igx-icon>\n </igx-suffix>\n <igx-suffix *ngIf=\"showSearchCaseIcon\">\n <igx-icon family=\"imx-icons\" name=\"case-sensitive\" [active]=\"filteringOptions.caseSensitive\"\n (click)=\"toggleCaseSensitive()\">\n </igx-icon>\n </igx-suffix>\n <igx-suffix class=\"igx-combo__toggle-button\">\n <ng-container *ngIf=\"toggleIconTemplate\">\n <ng-container *ngTemplateOutlet=\"toggleIconTemplate; context: {$implicit: collapsed}\"></ng-container>\n </ng-container>\n <igx-icon (click)=\"onClick($event)\" *ngIf=\"!toggleIconTemplate\">\n {{ dropdown.collapsed ? 'arrow_drop_down' : 'arrow_drop_up'}}\n </igx-icon>\n </igx-suffix>\n</igx-input-group>\n\n<igx-combo-drop-down #igxComboDropDown class=\"igx-combo__drop-down\" [displayDensity]=\"displayDensity\"\n [width]=\"itemsWidth || '100%'\" (opening)=\"handleOpening($event)\" (closing)=\"handleClosing($event)\"\n (opened)=\"handleOpened()\" (closed)=\"handleClosed()\" [singleMode]=\"true\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\">\n </ng-container>\n <div #dropdownItemContainer class=\"igx-combo__content\" [style.overflow]=\"'hidden'\"\n [style.maxHeight.px]=\"itemsMaxHeight\" [igxDropDownItemNavigation]=\"dropdown\" (focus)=\"dropdown.onFocus()\"\n [tabindex]=\"dropdown.collapsed ? -1 : 0\" role=\"listbox\" [attr.id]=\"dropdown.id\"\n (keydown)=\"handleItemKeyDown($event)\">\n <igx-combo-item role=\"option\" [singleMode]=\"true\" [itemHeight]='itemHeight' (click)=\"handleItemClick()\" *igxFor=\"let item of data\n | comboClean\n | comboFiltering:filterValue:displayKey:filteringOptions:true\n | comboGrouping:groupKey:valueKey\n index as rowIndex; containerSize: itemsMaxHeight; scrollOrientation: 'vertical'; itemSize: itemHeight\"\n [value]=\"item\" [isHeader]=\"item.isHeader\" [index]=\"rowIndex\">\n <ng-container *ngIf=\"item.isHeader\">\n <ng-container\n *ngTemplateOutlet=\"headerItemTemplate ? headerItemTemplate : headerItemBase;\n context: {$implicit: item, data: data, valueKey: valueKey, groupKey: groupKey, displayKey: displayKey}\">\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"!item.isHeader\">\n <ng-container #listItem\n *ngTemplateOutlet=\"template; context: {$implicit: item, data: data, valueKey: valueKey, displayKey: displayKey};\">\n </ng-container>\n </ng-container>\n </igx-combo-item>\n </div>\n\n <div class=\"igx-combo__add\" *ngIf=\"filteredData.length === 0 || isAddButtonVisible()\">\n <div class=\"igx-combo__empty\" *ngIf=\"filteredData.length === 0\">\n <ng-container *ngTemplateOutlet=\"emptyTemplate ? emptyTemplate : empty\">\n </ng-container>\n </div>\n <igx-combo-add-item #addItem [itemHeight]=\"itemHeight\" *ngIf=\"isAddButtonVisible()\"\n [tabindex]=\"dropdown.collapsed ? -1 : customValueFlag ? 1 : -1\" class=\"igx-combo__add-item\" role=\"button\"\n aria-label=\"Add Item\" [index]=\"virtualScrollContainer.igxForOf.length\">\n <ng-container *ngTemplateOutlet=\"addItemTemplate ? addItemTemplate : addItemDefault\">\n </ng-container>\n </igx-combo-add-item>\n </div>\n <ng-container *ngTemplateOutlet=\"footerTemplate\">\n </ng-container>\n</igx-combo-drop-down>\n\n<ng-template #complex let-display let-data=\"data\" let-key=\"displayKey\">\n {{display[key]}}\n</ng-template>\n<ng-template #primitive let-display>\n {{display}}\n</ng-template>\n<ng-template #empty>\n <span>The list is empty</span>\n</ng-template>\n<ng-template #addItemDefault let-control>\n <button igxButton=\"flat\" igxRipple>Add item</button>\n</ng-template>\n<ng-template #headerItemBase let-item let-key=\"valueKey\" let-groupKey=\"groupKey\">\n {{ item[key] }}\n</ng-template>\n",
|
|
37219
37370
|
providers: [
|
|
37220
37371
|
IgxComboAPIService,
|
|
37221
37372
|
{ provide: IGX_COMBO_COMPONENT, useExisting: IgxSimpleComboComponent },
|
|
@@ -41547,7 +41698,7 @@ IgxExcelStyleHeaderComponent.decorators = [
|
|
|
41547
41698
|
{ type: Component, args: [{
|
|
41548
41699
|
preserveWhitespaces: false,
|
|
41549
41700
|
selector: 'igx-excel-style-header',
|
|
41550
|
-
template: "<header *ngIf=\"esf.column\"\
|
|
41701
|
+
template: "<header *ngIf=\"esf.column\"\n class=\"igx-excel-filter__menu-header\">\n <h4>{{ esf.column.header || esf.column.field }}</h4>\n <div class=\"igx-excel-filter__menu-header-actions\">\n <button *ngIf=\"showSelecting\"\n igxButton=\"icon\"\n (click)=\"esf.onSelect()\"\n [ngClass]=\"esf.selectedClass()\"\n [attr.aria-label]=\"esf.column.selected ? esf.grid.resourceStrings.igx_grid_excel_deselect : esf.grid.resourceStrings.igx_grid_excel_select\"\n >\n <igx-icon>done</igx-icon>\n </button>\n <button *ngIf=\"showPinning\"\n igxButton=\"icon\"\n (click)=\"esf.onPin()\"\n [attr.aria-label]=\"esf.column.pinned ? esf.grid.resourceStrings.igx_grid_excel_unpin : esf.grid.resourceStrings.igx_grid_excel_pin\"\n >\n <igx-icon family=\"imx-icons\" [name]=\"esf.column.pinned ? 'unpin-left' : 'pin-left'\"></igx-icon>\n </button>\n <button *ngIf=\"showHiding\"\n igxButton=\"icon\"\n (click)=\"esf.onHideToggle()\"\n [attr.aria-label]=\"esf.column.hidden ? esf.grid.resourceStrings.igx_grid_excel_show : esf.grid.resourceStrings.igx_grid_excel_hide\"\n >\n <igx-icon>{{ esf.column.hidden ? 'visibility' : 'visibility_off' }}</igx-icon>\n </button>\n </div>\n</header>\n"
|
|
41551
41702
|
},] }
|
|
41552
41703
|
];
|
|
41553
41704
|
IgxExcelStyleHeaderComponent.ctorParameters = () => [
|
|
@@ -43649,8 +43800,10 @@ class IgxGridNavigationService {
|
|
|
43649
43800
|
});
|
|
43650
43801
|
}
|
|
43651
43802
|
else {
|
|
43652
|
-
const range = {
|
|
43653
|
-
|
|
43803
|
+
const range = {
|
|
43804
|
+
rowStart: this.activeNode.row, rowEnd: this.activeNode.row,
|
|
43805
|
+
columnStart: this.activeNode.column, columnEnd: this.activeNode.column
|
|
43806
|
+
};
|
|
43654
43807
|
this.grid.selectRange(range);
|
|
43655
43808
|
this.grid.notifyChanges();
|
|
43656
43809
|
}
|
|
@@ -44161,11 +44314,15 @@ class IgxGridNavigationService {
|
|
|
44161
44314
|
.find(c => this.isColumnFullyVisible(c.visibleIndex))) === null || _a === void 0 ? void 0 : _a.visibleIndex;
|
|
44162
44315
|
const column = this.grid.visibleColumns.find((col) => !col.columnLayout && col.visibleIndex === colIndex);
|
|
44163
44316
|
const rowInd = rowIndex ? rowIndex : (_b = this.grid.rowList.find(r => !this.shouldPerformVerticalScroll(r.index, colIndex))) === null || _b === void 0 ? void 0 : _b.index;
|
|
44164
|
-
const node = {
|
|
44317
|
+
const node = {
|
|
44318
|
+
row: rowInd !== null && rowInd !== void 0 ? rowInd : 0,
|
|
44165
44319
|
column: (_c = column === null || column === void 0 ? void 0 : column.visibleIndex) !== null && _c !== void 0 ? _c : 0, level: (_d = column === null || column === void 0 ? void 0 : column.level) !== null && _d !== void 0 ? _d : 0,
|
|
44166
44320
|
mchCache: column ? { level: column.level, visibleIndex: column.visibleIndex } : {},
|
|
44167
|
-
layout: column && column.columnLayoutChild ? {
|
|
44168
|
-
|
|
44321
|
+
layout: column && column.columnLayoutChild ? {
|
|
44322
|
+
rowStart: column.rowStart, colStart: column.colStart,
|
|
44323
|
+
rowEnd: column.rowEnd, colEnd: column.colEnd, columnVisibleIndex: column.visibleIndex
|
|
44324
|
+
} : null
|
|
44325
|
+
};
|
|
44169
44326
|
return node;
|
|
44170
44327
|
}
|
|
44171
44328
|
handleMCHeaderNav(key, ctrl) {
|
|
@@ -45453,7 +45610,7 @@ IgxGroupByAreaDirective.propDecorators = {
|
|
|
45453
45610
|
class IgxGroupByMetaPipe {
|
|
45454
45611
|
transform(key, grid) {
|
|
45455
45612
|
const column = grid.getColumnByName(key);
|
|
45456
|
-
return { groupable: column.groupable, title: column.header || key };
|
|
45613
|
+
return { groupable: !!(column === null || column === void 0 ? void 0 : column.groupable), title: (column === null || column === void 0 ? void 0 : column.header) || key };
|
|
45457
45614
|
}
|
|
45458
45615
|
}
|
|
45459
45616
|
IgxGroupByMetaPipe.decorators = [
|
|
@@ -46510,7 +46667,7 @@ class IgxAdvancedFilteringDialogComponent {
|
|
|
46510
46667
|
IgxAdvancedFilteringDialogComponent.decorators = [
|
|
46511
46668
|
{ type: Component, args: [{
|
|
46512
46669
|
selector: 'igx-advanced-filtering-dialog',
|
|
46513
|
-
template: "<article\n *ngIf=\"grid\"\n class=\"igx-advanced-filter\"\n igxDrag\n [ghost]=\"false\"\n [dragTolerance]=\"0\"\n (dragStart)=\"dragStart($event)\"\n (dragEnd)=\"dragEnd()\"\n (dragMove)=\"onDragMove($event)\"\n (keydown)=\"onKeyDown($event)\"\n [ngClass]=\"{\n 'igx-advanced-filter--cosy': grid.displayDensity === 'cosy',\n 'igx-advanced-filter--compact': grid.displayDensity === 'compact',\n 'igx-advanced-filter--inline': inline\n }\"\n>\n <header class=\"igx-advanced-filter__header\" igxDragHandle>\n <h4 class=\"igx-typography__h6\" style=\"pointer-events: none;\">\n {{ grid.resourceStrings.igx_grid_advanced_filter_title }}\n </h4>\n <div class=\"igx-filter-legend\">\n <div class=\"igx-filter-legend__item--and\">\n <span>{{ grid.resourceStrings.igx_grid_advanced_filter_and_label }}</span>\n </div>\n <div class=\"igx-filter-legend__item--or\">\n <span>{{ grid.resourceStrings.igx_grid_advanced_filter_or_label }}</span>\n </div>\n </div>\n </header>\n\n <article #expressionsContainer\n class=\"igx-advanced-filter__main\"\n (scroll)=\"onExpressionsScrolled()\">\n <ng-container *ngIf=\"!rootGroup\">\n\n <button #addRootAndGroupButton\n igxButton=\"outlined\"\n [displayDensity]=\"displayDensity\"\n (click)=\"addAndGroup()\"\n >\n <igx-icon>add</igx-icon>\n <span>{{grid.resourceStrings.igx_grid_advanced_filter_and_group}}</span>\n </button>\n\n <button igxButton=\"outlined\" [displayDensity]=\"displayDensity\" (click)=\"addOrGroup()\">\n <igx-icon>add</igx-icon>\n <span>{{grid.resourceStrings.igx_grid_advanced_filter_or_group}}</span>\n </button>\n\n <div class=\"igx-filter-empty\">\n <h6 class=\"igx-filter-empty__title\">\n {{grid.resourceStrings.igx_grid_advanced_filter_initial_text}}\n </h6>\n </div>\n </ng-container>\n\n <ng-template #addExpressionsTemplate let-expressionItem let-afterExpression=\"afterExpression\">\n <button #addConditionButton\n igxButton=\"outlined\"\n [displayDensity]=\"displayDensity\"\n [disabled]=\"hasEditedExpression\"\n (click)=\"addCondition(expressionItem, afterExpression)\"\n >\n <igx-icon>add</igx-icon>\n <span>{{grid.resourceStrings.igx_grid_advanced_filter_add_condition}}</span>\n </button>\n\n <button igxButton=\"outlined\"\n [displayDensity]=\"displayDensity\"\n [disabled]=\"hasEditedExpression\"\n (click)=\"addAndGroup(expressionItem, afterExpression)\">\n <igx-icon>add</igx-icon>\n <span>{{grid.resourceStrings.igx_grid_advanced_filter_and_group}}</span>\n </button>\n\n <button igxButton=\"outlined\"\n [displayDensity]=\"displayDensity\"\n [disabled]=\"hasEditedExpression\"\n (click)=\"addOrGroup(expressionItem, afterExpression)\">\n <igx-icon>add</igx-icon>\n <span>{{grid.resourceStrings.igx_grid_advanced_filter_or_group}}</span>\n </button>\n\n </ng-template>\n\n <ng-template #filterOperandTemplate let-expressionItem>\n <div *ngIf=\"!expressionItem.inEditMode\"\n class=\"igx-filter-tree__expression-item\"\n (mouseenter)=\"expressionItem.hovered = true\"\n (mouseleave)=\"expressionItem.hovered = false\"\n >\n <igx-chip [data]=\"expressionItem\"\n [displayDensity]=\"displayDensity === 'compact' ? 'cosy' : displayDensity\"\n [removable]=\"true\"\n [selected]=\"expressionItem.selected\"\n (keydown)=\"invokeClick($event)\"\n (click)=\"onChipClick(expressionItem)\"\n (dblclick)=\"onChipDblClick(expressionItem)\"\n (remove)=\"onChipRemove(expressionItem)\"\n (selectedChanged)=\"onChipSelectionEnd()\"\n >\n <span igxPrefix class=\"igx-filter-tree__expression-column\">{{ expressionItem.columnHeader || expressionItem.expression.fieldName }}</span>\n <igx-prefix>\n <igx-icon family=\"imx-icons\" [name]=\"expressionItem.expression.condition.iconName\">\n </igx-icon>\n </igx-prefix>\n <span class=\"igx-filter-tree__expression-condition\">\n {{ getConditionFriendlyName(expressionItem.expression.condition.name) }}\n </span>\n <span igxSuffix *ngIf=\"!expressionItem.expression.condition.isUnary\">\n {{\n isDate(expressionItem.expression.searchVal)\n ? getFormatter(expressionItem.expression.fieldName)\n ? (expressionItem.expression.searchVal | columnFormatter:getFormatter(expressionItem.expression.fieldName):undefined)\n : (expressionItem.expression.searchVal | date:getFormat(expressionItem.expression.fieldName):undefined:grid.locale)\n : expressionItem.expression.searchVal\n }}\n </span>\n </igx-chip>\n <div class=\"igx-filter-tree__expression-actions\"\n *ngIf=\"(expressionItem.selected && selectedExpressions.length === 1) || expressionItem.hovered\">\n <igx-icon\n tabindex=\"0\"\n (keydown)=\"invokeClick($event)\"\n (click)=\"enterExpressionEdit(expressionItem)\">\n edit\n </igx-icon>\n <igx-icon\n tabindex=\"0\"\n (keydown)=\"invokeClick($event)\"\n (click)=\"enterExpressionAdd(expressionItem)\"\n *ngIf=\"!expressionItem.inAddMode && (expressionItem.parent !== currentGroup || expressionItem !== currentGroup.children[currentGroup.children.length - 1])\"\n >\n add\n </igx-icon>\n </div>\n </div>\n\n <div *ngIf=\"expressionItem.inEditMode\"\n #editingInputsContainer\n class=\"igx-filter-tree__inputs\"\n >\n <igx-select #columnSelect\n type=\"box\"\n [displayDensity]=\"'compact'\"\n [overlaySettings]=\"columnSelectOverlaySettings\"\n [placeholder]=\"grid.resourceStrings.igx_grid_advanced_filter_column_placeholder\"\n [(ngModel)]=\"selectedColumn\">\n <igx-select-item *ngFor=\"let column of filterableColumns\" [value]=\"column\">\n {{column.header || column.field}}\n </igx-select-item>\n </igx-select>\n\n <igx-select #conditionSelect\n type=\"box\"\n [displayDensity]=\"'compact'\"\n [overlaySettings]=\"conditionSelectOverlaySettings\"\n [placeholder]=\"grid.resourceStrings.igx_grid_filter_condition_placeholder\"\n [(ngModel)]=\"selectedCondition\"\n [disabled]=\"!selectedColumn\">\n <igx-prefix *ngIf=\"selectedColumn && conditionSelect.value && selectedColumn.filters.condition(conditionSelect.value)\">\n <igx-icon family=\"imx-icons\" [name]=\"selectedColumn.filters.condition(conditionSelect.value).iconName\">\n </igx-icon>\n </igx-prefix>\n <igx-select-item *ngFor=\"let condition of getConditionList()\" [value]=\"condition\" [text]=\"getConditionFriendlyName(condition)\">\n <div class=\"igx-grid__filtering-dropdown-items\">\n <igx-icon family=\"imx-icons\"\n [name]=\"selectedColumn.filters.condition(condition).iconName\">\n </igx-icon>\n <span class=\"igx-grid__filtering-dropdown-text\">{{getConditionFriendlyName(condition)}}</span>\n </div>\n </igx-select-item>\n </igx-select>\n\n <igx-input-group *ngIf=\"!selectedColumn || (selectedColumn.dataType !== 'date' && selectedColumn.dataType !== 'time' && selectedColumn.dataType !== 'dateTime')\"\n type=\"box\"\n [displayDensity]=\"'compact'\">\n <input #searchValueInput\n igxInput\n [disabled]=\"!selectedColumn || !selectedCondition\n || (selectedColumn && selectedColumn.filters.condition(selectedCondition).isUnary)\"\n [type]=\"selectedColumn && selectedColumn.dataType === 'number' ? 'number' : 'text'\"\n [placeholder]=\"grid.resourceStrings.igx_grid_advanced_filter_value_placeholder\"\n [(ngModel)]=\"searchValue\"/>\n </igx-input-group>\n\n <igx-date-picker #picker *ngIf=\"selectedColumn && selectedColumn.dataType === 'date'\"\n [(value)]=\"searchValue\"\n (keydown)=\"openPicker($event)\"\n [formatter]=\"selectedColumn.formatter\"\n [displayFormat]=\"selectedColumn.pipeArgs.format\"\n (click)=\"picker.open()\"\n type=\"box\"\n [readOnly]=\"true\"\n [displayDensity]=\"'compact'\"\n [locale]=\"grid.locale\"\n [outlet]=\"grid.outlet\"\n [displayFormat]=\"selectedColumn.pipeArgs.format\"\n [placeholder]=\"grid.resourceStrings.igx_grid_filter_row_date_placeholder\"\n [disabled]=\"!selectedColumn || !selectedCondition\n || (selectedColumn && selectedColumn.filters.condition(selectedCondition).isUnary)\">\n <!-- disable default icons -->\n <igx-picker-toggle></igx-picker-toggle>\n <igx-picker-clear></igx-picker-clear>\n </igx-date-picker>\n\n <igx-time-picker #picker *ngIf=\"selectedColumn && selectedColumn.dataType === 'time'\"\n [inputFormat]=\"selectedColumn.defaultTimeFormat\"\n [(value)]=\"searchValue\"\n [formatter]=\"selectedColumn.formatter\"\n [locale]=\"grid.locale\"\n [outlet]=\"grid.outlet\"\n (click)=\"picker.open()\"\n (keydown)=\"openPicker($event)\"\n [displayDensity]=\"'compact'\"\n [placeholder]=\"grid.resourceStrings.igx_grid_filter_row_time_placeholder\"\n type=\"box\"\n [readOnly]=\"true\"\n [disabled]=\"!selectedColumn || !selectedCondition ||\n (selectedColumn && selectedColumn.filters.condition(selectedCondition).isUnary)\">\n <!-- disable default icons -->\n <igx-picker-toggle></igx-picker-toggle>\n <igx-picker-clear></igx-picker-clear>\n </igx-time-picker>\n\n <igx-input-group #inputGroup type=\"box\" *ngIf=\"selectedColumn && selectedColumn.dataType === 'dateTime'\"\n type=\"box\"\n [displayDensity]=\"'compact'\">\n <input #input igxInput tabindex=\"0\"\n [placeholder]=\"grid.resourceStrings.igx_grid_filter_row_date_placeholder\"\n [igxDateTimeEditor]=\"selectedColumn.defaultDateTimeFormat\"\n [(ngModel)]=\"searchValue\"\n [disabled]=\"!selectedColumn || !selectedCondition || (selectedColumn && selectedColumn.filters.condition(selectedCondition).isUnary)\"/>\n </igx-input-group>\n\n <div class=\"igx-filter-tree__inputs-actions\">\n <button igxButton=\"icon\"\n [displayDensity]=\"displayDensity\"\n [disabled]=\"!operandCanBeCommitted()\"\n (click)=\"commitOperandEdit()\">\n <igx-icon>check</igx-icon>\n </button>\n <button igxButton=\"icon\"\n [displayDensity]=\"displayDensity\"\n (click)=\"cancelOperandEdit()\">\n <igx-icon>close</igx-icon>\n </button>\n </div>\n </div>\n\n <div *ngIf=\"expressionItem.inAddMode\"\n #addModeContainer\n class=\"igx-filter-tree__buttons\"\n >\n <ng-container *ngTemplateOutlet=\"addExpressionsTemplate; context: context(expressionItem.parent, expressionItem)\"></ng-container>\n <button igxButton=\"icon\"\n [displayDensity]=\"displayDensity\"\n (click)=\"cancelOperandAdd()\">\n <igx-icon>close</igx-icon>\n </button>\n </div>\n\n </ng-template>\n\n <ng-template #expressionTreeTemplate let-expressionItem>\n <div class=\"igx-filter-tree\">\n <div tabindex=\"0\"\n class=\"igx-filter-tree__line\"\n [ngClass]=\"{\n 'igx-filter-tree__line--and': expressionItem.operator === 0,\n 'igx-filter-tree__line--or': expressionItem.operator === 1,\n 'igx-filter-tree__line--selected': expressionItem.selected\n }\"\n (keydown)=\"invokeClick($event)\"\n (click)=\"onGroupClick(expressionItem)\"\n ></div>\n\n <div class=\"igx-filter-tree__expression\">\n <ng-container *ngFor=\"let expr of expressionItem.children\">\n <ng-container *ngTemplateOutlet=\"isExpressionGroup(expr) ? expressionTreeTemplate : filterOperandTemplate; context: context(expr)\"></ng-container>\n </ng-container>\n <div *ngIf=\"currentGroup === expressionItem\"\n #currentGroupButtonsContainer\n class=\"igx-filter-tree__buttons\">\n <ng-container *ngTemplateOutlet=\"addExpressionsTemplate; context: context(expressionItem)\"></ng-container>\n <button igxButton=\"outlined\"\n *ngIf=\"expressionItem !== rootGroup\"\n [displayDensity]=\"displayDensity\"\n [disabled]=\"hasEditedExpression || expressionItem.children.length < 2\"\n (click)=\"endGroup(expressionItem)\">\n <span>{{grid.resourceStrings.igx_grid_advanced_filter_end_group}}</span>\n </button>\n </div>\n </div>\n </div>\n\n </ng-template>\n\n <ng-container *ngIf=\"rootGroup\">\n <ng-container *ngTemplateOutlet=\"expressionTreeTemplate; context: context(rootGroup)\"></ng-container>\n </ng-container>\n\n <div igxToggle\n class=\"igx-filter-contextual-menu\"\n (keydown)=\"onKeyDown($event)\"\n (closed)=\"contextMenuClosed()\"\n [ngClass]=\"{\n 'igx-filter-contextual-menu--cosy': displayDensity === 'cosy',\n 'igx-filter-contextual-menu--compact': displayDensity === 'compact'\n }\"\n >\n <button igxButton=\"icon\"\n class=\"igx-filter-contextual-menu__close-btn\"\n (click)=\"clearSelection()\"\n >\n <igx-icon>close</igx-icon>\n </button>\n\n <ng-container *ngIf=\"contextualGroup\">\n <igx-buttongroup [displayDensity]=\"displayDensity\"\n [multiSelection]=\"false\"\n [values]=\"filteringLogics\"\n type=\"outline\"\n (selected)=\"selectFilteringLogic($event)\">\n </igx-buttongroup>\n\n <button\n igxButton=\"outlined\"\n [displayDensity]=\"displayDensity\"\n [disabled]=\"!contextualGroup.parent\"\n (click)=\"ungroup()\"\n >\n <igx-icon family=\"imx-icons\" name=\"ungroup\"></igx-icon>\n <span>{{grid.resourceStrings.igx_grid_advanced_filter_ungroup}}</span>\n </button>\n <button\n igxButton=\"outlined\"\n [displayDensity]=\"displayDensity\"\n (click)=\"deleteGroup()\"\n class=\"igx-filter-contextual-menu__delete-btn\"\n >\n <igx-icon>delete</igx-icon>\n <span>{{grid.resourceStrings.igx_grid_advanced_filter_delete}}</span>\n </button>\n </ng-container>\n <ng-container *ngIf=\"!contextualGroup\">\n <button\n igxButton=\"outlined\"\n [displayDensity]=\"displayDensity\"\n (click)=\"createAndGroup()\"\n >\n {{grid.resourceStrings.igx_grid_advanced_filter_create_and_group}}\n </button>\n <button\n igxButton=\"outlined\"\n [displayDensity]=\"displayDensity\"\n (click)=\"createOrGroup()\"\n >\n {{grid.resourceStrings.igx_grid_advanced_filter_create_or_group}}\n </button>\n <button\n igxButton=\"outlined\"\n [displayDensity]=\"displayDensity\"\n (click)=\"deleteFilters()\"\n class=\"igx-filter-contextual-menu__delete-btn\"\n >\n {{grid.resourceStrings.igx_grid_advanced_filter_delete_filters}}\n </button>\n </ng-container>\n </div>\n </article>\n\n <footer class=\"igx-excel-filter__secondary-footer\">\n <div class=\"igx-excel-filter__clear\">\n <button\n igxButton=\"flat\"\n [displayDensity]=\"displayDensity\"\n (click)=\"onClearButtonClick($event)\">\n {{ grid.resourceStrings.igx_grid_excel_custom_dialog_clear }}\n </button>\n </div>\n <div class=\"igx-excel-filter__cancel\">\n <button\n igxButton=\"flat\"\n [displayDensity]=\"displayDensity\"\n (click)=\"cancelChanges()\">\n {{ grid.resourceStrings.igx_grid_excel_cancel }}\n </button>\n </div>\n <div class=\"igx-excel-filter__apply\">\n <button\n igxButton=\"raised\"\n [displayDensity]=\"displayDensity\"\n (click)=\"onApplyButtonClick($event)\">\n {{ grid.resourceStrings.igx_grid_excel_apply }}\n </button>\n </div>\n </footer>\n</article>\n<div #overlayOutlet\n igxOverlayOutlet\n class=\"igx-advanced-filter__outlet\"\n (pointerdown)=\"onOutletPointerDown($event)\">\n</div>\n"
|
|
46670
|
+
template: "<article\n *ngIf=\"grid\"\n class=\"igx-advanced-filter\"\n igxDrag\n [ghost]=\"false\"\n [dragTolerance]=\"0\"\n (dragStart)=\"dragStart($event)\"\n (dragEnd)=\"dragEnd()\"\n (dragMove)=\"onDragMove($event)\"\n (keydown)=\"onKeyDown($event)\"\n [ngClass]=\"{\n 'igx-advanced-filter--cosy': grid.displayDensity === 'cosy',\n 'igx-advanced-filter--compact': grid.displayDensity === 'compact',\n 'igx-advanced-filter--inline': inline\n }\"\n>\n <header class=\"igx-advanced-filter__header\" igxDragHandle>\n <h4 class=\"igx-typography__h6\" style=\"pointer-events: none;\">\n {{ grid.resourceStrings.igx_grid_advanced_filter_title }}\n </h4>\n <div class=\"igx-filter-legend\">\n <div class=\"igx-filter-legend__item--and\">\n <span>{{ grid.resourceStrings.igx_grid_advanced_filter_and_label }}</span>\n </div>\n <div class=\"igx-filter-legend__item--or\">\n <span>{{ grid.resourceStrings.igx_grid_advanced_filter_or_label }}</span>\n </div>\n </div>\n </header>\n\n <article #expressionsContainer\n class=\"igx-advanced-filter__main\"\n (scroll)=\"onExpressionsScrolled()\">\n <ng-container *ngIf=\"!rootGroup\">\n\n <button #addRootAndGroupButton\n igxButton=\"outlined\"\n [displayDensity]=\"displayDensity\"\n (click)=\"addAndGroup()\"\n >\n <igx-icon>add</igx-icon>\n <span>{{grid.resourceStrings.igx_grid_advanced_filter_and_group}}</span>\n </button>\n\n <button igxButton=\"outlined\" [displayDensity]=\"displayDensity\" (click)=\"addOrGroup()\">\n <igx-icon>add</igx-icon>\n <span>{{grid.resourceStrings.igx_grid_advanced_filter_or_group}}</span>\n </button>\n\n <div class=\"igx-filter-empty\">\n <h6 class=\"igx-filter-empty__title\">\n {{grid.resourceStrings.igx_grid_advanced_filter_initial_text}}\n </h6>\n </div>\n </ng-container>\n\n <ng-template #addExpressionsTemplate let-expressionItem let-afterExpression=\"afterExpression\">\n <button #addConditionButton\n igxButton=\"outlined\"\n [displayDensity]=\"displayDensity\"\n [disabled]=\"hasEditedExpression\"\n (click)=\"addCondition(expressionItem, afterExpression)\"\n >\n <igx-icon>add</igx-icon>\n <span>{{grid.resourceStrings.igx_grid_advanced_filter_add_condition}}</span>\n </button>\n\n <button igxButton=\"outlined\"\n [displayDensity]=\"displayDensity\"\n [disabled]=\"hasEditedExpression\"\n (click)=\"addAndGroup(expressionItem, afterExpression)\">\n <igx-icon>add</igx-icon>\n <span>{{grid.resourceStrings.igx_grid_advanced_filter_and_group}}</span>\n </button>\n\n <button igxButton=\"outlined\"\n [displayDensity]=\"displayDensity\"\n [disabled]=\"hasEditedExpression\"\n (click)=\"addOrGroup(expressionItem, afterExpression)\">\n <igx-icon>add</igx-icon>\n <span>{{grid.resourceStrings.igx_grid_advanced_filter_or_group}}</span>\n </button>\n\n </ng-template>\n\n <ng-template #filterOperandTemplate let-expressionItem>\n <div *ngIf=\"!expressionItem.inEditMode\"\n class=\"igx-filter-tree__expression-item\"\n (mouseenter)=\"expressionItem.hovered = true\"\n (mouseleave)=\"expressionItem.hovered = false\"\n >\n <igx-chip [data]=\"expressionItem\"\n [displayDensity]=\"displayDensity === 'compact' ? 'cosy' : displayDensity\"\n [removable]=\"true\"\n [selected]=\"expressionItem.selected\"\n (keydown)=\"invokeClick($event)\"\n (click)=\"onChipClick(expressionItem)\"\n (dblclick)=\"onChipDblClick(expressionItem)\"\n (remove)=\"onChipRemove(expressionItem)\"\n (selectedChanged)=\"onChipSelectionEnd()\"\n >\n <span igxPrefix class=\"igx-filter-tree__expression-column\">{{ expressionItem.columnHeader || expressionItem.expression.fieldName }}</span>\n <igx-prefix>\n <igx-icon family=\"imx-icons\" [name]=\"expressionItem.expression.condition.iconName\">\n </igx-icon>\n </igx-prefix>\n <span class=\"igx-filter-tree__expression-condition\">\n {{ getConditionFriendlyName(expressionItem.expression.condition.name) }}\n </span>\n <span igxSuffix *ngIf=\"!expressionItem.expression.condition.isUnary\">\n {{\n isDate(expressionItem.expression.searchVal)\n ? getFormatter(expressionItem.expression.fieldName)\n ? (expressionItem.expression.searchVal | columnFormatter:getFormatter(expressionItem.expression.fieldName):undefined)\n : (expressionItem.expression.searchVal | date:getFormat(expressionItem.expression.fieldName):undefined:grid.locale)\n : expressionItem.expression.searchVal\n }}\n </span>\n </igx-chip>\n <div class=\"igx-filter-tree__expression-actions\"\n *ngIf=\"(expressionItem.selected && selectedExpressions.length === 1) || expressionItem.hovered\">\n <igx-icon\n tabindex=\"0\"\n (keydown)=\"invokeClick($event)\"\n (click)=\"enterExpressionEdit(expressionItem)\">\n edit\n </igx-icon>\n <igx-icon\n tabindex=\"0\"\n (keydown)=\"invokeClick($event)\"\n (click)=\"enterExpressionAdd(expressionItem)\"\n *ngIf=\"!expressionItem.inAddMode && (expressionItem.parent !== currentGroup || expressionItem !== currentGroup.children[currentGroup.children.length - 1])\"\n >\n add\n </igx-icon>\n </div>\n </div>\n\n <div *ngIf=\"expressionItem.inEditMode\"\n #editingInputsContainer\n class=\"igx-filter-tree__inputs\"\n >\n <igx-select #columnSelect\n type=\"box\"\n [displayDensity]=\"'compact'\"\n [overlaySettings]=\"columnSelectOverlaySettings\"\n [placeholder]=\"grid.resourceStrings.igx_grid_advanced_filter_column_placeholder\"\n [(ngModel)]=\"selectedColumn\">\n <igx-select-item *ngFor=\"let column of filterableColumns\" [value]=\"column\">\n {{column.header || column.field}}\n </igx-select-item>\n </igx-select>\n\n <igx-select #conditionSelect\n type=\"box\"\n [displayDensity]=\"'compact'\"\n [overlaySettings]=\"conditionSelectOverlaySettings\"\n [placeholder]=\"grid.resourceStrings.igx_grid_filter_condition_placeholder\"\n [(ngModel)]=\"selectedCondition\"\n [disabled]=\"!selectedColumn\">\n <igx-prefix *ngIf=\"selectedColumn && conditionSelect.value && selectedColumn.filters.condition(conditionSelect.value)\">\n <igx-icon family=\"imx-icons\" [name]=\"selectedColumn.filters.condition(conditionSelect.value).iconName\">\n </igx-icon>\n </igx-prefix>\n <igx-select-item *ngFor=\"let condition of getConditionList()\" [value]=\"condition\" [text]=\"getConditionFriendlyName(condition)\">\n <div class=\"igx-grid__filtering-dropdown-items\">\n <igx-icon family=\"imx-icons\"\n [name]=\"selectedColumn.filters.condition(condition).iconName\">\n </igx-icon>\n <span class=\"igx-grid__filtering-dropdown-text\">{{getConditionFriendlyName(condition)}}</span>\n </div>\n </igx-select-item>\n </igx-select>\n\n <igx-input-group *ngIf=\"!selectedColumn || (selectedColumn.dataType !== 'date' && selectedColumn.dataType !== 'time' && selectedColumn.dataType !== 'dateTime')\"\n type=\"box\"\n [displayDensity]=\"'compact'\">\n <input #searchValueInput\n igxInput\n [disabled]=\"!selectedColumn || !selectedCondition\n || (selectedColumn && selectedColumn.filters.condition(selectedCondition).isUnary)\"\n [type]=\"selectedColumn && selectedColumn.dataType === 'number' ? 'number' : 'text'\"\n [placeholder]=\"grid.resourceStrings.igx_grid_advanced_filter_value_placeholder\"\n [(ngModel)]=\"searchValue\"/>\n </igx-input-group>\n\n <igx-date-picker #picker *ngIf=\"selectedColumn && selectedColumn.dataType === 'date'\"\n [(value)]=\"searchValue\"\n (keydown)=\"openPicker($event)\"\n [formatter]=\"selectedColumn.formatter\"\n [displayFormat]=\"selectedColumn.pipeArgs.format\"\n (click)=\"picker.open()\"\n type=\"box\"\n [readOnly]=\"true\"\n [displayDensity]=\"'compact'\"\n [locale]=\"grid.locale\"\n [outlet]=\"grid.outlet\"\n [displayFormat]=\"selectedColumn.pipeArgs.format\"\n [placeholder]=\"grid.resourceStrings.igx_grid_filter_row_date_placeholder\"\n [disabled]=\"!selectedColumn || !selectedCondition\n || (selectedColumn && selectedColumn.filters.condition(selectedCondition).isUnary)\">\n <!-- disable default icons -->\n <igx-picker-toggle></igx-picker-toggle>\n <igx-picker-clear></igx-picker-clear>\n </igx-date-picker>\n\n <igx-time-picker #picker *ngIf=\"selectedColumn && selectedColumn.dataType === 'time'\"\n [inputFormat]=\"selectedColumn.defaultTimeFormat\"\n [(value)]=\"searchValue\"\n [formatter]=\"selectedColumn.formatter\"\n [locale]=\"grid.locale\"\n [outlet]=\"grid.outlet\"\n (click)=\"picker.open()\"\n (keydown)=\"openPicker($event)\"\n [displayDensity]=\"'compact'\"\n [placeholder]=\"grid.resourceStrings.igx_grid_filter_row_time_placeholder\"\n type=\"box\"\n [readOnly]=\"true\"\n [disabled]=\"!selectedColumn || !selectedCondition ||\n (selectedColumn && selectedColumn.filters.condition(selectedCondition).isUnary)\">\n <!-- disable default icons -->\n <igx-picker-toggle></igx-picker-toggle>\n <igx-picker-clear></igx-picker-clear>\n </igx-time-picker>\n\n <igx-input-group #inputGroup type=\"box\" *ngIf=\"selectedColumn && selectedColumn.dataType === 'dateTime'\"\n type=\"box\"\n [displayDensity]=\"'compact'\">\n <input #input igxInput tabindex=\"0\"\n [placeholder]=\"grid.resourceStrings.igx_grid_filter_row_date_placeholder\"\n [igxDateTimeEditor]=\"selectedColumn.defaultDateTimeFormat\"\n [(ngModel)]=\"searchValue\"\n [disabled]=\"!selectedColumn || !selectedCondition || (selectedColumn && selectedColumn.filters.condition(selectedCondition).isUnary)\"/>\n </igx-input-group>\n\n <div class=\"igx-filter-tree__inputs-actions\">\n <button igxButton=\"icon\"\n [displayDensity]=\"displayDensity\"\n [disabled]=\"!operandCanBeCommitted()\"\n (click)=\"commitOperandEdit()\">\n <igx-icon>check</igx-icon>\n </button>\n <button igxButton=\"icon\"\n [displayDensity]=\"displayDensity\"\n (click)=\"cancelOperandEdit()\">\n <igx-icon>close</igx-icon>\n </button>\n </div>\n </div>\n\n <div *ngIf=\"expressionItem.inAddMode\"\n #addModeContainer\n class=\"igx-filter-tree__buttons\"\n >\n <ng-container *ngTemplateOutlet=\"addExpressionsTemplate; context: context(expressionItem.parent, expressionItem)\"></ng-container>\n <button igxButton=\"icon\"\n [displayDensity]=\"displayDensity\"\n (click)=\"cancelOperandAdd()\">\n <igx-icon>close</igx-icon>\n </button>\n </div>\n\n </ng-template>\n\n <ng-template #expressionTreeTemplate let-expressionItem>\n <div class=\"igx-filter-tree\">\n <div tabindex=\"0\"\n class=\"igx-filter-tree__line\"\n [ngClass]=\"{\n 'igx-filter-tree__line--and': expressionItem.operator === 0,\n 'igx-filter-tree__line--or': expressionItem.operator === 1,\n 'igx-filter-tree__line--selected': expressionItem.selected\n }\"\n (keydown)=\"invokeClick($event)\"\n (click)=\"onGroupClick(expressionItem)\"\n ></div>\n\n <div class=\"igx-filter-tree__expression\">\n <ng-container *ngFor=\"let expr of expressionItem.children\">\n <ng-container *ngTemplateOutlet=\"isExpressionGroup(expr) ? expressionTreeTemplate : filterOperandTemplate; context: context(expr)\"></ng-container>\n </ng-container>\n <div *ngIf=\"currentGroup === expressionItem\"\n #currentGroupButtonsContainer\n class=\"igx-filter-tree__buttons\">\n <ng-container *ngTemplateOutlet=\"addExpressionsTemplate; context: context(expressionItem)\"></ng-container>\n <button igxButton=\"outlined\"\n *ngIf=\"expressionItem !== rootGroup\"\n [displayDensity]=\"displayDensity\"\n [disabled]=\"hasEditedExpression || expressionItem.children.length < 2\"\n (click)=\"endGroup(expressionItem)\">\n <span>{{grid.resourceStrings.igx_grid_advanced_filter_end_group}}</span>\n </button>\n </div>\n </div>\n </div>\n\n </ng-template>\n\n <ng-container *ngIf=\"rootGroup\">\n <ng-container *ngTemplateOutlet=\"expressionTreeTemplate; context: context(rootGroup)\"></ng-container>\n </ng-container>\n\n <div igxToggle\n class=\"igx-filter-contextual-menu\"\n (keydown)=\"onKeyDown($event)\"\n (closed)=\"contextMenuClosed()\"\n [ngClass]=\"{\n 'igx-filter-contextual-menu--cosy': displayDensity === 'cosy',\n 'igx-filter-contextual-menu--compact': displayDensity === 'compact'\n }\"\n >\n <button igxButton=\"icon\"\n class=\"igx-filter-contextual-menu__close-btn\"\n (click)=\"clearSelection()\"\n >\n <igx-icon>close</igx-icon>\n </button>\n\n <ng-container *ngIf=\"contextualGroup\">\n <igx-buttongroup [displayDensity]=\"displayDensity\"\n [multiSelection]=\"false\"\n [values]=\"filteringLogics\"\n type=\"outline\"\n (selected)=\"selectFilteringLogic($event)\">\n </igx-buttongroup>\n\n <button\n igxButton=\"outlined\"\n [displayDensity]=\"displayDensity\"\n [disabled]=\"!contextualGroup.parent\"\n (click)=\"ungroup()\"\n >\n <igx-icon family=\"imx-icons\" name=\"ungroup\"></igx-icon>\n <span>{{grid.resourceStrings.igx_grid_advanced_filter_ungroup}}</span>\n </button>\n <button\n igxButton=\"outlined\"\n [displayDensity]=\"displayDensity\"\n (click)=\"deleteGroup()\"\n class=\"igx-filter-contextual-menu__delete-btn\"\n >\n <igx-icon>delete</igx-icon>\n <span>{{grid.resourceStrings.igx_grid_advanced_filter_delete}}</span>\n </button>\n </ng-container>\n <ng-container *ngIf=\"!contextualGroup\">\n <button\n igxButton=\"outlined\"\n [displayDensity]=\"displayDensity\"\n (click)=\"createAndGroup()\"\n >\n {{grid.resourceStrings.igx_grid_advanced_filter_create_and_group}}\n </button>\n <button\n igxButton=\"outlined\"\n [displayDensity]=\"displayDensity\"\n (click)=\"createOrGroup()\"\n >\n {{grid.resourceStrings.igx_grid_advanced_filter_create_or_group}}\n </button>\n <button\n igxButton=\"outlined\"\n [displayDensity]=\"displayDensity\"\n (click)=\"deleteFilters()\"\n class=\"igx-filter-contextual-menu__delete-btn\"\n >\n {{grid.resourceStrings.igx_grid_advanced_filter_delete_filters}}\n </button>\n </ng-container>\n </div>\n </article>\n\n <footer class=\"igx-excel-filter__secondary-footer\">\n <div class=\"igx-excel-filter__clear\">\n <button\n igxButton=\"flat\"\n type=\"button\"\n [displayDensity]=\"displayDensity\"\n (click)=\"onClearButtonClick($event)\">\n {{ grid.resourceStrings.igx_grid_excel_custom_dialog_clear }}\n </button>\n </div>\n <div class=\"igx-excel-filter__cancel\">\n <button\n igxButton=\"flat\"\n type=\"button\"\n [displayDensity]=\"displayDensity\"\n (click)=\"cancelChanges()\">\n {{ grid.resourceStrings.igx_grid_excel_cancel }}\n </button>\n </div>\n <div class=\"igx-excel-filter__apply\">\n <button\n igxButton=\"raised\"\n type=\"button\"\n [displayDensity]=\"displayDensity\"\n (click)=\"onApplyButtonClick($event)\">\n {{ grid.resourceStrings.igx_grid_excel_apply }}\n </button>\n </div>\n </footer>\n</article>\n<div #overlayOutlet\n igxOverlayOutlet\n class=\"igx-advanced-filter__outlet\"\n (pointerdown)=\"onOutletPointerDown($event)\">\n</div>\n"
|
|
46514
46671
|
},] }
|
|
46515
46672
|
];
|
|
46516
46673
|
IgxAdvancedFilteringDialogComponent.ctorParameters = () => [
|
|
@@ -54408,14 +54565,12 @@ class IgxGridBaseDirective extends DisplayDensityBase {
|
|
|
54408
54565
|
}
|
|
54409
54566
|
_shouldAutoSize(renderedHeight) {
|
|
54410
54567
|
this.tbody.nativeElement.style.display = 'none';
|
|
54411
|
-
|
|
54568
|
+
const res = !this.nativeElement.parentElement ||
|
|
54412
54569
|
this.nativeElement.parentElement.clientHeight === 0 ||
|
|
54413
|
-
this.nativeElement.parentElement.clientHeight === renderedHeight
|
|
54414
|
-
if (!this.platform.isChromium && !this.platform.isFirefox) {
|
|
54570
|
+
this.nativeElement.parentElement.clientHeight === renderedHeight ||
|
|
54415
54571
|
// If grid causes the parent container to extend (for example when container is flex)
|
|
54416
54572
|
// we should always auto-size since the actual size of the container will continuously change as the grid renders elements.
|
|
54417
|
-
|
|
54418
|
-
}
|
|
54573
|
+
this.checkContainerSizeChange();
|
|
54419
54574
|
this.tbody.nativeElement.style.display = '';
|
|
54420
54575
|
return res;
|
|
54421
54576
|
}
|
|
@@ -57587,7 +57742,7 @@ class IgxGridRowClassesPipe {
|
|
|
57587
57742
|
this.gridAPI = gridAPI;
|
|
57588
57743
|
this.row = new IgxGridRow(this.gridAPI.grid, -1, {});
|
|
57589
57744
|
}
|
|
57590
|
-
transform(cssClasses, row, editMode, selected, dirty, deleted, dragging, index, mrl, filteredOut, _) {
|
|
57745
|
+
transform(cssClasses, row, editMode, selected, dirty, deleted, dragging, index, mrl, filteredOut, _rowData, _) {
|
|
57591
57746
|
const result = new Set(['igx-grid__tr', index % 2 ? row.grid.evenRowCSS : row.grid.oddRowCSS]);
|
|
57592
57747
|
const mapping = [
|
|
57593
57748
|
[selected, 'igx-grid__tr--selected'],
|
|
@@ -62287,7 +62442,9 @@ class IgxGridComponent extends IgxGridBaseDirective {
|
|
|
62287
62442
|
if (changes && this.columnList.length > 0) {
|
|
62288
62443
|
changes.forEachAddedItem((rec) => {
|
|
62289
62444
|
const col = this.getColumnByName(rec.item.fieldName);
|
|
62290
|
-
col
|
|
62445
|
+
if (col) {
|
|
62446
|
+
col.hidden = true;
|
|
62447
|
+
}
|
|
62291
62448
|
});
|
|
62292
62449
|
changes.forEachRemovedItem((rec) => {
|
|
62293
62450
|
const col = this.getColumnByName(rec.item.fieldName);
|
|
@@ -62575,7 +62732,7 @@ IgxGridComponent.decorators = [
|
|
|
62575
62732
|
IgxForOfScrollSyncService
|
|
62576
62733
|
],
|
|
62577
62734
|
selector: 'igx-grid',
|
|
62578
|
-
template: "<!-- Toolbar area -->\n<ng-content select=\"igx-grid-toolbar\"></ng-content>\n\n<!-- Group-by area -->\n<ng-container *ngIf=\"showGroupArea && (groupingExpressions.length > 0 || hasGroupableColumns)\">\n <igx-grid-group-by-area #groupArea [style.flex-basis.px]='outerWidth'\n [grid]=\"this\"\n [expressions]=\"groupingExpressions\"\n [sortingExpressions]=\"sortingExpressions\"\n [density]=\"displayDensity\"\n [dropAreaTemplate]=\"dropAreaTemplate\"\n [dropAreaMessage]=\"dropAreaMessage\"\n >\n </igx-grid-group-by-area>\n</ng-container>\n\n<!-- Grid table head row area -->\n<igx-grid-header-row class=\"igx-grid-thead\" tabindex=\"0\"\n [grid]=\"this\"\n [hasMRL]=\"hasColumnLayouts\"\n [density]=\"displayDensity\"\n [activeDescendant]=\"activeDescendant\"\n [width]=\"calcWidth\"\n [pinnedColumnCollection]=\"pinnedColumns\"\n [unpinnedColumnCollection]=\"unpinnedColumns\"\n (keydown.meta.c)=\"copyHandler($event)\"\n (keydown.control.c)=\"copyHandler($event)\"\n (copy)=\"copyHandler($event)\"\n (keydown)=\"navigation.headerNavigation($event)\"\n (scroll)=\"preventHeaderScroll($event)\"\n (focus)=\"navigation.focusFirstCell()\"\n>\n</igx-grid-header-row>\n\n<div igxGridBody (keydown.control.c)=\"copyHandler($event)\" (copy)=\"copyHandler($event)\" class=\"igx-grid__tbody\" role=\"rowgroup\">\n <div class=\"igx-grid__tbody-content\" tabindex=\"0\" [attr.role]=\"dataView.length ? null : 'row'\" (keydown)=\"navigation.handleNavigation($event)\" (focus)=\"navigation.focusTbody($event)\"\n (dragStop)=\"selectionService.dragMode = $event\" (scroll)='preventContainerScroll($event)'\n (dragScroll)=\"dragScroll($event)\" [igxGridDragSelect]=\"selectionService.dragMode\"\n [style.height.px]='totalHeight' [style.width.px]='calcWidth || null' #tbody [attr.aria-activedescendant]=\"activeDescendant\">\n <span *ngIf=\"hasMovableColumns && columnInDrag && pinnedColumns.length <= 0\"\n [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n class=\"igx-grid__scroll-on-drag-left\"></span>\n <span *ngIf=\"hasMovableColumns && columnInDrag && pinnedColumns.length > 0\"\n [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n class=\"igx-grid__scroll-on-drag-pinned\" [style.left.px]=\"pinnedWidth\"></span>\n <ng-container *ngTemplateOutlet=\"hasPinnedRecords && isRowPinningToTop ? pinnedRecordsTemplate : null\">\n </ng-container>\n <ng-template #pinnedRecordsTemplate>\n <ng-container *ngIf='data\n | gridTransaction:id:pipeTrigger\n | visibleColumns:hasVisibleColumns\n | gridAddRow:true:pipeTrigger\n | gridRowPinning:id:true:pipeTrigger\n | gridFiltering:filteringExpressionsTree:filterStrategy:advancedFilteringExpressionsTree:id:pipeTrigger:filteringPipeTrigger:true\n | gridSort:sortingExpressions:sortStrategy:id:pipeTrigger:true as pinnedData'>\n <div #pinContainer *ngIf='pinnedData.length > 0'\n [ngClass]=\"{\n 'igx-grid__tr--pinned-bottom': !isRowPinningToTop,\n 'igx-grid__tr--pinned-top': isRowPinningToTop\n }\"\n class='igx-grid__tr--pinned' [style.width.px]='calcWidth'>\n <ng-container *ngFor=\"let rowData of pinnedData; let rowIndex = index\">\n <ng-container *ngTemplateOutlet=\"pinned_record_template; context: getContext(rowData, rowIndex, true)\">\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-template>\n <ng-template igxGridFor let-rowData [igxGridForOf]=\"data\n | gridTransaction:id:pipeTrigger\n | visibleColumns:hasVisibleColumns\n | gridFiltering:filteringExpressionsTree:filterStrategy:advancedFilteringExpressionsTree:id:pipeTrigger:filteringPipeTrigger\n | gridSort:sortingExpressions:sortStrategy:id:pipeTrigger\n | gridGroupBy:groupingExpressions:groupingExpansionState:groupStrategy:groupsExpanded:id:groupsRecords:pipeTrigger\n | gridPaging:paginator?.page:paginator?.perPage:id:pipeTrigger\n | gridSummary:hasSummarizedColumns:summaryCalculationMode:summaryPosition:id:showSummaryOnCollapse:pipeTrigger:summaryPipeTrigger\n | gridDetails:hasDetails:expansionStates:pipeTrigger\n | gridAddRow:false:pipeTrigger\n | gridRowPinning:id:false:pipeTrigger\"\n let-rowIndex=\"index\" [igxForScrollOrientation]=\"'vertical'\" [igxForScrollContainer]='verticalScroll'\n [igxForContainerSize]='calcHeight'\n [igxForItemSize]=\"hasColumnLayouts ? rowHeight * multiRowLayoutRowSize + 1 : renderedRowHeight\"\n [igxForTrackBy]='trackChanges'\n #verticalScrollContainer (chunkPreload)=\"dataLoading($event)\" (dataChanging)=\"dataRebinding($event)\" (dataChanged)=\"dataRebound($event)\">\n <ng-template\n [igxTemplateOutlet]='getRowTemplate(rowData)'\n [igxTemplateOutletContext]='getContext(rowData, rowIndex)'\n (cachedViewLoaded)='cachedViewLoaded($event)'\n (viewCreated)='viewCreatedHandler($event)'\n (viewMoved)='viewMovedHandler($event)'>\n </ng-template>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"hasPinnedRecords && !isRowPinningToTop ? pinnedRecordsTemplate : null\">\n </ng-container>\n <ng-template #record_template let-rowIndex=\"index\" let-rowData let-disabledRow=\"disabled\">\n <igx-grid-row [gridID]=\"id\" [index]=\"rowIndex\" [rowData]=\"rowData\" [disabled]=\"disabledRow\"\n [ngClass]=\"rowClasses | igxGridRowClasses:row:row.inEditMode:row.selected:row.dirty:row.deleted:row.dragging:rowIndex:hasColumnLayouts:false:pipeTrigger\"\n [ngStyle]=\"rowStyles | igxGridRowStyles:rowData:rowIndex:pipeTrigger\" #row>\n </igx-grid-row>\n </ng-template>\n <ng-template #pinned_record_template let-rowIndex=\"index\" let-rowData>\n <igx-grid-row [gridID]=\"id\" [index]=\"rowIndex\" [rowData]=\"rowData\"\n [ngClass]=\"rowClasses | igxGridRowClasses:row:row.inEditMode:row.selected:row.dirty:row.deleted:row.dragging:rowIndex:hasColumnLayouts:false:pipeTrigger\"\n [ngStyle]=\"rowStyles | igxGridRowStyles:rowData:rowIndex:pipeTrigger\"#row #pinnedRow>\n </igx-grid-row>\n </ng-template>\n <ng-template #group_template let-rowIndex=\"index\" let-rowData>\n <igx-grid-groupby-row [gridID]=\"id\" [index]=\"rowIndex\" [groupRow]=\"rowData\" [hideGroupRowSelectors]=\"hideRowSelectors\" [rowDraggable]=\"rowDraggable\" #row>\n </igx-grid-groupby-row>\n </ng-template>\n <ng-template #summary_template let-rowIndex=\"index\" let-rowData>\n <igx-grid-summary-row role=\"row\" [gridID]=\"id\" [summaries]=\"rowData.summaries\" [index]=\"rowIndex\"\n class=\"igx-grid__summaries--body\" #summaryRow>\n </igx-grid-summary-row>\n </ng-template>\n <ng-template #detail_template_container let-rowIndex=\"index\" let-rowData>\n <div detail='true' style=\"overflow: auto; width: 100%;\" id=\"{{id}}_{{rowIndex}}\" (pointerdown)='detailsViewFocused(detailsContainer, rowIndex)' #detailsContainer [attr.data-rowindex]='rowIndex'\n [ngClass]=\"{\n 'igx-grid__tr-container': true,\n 'igx-grid__tr-container--active': isDetailActive(rowIndex)\n }\">\n <div class=\"igx-grid__hierarchical-indent\" style='display: flex;'>\n <ng-container *ngIf=\"this.groupingExpressions.length > 0\">\n <div class=\"igx-grid__row-indentation igx-grid__row-indentation--level-{{groupingExpressions.length}}\"></div>\n </ng-container>\n <ng-template\n [ngTemplateOutlet]='detailTemplate.first'\n [ngTemplateOutletContext]='getDetailsContext(rowData, rowIndex)'>\n </ng-template>\n </div>\n </div>\n </ng-template>\n\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n <div class=\"igx-grid__row-editing-outlet\" igxOverlayOutlet #igxRowEditingOverlayOutlet></div>\n <igc-trial-watermark></igc-trial-watermark>\n </div>\n <div igxToggle #loadingOverlay>\n <igx-circular-bar [indeterminate]=\"true\" *ngIf='shouldOverlayLoading'>\n </igx-circular-bar>\n </div>\n <span *ngIf=\"hasMovableColumns && columnInDrag\" [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\"\n id=\"right\" class=\"igx-grid__scroll-on-drag-right\"></span>\n <div [hidden]='!hasVerticalScroll()' class=\"igx-grid__tbody-scrollbar\" [style.width.px]=\"scrollSize\" (pointerdown)=\"$event.preventDefault()\">\n <div class=\"igx-grid__tbody-scrollbar-start\" [style.height.px]=' isRowPinningToTop ? pinnedRowHeight : 0'></div>\n <div class=\"igx-grid__tbody-scrollbar-main\" [style.height.px]='calcHeight'>\n <ng-template igxGridFor [igxGridForOf]='[]' #verticalScrollHolder></ng-template>\n </div>\n <div class=\"igx-grid__tbody-scrollbar-end\" [style.height.px]='!isRowPinningToTop ? pinnedRowHeight : 0'></div>\n </div>\n\n <div class=\"igx-grid__addrow-snackbar\">\n <igx-snackbar #addRowSnackbar [outlet]=\"igxBodyOverlayOutlet\" [actionText]=\"resourceStrings.igx_grid_snackbar_addrow_actiontext\" [displayTime]='snackbarDisplayTime'>{{resourceStrings.igx_grid_snackbar_addrow_label}}</igx-snackbar>\n </div>\n\n <div #igxBodyOverlayOutlet=\"overlay-outlet\" igxOverlayOutlet></div>\n</div>\n\n\n<div class=\"igx-grid__tfoot\" role=\"rowgroup\" [style.height.px]='summariesHeight' #tfoot>\n <div tabindex=\"0\" (focus)=\"navigation.focusFirstCell(false)\" (keydown)=\"navigation.summaryNav($event)\" [attr.aria-activedescendant]=\"activeDescendant\">\n <igx-grid-summary-row [style.width.px]='calcWidth' [style.height.px]='summariesHeight'\n *ngIf=\"hasSummarizedColumns && rootSummariesEnabled\" [gridID]=\"id\" role=\"row\"\n [summaries]=\"id | igxGridSummaryDataPipe:summaryService.retriggerRootPipe\" [index]=\"dataView.length\"\n class=\"igx-grid__summaries\" #summaryRow>\n </igx-grid-summary-row>\n <div class=\"igx-grid__tfoot-thumb\" [hidden]='!hasVerticalScroll()' [style.height.px]='summariesHeight'\n [style.width.px]=\"scrollSize\"></div>\n </div>\n</div>\n\n<div class=\"igx-grid__scroll\" [style.height.px]=\"scrollSize\" #scr [hidden]=\"isHorizontalScrollHidden\" (pointerdown)=\"$event.preventDefault()\">\n <div class=\"igx-grid__scroll-start\" [style.width.px]='isPinningToStart ? pinnedWidth : headerFeaturesWidth' [style.min-width.px]='isPinningToStart ? pinnedWidth : headerFeaturesWidth'></div>\n <div class=\"igx-grid__scroll-main\" [style.width.px]='unpinnedWidth'>\n <ng-template igxGridFor [igxGridForOf]='EMPTY_DATA' #scrollContainer>\n </ng-template>\n </div>\n <div class=\"igx-grid__scroll-end\" [style.float]='\"right\"' [style.width.px]='pinnedWidth' [style.min-width.px]='pinnedWidth' [hidden]=\"pinnedWidth === 0 || isPinningToStart\"></div>\n</div>\n\n<div class=\"igx-grid__footer\" #footer>\n <ng-content select=\"igx-grid-footer\"></ng-content>\n <ng-container *ngIf=\"totalRecords || pagingMode === 1\">\n <ng-content select=\"igx-paginator\"></ng-content>\n </ng-container>\n</div>\n\n<ng-template #emptyFilteredGrid>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{emptyFilteredGridMessage}}</span>\n <span *ngIf='showAddButton'>\n <ng-container *ngTemplateOutlet='addRowEmptyTemplate || defaultAddRowEmptyTemplate'></ng-container>\n </span>\n </span>\n</ng-template>\n\n<ng-template #defaultEmptyGrid>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{emptyGridMessage}}</span>\n <span *ngIf='showAddButton'>\n <ng-container *ngTemplateOutlet='addRowEmptyTemplate || defaultAddRowEmptyTemplate'></ng-container>\n </span>\n </span>\n</ng-template>\n\n<ng-template #defaultAddRowEmptyTemplate>\n <button igxButton=\"raised\" igxRipple (click)=\"this.crudService.enterAddRowMode(null, false, $event)\">\n {{resourceStrings.igx_grid_add_row_label}}\n </button>\n</ng-template>\n\n<ng-template #defaultLoadingGrid>\n <div class=\"igx-grid__loading\">\n <igx-circular-bar [indeterminate]=\"true\">\n </igx-circular-bar>\n </div>\n</ng-template>\n\n<ng-template #defaultExpandedTemplate>\n <igx-icon role=\"button\" class=\"igx-grid__group-expand-btn\"\n [ngClass]=\"{\n 'igx-grid__group-expand-btn--push': filteringService.isFilterRowVisible\n}\">unfold_less</igx-icon>\n</ng-template>\n\n <ng-template #defaultCollapsedTemplate>\n <igx-icon role=\"button\" class=\"igx-grid__group-expand-btn\"\n [ngClass]=\"{\n 'igx-grid__group-expand-btn--push': filteringService.isFilterRowVisible\n}\">unfold_more</igx-icon>\n</ng-template>\n\n<div *ngIf=\"rowEditable\" igxToggle #rowEditingOverlay>\n <div [className]=\"bannerClass\">\n <ng-container\n *ngTemplateOutlet=\"rowEditContainer; context: { rowChangesCount: rowChangesCount, endEdit: this.endEdit.bind(this) }\">\n </ng-container>\n </div>\n</div>\n\n<ng-template #defaultRowEditText>\n You have {{ rowChangesCount }} changes in this row\n</ng-template>\n\n<ng-template #defaultRowEditActions>\n <button igxButton igxRowEditTabStop (click)=\"this.endRowEditTabStop(false, $event)\">{{ this.resourceStrings.igx_grid_row_edit_btn_cancel }}</button>\n <button igxButton igxRowEditTabStop (click)=\"this.endRowEditTabStop(true, $event)\">{{ this.resourceStrings.igx_grid_row_edit_btn_done }}</button>\n</ng-template>\n\n<ng-template #defaultRowEditTemplate>\n <div class=\"igx-banner__message\">\n <span class=\"igx-banner__text\">\n <ng-container\n *ngTemplateOutlet=\"this.crudService.row?.getClassName() === 'IgxAddRow' ? rowAddText : rowEditText ? rowEditText : defaultRowEditText;\n context: { $implicit: this.crudService.row?.getClassName() !== 'IgxAddRow' ? rowChangesCount : null }\">\n </ng-container>\n </span>\n </div>\n <div class=\"igx-banner__actions\">\n <div class=\"igx-banner__row\">\n <ng-container\n *ngTemplateOutlet=\"rowEditActions ? rowEditActions : defaultRowEditActions; context: { $implicit: this.endEdit.bind(this) }\">\n </ng-container>\n </div>\n </div>\n</ng-template>\n\n<ng-template #dragIndicatorIconBase>\n <igx-icon>drag_indicator</igx-icon>\n</ng-template>\n\n<igx-grid-column-resizer *ngIf=\"colResizingService.showResizer\"></igx-grid-column-resizer>\n<div class=\"igx-grid__loading-outlet\" #igxLoadingOverlayOutlet igxOverlayOutlet></div>\n<div class=\"igx-grid__outlet\" #igxFilteringOverlayOutlet igxOverlayOutlet></div>\n"
|
|
62735
|
+
template: "<!-- Toolbar area -->\n<ng-content select=\"igx-grid-toolbar\"></ng-content>\n\n<!-- Group-by area -->\n<ng-container *ngIf=\"showGroupArea && (groupingExpressions.length > 0 || hasGroupableColumns)\">\n <igx-grid-group-by-area #groupArea [style.flex-basis.px]='outerWidth'\n [grid]=\"this\"\n [expressions]=\"groupingExpressions\"\n [sortingExpressions]=\"sortingExpressions\"\n [density]=\"displayDensity\"\n [dropAreaTemplate]=\"dropAreaTemplate\"\n [dropAreaMessage]=\"dropAreaMessage\"\n >\n </igx-grid-group-by-area>\n</ng-container>\n\n<!-- Grid table head row area -->\n<igx-grid-header-row class=\"igx-grid-thead\" tabindex=\"0\"\n [grid]=\"this\"\n [hasMRL]=\"hasColumnLayouts\"\n [density]=\"displayDensity\"\n [activeDescendant]=\"activeDescendant\"\n [width]=\"calcWidth\"\n [pinnedColumnCollection]=\"pinnedColumns\"\n [unpinnedColumnCollection]=\"unpinnedColumns\"\n (keydown.meta.c)=\"copyHandler($event)\"\n (keydown.control.c)=\"copyHandler($event)\"\n (copy)=\"copyHandler($event)\"\n (keydown)=\"navigation.headerNavigation($event)\"\n (scroll)=\"preventHeaderScroll($event)\"\n (focus)=\"navigation.focusFirstCell()\"\n>\n</igx-grid-header-row>\n\n<div igxGridBody (keydown.control.c)=\"copyHandler($event)\" (copy)=\"copyHandler($event)\" class=\"igx-grid__tbody\" role=\"rowgroup\">\n <div class=\"igx-grid__tbody-content\" tabindex=\"0\" [attr.role]=\"dataView.length ? null : 'row'\" (keydown)=\"navigation.handleNavigation($event)\" (focus)=\"navigation.focusTbody($event)\"\n (dragStop)=\"selectionService.dragMode = $event\" (scroll)='preventContainerScroll($event)'\n (dragScroll)=\"dragScroll($event)\" [igxGridDragSelect]=\"selectionService.dragMode\"\n [style.height.px]='totalHeight' [style.width.px]='calcWidth || null' #tbody [attr.aria-activedescendant]=\"activeDescendant\">\n <span *ngIf=\"hasMovableColumns && columnInDrag && pinnedColumns.length <= 0\"\n [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n class=\"igx-grid__scroll-on-drag-left\"></span>\n <span *ngIf=\"hasMovableColumns && columnInDrag && pinnedColumns.length > 0\"\n [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n class=\"igx-grid__scroll-on-drag-pinned\" [style.left.px]=\"pinnedWidth\"></span>\n <ng-container *ngTemplateOutlet=\"hasPinnedRecords && isRowPinningToTop ? pinnedRecordsTemplate : null\">\n </ng-container>\n <ng-template #pinnedRecordsTemplate>\n <ng-container *ngIf='data\n | gridTransaction:id:pipeTrigger\n | visibleColumns:hasVisibleColumns\n | gridAddRow:true:pipeTrigger\n | gridRowPinning:id:true:pipeTrigger\n | gridFiltering:filteringExpressionsTree:filterStrategy:advancedFilteringExpressionsTree:id:pipeTrigger:filteringPipeTrigger:true\n | gridSort:sortingExpressions:sortStrategy:id:pipeTrigger:true as pinnedData'>\n <div #pinContainer *ngIf='pinnedData.length > 0'\n [ngClass]=\"{\n 'igx-grid__tr--pinned-bottom': !isRowPinningToTop,\n 'igx-grid__tr--pinned-top': isRowPinningToTop\n }\"\n class='igx-grid__tr--pinned' [style.width.px]='calcWidth'>\n <ng-container *ngFor=\"let rowData of pinnedData; let rowIndex = index\">\n <ng-container *ngTemplateOutlet=\"pinned_record_template; context: getContext(rowData, rowIndex, true)\">\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-template>\n <ng-template igxGridFor let-rowData [igxGridForOf]=\"data\n | gridTransaction:id:pipeTrigger\n | visibleColumns:hasVisibleColumns\n | gridFiltering:filteringExpressionsTree:filterStrategy:advancedFilteringExpressionsTree:id:pipeTrigger:filteringPipeTrigger\n | gridSort:sortingExpressions:sortStrategy:id:pipeTrigger\n | gridGroupBy:groupingExpressions:groupingExpansionState:groupStrategy:groupsExpanded:id:groupsRecords:pipeTrigger\n | gridPaging:paginator?.page:paginator?.perPage:id:pipeTrigger\n | gridSummary:hasSummarizedColumns:summaryCalculationMode:summaryPosition:id:showSummaryOnCollapse:pipeTrigger:summaryPipeTrigger\n | gridDetails:hasDetails:expansionStates:pipeTrigger\n | gridAddRow:false:pipeTrigger\n | gridRowPinning:id:false:pipeTrigger\"\n let-rowIndex=\"index\" [igxForScrollOrientation]=\"'vertical'\" [igxForScrollContainer]='verticalScroll'\n [igxForContainerSize]='calcHeight'\n [igxForItemSize]=\"hasColumnLayouts ? rowHeight * multiRowLayoutRowSize + 1 : renderedRowHeight\"\n [igxForTrackBy]='trackChanges'\n #verticalScrollContainer (chunkPreload)=\"dataLoading($event)\" (dataChanging)=\"dataRebinding($event)\" (dataChanged)=\"dataRebound($event)\">\n <ng-template\n [igxTemplateOutlet]='getRowTemplate(rowData)'\n [igxTemplateOutletContext]='getContext(rowData, rowIndex)'\n (cachedViewLoaded)='cachedViewLoaded($event)'\n (viewCreated)='viewCreatedHandler($event)'\n (viewMoved)='viewMovedHandler($event)'>\n </ng-template>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"hasPinnedRecords && !isRowPinningToTop ? pinnedRecordsTemplate : null\">\n </ng-container>\n <ng-template #record_template let-rowIndex=\"index\" let-rowData let-disabledRow=\"disabled\">\n <igx-grid-row [gridID]=\"id\" [index]=\"rowIndex\" [rowData]=\"rowData\" [disabled]=\"disabledRow\"\n [ngClass]=\"rowClasses | igxGridRowClasses:row:row.inEditMode:row.selected:row.dirty:row.deleted:row.dragging:rowIndex:hasColumnLayouts:false:rowData:pipeTrigger\"\n [ngStyle]=\"rowStyles | igxGridRowStyles:rowData:rowIndex:pipeTrigger\" #row>\n </igx-grid-row>\n </ng-template>\n <ng-template #pinned_record_template let-rowIndex=\"index\" let-rowData>\n <igx-grid-row [gridID]=\"id\" [index]=\"rowIndex\" [rowData]=\"rowData\"\n [ngClass]=\"rowClasses | igxGridRowClasses:row:row.inEditMode:row.selected:row.dirty:row.deleted:row.dragging:rowIndex:hasColumnLayouts:false:rowData:pipeTrigger\"\n [ngStyle]=\"rowStyles | igxGridRowStyles:rowData:rowIndex:pipeTrigger\"#row #pinnedRow>\n </igx-grid-row>\n </ng-template>\n <ng-template #group_template let-rowIndex=\"index\" let-rowData>\n <igx-grid-groupby-row [gridID]=\"id\" [index]=\"rowIndex\" [groupRow]=\"rowData\" [hideGroupRowSelectors]=\"hideRowSelectors\" [rowDraggable]=\"rowDraggable\" #row>\n </igx-grid-groupby-row>\n </ng-template>\n <ng-template #summary_template let-rowIndex=\"index\" let-rowData>\n <igx-grid-summary-row role=\"row\" [gridID]=\"id\" [summaries]=\"rowData.summaries\" [index]=\"rowIndex\"\n class=\"igx-grid__summaries--body\" #summaryRow>\n </igx-grid-summary-row>\n </ng-template>\n <ng-template #detail_template_container let-rowIndex=\"index\" let-rowData>\n <div detail='true' style=\"overflow: auto; width: 100%;\" id=\"{{id}}_{{rowIndex}}\" (pointerdown)='detailsViewFocused(detailsContainer, rowIndex)' #detailsContainer [attr.data-rowindex]='rowIndex'\n [ngClass]=\"{\n 'igx-grid__tr-container': true,\n 'igx-grid__tr-container--active': isDetailActive(rowIndex)\n }\">\n <div class=\"igx-grid__hierarchical-indent\" style='display: flex;'>\n <ng-container *ngIf=\"this.groupingExpressions.length > 0\">\n <div class=\"igx-grid__row-indentation igx-grid__row-indentation--level-{{groupingExpressions.length}}\"></div>\n </ng-container>\n <ng-template\n [ngTemplateOutlet]='detailTemplate.first'\n [ngTemplateOutletContext]='getDetailsContext(rowData, rowIndex)'>\n </ng-template>\n </div>\n </div>\n </ng-template>\n\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n <div class=\"igx-grid__row-editing-outlet\" igxOverlayOutlet #igxRowEditingOverlayOutlet></div>\n <igc-trial-watermark></igc-trial-watermark>\n </div>\n <div igxToggle #loadingOverlay>\n <igx-circular-bar [indeterminate]=\"true\" *ngIf='shouldOverlayLoading'>\n </igx-circular-bar>\n </div>\n <span *ngIf=\"hasMovableColumns && columnInDrag\" [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\"\n id=\"right\" class=\"igx-grid__scroll-on-drag-right\"></span>\n <div [hidden]='!hasVerticalScroll()' class=\"igx-grid__tbody-scrollbar\" [style.width.px]=\"scrollSize\" (pointerdown)=\"$event.preventDefault()\">\n <div class=\"igx-grid__tbody-scrollbar-start\" [style.height.px]=' isRowPinningToTop ? pinnedRowHeight : 0'></div>\n <div class=\"igx-grid__tbody-scrollbar-main\" [style.height.px]='calcHeight'>\n <ng-template igxGridFor [igxGridForOf]='[]' #verticalScrollHolder></ng-template>\n </div>\n <div class=\"igx-grid__tbody-scrollbar-end\" [style.height.px]='!isRowPinningToTop ? pinnedRowHeight : 0'></div>\n </div>\n\n <div class=\"igx-grid__addrow-snackbar\">\n <igx-snackbar #addRowSnackbar [outlet]=\"igxBodyOverlayOutlet\" [actionText]=\"resourceStrings.igx_grid_snackbar_addrow_actiontext\" [displayTime]='snackbarDisplayTime'>{{resourceStrings.igx_grid_snackbar_addrow_label}}</igx-snackbar>\n </div>\n\n <div #igxBodyOverlayOutlet=\"overlay-outlet\" igxOverlayOutlet></div>\n</div>\n\n\n<div class=\"igx-grid__tfoot\" role=\"rowgroup\" [style.height.px]='summariesHeight' #tfoot>\n <div tabindex=\"0\" (focus)=\"navigation.focusFirstCell(false)\" (keydown)=\"navigation.summaryNav($event)\" [attr.aria-activedescendant]=\"activeDescendant\">\n <igx-grid-summary-row [style.width.px]='calcWidth' [style.height.px]='summariesHeight'\n *ngIf=\"hasSummarizedColumns && rootSummariesEnabled\" [gridID]=\"id\" role=\"row\"\n [summaries]=\"id | igxGridSummaryDataPipe:summaryService.retriggerRootPipe\" [index]=\"dataView.length\"\n class=\"igx-grid__summaries\" #summaryRow>\n </igx-grid-summary-row>\n <div class=\"igx-grid__tfoot-thumb\" [hidden]='!hasVerticalScroll()' [style.height.px]='summariesHeight'\n [style.width.px]=\"scrollSize\"></div>\n </div>\n</div>\n\n<div class=\"igx-grid__scroll\" [style.height.px]=\"scrollSize\" #scr [hidden]=\"isHorizontalScrollHidden\" (pointerdown)=\"$event.preventDefault()\">\n <div class=\"igx-grid__scroll-start\" [style.width.px]='isPinningToStart ? pinnedWidth : headerFeaturesWidth' [style.min-width.px]='isPinningToStart ? pinnedWidth : headerFeaturesWidth'></div>\n <div class=\"igx-grid__scroll-main\" [style.width.px]='unpinnedWidth'>\n <ng-template igxGridFor [igxGridForOf]='EMPTY_DATA' #scrollContainer>\n </ng-template>\n </div>\n <div class=\"igx-grid__scroll-end\" [style.float]='\"right\"' [style.width.px]='pinnedWidth' [style.min-width.px]='pinnedWidth' [hidden]=\"pinnedWidth === 0 || isPinningToStart\"></div>\n</div>\n\n<div class=\"igx-grid__footer\" #footer>\n <ng-content select=\"igx-grid-footer\"></ng-content>\n <ng-container *ngIf=\"totalRecords || pagingMode === 1\">\n <ng-content select=\"igx-paginator\"></ng-content>\n </ng-container>\n</div>\n\n<ng-template #emptyFilteredGrid>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{emptyFilteredGridMessage}}</span>\n <span *ngIf='showAddButton'>\n <ng-container *ngTemplateOutlet='addRowEmptyTemplate || defaultAddRowEmptyTemplate'></ng-container>\n </span>\n </span>\n</ng-template>\n\n<ng-template #defaultEmptyGrid>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{emptyGridMessage}}</span>\n <span *ngIf='showAddButton'>\n <ng-container *ngTemplateOutlet='addRowEmptyTemplate || defaultAddRowEmptyTemplate'></ng-container>\n </span>\n </span>\n</ng-template>\n\n<ng-template #defaultAddRowEmptyTemplate>\n <button igxButton=\"raised\" igxRipple (click)=\"this.crudService.enterAddRowMode(null, false, $event)\">\n {{resourceStrings.igx_grid_add_row_label}}\n </button>\n</ng-template>\n\n<ng-template #defaultLoadingGrid>\n <div class=\"igx-grid__loading\">\n <igx-circular-bar [indeterminate]=\"true\">\n </igx-circular-bar>\n </div>\n</ng-template>\n\n<ng-template #defaultExpandedTemplate>\n <igx-icon role=\"button\" class=\"igx-grid__group-expand-btn\"\n [ngClass]=\"{\n 'igx-grid__group-expand-btn--push': filteringService.isFilterRowVisible\n}\">unfold_less</igx-icon>\n</ng-template>\n\n <ng-template #defaultCollapsedTemplate>\n <igx-icon role=\"button\" class=\"igx-grid__group-expand-btn\"\n [ngClass]=\"{\n 'igx-grid__group-expand-btn--push': filteringService.isFilterRowVisible\n}\">unfold_more</igx-icon>\n</ng-template>\n\n<div *ngIf=\"rowEditable\" igxToggle #rowEditingOverlay>\n <div [className]=\"bannerClass\">\n <ng-container\n *ngTemplateOutlet=\"rowEditContainer; context: { rowChangesCount: rowChangesCount, endEdit: this.endEdit.bind(this) }\">\n </ng-container>\n </div>\n</div>\n\n<ng-template #defaultRowEditText>\n You have {{ rowChangesCount }} changes in this row\n</ng-template>\n\n<ng-template #defaultRowEditActions>\n <button igxButton igxRowEditTabStop (click)=\"this.endRowEditTabStop(false, $event)\">{{ this.resourceStrings.igx_grid_row_edit_btn_cancel }}</button>\n <button igxButton igxRowEditTabStop (click)=\"this.endRowEditTabStop(true, $event)\">{{ this.resourceStrings.igx_grid_row_edit_btn_done }}</button>\n</ng-template>\n\n<ng-template #defaultRowEditTemplate>\n <div class=\"igx-banner__message\">\n <span class=\"igx-banner__text\">\n <ng-container\n *ngTemplateOutlet=\"this.crudService.row?.getClassName() === 'IgxAddRow' ? rowAddText : rowEditText ? rowEditText : defaultRowEditText;\n context: { $implicit: this.crudService.row?.getClassName() !== 'IgxAddRow' ? rowChangesCount : null }\">\n </ng-container>\n </span>\n </div>\n <div class=\"igx-banner__actions\">\n <div class=\"igx-banner__row\">\n <ng-container\n *ngTemplateOutlet=\"rowEditActions ? rowEditActions : defaultRowEditActions; context: { $implicit: this.endEdit.bind(this) }\">\n </ng-container>\n </div>\n </div>\n</ng-template>\n\n<ng-template #dragIndicatorIconBase>\n <igx-icon>drag_indicator</igx-icon>\n</ng-template>\n\n<igx-grid-column-resizer *ngIf=\"colResizingService.showResizer\"></igx-grid-column-resizer>\n<div class=\"igx-grid__loading-outlet\" #igxLoadingOverlayOutlet igxOverlayOutlet></div>\n<div class=\"igx-grid__outlet\" #igxFilteringOverlayOutlet igxOverlayOutlet></div>\n"
|
|
62579
62736
|
},] }
|
|
62580
62737
|
];
|
|
62581
62738
|
IgxGridComponent.propDecorators = {
|
|
@@ -63403,7 +63560,7 @@ class IgxGridToolbarAdvancedFilteringComponent {
|
|
|
63403
63560
|
IgxGridToolbarAdvancedFilteringComponent.decorators = [
|
|
63404
63561
|
{ type: Component, args: [{
|
|
63405
63562
|
selector: 'igx-grid-toolbar-advanced-filtering',
|
|
63406
|
-
template: "<button igxButton=\"outlined\" [displayDensity]=\"grid.displayDensity\" name=\"btnAdvancedFiltering\" igxRipple\n [title]=\"grid?.resourceStrings.igx_grid_toolbar_advanced_filtering_button_tooltip\"\n (click)=\"grid.openAdvancedFilteringDialog(overlaySettings)\"\n [ngClass]=\"grid.advancedFilteringExpressionsTree ? 'igx-grid-toolbar__adv-filter--filtered' : 'igx-grid-toolbar__adv-filter'\">\n <igx-icon>filter_list</igx-icon>\n <span #ref>\n <ng-content></ng-content>\n </span>\n <span *ngIf=\"!ref.childNodes.length\">{{ grid?.resourceStrings.igx_grid_toolbar_advanced_filtering_button_label }}</span>\n</button>\n"
|
|
63563
|
+
template: "<button igxButton=\"outlined\" type=\"button\" [displayDensity]=\"grid.displayDensity\" name=\"btnAdvancedFiltering\" igxRipple\n [title]=\"grid?.resourceStrings.igx_grid_toolbar_advanced_filtering_button_tooltip\"\n (click)=\"grid.openAdvancedFilteringDialog(overlaySettings)\"\n [ngClass]=\"grid.advancedFilteringExpressionsTree ? 'igx-grid-toolbar__adv-filter--filtered' : 'igx-grid-toolbar__adv-filter'\">\n <igx-icon>filter_list</igx-icon>\n <span #ref>\n <ng-content></ng-content>\n </span>\n <span *ngIf=\"!ref.childNodes.length\">{{ grid?.resourceStrings.igx_grid_toolbar_advanced_filtering_button_label }}</span>\n</button>\n"
|
|
63407
63564
|
},] }
|
|
63408
63565
|
];
|
|
63409
63566
|
IgxGridToolbarAdvancedFilteringComponent.ctorParameters = () => [
|
|
@@ -63649,7 +63806,7 @@ class IgxGridToolbarExporterComponent extends BaseToolbarDirective {
|
|
|
63649
63806
|
IgxGridToolbarExporterComponent.decorators = [
|
|
63650
63807
|
{ type: Component, args: [{
|
|
63651
63808
|
selector: 'igx-grid-toolbar-exporter',
|
|
63652
|
-
template: "<button [title]=\"grid?.resourceStrings.igx_grid_toolbar_exporter_button_tooltip\" [disabled]=\"isExporting\"\n igxButton=\"outlined\" [displayDensity]=\"grid.displayDensity\" igxRipple #btn (click)=\"toggle(btn, toggleRef)\">\n\n <igx-icon>import_export</igx-icon>\n <span #ref>\n <ng-content></ng-content>\n </span>\n <span *ngIf=\"!ref.childNodes.length\">\n {{ grid.exportText || grid?.resourceStrings.igx_grid_toolbar_exporter_button_label }}\n </span>\n <igx-icon>arrow_drop_down</igx-icon>\n</button>\n\n<div class=\"igx-grid-toolbar__dropdown\" id=\"btnExport\">\n <ul class=\"igx-grid-toolbar__dd-list\" igxToggle #toggleRef=\"toggle\">\n <li *ngIf=\"grid.exportExcel || exportExcel\" #btnExportExcel id=\"btnExportExcel\"\n class=\"igx-grid-toolbar__dd-list-items\" igxRipple (click)=\"export('excel', toggleRef)\">\n\n <ng-template #excel>\n <ng-content select=[excelText],excel-text></ng-content>\n </ng-template>\n <excel-text *ngIf=\"!hasExcelAttr\">\n {{ grid.exportExcelText || grid?.resourceStrings.igx_grid_toolbar_exporter_excel_entry_text}}\n </excel-text>\n <ng-container *ngTemplateOutlet=\"excel\"></ng-container>\n </li>\n\n <li *ngIf=\"grid.exportCsv || exportCSV\" #btnExportCsv id=\"btnExportCsv\" class=\"igx-grid-toolbar__dd-list-items\"\n igxRipple (click)=\"export('csv', toggleRef)\">\n\n <ng-template #csv>\n <ng-content select=[csvText],csv-text></ng-content>\n </ng-template>\n <csv-text *ngIf=\"!hasCSVAttr\">\n {{ grid.exportCsvText || grid?.resourceStrings.igx_grid_toolbar_exporter_csv_entry_text }}</csv-text>\n <ng-container *ngTemplateOutlet=\"csv\"></ng-container>\n </li>\n </ul>\n</div>\n"
|
|
63809
|
+
template: "<button [title]=\"grid?.resourceStrings.igx_grid_toolbar_exporter_button_tooltip\" [disabled]=\"isExporting\"\n igxButton=\"outlined\" type=\"button\" [displayDensity]=\"grid.displayDensity\" igxRipple #btn (click)=\"toggle(btn, toggleRef)\">\n\n <igx-icon>import_export</igx-icon>\n <span #ref>\n <ng-content></ng-content>\n </span>\n <span *ngIf=\"!ref.childNodes.length\">\n {{ grid.exportText || grid?.resourceStrings.igx_grid_toolbar_exporter_button_label }}\n </span>\n <igx-icon>arrow_drop_down</igx-icon>\n</button>\n\n<div class=\"igx-grid-toolbar__dropdown\" id=\"btnExport\">\n <ul class=\"igx-grid-toolbar__dd-list\" igxToggle #toggleRef=\"toggle\">\n <li *ngIf=\"grid.exportExcel || exportExcel\" #btnExportExcel id=\"btnExportExcel\"\n class=\"igx-grid-toolbar__dd-list-items\" igxRipple (click)=\"export('excel', toggleRef)\">\n\n <ng-template #excel>\n <ng-content select=[excelText],excel-text></ng-content>\n </ng-template>\n <excel-text *ngIf=\"!hasExcelAttr\">\n {{ grid.exportExcelText || grid?.resourceStrings.igx_grid_toolbar_exporter_excel_entry_text}}\n </excel-text>\n <ng-container *ngTemplateOutlet=\"excel\"></ng-container>\n </li>\n\n <li *ngIf=\"grid.exportCsv || exportCSV\" #btnExportCsv id=\"btnExportCsv\" class=\"igx-grid-toolbar__dd-list-items\"\n igxRipple (click)=\"export('csv', toggleRef)\">\n\n <ng-template #csv>\n <ng-content select=[csvText],csv-text></ng-content>\n </ng-template>\n <csv-text *ngIf=\"!hasCSVAttr\">\n {{ grid.exportCsvText || grid?.resourceStrings.igx_grid_toolbar_exporter_csv_entry_text }}</csv-text>\n <ng-container *ngTemplateOutlet=\"csv\"></ng-container>\n </li>\n </ul>\n</div>\n"
|
|
63653
63810
|
},] }
|
|
63654
63811
|
];
|
|
63655
63812
|
IgxGridToolbarExporterComponent.ctorParameters = () => [
|
|
@@ -63687,7 +63844,7 @@ class IgxGridToolbarHidingComponent extends BaseToolbarColumnActionsDirective {
|
|
|
63687
63844
|
IgxGridToolbarHidingComponent.decorators = [
|
|
63688
63845
|
{ type: Component, args: [{
|
|
63689
63846
|
selector: 'igx-grid-toolbar-hiding',
|
|
63690
|
-
template: "<ng-container *ngIf=\"grid.rendered$ | async\">\n <button [title]=\"grid?.resourceStrings.igx_grid_toolbar_hiding_button_tooltip\" #btn igxButton=\"outlined\"\n name=\"btnColumnHiding\" (click)=\"toggle(btn, ref, actions)\" [displayDensity]=\"grid.displayDensity\">\n <igx-icon>{{ !grid.hiddenColumnsCount ? 'visibility' : 'visibility_off' }}</igx-icon>\n <span>{{ grid.hiddenColumnsCount }}</span>\n <span>{{ grid.hiddenColumnsText }}</span>\n </button>\n <igx-column-actions #actions igxColumnHiding igxToggle (opened)=\"focusSearch(ref.element)\" #ref=\"toggle\"\n [grid]=\"grid\" [title]=\"grid.columnHidingTitleInternal || title || grid?.resourceStrings.igx_grid_toolbar_hiding_title\"\n [filterColumnsPrompt]=\"prompt || grid?.resourceStrings.igx_grid_toolbar_actions_filter_prompt\"\n [hideFilter]=\"hideFilter\" [filterCriteria]=\"filterCriteria\" [columnDisplayOrder]=\"columnDisplayOrder\" [columnsAreaMaxHeight]=\"columnsAreaMaxHeight\"\n [uncheckAllText]=\"uncheckAllText\" [checkAllText]=\"checkAllText\" [indentation]=\"indentetion\">\n </igx-column-actions>\n</ng-container>\n"
|
|
63847
|
+
template: "<ng-container *ngIf=\"grid.rendered$ | async\">\n <button [title]=\"grid?.resourceStrings.igx_grid_toolbar_hiding_button_tooltip\" #btn igxButton=\"outlined\" type=\"button\"\n name=\"btnColumnHiding\" (click)=\"toggle(btn, ref, actions)\" [displayDensity]=\"grid.displayDensity\">\n <igx-icon>{{ !grid.hiddenColumnsCount ? 'visibility' : 'visibility_off' }}</igx-icon>\n <span>{{ grid.hiddenColumnsCount }}</span>\n <span>{{ grid.hiddenColumnsText }}</span>\n </button>\n <igx-column-actions #actions igxColumnHiding igxToggle (opened)=\"focusSearch(ref.element)\" #ref=\"toggle\"\n [grid]=\"grid\" [title]=\"grid.columnHidingTitleInternal || title || grid?.resourceStrings.igx_grid_toolbar_hiding_title\"\n [filterColumnsPrompt]=\"prompt || grid?.resourceStrings.igx_grid_toolbar_actions_filter_prompt\"\n [hideFilter]=\"hideFilter\" [filterCriteria]=\"filterCriteria\" [columnDisplayOrder]=\"columnDisplayOrder\" [columnsAreaMaxHeight]=\"columnsAreaMaxHeight\"\n [uncheckAllText]=\"uncheckAllText\" [checkAllText]=\"checkAllText\" [indentation]=\"indentetion\">\n </igx-column-actions>\n</ng-container>\n"
|
|
63691
63848
|
},] }
|
|
63692
63849
|
];
|
|
63693
63850
|
IgxGridToolbarHidingComponent.propDecorators = {
|
|
@@ -63714,7 +63871,7 @@ class IgxGridToolbarPinningComponent extends BaseToolbarColumnActionsDirective {
|
|
|
63714
63871
|
IgxGridToolbarPinningComponent.decorators = [
|
|
63715
63872
|
{ type: Component, args: [{
|
|
63716
63873
|
selector: 'igx-grid-toolbar-pinning',
|
|
63717
|
-
template: "<ng-container *ngIf=\"grid.rendered$ | async\">\n <button [title]=\"grid?.resourceStrings.igx_grid_toolbar_pinning_button_tooltip\" #btn igxButton=\"outlined\"\n name=\"btnColumnPinning\" (click)=\"toggle(btn, ref, actions)\" [displayDensity]=\"grid.displayDensity\">\n <igx-icon family=\"imx-icons\" [name]=\"!grid.pinnedColumnsCount ? 'unpin-left' : 'pin-left'\"></igx-icon>\n <span>{{ grid.pinnedColumnsCount }}</span>\n <span>{{ grid.pinnedColumnsTextInternal }}</span>\n </button>\n <igx-column-actions #actions igxColumnPinning igxToggle (opened)=\"focusSearch(ref.element)\" #ref=\"toggle\"\n [grid]=\"grid\" [title]=\"grid.columnPinningTitleInternal || title || grid?.resourceStrings.igx_grid_toolbar_pinning_title\"\n [filterColumnsPrompt]=\"prompt || grid?.resourceStrings.igx_grid_toolbar_actions_filter_prompt\"\n [hideFilter]=\"hideFilter\" [filterCriteria]=\"filterCriteria\" [columnDisplayOrder]=\"columnDisplayOrder\" [columnsAreaMaxHeight]=\"columnsAreaMaxHeight\"\n [uncheckAllText]=\"uncheckAllText\" [checkAllText]=\"checkAllText\" [indentation]=\"indentetion\">\n </igx-column-actions>\n</ng-container>\n"
|
|
63874
|
+
template: "<ng-container *ngIf=\"grid.rendered$ | async\">\n <button [title]=\"grid?.resourceStrings.igx_grid_toolbar_pinning_button_tooltip\" #btn igxButton=\"outlined\" type=\"button\"\n name=\"btnColumnPinning\" (click)=\"toggle(btn, ref, actions)\" [displayDensity]=\"grid.displayDensity\">\n <igx-icon family=\"imx-icons\" [name]=\"!grid.pinnedColumnsCount ? 'unpin-left' : 'pin-left'\"></igx-icon>\n <span>{{ grid.pinnedColumnsCount }}</span>\n <span>{{ grid.pinnedColumnsTextInternal }}</span>\n </button>\n <igx-column-actions #actions igxColumnPinning igxToggle (opened)=\"focusSearch(ref.element)\" #ref=\"toggle\"\n [grid]=\"grid\" [title]=\"grid.columnPinningTitleInternal || title || grid?.resourceStrings.igx_grid_toolbar_pinning_title\"\n [filterColumnsPrompt]=\"prompt || grid?.resourceStrings.igx_grid_toolbar_actions_filter_prompt\"\n [hideFilter]=\"hideFilter\" [filterCriteria]=\"filterCriteria\" [columnDisplayOrder]=\"columnDisplayOrder\" [columnsAreaMaxHeight]=\"columnsAreaMaxHeight\"\n [uncheckAllText]=\"uncheckAllText\" [checkAllText]=\"checkAllText\" [indentation]=\"indentetion\">\n </igx-column-actions>\n</ng-container>\n"
|
|
63718
63875
|
},] }
|
|
63719
63876
|
];
|
|
63720
63877
|
IgxGridToolbarPinningComponent.propDecorators = {
|
|
@@ -66016,7 +66173,7 @@ IgxTreeGridComponent.decorators = [
|
|
|
66016
66173
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
66017
66174
|
preserveWhitespaces: false,
|
|
66018
66175
|
selector: 'igx-tree-grid',
|
|
66019
|
-
template: "<ng-content select=\"igx-grid-toolbar\"></ng-content>\n<ng-content select=\"igx-tree-grid-group-by-area\"></ng-content>\n<igx-grid-header-row class=\"igx-grid-thead\" tabindex=\"0\"\n [grid]=\"this\"\n [hasMRL]=\"hasColumnLayouts\"\n [activeDescendant]=\"activeDescendant\"\n [width]=\"calcWidth\"\n [pinnedColumnCollection]=\"pinnedColumns\"\n [unpinnedColumnCollection]=\"unpinnedColumns\"\n (keydown.meta.c)=\"copyHandler($event)\"\n (keydown.control.c)=\"copyHandler($event)\"\n (copy)=\"copyHandler($event)\"\n (keydown)=\"navigation.headerNavigation($event)\"\n (focus)=\"navigation.focusFirstCell()\"\n>\n</igx-grid-header-row>\n\n<div igxGridBody (keydown.control.c)=\"copyHandler($event)\" (copy)=\"copyHandler($event)\" class=\"igx-grid__tbody\" role=\"rowgroup\">\n <div class=\"igx-grid__tbody-content\" tabindex=\"0\" (focus)=\"navigation.focusTbody($event)\" (keydown)=\"navigation.handleNavigation($event)\"\n (dragStop)=\"selectionService.dragMode = $event\" [attr.aria-activedescendant]=\"activeDescendant\" [attr.role]=\"dataView.length ? null : 'row'\"\n (dragScroll)=\"dragScroll($event)\" [igxGridDragSelect]=\"selectionService.dragMode\"\n [style.height.px]='totalHeight' [style.width.px]='calcWidth' #tbody (scroll)='preventContainerScroll($event)'>\n <span *ngIf=\"hasMovableColumns && columnInDrag && pinnedColumns.length <= 0\"\n [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n class=\"igx-grid__scroll-on-drag-left\"></span>\n <span *ngIf=\"hasMovableColumns && columnInDrag && pinnedColumns.length > 0\"\n [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n class=\"igx-grid__scroll-on-drag-pinned\" [style.left.px]=\"pinnedWidth\"></span>\n <ng-template #pinnedRecordsTemplate>\n <ng-container *ngIf='data\n | treeGridTransaction:pipeTrigger\n | visibleColumns:hasVisibleColumns\n | treeGridNormalizeRecord:pipeTrigger\n | treeGridAddRow:true:pipeTrigger\n | gridRowPinning:id:true:pipeTrigger\n | treeGridFiltering:filteringExpressionsTree:filterStrategy:advancedFilteringExpressionsTree:pipeTrigger:filteringPipeTrigger:true\n | treeGridSorting:sortingExpressions:sortStrategy:pipeTrigger:true as pinnedData'>\n <div #pinContainer *ngIf='pinnedData.length > 0'\n [ngClass]=\"{\n 'igx-grid__tr--pinned-bottom': !isRowPinningToTop,\n 'igx-grid__tr--pinned-top': isRowPinningToTop\n }\"\n class='igx-grid__tr--pinned' [style.width.px]='calcWidth'>\n <ng-container *ngFor=\"let rowData of pinnedData;let rowIndex = index;\">\n <ng-container *ngTemplateOutlet=\"pinned_record_template; context: getContext(rowData, rowIndex, true)\">\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"hasPinnedRecords && isRowPinningToTop ? pinnedRecordsTemplate : null\"></ng-container>\n <ng-template igxGridFor let-rowData [igxGridForOf]=\"data\n | treeGridTransaction:pipeTrigger\n | visibleColumns:hasVisibleColumns\n | treeGridHierarchizing:primaryKey:foreignKey:childDataKey:pipeTrigger\n | treeGridFiltering:filteringExpressionsTree:filterStrategy:advancedFilteringExpressionsTree:pipeTrigger:filteringPipeTrigger\n | treeGridSorting:sortingExpressions:sortStrategy:pipeTrigger\n | treeGridFlattening:expansionDepth:expansionStates:pipeTrigger\n | treeGridPaging:paginator?.page:paginator?.perPage:pipeTrigger\n | treeGridSummary:hasSummarizedColumns:summaryCalculationMode:summaryPosition:showSummaryOnCollapse:pipeTrigger:summaryPipeTrigger\n | treeGridAddRow:false:pipeTrigger\n | gridRowPinning:id:false:pipeTrigger\"\n let-rowIndex=\"index\" [igxForScrollOrientation]=\"'vertical'\" [igxForScrollContainer]='verticalScroll'\n [igxForContainerSize]='calcHeight' [igxForItemSize]=\"renderedRowHeight\" #verticalScrollContainer\n (dataChanging)=\"dataRebinding($event)\" (dataChanged)=\"dataRebound($event)\">\n <ng-template [igxTemplateOutlet]='isSummaryRow(rowData) ? summary_template : record_template'\n [igxTemplateOutletContext]='getContext(rowData, rowIndex, false)'\n (cachedViewLoaded)='cachedViewLoaded($event)'>\n </ng-template>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"hasPinnedRecords && !isRowPinningToTop ? pinnedRecordsTemplate : null\"></ng-container>\n <ng-template #record_template let-rowIndex=\"index\" let-disabledRow=\"disabled\" let-rowData>\n <igx-tree-grid-row [gridID]=\"id\" [index]=\"rowIndex\" [treeRow]=\"rowData\" [disabled]=\"disabledRow\"\n [ngClass]=\"rowClasses | igxGridRowClasses:row:row.inEditMode:row.selected:row.dirty:row.deleted:row.dragging:rowIndex:hasColumnLayouts:row.treeRow.isFilteredOutParent:pipeTrigger\"\n [ngStyle]=\"rowStyles | igxGridRowStyles:rowData:rowIndex:pipeTrigger\" #row>\n </igx-tree-grid-row>\n </ng-template>\n <ng-template #pinned_record_template let-rowIndex=\"index\" let-rowData>\n <igx-tree-grid-row [gridID]=\"id\" [index]=\"rowIndex\" [treeRow]=\"rowData\"\n [ngClass]=\"rowClasses | igxGridRowClasses:row:row.inEditMode:row.selected:row.dirty:row.deleted:row.dragging:rowIndex:hasColumnLayouts:row.treeRow.isFilteredOutParent:pipeTrigger\"\n [ngStyle]=\"rowStyles | igxGridRowStyles:rowData:rowIndex:pipeTrigger\"#row #pinnedRow>\n </igx-tree-grid-row>\n </ng-template>\n <ng-template #summary_template let-rowIndex=\"index\" let-rowData>\n <igx-grid-summary-row [gridID]=\"id\" [summaries]=\"rowData.summaries\"\n [firstCellIndentation]=\"rowData.cellIndentation\" [index]=\"rowIndex\"\n class=\"igx-grid__summaries--body\" role=\"row\" #summaryRow>\n </igx-grid-summary-row>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n <div class=\"igx-grid__row-editing-outlet\" igxOverlayOutlet #igxRowEditingOverlayOutlet></div>\n <igc-trial-watermark></igc-trial-watermark>\n </div>\n <div igxToggle #loadingOverlay>\n <igx-circular-bar [indeterminate]=\"true\" *ngIf='shouldOverlayLoading'>\n </igx-circular-bar>\n </div>\n <span *ngIf=\"hasMovableColumns && columnInDrag\" [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\"\n id=\"right\" class=\"igx-grid__scroll-on-drag-right\"></span>\n <div [hidden]='!hasVerticalScroll()' class=\"igx-grid__tbody-scrollbar\" [style.width.px]=\"scrollSize\" (pointerdown)=\"$event.preventDefault()\"\n [style.height.px]='calcHeight'>\n <div class=\"igx-grid__tbody-scrollbar-start\" [style.height.px]=' isRowPinningToTop ? pinnedRowHeight : 0'></div>\n <div class=\"igx-grid__tbody-scrollbar-main\" [style.height.px]='calcHeight'>\n <ng-template igxGridFor [igxGridForOf]='[]' #verticalScrollHolder></ng-template>\n </div>\n <div class=\"igx-grid__tbody-scrollbar-end\" [style.height.px]='!isRowPinningToTop ? pinnedRowHeight : 0'></div>\n </div>\n <div class=\"igx-grid__addrow-snackbar\">\n <igx-snackbar #addRowSnackbar [outlet]=\"igxBodyOverlayOutlet\" [actionText]=\"resourceStrings.igx_grid_snackbar_addrow_actiontext\" [displayTime]='snackbarDisplayTime'>{{resourceStrings.igx_grid_snackbar_addrow_label}}</igx-snackbar>\n </div>\n\n <div igxOverlayOutlet #igxBodyOverlayOutlet=\"overlay-outlet\"></div>\n</div>\n\n<div class=\"igx-grid__tfoot\" role=\"rowgroup\" [style.height.px]='summariesHeight' #tfoot>\n <div tabindex=\"0\" (focus)=\"navigation.focusFirstCell(false)\"\n (keydown)=\"navigation.summaryNav($event)\" [attr.aria-activedescendant]=\"activeDescendant\">\n <igx-grid-summary-row [style.width.px]='calcWidth' [style.height.px]='summariesHeight'\n *ngIf=\"hasSummarizedColumns && rootSummariesEnabled\" [gridID]=\"id\" role=\"row\"\n [summaries]=\"id | igxGridSummaryDataPipe:summaryService.retriggerRootPipe\" [index]=\"dataView.length\"\n class=\"igx-grid__summaries\" #summaryRow>\n </igx-grid-summary-row>\n <div class=\"igx-grid__tfoot-thumb\" [hidden]='!hasVerticalScroll()' [style.height.px]='summariesHeight'\n [style.width.px]=\"scrollSize\"></div>\n </div>\n</div>\n\n<div class=\"igx-grid__scroll\" [style.height.px]=\"scrollSize\" #scr [hidden]=\"isHorizontalScrollHidden\" (pointerdown)=\"$event.preventDefault()\">\n <div class=\"igx-grid__scroll-start\" [style.width.px]='isPinningToStart ? pinnedWidth : headerFeaturesWidth' [style.min-width.px]='isPinningToStart ? pinnedWidth : headerFeaturesWidth'></div>\n <div class=\"igx-grid__scroll-main\" [style.width.px]='unpinnedWidth'>\n <ng-template igxGridFor [igxGridForOf]='[]' #scrollContainer>\n </ng-template>\n </div>\n <div class=\"igx-grid__scroll-end\" [style.float]='\"right\"' [style.width.px]='pinnedWidth' [style.min-width.px]='pinnedWidth' [hidden]=\"pinnedWidth === 0 || isPinningToStart\"></div>\n</div>\n\n<div class=\"igx-grid__footer\" #footer>\n <ng-content select=\"igx-grid-footer\"></ng-content>\n <ng-container *ngIf=\"totalRecords || pagingMode === 1\">\n <ng-content select=\"igx-paginator\"></ng-content>\n </ng-container>\n</div>\n\n<ng-template #emptyFilteredGrid>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{emptyFilteredGridMessage}}</span>\n <span *ngIf='showAddButton'>\n <ng-container *ngTemplateOutlet='addRowEmptyTemplate || defaultAddRowEmptyTemplate'></ng-container>\n </span>\n </span>\n</ng-template>\n\n<ng-template #defaultEmptyGrid>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{emptyGridMessage}}</span>\n <span *ngIf='showAddButton'>\n <ng-container *ngTemplateOutlet='addRowEmptyTemplate || defaultAddRowEmptyTemplate'></ng-container>\n </span>\n </span>\n</ng-template>\n\n<ng-template #defaultAddRowEmptyTemplate>\n <button igxButton=\"raised\" igxRipple (click)=\"this.crudService.enterAddRowMode(null, false, $event)\">\n {{resourceStrings.igx_grid_add_row_label}}\n </button>\n</ng-template>\n\n<ng-template #defaultLoadingGrid>\n <div class=\"igx-grid__loading\">\n <igx-circular-bar [indeterminate]=\"true\">\n </igx-circular-bar>\n </div>\n</ng-template>\n\n<div *ngIf=\"rowEditable\" igxToggle #rowEditingOverlay>\n <div [className]=\"bannerClass\">\n <ng-container\n *ngTemplateOutlet=\"rowEditContainer; context: { rowChangesCount: rowChangesCount, endEdit: this.crudService.endEdit.bind(this) }\">\n </ng-container>\n </div>\n</div>\n\n<ng-template #defaultRowEditText>\n You have {{ rowChangesCount }} changes in this row\n</ng-template>\n\n<ng-template #defaultRowEditActions>\n <button igxButton igxRowEditTabStop (click)=\"this.endRowEditTabStop(false, $event)\">{{ this.resourceStrings.igx_grid_row_edit_btn_cancel }}</button>\n <button igxButton igxRowEditTabStop (click)=\"this.endRowEditTabStop(true, $event)\">{{ this.resourceStrings.igx_grid_row_edit_btn_done }}</button>\n</ng-template>\n\n<ng-template #defaultRowEditTemplate>\n <div class=\"igx-banner__message\">\n <span class=\"igx-banner__text\">\n <ng-container\n *ngTemplateOutlet=\"this.crudService.row?.getClassName() === 'IgxAddRow' ? rowAddText : rowEditText ? rowEditText : defaultRowEditText;\n context: { $implicit: this.crudService.row?.getClassName() !== 'IgxAddRow' ? rowChangesCount : null }\">\n </ng-container>\n </span>\n </div>\n <div class=\"igx-banner__actions\">\n <div class=\"igx-banner__row\">\n <ng-container\n *ngTemplateOutlet=\"rowEditActions ? rowEditActions : defaultRowEditActions; context: { $implicit: this.endEdit.bind(this) }\">\n </ng-container>\n </div>\n </div>\n</ng-template>\n\n<ng-template #dragIndicatorIconBase>\n <igx-icon>drag_indicator</igx-icon>\n</ng-template>\n\n<igx-grid-column-resizer *ngIf=\"colResizingService.showResizer\"></igx-grid-column-resizer>\n<div class=\"igx-grid__loading-outlet\" #igxLoadingOverlayOutlet igxOverlayOutlet></div>\n<div class=\"igx-grid__outlet\" #igxFilteringOverlayOutlet igxOverlayOutlet></div>\n",
|
|
66176
|
+
template: "<ng-content select=\"igx-grid-toolbar\"></ng-content>\n<ng-content select=\"igx-tree-grid-group-by-area\"></ng-content>\n<igx-grid-header-row class=\"igx-grid-thead\" tabindex=\"0\"\n [grid]=\"this\"\n [hasMRL]=\"hasColumnLayouts\"\n [activeDescendant]=\"activeDescendant\"\n [width]=\"calcWidth\"\n [pinnedColumnCollection]=\"pinnedColumns\"\n [unpinnedColumnCollection]=\"unpinnedColumns\"\n (keydown.meta.c)=\"copyHandler($event)\"\n (keydown.control.c)=\"copyHandler($event)\"\n (copy)=\"copyHandler($event)\"\n (keydown)=\"navigation.headerNavigation($event)\"\n (focus)=\"navigation.focusFirstCell()\"\n>\n</igx-grid-header-row>\n\n<div igxGridBody (keydown.control.c)=\"copyHandler($event)\" (copy)=\"copyHandler($event)\" class=\"igx-grid__tbody\" role=\"rowgroup\">\n <div class=\"igx-grid__tbody-content\" tabindex=\"0\" (focus)=\"navigation.focusTbody($event)\" (keydown)=\"navigation.handleNavigation($event)\"\n (dragStop)=\"selectionService.dragMode = $event\" [attr.aria-activedescendant]=\"activeDescendant\" [attr.role]=\"dataView.length ? null : 'row'\"\n (dragScroll)=\"dragScroll($event)\" [igxGridDragSelect]=\"selectionService.dragMode\"\n [style.height.px]='totalHeight' [style.width.px]='calcWidth' #tbody (scroll)='preventContainerScroll($event)'>\n <span *ngIf=\"hasMovableColumns && columnInDrag && pinnedColumns.length <= 0\"\n [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n class=\"igx-grid__scroll-on-drag-left\"></span>\n <span *ngIf=\"hasMovableColumns && columnInDrag && pinnedColumns.length > 0\"\n [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n class=\"igx-grid__scroll-on-drag-pinned\" [style.left.px]=\"pinnedWidth\"></span>\n <ng-template #pinnedRecordsTemplate>\n <ng-container *ngIf='data\n | treeGridTransaction:pipeTrigger\n | visibleColumns:hasVisibleColumns\n | treeGridNormalizeRecord:pipeTrigger\n | treeGridAddRow:true:pipeTrigger\n | gridRowPinning:id:true:pipeTrigger\n | treeGridFiltering:filteringExpressionsTree:filterStrategy:advancedFilteringExpressionsTree:pipeTrigger:filteringPipeTrigger:true\n | treeGridSorting:sortingExpressions:sortStrategy:pipeTrigger:true as pinnedData'>\n <div #pinContainer *ngIf='pinnedData.length > 0'\n [ngClass]=\"{\n 'igx-grid__tr--pinned-bottom': !isRowPinningToTop,\n 'igx-grid__tr--pinned-top': isRowPinningToTop\n }\"\n class='igx-grid__tr--pinned' [style.width.px]='calcWidth'>\n <ng-container *ngFor=\"let rowData of pinnedData;let rowIndex = index;\">\n <ng-container *ngTemplateOutlet=\"pinned_record_template; context: getContext(rowData, rowIndex, true)\">\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"hasPinnedRecords && isRowPinningToTop ? pinnedRecordsTemplate : null\"></ng-container>\n <ng-template igxGridFor let-rowData [igxGridForOf]=\"data\n | treeGridTransaction:pipeTrigger\n | visibleColumns:hasVisibleColumns\n | treeGridHierarchizing:primaryKey:foreignKey:childDataKey:pipeTrigger\n | treeGridFiltering:filteringExpressionsTree:filterStrategy:advancedFilteringExpressionsTree:pipeTrigger:filteringPipeTrigger\n | treeGridSorting:sortingExpressions:sortStrategy:pipeTrigger\n | treeGridFlattening:expansionDepth:expansionStates:pipeTrigger\n | treeGridPaging:paginator?.page:paginator?.perPage:pipeTrigger\n | treeGridSummary:hasSummarizedColumns:summaryCalculationMode:summaryPosition:showSummaryOnCollapse:pipeTrigger:summaryPipeTrigger\n | treeGridAddRow:false:pipeTrigger\n | gridRowPinning:id:false:pipeTrigger\"\n let-rowIndex=\"index\" [igxForScrollOrientation]=\"'vertical'\" [igxForScrollContainer]='verticalScroll'\n [igxForContainerSize]='calcHeight' [igxForItemSize]=\"renderedRowHeight\" #verticalScrollContainer\n (dataChanging)=\"dataRebinding($event)\" (dataChanged)=\"dataRebound($event)\">\n <ng-template [igxTemplateOutlet]='isSummaryRow(rowData) ? summary_template : record_template'\n [igxTemplateOutletContext]='getContext(rowData, rowIndex, false)'\n (cachedViewLoaded)='cachedViewLoaded($event)'>\n </ng-template>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"hasPinnedRecords && !isRowPinningToTop ? pinnedRecordsTemplate : null\"></ng-container>\n <ng-template #record_template let-rowIndex=\"index\" let-disabledRow=\"disabled\" let-rowData>\n <igx-tree-grid-row [gridID]=\"id\" [index]=\"rowIndex\" [treeRow]=\"rowData\" [disabled]=\"disabledRow\"\n [ngClass]=\"rowClasses | igxGridRowClasses:row:row.inEditMode:row.selected:row.dirty:row.deleted:row.dragging:rowIndex:hasColumnLayouts:row.treeRow.isFilteredOutParent:rowData:pipeTrigger\"\n [ngStyle]=\"rowStyles | igxGridRowStyles:rowData:rowIndex:pipeTrigger\" #row>\n </igx-tree-grid-row>\n </ng-template>\n <ng-template #pinned_record_template let-rowIndex=\"index\" let-rowData>\n <igx-tree-grid-row [gridID]=\"id\" [index]=\"rowIndex\" [treeRow]=\"rowData\"\n [ngClass]=\"rowClasses | igxGridRowClasses:row:row.inEditMode:row.selected:row.dirty:row.deleted:row.dragging:rowIndex:hasColumnLayouts:row.treeRow.isFilteredOutParent:rowData:pipeTrigger\"\n [ngStyle]=\"rowStyles | igxGridRowStyles:rowData:rowIndex:pipeTrigger\"#row #pinnedRow>\n </igx-tree-grid-row>\n </ng-template>\n <ng-template #summary_template let-rowIndex=\"index\" let-rowData>\n <igx-grid-summary-row [gridID]=\"id\" [summaries]=\"rowData.summaries\"\n [firstCellIndentation]=\"rowData.cellIndentation\" [index]=\"rowIndex\"\n class=\"igx-grid__summaries--body\" role=\"row\" #summaryRow>\n </igx-grid-summary-row>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n <div class=\"igx-grid__row-editing-outlet\" igxOverlayOutlet #igxRowEditingOverlayOutlet></div>\n <igc-trial-watermark></igc-trial-watermark>\n </div>\n <div igxToggle #loadingOverlay>\n <igx-circular-bar [indeterminate]=\"true\" *ngIf='shouldOverlayLoading'>\n </igx-circular-bar>\n </div>\n <span *ngIf=\"hasMovableColumns && columnInDrag\" [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\"\n id=\"right\" class=\"igx-grid__scroll-on-drag-right\"></span>\n <div [hidden]='!hasVerticalScroll()' class=\"igx-grid__tbody-scrollbar\" [style.width.px]=\"scrollSize\" (pointerdown)=\"$event.preventDefault()\"\n [style.height.px]='calcHeight'>\n <div class=\"igx-grid__tbody-scrollbar-start\" [style.height.px]=' isRowPinningToTop ? pinnedRowHeight : 0'></div>\n <div class=\"igx-grid__tbody-scrollbar-main\" [style.height.px]='calcHeight'>\n <ng-template igxGridFor [igxGridForOf]='[]' #verticalScrollHolder></ng-template>\n </div>\n <div class=\"igx-grid__tbody-scrollbar-end\" [style.height.px]='!isRowPinningToTop ? pinnedRowHeight : 0'></div>\n </div>\n <div class=\"igx-grid__addrow-snackbar\">\n <igx-snackbar #addRowSnackbar [outlet]=\"igxBodyOverlayOutlet\" [actionText]=\"resourceStrings.igx_grid_snackbar_addrow_actiontext\" [displayTime]='snackbarDisplayTime'>{{resourceStrings.igx_grid_snackbar_addrow_label}}</igx-snackbar>\n </div>\n\n <div igxOverlayOutlet #igxBodyOverlayOutlet=\"overlay-outlet\"></div>\n</div>\n\n<div class=\"igx-grid__tfoot\" role=\"rowgroup\" [style.height.px]='summariesHeight' #tfoot>\n <div tabindex=\"0\" (focus)=\"navigation.focusFirstCell(false)\"\n (keydown)=\"navigation.summaryNav($event)\" [attr.aria-activedescendant]=\"activeDescendant\">\n <igx-grid-summary-row [style.width.px]='calcWidth' [style.height.px]='summariesHeight'\n *ngIf=\"hasSummarizedColumns && rootSummariesEnabled\" [gridID]=\"id\" role=\"row\"\n [summaries]=\"id | igxGridSummaryDataPipe:summaryService.retriggerRootPipe\" [index]=\"dataView.length\"\n class=\"igx-grid__summaries\" #summaryRow>\n </igx-grid-summary-row>\n <div class=\"igx-grid__tfoot-thumb\" [hidden]='!hasVerticalScroll()' [style.height.px]='summariesHeight'\n [style.width.px]=\"scrollSize\"></div>\n </div>\n</div>\n\n<div class=\"igx-grid__scroll\" [style.height.px]=\"scrollSize\" #scr [hidden]=\"isHorizontalScrollHidden\" (pointerdown)=\"$event.preventDefault()\">\n <div class=\"igx-grid__scroll-start\" [style.width.px]='isPinningToStart ? pinnedWidth : headerFeaturesWidth' [style.min-width.px]='isPinningToStart ? pinnedWidth : headerFeaturesWidth'></div>\n <div class=\"igx-grid__scroll-main\" [style.width.px]='unpinnedWidth'>\n <ng-template igxGridFor [igxGridForOf]='[]' #scrollContainer>\n </ng-template>\n </div>\n <div class=\"igx-grid__scroll-end\" [style.float]='\"right\"' [style.width.px]='pinnedWidth' [style.min-width.px]='pinnedWidth' [hidden]=\"pinnedWidth === 0 || isPinningToStart\"></div>\n</div>\n\n<div class=\"igx-grid__footer\" #footer>\n <ng-content select=\"igx-grid-footer\"></ng-content>\n <ng-container *ngIf=\"totalRecords || pagingMode === 1\">\n <ng-content select=\"igx-paginator\"></ng-content>\n </ng-container>\n</div>\n\n<ng-template #emptyFilteredGrid>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{emptyFilteredGridMessage}}</span>\n <span *ngIf='showAddButton'>\n <ng-container *ngTemplateOutlet='addRowEmptyTemplate || defaultAddRowEmptyTemplate'></ng-container>\n </span>\n </span>\n</ng-template>\n\n<ng-template #defaultEmptyGrid>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{emptyGridMessage}}</span>\n <span *ngIf='showAddButton'>\n <ng-container *ngTemplateOutlet='addRowEmptyTemplate || defaultAddRowEmptyTemplate'></ng-container>\n </span>\n </span>\n</ng-template>\n\n<ng-template #defaultAddRowEmptyTemplate>\n <button igxButton=\"raised\" igxRipple (click)=\"this.crudService.enterAddRowMode(null, false, $event)\">\n {{resourceStrings.igx_grid_add_row_label}}\n </button>\n</ng-template>\n\n<ng-template #defaultLoadingGrid>\n <div class=\"igx-grid__loading\">\n <igx-circular-bar [indeterminate]=\"true\">\n </igx-circular-bar>\n </div>\n</ng-template>\n\n<div *ngIf=\"rowEditable\" igxToggle #rowEditingOverlay>\n <div [className]=\"bannerClass\">\n <ng-container\n *ngTemplateOutlet=\"rowEditContainer; context: { rowChangesCount: rowChangesCount, endEdit: this.crudService.endEdit.bind(this) }\">\n </ng-container>\n </div>\n</div>\n\n<ng-template #defaultRowEditText>\n You have {{ rowChangesCount }} changes in this row\n</ng-template>\n\n<ng-template #defaultRowEditActions>\n <button igxButton igxRowEditTabStop (click)=\"this.endRowEditTabStop(false, $event)\">{{ this.resourceStrings.igx_grid_row_edit_btn_cancel }}</button>\n <button igxButton igxRowEditTabStop (click)=\"this.endRowEditTabStop(true, $event)\">{{ this.resourceStrings.igx_grid_row_edit_btn_done }}</button>\n</ng-template>\n\n<ng-template #defaultRowEditTemplate>\n <div class=\"igx-banner__message\">\n <span class=\"igx-banner__text\">\n <ng-container\n *ngTemplateOutlet=\"this.crudService.row?.getClassName() === 'IgxAddRow' ? rowAddText : rowEditText ? rowEditText : defaultRowEditText;\n context: { $implicit: this.crudService.row?.getClassName() !== 'IgxAddRow' ? rowChangesCount : null }\">\n </ng-container>\n </span>\n </div>\n <div class=\"igx-banner__actions\">\n <div class=\"igx-banner__row\">\n <ng-container\n *ngTemplateOutlet=\"rowEditActions ? rowEditActions : defaultRowEditActions; context: { $implicit: this.endEdit.bind(this) }\">\n </ng-container>\n </div>\n </div>\n</ng-template>\n\n<ng-template #dragIndicatorIconBase>\n <igx-icon>drag_indicator</igx-icon>\n</ng-template>\n\n<igx-grid-column-resizer *ngIf=\"colResizingService.showResizer\"></igx-grid-column-resizer>\n<div class=\"igx-grid__loading-outlet\" #igxLoadingOverlayOutlet igxOverlayOutlet></div>\n<div class=\"igx-grid__outlet\" #igxFilteringOverlayOutlet igxOverlayOutlet></div>\n",
|
|
66020
66177
|
providers: [
|
|
66021
66178
|
IgxGridCRUDService,
|
|
66022
66179
|
IgxGridSummaryService,
|
|
@@ -67302,8 +67459,8 @@ class IgxHierarchicalGridNavigationService extends IgxGridNavigationService {
|
|
|
67302
67459
|
}
|
|
67303
67460
|
clearActivation() {
|
|
67304
67461
|
// clear if previous activation exists.
|
|
67305
|
-
if (this.activeNode) {
|
|
67306
|
-
this.activeNode
|
|
67462
|
+
if (this.activeNode && Object.keys(this.activeNode).length) {
|
|
67463
|
+
this.activeNode = Object.assign({});
|
|
67307
67464
|
}
|
|
67308
67465
|
}
|
|
67309
67466
|
hasNextTarget(grid, index, isNext) {
|
|
@@ -68887,7 +69044,7 @@ IgxHierarchicalGridComponent.decorators = [
|
|
|
68887
69044
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
68888
69045
|
preserveWhitespaces: false,
|
|
68889
69046
|
selector: 'igx-hierarchical-grid',
|
|
68890
|
-
template: "<ng-content select=\"igx-grid-toolbar\"></ng-content>\n<ng-container #toolbarOutlet></ng-container>\n\n<igx-grid-header-row class=\"igx-grid-thead\" tabindex=\"0\"\n [grid]=\"this\"\n [hasMRL]=\"hasColumnLayouts\"\n [activeDescendant]=\"activeDescendant\"\n [width]=\"calcWidth\"\n [pinnedColumnCollection]=\"pinnedColumns\"\n [unpinnedColumnCollection]=\"unpinnedColumns\"\n (keydown.meta.c)=\"copyHandler($event)\"\n (keydown.control.c)=\"copyHandler($event)\"\n (copy)=\"copyHandler($event)\"\n (keydown)=\"navigation.headerNavigation($event)\"\n (focus)=\"navigation.focusFirstCell()\"\n>\n</igx-grid-header-row>\n\n<div igxGridBody (keydown.control.c)=\"copyHandler($event)\" (copy)=\"copyHandler($event)\" class=\"igx-grid__tbody\" role=\"rowgroup\">\n <div class=\"igx-grid__tbody-content\" tabindex=\"0\" (focus)=\"navigation.focusTbody($event)\"\n (keydown)=\"navigation.handleNavigation($event)\" (dragStop)=\"selectionService.dragMode = $event\"\n (dragScroll)=\"dragScroll($event)\" [igxGridDragSelect]=\"selectionService.dragMode\" [attr.aria-activedescendant]=\"activeDescendant\" [attr.role]=\"dataView.length ? null : 'row'\"\n [style.height.px]='totalHeight' [style.width.px]='calcWidth' #tbody (scroll)='preventContainerScroll($event)'>\n <span *ngIf=\"hasMovableColumns && columnInDrag && pinnedColumns.length <= 0\"\n [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n class=\"igx-grid__scroll-on-drag-left\"></span>\n <span *ngIf=\"hasMovableColumns && columnInDrag && pinnedColumns.length > 0\"\n [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n class=\"igx-grid__scroll-on-drag-pinned\" [style.left.px]=\"pinnedWidth\"></span>\n <ng-template #pinnedRecordsTemplate>\n <ng-container *ngIf=\"data\n | gridTransaction:id:pipeTrigger\n | visibleColumns:hasVisibleColumns\n | gridAddRow:true:pipeTrigger\n | gridRowPinning:id:true:pipeTrigger\n | gridFiltering:filteringExpressionsTree:filterStrategy:advancedFilteringExpressionsTree:id:pipeTrigger:filteringPipeTrigger:true\n | gridSort:sortingExpressions:sortStrategy:id:pipeTrigger:true as pinnedData\">\n <div #pinContainer *ngIf='pinnedData.length > 0' class='igx-grid__tr--pinned'\n [ngClass]=\"{ 'igx-grid__tr--pinned-bottom': !isRowPinningToTop, 'igx-grid__tr--pinned-top': isRowPinningToTop }\"\n [style.width.px]='calcWidth'>\n <ng-container *ngFor=\"let rowData of pinnedData; let rowIndex = index\">\n <ng-container *ngTemplateOutlet=\"pinned_hierarchical_record_template; context: getContext(rowData, rowIndex, true)\">\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"hasPinnedRecords && isRowPinningToTop ? pinnedRecordsTemplate : null\">\n </ng-container>\n <ng-template igxGridFor let-rowData let-rowIndex=\"index\" [igxGridForOf]=\"data\n | gridTransaction:id:pipeTrigger\n | visibleColumns:hasVisibleColumns\n | gridFiltering:filteringExpressionsTree:filterStrategy:advancedFilteringExpressionsTree:id:pipeTrigger:filteringPipeTrigger\n | gridSort:sortingExpressions:sortStrategy:id:pipeTrigger\n | gridHierarchicalPaging:paginator?.page:paginator?.perPage:id:pipeTrigger\n | gridHierarchical:expansionStates:id:primaryKey:childLayoutKeys:pipeTrigger\n | gridAddRow:false:pipeTrigger\n | gridRowPinning:id:false:pipeTrigger\"\n [igxForScrollOrientation]=\"'vertical'\" [igxForScrollContainer]='verticalScroll'\n [igxForContainerSize]='calcHeight' [igxForItemSize]=\"renderedRowHeight\" [igxForTrackBy]='trackChanges'\n #verticalScrollContainer (chunkPreload)=\"dataLoading($event)\" (dataChanging)=\"dataRebinding($event)\" (dataChanged)=\"dataRebound($event)\">\n <ng-template\n [igxTemplateOutlet]='(isHierarchicalRecord(rowData) ? hierarchical_record_template : (isChildGridRecord(rowData) ? child_record_template : hierarchical_record_template))'\n [igxTemplateOutletContext]='getContext(rowData, rowIndex, false)' (viewCreated)='viewCreatedHandler($event)'\n (viewMoved)='viewMovedHandler($event)' (cachedViewLoaded)='cachedViewLoaded($event)'>\n </ng-template>\n <!-- <ng-container *igxTemplateOutlet=\"(isHierarchicalRecord(rowData) ? hierarchical_record_template : (isChildGridRecord(rowData) && isExpanded(rowData) ? child_record_template : hierarchical_record_template)); context: getContext(rowData)\"></ng-container> -->\n </ng-template>\n <ng-template #hierarchical_record_template let-rowIndex=\"index\" let-disabledRow=\"disabled\" let-rowData>\n <igx-hierarchical-grid-row [gridID]=\"id\" [index]=\"rowIndex\" [disabled]=\"disabledRow\" [rowData]=\"rowData\"\n [ngClass]=\"rowClasses | igxGridRowClasses:row:row.inEditMode:row.selected:row.dirty:row.deleted:row.dragging:rowIndex:hasColumnLayouts:false:pipeTrigger\"\n [ngStyle]=\"rowStyles | igxGridRowStyles:rowData:rowIndex:pipeTrigger\" #row>\n </igx-hierarchical-grid-row>\n </ng-template>\n\n <ng-template #pinned_hierarchical_record_template let-rowIndex=\"index\" let-rowData>\n <igx-hierarchical-grid-row [gridID]=\"id\" [index]=\"rowIndex\" [rowData]=\"rowData\"\n [ngClass]=\"rowClasses | igxGridRowClasses:row:row.inEditMode:row.selected:row.dirty:row.deleted:row.dragging:rowIndex:hasColumnLayouts:false:pipeTrigger\"\n [ngStyle]=\"rowStyles | igxGridRowStyles:rowData:rowIndex:pipeTrigger\" #row #pinnedRow>\n </igx-hierarchical-grid-row>\n </ng-template>\n <ng-template #child_record_template let-rowIndex=\"index\" let-rowData>\n <div style=\"overflow: auto; width: 100%;\" [attr.data-rowindex]='rowIndex' (scroll)='onContainerScroll()'\n [ngClass]=\"{\n 'igx-grid__tr-container': true,\n 'igx-grid__tr--highlighted':isRowHighlighted(rowData)\n }\">\n <igx-child-grid-row *ngFor=\"let layout of childLayoutList\" [parentGridID]=\"id\" [index]=\"rowIndex\"\n [rowData]=\"rowData\" [layout]='layout' #row>\n </igx-child-grid-row>\n </div>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"hasPinnedRecords && !isRowPinningToTop ? pinnedRecordsTemplate : null\">\n </ng-container>\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n <span *ngIf=\"hasMovableColumns && columnInDrag\" [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\"\n id=\"right\" class=\"igx-grid__scroll-on-drag-right\"></span>\n <div class=\"igx-grid__row-editing-outlet\" igxOverlayOutlet #igxRowEditingOverlayOutlet></div>\n <igc-trial-watermark *ngIf=\"!this.parent\"></igc-trial-watermark>\n </div>\n <div igxToggle #loadingOverlay>\n <igx-circular-bar [indeterminate]=\"true\" *ngIf='shouldOverlayLoading'>\n </igx-circular-bar>\n </div>\n <span *ngIf=\"hasMovableColumns && columnInDrag\" [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\"\n id=\"right\" class=\"igx-grid__scroll-on-drag-right\"></span>\n <div [hidden]='!hasVerticalScroll()' class=\"igx-grid__tbody-scrollbar\" [style.width.px]=\"scrollSize\" (pointerdown)=\"$event.preventDefault()\">\n <div class=\"igx-grid__tbody-scrollbar-start\" [style.height.px]=' isRowPinningToTop ? pinnedRowHeight : 0'></div>\n <div class=\"igx-grid__tbody-scrollbar-main\" [style.height.px]='calcHeight'>\n <ng-template igxGridFor [igxGridForOf]='[]' #verticalScrollHolder></ng-template>\n </div>\n <div class=\"igx-grid__tbody-scrollbar-end\" [style.height.px]='!isRowPinningToTop ? pinnedRowHeight : 0'></div>\n </div>\n <div class=\"igx-grid__addrow-snackbar\">\n <igx-snackbar #addRowSnackbar [outlet]=\"igxBodyOverlayOutlet\" [actionText]=\"resourceStrings.igx_grid_snackbar_addrow_actiontext\" [displayTime]='snackbarDisplayTime'>{{resourceStrings.igx_grid_snackbar_addrow_label}}</igx-snackbar>\n </div>\n\n <div igxOverlayOutlet #igxBodyOverlayOutlet=\"overlay-outlet\"></div>\n</div>\n\n<div class=\"igx-grid__tfoot\" role=\"rowgroup\" [style.height.px]='summariesHeight' #tfoot>\n <div tabindex=\"0\" (focus)=\"navigation.focusFirstCell(false)\" [attr.aria-activedescendant]=\"activeDescendant\"\n (keydown)=\"navigation.summaryNav($event)\">\n <igx-grid-summary-row [style.width.px]='calcWidth' [style.height.px]='summariesHeight'\n *ngIf=\"hasSummarizedColumns && rootSummariesEnabled\" [gridID]=\"id\" role=\"row\"\n [summaries]=\"id | igxGridSummaryDataPipe:summaryService.retriggerRootPipe\" [index]=\"dataView.length\"\n class=\"igx-grid__summaries\" #summaryRow>\n </igx-grid-summary-row>\n <div class=\"igx-grid__tfoot-thumb\" [hidden]='!hasVerticalScroll()' [style.height.px]='summariesHeight'\n [style.width.px]=\"scrollSize\"></div>\n </div>\n</div>\n\n<div class=\"igx-grid__scroll\" [style.height.px]=\"scrollSize\" #scr [hidden]=\"isHorizontalScrollHidden\" (pointerdown)=\"$event.preventDefault()\">\n <div class=\"igx-grid__scroll-start\" [style.width.px]='isPinningToStart ? pinnedWidth : headerFeaturesWidth' [style.min-width.px]='isPinningToStart ? pinnedWidth : headerFeaturesWidth'></div>\n <div class=\"igx-grid__scroll-main\" [style.width.px]='unpinnedWidth'>\n <ng-template igxGridFor [igxGridForOf]='[]' #scrollContainer>\n </ng-template>\n </div>\n <div class=\"igx-grid__scroll-end\" [style.float]='\"right\"' [style.width.px]='pinnedWidth' [style.min-width.px]='pinnedWidth' [hidden]=\"pinnedWidth === 0 || isPinningToStart\"></div>\n</div>\n\n<div class=\"igx-grid__footer\" #footer>\n <ng-content select=\"igx-grid-footer\"></ng-content>\n <ng-content *ngIf=\"totalRecords || pagingMode === 1\" select=\"igx-paginator\"></ng-content>\n <ng-container #paginatorOutlet></ng-container>\n</div>\n\n<ng-template #emptyFilteredGrid>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{emptyFilteredGridMessage}}</span>\n <span *ngIf='showAddButton'>\n <ng-container *ngTemplateOutlet='addRowEmptyTemplate || defaultAddRowEmptyTemplate'></ng-container>\n </span>\n </span>\n</ng-template>\n\n<ng-template #defaultEmptyGrid>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{emptyGridMessage}}</span>\n <span *ngIf='showAddButton'>\n <ng-container *ngTemplateOutlet='addRowEmptyTemplate || defaultAddRowEmptyTemplate'></ng-container>\n </span>\n </span>\n</ng-template>\n\n<ng-template #defaultAddRowEmptyTemplate>\n <button igxButton=\"raised\" igxRipple (click)=\"this.crudService.enterAddRowMode(null, false, $event)\">\n {{resourceStrings.igx_grid_add_row_label}}\n </button>\n</ng-template>\n\n<ng-template #defaultLoadingGrid>\n <div class=\"igx-grid__loading\">\n <igx-circular-bar [indeterminate]=\"true\">\n </igx-circular-bar>\n </div>\n</ng-template>\n\n<ng-template #defaultCollapsedTemplate>\n <igx-icon role=\"button\">unfold_more</igx-icon>\n</ng-template>\n\n<ng-template #defaultExpandedTemplate>\n <igx-icon role=\"button\" [active]='hasExpandedRecords() && hasExpandableChildren'>unfold_less</igx-icon>\n</ng-template>\n\n<div *ngIf=\"rowEditable\" igxToggle #rowEditingOverlay>\n <div [className]=\"bannerClass\">\n <ng-container\n *ngTemplateOutlet=\"resolveRowEditContainer; context: { rowChangesCount: rowChangesCount, endEdit: this.crudService.endEdit.bind(this) }\">\n </ng-container>\n </div>\n</div>\n<ng-template #defaultRowEditText>\n You have {{ rowChangesCount }} changes in this row\n</ng-template>\n<ng-template #defaultRowEditActions>\n <button igxButton igxRowEditTabStop (click)=\"this.endRowEditTabStop(false, $event)\">{{ this.resourceStrings.igx_grid_row_edit_btn_cancel }}</button>\n <button igxButton igxRowEditTabStop (click)=\"this.endRowEditTabStop(true, $event)\">{{ this.resourceStrings.igx_grid_row_edit_btn_done }}</button>\n</ng-template>\n<ng-template #defaultRowEditTemplate>\n <div class=\"igx-banner__message\">\n <span class=\"igx-banner__text\">\n <ng-container\n *ngTemplateOutlet=\"this.crudService.row?.getClassName() === 'IgxAddRow' ? rowAddText : resolveRowEditText || defaultRowEditText;\n context: { $implicit: this.crudService.row?.getClassName() !== 'IgxAddRow' ? rowChangesCount : null }\">\n </ng-container>\n </span>\n </div>\n <div class=\"igx-banner__actions\">\n <div class=\"igx-banner__row\">\n <ng-container\n *ngTemplateOutlet=\"resolveRowEditActions || defaultRowEditActions; context: { $implicit: this.endEdit.bind(this) }\">\n </ng-container>\n </div>\n </div>\n</ng-template>\n\n<ng-template #dragIndicatorIconBase>\n <igx-icon>drag_indicator</igx-icon>\n</ng-template>\n\n<igx-grid-column-resizer *ngIf=\"colResizingService.showResizer\"></igx-grid-column-resizer>\n<div class=\"igx-grid__loading-outlet\" #igxLoadingOverlayOutlet igxOverlayOutlet></div>\n<div class=\"igx-grid__outlet\" #igxFilteringOverlayOutlet igxOverlayOutlet></div>\n",
|
|
69047
|
+
template: "<ng-content select=\"igx-grid-toolbar\"></ng-content>\n<ng-container #toolbarOutlet></ng-container>\n\n<igx-grid-header-row class=\"igx-grid-thead\" tabindex=\"0\"\n [grid]=\"this\"\n [hasMRL]=\"hasColumnLayouts\"\n [activeDescendant]=\"activeDescendant\"\n [width]=\"calcWidth\"\n [pinnedColumnCollection]=\"pinnedColumns\"\n [unpinnedColumnCollection]=\"unpinnedColumns\"\n (keydown.meta.c)=\"copyHandler($event)\"\n (keydown.control.c)=\"copyHandler($event)\"\n (copy)=\"copyHandler($event)\"\n (keydown)=\"navigation.headerNavigation($event)\"\n (focus)=\"navigation.focusFirstCell()\"\n>\n</igx-grid-header-row>\n\n<div igxGridBody (keydown.control.c)=\"copyHandler($event)\" (copy)=\"copyHandler($event)\" class=\"igx-grid__tbody\" role=\"rowgroup\">\n <div class=\"igx-grid__tbody-content\" tabindex=\"0\" (focus)=\"navigation.focusTbody($event)\"\n (keydown)=\"navigation.handleNavigation($event)\" (dragStop)=\"selectionService.dragMode = $event\"\n (dragScroll)=\"dragScroll($event)\" [igxGridDragSelect]=\"selectionService.dragMode\" [attr.aria-activedescendant]=\"activeDescendant\" [attr.role]=\"dataView.length ? null : 'row'\"\n [style.height.px]='totalHeight' [style.width.px]='calcWidth' #tbody (scroll)='preventContainerScroll($event)'>\n <span *ngIf=\"hasMovableColumns && columnInDrag && pinnedColumns.length <= 0\"\n [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n class=\"igx-grid__scroll-on-drag-left\"></span>\n <span *ngIf=\"hasMovableColumns && columnInDrag && pinnedColumns.length > 0\"\n [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\" id=\"left\"\n class=\"igx-grid__scroll-on-drag-pinned\" [style.left.px]=\"pinnedWidth\"></span>\n <ng-template #pinnedRecordsTemplate>\n <ng-container *ngIf=\"data\n | gridTransaction:id:pipeTrigger\n | visibleColumns:hasVisibleColumns\n | gridAddRow:true:pipeTrigger\n | gridRowPinning:id:true:pipeTrigger\n | gridFiltering:filteringExpressionsTree:filterStrategy:advancedFilteringExpressionsTree:id:pipeTrigger:filteringPipeTrigger:true\n | gridSort:sortingExpressions:sortStrategy:id:pipeTrigger:true as pinnedData\">\n <div #pinContainer *ngIf='pinnedData.length > 0' class='igx-grid__tr--pinned'\n [ngClass]=\"{ 'igx-grid__tr--pinned-bottom': !isRowPinningToTop, 'igx-grid__tr--pinned-top': isRowPinningToTop }\"\n [style.width.px]='calcWidth'>\n <ng-container *ngFor=\"let rowData of pinnedData; let rowIndex = index\">\n <ng-container *ngTemplateOutlet=\"pinned_hierarchical_record_template; context: getContext(rowData, rowIndex, true)\">\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"hasPinnedRecords && isRowPinningToTop ? pinnedRecordsTemplate : null\">\n </ng-container>\n <ng-template igxGridFor let-rowData let-rowIndex=\"index\" [igxGridForOf]=\"data\n | gridTransaction:id:pipeTrigger\n | visibleColumns:hasVisibleColumns\n | gridFiltering:filteringExpressionsTree:filterStrategy:advancedFilteringExpressionsTree:id:pipeTrigger:filteringPipeTrigger\n | gridSort:sortingExpressions:sortStrategy:id:pipeTrigger\n | gridHierarchicalPaging:paginator?.page:paginator?.perPage:id:pipeTrigger\n | gridHierarchical:expansionStates:id:primaryKey:childLayoutKeys:pipeTrigger\n | gridAddRow:false:pipeTrigger\n | gridRowPinning:id:false:pipeTrigger\"\n [igxForScrollOrientation]=\"'vertical'\" [igxForScrollContainer]='verticalScroll'\n [igxForContainerSize]='calcHeight' [igxForItemSize]=\"renderedRowHeight\" [igxForTrackBy]='trackChanges'\n #verticalScrollContainer (chunkPreload)=\"dataLoading($event)\" (dataChanging)=\"dataRebinding($event)\" (dataChanged)=\"dataRebound($event)\">\n <ng-template\n [igxTemplateOutlet]='(isHierarchicalRecord(rowData) ? hierarchical_record_template : (isChildGridRecord(rowData) ? child_record_template : hierarchical_record_template))'\n [igxTemplateOutletContext]='getContext(rowData, rowIndex, false)' (viewCreated)='viewCreatedHandler($event)'\n (viewMoved)='viewMovedHandler($event)' (cachedViewLoaded)='cachedViewLoaded($event)'>\n </ng-template>\n <!-- <ng-container *igxTemplateOutlet=\"(isHierarchicalRecord(rowData) ? hierarchical_record_template : (isChildGridRecord(rowData) && isExpanded(rowData) ? child_record_template : hierarchical_record_template)); context: getContext(rowData)\"></ng-container> -->\n </ng-template>\n <ng-template #hierarchical_record_template let-rowIndex=\"index\" let-disabledRow=\"disabled\" let-rowData>\n <igx-hierarchical-grid-row [gridID]=\"id\" [index]=\"rowIndex\" [disabled]=\"disabledRow\" [rowData]=\"rowData\"\n [ngClass]=\"rowClasses | igxGridRowClasses:row:row.inEditMode:row.selected:row.dirty:row.deleted:row.dragging:rowIndex:hasColumnLayouts:false:rowData:pipeTrigger\"\n [ngStyle]=\"rowStyles | igxGridRowStyles:rowData:rowIndex:pipeTrigger\" #row>\n </igx-hierarchical-grid-row>\n </ng-template>\n\n <ng-template #pinned_hierarchical_record_template let-rowIndex=\"index\" let-rowData>\n <igx-hierarchical-grid-row [gridID]=\"id\" [index]=\"rowIndex\" [rowData]=\"rowData\"\n [ngClass]=\"rowClasses | igxGridRowClasses:row:row.inEditMode:row.selected:row.dirty:row.deleted:row.dragging:rowIndex:hasColumnLayouts:false:rowData:pipeTrigger\"\n [ngStyle]=\"rowStyles | igxGridRowStyles:rowData:rowIndex:pipeTrigger\" #row #pinnedRow>\n </igx-hierarchical-grid-row>\n </ng-template>\n <ng-template #child_record_template let-rowIndex=\"index\" let-rowData>\n <div style=\"overflow: auto; width: 100%;\" [attr.data-rowindex]='rowIndex' (scroll)='onContainerScroll()'\n [ngClass]=\"{\n 'igx-grid__tr-container': true,\n 'igx-grid__tr--highlighted':isRowHighlighted(rowData)\n }\">\n <igx-child-grid-row *ngFor=\"let layout of childLayoutList\" [parentGridID]=\"id\" [index]=\"rowIndex\"\n [rowData]=\"rowData\" [layout]='layout' #row>\n </igx-child-grid-row>\n </div>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"hasPinnedRecords && !isRowPinningToTop ? pinnedRecordsTemplate : null\">\n </ng-container>\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\n <span *ngIf=\"hasMovableColumns && columnInDrag\" [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\"\n id=\"right\" class=\"igx-grid__scroll-on-drag-right\"></span>\n <div class=\"igx-grid__row-editing-outlet\" igxOverlayOutlet #igxRowEditingOverlayOutlet></div>\n <igc-trial-watermark *ngIf=\"!this.parent\"></igc-trial-watermark>\n </div>\n <div igxToggle #loadingOverlay>\n <igx-circular-bar [indeterminate]=\"true\" *ngIf='shouldOverlayLoading'>\n </igx-circular-bar>\n </div>\n <span *ngIf=\"hasMovableColumns && columnInDrag\" [igxColumnMovingDrop]=\"headerContainer\" [attr.droppable]=\"true\"\n id=\"right\" class=\"igx-grid__scroll-on-drag-right\"></span>\n <div [hidden]='!hasVerticalScroll()' class=\"igx-grid__tbody-scrollbar\" [style.width.px]=\"scrollSize\" (pointerdown)=\"$event.preventDefault()\">\n <div class=\"igx-grid__tbody-scrollbar-start\" [style.height.px]=' isRowPinningToTop ? pinnedRowHeight : 0'></div>\n <div class=\"igx-grid__tbody-scrollbar-main\" [style.height.px]='calcHeight'>\n <ng-template igxGridFor [igxGridForOf]='[]' #verticalScrollHolder></ng-template>\n </div>\n <div class=\"igx-grid__tbody-scrollbar-end\" [style.height.px]='!isRowPinningToTop ? pinnedRowHeight : 0'></div>\n </div>\n <div class=\"igx-grid__addrow-snackbar\">\n <igx-snackbar #addRowSnackbar [outlet]=\"igxBodyOverlayOutlet\" [actionText]=\"resourceStrings.igx_grid_snackbar_addrow_actiontext\" [displayTime]='snackbarDisplayTime'>{{resourceStrings.igx_grid_snackbar_addrow_label}}</igx-snackbar>\n </div>\n\n <div igxOverlayOutlet #igxBodyOverlayOutlet=\"overlay-outlet\"></div>\n</div>\n\n<div class=\"igx-grid__tfoot\" role=\"rowgroup\" [style.height.px]='summariesHeight' #tfoot>\n <div tabindex=\"0\" (focus)=\"navigation.focusFirstCell(false)\" [attr.aria-activedescendant]=\"activeDescendant\"\n (keydown)=\"navigation.summaryNav($event)\">\n <igx-grid-summary-row [style.width.px]='calcWidth' [style.height.px]='summariesHeight'\n *ngIf=\"hasSummarizedColumns && rootSummariesEnabled\" [gridID]=\"id\" role=\"row\"\n [summaries]=\"id | igxGridSummaryDataPipe:summaryService.retriggerRootPipe\" [index]=\"dataView.length\"\n class=\"igx-grid__summaries\" #summaryRow>\n </igx-grid-summary-row>\n <div class=\"igx-grid__tfoot-thumb\" [hidden]='!hasVerticalScroll()' [style.height.px]='summariesHeight'\n [style.width.px]=\"scrollSize\"></div>\n </div>\n</div>\n\n<div class=\"igx-grid__scroll\" [style.height.px]=\"scrollSize\" #scr [hidden]=\"isHorizontalScrollHidden\" (pointerdown)=\"$event.preventDefault()\">\n <div class=\"igx-grid__scroll-start\" [style.width.px]='isPinningToStart ? pinnedWidth : headerFeaturesWidth' [style.min-width.px]='isPinningToStart ? pinnedWidth : headerFeaturesWidth'></div>\n <div class=\"igx-grid__scroll-main\" [style.width.px]='unpinnedWidth'>\n <ng-template igxGridFor [igxGridForOf]='[]' #scrollContainer>\n </ng-template>\n </div>\n <div class=\"igx-grid__scroll-end\" [style.float]='\"right\"' [style.width.px]='pinnedWidth' [style.min-width.px]='pinnedWidth' [hidden]=\"pinnedWidth === 0 || isPinningToStart\"></div>\n</div>\n\n<div class=\"igx-grid__footer\" #footer>\n <ng-content select=\"igx-grid-footer\"></ng-content>\n <ng-content *ngIf=\"totalRecords || pagingMode === 1\" select=\"igx-paginator\"></ng-content>\n <ng-container #paginatorOutlet></ng-container>\n</div>\n\n<ng-template #emptyFilteredGrid>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{emptyFilteredGridMessage}}</span>\n <span *ngIf='showAddButton'>\n <ng-container *ngTemplateOutlet='addRowEmptyTemplate || defaultAddRowEmptyTemplate'></ng-container>\n </span>\n </span>\n</ng-template>\n\n<ng-template #defaultEmptyGrid>\n <span class=\"igx-grid__tbody-message\" role=\"cell\">\n <span>{{emptyGridMessage}}</span>\n <span *ngIf='showAddButton'>\n <ng-container *ngTemplateOutlet='addRowEmptyTemplate || defaultAddRowEmptyTemplate'></ng-container>\n </span>\n </span>\n</ng-template>\n\n<ng-template #defaultAddRowEmptyTemplate>\n <button igxButton=\"raised\" igxRipple (click)=\"this.crudService.enterAddRowMode(null, false, $event)\">\n {{resourceStrings.igx_grid_add_row_label}}\n </button>\n</ng-template>\n\n<ng-template #defaultLoadingGrid>\n <div class=\"igx-grid__loading\">\n <igx-circular-bar [indeterminate]=\"true\">\n </igx-circular-bar>\n </div>\n</ng-template>\n\n<ng-template #defaultCollapsedTemplate>\n <igx-icon role=\"button\">unfold_more</igx-icon>\n</ng-template>\n\n<ng-template #defaultExpandedTemplate>\n <igx-icon role=\"button\" [active]='hasExpandedRecords() && hasExpandableChildren'>unfold_less</igx-icon>\n</ng-template>\n\n<div *ngIf=\"rowEditable\" igxToggle #rowEditingOverlay>\n <div [className]=\"bannerClass\">\n <ng-container\n *ngTemplateOutlet=\"resolveRowEditContainer; context: { rowChangesCount: rowChangesCount, endEdit: this.crudService.endEdit.bind(this) }\">\n </ng-container>\n </div>\n</div>\n<ng-template #defaultRowEditText>\n You have {{ rowChangesCount }} changes in this row\n</ng-template>\n<ng-template #defaultRowEditActions>\n <button igxButton igxRowEditTabStop (click)=\"this.endRowEditTabStop(false, $event)\">{{ this.resourceStrings.igx_grid_row_edit_btn_cancel }}</button>\n <button igxButton igxRowEditTabStop (click)=\"this.endRowEditTabStop(true, $event)\">{{ this.resourceStrings.igx_grid_row_edit_btn_done }}</button>\n</ng-template>\n<ng-template #defaultRowEditTemplate>\n <div class=\"igx-banner__message\">\n <span class=\"igx-banner__text\">\n <ng-container\n *ngTemplateOutlet=\"this.crudService.row?.getClassName() === 'IgxAddRow' ? rowAddText : resolveRowEditText || defaultRowEditText;\n context: { $implicit: this.crudService.row?.getClassName() !== 'IgxAddRow' ? rowChangesCount : null }\">\n </ng-container>\n </span>\n </div>\n <div class=\"igx-banner__actions\">\n <div class=\"igx-banner__row\">\n <ng-container\n *ngTemplateOutlet=\"resolveRowEditActions || defaultRowEditActions; context: { $implicit: this.endEdit.bind(this) }\">\n </ng-container>\n </div>\n </div>\n</ng-template>\n\n<ng-template #dragIndicatorIconBase>\n <igx-icon>drag_indicator</igx-icon>\n</ng-template>\n\n<igx-grid-column-resizer *ngIf=\"colResizingService.showResizer\"></igx-grid-column-resizer>\n<div class=\"igx-grid__loading-outlet\" #igxLoadingOverlayOutlet igxOverlayOutlet></div>\n<div class=\"igx-grid__outlet\" #igxFilteringOverlayOutlet igxOverlayOutlet></div>\n",
|
|
68891
69048
|
providers: [
|
|
68892
69049
|
IgxGridCRUDService,
|
|
68893
69050
|
IgxGridSelectionService,
|
|
@@ -72728,7 +72885,7 @@ class IgxBottomNavComponent extends IgxTabsDirective {
|
|
|
72728
72885
|
IgxBottomNavComponent.decorators = [
|
|
72729
72886
|
{ type: Component, args: [{
|
|
72730
72887
|
selector: 'igx-bottom-nav',
|
|
72731
|
-
template: "<ng-container *ngFor=\"let tab of items; let i = index\">\
|
|
72888
|
+
template: "<ng-container *ngFor=\"let tab of items; let i = index\">\n <ng-container *ngTemplateOutlet=\"tab.panelTemplate\"></ng-container>\n</ng-container>\n\n<div\n #tablist\n role=\"tablist\"\n class=\"igx-bottom-nav__menu igx-bottom-nav__menu--bottom\"\n aria-orientation=\"horizontal\"\n>\n <ng-container *ngFor=\"let tab of items; let i = index\">\n <ng-container *ngTemplateOutlet=\"tab.headerTemplate\"></ng-container>\n </ng-container>\n</div>\n",
|
|
72732
72889
|
providers: [{ provide: IgxTabsBase, useExisting: IgxBottomNavComponent }]
|
|
72733
72890
|
},] }
|
|
72734
72891
|
];
|
|
@@ -72738,7 +72895,7 @@ class IgxBottomNavItemComponent extends IgxTabItemDirective {
|
|
|
72738
72895
|
IgxBottomNavItemComponent.decorators = [
|
|
72739
72896
|
{ type: Component, args: [{
|
|
72740
72897
|
selector: 'igx-bottom-nav-item',
|
|
72741
|
-
template: "<ng-template #headerTemplate>\
|
|
72898
|
+
template: "<ng-template #headerTemplate>\n <ng-content select=\"igx-bottom-nav-header\"></ng-content>\n</ng-template>\n<ng-template #panelTemplate>\n <ng-content select=\"igx-bottom-nav-content\"></ng-content>\n</ng-template>\n",
|
|
72742
72899
|
providers: [{ provide: IgxTabItemDirective, useExisting: IgxBottomNavItemComponent }]
|
|
72743
72900
|
},] }
|
|
72744
72901
|
];
|
|
@@ -72760,7 +72917,7 @@ class IgxBottomNavHeaderComponent extends IgxTabHeaderDirective {
|
|
|
72760
72917
|
IgxBottomNavHeaderComponent.decorators = [
|
|
72761
72918
|
{ type: Component, args: [{
|
|
72762
72919
|
selector: 'igx-bottom-nav-header',
|
|
72763
|
-
template: "<ng-content></ng-content>\
|
|
72920
|
+
template: "<ng-content></ng-content>\n",
|
|
72764
72921
|
providers: [{ provide: IgxTabHeaderBase, useExisting: IgxBottomNavHeaderComponent }]
|
|
72765
72922
|
},] }
|
|
72766
72923
|
];
|
|
@@ -72795,7 +72952,7 @@ class IgxBottomNavContentComponent extends IgxTabContentDirective {
|
|
|
72795
72952
|
IgxBottomNavContentComponent.decorators = [
|
|
72796
72953
|
{ type: Component, args: [{
|
|
72797
72954
|
selector: 'igx-bottom-nav-content',
|
|
72798
|
-
template: "<ng-content *ngIf=\"tab.selected || tab.previous\"></ng-content>\
|
|
72955
|
+
template: "<ng-content *ngIf=\"tab.selected || tab.previous\"></ng-content>\n",
|
|
72799
72956
|
providers: [{ provide: IgxTabContentBase, useExisting: IgxBottomNavContentComponent }]
|
|
72800
72957
|
},] }
|
|
72801
72958
|
];
|
|
@@ -73079,7 +73236,7 @@ class IgxTabsComponent extends IgxTabsDirective {
|
|
|
73079
73236
|
IgxTabsComponent.decorators = [
|
|
73080
73237
|
{ type: Component, args: [{
|
|
73081
73238
|
selector: 'igx-tabs',
|
|
73082
|
-
template: "<div #headerContainer class=\"igx-tabs__header\">\
|
|
73239
|
+
template: "<div #headerContainer class=\"igx-tabs__header\">\n <button\n #leftButton\n igxButton=\"icon\"\n igxRipple\n class=\"igx-tabs__header-button\"\n (click)=\"scrollLeft()\"\n >\n <igx-icon>navigate_before</igx-icon>\n </button>\n <div #viewPort class=\"igx-tabs__header-content\">\n <div\n #itemsWrapper\n class=\"igx-tabs__header-wrapper\" \n role=\"tablist\"\n >\n <div \n #itemsContainer\n class=\"igx-tabs__header-scroll\"\n [ngClass]=\"resolveHeaderScrollClasses()\"\n >\n <ng-container *ngFor=\"let tab of items; let i = index\">\n <ng-container *ngTemplateOutlet=\"tab.headerTemplate\"></ng-container>\n </ng-container>\n </div>\n <div\n #selectedIndicator\n *ngIf=\"items.length > 0\"\n class=\"igx-tabs__header-active-indicator\"\n >\n </div>\n </div>\n </div>\n <button\n #rightButton\n igxButton=\"icon\"\n igxRipple\n class=\"igx-tabs__header-button\"\n (click)=\"scrollRight()\"\n >\n <igx-icon>navigate_next</igx-icon>\n </button>\n</div>\n<div class=\"igx-tabs__panels\">\n <ng-container *ngFor=\"let tab of items; let i = index\">\n <ng-container *ngTemplateOutlet=\"tab.panelTemplate\"></ng-container>\n </ng-container>\n</div>\n",
|
|
73083
73240
|
providers: [{ provide: IgxTabsBase, useExisting: IgxTabsComponent }]
|
|
73084
73241
|
},] }
|
|
73085
73242
|
];
|
|
@@ -73105,7 +73262,7 @@ class IgxTabItemComponent extends IgxTabItemDirective {
|
|
|
73105
73262
|
IgxTabItemComponent.decorators = [
|
|
73106
73263
|
{ type: Component, args: [{
|
|
73107
73264
|
selector: 'igx-tab-item',
|
|
73108
|
-
template: "<ng-template #headerTemplate>\
|
|
73265
|
+
template: "<ng-template #headerTemplate>\n <ng-content select=\"igx-tab-header\"></ng-content>\n</ng-template>\n<ng-template #panelTemplate>\n <ng-content select=\"igx-tab-content\"></ng-content>\n</ng-template>\n",
|
|
73109
73266
|
providers: [{ provide: IgxTabItemDirective, useExisting: IgxTabItemComponent }]
|
|
73110
73267
|
},] }
|
|
73111
73268
|
];
|
|
@@ -73206,7 +73363,7 @@ class IgxTabHeaderComponent extends IgxTabHeaderDirective {
|
|
|
73206
73363
|
IgxTabHeaderComponent.decorators = [
|
|
73207
73364
|
{ type: Component, args: [{
|
|
73208
73365
|
selector: 'igx-tab-header',
|
|
73209
|
-
template: "<ng-content select=\"igx-prefix,[igxPrefix]\"></ng-content>\
|
|
73366
|
+
template: "<ng-content select=\"igx-prefix,[igxPrefix]\"></ng-content>\n\n<div class=\"igx-tabs__header-item-inner\">\n <ng-content></ng-content>\n</div>\n\n<ng-content select=\"igx-suffix,[igxSuffix]\"></ng-content>\n",
|
|
73210
73367
|
providers: [{ provide: IgxTabHeaderBase, useExisting: IgxTabHeaderComponent }]
|
|
73211
73368
|
},] }
|
|
73212
73369
|
];
|
|
@@ -73249,7 +73406,7 @@ class IgxTabContentComponent extends IgxTabContentDirective {
|
|
|
73249
73406
|
IgxTabContentComponent.decorators = [
|
|
73250
73407
|
{ type: Component, args: [{
|
|
73251
73408
|
selector: 'igx-tab-content',
|
|
73252
|
-
template: "<ng-content *ngIf=\"tab.selected || tab.previous\"></ng-content>\
|
|
73409
|
+
template: "<ng-content *ngIf=\"tab.selected || tab.previous\"></ng-content>\n",
|
|
73253
73410
|
providers: [{ provide: IgxTabContentBase, useExisting: IgxTabContentComponent }]
|
|
73254
73411
|
},] }
|
|
73255
73412
|
];
|