import apiFetch from "@/lib/apiFetch"; import { ActionIcon, Button, Divider, Flex, Group, Input, Modal, Stack, Table, Title, Tooltip, } from "@mantine/core"; import { useDisclosure, useShallowEffect } from "@mantine/hooks"; import { IconEdit } from "@tabler/icons-react"; import { useState } from "react"; import useSWR from "swr"; import notification from "./notificationGlobal"; export default function DesaSetting() { const [btnDisable, setBtnDisable] = useState(false); const [btnLoading, setBtnLoading] = useState(false); const [opened, { open, close }] = useDisclosure(false); const { data, mutate, isLoading } = useSWR("/", () => apiFetch.api["configuration-desa"].list.get(), ); const list = data?.data || []; const [dataEdit, setDataEdit] = useState({ id: "", value: "", name: "", }); useShallowEffect(() => { mutate(); }, []); async function handleEdit() { try { setBtnLoading(true); const res = await apiFetch.api["configuration-desa"].edit.post(dataEdit); if (res.status === 200) { mutate(); close(); notification({ title: "Success", message: "Your settings have been saved", type: "success", }); } else { notification({ title: "Error", message: "Failed to edit configuration", type: "error", }); } } catch (error) { console.error(error); notification({ title: "Error", message: "Failed to edit configuration", type: "error", }); } finally { setBtnLoading(false); } } function chooseEdit({ data, }: { data: { id: string; value: string; name: string }; }) { setDataEdit(data); open(); } function onValidation({ kat, value }: { kat: "value"; value: string }) { if (value.length < 1) { setBtnDisable(true); } else { setBtnDisable(false); } if (kat === "value") { setDataEdit({ ...dataEdit, value: value }); } } useShallowEffect(() => { if (dataEdit.value.length > 0) { setBtnDisable(false); } }, [dataEdit.id]); return ( <> onValidation({ kat: "value", value: e.target.value }) } /> Pengaturan Desa Nama Value Aksi {list?.map((v: any) => ( {v.name} {v.value} chooseEdit({ data: v })} > ))}
); }