stackpress
Version:
Incept is a content management framework.
43 lines (42 loc) • 4.76 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.AdminUserMenu = AdminUserMenu;
exports.AdminApp = AdminApp;
exports.default = LayoutAdmin;
const jsx_runtime_1 = require("react/jsx-runtime");
const react_1 = require("react");
const r22n_1 = require("r22n");
const NotifyContainer_js_1 = __importDefault(require("../notify/NotifyContainer.js"));
const hooks_js_1 = require("../notify/hooks.js");
const hooks_js_2 = require("../theme/hooks.js");
const hooks_js_3 = require("../server/hooks.js");
const LayoutHead_js_1 = __importDefault(require("./components/LayoutHead.js"));
const LayoutLeft_js_1 = __importDefault(require("./components/LayoutLeft.js"));
const LayoutMain_js_1 = __importDefault(require("./components/LayoutMain.js"));
const LayoutMenu_js_1 = __importDefault(require("./components/LayoutMenu.js"));
const LayoutRight_js_1 = __importDefault(require("./components/LayoutRight.js"));
const LayoutProvider_js_1 = __importDefault(require("./LayoutProvider.js"));
const hooks_js_4 = require("./hooks.js");
function AdminUserMenu() {
const session = (0, hooks_js_3.useSession)();
const { changeLanguage } = (0, r22n_1.useLanguage)();
return ((0, jsx_runtime_1.jsxs)("section", { className: "user-menu", children: [(0, jsx_runtime_1.jsxs)("header", { children: [session.data.id ? ((0, jsx_runtime_1.jsxs)("div", { className: "info", children: [(0, jsx_runtime_1.jsx)("i", { className: "icon fas fa-user-circle" }), (0, jsx_runtime_1.jsx)("span", { children: session.data.name })] })) : null, (0, jsx_runtime_1.jsxs)("nav", { className: "lang", children: [(0, jsx_runtime_1.jsx)("a", { onClick: () => changeLanguage('en_US'), children: "EN" }), (0, jsx_runtime_1.jsx)("a", { onClick: () => changeLanguage('th_TH'), children: "TH" })] })] }), (0, jsx_runtime_1.jsx)("main", { children: session.data.id ? ((0, jsx_runtime_1.jsxs)("div", { className: "container", children: [session.data.roles && session.data.roles.includes('ADMIN') && ((0, jsx_runtime_1.jsxs)("nav", { className: "menu-item", children: [(0, jsx_runtime_1.jsx)("i", { className: "icon fas fa-gauge" }), (0, jsx_runtime_1.jsx)("a", { href: "/admin/profile/search", children: "Admin" })] })), (0, jsx_runtime_1.jsxs)("nav", { className: "menu-item", children: [(0, jsx_runtime_1.jsx)("i", { className: "icon fas fa-power-off" }), (0, jsx_runtime_1.jsx)("a", { href: "/auth/signout", children: "Sign Out" })] })] })) : ((0, jsx_runtime_1.jsxs)("div", { className: "container", children: [(0, jsx_runtime_1.jsxs)("nav", { className: "menu-item", children: [(0, jsx_runtime_1.jsx)("i", { className: "icon fas fa-lock" }), (0, jsx_runtime_1.jsx)("a", { href: "/auth/signin", children: "Sign In" })] }), (0, jsx_runtime_1.jsxs)("nav", { className: "menu-item", children: [(0, jsx_runtime_1.jsx)("i", { className: "icon fas fa-trophy" }), (0, jsx_runtime_1.jsx)("a", { href: "/auth/signup", children: "Sign Up" })] })] })) })] }));
}
function AdminApp({ children }) {
const config = (0, hooks_js_3.useConfig)();
const request = (0, hooks_js_3.useRequest)();
const [left, toggleLeft] = (0, hooks_js_4.useToggle)();
const [right, toggleRight] = (0, hooks_js_4.useToggle)();
const { theme, toggle: toggleTheme } = (0, hooks_js_2.useTheme)();
const menu = config.path('admin.menu', []);
const pathname = request.url.pathname;
return ((0, jsx_runtime_1.jsxs)("div", { className: `${theme} layout-admin`, children: [(0, jsx_runtime_1.jsx)(LayoutHead_js_1.default, { left: true, open: { left, right }, theme: theme, toggleLeft: toggleLeft, toggleRight: toggleRight, toggleTheme: toggleTheme }), (0, jsx_runtime_1.jsx)(LayoutLeft_js_1.default, { brand: config.path('brand.name', 'Stackpress'), base: config.path('admin.base', '/admin'), logo: config.path('brand.icon', 'icon.png'), open: left, toggle: toggleLeft, children: (0, jsx_runtime_1.jsx)(LayoutMenu_js_1.default, { path: pathname, menu: menu }) }), (0, jsx_runtime_1.jsx)(LayoutRight_js_1.default, { head: true, open: right, children: (0, jsx_runtime_1.jsx)(AdminUserMenu, {}) }), (0, jsx_runtime_1.jsx)(LayoutMain_js_1.default, { head: true, left: true, open: { left, right }, children: children })] }));
}
function LayoutAdmin(props) {
const { data, session, request, response, children } = props;
(0, react_1.useEffect)(hooks_js_1.unload, []);
return ((0, jsx_runtime_1.jsxs)(LayoutProvider_js_1.default, { data: data, session: session, request: request, response: response, children: [(0, jsx_runtime_1.jsx)(AdminApp, { children: children }), (0, jsx_runtime_1.jsx)(NotifyContainer_js_1.default, {})] }));
}