feat: ManageAccount and ManageMembers
This commit is contained in:
@ -1,5 +1,5 @@
|
||||
import { apiConfig } from '@/config/api.config';
|
||||
import { Account, columns } from './account/Columns';
|
||||
import { Account, columns } from './Columns';
|
||||
import { DataTable } from '@/components/ui/DataTable';
|
||||
import axios from 'axios';
|
||||
import { useEffect, useState } from 'react';
|
||||
119
src/pages/account/manage/members/Columns.tsx
Normal file
119
src/pages/account/manage/members/Columns.tsx
Normal file
@ -0,0 +1,119 @@
|
||||
import { Button } from '@/components/ui/button';
|
||||
import {
|
||||
DropdownMenu,
|
||||
DropdownMenuContent,
|
||||
DropdownMenuItem,
|
||||
DropdownMenuLabel,
|
||||
DropdownMenuTrigger
|
||||
} from '@/components/ui/dropdown-menu';
|
||||
import { ColumnDef } from '@tanstack/react-table';
|
||||
import { ArrowUpDown, MoreHorizontal } from 'lucide-react';
|
||||
|
||||
export type Members = {
|
||||
id: number;
|
||||
username: number;
|
||||
name: string;
|
||||
group: string;
|
||||
email: string;
|
||||
createdDate: Date;
|
||||
};
|
||||
|
||||
export const columns: ColumnDef<Members>[] = [
|
||||
{
|
||||
accessorKey: 'id',
|
||||
header: ({ column }) => {
|
||||
return (
|
||||
<Button
|
||||
variant="ghost"
|
||||
onClick={() => column.toggleSorting(column.getIsSorted() === 'asc')}
|
||||
>
|
||||
ID
|
||||
<ArrowUpDown className="ml-2 h-4 w-4" />
|
||||
</Button>
|
||||
);
|
||||
}
|
||||
},
|
||||
{
|
||||
accessorKey: 'username',
|
||||
header: ({ column }) => {
|
||||
return (
|
||||
<Button
|
||||
variant="ghost"
|
||||
onClick={() => column.toggleSorting(column.getIsSorted() === 'asc')}
|
||||
>
|
||||
Username
|
||||
<ArrowUpDown className="ml-2 h-4 w-4" />
|
||||
</Button>
|
||||
);
|
||||
}
|
||||
},
|
||||
{
|
||||
accessorKey: 'name',
|
||||
header: ({ column }) => {
|
||||
return (
|
||||
<Button
|
||||
variant="ghost"
|
||||
onClick={() => column.toggleSorting(column.getIsSorted() === 'asc')}
|
||||
>
|
||||
Name
|
||||
<ArrowUpDown className="ml-2 h-4 w-4" />
|
||||
</Button>
|
||||
);
|
||||
}
|
||||
},
|
||||
{
|
||||
accessorKey: 'email',
|
||||
header: ({ column }) => {
|
||||
return (
|
||||
<Button
|
||||
variant="ghost"
|
||||
onClick={() => column.toggleSorting(column.getIsSorted() === 'asc')}
|
||||
>
|
||||
Email
|
||||
<ArrowUpDown className="ml-2 h-4 w-4" />
|
||||
</Button>
|
||||
);
|
||||
}
|
||||
},
|
||||
{
|
||||
accessorKey: 'createdDate',
|
||||
header: ({ column }) => {
|
||||
return (
|
||||
<Button
|
||||
variant="ghost"
|
||||
onClick={() => column.toggleSorting(column.getIsSorted() === 'asc')}
|
||||
>
|
||||
Created Date
|
||||
<ArrowUpDown className="ml-2 h-4 w-4" />
|
||||
</Button>
|
||||
);
|
||||
},
|
||||
cell: ({ row }) => new Date(row.original.createdDate).toLocaleDateString()
|
||||
},
|
||||
{
|
||||
id: 'actions',
|
||||
cell: ({ row }) => {
|
||||
const dataMembers = row.original;
|
||||
|
||||
return (
|
||||
<DropdownMenu>
|
||||
<DropdownMenuTrigger asChild>
|
||||
<Button variant="ghost" className="h-8 w-8 p-0">
|
||||
<span className="sr-only">Open menu</span>
|
||||
<MoreHorizontal className="h-4 w-4" />
|
||||
</Button>
|
||||
</DropdownMenuTrigger>
|
||||
<DropdownMenuContent align="end">
|
||||
<DropdownMenuLabel>Actions</DropdownMenuLabel>
|
||||
<DropdownMenuItem
|
||||
onClick={() => navigator.clipboard.writeText(dataMembers.id.toString())}
|
||||
>
|
||||
Copy account ID
|
||||
</DropdownMenuItem>
|
||||
{/* <DropdownMenuSeparator /> */}
|
||||
</DropdownMenuContent>
|
||||
</DropdownMenu>
|
||||
);
|
||||
}
|
||||
}
|
||||
];
|
||||
42
src/pages/account/manage/members/ManageMembers.tsx
Normal file
42
src/pages/account/manage/members/ManageMembers.tsx
Normal file
@ -0,0 +1,42 @@
|
||||
import { DataTable } from '@/components/ui/DataTable';
|
||||
import { columns, Members } from './Columns';
|
||||
|
||||
const dataMembers: Members[] = [
|
||||
{
|
||||
id: 37026,
|
||||
username: 67076807158,
|
||||
name: 'Jumentino Carlos Luis da Costa',
|
||||
group: 'REGULER',
|
||||
email: 'Jumentinocldacoata@gmail.com',
|
||||
createdDate: new Date('2025-02-21')
|
||||
},
|
||||
{
|
||||
id: 37027,
|
||||
username: 67071827345,
|
||||
name: 'Diego Costa',
|
||||
group: 'REGULER',
|
||||
email: 'DiegoCosta@gmail.com',
|
||||
createdDate: new Date('2025-02-21')
|
||||
},
|
||||
{
|
||||
id: 37028,
|
||||
username: 56123764212,
|
||||
name: 'Luis Da Vista',
|
||||
group: 'SUPERVISOR',
|
||||
email: 'LuisdaVista@gmail.com',
|
||||
createdDate: new Date('2024-01-21')
|
||||
}
|
||||
];
|
||||
|
||||
const ManageMembers = () => {
|
||||
return (
|
||||
<div>
|
||||
<div className="container mx-auto p-5">
|
||||
<h1 className="text-xl font-medium leading-none text-gray-900">Manage Members</h1>
|
||||
<DataTable data={dataMembers} columns={columns} />
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default ManageMembers;
|
||||
Reference in New Issue
Block a user