UNPKG

zarm-web

Version:
97 lines (86 loc) 1.96 kB
import React, { Component } from 'react'; import Popover from '../popover'; import Button from '../button'; import LocaleReceiver from '../locale-provider/LocaleReceiver'; const noop = () => {}; class Popconfirm extends Component { constructor(props) { super(props); this.state = { visible: false }; } componentWillReceiveProps(nextProps) { const { visible } = this.state; if (visible !== nextProps.visible) { this.setState({ visible: !!nextProps.visible }); } } handleCancel() { const { onCancel } = this.props; this.setState({ visible: false }); onCancel(); } handleConfirm() { const { onOk } = this.props; this.setState({ visible: false }); onOk(); } render() { const { visible } = this.state; const { children, content, prefixCls, className, trigger, direction, okText, cancelText, locale } = this.props; // eslint-disable-next-line const popContent = () => { return React.createElement("div", null, content, React.createElement("div", { className: `${prefixCls}-actions` }, React.createElement(Button, { onClick: () => this.handleCancel() }, cancelText || locale.cancel), React.createElement(Button, { theme: "primary", onClick: () => this.handleConfirm() }, okText || locale.confirm))); }; return React.createElement(Popover, { content: popContent, visible: visible, direction: direction, prefixCls: prefixCls, className: className, trigger: trigger }, children); } } Popconfirm.defaultProps = { prefixCls: 'ui-popover', className: null, visible: false, trigger: 'click', direction: 'bottomLeft', onCancel: noop, onOk: noop, content: null }; export default LocaleReceiver('Confirm')(Popconfirm);