toast 메시지 추가
alert 글로벌화 loading 글로벌화
This commit is contained in:
80
src/components/common/Table/TableHeader.js
Normal file
80
src/components/common/Table/TableHeader.js
Normal file
@@ -0,0 +1,80 @@
|
||||
import { useRecoilValue } from 'recoil';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { authList } from '../../../store/authList';
|
||||
import { authType } from '../../../assets/data';
|
||||
import { Button, ExcelDownButton, ViewTableInfo } from '../index';
|
||||
|
||||
const TableHeader = ({
|
||||
config,
|
||||
tableRef,
|
||||
total,
|
||||
total_all,
|
||||
handleOrderBy,
|
||||
handlePageSize,
|
||||
selectedRows = [],
|
||||
onAction,
|
||||
navigate
|
||||
}) => {
|
||||
const userInfo = useRecoilValue(authList);
|
||||
const { t } = useTranslation();
|
||||
|
||||
const handleButtonClick = (button, e) => {
|
||||
e?.preventDefault();
|
||||
|
||||
if (button.action === 'navigate' && button.navigateTo && navigate) {
|
||||
navigate(button.navigateTo);
|
||||
return;
|
||||
}
|
||||
|
||||
if (onAction) {
|
||||
onAction(button.action, button.id);
|
||||
}
|
||||
};
|
||||
|
||||
const renderButton = (button, index) => {
|
||||
const hasAuth = button.requiredAuth ?
|
||||
userInfo.auth_list?.some(auth => auth.id === authType[button.requiredAuth]) :
|
||||
true;
|
||||
|
||||
if (!hasAuth) return null;
|
||||
|
||||
if (button.component === 'ExcelDownButton') {
|
||||
return (
|
||||
<ExcelDownButton
|
||||
key={index}
|
||||
tableRef={tableRef}
|
||||
fileName={button.props?.fileName ? t(button.props.fileName) : ''}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
const buttonTheme = button.disableWhen === 'noSelection' && selectedRows.length === 0
|
||||
? 'disable'
|
||||
: button.theme;
|
||||
|
||||
return (
|
||||
<Button
|
||||
key={index}
|
||||
theme={buttonTheme}
|
||||
text={button.text}
|
||||
handleClick={(e) => handleButtonClick(button, e)}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
return (
|
||||
<ViewTableInfo
|
||||
total={total}
|
||||
total_all={total_all}
|
||||
handleOrderBy={handleOrderBy}
|
||||
handlePageSize={handlePageSize}
|
||||
orderType={config.orderType}
|
||||
pageType={config.pageType}
|
||||
countType={config.countType}
|
||||
>
|
||||
{config.buttons.map(renderButton)}
|
||||
</ViewTableInfo>
|
||||
);
|
||||
};
|
||||
|
||||
export default TableHeader;
|
||||
Reference in New Issue
Block a user