UNPKG

@doreamonjs/gate

Version:
80 lines (79 loc) 3.7 kB
"use strict"; 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; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Apps = exports.App = void 0; const react_1 = __importStar(require("react")); const classnames_1 = __importDefault(require("classnames")); const dva_1 = require("dva"); const icons_1 = require("@ant-design/icons"); const antd_1 = require("antd"); const components_1 = require("@doreamonjs/components"); const application = __importStar(require("@doreamonjs/plugin-application")); require("./index.less"); const componentName = 'doreamonjs-design-gate-global-apps'; const App = (props) => { const onSelect = react_1.useCallback(() => { props.onSelect && props.onSelect(props); }, [props.name]); const isActive = props.homepage === window.location.origin; return (react_1.default.createElement("div", { className: `app ${isActive ? 'active' : ''}`, onClick: onSelect }, react_1.default.createElement("div", { className: 'wrap' }, react_1.default.createElement("span", { className: 'logo' }, react_1.default.createElement(components_1.Icon, { style: { fontSize: 22 }, type: props.logo || 'question-o' })), react_1.default.createElement("span", { className: 'name' }, props.name)))); }; exports.App = App; const Apps = (props) => { const containerCls = classnames_1.default(componentName, 'apps'); return (react_1.default.createElement(antd_1.Drawer, { className: containerCls, width: 300, title: props.title, headerStyle: { display: 'none' }, bodyStyle: { paddingTop: 48 }, placement: props.placement || 'left', visible: props.visible, onClose: props.onClose }, react_1.default.createElement("div", { style: { color: '#000', position: 'absolute', top: 12, right: 10, cursor: 'pointer', }, onClick: props.onClose }, react_1.default.createElement(icons_1.CloseOutlined, { className: 'close' })), props.data.map((app, index) => { if (app.hidden) return null; return react_1.default.createElement(exports.App, { key: index, ...app, onSelect: props.onSelect }); }))); }; exports.Apps = Apps; exports.Apps.defaultProps = { data: [], }; const mapState = (state) => { const { site, apps } = state[application.NAMESPACE]; return { title: site.name, ...apps, }; }; const mapActions = (dispatch) => ({ onSelect: (app) => dispatch({ type: `${application.NAMESPACE}/select/app`, payload: app }), onClose: (app) => dispatch({ type: `${application.NAMESPACE}/close/apps` }), }); exports.default = dva_1.connect(mapState, mapActions)(exports.Apps);