UNPKG

zent

Version:

一套前端设计语言和基于React的实现

159 lines (121 loc) 4.95 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _defineProperty2 = require('babel-runtime/helpers/defineProperty'); var _defineProperty3 = _interopRequireDefault(_defineProperty2); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _icon = require('../icon'); var _icon2 = _interopRequireDefault(_icon); var _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _isFunction = require('lodash/isFunction'); var _isFunction2 = _interopRequireDefault(_isFunction); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } // 支持的color style var colorTypes = ['red', 'green', 'yellow', 'blue', 'darkgreen']; var Tag = function (_ref) { (0, _inherits3['default'])(Tag, _ref); function Tag() { var _ref2; var _temp, _this, _ret; (0, _classCallCheck3['default'])(this, Tag); for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return _ret = (_temp = (_this = (0, _possibleConstructorReturn3['default'])(this, (_ref2 = Tag.__proto__ || Object.getPrototypeOf(Tag)).call.apply(_ref2, [this].concat(args))), _this), _this.state = { closed: false }, _this.onClose = function (e) { e.persist(); _this.setState({ closed: true }, function () { // onClose是在*关闭以后*被调用的 var onClose = _this.props.onClose; if ((0, _isFunction2['default'])(onClose)) { onClose(e); } }); }, _temp), (0, _possibleConstructorReturn3['default'])(_this, _ret); } (0, _createClass3['default'])(Tag, [{ key: 'render', value: function render() { var _cx; var closed = this.state.closed; if (closed) { return null; } var _props = this.props, color = _props.color, outline = _props.outline, rounded = _props.rounded, borderColor = _props.borderColor, bgColor = _props.bgColor, fontColor = _props.fontColor, closable = _props.closable, children = _props.children, className = _props.className, prefix = _props.prefix, style = _props.style; var containerCls = (0, _classnames2['default'])(prefix + '-tag', prefix + '-tag-style' + (colorTypes.indexOf(color) >= 0 ? '-' + color : '') + (outline ? '-outline' : ''), (_cx = {}, (0, _defineProperty3['default'])(_cx, className, !!className), (0, _defineProperty3['default'])(_cx, prefix + '-tag-rounded', rounded), (0, _defineProperty3['default'])(_cx, prefix + '-tag-closable', closable), _cx)); var styles = style || {}; if (colorTypes.indexOf(color) < 0) { styles.borderColor = color; outline ? styles.color = color : styles.background = color; } borderColor && (styles.borderColor = borderColor); bgColor && (styles.background = bgColor); fontColor && (styles.color = fontColor); return _react2['default'].createElement( 'div', { className: containerCls, style: styles }, _react2['default'].createElement( 'div', { className: prefix + '-tag-content' }, children ), closable && _react2['default'].createElement(_icon2['default'], { type: 'close', className: prefix + '-tag-close-btn', onClick: this.onClose }) ); } }]); return Tag; }(_react.PureComponent || _react.Component); Tag.propTypes = { color: _propTypes2['default'].string, outline: _propTypes2['default'].bool, rounded: _propTypes2['default'].bool, borderColor: _propTypes2['default'].string, bgColor: _propTypes2['default'].string, fontColor: _propTypes2['default'].string, closable: _propTypes2['default'].bool, onClose: _propTypes2['default'].func, children: _propTypes2['default'].node, style: _propTypes2['default'].object, className: _propTypes2['default'].string, prefix: _propTypes2['default'].string }; Tag.defaultProps = { color: 'red', outline: false, rounded: true, closable: false, className: '', prefix: 'zent' }; exports['default'] = Tag;