Skip to content

Commit 636f35c

Browse files
authored
Merge pull request #1175 from data-driven-forms/mui-migration-5
Release a new MUI 5 mapper
2 parents 82b9673 + 5de9ce9 commit 636f35c

File tree

117 files changed

+3703
-3419
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

117 files changed

+3703
-3419
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ Data Driven Forms is a React library used for rendering and managing forms with
1616

1717
:tada: Features :tada:
1818
- **Easily readable schema**, you don't need to know any HTML or JS to be able to write your own form schemas!
19-
- You can use your **own components** or use one of our **provided mappers**: [PatternFly 4](https://patternfly-react.surge.sh/patternfly-4/), [Material-UI](https://material-ui.com/), [Ant Design](https://ant.design/)! and more, see below!)
19+
- You can use your **own components** or use one of our **provided mappers**: [PatternFly 4](https://patternfly-react.surge.sh/patternfly-4/), [Material-UI](https://mui.com/), [Ant Design](https://ant.design/)! and more, see below!)
2020
- **Form state manager** out-of-the-box (including error states!)
2121
- Fully **customizable** (you can use your own buttons, actions, etc.)!
2222
- **Conditional** fields!
@@ -365,7 +365,7 @@ We are trying to avoid breaking changes. Please, open an issue and discuss the i
365365

366366
- [Data Driven Forms documentation](https://data-driven-forms.org/)
367367
- [PatternFly 4 Design documentation](https://www.patternfly.org/v4/)
368-
- [Material-UI documentation](https://material-ui.com/)
368+
- [Material-UI documentation](https://mui.com/)
369369
- [Ant Design documentation](https://ant.design/)
370370
- [Semantic UI React](https://react.semantic-ui.com/)
371371
- [BlueprintJS](https://blueprintjs.com/)

packages/ant-component-mapper/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ Data Driven Forms supports all kinds of component, basic set is consisted of:
101101
### Useful links
102102

103103
- [Data Driven Forms documentation](https://data-driven-forms.org/)
104-
- [Material-UI documentation](https://material-ui.com/)
104+
- [Material-UI documentation](https://mui.com/)
105105
- NPM
106106
- [React Form Renderer](https://www.npmjs.com/package/@data-driven-forms/react-form-renderer)
107107
- [MaterialUI Mapper](https://www.npmjs.com/package/@data-driven-forms/ant-component-mapper)

packages/common/babel.config.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -72,13 +72,13 @@ const createSuirCJSTransform = (env = 'commonjs') => [
7272
const createMuiTransform = (env) => [
7373
'transform-imports',
7474
{
75-
'@material-ui/lab': {
76-
transform: (importName) => (env ? `@material-ui/lab/${env}/${importName}` : `@material-ui/lab/${importName}`),
75+
'@mui/lab': {
76+
transform: (importName) => (env ? `@mui/lab/${env}/${importName}` : `@mui/lab/${importName}`),
7777
preventFullImport: false,
7878
skipDefaultConversion: false
7979
},
80-
'@material-ui/core': {
81-
transform: (importName) => (env ? `@material-ui/core/${env}/${importName}` : `@material-ui/core/${importName}`),
80+
'@mui/material': {
81+
transform: (importName) => (env ? `@mui/material/${env}/${importName}` : `@mui/material/${importName}`),
8282
preventFullImport: false,
8383
skipDefaultConversion: false
8484
}
@@ -294,7 +294,7 @@ module.exports = {
294294
presets: [['@babel/preset-env', { modules: 'commonjs' }]],
295295
plugins: [
296296
createSuirCJSTransform('commonjs'),
297-
createMuiTransform(),
297+
createMuiTransform('node'),
298298
createPfReactTransform('js'),
299299
createBluePrintTransform('cjs'),
300300
createAntTransform('cjs'),
@@ -306,7 +306,7 @@ module.exports = {
306306
presets: [['@babel/preset-env', { modules: false }]],
307307
plugins: [
308308
createSuirCJSTransform('es'),
309-
createMuiTransform('esm'),
309+
createMuiTransform(),
310310
createPfReactTransform('esm'),
311311
createBluePrintTransform('esm'),
312312
createAntTransform('esm'),

packages/mui-component-mapper/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ Material-UI component mapper for [Data Driven Forms](https://github.com/data-dri
88

99
:book: For more information please visit the [documentation](https://data-driven-forms.org/). :book:
1010

11-
[Material-IU docs](https://material-ui.com/)
11+
[Material-IU docs](https://mui.com/)
1212

1313

1414
**Table of Contents**
@@ -102,7 +102,7 @@ Data Driven Forms supports all kinds of component, basic set is consisted of:
102102
### Useful links
103103

104104
- [Data Driven Forms documentation](https://data-driven-forms.org/)
105-
- [Material-UI documentation](https://material-ui.com/)
105+
- [Material-UI documentation](https://mui.com/)
106106
- NPM
107107
- [React Form Renderer](https://www.npmjs.com/package/@data-driven-forms/react-form-renderer)
108108
- [MaterialUI Mapper](https://www.npmjs.com/package/@data-driven-forms/mui-component-mapper)

packages/mui-component-mapper/demo/index.js

Lines changed: 55 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -2,75 +2,73 @@ import React, { useState } from 'react';
22
import ReactDOM from 'react-dom';
33
import { FormRenderer, componentTypes } from '@data-driven-forms/react-form-renderer';
44

5-
import Grid from '@material-ui/core/Grid';
5+
import Grid from '@mui/material/Grid';
66
import { componentMapper, FormTemplate } from '../src';
7-
import { createMuiTheme } from '@material-ui/core/styles';
8-
import { ThemeProvider } from '@material-ui/styles';
9-
import Typography from '@material-ui/core/Typography';
7+
import { createTheme } from '@mui/material/styles';
8+
import { ThemeProvider, StyledEngineProvider } from '@mui/material/styles';
9+
import LocalizationProvider from '@mui/lab/LocalizationProvider';
10+
import Typography from '@mui/material/Typography';
1011
import demoSchema from '../../../shared/demoschema';
1112
import fieldArraySchema from './demo-schemas/field-array-schema';
13+
import AdapterDateFns from '@mui/lab/AdapterDateFns';
1214

13-
import Button from '@material-ui/core/Button';
15+
import Button from '@mui/material/Button';
1416
import wizardSchema from './demo-schemas/wizard-schema';
1517
import validatorTypes from '@data-driven-forms/react-form-renderer/validator-types';
1618

17-
const theme = createMuiTheme({
18-
typography: {
19-
useNextVariants: true
20-
}
21-
});
19+
const theme = createTheme();
2220

2321
const compositeMapper = {
2422
...componentMapper,
2523
[componentTypes.SWITCH]: {
2624
component: componentMapper[componentTypes.SWITCH],
2725
FormControlLabelProps: {
28-
labelPlacement: 'end'
29-
}
30-
}
26+
labelPlacement: 'end',
27+
},
28+
},
3129
};
3230

3331
const options = [
3432
{
3533
label: 'One',
36-
value: 1
34+
value: 1,
3735
},
3836
{
3937
label: 'Two',
40-
value: 2
38+
value: 2,
4139
},
4240
{
4341
label: 'Three',
44-
value: 3
42+
value: 3,
4543
},
4644
{
4745
label: 'Four',
48-
value: 4
46+
value: 4,
4947
},
5048
{
5149
label: 'Five',
52-
value: 5
50+
value: 5,
5351
},
5452
{
5553
label: 'Six',
56-
value: 6
54+
value: 6,
5755
},
5856
{
5957
label: 'Seven',
60-
value: 7
58+
value: 7,
6159
},
6260
{
6361
label: 'Eight',
64-
value: 8
62+
value: 8,
6563
},
6664
{
6765
label: 'Nine',
68-
value: 9
66+
value: 9,
6967
},
7068
{
7169
label: 'Ten',
72-
value: 10
73-
}
70+
value: 10,
71+
},
7472
];
7573

7674
const loadOptions = (filter) =>
@@ -95,76 +93,80 @@ const selectSchema = {
9593
isSearchable: true,
9694
isRequired: true,
9795
validate: [{ type: validatorTypes.REQUIRED }],
98-
closeMenuOnSelect: false
96+
closeMenuOnSelect: false,
9997
},
10098
{
10199
name: 'default-select',
102100
component: componentTypes.SELECT,
103101
label: 'Default select',
104102
options,
105-
placeholder: 'Select'
103+
placeholder: 'Select',
106104
},
107105
{
108106
name: 'disabled-select',
109107
component: componentTypes.SELECT,
110108
label: 'Disabled select',
111109
options,
112-
isDisabled: true
110+
isDisabled: true,
113111
},
114112
{
115113
name: 'clearable-select',
116114
component: componentTypes.SELECT,
117115
label: 'Clearable select',
118116
options,
119-
isClearable: true
117+
isClearable: true,
120118
},
121119
{
122120
name: 'multi-select',
123121
component: componentTypes.SELECT,
124122
label: 'Multi select',
125123
options,
126-
isMulti: true
124+
isMulti: true,
127125
},
128126
{
129127
name: 'searchable-select',
130128
component: componentTypes.SELECT,
131129
label: 'Searchable select',
132130
options,
133-
isSearchable: true
131+
isSearchable: true,
134132
},
135133
{
136134
name: 'async-select',
137135
component: componentTypes.SELECT,
138136
label: 'Async select',
139-
loadOptions
140-
}
141-
]
137+
loadOptions,
138+
},
139+
],
142140
};
143141

144142
const App = () => {
145143
const [schema, setSchema] = useState(wizardSchema);
146144

147145
return (
148-
<ThemeProvider theme={theme}>
149-
<Grid container spacing={4} justify="center" alignItems="center">
150-
<Grid item xs={12}>
151-
<Typography variant="h3">Material UI component mapper</Typography>
152-
</Grid>
153-
<Grid item xs={12}>
154-
<Button onClick={() => setSchema(demoSchema)}>Demo schema</Button>
155-
<Button onClick={() => setSchema(fieldArraySchema)}>Field array</Button>
156-
<Button onClick={() => setSchema(wizardSchema)}>Wizard</Button>
157-
<Button onClick={() => setSchema(selectSchema)}>Select</Button>
158-
</Grid>
159-
<FormRenderer
160-
onSubmit={console.log}
161-
componentMapper={compositeMapper}
162-
FormTemplate={(props) => <FormTemplate {...props} />}
163-
schema={schema}
164-
onCancel={() => console.log('canceling')}
165-
/>
166-
</Grid>
167-
</ThemeProvider>
146+
<StyledEngineProvider injectFirst>
147+
<ThemeProvider theme={theme}>
148+
<LocalizationProvider dateAdapter={AdapterDateFns}>
149+
<Grid container spacing={4} justifyContent="center" alignItems="center">
150+
<Grid item xs={12}>
151+
<Typography variant="h3">Material UI component mapper</Typography>
152+
</Grid>
153+
<Grid item xs={12}>
154+
<Button onClick={() => setSchema(demoSchema)}>Demo schema</Button>
155+
<Button onClick={() => setSchema(fieldArraySchema)}>Field array</Button>
156+
<Button onClick={() => setSchema(wizardSchema)}>Wizard</Button>
157+
<Button onClick={() => setSchema(selectSchema)}>Select</Button>
158+
</Grid>
159+
<FormRenderer
160+
onSubmit={console.log}
161+
componentMapper={compositeMapper}
162+
FormTemplate={(props) => <FormTemplate {...props} />}
163+
schema={schema}
164+
onCancel={() => console.log('canceling')}
165+
/>
166+
</Grid>
167+
</LocalizationProvider>
168+
</ThemeProvider>
169+
</StyledEngineProvider>
168170
);
169171
};
170172

packages/mui-component-mapper/package.json

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -25,28 +25,26 @@
2525
"directory": "packages/mui-component-mapper"
2626
},
2727
"devDependencies": {
28-
"@material-ui/core": "^4.11.0",
29-
"@material-ui/icons": "^4.9.1",
30-
"@material-ui/styles": "^4.10.0"
28+
"@mui/icons-material": "^5.0.5",
29+
"@mui/material": "^5.0.6",
30+
"@mui/styles": "^5.0.2"
3131
},
3232
"peerDependencies": {
3333
"@data-driven-forms/react-form-renderer": ">=3.2.1",
34-
"@material-ui/core": "^4.11.0",
35-
"@material-ui/icons": "^4.9.1",
36-
"@material-ui/styles": "^4.9.14",
34+
"@mui/icons-material": "^5.0.5",
35+
"@mui/material": "^5.0.6",
36+
"@mui/styles": "^5.0.2",
3737
"prop-types": ">=15.7.2",
38-
"react": "^16.13.1 || ^17.0.2",
39-
"react-dom": "^16.13.1 || ^17.0.2"
38+
"react": "^17.0.2",
39+
"react-dom": "^17.0.2"
4040
},
4141
"dependencies": {
4242
"@data-driven-forms/common": "*",
43-
"@date-io/date-fns": "^1.0.1",
44-
"@date-io/moment": "^1.0.1",
45-
"@material-ui/pickers": "^3.2.10",
43+
"@emotion/react": "^11.5.0",
44+
"@emotion/styled": "^11.3.0",
45+
"@mui/lab": "^5.0.0-alpha.53",
4646
"clsx": "^1.0.4",
47-
"date-fns": "^1.30.1",
48-
"lodash": "^4.17.21",
49-
"moment": "^2.23.0",
50-
"@material-ui/lab": "^4.0.0-alpha.53"
47+
"date-fns": "^2.16.1",
48+
"lodash": "^4.17.21"
5149
}
5250
}

packages/mui-component-mapper/src/checkbox/checkbox.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { UseFieldApiComponentConfig } from '@data-driven-forms/react-form-renderer';
2-
import { CheckboxProps as MuiCheckboxProps, GridProps, FormControlProps, FormGroupProps, FormControlLabelProps, FormLabelProps, FormHelperTextProps } from '@material-ui/core';
2+
import { CheckboxProps as MuiCheckboxProps, GridProps, FormControlProps, FormGroupProps, FormControlLabelProps, FormLabelProps, FormHelperTextProps } from '@mui/material';
33

44
interface InternalCheckboxProps extends MuiCheckboxProps {
55
FormFieldGridProps?: GridProps;

packages/mui-component-mapper/src/checkbox/checkbox.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React from 'react';
22
import PropTypes from 'prop-types';
3-
import { Checkbox as MUICheckbox, FormControl, FormControlLabel, FormHelperText, FormGroup, FormLabel } from '@material-ui/core';
3+
import { Checkbox as MUICheckbox, FormControl, FormControlLabel, FormHelperText, FormGroup, FormLabel } from '@mui/material';
44
import { meta, input } from '@data-driven-forms/common/prop-types-templates';
55

66
import FormFieldGrid from '../form-field-grid/form-field-grid';

packages/mui-component-mapper/src/date-picker/date-picker.d.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
1-
import { DatePickerProps as MuiDatePickerProps } from "@material-ui/pickers/DatePicker";
1+
import { DatePickerProps as MuiDatePickerProps } from "@mui/lab/DatePicker";
22
import { UseFieldApiComponentConfig } from "@data-driven-forms/react-form-renderer";
3-
import { GridProps } from "@material-ui/core";
4-
import { MuiPickersUtilsProviderProps } from "@material-ui/pickers/MuiPickersUtilsProvider";
5-
3+
import { GridProps } from "@mui/material";
64
interface InternalDatePickerProps extends MuiDatePickerProps {
75
FormFieldGridProps: GridProps;
8-
MuiPickersUtilsProviderProps: MuiPickersUtilsProviderProps;
96
DatePickerProps: MuiDatePickerProps;
107
}
118

0 commit comments

Comments
 (0)