UNPKG

tntd

Version:

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

336 lines (334 loc) 17.9 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 _get2 = _interopRequireDefault(require("lodash/get")); var _react = _interopRequireWildcard(require("react")); var _styledComponents = _interopRequireWildcard(require("styled-components")); var _input = _interopRequireDefault(require("../input")); var _select = _interopRequireDefault(require("../select")); var _treeSelect = _interopRequireDefault(require("../tree-select")); var _storage = require("./storage"); var _utils = require("../utils"); var _templateObject, _templateObject2, _templateObject3; 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 _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); } var InputGroup = _input["default"].Group; var Option = _select["default"].Option; // 机构+应用UI var OrgAppsInputGroup = (0, _styledComponents["default"])(InputGroup)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n display: inline-block !important;\n width: auto !important;\n min-width: 260px;\n height: 28px;\n line-height: 28;\n position: relative;\n top: 50%;\n transform: translateY(-50%);\n\n &.ant-input-group.ant-input-group-compact::before,\n &.ant-input-group.ant-input-group-compact::after {\n content: '';\n display: none;\n }\n\n .ant-select-selection,\n .ant-select-selection__rendered {\n line-height: 28px;\n height: 28px;\n }\n .ant-select-selection--multiple {\n padding-bottom: 0;\n overflow: auto;\n min-height: 28px;\n }\n\n .ant-select-selection {\n .hasHeaderTabs & {\n border-radius: 14px;\n font-size: 12px;\n // \u5220\u9664\u9ED8\u8BA4\u9ED1\u8272\n // background: #191D29;\n // border: 1px solid rgba(186,189,197,0.60);\n // color: rgba(255,255,255,.8);\n // \u7EDF\u4E00\u6539\u4E3A\u6D45\u8272\n background: #fff !important;\n border-color: #c9d2dd !important;\n color: #8b919e !important;\n\n .ant-select-selection__placeholder,\n .ant-select-search__field__placeholder {\n color: #8b919e;\n }\n }\n // \u5220\u9664\u8272\u7CFB\u5DEE\u5F02\n // .tnt-themeS1.hasHeaderTabs & {\n // background: #fff;\n // border-color: #c9d2dd;\n // color: #8b919e;\n // }\n\n // \u5220\u9664\u8272\u7CFB\u5DEE\u5F02\n // .tnt-themeS3.hasHeaderTabs &{\n // background: ", "; //#1D4295 !important;\n // color: rgba(255,255,255,0.8);\n // border-color: rgba(255,255,255,0.5);\n // }\n }\n\n .ant-select-arrow {\n .hasHeaderTabs & {\n color: #b2becd;\n }\n .tnt-themeS1 & {\n /* color: rgba(255,255,255,.85); */\n }\n }\n\n .tnt-themeS1 & {\n border-radius: 2px;\n }\n\n .isInIframe & {\n margin-left: 20px;\n }\n"])), function (props) { return "".concat(props.theme.blueBgColor, " !important"); }); // 只展示机构 var AppTreeSelect = (0, _styledComponents["default"])(_treeSelect["default"])(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n min-width: 160px;\n height: 28px;\n line-height: 28;\n position: relative;\n top: 50%;\n transform: translateY(-50%);\n .ant-select-selection,\n .ant-select-selection__rendered {\n line-height: 28px;\n height: 28px;\n }\n .ant-select-selection--multiple {\n padding-bottom: 0;\n overflow: auto;\n min-height: 28px;\n }\n .ant-select-selection {\n .hasHeaderTabs & {\n border-radius: 14px;\n font-size: 12px;\n // \u5220\u9664\u9ED8\u8BA4\u9ED1\u8272\n // background: #191D29;\n // border: 1px solid rgba(186,189,197,0.60);\n // color: rgba(255,255,255,.8);\n // \u7EDF\u4E00\u4E3A\u6D45\u8272\n background: #fff !important;\n border-color: #c9d2dd !important;\n color: #8b919e !important;\n }\n // \u4E0D\u9700\u8981\u533A\u5206\u8272\u7CFB\n // .tnt-themeS1.hasHeaderTabs & {\n // /* background: #141825; */\n // /* color: rgba(255,255,255,.85); */\n // background: #fff;\n // border-color: #c9d2dd;\n // color: #8b919e;\n // }\n\n // .tnt-themeS3.hasHeaderTabs &{\n // background: ", "; //#1D4295\n // color: rgba(255,255,255,0.8);\n // border-color: rgba(255,255,255,0.5);\n // }\n }\n .ant-select-arrow {\n .hasHeaderTabs & {\n color: #b2becd;\n }\n .tnt-themeS1 & {\n /* color: rgba(255,255,255,.85); */\n }\n }\n\n .tnt-themeS1 & {\n border-radius: 2px;\n }\n\n .isInIframe & {\n margin-left: 20px;\n }\n"])), function (props) { return "".concat(props.theme.blueBgColor, " !important"); }); var GlobalStyle = (0, _styledComponents.createGlobalStyle)(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n .org-tree-select {\n &.ant-select-tree-dropdown .ant-select-dropdown-search{\n padding: 10px;\n .ant-select-search__field{\n padding: 0 7px;\n height:28px;\n line-height: 28px;\n }\n }\n .ant-select-tree {\n margin-top:0;\n padding: 0 10px 0 4px;\n li{\n margin:4px 0 ;\n .ant-select-tree-switcher{\n height: 30px;\n line-height: 30px;\n float: left;\n }\n .ant-select-tree-node-content-wrapper{\n height: 30px;\n line-height:30px;\n padding: 0;\n border-radius: 0;\n &.ant-select-tree-node-selected{\n background: #E7F0FE;\n }\n }\n .ant-select-tree-node-content-wrapper:hover{\n background: #E7F0FE;\n }\n .ant-select-tree-title{\n font-family: PingFangSC-Regular;\n color: #17233D;\n padding-left: 4px;\n padding-right: 4px;\n display: block;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n }\n }\n }\n .org-tree-check-select {\n .ant-select-tree {\n margin-top:0;\n padding: 0 10px 0 4px;\n li{\n margin:4px 0 ;\n .ant-select-tree-switcher{\n height: 30px;\n line-height: 30px;\n vertical-align: top;\n }\n\n .ant-select-tree-checkbox{\n vertical-align: super;\n }\n \n .ant-select-tree-node-content-wrapper{\n height: 30px;\n line-height:30px;\n padding: 0;\n border-radius: 0;\n &.ant-select-tree-node-selected{\n background: #E7F0FE;\n }\n }\n .ant-select-tree-node-content-wrapper:hover{\n background: #E7F0FE;\n }\n .ant-select-tree-title{\n font-family: PingFangSC-Regular;\n color: #17233D;\n padding-left: 4px;\n padding-right: 4px;\n display: block;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n }\n }\n }\n"]))); var _default = exports["default"] = (0, _styledComponents.withTheme)(function (props) { var orgAppShow = props.orgAppShow, selectedOrgKey = props.selectedOrgKey, orgList = props.orgList, orgTreeConfig = props.orgTreeConfig, onOrgChange = props.onOrgChange, selectedAppKey = props.selectedAppKey, _props$orgAppList = props.orgAppList, orgAppList = _props$orgAppList === void 0 ? [] : _props$orgAppList, onAppChange = props.onAppChange, headerTabs = props.headerTabs; var orgListFormatData = (0, _utils.traverseTree)([orgList], function (item) { item.title = item.name; item.value = item.uuid; item.key = item.uuid; }); // 初始化数据函数 var getInitialSelected = function getInitialSelected(selectedKey, currentStore, dataList, type) { var findByKey = function findByKey(selectedKey) { var find; (0, _utils.traverseTree)(dataList, function (item) { if (item.key === selectedKey) { find = item; return false; } }); return find; }; var current = findByKey(selectedKey || (0, _get2["default"])(currentStore, 'key')); if (type) { return current; } return current || dataList[0]; }; // 初始化数据函数机构树 var getInitialSelectedTree = function getInitialSelectedTree(selecteds, dataList) { if (selecteds.length) { return selecteds; } else { var temp = dataList.map(function (res) { return { label: res.title, value: res.uuid }; }); (0, _storage.setCurrentOrgTreeStore)(temp); return temp; } }; // 初始化值 // 机构 var _useState = (0, _react.useState)(getInitialSelected(selectedOrgKey, (0, _storage.getCurrentOrgStore)(), orgListFormatData)), _useState2 = _slicedToArray(_useState, 2), selectedOrg = _useState2[0], setSelectedOrg = _useState2[1]; // 机构树 var _useState3 = (0, _react.useState)(getInitialSelectedTree((0, _storage.getCurrentOrgTreeStore)(), orgListFormatData)), _useState4 = _slicedToArray(_useState3, 2), selectedOrgTree = _useState4[0], setSelectedOrgTree = _useState4[1]; // 应用 var _useState5 = (0, _react.useState)(getInitialSelected(selectedAppKey, (0, _storage.getCurrentAppStore)(), orgAppList, 'default')), _useState6 = _slicedToArray(_useState5, 2), selectedApp = _useState6[0], setSelectedApp = _useState6[1]; // org变化事件 var changeOrg = function changeOrg() { var org = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; setSelectedOrg(org); (0, _storage.setCurrentOrgStore)({ name: org === null || org === void 0 ? void 0 : org.name, key: org === null || org === void 0 ? void 0 : org.key, code: org === null || org === void 0 ? void 0 : org.code }); onOrgChange && onOrgChange(org); }; var changeOrgTree = function changeOrgTree() { var val = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; if (!val.length) { val = orgListFormatData.map(function (res) { return { label: res.title, value: res.uuid }; }); } setSelectedOrgTree(val); (0, _storage.setCurrentOrgTreeStore)(val); onOrgChange && onOrgChange(val); }; // app变化事件 var changeApp = function changeApp(app) { setSelectedApp(app); (0, _storage.setCurrentAppStore)(app); onAppChange && onAppChange(app); }; (0, _react.useEffect)(function () { // 监听org机构 var newOrg = getInitialSelected(selectedOrgKey, (0, _storage.getCurrentOrgStore)(), orgListFormatData); if ((newOrg === null || newOrg === void 0 ? void 0 : newOrg.key) !== (selectedOrg === null || selectedOrg === void 0 ? void 0 : selectedOrg.key)) { changeOrg(newOrg); } // 监听应用 var newApp = getInitialSelected(selectedAppKey, (0, _storage.getCurrentAppStore)(), orgAppList); if ((newApp === null || newApp === void 0 ? void 0 : newApp.key) !== (selectedApp === null || selectedApp === void 0 ? void 0 : selectedApp.key)) { changeApp(newApp); } }, [orgList, selectedOrgKey, selectedAppKey, orgAppList]); // 如果是多签页的模式 则居右对齐 var treeSelectPosition = {}, selectPosition = {}; if (headerTabs) { treeSelectPosition = { dropdownPopupAlign: { points: ['tr', 'br'] } }; selectPosition = { dropdownAlign: { points: ['tr', 'br'] } }; } var orgTreeConfigProp = {}; if (orgTreeConfig) { orgTreeConfigProp = Object.assign({ dropdownClassName: 'org-tree-check-select', treeCheckable: true, treeCheckStrictly: true, onChange: function onChange(val) { changeOrgTree(val); }, value: selectedOrgTree }, orgTreeConfig); } else { orgTreeConfigProp = { dropdownClassName: 'org-tree-select', onChange: function onChange(orgKey) { var findItem; (0, _utils.traverseTree)(orgListFormatData, function (node) { if (node.key === orgKey) { findItem = node; return false; } }); changeOrg(findItem); }, value: (0, _get2["default"])(selectedOrg, 'key') }; } if (!orgAppShow) { return _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(AppTreeSelect, Object.assign({ placeholder: "\u9009\u62E9\u673A\u6784", searchPlaceholder: "\u673A\u6784\u540D\u79F0", treeNodeFilterProp: "title", showSearch: true, treeData: orgListFormatData, treeDefaultExpandAll: true }, treeSelectPosition, { style: { width: 160, height: 28, lineHeight: 28 }, dropdownStyle: { maxHeight: 300, overflow: 'auto', width: 320 } }, orgTreeConfigProp)), _react["default"].createElement(GlobalStyle, null)); } return _react["default"].createElement(OrgAppsInputGroup, { compact: true }, _react["default"].createElement(_treeSelect["default"], Object.assign({ placeholder: "\u9009\u62E9\u673A\u6784", searchPlaceholder: "\u673A\u6784\u540D\u79F0", treeNodeFilterProp: "title", showSearch: true, treeData: orgListFormatData, treeDefaultExpandAll: true, style: { width: 130, height: 28, lineHeight: 28 }, dropdownStyle: { maxHeight: 300, overflow: 'auto', width: 320 } }, orgTreeConfigProp)), _react["default"].createElement(GlobalStyle, null), _react["default"].createElement(_select["default"], { placeholder: "\u8BF7\u9009\u62E9", showSearch: true, optionFilterProp: "children", onChange: function onChange(appKey) { changeApp(orgAppList.find(function (_ref) { var key = _ref.key; return key === appKey; })); }, value: (0, _get2["default"])(selectedApp, 'key'), style: { width: 130, height: 28, lineHeight: 28 } }, orgAppList.map(function (_ref2) { var key = _ref2.key, name = _ref2.name; return _react["default"].createElement(Option, { key: key, value: key, title: name }, name); }))); });