UNPKG

7.61 kBJavaScriptView Raw
1'use strict';
2
3exports.__esModule = true;
4
5var _extends2 = require('babel-runtime/helpers/extends');
6
7var _extends3 = _interopRequireDefault(_extends2);
8
9var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
10
11var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
12
13var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
14
15var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
16
17var _inherits2 = require('babel-runtime/helpers/inherits');
18
19var _inherits3 = _interopRequireDefault(_inherits2);
20
21var _class, _temp2;
22
23var _react = require('react');
24
25var _react2 = _interopRequireDefault(_react);
26
27var _propTypes = require('prop-types');
28
29var _propTypes2 = _interopRequireDefault(_propTypes);
30
31var _reactLifecyclesCompat = require('react-lifecycles-compat');
32
33var _classnames = require('classnames');
34
35var _classnames2 = _interopRequireDefault(_classnames);
36
37var _zhCn = require('../locale/zh-cn');
38
39var _zhCn2 = _interopRequireDefault(_zhCn);
40
41var _icon = require('../icon');
42
43var _icon2 = _interopRequireDefault(_icon);
44
45var _animate = require('../animate');
46
47var _animate2 = _interopRequireDefault(_animate);
48
49var _configProvider = require('../config-provider');
50
51var _configProvider2 = _interopRequireDefault(_configProvider);
52
53var _util = require('../util');
54
55function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
56
57var noop = function noop() {};
58
59/**
60 * Message
61 */
62var Message = (_temp2 = _class = function (_Component) {
63 (0, _inherits3.default)(Message, _Component);
64
65 function Message() {
66 var _temp, _this, _ret;
67
68 (0, _classCallCheck3.default)(this, Message);
69
70 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
71 args[_key] = arguments[_key];
72 }
73
74 return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.state = {
75 visible: typeof _this.props.visible === 'undefined' ? _this.props.defaultVisible : _this.props.visible
76 }, _this.onClose = function () {
77 if (!('visible' in _this.props)) {
78 _this.setState({
79 visible: false
80 });
81 }
82 _this.props.onClose(false);
83 }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);
84 }
85
86 Message.getDerivedStateFromProps = function getDerivedStateFromProps(props) {
87 if ('visible' in props) {
88 return {
89 visible: props.visible
90 };
91 }
92
93 return {};
94 };
95
96 Message.prototype.render = function render() {
97 var _classNames;
98
99 /* eslint-disable no-unused-vars */
100 var _props = this.props,
101 prefix = _props.prefix,
102 pure = _props.pure,
103 className = _props.className,
104 style = _props.style,
105 type = _props.type,
106 shape = _props.shape,
107 size = _props.size,
108 title = _props.title,
109 children = _props.children,
110 defaultVisible = _props.defaultVisible,
111 propsVisible = _props.visible,
112 icon = _props.iconType,
113 closeable = _props.closeable,
114 onClose = _props.onClose,
115 afterClose = _props.afterClose,
116 animation = _props.animation,
117 rtl = _props.rtl,
118 locale = _props.locale;
119
120 var others = (0, _extends3.default)({}, _util.obj.pickOthers(Object.keys(Message.propTypes), this.props));
121 /* eslint-enable */
122 var visible = this.state.visible;
123
124 var messagePrefix = prefix + 'message';
125
126 var classes = (0, _classnames2.default)((_classNames = {}, _classNames[messagePrefix] = true, _classNames[prefix + 'message-' + type] = type, _classNames['' + prefix + shape] = shape, _classNames['' + prefix + size] = size, _classNames[prefix + 'title-content'] = !!title, _classNames[prefix + 'only-content'] = !title && !!children, _classNames[className] = className, _classNames));
127
128 var newChildren = visible ? _react2.default.createElement(
129 'div',
130 (0, _extends3.default)({ role: 'alert', style: style }, others, { className: classes, dir: rtl ? 'rtl' : undefined }),
131 closeable ? _react2.default.createElement(
132 'a',
133 {
134 role: 'button',
135 'aria-label': locale.closeAriaLabel,
136 className: messagePrefix + '-close',
137 onClick: this.onClose
138 },
139 _react2.default.createElement(_icon2.default, { type: 'close' })
140 ) : null,
141 icon !== false ? _react2.default.createElement(_icon2.default, {
142 className: messagePrefix + '-symbol ' + (!icon && messagePrefix + '-symbol-icon'),
143 type: icon
144 }) : null,
145 title ? _react2.default.createElement(
146 'div',
147 { className: messagePrefix + '-title' },
148 title
149 ) : null,
150 children ? _react2.default.createElement(
151 'div',
152 { className: messagePrefix + '-content' },
153 children
154 ) : null
155 ) : null;
156
157 if (animation) {
158 return _react2.default.createElement(
159 _animate2.default.Expand,
160 { animationAppear: false, afterLeave: afterClose },
161 newChildren
162 );
163 }
164
165 return newChildren;
166 };
167
168 return Message;
169}(_react.Component), _class.propTypes = {
170 prefix: _propTypes2.default.string,
171 pure: _propTypes2.default.bool,
172 className: _propTypes2.default.string,
173 style: _propTypes2.default.object,
174 /**
175 * 反馈类型
176 */
177 type: _propTypes2.default.oneOf(['success', 'warning', 'error', 'notice', 'help', 'loading']),
178 /**
179 * 反馈外观
180 */
181 shape: _propTypes2.default.oneOf(['inline', 'addon', 'toast']),
182 /**
183 * 反馈大小
184 */
185 size: _propTypes2.default.oneOf(['medium', 'large']),
186 /**
187 * 标题
188 */
189 title: _propTypes2.default.node,
190 /**
191 * 内容
192 */
193 children: _propTypes2.default.node,
194 /**
195 * 默认是否显示
196 */
197 defaultVisible: _propTypes2.default.bool,
198 /**
199 * 当前是否显示
200 */
201 visible: _propTypes2.default.bool,
202 /**
203 * 显示的图标类型,会覆盖内部设置的IconType,传false不显示图标
204 */
205 iconType: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.bool]),
206 /**
207 * 显示关闭按钮
208 */
209 closeable: _propTypes2.default.bool,
210 /**
211 * 关闭按钮的回调
212 */
213 onClose: _propTypes2.default.func,
214 /**
215 * 关闭之后调用的函数
216 */
217 afterClose: _propTypes2.default.func,
218 /**
219 * 是否开启展开收起动画
220 */
221 animation: _propTypes2.default.bool,
222 locale: _propTypes2.default.object,
223 rtl: _propTypes2.default.bool
224}, _class.defaultProps = {
225 prefix: 'next-',
226 pure: false,
227 type: 'success',
228 shape: 'inline',
229 size: 'medium',
230 defaultVisible: true,
231 closeable: false,
232 onClose: noop,
233 afterClose: noop,
234 animation: true,
235 locale: _zhCn2.default.Message
236}, _temp2);
237Message.displayName = 'Message';
238exports.default = _configProvider2.default.config((0, _reactLifecyclesCompat.polyfill)(Message));
239module.exports = exports['default'];
\No newline at end of file