zarm-web
Version:
基于 React 的桌面端UI库
97 lines (86 loc) • 1.96 kB
JavaScript
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);