UNPKG

chowa

Version:

UI component library based on React

92 lines (91 loc) 3.81 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 modal_1 = require("./modal"); const button_1 = require("../button"); const icon_1 = require("../icon"); const i18n_1 = require("../i18n"); class ConfirmModal extends React.PureComponent { constructor(props) { super(props); [ 'onCancelHandler', 'onConfirmHandler' ].forEach((fn) => { this[fn] = this[fn].bind(this); }); } onCancelHandler() { if (this.props.onCancel) { this.props.onCancel(); } } onConfirmHandler() { if (this.props.onConfirm) { this.props.onConfirm(); } } componentDidUpdate(preProps) { if (preProps.visible !== this.props.visible && this.props.visible) { this.autoFocusOnBtn(); } } componentDidMount() { if (this.props.visible) { this.autoFocusOnBtn(); } } autoFocusOnBtn() { setTimeout(() => { this.btnIns.focus(); }, 100); } render() { const { className, style, title, content, visible, cancelText, confirmText, loading, onHide } = this.props; const componentClass = classnames_1.default({ [utils_1.preClass('modal-confirm')]: true, [className]: utils_1.isExist(className) }); return (React.createElement(modal_1.default, { visible: visible, className: componentClass, style: style, onHide: onHide, closeOnPressEsc: false }, React.createElement(modal_1.default.Body, null, React.createElement("div", { className: utils_1.preClass('modal-confirm-body') }, React.createElement("div", { className: utils_1.preClass('modal-confirm-icon') }, React.createElement(icon_1.default, { type: 'warning-fill' })), React.createElement("div", { className: utils_1.preClass('modal-confirm-message') }, React.createElement("div", { className: utils_1.preClass('modal-confirm-title') }, React.createElement(i18n_1.I18nReceiver, { module: 'Modal' }, (i18n) => title || i18n.confirmTitle)), React.createElement("div", { className: utils_1.preClass('modal-confirm-content') }, content))), React.createElement("div", { className: utils_1.preClass('modal-confirm-btns') }, React.createElement(button_1.default, { onClick: this.onCancelHandler }, React.createElement(i18n_1.I18nReceiver, { module: 'Common' }, (i18n) => cancelText || i18n.cancel)), React.createElement(button_1.default, { onClick: this.onConfirmHandler, type: 'primary', loading: loading, ref: (ins) => { this.btnIns = ins; } }, React.createElement(i18n_1.I18nReceiver, { module: 'Common' }, (i18n) => confirmText || i18n.confirm)))))); } } ConfirmModal.propTypes = { className: PropTypes.string, style: PropTypes.object, title: PropTypes.string, content: PropTypes.node.isRequired, onConfirm: PropTypes.func, onCancel: PropTypes.func, visible: PropTypes.bool.isRequired, loading: PropTypes.bool, cancelText: PropTypes.string, confirmText: PropTypes.string, onHide: PropTypes.func }; ConfirmModal.defaultProps = { loading: false }; exports.default = ConfirmModal;