Merge pull request #2256 from automatisch/AUT-1384
feat: disable inputs when data is loading
This commit is contained in:
@@ -39,14 +39,14 @@ const PermissionCatalogFieldLoader = () => {
|
|||||||
{[...Array(5)].map((action, index) => (
|
{[...Array(5)].map((action, index) => (
|
||||||
<TableCell key={index} align="center">
|
<TableCell key={index} align="center">
|
||||||
<Typography variant="subtitle2">
|
<Typography variant="subtitle2">
|
||||||
<ControlledCheckbox name="value" />
|
<ControlledCheckbox name="value" disabled />
|
||||||
</Typography>
|
</Typography>
|
||||||
</TableCell>
|
</TableCell>
|
||||||
))}
|
))}
|
||||||
|
|
||||||
<TableCell>
|
<TableCell>
|
||||||
<Stack direction="row" gap={1} justifyContent="right">
|
<Stack direction="row" gap={1} justifyContent="right">
|
||||||
<IconButton color="info" size="small">
|
<IconButton color="info" size="small" disabled>
|
||||||
<SettingsIcon />
|
<SettingsIcon />
|
||||||
</IconButton>
|
</IconButton>
|
||||||
</Stack>
|
</Stack>
|
||||||
|
|||||||
@@ -21,13 +21,15 @@ const PermissionCatalogField = ({
|
|||||||
name = 'permissions',
|
name = 'permissions',
|
||||||
disabled = false,
|
disabled = false,
|
||||||
syncIsCreator = false,
|
syncIsCreator = false,
|
||||||
|
loading = false,
|
||||||
}) => {
|
}) => {
|
||||||
const { data, isLoading: isPermissionCatalogLoading } =
|
const { data, isLoading: isPermissionCatalogLoading } =
|
||||||
usePermissionCatalog();
|
usePermissionCatalog();
|
||||||
const permissionCatalog = data?.data;
|
const permissionCatalog = data?.data;
|
||||||
const [dialogName, setDialogName] = React.useState();
|
const [dialogName, setDialogName] = React.useState();
|
||||||
|
|
||||||
if (isPermissionCatalogLoading) return <PermissionCatalogFieldLoader />;
|
if (isPermissionCatalogLoading || loading)
|
||||||
|
return <PermissionCatalogFieldLoader />;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<TableContainer component={Paper}>
|
<TableContainer component={Paper}>
|
||||||
@@ -118,6 +120,7 @@ PermissionCatalogField.propTypes = {
|
|||||||
name: PropTypes.string,
|
name: PropTypes.string,
|
||||||
disabled: PropTypes.bool,
|
disabled: PropTypes.bool,
|
||||||
syncIsCreator: PropTypes.bool,
|
syncIsCreator: PropTypes.bool,
|
||||||
|
loading: PropTypes.bool,
|
||||||
};
|
};
|
||||||
|
|
||||||
export default PermissionCatalogField;
|
export default PermissionCatalogField;
|
||||||
|
|||||||
@@ -25,7 +25,8 @@ export default function CreateRole() {
|
|||||||
const enqueueSnackbar = useEnqueueSnackbar();
|
const enqueueSnackbar = useEnqueueSnackbar();
|
||||||
const { mutateAsync: createRole, isPending: isCreateRolePending } =
|
const { mutateAsync: createRole, isPending: isCreateRolePending } =
|
||||||
useAdminCreateRole();
|
useAdminCreateRole();
|
||||||
const { data: permissionCatalogData } = usePermissionCatalog();
|
const { data: permissionCatalogData, isLoading: isPermissionCatalogLoading } =
|
||||||
|
usePermissionCatalog();
|
||||||
|
|
||||||
const defaultValues = React.useMemo(
|
const defaultValues = React.useMemo(
|
||||||
() => ({
|
() => ({
|
||||||
@@ -91,6 +92,7 @@ export default function CreateRole() {
|
|||||||
label={formatMessage('roleForm.name')}
|
label={formatMessage('roleForm.name')}
|
||||||
fullWidth
|
fullWidth
|
||||||
data-test="name-input"
|
data-test="name-input"
|
||||||
|
disabled={isPermissionCatalogLoading}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<TextField
|
<TextField
|
||||||
@@ -98,6 +100,7 @@ export default function CreateRole() {
|
|||||||
label={formatMessage('roleForm.description')}
|
label={formatMessage('roleForm.description')}
|
||||||
fullWidth
|
fullWidth
|
||||||
data-test="description-input"
|
data-test="description-input"
|
||||||
|
disabled={isPermissionCatalogLoading}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<PermissionCatalogField name="computedPermissions" />
|
<PermissionCatalogField name="computedPermissions" />
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import LoadingButton from '@mui/lab/LoadingButton';
|
import LoadingButton from '@mui/lab/LoadingButton';
|
||||||
import Grid from '@mui/material/Grid';
|
import Grid from '@mui/material/Grid';
|
||||||
import Skeleton from '@mui/material/Skeleton';
|
|
||||||
import Stack from '@mui/material/Stack';
|
import Stack from '@mui/material/Stack';
|
||||||
import useEnqueueSnackbar from 'hooks/useEnqueueSnackbar';
|
import useEnqueueSnackbar from 'hooks/useEnqueueSnackbar';
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
@@ -30,7 +29,8 @@ export default function EditRole() {
|
|||||||
const { data: roleData, isLoading: isRoleLoading } = useRole({ roleId });
|
const { data: roleData, isLoading: isRoleLoading } = useRole({ roleId });
|
||||||
const { mutateAsync: updateRole, isPending: isUpdateRolePending } =
|
const { mutateAsync: updateRole, isPending: isUpdateRolePending } =
|
||||||
useAdminUpdateRole(roleId);
|
useAdminUpdateRole(roleId);
|
||||||
const { data: permissionCatalogData } = usePermissionCatalog();
|
const { data: permissionCatalogData, isLoading: isPermissionCatalogLoading } =
|
||||||
|
usePermissionCatalog();
|
||||||
const role = roleData?.data;
|
const role = roleData?.data;
|
||||||
const permissionCatalog = permissionCatalogData?.data;
|
const permissionCatalog = permissionCatalogData?.data;
|
||||||
const enqueueSnackbar = useEnqueueSnackbar();
|
const enqueueSnackbar = useEnqueueSnackbar();
|
||||||
@@ -84,36 +84,30 @@ export default function EditRole() {
|
|||||||
<Grid item xs={12} justifyContent="flex-end" sx={{ pt: 5 }}>
|
<Grid item xs={12} justifyContent="flex-end" sx={{ pt: 5 }}>
|
||||||
<Form defaultValues={defaultValues} onSubmit={handleRoleUpdate}>
|
<Form defaultValues={defaultValues} onSubmit={handleRoleUpdate}>
|
||||||
<Stack direction="column" gap={2}>
|
<Stack direction="column" gap={2}>
|
||||||
{isRoleLoading && (
|
<TextField
|
||||||
<>
|
disabled={
|
||||||
<Skeleton variant="rounded" height={55} />
|
role?.isAdmin || isRoleLoading || isPermissionCatalogLoading
|
||||||
<Skeleton variant="rounded" height={55} />
|
}
|
||||||
</>
|
required={true}
|
||||||
)}
|
name="name"
|
||||||
{!isRoleLoading && role && (
|
label={formatMessage('roleForm.name')}
|
||||||
<>
|
data-test="name-input"
|
||||||
<TextField
|
fullWidth
|
||||||
disabled={role.isAdmin}
|
/>
|
||||||
required={true}
|
<TextField
|
||||||
name="name"
|
disabled={
|
||||||
label={formatMessage('roleForm.name')}
|
role?.isAdmin || isRoleLoading || isPermissionCatalogLoading
|
||||||
data-test="name-input"
|
}
|
||||||
fullWidth
|
name="description"
|
||||||
/>
|
label={formatMessage('roleForm.description')}
|
||||||
|
data-test="description-input"
|
||||||
<TextField
|
fullWidth
|
||||||
disabled={role.isAdmin}
|
/>
|
||||||
name="description"
|
|
||||||
label={formatMessage('roleForm.description')}
|
|
||||||
data-test="description-input"
|
|
||||||
fullWidth
|
|
||||||
/>
|
|
||||||
</>
|
|
||||||
)}
|
|
||||||
<PermissionCatalogField
|
<PermissionCatalogField
|
||||||
name="computedPermissions"
|
name="computedPermissions"
|
||||||
disabled={role?.isAdmin}
|
disabled={role?.isAdmin}
|
||||||
syncIsCreator
|
syncIsCreator
|
||||||
|
loading={isRoleLoading}
|
||||||
/>
|
/>
|
||||||
<LoadingButton
|
<LoadingButton
|
||||||
type="submit"
|
type="submit"
|
||||||
|
|||||||
Reference in New Issue
Block a user