import React, { useRef } from 'react'; import { Modal, Popconfirm } from 'antd'; import useConfig from './../../use/useConfig'; import style from './actionText.module.scss'; interface ActionTextProps { deleteTipMode?: 'modal' | 'popconfirm'; onClick?(): void; } interface Extend { Delete: React.FC; Edit: React.FC } const ActionText: React.FC & Extend = (props) => { const clickTimer = useRef(null); function onClick() { if (clickTimer.current || !props.onClick) return; clickTimer.current = window.setTimeout(() => { props.onClick!(); clickTimer.current = null; }, 100); } return ( ) } ActionText.Edit = (props) => { const config = useConfig(); const permissio = config.getPermissio?.() || {}; return ( {permissio.edit ? config.local?.edit : config.local?.view} ) } ActionText.Delete = ({ deleteTipMode = 'popconfirm', ...props }) => { const config = useConfig(); const permissio = config.getPermissio?.() || {}; function onClick() { if (deleteTipMode === 'modal') { Modal.confirm({ title: config.local?.deleteConfirmTitle, onOk: () => props.onClick?.() }) } } return permissio.delete ? ( {deleteTipMode === 'popconfirm' ? ( {config.local?.delete} ) : config.local?.delete} ) : null } export default ActionText;