Skip to content

Commit 4e4800b

Browse files
author
Joe Reuter
authored
fill in all default values on switch (#21059)
1 parent f346dc8 commit 4e4800b

File tree

2 files changed

+10
-16
lines changed

2 files changed

+10
-16
lines changed

airbyte-webapp/src/views/Connector/ConnectorForm/components/Sections/ConditionSection.tsx

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
import { useFormikContext, setIn, useField } from "formik";
2+
import clone from "lodash/clone";
23
import get from "lodash/get";
34
import React, { useCallback, useMemo } from "react";
45

56
import GroupControls from "components/GroupControls";
67
import { DropDown, DropDownOptionDataItem } from "components/ui/DropDown";
78

8-
import { FormBlock, FormConditionItem } from "core/form/types";
9-
import { isDefined } from "utils/common";
9+
import { FormConditionItem } from "core/form/types";
1010

1111
import { ConnectorFormValues } from "../../types";
12+
import { setDefaultValues } from "../../useBuildForm";
1213
import styles from "./ConditionSection.module.scss";
1314
import { FormSection } from "./FormSection";
1415
import { GroupLabel } from "./GroupLabel";
@@ -39,22 +40,15 @@ export const ConditionSection: React.FC<ConditionSectionProps> = ({ formField, p
3940

4041
const onOptionChange = useCallback(
4142
(selectedItem: DropDownOptionDataItem) => {
42-
const newSelectedPath = formField.conditions[selectedItem.value];
43+
const newSelectedFormBlock = formField.conditions[selectedItem.value];
4344

44-
const newValues =
45-
newSelectedPath._type === "formGroup"
46-
? newSelectedPath.properties?.reduce(
47-
(acc: ConnectorFormValues, property: FormBlock) =>
48-
property._type === "formItem" && isDefined(property.const)
49-
? setIn(acc, property.path, property.const)
50-
: acc,
51-
values
52-
)
53-
: values;
45+
const conditionValues = clone(get(values, path) || {});
46+
conditionValues[formField.selectionKey] = formField.selectionConstValues[selectedItem.value];
47+
setDefaultValues(newSelectedFormBlock, conditionValues, { respectExistingValues: true });
5448

55-
setValues(newValues);
49+
setValues(setIn(values, path, conditionValues));
5650
},
57-
[values, formField.conditions, setValues]
51+
[formField.conditions, formField.selectionKey, formField.selectionConstValues, values, path, setValues]
5852
);
5953

6054
const options = useMemo(

airbyte-webapp/src/views/Connector/ConnectorForm/useBuildForm.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export interface BuildFormHook {
2222
validationSchema: AnySchema;
2323
}
2424

25-
function setDefaultValues(
25+
export function setDefaultValues(
2626
formGroup: FormGroupItem,
2727
values: Record<string, unknown>,
2828
options: { respectExistingValues: boolean } = { respectExistingValues: false }

0 commit comments

Comments
 (0)