UNPKG

4.76 kBJavaScriptView Raw
1import _extends from 'babel-runtime/helpers/extends';
2import _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';
3import _classCallCheck from 'babel-runtime/helpers/classCallCheck';
4import _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';
5import _inherits from 'babel-runtime/helpers/inherits';
6
7var _class, _temp;
8
9import React from 'react';
10import PropTypes from 'prop-types';
11import classNames from 'classnames';
12import { func, obj } from '../util';
13import Icon from '../icon';
14import zhCN from '../locale/zh-cn';
15import { normalMap, edgeMap } from './alignMap';
16
17/**
18 * Created by xiachi on 17/2/10.
19 */
20
21var noop = func.noop;
22var BalloonInner = (_temp = _class = function (_React$Component) {
23 _inherits(BalloonInner, _React$Component);
24
25 function BalloonInner() {
26 _classCallCheck(this, BalloonInner);
27
28 return _possibleConstructorReturn(this, _React$Component.apply(this, arguments));
29 }
30
31 BalloonInner.prototype.render = function render() {
32 var _classNames, _classNames2;
33
34 var _props = this.props,
35 prefix = _props.prefix,
36 closable = _props.closable,
37 className = _props.className,
38 style = _props.style,
39 isTooltip = _props.isTooltip,
40 align = _props.align,
41 title = _props.title,
42 type = _props.type,
43 onClose = _props.onClose,
44 alignEdge = _props.alignEdge,
45 v2 = _props.v2,
46 children = _props.children,
47 rtl = _props.rtl,
48 locale = _props.locale,
49 others = _objectWithoutProperties(_props, ['prefix', 'closable', 'className', 'style', 'isTooltip', 'align', 'title', 'type', 'onClose', 'alignEdge', 'v2', 'children', 'rtl', 'locale']);
50
51 var alignMap = alignEdge || v2 ? edgeMap : normalMap;
52 var _prefix = prefix;
53
54 if (isTooltip) {
55 _prefix = _prefix + 'balloon-tooltip';
56 } else {
57 _prefix = _prefix + 'balloon';
58 }
59
60 var closableInTitle = closable && title !== undefined;
61 var closableInContent = closable && title === undefined;
62
63 var classes = classNames((_classNames = {}, _classNames['' + _prefix] = true, _classNames[_prefix + '-' + type] = type, _classNames[_prefix + '-medium'] = true, _classNames[_prefix + '-' + alignMap[align].arrow] = alignMap[align], _classNames[_prefix + '-closable'] = closableInContent, _classNames[className] = className, _classNames));
64
65 var titleCls = classNames((_classNames2 = {}, _classNames2[prefix + 'balloon-title'] = true, _classNames2[_prefix + '-closable'] = closableInTitle, _classNames2));
66
67 var closeIcon = React.createElement(
68 'a',
69 { role: 'button', 'aria-label': locale.close, tabIndex: '0', className: _prefix + '-close', onClick: onClose },
70 React.createElement(Icon, { type: 'close', size: 'small' })
71 );
72
73 return React.createElement(
74 'div',
75 _extends({
76 role: 'tooltip',
77 'aria-live': 'polite',
78 dir: rtl ? 'rtl' : undefined,
79 className: classes,
80 style: style
81 }, obj.pickOthers(Object.keys(BalloonInner.propTypes), others)),
82 React.createElement(
83 'div',
84 { className: prefix + 'balloon-arrow' },
85 React.createElement('div', { className: prefix + 'balloon-arrow-content' })
86 ),
87 title && React.createElement(
88 'div',
89 { className: titleCls },
90 title,
91 closableInTitle && closeIcon
92 ),
93 React.createElement(
94 'div',
95 { className: prefix + 'balloon-content' },
96 children
97 ),
98 closableInContent && closeIcon
99 );
100 };
101
102 return BalloonInner;
103}(React.Component), _class.contextTypes = {
104 prefix: PropTypes.string
105}, _class.propTypes = {
106 prefix: PropTypes.string,
107 rtl: PropTypes.bool,
108 closable: PropTypes.bool,
109 children: PropTypes.any,
110 title: PropTypes.node,
111 className: PropTypes.string,
112 alignEdge: PropTypes.bool,
113 onClose: PropTypes.func,
114 style: PropTypes.any,
115 align: PropTypes.string,
116 type: PropTypes.string,
117 isTooltip: PropTypes.bool,
118 locale: PropTypes.object,
119 pure: PropTypes.bool,
120 v2: PropTypes.bool
121}, _class.defaultProps = {
122 prefix: 'next-',
123 closable: true,
124 onClose: noop,
125 locale: zhCN.Balloon,
126 align: 'b',
127 type: 'normal',
128 alignEdge: false,
129 pure: false
130}, _temp);
131BalloonInner.displayName = 'BalloonInner';
132
133
134export default BalloonInner;
\No newline at end of file