chowa
Version:
UI component library based on React
88 lines (87 loc) • 3.98 kB
JavaScript
/**
* @license chowa v1.1.3
*
* Copyright (c) Chowa Techonlogies Co.,Ltd.(http://www.chowa.cn).
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
;
Object.defineProperty(exports, "__esModule", { value: true });
const React = require("react");
const PropTypes = require("prop-types");
const classnames_1 = require("classnames");
const utils_1 = require("../utils");
const popover_1 = require("../popover");
const icon_1 = require("../icon");
const button_1 = require("../button");
const i18n_1 = require("../i18n");
class PopConfirm extends React.PureComponent {
constructor(props) {
super(props);
this.state = {
selfVisible: props.visible || props.defaultVisible
};
[
'onCancelHandler',
'onConfirmHandler',
'onVisibleChangeHandelr'
].forEach((fn) => {
this[fn] = this[fn].bind(this);
});
}
onCancelHandler() {
if (this.props.onCancel) {
this.props.onCancel();
}
this.setState({ selfVisible: false });
}
onConfirmHandler() {
if (this.props.onConfirm) {
this.props.onConfirm();
}
this.setState({ selfVisible: false });
}
onVisibleChangeHandelr(v) {
this.setState({ selfVisible: v });
if (this.props.onVisibleChange) {
this.props.onVisibleChange(v);
}
}
render() {
const { children, placement, withArrow, trigger, fixSpace, offsetX, offsetY, disabled, delay, onShow, onHide, onEnter, onLeave, className, style, title, iconType, iconColor, cancelText, confirmText, externalWheelHide } = this.props;
const { selfVisible } = this.state;
const componentClass = classnames_1.default({
[utils_1.preClass('pop-confirm')]: true,
[className]: utils_1.isExist(className)
});
return (React.createElement(popover_1.default, { content: (React.createElement("div", { className: componentClass, style: style },
React.createElement("div", { className: utils_1.preClass('pop-confirm-content') },
React.createElement("span", { className: utils_1.preClass('pop-confirm-icon'), style: utils_1.isExist(iconColor) ? { color: iconColor } : null },
React.createElement(icon_1.default, { type: iconType })),
React.createElement("span", { className: utils_1.preClass('pop-confirm-title') }, title)),
React.createElement("div", { className: utils_1.preClass('pop-confirm-btns') },
React.createElement(button_1.default, { size: 'small', onClick: this.onCancelHandler },
React.createElement(i18n_1.I18nReceiver, { module: 'Common' }, (i18n) => cancelText || i18n.cancel)),
React.createElement(button_1.default, { type: 'primary', size: 'small', onClick: this.onConfirmHandler },
React.createElement(i18n_1.I18nReceiver, { module: 'Common' }, (i18n) => confirmText || i18n.cancel))))), visible: selfVisible, placement: placement, onVisibleChange: this.onVisibleChangeHandelr, externalWheelHide: externalWheelHide, withArrow: withArrow, trigger: trigger, fixSpace: fixSpace, offsetX: offsetX, offsetY: offsetY, disabled: disabled, delay: delay, onShow: onShow, onHide: onHide, onEnter: onEnter, onLeave: onLeave }, children));
}
}
PopConfirm.propTypes = {
className: PropTypes.string,
style: PropTypes.object,
title: PropTypes.string.isRequired,
iconType: PropTypes.string,
iconColor: PropTypes.string,
onConfirm: PropTypes.func,
onCancel: PropTypes.func,
cancelText: PropTypes.string,
confirmText: PropTypes.string
};
PopConfirm.defaultProps = {
trigger: 'click',
iconType: 'warning-fill',
visible: false,
defaultVisible: false
};
exports.default = PopConfirm;