diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/ar/components.json b/airflow-core/src/airflow/ui/public/i18n/locales/ar/components.json
index 824f5522217ff..a8ae01cff8b37 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/ar/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/ar/components.json
@@ -52,7 +52,6 @@
},
"close": "إغلاق",
"configForm": {
- "advancedOptions": "خيارات متقدمة",
"configJson": "تكوين JSON",
"invalidJson": "تنسيق JSON غير صالح: {{errorMessage}}"
},
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/ca/components.json b/airflow-core/src/airflow/ui/public/i18n/locales/ca/components.json
index ad29c45cf6361..41830dab0591a 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/ca/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/ca/components.json
@@ -52,7 +52,6 @@
},
"close": "Tancar",
"configForm": {
- "advancedOptions": "Opcions avançades",
"configJson": "Configuració JSON",
"invalidJson": "Format JSON no vàlid: {{errorMessage}}"
},
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/de/components.json b/airflow-core/src/airflow/ui/public/i18n/locales/de/components.json
index 1d16a2e92d1fe..d7cd7a3d9c215 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/de/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/de/components.json
@@ -52,7 +52,6 @@
},
"close": "Schließen",
"configForm": {
- "advancedOptions": "Erweiterte Optionen",
"configJson": "JSON der Konfiguration",
"invalidJson": "Ungültiges JSON Format: {{errorMessage}}"
},
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/el/components.json b/airflow-core/src/airflow/ui/public/i18n/locales/el/components.json
index 8e460d27ec195..fcbb839d761a1 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/el/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/el/components.json
@@ -41,7 +41,6 @@
},
"close": "Κλείσιμο",
"configForm": {
- "advancedOptions": "Προχωρημένες Επιλογές",
"configJson": "Ρυθμίσεις JSON",
"invalidJson": "Μη έγκυρη μορφή JSON: {{errorMessage}}"
},
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/en/components.json b/airflow-core/src/airflow/ui/public/i18n/locales/en/components.json
index 53fa5e0b26178..166cb001e991c 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/en/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/en/components.json
@@ -52,7 +52,6 @@
},
"close": "Close",
"configForm": {
- "advancedOptions": "Advanced Options",
"configJson": "Configuration JSON",
"invalidJson": "Invalid JSON format: {{errorMessage}}"
},
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/es/components.json b/airflow-core/src/airflow/ui/public/i18n/locales/es/components.json
index 3719117068d7e..10dc6289bb42a 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/es/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/es/components.json
@@ -52,7 +52,6 @@
},
"close": "Cerrar",
"configForm": {
- "advancedOptions": "Opciones Avanzadas",
"configJson": "Configuración JSON",
"invalidJson": "Formato JSON inválido: {{errorMessage}}"
},
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/fr/components.json b/airflow-core/src/airflow/ui/public/i18n/locales/fr/components.json
index 3f225bb4426e5..24735e62c669e 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/fr/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/fr/components.json
@@ -54,7 +54,6 @@
},
"close": "Fermer",
"configForm": {
- "advancedOptions": "Options avancées",
"configJson": "Configuration JSON",
"invalidJson": "Format JSON invalide : {{errorMessage}}"
},
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/he/components.json b/airflow-core/src/airflow/ui/public/i18n/locales/he/components.json
index 3557c62b95ecb..8c6512f7deebb 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/he/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/he/components.json
@@ -42,7 +42,6 @@
},
"close": "סגור",
"configForm": {
- "advancedOptions": "אפשרויות מתקדמות",
"configJson": "הגדרות JSON",
"invalidJson": "מבנה ה-JSON אינו תקין: {{errorMessage}}"
},
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/hi/components.json b/airflow-core/src/airflow/ui/public/i18n/locales/hi/components.json
index 6bf4842b87deb..7dcc757cbb12a 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/hi/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/hi/components.json
@@ -41,7 +41,6 @@
},
"close": "बंद करें",
"configForm": {
- "advancedOptions": "उन्नत विकल्प",
"configJson": "विन्यास JSON",
"invalidJson": "अमान्य JSON प्रारूप: {{errorMessage}}"
},
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/hu/components.json b/airflow-core/src/airflow/ui/public/i18n/locales/hu/components.json
index 37492be488ccb..a94e63c0c9d09 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/hu/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/hu/components.json
@@ -41,7 +41,6 @@
},
"close": "Bezárás",
"configForm": {
- "advancedOptions": "Speciális beállítások",
"configJson": "Konfiguráció JSON",
"invalidJson": "Érvénytelen JSON formátum: {{errorMessage}}"
},
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/it/components.json b/airflow-core/src/airflow/ui/public/i18n/locales/it/components.json
index 1b502a0243b39..3bca1603286d5 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/it/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/it/components.json
@@ -39,7 +39,6 @@
},
"close": "Chiudi",
"configForm": {
- "advancedOptions": "Opzioni Avanzate",
"configJson": "Configurazione JSON",
"invalidJson": "Formato JSON non valido: {{errorMessage}}"
},
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/ja/components.json b/airflow-core/src/airflow/ui/public/i18n/locales/ja/components.json
index db075c8704f75..202a3513395e3 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/ja/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/ja/components.json
@@ -37,7 +37,6 @@
},
"close": "閉じる",
"configForm": {
- "advancedOptions": "詳細設定",
"configJson": "JSON の設定",
"invalidJson": "無効な JSON 形式: {{errorMessage}}"
},
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/ko/components.json b/airflow-core/src/airflow/ui/public/i18n/locales/ko/components.json
index ebac3d747afc0..a0f02ab00ea93 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/ko/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/ko/components.json
@@ -52,7 +52,6 @@
},
"close": "닫기",
"configForm": {
- "advancedOptions": "고급 옵션",
"configJson": "구성 JSON",
"invalidJson": "잘못된 JSON 형식: {{errorMessage}}"
},
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/nl/components.json b/airflow-core/src/airflow/ui/public/i18n/locales/nl/components.json
index db5b5f9b10e0a..7f8d3320a849e 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/nl/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/nl/components.json
@@ -41,7 +41,6 @@
},
"close": "Sluiten",
"configForm": {
- "advancedOptions": "Geavanceerde opties",
"configJson": "Configuratie JSON",
"invalidJson": "Ongeldig JSON formaat: {{errorMessage}}"
},
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pl/components.json b/airflow-core/src/airflow/ui/public/i18n/locales/pl/components.json
index 35bbf943f4fc1..c2bd078a7d1c0 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/pl/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/pl/components.json
@@ -56,7 +56,6 @@
},
"close": "Zamknij",
"configForm": {
- "advancedOptions": "Zaawansowane opcje",
"configJson": "Konfiguracja JSON",
"invalidJson": "Nieprawidłowy format JSON: {{errorMessage}}"
},
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt/components.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt/components.json
index e952b5a62de92..da5cf1e798572 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/pt/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt/components.json
@@ -40,7 +40,6 @@
},
"close": "Fechar",
"configForm": {
- "advancedOptions": "Opções Avançadas",
"configJson": "Configuração JSON",
"invalidJson": "Formato JSON inválido: {{errorMessage}}"
},
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/ru/components.json b/airflow-core/src/airflow/ui/public/i18n/locales/ru/components.json
index c53b27bc72374..2bdc71f6ebf0f 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/ru/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/ru/components.json
@@ -43,7 +43,6 @@
},
"close": "Закрыть",
"configForm": {
- "advancedOptions": "Расширенные параметры",
"configJson": "Конфигурация JSON",
"invalidJson": "Некорректный формат JSON: {{errorMessage}}"
},
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/th/components.json b/airflow-core/src/airflow/ui/public/i18n/locales/th/components.json
index d5c04cda8ba69..a595296d15298 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/th/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/th/components.json
@@ -37,7 +37,6 @@
},
"close": "ปิด",
"configForm": {
- "advancedOptions": "ตัวเลือกขั้นสูง",
"configJson": "การตั้งค่า JSON",
"invalidJson": "รูปแบบ JSON ไม่ถูกต้อง: {{errorMessage}}"
},
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/tr/components.json b/airflow-core/src/airflow/ui/public/i18n/locales/tr/components.json
index d2db8b1736b9a..c92f6f7a4dd46 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/tr/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/tr/components.json
@@ -41,7 +41,6 @@
},
"close": "Kapat",
"configForm": {
- "advancedOptions": "Gelişmiş Seçenekler",
"configJson": "Yapılandırma JSON",
"invalidJson": "Geçersiz JSON formatı: {{errorMessage}}"
},
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/zh-CN/components.json b/airflow-core/src/airflow/ui/public/i18n/locales/zh-CN/components.json
index e87b2f58988d7..b42fbb9bfbd61 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/zh-CN/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/zh-CN/components.json
@@ -52,7 +52,6 @@
},
"close": "关闭",
"configForm": {
- "advancedOptions": "高级选项",
"configJson": "配置 JSON",
"invalidJson": "无效的 JSON 格式:{{errorMessage}}"
},
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/zh-TW/components.json b/airflow-core/src/airflow/ui/public/i18n/locales/zh-TW/components.json
index 2f554e05e8e32..68081b0bc55c4 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/zh-TW/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/zh-TW/components.json
@@ -52,7 +52,6 @@
},
"close": "關閉",
"configForm": {
- "advancedOptions": "進階選項",
"configJson": "設定 JSON",
"invalidJson": "無效的 JSON 格式: {{errorMessage}}"
},
diff --git a/airflow-core/src/airflow/ui/src/components/ActionAccordion/ActionAccordion.tsx b/airflow-core/src/airflow/ui/src/components/ActionAccordion/ActionAccordion.tsx
index 768b148325f0c..0e4010b7d697c 100644
--- a/airflow-core/src/airflow/ui/src/components/ActionAccordion/ActionAccordion.tsx
+++ b/airflow-core/src/airflow/ui/src/components/ActionAccordion/ActionAccordion.tsx
@@ -16,9 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-import type { ChangeEvent } from "react";
-
-import { Box, Editable, Text, VStack } from "@chakra-ui/react";
+import { Box, Field, Heading, Stack, Text, VStack } from "@chakra-ui/react";
import { useTranslation } from "react-i18next";
import type {
@@ -29,7 +27,7 @@ import type {
import { Accordion } from "src/system-components";
-import ReactMarkdown from "src/components/ReactMarkdown";
+import EditableMarkdown from "src/components/TriggerDag/EditableMarkdown";
import { formatNumber } from "src/utils";
@@ -97,91 +95,61 @@ const ActionAccordion = ({ affectedTasks, groupByRunId = false, note, selection,
const shouldGroup = groupByRunId && runGroups !== undefined && runGroups.size > 1;
return (
-
+
{showTaskSection ? (
-
-
-
- {translate("dags:runAndTaskActions.affectedTasks.title", {
- count: affectedTasks.total_entries ?? 0,
- })}
-
-
-
-
- {shouldGroup ? (
-
- {[...runGroups.entries()].map(([runId, tis]) => (
-
-
-
- {translate("runId")}: {runId}{" "}
-
- ({formatNumber(tis.length, i18n.language)})
-
+
+
+ {translate("dags:runAndTaskActions.affectedTasks.title", {
+ count: affectedTasks.total_entries ?? 0,
+ })}
+
+
+ {shouldGroup ? (
+
+ {[...runGroups.entries()].map(([runId, tis]) => (
+
+
+
+ {translate("runId")}: {runId}{" "}
+
+ ({formatNumber(tis.length, i18n.language)})
-
-
-
-
-
- ))}
-
- ) : (
-
- )}
-
-
-
+
+
+
+
+
+
+ ))}
+
+ ) : (
+
+ )}
+
+
) : undefined}
-
-
- {translate("note.label")}
-
-
- ) => setNote(event.target.value)}
- value={note ?? ""}
- >
-
- {Boolean(note) ? (
- {note}
- ) : (
- {translate("note.placeholder")}
- )}
-
-
-
-
-
-
+
+
+
+ {translate("note.label")}
+
+
+
+
+
+
+
);
};
diff --git a/airflow-core/src/airflow/ui/src/components/ConfigForm.tsx b/airflow-core/src/airflow/ui/src/components/ConfigForm.tsx
index 1d92a01e3cc25..753cea8f3699e 100644
--- a/airflow-core/src/airflow/ui/src/components/ConfigForm.tsx
+++ b/airflow-core/src/airflow/ui/src/components/ConfigForm.tsx
@@ -18,7 +18,7 @@
*/
import type { ReactNode, Dispatch, SetStateAction } from "react";
-import { Box, Field } from "@chakra-ui/react";
+import { Field, Stack, Text } from "@chakra-ui/react";
import { type Control, type FieldValues, type Path, Controller } from "react-hook-form";
import { useTranslation } from "react-i18next";
@@ -84,48 +84,43 @@ const ConfigForm = ({
};
return (
-
+
-
-
- {translate("configForm.advancedOptions")}
-
-
-
- {children}
- }
- render={({ field }) => (
-
- {translate("configForm.configJson")}
- {
- field.onChange(validateAndPrettifyJson(field.value));
- }}
- onChange={field.onChange}
- value={field.value}
- />
- {Boolean(errors.conf) ? {errors.conf} : undefined}
-
- )}
- />
-
-
-
-
+
+ {children}
+
+
+
+
+ {translate("configForm.configJson")}
+
+
+
+ }
+ render={({ field }) => (
+
+ {
+ field.onChange(validateAndPrettifyJson(field.value));
+ }}
+ onChange={field.onChange}
+ value={field.value}
+ />
+ {Boolean(errors.conf) ? {errors.conf} : undefined}
+
+ )}
+ />
+
+
+
+
+
);
};
diff --git a/airflow-core/src/airflow/ui/src/components/FlexibleForm/FlexibleForm.tsx b/airflow-core/src/airflow/ui/src/components/FlexibleForm/FlexibleForm.tsx
index dcfab434ab45b..e9c197445fe66 100644
--- a/airflow-core/src/airflow/ui/src/components/FlexibleForm/FlexibleForm.tsx
+++ b/airflow-core/src/airflow/ui/src/components/FlexibleForm/FlexibleForm.tsx
@@ -18,11 +18,9 @@
*/
import { useEffect, useState, type ReactNode } from "react";
-import { Icon, Stack, StackSeparator, Text } from "@chakra-ui/react";
+import { Heading, Icon, Stack, StackSeparator, Text } from "@chakra-ui/react";
import { MdError } from "react-icons/md";
-import { Accordion } from "src/system-components";
-
import type { ParamsSpec, ParamSpec } from "src/queries/useDagParams";
import { useParamStore } from "src/queries/useParamStore";
@@ -40,14 +38,14 @@ const FlatSection = ({
readonly title: string;
}) => (
-
+
{title}
{hasError ? (
) : undefined}
-
+
{children}
);
@@ -78,7 +76,6 @@ export type FlexibleFormProps = {
readonly isHITL?: boolean;
readonly key?: string;
readonly namespace?: string;
- readonly noAccordion?: boolean;
readonly setError: (error: boolean) => void;
readonly subHeader?: string;
};
@@ -90,7 +87,6 @@ export const FlexibleForm = ({
initialParamsDict,
isHITL,
namespace = "default",
- noAccordion,
setError,
subHeader,
}: FlexibleFormProps) => {
@@ -137,132 +133,51 @@ export const FlexibleForm = ({
setError(Boolean(error) || newSectionError.size > 0);
};
- if (noAccordion) {
- return Object.keys(params).length > 0 ? (
- <>
- {Object.entries(params).map(([, secParam]) => {
- const currentSection = secParam.schema.section ?? flexibleFormDefaultSection;
-
- if (processedSections.has(currentSection)) {
- return undefined;
- }
- processedSections.set(currentSection, true);
-
- return (
-
- {Boolean(subHeader) ? (
-
- {subHeader}
-
- ) : undefined}
- }>
- {Boolean(flexFormDescription) ? (
- {flexFormDescription}
- ) : undefined}
- {Object.entries(params)
- .filter(
- ([, param]) =>
- param.schema.section === currentSection ||
- (currentSection === flexibleFormDefaultSection && !Boolean(param.schema.section)),
- )
- .map(([name]) => (
-
- ))}
-
-
- );
- })}
- >
- ) : isHITL ? (
-
- {Boolean(flexFormDescription) ? {flexFormDescription} : undefined}
-
- ) : undefined;
- }
-
return Object.keys(params).length > 0 ? (
- Object.entries(params).map(([, secParam]) => {
- const currentSection = secParam.schema.section ?? flexibleFormDefaultSection;
+ <>
+ {Object.entries(params).map(([, secParam]) => {
+ const currentSection = secParam.schema.section ?? flexibleFormDefaultSection;
- if (processedSections.has(currentSection)) {
- return undefined;
- } else {
+ if (processedSections.has(currentSection)) {
+ return undefined;
+ }
processedSections.set(currentSection, true);
return (
- div:nth-of-type(1)": {
- overflow: "visible",
- },
- }}
+
-
- {currentSection}
- {sectionError.get(currentSection) ? (
-
-
-
+ {Boolean(subHeader) ? (
+
+ {subHeader}
+
+ ) : undefined}
+ }>
+ {Boolean(flexFormDescription) ? (
+ {flexFormDescription}
) : undefined}
-
-
-
-
- {Boolean(subHeader) ? (
-
- {subHeader}
-
- ) : undefined}
- }>
- {Boolean(flexFormDescription) ? (
- {flexFormDescription}
- ) : undefined}
- {Object.entries(params)
- .filter(
- ([, param]) =>
- param.schema.section === currentSection ||
- (currentSection === flexibleFormDefaultSection && !Boolean(param.schema.section)),
- )
- .map(([name]) => (
-
- ))}
-
-
-
-
+ {Object.entries(params)
+ .filter(
+ ([, param]) =>
+ param.schema.section === currentSection ||
+ (currentSection === flexibleFormDefaultSection && !Boolean(param.schema.section)),
+ )
+ .map(([name]) => (
+
+ ))}
+
+
);
- }
- })
+ })}
+ >
) : isHITL ? (
-
-
-
- {flexibleFormDefaultSection}
-
- {sectionError.get(flexibleFormDefaultSection) ? (
-
-
-
- ) : undefined}
-
-
-
-
- }>
- {Boolean(flexFormDescription) ? {flexFormDescription} : undefined}
-
-
-
-
+
+ {Boolean(flexFormDescription) ? {flexFormDescription} : undefined}
+
) : undefined;
};
diff --git a/airflow-core/src/airflow/ui/src/components/TriggerDag/TriggerDAGAdvancedOptions.tsx b/airflow-core/src/airflow/ui/src/components/TriggerDag/TriggerDAGAdvancedOptions.tsx
index d5512579093f0..d7eaa9e5bea27 100644
--- a/airflow-core/src/airflow/ui/src/components/TriggerDag/TriggerDAGAdvancedOptions.tsx
+++ b/airflow-core/src/airflow/ui/src/components/TriggerDag/TriggerDAGAdvancedOptions.tsx
@@ -75,9 +75,15 @@ const TriggerDAGAdvancedOptions = ({ control, isPartitioned }: TriggerDAGAdvance
control={control}
name="note"
render={({ field }) => (
-
- {translate("note.dagRun")}
-
+
+
+
+ {translate("note.dagRun")}
+
+
+
+
+
)}
/>
diff --git a/airflow-core/src/airflow/ui/src/components/TriggerDag/TriggerDAGForm.test.tsx b/airflow-core/src/airflow/ui/src/components/TriggerDag/TriggerDAGForm.test.tsx
index aed518453e6d4..73ebbbf76e073 100644
--- a/airflow-core/src/airflow/ui/src/components/TriggerDag/TriggerDAGForm.test.tsx
+++ b/airflow-core/src/airflow/ui/src/components/TriggerDag/TriggerDAGForm.test.tsx
@@ -43,10 +43,7 @@ vi.mock("react-i18next", () => ({
useTranslation: () => ({
i18n: { language: "en" },
// eslint-disable-next-line id-length
- t: (translationKey: string) =>
- ({
- "configForm.advancedOptions": "Advanced Options",
- })[translationKey] ?? translationKey,
+ t: (translationKey: string) => translationKey,
}),
}));
@@ -184,8 +181,6 @@ describe("TriggerDAGForm", () => {
{ wrapper: Wrapper },
);
- fireEvent.click(screen.getByText("Advanced Options"));
-
await waitFor(() => {
const configJson = screen.getByLabelText("Configuration JSON");
@@ -197,7 +192,7 @@ describe("TriggerDAGForm", () => {
});
});
- it("syncs Advanced Options JSON after Run Parameters edits in prefilled re-trigger mode", async () => {
+ it("syncs the Configuration JSON after Run Parameters edits in prefilled re-trigger mode", async () => {
const { container } = render(
{
}
fireEvent.change(messageField, { target: { value: "Updated message" } });
- fireEvent.click(screen.getByText("Advanced Options"));
await waitFor(() => {
const configJson = screen.getByLabelText("Configuration JSON");
@@ -257,8 +251,6 @@ describe("TriggerDAGForm", () => {
{ wrapper: Wrapper },
);
- fireEvent.click(screen.getByText("Advanced Options"));
-
await waitFor(() => expect(screen.getByText("runId")).toBeInTheDocument());
expect(screen.queryByText("dagRun.partitionKey")).not.toBeInTheDocument();
});
@@ -278,8 +270,6 @@ describe("TriggerDAGForm", () => {
{ wrapper: Wrapper },
);
- fireEvent.click(screen.getByText("Advanced Options"));
-
await waitFor(() => expect(screen.getByText("dagRun.partitionKey")).toBeInTheDocument());
expect(screen.getByText("components:triggerDag.partitionKeyHelp")).toBeInTheDocument();
});
diff --git a/airflow-core/src/airflow/ui/src/pages/Connections/ConnectionForm.test.tsx b/airflow-core/src/airflow/ui/src/pages/Connections/ConnectionForm.test.tsx
index 66714c35844db..52eaf1e2d70ec 100644
--- a/airflow-core/src/airflow/ui/src/pages/Connections/ConnectionForm.test.tsx
+++ b/airflow-core/src/airflow/ui/src/pages/Connections/ConnectionForm.test.tsx
@@ -93,29 +93,23 @@ describe("ConnectionForm", () => {
i18n.addResourceBundle("en", "admin", adminLocale, true, true);
});
- it("titles the provider fields section after the connection type and opens it by default", () => {
+ it("titles the provider fields section after the connection type", () => {
mockUseConnectionTypeMeta.mockReturnValue(loadedMeta);
render(renderForm(), { wrapper: Wrapper });
- expect(screen.getByRole("button", { name: "Pydantic AI Fields" })).toHaveAttribute(
- "aria-expanded",
- "true",
- );
- expect(screen.getByRole("button", { name: "Standard Fields" })).toHaveAttribute("aria-expanded", "true");
+ expect(screen.getByRole("heading", { name: "Pydantic AI Fields" })).toBeInTheDocument();
+ expect(screen.getByRole("heading", { name: "Standard Fields" })).toBeInTheDocument();
});
- it("keeps the saved extra and opens the section when hook metadata loads after the form mounts", () => {
+ it("keeps the saved extra and shows the section when hook metadata loads after the form mounts", () => {
mockUseConnectionTypeMeta.mockReturnValue(pendingMeta);
const { rerender } = render(renderForm(), { wrapper: Wrapper });
mockUseConnectionTypeMeta.mockReturnValue(loadedMeta);
rerender(renderForm());
- expect(screen.getByRole("button", { name: "Pydantic AI Fields" })).toHaveAttribute(
- "aria-expanded",
- "true",
- );
+ expect(screen.getByRole("heading", { name: "Pydantic AI Fields" })).toBeInTheDocument();
expect(document.querySelector("#element_model")).toHaveValue("openai:gpt-5");
});
});
diff --git a/airflow-core/src/airflow/ui/src/pages/Connections/ConnectionForm.tsx b/airflow-core/src/airflow/ui/src/pages/Connections/ConnectionForm.tsx
index d1ad9354bac03..54dc6be1dbb75 100644
--- a/airflow-core/src/airflow/ui/src/pages/Connections/ConnectionForm.tsx
+++ b/airflow-core/src/airflow/ui/src/pages/Connections/ConnectionForm.tsx
@@ -18,7 +18,7 @@
*/
import { useEffect, useState } from "react";
-import { Input, Button, Box, Spacer, HStack, Field, Stack, VStack, Spinner } from "@chakra-ui/react";
+import { Input, Button, Box, Spacer, HStack, Field, Heading, Stack, VStack, Spinner } from "@chakra-ui/react";
import { Select } from "chakra-react-select";
import { useForm, Controller } from "react-hook-form";
import { useTranslation } from "react-i18next";
@@ -210,57 +210,49 @@ const ConnectionForm = ({
/>
{selectedConnType && !isMetaPending ? (
-
-
- {translate("connections.form.standardFields")}
-
-
-
-
+
+
+ {translate("connections.form.standardFields")}
+
+
-
-
- {translate("connections.form.extraFieldsJson")}
-
-
- (
-
- {
- field.onChange(validateAndPrettifyJson(field.value));
- field.onBlur();
- }}
- onChange={field.onChange}
- value={field.value}
- />
- {Boolean(errors.conf) ? {errors.conf} : undefined}
- {isEditMode ? (
-
- {translate("connections.form.helperTextForRedactedFields")}
-
- ) : undefined}
-
- )}
- />
-
-
-
+
+
+
+ {translate("connections.form.extraFieldsJson")}
+
+
+ (
+
+ {
+ field.onChange(validateAndPrettifyJson(field.value));
+ field.onBlur();
+ }}
+ onChange={field.onChange}
+ value={field.value}
+ />
+ {Boolean(errors.conf) ? {errors.conf} : undefined}
+ {isEditMode ? (
+
+ {translate("connections.form.helperTextForRedactedFields")}
+
+ ) : undefined}
+
+ )}
+ />
+
+
+
+
) : undefined}
{multiTeamEnabled ? : undefined}
diff --git a/airflow-core/src/airflow/ui/src/pages/Connections/ConnectionStandardFields.tsx b/airflow-core/src/airflow/ui/src/pages/Connections/ConnectionStandardFields.tsx
index f4408cdc149bb..313269a36f099 100644
--- a/airflow-core/src/airflow/ui/src/pages/Connections/ConnectionStandardFields.tsx
+++ b/airflow-core/src/airflow/ui/src/pages/Connections/ConnectionStandardFields.tsx
@@ -36,7 +36,7 @@ const StandardFields = ({ control, standardFields }: StandardFieldsProps) => {
const [showPassword, setShowPassword] = useState(false);
return (
-
+
{Object.entries(standardFields).map(([key, fields]) => {
if (Boolean(fields.hidden)) {
return undefined;
diff --git a/airflow-core/src/airflow/ui/src/pages/HITLTaskInstances/HITLResponseForm.tsx b/airflow-core/src/airflow/ui/src/pages/HITLTaskInstances/HITLResponseForm.tsx
index bae3b02eba501..1e896b0955b6b 100644
--- a/airflow-core/src/airflow/ui/src/pages/HITLTaskInstances/HITLResponseForm.tsx
+++ b/airflow-core/src/airflow/ui/src/pages/HITLTaskInstances/HITLResponseForm.tsx
@@ -125,7 +125,6 @@ export const HITLResponseForm = ({ hitlDetail, namespace = "hitl", onResponded }
isHITL
key={hitlDetail.subject}
namespace={namespace}
- noAccordion
setError={setErrors}
/>