@udhuong/admin-core 0.1.6 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"PermissionsPage.d.ts","sourceRoot":"","sources":["../../../src/client/pages/PermissionsPage.tsx"],"names":[],"mappings":"AA6BA,MAAM,CAAC,OAAO,UAAU,eAAe,4CA6JtC"}
1
+ {"version":3,"file":"PermissionsPage.d.ts","sourceRoot":"","sources":["../../../src/client/pages/PermissionsPage.tsx"],"names":[],"mappings":"AA2BA,MAAM,CAAC,OAAO,UAAU,eAAe,4CAgOtC"}
@@ -1,17 +1,24 @@
1
1
  'use client';
2
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useMemo, useState } from 'react';
3
4
  import { useQuery } from '@tanstack/react-query';
4
- import { Shield, ChevronDown, ChevronUp } from 'lucide-react';
5
- import { useState } from 'react';
5
+ import { Layers, Search, Shield } from 'lucide-react';
6
6
  import { getApiClient } from '../auth/api-client';
7
7
  import { CORE_ADMIN_API_ROUTES } from '../constants/api-routes';
8
- import PageHeader from '../components/PageHeader';
9
8
  import ProtectedPage from '../auth/ProtectedPage';
10
9
  import { PERMISSIONS } from '../constants/permissions';
10
+ import Badge from '../ui/Badge';
11
+ import Input from '../ui/Input';
12
+ import DataTable from '../ui/DataTable';
13
+ // Khóa đại diện cho lựa chọn "Tất cả resource"
14
+ const ALL_RESOURCES = '__all__';
11
15
  export default function PermissionsPage() {
12
16
  const apiClient = getApiClient();
13
- const [expandedGroups, setExpandedGroups] = useState([]);
14
- // Fetch permissions
17
+ // Resource đang được chọn ở cột trái (mặc định xem tất cả)
18
+ const [selectedResource, setSelectedResource] = useState(ALL_RESOURCES);
19
+ // Từ khóa tìm kiếm danh sách quyền ở cột phải
20
+ const [searchTerm, setSearchTerm] = useState('');
21
+ // Lấy toàn bộ quyền (đã nhóm theo resource phía server)
15
22
  const { data, isLoading } = useQuery({
16
23
  queryKey: ['permissions'],
17
24
  queryFn: async () => {
@@ -19,24 +26,51 @@ export default function PermissionsPage() {
19
26
  return response.data;
20
27
  },
21
28
  });
22
- const toggleGroup = (resource) => {
23
- setExpandedGroups((prev) => prev.includes(resource) ? prev.filter((r) => r !== resource) : [...prev, resource]);
24
- };
25
- const toggleAll = () => {
26
- if (data?.grouped) {
27
- if (expandedGroups.length === Object.keys(data.grouped).length) {
28
- setExpandedGroups([]);
29
- }
30
- else {
31
- setExpandedGroups(Object.keys(data.grouped));
32
- }
33
- }
34
- };
35
- return (_jsx(ProtectedPage, { permission: PERMISSIONS.ROLE_READ, children: _jsxs("div", { className: "space-y-6 p-6 bg-base-200 min-h-screen", children: [_jsx(PageHeader, { title: "Danh s\u00E1ch quy\u1EC1n h\u1EA1n", description: "T\u1EA5t c\u1EA3 c\u00E1c quy\u1EC1n trong h\u1EC7 th\u1ED1ng \u0111\u01B0\u1EE3c nh\u00F3m theo resource" }), isLoading ? (_jsx("div", { className: "text-center py-12", children: _jsx("div", { className: "loading loading-spinner loading-lg" }) })) : (_jsxs(_Fragment, { children: [_jsxs("div", { className: "stats shadow bg-base-100 w-full", children: [_jsxs("div", { className: "stat", children: [_jsx("div", { className: "stat-figure text-primary", children: _jsx(Shield, { className: "w-8 h-8" }) }), _jsx("div", { className: "stat-title", children: "T\u1ED5ng s\u1ED1 quy\u1EC1n" }), _jsx("div", { className: "stat-value text-primary", children: data?.total }), _jsxs("div", { className: "stat-desc", children: ["Nh\u00F3m theo ", Object.keys(data?.grouped || {}).length, " resource"] })] }), _jsx("div", { className: "stat", children: _jsx("div", { className: "stat-actions", children: _jsx("button", { onClick: toggleAll, className: "btn btn-sm btn-outline", children: expandedGroups.length === Object.keys(data?.grouped || {}).length
36
- ? 'Thu gọn tất cả'
37
- : 'Mở rộng tất cả' }) }) })] }), _jsxs("div", { className: "space-y-4", children: [Object.entries(data?.grouped || {}).map(([resource, permissions]) => {
38
- const isExpanded = expandedGroups.includes(resource);
39
- return (_jsxs("div", { className: "card bg-base-100 shadow-sm overflow-hidden", children: [_jsxs("button", { onClick: () => toggleGroup(resource), className: "w-full px-6 py-4 flex items-center justify-between hover:bg-base-200 transition-colors", children: [_jsxs("div", { className: "flex items-center gap-3", children: [isExpanded ? (_jsx(ChevronUp, { className: "w-5 h-5 text-base-content/60" })) : (_jsx(ChevronDown, { className: "w-5 h-5 text-base-content/60" })), _jsx(Shield, { className: "w-5 h-5 text-primary" }), _jsxs("div", { className: "text-left", children: [_jsx("h3", { className: "font-semibold text-lg uppercase", children: resource }), _jsxs("p", { className: "text-sm text-base-content/60", children: [permissions.length, " quy\u1EC1n"] })] })] }), _jsx("div", { className: "flex items-center gap-2", children: _jsx("span", { className: "badge badge-primary", children: permissions.length }) })] }), isExpanded && (_jsx("div", { className: "border-t border-base-300", children: _jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 p-6", children: permissions.map((permission) => (_jsxs("div", { className: "card border border-base-300 bg-base-100 p-4 hover:shadow-md transition-shadow", children: [_jsxs("div", { className: "flex items-start justify-between mb-2", children: [_jsx("div", { className: "font-mono text-sm font-medium text-primary", children: permission.name }), _jsx("span", { className: "badge badge-ghost text-xs", children: permission.action })] }), permission.description && (_jsx("p", { className: "text-sm text-base-content/60 mt-2", children: permission.description })), _jsx("div", { className: "mt-3 pt-3 border-t border-base-300", children: _jsxs("span", { className: "text-xs text-base-content/50", children: ["ID: ", permission.id] }) })] }, permission.id))) }) }))] }, resource));
40
- }), Object.keys(data?.grouped || {}).length === 0 && (_jsxs("div", { className: "text-center py-12", children: [_jsx(Shield, { className: "w-12 h-12 text-base-content/40 mx-auto mb-4" }), _jsx("p", { className: "text-base-content/60", children: "Kh\u00F4ng c\u00F3 quy\u1EC1n n\u00E0o trong h\u1EC7 th\u1ED1ng" })] }))] })] }))] }) }));
29
+ const grouped = data?.grouped || {};
30
+ const resources = Object.keys(grouped);
31
+ // Danh sách quyền hiển thị ở cột phải theo resource đang chọn + lọc tìm kiếm
32
+ const visiblePermissions = useMemo(() => {
33
+ const base = selectedResource === ALL_RESOURCES
34
+ ? Object.values(grouped).flat()
35
+ : grouped[selectedResource] || [];
36
+ if (!searchTerm.trim())
37
+ return base;
38
+ const keyword = searchTerm.toLowerCase();
39
+ return base.filter((p) => p.name.toLowerCase().includes(keyword) ||
40
+ p.action?.toLowerCase().includes(keyword) ||
41
+ p.description?.toLowerCase().includes(keyword) ||
42
+ p.resource?.toLowerCase().includes(keyword));
43
+ }, [grouped, selectedResource, searchTerm]);
44
+ // Cấu hình cột bảng quyền
45
+ const columns = [
46
+ {
47
+ key: 'name',
48
+ label: 'Tên quyền',
49
+ render: (value) => (_jsxs("div", { className: "flex items-center gap-3", children: [_jsx("div", { className: "p-2 bg-primary/10 rounded-lg shrink-0", children: _jsx(Shield, { className: "w-4 h-4 text-primary" }) }), _jsx("span", { className: "font-mono text-sm font-medium text-primary", children: value })] })),
50
+ },
51
+ {
52
+ key: 'resource',
53
+ label: 'Resource',
54
+ width: '160px',
55
+ render: (value) => (_jsx(Badge, { variant: "neutral", style: "soft", children: value || '-' })),
56
+ },
57
+ {
58
+ key: 'action',
59
+ label: 'Hành động',
60
+ width: '140px',
61
+ render: (value) => (_jsx(Badge, { variant: "neutral", style: "ghost", children: value || '-' })),
62
+ },
63
+ {
64
+ key: 'description',
65
+ label: 'Mô tả',
66
+ render: (value) => (_jsx("p", { className: "text-base-content/80 line-clamp-2 max-w-md", children: value || '-' })),
67
+ },
68
+ ];
69
+ return (_jsx(ProtectedPage, { permission: PERMISSIONS.ROLE_READ, children: _jsx("div", { className: "container mx-auto bg-base-200 min-h-screen p-6", children: _jsxs("div", { className: "space-y-6", children: [_jsxs("div", { children: [_jsx("h1", { className: "text-2xl font-semibold text-base-content", children: "Danh s\u00E1ch quy\u1EC1n h\u1EA1n" }), _jsx("p", { className: "text-sm text-base-content/60 mt-1", children: "T\u1EA5t c\u1EA3 c\u00E1c quy\u1EC1n trong h\u1EC7 th\u1ED1ng \u0111\u01B0\u1EE3c nh\u00F3m theo resource" })] }), _jsxs("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-4", children: [_jsxs("div", { className: "bg-base-100 rounded-lg p-5 flex items-center gap-4 border border-base-200", children: [_jsx("div", { className: "p-3 bg-primary/10 rounded-lg", children: _jsx(Shield, { className: "w-6 h-6 text-primary" }) }), _jsxs("div", { children: [_jsx("p", { className: "text-sm text-base-content/60", children: "T\u1ED5ng s\u1ED1 quy\u1EC1n" }), _jsx("p", { className: "text-2xl font-semibold text-base-content", children: data?.total ?? 0 })] })] }), _jsxs("div", { className: "bg-base-100 rounded-lg p-5 flex items-center gap-4 border border-base-200", children: [_jsx("div", { className: "p-3 bg-secondary/10 rounded-lg", children: _jsx(Layers, { className: "w-6 h-6 text-secondary" }) }), _jsxs("div", { children: [_jsx("p", { className: "text-sm text-base-content/60", children: "S\u1ED1 nh\u00F3m resource" }), _jsx("p", { className: "text-2xl font-semibold text-base-content", children: resources.length })] })] })] }), _jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-[280px_1fr] gap-6", children: [_jsxs("aside", { className: "bg-base-100 rounded-lg p-4 h-fit border border-base-200 lg:sticky lg:top-6", children: [_jsx("h2", { className: "text-sm font-semibold text-base-content/70 uppercase px-2 mb-3", children: "Resource" }), isLoading ? (_jsx("div", { className: "flex justify-center py-8", children: _jsx("span", { className: "loading loading-spinner loading-md" }) })) : (_jsxs("ul", { className: "space-y-1", children: [_jsx("li", { children: _jsxs("button", { onClick: () => setSelectedResource(ALL_RESOURCES), className: `w-full flex items-center justify-between gap-2 px-3 py-2.5 rounded-lg text-left transition-colors ${selectedResource === ALL_RESOURCES
70
+ ? 'bg-primary text-primary-content'
71
+ : 'hover:bg-base-200 text-base-content'}`, children: [_jsx("span", { className: "font-medium text-sm", children: "T\u1EA5t c\u1EA3" }), _jsx("span", { className: `badge badge-sm ${selectedResource === ALL_RESOURCES ? 'badge-ghost' : 'badge-primary badge-soft'}`, children: data?.total ?? 0 })] }) }), resources.map((resource) => {
72
+ const isActive = selectedResource === resource;
73
+ return (_jsx("li", { children: _jsxs("button", { onClick: () => setSelectedResource(resource), className: `w-full flex items-center justify-between gap-2 px-3 py-2.5 rounded-lg text-left transition-colors ${isActive ? 'bg-primary text-primary-content' : 'hover:bg-base-200 text-base-content'}`, children: [_jsx("span", { className: "font-medium text-sm uppercase truncate", children: resource }), _jsx("span", { className: `badge badge-sm shrink-0 ${isActive ? 'badge-ghost' : 'badge-primary badge-soft'}`, children: grouped[resource].length })] }) }, resource));
74
+ }), resources.length === 0 && (_jsx("li", { className: "text-center text-base-content/60 text-sm py-6", children: "Ch\u01B0a c\u00F3 resource n\u00E0o" }))] }))] }), _jsxs("section", { className: "space-y-4", children: [_jsxs("div", { className: "bg-base-100 rounded-lg p-4 flex flex-col sm:flex-row sm:items-center justify-between gap-4 border border-base-200", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("h2", { className: "text-lg font-semibold text-base-content uppercase", children: selectedResource === ALL_RESOURCES ? 'Tất cả quyền' : selectedResource }), _jsxs(Badge, { variant: "primary", style: "soft", children: [visiblePermissions.length, " quy\u1EC1n"] })] }), _jsx("div", { className: "w-full sm:w-auto sm:min-w-[260px]", children: _jsxs("div", { className: "relative", children: [_jsx(Search, { className: "absolute left-3 top-1/2 transform -translate-y-1/2 h-5 w-5 text-base-content/50" }), _jsx(Input, { type: "text", placeholder: "T\u00ECm ki\u1EBFm quy\u1EC1n...", value: searchTerm, onChange: (e) => setSearchTerm(e.target.value), className: "pl-10 w-full" })] }) })] }), _jsx("div", { className: "bg-base-100 rounded-lg overflow-hidden border border-base-200", children: _jsx(DataTable, { data: visiblePermissions, columns: columns, loading: isLoading, emptyMessage: "Kh\u00F4ng t\u00ECm th\u1EA5y quy\u1EC1n n\u00E0o" }) })] })] })] }) }) }));
41
75
  }
42
76
  //# sourceMappingURL=PermissionsPage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PermissionsPage.js","sourceRoot":"","sources":["../../../src/client/pages/PermissionsPage.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PermissionsPage.js","sourceRoot":"","sources":["../../../src/client/pages/PermissionsPage.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"RolesPage.d.ts","sourceRoot":"","sources":["../../../src/client/pages/RolesPage.tsx"],"names":[],"mappings":"AAeA,MAAM,CAAC,OAAO,UAAU,SAAS,4CAuOhC"}
1
+ {"version":3,"file":"RolesPage.d.ts","sourceRoot":"","sources":["../../../src/client/pages/RolesPage.tsx"],"names":[],"mappings":"AAoBA,MAAM,CAAC,OAAO,UAAU,SAAS,4CA6RhC"}
@@ -1,82 +1,175 @@
1
1
  'use client';
2
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { useState } from 'react';
4
4
  import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
5
- import { Plus, Edit, Trash2, Shield, Search } from 'lucide-react';
5
+ import { Edit, Plus, Search, Shield, Trash2, X } from 'lucide-react';
6
6
  import { getApiClient } from '../auth/api-client';
7
7
  import { CORE_ADMIN_API_ROUTES } from '../constants/api-routes';
8
- import PageHeader from '../components/PageHeader';
9
- import { ConfirmModal } from '../ui/ConfirmModal';
10
8
  import { useToast } from '../hooks/useToast';
11
9
  import RoleModal from './roles/RoleModal';
12
10
  import ProtectedPage from '../auth/ProtectedPage';
13
11
  import { PERMISSIONS } from '../constants/permissions';
12
+ import Badge from '../ui/Badge';
13
+ import Button from '../ui/Button';
14
+ import Input from '../ui/Input';
15
+ import DataTable, { TableRenderers } from '../ui/DataTable';
16
+ import { ConfirmModal } from '../ui/ConfirmModal';
17
+ const ITEMS_PER_PAGE = 10;
14
18
  export default function RolesPage() {
15
19
  const apiClient = getApiClient();
20
+ // Trạng thái lọc và phân trang
16
21
  const [searchTerm, setSearchTerm] = useState('');
17
22
  const [currentPage, setCurrentPage] = useState(1);
23
+ // Trạng thái modal tạo/sửa vai trò
18
24
  const [isRoleModalOpen, setIsRoleModalOpen] = useState(false);
19
25
  const [selectedRole, setSelectedRole] = useState(null);
20
- const [deleteConfirmOpen, setDeleteConfirmOpen] = useState(false);
21
- const [roleToDelete, setRoleToDelete] = useState(null);
26
+ // Danh sách vai trò đang chờ xác nhận xóa (1 hoặc nhiều)
27
+ const [pendingDelete, setPendingDelete] = useState(null);
22
28
  const queryClient = useQueryClient();
23
29
  const { showToast } = useToast();
24
- // Fetch roles
30
+ // Lấy danh sách vai trò (phân trang + tìm kiếm phía server)
25
31
  const { data, isLoading } = useQuery({
26
32
  queryKey: ['roles', currentPage, searchTerm],
27
33
  queryFn: async () => {
28
34
  const params = new URLSearchParams({
29
35
  page: currentPage.toString(),
30
- limit: '10',
36
+ limit: ITEMS_PER_PAGE.toString(),
31
37
  ...(searchTerm && { search: searchTerm }),
32
38
  });
33
39
  const response = await apiClient.get(`${CORE_ADMIN_API_ROUTES.ROLES.BASE}?${params}`);
34
40
  return response.data;
35
41
  },
36
42
  });
37
- // Delete mutation
43
+ // Xóa một hoặc nhiều vai trò
38
44
  const deleteMutation = useMutation({
39
- mutationFn: async (id) => {
40
- return apiClient.delete(CORE_ADMIN_API_ROUTES.ROLES.BY_ID(id));
41
- },
42
- onSuccess: () => {
43
- showToast('Xóa vai trò thành công', 'success');
45
+ mutationFn: async (ids) => Promise.all(ids.map((id) => apiClient.delete(CORE_ADMIN_API_ROUTES.ROLES.BY_ID(id)))),
46
+ onSuccess: (_, ids) => {
47
+ showToast(ids.length > 1 ? `Đã xóa ${ids.length} vai trò` : 'Xóa vai trò thành công', 'success');
44
48
  queryClient.invalidateQueries({ queryKey: ['roles'] });
45
- setDeleteConfirmOpen(false);
46
- setRoleToDelete(null);
49
+ setPendingDelete(null);
47
50
  },
48
51
  onError: (error) => {
49
52
  showToast(error.response?.data?.message || 'Xóa vai trò thất bại', 'error');
50
53
  },
51
54
  });
52
- const handleEdit = (role) => {
55
+ const openCreateModal = () => {
56
+ setSelectedRole(null);
57
+ setIsRoleModalOpen(true);
58
+ };
59
+ const openEditModal = (role) => {
53
60
  setSelectedRole(role);
54
61
  setIsRoleModalOpen(true);
55
62
  };
56
- const handleCreate = () => {
63
+ const closeModal = () => {
64
+ setIsRoleModalOpen(false);
57
65
  setSelectedRole(null);
58
- setIsRoleModalOpen(true);
59
66
  };
60
- const handleDelete = (role) => {
61
- setRoleToDelete(role);
62
- setDeleteConfirmOpen(true);
67
+ const handleModalSuccess = () => {
68
+ queryClient.invalidateQueries({ queryKey: ['roles'] });
69
+ closeModal();
63
70
  };
64
- const confirmDelete = () => {
65
- if (roleToDelete) {
66
- deleteMutation.mutate(roleToDelete.id);
71
+ const requestDelete = (role) => {
72
+ if (role.isSystem) {
73
+ showToast('Không thể xóa vai trò hệ thống', 'warning');
74
+ return;
67
75
  }
76
+ setPendingDelete([role]);
68
77
  };
69
- const handleRoleModalClose = () => {
70
- setIsRoleModalOpen(false);
71
- setSelectedRole(null);
78
+ const requestBulkDelete = (items) => {
79
+ // Lọc bỏ vai trò hệ thống vì không được phép xóa
80
+ const deletable = items.filter((item) => !item.isSystem);
81
+ if (deletable.length === 0) {
82
+ showToast('Các vai trò đã chọn đều là vai trò hệ thống, không thể xóa', 'warning');
83
+ return;
84
+ }
85
+ setPendingDelete(deletable);
72
86
  };
73
- const handleRoleSuccess = () => {
74
- queryClient.invalidateQueries({ queryKey: ['roles'] });
75
- handleRoleModalClose();
87
+ const confirmDelete = () => {
88
+ if (pendingDelete && pendingDelete.length > 0) {
89
+ deleteMutation.mutate(pendingDelete.map((role) => role.id));
90
+ }
91
+ };
92
+ const handleClearFilters = () => {
93
+ setSearchTerm('');
94
+ setCurrentPage(1);
76
95
  };
77
- return (_jsx(ProtectedPage, { permission: PERMISSIONS.ROLE_READ, children: _jsxs("div", { className: "space-y-6 p-6 bg-base-200 min-h-screen", children: [_jsx(PageHeader, { title: "Qu\u1EA3n l\u00FD vai tr\u00F2", description: "Qu\u1EA3n l\u00FD vai tr\u00F2 v\u00E0 ph\u00E2n quy\u1EC1n trong h\u1EC7 th\u1ED1ng" }), _jsxs("div", { className: "flex justify-between items-center mb-6", children: [_jsxs("div", { className: "relative flex-1 max-w-md", children: [_jsx(Search, { className: "absolute left-3 top-1/2 transform -translate-y-1/2 text-base-content/60 w-4 h-4" }), _jsx("input", { type: "text", placeholder: "T\u00ECm ki\u1EBFm vai tr\u00F2...", value: searchTerm, onChange: (e) => {
78
- setSearchTerm(e.target.value);
79
- setCurrentPage(1);
80
- }, className: "input input-bordered w-full pl-10" })] }), _jsxs("button", { onClick: handleCreate, className: "btn btn-primary ml-4", children: [_jsx(Plus, { className: "w-4 h-4" }), "Th\u00EAm vai tr\u00F2"] })] }), isLoading ? (_jsx("div", { className: "text-center py-12", children: _jsx("div", { className: "loading loading-spinner loading-lg" }) })) : (_jsxs(_Fragment, { children: [_jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4", children: data?.items.map((role) => (_jsx("div", { className: "card bg-base-100 shadow-sm hover:shadow-lg transition-shadow", children: _jsxs("div", { className: "card-body p-6", children: [_jsxs("div", { className: "flex items-start justify-between mb-4", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsx("div", { className: "p-2 bg-primary/10 rounded-lg", children: _jsx(Shield, { className: "w-5 h-5 text-primary" }) }), _jsxs("div", { children: [_jsx("h3", { className: "font-semibold text-lg", children: role.name }), role.isSystem && (_jsx("span", { className: "text-xs text-base-content/60", children: "H\u1EC7 th\u1ED1ng" }))] })] }), !role.isSystem && (_jsxs("div", { className: "flex gap-2", children: [_jsx("button", { onClick: () => handleEdit(role), className: "btn btn-ghost btn-sm btn-square", title: "Ch\u1EC9nh s\u1EEDa", children: _jsx(Edit, { className: "w-4 h-4" }) }), _jsx("button", { onClick: () => handleDelete(role), className: "btn btn-ghost btn-sm btn-square text-error", title: "X\u00F3a", children: _jsx(Trash2, { className: "w-4 h-4" }) })] }))] }), _jsx("p", { className: "text-sm text-base-content/60 mb-4", children: role.description || 'Không có mô tả' }), _jsxs("div", { className: "flex items-center justify-between pt-4 border-t border-base-300", children: [_jsxs("span", { className: "text-sm text-base-content/60", children: [role.permissionsCount, " quy\u1EC1n"] }), role.isSystem && (_jsx("button", { onClick: () => handleEdit(role), className: "link link-primary text-sm", children: "Xem chi ti\u1EBFt" }))] })] }) }, role.id))) }), data && data.totalPages > 1 && (_jsxs("div", { className: "flex justify-center gap-2 mt-6", children: [_jsx("button", { onClick: () => setCurrentPage((p) => Math.max(1, p - 1)), disabled: currentPage === 1, className: "btn btn-outline", children: "Tr\u01B0\u1EDBc" }), _jsxs("span", { className: "flex items-center px-4", children: ["Trang ", currentPage, " / ", data.totalPages] }), _jsx("button", { onClick: () => setCurrentPage((p) => Math.min(data.totalPages, p + 1)), disabled: currentPage === data.totalPages, className: "btn btn-outline", children: "Sau" })] })), data?.items.length === 0 && (_jsxs("div", { className: "text-center py-12", children: [_jsx(Shield, { className: "w-12 h-12 text-base-content/40 mx-auto mb-4" }), _jsx("p", { className: "text-base-content/60", children: "Kh\u00F4ng t\u00ECm th\u1EA5y vai tr\u00F2 n\u00E0o" })] }))] })), _jsx(RoleModal, { isOpen: isRoleModalOpen, onClose: handleRoleModalClose, onSuccess: handleRoleSuccess, role: selectedRole }), _jsx(ConfirmModal, { isOpen: deleteConfirmOpen, onClose: () => setDeleteConfirmOpen(false), onConfirm: confirmDelete, title: "X\u00E1c nh\u1EADn x\u00F3a vai tr\u00F2", message: `Bạn có chắc chắn muốn xóa vai trò "${roleToDelete?.name}"? Hành động này không thể hoàn tác.`, confirmText: "X\u00F3a", cancelText: "H\u1EE7y", type: "danger" })] }) }));
96
+ // Cấu hình các cột của bảng
97
+ const columns = [
98
+ {
99
+ key: 'id',
100
+ label: 'ID',
101
+ width: '70px',
102
+ render: (value) => TableRenderers.id(value),
103
+ },
104
+ {
105
+ key: 'name',
106
+ label: 'Vai trò',
107
+ render: (value, item) => (_jsxs("div", { className: "flex items-center gap-3", children: [_jsx("div", { className: "p-2 bg-primary/10 rounded-lg shrink-0", children: _jsx(Shield, { className: "w-4 h-4 text-primary" }) }), _jsxs("div", { className: "min-w-0", children: [_jsx("p", { className: "font-medium text-base-content truncate", children: value }), _jsx("p", { className: "text-sm text-base-content/60 line-clamp-1 max-w-xs", children: item.description || 'Không có mô tả' })] })] })),
108
+ },
109
+ {
110
+ key: 'permissionsCount',
111
+ label: 'Số quyền',
112
+ width: '120px',
113
+ align: 'center',
114
+ render: (value) => (_jsxs(Badge, { variant: "primary", style: "soft", children: [value ?? 0, " quy\u1EC1n"] })),
115
+ },
116
+ {
117
+ key: 'isSystem',
118
+ label: 'Loại',
119
+ width: '130px',
120
+ align: 'center',
121
+ render: (value) => value ? (_jsx(Badge, { variant: "warning", style: "soft", children: "H\u1EC7 th\u1ED1ng" })) : (_jsx(Badge, { variant: "neutral", style: "soft", children: "T\u00F9y ch\u1EC9nh" })),
122
+ },
123
+ {
124
+ key: 'createdAt',
125
+ label: 'Ngày tạo',
126
+ width: '150px',
127
+ render: (value) => value ? TableRenderers.datetime(value) : _jsx("span", { className: "text-base-content/40", children: "-" }),
128
+ },
129
+ ];
130
+ // Hành động trên từng dòng
131
+ const actions = [
132
+ {
133
+ key: 'edit',
134
+ label: 'Chỉnh sửa / Xem',
135
+ icon: _jsx(Edit, { className: "h-4 w-4" }),
136
+ onClick: (item) => openEditModal(item),
137
+ },
138
+ {
139
+ key: 'delete',
140
+ label: 'Xóa',
141
+ icon: _jsx(Trash2, { className: "h-4 w-4" }),
142
+ variant: 'error',
143
+ onClick: (item) => requestDelete(item),
144
+ show: (item) => !item.isSystem,
145
+ },
146
+ ];
147
+ const bulkActions = [
148
+ {
149
+ key: 'delete',
150
+ label: 'Xóa đã chọn',
151
+ icon: _jsx(Trash2, { className: "h-4 w-4" }),
152
+ variant: 'error',
153
+ onClick: requestBulkDelete,
154
+ },
155
+ ];
156
+ // Thông tin phân trang cho DataTable
157
+ const pagination = data
158
+ ? {
159
+ currentPage,
160
+ totalPages: data.totalPages || 1,
161
+ totalItems: data.total || 0,
162
+ itemsPerPage: ITEMS_PER_PAGE,
163
+ startItem: (currentPage - 1) * ITEMS_PER_PAGE + 1,
164
+ endItem: Math.min(currentPage * ITEMS_PER_PAGE, data.total || 0),
165
+ }
166
+ : undefined;
167
+ const deleteCount = pendingDelete?.length ?? 0;
168
+ return (_jsx(ProtectedPage, { permission: PERMISSIONS.ROLE_READ, children: _jsxs("div", { className: "container mx-auto bg-base-200 min-h-screen p-6", children: [_jsxs("div", { className: "space-y-6", children: [_jsxs("div", { className: "flex gap-2 justify-between items-center", children: [_jsxs("div", { children: [_jsx("h1", { className: "text-2xl font-semibold text-base-content", children: "Qu\u1EA3n l\u00FD vai tr\u00F2" }), _jsx("p", { className: "text-sm text-base-content/60 mt-1", children: "Qu\u1EA3n l\u00FD vai tr\u00F2 v\u00E0 ph\u00E2n quy\u1EC1n trong h\u1EC7 th\u1ED1ng" })] }), _jsxs(Button, { variant: "primary", onClick: openCreateModal, children: [_jsx(Plus, { className: "w-5 h-5 mr-2" }), "Th\u00EAm vai tr\u00F2"] })] }), _jsx("div", { className: "bg-base-100 rounded-lg p-6 border border-base-200", children: _jsxs("div", { className: "flex flex-col sm:flex-row items-start sm:items-center gap-4 flex-1", children: [_jsx("div", { className: "w-full sm:w-auto sm:min-w-[300px]", children: _jsxs("div", { className: "relative", children: [_jsx(Search, { className: "absolute left-3 top-1/2 transform -translate-y-1/2 h-5 w-5 text-base-content/50" }), _jsx(Input, { type: "text", placeholder: "T\u00ECm ki\u1EBFm vai tr\u00F2...", value: searchTerm, onChange: (e) => {
169
+ setSearchTerm(e.target.value);
170
+ setCurrentPage(1);
171
+ }, className: "pl-10 w-full" })] }) }), searchTerm && (_jsxs(Button, { variant: "secondary", onClick: handleClearFilters, children: [_jsx(X, { className: "h-4 w-4 mr-1" }), "X\u00F3a l\u1ECDc"] }))] }) }), _jsx("div", { className: "bg-base-100 rounded-lg overflow-hidden border border-base-200", children: _jsx(DataTable, { data: data?.items || [], columns: columns, actions: actions, bulkActions: bulkActions, loading: isLoading, selectable: true, pagination: pagination, onPageChange: setCurrentPage, emptyMessage: "Kh\u00F4ng t\u00ECm th\u1EA5y vai tr\u00F2 n\u00E0o" }) })] }), _jsx(RoleModal, { isOpen: isRoleModalOpen, onClose: closeModal, onSuccess: handleModalSuccess, role: selectedRole }), _jsx(ConfirmModal, { isOpen: !!pendingDelete, onClose: () => setPendingDelete(null), onConfirm: confirmDelete, title: "X\u00E1c nh\u1EADn x\u00F3a vai tr\u00F2", message: deleteCount > 1
172
+ ? `Bạn có chắc chắn muốn xóa ${deleteCount} vai trò đã chọn? Hành động này không thể hoàn tác.`
173
+ : `Bạn có chắc chắn muốn xóa vai trò "${pendingDelete?.[0]?.name}"? Hành động này không thể hoàn tác.`, confirmText: "X\u00F3a", cancelText: "H\u1EE7y", type: "danger" })] }) }));
81
174
  }
82
175
  //# sourceMappingURL=RolesPage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RolesPage.js","sourceRoot":"","sources":["../../../src/client/pages/RolesPage.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RolesPage.js","sourceRoot":"","sources":["../../../src/client/pages/RolesPage.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"UserDetailPage.d.ts","sourceRoot":"","sources":["../../../src/client/pages/UserDetailPage.tsx"],"names":[],"mappings":"AAmBA,UAAU,mBAAmB;IAC3B,MAAM,EAAE,MAAM,CAAA;CACf;AAmBD,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EAAE,MAAM,EAAE,EAAE,mBAAmB,2CA+UrE"}
1
+ {"version":3,"file":"UserDetailPage.d.ts","sourceRoot":"","sources":["../../../src/client/pages/UserDetailPage.tsx"],"names":[],"mappings":"AAmBA,UAAU,mBAAmB;IAC3B,MAAM,EAAE,MAAM,CAAA;CACf;AAmBD,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EAAE,MAAM,EAAE,EAAE,mBAAmB,2CA+TrE"}
@@ -2,7 +2,7 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { useState, useEffect } from 'react';
4
4
  import { useRouter } from 'next/navigation';
5
- import { ArrowLeft, Save } from 'lucide-react';
5
+ import { Save } from 'lucide-react';
6
6
  import toast from 'react-hot-toast';
7
7
  import { useQueryClient } from '@tanstack/react-query';
8
8
  import { getApiClient } from '../auth/api-client';
@@ -207,7 +207,7 @@ export default function UserDetailPage({ userId }) {
207
207
  if (loading) {
208
208
  return (_jsx("div", { className: "flex items-center justify-center min-h-screen", children: _jsx("div", { className: "animate-spin rounded-full h-12 w-12 border-t-2 border-b-2 border-primary" }) }));
209
209
  }
210
- return (_jsxs("div", { className: "min-h-screen bg-base-200/50 pb-20", children: [_jsx("div", { className: "bg-base-100 border-b border-base-300 px-6 py-4", children: _jsxs("div", { className: "max-w-[1600px] mx-auto flex items-center justify-between", children: [_jsxs("div", { className: "flex items-center gap-4", children: [_jsx("button", { onClick: () => router.push(resolvedRoutes.USERS_LIST), className: "p-2 -ml-2 text-base-content/40 hover:text-base-content/80 hover:bg-base-300 rounded-lg transition-colors", children: _jsx(ArrowLeft, { className: "w-5 h-5" }) }), _jsxs("div", { children: [_jsx("h1", { className: "text-xl font-bold text-base-content", children: isEditing ? 'Chỉnh sửa người dùng' : 'Thêm người dùng mới' }), _jsx("p", { className: "text-sm text-base-content/60", children: isEditing ? `ID: ${userId}` : 'Tạo tài khoản mới vào hệ thống' })] })] }), _jsxs("div", { className: "flex items-center gap-3", children: [_jsx("button", { type: "button", onClick: () => router.push(resolvedRoutes.USERS_LIST), className: "px-4 py-2 text-base-content/80 hover:text-base-content font-medium text-sm", children: "H\u1EE7y" }), _jsxs("button", { onClick: handleSubmit, disabled: saving, className: "px-5 py-2 bg-primary text-white rounded-xl hover:bg-primary/90 disabled:opacity-50 disabled:cursor-not-allowed flex items-center gap-2 font-medium transition-all", children: [_jsx(Save, { className: "w-4 h-4" }), saving ? 'Đang lưu...' : 'Lưu thay đổi'] })] })] }) }), _jsx("div", { className: "max-w-5xl mx-auto p-6", children: _jsxs("div", { className: "space-y-6", children: [_jsx(ProfileCard, { avatar: formData.avatar, name: formData.name, email: formData.email, role: formData.role, isEditing: isEditing, onAvatarChange: () => { }, onNameChange: (val) => setFormData({ ...formData, name: val }), onEmailChange: (val) => setFormData({ ...formData, email: val }), onRoleChange: (val) => setFormData({ ...formData, role: val }) }), renderAvatarPicker ? (renderAvatarPicker({
210
+ return (_jsx("div", { className: "container mx-auto bg-base-200 min-h-screen", children: _jsxs("div", { className: "p-6 max-w-5xl mx-auto", children: [_jsxs("div", { className: "flex items-center justify-between mb-6", children: [_jsx("h1", { className: "text-2xl font-semibold text-base-content", children: isEditing ? 'Chỉnh sửa người dùng' : 'Thêm người dùng mới' }), _jsxs("div", { className: "flex items-center gap-3", children: [_jsx("button", { type: "button", onClick: () => router.push(resolvedRoutes.USERS_LIST), className: "px-4 py-2 text-base-content/80 hover:text-base-content font-medium text-sm", children: "H\u1EE7y" }), _jsxs("button", { onClick: handleSubmit, disabled: saving, className: "px-5 py-2 bg-primary text-white rounded-xl hover:bg-primary/90 disabled:opacity-50 disabled:cursor-not-allowed flex items-center gap-2 font-medium transition-all", children: [_jsx(Save, { className: "w-4 h-4" }), saving ? 'Đang lưu...' : 'Lưu thay đổi'] })] })] }), _jsxs("div", { className: "space-y-6", children: [_jsx(ProfileCard, { avatar: formData.avatar, name: formData.name, email: formData.email, role: formData.role, isEditing: isEditing, onAvatarChange: () => { }, onNameChange: (val) => setFormData({ ...formData, name: val }), onEmailChange: (val) => setFormData({ ...formData, email: val }), onRoleChange: (val) => setFormData({ ...formData, role: val }) }), renderAvatarPicker ? (renderAvatarPicker({
211
211
  currentAvatar: formData.avatar || null,
212
212
  onSelect: handleAvatarSelect,
213
213
  })) : (_jsxs("div", { className: "bg-base-100 rounded-2xl border border-base-300 p-6", children: [_jsx("label", { className: "block text-xs font-medium text-base-content/60 mb-1.5 uppercase", children: "Avatar URL" }), _jsx("input", { type: "text", value: formData.avatar, onChange: (e) => setFormData({ ...formData, avatar: e.target.value }), className: "w-full px-4 py-2.5 rounded-xl border border-base-300 focus:outline-none focus:ring-2 focus:ring-primary/20 focus:border-primary transition-all text-base-content placeholder:text-base-content/40", placeholder: "https://example.com/avatar.jpg" })] })), _jsx(SecuritySection, { isEditing: isEditing, passwordMethod: passwordMethod, onPasswordMethodChange: setPasswordMethod, newPassword: isEditing ? newPassword : formData.password, onNewPasswordChange: (val) => {
@@ -215,6 +215,6 @@ export default function UserDetailPage({ userId }) {
215
215
  setNewPassword(val);
216
216
  else
217
217
  setFormData({ ...formData, password: val });
218
- }, onResetPassword: handleResetPassword, onGeneratePassword: isEditing ? handleGeneratePasswordAPI : generatePassword, twoFactorEnabled: user?.twoFactorEnabled, onDisable2FA: handleDisable2FA }), isEditing && user && (_jsx(VerificationSection, { emailVerified: !!user.emailVerified, emailVerifiedAt: user.emailVerifiedAt, onVerify: handleVerifyEmail, onResend: handleResendVerification })), isEditing && (_jsx(SessionsSection, { userId: userId, sessions: sessions, onRefresh: fetchSessions })), isEditing && (_jsx(SocialAccountsSection, { userId: userId, accounts: socialAccounts, onRefresh: fetchSocialAccounts })), isEditing && user && !user.deletedAt && (_jsx(DangerZone, { isActive: user.isActive, isDeleted: !!user.deletedAt, onUpdateStatus: (status) => handleUpdateStatus(status), onDelete: () => { }, onRestore: () => { } }))] }) })] }));
218
+ }, onResetPassword: handleResetPassword, onGeneratePassword: isEditing ? handleGeneratePasswordAPI : generatePassword, twoFactorEnabled: user?.twoFactorEnabled, onDisable2FA: handleDisable2FA }), isEditing && user && (_jsx(VerificationSection, { emailVerified: !!user.emailVerified, emailVerifiedAt: user.emailVerifiedAt, onVerify: handleVerifyEmail, onResend: handleResendVerification })), isEditing && (_jsx(SessionsSection, { userId: userId, sessions: sessions, onRefresh: fetchSessions })), isEditing && (_jsx(SocialAccountsSection, { userId: userId, accounts: socialAccounts, onRefresh: fetchSocialAccounts })), isEditing && user && !user.deletedAt && (_jsx(DangerZone, { isActive: user.isActive, isDeleted: !!user.deletedAt, onUpdateStatus: (status) => handleUpdateStatus(status), onDelete: () => { }, onRestore: () => { } }))] })] }) }));
219
219
  }
220
220
  //# sourceMappingURL=UserDetailPage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"UserDetailPage.js","sourceRoot":"","sources":["../../../src/client/pages/UserDetailPage.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UserDetailPage.js","sourceRoot":"","sources":["../../../src/client/pages/UserDetailPage.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@udhuong/admin-core",
3
- "version": "0.1.6",
3
+ "version": "0.1.8",
4
4
  "description": "Reusable admin core (client + server) — auth, RBAC, OAuth, user management. Built với NestJS + Next.js, ship trong 1 package với subpath exports.",
5
5
  "license": "MIT",
6
6
  "author": "udhuong <l19htm4n@gmail.com>",