Skip to content

Commit bd063bf

Browse files
crisbetommalerba
authored andcommitted
fix(material/schematics): run theming API migration during ng update
Switches the `themingApi` migration from `ng generate` to `ng update`. Includes refactoring it into a `DevkitMigration` and changing the test setup to match.
1 parent 20d3469 commit bd063bf

File tree

9 files changed

+164
-163
lines changed

9 files changed

+164
-163
lines changed

src/material/schematics/collection.json

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,6 @@
4242
"factory": "./ng-generate/address-form/index",
4343
"schema": "./ng-generate/address-form/schema.json",
4444
"aliases": ["address-form", "material-address-form", "material-addressForm"]
45-
},
46-
"themingApi": {
47-
"description": "Switch the project to the new @use-based Material theming API",
48-
"factory": "./ng-generate/theming-api/index",
49-
"schema": "./ng-generate/theming-api/schema.json",
50-
"aliases": ["theming-api", "sass-api"]
5145
}
5246
}
5347
}

src/material/schematics/ng-generate/theming-api/index.ts

Lines changed: 0 additions & 28 deletions
This file was deleted.

src/material/schematics/ng-generate/theming-api/schema.json

Lines changed: 0 additions & 7 deletions
This file was deleted.

src/material/schematics/ng-generate/theming-api/schema.ts

Lines changed: 0 additions & 9 deletions
This file was deleted.

src/material/schematics/ng-update/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import {
2424
import {
2525
SecondaryEntryPointsMigration
2626
} from './migrations/package-imports-v8/secondary-entry-points-migration';
27+
import {ThemingApiMigration} from './migrations/theming-api-v12/theming-api-migration';
2728

2829
import {materialUpgradeData} from './upgrade-data';
2930

@@ -36,6 +37,7 @@ const materialMigrations: NullableDevkitMigration[] = [
3637
RippleSpeedFactorMigration,
3738
SecondaryEntryPointsMigration,
3839
HammerGesturesMigration,
40+
ThemingApiMigration,
3941
];
4042

4143
/** Entry point for the migration schematics with target of Angular Material v6 */
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/**
2+
* @license
3+
* Copyright Google LLC All Rights Reserved.
4+
*
5+
* Use of this source code is governed by an MIT-style license that can be
6+
* found in the LICENSE file at https://angular.io/license
7+
*/
8+
9+
import {extname} from '@angular-devkit/core';
10+
import {DevkitMigration, ResolvedResource, TargetVersion} from '@angular/cdk/schematics';
11+
import {migrateFileContent} from './migration';
12+
13+
/** Migration that switches all Sass files using Material theming APIs to `@use`. */
14+
export class ThemingApiMigration extends DevkitMigration<null> {
15+
enabled = this.targetVersion === TargetVersion.V12;
16+
17+
visitStylesheet(stylesheet: ResolvedResource): void {
18+
if (extname(stylesheet.filePath) === '.scss') {
19+
const content = stylesheet.content;
20+
const migratedContent = content ? migrateFileContent(content,
21+
'~@angular/material/', '~@angular/cdk/', '~@angular/material', '~@angular/cdk') : content;
22+
23+
if (migratedContent && migratedContent !== content) {
24+
this.fileSystem.edit(stylesheet.filePath)
25+
.remove(0, stylesheet.content.length)
26+
.insertLeft(0, migratedContent);
27+
}
28+
}
29+
}
30+
}

0 commit comments

Comments
 (0)