From 22ea7302bbc1b9951568f28a89aa8ae925e0960f Mon Sep 17 00:00:00 2001 From: Dhruwang Jariwala <67850763+Dhruwang@users.noreply.github.com> Date: Wed, 21 Jan 2026 19:44:22 +0530 Subject: [PATCH] fix: removed validation from button labels (#7138) --- .../survey/editor/components/block-card.tsx | 21 +------ packages/types/surveys/types.ts | 62 ------------------- 2 files changed, 1 insertion(+), 82 deletions(-) diff --git a/apps/web/modules/survey/editor/components/block-card.tsx b/apps/web/modules/survey/editor/components/block-card.tsx index 60e911019a..03dea0cf5d 100644 --- a/apps/web/modules/survey/editor/components/block-card.tsx +++ b/apps/web/modules/survey/editor/components/block-card.tsx @@ -36,7 +36,6 @@ import { PictureSelectionForm } from "@/modules/survey/editor/components/picture import { RankingElementForm } from "@/modules/survey/editor/components/ranking-element-form"; import { RatingElementForm } from "@/modules/survey/editor/components/rating-element-form"; import { formatTextWithSlashes } from "@/modules/survey/editor/lib/utils"; -import { isLabelValidForAllLanguages } from "@/modules/survey/editor/lib/validation"; import { getElementIconMap, getTSurveyElementTypeEnumName } from "@/modules/survey/lib/elements"; import { Alert, AlertButton, AlertTitle } from "@/modules/ui/components/alert"; @@ -128,25 +127,7 @@ export const BlockCard = ({ const isBlockOpen = block.elements.some((element) => element.id === activeElementId); const hasInvalidElement = block.elements.some((element) => invalidElements?.includes(element.id)); - - // Check if button labels have incomplete translations for any enabled language - // A button label is invalid if it exists but doesn't have valid text for all enabled languages - const surveyLanguages = localSurvey.languages ?? []; - const hasInvalidButtonLabel = - block.buttonLabel !== undefined && - block.buttonLabel["default"]?.trim() !== "" && - !isLabelValidForAllLanguages(block.buttonLabel, surveyLanguages); - - // Check if back button label is invalid - // Back button label should exist for all blocks except the first one - const hasInvalidBackButtonLabel = - blockIdx > 0 && - block.backButtonLabel !== undefined && - block.backButtonLabel["default"]?.trim() !== "" && - !isLabelValidForAllLanguages(block.backButtonLabel, surveyLanguages); - - // Block should be highlighted if it has invalid elements OR invalid button labels - const isBlockInvalid = hasInvalidElement || hasInvalidButtonLabel || hasInvalidBackButtonLabel; + const isBlockInvalid = hasInvalidElement; const [isBlockCollapsed, setIsBlockCollapsed] = useState(false); const [openAdvanced, setOpenAdvanced] = useState(blockLogic.length > 0); diff --git a/packages/types/surveys/types.ts b/packages/types/surveys/types.ts index 848fe08457..070d3ed2fe 100644 --- a/packages/types/surveys/types.ts +++ b/packages/types/surveys/types.ts @@ -45,7 +45,6 @@ import { FORBIDDEN_IDS, findLanguageCodesForDuplicateLabels, findQuestionsWithCyclicLogic, - getTextContent, isConditionGroup, validateCardFieldsForAllLanguages, validateQuestionLabels, @@ -1334,68 +1333,7 @@ export const ZSurvey = z // 4. Detailed validation for each block and its elements blocks.forEach((block, blockIndex) => { - // Validate block button labels const defaultLanguageCode = "default"; - - if ( - block.buttonLabel?.[defaultLanguageCode] && - block.buttonLabel[defaultLanguageCode].trim() !== "" - ) { - // Validate button label for all enabled languages - const enabledLanguages = languages.filter((lang) => lang.enabled); - const languageCodes = enabledLanguages.map((lang) => - lang.default ? "default" : lang.language.code - ); - - for (const languageCode of languageCodes.length === 0 ? ["default"] : languageCodes) { - const labelValue = block.buttonLabel[languageCode]; - if (!labelValue || getTextContent(labelValue).length === 0) { - const invalidLanguageCode = - languageCode === "default" - ? (languages.find((lang) => lang.default)?.language.code ?? "default") - : languageCode; - - ctx.addIssue({ - code: z.ZodIssueCode.custom, - message: `The buttonLabel in block ${String(blockIndex + 1)} is missing for the following languages: ${invalidLanguageCode}`, - path: ["blocks", blockIndex, "buttonLabel"], - params: { invalidLanguageCodes: [invalidLanguageCode] }, - }); - } - } - } - - //only validate back button label for blocks other than the first one and if back button is not hidden - if ( - !isBackButtonHidden && - blockIndex > 0 && - block.backButtonLabel?.[defaultLanguageCode] && - block.backButtonLabel[defaultLanguageCode].trim() !== "" - ) { - // Validate back button label for all enabled languages - const enabledLanguages = languages.filter((lang) => lang.enabled); - const languageCodes = enabledLanguages.map((lang) => - lang.default ? "default" : lang.language.code - ); - - for (const languageCode of languageCodes.length === 0 ? ["default"] : languageCodes) { - const labelValue = block.backButtonLabel[languageCode]; - if (!labelValue || getTextContent(labelValue).length === 0) { - const invalidLanguageCode = - languageCode === "default" - ? (languages.find((lang) => lang.default)?.language.code ?? "default") - : languageCode; - - ctx.addIssue({ - code: z.ZodIssueCode.custom, - message: `The backButtonLabel in block ${String(blockIndex + 1)} is missing for the following languages: ${invalidLanguageCode}`, - path: ["blocks", blockIndex, "backButtonLabel"], - params: { invalidLanguageCodes: [invalidLanguageCode] }, - }); - } - } - } - // Validate each element in the block block.elements.forEach((element, elementIndex) => { // Validate headline (required for all elements)