| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | import React, { useMemo, useState } from 'react'; |
| | import { Empty } from '@douyinfe/semi-ui'; |
| | import CardTable from '../../common/ui/CardTable'; |
| | 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'; |
| | import ResetPasskeyModal from './modals/ResetPasskeyModal'; |
| | import ResetTwoFAModal from './modals/ResetTwoFAModal'; |
| |
|
| | const UsersTable = (usersData) => { |
| | const { |
| | users, |
| | loading, |
| | activePage, |
| | pageSize, |
| | userCount, |
| | compactMode, |
| | handlePageChange, |
| | handlePageSizeChange, |
| | handleRow, |
| | setEditingUser, |
| | setShowEditUser, |
| | manageUser, |
| | refresh, |
| | resetUserPasskey, |
| | resetUserTwoFA, |
| | t, |
| | } = usersData; |
| |
|
| | |
| | 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(''); |
| | const [showResetPasskeyModal, setShowResetPasskeyModal] = useState(false); |
| | const [showResetTwoFAModal, setShowResetTwoFAModal] = useState(false); |
| |
|
| | |
| | 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); |
| | }; |
| |
|
| | const showResetPasskeyUserModal = (user) => { |
| | setModalUser(user); |
| | setShowResetPasskeyModal(true); |
| | }; |
| |
|
| | const showResetTwoFAUserModal = (user) => { |
| | setModalUser(user); |
| | setShowResetTwoFAModal(true); |
| | }; |
| |
|
| | |
| | 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); |
| | }; |
| |
|
| | const handleResetPasskeyConfirm = async () => { |
| | await resetUserPasskey(modalUser); |
| | setShowResetPasskeyModal(false); |
| | }; |
| |
|
| | const handleResetTwoFAConfirm = async () => { |
| | await resetUserTwoFA(modalUser); |
| | setShowResetTwoFAModal(false); |
| | }; |
| |
|
| | |
| | const columns = useMemo(() => { |
| | return getUsersColumns({ |
| | t, |
| | setEditingUser, |
| | setShowEditUser, |
| | showPromoteModal: showPromoteUserModal, |
| | showDemoteModal: showDemoteUserModal, |
| | showEnableDisableModal: showEnableDisableUserModal, |
| | showDeleteModal: showDeleteUserModal, |
| | showResetPasskeyModal: showResetPasskeyUserModal, |
| | showResetTwoFAModal: showResetTwoFAUserModal, |
| | }); |
| | }, [ |
| | t, |
| | setEditingUser, |
| | setShowEditUser, |
| | showPromoteUserModal, |
| | showDemoteUserModal, |
| | showEnableDisableUserModal, |
| | showDeleteUserModal, |
| | showResetPasskeyUserModal, |
| | showResetTwoFAUserModal, |
| | ]); |
| |
|
| | |
| | const tableColumns = useMemo(() => { |
| | return compactMode |
| | ? columns.map((col) => { |
| | if (col.dataIndex === 'operate') { |
| | const { fixed, ...rest } = col; |
| | return rest; |
| | } |
| | return col; |
| | }) |
| | : columns; |
| | }, [compactMode, columns]); |
| |
|
| | return ( |
| | <> |
| | <CardTable |
| | columns={tableColumns} |
| | dataSource={users} |
| | scroll={compactMode ? undefined : { x: 'max-content' }} |
| | pagination={{ |
| | currentPage: activePage, |
| | pageSize: pageSize, |
| | total: userCount, |
| | pageSizeOpts: [10, 20, 50, 100], |
| | showSizeChanger: true, |
| | onPageSizeChange: handlePageSizeChange, |
| | onPageChange: handlePageChange, |
| | }} |
| | hidePagination={true} |
| | loading={loading} |
| | onRow={handleRow} |
| | empty={ |
| | <Empty |
| | image={<IllustrationNoResult style={{ width: 150, height: 150 }} />} |
| | darkModeImage={ |
| | <IllustrationNoResultDark style={{ width: 150, height: 150 }} /> |
| | } |
| | description={t('搜索无结果')} |
| | style={{ padding: 30 }} |
| | /> |
| | } |
| | className='overflow-hidden' |
| | size='middle' |
| | /> |
| | |
| | {/* Modal components */} |
| | <PromoteUserModal |
| | visible={showPromoteModal} |
| | onCancel={() => setShowPromoteModal(false)} |
| | onConfirm={handlePromoteConfirm} |
| | user={modalUser} |
| | t={t} |
| | /> |
| | |
| | <DemoteUserModal |
| | visible={showDemoteModal} |
| | onCancel={() => setShowDemoteModal(false)} |
| | onConfirm={handleDemoteConfirm} |
| | user={modalUser} |
| | t={t} |
| | /> |
| | |
| | <EnableDisableUserModal |
| | visible={showEnableDisableModal} |
| | onCancel={() => setShowEnableDisableModal(false)} |
| | onConfirm={handleEnableDisableConfirm} |
| | user={modalUser} |
| | action={enableDisableAction} |
| | t={t} |
| | /> |
| | |
| | <DeleteUserModal |
| | visible={showDeleteModal} |
| | onCancel={() => setShowDeleteModal(false)} |
| | user={modalUser} |
| | users={users} |
| | activePage={activePage} |
| | refresh={refresh} |
| | manageUser={manageUser} |
| | t={t} |
| | /> |
| | |
| | <ResetPasskeyModal |
| | visible={showResetPasskeyModal} |
| | onCancel={() => setShowResetPasskeyModal(false)} |
| | onConfirm={handleResetPasskeyConfirm} |
| | user={modalUser} |
| | t={t} |
| | /> |
| | |
| | <ResetTwoFAModal |
| | visible={showResetTwoFAModal} |
| | onCancel={() => setShowResetTwoFAModal(false)} |
| | onConfirm={handleResetTwoFAConfirm} |
| | user={modalUser} |
| | t={t} |
| | /> |
| | </> |
| | ); |
| | }; |
| |
|
| | export default UsersTable; |
| |
|