feat: Implement photo selection for entity edit forms

This commit is contained in:
gpt-engineer-app[bot]
2025-10-02 14:28:57 +00:00
parent 0a87a72931
commit fddb87c5be
8 changed files with 174 additions and 22 deletions

View File

@@ -45,7 +45,11 @@ type DesignerFormData = z.infer<typeof designerSchema>;
interface DesignerFormProps {
onSubmit: (data: DesignerFormData) => void;
onCancel: () => void;
initialData?: Partial<DesignerFormData>;
initialData?: Partial<DesignerFormData & {
id?: string;
banner_image_url?: string;
card_image_url?: string;
}>;
}
export function DesignerForm({ onSubmit, onCancel, initialData }: DesignerFormProps) {
@@ -193,6 +197,9 @@ export function DesignerForm({ onSubmit, onCancel, initialData }: DesignerFormPr
value={watch('images') || { uploaded: [] }}
onChange={(images) => setValue('images', images)}
entityType="designer"
entityId={initialData?.id}
currentBannerUrl={initialData?.banner_image_url}
currentCardUrl={initialData?.card_image_url}
/>
{/* Actions */}

View File

@@ -45,7 +45,11 @@ type ManufacturerFormData = z.infer<typeof manufacturerSchema>;
interface ManufacturerFormProps {
onSubmit: (data: ManufacturerFormData) => void;
onCancel: () => void;
initialData?: Partial<ManufacturerFormData>;
initialData?: Partial<ManufacturerFormData & {
id?: string;
banner_image_url?: string;
card_image_url?: string;
}>;
}
export function ManufacturerForm({ onSubmit, onCancel, initialData }: ManufacturerFormProps) {
@@ -193,6 +197,9 @@ export function ManufacturerForm({ onSubmit, onCancel, initialData }: Manufactur
value={watch('images') || { uploaded: [] }}
onChange={(images) => setValue('images', images)}
entityType="manufacturer"
entityId={initialData?.id}
currentBannerUrl={initialData?.banner_image_url}
currentCardUrl={initialData?.card_image_url}
/>
{/* Actions */}

View File

@@ -45,7 +45,11 @@ type OperatorFormData = z.infer<typeof operatorSchema>;
interface OperatorFormProps {
onSubmit: (data: OperatorFormData) => void;
onCancel: () => void;
initialData?: Partial<OperatorFormData>;
initialData?: Partial<OperatorFormData & {
id?: string;
banner_image_url?: string;
card_image_url?: string;
}>;
}
export function OperatorForm({ onSubmit, onCancel, initialData }: OperatorFormProps) {
@@ -193,6 +197,9 @@ export function OperatorForm({ onSubmit, onCancel, initialData }: OperatorFormPr
value={watch('images') || { uploaded: [] }}
onChange={(images) => setValue('images', images)}
entityType="operator"
entityId={initialData?.id}
currentBannerUrl={initialData?.banner_image_url}
currentCardUrl={initialData?.card_image_url}
/>
{/* Actions */}

View File

@@ -55,8 +55,11 @@ interface ParkFormProps {
}) => Promise<void>;
onCancel?: () => void;
initialData?: Partial<ParkFormData & {
id?: string;
operator_id?: string;
property_owner_id?: string;
banner_image_url?: string;
card_image_url?: string;
}>;
isEditing?: boolean;
}
@@ -421,6 +424,9 @@ export function ParkForm({ onSubmit, onCancel, initialData, isEditing = false }:
value={watch('images')}
onChange={(images: ImageAssignments) => setValue('images', images)}
entityType="park"
entityId={isEditing ? initialData?.id : undefined}
currentBannerUrl={initialData?.banner_image_url}
currentCardUrl={initialData?.card_image_url}
/>
{/* Form Actions */}

View File

@@ -45,7 +45,11 @@ type PropertyOwnerFormData = z.infer<typeof propertyOwnerSchema>;
interface PropertyOwnerFormProps {
onSubmit: (data: PropertyOwnerFormData) => void;
onCancel: () => void;
initialData?: Partial<PropertyOwnerFormData>;
initialData?: Partial<PropertyOwnerFormData & {
id?: string;
banner_image_url?: string;
card_image_url?: string;
}>;
}
export function PropertyOwnerForm({ onSubmit, onCancel, initialData }: PropertyOwnerFormProps) {
@@ -193,6 +197,9 @@ export function PropertyOwnerForm({ onSubmit, onCancel, initialData }: PropertyO
value={watch('images') || { uploaded: [] }}
onChange={(images) => setValue('images', images)}
entityType="property_owner"
entityId={initialData?.id}
currentBannerUrl={initialData?.banner_image_url}
currentCardUrl={initialData?.card_image_url}
/>
{/* Actions */}

View File

@@ -84,7 +84,11 @@ type RideFormData = z.infer<typeof rideSchema>;
interface RideFormProps {
onSubmit: (data: RideFormData) => Promise<void>;
onCancel?: () => void;
initialData?: Partial<RideFormData>;
initialData?: Partial<RideFormData & {
id?: string;
banner_image_url?: string;
card_image_url?: string;
}>;
isEditing?: boolean;
}
@@ -752,6 +756,9 @@ export function RideForm({ onSubmit, onCancel, initialData, isEditing = false }:
value={watch('images') || { uploaded: [] }}
onChange={(images: ImageAssignments) => setValue('images', images)}
entityType="ride"
entityId={isEditing ? initialData?.id : undefined}
currentBannerUrl={initialData?.banner_image_url}
currentCardUrl={initialData?.card_image_url}
/>
{/* Form Actions */}

View File

@@ -42,7 +42,11 @@ interface RideModelFormProps {
manufacturerId?: string;
onSubmit: (data: RideModelFormData) => void;
onCancel: () => void;
initialData?: Partial<RideModelFormData>;
initialData?: Partial<RideModelFormData & {
id?: string;
banner_image_url?: string;
card_image_url?: string;
}>;
}
const categories = [
@@ -193,6 +197,9 @@ export function RideModelForm({
value={watch('images') || { uploaded: [] }}
onChange={(images) => setValue('images', images)}
entityType="ride_model"
entityId={initialData?.id}
currentBannerUrl={initialData?.banner_image_url}
currentCardUrl={initialData?.card_image_url}
/>
{/* Actions */}