import { Modal, ModalOverlay, ModalContent, ModalFooter, ModalHeader, ModalBody, Button, } from "@chakra-ui/react"; import React from "react"; import { useNuiEvent } from "../../hooks/useNuiEvent"; import { useLocales } from "../../providers/LocaleProvider"; import { fetchNui } from "../../utils/fetchNui"; import { IInput, ICheckbox, ISelect, INumber, ISlider, } from "../../interfaces/dialog"; import InputField from "./components/input"; import CheckboxField from "./components/checkbox"; import SelectField from "./components/select"; import NumberField from "./components/number"; import SliderField from "./components/slider"; export interface InputProps { heading: string; rows: Array; } const InputDialog: React.FC = () => { const [fields, setFields] = React.useState({ heading: "", rows: [{ type: "input", label: "" }], }); const [inputData, setInputData] = React.useState< Array >([]); const [passwordStates, setPasswordStates] = React.useState([]); const [visible, setVisible] = React.useState(false); const { locale } = useLocales(); const handlePasswordStates = (index: number) => { setPasswordStates({ ...passwordStates, [index]: !passwordStates[index], }); }; useNuiEvent("openDialog", (data) => { setPasswordStates([]); setFields(data); setInputData([]); setVisible(true); }); const handleClose = () => { setVisible(false); fetchNui("inputData"); }; const handleChange = (value: string | number | boolean, index: number) => { setInputData((previousData) => { previousData[index] = value; return previousData; }); }; const handleConfirm = () => { setVisible(false); fetchNui("inputData", inputData); }; return ( <> { if (e.key === "Enter" && visible) return handleConfirm(); }} > {fields.heading} {fields.rows.map( ( row: IInput | ICheckbox | ISelect | INumber | ISlider, index ) => ( {row.type === "input" && ( )} {row.type === "checkbox" && ( )} {row.type === "select" && ( )} {row.type === "number" && ( )} {row.type === "slider" && ( )} ) )} ); }; export default InputDialog;