From da95dcca00a123215bf0a5f6508652b0c8e280ff Mon Sep 17 00:00:00 2001 From: Fabian Schmidt <fabian@ds-fs.de> Date: Fri, 4 Jun 2021 15:12:02 +0200 Subject: [PATCH] Add poi category select --- src/components/Form/AddPoiForm.tsx | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/src/components/Form/AddPoiForm.tsx b/src/components/Form/AddPoiForm.tsx index b0d2539..61c0aa9 100644 --- a/src/components/Form/AddPoiForm.tsx +++ b/src/components/Form/AddPoiForm.tsx @@ -15,7 +15,7 @@ import Spinner from '../Spinner'; import type { CreatePoiMutationMutationVariables, Mutation } from '../../generated/graphql'; import SelectInput from './SelectInput'; -type RelationStatusOption = { label: string; value: string }; +type StringSelectOption = { label: string; value: string }; const AddPoiForm: React.FC = () => { const [formData, setFormData] = useState<PointOfInterestFormData>({ @@ -38,7 +38,8 @@ const AddPoiForm: React.FC = () => { const history = useHistory(); const { data } = usePoiData(); const [tagOptions, setTagOptions] = useState<Tag[]>([]); - const [relationStatusOptions, setRelationStatusOptions] = useState<RelationStatusOption[]>([]); + const [categoryOptions, setCatgeoryOptions] = useState<StringSelectOption[]>([]); + const [relationStatusOptions, setRelationStatusOptions] = useState<StringSelectOption[]>([]); const [selectedTags, setSelectedTags] = useState<Tag[]>([]); const setNotification = useStore((state) => state.setNotification); @@ -123,6 +124,10 @@ const AddPoiForm: React.FC = () => { .filter((poi) => !!poi.relationStatus) .map((poi) => ({ label: poi.relationStatus, value: poi.relationStatus })); setRelationStatusOptions(relationStatuses); + const categories = removeDuplicateObjects(data, 'category') + .filter((poi) => !!poi.category) + .map((poi) => ({ label: poi.category, value: poi.category })); + setCatgeoryOptions(categories); } }, [data]); @@ -153,21 +158,27 @@ const AddPoiForm: React.FC = () => { /> <TagInput label={'Tags'} tags={selectedTags} options={tagOptions} onTagsChange={setSelectedTags} /> <TextInput label={'Name des Orts'} name={'name'} value={formData.name} onChange={handleInputChange} required /> - <TextInput + <SelectInput label={'Kategorie'} - name={'category'} - value={formData.category} - onChange={handleInputChange} required + name={'category'} + options={categoryOptions} + onChange={(selectedOption) => + setFormData((prev) => ({ + ...prev, + category: selectedOption ? (selectedOption as StringSelectOption).value : '', + })) + } /> <SelectInput label={'Verhältnis zum Fab City Hamburg e.V.'} + required name={'relationStatus'} options={relationStatusOptions} onChange={(selectedOption) => setFormData((prev) => ({ ...prev, - relationStatus: selectedOption ? (selectedOption as RelationStatusOption).value : '', + relationStatus: selectedOption ? (selectedOption as StringSelectOption).value : '', })) } /> -- GitLab