import React, { useRef } from 'react'; import { Button as AButton, Modal } from 'antd'; import { ButtonProps as AButtonProps } from 'antd/lib/button/button'; import useConfig from './../../use/useConfig'; interface IExtendElement { Delete: React.FC; Create: React.FC; Add: React.FC; Submit: React.FC; Download: React.FC; Save: React.FC; } interface ButtonProps extends AButtonProps { permit?: 'delete' | 'create' | 'edit' | 'view' | 'download'; langKey?: string } const Button: React.FC & IExtendElement = ({ permit, langKey, ...props }) => { const config = useConfig(); const clickTimer = useRef(null); const permissio = config.getPermissio?.() || {}; function onClick(e: any) { if (clickTimer.current || !props.onClick) return; clickTimer.current = window.setTimeout(() => { props.onClick!(e); clickTimer.current = null; }, 100); } return permit && permissio[permit] ? ( {props.children || config.local?.[langKey || permit || '']} ) : null } Button.Delete = (props) => { const config = useConfig(); function onClick(e: any) { Modal.confirm({ title: config.local?.deleteConfirmTitle, onOk: () => props.onClick?.(e) }) } return (