@mui/codemod 6.4.9 → 6.4.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -0
- package/node/deprecations/all/deprecations-all.js +2 -0
- package/node/deprecations/dialog-classes/dialog-classes.js +69 -0
- package/node/deprecations/dialog-classes/index.js +13 -0
- package/node/deprecations/dialog-classes/postcss-plugin.js +33 -0
- package/node/deprecations/dialog-classes/postcss.config.js +8 -0
- package/node/deprecations/dialog-classes/test-cases/actual.js +7 -0
- package/node/deprecations/dialog-classes/test-cases/expected.js +7 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1030,6 +1030,42 @@ npx @mui/codemod@latest deprecations/circular-progress-classes <path>
|
|
|
1030
1030
|
npx @mui/codemod@latest deprecations/divider-props <path>
|
|
1031
1031
|
```
|
|
1032
1032
|
|
|
1033
|
+
#### `dialog-classes`
|
|
1034
|
+
|
|
1035
|
+
JS transforms:
|
|
1036
|
+
|
|
1037
|
+
```diff
|
|
1038
|
+
import { dialogClasses } from '@mui/material/Dialog';
|
|
1039
|
+
|
|
1040
|
+
MuiDialog: {
|
|
1041
|
+
styleOverrides: {
|
|
1042
|
+
root: {
|
|
1043
|
+
- [`& .${dialogClasses.paperScrollBody}`]: {
|
|
1044
|
+
+ [`& .${dialogClasses.scrollBody} > .${dialogClasses.paper}`]: {
|
|
1045
|
+
color: 'red',
|
|
1046
|
+
},
|
|
1047
|
+
- [`& .${dialogClasses.paperScrollPaper}`]: {
|
|
1048
|
+
+ [`& .${dialogClasses.scrollPaper} > .${dialogClasses.paper}`]: {
|
|
1049
|
+
color: 'red',
|
|
1050
|
+
},
|
|
1051
|
+
},
|
|
1052
|
+
},
|
|
1053
|
+
},
|
|
1054
|
+
```
|
|
1055
|
+
|
|
1056
|
+
CSS transforms:
|
|
1057
|
+
|
|
1058
|
+
```diff
|
|
1059
|
+
-.MuiDialog-root .MuiDialog-paperScrollBody
|
|
1060
|
+
+.MuiDialog-root .MuiDialog-scrollBody > .MuiDialog-paper
|
|
1061
|
+
-.MuiDialog-root .MuiDialog-paperScrollPaper
|
|
1062
|
+
+.MuiDialog-root .MuiDialog-scrollPaper > .MuiDialog-paper
|
|
1063
|
+
```
|
|
1064
|
+
|
|
1065
|
+
```bash
|
|
1066
|
+
npx @mui/codemod@latest deprecations/dialog-classes <path>
|
|
1067
|
+
```
|
|
1068
|
+
|
|
1033
1069
|
#### `drawer-classes`
|
|
1034
1070
|
|
|
1035
1071
|
JS transforms:
|
|
@@ -19,6 +19,7 @@ var _chipClasses = _interopRequireDefault(require("../chip-classes"));
|
|
|
19
19
|
var _circularProgressClasses = _interopRequireDefault(require("../circular-progress-classes"));
|
|
20
20
|
var _dividerProps = _interopRequireDefault(require("../divider-props"));
|
|
21
21
|
var _drawerClasses = _interopRequireDefault(require("../drawer-classes"));
|
|
22
|
+
var _dialogClasses = _interopRequireDefault(require("../dialog-classes"));
|
|
22
23
|
var _filledInputProps = _interopRequireDefault(require("../filled-input-props"));
|
|
23
24
|
var _formControlLabelProps = _interopRequireDefault(require("../form-control-label-props"));
|
|
24
25
|
var _imageListItemBarClasses = _interopRequireDefault(require("../image-list-item-bar-classes"));
|
|
@@ -74,6 +75,7 @@ function deprecationsAll(file, api, options) {
|
|
|
74
75
|
file.source = (0, _circularProgressClasses.default)(file, api, options);
|
|
75
76
|
file.source = (0, _dividerProps.default)(file, api, options);
|
|
76
77
|
file.source = (0, _drawerClasses.default)(file, api, options);
|
|
78
|
+
file.source = (0, _dialogClasses.default)(file, api, options);
|
|
77
79
|
file.source = (0, _filledInputProps.default)(file, api, options);
|
|
78
80
|
file.source = (0, _formControlLabelProps.default)(file, api, options);
|
|
79
81
|
file.source = (0, _imageListItemBarClasses.default)(file, api, options);
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = transformer;
|
|
7
|
+
var _postcssPlugin = require("./postcss-plugin");
|
|
8
|
+
/**
|
|
9
|
+
* @param {import('jscodeshift').FileInfo} file
|
|
10
|
+
* @param {import('jscodeshift').API} api
|
|
11
|
+
*/
|
|
12
|
+
function transformer(file, api, options) {
|
|
13
|
+
const j = api.jscodeshift;
|
|
14
|
+
const root = j(file.source);
|
|
15
|
+
const printOptions = options.printOptions;
|
|
16
|
+
_postcssPlugin.classes.forEach(({
|
|
17
|
+
deprecatedClass,
|
|
18
|
+
replacementSelector
|
|
19
|
+
}) => {
|
|
20
|
+
const replacementSelectorPrefix = '&';
|
|
21
|
+
root.find(j.ImportDeclaration).filter(path => path.node.source.value.match(/^@mui\/material\/Dialog$/)).forEach(path => {
|
|
22
|
+
path.node.specifiers.forEach(specifier => {
|
|
23
|
+
if (specifier.type === 'ImportSpecifier' && specifier.imported.name === 'dialogClasses') {
|
|
24
|
+
const deprecatedAtomicClass = deprecatedClass.replace(`${deprecatedClass.split('-')[0]}-`, '');
|
|
25
|
+
root.find(j.MemberExpression, {
|
|
26
|
+
object: {
|
|
27
|
+
name: specifier.local.name
|
|
28
|
+
},
|
|
29
|
+
property: {
|
|
30
|
+
name: deprecatedAtomicClass
|
|
31
|
+
}
|
|
32
|
+
}).forEach(memberExpression => {
|
|
33
|
+
const parent = memberExpression.parentPath.parentPath.value;
|
|
34
|
+
if (parent.type === j.TemplateLiteral.name) {
|
|
35
|
+
const memberExpressionIndex = parent.expressions.findIndex(expression => expression === memberExpression.value);
|
|
36
|
+
const precedingTemplateElement = parent.quasis[memberExpressionIndex];
|
|
37
|
+
const atomicClasses = replacementSelector.replaceAll('MuiDialog-', '').replaceAll(replacementSelectorPrefix, '').replaceAll(' > ', '').replaceAll(' ', '').split('.').filter(Boolean);
|
|
38
|
+
if (precedingTemplateElement.value.raw.endsWith(deprecatedClass.startsWith(' ') ? `${replacementSelectorPrefix} .` : `${replacementSelectorPrefix}.`)) {
|
|
39
|
+
parent.expressions.splice(memberExpressionIndex, 1, j.memberExpression(memberExpression.value.object, j.identifier(atomicClasses[0])), j.memberExpression(memberExpression.value.object, j.identifier(atomicClasses[1])));
|
|
40
|
+
if (replacementSelector.includes(' > ')) {
|
|
41
|
+
parent.quasis.splice(memberExpressionIndex, 1, j.templateElement({
|
|
42
|
+
raw: precedingTemplateElement.value.raw,
|
|
43
|
+
cooked: precedingTemplateElement.value.cooked
|
|
44
|
+
}, false), j.templateElement({
|
|
45
|
+
raw: ' > .',
|
|
46
|
+
cooked: ' > .'
|
|
47
|
+
}, false));
|
|
48
|
+
} else {
|
|
49
|
+
parent.quasis.splice(memberExpressionIndex, 1, j.templateElement({
|
|
50
|
+
raw: precedingTemplateElement.value.raw,
|
|
51
|
+
cooked: precedingTemplateElement.value.cooked
|
|
52
|
+
}, false), j.templateElement({
|
|
53
|
+
raw: '.',
|
|
54
|
+
cooked: '.'
|
|
55
|
+
}, false));
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
const selectorRegex = new RegExp(`^${replacementSelectorPrefix}${deprecatedClass}`);
|
|
64
|
+
root.find(j.Literal, literal => typeof literal.value === 'string' && literal.value.match(selectorRegex)).forEach(path => {
|
|
65
|
+
path.replace(j.literal(path.value.value.replace(selectorRegex, `${replacementSelectorPrefix}${deprecatedClass.startsWith(' ') ? ' ' : ''}${replacementSelector.trim()}`)));
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
return root.toSource(printOptions);
|
|
69
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
Object.defineProperty(exports, "default", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () {
|
|
10
|
+
return _dialogClasses.default;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
var _dialogClasses = _interopRequireDefault(require("./dialog-classes"));
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const classes = [{
|
|
4
|
+
deprecatedClass: ' .MuiDialog-paperScrollBody',
|
|
5
|
+
replacementSelector: ' .MuiDialog-scrollBody > .MuiDialog-paper'
|
|
6
|
+
}, {
|
|
7
|
+
deprecatedClass: ' .MuiDialog-paperScrollPaper',
|
|
8
|
+
replacementSelector: ' .MuiDialog-scrollPaper > .MuiDialog-paper'
|
|
9
|
+
}];
|
|
10
|
+
const plugin = () => {
|
|
11
|
+
return {
|
|
12
|
+
postcssPlugin: `Replace deprecated Dialog classes with new classes`,
|
|
13
|
+
Rule(rule) {
|
|
14
|
+
const {
|
|
15
|
+
selector
|
|
16
|
+
} = rule;
|
|
17
|
+
classes.forEach(({
|
|
18
|
+
deprecatedClass,
|
|
19
|
+
replacementSelector
|
|
20
|
+
}) => {
|
|
21
|
+
const selectorRegex = new RegExp(`${deprecatedClass}`);
|
|
22
|
+
if (selector.match(selectorRegex)) {
|
|
23
|
+
rule.selector = selector.replace(selectorRegex, replacementSelector);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
plugin.postcss = true;
|
|
30
|
+
module.exports = {
|
|
31
|
+
plugin,
|
|
32
|
+
classes
|
|
33
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _Dialog = require("@mui/material/Dialog");
|
|
4
|
+
"& .MuiDialog-scrollBody > .MuiDialog-paper";
|
|
5
|
+
"& .MuiDialog-scrollPaper > .MuiDialog-paper";
|
|
6
|
+
`& .${_Dialog.dialogClasses.scrollBody} > .${_Dialog.dialogClasses.paper}`;
|
|
7
|
+
`& .${_Dialog.dialogClasses.scrollPaper} > .${_Dialog.dialogClasses.paper}`;
|