mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-21 18:11:12 -05:00
Refactor: Update image upload components
This commit is contained in:
@@ -11,6 +11,7 @@ import { Badge } from '@/components/ui/badge';
|
||||
import { SlugField } from '@/components/ui/slug-field';
|
||||
import { Layers, Save, X } from 'lucide-react';
|
||||
import { useUserRole } from '@/hooks/useUserRole';
|
||||
import { EntityImageUploader } from '@/components/upload/EntityImageUploader';
|
||||
|
||||
const rideModelSchema = z.object({
|
||||
name: z.string().min(1, 'Name is required'),
|
||||
@@ -18,7 +19,11 @@ const rideModelSchema = z.object({
|
||||
category: z.string().min(1, 'Category is required'),
|
||||
ride_type: z.string().min(1, 'Ride type is required'),
|
||||
description: z.string().optional(),
|
||||
technical_specs: z.string().optional()
|
||||
technical_specs: z.string().optional(),
|
||||
banner_image_id: z.string().optional(),
|
||||
banner_image_url: z.string().optional(),
|
||||
card_image_id: z.string().optional(),
|
||||
card_image_url: z.string().optional()
|
||||
});
|
||||
|
||||
type RideModelFormData = z.infer<typeof rideModelSchema>;
|
||||
@@ -63,7 +68,11 @@ export function RideModelForm({
|
||||
category: initialData?.category || '',
|
||||
ride_type: initialData?.ride_type || '',
|
||||
description: initialData?.description || '',
|
||||
technical_specs: initialData?.technical_specs || ''
|
||||
technical_specs: initialData?.technical_specs || '',
|
||||
banner_image_id: initialData?.banner_image_id || '',
|
||||
banner_image_url: initialData?.banner_image_url || '',
|
||||
card_image_id: initialData?.card_image_id || '',
|
||||
card_image_url: initialData?.card_image_url || ''
|
||||
}
|
||||
});
|
||||
|
||||
@@ -166,6 +175,22 @@ export function RideModelForm({
|
||||
</p>
|
||||
</div>
|
||||
|
||||
{/* Images */}
|
||||
<EntityImageUploader
|
||||
images={{
|
||||
banner: { url: watch('banner_image_url'), id: watch('banner_image_id') },
|
||||
card: { url: watch('card_image_url'), id: watch('card_image_id') }
|
||||
}}
|
||||
onImagesChange={(images) => {
|
||||
if (images.banner_image_id !== undefined) setValue('banner_image_id', images.banner_image_id);
|
||||
if (images.banner_image_url !== undefined) setValue('banner_image_url', images.banner_image_url);
|
||||
if (images.card_image_id !== undefined) setValue('card_image_id', images.card_image_id);
|
||||
if (images.card_image_url !== undefined) setValue('card_image_url', images.card_image_url);
|
||||
}}
|
||||
showLogo={false}
|
||||
entityType="ride_model"
|
||||
/>
|
||||
|
||||
{/* Actions */}
|
||||
<div className="flex gap-3 justify-end">
|
||||
<Button type="button" variant="outline" onClick={onCancel}>
|
||||
|
||||
Reference in New Issue
Block a user