mirror of
https://github.com/Unleash/unleash.git
synced 2025-05-22 01:16:07 +02:00
Merge pull request #628 from Unleash/update/create-screens-submit-buttons
fix: update buttons order in new screens
This commit is contained in:
commit
bbde9f00ec
@ -29,7 +29,7 @@ export const useStyles = makeStyles(theme => ({
|
|||||||
justifyContent: 'flex-end',
|
justifyContent: 'flex-end',
|
||||||
},
|
},
|
||||||
cancelButton: {
|
cancelButton: {
|
||||||
marginRight: '1.5rem',
|
marginLeft: '1.5rem',
|
||||||
},
|
},
|
||||||
inputDescription: {
|
inputDescription: {
|
||||||
marginBottom: '0.5rem',
|
marginBottom: '0.5rem',
|
||||||
|
@ -122,10 +122,10 @@ const ApiTokenForm: React.FC<IApiTokenFormProps> = ({
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className={styles.buttonContainer}>
|
<div className={styles.buttonContainer}>
|
||||||
|
{children}
|
||||||
<Button onClick={handleCancel} className={styles.cancelButton}>
|
<Button onClick={handleCancel} className={styles.cancelButton}>
|
||||||
Cancel
|
Cancel
|
||||||
</Button>
|
</Button>
|
||||||
{children}
|
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
);
|
);
|
||||||
|
@ -97,7 +97,6 @@ const CreateApiToken = () => {
|
|||||||
clearErrors={clearErrors}
|
clearErrors={clearErrors}
|
||||||
>
|
>
|
||||||
<PermissionButton
|
<PermissionButton
|
||||||
onClick={handleSubmit}
|
|
||||||
permission={ADMIN}
|
permission={ADMIN}
|
||||||
type="submit"
|
type="submit"
|
||||||
>
|
>
|
||||||
|
@ -5,6 +5,8 @@ import ProjectRoleForm from '../ProjectRoleForm/ProjectRoleForm';
|
|||||||
import useProjectRoleForm from '../hooks/useProjectRoleForm';
|
import useProjectRoleForm from '../hooks/useProjectRoleForm';
|
||||||
import useUiConfig from '../../../../hooks/api/getters/useUiConfig/useUiConfig';
|
import useUiConfig from '../../../../hooks/api/getters/useUiConfig/useUiConfig';
|
||||||
import useToast from '../../../../hooks/useToast';
|
import useToast from '../../../../hooks/useToast';
|
||||||
|
import PermissionButton from '../../../common/PermissionButton/PermissionButton';
|
||||||
|
import { ADMIN } from '../../../providers/AccessProvider/permissions';
|
||||||
|
|
||||||
const CreateProjectRole = () => {
|
const CreateProjectRole = () => {
|
||||||
/* @ts-ignore */
|
/* @ts-ignore */
|
||||||
@ -89,11 +91,15 @@ const CreateProjectRole = () => {
|
|||||||
handlePermissionChange={handlePermissionChange}
|
handlePermissionChange={handlePermissionChange}
|
||||||
checkAllProjectPermissions={checkAllProjectPermissions}
|
checkAllProjectPermissions={checkAllProjectPermissions}
|
||||||
checkAllEnvironmentPermissions={checkAllEnvironmentPermissions}
|
checkAllEnvironmentPermissions={checkAllEnvironmentPermissions}
|
||||||
submitButtonText="Create"
|
mode="Create"
|
||||||
clearErrors={clearErrors}
|
clearErrors={clearErrors}
|
||||||
validateNameUniqueness={validateNameUniqueness}
|
validateNameUniqueness={validateNameUniqueness}
|
||||||
getRoleKey={getRoleKey}
|
getRoleKey={getRoleKey}
|
||||||
/>
|
>
|
||||||
|
<PermissionButton permission={ADMIN} type="submit">
|
||||||
|
Create role
|
||||||
|
</PermissionButton>
|
||||||
|
</ProjectRoleForm>
|
||||||
</FormTemplate>
|
</FormTemplate>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
@ -11,6 +11,8 @@ import useProjectRole from '../../../../hooks/api/getters/useProjectRole/useProj
|
|||||||
import { IPermission } from '../../../../interfaces/project';
|
import { IPermission } from '../../../../interfaces/project';
|
||||||
import useUiConfig from '../../../../hooks/api/getters/useUiConfig/useUiConfig';
|
import useUiConfig from '../../../../hooks/api/getters/useUiConfig/useUiConfig';
|
||||||
import useToast from '../../../../hooks/useToast';
|
import useToast from '../../../../hooks/useToast';
|
||||||
|
import PermissionButton from '../../../common/PermissionButton/PermissionButton';
|
||||||
|
import { ADMIN } from '../../../providers/AccessProvider/permissions';
|
||||||
|
|
||||||
const EditProjectRole = () => {
|
const EditProjectRole = () => {
|
||||||
const { uiConfig } = useUiConfig();
|
const { uiConfig } = useUiConfig();
|
||||||
@ -117,11 +119,15 @@ to resources within a project"
|
|||||||
handlePermissionChange={handlePermissionChange}
|
handlePermissionChange={handlePermissionChange}
|
||||||
checkAllProjectPermissions={checkAllProjectPermissions}
|
checkAllProjectPermissions={checkAllProjectPermissions}
|
||||||
checkAllEnvironmentPermissions={checkAllEnvironmentPermissions}
|
checkAllEnvironmentPermissions={checkAllEnvironmentPermissions}
|
||||||
submitButtonText="Edit"
|
mode="Edit"
|
||||||
errors={errors}
|
errors={errors}
|
||||||
clearErrors={clearErrors}
|
clearErrors={clearErrors}
|
||||||
getRoleKey={getRoleKey}
|
getRoleKey={getRoleKey}
|
||||||
/>
|
>
|
||||||
|
<PermissionButton permission={ADMIN} type="submit">
|
||||||
|
Edit role
|
||||||
|
</PermissionButton>
|
||||||
|
</ProjectRoleForm>
|
||||||
</FormTemplate>
|
</FormTemplate>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
@ -17,7 +17,7 @@ export const useStyles = makeStyles(theme => ({
|
|||||||
justifyContent: 'flex-end',
|
justifyContent: 'flex-end',
|
||||||
},
|
},
|
||||||
cancelButton: {
|
cancelButton: {
|
||||||
marginRight: '1.5rem',
|
marginLeft: '1.5rem',
|
||||||
},
|
},
|
||||||
inputDescription: {
|
inputDescription: {
|
||||||
marginBottom: '0.5rem',
|
marginBottom: '0.5rem',
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
import PermissionButton from '../../../common/PermissionButton/PermissionButton';
|
|
||||||
import { ADMIN } from '../../../providers/AccessProvider/permissions';
|
|
||||||
import Input from '../../../common/Input/Input';
|
import Input from '../../../common/Input/Input';
|
||||||
import EnvironmentPermissionAccordion from './EnvironmentPermissionAccordion/EnvironmentPermissionAccordion';
|
import EnvironmentPermissionAccordion from './EnvironmentPermissionAccordion/EnvironmentPermissionAccordion';
|
||||||
import {
|
import {
|
||||||
@ -31,13 +29,14 @@ interface IProjectRoleForm {
|
|||||||
handleSubmit: (e: any) => void;
|
handleSubmit: (e: any) => void;
|
||||||
handleCancel: () => void;
|
handleCancel: () => void;
|
||||||
errors: { [key: string]: string };
|
errors: { [key: string]: string };
|
||||||
submitButtonText: string;
|
mode?: string;
|
||||||
clearErrors: () => void;
|
clearErrors: () => void;
|
||||||
validateNameUniqueness?: () => void;
|
validateNameUniqueness?: () => void;
|
||||||
getRoleKey: (permission: { id: number; environment?: string }) => string;
|
getRoleKey: (permission: { id: number; environment?: string }) => string;
|
||||||
}
|
}
|
||||||
|
|
||||||
const ProjectRoleForm = ({
|
const ProjectRoleForm: React.FC<IProjectRoleForm> = ({
|
||||||
|
children,
|
||||||
handleSubmit,
|
handleSubmit,
|
||||||
handleCancel,
|
handleCancel,
|
||||||
roleName,
|
roleName,
|
||||||
@ -49,7 +48,7 @@ const ProjectRoleForm = ({
|
|||||||
checkAllProjectPermissions,
|
checkAllProjectPermissions,
|
||||||
checkAllEnvironmentPermissions,
|
checkAllEnvironmentPermissions,
|
||||||
errors,
|
errors,
|
||||||
submitButtonText,
|
mode,
|
||||||
validateNameUniqueness,
|
validateNameUniqueness,
|
||||||
clearErrors,
|
clearErrors,
|
||||||
getRoleKey,
|
getRoleKey,
|
||||||
@ -173,16 +172,10 @@ const ProjectRoleForm = ({
|
|||||||
<h3 className={styles.header}>Environment permissions</h3>
|
<h3 className={styles.header}>Environment permissions</h3>
|
||||||
<div>{renderEnvironmentPermissions()}</div>
|
<div>{renderEnvironmentPermissions()}</div>
|
||||||
<div className={styles.buttonContainer}>
|
<div className={styles.buttonContainer}>
|
||||||
|
{children}
|
||||||
<Button onClick={handleCancel} className={styles.cancelButton}>
|
<Button onClick={handleCancel} className={styles.cancelButton}>
|
||||||
Cancel
|
Cancel
|
||||||
</Button>
|
</Button>
|
||||||
<PermissionButton
|
|
||||||
onClick={handleSubmit}
|
|
||||||
permission={ADMIN}
|
|
||||||
type="submit"
|
|
||||||
>
|
|
||||||
{submitButtonText} role
|
|
||||||
</PermissionButton>
|
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
);
|
);
|
||||||
|
@ -99,7 +99,6 @@ const CreateUser = () => {
|
|||||||
clearErrors={clearErrors}
|
clearErrors={clearErrors}
|
||||||
>
|
>
|
||||||
<PermissionButton
|
<PermissionButton
|
||||||
onClick={handleSubmit}
|
|
||||||
permission={ADMIN}
|
permission={ADMIN}
|
||||||
type="submit"
|
type="submit"
|
||||||
>
|
>
|
||||||
|
@ -100,7 +100,6 @@ const EditUser = () => {
|
|||||||
mode={EDIT}
|
mode={EDIT}
|
||||||
>
|
>
|
||||||
<PermissionButton
|
<PermissionButton
|
||||||
onClick={handleSubmit}
|
|
||||||
permission={ADMIN}
|
permission={ADMIN}
|
||||||
type="submit"
|
type="submit"
|
||||||
>
|
>
|
||||||
|
@ -22,7 +22,7 @@ export const useStyles = makeStyles(theme => ({
|
|||||||
justifyContent: 'flex-end',
|
justifyContent: 'flex-end',
|
||||||
},
|
},
|
||||||
cancelButton: {
|
cancelButton: {
|
||||||
marginRight: '1.5rem',
|
marginLeft: '1.5rem',
|
||||||
},
|
},
|
||||||
inputDescription: {
|
inputDescription: {
|
||||||
marginBottom: '0.5rem',
|
marginBottom: '0.5rem',
|
||||||
|
@ -149,10 +149,10 @@ const UserForm: React.FC<IUserForm> = ({
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className={styles.buttonContainer}>
|
<div className={styles.buttonContainer}>
|
||||||
|
{children}
|
||||||
<Button onClick={handleCancel} className={styles.cancelButton}>
|
<Button onClick={handleCancel} className={styles.cancelButton}>
|
||||||
Cancel
|
Cancel
|
||||||
</Button>
|
</Button>
|
||||||
{children}
|
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
);
|
);
|
||||||
|
@ -38,7 +38,7 @@ export const useStyles = makeStyles(theme => ({
|
|||||||
justifyContent: 'flex-end',
|
justifyContent: 'flex-end',
|
||||||
},
|
},
|
||||||
cancelButton: {
|
cancelButton: {
|
||||||
marginRight: '1.5rem',
|
marginLeft: '1.5rem',
|
||||||
},
|
},
|
||||||
inputDescription: {
|
inputDescription: {
|
||||||
marginBottom: '0.5rem',
|
marginBottom: '0.5rem',
|
||||||
|
@ -185,10 +185,10 @@ const ContextForm: React.FC<IContextForm> = ({
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className={styles.buttonContainer}>
|
<div className={styles.buttonContainer}>
|
||||||
|
{children}
|
||||||
<Button onClick={handleCancel} className={styles.cancelButton}>
|
<Button onClick={handleCancel} className={styles.cancelButton}>
|
||||||
Cancel
|
Cancel
|
||||||
</Button>
|
</Button>
|
||||||
{children}
|
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
);
|
);
|
||||||
|
@ -102,7 +102,6 @@ const CreateEnvironment = () => {
|
|||||||
clearErrors={clearErrors}
|
clearErrors={clearErrors}
|
||||||
>
|
>
|
||||||
<PermissionButton
|
<PermissionButton
|
||||||
onClick={handleSubmit}
|
|
||||||
permission={ADMIN}
|
permission={ADMIN}
|
||||||
type="submit"
|
type="submit"
|
||||||
>
|
>
|
||||||
|
@ -86,7 +86,6 @@ const EditEnvironment = () => {
|
|||||||
clearErrors={clearErrors}
|
clearErrors={clearErrors}
|
||||||
>
|
>
|
||||||
<PermissionButton
|
<PermissionButton
|
||||||
onClick={handleSubmit}
|
|
||||||
permission={ADMIN}
|
permission={ADMIN}
|
||||||
type="submit"
|
type="submit"
|
||||||
>
|
>
|
||||||
|
@ -22,7 +22,7 @@ export const useStyles = makeStyles(theme => ({
|
|||||||
justifyContent: 'flex-end',
|
justifyContent: 'flex-end',
|
||||||
},
|
},
|
||||||
cancelButton: {
|
cancelButton: {
|
||||||
marginRight: '1.5rem',
|
marginLeft: '1.5rem',
|
||||||
},
|
},
|
||||||
inputDescription: {
|
inputDescription: {
|
||||||
marginBottom: '0.5rem',
|
marginBottom: '0.5rem',
|
||||||
|
@ -62,10 +62,10 @@ const EnvironmentForm: React.FC<IEnvironmentForm> = ({
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className={styles.buttonContainer}>
|
<div className={styles.buttonContainer}>
|
||||||
|
{children}
|
||||||
<Button onClick={handleCancel} className={styles.cancelButton}>
|
<Button onClick={handleCancel} className={styles.cancelButton}>
|
||||||
Cancel
|
Cancel
|
||||||
</Button>
|
</Button>
|
||||||
{children}
|
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
);
|
);
|
||||||
|
@ -6,6 +6,8 @@ import useProjectForm from '../hooks/useProjectForm';
|
|||||||
import useUiConfig from '../../../../hooks/api/getters/useUiConfig/useUiConfig';
|
import useUiConfig from '../../../../hooks/api/getters/useUiConfig/useUiConfig';
|
||||||
import useToast from '../../../../hooks/useToast';
|
import useToast from '../../../../hooks/useToast';
|
||||||
import useUser from '../../../../hooks/api/getters/useUser/useUser';
|
import useUser from '../../../../hooks/api/getters/useUser/useUser';
|
||||||
|
import PermissionButton from '../../../common/PermissionButton/PermissionButton';
|
||||||
|
import { CREATE_PROJECT } from '../../../providers/AccessProvider/permissions';
|
||||||
|
|
||||||
const CreateProject = () => {
|
const CreateProject = () => {
|
||||||
/* @ts-ignore */
|
/* @ts-ignore */
|
||||||
@ -34,6 +36,7 @@ const CreateProject = () => {
|
|||||||
clearErrors();
|
clearErrors();
|
||||||
const validName = validateName();
|
const validName = validateName();
|
||||||
const validId = await validateIdUniqueness();
|
const validId = await validateIdUniqueness();
|
||||||
|
|
||||||
if (validName && validId) {
|
if (validName && validId) {
|
||||||
const payload = getProjectPayload();
|
const payload = getProjectPayload();
|
||||||
try {
|
try {
|
||||||
@ -62,7 +65,7 @@ const CreateProject = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const handleCancel = () => {
|
const handleCancel = () => {
|
||||||
history.push('/projects');
|
history.goBack();
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@ -83,10 +86,14 @@ const CreateProject = () => {
|
|||||||
setProjectName={setProjectName}
|
setProjectName={setProjectName}
|
||||||
projectDesc={projectDesc}
|
projectDesc={projectDesc}
|
||||||
setProjectDesc={setProjectDesc}
|
setProjectDesc={setProjectDesc}
|
||||||
submitButtonText="Create"
|
mode="Create"
|
||||||
clearErrors={clearErrors}
|
clearErrors={clearErrors}
|
||||||
validateIdUniqueness={validateIdUniqueness}
|
validateIdUniqueness={validateIdUniqueness}
|
||||||
/>
|
>
|
||||||
|
<PermissionButton permission={CREATE_PROJECT} type="submit">
|
||||||
|
Create project
|
||||||
|
</PermissionButton>
|
||||||
|
</ProjectForm>
|
||||||
</FormTemplate>
|
</FormTemplate>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
@ -6,6 +6,8 @@ import useProjectForm from '../hooks/useProjectForm';
|
|||||||
import useProject from '../../../../hooks/api/getters/useProject/useProject';
|
import useProject from '../../../../hooks/api/getters/useProject/useProject';
|
||||||
import useUiConfig from '../../../../hooks/api/getters/useUiConfig/useUiConfig';
|
import useUiConfig from '../../../../hooks/api/getters/useUiConfig/useUiConfig';
|
||||||
import useToast from '../../../../hooks/useToast';
|
import useToast from '../../../../hooks/useToast';
|
||||||
|
import PermissionButton from '../../../common/PermissionButton/PermissionButton';
|
||||||
|
import { UPDATE_PROJECT } from '../../../../store/project/actions';
|
||||||
|
|
||||||
const EditProject = () => {
|
const EditProject = () => {
|
||||||
const { uiConfig } = useUiConfig();
|
const { uiConfig } = useUiConfig();
|
||||||
@ -24,6 +26,7 @@ const EditProject = () => {
|
|||||||
clearErrors,
|
clearErrors,
|
||||||
validateIdUniqueness,
|
validateIdUniqueness,
|
||||||
validateName,
|
validateName,
|
||||||
|
validateProjectId,
|
||||||
errors,
|
errors,
|
||||||
} = useProjectForm(id, project.name, project.description);
|
} = useProjectForm(id, project.name, project.description);
|
||||||
|
|
||||||
@ -44,8 +47,9 @@ const EditProject = () => {
|
|||||||
const payload = getProjectPayload();
|
const payload = getProjectPayload();
|
||||||
|
|
||||||
const validName = validateName();
|
const validName = validateName();
|
||||||
|
const validId = validateProjectId();
|
||||||
|
|
||||||
if (validName) {
|
if (validName && validId) {
|
||||||
try {
|
try {
|
||||||
await editProject(id, payload);
|
await editProject(id, payload);
|
||||||
refetch();
|
refetch();
|
||||||
@ -82,10 +86,17 @@ const EditProject = () => {
|
|||||||
setProjectName={setProjectName}
|
setProjectName={setProjectName}
|
||||||
projectDesc={projectDesc}
|
projectDesc={projectDesc}
|
||||||
setProjectDesc={setProjectDesc}
|
setProjectDesc={setProjectDesc}
|
||||||
submitButtonText="Edit"
|
mode="Edit"
|
||||||
clearErrors={clearErrors}
|
clearErrors={clearErrors}
|
||||||
validateIdUniqueness={validateIdUniqueness}
|
validateIdUniqueness={validateIdUniqueness}
|
||||||
/>
|
>
|
||||||
|
<PermissionButton
|
||||||
|
permission={UPDATE_PROJECT}
|
||||||
|
type="submit"
|
||||||
|
>
|
||||||
|
Edit project
|
||||||
|
</PermissionButton>
|
||||||
|
</ProjectForm>
|
||||||
</FormTemplate>
|
</FormTemplate>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
@ -22,7 +22,7 @@ export const useStyles = makeStyles(theme => ({
|
|||||||
justifyContent: 'flex-end',
|
justifyContent: 'flex-end',
|
||||||
},
|
},
|
||||||
cancelButton: {
|
cancelButton: {
|
||||||
marginRight: '1.5rem',
|
marginLeft: '1.5rem',
|
||||||
},
|
},
|
||||||
inputDescription: {
|
inputDescription: {
|
||||||
marginBottom: '0.5rem',
|
marginBottom: '0.5rem',
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
import PermissionButton from '../../../common/PermissionButton/PermissionButton';
|
|
||||||
import { CREATE_PROJECT } from '../../../providers/AccessProvider/permissions';
|
|
||||||
import Input from '../../../common/Input/Input';
|
import Input from '../../../common/Input/Input';
|
||||||
import { TextField, Button } from '@material-ui/core';
|
import { TextField, Button } from '@material-ui/core';
|
||||||
import { useStyles } from './ProjectForm.style';
|
import { useStyles } from './ProjectForm.style';
|
||||||
@ -16,12 +14,13 @@ interface IProjectForm {
|
|||||||
handleSubmit: (e: any) => void;
|
handleSubmit: (e: any) => void;
|
||||||
handleCancel: () => void;
|
handleCancel: () => void;
|
||||||
errors: { [key: string]: string };
|
errors: { [key: string]: string };
|
||||||
submitButtonText: string;
|
mode: string;
|
||||||
clearErrors: () => void;
|
clearErrors: () => void;
|
||||||
validateIdUniqueness: () => void;
|
validateIdUniqueness: () => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
const ProjectForm = ({
|
const ProjectForm: React.FC<IProjectForm> = ({
|
||||||
|
children,
|
||||||
handleSubmit,
|
handleSubmit,
|
||||||
handleCancel,
|
handleCancel,
|
||||||
projectId,
|
projectId,
|
||||||
@ -31,10 +30,10 @@ const ProjectForm = ({
|
|||||||
setProjectName,
|
setProjectName,
|
||||||
setProjectDesc,
|
setProjectDesc,
|
||||||
errors,
|
errors,
|
||||||
submitButtonText,
|
mode,
|
||||||
validateIdUniqueness,
|
validateIdUniqueness,
|
||||||
clearErrors,
|
clearErrors,
|
||||||
}: IProjectForm) => {
|
}) => {
|
||||||
const styles = useStyles();
|
const styles = useStyles();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@ -54,7 +53,7 @@ const ProjectForm = ({
|
|||||||
errorText={errors.id}
|
errorText={errors.id}
|
||||||
onFocus={() => clearErrors()}
|
onFocus={() => clearErrors()}
|
||||||
onBlur={validateIdUniqueness}
|
onBlur={validateIdUniqueness}
|
||||||
disabled={submitButtonText === 'Edit'}
|
disabled={mode === 'Edit'}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<p className={styles.inputDescription}>
|
<p className={styles.inputDescription}>
|
||||||
@ -85,16 +84,10 @@ const ProjectForm = ({
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className={styles.buttonContainer}>
|
<div className={styles.buttonContainer}>
|
||||||
|
{children}
|
||||||
<Button onClick={handleCancel} className={styles.cancelButton}>
|
<Button onClick={handleCancel} className={styles.cancelButton}>
|
||||||
Cancel
|
Cancel
|
||||||
</Button>
|
</Button>
|
||||||
<PermissionButton
|
|
||||||
onClick={handleSubmit}
|
|
||||||
permission={CREATE_PROJECT}
|
|
||||||
type="submit"
|
|
||||||
>
|
|
||||||
{submitButtonText} project
|
|
||||||
</PermissionButton>
|
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
);
|
);
|
||||||
|
@ -39,6 +39,10 @@ const useProjectForm = (
|
|||||||
const NAME_EXISTS_ERROR = 'Error: A project with this id already exists.';
|
const NAME_EXISTS_ERROR = 'Error: A project with this id already exists.';
|
||||||
|
|
||||||
const validateIdUniqueness = async () => {
|
const validateIdUniqueness = async () => {
|
||||||
|
if (projectId.length === 0) {
|
||||||
|
setErrors(prev => ({ ...prev, id: 'Id can not be empty.' }));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
await validateId(getProjectPayload());
|
await validateId(getProjectPayload());
|
||||||
return true;
|
return true;
|
||||||
@ -52,12 +56,20 @@ const useProjectForm = (
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
const validateProjectId = () => {
|
||||||
|
if (projectId.length === 0) {
|
||||||
|
setErrors(prev => ({ ...prev, id: 'id can not be empty.' }));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
const validateName = () => {
|
const validateName = () => {
|
||||||
if (projectName.length === 0) {
|
if (projectName.length === 0) {
|
||||||
setErrors(prev => ({ ...prev, name: 'Name can not be empty.' }));
|
setErrors(prev => ({ ...prev, name: 'Name can not be empty.' }));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -74,6 +86,7 @@ const useProjectForm = (
|
|||||||
setProjectDesc,
|
setProjectDesc,
|
||||||
getProjectPayload,
|
getProjectPayload,
|
||||||
validateName,
|
validateName,
|
||||||
|
validateProjectId,
|
||||||
validateIdUniqueness,
|
validateIdUniqueness,
|
||||||
clearErrors,
|
clearErrors,
|
||||||
errors,
|
errors,
|
||||||
|
@ -75,12 +75,9 @@ const CreateTagType = () => {
|
|||||||
setTagDesc={setTagDesc}
|
setTagDesc={setTagDesc}
|
||||||
mode="Create"
|
mode="Create"
|
||||||
clearErrors={clearErrors}
|
clearErrors={clearErrors}
|
||||||
|
validateNameUniqueness={validateNameUniqueness}
|
||||||
>
|
>
|
||||||
<PermissionButton
|
<PermissionButton permission={UPDATE_TAG_TYPE} type="submit">
|
||||||
onClick={handleSubmit}
|
|
||||||
permission={UPDATE_TAG_TYPE}
|
|
||||||
type="submit"
|
|
||||||
>
|
|
||||||
Create type
|
Create type
|
||||||
</PermissionButton>
|
</PermissionButton>
|
||||||
</TagTypeForm>
|
</TagTypeForm>
|
||||||
|
@ -75,7 +75,6 @@ const EditTagType = () => {
|
|||||||
clearErrors={clearErrors}
|
clearErrors={clearErrors}
|
||||||
>
|
>
|
||||||
<PermissionButton
|
<PermissionButton
|
||||||
onClick={handleSubmit}
|
|
||||||
permission={UPDATE_TAG_TYPE}
|
permission={UPDATE_TAG_TYPE}
|
||||||
type="submit"
|
type="submit"
|
||||||
>
|
>
|
||||||
|
@ -22,7 +22,7 @@ export const useStyles = makeStyles(theme => ({
|
|||||||
justifyContent: 'flex-end',
|
justifyContent: 'flex-end',
|
||||||
},
|
},
|
||||||
cancelButton: {
|
cancelButton: {
|
||||||
marginRight: '1.5rem',
|
marginLeft: '1.5rem',
|
||||||
},
|
},
|
||||||
inputDescription: {
|
inputDescription: {
|
||||||
marginBottom: '0.5rem',
|
marginBottom: '0.5rem',
|
||||||
|
@ -16,6 +16,7 @@ interface ITagTypeForm {
|
|||||||
errors: { [key: string]: string };
|
errors: { [key: string]: string };
|
||||||
mode: string;
|
mode: string;
|
||||||
clearErrors: () => void;
|
clearErrors: () => void;
|
||||||
|
validateNameUniqueness?: () => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
const TagTypeForm: React.FC<ITagTypeForm> = ({
|
const TagTypeForm: React.FC<ITagTypeForm> = ({
|
||||||
@ -28,6 +29,7 @@ const TagTypeForm: React.FC<ITagTypeForm> = ({
|
|||||||
setTagDesc,
|
setTagDesc,
|
||||||
errors,
|
errors,
|
||||||
mode,
|
mode,
|
||||||
|
validateNameUniqueness,
|
||||||
clearErrors,
|
clearErrors,
|
||||||
}) => {
|
}) => {
|
||||||
const styles = useStyles();
|
const styles = useStyles();
|
||||||
@ -49,11 +51,10 @@ const TagTypeForm: React.FC<ITagTypeForm> = ({
|
|||||||
errorText={errors.name}
|
errorText={errors.name}
|
||||||
onFocus={() => clearErrors()}
|
onFocus={() => clearErrors()}
|
||||||
disabled={mode === EDIT}
|
disabled={mode === EDIT}
|
||||||
|
onBlur={validateNameUniqueness}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<p className={styles.inputDescription}>
|
<p className={styles.inputDescription}>What is this tag for?</p>
|
||||||
What is this role for?
|
|
||||||
</p>
|
|
||||||
<TextField
|
<TextField
|
||||||
className={styles.input}
|
className={styles.input}
|
||||||
label="Tag description"
|
label="Tag description"
|
||||||
@ -65,10 +66,10 @@ const TagTypeForm: React.FC<ITagTypeForm> = ({
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className={styles.buttonContainer}>
|
<div className={styles.buttonContainer}>
|
||||||
|
{children}
|
||||||
<Button onClick={handleCancel} className={styles.cancelButton}>
|
<Button onClick={handleCancel} className={styles.cancelButton}>
|
||||||
Cancel
|
Cancel
|
||||||
</Button>
|
</Button>
|
||||||
{children}
|
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
);
|
);
|
||||||
|
Loading…
Reference in New Issue
Block a user