@choerodon/master
Version:
A package of Master for Choerodon platform.
264 lines (223 loc) • 11.7 kB
JavaScript
import "choerodon-ui/lib/popover/style";
import _Popover from "choerodon-ui/lib/popover";
import "choerodon-ui/lib/icon/style";
import _Icon from "choerodon-ui/lib/icon";
import "choerodon-ui/pro/lib/modal/style";
import _Modal from "choerodon-ui/pro/lib/modal";
import "choerodon-ui/lib/menu/style";
import _Menu from "choerodon-ui/lib/menu";
var _dec, _class;
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
function _possibleConstructorReturn(self, call) { if (call && (typeof call === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
/* eslint-disable jsx-a11y/click-events-have-key-events */
/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */
import React, { Component, Fragment } from 'react';
import queryString from 'query-string';
import { inject, observer } from 'mobx-react';
import { withRouter, Link } from 'react-router-dom';
import { historyPushMenu, logout } from "../../../../../utils";
import Avatar from "./Avatar";
import findFirstLeafMenu from "../../util/findFirstLeafMenu";
import InvitationModal from "./InvitationModal";
import { MODAL_WIDTH } from "../../../../../constants/MODAL";
var MenuItem = _Menu.Item;
var PREFIX_CLS = 'c7n';
var prefixCls = "".concat(PREFIX_CLS, "-boot-header-user");
var blackList = new Set(['choerodon.code.usercenter.receive-setting']);
var UserPreferences = (_dec = inject('AppState', 'MenuStore', 'HeaderStore'), withRouter(_class = _dec(_class = observer(_class = /*#__PURE__*/function (_Component) {
_inherits(UserPreferences, _Component);
var _super = _createSuper(UserPreferences);
function UserPreferences() {
var _this;
_classCallCheck(this, UserPreferences);
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = _super.call.apply(_super, [this].concat(args));
_this.preferences = function () {
var _this$props = _this.props,
MenuStore = _this$props.MenuStore,
history = _this$props.history,
HeaderStore = _this$props.HeaderStore;
MenuStore.loadMenuData({
type: 'site'
}, true).then(function (menus) {
if (menus.length) {
var _findFirstLeafMenu = findFirstLeafMenu(menus[0]),
route = _findFirstLeafMenu.route,
domain = _findFirstLeafMenu.domain;
historyPushMenu(history, "".concat(route, "?type=site"), domain);
}
});
HeaderStore.setUserPreferenceVisible(false);
};
_this.handleVisibleChange = function (visible) {
_this.props.HeaderStore.setUserPreferenceVisible(visible);
};
_this.getGlobalMenuData = function (organizationId) {
var _this$props2 = _this.props,
MenuStore = _this$props2.MenuStore,
history = _this$props2.history;
MenuStore.loadMenuData({
type: 'site'
}, false).then(function (menus) {
if (menus.length) {
var _findFirstLeafMenu2 = findFirstLeafMenu(menus[0]),
route = _findFirstLeafMenu2.route,
domain = _findFirstLeafMenu2.domain;
var routeWithOrgId = "".concat(route, "/?organizationId=").concat(organizationId);
historyPushMenu(history, routeWithOrgId, domain);
}
});
};
_this.handleMenuItemClick = function (_ref) {
var key = _ref.key;
var _this$props3 = _this.props,
history = _this$props3.history,
AppState = _this$props3.AppState;
var _queryString$parse = queryString.parse(history.location.search),
organizationId = _queryString$parse.organizationId;
if (key === 'site-setting') {
_this.getGlobalMenuData(organizationId);
} else if (key === 'invitation') {
_this.invitation();
} else {
AppState.menuType.type = 'user';
history.push("".concat(key, "?type=user&organizationId=").concat(organizationId));
}
_this.handleVisibleChange(false);
};
_this.findUserInfoMenuItem = function (menu, res) {
if (menu.subMenus && menu.subMenus.length) {
menu.subMenus.forEach(function (v) {
return _this.findUserInfoMenuItem(v, res);
});
}
if (menu.code === 'choerodon.code.person.setting.user-info') {
res.res = menu;
}
};
_this.getUserInfoMenuItem = function () {
var res = {
res: {}
};
var MenuStore = _this.props.MenuStore;
var realData = MenuStore.menuGroup.user;
realData.forEach(function (v) {
return _this.findUserInfoMenuItem(v, res);
});
return res.res;
};
_this.invitation = function () {
var MIN = MODAL_WIDTH.MIN;
_Modal.open({
title: '注册邀请',
maskClosable: true,
destroyOnClose: true,
drawer: true,
style: {
width: MIN
},
children: /*#__PURE__*/React.createElement(InvitationModal, null)
});
};
return _this;
}
_createClass(UserPreferences, [{
key: "componentDidMount",
value: function componentDidMount() {
var _this$props4 = this.props,
history = _this$props4.history,
MenuStore = _this$props4.MenuStore,
HeaderStore = _this$props4.HeaderStore;
if (window.location.href.split('#')[1].split('&')[1] === 'token_type=bearer') {
history.push('/');
}
HeaderStore.axiosShowSiteMenu();
MenuStore.loadMenuData({
type: 'site'
}, true);
}
}, {
key: "render",
value: function render() {
var _this$props5 = this.props,
AppState = _this$props5.AppState,
HeaderStore = _this$props5.HeaderStore,
MenuStore = _this$props5.MenuStore,
history = _this$props5.history;
var _queryString$parse2 = queryString.parse(history.location.search),
organizationId = _queryString$parse2.organizationId;
var _ref2 = AppState.getUserInfo || {},
imageUrl = _ref2.imageUrl,
loginName = _ref2.loginName,
realName = _ref2.realName,
email = _ref2.email; // const realData = MenuStore.menuGroup && MenuStore.menuGroup.user.slice()[0] && MenuStore.menuGroup.user.slice()[0].subMenus.filter(item => !blackList.has(item.code));
var realData = [this.getUserInfoMenuItem()];
var AppBarIconRight = /*#__PURE__*/React.createElement("div", {
className: "".concat(prefixCls, "-popover-content")
}, /*#__PURE__*/React.createElement(Avatar, {
src: imageUrl,
prefixCls: prefixCls,
onClick: function onClick() {
history.push("/iam/user-info?type=site&organizationId=".concat(organizationId));
}
}, realName && realName.charAt(0)), /*#__PURE__*/React.createElement("div", {
className: "".concat(prefixCls, "-popover-title")
}, /*#__PURE__*/React.createElement("span", null, realName), /*#__PURE__*/React.createElement("span", null, email)), /*#__PURE__*/React.createElement("div", {
className: "".concat(prefixCls, "-popover-menu")
}, /*#__PURE__*/React.createElement(_Menu, {
selectedKeys: [-1],
onClick: this.handleMenuItemClick
}, realData && realData.map(function (item) {
return item.code && /*#__PURE__*/React.createElement(MenuItem, {
className: "".concat(prefixCls, "-popover-menu-item"),
key: item.route
}, /*#__PURE__*/React.createElement(_Icon, {
type: "account_circle-o"
}), item.name);
}), HeaderStore.getShowSiteMenu ? [/*#__PURE__*/React.createElement(_Menu.Divider, null), /*#__PURE__*/React.createElement(MenuItem, {
className: "".concat(prefixCls, "-popover-menu-item"),
key: "site-setting"
}, /*#__PURE__*/React.createElement(_Icon, {
type: "settings-o"
}), "\u5E73\u53F0\u7BA1\u7406")] : null, /*#__PURE__*/React.createElement(_Menu.Divider, null), /*#__PURE__*/React.createElement(MenuItem, {
className: "".concat(prefixCls, "-popover-menu-item"),
key: "invitation"
}, /*#__PURE__*/React.createElement(_Icon, {
type: "share"
}), "\u6CE8\u518C\u9080\u8BF7"))), /*#__PURE__*/React.createElement("div", {
className: "divider"
}), /*#__PURE__*/React.createElement("div", {
className: "".concat(prefixCls, "-popover-logout")
}, /*#__PURE__*/React.createElement("li", {
onClick: function onClick() {
return logout();
}
}, /*#__PURE__*/React.createElement(_Icon, {
type: "exit_to_app"
}), "\u9000\u51FA\u767B\u5F55")));
return /*#__PURE__*/React.createElement(_Popover, {
overlayClassName: "".concat(prefixCls, "-popover"),
content: AppBarIconRight,
trigger: "click",
visible: HeaderStore.userPreferenceVisible,
placement: "bottomRight",
onVisibleChange: this.handleVisibleChange
}, /*#__PURE__*/React.createElement(Avatar, {
src: imageUrl,
prefixCls: prefixCls
}, realName && realName.charAt(0)));
}
}]);
return UserPreferences;
}(Component)) || _class) || _class) || _class);
export { UserPreferences as default };