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:
|
redux:
|
||||||
patterns:
|
patterns:
|
||||||
- 'redux'
|
- '@reduxjs/toolkit'
|
||||||
- 'react-redux'
|
- 'react-redux'
|
||||||
|
|
||||||
richtext-editor:
|
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 {
|
export interface PluginUploadFile extends Schema.CollectionType {
|
||||||
collectionName: 'files';
|
collectionName: 'files';
|
||||||
info: {
|
info: {
|
||||||
@ -428,6 +490,8 @@ export interface PluginMypluginTest extends Schema.CollectionType {
|
|||||||
'plugin::myplugin.test'
|
'plugin::myplugin.test'
|
||||||
>;
|
>;
|
||||||
locale: Attribute.String;
|
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;
|
Attribute.Private;
|
||||||
updatedBy: Attribute.Relation<'plugin::users-permissions.user', 'oneToOne', 'admin::user'> &
|
updatedBy: Attribute.Relation<'plugin::users-permissions.user', 'oneToOne', 'admin::user'> &
|
||||||
Attribute.Private;
|
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;
|
Attribute.Private;
|
||||||
updatedBy: Attribute.Relation<'api::address.address', 'oneToOne', 'admin::user'> &
|
updatedBy: Attribute.Relation<'api::address.address', 'oneToOne', 'admin::user'> &
|
||||||
Attribute.Private;
|
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'
|
'api::category.category'
|
||||||
>;
|
>;
|
||||||
locale: Attribute.String;
|
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;
|
Attribute.Private;
|
||||||
localizations: Attribute.Relation<'api::country.country', 'oneToMany', 'api::country.country'>;
|
localizations: Attribute.Relation<'api::country.country', 'oneToMany', 'api::country.country'>;
|
||||||
locale: Attribute.String;
|
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'
|
'api::homepage.homepage'
|
||||||
>;
|
>;
|
||||||
locale: Attribute.String;
|
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;
|
Attribute.Private;
|
||||||
updatedBy: Attribute.Relation<'api::kitchensink.kitchensink', 'oneToOne', 'admin::user'> &
|
updatedBy: Attribute.Relation<'api::kitchensink.kitchensink', 'oneToOne', 'admin::user'> &
|
||||||
Attribute.Private;
|
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;
|
updatedAt: Attribute.DateTime;
|
||||||
createdBy: Attribute.Relation<'api::like.like', 'oneToOne', 'admin::user'> & Attribute.Private;
|
createdBy: Attribute.Relation<'api::like.like', 'oneToOne', 'admin::user'> & Attribute.Private;
|
||||||
updatedBy: 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;
|
updatedAt: Attribute.DateTime;
|
||||||
createdBy: Attribute.Relation<'api::menu.menu', 'oneToOne', 'admin::user'> & Attribute.Private;
|
createdBy: Attribute.Relation<'api::menu.menu', 'oneToOne', 'admin::user'> & Attribute.Private;
|
||||||
updatedBy: 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;
|
Attribute.Private;
|
||||||
updatedBy: Attribute.Relation<'api::menusection.menusection', 'oneToOne', 'admin::user'> &
|
updatedBy: Attribute.Relation<'api::menusection.menusection', 'oneToOne', 'admin::user'> &
|
||||||
Attribute.Private;
|
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'
|
'api::relation-locale.relation-locale'
|
||||||
>;
|
>;
|
||||||
locale: Attribute.String;
|
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'
|
'api::restaurant.restaurant'
|
||||||
>;
|
>;
|
||||||
locale: Attribute.String;
|
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;
|
Attribute.Private;
|
||||||
updatedBy: Attribute.Relation<'api::review.review', 'oneToOne', 'admin::user'> &
|
updatedBy: Attribute.Relation<'api::review.review', 'oneToOne', 'admin::user'> &
|
||||||
Attribute.Private;
|
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;
|
publishedAt: Attribute.DateTime;
|
||||||
createdBy: Attribute.Relation<'api::tag.tag', 'oneToOne', 'admin::user'> & Attribute.Private;
|
createdBy: Attribute.Relation<'api::tag.tag', 'oneToOne', 'admin::user'> & Attribute.Private;
|
||||||
updatedBy: 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;
|
publishedAt: Attribute.DateTime;
|
||||||
createdBy: Attribute.Relation<'api::temp.temp', 'oneToOne', 'admin::user'> & Attribute.Private;
|
createdBy: Attribute.Relation<'api::temp.temp', 'oneToOne', 'admin::user'> & Attribute.Private;
|
||||||
updatedBy: 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::api-token-permission': AdminApiTokenPermission;
|
||||||
'admin::transfer-token': AdminTransferToken;
|
'admin::transfer-token': AdminTransferToken;
|
||||||
'admin::transfer-token-permission': AdminTransferTokenPermission;
|
'admin::transfer-token-permission': AdminTransferTokenPermission;
|
||||||
|
'admin::workflow': AdminWorkflow;
|
||||||
|
'admin::workflow-stage': AdminWorkflowStage;
|
||||||
'plugin::upload.file': PluginUploadFile;
|
'plugin::upload.file': PluginUploadFile;
|
||||||
'plugin::upload.folder': PluginUploadFolder;
|
'plugin::upload.folder': PluginUploadFolder;
|
||||||
'plugin::myplugin.test': PluginMypluginTest;
|
'plugin::myplugin.test': PluginMypluginTest;
|
||||||
@ -1308,6 +1463,7 @@ declare module '@strapi/types' {
|
|||||||
'api::review.review': ApiReviewReview;
|
'api::review.review': ApiReviewReview;
|
||||||
'api::tag.tag': ApiTagTag;
|
'api::tag.tag': ApiTagTag;
|
||||||
'api::temp.temp': ApiTempTemp;
|
'api::temp.temp': ApiTempTemp;
|
||||||
|
'admin::audit-log': AdminAuditLog;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -67,18 +67,19 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@juggle/resize-observer": "3.4.0",
|
"@juggle/resize-observer": "3.4.0",
|
||||||
"@testing-library/jest-dom": "5.16.5",
|
|
||||||
"jest-styled-components": "7.1.1",
|
"jest-styled-components": "7.1.1",
|
||||||
"whatwg-fetch": "3.6.2"
|
"whatwg-fetch": "3.6.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@reduxjs/toolkit": "1.9.7",
|
||||||
"@strapi/pack-up": "workspace:*",
|
"@strapi/pack-up": "workspace:*",
|
||||||
|
"@testing-library/jest-dom": "5.16.5",
|
||||||
"eslint-config-custom": "4.14.4",
|
"eslint-config-custom": "4.14.4",
|
||||||
"redux": "^4.2.1",
|
|
||||||
"tsconfig": "4.14.4"
|
"tsconfig": "4.14.4"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"redux": "^4.2.1"
|
"@reduxjs/toolkit": "^1.9.7",
|
||||||
|
"@testing-library/jest-dom": "^5.16.5"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=16.0.0 <=20.x.x"
|
"node": ">=16.0.0 <=20.x.x"
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { combineReducers, createStore } from 'redux';
|
import { combineReducers, configureStore } from '@reduxjs/toolkit';
|
||||||
|
|
||||||
const reducers = {
|
const reducers = {
|
||||||
admin_app: jest.fn(() => ({ permissions: {}, status: 'init' })),
|
admin_app: jest.fn(() => ({ permissions: {}, status: 'init' })),
|
||||||
@ -33,7 +33,9 @@ const reducers = {
|
|||||||
rbacProvider: jest.fn(() => ({ allPermissions: null, collectionTypesRelatedPermissions: {} })),
|
rbacProvider: jest.fn(() => ({ allPermissions: null, collectionTypesRelatedPermissions: {} })),
|
||||||
};
|
};
|
||||||
|
|
||||||
const store = createStore(combineReducers(reducers));
|
const store = configureStore({
|
||||||
|
reducer: combineReducers(reducers),
|
||||||
|
});
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
store,
|
store,
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
|
import { combineReducers, configureStore } from '@reduxjs/toolkit';
|
||||||
import { lightTheme, ThemeProvider } from '@strapi/design-system';
|
import { lightTheme, ThemeProvider } from '@strapi/design-system';
|
||||||
import { Table, useTableContext } from '@strapi/helper-plugin';
|
import { Table, useTableContext } from '@strapi/helper-plugin';
|
||||||
import { render, screen, waitFor, within } from '@testing-library/react';
|
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 { IntlProvider } from 'react-intl';
|
||||||
import { Provider } from 'react-redux';
|
import { Provider } from 'react-redux';
|
||||||
import { MemoryRouter } from 'react-router-dom';
|
import { MemoryRouter } from 'react-router-dom';
|
||||||
import { combineReducers, createStore } from 'redux';
|
|
||||||
|
|
||||||
import BulkActionButtons from '..';
|
import BulkActionButtons from '..';
|
||||||
import reducers from '../../../../../../reducers';
|
import reducers from '../../../../../../reducers';
|
||||||
@ -34,8 +34,9 @@ jest.mock('../SelectedEntriesModal', () => () => <div>SelectedEntriesModal</div>
|
|||||||
|
|
||||||
const user = userEvent.setup();
|
const user = userEvent.setup();
|
||||||
|
|
||||||
const rootReducer = combineReducers(reducers);
|
const store = configureStore({
|
||||||
const store = createStore(rootReducer, {
|
reducer: combineReducers(reducers),
|
||||||
|
preloadedState: {
|
||||||
'content-manager_listView': {
|
'content-manager_listView': {
|
||||||
data: [
|
data: [
|
||||||
{ id: 1, publishedAt: null },
|
{ id: 1, publishedAt: null },
|
||||||
@ -47,6 +48,7 @@ const store = createStore(rootReducer, {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const setup = (props) => ({
|
const setup = (props) => ({
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
|
import { combineReducers, configureStore } from '@reduxjs/toolkit';
|
||||||
import { lightTheme, ThemeProvider } from '@strapi/design-system';
|
import { lightTheme, ThemeProvider } from '@strapi/design-system';
|
||||||
import { render as renderRTL, fireEvent } from '@testing-library/react';
|
import { render as renderRTL, fireEvent } from '@testing-library/react';
|
||||||
import { IntlProvider } from 'react-intl';
|
import { IntlProvider } from 'react-intl';
|
||||||
import { Provider } from 'react-redux';
|
import { Provider } from 'react-redux';
|
||||||
import { combineReducers, createStore } from 'redux';
|
|
||||||
|
|
||||||
import reducers from '../../../../../../reducers';
|
import reducers from '../../../../../../reducers';
|
||||||
import { FieldPicker } from '../index';
|
import { FieldPicker } from '../index';
|
||||||
@ -42,9 +42,9 @@ const layout = {
|
|||||||
const render = () => ({
|
const render = () => ({
|
||||||
...renderRTL(<FieldPicker layout={layout} />, {
|
...renderRTL(<FieldPicker layout={layout} />, {
|
||||||
wrapper({ children }) {
|
wrapper({ children }) {
|
||||||
const rootReducer = combineReducers(reducers);
|
const store = configureStore({
|
||||||
|
reducer: combineReducers(reducers),
|
||||||
const store = createStore(rootReducer, {
|
preloadedState: {
|
||||||
'content-manager_listView': {
|
'content-manager_listView': {
|
||||||
contentType: {
|
contentType: {
|
||||||
attributes: {
|
attributes: {
|
||||||
@ -107,6 +107,7 @@ const render = () => ({
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
|
|
||||||
|
import { bindActionCreators } from '@reduxjs/toolkit';
|
||||||
import {
|
import {
|
||||||
Main,
|
Main,
|
||||||
ActionLayout,
|
ActionLayout,
|
||||||
@ -39,10 +40,10 @@ import PropTypes from 'prop-types';
|
|||||||
import { stringify } from 'qs';
|
import { stringify } from 'qs';
|
||||||
import { useIntl } from 'react-intl';
|
import { useIntl } from 'react-intl';
|
||||||
import { useMutation } from 'react-query';
|
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 { 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 { INJECT_COLUMN_IN_TABLE } from '../../../exposedHooks';
|
||||||
import { useAdminUsers } from '../../../hooks/useAdminUsers';
|
import { useAdminUsers } from '../../../hooks/useAdminUsers';
|
||||||
import { useEnterprise } from '../../../hooks/useEnterprise';
|
import { useEnterprise } from '../../../hooks/useEnterprise';
|
||||||
@ -53,7 +54,7 @@ import { CREATOR_FIELDS } from '../../constants/attributes';
|
|||||||
import { useAllowedAttributes } from '../../hooks/useAllowedAttributes';
|
import { useAllowedAttributes } from '../../hooks/useAllowedAttributes';
|
||||||
import { getTrad, getDisplayName } from '../../utils';
|
import { getTrad, getDisplayName } from '../../utils';
|
||||||
|
|
||||||
import { getData, getDataSucceeded, onChangeListHeaders, onResetListHeaders } from './actions';
|
import * as Actions from './actions';
|
||||||
import { Body } from './components/Body';
|
import { Body } from './components/Body';
|
||||||
import BulkActionButtons from './components/BulkActionButtons';
|
import BulkActionButtons from './components/BulkActionButtons';
|
||||||
import CellContent from './components/CellContent';
|
import CellContent from './components/CellContent';
|
||||||
@ -66,19 +67,17 @@ const REVIEW_WORKFLOW_COLUMNS_CELL_CE = () => null;
|
|||||||
const REVIEW_WORKFLOW_FILTER_CE = [];
|
const REVIEW_WORKFLOW_FILTER_CE = [];
|
||||||
const USER_FILTER_ATTRIBUTES = [...CREATOR_FIELDS, 'strapi_assignee'];
|
const USER_FILTER_ATTRIBUTES = [...CREATOR_FIELDS, 'strapi_assignee'];
|
||||||
|
|
||||||
function ListView({
|
function ListView({ canCreate, canDelete, canRead, canPublish, layout, slug }) {
|
||||||
canCreate,
|
const dispatch = useDispatch();
|
||||||
canDelete,
|
const { getData, getDataSucceeded } = React.useMemo(
|
||||||
canRead,
|
() =>
|
||||||
canPublish,
|
bindActionCreators(
|
||||||
data,
|
{ getData: Actions.getData, getDataSucceeded: Actions.getDataSucceeded },
|
||||||
getData,
|
dispatch
|
||||||
getDataSucceeded,
|
),
|
||||||
isLoading,
|
[dispatch]
|
||||||
layout,
|
);
|
||||||
pagination,
|
const { pagination, isLoading, data } = useTypedSelector(makeSelectListView());
|
||||||
slug,
|
|
||||||
}) {
|
|
||||||
const { total } = pagination;
|
const { total } = pagination;
|
||||||
const { contentType } = layout;
|
const { contentType } = layout;
|
||||||
const {
|
const {
|
||||||
@ -468,7 +467,7 @@ function ListView({
|
|||||||
});
|
});
|
||||||
|
|
||||||
const { runHookWaterfall } = useStrapiApp();
|
const { runHookWaterfall } = useStrapiApp();
|
||||||
const displayedHeaders = useSelector(selectDisplayedHeaders);
|
const displayedHeaders = useTypedSelector(selectDisplayedHeaders);
|
||||||
|
|
||||||
const tableHeaders = React.useMemo(() => {
|
const tableHeaders = React.useMemo(() => {
|
||||||
const headers = runHookWaterfall(INJECT_COLUMN_IN_TABLE, {
|
const headers = runHookWaterfall(INJECT_COLUMN_IN_TABLE, {
|
||||||
@ -869,7 +868,6 @@ ListView.propTypes = {
|
|||||||
canDelete: PropTypes.bool.isRequired,
|
canDelete: PropTypes.bool.isRequired,
|
||||||
canRead: PropTypes.bool.isRequired,
|
canRead: PropTypes.bool.isRequired,
|
||||||
canPublish: PropTypes.bool.isRequired,
|
canPublish: PropTypes.bool.isRequired,
|
||||||
data: PropTypes.array.isRequired,
|
|
||||||
layout: PropTypes.exact({
|
layout: PropTypes.exact({
|
||||||
components: PropTypes.object.isRequired,
|
components: PropTypes.object.isRequired,
|
||||||
contentType: PropTypes.shape({
|
contentType: PropTypes.shape({
|
||||||
@ -884,27 +882,12 @@ ListView.propTypes = {
|
|||||||
settings: PropTypes.object.isRequired,
|
settings: PropTypes.object.isRequired,
|
||||||
}).isRequired,
|
}).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,
|
slug: PropTypes.string.isRequired,
|
||||||
};
|
};
|
||||||
|
|
||||||
const mapStateToProps = makeSelectListView();
|
|
||||||
|
|
||||||
export function mapDispatchToProps(dispatch) {
|
export function mapDispatchToProps(dispatch) {
|
||||||
return bindActionCreators(
|
return bindActionCreators({}, dispatch);
|
||||||
{
|
|
||||||
getData,
|
|
||||||
getDataSucceeded,
|
|
||||||
onChangeListHeaders,
|
|
||||||
onResetListHeaders,
|
|
||||||
},
|
|
||||||
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 React from 'react';
|
||||||
|
|
||||||
|
import { configureStore } from '@reduxjs/toolkit';
|
||||||
import { fixtures } from '@strapi/admin-test-utils';
|
import { fixtures } from '@strapi/admin-test-utils';
|
||||||
import { darkTheme, lightTheme } from '@strapi/design-system';
|
import { darkTheme, lightTheme } from '@strapi/design-system';
|
||||||
import { render, waitFor } from '@testing-library/react';
|
import { render, waitFor } from '@testing-library/react';
|
||||||
@ -7,7 +8,6 @@ import { IntlProvider } from 'react-intl';
|
|||||||
import { QueryClient, QueryClientProvider } from 'react-query';
|
import { QueryClient, QueryClientProvider } from 'react-query';
|
||||||
import { Provider } from 'react-redux';
|
import { Provider } from 'react-redux';
|
||||||
import { Route, MemoryRouter } from 'react-router-dom';
|
import { Route, MemoryRouter } from 'react-router-dom';
|
||||||
import { createStore } from 'redux';
|
|
||||||
|
|
||||||
import { Theme } from '../../../../../../components/Theme';
|
import { Theme } from '../../../../../../components/Theme';
|
||||||
import { ThemeToggleProvider } from '../../../../../../components/ThemeToggleProvider';
|
import { ThemeToggleProvider } from '../../../../../../components/ThemeToggleProvider';
|
||||||
@ -71,8 +71,11 @@ const setup = ({ path, ...props } = {}) =>
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<Provider
|
<Provider
|
||||||
store={createStore((state) => state, {
|
store={configureStore({
|
||||||
|
reducer: (state) => state,
|
||||||
|
preloadedState: {
|
||||||
admin_app: { permissions: fixtures.permissions.app },
|
admin_app: { permissions: fixtures.permissions.app },
|
||||||
|
},
|
||||||
})}
|
})}
|
||||||
>
|
>
|
||||||
<QueryClientProvider client={client}>
|
<QueryClientProvider client={client}>
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
|
import { configureStore } from '@reduxjs/toolkit';
|
||||||
import { fixtures } from '@strapi/admin-test-utils';
|
import { fixtures } from '@strapi/admin-test-utils';
|
||||||
import { darkTheme, lightTheme } from '@strapi/design-system';
|
import { darkTheme, lightTheme } from '@strapi/design-system';
|
||||||
import { TrackingProvider, useRBAC } from '@strapi/helper-plugin';
|
import { TrackingProvider, useRBAC } from '@strapi/helper-plugin';
|
||||||
@ -8,7 +9,6 @@ import { IntlProvider } from 'react-intl';
|
|||||||
import { QueryClient, QueryClientProvider } from 'react-query';
|
import { QueryClient, QueryClientProvider } from 'react-query';
|
||||||
import { Provider } from 'react-redux';
|
import { Provider } from 'react-redux';
|
||||||
import { Route, MemoryRouter } from 'react-router-dom';
|
import { Route, MemoryRouter } from 'react-router-dom';
|
||||||
import { createStore } from 'redux';
|
|
||||||
|
|
||||||
import { Theme } from '../../../../../../components/Theme';
|
import { Theme } from '../../../../../../components/Theme';
|
||||||
import { ThemeToggleProvider } from '../../../../../../components/ThemeToggleProvider';
|
import { ThemeToggleProvider } from '../../../../../../components/ThemeToggleProvider';
|
||||||
@ -78,8 +78,11 @@ const setup = ({ path, ...props } = {}) =>
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<Provider
|
<Provider
|
||||||
store={createStore((state) => state, {
|
store={configureStore({
|
||||||
admin_app: { permissions: { ...fixtures.permissions.app } },
|
reducer: (state) => state,
|
||||||
|
preloadedState: {
|
||||||
|
admin_app: { permissions: fixtures.permissions.app },
|
||||||
|
},
|
||||||
})}
|
})}
|
||||||
>
|
>
|
||||||
<QueryClientProvider client={client}>
|
<QueryClientProvider client={client}>
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
|
import { configureStore } from '@reduxjs/toolkit';
|
||||||
import { fixtures } from '@strapi/admin-test-utils';
|
import { fixtures } from '@strapi/admin-test-utils';
|
||||||
import { ThemeProvider, lightTheme } from '@strapi/design-system';
|
import { ThemeProvider, lightTheme } from '@strapi/design-system';
|
||||||
import { useRBAC } from '@strapi/helper-plugin';
|
import { useRBAC } from '@strapi/helper-plugin';
|
||||||
@ -15,7 +16,6 @@ import { IntlProvider } from 'react-intl';
|
|||||||
import { QueryClient, QueryClientProvider } from 'react-query';
|
import { QueryClient, QueryClientProvider } from 'react-query';
|
||||||
import { Provider } from 'react-redux';
|
import { Provider } from 'react-redux';
|
||||||
import { Router } from 'react-router-dom';
|
import { Router } from 'react-router-dom';
|
||||||
import { createStore } from 'redux';
|
|
||||||
|
|
||||||
import { useAdminRoles } from '../../../../../../hooks/useAdminRoles';
|
import { useAdminRoles } from '../../../../../../hooks/useAdminRoles';
|
||||||
import ListPage from '../index';
|
import ListPage from '../index';
|
||||||
@ -46,8 +46,11 @@ const setup = (props) =>
|
|||||||
return (
|
return (
|
||||||
<QueryClientProvider client={client}>
|
<QueryClientProvider client={client}>
|
||||||
<Provider
|
<Provider
|
||||||
store={createStore((state) => state, {
|
store={configureStore({
|
||||||
|
reducer: (state) => state,
|
||||||
|
preloadedState: {
|
||||||
admin_app: { permissions: fixtures.permissions.app },
|
admin_app: { permissions: fixtures.permissions.app },
|
||||||
|
},
|
||||||
})}
|
})}
|
||||||
>
|
>
|
||||||
<IntlProvider messages={{}} defaultLocale="en" textComponent="span" locale="en">
|
<IntlProvider messages={{}} defaultLocale="en" textComponent="span" locale="en">
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
|
import { configureStore } from '@reduxjs/toolkit';
|
||||||
import { fixtures } from '@strapi/admin-test-utils';
|
import { fixtures } from '@strapi/admin-test-utils';
|
||||||
import { lightTheme, ThemeProvider } from '@strapi/design-system';
|
import { lightTheme, ThemeProvider } from '@strapi/design-system';
|
||||||
import { TrackingProvider, useRBAC } from '@strapi/helper-plugin';
|
import { TrackingProvider, useRBAC } from '@strapi/helper-plugin';
|
||||||
@ -9,7 +10,6 @@ import { IntlProvider } from 'react-intl';
|
|||||||
import { QueryClient, QueryClientProvider } from 'react-query';
|
import { QueryClient, QueryClientProvider } from 'react-query';
|
||||||
import { Provider } from 'react-redux';
|
import { Provider } from 'react-redux';
|
||||||
import { Route, Router } from 'react-router-dom';
|
import { Route, Router } from 'react-router-dom';
|
||||||
import { createStore } from 'redux';
|
|
||||||
|
|
||||||
import ListPage from '../index';
|
import ListPage from '../index';
|
||||||
|
|
||||||
@ -77,8 +77,11 @@ const setup = (props) =>
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<Provider
|
<Provider
|
||||||
store={createStore((state) => state, {
|
store={configureStore({
|
||||||
|
reducer: (state) => state,
|
||||||
|
preloadedState: {
|
||||||
admin_app: { permissions: fixtures.permissions.app },
|
admin_app: { permissions: fixtures.permissions.app },
|
||||||
|
},
|
||||||
})}
|
})}
|
||||||
>
|
>
|
||||||
<QueryClientProvider client={client}>
|
<QueryClientProvider client={client}>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
/* eslint-disable check-file/filename-naming-convention */
|
/* eslint-disable check-file/filename-naming-convention */
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
|
|
||||||
|
import { configureStore } from '@reduxjs/toolkit';
|
||||||
import { fixtures } from '@strapi/admin-test-utils';
|
import { fixtures } from '@strapi/admin-test-utils';
|
||||||
import { DesignSystemProvider } from '@strapi/design-system';
|
import { DesignSystemProvider } from '@strapi/design-system';
|
||||||
import { NotificationsProvider, RBACContext } from '@strapi/helper-plugin';
|
import { NotificationsProvider, RBACContext } from '@strapi/helper-plugin';
|
||||||
@ -19,7 +20,6 @@ import { IntlProvider } from 'react-intl';
|
|||||||
import { QueryClient, QueryClientProvider, setLogger } from 'react-query';
|
import { QueryClient, QueryClientProvider, setLogger } from 'react-query';
|
||||||
import { Provider } from 'react-redux';
|
import { Provider } from 'react-redux';
|
||||||
import { MemoryRouter, MemoryRouterProps } from 'react-router-dom';
|
import { MemoryRouter, MemoryRouterProps } from 'react-router-dom';
|
||||||
import { createStore } from 'redux';
|
|
||||||
|
|
||||||
// @ts-expect-error – no types yet.
|
// @ts-expect-error – no types yet.
|
||||||
import ModelsContext from '../src/content-manager/contexts/ModelsContext';
|
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.
|
// en is the default locale of the admin app.
|
||||||
return (
|
return (
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
|
import { configureStore } from '@reduxjs/toolkit';
|
||||||
import { fixtures } from '@strapi/admin-test-utils';
|
import { fixtures } from '@strapi/admin-test-utils';
|
||||||
import { renderHook, waitFor } from '@testing-library/react';
|
import { renderHook, waitFor } from '@testing-library/react';
|
||||||
import { rest } from 'msw';
|
import { rest } from 'msw';
|
||||||
import { setupServer } from 'msw/node';
|
import { setupServer } from 'msw/node';
|
||||||
import { QueryClient, QueryClientProvider } from 'react-query';
|
import { QueryClient, QueryClientProvider } from 'react-query';
|
||||||
import { Provider } from 'react-redux';
|
import { Provider } from 'react-redux';
|
||||||
import { createStore } from 'redux';
|
|
||||||
|
|
||||||
import { useLicenseLimits } from '../useLicenseLimits';
|
import { useLicenseLimits } from '../useLicenseLimits';
|
||||||
|
|
||||||
@ -42,8 +42,11 @@ const setup = (...args) =>
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<Provider
|
<Provider
|
||||||
store={createStore((state) => state, {
|
store={configureStore({
|
||||||
|
reducer: (state) => state,
|
||||||
|
preloadedState: {
|
||||||
admin_app: { permissions: fixtures.permissions.app },
|
admin_app: { permissions: fixtures.permissions.app },
|
||||||
|
},
|
||||||
})}
|
})}
|
||||||
>
|
>
|
||||||
<QueryClientProvider client={client}>{children}</QueryClientProvider>
|
<QueryClientProvider client={client}>{children}</QueryClientProvider>
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
|
import { configureStore } from '@reduxjs/toolkit';
|
||||||
import { fixtures } from '@strapi/admin-test-utils';
|
import { fixtures } from '@strapi/admin-test-utils';
|
||||||
import { lightTheme, ThemeProvider } from '@strapi/design-system';
|
import { lightTheme, ThemeProvider } from '@strapi/design-system';
|
||||||
import { render } from '@testing-library/react';
|
import { render } from '@testing-library/react';
|
||||||
import { IntlProvider } from 'react-intl';
|
import { IntlProvider } from 'react-intl';
|
||||||
import { QueryClient, QueryClientProvider } from 'react-query';
|
import { QueryClient, QueryClientProvider } from 'react-query';
|
||||||
import { Provider } from 'react-redux';
|
import { Provider } from 'react-redux';
|
||||||
import { createStore } from 'redux';
|
|
||||||
|
|
||||||
import { AdminSeatInfoEE } from '..';
|
import { AdminSeatInfoEE } from '..';
|
||||||
import { useLicenseLimits } from '../../../../../../../hooks/useLicenseLimits';
|
import { useLicenseLimits } from '../../../../../../../hooks/useLicenseLimits';
|
||||||
@ -54,8 +54,11 @@ const setup = (props) =>
|
|||||||
return (
|
return (
|
||||||
<QueryClientProvider client={client}>
|
<QueryClientProvider client={client}>
|
||||||
<Provider
|
<Provider
|
||||||
store={createStore((state) => state, {
|
store={configureStore({
|
||||||
|
reducer: (state) => state,
|
||||||
|
preloadedState: {
|
||||||
admin_app: { permissions: fixtures.permissions.app },
|
admin_app: { permissions: fixtures.permissions.app },
|
||||||
|
},
|
||||||
})}
|
})}
|
||||||
>
|
>
|
||||||
<ThemeProvider theme={lightTheme}>
|
<ThemeProvider theme={lightTheme}>
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
|
import { configureStore } from '@reduxjs/toolkit';
|
||||||
import { fixtures } from '@strapi/admin-test-utils';
|
import { fixtures } from '@strapi/admin-test-utils';
|
||||||
import { lightTheme, ThemeProvider } from '@strapi/design-system';
|
import { lightTheme, ThemeProvider } from '@strapi/design-system';
|
||||||
import { fireEvent, render, screen, waitFor, within } from '@testing-library/react';
|
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 { QueryClient, QueryClientProvider } from 'react-query';
|
||||||
import { Provider } from 'react-redux';
|
import { Provider } from 'react-redux';
|
||||||
import { Router } from 'react-router-dom';
|
import { Router } from 'react-router-dom';
|
||||||
import { createStore } from 'redux';
|
|
||||||
|
|
||||||
import useAuditLogsData from '../hooks/useAuditLogsData';
|
import useAuditLogsData from '../hooks/useAuditLogsData';
|
||||||
import ListView from '../index';
|
import ListView from '../index';
|
||||||
@ -54,7 +54,9 @@ const setup = (props) => ({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<Provider
|
<Provider
|
||||||
store={createStore((state) => state, {
|
store={configureStore({
|
||||||
|
reducer: (state) => state,
|
||||||
|
preloadedState: {
|
||||||
admin_app: {
|
admin_app: {
|
||||||
permissions: {
|
permissions: {
|
||||||
...fixtures.permissions.app,
|
...fixtures.permissions.app,
|
||||||
@ -67,6 +69,7 @@ const setup = (props) => ({
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
},
|
||||||
})}
|
})}
|
||||||
>
|
>
|
||||||
<QueryClientProvider client={client}>
|
<QueryClientProvider client={client}>
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
|
import { configureStore } from '@reduxjs/toolkit';
|
||||||
import { lightTheme, ThemeProvider } from '@strapi/design-system';
|
import { lightTheme, ThemeProvider } from '@strapi/design-system';
|
||||||
import { render, waitFor } from '@testing-library/react';
|
import { render, waitFor } from '@testing-library/react';
|
||||||
import userEvent from '@testing-library/user-event';
|
import userEvent from '@testing-library/user-event';
|
||||||
@ -8,7 +9,6 @@ import { DndProvider } from 'react-dnd';
|
|||||||
import { HTML5Backend } from 'react-dnd-html5-backend';
|
import { HTML5Backend } from 'react-dnd-html5-backend';
|
||||||
import { IntlProvider } from 'react-intl';
|
import { IntlProvider } from 'react-intl';
|
||||||
import { Provider } from 'react-redux';
|
import { Provider } from 'react-redux';
|
||||||
import { createStore } from 'redux';
|
|
||||||
|
|
||||||
import { REDUX_NAMESPACE, STAGE_COLOR_DEFAULT } from '../../../../constants';
|
import { REDUX_NAMESPACE, STAGE_COLOR_DEFAULT } from '../../../../constants';
|
||||||
import { reducer } from '../../../../reducer';
|
import { reducer } from '../../../../reducer';
|
||||||
@ -128,7 +128,9 @@ const ComponentFixture = ({
|
|||||||
const setup = ({ roles, ...props } = {}) => ({
|
const setup = ({ roles, ...props } = {}) => ({
|
||||||
...render(<ComponentFixture {...props} />, {
|
...render(<ComponentFixture {...props} />, {
|
||||||
wrapper({ children }) {
|
wrapper({ children }) {
|
||||||
const store = createStore(reducer, {
|
const store = configureStore({
|
||||||
|
reducer,
|
||||||
|
preloadedState: {
|
||||||
[REDUX_NAMESPACE]: {
|
[REDUX_NAMESPACE]: {
|
||||||
serverState: {
|
serverState: {
|
||||||
contentTypes: CONTENT_TYPES_FIXTURE,
|
contentTypes: CONTENT_TYPES_FIXTURE,
|
||||||
@ -143,6 +145,7 @@ const setup = ({ roles, ...props } = {}) => ({
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
|
import { configureStore } from '@reduxjs/toolkit';
|
||||||
import { ThemeProvider, lightTheme } from '@strapi/design-system';
|
import { ThemeProvider, lightTheme } from '@strapi/design-system';
|
||||||
import { render, waitFor } from '@testing-library/react';
|
import { render, waitFor } from '@testing-library/react';
|
||||||
import userEvent from '@testing-library/user-event';
|
import userEvent from '@testing-library/user-event';
|
||||||
@ -8,7 +9,6 @@ import { DndProvider } from 'react-dnd';
|
|||||||
import { HTML5Backend } from 'react-dnd-html5-backend';
|
import { HTML5Backend } from 'react-dnd-html5-backend';
|
||||||
import { IntlProvider } from 'react-intl';
|
import { IntlProvider } from 'react-intl';
|
||||||
import { Provider } from 'react-redux';
|
import { Provider } from 'react-redux';
|
||||||
import { createStore } from 'redux';
|
|
||||||
|
|
||||||
import { REDUX_NAMESPACE } from '../../../constants';
|
import { REDUX_NAMESPACE } from '../../../constants';
|
||||||
import { reducer } from '../../../reducer';
|
import { reducer } from '../../../reducer';
|
||||||
@ -92,7 +92,9 @@ const withMarkup = (query) => (text) =>
|
|||||||
const setup = ({ collectionTypes, singleTypes, currentWorkflow, ...props } = {}) => ({
|
const setup = ({ collectionTypes, singleTypes, currentWorkflow, ...props } = {}) => ({
|
||||||
...render(<ComponentFixture currentWorkflow={currentWorkflow} {...props} />, {
|
...render(<ComponentFixture currentWorkflow={currentWorkflow} {...props} />, {
|
||||||
wrapper({ children }) {
|
wrapper({ children }) {
|
||||||
const store = createStore(reducer, {
|
const store = configureStore({
|
||||||
|
reducer,
|
||||||
|
preloadedState: {
|
||||||
[REDUX_NAMESPACE]: {
|
[REDUX_NAMESPACE]: {
|
||||||
serverState: {
|
serverState: {
|
||||||
contentTypes: {
|
contentTypes: {
|
||||||
@ -110,6 +112,7 @@ const setup = ({ collectionTypes, singleTypes, currentWorkflow, ...props } = {})
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
|
import { configureStore } from '@reduxjs/toolkit';
|
||||||
import { fixtures } from '@strapi/admin-test-utils';
|
import { fixtures } from '@strapi/admin-test-utils';
|
||||||
import { lightTheme, ThemeProvider } from '@strapi/design-system';
|
import { lightTheme, ThemeProvider } from '@strapi/design-system';
|
||||||
import { useRBAC } from '@strapi/helper-plugin';
|
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 { IntlProvider } from 'react-intl';
|
||||||
import { QueryClient, QueryClientProvider } from 'react-query';
|
import { QueryClient, QueryClientProvider } from 'react-query';
|
||||||
import { Provider } from 'react-redux';
|
import { Provider } from 'react-redux';
|
||||||
import { createStore } from 'redux';
|
|
||||||
|
|
||||||
import { SingleSignOn } from '../index';
|
import { SingleSignOn } from '../index';
|
||||||
|
|
||||||
@ -33,7 +33,9 @@ const setup = (props) =>
|
|||||||
return (
|
return (
|
||||||
<QueryClientProvider client={client}>
|
<QueryClientProvider client={client}>
|
||||||
<Provider
|
<Provider
|
||||||
store={createStore((state) => state, {
|
store={configureStore({
|
||||||
|
reducer: (state) => state,
|
||||||
|
preloadedState: {
|
||||||
admin_app: {
|
admin_app: {
|
||||||
permissions: {
|
permissions: {
|
||||||
...fixtures.permissions.app,
|
...fixtures.permissions.app,
|
||||||
@ -47,6 +49,7 @@ const setup = (props) =>
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
},
|
||||||
})}
|
})}
|
||||||
>
|
>
|
||||||
<ThemeProvider theme={lightTheme}>
|
<ThemeProvider theme={lightTheme}>
|
||||||
|
@ -117,7 +117,6 @@
|
|||||||
"react-router-dom": "5.3.4",
|
"react-router-dom": "5.3.4",
|
||||||
"react-select": "5.7.0",
|
"react-select": "5.7.0",
|
||||||
"react-window": "1.8.8",
|
"react-window": "1.8.8",
|
||||||
"redux": "^4.2.1",
|
|
||||||
"reselect": "4.1.7",
|
"reselect": "4.1.7",
|
||||||
"rimraf": "3.0.2",
|
"rimraf": "3.0.2",
|
||||||
"sanitize-html": "2.11.0",
|
"sanitize-html": "2.11.0",
|
||||||
|
@ -17,9 +17,8 @@ import set from 'lodash/set';
|
|||||||
import size from 'lodash/size';
|
import size from 'lodash/size';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import { useIntl } from 'react-intl';
|
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 { Redirect, useLocation, useRouteMatch } from 'react-router-dom';
|
||||||
import { compose } from 'redux';
|
|
||||||
|
|
||||||
import DataManagerContext from '../../contexts/DataManagerContext';
|
import DataManagerContext from '../../contexts/DataManagerContext';
|
||||||
import useFormModalNavigation from '../../hooks/useFormModalNavigation';
|
import useFormModalNavigation from '../../hooks/useFormModalNavigation';
|
||||||
@ -58,8 +57,9 @@ import retrieveSpecificInfoFromComponents from './utils/retrieveSpecificInfoFrom
|
|||||||
import serverRestartWatcher from './utils/serverRestartWatcher';
|
import serverRestartWatcher from './utils/serverRestartWatcher';
|
||||||
import validateSchema from './utils/validateSchema';
|
import validateSchema from './utils/validateSchema';
|
||||||
|
|
||||||
const DataManagerProvider = ({
|
const DataManagerProvider = ({ children }) => {
|
||||||
children,
|
const dispatch = useDispatch();
|
||||||
|
const {
|
||||||
components,
|
components,
|
||||||
contentTypes,
|
contentTypes,
|
||||||
isLoading,
|
isLoading,
|
||||||
@ -67,8 +67,7 @@ const DataManagerProvider = ({
|
|||||||
initialData,
|
initialData,
|
||||||
modifiedData,
|
modifiedData,
|
||||||
reservedNames,
|
reservedNames,
|
||||||
}) => {
|
} = useSelector(makeSelectDataManagerProvider());
|
||||||
const dispatch = useDispatch();
|
|
||||||
const toggleNotification = useNotification();
|
const toggleNotification = useNotification();
|
||||||
const { lockAppWithAutoreload, unlockAppWithAutoreload } = useAutoReloadOverlayBlocker();
|
const { lockAppWithAutoreload, unlockAppWithAutoreload } = useAutoReloadOverlayBlocker();
|
||||||
const { setCurrentStep } = useGuidedTour();
|
const { setCurrentStep } = useGuidedTour();
|
||||||
@ -619,22 +618,8 @@ const DataManagerProvider = ({
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
DataManagerProvider.defaultProps = {
|
|
||||||
components: {},
|
|
||||||
};
|
|
||||||
|
|
||||||
DataManagerProvider.propTypes = {
|
DataManagerProvider.propTypes = {
|
||||||
children: PropTypes.node.isRequired,
|
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();
|
export default memo(DataManagerProvider);
|
||||||
const withConnect = connect(mapStateToProps, null);
|
|
||||||
|
|
||||||
export default compose(withConnect)(memo(DataManagerProvider));
|
|
||||||
|
@ -44,7 +44,6 @@
|
|||||||
"react-helmet": "^6.1.0",
|
"react-helmet": "^6.1.0",
|
||||||
"react-intl": "6.4.1",
|
"react-intl": "6.4.1",
|
||||||
"react-redux": "8.1.1",
|
"react-redux": "8.1.1",
|
||||||
"redux": "^4.2.1",
|
|
||||||
"reselect": "4.1.7",
|
"reselect": "4.1.7",
|
||||||
"yup": "0.32.9"
|
"yup": "0.32.9"
|
||||||
},
|
},
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
|
import { combineReducers, configureStore } from '@reduxjs/toolkit';
|
||||||
import { lightTheme, ThemeProvider } from '@strapi/design-system';
|
import { lightTheme, ThemeProvider } from '@strapi/design-system';
|
||||||
import { render as renderTL, waitFor } from '@testing-library/react';
|
import { render as renderTL, waitFor } from '@testing-library/react';
|
||||||
import userEvent from '@testing-library/user-event';
|
import userEvent from '@testing-library/user-event';
|
||||||
import { IntlProvider } from 'react-intl';
|
import { IntlProvider } from 'react-intl';
|
||||||
import { QueryClient, QueryClientProvider } from 'react-query';
|
import { QueryClient, QueryClientProvider } from 'react-query';
|
||||||
import { Provider } from 'react-redux';
|
import { Provider } from 'react-redux';
|
||||||
import { combineReducers, createStore } from 'redux';
|
|
||||||
|
|
||||||
import LocaleSelect from '..';
|
import LocaleSelect from '..';
|
||||||
import reducers from '../../../hooks/reducers';
|
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) => ({
|
const render = (props) => ({
|
||||||
user: userEvent.setup(),
|
user: userEvent.setup(),
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/* eslint-disable react/prop-types */
|
/* eslint-disable react/prop-types */
|
||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
// import { createStore, combineReducers } from 'redux';
|
// import { configureStore, combineReducers } from '@reduxjs/toolkit';
|
||||||
// import { Provider } from 'react-redux';
|
// import { Provider } from 'react-redux';
|
||||||
// import { request, useRBAC } from '@strapi/helper-plugin';
|
// import { request, useRBAC } from '@strapi/helper-plugin';
|
||||||
// import { fireEvent, render, screen, within, waitFor } from '@testing-library/react';
|
// import { fireEvent, render, screen, within, waitFor } from '@testing-library/react';
|
||||||
@ -17,7 +17,10 @@ import React from 'react';
|
|||||||
// const queryClient = new QueryClient();
|
// const queryClient = new QueryClient();
|
||||||
|
|
||||||
// const rootReducer = combineReducers(i18nReducers);
|
// const rootReducer = combineReducers(i18nReducers);
|
||||||
// const store = createStore(rootReducer, { [`${pluginId}_locales`]: initialState });
|
// const store = configureStore({
|
||||||
|
// reducer: rootReducer,
|
||||||
|
// preloadedState: { [`${pluginId}_locales`]: initialState },
|
||||||
|
// });
|
||||||
|
|
||||||
// return (
|
// return (
|
||||||
// <Provider store={store}>
|
// <Provider store={store}>
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
"test:unit:watch": "run -T jest --watch"
|
"test:unit:watch": "run -T jest --watch"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@reduxjs/toolkit": "1.9.7",
|
||||||
"@strapi/design-system": "1.12.2",
|
"@strapi/design-system": "1.12.2",
|
||||||
"@strapi/helper-plugin": "4.14.4",
|
"@strapi/helper-plugin": "4.14.4",
|
||||||
"@strapi/icons": "1.12.2",
|
"@strapi/icons": "1.12.2",
|
||||||
@ -42,7 +43,6 @@
|
|||||||
"react-intl": "6.4.1",
|
"react-intl": "6.4.1",
|
||||||
"react-query": "3.39.3",
|
"react-query": "3.39.3",
|
||||||
"react-redux": "8.1.1",
|
"react-redux": "8.1.1",
|
||||||
"redux": "^4.2.1",
|
|
||||||
"yup": "0.32.9"
|
"yup": "0.32.9"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
48
yarn.lock
48
yarn.lock
@ -6303,6 +6303,26 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"@rollup/pluginutils@npm:^5.0.2":
|
||||||
version: 5.0.2
|
version: 5.0.2
|
||||||
resolution: "@rollup/pluginutils@npm: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"
|
resolution: "@strapi/admin-test-utils@workspace:packages/admin-test-utils"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@juggle/resize-observer": 3.4.0
|
"@juggle/resize-observer": 3.4.0
|
||||||
|
"@reduxjs/toolkit": 1.9.7
|
||||||
"@strapi/pack-up": "workspace:*"
|
"@strapi/pack-up": "workspace:*"
|
||||||
"@testing-library/jest-dom": 5.16.5
|
"@testing-library/jest-dom": 5.16.5
|
||||||
eslint-config-custom: 4.14.4
|
eslint-config-custom: 4.14.4
|
||||||
jest-styled-components: 7.1.1
|
jest-styled-components: 7.1.1
|
||||||
redux: ^4.2.1
|
|
||||||
tsconfig: 4.14.4
|
tsconfig: 4.14.4
|
||||||
whatwg-fetch: 3.6.2
|
whatwg-fetch: 3.6.2
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
redux: ^4.2.1
|
"@reduxjs/toolkit": ^1.9.7
|
||||||
|
"@testing-library/jest-dom": ^5.16.5
|
||||||
languageName: unknown
|
languageName: unknown
|
||||||
linkType: soft
|
linkType: soft
|
||||||
|
|
||||||
@ -7418,6 +7439,7 @@ __metadata:
|
|||||||
"@casl/ability": 6.5.0
|
"@casl/ability": 6.5.0
|
||||||
"@pmmmwh/react-refresh-webpack-plugin": 0.5.10
|
"@pmmmwh/react-refresh-webpack-plugin": 0.5.10
|
||||||
"@radix-ui/react-toolbar": 1.0.4
|
"@radix-ui/react-toolbar": 1.0.4
|
||||||
|
"@reduxjs/toolkit": 1.9.7
|
||||||
"@strapi/admin-test-utils": 4.14.4
|
"@strapi/admin-test-utils": 4.14.4
|
||||||
"@strapi/data-transfer": 4.14.4
|
"@strapi/data-transfer": 4.14.4
|
||||||
"@strapi/design-system": 1.12.2
|
"@strapi/design-system": 1.12.2
|
||||||
@ -7497,7 +7519,6 @@ __metadata:
|
|||||||
react-router-dom: 5.3.4
|
react-router-dom: 5.3.4
|
||||||
react-select: 5.7.0
|
react-select: 5.7.0
|
||||||
react-window: 1.8.8
|
react-window: 1.8.8
|
||||||
redux: ^4.2.1
|
|
||||||
reselect: 4.1.7
|
reselect: 4.1.7
|
||||||
rimraf: 3.0.2
|
rimraf: 3.0.2
|
||||||
sanitize-html: 2.11.0
|
sanitize-html: 2.11.0
|
||||||
@ -7877,7 +7898,6 @@ __metadata:
|
|||||||
react-intl: 6.4.1
|
react-intl: 6.4.1
|
||||||
react-redux: 8.1.1
|
react-redux: 8.1.1
|
||||||
react-router-dom: 5.3.4
|
react-router-dom: 5.3.4
|
||||||
redux: ^4.2.1
|
|
||||||
reselect: 4.1.7
|
reselect: 4.1.7
|
||||||
styled-components: 5.3.3
|
styled-components: 5.3.3
|
||||||
yup: 0.32.9
|
yup: 0.32.9
|
||||||
@ -8003,6 +8023,7 @@ __metadata:
|
|||||||
version: 0.0.0-use.local
|
version: 0.0.0-use.local
|
||||||
resolution: "@strapi/plugin-i18n@workspace:packages/plugins/i18n"
|
resolution: "@strapi/plugin-i18n@workspace:packages/plugins/i18n"
|
||||||
dependencies:
|
dependencies:
|
||||||
|
"@reduxjs/toolkit": 1.9.7
|
||||||
"@strapi/design-system": 1.12.2
|
"@strapi/design-system": 1.12.2
|
||||||
"@strapi/helper-plugin": 4.14.4
|
"@strapi/helper-plugin": 4.14.4
|
||||||
"@strapi/icons": 1.12.2
|
"@strapi/icons": 1.12.2
|
||||||
@ -8020,7 +8041,6 @@ __metadata:
|
|||||||
react-query: 3.39.3
|
react-query: 3.39.3
|
||||||
react-redux: 8.1.1
|
react-redux: 8.1.1
|
||||||
react-router-dom: 5.3.4
|
react-router-dom: 5.3.4
|
||||||
redux: ^4.2.1
|
|
||||||
styled-components: 5.3.3
|
styled-components: 5.3.3
|
||||||
yup: 0.32.9
|
yup: 0.32.9
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@ -19164,7 +19184,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"immer@npm:^9.0.6":
|
"immer@npm:^9.0.21, immer@npm:^9.0.6":
|
||||||
version: 9.0.21
|
version: 9.0.21
|
||||||
resolution: "immer@npm:9.0.21"
|
resolution: "immer@npm:9.0.21"
|
||||||
checksum: 70e3c274165995352f6936695f0ef4723c52c92c92dd0e9afdfe008175af39fa28e76aafb3a2ca9d57d1fb8f796efc4dd1e1cc36f18d33fa5b74f3dfb0375432
|
checksum: 70e3c274165995352f6936695f0ef4723c52c92c92dd0e9afdfe008175af39fa28e76aafb3a2ca9d57d1fb8f796efc4dd1e1cc36f18d33fa5b74f3dfb0375432
|
||||||
@ -27514,6 +27534,15 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"redux@npm:^4.1.2":
|
||||||
version: 4.2.0
|
version: 4.2.0
|
||||||
resolution: "redux@npm:4.2.0"
|
resolution: "redux@npm:4.2.0"
|
||||||
@ -27867,6 +27896,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
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":
|
"resolve-alpn@npm:^1.0.0":
|
||||||
version: 1.2.1
|
version: 1.2.1
|
||||||
resolution: "resolve-alpn@npm:1.2.1"
|
resolution: "resolve-alpn@npm:1.2.1"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user