feat : update validation

This commit is contained in:
lukman
2024-08-26 17:33:14 +08:00
parent 5f169a7e5f
commit 80c6eb7f9a
27 changed files with 762 additions and 318 deletions

View File

@@ -26,6 +26,10 @@ export default function CreateAnnouncement() {
title: "",
desc: "",
})
const [touched, setTouched] = useState({
title: false,
desc: false
});
async function onSubmit() {
@@ -85,7 +89,16 @@ export default function CreateAnnouncement() {
},
}}
value={isData.title}
onChange={(e) => { setisData({ ...isData, title: e.target.value }) }}
onChange={(e) => {
setisData({ ...isData, title: e.target.value })
setTouched({ ...touched, title: false })
}}
onBlur={() => setTouched({ ...touched, title: true })}
error={
touched.title && (
isData.title == "" ? "Judul Tidak Boleh Kosong" : null
)
}
/>
<Textarea
size="md"
@@ -102,7 +115,16 @@ export default function CreateAnnouncement() {
},
}}
value={isData.desc}
onChange={(e) => { setisData({ ...isData, desc: e.target.value }) }}
onChange={(e) => {
setisData({ ...isData, desc: e.target.value })
setTouched({ ...touched, desc: false })
}}
onBlur={() => setTouched({ ...touched, desc: true })}
error={
touched.desc && (
isData.desc == "" ? "Pengumuman Tidak Boleh Kosong" : null
)
}
/>
<Box pt={10}>
<Group justify="space-between" style={{
@@ -145,7 +167,16 @@ export default function CreateAnnouncement() {
size="md"
radius={30}
fullWidth
onClick={() => { setOpen(true) }}
onClick={() => {
if (
isData.title !== "" &&
isData.desc !== ""
) {
setOpen(true)
} else {
toast.error("Isi data dengan lengkap")
}
}}
>
Simpan
</Button>

View File

@@ -17,6 +17,10 @@ export default function EditAnnouncement() {
const [isOpen, setOpen] = useState(false)
const [isChooseDivisi, setChooseDivisi] = useState(false)
const param = useParams<{ id: string }>()
const [touched, setTouched] = useState({
title: false,
desc: false
});
const [body, setBody] = useState({
title: "",
desc: "",
@@ -116,7 +120,16 @@ export default function EditAnnouncement() {
},
}}
value={body.title}
onChange={(val) => setBody({ ...body, title: val.target.value })}
onChange={(val) => {
setBody({ ...body, title: val.target.value })
setTouched({ ...touched, title: false })
}}
onBlur={() => setTouched({ ...touched, title: true })}
error={
touched.title && (
body.title == "" ? "Judul Tidak Boleh Kosong" : null
)
}
/>
<Textarea
size="md"
@@ -133,7 +146,17 @@ export default function EditAnnouncement() {
},
}}
value={body.desc}
onChange={(val) => setBody({ ...body, desc: val.target.value })}
onChange={(val) => {
setBody({ ...body, desc: val.target.value })
setTouched({ ...touched, desc: false })
}}
onBlur={() => setTouched({ ...touched, desc: true })}
error={
touched.desc && (
body.desc == "" ? "Pengumuman Tidak Boleh Kosong" : null
)
}
/>
<Button onClick={() => { setChooseDivisi(true) }} rightSection={<HiOutlineChevronRight size={14} />} variant="default" fullWidth radius={30} size="md" mt={10}>
@@ -169,7 +192,16 @@ export default function EditAnnouncement() {
size="md"
radius={30}
fullWidth
onClick={() => { setOpen(true) }}
onClick={() => {
if (
body.title !== "" &&
body.desc !== ""
) {
setOpen(true)
} else {
toast.error("Isi data dengan lengkap")
}
}}
>
Simpan
</Button>