Skip to content

Commit e8c7ce2

Browse files
authored
Merge pull request #1505 from data-driven-forms/react-19-comp
feat: support react version 19
2 parents 63382c6 + 70f8254 commit e8c7ce2

File tree

181 files changed

+505
-3470
lines changed

Some content is hidden

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

181 files changed

+505
-3470
lines changed

.circleci/config.yml

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
- checkout
1212
- node/install:
1313
install-yarn: true
14-
node-version: '16.13'
14+
node-version: '20'
1515
- run:
1616
name: install-deps
1717
command: yarn
@@ -40,7 +40,7 @@ jobs:
4040
at: ~/react-forms
4141
- node/install:
4242
install-yarn: true
43-
node-version: '16.13'
43+
node-version: '20'
4444
- run:
4545
name: Release new version
4646
command: |
@@ -55,7 +55,7 @@ jobs:
5555
at: ~/react-forms
5656
- node/install:
5757
install-yarn: true
58-
node-version: '16.13'
58+
node-version: '20'
5959
- run:
6060
name: Predeploy demo
6161
command: |

.eslintrc.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@
7979
"no-unused-vars": "error",
8080
"react/no-unused-prop-types": "error",
8181
"react-hooks/rules-of-hooks": "error",
82-
"react/prop-types": "error",
82+
"react/prop-types": "off",
8383
"react/no-unescaped-entities": "error",
8484
"no-prototype-builtins": "error",
8585
"no-mixed-operators": "error",

package.json

+7-6
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@
3131
"testEnvironment": "jest-environment-jsdom",
3232
"verbose": true,
3333
"testPathIgnorePatterns": [
34-
"/node_modules/"
34+
"/node_modules/",
35+
"packages/suir-component-mapper/"
3536
],
3637
"setupFilesAfterEnv": [
3738
"<rootDir>/config/jest.setup.js"
@@ -41,6 +42,7 @@
4142
"<rootDir>/packages/**/src/**/*.ts",
4243
"!<rootDir>/packages/**/src/**/*.d.ts",
4344
"!<rootDir>/packages/react-renderer-demo/**/*.js",
45+
"!<rootDir>/packages/suir-component-mapper/**/*.js",
4446
"!<rootDir>/packages/**/dist",
4547
"!<rootDir>/templates/**/*.js",
4648
"!<rootDir>/packages/**/src/**/index.js",
@@ -76,8 +78,8 @@
7678
"@testing-library/jest-dom": "^5.16.5",
7779
"@testing-library/react": "^13.4.0",
7880
"@testing-library/user-event": "^14.4.3",
79-
"@types/react": "^18.0.18",
80-
"@types/react-dom": "^18.0.6",
81+
"@types/react": "^19.1.2",
82+
"@types/react-dom": "^19.1.3",
8183
"@typescript-eslint/eslint-plugin": "^4.31.1",
8284
"babel-eslint": "^10.1.0",
8385
"babel-jest": "^27.4.6",
@@ -106,9 +108,8 @@
106108
"ncp": "^2.0.0",
107109
"sass": "^1.77.8",
108110
"prettier": "^2.5.1",
109-
"prop-types": "^15.8.1",
110-
"react": "^18.2.0",
111-
"react-dom": "^18.2.0",
111+
"react": "^19.1.0",
112+
"react-dom": "^19.1.0",
112113
"regenerator-runtime": "^0.13.9",
113114
"replace-in-file": "^6.3.2",
114115
"sass-loader": "^12.4.0",

packages/ant-component-mapper/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@
3131
"peerDependencies": {
3232
"@data-driven-forms/react-form-renderer": "*",
3333
"antd": "^4.2.0",
34-
"react": "^16.13.1 || ^17.0.2 || ^18.0.0",
35-
"react-dom": "^16.13.1 || ^17.0.2 || ^18.0.0"
34+
"react": "^17.0.2 || ^18.0.0 || ^19.0.0",
35+
"react-dom": "^17.0.2 || ^18.0.0 || ^19.0.0"
3636
},
3737
"dependencies": {
3838
"@data-driven-forms/common": "*",

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

-16
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import React from 'react';
2-
import PropTypes from 'prop-types';
32
import { Checkbox as AntCheckbox } from 'antd';
43
import MultipleChoiceList from '../multiple-choice-list/multiple-choice-list';
54
import { useFieldApi } from '@data-driven-forms/react-form-renderer';
@@ -37,21 +36,6 @@ export const SingleCheckbox = (props) => {
3736
);
3837
};
3938

40-
SingleCheckbox.propTypes = {
41-
isReadOnly: PropTypes.bool,
42-
isDisabled: PropTypes.bool,
43-
isRequired: PropTypes.bool,
44-
label: PropTypes.node,
45-
helperText: PropTypes.node,
46-
description: PropTypes.node,
47-
validateOnMount: PropTypes.bool,
48-
FormItemProps: PropTypes.object,
49-
};
50-
5139
const Checkbox = ({ options, ...props }) => (options ? <MultipleChoiceList options={options} {...props} /> : <SingleCheckbox {...props} />);
5240

53-
Checkbox.propTypes = {
54-
options: PropTypes.array,
55-
};
56-
5741
export default Checkbox;

packages/ant-component-mapper/src/date-picker/date-picker.js

-14
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import React from 'react';
2-
import PropTypes from 'prop-types';
32
import { DatePicker as AntDatePicker } from 'antd';
43
import { validationError } from '../validation-error/validation-error';
54
import { useFieldApi } from '@data-driven-forms/react-form-renderer';
@@ -37,17 +36,4 @@ const DatePicker = ({ placeholder = 'Select date', ...props }) => {
3736
);
3837
};
3938

40-
DatePicker.propTypes = {
41-
isReadOnly: PropTypes.bool,
42-
isDisabled: PropTypes.bool,
43-
placeholder: PropTypes.node,
44-
isRequired: PropTypes.bool,
45-
label: PropTypes.node,
46-
helperText: PropTypes.node,
47-
validateOnMount: PropTypes.bool,
48-
locale: PropTypes.string,
49-
description: PropTypes.node,
50-
FormItemProps: PropTypes.object,
51-
};
52-
5339
export default DatePicker;

packages/ant-component-mapper/src/field-array/field-array.js

-43
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import React, { memo, useReducer } from 'react';
22
import isEqual from 'lodash/isEqual';
3-
import PropTypes from 'prop-types';
43
import { useFieldApi, useFormApi, FieldArray } from '@data-driven-forms/react-form-renderer';
54
import { Row, Col, Button, Typography, Space } from 'antd';
65
import { UndoOutlined, RedoOutlined } from '@ant-design/icons';
@@ -44,20 +43,6 @@ const ArrayItem = memo(
4443
({ remove: _prevRemove, ...prev }, { remove: _nextRemove, ...next }) => isEqual(prev, next)
4544
);
4645

47-
ArrayItem.propTypes = {
48-
name: PropTypes.string,
49-
fieldIndex: PropTypes.number.isRequired,
50-
fields: PropTypes.arrayOf(PropTypes.object),
51-
remove: PropTypes.func.isRequired,
52-
length: PropTypes.number,
53-
minItems: PropTypes.number,
54-
removeLabel: PropTypes.node.isRequired,
55-
ArrayItemProps: PropTypes.object.isRequired,
56-
FieldsContainerProps: PropTypes.object.isRequired,
57-
RemoveContainerProps: PropTypes.object.isRequired,
58-
RemoveButtonProps: PropTypes.object.isRequired,
59-
};
60-
6146
const defaultButtonLabels = {
6247
add: 'ADD',
6348
remove: 'REMOVE',
@@ -247,32 +232,4 @@ const DynamicArray = ({ ...props }) => {
247232
);
248233
};
249234

250-
DynamicArray.propTypes = {
251-
label: PropTypes.node,
252-
description: PropTypes.node,
253-
fields: PropTypes.arrayOf(PropTypes.object).isRequired,
254-
defaultItem: PropTypes.any,
255-
minItems: PropTypes.number,
256-
maxItems: PropTypes.number,
257-
noItemsMessage: PropTypes.node,
258-
buttonLabels: PropTypes.object,
259-
// customization props
260-
FormItemProps: PropTypes.object,
261-
ArrayItemProps: PropTypes.object,
262-
FieldsContainerProps: PropTypes.object,
263-
RemoveContainerProps: PropTypes.object,
264-
RemoveButtonProps: PropTypes.object,
265-
FieldArrayRowProps: PropTypes.object,
266-
FieldArrayRowCol: PropTypes.object,
267-
FieldArrayHeaderProps: PropTypes.object,
268-
FieldArrayLabelProps: PropTypes.object,
269-
FieldArrayButtonsProps: PropTypes.object,
270-
UndoButtonProps: PropTypes.object,
271-
RedoButtonProps: PropTypes.object,
272-
AddButtonProps: PropTypes.object,
273-
FieldArrayDescriptionProps: PropTypes.object,
274-
NoItemsMessageProps: PropTypes.object,
275-
ErrorMessageProps: PropTypes.object,
276-
};
277-
278235
export default DynamicArray;
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
import React from 'react';
2-
import PropTypes from 'prop-types';
32

43
import { Form } from 'antd';
54
import { validationError } from '../validation-error/';
6-
import { childrenPropTypes } from '@data-driven-forms/common/prop-types-templates';
75

86
const FormGroup = ({ label, children, isRequired, FormItemProps, meta, validateOnMount, helperText, description, hideLabel, input }) => {
97
const invalid = validationError(meta, validateOnMount);
@@ -24,19 +22,4 @@ const FormGroup = ({ label, children, isRequired, FormItemProps, meta, validateO
2422
);
2523
};
2624

27-
FormGroup.propTypes = {
28-
label: PropTypes.string,
29-
children: childrenPropTypes,
30-
help: PropTypes.string,
31-
isRequired: PropTypes.bool,
32-
invalid: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),
33-
FormItemProps: PropTypes.object,
34-
meta: PropTypes.object,
35-
validateOnMount: PropTypes.bool,
36-
helperText: PropTypes.node,
37-
description: PropTypes.node,
38-
hideLabel: PropTypes.bool,
39-
input: PropTypes.object,
40-
};
41-
4225
export default FormGroup;
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
import React from 'react';
2-
import PropTypes from 'prop-types';
32
import { Button, Typography, Form as AntForm } from 'antd';
43
import FormTemplate from '@data-driven-forms/common/form-template';
5-
import { childrenPropTypes } from '@data-driven-forms/common/prop-types-templates';
64

75
const { Title, Paragraph } = Typography;
86

@@ -12,56 +10,30 @@ const Form = ({ children, onSubmit, layout = 'vertical', ...props }) => (
1210
</AntForm>
1311
);
1412

15-
Form.propTypes = {
16-
layout: PropTypes.string,
17-
onSubmit: PropTypes.func,
18-
children: childrenPropTypes,
19-
};
20-
2113
const Description = ({ children, ...props }) => (
2214
<Typography {...props}>
2315
<Paragraph>{children}</Paragraph>
2416
</Typography>
2517
);
2618

27-
Description.propTypes = {
28-
children: childrenPropTypes,
29-
};
30-
3119
const TitleComponent = ({ children, ...props }) => (
3220
<Typography {...props}>
3321
<Title level={3}>{children}</Title>
3422
</Typography>
3523
);
3624

37-
TitleComponent.propTypes = {
38-
children: childrenPropTypes,
39-
};
40-
4125
const ButtonGroup = ({ children, ...props }) => (
4226
<div style={{ display: 'flex', justifyContent: 'flex-end' }} {...props}>
4327
{children}
4428
</div>
4529
);
4630

47-
ButtonGroup.propTypes = {
48-
children: childrenPropTypes,
49-
};
50-
5131
const ButtonComponent = ({ label, variant, children, buttonType, ...props }) => (
5232
<Button {...props} type="primary" htmlType={props.type}>
5333
{label || children}
5434
</Button>
5535
);
5636

57-
ButtonComponent.propTypes = {
58-
children: childrenPropTypes,
59-
label: PropTypes.node,
60-
variant: PropTypes.string,
61-
buttonType: PropTypes.string,
62-
type: PropTypes.string,
63-
};
64-
6537
const AntFormTemplate = ({ layout, formWrapperProps, ...props }) => (
6638
<FormTemplate
6739
FormWrapper={Form}
@@ -74,9 +46,4 @@ const AntFormTemplate = ({ layout, formWrapperProps, ...props }) => (
7446
/>
7547
);
7648

77-
AntFormTemplate.propTypes = {
78-
layout: PropTypes.string,
79-
formWrapperProps: PropTypes.object,
80-
};
81-
8249
export default AntFormTemplate;
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import React from 'react';
2-
import { childrenPropTypes } from '@data-driven-forms/common/prop-types-templates';
32

43
import './is-required.css';
54

@@ -12,8 +11,4 @@ const IsRequired = ({ children }) => (
1211
</React.Fragment>
1312
);
1413

15-
IsRequired.propTypes = {
16-
children: childrenPropTypes,
17-
};
18-
1914
export default IsRequired;
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import React from 'react';
2-
import PropTypes from 'prop-types';
32

43
import { Checkbox as AntCheckbox } from 'antd';
5-
import MultipleChoiceListCommon, { wrapperProps } from '@data-driven-forms/common/multiple-choice-list';
4+
import MultipleChoiceListCommon from '@data-driven-forms/common/multiple-choice-list';
65
import FormGroup from '../form-group';
76

87
const FinalCheckbox = ({ isDisabled, label, ...props }) => (
@@ -11,11 +10,6 @@ const FinalCheckbox = ({ isDisabled, label, ...props }) => (
1110
</AntCheckbox>
1211
);
1312

14-
FinalCheckbox.propTypes = {
15-
isDisabled: PropTypes.bool,
16-
label: PropTypes.node,
17-
};
18-
1913
const Wrapper = ({ label, isRequired, children, meta, input, validateOnMount, helperText, description, FormItemProps }) => (
2014
<FormGroup
2115
label={label}
@@ -31,16 +25,6 @@ const Wrapper = ({ label, isRequired, children, meta, input, validateOnMount, he
3125
</FormGroup>
3226
);
3327

34-
Wrapper.propTypes = {
35-
...wrapperProps,
36-
};
37-
3828
const MultipleChoiceList = (props) => <MultipleChoiceListCommon {...props} Wrapper={Wrapper} Checkbox={FinalCheckbox} />;
3929

40-
MultipleChoiceList.propTypes = {
41-
input: PropTypes.shape({
42-
name: PropTypes.string.isRequired,
43-
}),
44-
};
45-
4630
export default MultipleChoiceList;
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import React from 'react';
22
import { Typography } from 'antd';
3-
import PropTypes from 'prop-types';
43

54
const { Paragraph } = Typography;
65

@@ -14,10 +13,4 @@ const PlainText = ({ label, name, TypographyProps, ...rest }) => (
1413
</Typography>
1514
);
1615

17-
PlainText.propTypes = {
18-
label: PropTypes.string.isRequired,
19-
name: PropTypes.string.isRequired,
20-
TypographyProps: PropTypes.object,
21-
};
22-
2316
export default PlainText;

0 commit comments

Comments
 (0)