import React, { useMemo, useState } from 'react';
import { Empty } from '@douyinfe/semi-ui';
import CardTable from '../../common/ui/CardTable.js';
import {
IllustrationNoResult,
IllustrationNoResultDark
} from '@douyinfe/semi-illustrations';
import { getUsersColumns } from './UsersColumnDefs';
import PromoteUserModal from './modals/PromoteUserModal';
import DemoteUserModal from './modals/DemoteUserModal';
import EnableDisableUserModal from './modals/EnableDisableUserModal';
import DeleteUserModal from './modals/DeleteUserModal';
const UsersTable = (usersData) => {
const {
users,
loading,
activePage,
pageSize,
userCount,
compactMode,
handlePageChange,
handlePageSizeChange,
handleRow,
setEditingUser,
setShowEditUser,
manageUser,
refresh,
t,
} = usersData;
// Modal states
const [showPromoteModal, setShowPromoteModal] = useState(false);
const [showDemoteModal, setShowDemoteModal] = useState(false);
const [showEnableDisableModal, setShowEnableDisableModal] = useState(false);
const [showDeleteModal, setShowDeleteModal] = useState(false);
const [modalUser, setModalUser] = useState(null);
const [enableDisableAction, setEnableDisableAction] = useState('');
// Modal handlers
const showPromoteUserModal = (user) => {
setModalUser(user);
setShowPromoteModal(true);
};
const showDemoteUserModal = (user) => {
setModalUser(user);
setShowDemoteModal(true);
};
const showEnableDisableUserModal = (user, action) => {
setModalUser(user);
setEnableDisableAction(action);
setShowEnableDisableModal(true);
};
const showDeleteUserModal = (user) => {
setModalUser(user);
setShowDeleteModal(true);
};
// Modal confirm handlers
const handlePromoteConfirm = () => {
manageUser(modalUser.id, 'promote', modalUser);
setShowPromoteModal(false);
};
const handleDemoteConfirm = () => {
manageUser(modalUser.id, 'demote', modalUser);
setShowDemoteModal(false);
};
const handleEnableDisableConfirm = () => {
manageUser(modalUser.id, enableDisableAction, modalUser);
setShowEnableDisableModal(false);
};
// Get all columns
const columns = useMemo(() => {
return getUsersColumns({
t,
setEditingUser,
setShowEditUser,
showPromoteModal: showPromoteUserModal,
showDemoteModal: showDemoteUserModal,
showEnableDisableModal: showEnableDisableUserModal,
showDeleteModal: showDeleteUserModal
});
}, [
t,
setEditingUser,
setShowEditUser,
]);
// Handle compact mode by removing fixed positioning
const tableColumns = useMemo(() => {
return compactMode ? columns.map(col => {
if (col.dataIndex === 'operate') {
const { fixed, ...rest } = col;
return rest;
}
return col;
}) : columns;
}, [compactMode, columns]);
return (
<>
}
darkModeImage={}
description={t('搜索无结果')}
style={{ padding: 30 }}
/>
}
className="overflow-hidden"
size="middle"
/>
{/* Modal components */}
setShowPromoteModal(false)}
onConfirm={handlePromoteConfirm}
user={modalUser}
t={t}
/>
setShowDemoteModal(false)}
onConfirm={handleDemoteConfirm}
user={modalUser}
t={t}
/>
setShowEnableDisableModal(false)}
onConfirm={handleEnableDisableConfirm}
user={modalUser}
action={enableDisableAction}
t={t}
/>
setShowDeleteModal(false)}
user={modalUser}
users={users}
activePage={activePage}
refresh={refresh}
manageUser={manageUser}
t={t}
/>
>
);
};
export default UsersTable;