-
Notifications
You must be signed in to change notification settings - Fork 91
Closed
Labels
Help neededInvestiagePossible bug with unknown causePossible bug with unknown causeMUIMUI pull requestMUI pull requestbugSomething isn't workingSomething isn't workingreleased
Description
scope: MUI
code:
import FormTemplate from '@data-driven-forms/mui-component-mapper/form-template';
import FormRenderer from '@data-driven-forms/react-form-renderer/form-renderer';
import componentMapper from '@data-driven-forms/mui-component-mapper/component-mapper';
import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
import componentTypes from '@data-driven-forms/react-form-renderer/component-types/component-types';
import { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns';
import { useEffect, useState } from 'react';
import { injectIntl } from 'react-intl';
const DynamicForm = () => {
const [schema1, setSchema1] = useState<any>({});
const schema3 = {
fields: [
{
component: componentTypes.TEXT_FIELD,
name: 'account_name',
label: 'Account Name',
FormFieldGridProps: { xs: 4, p: 2 },
},
{
component: componentTypes.SELECT,
name: 'contract_length',
label: 'Contract Length',
FormFieldGridProps: { xs: 4, p: 2 },
options: [
{
label: 'Days',
value: 'days',
},
{
label: 'Weeks',
value: 'weeks',
},
{
label: 'Months',
value: 'months',
},
{
label: 'Years',
value: 'years',
},
],
isSearchable: true,
isClearable: true,
},
{
component: componentTypes.SELECT,
name: 'billing_frequency',
label: 'Billing Frequency',
FormFieldGridProps: { xs: 4, p: 2 },
options: [
{
label: 'Weekly',
value: 'weekly',
},
{
label: 'Monthly',
value: 'monthly',
},
{
label: 'Yearly',
value: 'yearly',
},
],
isSearchable: true,
isClearable: true,
},
{
component: componentTypes.SELECT,
name: 'payment_terms',
label: 'Payment Terms',
FormFieldGridProps: { xs: 4, p: 2 },
},
{
component: componentTypes.SELECT,
name: 'dummy',
label: 'Payment Terms Dummy',
FormFieldGridProps: { xs: 4, p: 2 },
},
{
component: componentTypes.DATE_PICKER,
name: 'contract_start',
label: 'Contract Start',
FormFieldGridProps: { xs: 3 },
isClearable: true,
},
],
};
useEffect(() => {
setSchema1(schema3);
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
const schema2 = {
fields: [
{
component: componentTypes.FIELD_ARRAY,
name: 'new_terms',
fieldKey: 'field_array',
title: 'New Terms',
label: 'New Terms',
FormFieldGridProps: { xs: 12 },
itemDefault: {
name: 'Enter field key',
label: 'Enter field label',
component: '',
initalValue: 'Enter default value',
options: '',
},
fields: [
{
component: componentTypes.TEXT_FIELD,
name: 'name',
label: 'Key',
FormFieldGridProps: { xs: 4, p: 2 },
},
{
component: componentTypes.TEXT_FIELD,
name: 'label',
label: 'Label',
FormFieldGridProps: { xs: 4, p: 2 },
},
{
component: componentTypes.SELECT,
name: 'component',
label: 'Type',
FormFieldGridProps: { xs: 4, p: 2 },
options: [
{
label: 'Text Field',
value: 'text-field',
},
{
label: 'Select',
value: 'select',
},
{
label: 'Checkbox',
value: 'checkbox',
},
{
label: 'Radio Button',
value: 'radio',
},
{
label: 'Date Picker',
value: 'date-picker',
},
],
isSearchable: true,
isClearable: true,
},
{
component: componentTypes.TEXT_FIELD,
name: 'initialValue',
label: 'Default Value',
FormFieldGridProps: { xs: 4, p: 2 },
},
{
component: componentTypes.TEXT_FIELD,
name: 'options',
label: 'Options',
placeholder: 'Please enter comma separated values',
condition: {
when: `new_terms[0].component`,
is: 'select',
},
FormFieldGridProps: { xs: 4, p: 2 },
},
],
},
],
};
const onSubmit2 = (values: any, form: any) => {
if (values.new_terms?.length) {
console.log(values.new_terms[0], form, schema1);
console.log([...schema1.fields, values.new_terms[0]]);
const outputData = values.new_terms.map((newTerm: any) => {
return { ...newTerm, FormFieldGridProps: { xs: 4, p: 2 } };
});
setSchema1({
fields: [...schema1.fields, ...outputData],
});
form.reset();
}
};
const onSubmit1 = (values: any) => {
console.log(values);
};
return (
<LocalizationProvider dateAdapter={AdapterDateFns}>
{schema1?.fields?.length ? (
<FormRenderer
schema={schema1}
FormTemplate={FormTemplate}
componentMapper={componentMapper}
onSubmit={onSubmit1}
/>
) : null}
<br />
<FormRenderer
componentMapper={componentMapper}
schema={schema2}
FormTemplate={FormTemplate}
onSubmit={onSubmit2}
/>
</LocalizationProvider>
);
};
export default injectIntl(DynamicForm);
error: Can not find utils in context. It looks like you forgot to wrap your component in LocalizationProvider, or pass dateAdapter prop directly.
Metadata
Metadata
Assignees
Labels
Help neededInvestiagePossible bug with unknown causePossible bug with unknown causeMUIMUI pull requestMUI pull requestbugSomething isn't workingSomething isn't workingreleased