UNPKG

tntd

Version:

tntd是基于 TNT Design 设计体系的 React UI 组件库,主要用于研发企业级中后台产品。

210 lines (208 loc) 9.05 kB
"use strict"; 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" }))))); }); };