UNPKG

tntd

Version:

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

279 lines (277 loc) 11.6 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 _toArray = _interopRequireDefault(require("rc-util/es/Children/toArray")); var _icon = _interopRequireDefault(require("../icon")); var _popconfirm = _interopRequireDefault(require("../popconfirm")); var _divider = _interopRequireDefault(require("../divider")); var _dropdown = _interopRequireDefault(require("../dropdown")); var _tooltip = _interopRequireDefault(require("../tooltip")); var _ellipsis = _interopRequireDefault(require("../ellipsis")); var _menu = _interopRequireDefault(require("../menu")); var _utils = require("../utils"); 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 _flattenChildren = function flattenChildren(children) { if (!children) { return []; } return (0, _toArray["default"])(children).reduce(function (flatChildren, child) { if (child && child.type === _react["default"].Fragment) { return flatChildren.concat(_flattenChildren(child.props.children)); } flatChildren.push(child); return flatChildren; }, []); }; var HandleIcon = function HandleIcon(props) { var _a = props || {}, _a$children = _a.children, children = _a$children === void 0 ? [] : _a$children, _a$num = _a.num, num = _a$num === void 0 ? 5 : _a$num, _a$divider = _a.divider, divider = _a$divider === void 0 ? false : _a$divider, _a$stopPropagation = _a.stopPropagation, stopPropagation = _a$stopPropagation === void 0 ? true : _a$stopPropagation, _a$size = _a.size, size = _a$size === void 0 ? 'large' : _a$size, rest = __rest(_a, ["children", "num", "divider", "stopPropagation", "size"]); var decoratePopconfirm = (0, _react.useCallback)(function (element, parentElement) { if (_react["default"].isValidElement(element)) { var type = element.type, _props = element.props; if (type === _popconfirm["default"]) { var placement = { placement: 'left' }; var _ref = (parentElement === null || parentElement === void 0 ? void 0 : parentElement.props) || {}, disabled = _ref.disabled; var disableProps = {}; if (disabled) { disableProps = { disabled: disabled, onConfirm: function onConfirm() {} }; } return _react["default"].cloneElement(element, Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, _props || {}), { overlayStyle: Object.assign({ minWidth: "200px", maxWidth: "600px", zIndex: 1055 }, _props.overlayStyle || {}), onClick: function onClick(e) { return e.stopPropagation(); } }), placement), { trigger: 'hover' }), disableProps || {})); } if (_props && _props.children) { var modifiedChildren = _react["default"].Children.map(_props.children, function (child) { return decoratePopconfirm(child, element); }); return _react["default"].cloneElement(element, _props, modifiedChildren); } } return element; }, []); var _useMemo = (0, _react.useMemo)(function () { 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); } if (Array.isArray(newChildren)) { newChildren = _flattenChildren(newChildren); } var preChildPart = newChildren, lastChildPart = null; // 只有1个时不适配 if (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) { preChildPart = preChildPart === null || preChildPart === void 0 ? void 0 : preChildPart.map(function (dom, i) { return _react["default"].createElement(_react["default"].Fragment, null, dom, !(i === (preChildPart === null || preChildPart === void 0 ? void 0 : preChildPart.length) - 1 && !(lastChildPart === null || lastChildPart === void 0 ? void 0 : lastChildPart.length) // 没有更多 且 是最后一个时 不显示 Divider ) && _react["default"].createElement(_divider["default"], { type: "vertical" })); }); } // 对更多的popConfirm if (lastChildPart === null || lastChildPart === void 0 ? void 0 : lastChildPart.length) { lastChildPart === null || lastChildPart === void 0 ? void 0 : lastChildPart.forEach(function (v, i) { v = decoratePopconfirm(v); lastChildPart[i] = _react["default"].cloneElement(v, Object.assign(Object.assign({}, (v === null || v === void 0 ? void 0 : v.props) || {}), { inMore: true })); }); } return { preChildPart: preChildPart, lastChildPart: lastChildPart }; }, [children, num, divider, decoratePopconfirm]), preChildPart = _useMemo.preChildPart, lastChildPart = _useMemo.lastChildPart; var menu = (0, _react.useMemo)(function () { return _react["default"].createElement(_menu["default"], { className: "menu-handle-icon-more tnt-handle-icon-".concat(size) }, lastChildPart === null || lastChildPart === void 0 ? void 0 : lastChildPart.map(function (child, i) { return _react["default"].createElement(_menu["default"].Item, { key: i }, child); })); }, [lastChildPart, size]); return _react["default"].createElement(_LocaleReceiver["default"], { componentName: "HandleIcon" }, function () { return _react["default"].createElement("div", Object.assign({ onClick: function onClick(e) { if (stopPropagation) { e.stopPropagation(); } } }, rest, { className: "tnt-handle-icon-wrap tnt-handle-icon-".concat(size, " ").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, arrow: true, onClick: function onClick(e) { stopPropagation && e.stopPropagation(); } }, _react["default"].createElement(_icon["default"], { type: "more", className: 'tnt-handle-icon-more' }))); }); }; var HandleItem = function HandleItem(props) { var children = props.children, title = props.title, desc = props.desc, _props$tooltip = props.tooltip, tooltip = _props$tooltip === void 0 ? true : _props$tooltip, inMore = props.inMore, disabled = props.disabled, _props$upperCaseIgnor = props.upperCaseIgnore, upperCaseIgnore = _props$upperCaseIgnor === void 0 ? [] : _props$upperCaseIgnor, localeCode = props.localeCode, rest = __rest(props, ["children", "title", "desc", "tooltip", "inMore", "disabled", "upperCaseIgnore", "localeCode"]); var upTitle = (0, _utils.doUpperTitle)(title, upperCaseIgnore, localeCode); var _replaceIconWithText = function replaceIconWithText(element) { if (_react["default"].isValidElement(element)) { var type = element.type, eleProps = element.props; var disabledProps = {}; if (disabled) { disabledProps = { disabled: disabled, onClick: function onClick(e) { e.stopPropagation(); }, className: ((eleProps === null || eleProps === void 0 ? void 0 : eleProps.className) || "") + (disabled ? ' disabled' : "") }; } // 如果是更多需要替换文字 if (type === _icon["default"] || type === 'img') { if (inMore) { return _react["default"].createElement("a", Object.assign({}, eleProps, disabledProps), _react["default"].createElement(_ellipsis["default"], { title: upTitle })); } } if (disabled && (type === _icon["default"] || ['img', 'a'].includes(type))) { return _react["default"].cloneElement(element, Object.assign(Object.assign({}, (element === null || element === void 0 ? void 0 : element.props) || {}), disabledProps || {})); } if (eleProps && eleProps.children) { var modifiedChildren = _react["default"].Children.map(eleProps.children, function (child) { return _replaceIconWithText(child); }); return _react["default"].cloneElement(element, eleProps, modifiedChildren); } } return element; }; var newChildren = children; if (Array.isArray(newChildren)) { newChildren = children === null || children === void 0 ? void 0 : children.map(function (child) { return _replaceIconWithText(child); }); } else { newChildren = _replaceIconWithText(children); } if ((inMore && desc && disabled || !inMore) && tooltip) { return _react["default"].createElement(_tooltip["default"], Object.assign({ title: disabled ? desc || upTitle : upTitle }, rest || {}), newChildren); } return newChildren; }; HandleIcon.Item = function (props) { return _react["default"].createElement(_LocaleReceiver["default"], { componentName: "HandleIcon" }, function (locale, localeCode) { return _react["default"].createElement(HandleItem, Object.assign({}, props, { localeCode: localeCode })); }); }; var _default = exports["default"] = HandleIcon;