macro default parameter values

This commit is contained in:
Jan Prochazka
2020-11-01 09:36:45 +01:00
parent 80e17eff39
commit 20180fe4c4
4 changed files with 34 additions and 15 deletions

View File

@@ -10,13 +10,14 @@ import {
} from '../utility/forms';
import { Formik, Form, useFormikContext } from 'formik';
function MacroArgument({ arg }) {
function MacroArgument({ arg, namePrefix }) {
const name = `${namePrefix}${arg.name}`;
if (arg.type == 'text') {
return <FormTextField label={arg.label} name={arg.name} />;
return <FormTextField label={arg.label} name={name} />;
}
if (arg.type == 'select') {
return (
<FormSelectField label={arg.label} name={arg.name}>
<FormSelectField label={arg.label} name={name}>
{arg.options.map((opt) =>
_.isString(opt) ? <option value={opt}>{opt}</option> : <option value={opt.value}>{opt.name}</option>
)}
@@ -26,7 +27,7 @@ function MacroArgument({ arg }) {
return null;
}
function MacroArgumentList({ args, onChangeValues }) {
function MacroArgumentList({ args, onChangeValues, namePrefix }) {
const { values } = useFormikContext();
React.useEffect(() => {
if (onChangeValues) onChangeValues(values);
@@ -35,18 +36,22 @@ function MacroArgumentList({ args, onChangeValues }) {
<>
{' '}
{args.map((arg) => (
<MacroArgument arg={arg} key={arg.name} />
<MacroArgument arg={arg} key={arg.name} namePrefix={namePrefix} />
))}
</>
);
}
export default function MacroParameters({ args, onChangeValues, initialValues }) {
export default function MacroParameters({ args, onChangeValues, macroValues, namePrefix }) {
if (!args || args.length == 0) return null;
const initialValues = {
..._.fromPairs(args.filter((x) => x.default != null).map((x) => [`${namePrefix}${x.name}`, x.default])),
...macroValues,
};
return (
<Formik initialValues={initialValues} onSubmit={() => {}}>
<Form>
<MacroArgumentList args={args} onChangeValues={onChangeValues} />
<MacroArgumentList args={args} onChangeValues={onChangeValues} namePrefix={namePrefix} />
</Form>
</Formik>
);