import { useEffect } from 'react' import { Box, Button, Stack, Typography } from '@mui/material' import { ArrowLeft } from 'lucide-react' import { useOfferWizardStore } from '../../stores/offerWizardStore' import { useProperties } from '../../hooks/useProperties' import { ReportObjectFieldSelector } from './ReportObjectFieldSelector' import type { ReportObjectFieldKey, ReportObjectFieldSelection } from '../../domain/inquiryReport' const DEFAULT_FIELDS: ReportObjectFieldKey[] = ['areaSqm', 'rentPricePerSqm', 'availabilityDate'] const MANDATORY_FIELDS: ReportObjectFieldKey[] = ['title', 'location', 'mapImageUrl', 'images'] export function OfferFieldSelectionStep() { const propertyIds = useOfferWizardStore(s => s.selectedPropertyIds) const fieldSelections = useOfferWizardStore(s => s.fieldSelections) const setFieldSelections = useOfferWizardStore(s => s.setFieldSelections) const updateFieldSelection = useOfferWizardStore(s => s.updateFieldSelection) const setStep = useOfferWizardStore(s => s.setStep) const { data: allProperties = [] } = useProperties() const selectedProperties = allProperties.filter(p => propertyIds.includes(p.id)) // Initialise selections when properties are loaded or change useEffect(() => { if (selectedProperties.length === 0) return const existing = new Set(fieldSelections.map(fs => fs.propertyId)) const missing = selectedProperties.filter(p => !existing.has(p.id)) if (missing.length > 0) { setFieldSelections([ ...fieldSelections, ...missing.map(p => ({ propertyId: p.id, mandatoryFields: MANDATORY_FIELDS, selectedOptionalFields: DEFAULT_FIELDS, })), ]) } // run only when property list or selections change length // eslint-disable-next-line react-hooks/exhaustive-deps }, [selectedProperties.length, fieldSelections.length]) return ( Wählen Sie die Datenfelder, die auf der Objektseite des Angebots angezeigt werden sollen. Pflichtfelder (Titel, Standort, Foto) sind immer enthalten. {selectedProperties.map(p => { const selection: ReportObjectFieldSelection = fieldSelections.find(fs => fs.propertyId === p.id) ?? { propertyId: p.id, mandatoryFields: MANDATORY_FIELDS, selectedOptionalFields: DEFAULT_FIELDS, } return ( updateFieldSelection(p.id, v)} /> ) })} ) }