UNPKG

chowa

Version:

UI component library based on React

88 lines (87 loc) 3.98 kB
/** * @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. */ "use strict"; 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;