Skip to content

Commit 785d852

Browse files
authored
Merge branch '18.2.x' into thristodorova/fix-15448-18.2.x
2 parents 54793a7 + c639519 commit 785d852

File tree

13 files changed

+154
-28
lines changed

13 files changed

+154
-28
lines changed

projects/igniteui-angular/src/lib/calendar/days-view/day-item.component.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,8 @@ export class IgxDayItemComponent {
111111
@HostBinding('class.igx-days-view__date--selected')
112112
public get isSelectedCSS(): boolean {
113113
const selectable =
114-
!this.isInactive || (this.isWithinRange && this.selection === "range");
114+
!this.isInactive || this.isWithinPreviewRange ||
115+
(this.isWithinRange && this.selection === "range");
115116
return !this.isDisabled && selectable && this.selected;
116117
}
117118

projects/igniteui-angular/src/lib/combo/combo.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
[width]="itemsWidth || '100%'" (opening)="handleOpening($event)" (closing)="handleClosing($event)"
3737
(opened)="handleOpened()" (closed)="handleClosed()">
3838
<div class="igx-combo__search" *ngIf="displaySearchInput">
39-
<igx-input-group>
39+
<igx-input-group type="line">
4040
<input igxInput #searchInput name="searchInput" autocomplete="off" type="text"
4141
[(ngModel)]="searchValue" (ngModelChange)="handleInputChange($event)" (keyup)="handleKeyUp($event)"
4242
(keydown)="handleKeyDown($event)" (focus)="dropdown.onBlur($event)" [attr.placeholder]="getSearchPlaceholderText()"

projects/igniteui-angular/src/lib/core/styles/components/chip/_chip-theme.scss

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -700,7 +700,9 @@
700700

701701
%igx-chip__prefix,
702702
%igx-chip__suffix {
703-
display: inline-flex;
703+
@include ellipsis();
704+
705+
display: inline-block;
704706
vertical-align: middle;
705707
max-width: $chip-max-width;
706708

projects/igniteui-angular/src/lib/core/styles/components/combo/_combo-theme.scss

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,4 +309,12 @@
309309
}
310310
}
311311
}
312+
313+
%form-group-bundle {
314+
&:hover {
315+
%igx-combo__clear-button {
316+
color: inherit;
317+
}
318+
}
319+
}
312320
}

projects/igniteui-angular/src/lib/directives/button/button.directive.ts

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ import {
77
Output,
88
Renderer2,
99
booleanAttribute,
10-
AfterContentInit
10+
AfterContentInit,
11+
OnDestroy
1112
} from '@angular/core';
1213
import { mkenum } from '../../core/utils';
1314
import { IBaseEventArgs } from '../../core/utils';
@@ -46,7 +47,7 @@ export type IgxButtonType = typeof IgxButtonType[keyof typeof IgxButtonType];
4647
selector: '[igxButton]',
4748
standalone: true
4849
})
49-
export class IgxButtonDirective extends IgxButtonBaseDirective implements AfterContentInit {
50+
export class IgxButtonDirective extends IgxButtonBaseDirective implements AfterContentInit, OnDestroy {
5051
private static ngAcceptInputType_type: IgxButtonType | '';
5152

5253
/**
@@ -92,6 +93,12 @@ export class IgxButtonDirective extends IgxButtonBaseDirective implements AfterC
9293
*/
9394
private _selected = false;
9495

96+
private emitSelected() {
97+
this.buttonSelected.emit({
98+
button: this
99+
});
100+
}
101+
95102
/**
96103
* Gets or sets whether the button is selected.
97104
* Mainly used in the IgxButtonGroup component and it will have no effect if set separately.
@@ -121,11 +128,11 @@ export class IgxButtonDirective extends IgxButtonBaseDirective implements AfterC
121128
}
122129

123130
public ngAfterContentInit() {
124-
this.nativeElement.addEventListener('click', () => {
125-
this.buttonSelected.emit({
126-
button: this
127-
});
128-
});
131+
this.nativeElement.addEventListener('click', this.emitSelected.bind(this));
132+
}
133+
134+
public ngOnDestroy(): void {
135+
this.nativeElement.removeEventListener('click', this.emitSelected);
129136
}
130137

131138
/**

projects/igniteui-angular/src/lib/grids/moving/moving.drag.directive.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Directive, OnDestroy, Input, ElementRef, ViewContainerRef, NgZone, ChangeDetectorRef, Renderer2 } from '@angular/core';
22
import { IgxDragDirective } from '../../directives/drag-drop/drag-drop.directive';
3-
import { Subscription, fromEvent, takeUntil } from 'rxjs';
3+
import { Subscription, fromEvent } from 'rxjs';
4+
import { takeUntil } from 'rxjs/operators';
45
import { PlatformUtil } from '../../core/utils';
56
import { IgxColumnMovingService } from './moving.service';
67
import { ColumnType } from '../common/grid.interface';

projects/igniteui-angular/src/lib/input-group/input-group.component.ts

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { DOCUMENT, NgIf, NgTemplateOutlet, NgClass, NgSwitch, NgSwitchCase, NgSwitchDefault } from '@angular/common';
22
import {
3-
AfterViewInit,
43
ChangeDetectorRef,
54
Component,
65
ContentChild,
@@ -36,7 +35,7 @@ import { IgxTheme, THEME_TOKEN, ThemeToken } from '../services/theme/theme.token
3635
standalone: true,
3736
imports: [NgIf, NgTemplateOutlet, IgxPrefixDirective, IgxButtonDirective, NgClass, IgxSuffixDirective, IgxIconComponent, NgSwitch, NgSwitchCase, NgSwitchDefault]
3837
})
39-
export class IgxInputGroupComponent implements IgxInputGroupBase, AfterViewInit {
38+
export class IgxInputGroupComponent implements IgxInputGroupBase {
4039
/**
4140
* Sets the resource strings.
4241
* By default it uses EN resources.
@@ -220,15 +219,13 @@ export class IgxInputGroupComponent implements IgxInputGroupBase, AfterViewInit
220219
private themeToken: ThemeToken
221220
) {
222221
this._theme = this.themeToken.theme;
223-
224-
const { unsubscribe } = this.themeToken.onChange((theme) => {
222+
const themeChange = this.themeToken.onChange((theme) => {
225223
if (this._theme !== theme) {
226224
this._theme = theme;
227225
this.cdr.detectChanges();
228226
}
229227
});
230-
231-
this._destroyRef.onDestroy(() => unsubscribe);
228+
this._destroyRef.onDestroy(() => themeChange.unsubscribe());
232229
}
233230

234231
/** @hidden */
@@ -456,7 +453,7 @@ export class IgxInputGroupComponent implements IgxInputGroupBase, AfterViewInit
456453
}
457454

458455
/** @hidden @internal */
459-
public ngAfterViewInit() {
456+
public ngAfterContentChecked() {
460457
this.setComponentTheme();
461458
}
462459
}

projects/igniteui-angular/src/lib/services/excel/excel-exporter-grid.spec.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ import { NoopAnimationsModule } from '@angular/platform-browser/animations';
4040
import { FilteringExpressionsTree } from '../../data-operations/filtering-expressions-tree';
4141
import { FilteringLogic } from '../../data-operations/filtering-expression.interface';
4242
import { IgxHierarchicalGridExportComponent,
43+
IgxHierarchicalGridMCHCollapsibleComponent,
4344
IgxHierarchicalGridMultiColumnHeaderIslandsExportComponent,
4445
IgxHierarchicalGridMultiColumnHeadersExportComponent,
4546
IgxHierarchicalGridSummariesExportComponent
@@ -1013,6 +1014,27 @@ describe('Excel Exporter', () => {
10131014

10141015
await exportAndVerify(hGrid, options, actualData.exportEmptyMultiColumnHeadersDataWithExportedHeaders);
10151016
});
1017+
1018+
it('should export collapsible MCH with visibleWhenCollapsed set on 2 columns with the same field', async () => {
1019+
const fix = TestBed.createComponent(IgxHierarchicalGridMCHCollapsibleComponent);
1020+
fix.detectChanges();
1021+
1022+
const hGrid = fix.componentInstance.hGrid;
1023+
GridFunctions.clickGroupExpandIndicator(fix, hGrid.columnList.get(1));
1024+
fix.detectChanges();
1025+
1026+
const firstRow = hGrid.gridAPI.get_row_by_index(0) as IgxHierarchicalRowComponent;
1027+
UIInteractions.simulateClickAndSelectEvent(firstRow.expander);
1028+
fix.detectChanges();
1029+
1030+
const rowIsland = hGrid.childLayoutList.first;
1031+
GridFunctions.clickGroupExpandIndicator(fix, rowIsland.columnList.get(1));
1032+
fix.detectChanges();
1033+
1034+
1035+
options = createExportOptions('HierarchicalGridCollapsibleMCHExcelExport');
1036+
await exportAndVerify(hGrid, options, actualData.exportHierarchicalDataWithCollapsibleMCH);
1037+
})
10161038
});
10171039

10181040
describe('', () => {

projects/igniteui-angular/src/lib/services/excel/test-data.service.spec.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1283,6 +1283,20 @@ export class FileContentData {
12831283
return this.createData();
12841284
}
12851285

1286+
public get exportHierarchicalDataWithCollapsibleMCH() {
1287+
this._sharedStringsData =
1288+
`count="53" uniqueCount="38"><si><t>ID</t></si><si><t>Location</t></si><si><t>City</t></si><si><t>ALFKI</t></si><si><t>Berlin</t></si><si><t>CompanyName</t></si><si><t>Personal Details</t></si><si><t>ContactName</t></si><si><t>ContactTitle</t></si><si><t>Ana Trujillo Emparedados y helados</t></si><si><t>Ana Trujillo</t></si><si><t>Owner</t></si><si><t>Antonio Moreno Taquería</t></si><si><t>Antonio Moreno</t></si><si><t>COMMI</t></si><si><t>Sao Paulo</t></si><si><t>Consolidated Holdings</t></si><si><t>Elizabeth Brown</t></si><si><t>Sales Representative</t></si><si><t>Drachenblut Delikatessen</t></si><si><t>Sven Ottlieb</t></si><si><t>Order Administrator</t></si><si><t>Du monde entier</t></si><si><t>Janine Labrune</t></si><si><t>FISSA</t></si><si><t>Madrid</t></si><si><t>Folies gourmandes</t></si><si><t>Martine Rancé</t></si><si><t>Assistant Sales Agent</t></si><si><t>Folk och fä HB</t></si><si><t>Maria Larsson</t></si><si><t>Frankenversand</t></si><si><t>Peter Franken</t></si><si><t>Marketing Manager</t></si><si><t>France restauration</t></si><si><t>Carine Schmitt</t></si><si><t>FRANS</t></si><si><t>Torino</t></si>`;
1289+
1290+
this._worksheetData =
1291+
`<sheetPr><outlinePr summaryBelow="0"/></sheetPr>
1292+
<sheetViews><sheetView tabSelected="1" workbookViewId="0"></sheetView></sheetViews>
1293+
<sheetFormatPr defaultRowHeight="15" outlineLevelRow="1" x14ac:dyDescent="0.25"/>
1294+
<cols><col min="1" max="5" width="20" customWidth="1"/></cols>
1295+
<sheetData><row r="1"><c r="A1" s="3" t="s"><v>0</v></c><c r="B1" s="3" t="s"><v>1</v></c></row><row r="2"><c r="B2" s="3" t="s"><v>2</v></c></row><row r="3"><c r="A3" t="s"><v>3</v></c><c r="B3" t="s"><v>4</v></c></row><row r="4" outlineLevel="1"><c r="B4" s="3" t="s"><v>5</v></c><c r="C4" s="3" t="s"><v>6</v></c><c r="D4" s="3" /></row><row r="5" outlineLevel="1"><c r="B5" t="s" s="3"><v>5</v></c><c r="C5" t="s" s="3"><v>7</v></c><c r="D5" t="s" s="3"><v>8</v></c></row><row r="6" outlineLevel="1"><c r="B6" t="s"><v>9</v></c><c r="C6" t="s"><v>10</v></c><c r="D6" t="s"><v>11</v></c></row><row r="7" outlineLevel="1"><c r="B7" t="s"><v>12</v></c><c r="C7" t="s"><v>13</v></c><c r="D7" t="s"><v>11</v></c></row><row r="8"><c r="A8" t="s"><v>14</v></c><c r="B8" t="s"><v>15</v></c></row><row r="9" outlineLevel="1" hidden="1"><c r="B9" s="3" t="s"><v>5</v></c><c r="C9" s="3" t="s"><v>6</v></c><c r="D9" s="3" /></row><row r="10" outlineLevel="1" hidden="1"><c r="B10" t="s" s="3"><v>5</v></c><c r="C10" t="s" s="3"><v>7</v></c><c r="D10" t="s" s="3"><v>8</v></c></row><row r="11" outlineLevel="1" hidden="1"><c r="B11" t="s"><v>16</v></c><c r="C11" t="s"><v>17</v></c><c r="D11" t="s"><v>18</v></c></row><row r="12" outlineLevel="1" hidden="1"><c r="B12" t="s"><v>19</v></c><c r="C12" t="s"><v>20</v></c><c r="D12" t="s"><v>21</v></c></row><row r="13" outlineLevel="1" hidden="1"><c r="B13" t="s"><v>22</v></c><c r="C13" t="s"><v>23</v></c><c r="D13" t="s"><v>11</v></c></row><row r="14"><c r="A14" t="s"><v>24</v></c><c r="B14" t="s"><v>25</v></c></row><row r="15" outlineLevel="1" hidden="1"><c r="B15" s="3" t="s"><v>5</v></c><c r="C15" s="3" t="s"><v>6</v></c><c r="D15" s="3" /></row><row r="16" outlineLevel="1" hidden="1"><c r="B16" t="s" s="3"><v>5</v></c><c r="C16" t="s" s="3"><v>7</v></c><c r="D16" t="s" s="3"><v>8</v></c></row><row r="17" outlineLevel="1" hidden="1"><c r="B17" t="s"><v>26</v></c><c r="C17" t="s"><v>27</v></c><c r="D17" t="s"><v>28</v></c></row><row r="18" outlineLevel="1" hidden="1"><c r="B18" t="s"><v>29</v></c><c r="C18" t="s"><v>30</v></c><c r="D18" t="s"><v>11</v></c></row><row r="19" outlineLevel="1" hidden="1"><c r="B19" t="s"><v>31</v></c><c r="C19" t="s"><v>32</v></c><c r="D19" t="s"><v>33</v></c></row><row r="20" outlineLevel="1" hidden="1"><c r="B20" t="s"><v>34</v></c><c r="C20" t="s"><v>35</v></c><c r="D20" t="s"><v>33</v></c></row><row r="21"><c r="A21" t="s"><v>36</v></c><c r="B21" t="s"><v>37</v></c></row></sheetData><mergeCells count="8"> <mergeCell ref="A1:A2" /> <mergeCell ref="B1:B1" /> <mergeCell ref="B4:B5" /> <mergeCell ref="C4:D4" /> <mergeCell ref="B9:B10" /> <mergeCell ref="C9:D9" /> <mergeCell ref="B15:B16" /> <mergeCell ref="C15:D15" /></mergeCells>`;
1296+
1297+
return this.createData();
1298+
}
1299+
12861300
public get exportMultiColumnHeadersData() {
12871301
this._sharedStringsData =
12881302
`count="195" uniqueCount="162"><si><t>ID</t></si><si><t>General Information</t></si><si><t>Address Information</t></si><si><t>Personal Details</t></si><si><t>Location</t></si><si><t>Contact Information</t></si><si><t>ContactName</t></si><si><t>ContactTitle</t></si><si><t>Country</t></si><si><t>Phone</t></si><si><t>Fax</t></si><si><t>PostalCode</t></si><si><t>ALFKI</t></si><si><t>Maria Anders</t></si><si><t>Sales Representative</t></si><si><t>Germany</t></si><si><t>030-0074321</t></si><si><t>030-0076545</t></si><si><t>12209</t></si><si><t>ANATR</t></si><si><t>Ana Trujillo</t></si><si><t>Owner</t></si><si><t>Mexico</t></si><si><t>(5) 555-4729</t></si><si><t>(5) 555-3745</t></si><si><t>05021</t></si><si><t>ANTON</t></si><si><t>Antonio Moreno</t></si><si><t>(5) 555-3932</t></si><si><t>05023</t></si><si><t>AROUT</t></si><si><t>Thomas Hardy</t></si><si><t>UK</t></si><si><t>(171) 555-7788</t></si><si><t>(171) 555-6750</t></si><si><t>WA1 1DP</t></si><si><t>BERGS</t></si><si><t>Christina Berglund</t></si><si><t>Order Administrator</t></si><si><t>Sweden</t></si><si><t>0921-12 34 65</t></si><si><t>0921-12 34 67</t></si><si><t>S-958 22</t></si><si><t>BLAUS</t></si><si><t>Hanna Moos</t></si><si><t>0621-08460</t></si><si><t>0621-08924</t></si><si><t>68306</t></si><si><t>BLONP</t></si><si><t>Frédérique Citeaux</t></si><si><t>Marketing Manager</t></si><si><t>France</t></si><si><t>88.60.15.31</t></si><si><t>88.60.15.32</t></si><si><t>67000</t></si><si><t>BOLID</t></si><si><t>Martín Sommer</t></si><si><t>Spain</t></si><si><t>(91) 555 22 82</t></si><si><t>(91) 555 91 99</t></si><si><t>28023</t></si><si><t>BONAP</t></si><si><t>Laurence Lebihan</t></si><si><t>91.24.45.40</t></si><si><t>91.24.45.41</t></si><si><t>13008</t></si><si><t>BOTTM</t></si><si><t>Elizabeth Lincoln</t></si><si><t>Accounting Manager</t></si><si><t>Canada</t></si><si><t>(604) 555-4729</t></si><si><t>(604) 555-3745</t></si><si><t>T2F 8M4</t></si><si><t>BSBEV</t></si><si><t>Victoria Ashworth</t></si><si><t>(171) 555-1212</t></si><si><t>EC2 5NT</t></si><si><t>CACTU</t></si><si><t>Patricio Simpson</t></si><si><t>Sales Agent</t></si><si><t>Argentina</t></si><si><t>(1) 135-5555</t></si><si><t>(1) 135-4892</t></si><si><t>1010</t></si><si><t>CENTC</t></si><si><t>Francisco Chang</t></si><si><t>(5) 555-3392</t></si><si><t>(5) 555-7293</t></si><si><t>05022</t></si><si><t>CHOPS</t></si><si><t>Yang Wang</t></si><si><t>Switzerland</t></si><si><t>0452-076545</t></si><si><t>3012</t></si><si><t>COMMI</t></si><si><t>Pedro Afonso</t></si><si><t>Sales Associate</t></si><si><t>Brazil</t></si><si><t>(11) 555-7647</t></si><si><t>05432-043</t></si><si><t>CONSH</t></si><si><t>Elizabeth Brown</t></si><si><t>(171) 555-2282</t></si><si><t>(171) 555-9199</t></si><si><t>WX1 6LT</t></si><si><t>DRACD</t></si><si><t>Sven Ottlieb</t></si><si><t>0241-039123</t></si><si><t>0241-059428</t></si><si><t>52066</t></si><si><t>DUMON</t></si><si><t>Janine Labrune</t></si><si><t>40.67.88.88</t></si><si><t>40.67.89.89</t></si><si><t>44000</t></si><si><t>EASTC</t></si><si><t>Ann Devon</t></si><si><t>(171) 555-0297</t></si><si><t>(171) 555-3373</t></si><si><t>WX3 6FW</t></si><si><t>ERNSH</t></si><si><t>Roland Mendel</t></si><si><t>Sales Manager</t></si><si><t>Austria</t></si><si><t>7675-3425</t></si><si><t>7675-3426</t></si><si><t>8010</t></si><si><t>FAMIA</t></si><si><t>Aria Cruz</t></si><si><t>Marketing Assistant</t></si><si><t>(11) 555-9857</t></si><si><t>05442-030</t></si><si><t>FISSA</t></si><si><t>Diego Roel</t></si><si><t>(91) 555 94 44</t></si><si><t>(91) 555 55 93</t></si><si><t>28034</t></si><si><t>FOLIG</t></si><si><t>Martine Rancé</t></si><si><t>Assistant Sales Agent</t></si><si><t>20.16.10.16</t></si><si><t>20.16.10.17</t></si><si><t>59000</t></si><si><t>FOLKO</t></si><si><t>Maria Larsson</t></si><si><t>0695-34 67 21</t></si><si><t>S-844 67</t></si><si><t>FRANK</t></si><si><t>Peter Franken</t></si><si><t>089-0877310</t></si><si><t>089-0877451</t></si><si><t>80805</t></si><si><t>FRANR</t></si><si><t>Carine Schmitt</t></si><si><t>40.32.21.21</t></si><si><t>40.32.21.20</t></si><si><t>FRANS</t></si><si><t>Paolo Accorti</t></si><si><t>Italy</t></si><si><t>011-4988260</t></si><si><t>011-4988261</t></si><si><t>10100</t></si>`;

projects/igniteui-angular/src/lib/services/exporter-common/base-export-service.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ export interface IExportRecord {
4343
hidden?: boolean;
4444
summaryKey?: string;
4545
hierarchicalOwner?: string;
46+
references?: IColumnInfo[];
4647
}
4748

4849
export interface IColumnList {
@@ -484,8 +485,7 @@ export abstract class IgxBaseExporter {
484485
return a;
485486
}, {});
486487
} else {
487-
const filteredHeaders = ownerCols.filter(c => c.skip).map(c => c.header ? c.header : c.field);
488-
record.data = record.data.filter(d => filteredHeaders.indexOf(d) === -1);
488+
record.data = record.data.filter((_, i) => !record.references[i].skip)
489489
}
490490
}
491491

@@ -762,16 +762,16 @@ export abstract class IgxBaseExporter {
762762
childData: any[], expansionStateVal: boolean, grid: GridType) {
763763
const hierarchicalOwner = `${GRID_CHILD}${++this.rowIslandCounter}`;
764764
const columnList = this._ownersMap.get(island).columns;
765-
const columnHeader = columnList
766-
.filter(col => col.headerType === ExportHeaderType.ColumnHeader)
767-
.map(col => col.header ? col.header : col.field);
765+
const columnHeaders = columnList.filter(col => col.headerType === ExportHeaderType.ColumnHeader);
766+
const columnHeader = columnHeaders.map(col => col.header ? col.header : col.field);
768767

769768
const headerRecord: IExportRecord = {
770769
data: columnHeader,
771770
level: island.level,
772771
type: ExportRecordType.HeaderRecord,
773772
owner: island,
774773
hidden: !expansionStateVal,
774+
references: columnHeaders,
775775
hierarchicalOwner
776776
};
777777

0 commit comments

Comments
 (0)