UNPKG

chowa

Version:

UI component library based on React

83 lines (82 loc) 3.48 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 AlertModal extends React.PureComponent { constructor(props) { super(props); this.onConfirmHandler = this.onConfirmHandler.bind(this); } 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); } onConfirmHandler() { if (this.props.onConfirm) { this.props.onConfirm(); } } render() { const { className, style, title, type, content, visible, confirmText, onHide } = this.props; const componentClass = classnames_1.default({ [utils_1.preClass('modal-alert')]: true, [className]: utils_1.isExist(className) }); const iconClass = classnames_1.default({ [utils_1.preClass('modal-alert-icon')]: true, [utils_1.preClass(`modal-alert-${type}`)]: true }); return (React.createElement(modal_1.default, { visible: visible, style: style, className: componentClass, onHide: onHide, closeOnPressEsc: false }, React.createElement(modal_1.default.Body, null, React.createElement("div", { className: utils_1.preClass('modal-alert-body') }, React.createElement("div", { className: iconClass }, React.createElement(icon_1.default, { type: `${type}-fill` })), React.createElement("div", { className: utils_1.preClass('modal-alert-message') }, React.createElement("div", { className: utils_1.preClass('modal-alert-title') }, React.createElement(i18n_1.I18nReceiver, { module: 'Modal' }, (i18n) => title || i18n.alertTitle)), React.createElement("div", { className: utils_1.preClass('modal-alert-content') }, content))), React.createElement("div", { className: utils_1.preClass('modal-alert-btns') }, React.createElement(button_1.default, { onClick: this.onConfirmHandler, type: 'primary', ref: (ins) => { this.btnIns = ins; } }, React.createElement(i18n_1.I18nReceiver, { module: 'Common' }, (i18n) => confirmText || i18n.confirm)))))); } } AlertModal.propTypes = { className: PropTypes.string, style: PropTypes.object, title: PropTypes.string, type: PropTypes.oneOf(['info', 'success', 'error', 'warning']), content: PropTypes.node.isRequired, onConfirm: PropTypes.func, visible: PropTypes.bool.isRequired, confirmText: PropTypes.string, onHide: PropTypes.func }; AlertModal.defaultProps = { type: 'info' }; exports.default = AlertModal;