Skip to content

Commit d9b5630

Browse files
committed
feat: /decaporg/issues/7365 react 19 support finalize
1 parent 5501550 commit d9b5630

File tree

45 files changed

+192
-11
lines changed

Some content is hidden

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

45 files changed

+192
-11
lines changed

packages/decap-cms-backend-aws-cognito-github-proxy/src/AuthenticationPage.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ export default class GenericPKCEAuthenticationPage extends React.Component {
1919
state = {};
2020

2121
componentDidMount() {
22+
// Manually validate PropTypes - React 19 breaking change
23+
PropTypes.checkPropTypes(GenericPKCEAuthenticationPage.propTypes, this.props, 'prop', 'GenericPKCEAuthenticationPage');
24+
2225
const {
2326
base_url = '',
2427
app_id = '',

packages/decap-cms-backend-azure/src/AuthenticationPage.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ export default class AzureAuthenticationPage extends React.Component {
2323
state = {};
2424

2525
componentDidMount() {
26+
// Manually validate PropTypes - React 19 breaking change
27+
PropTypes.checkPropTypes(AzureAuthenticationPage.propTypes, this.props, 'prop', 'AzureAuthenticationPage');
28+
2629
this.auth = new ImplicitAuthenticator({
2730
base_url: `https://login.microsoftonline.com/${this.props.config.backend.tenant_id}`,
2831
auth_endpoint: 'oauth2/authorize',

packages/decap-cms-backend-bitbucket/src/AuthenticationPage.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ export default class BitbucketAuthenticationPage extends React.Component {
2323
state = {};
2424

2525
componentDidMount() {
26+
// Manually validate PropTypes - React 19 breaking change
27+
PropTypes.checkPropTypes(BitbucketAuthenticationPage.propTypes, this.props, 'prop', 'BitbucketAuthenticationPage');
28+
2629
const { auth_type: authType = '' } = this.props.config.backend;
2730

2831
if (authType === 'implicit') {

packages/decap-cms-backend-git-gateway/src/AuthenticationPage.js

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -68,12 +68,23 @@ if (window.netlifyIdentity) {
6868
export default class GitGatewayAuthenticationPage extends React.Component {
6969
static authClient;
7070

71+
static propTypes = {
72+
onLogin: PropTypes.func.isRequired,
73+
inProgress: PropTypes.bool.isRequired,
74+
error: PropTypes.node,
75+
config: PropTypes.object.isRequired,
76+
t: PropTypes.func.isRequired,
77+
};
78+
7179
constructor(props) {
7280
super(props);
7381
component = this;
7482
}
7583

7684
componentDidMount() {
85+
// Manually validate PropTypes - React 19 breaking change
86+
PropTypes.checkPropTypes(GitGatewayAuthenticationPage.propTypes, this.props, 'prop', 'GitGatewayAuthenticationPage');
87+
7788
if (!this.loggedIn && window.netlifyIdentity && window.netlifyIdentity.currentUser()) {
7889
this.props.onLogin(window.netlifyIdentity.currentUser());
7990
window.netlifyIdentity.close();
@@ -111,14 +122,6 @@ export default class GitGatewayAuthenticationPage extends React.Component {
111122
}
112123
};
113124

114-
static propTypes = {
115-
onLogin: PropTypes.func.isRequired,
116-
inProgress: PropTypes.bool.isRequired,
117-
error: PropTypes.node,
118-
config: PropTypes.object.isRequired,
119-
t: PropTypes.func.isRequired,
120-
};
121-
122125
state = { email: '', password: '', errors: {} };
123126

124127
handleChange = (name, e) => {

packages/decap-cms-backend-gitea/src/AuthenticationPage.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ export default class GiteaAuthenticationPage extends React.Component {
1919
state = {};
2020

2121
componentDidMount() {
22+
// Manually validate PropTypes - React 19 breaking change
23+
PropTypes.checkPropTypes(GiteaAuthenticationPage.propTypes, this.props, 'prop', 'GiteaAuthenticationPage');
24+
2225
const { base_url = 'https://try.gitea.io', app_id = '' } = this.props.config.backend;
2326
this.auth = new PkceAuthenticator({
2427
base_url,

packages/decap-cms-backend-github/src/AuthenticationPage.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,11 @@ export default class GitHubAuthenticationPage extends React.Component {
3535

3636
state = {};
3737

38+
componentDidMount() {
39+
// Manually validate PropTypes - React 19 breaking change
40+
PropTypes.checkPropTypes(GitHubAuthenticationPage.propTypes, this.props, 'prop', 'GitHubAuthenticationPage');
41+
};
42+
3843
getPermissionToFork = () => {
3944
return new Promise((resolve, reject) => {
4045
this.setState({

packages/decap-cms-backend-gitlab/src/AuthenticationPage.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,9 @@ export default class GitLabAuthenticationPage extends React.Component {
5454
state = {};
5555

5656
componentDidMount() {
57+
// Manually validate PropTypes - React 19 breaking change
58+
PropTypes.checkPropTypes(GitLabAuthenticationPage.propTypes, this.props, 'prop', 'GitLabAuthenticationPage');
59+
5760
const {
5861
auth_type: authType = '',
5962
base_url = 'https://gitlab.com',

packages/decap-cms-backend-proxy/src/AuthenticationPage.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@ export default class AuthenticationPage extends React.Component {
3636
t: PropTypes.func.isRequired,
3737
};
3838

39+
componentDidMount() {
40+
// Manually validate PropTypes - React 19 breaking change
41+
PropTypes.checkPropTypes(AuthenticationPage.propTypes, this.props, 'prop', 'AuthenticationPage');
42+
};
43+
3944
handleLogin = e => {
4045
e.preventDefault();
4146
this.props.onLogin(this.state);

packages/decap-cms-backend-test/src/AuthenticationPage.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ export default class AuthenticationPage extends React.Component {
4242
};
4343

4444
componentDidMount() {
45+
// Manually validate PropTypes - React 19 breaking change
46+
PropTypes.checkPropTypes(AuthenticationPage.propTypes, this.props, 'prop', 'AuthenticationPage');
47+
4548
/**
4649
* Allow login screen to be skipped for demo purposes.
4750
*/

packages/decap-cms-core/src/components/App/App.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,11 @@ class App extends React.Component {
8686
t: PropTypes.func.isRequired,
8787
};
8888

89+
componentDidMount() {
90+
// Manually validate PropTypes - React 19 breaking change
91+
PropTypes.checkPropTypes(App.propTypes, this.props, 'prop', 'App');
92+
};
93+
8994
configError(config) {
9095
const t = this.props.t;
9196
return (

packages/decap-cms-core/src/components/App/Header.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,9 @@ class Header extends React.Component {
131131
intervalId;
132132

133133
componentDidMount() {
134+
// Manually validate PropTypes - React 19 breaking change
135+
PropTypes.checkPropTypes(Header.propTypes, this.props, 'prop', 'Header');
136+
134137
this.intervalId = setInterval(() => {
135138
this.props.checkBackendStatus();
136139
}, 5 * 60 * 1000);

packages/decap-cms-core/src/components/Collection/Collection.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,11 @@ export class Collection extends React.Component {
5555
onSortClick: PropTypes.func.isRequired,
5656
};
5757

58+
componentDidMount() {
59+
// Manually validate PropTypes - React 19 breaking change
60+
PropTypes.checkPropTypes(Collection.propTypes, this.props, 'prop', 'Collection');
61+
};
62+
5863
renderEntriesCollection = () => {
5964
const { collection, filterTerm, viewStyle } = this.props;
6065
return (

packages/decap-cms-core/src/components/Collection/CollectionSearch.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,11 @@ class CollectionSearch extends React.Component {
102102
selectedCollectionIdx: this.getSelectedSelectionBasedOnProps(),
103103
};
104104

105+
componentDidMount() {
106+
// Manually validate PropTypes - React 19 breaking change
107+
PropTypes.checkPropTypes(CollectionSearch.propTypes, this.props, 'prop', 'CollectionSearch');
108+
};
109+
105110
componentDidUpdate(prevProps) {
106111
if (prevProps.collection !== this.props.collection) {
107112
const selectedCollectionIdx = this.getSelectedSelectionBasedOnProps();

packages/decap-cms-core/src/components/Collection/Entries/EntriesCollection.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,9 @@ export class EntriesCollection extends React.Component {
7373
};
7474

7575
componentDidMount() {
76+
// Manually validate PropTypes - React 19 breaking change
77+
PropTypes.checkPropTypes(EntriesCollection.propTypes, this.props, 'prop', 'EntriesCollection');
78+
7679
const { collection, entriesLoaded, loadEntries } = this.props;
7780
if (collection && !entriesLoaded) {
7881
loadEntries(collection);

packages/decap-cms-core/src/components/Collection/Entries/EntriesSearch.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ class EntriesSearch extends React.Component {
2525
};
2626

2727
componentDidMount() {
28+
// Manually validate PropTypes - React 19 breaking change
29+
PropTypes.checkPropTypes(EntriesSearch.propTypes, this.props, 'prop', 'EntriesSearch');
30+
2831
const { searchTerm, searchEntries, collectionNames } = this.props;
2932
searchEntries(searchTerm, collectionNames);
3033
}

packages/decap-cms-core/src/components/Collection/Entries/EntryListing.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,11 @@ export default class EntryListing extends React.Component {
2727
page: PropTypes.number,
2828
};
2929

30+
componentDidMount() {
31+
// Manually validate PropTypes - React 19 breaking change
32+
PropTypes.checkPropTypes(EntryListing.propTypes, this.props, 'prop', 'EntryListing');
33+
};
34+
3035
hasMore = () => {
3136
const hasMore = this.props.cursor?.actions?.has('append_next');
3237
return hasMore;

packages/decap-cms-core/src/components/Collection/NestedCollection.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,11 @@ export class NestedCollection extends React.Component {
263263
};
264264
}
265265

266+
componentDidMount() {
267+
// Manually validate PropTypes - React 19 breaking change
268+
PropTypes.checkPropTypes(NestedCollection.propTypes, this.props, 'prop', 'NestedCollection');
269+
};
270+
266271
componentDidUpdate(prevProps) {
267272
const { collection, entries, filterTerm } = this.props;
268273
if (

packages/decap-cms-core/src/components/Collection/Sidebar.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,11 @@ export class Sidebar extends React.Component {
7777
t: PropTypes.func.isRequired,
7878
};
7979

80+
componentDidMount() {
81+
// Manually validate PropTypes - React 19 breaking change
82+
PropTypes.checkPropTypes(Sidebar.propTypes, this.props, 'prop', 'Sidebar');
83+
};
84+
8085
renderLink = (collection, filterTerm) => {
8186
const collectionName = collection.get('name');
8287
if (collection.has('nested')) {

packages/decap-cms-core/src/components/Editor/Editor.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,9 @@ export class Editor extends React.Component {
8282
};
8383

8484
componentDidMount() {
85+
// Manually validate PropTypes - React 19 breaking change
86+
PropTypes.checkPropTypes(Editor.propTypes, this.props, 'prop', 'Editor');
87+
8588
const {
8689
newEntry,
8790
collection,
@@ -94,9 +97,6 @@ export class Editor extends React.Component {
9497
t,
9598
} = this.props;
9699

97-
// Manually validate PropTypes - React 19 breaking change
98-
PropTypes.checkPropTypes(Editor.propTypes, this.props, 'prop', 'Editor');
99-
100100
retrieveLocalBackup(collection, slug);
101101

102102
if (newEntry) {

packages/decap-cms-core/src/components/Editor/EditorControlPane/EditorControl.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,11 @@ class EditorControl extends React.Component {
170170

171171
uniqueFieldId = uniqueId(`${this.props.field.get('name')}-field-`);
172172

173+
componentDidMount() {
174+
// Manually validate PropTypes - React 19 breaking change
175+
PropTypes.checkPropTypes(EditorControl.propTypes, this.props, 'prop', 'EditorControl');
176+
};
177+
173178
isAncestorOfFieldError = () => {
174179
const { fieldsErrors } = this.props;
175180

packages/decap-cms-core/src/components/Editor/EditorControlPane/Widget.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,11 @@ export default class Widget extends Component {
7575
isParentListCollapsed: PropTypes.bool,
7676
};
7777

78+
componentDidMount() {
79+
// Manually validate PropTypes - React 19 breaking change
80+
PropTypes.checkPropTypes(Widget.propTypes, this.props, 'prop', 'Widget');
81+
};
82+
7883
shouldComponentUpdate(nextProps) {
7984
/**
8085
* Avoid unnecessary rerenders while loading assets.

packages/decap-cms-core/src/components/Editor/EditorToolbar.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,9 @@ export class EditorToolbar extends React.Component {
280280
};
281281

282282
componentDidMount() {
283+
// Manually validate PropTypes - React 19 breaking change
284+
PropTypes.checkPropTypes(EditorToolbar.propTypes, this.props, 'prop', 'EditorToolbar');
285+
283286
const { isNewEntry, loadDeployPreview } = this.props;
284287
if (!isNewEntry) {
285288
loadDeployPreview({ maxAttempts: 3 });

packages/decap-cms-core/src/components/MediaLibrary/MediaLibrary.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,9 @@ class MediaLibrary extends React.Component {
7777
};
7878

7979
componentDidMount() {
80+
// Manually validate PropTypes - React 19 breaking change
81+
PropTypes.checkPropTypes(MediaLibrary.propTypes, this.props, 'prop', 'MediaLibrary');
82+
8083
this.props.loadMedia();
8184
}
8285

packages/decap-cms-core/src/components/UI/ErrorBoundary.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,11 @@ export class ErrorBoundary extends React.Component {
150150
};
151151
}
152152

153+
componentDidMount() {
154+
// Manually validate PropTypes - React 19 breaking change
155+
PropTypes.checkPropTypes(ErrorBoundary.propTypes, this.props, 'prop', 'ErrorBoundary');
156+
};
157+
153158
shouldComponentUpdate(nextProps, nextState) {
154159
if (this.props.showBackup) {
155160
return (

packages/decap-cms-core/src/components/UI/Modal.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,9 @@ export class Modal extends React.Component {
6363
};
6464

6565
componentDidMount() {
66+
// Manually validate PropTypes - React 19 breaking change
67+
PropTypes.checkPropTypes(Modal.propTypes, this.props, 'prop', 'Modal');
68+
6669
ReactModal.setAppElement('#nc-root');
6770
}
6871

packages/decap-cms-core/src/components/Workflow/Workflow.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,9 @@ class Workflow extends Component {
6767
};
6868

6969
componentDidMount() {
70+
// Manually validate PropTypes - React 19 breaking change
71+
PropTypes.checkPropTypes(Workflow.propTypes, this.props, 'prop', 'Workflow');
72+
7073
const { loadUnpublishedEntries, isEditorialWorkflow, collections } = this.props;
7174
if (isEditorialWorkflow) {
7275
loadUnpublishedEntries(collections);

packages/decap-cms-core/src/components/Workflow/WorkflowList.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,11 @@ class WorkflowList extends React.Component {
139139
collections: ImmutablePropTypes.map.isRequired,
140140
};
141141

142+
componentDidMount() {
143+
// Manually validate PropTypes - React 19 breaking change
144+
PropTypes.checkPropTypes(WorkflowList.propTypes, this.props, 'prop', 'WorkflowList');
145+
};
146+
142147
handleChangeStatus = (newStatus, dragProps) => {
143148
const slug = dragProps.slug;
144149
const collection = dragProps.collection;

packages/decap-cms-ui-default/src/GoBackButton.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ export default class GoBackButton extends React.Component {
2626
t: PropTypes.func.isRequired,
2727
};
2828

29+
componentDidMount() {
30+
// Manually validate PropTypes - React 19 breaking change
31+
PropTypes.checkPropTypes(GoBackButton.propTypes, this.props, 'prop', 'GoBackButton');
32+
};
33+
2934
render() {
3035
const { href, t } = this.props;
3136

packages/decap-cms-ui-default/src/Loader.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,11 @@ export class Loader extends React.Component {
6666
currentItem: 0,
6767
};
6868

69+
componentDidMount() {
70+
// Manually validate PropTypes - React 19 breaking change
71+
PropTypes.checkPropTypes(Loader.propTypes, this.props, 'prop', 'Loader');
72+
};
73+
6974
componentWillUnmount() {
7075
if (this.interval) {
7176
clearInterval(this.interval);

packages/decap-cms-ui-default/src/ObjectWidgetTopBar.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,11 @@ class ObjectWidgetTopBar extends React.Component {
6262
t: PropTypes.func.isRequired,
6363
};
6464

65+
componentDidMount() {
66+
// Manually validate PropTypes - React 19 breaking change
67+
PropTypes.checkPropTypes(ObjectWidgetTopBar.propTypes, this.props, 'prop', 'ObjectWidgetTopBar');
68+
};
69+
6570
renderAddUI() {
6671
if (!this.props.allowAdd) {
6772
return null;

packages/decap-cms-widget-code/src/CodeControl.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,9 @@ export default class CodeControl extends React.Component {
9898
}
9999

100100
componentDidMount() {
101+
// Manually validate PropTypes - React 19 breaking change
102+
PropTypes.checkPropTypes(CodeControl.propTypes, this.props, 'prop', 'CodeControl');
103+
101104
this.setState({
102105
lang: this.getInitialLang() || '',
103106
});

packages/decap-cms-widget-colorstring/src/ColorControl.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,10 @@ export default class ColorControl extends React.Component {
9393
state = {
9494
showColorPicker: false,
9595
};
96+
componentDidMount() {
97+
// Manually validate PropTypes - React 19 breaking change
98+
PropTypes.checkPropTypes(ColorControl.propTypes, this.props, 'prop', 'ColorControl');
99+
};
96100
// show/hide color picker
97101
handleClick = () => {
98102
this.setState({ showColorPicker: !this.state.showColorPicker });

packages/decap-cms-widget-datetime/src/DateTimeControl.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,9 @@ class DateTimeControl extends React.Component {
6363
};
6464

6565
componentDidMount() {
66+
// Manually validate PropTypes - React 19 breaking change
67+
PropTypes.checkPropTypes(DateTimeControl.propTypes, this.props, 'prop', 'DateTimeControl');
68+
6669
const { value } = this.props;
6770
if (value === '{{now}}') {
6871
this.handleChange(this.getNow());

0 commit comments

Comments
 (0)