@doreamonjs/gate
Version:
gate for doreamonjs
91 lines (90 loc) • 3.76 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const react_1 = __importStar(require("react"));
const dva_1 = require("dva");
const components_1 = require("@doreamonjs/components");
require("./index.less");
class User extends react_1.Component {
render() {
const { menus, username, nickname, short, avatar } = this.props;
return (react_1.default.createElement(components_1.Dropdown.HeaderDropdownMenu, { className: 'dropMenu', menus: menus, onMenuClick: this.props.onMenuClick },
react_1.default.createElement("span", { className: 'barIcon' },
avatar && (react_1.default.createElement("img", { alt: "avatar", className: 'avatar', "data-tips": username, src: avatar })),
!avatar && short && (react_1.default.createElement("span", { className: 'forShort' }, short)),
react_1.default.createElement("span", { "data-username": username, className: 'name' }, nickname))));
}
}
const changeFullScreenMenuIcon = (fullscreen, menus, enables) => {
return menus
.filter((menu) => {
if (!(menu.key in enables))
return true;
return enables[menu.key];
})
.map((menu) => {
if (menu.key === 'fullscreen') {
return {
...menu,
icon: fullscreen ? 'fullscreen-exit' : 'fullscreen',
};
}
return menu;
});
};
const changeAppearanceMenuTitle = (theme, menus) => {
return menus.map((menu) => {
if (menu.key === 'appearance') {
const themeName = theme === 'dark' ? '暗黑' : '明亮';
return {
...menu,
// dark:暗黑
// light:明亮
title: `主题:${themeName}`,
// icon: theme === 'dark' ? 'moon' : 'sun',
};
}
return menu;
});
};
const mapState = ({ applications, functions, user, screens }) => {
const { attributes, values } = user;
const { theme } = applications;
const { menus } = attributes;
const fullscreen = screens.full;
const enables = {
appearance: functions['global.system.settings.appearance'],
profile: functions['global.system.settings.profile'],
setting: functions['global.system.settings.setting'],
fullscreen: functions['global.system.settings.fullscreen'],
lockscreen: functions['global.system.settings.lockscreen'],
};
let compositeMenus = changeFullScreenMenuIcon(fullscreen, menus, enables);
compositeMenus = changeAppearanceMenuTitle(theme, compositeMenus);
return {
...values,
menus: compositeMenus,
};
};
const mapActions = (dispatch) => ({
onMenuClick: (menu) => dispatch({ type: 'user/header/menu/navigate', payload: menu }),
});
exports.default = dva_1.connect(mapState, mapActions)(User);