@vtex/styleguide
Version:
> VTEX Styleguide React components ([Docs](https://vtex.github.io/styleguide))
161 lines (127 loc) • 4.28 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _react = require("react");
var _react2 = _interopRequireDefault(_react);
var _propTypes = require("prop-types");
var _propTypes2 = _interopRequireDefault(_propTypes);
var _config = require("vtex-tachyons/config.json");
var _config2 = _interopRequireDefault(_config);
var _Close = require("../icon/Close");
var _Close2 = _interopRequireDefault(_Close);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
var Tag =
/*#__PURE__*/
function (_PureComponent) {
_inheritsLoose(Tag, _PureComponent);
function Tag() {
var _this;
_this = _PureComponent.call(this) || this;
_this.handleMouseEnter = function () {
_this.setState({
hover: true
});
};
_this.handleMouseLeave = function () {
_this.setState({
hover: false
});
};
_this.state = {
hover: false
};
return _this;
}
var _proto = Tag.prototype;
_proto.render = function render() {
var _this$props = this.props,
bgColor = _this$props.bgColor,
children = _this$props.children,
color = _this$props.color,
disabled = _this$props.disabled,
onClick = _this$props.onClick,
size = _this$props.size,
type = _this$props.type,
variation = _this$props.variation;
var sizeClasses = '';
switch (size) {
case 'small':
sizeClasses = 't-mini pv2 ph4';
break;
case 'regular':
sizeClasses = 't-small pv2 ph4';
break;
case 'large':
sizeClasses = 't-body pv3 ph5';
break;
default:
sizeClasses = 't-small pv2 ph4';
break;
}
var baseClasses = "vtex-tag br-pill dib fw5 " + sizeClasses;
var theme = '';
var variationIsLow = variation === 'low';
switch (type) {
case 'success':
theme = variationIsLow ? 'bg-transparent ba c-success ' : 'bg-success c-on-success ';
break;
case 'error':
theme = variationIsLow ? 'bg-transparent ba c-danger ' : 'bg-danger c-on-danger ';
break;
case 'warning':
theme = variationIsLow ? 'bg-transparent ba c-warning ' : 'bg-warning c-on-warning ';
break;
default:
theme = variationIsLow ? 'bg-transparent ba c-muted-2 ' : 'bg-muted-2 c-on-muted-2 ';
break;
}
var btnClasses = disabled ? 'bg-muted-4 c-muted-2 ' : 'pointer ';
var hoverClass = '';
if (!disabled) {
hoverClass = this.state.hover && 'o-80';
}
return onClick ? _react2.default.createElement("button", {
className: baseClasses + " bn " + btnClasses + " " + theme + " " + hoverClass,
style: {
backgroundColor: bgColor,
color: disabled ? _config2.default.semanticColors.text.disabled : color
},
disabled: disabled,
onClick: onClick,
onMouseEnter: this.handleMouseEnter,
onMouseLeave: this.handleMouseLeave
}, _react2.default.createElement("div", {
className: "flex items-stretch"
}, _react2.default.createElement("span", null, children), _react2.default.createElement("div", {
className: "ml2 flex items-center"
}, _react2.default.createElement(_Close2.default, {
color: color,
size: 12
})))) : _react2.default.createElement("div", {
className: baseClasses + " " + theme,
style: {
backgroundColor: bgColor,
color: color
}
}, children);
};
return Tag;
}(_react.PureComponent);
Tag.defaultProps = {
disabled: false,
size: 'regular'
};
Tag.propTypes = {
bgColor: _propTypes2.default.string,
children: _propTypes2.default.node.isRequired,
color: _propTypes2.default.string,
disabled: _propTypes2.default.bool,
onClick: _propTypes2.default.func,
/** Input size */
size: _propTypes2.default.oneOf(['small', 'regular', 'large']),
type: _propTypes2.default.oneOf(['success', 'error', 'warning']),
variation: _propTypes2.default.oneOf(['default', 'low'])
};
exports.default = Tag;