Skip to content
Snippets Groups Projects
Commit 50c2f5da authored by Léo Banno-Cloutier's avatar Léo Banno-Cloutier Committed by Sébastien Blin
Browse files

CreateDialog: replace with TextField

Change-Id: I244dac3e2139fc27550504e0134d8d3ba7a583dc
parent 62ae7347
No related branches found
No related tags found
No related merge requests found
...@@ -6,38 +6,41 @@ import { ...@@ -6,38 +6,41 @@ import {
Dialog, Dialog,
DialogTitle, DialogTitle,
DialogContent, DialogContent,
FormControl,
InputLabel,
Input,
InputAdornment, InputAdornment,
DialogActions, DialogActions,
Button,
debounce, debounce,
TextField,
} from "@mui/material"; } from "@mui/material";
import { AllInbox } from "@mui/icons-material"; import { AllInbox } from "@mui/icons-material";
import { makeStyles } from "@mui/styles";
import configApiCall from "api"; import configApiCall from "api";
import { api_path_blueprints } from "globalUrls"; import { api_path_blueprints } from "globalUrls";
import headerLinksStyle from "assets/jss/material-dashboard-react/components/headerLinksStyle";
const styles = { import Button from "components/CustomButtons/Button.js";
...headerLinksStyle,
whiteButtonText: { const getHelperText = (disableCreate, blueprintName) => {
color: "white", if (disableCreate && blueprintName.length > 0) {
}, return i18next.t(
}; "blueprint_name_already_exists",
"Blueprint name already exists!"
);
}
if (disableCreate && blueprintName.length === 0) {
return i18next.t("blueprint_name_is_empty", "Blueprint name is empty");
}
const useStyles = makeStyles(styles); return "";
};
export default function CreateBlueprintDialog({ open, setOpen }) { export default function CreateBlueprintDialog({ open, setOpen }) {
const history = useHistory(); const history = useHistory();
const classes = useStyles();
const [blueprintName, setBlueprintName] = useState(""); const [blueprintName, setBlueprintName] = useState("");
const [blueprintNameExits, setBlueprintNameExits] = useState(false); const [blueprintNameExists, setBlueprintNameExists] = useState(false);
const [disableCreate, setDisableCreate] = useState(true); const [disableCreate, setDisableCreate] = useState(true);
const helperText = getHelperText(disableCreate, blueprintName);
const handleClose = () => { const handleClose = () => {
setOpen(false); setOpen(false);
}; };
...@@ -54,11 +57,11 @@ export default function CreateBlueprintDialog({ open, setOpen }) { ...@@ -54,11 +57,11 @@ export default function CreateBlueprintDialog({ open, setOpen }) {
) )
.then(() => { .then(() => {
setDisableCreate(true); setDisableCreate(true);
setBlueprintNameExits(true); setBlueprintNameExists(true);
}) })
.catch(() => { .catch(() => {
setDisableCreate(false); setDisableCreate(false);
setBlueprintNameExits(false); setBlueprintNameExists(false);
}); });
}; };
...@@ -119,41 +122,27 @@ export default function CreateBlueprintDialog({ open, setOpen }) { ...@@ -119,41 +122,27 @@ export default function CreateBlueprintDialog({ open, setOpen }) {
{i18next.t("create_blueprint", "Create blueprint")} {i18next.t("create_blueprint", "Create blueprint")}
</DialogTitle> </DialogTitle>
<DialogContent> <DialogContent>
<FormControl <TextField
className={classes.margin} autoFocus
size="medium" error={blueprintNameExists}
error={blueprintNameExits} margin="dense"
> id="blueprintName"
<InputLabel htmlFor="blueprintName"> label={i18next.t("blueprint_name", "Blueprint name")}
{i18next.t("blueprint_name", "Blueprint name")} helperText={helperText}
</InputLabel> type="text"
<Input variant="standard"
id="blueprintName" InputProps={{
placeholder={i18next.t("blueprint_name", "Blueprint name")} startAdornment: (
startAdornment={
<InputAdornment position="start"> <InputAdornment position="start">
<AllInbox /> <AllInbox />
</InputAdornment> </InputAdornment>
} ),
onChange={(e) => { }}
setBlueprintName(e.target.value); onChange={(e) => {
initCheckBlueprintNameExists(e.target.value); setBlueprintName(e.target.value);
}} initCheckBlueprintNameExists(e.target.value);
/> }}
</FormControl> />
{disableCreate && blueprintName.length > 0 && (
<p>
{i18next.t(
"blueprint_name_already_exists",
"Blueprint name already exists!"
)}
</p>
)}
{disableCreate && blueprintName.length === 0 && (
<p>
{i18next.t("blueprint_name_is_empty", "Blueprint name is empty")}
</p>
)}
</DialogContent> </DialogContent>
<DialogActions> <DialogActions>
<Button onClick={handleClose} color="primary"> <Button onClick={handleClose} color="primary">
...@@ -162,9 +151,7 @@ export default function CreateBlueprintDialog({ open, setOpen }) { ...@@ -162,9 +151,7 @@ export default function CreateBlueprintDialog({ open, setOpen }) {
<Button <Button
onClick={handleCreateBlueprint} onClick={handleCreateBlueprint}
color="info" color="info"
className={classes.whiteButtonText}
disabled={disableCreate} disabled={disableCreate}
autoFocus
> >
{i18next.t("create_blueprint", "Create blueprint")} {i18next.t("create_blueprint", "Create blueprint")}
</Button> </Button>
......
...@@ -5,12 +5,9 @@ import { ...@@ -5,12 +5,9 @@ import {
DialogTitle, DialogTitle,
DialogContent, DialogContent,
Grid, Grid,
FormControl,
InputLabel,
Input,
InputAdornment, InputAdornment,
Select,
DialogActions, DialogActions,
TextField,
} from "@mui/material"; } from "@mui/material";
import PeopleOutlineIcon from "@mui/icons-material/PeopleOutline"; import PeopleOutlineIcon from "@mui/icons-material/PeopleOutline";
import axios from "axios"; import axios from "axios";
...@@ -28,6 +25,17 @@ import auth from "auth"; ...@@ -28,6 +25,17 @@ import auth from "auth";
import * as tool from "../../tools"; import * as tool from "../../tools";
import Button from "components/CustomButtons/Button.js"; import Button from "components/CustomButtons/Button.js";
const getHelperText = (disableCreate, groupName) => {
if (disableCreate && groupName.length > 0) {
return i18next.t("group_name_already_exists", "Group name already exists!");
}
if (disableCreate && groupName.length === 0) {
return i18next.t("group_name_is_empty", "Group name is empty");
}
return "";
};
export default function CreateGroupDialog({ export default function CreateGroupDialog({
openCreate, openCreate,
setOpenCreate, setOpenCreate,
...@@ -45,6 +53,8 @@ export default function CreateGroupDialog({ ...@@ -45,6 +53,8 @@ export default function CreateGroupDialog({
label: "No blueprint", label: "No blueprint",
}); });
const helperText = getHelperText(disableCreate, groupName);
const handleCheckGroupNameExists = (searchGroupNameValue) => { const handleCheckGroupNameExists = (searchGroupNameValue) => {
setDisableCreate(true); setDisableCreate(true);
axios( axios(
...@@ -151,57 +161,39 @@ export default function CreateGroupDialog({ ...@@ -151,57 +161,39 @@ export default function CreateGroupDialog({
<DialogContent> <DialogContent>
<Grid container spacing={2}> <Grid container spacing={2}>
<Grid item xs={12} sm={12} md={12}> <Grid item xs={12} sm={12} md={12}>
<FormControl <TextField
className={classes.margin} autoFocus
error={groupNameExits} error={groupNameExits}
id="groupName"
label={i18next.t("group_name", "Group name")}
helperText={helperText}
type="text"
fullWidth fullWidth
> variant="standard"
<InputLabel htmlFor="groupName"> InputProps={{
{i18next.t("group_name", "Group name")} startAdornment: (
</InputLabel>
<Input
id="groupName"
placeholder={i18next.t("group_name", "Group name")}
startAdornment={
<InputAdornment position="start"> <InputAdornment position="start">
<PeopleOutlineIcon /> <PeopleOutlineIcon />
</InputAdornment> </InputAdornment>
} ),
onChange={(e) => { }}
setGroupName(e.target.value); onChange={(e) => {
initCheckGroupNameExists(e.target.value); setGroupName(e.target.value);
}} initCheckGroupNameExists(e.target.value);
/> }}
</FormControl> />
{disableCreate && groupName.length > 0 && (
<p>
{i18next.t(
"group_name_already_exists",
"Group name already exists!"
)}
</p>
)}
{disableCreate && groupName.length === 0 && (
<p>{i18next.t("group_name_is_empty", "Group name is empty")}</p>
)}
</Grid> </Grid>
<Grid item xs={12} sm={12} md={12}> <Grid item xs={12} sm={12} md={12}>
<InputLabel <TextField
className={classes.inputBottomMargin} select
htmlFor="blueprint"
>
{i18next.t("select_blueprint", "Select a blueprint")}
</InputLabel>
<Select
labelId="demo-simple-select-label"
fullWidth fullWidth
label={i18next.t("select_blueprint", "Select a blueprint")}
value={selectedBlueprint.value} value={selectedBlueprint.value}
onChange={handleBlueprintsChange} onChange={handleBlueprintsChange}
variant="outlined"
disabled={blueprints.length === 0} disabled={blueprints.length === 0}
> >
{blueprintsOptionsItems} {blueprintsOptionsItems}
</Select> </TextField>
</Grid> </Grid>
</Grid> </Grid>
</DialogContent> </DialogContent>
......
...@@ -315,7 +315,7 @@ export default function Groups() { ...@@ -315,7 +315,7 @@ export default function Groups() {
</Link> </Link>
<CardFooter> <CardFooter>
<IconButton <IconButton
color="secondary" color="primary"
onClick={() => { onClick={() => {
handleRemoveGroup(group); handleRemoveGroup(group);
}} }}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment