@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 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,8 @@
1
+ "use strict";
2
+
3
+ const {
4
+ plugin
5
+ } = require('./postcss-plugin');
6
+ module.exports = {
7
+ plugins: [plugin]
8
+ };
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ var _Dialog = require("@mui/material/Dialog");
4
+ '& .MuiDialog-paperScrollBody';
5
+ '& .MuiDialog-paperScrollPaper';
6
+ `& .${_Dialog.dialogClasses.paperScrollBody}`;
7
+ `& .${_Dialog.dialogClasses.paperScrollPaper}`;
@@ -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}`;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/codemod",
3
- "version": "6.4.9",
3
+ "version": "6.4.11",
4
4
  "bin": "./codemod.js",
5
5
  "private": false,
6
6
  "author": "MUI Team",