mirror of
https://github.com/strapi/strapi.git
synced 2025-06-27 00:41:25 +00:00
refactor: remove calls to redux
This commit is contained in:
parent
57aef2ac2b
commit
04436917c7
2
.github/dependabot.yml
vendored
2
.github/dependabot.yml
vendored
@ -31,7 +31,7 @@ updates:
|
||||
|
||||
redux:
|
||||
patterns:
|
||||
- 'redux'
|
||||
- '@reduxjs/toolkit'
|
||||
- 'react-redux'
|
||||
|
||||
richtext-editor:
|
||||
|
@ -303,6 +303,68 @@ export interface AdminTransferTokenPermission extends Schema.CollectionType {
|
||||
};
|
||||
}
|
||||
|
||||
export interface AdminWorkflow extends Schema.CollectionType {
|
||||
collectionName: 'strapi_workflows';
|
||||
info: {
|
||||
name: 'Workflow';
|
||||
description: '';
|
||||
singularName: 'workflow';
|
||||
pluralName: 'workflows';
|
||||
displayName: 'Workflow';
|
||||
};
|
||||
pluginOptions: {
|
||||
'content-manager': {
|
||||
visible: false;
|
||||
};
|
||||
'content-type-builder': {
|
||||
visible: false;
|
||||
};
|
||||
};
|
||||
attributes: {
|
||||
name: Attribute.String & Attribute.Required & Attribute.Unique;
|
||||
stages: Attribute.Relation<'admin::workflow', 'oneToMany', 'admin::workflow-stage'>;
|
||||
contentTypes: Attribute.JSON & Attribute.Required & Attribute.DefaultTo<[]>;
|
||||
createdAt: Attribute.DateTime;
|
||||
updatedAt: Attribute.DateTime;
|
||||
createdBy: Attribute.Relation<'admin::workflow', 'oneToOne', 'admin::user'> & Attribute.Private;
|
||||
updatedBy: Attribute.Relation<'admin::workflow', 'oneToOne', 'admin::user'> & Attribute.Private;
|
||||
};
|
||||
}
|
||||
|
||||
export interface AdminWorkflowStage extends Schema.CollectionType {
|
||||
collectionName: 'strapi_workflows_stages';
|
||||
info: {
|
||||
name: 'Workflow Stage';
|
||||
description: '';
|
||||
singularName: 'workflow-stage';
|
||||
pluralName: 'workflow-stages';
|
||||
displayName: 'Stages';
|
||||
};
|
||||
options: {
|
||||
version: '1.1.0';
|
||||
};
|
||||
pluginOptions: {
|
||||
'content-manager': {
|
||||
visible: false;
|
||||
};
|
||||
'content-type-builder': {
|
||||
visible: false;
|
||||
};
|
||||
};
|
||||
attributes: {
|
||||
name: Attribute.String;
|
||||
color: Attribute.String & Attribute.DefaultTo<'#4945FF'>;
|
||||
workflow: Attribute.Relation<'admin::workflow-stage', 'manyToOne', 'admin::workflow'>;
|
||||
permissions: Attribute.Relation<'admin::workflow-stage', 'manyToMany', 'admin::permission'>;
|
||||
createdAt: Attribute.DateTime;
|
||||
updatedAt: Attribute.DateTime;
|
||||
createdBy: Attribute.Relation<'admin::workflow-stage', 'oneToOne', 'admin::user'> &
|
||||
Attribute.Private;
|
||||
updatedBy: Attribute.Relation<'admin::workflow-stage', 'oneToOne', 'admin::user'> &
|
||||
Attribute.Private;
|
||||
};
|
||||
}
|
||||
|
||||
export interface PluginUploadFile extends Schema.CollectionType {
|
||||
collectionName: 'files';
|
||||
info: {
|
||||
@ -428,6 +490,8 @@ export interface PluginMypluginTest extends Schema.CollectionType {
|
||||
'plugin::myplugin.test'
|
||||
>;
|
||||
locale: Attribute.String;
|
||||
strapi_stage: Attribute.Relation<'plugin::myplugin.test', 'oneToOne', 'admin::workflow-stage'>;
|
||||
strapi_assignee: Attribute.Relation<'plugin::myplugin.test', 'oneToOne', 'admin::user'>;
|
||||
};
|
||||
}
|
||||
|
||||
@ -598,6 +662,16 @@ export interface PluginUsersPermissionsUser extends Schema.CollectionType {
|
||||
Attribute.Private;
|
||||
updatedBy: Attribute.Relation<'plugin::users-permissions.user', 'oneToOne', 'admin::user'> &
|
||||
Attribute.Private;
|
||||
strapi_stage: Attribute.Relation<
|
||||
'plugin::users-permissions.user',
|
||||
'oneToOne',
|
||||
'admin::workflow-stage'
|
||||
>;
|
||||
strapi_assignee: Attribute.Relation<
|
||||
'plugin::users-permissions.user',
|
||||
'oneToOne',
|
||||
'admin::user'
|
||||
>;
|
||||
};
|
||||
}
|
||||
|
||||
@ -641,6 +715,8 @@ export interface ApiAddressAddress extends Schema.CollectionType {
|
||||
Attribute.Private;
|
||||
updatedBy: Attribute.Relation<'api::address.address', 'oneToOne', 'admin::user'> &
|
||||
Attribute.Private;
|
||||
strapi_stage: Attribute.Relation<'api::address.address', 'oneToOne', 'admin::workflow-stage'>;
|
||||
strapi_assignee: Attribute.Relation<'api::address.address', 'oneToOne', 'admin::user'>;
|
||||
};
|
||||
}
|
||||
|
||||
@ -701,6 +777,8 @@ export interface ApiCategoryCategory extends Schema.CollectionType {
|
||||
'api::category.category'
|
||||
>;
|
||||
locale: Attribute.String;
|
||||
strapi_stage: Attribute.Relation<'api::category.category', 'oneToOne', 'admin::workflow-stage'>;
|
||||
strapi_assignee: Attribute.Relation<'api::category.category', 'oneToOne', 'admin::user'>;
|
||||
};
|
||||
}
|
||||
|
||||
@ -752,6 +830,8 @@ export interface ApiCountryCountry extends Schema.CollectionType {
|
||||
Attribute.Private;
|
||||
localizations: Attribute.Relation<'api::country.country', 'oneToMany', 'api::country.country'>;
|
||||
locale: Attribute.String;
|
||||
strapi_stage: Attribute.Relation<'api::country.country', 'oneToOne', 'admin::workflow-stage'>;
|
||||
strapi_assignee: Attribute.Relation<'api::country.country', 'oneToOne', 'admin::user'>;
|
||||
};
|
||||
}
|
||||
|
||||
@ -800,6 +880,8 @@ export interface ApiHomepageHomepage extends Schema.SingleType {
|
||||
'api::homepage.homepage'
|
||||
>;
|
||||
locale: Attribute.String;
|
||||
strapi_stage: Attribute.Relation<'api::homepage.homepage', 'oneToOne', 'admin::workflow-stage'>;
|
||||
strapi_assignee: Attribute.Relation<'api::homepage.homepage', 'oneToOne', 'admin::user'>;
|
||||
};
|
||||
}
|
||||
|
||||
@ -870,6 +952,12 @@ export interface ApiKitchensinkKitchensink extends Schema.CollectionType {
|
||||
Attribute.Private;
|
||||
updatedBy: Attribute.Relation<'api::kitchensink.kitchensink', 'oneToOne', 'admin::user'> &
|
||||
Attribute.Private;
|
||||
strapi_stage: Attribute.Relation<
|
||||
'api::kitchensink.kitchensink',
|
||||
'oneToOne',
|
||||
'admin::workflow-stage'
|
||||
>;
|
||||
strapi_assignee: Attribute.Relation<'api::kitchensink.kitchensink', 'oneToOne', 'admin::user'>;
|
||||
};
|
||||
}
|
||||
|
||||
@ -892,6 +980,8 @@ export interface ApiLikeLike extends Schema.CollectionType {
|
||||
updatedAt: Attribute.DateTime;
|
||||
createdBy: Attribute.Relation<'api::like.like', 'oneToOne', 'admin::user'> & Attribute.Private;
|
||||
updatedBy: Attribute.Relation<'api::like.like', 'oneToOne', 'admin::user'> & Attribute.Private;
|
||||
strapi_stage: Attribute.Relation<'api::like.like', 'oneToOne', 'admin::workflow-stage'>;
|
||||
strapi_assignee: Attribute.Relation<'api::like.like', 'oneToOne', 'admin::user'>;
|
||||
};
|
||||
}
|
||||
|
||||
@ -915,6 +1005,8 @@ export interface ApiMenuMenu extends Schema.CollectionType {
|
||||
updatedAt: Attribute.DateTime;
|
||||
createdBy: Attribute.Relation<'api::menu.menu', 'oneToOne', 'admin::user'> & Attribute.Private;
|
||||
updatedBy: Attribute.Relation<'api::menu.menu', 'oneToOne', 'admin::user'> & Attribute.Private;
|
||||
strapi_stage: Attribute.Relation<'api::menu.menu', 'oneToOne', 'admin::workflow-stage'>;
|
||||
strapi_assignee: Attribute.Relation<'api::menu.menu', 'oneToOne', 'admin::user'>;
|
||||
};
|
||||
}
|
||||
|
||||
@ -944,6 +1036,12 @@ export interface ApiMenusectionMenusection extends Schema.CollectionType {
|
||||
Attribute.Private;
|
||||
updatedBy: Attribute.Relation<'api::menusection.menusection', 'oneToOne', 'admin::user'> &
|
||||
Attribute.Private;
|
||||
strapi_stage: Attribute.Relation<
|
||||
'api::menusection.menusection',
|
||||
'oneToOne',
|
||||
'admin::workflow-stage'
|
||||
>;
|
||||
strapi_assignee: Attribute.Relation<'api::menusection.menusection', 'oneToOne', 'admin::user'>;
|
||||
};
|
||||
}
|
||||
|
||||
@ -1021,6 +1119,16 @@ export interface ApiRelationLocaleRelationLocale extends Schema.CollectionType {
|
||||
'api::relation-locale.relation-locale'
|
||||
>;
|
||||
locale: Attribute.String;
|
||||
strapi_stage: Attribute.Relation<
|
||||
'api::relation-locale.relation-locale',
|
||||
'oneToOne',
|
||||
'admin::workflow-stage'
|
||||
>;
|
||||
strapi_assignee: Attribute.Relation<
|
||||
'api::relation-locale.relation-locale',
|
||||
'oneToOne',
|
||||
'admin::user'
|
||||
>;
|
||||
};
|
||||
}
|
||||
|
||||
@ -1178,6 +1286,12 @@ export interface ApiRestaurantRestaurant extends Schema.CollectionType {
|
||||
'api::restaurant.restaurant'
|
||||
>;
|
||||
locale: Attribute.String;
|
||||
strapi_stage: Attribute.Relation<
|
||||
'api::restaurant.restaurant',
|
||||
'oneToOne',
|
||||
'admin::workflow-stage'
|
||||
>;
|
||||
strapi_assignee: Attribute.Relation<'api::restaurant.restaurant', 'oneToOne', 'admin::user'>;
|
||||
};
|
||||
}
|
||||
|
||||
@ -1210,6 +1324,8 @@ export interface ApiReviewReview extends Schema.CollectionType {
|
||||
Attribute.Private;
|
||||
updatedBy: Attribute.Relation<'api::review.review', 'oneToOne', 'admin::user'> &
|
||||
Attribute.Private;
|
||||
strapi_stage: Attribute.Relation<'api::review.review', 'oneToOne', 'admin::workflow-stage'>;
|
||||
strapi_assignee: Attribute.Relation<'api::review.review', 'oneToOne', 'admin::user'>;
|
||||
};
|
||||
}
|
||||
|
||||
@ -1251,6 +1367,8 @@ export interface ApiTagTag extends Schema.CollectionType {
|
||||
publishedAt: Attribute.DateTime;
|
||||
createdBy: Attribute.Relation<'api::tag.tag', 'oneToOne', 'admin::user'> & Attribute.Private;
|
||||
updatedBy: Attribute.Relation<'api::tag.tag', 'oneToOne', 'admin::user'> & Attribute.Private;
|
||||
strapi_stage: Attribute.Relation<'api::tag.tag', 'oneToOne', 'admin::workflow-stage'>;
|
||||
strapi_assignee: Attribute.Relation<'api::tag.tag', 'oneToOne', 'admin::user'>;
|
||||
};
|
||||
}
|
||||
|
||||
@ -1275,6 +1393,41 @@ export interface ApiTempTemp extends Schema.CollectionType {
|
||||
publishedAt: Attribute.DateTime;
|
||||
createdBy: Attribute.Relation<'api::temp.temp', 'oneToOne', 'admin::user'> & Attribute.Private;
|
||||
updatedBy: Attribute.Relation<'api::temp.temp', 'oneToOne', 'admin::user'> & Attribute.Private;
|
||||
strapi_stage: Attribute.Relation<'api::temp.temp', 'oneToOne', 'admin::workflow-stage'>;
|
||||
strapi_assignee: Attribute.Relation<'api::temp.temp', 'oneToOne', 'admin::user'>;
|
||||
};
|
||||
}
|
||||
|
||||
export interface AdminAuditLog extends Schema.CollectionType {
|
||||
collectionName: 'strapi_audit_logs';
|
||||
info: {
|
||||
singularName: 'audit-log';
|
||||
pluralName: 'audit-logs';
|
||||
displayName: 'Audit Log';
|
||||
};
|
||||
options: {
|
||||
draftAndPublish: false;
|
||||
timestamps: false;
|
||||
};
|
||||
pluginOptions: {
|
||||
'content-manager': {
|
||||
visible: false;
|
||||
};
|
||||
'content-type-builder': {
|
||||
visible: false;
|
||||
};
|
||||
};
|
||||
attributes: {
|
||||
action: Attribute.String & Attribute.Required;
|
||||
date: Attribute.DateTime & Attribute.Required;
|
||||
user: Attribute.Relation<'admin::audit-log', 'oneToOne', 'admin::user'>;
|
||||
payload: Attribute.JSON;
|
||||
createdAt: Attribute.DateTime;
|
||||
updatedAt: Attribute.DateTime;
|
||||
createdBy: Attribute.Relation<'admin::audit-log', 'oneToOne', 'admin::user'> &
|
||||
Attribute.Private;
|
||||
updatedBy: Attribute.Relation<'admin::audit-log', 'oneToOne', 'admin::user'> &
|
||||
Attribute.Private;
|
||||
};
|
||||
}
|
||||
|
||||
@ -1288,6 +1441,8 @@ declare module '@strapi/types' {
|
||||
'admin::api-token-permission': AdminApiTokenPermission;
|
||||
'admin::transfer-token': AdminTransferToken;
|
||||
'admin::transfer-token-permission': AdminTransferTokenPermission;
|
||||
'admin::workflow': AdminWorkflow;
|
||||
'admin::workflow-stage': AdminWorkflowStage;
|
||||
'plugin::upload.file': PluginUploadFile;
|
||||
'plugin::upload.folder': PluginUploadFolder;
|
||||
'plugin::myplugin.test': PluginMypluginTest;
|
||||
@ -1308,6 +1463,7 @@ declare module '@strapi/types' {
|
||||
'api::review.review': ApiReviewReview;
|
||||
'api::tag.tag': ApiTagTag;
|
||||
'api::temp.temp': ApiTempTemp;
|
||||
'admin::audit-log': AdminAuditLog;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -67,18 +67,19 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@juggle/resize-observer": "3.4.0",
|
||||
"@testing-library/jest-dom": "5.16.5",
|
||||
"jest-styled-components": "7.1.1",
|
||||
"whatwg-fetch": "3.6.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@reduxjs/toolkit": "1.9.7",
|
||||
"@strapi/pack-up": "workspace:*",
|
||||
"@testing-library/jest-dom": "5.16.5",
|
||||
"eslint-config-custom": "4.14.4",
|
||||
"redux": "^4.2.1",
|
||||
"tsconfig": "4.14.4"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"redux": "^4.2.1"
|
||||
"@reduxjs/toolkit": "^1.9.7",
|
||||
"@testing-library/jest-dom": "^5.16.5"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16.0.0 <=20.x.x"
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { combineReducers, createStore } from 'redux';
|
||||
import { combineReducers, configureStore } from '@reduxjs/toolkit';
|
||||
|
||||
const reducers = {
|
||||
admin_app: jest.fn(() => ({ permissions: {}, status: 'init' })),
|
||||
@ -33,7 +33,9 @@ const reducers = {
|
||||
rbacProvider: jest.fn(() => ({ allPermissions: null, collectionTypesRelatedPermissions: {} })),
|
||||
};
|
||||
|
||||
const store = createStore(combineReducers(reducers));
|
||||
const store = configureStore({
|
||||
reducer: combineReducers(reducers),
|
||||
});
|
||||
|
||||
export default {
|
||||
store,
|
||||
|
@ -1,5 +1,6 @@
|
||||
import React from 'react';
|
||||
|
||||
import { combineReducers, configureStore } from '@reduxjs/toolkit';
|
||||
import { lightTheme, ThemeProvider } from '@strapi/design-system';
|
||||
import { Table, useTableContext } from '@strapi/helper-plugin';
|
||||
import { render, screen, waitFor, within } from '@testing-library/react';
|
||||
@ -7,7 +8,6 @@ import userEvent from '@testing-library/user-event';
|
||||
import { IntlProvider } from 'react-intl';
|
||||
import { Provider } from 'react-redux';
|
||||
import { MemoryRouter } from 'react-router-dom';
|
||||
import { combineReducers, createStore } from 'redux';
|
||||
|
||||
import BulkActionButtons from '..';
|
||||
import reducers from '../../../../../../reducers';
|
||||
@ -34,8 +34,9 @@ jest.mock('../SelectedEntriesModal', () => () => <div>SelectedEntriesModal</div>
|
||||
|
||||
const user = userEvent.setup();
|
||||
|
||||
const rootReducer = combineReducers(reducers);
|
||||
const store = createStore(rootReducer, {
|
||||
const store = configureStore({
|
||||
reducer: combineReducers(reducers),
|
||||
preloadedState: {
|
||||
'content-manager_listView': {
|
||||
data: [
|
||||
{ id: 1, publishedAt: null },
|
||||
@ -47,6 +48,7 @@ const store = createStore(rootReducer, {
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
const setup = (props) => ({
|
||||
|
@ -1,10 +1,10 @@
|
||||
import React from 'react';
|
||||
|
||||
import { combineReducers, configureStore } from '@reduxjs/toolkit';
|
||||
import { lightTheme, ThemeProvider } from '@strapi/design-system';
|
||||
import { render as renderRTL, fireEvent } from '@testing-library/react';
|
||||
import { IntlProvider } from 'react-intl';
|
||||
import { Provider } from 'react-redux';
|
||||
import { combineReducers, createStore } from 'redux';
|
||||
|
||||
import reducers from '../../../../../../reducers';
|
||||
import { FieldPicker } from '../index';
|
||||
@ -42,9 +42,9 @@ const layout = {
|
||||
const render = () => ({
|
||||
...renderRTL(<FieldPicker layout={layout} />, {
|
||||
wrapper({ children }) {
|
||||
const rootReducer = combineReducers(reducers);
|
||||
|
||||
const store = createStore(rootReducer, {
|
||||
const store = configureStore({
|
||||
reducer: combineReducers(reducers),
|
||||
preloadedState: {
|
||||
'content-manager_listView': {
|
||||
contentType: {
|
||||
attributes: {
|
||||
@ -107,6 +107,7 @@ const render = () => ({
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
return (
|
||||
|
@ -1,5 +1,6 @@
|
||||
import * as React from 'react';
|
||||
|
||||
import { bindActionCreators } from '@reduxjs/toolkit';
|
||||
import {
|
||||
Main,
|
||||
ActionLayout,
|
||||
@ -39,10 +40,10 @@ import PropTypes from 'prop-types';
|
||||
import { stringify } from 'qs';
|
||||
import { useIntl } from 'react-intl';
|
||||
import { useMutation } from 'react-query';
|
||||
import { connect, useSelector } from 'react-redux';
|
||||
import { useDispatch } from 'react-redux';
|
||||
import { useHistory, useLocation, Link as ReactRouterLink } from 'react-router-dom';
|
||||
import { bindActionCreators, compose } from 'redux';
|
||||
|
||||
import { useTypedSelector } from '../../../core/store/configureStore';
|
||||
import { INJECT_COLUMN_IN_TABLE } from '../../../exposedHooks';
|
||||
import { useAdminUsers } from '../../../hooks/useAdminUsers';
|
||||
import { useEnterprise } from '../../../hooks/useEnterprise';
|
||||
@ -53,7 +54,7 @@ import { CREATOR_FIELDS } from '../../constants/attributes';
|
||||
import { useAllowedAttributes } from '../../hooks/useAllowedAttributes';
|
||||
import { getTrad, getDisplayName } from '../../utils';
|
||||
|
||||
import { getData, getDataSucceeded, onChangeListHeaders, onResetListHeaders } from './actions';
|
||||
import * as Actions from './actions';
|
||||
import { Body } from './components/Body';
|
||||
import BulkActionButtons from './components/BulkActionButtons';
|
||||
import CellContent from './components/CellContent';
|
||||
@ -66,19 +67,17 @@ const REVIEW_WORKFLOW_COLUMNS_CELL_CE = () => null;
|
||||
const REVIEW_WORKFLOW_FILTER_CE = [];
|
||||
const USER_FILTER_ATTRIBUTES = [...CREATOR_FIELDS, 'strapi_assignee'];
|
||||
|
||||
function ListView({
|
||||
canCreate,
|
||||
canDelete,
|
||||
canRead,
|
||||
canPublish,
|
||||
data,
|
||||
getData,
|
||||
getDataSucceeded,
|
||||
isLoading,
|
||||
layout,
|
||||
pagination,
|
||||
slug,
|
||||
}) {
|
||||
function ListView({ canCreate, canDelete, canRead, canPublish, layout, slug }) {
|
||||
const dispatch = useDispatch();
|
||||
const { getData, getDataSucceeded } = React.useMemo(
|
||||
() =>
|
||||
bindActionCreators(
|
||||
{ getData: Actions.getData, getDataSucceeded: Actions.getDataSucceeded },
|
||||
dispatch
|
||||
),
|
||||
[dispatch]
|
||||
);
|
||||
const { pagination, isLoading, data } = useTypedSelector(makeSelectListView());
|
||||
const { total } = pagination;
|
||||
const { contentType } = layout;
|
||||
const {
|
||||
@ -468,7 +467,7 @@ function ListView({
|
||||
});
|
||||
|
||||
const { runHookWaterfall } = useStrapiApp();
|
||||
const displayedHeaders = useSelector(selectDisplayedHeaders);
|
||||
const displayedHeaders = useTypedSelector(selectDisplayedHeaders);
|
||||
|
||||
const tableHeaders = React.useMemo(() => {
|
||||
const headers = runHookWaterfall(INJECT_COLUMN_IN_TABLE, {
|
||||
@ -869,7 +868,6 @@ ListView.propTypes = {
|
||||
canDelete: PropTypes.bool.isRequired,
|
||||
canRead: PropTypes.bool.isRequired,
|
||||
canPublish: PropTypes.bool.isRequired,
|
||||
data: PropTypes.array.isRequired,
|
||||
layout: PropTypes.exact({
|
||||
components: PropTypes.object.isRequired,
|
||||
contentType: PropTypes.shape({
|
||||
@ -884,27 +882,12 @@ ListView.propTypes = {
|
||||
settings: PropTypes.object.isRequired,
|
||||
}).isRequired,
|
||||
}).isRequired,
|
||||
isLoading: PropTypes.bool.isRequired,
|
||||
getData: PropTypes.func.isRequired,
|
||||
getDataSucceeded: PropTypes.func.isRequired,
|
||||
pagination: PropTypes.shape({ total: PropTypes.number.isRequired, pageCount: PropTypes.number })
|
||||
.isRequired,
|
||||
slug: PropTypes.string.isRequired,
|
||||
};
|
||||
|
||||
const mapStateToProps = makeSelectListView();
|
||||
|
||||
export function mapDispatchToProps(dispatch) {
|
||||
return bindActionCreators(
|
||||
{
|
||||
getData,
|
||||
getDataSucceeded,
|
||||
onChangeListHeaders,
|
||||
onResetListHeaders,
|
||||
},
|
||||
dispatch
|
||||
);
|
||||
return bindActionCreators({}, dispatch);
|
||||
}
|
||||
const withConnect = connect(mapStateToProps, mapDispatchToProps);
|
||||
// const withConnect = connect(mapStateToProps, mapDispatchToProps);
|
||||
|
||||
export default compose(withConnect)(React.memo(ListView, isEqual));
|
||||
export default React.memo(ListView, isEqual);
|
||||
|
@ -1,5 +1,6 @@
|
||||
import React from 'react';
|
||||
|
||||
import { configureStore } from '@reduxjs/toolkit';
|
||||
import { fixtures } from '@strapi/admin-test-utils';
|
||||
import { darkTheme, lightTheme } from '@strapi/design-system';
|
||||
import { render, waitFor } from '@testing-library/react';
|
||||
@ -7,7 +8,6 @@ import { IntlProvider } from 'react-intl';
|
||||
import { QueryClient, QueryClientProvider } from 'react-query';
|
||||
import { Provider } from 'react-redux';
|
||||
import { Route, MemoryRouter } from 'react-router-dom';
|
||||
import { createStore } from 'redux';
|
||||
|
||||
import { Theme } from '../../../../../../components/Theme';
|
||||
import { ThemeToggleProvider } from '../../../../../../components/ThemeToggleProvider';
|
||||
@ -71,8 +71,11 @@ const setup = ({ path, ...props } = {}) =>
|
||||
|
||||
return (
|
||||
<Provider
|
||||
store={createStore((state) => state, {
|
||||
store={configureStore({
|
||||
reducer: (state) => state,
|
||||
preloadedState: {
|
||||
admin_app: { permissions: fixtures.permissions.app },
|
||||
},
|
||||
})}
|
||||
>
|
||||
<QueryClientProvider client={client}>
|
||||
|
@ -1,5 +1,6 @@
|
||||
import React from 'react';
|
||||
|
||||
import { configureStore } from '@reduxjs/toolkit';
|
||||
import { fixtures } from '@strapi/admin-test-utils';
|
||||
import { darkTheme, lightTheme } from '@strapi/design-system';
|
||||
import { TrackingProvider, useRBAC } from '@strapi/helper-plugin';
|
||||
@ -8,7 +9,6 @@ import { IntlProvider } from 'react-intl';
|
||||
import { QueryClient, QueryClientProvider } from 'react-query';
|
||||
import { Provider } from 'react-redux';
|
||||
import { Route, MemoryRouter } from 'react-router-dom';
|
||||
import { createStore } from 'redux';
|
||||
|
||||
import { Theme } from '../../../../../../components/Theme';
|
||||
import { ThemeToggleProvider } from '../../../../../../components/ThemeToggleProvider';
|
||||
@ -78,8 +78,11 @@ const setup = ({ path, ...props } = {}) =>
|
||||
|
||||
return (
|
||||
<Provider
|
||||
store={createStore((state) => state, {
|
||||
admin_app: { permissions: { ...fixtures.permissions.app } },
|
||||
store={configureStore({
|
||||
reducer: (state) => state,
|
||||
preloadedState: {
|
||||
admin_app: { permissions: fixtures.permissions.app },
|
||||
},
|
||||
})}
|
||||
>
|
||||
<QueryClientProvider client={client}>
|
||||
|
@ -6,6 +6,7 @@
|
||||
|
||||
import React from 'react';
|
||||
|
||||
import { configureStore } from '@reduxjs/toolkit';
|
||||
import { fixtures } from '@strapi/admin-test-utils';
|
||||
import { ThemeProvider, lightTheme } from '@strapi/design-system';
|
||||
import { useRBAC } from '@strapi/helper-plugin';
|
||||
@ -15,7 +16,6 @@ import { IntlProvider } from 'react-intl';
|
||||
import { QueryClient, QueryClientProvider } from 'react-query';
|
||||
import { Provider } from 'react-redux';
|
||||
import { Router } from 'react-router-dom';
|
||||
import { createStore } from 'redux';
|
||||
|
||||
import { useAdminRoles } from '../../../../../../hooks/useAdminRoles';
|
||||
import ListPage from '../index';
|
||||
@ -46,8 +46,11 @@ const setup = (props) =>
|
||||
return (
|
||||
<QueryClientProvider client={client}>
|
||||
<Provider
|
||||
store={createStore((state) => state, {
|
||||
store={configureStore({
|
||||
reducer: (state) => state,
|
||||
preloadedState: {
|
||||
admin_app: { permissions: fixtures.permissions.app },
|
||||
},
|
||||
})}
|
||||
>
|
||||
<IntlProvider messages={{}} defaultLocale="en" textComponent="span" locale="en">
|
||||
|
@ -1,5 +1,6 @@
|
||||
import React from 'react';
|
||||
|
||||
import { configureStore } from '@reduxjs/toolkit';
|
||||
import { fixtures } from '@strapi/admin-test-utils';
|
||||
import { lightTheme, ThemeProvider } from '@strapi/design-system';
|
||||
import { TrackingProvider, useRBAC } from '@strapi/helper-plugin';
|
||||
@ -9,7 +10,6 @@ import { IntlProvider } from 'react-intl';
|
||||
import { QueryClient, QueryClientProvider } from 'react-query';
|
||||
import { Provider } from 'react-redux';
|
||||
import { Route, Router } from 'react-router-dom';
|
||||
import { createStore } from 'redux';
|
||||
|
||||
import ListPage from '../index';
|
||||
|
||||
@ -77,8 +77,11 @@ const setup = (props) =>
|
||||
|
||||
return (
|
||||
<Provider
|
||||
store={createStore((state) => state, {
|
||||
store={configureStore({
|
||||
reducer: (state) => state,
|
||||
preloadedState: {
|
||||
admin_app: { permissions: fixtures.permissions.app },
|
||||
},
|
||||
})}
|
||||
>
|
||||
<QueryClientProvider client={client}>
|
||||
|
@ -1,6 +1,7 @@
|
||||
/* eslint-disable check-file/filename-naming-convention */
|
||||
import * as React from 'react';
|
||||
|
||||
import { configureStore } from '@reduxjs/toolkit';
|
||||
import { fixtures } from '@strapi/admin-test-utils';
|
||||
import { DesignSystemProvider } from '@strapi/design-system';
|
||||
import { NotificationsProvider, RBACContext } from '@strapi/helper-plugin';
|
||||
@ -19,7 +20,6 @@ import { IntlProvider } from 'react-intl';
|
||||
import { QueryClient, QueryClientProvider, setLogger } from 'react-query';
|
||||
import { Provider } from 'react-redux';
|
||||
import { MemoryRouter, MemoryRouterProps } from 'react-router-dom';
|
||||
import { createStore } from 'redux';
|
||||
|
||||
// @ts-expect-error – no types yet.
|
||||
import ModelsContext from '../src/content-manager/contexts/ModelsContext';
|
||||
@ -49,7 +49,10 @@ const Providers = ({ children, initialEntries }: ProvidersProps) => {
|
||||
},
|
||||
});
|
||||
|
||||
const store = createStore((state = initialState) => state, initialState);
|
||||
const store = configureStore({
|
||||
preloadedState: initialState,
|
||||
reducer: (state = initialState) => state,
|
||||
});
|
||||
|
||||
// en is the default locale of the admin app.
|
||||
return (
|
||||
|
@ -1,12 +1,12 @@
|
||||
import React from 'react';
|
||||
|
||||
import { configureStore } from '@reduxjs/toolkit';
|
||||
import { fixtures } from '@strapi/admin-test-utils';
|
||||
import { renderHook, waitFor } from '@testing-library/react';
|
||||
import { rest } from 'msw';
|
||||
import { setupServer } from 'msw/node';
|
||||
import { QueryClient, QueryClientProvider } from 'react-query';
|
||||
import { Provider } from 'react-redux';
|
||||
import { createStore } from 'redux';
|
||||
|
||||
import { useLicenseLimits } from '../useLicenseLimits';
|
||||
|
||||
@ -42,8 +42,11 @@ const setup = (...args) =>
|
||||
|
||||
return (
|
||||
<Provider
|
||||
store={createStore((state) => state, {
|
||||
store={configureStore({
|
||||
reducer: (state) => state,
|
||||
preloadedState: {
|
||||
admin_app: { permissions: fixtures.permissions.app },
|
||||
},
|
||||
})}
|
||||
>
|
||||
<QueryClientProvider client={client}>{children}</QueryClientProvider>
|
||||
|
@ -1,12 +1,12 @@
|
||||
import React from 'react';
|
||||
|
||||
import { configureStore } from '@reduxjs/toolkit';
|
||||
import { fixtures } from '@strapi/admin-test-utils';
|
||||
import { lightTheme, ThemeProvider } from '@strapi/design-system';
|
||||
import { render } from '@testing-library/react';
|
||||
import { IntlProvider } from 'react-intl';
|
||||
import { QueryClient, QueryClientProvider } from 'react-query';
|
||||
import { Provider } from 'react-redux';
|
||||
import { createStore } from 'redux';
|
||||
|
||||
import { AdminSeatInfoEE } from '..';
|
||||
import { useLicenseLimits } from '../../../../../../../hooks/useLicenseLimits';
|
||||
@ -54,8 +54,11 @@ const setup = (props) =>
|
||||
return (
|
||||
<QueryClientProvider client={client}>
|
||||
<Provider
|
||||
store={createStore((state) => state, {
|
||||
store={configureStore({
|
||||
reducer: (state) => state,
|
||||
preloadedState: {
|
||||
admin_app: { permissions: fixtures.permissions.app },
|
||||
},
|
||||
})}
|
||||
>
|
||||
<ThemeProvider theme={lightTheme}>
|
||||
|
@ -1,5 +1,6 @@
|
||||
import React from 'react';
|
||||
|
||||
import { configureStore } from '@reduxjs/toolkit';
|
||||
import { fixtures } from '@strapi/admin-test-utils';
|
||||
import { lightTheme, ThemeProvider } from '@strapi/design-system';
|
||||
import { fireEvent, render, screen, waitFor, within } from '@testing-library/react';
|
||||
@ -9,7 +10,6 @@ import { IntlProvider } from 'react-intl';
|
||||
import { QueryClient, QueryClientProvider } from 'react-query';
|
||||
import { Provider } from 'react-redux';
|
||||
import { Router } from 'react-router-dom';
|
||||
import { createStore } from 'redux';
|
||||
|
||||
import useAuditLogsData from '../hooks/useAuditLogsData';
|
||||
import ListView from '../index';
|
||||
@ -54,7 +54,9 @@ const setup = (props) => ({
|
||||
|
||||
return (
|
||||
<Provider
|
||||
store={createStore((state) => state, {
|
||||
store={configureStore({
|
||||
reducer: (state) => state,
|
||||
preloadedState: {
|
||||
admin_app: {
|
||||
permissions: {
|
||||
...fixtures.permissions.app,
|
||||
@ -67,6 +69,7 @@ const setup = (props) => ({
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
})}
|
||||
>
|
||||
<QueryClientProvider client={client}>
|
||||
|
@ -1,5 +1,6 @@
|
||||
import React from 'react';
|
||||
|
||||
import { configureStore } from '@reduxjs/toolkit';
|
||||
import { lightTheme, ThemeProvider } from '@strapi/design-system';
|
||||
import { render, waitFor } from '@testing-library/react';
|
||||
import userEvent from '@testing-library/user-event';
|
||||
@ -8,7 +9,6 @@ import { DndProvider } from 'react-dnd';
|
||||
import { HTML5Backend } from 'react-dnd-html5-backend';
|
||||
import { IntlProvider } from 'react-intl';
|
||||
import { Provider } from 'react-redux';
|
||||
import { createStore } from 'redux';
|
||||
|
||||
import { REDUX_NAMESPACE, STAGE_COLOR_DEFAULT } from '../../../../constants';
|
||||
import { reducer } from '../../../../reducer';
|
||||
@ -128,7 +128,9 @@ const ComponentFixture = ({
|
||||
const setup = ({ roles, ...props } = {}) => ({
|
||||
...render(<ComponentFixture {...props} />, {
|
||||
wrapper({ children }) {
|
||||
const store = createStore(reducer, {
|
||||
const store = configureStore({
|
||||
reducer,
|
||||
preloadedState: {
|
||||
[REDUX_NAMESPACE]: {
|
||||
serverState: {
|
||||
contentTypes: CONTENT_TYPES_FIXTURE,
|
||||
@ -143,6 +145,7 @@ const setup = ({ roles, ...props } = {}) => ({
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
return (
|
||||
|
@ -1,5 +1,6 @@
|
||||
import React from 'react';
|
||||
|
||||
import { configureStore } from '@reduxjs/toolkit';
|
||||
import { ThemeProvider, lightTheme } from '@strapi/design-system';
|
||||
import { render, waitFor } from '@testing-library/react';
|
||||
import userEvent from '@testing-library/user-event';
|
||||
@ -8,7 +9,6 @@ import { DndProvider } from 'react-dnd';
|
||||
import { HTML5Backend } from 'react-dnd-html5-backend';
|
||||
import { IntlProvider } from 'react-intl';
|
||||
import { Provider } from 'react-redux';
|
||||
import { createStore } from 'redux';
|
||||
|
||||
import { REDUX_NAMESPACE } from '../../../constants';
|
||||
import { reducer } from '../../../reducer';
|
||||
@ -92,7 +92,9 @@ const withMarkup = (query) => (text) =>
|
||||
const setup = ({ collectionTypes, singleTypes, currentWorkflow, ...props } = {}) => ({
|
||||
...render(<ComponentFixture currentWorkflow={currentWorkflow} {...props} />, {
|
||||
wrapper({ children }) {
|
||||
const store = createStore(reducer, {
|
||||
const store = configureStore({
|
||||
reducer,
|
||||
preloadedState: {
|
||||
[REDUX_NAMESPACE]: {
|
||||
serverState: {
|
||||
contentTypes: {
|
||||
@ -110,6 +112,7 @@ const setup = ({ collectionTypes, singleTypes, currentWorkflow, ...props } = {})
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
return (
|
||||
|
@ -1,5 +1,6 @@
|
||||
import React from 'react';
|
||||
|
||||
import { configureStore } from '@reduxjs/toolkit';
|
||||
import { fixtures } from '@strapi/admin-test-utils';
|
||||
import { lightTheme, ThemeProvider } from '@strapi/design-system';
|
||||
import { useRBAC } from '@strapi/helper-plugin';
|
||||
@ -7,7 +8,6 @@ import { fireEvent, getByLabelText, render, waitFor } from '@testing-library/rea
|
||||
import { IntlProvider } from 'react-intl';
|
||||
import { QueryClient, QueryClientProvider } from 'react-query';
|
||||
import { Provider } from 'react-redux';
|
||||
import { createStore } from 'redux';
|
||||
|
||||
import { SingleSignOn } from '../index';
|
||||
|
||||
@ -33,7 +33,9 @@ const setup = (props) =>
|
||||
return (
|
||||
<QueryClientProvider client={client}>
|
||||
<Provider
|
||||
store={createStore((state) => state, {
|
||||
store={configureStore({
|
||||
reducer: (state) => state,
|
||||
preloadedState: {
|
||||
admin_app: {
|
||||
permissions: {
|
||||
...fixtures.permissions.app,
|
||||
@ -47,6 +49,7 @@ const setup = (props) =>
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
})}
|
||||
>
|
||||
<ThemeProvider theme={lightTheme}>
|
||||
|
@ -117,7 +117,6 @@
|
||||
"react-router-dom": "5.3.4",
|
||||
"react-select": "5.7.0",
|
||||
"react-window": "1.8.8",
|
||||
"redux": "^4.2.1",
|
||||
"reselect": "4.1.7",
|
||||
"rimraf": "3.0.2",
|
||||
"sanitize-html": "2.11.0",
|
||||
|
@ -17,9 +17,8 @@ import set from 'lodash/set';
|
||||
import size from 'lodash/size';
|
||||
import PropTypes from 'prop-types';
|
||||
import { useIntl } from 'react-intl';
|
||||
import { connect, useDispatch } from 'react-redux';
|
||||
import { useSelector, useDispatch } from 'react-redux';
|
||||
import { Redirect, useLocation, useRouteMatch } from 'react-router-dom';
|
||||
import { compose } from 'redux';
|
||||
|
||||
import DataManagerContext from '../../contexts/DataManagerContext';
|
||||
import useFormModalNavigation from '../../hooks/useFormModalNavigation';
|
||||
@ -58,8 +57,9 @@ import retrieveSpecificInfoFromComponents from './utils/retrieveSpecificInfoFrom
|
||||
import serverRestartWatcher from './utils/serverRestartWatcher';
|
||||
import validateSchema from './utils/validateSchema';
|
||||
|
||||
const DataManagerProvider = ({
|
||||
children,
|
||||
const DataManagerProvider = ({ children }) => {
|
||||
const dispatch = useDispatch();
|
||||
const {
|
||||
components,
|
||||
contentTypes,
|
||||
isLoading,
|
||||
@ -67,8 +67,7 @@ const DataManagerProvider = ({
|
||||
initialData,
|
||||
modifiedData,
|
||||
reservedNames,
|
||||
}) => {
|
||||
const dispatch = useDispatch();
|
||||
} = useSelector(makeSelectDataManagerProvider());
|
||||
const toggleNotification = useNotification();
|
||||
const { lockAppWithAutoreload, unlockAppWithAutoreload } = useAutoReloadOverlayBlocker();
|
||||
const { setCurrentStep } = useGuidedTour();
|
||||
@ -619,22 +618,8 @@ const DataManagerProvider = ({
|
||||
);
|
||||
};
|
||||
|
||||
DataManagerProvider.defaultProps = {
|
||||
components: {},
|
||||
};
|
||||
|
||||
DataManagerProvider.propTypes = {
|
||||
children: PropTypes.node.isRequired,
|
||||
components: PropTypes.object,
|
||||
contentTypes: PropTypes.object.isRequired,
|
||||
isLoading: PropTypes.bool.isRequired,
|
||||
isLoadingForDataToBeSet: PropTypes.bool.isRequired,
|
||||
initialData: PropTypes.object.isRequired,
|
||||
modifiedData: PropTypes.object.isRequired,
|
||||
reservedNames: PropTypes.object.isRequired,
|
||||
};
|
||||
|
||||
const mapStateToProps = makeSelectDataManagerProvider();
|
||||
const withConnect = connect(mapStateToProps, null);
|
||||
|
||||
export default compose(withConnect)(memo(DataManagerProvider));
|
||||
export default memo(DataManagerProvider);
|
||||
|
@ -44,7 +44,6 @@
|
||||
"react-helmet": "^6.1.0",
|
||||
"react-intl": "6.4.1",
|
||||
"react-redux": "8.1.1",
|
||||
"redux": "^4.2.1",
|
||||
"reselect": "4.1.7",
|
||||
"yup": "0.32.9"
|
||||
},
|
||||
|
@ -1,12 +1,12 @@
|
||||
import React from 'react';
|
||||
|
||||
import { combineReducers, configureStore } from '@reduxjs/toolkit';
|
||||
import { lightTheme, ThemeProvider } from '@strapi/design-system';
|
||||
import { render as renderTL, waitFor } from '@testing-library/react';
|
||||
import userEvent from '@testing-library/user-event';
|
||||
import { IntlProvider } from 'react-intl';
|
||||
import { QueryClient, QueryClientProvider } from 'react-query';
|
||||
import { Provider } from 'react-redux';
|
||||
import { combineReducers, createStore } from 'redux';
|
||||
|
||||
import LocaleSelect from '..';
|
||||
import reducers from '../../../hooks/reducers';
|
||||
@ -58,7 +58,9 @@ const queryClient = new QueryClient({
|
||||
},
|
||||
});
|
||||
|
||||
const store = createStore(combineReducers(reducers));
|
||||
const store = configureStore({
|
||||
reducer: combineReducers(reducers),
|
||||
});
|
||||
|
||||
const render = (props) => ({
|
||||
user: userEvent.setup(),
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* eslint-disable react/prop-types */
|
||||
|
||||
import React from 'react';
|
||||
// import { createStore, combineReducers } from 'redux';
|
||||
// import { configureStore, combineReducers } from '@reduxjs/toolkit';
|
||||
// import { Provider } from 'react-redux';
|
||||
// import { request, useRBAC } from '@strapi/helper-plugin';
|
||||
// import { fireEvent, render, screen, within, waitFor } from '@testing-library/react';
|
||||
@ -17,7 +17,10 @@ import React from 'react';
|
||||
// const queryClient = new QueryClient();
|
||||
|
||||
// const rootReducer = combineReducers(i18nReducers);
|
||||
// const store = createStore(rootReducer, { [`${pluginId}_locales`]: initialState });
|
||||
// const store = configureStore({
|
||||
// reducer: rootReducer,
|
||||
// preloadedState: { [`${pluginId}_locales`]: initialState },
|
||||
// });
|
||||
|
||||
// return (
|
||||
// <Provider store={store}>
|
||||
|
@ -30,6 +30,7 @@
|
||||
"test:unit:watch": "run -T jest --watch"
|
||||
},
|
||||
"dependencies": {
|
||||
"@reduxjs/toolkit": "1.9.7",
|
||||
"@strapi/design-system": "1.12.2",
|
||||
"@strapi/helper-plugin": "4.14.4",
|
||||
"@strapi/icons": "1.12.2",
|
||||
@ -42,7 +43,6 @@
|
||||
"react-intl": "6.4.1",
|
||||
"react-query": "3.39.3",
|
||||
"react-redux": "8.1.1",
|
||||
"redux": "^4.2.1",
|
||||
"yup": "0.32.9"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
48
yarn.lock
48
yarn.lock
@ -6303,6 +6303,26 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@reduxjs/toolkit@npm:1.9.7":
|
||||
version: 1.9.7
|
||||
resolution: "@reduxjs/toolkit@npm:1.9.7"
|
||||
dependencies:
|
||||
immer: ^9.0.21
|
||||
redux: ^4.2.1
|
||||
redux-thunk: ^2.4.2
|
||||
reselect: ^4.1.8
|
||||
peerDependencies:
|
||||
react: ^16.9.0 || ^17.0.0 || ^18
|
||||
react-redux: ^7.2.1 || ^8.0.2
|
||||
peerDependenciesMeta:
|
||||
react:
|
||||
optional: true
|
||||
react-redux:
|
||||
optional: true
|
||||
checksum: ac25dec73a5d2df9fc7fbe98c14ccc73919e5ee1d6f251db0d2ec8f90273f92ef39c26716704bf56b5a40189f72d94b4526dc3a8c7ac3986f5daf44442bcc364
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@rollup/pluginutils@npm:^5.0.2":
|
||||
version: 5.0.2
|
||||
resolution: "@rollup/pluginutils@npm:5.0.2"
|
||||
@ -7399,15 +7419,16 @@ __metadata:
|
||||
resolution: "@strapi/admin-test-utils@workspace:packages/admin-test-utils"
|
||||
dependencies:
|
||||
"@juggle/resize-observer": 3.4.0
|
||||
"@reduxjs/toolkit": 1.9.7
|
||||
"@strapi/pack-up": "workspace:*"
|
||||
"@testing-library/jest-dom": 5.16.5
|
||||
eslint-config-custom: 4.14.4
|
||||
jest-styled-components: 7.1.1
|
||||
redux: ^4.2.1
|
||||
tsconfig: 4.14.4
|
||||
whatwg-fetch: 3.6.2
|
||||
peerDependencies:
|
||||
redux: ^4.2.1
|
||||
"@reduxjs/toolkit": ^1.9.7
|
||||
"@testing-library/jest-dom": ^5.16.5
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
@ -7418,6 +7439,7 @@ __metadata:
|
||||
"@casl/ability": 6.5.0
|
||||
"@pmmmwh/react-refresh-webpack-plugin": 0.5.10
|
||||
"@radix-ui/react-toolbar": 1.0.4
|
||||
"@reduxjs/toolkit": 1.9.7
|
||||
"@strapi/admin-test-utils": 4.14.4
|
||||
"@strapi/data-transfer": 4.14.4
|
||||
"@strapi/design-system": 1.12.2
|
||||
@ -7497,7 +7519,6 @@ __metadata:
|
||||
react-router-dom: 5.3.4
|
||||
react-select: 5.7.0
|
||||
react-window: 1.8.8
|
||||
redux: ^4.2.1
|
||||
reselect: 4.1.7
|
||||
rimraf: 3.0.2
|
||||
sanitize-html: 2.11.0
|
||||
@ -7877,7 +7898,6 @@ __metadata:
|
||||
react-intl: 6.4.1
|
||||
react-redux: 8.1.1
|
||||
react-router-dom: 5.3.4
|
||||
redux: ^4.2.1
|
||||
reselect: 4.1.7
|
||||
styled-components: 5.3.3
|
||||
yup: 0.32.9
|
||||
@ -8003,6 +8023,7 @@ __metadata:
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@strapi/plugin-i18n@workspace:packages/plugins/i18n"
|
||||
dependencies:
|
||||
"@reduxjs/toolkit": 1.9.7
|
||||
"@strapi/design-system": 1.12.2
|
||||
"@strapi/helper-plugin": 4.14.4
|
||||
"@strapi/icons": 1.12.2
|
||||
@ -8020,7 +8041,6 @@ __metadata:
|
||||
react-query: 3.39.3
|
||||
react-redux: 8.1.1
|
||||
react-router-dom: 5.3.4
|
||||
redux: ^4.2.1
|
||||
styled-components: 5.3.3
|
||||
yup: 0.32.9
|
||||
peerDependencies:
|
||||
@ -19164,7 +19184,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"immer@npm:^9.0.6":
|
||||
"immer@npm:^9.0.21, immer@npm:^9.0.6":
|
||||
version: 9.0.21
|
||||
resolution: "immer@npm:9.0.21"
|
||||
checksum: 70e3c274165995352f6936695f0ef4723c52c92c92dd0e9afdfe008175af39fa28e76aafb3a2ca9d57d1fb8f796efc4dd1e1cc36f18d33fa5b74f3dfb0375432
|
||||
@ -27514,6 +27534,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"redux-thunk@npm:^2.4.2":
|
||||
version: 2.4.2
|
||||
resolution: "redux-thunk@npm:2.4.2"
|
||||
peerDependencies:
|
||||
redux: ^4
|
||||
checksum: c7f757f6c383b8ec26152c113e20087818d18ed3edf438aaad43539e9a6b77b427ade755c9595c4a163b6ad3063adf3497e5fe6a36c68884eb1f1cfb6f049a5c
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"redux@npm:^4.1.2":
|
||||
version: 4.2.0
|
||||
resolution: "redux@npm:4.2.0"
|
||||
@ -27867,6 +27896,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"reselect@npm:^4.1.8":
|
||||
version: 4.1.8
|
||||
resolution: "reselect@npm:4.1.8"
|
||||
checksum: a4ac87cedab198769a29be92bc221c32da76cfdad6911eda67b4d3e7136dca86208c3b210e31632eae31ebd2cded18596f0dd230d3ccc9e978df22f233b5583e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"resolve-alpn@npm:^1.0.0":
|
||||
version: 1.2.1
|
||||
resolution: "resolve-alpn@npm:1.2.1"
|
||||
|
Loading…
x
Reference in New Issue
Block a user