import React, { useContext } from 'react'; import { Alert, Space, ConfigProvider } from 'antd'; import './index.less'; import type { IntlType } from '@ant-design/pro-provider'; import { useIntl } from '@ant-design/pro-provider'; export type AlertRenderType = | ((props: { intl: IntlType; selectedRowKeys: (number | string)[]; selectedRows: T[]; onCleanSelected: () => void; }) => React.ReactNode) | false; export type TableAlertProps = { selectedRowKeys: (number | string)[]; selectedRows: T[]; alertInfoRender?: AlertRenderType; onCleanSelected: () => void; alertOptionRender?: AlertRenderType; }; const defaultAlertOptionRender = (props: { intl: IntlType; onCleanSelected: () => void }) => { const { intl, onCleanSelected } = props; return [ {intl.getMessage('alert.clear', '清空')} , ]; }; function TableAlert({ selectedRowKeys, onCleanSelected, selectedRows, alertInfoRender = ({ intl }) => ( {intl.getMessage('alert.selected', '已选择')} {selectedRowKeys.length} {intl.getMessage('alert.item', '项')}   ), alertOptionRender = defaultAlertOptionRender, }: TableAlertProps) { const intl = useIntl(); const option = alertOptionRender && alertOptionRender({ onCleanSelected, selectedRowKeys, selectedRows, intl, }); const { getPrefixCls } = useContext(ConfigProvider.ConfigContext); const className = getPrefixCls('pro-table-alert'); if (alertInfoRender === false) { return null; } const dom = alertInfoRender({ intl, selectedRowKeys, selectedRows, onCleanSelected }); if (dom === false || selectedRowKeys.length < 1) { return null; } return (
{dom}
{option ?
{option}
: null}
} type="info" /> ); } export default TableAlert;