tntd
Version:
tntd是基于 TNT Design 设计体系的 React UI 组件库,主要用于研发企业级中后台产品。
78 lines (77 loc) • 5.42 kB
JavaScript
;
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _react = _interopRequireDefault(require("react"));
var _styledComponents = _interopRequireWildcard(require("styled-components"));
var _images = require("./images");
var _templateObject;
/**
* @file Logo
* @author zhangyou
*/
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
var Logo = _styledComponents["default"].div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n height: ", ";\n line-height: ", ";\n padding-left: 15px;\n width: 220px;\n background: #191d29;\n font-size: ", ";\n color: rgba(226, 237, 255, 0.9);\n letter-spacing: 0;\n position: relative;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n &:after {\n position: absolute;\n bottom: -12px;\n left: 0;\n background-image: linear-gradient(0deg, #191d29 23%, #151924 93%);\n content: '';\n width: 100%;\n height: 12px;\n }\n\n .ant-layout-sider-collapsed & {\n padding-left: 26px;\n }\n\n .compatible & {\n background: #213f83;\n color: #a1d7ff;\n box-shadow: 0 1px 8px 0 rgba(0, 0, 0, 0.3);\n &:after {\n display: none;\n }\n }\n cursor: pointer;\n font-weight: 400;\n text-rendering: optimizeLegibility;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n\n .tnt-themeS1 & {\n background: #ffffff !important;\n box-shadow: 2px 3px 8px -1px rgba(0, 0, 0, 0.15);\n color: #17233d;\n &:after {\n display: none;\n }\n }\n\n .tnt-themeS1.compatible & {\n background: #323b4a;\n }\n\n // \u84DD\u8272\u4E3B\u9898\n .tnt-themeS3 & {\n background: ", "; //#1D4295 !important;\n box-shadow: 2px 3px 8px -1px rgba(0, 0, 0, 0.15);\n color: #ffffff;\n &:after {\n display: none;\n }\n }\n\n img {\n position: relative;\n top: -1px;\n width: 23px;\n height: 23px;\n margin-right: 12px;\n .large-size & {\n width: 28px;\n height: 28px;\n }\n }\n"])), function (props) {
return "".concat(props.theme.headerHeight, "px");
}, function (props) {
return "".concat(props.theme.headerHeight, "px");
}, function (props) {
return "".concat(props.fontSize, "px");
}, function (props) {
return "".concat(props.theme.blueBgColor, " !important");
});
// JS判断字符串长度(英文占1个字符,中文汉字占2个字符)
var getStrLen = function getStrLen() {
var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
var len = 0;
for (var i = 0; i < str.length; i++) {
var c = str.charCodeAt(i);
var chartLength = 2;
//单字节加1
if (c >= 0x0001 && c <= 0x007e || 0xff60 <= c && c <= 0xff9f) {
chartLength = 1;
}
len += chartLength;
}
return len;
};
var _default = exports["default"] = (0, _styledComponents.withTheme)(function (props) {
var _a;
var logo = props.logo,
name = props.name,
enName = props.enName,
language = props.language,
collapsed = props.collapsed,
size = props.theme.size;
var productNameLen = getStrLen(language === 'cn' ? name : enName);
var fontSize = {
12: 19,
13: 18,
14: 17,
15: 16,
16: 15
}[Math.max(12, Math.min(productNameLen, 16))] + (size === 'large' ? 1 : 0);
var LogoImg = function LogoImg(props) {
return _react["default"].createElement("img", Object.assign({
onError: function onError(e) {
e.target.onerror = null;
e.target.src = _images.logoImgMap["default"];
}
}, props));
};
return _react["default"].createElement(Logo, Object.assign({}, props, {
fontSize: fontSize
}), typeof logo === 'string' ? _react["default"].createElement(LogoImg, {
src: _images.logoImgMap[logo] || _images.logoImgMap["default"]
}) : logo && logo.type === 'img' ? _react["default"].createElement(LogoImg, Object.assign({}, logo.props, {
src: ((_a = logo.props) === null || _a === void 0 ? void 0 : _a.src) || _images.logoImgMap["default"]
})) : logo, collapsed ? '' : {
cn: name,
en: enName
}[language]);
});