tntd
Version:
tntd是基于 TNT Design 设计体系的 React UI 组件库,主要用于研发企业级中后台产品。
210 lines (208 loc) • 9.05 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 = _interopRequireWildcard(require("react"));
var _LocaleReceiver = _interopRequireDefault(require("antd/lib/locale-provider/LocaleReceiver"));
var _icon = _interopRequireDefault(require("../icon"));
var _lang = require("../utils/lang");
var _divider = _interopRequireDefault(require("../divider"));
var _dropdown = _interopRequireDefault(require("../dropdown"));
var _menu = _interopRequireDefault(require("../menu"));
require("./index.less");
function _interopRequireDefault(e) {
return e && e.__esModule ? e : {
"default": e
};
}
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;
}
var __rest = void 0 && (void 0).__rest || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
}
return t;
};
var clsPrefix = 'tntd-more-menus';
var _default = exports["default"] = function _default(props) {
return _react["default"].createElement(_LocaleReceiver["default"], {
componentName: "Handle"
}, function (locale, localeCode) {
var _a = props || {},
_a$children = _a.children,
children = _a$children === void 0 ? [] : _a$children,
type = _a.type,
_a$num = _a.num,
num = _a$num === void 0 ? 3 : _a$num,
lang = _a.lang,
_a$divider = _a.divider,
divider = _a$divider === void 0 ? false : _a$divider,
_a$lessOneMoreFit = _a.lessOneMoreFit,
lessOneMoreFit = _a$lessOneMoreFit === void 0 ? true : _a$lessOneMoreFit,
popConfirmHandle = _a.popConfirmHandle,
_a$isIconBtn = _a.isIconBtn,
isIconBtn = _a$isIconBtn === void 0 ? false : _a$isIconBtn,
_a$stopPropagation = _a.stopPropagation,
stopPropagation = _a$stopPropagation === void 0 ? true : _a$stopPropagation,
_a$upperCaseIgnore = _a.upperCaseIgnore,
upperCaseIgnore = _a$upperCaseIgnore === void 0 ? [] : _a$upperCaseIgnore,
_a$unUpperConverted = _a.unUpperConverted,
unUpperConverted = _a$unUpperConverted === void 0 ? false : _a$unUpperConverted,
rest = __rest(_a, ["children", "type", "num", "lang", "divider", "lessOneMoreFit", "popConfirmHandle", "isIconBtn", "stopPropagation", "upperCaseIgnore", "unUpperConverted"]);
// 非中文
var isCn = lang === 'cn';
if (!lang) {
isCn = localeCode === 'zh-cn';
}
var newChildren = [];
if (Array.isArray(children)) {
newChildren = (children === null || children === void 0 ? void 0 : children.filter(function (item) {
return !!item;
})) || [];
} else if (children) {
newChildren.push(children);
}
// 非中文 且非 icon图标
if (!unUpperConverted && !isCn && !isIconBtn) {
newChildren === null || newChildren === void 0 ? void 0 : newChildren.forEach(function (v, i) {
newChildren[i] = _react["default"].cloneElement(v, Object.assign(Object.assign({}, (v === null || v === void 0 ? void 0 : v.props) || {}), {
children: (0, _lang.doUpperTitle)(v.props.children, upperCaseIgnore)
}));
});
}
// 子元素大于1个,且不是 icon元素
var specialSceneDefaultShow = (newChildren === null || newChildren === void 0 ? void 0 : newChildren.length) > 1 && !isIconBtn;
if (specialSceneDefaultShow && (!isCn || popConfirmHandle)) {
newChildren === null || newChildren === void 0 ? void 0 : newChildren.forEach(function (v, i) {
var type = v.type,
props = v.props;
if ((type === null || type === void 0 ? void 0 : type.name) === 'Popconfirm' || props.hasOwnProperty('onConfirm') && typeof (props === null || props === void 0 ? void 0 : props.onConfirm) === 'function') {
var placement = {};
if (!isCn || num && !isNaN(num) && i + 1 > num && !(lessOneMoreFit && newChildren.length - num === 1)) {
placement = {
placement: 'left'
};
}
newChildren[i] = _react["default"].cloneElement(v, Object.assign(Object.assign(Object.assign(Object.assign({
overlayStyle: {
minWidth: "200px",
maxWidth: "600px"
}
}, (v === null || v === void 0 ? void 0 : v.props) || {}), {
onClick: function onClick(e) {
return e.stopPropagation();
}
}), placement), {
trigger: 'hover',
getPopupContainer: function getPopupContainer(trigger) {
return trigger.parentNode;
}
}));
}
});
}
var preChildPart = newChildren,
lastChildPart = null;
// 只有1个时不适配
if (lessOneMoreFit && newChildren.length - num === 1) {
preChildPart = newChildren;
} else if (newChildren && num && !isNaN(num) && newChildren.length > num) {
preChildPart = newChildren.slice(0, num);
lastChildPart = newChildren.slice(num);
}
if (divider && preChildPart) {
var preChildLen = preChildPart.length;
preChildPart = preChildPart.map(function (dom, i) {
return _react["default"].createElement(_react.Fragment, {
key: i
}, dom, !(i === preChildLen - 1 && !(lastChildPart === null || lastChildPart === void 0 ? void 0 : lastChildPart.length) // 没有更多 且 是最后一个时 不显示 Divider
) && _react["default"].createElement(_divider["default"], {
type: "vertical"
}));
});
}
var menu = function menu(childArr) {
return _react["default"].createElement(_menu["default"], {
className: "org-pop-opera-btn"
}, childArr === null || childArr === void 0 ? void 0 : childArr.map(function (child, i) {
return _react["default"].createElement(_menu["default"].Item, {
key: i
}, child);
}));
};
if (!isCn && specialSceneDefaultShow) {
return _react["default"].createElement(_dropdown["default"], {
overlay: menu(newChildren || []),
arrow: true,
onClick: function onClick(e) {
if (stopPropagation) {
e.stopPropagation();
}
}
}, type === 'icon' ? _react["default"].createElement(_icon["default"], {
type: "more"
}) : _react["default"].createElement("a", {
className: "ant-dropdown-more"
}, locale === null || locale === void 0 ? void 0 : locale.more, _react["default"].createElement("i", {
className: "".concat(clsPrefix, "-dropdown-icon")
}, _react["default"].createElement(_icon["default"], {
type: "down"
}))));
}
return _react["default"].createElement("div", Object.assign({
onClick: function onClick(e) {
if (stopPropagation) {
e.stopPropagation();
}
}
}, rest, {
className: "tnt-handle-wrap ".concat((rest === null || rest === void 0 ? void 0 : rest.className) || '')
}), preChildPart, !!(lastChildPart === null || lastChildPart === void 0 ? void 0 : lastChildPart.length) && _react["default"].createElement(_dropdown["default"], {
overlay: menu(lastChildPart || []),
arrow: true
}, type === 'icon' ? _react["default"].createElement(_icon["default"], {
type: "more",
className: 'tnt-handle-more'
}) : _react["default"].createElement("a", {
className: "ant-dropdown-more"
}, locale === null || locale === void 0 ? void 0 : locale.more, _react["default"].createElement("i", {
className: "".concat(clsPrefix, "-dropdown-icon")
}, _react["default"].createElement(_icon["default"], {
type: "down"
})))));
});
};