zent
Version:
一套前端设计语言和基于React的实现
159 lines (121 loc) • 4.95 kB
JavaScript
;
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;