/* * QQQ - Low-code Application Framework for Engineers. * Copyright (C) 2021-2022. Kingsrook, LLC * 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States * contact@kingsrook.com * https://github.com/Kingsrook/ * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ // @mui material components import Grid from "@mui/material/Grid"; // Material Dashboard 2 PRO React TS components import MDBox from "components/MDBox"; import MDTypography from "components/MDTypography"; // NewUser page components import {useFormikContext} from "formik"; import React from "react"; import QDynamicFormField from "qqq/components/QDynamicFormField"; interface Props { formLabel?: string; formData: any; bulkEditMode?: boolean; bulkEditSwitchChangeHandler?: any } function QDynamicForm(props: Props): JSX.Element { const { formData, formLabel, bulkEditMode, bulkEditSwitchChangeHandler, } = props; const { formFields, values, errors, touched, } = formData; const formikProps = useFormikContext(); const fileChanged = (event: React.FormEvent, field: any) => { formikProps.setFieldValue(field.name, event.currentTarget.files[0]); }; const bulkEditSwitchChanged = (name: string, value: boolean) => { bulkEditSwitchChangeHandler(name, value); }; return ( {formLabel} {/* TODO - help text Mandatory information */} {formFields && Object.keys(formFields).length > 0 && Object.keys(formFields).map((fieldName: any) => { const field = formFields[fieldName]; if (values[fieldName] === undefined) { values[fieldName] = ""; } if (field.type === "file") { return ( ) => fileChanged(event, field)} /> {errors[fieldName] && You must select a file to proceed} ); } // todo? inputProps={{ autoComplete: "" }} // todo? placeholder={password.placeholder} return ( ); })} ); } QDynamicForm.defaultProps = { formLabel: undefined, bulkEditMode: false, bulkEditSwitchChangeHandler: () => {}, }; export default QDynamicForm;