Skip to content

Commit eba4719

Browse files
authored
fix(material/schematics): token migration not replacing all instances (#31277)
Fixes that the v20 `ng update` migration was only replacing the first instance of tokens. Fixes #31276.
1 parent 6d27e04 commit eba4719

File tree

2 files changed

+56
-2
lines changed

2 files changed

+56
-2
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ function renameMdcTokens(): Rule {
5858
tree.visit(path => {
5959
if (shouldRenameTokens(path)) {
6060
const content = tree.readText(path);
61-
const updatedContent = content.replace('--mdc-', '--mat-');
61+
const updatedContent = content.replaceAll('--mdc-', '--mat-');
6262
if (content !== updatedContent) {
6363
tree.overwrite(path, updatedContent);
6464
}
@@ -100,7 +100,7 @@ function renameComponentTokens(): Rule {
100100
const content = tree.readText(path);
101101
let updatedContent = content;
102102
for (const tokenPrefix of tokenPrefixes) {
103-
updatedContent = updatedContent.replace(tokenPrefix.old, tokenPrefix.replacement);
103+
updatedContent = updatedContent.replaceAll(tokenPrefix.old, tokenPrefix.replacement);
104104
}
105105
if (content !== updatedContent) {
106106
tree.overwrite(path, updatedContent);

src/material/schematics/ng-update/test-cases/rename-mdc-tokens.spec.ts

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,4 +48,58 @@ describe('v20 rename tokens migration', () => {
4848
`),
4949
);
5050
});
51+
52+
it('should rename multiple instances of the --mdc prefix', async () => {
53+
writeFile(
54+
THEME_FILE_PATH,
55+
`
56+
html {
57+
--mdc-foo: 1px;
58+
--mdc-bar: 2px;
59+
--mdc-baz: 3px;
60+
}
61+
`,
62+
);
63+
64+
await runMigration();
65+
66+
expect(stripWhitespace(tree.readText(THEME_FILE_PATH))).toBe(
67+
stripWhitespace(`
68+
html {
69+
--mat-foo: 1px;
70+
--mat-bar: 2px;
71+
--mat-baz: 3px;
72+
}
73+
`),
74+
);
75+
});
76+
77+
it('should rename multiple instances of a specific component token', async () => {
78+
writeFile(
79+
THEME_FILE_PATH,
80+
`
81+
.one {
82+
--mat-circular-progress-foo: 1px;
83+
}
84+
85+
.two {
86+
--mat-circular-progress-bar: 2px;
87+
}
88+
`,
89+
);
90+
91+
await runMigration();
92+
93+
expect(stripWhitespace(tree.readText(THEME_FILE_PATH))).toBe(
94+
stripWhitespace(`
95+
.one {
96+
--mat-progress-spinner-foo: 1px;
97+
}
98+
99+
.two {
100+
--mat-progress-spinner-bar: 2px;
101+
}
102+
`),
103+
);
104+
});
51105
});

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy