import React, { useState } from 'react'; import { Header } from '@buffetjs/custom'; import { Padded } from '@buffetjs/core'; import { Formik } from 'formik'; import { useIntl } from 'react-intl'; import { CheckPagePermissions, request } from 'strapi-helper-plugin'; import { useHistory } from 'react-router-dom'; import adminPermissions from '../../../../src/permissions'; import { useFetchPermissionsLayout } from '../../../../src/hooks'; import BaselineAlignement from '../../../../src/components/BaselineAlignement'; import ContainerFluid from '../../../../src/components/ContainerFluid'; import FormCard from '../../../../src/components/FormBloc'; import { ButtonWithNumber, Permissions } from '../../../../src/components/Roles'; import SizedInput from '../../../../src/components/SizedInput'; import { formatPermissionsToApi } from '../../../../src/utils'; import schema from './utils/schema'; const CreatePage = () => { const { formatMessage } = useIntl(); const [isSubmiting, setIsSubmiting] = useState(false); // @HichamELBSI Adding the layout since you might need it for the plugins sections const { goBack } = useHistory(); const { isLoading: isLayoutLoading, data: permissionsLayout } = useFetchPermissionsLayout(); const headerActions = (handleSubmit, handleReset) => [ { label: formatMessage({ id: 'app.components.Button.reset', defaultMessage: 'Reset', }), onClick: handleReset, color: 'cancel', type: 'button', }, { label: formatMessage({ id: 'app.components.Button.save', defaultMessage: 'Save', }), onClick: handleSubmit, color: 'success', type: 'submit', isLoading: isSubmiting, }, ]; const handleCreateRoleSubmit = data => { setIsSubmiting(true); Promise.resolve( request('/admin/roles', { method: 'POST', body: { name: data.name, description: data.description }, }) ) .then(res => { if (res.data.id && data.permissions) { return request(`/admin/roles/${res.data.id}/permissions`, { method: 'PUT', body: { permissions: formatPermissionsToApi(data.permissions) }, }); } return res; }) .then(() => { strapi.notification.success('Settings.roles.created'); goBack(); }) .catch(() => { strapi.notification.error('notification.error'); }) .finally(() => { setIsSubmiting(false); }); }; const actions = [ console.log('Open user modal')} key="user-button"> {formatMessage({ id: 'Settings.roles.form.button.users-with-role', defaultMessage: 'Users with this role', })} , ]; return ( {({ handleSubmit, values, errors, setFieldValue, handleReset, handleChange, handleBlur }) => (
{!isLayoutLoading && ( )} )} ); }; export default () => ( ); export { CreatePage };