From 480d47d914c92068d069c16e571a4a48bc1ddde0 Mon Sep 17 00:00:00 2001 From: Daniel C <122758391+danielcj2@users.noreply.github.com> Date: Mon, 29 Jul 2024 18:47:45 -0400 Subject: [PATCH] Hooked up to state and added validation (#477) --- .../Pages/PageSpeed/CreatePageSpeed/index.css | 18 ++- .../Pages/PageSpeed/CreatePageSpeed/index.jsx | 110 ++++++++++++------ Client/src/Validation/validation.js | 14 ++- 3 files changed, 99 insertions(+), 43 deletions(-) diff --git a/Client/src/Pages/PageSpeed/CreatePageSpeed/index.css b/Client/src/Pages/PageSpeed/CreatePageSpeed/index.css index 1ae450362..ee447365c 100644 --- a/Client/src/Pages/PageSpeed/CreatePageSpeed/index.css +++ b/Client/src/Pages/PageSpeed/CreatePageSpeed/index.css @@ -11,7 +11,8 @@ } .create-page-speed h1.MuiTypography-root, .create-page-speed h2.MuiTypography-root, -.create-page-speed p.MuiTypography-root { +.create-page-speed p.MuiTypography-root, +.create-page-speed h2.MuiTypography-root > span.MuiTypography-root { color: var(--env-var-color-5); } .create-page-speed h1.MuiTypography-root, @@ -22,16 +23,29 @@ font-size: var(--env-var-font-size-medium-plus); } .create-page-speed p.MuiTypography-root, -.create-page-speed button { +.create-page-speed button, +.create-page-speed h2.MuiTypography-root > span.MuiTypography-root { font-size: var(--env-var-font-size-medium); } .create-page-speed .MuiBox-root > .field + p.MuiTypography-root { font-size: var(--env-var-font-size-small-plus); +} +.create-page-speed .MuiBox-root > .field + p.MuiTypography-root, +.create-page-speed h2.MuiTypography-root > span.MuiTypography-root { opacity: 0.6; } .create-page-speed .checkbox-wrapper { margin-bottom: 1px; } +/* to be removed */ +.create-page-speed .section-disabled { + opacity: 0.4; + background-color: #f1f1f2; + padding: 10px; + border-radius: 8px; + user-select: none; + pointer-events: none; +} .create-page-speed button:not(.MuiIconButton-root) { height: var(--env-var-height-2); diff --git a/Client/src/Pages/PageSpeed/CreatePageSpeed/index.jsx b/Client/src/Pages/PageSpeed/CreatePageSpeed/index.jsx index 12c224902..5952b1c2f 100644 --- a/Client/src/Pages/PageSpeed/CreatePageSpeed/index.jsx +++ b/Client/src/Pages/PageSpeed/CreatePageSpeed/index.jsx @@ -6,6 +6,8 @@ import Field from "../../../Components/Inputs/Field"; import Select from "../../../Components/Inputs/Select"; import Button from "../../../Components/Button"; import Checkbox from "../../../Components/Inputs/Checkbox"; +import { useState } from "react"; +import { monitorValidation } from "../../../Validation/validation"; import "./index.css"; const CreatePageSpeed = () => { @@ -20,6 +22,34 @@ const CreatePageSpeed = () => { { _id: 5, name: "5 minutes" }, ]; + const [form, setForm] = useState({ + name: "", + url: "", + interval: 1, + type: "pagespeed", + }); + const [errors, setErrors] = useState({}); + + const handleChange = (event, id) => { + const { value } = event.target; + setForm((prev) => ({ ...prev, [id]: value })); + + const validation = monitorValidation.validate( + { [id]: value }, + { abortEarly: false } + ); + + setErrors((prev) => { + const updatedErrors = { ...prev }; + if (validation.error) { + updatedErrors[id] = validation.error.details[0].message; + } else { + delete updatedErrors[id]; + } + return updatedErrors; + }); + }; + return ( @@ -41,57 +71,65 @@ const CreatePageSpeed = () => { id="monitor-name" label="Monitor friendly name" placeholder="Example monitor" - value="" - onChange={() => console.log("disabled")} - error="" + isOptional={true} + value={form.name} + onChange={(event) => handleChange(event, "name")} + error={errors.name} /> console.log("disabled")} - error="" + value={form.url} + onChange={(event) => handleChange(event, "url")} + error={errors.url} />