mirror of
https://github.com/strapi/strapi.git
synced 2025-09-08 16:16:21 +00:00
Rename CM hook
Signed-off-by: soupette <cyril@strapi.io>
This commit is contained in:
parent
9096a86b91
commit
ff8069a1c8
@ -1,14 +1,14 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import { FormattedMessage } from 'react-intl';
|
import { FormattedMessage } from 'react-intl';
|
||||||
import { useContentManagerEditViewDataManager } from '@strapi/helper-plugin';
|
import { useCMEditViewDataManager } from '@strapi/helper-plugin';
|
||||||
import { getTrad } from '../../utils';
|
import { getTrad } from '../../utils';
|
||||||
import NonRepeatableWrapper from '../NonRepeatableWrapper';
|
import NonRepeatableWrapper from '../NonRepeatableWrapper';
|
||||||
import PlusButton from '../PlusButton';
|
import PlusButton from '../PlusButton';
|
||||||
import P from './P';
|
import P from './P';
|
||||||
|
|
||||||
const ComponentInitializer = ({ componentUid, isReadOnly, name }) => {
|
const ComponentInitializer = ({ componentUid, isReadOnly, name }) => {
|
||||||
const { addNonRepeatableComponentToField } = useContentManagerEditViewDataManager();
|
const { addNonRepeatableComponentToField } = useCMEditViewDataManager();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<NonRepeatableWrapper
|
<NonRepeatableWrapper
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { useMemo } from 'react';
|
import { useMemo } from 'react';
|
||||||
import { get } from 'lodash';
|
import { get } from 'lodash';
|
||||||
import { useContentManagerEditViewDataManager } from '@strapi/helper-plugin';
|
import { useCMEditViewDataManager } from '@strapi/helper-plugin';
|
||||||
|
|
||||||
function useSelect(name) {
|
function useSelect(name) {
|
||||||
const {
|
const {
|
||||||
@ -14,7 +14,7 @@ function useSelect(name) {
|
|||||||
removeComponentFromDynamicZone,
|
removeComponentFromDynamicZone,
|
||||||
readActionAllowedFields,
|
readActionAllowedFields,
|
||||||
updateActionAllowedFields,
|
updateActionAllowedFields,
|
||||||
} = useContentManagerEditViewDataManager();
|
} = useCMEditViewDataManager();
|
||||||
|
|
||||||
const dynamicDisplayedComponents = useMemo(
|
const dynamicDisplayedComponents = useMemo(
|
||||||
() => get(modifiedData, [name], []).map(data => data.__component),
|
() => get(modifiedData, [name], []).map(data => data.__component),
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { useMemo } from 'react';
|
import { useMemo } from 'react';
|
||||||
import { get, take } from 'lodash';
|
import { get, take } from 'lodash';
|
||||||
import { useContentManagerEditViewDataManager } from '@strapi/helper-plugin';
|
import { useCMEditViewDataManager } from '@strapi/helper-plugin';
|
||||||
|
|
||||||
import { getFieldName } from '../../../utils';
|
import { getFieldName } from '../../../utils';
|
||||||
import { useContentTypeLayout } from '../../../hooks';
|
import { useContentTypeLayout } from '../../../hooks';
|
||||||
@ -13,7 +13,7 @@ function useSelect({ isFromDynamicZone, name }) {
|
|||||||
removeComponentFromField,
|
removeComponentFromField,
|
||||||
readActionAllowedFields,
|
readActionAllowedFields,
|
||||||
updateActionAllowedFields,
|
updateActionAllowedFields,
|
||||||
} = useContentManagerEditViewDataManager();
|
} = useCMEditViewDataManager();
|
||||||
const { contentType } = useContentTypeLayout();
|
const { contentType } = useContentTypeLayout();
|
||||||
|
|
||||||
// This is used for the readonly mode when updating an entry
|
// This is used for the readonly mode when updating an entry
|
||||||
|
@ -8,7 +8,7 @@ import styled from 'styled-components';
|
|||||||
import {
|
import {
|
||||||
LabelIconWrapper,
|
LabelIconWrapper,
|
||||||
LoadingIndicator,
|
LoadingIndicator,
|
||||||
useContentManagerEditViewDataManager,
|
useCMEditViewDataManager,
|
||||||
} from '@strapi/helper-plugin';
|
} from '@strapi/helper-plugin';
|
||||||
import { useIntl } from 'react-intl';
|
import { useIntl } from 'react-intl';
|
||||||
import get from 'lodash/get';
|
import get from 'lodash/get';
|
||||||
@ -52,7 +52,7 @@ const InputUID = ({
|
|||||||
editable,
|
editable,
|
||||||
...inputProps
|
...inputProps
|
||||||
}) => {
|
}) => {
|
||||||
const { modifiedData, initialData, layout } = useContentManagerEditViewDataManager();
|
const { modifiedData, initialData, layout } = useCMEditViewDataManager();
|
||||||
const [isLoading, setIsLoading] = useState(false);
|
const [isLoading, setIsLoading] = useState(false);
|
||||||
const [availability, setAvailability] = useState(null);
|
const [availability, setAvailability] = useState(null);
|
||||||
const [isSuggestionOpen, setIsSuggestionOpen] = useState(true);
|
const [isSuggestionOpen, setIsSuggestionOpen] = useState(true);
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { useMemo } from 'react';
|
import { useMemo } from 'react';
|
||||||
import { get } from 'lodash';
|
import { get } from 'lodash';
|
||||||
import { useContentManagerEditViewDataManager } from '@strapi/helper-plugin';
|
import { useCMEditViewDataManager } from '@strapi/helper-plugin';
|
||||||
|
|
||||||
function useSelect(keys) {
|
function useSelect(keys) {
|
||||||
const {
|
const {
|
||||||
@ -12,7 +12,7 @@ function useSelect(keys) {
|
|||||||
readActionAllowedFields,
|
readActionAllowedFields,
|
||||||
shouldNotRunValidations,
|
shouldNotRunValidations,
|
||||||
updateActionAllowedFields,
|
updateActionAllowedFields,
|
||||||
} = useContentManagerEditViewDataManager();
|
} = useCMEditViewDataManager();
|
||||||
|
|
||||||
const allowedFields = useMemo(() => {
|
const allowedFields = useMemo(() => {
|
||||||
return isCreatingEntry ? createActionAllowedFields : updateActionAllowedFields;
|
return isCreatingEntry ? createActionAllowedFields : updateActionAllowedFields;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { useMemo } from 'react';
|
import { useMemo } from 'react';
|
||||||
import { get, toString } from 'lodash';
|
import { get, toString } from 'lodash';
|
||||||
import { useContentManagerEditViewDataManager } from '@strapi/helper-plugin';
|
import { useCMEditViewDataManager } from '@strapi/helper-plugin';
|
||||||
|
|
||||||
function useSelect({ schema, componentFieldName }) {
|
function useSelect({ schema, componentFieldName }) {
|
||||||
const {
|
const {
|
||||||
@ -9,7 +9,7 @@ function useSelect({ schema, componentFieldName }) {
|
|||||||
moveComponentField,
|
moveComponentField,
|
||||||
removeRepeatableField,
|
removeRepeatableField,
|
||||||
triggerFormValidation,
|
triggerFormValidation,
|
||||||
} = useContentManagerEditViewDataManager();
|
} = useCMEditViewDataManager();
|
||||||
|
|
||||||
const mainField = useMemo(() => get(schema, ['settings', 'mainField'], 'id'), [schema]);
|
const mainField = useMemo(() => get(schema, ['settings', 'mainField'], 'id'), [schema]);
|
||||||
const displayedValue = toString(
|
const displayedValue = toString(
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { useContentManagerEditViewDataManager } from '@strapi/helper-plugin';
|
import { useCMEditViewDataManager } from '@strapi/helper-plugin';
|
||||||
|
|
||||||
function useSelect() {
|
function useSelect() {
|
||||||
const { addRepeatableComponentToField, formErrors } = useContentManagerEditViewDataManager();
|
const { addRepeatableComponentToField, formErrors } = useCMEditViewDataManager();
|
||||||
|
|
||||||
return {
|
return {
|
||||||
addRepeatableComponentToField,
|
addRepeatableComponentToField,
|
||||||
|
@ -7,7 +7,7 @@ import {
|
|||||||
DropdownIndicator,
|
DropdownIndicator,
|
||||||
LabelIconWrapper,
|
LabelIconWrapper,
|
||||||
NotAllowedInput,
|
NotAllowedInput,
|
||||||
useContentManagerEditViewDataManager,
|
useCMEditViewDataManager,
|
||||||
useQueryParams,
|
useQueryParams,
|
||||||
} from '@strapi/helper-plugin';
|
} from '@strapi/helper-plugin';
|
||||||
import { Flex, Text, Padded } from '@buffetjs/core';
|
import { Flex, Text, Padded } from '@buffetjs/core';
|
||||||
@ -69,7 +69,7 @@ function SelectWrapper({
|
|||||||
moveRelation,
|
moveRelation,
|
||||||
onChange,
|
onChange,
|
||||||
onRemoveRelation,
|
onRemoveRelation,
|
||||||
} = useContentManagerEditViewDataManager();
|
} = useCMEditViewDataManager();
|
||||||
const { pathname } = useLocation();
|
const { pathname } = useLocation();
|
||||||
|
|
||||||
const value = get(modifiedData, name, null);
|
const value = get(modifiedData, name, null);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { useMemo } from 'react';
|
import { useMemo } from 'react';
|
||||||
import { useContentManagerEditViewDataManager } from '@strapi/helper-plugin';
|
import { useCMEditViewDataManager } from '@strapi/helper-plugin';
|
||||||
|
|
||||||
function useSelect({ isUserAllowedToEditField, isUserAllowedToReadField, name }) {
|
function useSelect({ isUserAllowedToEditField, isUserAllowedToReadField, name }) {
|
||||||
const {
|
const {
|
||||||
@ -7,7 +7,7 @@ function useSelect({ isUserAllowedToEditField, isUserAllowedToReadField, name })
|
|||||||
createActionAllowedFields,
|
createActionAllowedFields,
|
||||||
readActionAllowedFields,
|
readActionAllowedFields,
|
||||||
updateActionAllowedFields,
|
updateActionAllowedFields,
|
||||||
} = useContentManagerEditViewDataManager();
|
} = useCMEditViewDataManager();
|
||||||
|
|
||||||
const isFieldAllowed = useMemo(() => {
|
const isFieldAllowed = useMemo(() => {
|
||||||
if (isUserAllowedToEditField === true) {
|
if (isUserAllowedToEditField === true) {
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import { isEmpty } from 'lodash';
|
import { isEmpty } from 'lodash';
|
||||||
import { useContentManagerEditViewDataManager } from '@strapi/helper-plugin';
|
import { useCMEditViewDataManager } from '@strapi/helper-plugin';
|
||||||
|
|
||||||
function useSelect() {
|
function useSelect() {
|
||||||
const { hasDraftAndPublish, modifiedData } = useContentManagerEditViewDataManager();
|
const { hasDraftAndPublish, modifiedData } = useCMEditViewDataManager();
|
||||||
|
|
||||||
let trackerProperty = {};
|
let trackerProperty = {};
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { useContentManagerEditViewDataManager } from '@strapi/helper-plugin';
|
import { useCMEditViewDataManager } from '@strapi/helper-plugin';
|
||||||
|
|
||||||
function useSelect() {
|
function useSelect() {
|
||||||
const { initialData, hasDraftAndPublish } = useContentManagerEditViewDataManager();
|
const { initialData, hasDraftAndPublish } = useCMEditViewDataManager();
|
||||||
|
|
||||||
const isPublished = initialData.published_at !== undefined && initialData.published_at !== null;
|
const isPublished = initialData.published_at !== undefined && initialData.published_at !== null;
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { useContentManagerEditViewDataManager } from '@strapi/helper-plugin';
|
import { useCMEditViewDataManager } from '@strapi/helper-plugin';
|
||||||
|
|
||||||
function useSelect() {
|
function useSelect() {
|
||||||
const {
|
const {
|
||||||
@ -12,7 +12,7 @@ function useSelect() {
|
|||||||
modifiedData,
|
modifiedData,
|
||||||
onPublish,
|
onPublish,
|
||||||
onUnpublish,
|
onUnpublish,
|
||||||
} = useContentManagerEditViewDataManager();
|
} = useCMEditViewDataManager();
|
||||||
|
|
||||||
return {
|
return {
|
||||||
componentLayouts: allLayoutData.components,
|
componentLayouts: allLayoutData.components,
|
||||||
|
@ -4,7 +4,7 @@ import { get, isEmpty } from 'lodash';
|
|||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
import styled from 'styled-components';
|
import styled from 'styled-components';
|
||||||
import { useIntl } from 'react-intl';
|
import { useIntl } from 'react-intl';
|
||||||
import { useContentManagerEditViewDataManager } from '@strapi/helper-plugin';
|
import { useCMEditViewDataManager } from '@strapi/helper-plugin';
|
||||||
import { InjectionZone } from '../../../shared/components';
|
import { InjectionZone } from '../../../shared/components';
|
||||||
import { SubWrapper, StatusWrapper } from './components';
|
import { SubWrapper, StatusWrapper } from './components';
|
||||||
import { getTrad } from '../../utils';
|
import { getTrad } from '../../utils';
|
||||||
@ -14,7 +14,7 @@ const BaselineAlignment = styled.div`
|
|||||||
`;
|
`;
|
||||||
|
|
||||||
const InformationCard = () => {
|
const InformationCard = () => {
|
||||||
const { initialData, hasDraftAndPublish, layout } = useContentManagerEditViewDataManager();
|
const { initialData, hasDraftAndPublish, layout } = useCMEditViewDataManager();
|
||||||
const { formatMessage } = useIntl();
|
const { formatMessage } = useIntl();
|
||||||
|
|
||||||
const updatedAtName = useMemo(
|
const updatedAtName = useMemo(
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import React, { useRef } from 'react';
|
import React, { useRef } from 'react';
|
||||||
import { useIntl } from 'react-intl';
|
import { useIntl } from 'react-intl';
|
||||||
import { useContentManagerEditViewDataManager } from '@strapi/helper-plugin';
|
import { useCMEditViewDataManager } from '@strapi/helper-plugin';
|
||||||
import { Box } from '@strapi/parts/Box';
|
import { Box } from '@strapi/parts/Box';
|
||||||
import { Divider } from '@strapi/parts/Divider';
|
import { Divider } from '@strapi/parts/Divider';
|
||||||
import { TableLabel, Text } from '@strapi/parts/Text';
|
import { TableLabel, Text } from '@strapi/parts/Text';
|
||||||
@ -11,7 +11,7 @@ import getUnits from './utils/getUnits';
|
|||||||
|
|
||||||
const Informations = () => {
|
const Informations = () => {
|
||||||
const { formatMessage, formatRelativeTime } = useIntl();
|
const { formatMessage, formatRelativeTime } = useIntl();
|
||||||
const { initialData, isCreatingEntry } = useContentManagerEditViewDataManager();
|
const { initialData, isCreatingEntry } = useCMEditViewDataManager();
|
||||||
|
|
||||||
// TODO if timestamps are still configurable in the V4
|
// TODO if timestamps are still configurable in the V4
|
||||||
const updatedAt = 'updated_at';
|
const updatedAt = 'updated_at';
|
||||||
|
@ -7,12 +7,12 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { render } from '@testing-library/react';
|
import { render } from '@testing-library/react';
|
||||||
import { IntlProvider } from 'react-intl';
|
import { IntlProvider } from 'react-intl';
|
||||||
import { useContentManagerEditViewDataManager } from '@strapi/helper-plugin';
|
import { useCMEditViewDataManager } from '@strapi/helper-plugin';
|
||||||
import Theme from '../../../../../components/Theme';
|
import Theme from '../../../../../components/Theme';
|
||||||
import Informations from '../index';
|
import Informations from '../index';
|
||||||
|
|
||||||
jest.mock('@strapi/helper-plugin', () => ({
|
jest.mock('@strapi/helper-plugin', () => ({
|
||||||
useContentManagerEditViewDataManager: jest.fn(),
|
useCMEditViewDataManager: jest.fn(),
|
||||||
}));
|
}));
|
||||||
|
|
||||||
const makeApp = () => {
|
const makeApp = () => {
|
||||||
@ -41,7 +41,7 @@ describe('CONTENT MANAGER | EditView | Header', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('renders and matches the snaphsot', () => {
|
it('renders and matches the snaphsot', () => {
|
||||||
useContentManagerEditViewDataManager.mockImplementationOnce(() => ({
|
useCMEditViewDataManager.mockImplementationOnce(() => ({
|
||||||
initialData: {},
|
initialData: {},
|
||||||
isCreatingEntry: true,
|
isCreatingEntry: true,
|
||||||
}));
|
}));
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import { useContext } from 'react';
|
import { useContext } from 'react';
|
||||||
import ContentManagerEditViewDataManagerContext from '../../contexts/ContentManagerEditViewDataManagerContext';
|
import ContentManagerEditViewDataManagerContext from '../../contexts/ContentManagerEditViewDataManagerContext';
|
||||||
|
|
||||||
const useContentManagerEditViewDataManager = () => {
|
const useCMEditViewDataManager = () => {
|
||||||
return useContext(ContentManagerEditViewDataManagerContext);
|
return useContext(ContentManagerEditViewDataManagerContext);
|
||||||
};
|
};
|
||||||
|
|
||||||
export default useContentManagerEditViewDataManager;
|
export default useCMEditViewDataManager;
|
@ -1,18 +1,18 @@
|
|||||||
<!--- useContentManagerEditViewDataManager.stories.mdx --->
|
<!--- useCMEditViewDataManager.stories.mdx --->
|
||||||
|
|
||||||
import { Meta, ArgsTable, Canvas, Story } from '@storybook/addon-docs';
|
import { Meta, ArgsTable, Canvas, Story } from '@storybook/addon-docs';
|
||||||
import { Main, Row, Button } from '@strapi/parts';
|
import { Main, Row, Button } from '@strapi/parts';
|
||||||
|
|
||||||
<Meta title="content-manager/hooks/useContentManagerEditViewDataManager" />
|
<Meta title="content-manager/hooks/useCMEditViewDataManager" />
|
||||||
|
|
||||||
# useContentManagerEditViewDataManager
|
# useCMEditViewDataManager
|
||||||
|
|
||||||
Hook that manages the content manager edit view. Use this hooks when you want to inject a component into the
|
Hook that manages the content manager edit view. Use this hooks when you want to inject a component into the
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
```js
|
```js
|
||||||
import { useContentManagerEditViewDataManager } from '@strapi/helper-plugin';
|
import { useCMEditViewDataManager } from '@strapi/helper-plugin';
|
||||||
|
|
||||||
const MyCompo = () => {
|
const MyCompo = () => {
|
||||||
const {
|
const {
|
||||||
@ -47,7 +47,7 @@ const MyCompo = () => {
|
|||||||
removeComponentFromDynamicZone: () => {},
|
removeComponentFromDynamicZone: () => {},
|
||||||
removeComponentFromField: () => {},
|
removeComponentFromField: () => {},
|
||||||
removeRepeatableField: () => {},
|
removeRepeatableField: () => {},
|
||||||
} = useContentManagerEditViewDataManager()
|
} = useCMEditViewDataManager()
|
||||||
|
|
||||||
return null
|
return null
|
||||||
}
|
}
|
@ -205,6 +205,6 @@ export { default as RemoveRoundedButton } from './icons/RemoveRoundedButton';
|
|||||||
|
|
||||||
// content-manager
|
// content-manager
|
||||||
export { default as ContentManagerEditViewDataManagerContext } from './content-manager/contexts/ContentManagerEditViewDataManagerContext';
|
export { default as ContentManagerEditViewDataManagerContext } from './content-manager/contexts/ContentManagerEditViewDataManagerContext';
|
||||||
export { default as useContentManagerEditViewDataManager } from './content-manager/hooks/useContentManagerEditViewDataManager';
|
export { default as useCMEditViewDataManager } from './content-manager/hooks/useCMEditViewDataManager';
|
||||||
export { getType };
|
export { getType };
|
||||||
export { getOtherInfos };
|
export { getOtherInfos };
|
||||||
|
@ -12,7 +12,7 @@ import { Row } from '@strapi/parts/Row';
|
|||||||
import { Stack } from '@strapi/parts/Stack';
|
import { Stack } from '@strapi/parts/Stack';
|
||||||
import AlertWarningIcon from '@strapi/icons/AlertWarningIcon';
|
import AlertWarningIcon from '@strapi/icons/AlertWarningIcon';
|
||||||
import Duplicate from '@strapi/icons/Duplicate';
|
import Duplicate from '@strapi/icons/Duplicate';
|
||||||
import { useContentManagerEditViewDataManager, useNotification } from '@strapi/helper-plugin';
|
import { useCMEditViewDataManager, useNotification } from '@strapi/helper-plugin';
|
||||||
import { axiosInstance, getTrad } from '../../../utils';
|
import { axiosInstance, getTrad } from '../../../utils';
|
||||||
import { cleanData, generateOptions } from './utils';
|
import { cleanData, generateOptions } from './utils';
|
||||||
|
|
||||||
@ -41,7 +41,7 @@ const Content = ({ appLocales, currentLocale, localizations, readPermissions })
|
|||||||
const toggleNotification = useNotification();
|
const toggleNotification = useNotification();
|
||||||
const { formatMessage } = useIntl();
|
const { formatMessage } = useIntl();
|
||||||
const dispatch = useDispatch();
|
const dispatch = useDispatch();
|
||||||
const { allLayoutData, slug } = useContentManagerEditViewDataManager();
|
const { allLayoutData, slug } = useCMEditViewDataManager();
|
||||||
const [isLoading, setIsLoading] = useState(false);
|
const [isLoading, setIsLoading] = useState(false);
|
||||||
const [isOpen, setIsOpen] = useState(false);
|
const [isOpen, setIsOpen] = useState(false);
|
||||||
const [value, setValue] = useState(options[0]?.value || '');
|
const [value, setValue] = useState(options[0]?.value || '');
|
||||||
|
@ -3,19 +3,13 @@ import get from 'lodash/get';
|
|||||||
import has from 'lodash/has';
|
import has from 'lodash/has';
|
||||||
import { useSelector } from 'react-redux';
|
import { useSelector } from 'react-redux';
|
||||||
import { useParams } from 'react-router-dom';
|
import { useParams } from 'react-router-dom';
|
||||||
import { useContentManagerEditViewDataManager, useQueryParams } from '@strapi/helper-plugin';
|
import { useCMEditViewDataManager, useQueryParams } from '@strapi/helper-plugin';
|
||||||
import selectI18NLocales from '../../selectors/selectI18nLocales';
|
import selectI18NLocales from '../../selectors/selectI18nLocales';
|
||||||
import useContentTypePermissions from '../../hooks/useContentTypePermissions';
|
import useContentTypePermissions from '../../hooks/useContentTypePermissions';
|
||||||
import CMEditViewLocalePicker from './CMEditViewLocalePicker';
|
import CMEditViewLocalePicker from './CMEditViewLocalePicker';
|
||||||
|
|
||||||
const CMEditViewInjectedComponents = () => {
|
const CMEditViewInjectedComponents = () => {
|
||||||
const {
|
const { layout, modifiedData, initialData, slug, isSingleType } = useCMEditViewDataManager();
|
||||||
layout,
|
|
||||||
modifiedData,
|
|
||||||
initialData,
|
|
||||||
slug,
|
|
||||||
isSingleType,
|
|
||||||
} = useContentManagerEditViewDataManager();
|
|
||||||
const { createPermissions, readPermissions } = useContentTypePermissions(slug);
|
const { createPermissions, readPermissions } = useContentTypePermissions(slug);
|
||||||
const locales = useSelector(selectI18NLocales);
|
const locales = useSelector(selectI18NLocales);
|
||||||
const params = useParams();
|
const params = useParams();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user