import React, { useState } from "react"; import { makeStyles } from "@material-ui/core/styles"; import DialogTitle from "@material-ui/core/DialogTitle"; import DialogContent from "@material-ui/core/DialogContent"; import Dialog from "@material-ui/core/Dialog"; import Divider from "@material-ui/core/Divider"; import ButtonSecondary from "../Input/ButtonSecondary"; import IconButton from "@material-ui/core/IconButton"; import TextField from "@material-ui/core/TextField"; import CloseIcon from "@material-ui/icons/Close"; import { useSelector, useDispatch } from "react-redux"; import { hideNewRestaurantDialog } from "../../actions/toggles"; import Stepper from "@material-ui/core/Stepper"; import Step from "@material-ui/core/Step"; import StepLabel from "@material-ui/core/StepLabel"; import Paper from "@material-ui/core/Paper"; import Autocomplete from "@material-ui/lab/Autocomplete"; import InputAdornment from "@material-ui/core/InputAdornment"; import ImageUpload from "../Input/ImageUpload"; import validator from "validator"; // ICONS import FastfoodIcon from "@material-ui/icons/Fastfood"; import LocationCityIcon from "@material-ui/icons/LocationCity"; import PhoneIcon from "@material-ui/icons/Phone"; import FacebookIcon from "@material-ui/icons/Facebook"; import TwitterIcon from "@material-ui/icons/Twitter"; import LanguageIcon from "@material-ui/icons/Language"; import ButtonPrimary from "../Input/ButtonPrimary"; // SETUP const useStyles = makeStyles((theme) => ({ root: { textAlign: "center", "& .MuiPaper-root": { minWidth: "30%", backgroundColor: "#262626", color: "#bbbbbb", }, }, closeButton: { color: "#bbbbbb", position: "absolute", right: theme.spacing(1), top: theme.spacing(1), }, textInput: { margin: theme.spacing(2), "& .MuiInputBase-root": { color: "#bbbbbb", }, "& .MuiInputLabel-root": { color: "#bbbbbb", }, }, textInputFullWidth: { marginTop: theme.spacing(2), marginBottom: theme.spacing(2), "& .MuiInputBase-root": { color: "#bbbbbb", }, "& .MuiInputLabel-root": { color: "#bbbbbb", }, }, timePicker: { margin: theme.spacing(2), "& .MuiInputBase-root": { color: "#bbbbbb", }, "& .MuiInputLabel-root": { color: "#bbbbbb", }, }, stepLabel: { "& .MuiStepLabel-label": { color: "#bbbbbb", }, "& .MuiStepLabel-active": { color: "#bbbbbb", }, }, })); export default function NewRestaurant() { const initialState = { name: "", city: "", adress: "", hoursFrom: "07:00", hoursTo: "23:00", description: "", tags: [], phone: "", facebook: "", twitter: "", www: "", nameError: false, cityError: false, adressError: false, }; const steps = ["Informacje", "Zdjęcie", "Lokalizacja"]; const [state, setState] = useState(initialState); const [activeStep, setActiveStep] = React.useState(0); const styles = useStyles(); const dialogOpen = useSelector((state) => state.data.dialogs.newRestaurant); const dispatch = useDispatch(); const availableTags = [ "Płatność kartą", "Lubimy zwierzaki", "Bezglutenowe", "Wegańskie", "Wegetariańskie", "Podajemy alkohol", "Dowozimy", ]; // HANDLERS const handleNextButton = () => { if (activeStep === 0) { if (validateForm()) { setActiveStep(1); } } }; const handlePreviousButton = () => { setActiveStep(activeStep - 1); console.log(activeStep); }; const validateForm = () => { const validation = { nameValid: validator.isLength(state.name, { min: 1, max: 40 }), cityValid: validator.isLength(state.city, { min: 1, max: 40 }), adressValid: validator.isLength(state.name, { min: 1, max: 40 }), }; setState({ ...state, nameError: !validation.nameValid, cityError: !validation.cityValid, adressError: !validation.adressValid, }); return ( validation.nameValid && validation.cityValid && validation.adressValid ); }; // COMPONENTS return (
Dodaj Lokal dispatch(hideNewRestaurantDialog())} aria-label="close" > {steps.map((label) => ( {label} ))} {activeStep === 0 && (
setState({ ...state, name: event.target.value }) } InputProps={{ startAdornment: ( ), }} />
setState({ ...state, city: event.target.value }) } InputProps={{ startAdornment: ( ), }} /> setState({ ...state, adress: event.target.value }) } InputProps={{ startAdornment: ( ), }} /> setState({ ...state, hoursFrom: event.target.value }) } variant="outlined" value={state.hoursFrom} className={styles.timePicker} InputLabelProps={{ shrink: true, }} inputProps={{ step: 300, // 5 min }} /> setState({ ...state, hoursTo: event.target.value }) } variant="outlined" value={state.hoursTo} className={styles.timePicker} InputLabelProps={{ shrink: true, }} inputProps={{ step: 300, // 5 min }} />
setState({ ...state, description: event.target.value }) } multiline rows={3} variant="outlined" /> setState({ ...state, tags: values }) } renderInput={(params) => ( )} />
setState({ ...state, phone: event.target.value }) } InputProps={{ startAdornment: ( ), }} /> setState({ ...state, facebook: event.target.value }) } InputProps={{ startAdornment: ( ), }} /> setState({ ...state, twitter: event.target.value }) } InputProps={{ startAdornment: ( ), }} /> setState({ ...state, www: event.target.value }) } InputProps={{ startAdornment: ( ), }} />
)} {activeStep === 1 && (

Dodaj zdjęcie lokalu.

)} {activeStep !== 0 && ( )}
); }