'use client' import colors from '@/con/colors'; import { Box, Button, Group, Loader, Paper, Stack, Text, TextInput, Title } from '@mantine/core'; import { IconArrowBack } from '@tabler/icons-react'; import { useRouter } from 'next/navigation'; import { useState } from 'react'; import { toast } from 'react-toastify'; import { useProxy } from 'valtio/utils'; import CreateEditor from '../../../_com/createEditor'; import pencegahanKriminalitasState from '../../../_state/keamanan/pencegahan-kriminalitas'; import { convertYoutubeUrlToEmbed } from '../../../desa/gallery/lib/youtube-utils'; function CreatePencegahanKriminalitas() { const router = useRouter(); const kriminalitasState = useProxy(pencegahanKriminalitasState); const [link, setLink] = useState(''); const embedLink = convertYoutubeUrlToEmbed(link); const [isSubmitting, setIsSubmitting] = useState(false); // Helper function to check if HTML content is empty const isHtmlEmpty = (html: string) => { // Remove all HTML tags and check if there's any text content const textContent = html.replace(/<[^>]*>/g, '').trim(); return textContent === ''; }; // Check if form is valid const isFormValid = () => { return ( kriminalitasState.create.form.judul?.trim() !== '' && !isHtmlEmpty(kriminalitasState.create.form.deskripsiSingkat) && !isHtmlEmpty(kriminalitasState.create.form.deskripsi) && embedLink !== '' ); }; const resetForm = () => { kriminalitasState.create.form = { judul: "", deskripsi: "", deskripsiSingkat: "", linkVideo: "", }; setLink(''); }; const handleSubmit = async () => { try { setIsSubmitting(true); if (!embedLink) { toast.error('Link YouTube tidak valid. Pastikan formatnya benar.'); return; } kriminalitasState.create.form.linkVideo = embedLink; await kriminalitasState.create.create(); resetForm(); router.push('/admin/keamanan/pencegahan-kriminalitas'); } catch (error) { console.error('Gagal menambahkan pencegahan kriminalitas:', error); toast.error('Gagal menambahkan pencegahan kriminalitas'); } finally { setIsSubmitting(false); } }; return ( {/* Header Back Button + Title */} Tambah Pencegahan Kriminalitas {/* Card Form */} {/* Judul */} { kriminalitasState.create.form.judul = e.currentTarget.value; }} required /> {/* Deskripsi Singkat */} Deskripsi Singkat { kriminalitasState.create.form.deskripsiSingkat = val; }} /> {/* Deskripsi Panjang */} Deskripsi { kriminalitasState.create.form.deskripsi = val; }} /> {/* Link YouTube */} setLink(e.currentTarget.value)} required /> {/* Preview Video */} {embedLink && ( )} {/* Button Submit */} {/* Tombol Simpan */} ); } export default CreatePencegahanKriminalitas;