Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
import { Box, Icon, Stack, StackSeparator, Text } from "@chakra-ui/react";
import { Icon, Stack, StackSeparator, Text } from "@chakra-ui/react";
import { useCallback, useEffect, useState } from "react";
import { MdError } from "react-icons/md";

Expand All @@ -39,7 +39,7 @@ export const FlexibleForm = ({
initialParamsDict,
setError,
}: FlexibleFormProps) => {
const { paramsDict: params, setinitialParamDict, setParamsDict } = useParamStore();
const { paramsDict: params, setInitialParamDict, setParamsDict } = useParamStore();
const processedSections = new Map();
const [sectionError, setSectionError] = useState<Map<string, boolean>>(new Map());

Expand All @@ -62,17 +62,17 @@ export const FlexibleForm = ({
const paramsCopy = structuredClone(initialParamsDict.paramsDict);

setParamsDict(paramsCopy);
setinitialParamDict(initialParamsDict.paramsDict);
setInitialParamDict(initialParamsDict.paramsDict);
}
}, [initialParamsDict, params, setParamsDict, setinitialParamDict]);
}, [initialParamsDict, params, setParamsDict, setInitialParamDict]);

useEffect(
() => () => {
// Clear paramsDict and initialParamDict when the component is unmounted or modal closes
setParamsDict({});
setinitialParamDict({});
setInitialParamDict({});
},
[setParamsDict, setinitialParamDict],
[setParamsDict, setInitialParamDict],
);

useEffect(() => {
Expand Down Expand Up @@ -103,17 +103,29 @@ export const FlexibleForm = ({
processedSections.set(currentSection, true);

return (
<Accordion.Item key={currentSection} value={currentSection}>
<Accordion.Item
// We need to make the item content overflow visible for dropdowns to work, but directly applying the style does not work
css={{
"& > :nth-child(2)": {
overflow: "visible",
},
}}
key={currentSection}
value={currentSection}
>
<Accordion.ItemTrigger cursor="button">
<Text color={sectionError.get(currentSection) ? "red" : undefined}>{currentSection}</Text>
<Text color={sectionError.get(currentSection) ? "fg.error" : undefined}>
{currentSection}
</Text>
{sectionError.get(currentSection) ? (
<Icon color="red" margin="-1">
<Icon color="fg.error" margin="-1">
<MdError />
</Icon>
) : undefined}
</Accordion.ItemTrigger>
<Accordion.ItemContent paddingTop={0}>
<Box p={5}>

<Accordion.ItemContent pt={0}>
<Accordion.ItemBody>
<Stack separator={<StackSeparator />}>
{Object.entries(params)
.filter(
Expand All @@ -125,7 +137,7 @@ export const FlexibleForm = ({
<Row key={name} name={name} onUpdate={onUpdate} />
))}
</Stack>
</Box>
</Accordion.ItemBody>
</Accordion.ItemContent>
</Accordion.Item>
);
Expand Down
4 changes: 2 additions & 2 deletions airflow-core/src/airflow/ui/src/queries/useParamStore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ type FormStore = {
initialParamDict: ParamsSpec;
paramsDict: ParamsSpec;
setConf: (confString: string) => void;
setinitialParamDict: (newParamsDict: ParamsSpec) => void;
setInitialParamDict: (newParamsDict: ParamsSpec) => void;
setParamsDict: (newParamsDict: ParamsSpec) => void;
};

Expand Down Expand Up @@ -83,7 +83,7 @@ export const useParamStore = create<FormStore>((set) => ({
return { conf: confString, paramsDict: updatedParamsDict };
}),

setinitialParamDict: (newParamsDict: ParamsSpec) => set(() => ({ initialParamDict: newParamsDict })),
setInitialParamDict: (newParamsDict: ParamsSpec) => set(() => ({ initialParamDict: newParamsDict })),

setParamsDict: (newParamsDict: ParamsSpec) =>
set((state) => {
Expand Down