diff --git a/src/Components/Modal/Modal.css b/src/Components/Modal/Modal.css index 961f42d4..e009f62a 100644 --- a/src/Components/Modal/Modal.css +++ b/src/Components/Modal/Modal.css @@ -1,16 +1,20 @@ /* Styles de l'overlay */ .overlay { + display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.7); - display: flex; justify-content: center; align-items: center; } + + .overlay.active{ + display: flex; + } /* Styles de la carte */ .card { diff --git a/src/Components/Modal/Modal.tsx b/src/Components/Modal/Modal.tsx index 37dbe06c..cb37015e 100644 --- a/src/Components/Modal/Modal.tsx +++ b/src/Components/Modal/Modal.tsx @@ -5,9 +5,10 @@ interface ModalProps{ text: string; handleTextChange: (event: { target: { value: React.SetStateAction;}; })=> void; close: ()=>void; + toRef: React.MutableRefObject; } -const Modal: React.FC=({text, handleTextChange, close})=>{ +const Modal: React.FC=({text, handleTextChange, close, toRef})=>{ const [isEditing, setIsEditing] = useState(false); // Added state for edit mode const handleOverlayTextChange = (event: React.ChangeEvent)=>{ @@ -17,8 +18,7 @@ const Modal: React.FC=({text, handleTextChange, close})=>{ const handleOverlayClick = (event: React.MouseEvent)=>{ const element = event!.target as HTMLElement - console.log(event); - if(element.className == "overlay"|| element.className == "close-icon"){ + if(element.className == "overlay active"|| element.className == "close-icon"){ close(); }; }; @@ -28,7 +28,7 @@ const Modal: React.FC=({text, handleTextChange, close})=>{ }; return( -
+
Fermer la carte
diff --git a/src/Pages/Form/Form.css b/src/Pages/Form/Form.css index e245697b..17fe55c4 100644 --- a/src/Pages/Form/Form.css +++ b/src/Pages/Form/Form.css @@ -31,23 +31,32 @@ textarea { position: relative; top: 40px; right: 50px; + margin: -8.5%; } .data-section{ - display: flex; + display: none; flex-direction: column; justify-content: center; align-items: center; gap: 10px; } +.data-section.active{ + display: flex; +} + .input-container{ - display: inline-flex; + display: none; flex-direction: column; align-items: baseline; width: 300px; } +.input-container.active{ + display: inline-flex; +} + .input-container input{ width: 98%; } diff --git a/src/Pages/Form/Form.tsx b/src/Pages/Form/Form.tsx index b688bd77..9952774a 100644 --- a/src/Pages/Form/Form.tsx +++ b/src/Pages/Form/Form.tsx @@ -1,4 +1,4 @@ -import React, { useState } from 'react'; +import React, { useState, useRef } from 'react'; import "./Form.css"; import Modal from '../../Components/Modal/Modal'; @@ -6,11 +6,13 @@ import openIcon from "../../assets/dot-menu.png"; import editIcon from "../../assets/edit_icon.png"; import saveIcon from "../../assets/save_icon.png"; -const TextboxWithOverlay = () => { - - +const FormPage = () => { + const precauFR_Modal = useRef(null) + const precauEN_Modal = useRef(null) + const instruFR_Modal = useRef(null) + const instruEN_Modal = useRef(null) const [form, setForm] = useState({ - Compagny_name: "", + Compagny_name: "a", Compagny_address: "", Compagny_website: "", Compagny_phone_number: "", @@ -54,64 +56,195 @@ const TextboxWithOverlay = () => { all_other_text_EN_2: "", }); - /** - const handleOverlayClick = () => { - setShowOverlay(false); - }; - // Update the text state directly when editing in the overlay - const handleOverlayTextChange = (event: { target: { value: React.SetStateAction; }; }) => { - setText(event.target.value); - }; - */ + const [data, setData] = useState({ + sections : [ + { + title : "Company information", + label : "Company", + inputs : [ + { + type: "input", + label: "name", + value: form.Compagny_name + }, + { + type: "input", + label: "address", + value: form.Compagny_name + } + ] + }, + { + title:"Manufacturer information", + label: "Manufacturer", + inputs:[ + { + type: "input", + label: "name", + value: form.Manufacturer_name + } + ] + }, + { + title:"Fertilizer information", + label:"Fertilizer", + inputs:[ + { + type: "textarea", + label: "precautionary FR", + value: form.Fertiliser_precautionary_FR + } + ] + } + ] + }) + return (
+ {/** + {[...data.sections].map( + (section: object, index: number, array: object[]) => [ + +
+

{section.title}

+ {[...(section.inputs)].map( + (input: object, index: number, array: object[])=>{ + if(input.type == 'input'){ + return ( +
+ + )=>{ + const newSections = data.sections.slice(); + + setData({...data, }) + }} + > + +
+ ) + }else if(input.type == 'textarea'){ + return ( +
+ +
+