diff --git a/src/components/Cars/Add/index.jsx b/src/components/Cars/Add/index.jsx
index b3ce2e3..c5ea3d3 100644
--- a/src/components/Cars/Add/index.jsx
+++ b/src/components/Cars/Add/index.jsx
@@ -1,5 +1,3 @@
-import React, { useEffect, useRef, useState } from "react";
-import { Redirect } from "react-router";
import {
Button,
Checkbox,
@@ -10,15 +8,18 @@ import {
RadioGroup,
TextField
} from "@material-ui/core";
+import React, { useEffect, useState } from "react";
+import { Redirect } from "react-router";
-import useStyles from "../../useStyles";
-import {
- useVehicleContext,
- VehicleProvider,
-} from "../../Contexts/VehicleContext";
+import { logger } from "../../../services/monitoring";
+import { getVINOnChangeHandler } from "../../../utils/vinValidation";
import { useStatusContext } from "../../Contexts/StatusContext";
import { useUserContext } from "../../Contexts/UserContext";
-import { logger } from "../../../services/monitoring";
+import {
+ useVehicleContext,
+ VehicleProvider
+} from "../../Contexts/VehicleContext";
+import useStyles from "../../useStyles";
const MainForm = () => {
const { addVehicle, busy } = useVehicleContext();
@@ -31,7 +32,7 @@ const MainForm = () => {
const classes = useStyles();
const [redirect, setRedirect] = useState(null);
- const vinEl = useRef(null);
+ const [vin, setVIN] = useState("");
const [selectedLogLevel, setSelectedLogLevel] = useState("info");
const [canbusEnabled, setCANBusEnabled] = useState(true);
const [dataLoggerEnabled, setDataLoggerEnabled] = useState(false);
@@ -77,7 +78,7 @@ const MainForm = () => {
event.preventDefault();
const formData = {
- vin: vinEl.current.value,
+ vin,
log_level: selectedLogLevel,
canbus: {
enabled: canbusEnabled,
@@ -115,7 +116,8 @@ const MainForm = () => {
}}
required
fullWidth
- inputRef={vinEl}
+ value={vin}
+ onChange={getVINOnChangeHandler(setVIN)}
/>
Log Level
{
const CreateForm = ({ onCreate, busy }) => {
const classes = useStyles();
- const commonnameEl = useRef(null);
const {providers} = useUserContext();
+ const [commonName, setCommonName] = useState("");
const [certType, setCertType] = useState(CertTypes.TBOX);
+ const onVINChange = getVINOnChangeHandler(setCommonName);
+ const onAftersaleChange = (e) => {
+ const value = e.target.value ?? "";
+ setCommonName(value);
+ }
const onSubmit = async (event) => {
event.preventDefault();
if (onCreate)
onCreate({
- common_name: commonnameEl.current.value,
+ common_name: commonName,
type: certType,
});
};
@@ -63,7 +69,8 @@ const CreateForm = ({ onCreate, busy }) => {
}}
required
fullWidth
- inputRef={commonnameEl}
+ value={commonName}
+ onChange={certType === CertTypes.Aftersales ? onAftersaleChange : onVINChange}
/>
Type
{
+ return (e) => {
+ const value = e?.target?.value.toUpperCase() ?? "";
+ if (!value.match(regExVIN)) return;
+ setFn(value.toUpperCase());
+ }
+}
\ No newline at end of file