Skip to content

Commit 016e715

Browse files
authored
Merge branch '11.1.x' into gedinakova/fix-9336-11.1
2 parents 857f2f1 + 2467fcc commit 016e715

20 files changed

+191
-89
lines changed

projects/igniteui-angular/src/lib/core/i18n/grid-resources.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -222,8 +222,8 @@ export const GridResourceStringsEN: IGridResourceStrings = {
222222
igx_grid_advanced_filter_column_placeholder: 'Select column',
223223
igx_grid_advanced_filter_value_placeholder: 'Value',
224224
igx_grid_pinned_row_indicator: 'Pinned',
225-
igx_grid_hiding_check_all_label: 'Hide All',
226-
igx_grid_hiding_uncheck_all_label: 'Show All',
225+
igx_grid_hiding_check_all_label: 'Show All',
226+
igx_grid_hiding_uncheck_all_label: 'Hide All',
227227
igx_grid_pinning_check_all_label: 'Pin All',
228228
igx_grid_pinning_uncheck_all_label: 'Unpin All',
229229
igx_grid_toolbar_actions_filter_prompt: 'Filter columns list ...',

projects/igniteui-angular/src/lib/core/styles/components/grid/_grid-theme.scss

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1412,7 +1412,9 @@
14121412

14131413
// Have a more stable visual editing experience
14141414
igx-input-group,
1415-
igx-select {
1415+
igx-select,
1416+
igx-date-picker,
1417+
igx-time-picker {
14161418
width: 100%;
14171419
height: 100%;
14181420
}
@@ -1422,12 +1424,14 @@
14221424
padding-top: 0 !important;
14231425
}
14241426

1425-
igx-date-picker,
1426-
igx-time-picker,
14271427
igx-date-range-picker {
14281428
height: 100%;
14291429
}
14301430

1431+
igx-time-picker [igxLabel] {
1432+
display: none;
1433+
}
1434+
14311435
%form-group-bundle {
14321436
height: 100%;
14331437
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ <h4 [attr.id]='titleID' class="igx-column-actions__header-title" *ngIf="title">{
2020
| sortActionColumns:columnDisplayOrder:pipeTrigger;"
2121
class="igx-column-actions__columns-item"
2222
[readonly]="true"
23-
(click)="toggleColumn($event, column)"
23+
(click)="toggleColumn(column)"
2424
[checked]="actionsDirective.columnChecked(column)"
2525
[style.margin-left.px]="column.level * indentation">
2626
{{ column.header || column.field }}

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

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -406,12 +406,9 @@ export class IgxColumnActionsComponent implements DoCheck {
406406
/**
407407
* @hidden @internal
408408
*/
409-
public toggleColumn(event: IChangeCheckboxEventArgs, column: IgxColumnComponent) {
409+
public toggleColumn(column: IgxColumnComponent) {
410410
this.actionsDirective.toggleColumn(column);
411411

412-
this.onColumnToggled.emit({
413-
column,
414-
checked: event.checked
415-
});
412+
this.onColumnToggled.emit({column, checked: this.actionsDirective.columnChecked(column)});
416413
}
417414
}

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,28 +19,28 @@ export class IgxColumnHidingDirective extends IgxColumnActionsBaseDirective {
1919
* @hidden @internal
2020
*/
2121
public get checkAllLabel(): string {
22-
return this.columnActions.grid?.resourceStrings.igx_grid_hiding_check_all_label ?? 'Hide All';
22+
return this.columnActions.grid?.resourceStrings.igx_grid_hiding_check_all_label ?? 'Show All';
2323
}
2424

2525
/**
2626
* @hidden @internal
2727
*/
2828
public get uncheckAllLabel(): string {
29-
return this.columnActions.grid?.resourceStrings.igx_grid_hiding_uncheck_all_label ?? 'Show All';
29+
return this.columnActions.grid?.resourceStrings.igx_grid_hiding_uncheck_all_label ?? 'Hide All';
3030
}
3131
/**
3232
* @hidden @internal
3333
*/
3434
public checkAll() {
35-
this.columnActions.filteredColumns.forEach(c => c.toggleVisibility(true));
35+
this.columnActions.filteredColumns.forEach(c => c.toggleVisibility(false));
3636

3737
}
3838

3939
/**
4040
* @hidden @internal
4141
*/
4242
public uncheckAll() {
43-
this.columnActions.filteredColumns.forEach(c => c.toggleVisibility(false));
43+
this.columnActions.filteredColumns.forEach(c => c.toggleVisibility(true));
4444
}
4545

4646
/**
@@ -63,10 +63,10 @@ export class IgxColumnHidingDirective extends IgxColumnActionsBaseDirective {
6363
}
6464

6565
public get allChecked() {
66-
return this.columnActions.filteredColumns.every(col => this.columnChecked(col));
66+
return this.columnActions.filteredColumns.every(col => !this.columnChecked(col));
6767
}
6868

6969
public get allUnchecked() {
70-
return this.columnActions.filteredColumns.every(col => !this.columnChecked(col));
70+
return this.columnActions.filteredColumns.every(col => this.columnChecked(col));
7171
}
7272
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -446,7 +446,7 @@ export class IgxGridFilteringRowComponent implements AfterViewInit {
446446
requestAnimationFrame(() => {
447447
const focusedElement = document.activeElement;
448448

449-
if (focusedElement.className === 'igx-chip__remove' || focusedElement.tagName === 'IGX-DAY-ITEM') {
449+
if (focusedElement.classList.contains('igx-chip__remove') || focusedElement.tagName === 'IGX-DAY-ITEM') {
450450
return;
451451
}
452452

projects/igniteui-angular/src/lib/grids/filtering/excel-style/grid.excel-style-filtering.component.ts

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import { GridBaseAPIService } from '../../api.service';
3131
import { FormattedValuesFilteringStrategy } from '../../../data-operations/filtering-strategy';
3232
import { TreeGridFormattedValuesFilteringStrategy } from '../../tree-grid/tree-grid.filtering.strategy';
3333
import { getLocaleCurrencyCode } from '@angular/common';
34+
import { SortingDirection } from '../../../data-operations/sorting-expression.interface';
3435

3536
/**
3637
* @hidden
@@ -611,7 +612,8 @@ export class IgxGridExcelStyleFilteringComponent implements OnDestroy {
611612
this.addItems(shouldUpdateSelection);
612613
}
613614

614-
this.listData.sort((a, b) => this.sortData(a, b));
615+
this.listData = this.column.sortStrategy.sort(this.listData, 'value', SortingDirection.Asc, this.column.sortingIgnoreCase,
616+
(obj, key) => obj[key]);
615617

616618
if (this.containsNullOrEmpty) {
617619
this.addBlanksItem(shouldUpdateSelection);
@@ -756,22 +758,6 @@ export class IgxGridExcelStyleFilteringComponent implements OnDestroy {
756758
this.listData.unshift(blanks);
757759
}
758760

759-
private sortData(a: FilterListItem, b: FilterListItem) {
760-
let valueA = a.value;
761-
let valueB = b.value;
762-
if (typeof(a) === DataType.String) {
763-
valueA = a.value.toUpperCase();
764-
valueB = b.value.toUpperCase();
765-
}
766-
if (valueA < valueB) {
767-
return -1;
768-
} else if (valueA > valueB) {
769-
return 1;
770-
} else {
771-
return 0;
772-
}
773-
}
774-
775761
private getFilterItemLabel(element: any, applyFormatter: boolean = true) {
776762
if (this.column.dataType === DataType.Date) {
777763
return element && element.label ? element.label : this.column.formatter ?

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

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4328,14 +4328,33 @@ export abstract class IgxGridBaseDirective extends DisplayDensityBase implements
43284328
}
43294329

43304330
/**
4331-
* Manually marks the `IgxGridComponent` for change detection.
4331+
* Triggers change detection for the `IgxGridComponent`.
4332+
* Calling markForCheck also triggers the grid pipes explicitly, resulting in all updates being processed.
4333+
* May degrade performance if used when not needed, or if misused:
4334+
* ```typescript
4335+
* // DON'Ts:
4336+
* // don't call markForCheck from inside a loop
4337+
* // don't call markForCheck when a primitive has changed
4338+
* grid.data.forEach(rec => {
4339+
* rec = newValue;
4340+
* grid.markForCheck();
4341+
* });
4342+
*
4343+
* // DOs
4344+
* // call markForCheck after updating a nested property
4345+
* grid.data.forEach(rec => {
4346+
* rec.nestedProp1.nestedProp2 = newValue;
4347+
* });
4348+
* grid.markForCheck();
4349+
* ```
43324350
*
43334351
* @example
43344352
* ```typescript
4335-
* this.grid1.markForCheck();
4353+
* grid.markForCheck();
43364354
* ```
43374355
*/
43384356
public markForCheck() {
4357+
this._pipeTrigger++;
43394358
this.cdr.detectChanges();
43404359
}
43414360

@@ -5185,7 +5204,7 @@ export abstract class IgxGridBaseDirective extends DisplayDensityBase implements
51855204
sum += parseInt(col.calcWidth, 10);
51865205
}
51875206
}
5188-
if (this.pinning.columns === ColumnPinningPosition.Start) {
5207+
if (this.isPinningToStart) {
51895208
sum += this.featureColumnsWidth();
51905209
}
51915210

@@ -6679,7 +6698,7 @@ export abstract class IgxGridBaseDirective extends DisplayDensityBase implements
66796698
if (this.hasVerticalScroll() && !this.isPercentWidth) {
66806699
width -= this.scrollSize;
66816700
}
6682-
if (this.pinning.columns === ColumnPinningPosition.End) {
6701+
if (!this.isPinningToStart) {
66836702
width -= this.featureColumnsWidth();
66846703
}
66856704

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

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -159,31 +159,31 @@ describe('Column Hiding UI #grid', () => {
159159

160160
expect(columnChooser.onColumnToggled.emit).toHaveBeenCalledTimes(1);
161161
expect(columnChooser.onColumnToggled.emit).toHaveBeenCalledWith(
162-
{ column: grid.getColumnByName('ReleaseDate'), checked: undefined });
162+
{ column: grid.getColumnByName('ReleaseDate'), checked: false });
163163
expect(grid.columnVisibilityChanging.emit).toHaveBeenCalledTimes(1);
164164
expect(grid.onColumnVisibilityChanged.emit).toHaveBeenCalledTimes(1);
165165

166166
GridFunctions.clickColumnChooserItem(columnChooserElement, 'ReleaseDate');
167167

168168
expect(columnChooser.onColumnToggled.emit).toHaveBeenCalledTimes(2);
169169
expect(columnChooser.onColumnToggled.emit).toHaveBeenCalledWith(
170-
{ column: grid.getColumnByName('ReleaseDate'), checked: undefined });
170+
{ column: grid.getColumnByName('ReleaseDate'), checked: true });
171171
expect(grid.columnVisibilityChanging.emit).toHaveBeenCalledTimes(2);
172172
expect(grid.onColumnVisibilityChanged.emit).toHaveBeenCalledTimes(2);
173173

174174
GridFunctions.clickColumnChooserItem(columnChooserElement, 'Downloads');
175175

176176
expect(columnChooser.onColumnToggled.emit).toHaveBeenCalledTimes(3);
177177
expect(columnChooser.onColumnToggled.emit).toHaveBeenCalledWith(
178-
{ column: grid.getColumnByName('Downloads'), checked: undefined });
178+
{ column: grid.getColumnByName('Downloads'), checked: true });
179179
expect(grid.columnVisibilityChanging.emit).toHaveBeenCalledTimes(3);
180180
expect(grid.onColumnVisibilityChanged.emit).toHaveBeenCalledTimes(3);
181181

182182
GridFunctions.clickColumnChooserItem(columnChooserElement, 'Downloads');
183183

184184
expect(columnChooser.onColumnToggled.emit).toHaveBeenCalledTimes(4);
185185
expect(columnChooser.onColumnToggled.emit).toHaveBeenCalledWith(
186-
{ column: grid.getColumnByName('Downloads'), checked: undefined });
186+
{ column: grid.getColumnByName('Downloads'), checked: false });
187187
expect(grid.columnVisibilityChanging.emit).toHaveBeenCalledTimes(4);
188188
expect(grid.onColumnVisibilityChanged.emit).toHaveBeenCalledTimes(4);
189189
});
@@ -579,8 +579,8 @@ describe('Column Hiding UI #grid', () => {
579579

580580
const showAll = GridFunctions.getColumnChooserButton(columnChooserElement, 'Show All');
581581
const hideAll = GridFunctions.getColumnChooserButton(columnChooserElement, 'Hide All').nativeElement;
582-
ControlsFunction.verifyButtonIsDisabled(showAll.nativeElement, false);
583-
ControlsFunction.verifyButtonIsDisabled(hideAll);
582+
ControlsFunction.verifyButtonIsDisabled(showAll.nativeElement);
583+
ControlsFunction.verifyButtonIsDisabled(hideAll, false);
584584

585585
showAll.triggerEventHandler('click', new Event('click'));
586586
fix.detectChanges();
@@ -600,11 +600,11 @@ describe('Column Hiding UI #grid', () => {
600600
fix.detectChanges();
601601
tick();
602602

603-
ControlsFunction.verifyButtonIsDisabled(showAll.nativeElement, false);
603+
ControlsFunction.verifyButtonIsDisabled(showAll.nativeElement);
604604
ControlsFunction.verifyButtonIsDisabled(hideAll, false);
605605

606606
checkbox = GridFunctions.getColumnChooserItemElement(columnChooserElement, 'ProductName');
607-
expect(GridFunctions.getColumnChooserItemInput(checkbox).checked).toBe(false);
607+
expect(GridFunctions.getColumnChooserItemInput(checkbox).checked).toBe(true);
608608

609609
showAll.triggerEventHandler('click', new Event('click'));
610610
fix.detectChanges();
@@ -616,11 +616,11 @@ describe('Column Hiding UI #grid', () => {
616616
expect(columnChooser.filterCriteria).toBe('', 'Filter criteria is not empty string!');
617617

618618
checkbox = GridFunctions.getColumnChooserItemElement(columnChooserElement, 'ID');
619-
expect(GridFunctions.getColumnChooserItemInput(checkbox).checked).toBe(false);
619+
expect(GridFunctions.getColumnChooserItemInput(checkbox).checked).toBe(true);
620620
checkbox = GridFunctions.getColumnChooserItemElement(columnChooserElement, 'ProductName');
621621
expect(GridFunctions.getColumnChooserItemInput(checkbox).checked).toBe(true);
622622

623-
ControlsFunction.verifyButtonIsDisabled(showAll.nativeElement, false);
623+
ControlsFunction.verifyButtonIsDisabled(showAll.nativeElement);
624624
ControlsFunction.verifyButtonIsDisabled(hideAll, false);
625625
}));
626626

0 commit comments

Comments
 (0)