Skip to content

Commit a47107b

Browse files
committed
modularize
1 parent 05d188f commit a47107b

File tree

3 files changed

+45
-39
lines changed

3 files changed

+45
-39
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import React, { FC } from 'react';
2+
import { useTranslation } from 'react-i18next';
3+
type LanguageButtonsProps = {
4+
availableLanguages: string[];
5+
setLanguage: (lang: string) => void;
6+
};
7+
8+
const LanguageButtons: FC<LanguageButtonsProps> = ({ availableLanguages, setLanguage }) => {
9+
const { t } = useTranslation();
10+
return (
11+
<div className="py-6 px-5 space-y-6">
12+
<form className="flex gap-y-4 gap-x-8">
13+
{availableLanguages.map((lang, index) => (
14+
<label key={index} id={'lang' + lang}>
15+
<input
16+
className="hidden peer"
17+
type="radio"
18+
key={index}
19+
id={'lang' + lang}
20+
name="lang"></input>
21+
<div
22+
className="peer-checked:bg-gray-300 text-base font-small text-gray-900 hover:text-gray-700"
23+
onClick={() => setLanguage(lang)}>
24+
{t(lang)}
25+
</div>
26+
</label>
27+
))}
28+
</form>
29+
</div>
30+
);
31+
};
32+
33+
export default LanguageButtons;

web/frontend/src/pages/form/components/AddQuestionModal.tsx

+5-19
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import useQuestionForm from './utils/useQuestionForm';
1616
import DisplayTypeIcon from './DisplayTypeIcon';
1717

1818
import { availableLanguages } from 'language/Configuration';
19+
import LanguageButtons from 'language/LanguageButtons';
1920

2021
type AddQuestionModalProps = {
2122
question: RankQuestion | SelectQuestion | TextQuestion;
@@ -177,25 +178,10 @@ const AddQuestionModal: FC<AddQuestionModalProps> = ({
177178
<div className="pb-6 pr-6 pl-6">
178179
<div className="flex flex-col sm:flex-row sm:min-h-[18rem] ">
179180
<div className="flex flex-col w-[55%]">
180-
<div className="py-6 px-5 space-y-6">
181-
<form className="flex gap-y-4 gap-x-8">
182-
{availableLanguages.map((lang, index) => (
183-
<label id={'lang' + lang}>
184-
<input
185-
className="hidden peer"
186-
type="radio"
187-
key={index}
188-
id={'lang' + lang}
189-
name="lang"></input>
190-
<div
191-
className="peer-checked:bg-gray-300 text-base font-small text-gray-900 hover:text-gray-700"
192-
onClick={() => setLanguage(lang)}>
193-
{t(lang)}
194-
</div>
195-
</label>
196-
))}
197-
</form>
198-
</div>
181+
<LanguageButtons
182+
availableLanguages={availableLanguages}
183+
setLanguage={setLanguage}
184+
/>
199185
<div className="pb-4">{t('mainProperties')} </div>
200186
<div>
201187
<label className="block text-md mt font-medium text-gray-500">

web/frontend/src/pages/form/components/FormForm.tsx

+7-20
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { FC, Fragment, useEffect, useState } from 'react';
1+
import { FC, useEffect, useState } from 'react';
22
import { useTranslation } from 'react-i18next';
33
import { checkTransaction, newForm } from 'components/utils/Endpoints';
44

@@ -22,6 +22,7 @@ import { useConfiguration } from 'components/utils/useConfiguration';
2222
import BallotDisplay from 'pages/ballot/components/BallotDisplay';
2323

2424
import { availableLanguages } from 'language/Configuration';
25+
import LanguageButtons from 'language/LanguageButtons';
2526
import { default as i18n } from 'i18next';
2627
// notifyParent must be used by the child to tell the parent if the subject's
2728
// schema changed.
@@ -155,25 +156,11 @@ const FormForm: FC<FormFormProps> = () => {
155156
<div className="flex flex-col justify-items-center mt-3 mb-2">
156157
{titleChanging ? (
157158
<>
158-
<div className="py-6 px-5 space-y-6">
159-
<form className="flex gap-y-4 gap-x-8">
160-
{availableLanguages.map((lang, index) => (
161-
<label id={'lang' + lang}>
162-
<input
163-
className="hidden peer"
164-
type="radio"
165-
key={index}
166-
id={'lang' + lang}
167-
name="lang"></input>
168-
<div
169-
className="peer-checked:bg-gray-300 text-base font-small text-gray-900 hover:text-gray-700"
170-
onClick={() => setLanguage(lang)}>
171-
{t(lang)}
172-
</div>
173-
</label>
174-
))}
175-
</form>
176-
</div>
159+
<LanguageButtons
160+
availableLanguages={availableLanguages}
161+
setLanguage={setLanguage}
162+
/>
163+
177164
{language === 'en' && (
178165
<input
179166
value={MainTitle}

0 commit comments

Comments
 (0)