Rev 3384 | Rev 3389 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React from 'react'import { useForm } from 'react-hook-form'import { Button } from '@mui/material'import Widget from '@components/UI/Widget'import Form from '@components/common/form'import Input from '@components/UI/inputs/Input'import Select from '@components/UI/inputs/Select'import Ckeditor from '@components/common/ckeditor/Ckeditor'import DatetimePicker from '@components/common/inputs/datetime-picker'import LoadingWrapper from '@components/common/loading-wrapper'export default function GoalForm({onSubmit = () => {},habits = [],defaultValues = {},values = {}}) {const {control,handleSubmit,formState: { errors, isSubmitting }} = useForm({defaultValues,values})return (<Widget styles={{ overflow: 'visible' }}><Widget.Body><Form onSubmit={handleSubmit(onSubmit)}><LoadingWrapper loading={isSubmitting} displayChildren><Inputname='name'label='Nombre'placeholder='Escribe el nombre de la meta'control={control}rules={{ required: 'El nombre es requerido' }}error={errors.name?.message}/><Ckeditorlabel='Descripción'name='description'control={control}rules={{ required: 'La descripción es requerida' }}error={errors.description?.message}/><Inputtype='number'name='value'label='Valor cuantitativo de la Meta a lograr'placeholder='Escribe el valor'control={control}rules={{required: { value: true, message: 'El valor es requerido' },validate: {positive: (value) =>Number(value) > 0 || 'El valor mayor a cero'}}}error={errors.value?.message}/><Selectlabel='Hábitos y competencias para lograr la Meta'name='skill_id'control={control}options={habits}defaultValue={[]}rules={{ required: 'Por favor selecciona un hábito' }}error={errors.skill_id?.message}multiple/><DatetimePickerlabel='Fecha de inicio'name='start_date'control={control}rules={{required: { value: true, message: 'La fecha es requerida' },validate: {beEqualOrGreaterThanToday: (date) => {const selectedDate = new Date(date + 'T00:00:00')const selectedDateMs = selectedDate.getTime()const todayMs = new Date().setHours(0, 0, 0, 0)return (selectedDateMs >= todayMs ||'La fecha debe ser mayor o igual a hoy')}}}}/><DatetimePickerlabel='Fecha de finalización'name='end_date'control={control}rules={{required: { value: true, message: 'La fecha es requerida' },validate: (value, { start_date }) => {const startDate = new Date(start_date + 'T00:00:00')const endDate = new Date(value + 'T00:00:00')const startDateMs = startDate.getTime()const endDateMs = endDate.getTime()return (endDateMs > startDateMs ||'La fecha debe ser mayor a la fecha de inicio')}}}/><Button type='submit' color='primary'>Enviar</Button></LoadingWrapper></Form></Widget.Body></Widget>)}