From 2698817adb3008b03494a583174e263a1ee780b8 Mon Sep 17 00:00:00 2001 From: Dhruwang Jariwala <67850763+Dhruwang@users.noreply.github.com> Date: Fri, 28 Nov 2025 01:40:03 +0530 Subject: [PATCH] fix: language select UI (#6890) Co-authored-by: Johannes --- .../ShareSurveyLink/components/LanguageDropdown.tsx | 10 ++++------ .../components/default-language-select.tsx | 2 +- .../components/language-indicator.tsx | 2 +- .../components/language-select.tsx | 8 ++++---- .../components/language-toggle.tsx | 11 +++++++---- apps/web/modules/survey/editor/lib/project.test.ts | 8 +++++++- apps/web/modules/survey/editor/lib/project.ts | 6 +++++- .../src/components/general/language-switch.tsx | 4 ++-- 8 files changed, 31 insertions(+), 20 deletions(-) diff --git a/apps/web/modules/analysis/components/ShareSurveyLink/components/LanguageDropdown.tsx b/apps/web/modules/analysis/components/ShareSurveyLink/components/LanguageDropdown.tsx index 84b6e223a5..083f026736 100644 --- a/apps/web/modules/analysis/components/ShareSurveyLink/components/LanguageDropdown.tsx +++ b/apps/web/modules/analysis/components/ShareSurveyLink/components/LanguageDropdown.tsx @@ -15,18 +15,16 @@ interface LanguageDropdownProps { export const LanguageDropdown = ({ survey, setLanguage, locale }: LanguageDropdownProps) => { const [showLanguageSelect, setShowLanguageSelect] = useState(false); - const languageDropdownRef = useRef(null); + const containerRef = useRef(null); const enabledLanguages = getEnabledLanguages(survey.languages ?? []); - useClickOutside(languageDropdownRef, () => setShowLanguageSelect(false)); + useClickOutside(containerRef, () => setShowLanguageSelect(false)); return ( enabledLanguages.length > 1 && ( -
+
{showLanguageSelect && ( -
+
{enabledLanguages.map((surveyLanguage) => ( {showLanguageDropdown ? (
{surveyLanguages.map( (language) => diff --git a/apps/web/modules/ee/multi-language-surveys/components/language-select.tsx b/apps/web/modules/ee/multi-language-surveys/components/language-select.tsx index e66c431859..692615eb4c 100644 --- a/apps/web/modules/ee/multi-language-surveys/components/language-select.tsx +++ b/apps/web/modules/ee/multi-language-surveys/components/language-select.tsx @@ -66,10 +66,10 @@ export function LanguageSelect({ language, onLanguageChange, disabled, locale }: disabled={disabled} onClick={toggleDropdown} variant="ghost"> - + {selectedOption ? getLabelForLocale(selectedOption) : t("common.select")} - +
@@ -84,10 +84,10 @@ export function LanguageSelect({ language, onLanguageChange, disabled, locale }: value={searchTerm} />
- {filteredItems.map((item, index) => ( + {filteredItems.map((item) => ( ) : null}
diff --git a/apps/web/modules/survey/editor/lib/project.test.ts b/apps/web/modules/survey/editor/lib/project.test.ts index ea3ef9e913..cbd686b329 100644 --- a/apps/web/modules/survey/editor/lib/project.test.ts +++ b/apps/web/modules/survey/editor/lib/project.test.ts @@ -91,7 +91,13 @@ describe("getProjectLanguages", () => { expect(languages).toEqual(mockProject.languages); expect(prisma.project.findUnique).toHaveBeenCalledWith({ where: { id: "testProjectId" }, - select: { languages: true }, + select: { + languages: { + orderBy: { + code: "asc", + }, + }, + }, }); }); diff --git a/apps/web/modules/survey/editor/lib/project.ts b/apps/web/modules/survey/editor/lib/project.ts index b9cb5a40b2..0d1c951d84 100644 --- a/apps/web/modules/survey/editor/lib/project.ts +++ b/apps/web/modules/survey/editor/lib/project.ts @@ -28,7 +28,11 @@ export const getProjectLanguages = reactCache(async (projectId: string): Promise id: projectId, }, select: { - languages: true, + languages: { + orderBy: { + code: "asc", + }, + }, }, }); if (!project) { diff --git a/packages/surveys/src/components/general/language-switch.tsx b/packages/surveys/src/components/general/language-switch.tsx index 88e2b74936..e43eb2c548 100644 --- a/packages/surveys/src/components/general/language-switch.tsx +++ b/packages/surveys/src/components/general/language-switch.tsx @@ -99,7 +99,7 @@ export function LanguageSwitch({ {showLanguageDropdown ? (
@@ -109,7 +109,7 @@ export function LanguageSwitch({