feat: add cupo_maximo field to event creation and editing forms; update related components and types

This commit is contained in:
miguel
2025-06-23 12:40:40 -06:00
parent 50e37aa8fa
commit 613cc0b711
8 changed files with 268 additions and 127 deletions
+27 -9
View File
@@ -33,12 +33,24 @@ export default function CreateEvento({
<ImageUploader label="Banner del evento" onChange={handleBannerChange} />
<Input
label="Nombre del evento"
required
value={evento.nombre_evento}
onChange={(e) => handleChange('nombre_evento', e.target.value)}
/>
<div className="col-md-8">
<Input
label="Nombre del evento"
required
value={evento.nombre_evento}
onChange={(e) => handleChange('nombre_evento', e.target.value)}
/>
</div>
<div className="col-md-4">
<Input
label="Cupo máximo"
type='number'
required
value={evento.cupo_maximo}
onChange={(e) => handleChange('cupo_maximo', e.target.value)}
/>
</div>
<div className="mb-4">
<label className="form-label">Descripción del evento</label>
@@ -66,6 +78,14 @@ export default function CreateEvento({
{ label: 'Conferencia', value: 'conferencia' },
{ label: 'Taller', value: 'taller' },
{ label: 'Seminario', value: 'seminario' },
{ label: 'Curso', value: 'curso' },
{ label: 'Webinar', value: 'webinar' },
{ label: 'Reunión', value: 'reunion' },
{ label: 'Feria', value: 'feria' },
{ label: 'Concierto', value: 'concierto' },
{ label: 'Exposición', value: 'exposicion' },
{ label: 'Deportivo', value: 'deportivo' },
{ label: 'Cultural', value: 'cultural' },
{ label: 'Otro', value: 'otro' },
]}
/>
@@ -88,9 +108,7 @@ export default function CreateEvento({
type="datetime-local"
className={{ container: 'mb-3' }}
value={formatDateLocal(evento.fecha_fin)}
onChange={(e) =>
handleChange('fecha_fin', new Date(e.target.value))
}
onChange={(e) => handleChange('fecha_fin', new Date(e.target.value))}
/>
</div>
</div>
+12 -4
View File
@@ -4,7 +4,7 @@ import Button from '@/components/button';
import Input from '@/components/input';
import Select from '@/components/select';
import { CreateEventoType } from '@/types/create-evento';
import { GetEventoWithCuestionario } from '@/types/evento';
import { GetEventoWithCuestionarios } from '@/types/evento';
import axiosInstance from '@/utils/api-config';
import { getAxiosError } from '@/utils/errors-utils';
import { commands } from '@uiw/react-md-editor';
@@ -14,9 +14,9 @@ import toast from 'react-hot-toast';
const MDEditor = dynamic(() => import('@uiw/react-md-editor'), { ssr: false });
interface EditEventoProps {
evento: GetEventoWithCuestionario;
evento: GetEventoWithCuestionarios;
handleChange: (field: keyof CreateEventoType, value: string | Date) => void;
handleOnChange: (eventoActualizado: GetEventoWithCuestionario) => void;
handleOnChange: (eventoActualizado: GetEventoWithCuestionarios) => void;
}
export default function EditEvento({
@@ -95,7 +95,7 @@ export default function EditEvento({
<label className="form-label">Descripción del evento</label>
<div data-color-mode="light">
<MDEditor
value={evento.descripcion_evento}
value={evento.descripcion_evento ?? ''}
onChange={(value) => {
const texto = value || '';
if (texto.length <= 500) {
@@ -117,6 +117,14 @@ export default function EditEvento({
{ label: 'Conferencia', value: 'conferencia' },
{ label: 'Taller', value: 'taller' },
{ label: 'Seminario', value: 'seminario' },
{ label: 'Curso', value: 'curso' },
{ label: 'Webinar', value: 'webinar' },
{ label: 'Reunión', value: 'reunion' },
{ label: 'Feria', value: 'feria' },
{ label: 'Concierto', value: 'concierto' },
{ label: 'Exposición', value: 'exposicion' },
{ label: 'Deportivo', value: 'deportivo' },
{ label: 'Cultural', value: 'cultural' },
{ label: 'Otro', value: 'otro' },
]}
/>