/* * 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 . */ import {AdornmentType} from "@kingsrook/qqq-frontend-core/lib/model/metaData/AdornmentType"; import {QRecord} from "@kingsrook/qqq-frontend-core/lib/model/QRecord"; import Box from "@mui/material/Box"; import Grid from "@mui/material/Grid"; import QDynamicFormField from "qqq/components/forms/DynamicFormField"; import DynamicSelect from "qqq/components/forms/DynamicSelect"; import FileInputField from "qqq/components/forms/FileInputField"; import MDTypography from "qqq/components/legacy/MDTypography"; import HelpContent from "qqq/components/misc/HelpContent"; import React from "react"; interface Props { formLabel?: string; formData: any; bulkEditMode?: boolean; bulkEditSwitchChangeHandler?: any; record?: QRecord; helpRoles?: string[]; helpContentKeyPrefix?: string; } function QDynamicForm({formData, formLabel, bulkEditMode, bulkEditSwitchChangeHandler, record, helpRoles, helpContentKeyPrefix}: Props): JSX.Element { const {formFields, values, errors, touched} = formData; const bulkEditSwitchChanged = (name: string, value: boolean) => { bulkEditSwitchChangeHandler(name, value); }; return ( {formLabel} {formFields && Object.keys(formFields).length > 0 && Object.keys(formFields).map((fieldName: any) => { const field = formFields[fieldName]; if (field.omitFromQDynamicForm) { return null; } if (values[fieldName] === undefined) { values[fieldName] = ""; } let formattedHelpContent = ; if (formattedHelpContent) { formattedHelpContent = {formattedHelpContent}; } const labelElement = ; let itemLG = (field?.fieldMetaData?.gridColumns && field?.fieldMetaData?.gridColumns > 0) ? field.fieldMetaData.gridColumns : 6; let itemXS = 12; let itemSM = 6; ///////////// // files!! // ///////////// if (field.type === "file") { const fileUploadAdornment = field.fieldMetaData?.getAdornment(AdornmentType.FILE_UPLOAD); const width = fileUploadAdornment?.values?.get("width") ?? "half"; if (width == "full") { itemSM = 12; } return ( {labelElement} ); } /////////////////////// // possible values!! // /////////////////////// else if (field.possibleValueProps) { const otherValuesMap = field.possibleValueProps.otherValues ?? new Map(); Object.keys(values).forEach((key) => { otherValuesMap.set(key, values[key]); }); return ( {labelElement} {formattedHelpContent} ); } /////////////////////// // everything else!! // /////////////////////// return ( {labelElement} {formattedHelpContent} ); })} ); } QDynamicForm.defaultProps = { formLabel: undefined, bulkEditMode: false, helpRoles: ["ALL_SCREENS"], bulkEditSwitchChangeHandler: () => { }, }; interface DynamicFormFieldLabelProps { name: string; label: string; } export function DynamicFormFieldLabel({name, label}: DynamicFormFieldLabelProps): JSX.Element { return ( ); } export default QDynamicForm;