feat: implement form validation for empty fields across multiple admin pages
- Added validation to disable submit buttons when required fields are empty - Implemented consistent validation patterns across various admin pages - Applied validation to create and edit forms for berita, gallery, layanan, penghargaan, pengumuman, potensi, profil-desa, and ppid sections - Used helper functions to check for empty HTML content in editor fields - Ensured submit buttons are disabled until all required fields are filled Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
@@ -56,6 +56,17 @@ function Kepuasan() {
|
||||
indeksKepuasanState.kelompokUmurResponden.findMany.load();
|
||||
}, []);
|
||||
|
||||
// Check if form is valid
|
||||
const isFormValid = () => {
|
||||
return (
|
||||
state.create.form.name?.trim() !== '' &&
|
||||
state.create.form.tanggal?.trim() !== '' &&
|
||||
state.create.form.jenisKelaminId?.trim() !== '' &&
|
||||
state.create.form.ratingId?.trim() !== '' &&
|
||||
state.create.form.kelompokUmurId?.trim() !== ''
|
||||
);
|
||||
};
|
||||
|
||||
const handleSubmit = async () => {
|
||||
try {
|
||||
const id = await state.create.create();
|
||||
@@ -442,7 +453,17 @@ function Kepuasan() {
|
||||
disabled={indeksKepuasanState.kelompokUmurResponden.findMany.loading}
|
||||
labelProps={{ style: { fontSize: '0.95rem', lineHeight: '1.4' } } as any}
|
||||
/>
|
||||
<Button mt={10} bg={colors['blue-button']} onClick={handleSubmit}>
|
||||
<Button
|
||||
mt={10}
|
||||
bg={colors['blue-button']}
|
||||
onClick={handleSubmit}
|
||||
disabled={!isFormValid()}
|
||||
style={{
|
||||
background: !isFormValid()
|
||||
? `linear-gradient(135deg, #cccccc, #eeeeee)`
|
||||
: `linear-gradient(135deg, ${colors['blue-button']}, #4facfe)`,
|
||||
}}
|
||||
>
|
||||
Submit
|
||||
</Button>
|
||||
</Stack>
|
||||
|
||||
@@ -54,6 +54,28 @@ function Page() {
|
||||
const permohonanInformasiPublikState = useProxy(statePermohonanInformasi);
|
||||
const router = useRouter();
|
||||
|
||||
// Helper function to validate email format
|
||||
const isValidEmail = (email: string) => {
|
||||
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
||||
return emailRegex.test(email);
|
||||
};
|
||||
|
||||
// Check if form is valid
|
||||
const isFormValid = () => {
|
||||
const form = permohonanInformasiPublikState.statepermohonanInformasiPublik.create.form;
|
||||
return (
|
||||
form.name?.trim() !== '' &&
|
||||
form.nik?.trim() !== '' &&
|
||||
form.notelp?.trim() !== '' &&
|
||||
form.alamat?.trim() !== '' &&
|
||||
form.email?.trim() !== '' &&
|
||||
isValidEmail(form.email) &&
|
||||
form.jenisInformasiDimintaId &&
|
||||
form.caraMemperolehInformasiId &&
|
||||
form.caraMemperolehSalinanInformasiId
|
||||
);
|
||||
};
|
||||
|
||||
const submitForms = async () => {
|
||||
const { create } = permohonanInformasiPublikState.statepermohonanInformasiPublik;
|
||||
const hasil = await create.create();
|
||||
@@ -266,6 +288,7 @@ function Page() {
|
||||
bg={colors['blue-button']}
|
||||
leftSection={<IconSend2 size={20} color={colors['white-1']} />}
|
||||
onClick={submitForms}
|
||||
disabled={!isFormValid()}
|
||||
>
|
||||
Kirim Permohonan
|
||||
</Button>
|
||||
|
||||
@@ -56,6 +56,24 @@ function Page() {
|
||||
const stateKeberatan = useProxy(permohonanKeberatanInformasi);
|
||||
const router = useRouter();
|
||||
|
||||
// Helper function to validate email format
|
||||
const isValidEmail = (email: string) => {
|
||||
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
||||
return emailRegex.test(email);
|
||||
};
|
||||
|
||||
// Check if form is valid
|
||||
const isFormValid = () => {
|
||||
const form = stateKeberatan.create.form;
|
||||
return (
|
||||
form.name?.trim() !== '' &&
|
||||
form.email?.trim() !== '' &&
|
||||
isValidEmail(form.email) &&
|
||||
form.notelp?.trim() !== '' &&
|
||||
form.alasan?.trim() !== ''
|
||||
);
|
||||
};
|
||||
|
||||
const submit = async () => {
|
||||
const hasil = await stateKeberatan.create.create();
|
||||
if (hasil) router.push('/darmasaba/permohonan/berhasil');
|
||||
@@ -232,6 +250,7 @@ function Page() {
|
||||
radius="md"
|
||||
fw={600}
|
||||
bg={colors['blue-button']}
|
||||
disabled={!isFormValid()}
|
||||
>
|
||||
Kirim Permohonan
|
||||
</Button>
|
||||
|
||||
Reference in New Issue
Block a user