fix: Form Builder Name Field Shows Default Label When Custom Label is Empty (#24201)

* removed previious pr ommit from thi sone

* fixed addressed issues

* fallback to non-empty label for variant fields

* fallback to default label

* normalize empty labels and fallback to default when label equals field name

* fix: initially use empty label for name field (fullName variant)

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix: remove normalization of empty field labels in FormBuilder

* fix: enhance label handling in getTranslatedConfigVariants function

* Update apps/web/modules/event-types/components/tabs/advanced/FormBuilder.tsx

Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com>

---------

Co-authored-by: Pallav <90088723+Pallava-Joshi@users.noreply.github.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Sahitya Chandra <sahityajb@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Kartik
2026-02-06 16:58:31 +05:30
committed by GitHub
co-authored by Cursor devin-ai-integration[bot] Pallav Sahitya Chandra
parent b74dd3227c
commit 66fc0465bd
3 changed files with 29 additions and 8 deletions
@@ -909,9 +909,15 @@ function FieldLabel({ field }: { field: RhfFormField }) {
`Field has \`variantsConfig\` but no \`defaultVariant\`${JSON.stringify(fieldTypeConfigVariantsConfig)}`
);
}
const label =
variantsConfigVariants?.[variant as keyof typeof fieldTypeConfigVariants]?.fields?.[0]?.label || "";
return <span>{t(label)}</span>;
const variantData = variantsConfigVariants?.[variant as keyof typeof fieldTypeConfigVariants];
const firstField = variantData?.fields?.[0];
const label = firstField?.label?.trim() ? firstField.label : "";
const firstFieldName = firstField?.name;
const defaultLabelFromTypeConfig =
fieldTypeConfigVariants?.[variant as keyof typeof fieldTypeConfigVariants]?.fieldsMap?.[
firstFieldName as keyof (typeof fieldTypeConfigVariants)[typeof variant]["fieldsMap"]
]?.defaultLabel || "";
return <span>{t(label || defaultLabelFromTypeConfig)}</span>;
}
function VariantSelector() {
@@ -1050,4 +1056,4 @@ function VariantFields({
</ul>
</>
);
}
}
+1 -1
View File
@@ -68,7 +68,7 @@ const configMap: Record<FieldType, Omit<z.infer<typeof fieldTypeConfigSchema>, "
{
name: "fullName",
type: "text",
label: "your_name",
label: "",
required: true,
},
],
@@ -9,10 +9,21 @@ type ConfigVariants = NonNullable<ReturnType<typeof getConfig>>["variants"];
type Field = z.infer<typeof fieldSchema>;
type Translate = ReturnType<typeof useLocale>["t"];
function getTranslatedConfigVariants(configVariants: ConfigVariants, translate: Translate) {
function getTranslatedConfigVariants(
configVariants: ConfigVariants,
translate: Translate,
fieldType: Field["type"]
) {
const fieldTypeVariantsConfig = fieldTypesConfigMap[fieldType]?.variantsConfig?.variants;
return Object.entries(configVariants).reduce((variantsConfigVariants, [variantName, variant]) => {
const variantFieldsMap = fieldTypeVariantsConfig?.[variantName as keyof typeof fieldTypeVariantsConfig]
?.fieldsMap;
const translatedFields = variant.fields.map((field) => {
const label = field.label ?? "";
const defaultLabel =
variantFieldsMap?.[field.name as keyof typeof variantFieldsMap]?.defaultLabel ?? "";
const label = (field.label?.trim() ? field.label : defaultLabel) ?? "";
const placeholder = field.placeholder ?? "";
return {
...field,
@@ -50,7 +61,11 @@ export const getConfig = (field: Pick<Field, "variantsConfig" | "type">) => {
export const getTranslatedConfig = (field: Pick<Field, "variantsConfig" | "type">, translate: Translate) => {
const variantsConfig = getConfig(field);
if (!variantsConfig) return variantsConfig;
const newVariantsConfigVariants = getTranslatedConfigVariants(variantsConfig.variants, translate);
const newVariantsConfigVariants = getTranslatedConfigVariants(
variantsConfig.variants,
translate,
field.type
);
return {
...variantsConfig,