"use client" import { LayoutNavbarNew, TEMA } from '@/module/_global'; import { Avatar, Box, Button, Divider, Flex, Grid, Group, Input, NumberInput, rem, Select, SimpleGrid, Stack, Text, Textarea, TextInput } from '@mantine/core'; import { DateInput, TimeInput } from '@mantine/dates'; import React, { useState } from 'react'; import { IoIosArrowDropright } from 'react-icons/io'; import { useParams, useRouter } from 'next/navigation'; import LayoutModal from '@/module/_global/layout/layout_modal'; import toast from 'react-hot-toast'; import moment from 'moment'; import { useHookstate } from '@hookstate/core'; import { globalCalender, globalUlangiEvent } from '../lib/val_calender'; import { IFormMemberCalender, IFormUlangiEvent } from '../lib/type_calender'; import { funCreateCalender } from '../lib/api_calender'; import CreateUserCalender from './create_user_calender'; import { useMediaQuery } from '@mantine/hooks'; export default function NavbarCreateDivisionCalender() { const [value, setValue] = useState(null); const router = useRouter() const [isModal, setModal] = useState(false) const member = useHookstate(globalCalender) const memberValue = member.get() as IFormMemberCalender[] const [openMember, setOpenMember] = useState(false) const param = useParams<{ id: string, detail: string }>() const tema = useHookstate(TEMA) const isMobile = useMediaQuery('(max-width: 369px)'); const [touched, setTouched] = useState({ title: false, dateStart: false, timeStart: false, timeEnd: false, repeatEventTyper: false, desc: false, repeatValue: false }) const [isData, setData] = useState({ idDivision: "", title: "", dateStart: "", timeStart: "", timeEnd: "", linkMeet: "", repeatEventTyper: "", desc: "", repeatValue: "1" }) async function onSubmit(val: boolean) { try { if (val) { if (isData.timeStart > isData.timeEnd) { return toast.error("Waktu Akhir Tidak tepat"); } const response = await funCreateCalender({ idDivision: param.id, title: isData.title, dateStart: isData.dateStart, timeStart: isData.timeStart, timeEnd: isData.timeEnd, linkMeet: isData.linkMeet, repeatEventTyper: isData.repeatEventTyper, desc: isData.desc, repeatValue: isData.repeatValue, member: memberValue }) if (response.success) { setModal(false) router.push(`/division/${param.id}/calender`) toast.success(response.message) member.set([]) } else { toast.error(response.message) setModal(false) } } } catch (error) { console.error(error) setModal(false) toast.error("Gagal menambahkan pengumuman, coba lagi nanti"); } finally { setModal(false) } } if (openMember) return setOpenMember(false)} /> return ( { setData({ ...isData, title: event.target.value }) setTouched({ ...touched, title: false }) }} onBlur={() => setTouched({ ...touched, title: true })} error={ touched.title && ( isData.title == "" ? "Nama Acara Tidak Boleh Kosong" : null ) } /> { setValue(val); setData({ ...isData, dateStart: moment(val).format("YYYY-MM-DD") }); setTouched({ ...touched, dateStart: false }); }} placeholder="Input Tanggal" label="Tanggal" onBlur={() => setTouched({ ...touched, dateStart: true })} error={ touched.dateStart && ( isData.dateStart == "" ? "Tanggal Tidak Boleh Kosong" : null ) } /> setData({ ...isData, timeStart: event.target.value })} onBlur={() => setTouched({ ...touched, timeStart: true })} error={ touched.timeStart && ( isData.timeStart == "" ? "Waktu Awal Tidak Boleh Kosong" : null ) } /> setData({ ...isData, timeEnd: event.target.value })} onBlur={() => setTouched({ ...touched, timeEnd: true })} error={ touched.timeEnd && ( isData.timeEnd == "" ? "Waktu Akhir Tidak Boleh Kosong" : null ) || (isData.timeStart > isData.timeEnd ? "Waktu Akhir Tidak Tepat" : null) } /> setData({ ...isData, linkMeet: event.target.value })} />