'use client' import { Button } from "@nextui-org/button"; import { Card, Checkbox, CheckboxGroup, Divider, Image, Input, Radio, RadioGroup, Select, SelectItem, SelectSection, Slider, Switch, Tab, Table, Tabs, Textarea, User } from "@nextui-org/react"; import React, { useCallback, useEffect, useMemo, useRef, useState } from "react"; import { TimesIcon } from "@/components/icons"; import Link from "next/link"; import { useRouter } from "next/navigation"; import { close, error, loading } from "@/config/swal"; import Swal from 'sweetalert2'; import withReactContent from 'sweetalert2-react-content'; import dynamic from 'next/dynamic'; import { useForm } from "react-hook-form"; import * as z from "zod"; import { zodResolver } from "@hookform/resolvers/zod"; const moduleList = [ { label: "Article", value: "article", id: 1 }, { label: "Caption", value: "caption", id: 2 }, { label: "Meme", value: "meme", id: 3 }, { label: "Video", value: "video", id: 4 }, { label: "Master Data", value: "master-data", id: 5 }, ]; const provinceList = [ { label: "NTT", value: "1", id: 1 }, { label: "NTB", value: "2", id: 2 }, { label: "Aceh", value: "3", id: 3 }, { label: "Jawa Timur", value: "4", id: 4 }, { label: "Jawa Barat", value: "5", id: 5 }, ]; export default function CreateMasterUserLevelForm() { const router = useRouter(); const JoditEditor = dynamic(() => import('jodit-react'), { ssr: false }); const MySwal = withReactContent(Swal); const [isVisible, setIsVisible] = useState(false); const [tabs, setTabs] = useState("personal-info") const editor = useRef(null); const [content, setContent] = useState(''); const [haveChildren, setHaveChildren] = useState("no"); const [active, setActive] = useState("1"); const handleTab = (tab: any) => { setTabs(tab); }; const handleActive = (e: React.ChangeEvent) => { setActive(e.target.value); }; const handleHaveChildren = (e: React.ChangeEvent) => { setHaveChildren(e.target.value); }; let [files, setFiles] = useState([]); const removeFile = (name: string) => { const arrayFile: File[] = []; for (const element of files) { if (element.name !== name) { arrayFile.push(element); } } setFiles(arrayFile); }; const handleFileChange = (event: any) => { const newFiles: FileList | null = event.target.files; if (newFiles) { const allowedExtensions = ['.doc', '.docx', '.pdf', '.ppt', '.pptx', '.xlsx', '.csv']; let temp: File[] = [...files]; // Salin file-file yang sudah ada for (let i = 0; i < newFiles.length; i++) { const file = newFiles[i]; const fileExtension = file.name.split('.').pop()?.toLowerCase(); if (fileExtension && allowedExtensions.includes(`.${fileExtension}`)) { temp.push(file); } else { alert('Format file tidak valid. Hanya file .doc, .docx, .ppt, .pptx, .xlsx, .csv atau .pdf yang diperbolehkan.'); } } setFiles(temp); } }; const toggleVisibility = () => setIsVisible(!isVisible); const validationSchema = z.object({ name: z.string().min(1, { message: "Required" }), aliasName: z.string().min(1, { message: "Required" }), levelNumber: z.string().min(1, { message: "Required" }), }); const formOptions = { resolver: zodResolver(validationSchema) }; type ArticleSchema = z.infer; const { register, handleSubmit, formState: { errors }, formState, setValue } = useForm(formOptions); const save = async (data: any) => { const request = { name: data.name, aliasName: data.aliasName, levelNumber: data.levelNumber, status: 1, }; console.log(request); // loading(); // // const res = await saveManualContext(request); // if (res.error) { // error(res.message); // return false; // } close(); successSubmit("/admin/master/master-user-level") } async function onSubmit(data: any) { MySwal.fire({ title: "Save Data", text: "", icon: "warning", showCancelButton: true, cancelButtonColor: "#d33", confirmButtonColor: "#3085d6", confirmButtonText: "Save", }).then((result) => { if (result.isConfirmed) { save(data); } }); } function successSubmit(redirect: string) { MySwal.fire({ title: 'Sukses', icon: 'success', confirmButtonColor: '#3085d6', confirmButtonText: 'OK', }).then((result) => { if (result.isConfirmed) { router.push(redirect); } }); } return (
<>
} /> {errors.name?.message && (

{errors.name?.message}

)}
} /> {errors.aliasName?.message && (

{errors.aliasName?.message}

)}
} /> {errors.levelNumber?.message && (

{errors.levelNumber?.message}

)}

Parent LevelId

Provinsi

{" "}
NextUI hero Image
) }