"use client"; import { useState } from "react"; import { useLocaleStore } from "@/store/uiStore"; import { t } from "@/lib/locale"; export default function RolePermissionForm({ disabled, permissionCatalog, onSubmit }: { disabled: boolean; permissionCatalog: string[]; onSubmit: (payload: { code: string; permissionCodes: string[] }) => Promise; }) { const locale = useLocaleStore((s) => s.locale); const [code, setCode] = useState(""); const [permissions, setPermissions] = useState(""); const [loading, setLoading] = useState(false); const selected = permissions.split(",").map((i) => i.trim()).filter(Boolean); const quickAdd = (value: string) => { setPermissions((prev) => prev .split(",") .map((v) => v.trim()) .filter(Boolean) .concat(selected.includes(value) ? [] : [value]) .join(", ") ); }; const submit = async () => { if (disabled || !code) return; setLoading(true); try { await onSubmit({ code, permissionCodes: selected }); setCode(""); setPermissions(""); } finally { setLoading(false); } }; return (
setCode(e.target.value)} placeholder={t("roleCode", locale)} disabled={disabled} /> setPermissions(e.target.value)} placeholder={t("permissions", locale)} disabled={disabled} />
{permissionCatalog.map((permission) => ( ))}
); }