SelectTopicView.tsx 2.7 Ko
Télécharger le fichier
import { FC, useState } from 'react';
import { LocalizeText, ReportState } from '../../../api';
import { Button, Column, Flex, Text } from '../../../common';
import { NativeTextTree } from '../../../common/native-text/NativeTextTree';
import { useHelp, useModTools } from '../../../hooks';
export const SelectTopicView: FC<{}> = (props) => {
const [selectedCategory, setSelectedCategory] = useState(-1);
const [selectedTopic, setSelectedTopic] = useState(-1);
const { setActiveReport = null } = useHelp();
const { cfhCategories = [] } = useModTools();
const submitTopic = () => {
if (selectedCategory < 0 || selectedTopic < 0) return;
setActiveReport((prevValue) => {
return {
...prevValue,
cfhCategory: selectedCategory,
cfhTopic: cfhCategories[selectedCategory].topics[selectedTopic].id,
currentStep: ReportState.INPUT_REPORT_MESSAGE
};
});
};
const back = () => {
setActiveReport((prevValue) => {
return { ...prevValue, currentStep: prevValue.currentStep - 1 };
});
};
return (
<NativeTextTree>
<>
<div className="flex flex-col gap-1">
<Text fontSize={4}>{LocalizeText('help.emergency.chat_report.subtitle')}</Text>
<Text>{LocalizeText('help.cfh.pick.topic')}</Text>
</div>
<Column gap={1} overflow="auto">
{selectedCategory < 0 &&
cfhCategories.map((category, index) => (
<Button key={index} variant="danger" onClick={(event) => setSelectedCategory(index)}>
{LocalizeText(`help.cfh.reason.${category.name}`)}
</Button>
))}
{selectedCategory >= 0 &&
cfhCategories[selectedCategory].topics.map((topic, index) => (
<Button key={index} active={selectedTopic === index} variant="danger" onClick={(event) => setSelectedTopic(index)}>
{LocalizeText(`help.cfh.topic.${topic.id}`)}
</Button>
))}
</Column>
<Flex gap={2} justifyContent="between">
<Button variant="secondary" onClick={back}>
{LocalizeText('generic.back')}
</Button>
<Button disabled={selectedTopic < 0} onClick={submitTopic}>
{LocalizeText('help.emergency.main.submit.button')}
</Button>
</Flex>
</>
</NativeTextTree>
);
};
