diff --git a/src/components/DesaSetting.tsx b/src/components/DesaSetting.tsx
index 938cd96..f6457d8 100644
--- a/src/components/DesaSetting.tsx
+++ b/src/components/DesaSetting.tsx
@@ -206,9 +206,12 @@ export default function DesaSetting({ permissions }: { permissions: JsonValue[]
{
v.name == "TTD"
?
- { setViewImg(v.value); setOpenedPreview(true); }} underline="always">
- Lihat
-
+ v.value ?
+ { setViewImg(v.value); setOpenedPreview(true); }} underline="always">
+ Lihat
+
+ :
+ "-"
:
v.value
}
diff --git a/src/components/KategoriPengaduan.tsx b/src/components/KategoriPengaduan.tsx
index 0f85343..99b0fab 100644
--- a/src/components/KategoriPengaduan.tsx
+++ b/src/components/KategoriPengaduan.tsx
@@ -329,7 +329,7 @@ export default function KategoriPengaduan({ permissions }: { permissions: JsonVa
size="sm"
style={{ boxShadow: "0 0 8px rgba(0,255,200,0.2)" }}
onClick={() => chooseEdit({ data: v })}
- disabled={!permissions.includes("setting.kategori_pengaduan.edit")}
+ disabled={!permissions.includes("setting.kategori_pengaduan.edit") || v.id == "lainnya"}
>
@@ -344,7 +344,7 @@ export default function KategoriPengaduan({ permissions }: { permissions: JsonVa
setDataDelete(v.id);
openDelete();
}}
- disabled={!permissions.includes("setting.kategori_pengaduan.delete")}
+ disabled={!permissions.includes("setting.kategori_pengaduan.delete") || v.id == "lainnya"}
>
diff --git a/src/components/PermissionRole.tsx b/src/components/PermissionRole.tsx
index 7218355..38a49c1 100644
--- a/src/components/PermissionRole.tsx
+++ b/src/components/PermissionRole.tsx
@@ -1,5 +1,5 @@
import { groupPermissions } from "@/lib/groupPermission";
-import { Button, Stack, Text } from "@mantine/core";
+import { Anchor, Flex, Stack, Text } from "@mantine/core";
import { useState } from "react";
interface Node {
@@ -14,7 +14,7 @@ function RenderNode({ node }: { node: Node }) {
return (
{/* Title */}
- - {node.label}
+ - {node.label}
{/* Children */}
{sub.map((child: any, i) => (
@@ -24,6 +24,22 @@ function RenderNode({ node }: { node: Node }) {
);
}
+function RenderNode2({ node }: { node: Node }) {
+ const sub = Object.values(node.children || {});
+
+ return (
+
+ {/* Title */}
+ {node.label},
+
+ {/* Children */}
+ {sub.map((child: any, i) => (
+
+ ))}
+
+ );
+}
+
export default function PermissionRole({ permissions }: { permissions: string[] }) {
const [showAll, setShowAll] = useState(false);
if (!permissions?.length) return -;
@@ -32,7 +48,7 @@ export default function PermissionRole({ permissions }: { permissions: string[]
const rootNodes = Object.values(groups);
return (
-
+
{
showAll ?
rootNodes.map((node: any, idx) => (
@@ -40,18 +56,12 @@ export default function PermissionRole({ permissions }: { permissions: string[]
))
:
rootNodes.slice(0, 2).map((node: any, idx) => (
-
+
))
}
-
+
);
}
diff --git a/src/components/PermissionTree.tsx b/src/components/PermissionTree.tsx
index d1147a7..e422dda 100644
--- a/src/components/PermissionTree.tsx
+++ b/src/components/PermissionTree.tsx
@@ -169,7 +169,7 @@ export default function PermissionTree({
return (
Hak Akses
- {permissionConfig.menus.map((menu: Node) => (
+ {permissionConfig.menus.filter((menu: Node) => !menu.key.startsWith("api") && !menu.key.startsWith("credential")).map((menu: Node) => (
))}
diff --git a/src/components/UserRoleSetting.tsx b/src/components/UserRoleSetting.tsx
index 08778c9..fbc1976 100644
--- a/src/components/UserRoleSetting.tsx
+++ b/src/components/UserRoleSetting.tsx
@@ -18,10 +18,18 @@ import { IconEdit, IconPlus, IconTrash } from "@tabler/icons-react";
import type { JsonValue } from "generated/prisma/runtime/library";
import { useState } from "react";
import useSWR from "swr";
+import listMenu from "../lib/listPermission.json";
import notification from "./notificationGlobal";
import PermissionRole from "./PermissionRole";
import PermissionTree from "./PermissionTree";
+interface MenuNode {
+ key: string;
+ label: string;
+ default: boolean;
+ children?: MenuNode[];
+}
+
export default function UserRoleSetting({ permissions }: { permissions: JsonValue[] }) {
const [btnDisable, setBtnDisable] = useState(true);
const [btnLoading, setBtnLoading] = useState(false);
@@ -179,6 +187,27 @@ export default function UserRoleSetting({ permissions }: { permissions: JsonValu
}
}
+ function buildOrderList(menus: MenuNode[]): string[] {
+ const list: string[] = [];
+
+ const traverse = (nodes: MenuNode[]) => {
+ nodes.forEach((node) => {
+ list.push(node.key);
+ if (node.children) traverse(node.children);
+ });
+ };
+
+ traverse(menus);
+ return list;
+ }
+
+ function sortByJsonOrder(arrayData: string[]): string[] {
+ const orderList = buildOrderList(listMenu.menus);
+
+ return arrayData.sort((a, b) => {
+ return orderList.indexOf(a) - orderList.indexOf(b);
+ });
+ }
useShallowEffect(() => {
if (dataEdit.name.length > 0) {
@@ -212,7 +241,7 @@ export default function UserRoleSetting({ permissions }: { permissions: JsonValu
{
- setDataEdit({ ...dataEdit, permissions: permissions as never[] });
+ setDataEdit({ ...dataEdit, permissions: sortByJsonOrder(permissions) as never[] });
}}
/>
@@ -263,7 +292,7 @@ export default function UserRoleSetting({ permissions }: { permissions: JsonValu
{
- setDataTambah({ ...dataTambah, permissions: permissions as never[] });
+ setDataTambah({ ...dataTambah, permissions: sortByJsonOrder(permissions) as never[] });
}}
/>
@@ -346,11 +375,11 @@ export default function UserRoleSetting({ permissions }: { permissions: JsonValu
{list.length > 0 ? (
list?.map((v: any) => (
- {v.name}
+ {v.name}
-
+
chooseEdit({ data: v })}
- disabled={!permissions.includes('setting.user_role.edit')}
+ disabled={!permissions.includes('setting.user_role.edit') || v.id == "developer"}
>
@@ -373,7 +402,7 @@ export default function UserRoleSetting({ permissions }: { permissions: JsonValu
setDataDelete(v.id);
openDelete();
}}
- disabled={!permissions.includes('setting.user_role.delete')}
+ disabled={!permissions.includes('setting.user_role.delete') || v.id == "developer"}
>
diff --git a/src/components/UserSetting.tsx b/src/components/UserSetting.tsx
index 65e7acc..6d0a067 100644
--- a/src/components/UserSetting.tsx
+++ b/src/components/UserSetting.tsx
@@ -107,19 +107,19 @@ export default function UserSetting({ permissions }: { permissions: JsonValue[]
async function handleEdit() {
try {
setBtnLoading(true);
- const res = await apiFetch.api.pengaduan.category.update.post(dataEdit);
+ const res = await apiFetch.api.user.update.post(dataEdit);
if (res.status === 200) {
mutate();
close();
notification({
title: "Success",
- message: "Your category have been saved",
+ message: "Your data have been saved",
type: "success",
});
} else {
notification({
title: "Error",
- message: "Failed to edit category",
+ message: "Failed to edit user",
type: "error",
});
}
@@ -127,7 +127,7 @@ export default function UserSetting({ permissions }: { permissions: JsonValue[]
console.error(error);
notification({
title: "Error",
- message: "Failed to edit category",
+ message: "Failed to edit user2",
type: "error",
});
} finally {
@@ -222,9 +222,10 @@ export default function UserSetting({ permissions }: { permissions: JsonValue[]
overlayProps={{ backgroundOpacity: 0.55, blur: 3 }}
>
-
+
onValidation({
kat: "name",
@@ -234,6 +235,51 @@ export default function UserSetting({ permissions }: { permissions: JsonValue[]
}
/>
+