Skip to content

Commit 8f131d0

Browse files
authored
fix(grid): Make sure border does not appear when new theme is loaded runtime. (#17030)
1 parent 3adc8d1 commit 8f131d0

6 files changed

Lines changed: 72 additions & 19 deletions

File tree

angular.json

Lines changed: 33 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
},
2323
"index": "src/index.html",
2424
"polyfills": [
25-
"zone.js"
25+
"zone.js"
2626
],
2727
"tsConfig": "src/tsconfig.app.json",
2828
"assets": [
@@ -31,7 +31,12 @@
3131
"src/web.config"
3232
],
3333
"styles": [
34-
"src/styles/styles.scss"
34+
"src/styles/styles.scss",
35+
{
36+
"input": "src/styles/grid-cell-merging-alternate-theme.scss",
37+
"bundleName": "grid-cell-merging-alternate-theme",
38+
"inject": false
39+
}
3540
],
3641
"scripts": [],
3742
"extractLicenses": false,
@@ -206,8 +211,8 @@
206211
"tsConfig": "projects/igniteui-angular/tsconfig.spec.json",
207212
"karmaConfig": "projects/igniteui-angular/karma.conf.js",
208213
"exclude": [
209-
"migrations",
210-
"schematics"
214+
"migrations",
215+
"schematics"
211216
]
212217
}
213218
},
@@ -292,11 +297,19 @@
292297
"projects/igniteui-angular-elements/src/styles.scss"
293298
],
294299
"scripts": [
295-
{ "input": "./node_modules/lit-html/lit-html.js", "inject": false },
296-
{ "input": "./node_modules/lit-html/development/directive.js", "inject": false }
300+
{
301+
"input": "./node_modules/lit-html/lit-html.js",
302+
"inject": false
303+
},
304+
{
305+
"input": "./node_modules/lit-html/development/directive.js",
306+
"inject": false
307+
}
297308
],
298309
"stylePreprocessorOptions": {
299-
"includePaths": ["node_modules"]
310+
"includePaths": [
311+
"node_modules"
312+
]
300313
},
301314
"browser": "projects/igniteui-angular-elements/src/main.ts"
302315
},
@@ -328,7 +341,10 @@
328341
],
329342
"outputHashing": "none",
330343
"optimization": true,
331-
"externalDependencies": ["lit", "igniteui-i18n-core"]
344+
"externalDependencies": [
345+
"lit",
346+
"igniteui-i18n-core"
347+
]
332348
},
333349
"development": {
334350
"optimization": false,
@@ -337,8 +353,8 @@
337353
"namedChunks": true
338354
},
339355
"dev-app": {
340-
"browser": "projects/igniteui-angular-elements/src/main.app.ts",
341-
"tsConfig": "projects/igniteui-angular-elements/tsconfig.app.json"
356+
"browser": "projects/igniteui-angular-elements/src/main.app.ts",
357+
"tsConfig": "projects/igniteui-angular-elements/tsconfig.app.json"
342358
}
343359
},
344360
"defaultConfiguration": "production"
@@ -365,7 +381,7 @@
365381
"builder": "@angular/build:karma",
366382
"options": {
367383
"main": "projects/igniteui-angular-elements/src/test.ts",
368-
"polyfills": [
384+
"polyfills": [
369385
"projects/igniteui-angular-elements/src/polyfills.ts"
370386
],
371387
"tsConfig": "projects/igniteui-angular-elements/tsconfig.spec.json",
@@ -379,7 +395,9 @@
379395
"projects/igniteui-angular-elements/src/styles.scss"
380396
],
381397
"stylePreprocessorOptions": {
382-
"includePaths": ["node_modules"]
398+
"includePaths": [
399+
"node_modules"
400+
]
383401
},
384402
"scripts": []
385403
}
@@ -518,7 +536,9 @@
518536
"projects/igniteui-angular-performance/src/styles.scss"
519537
],
520538
"stylePreprocessorOptions": {
521-
"includePaths": ["node_modules"]
539+
"includePaths": [
540+
"node_modules"
541+
]
522542
}
523543
},
524544
"configurations": {

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1372,6 +1372,7 @@
13721372
}
13731373

13741374
%igx-grid__tr--merged {
1375+
border-bottom: 0;
13751376
border-block-end: 0;
13761377
}
13771378

projects/igniteui-angular/grids/core/src/row.directive.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -696,10 +696,6 @@ export class IgxRowDirective implements DoCheck, AfterViewInit, OnDestroy {
696696
}
697697
const isPinned = this.pinned && !this.disabled;
698698
const indexInData = this.grid.isRowPinningToTop && !isPinned ? this.index - this.grid.pinnedRecordsCount : this.index;
699-
if ((this.grid as any)._cdrRequests) {
700-
// recalc size if repaint is requested.
701-
this.grid.verticalScrollContainer.recalcUpdateSizes();
702-
}
703699
const size = this.grid.verticalScrollContainer.getSizeAt(indexInData);
704700
return size || this.grid.rowHeight;
705701
}

src/app/grid-cellMerging/grid-cellMerging.component.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
<h4 class="sample-title">Grid with cell merge</h4>
22

3+
<button (click)="toggleTheme()">{{ themeLoaded() ? 'Unload Theme CSS' : 'Load Theme CSS' }}</button>
4+
35
<div class="grid__wrapper">
46
<igx-input-group type="search" class="searchInput">
57
<igx-prefix>

src/app/grid-cellMerging/grid-cellMerging.component.ts

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import { Component, ViewChild } from '@angular/core';
1+
import { Component, OnDestroy, ViewChild, inject, signal } from '@angular/core';
2+
import { DOCUMENT } from '@angular/common';
23
import { FormsModule } from '@angular/forms';
34
import {
45
DefaultTreeGridMergeStrategy,
@@ -56,7 +57,10 @@ import { INVOICE_DATA } from '../shared/invoiceData';
5657
IgxIconButtonDirective
5758
]
5859
})
59-
export class GridCellMergingComponent {
60+
export class GridCellMergingComponent implements OnDestroy {
61+
private readonly document = inject(DOCUMENT);
62+
public themeLoaded = signal(false);
63+
private readonly THEME_LINK_ID = 'grid-cell-merging-alternate-theme';
6064
public hierarchicalData = HIERARCHICAL_DATA.concat(HIERARCHICAL_DATA).concat(HIERARCHICAL_DATA);
6165
public treeData = HIERARCHICAL_SAMPLE_DATA;
6266
public treeGridMergeStrategy = new ByLevelTreeGridMergeStrategy();
@@ -77,6 +81,25 @@ export class GridCellMergingComponent {
7781
this.data = allData;
7882
}
7983

84+
public ngOnDestroy(): void {
85+
this.document.getElementById(this.THEME_LINK_ID)?.remove();
86+
}
87+
88+
public toggleTheme(): void {
89+
const existing = this.document.getElementById(this.THEME_LINK_ID);
90+
if (existing) {
91+
existing.remove();
92+
this.themeLoaded.set(false);
93+
} else {
94+
const link = this.document.createElement('link');
95+
link.rel = 'stylesheet';
96+
link.href = 'grid-cell-merging-alternate-theme.css';
97+
link.id = this.THEME_LINK_ID;
98+
this.document.head.appendChild(link);
99+
this.themeLoaded.set(true);
100+
}
101+
}
102+
80103
public toggleStrategy() {
81104
if (this.treeGridMergeStrategy instanceof ByLevelTreeGridMergeStrategy) {
82105
this.treeGridMergeStrategy = new DefaultTreeGridMergeStrategy();
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
@use '../../projects/igniteui-angular/core/src/core/styles/themes' as *;
2+
3+
@include core();
4+
@include typography(
5+
$font-family: $material-typeface,
6+
$type-scale: $material-type-scale
7+
);
8+
@include theme(
9+
$schema: $dark-material-schema,
10+
$palette: $dark-material-palette,
11+
);

0 commit comments

Comments
 (0)