@webiny/app-admin-ui 0.0.0-unstable.e6f0dc8ca7 → 0.0.0-unstable.eb81deee7e
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Breadcrumbs/Breadcrumbs.d.ts +14 -0
- package/Breadcrumbs/Breadcrumbs.js +74 -0
- package/Breadcrumbs/Breadcrumbs.js.map +1 -0
- package/CommandPalette/CommandPalette.d.ts +6 -0
- package/CommandPalette/CommandPalette.js +202 -0
- package/CommandPalette/CommandPalette.js.map +1 -0
- package/CommandPalette/components/AiModeBadge.d.ts +3 -0
- package/CommandPalette/components/AiModeBadge.js +11 -0
- package/CommandPalette/components/AiModeBadge.js.map +1 -0
- package/CommandPalette/components/AiSuggestions.d.ts +9 -0
- package/CommandPalette/components/AiSuggestions.js +32 -0
- package/CommandPalette/components/AiSuggestions.js.map +1 -0
- package/CommandPalette/components/AiTurn.d.ts +11 -0
- package/CommandPalette/components/AiTurn.js +61 -0
- package/CommandPalette/components/AiTurn.js.map +1 -0
- package/CommandPalette/components/AnswerSkeleton.d.ts +6 -0
- package/CommandPalette/components/AnswerSkeleton.js +20 -0
- package/CommandPalette/components/AnswerSkeleton.js.map +1 -0
- package/CommandPalette/components/ApprovalPlan.d.ts +16 -0
- package/CommandPalette/components/ApprovalPlan.js +56 -0
- package/CommandPalette/components/ApprovalPlan.js.map +1 -0
- package/CommandPalette/components/CommandDetail.d.ts +13 -0
- package/CommandPalette/components/CommandDetail.js +39 -0
- package/CommandPalette/components/CommandDetail.js.map +1 -0
- package/CommandPalette/components/CommandItemRow.d.ts +5 -0
- package/CommandPalette/components/CommandItemRow.js +41 -0
- package/CommandPalette/components/CommandItemRow.js.map +1 -0
- package/CommandPalette/components/GroupHeading.d.ts +4 -0
- package/CommandPalette/components/GroupHeading.js +10 -0
- package/CommandPalette/components/GroupHeading.js.map +1 -0
- package/CommandPalette/components/HintIcon.d.ts +4 -0
- package/CommandPalette/components/HintIcon.js +11 -0
- package/CommandPalette/components/HintIcon.js.map +1 -0
- package/CommandPalette/components/Kbd.d.ts +4 -0
- package/CommandPalette/components/Kbd.js +14 -0
- package/CommandPalette/components/Kbd.js.map +1 -0
- package/CommandPalette/components/NoResults.d.ts +13 -0
- package/CommandPalette/components/NoResults.js +33 -0
- package/CommandPalette/components/NoResults.js.map +1 -0
- package/CommandPalette/components/PaletteFooter.d.ts +13 -0
- package/CommandPalette/components/PaletteFooter.js +18 -0
- package/CommandPalette/components/PaletteFooter.js.map +1 -0
- package/CommandPalette/components/ToolChip.d.ts +7 -0
- package/CommandPalette/components/ToolChip.js +32 -0
- package/CommandPalette/components/ToolChip.js.map +1 -0
- package/CommandPalette/components/index.d.ts +13 -0
- package/CommandPalette/components/index.js +13 -0
- package/CommandPalette/constants.d.ts +8 -0
- package/CommandPalette/constants.js +5 -0
- package/CommandPalette/constants.js.map +1 -0
- package/CommandPalette/deriveRows.d.ts +19 -0
- package/CommandPalette/deriveRows.js +100 -0
- package/CommandPalette/deriveRows.js.map +1 -0
- package/CommandPalette/modes/PaletteMode.d.ts +73 -0
- package/CommandPalette/modes/PaletteMode.js +0 -0
- package/CommandPalette/modes/createAiMode.d.ts +13 -0
- package/CommandPalette/modes/createAiMode.js +80 -0
- package/CommandPalette/modes/createAiMode.js.map +1 -0
- package/CommandPalette/modes/index.d.ts +2 -0
- package/CommandPalette/modes/index.js +1 -0
- package/CommandPalette/types.d.ts +15 -0
- package/CommandPalette/types.js +0 -0
- package/CommandPalette/usePaletteHotkeys.d.ts +16 -0
- package/CommandPalette/usePaletteHotkeys.js +38 -0
- package/CommandPalette/usePaletteHotkeys.js.map +1 -0
- package/Dashboard/Welcome.js +29 -33
- package/Dashboard/Welcome.js.map +1 -1
- package/Dashboard/components/AssistanceWidget.js +51 -52
- package/Dashboard/components/AssistanceWidget.js.map +1 -1
- package/Dashboard/components/CommunityWidget.js +55 -63
- package/Dashboard/components/CommunityWidget.js.map +1 -1
- package/Dashboard/components/MissingPermissionsWidget.js +13 -14
- package/Dashboard/components/MissingPermissionsWidget.js.map +1 -1
- package/Dashboard/components/assets/github.js +14 -0
- package/Dashboard/components/assets/github.js.map +1 -0
- package/Dashboard/components/assets/slack.js +27 -0
- package/Dashboard/components/assets/slack.js.map +1 -0
- package/Dashboard/components/assets/x-twitter.js +18 -0
- package/Dashboard/components/assets/x-twitter.js.map +1 -0
- package/Dashboard/components/assets/youtube.js +28 -0
- package/Dashboard/components/assets/youtube.js.map +1 -0
- package/Dashboard/components/index.js +0 -2
- package/Dashboard.js +6 -7
- package/Dashboard.js.map +1 -1
- package/Dialog/DialogContainer.js +54 -67
- package/Dialog/DialogContainer.js.map +1 -1
- package/Dialog/DialogProvider.js +5 -8
- package/Dialog/DialogProvider.js.map +1 -1
- package/Dialog.js +5 -9
- package/Dialog.js.map +1 -1
- package/Layout.js +50 -29
- package/Layout.js.map +1 -1
- package/Logo.js +12 -16
- package/Logo.js.map +1 -1
- package/Navigation/Navigation.js +30 -34
- package/Navigation/Navigation.js.map +1 -1
- package/Navigation/SidebarMenuItems.js +32 -44
- package/Navigation/SidebarMenuItems.js.map +1 -1
- package/NotFound/notFound.js +297 -0
- package/NotFound/notFound.js.map +1 -0
- package/NotFound.js +17 -18
- package/NotFound.js.map +1 -1
- package/UserMenu/UserMenu.js +17 -25
- package/UserMenu/UserMenu.js.map +1 -1
- package/UserMenu/UserMenuHandle.js +33 -46
- package/UserMenu/UserMenuHandle.js.map +1 -1
- package/UserMenu/UserMenuItem.js +9 -12
- package/UserMenu/UserMenuItem.js.map +1 -1
- package/UserMenu/UserMenuLink.js +9 -12
- package/UserMenu/UserMenuLink.js.map +1 -1
- package/UserMenu/UserMenuSeparator.js +9 -9
- package/UserMenu/UserMenuSeparator.js.map +1 -1
- package/UserMenu.js +4 -5
- package/UserMenu.js.map +1 -1
- package/index.js +14 -15
- package/index.js.map +1 -1
- package/package.json +13 -12
- package/static/svg/github.08a73b00.svg +1 -0
- package/static/svg/notFound.e8b15981.svg +1 -0
- package/static/svg/slack.1b2ba162.svg +8 -0
- package/static/svg/x-twitter.46e7218c.svg +5 -0
- package/static/svg/youtube.3c232651.svg +11 -0
- package/Dashboard/components/index.js.map +0 -1
- package/Navigation/SidebarProvider.d.ts +0 -6
- package/Navigation/SidebarProvider.js +0 -34
- package/Navigation/SidebarProvider.js.map +0 -1
- package/Navigation.d.ts +0 -2
- package/Navigation.js +0 -11
- package/Navigation.js.map +0 -1
package/Layout.js
CHANGED
|
@@ -1,34 +1,55 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import { LayoutRenderer, Navigation, TenantSelector, UserMenu } from "@webiny/app-admin";
|
|
4
|
-
import { HeaderBar, cn, useSidebar } from "@webiny/admin-ui";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
1
|
+
import react, { useCallback, useMemo, useRef } from "react";
|
|
2
|
+
import react_helmet from "react-helmet";
|
|
3
|
+
import { AssumedPermissionsSelector, BannerBar, LayoutRenderer, Navigation, TenantSelector, UserMenu } from "@webiny/app-admin";
|
|
4
|
+
import { HeaderBar, SidebarProvider, cn, useSidebar } from "@webiny/admin-ui";
|
|
5
|
+
import { useLocalStorage, useLocalStorageValue } from "@webiny/app";
|
|
6
|
+
import { CommandPalette } from "./CommandPalette/CommandPalette.js";
|
|
7
|
+
import { Breadcrumbs } from "./Breadcrumbs/Breadcrumbs.js";
|
|
8
|
+
const SIDEBAR_STATE_KEY = "navigation/state";
|
|
9
|
+
const parseSidebarState = (raw)=>{
|
|
10
|
+
try {
|
|
11
|
+
if ("object" == typeof raw && null !== raw) return raw;
|
|
12
|
+
if ("string" == typeof raw) return JSON.parse(raw);
|
|
13
|
+
} catch {}
|
|
14
|
+
};
|
|
15
|
+
const MAKE_ROOM_FOR_BANNER = "has-[>[data-admin-banner]]:[--spacing-main-content:calc(100vh_-_var(--spacing-header)_-_var(--spacing-banner))]";
|
|
16
|
+
const LayoutContent = ({ title, startElement = null, hideNavigation = false, children })=>{
|
|
17
|
+
const { pinned } = useSidebar();
|
|
15
18
|
const widthClassNames = {
|
|
16
|
-
|
|
17
|
-
|
|
19
|
+
"max-w-[calc(100%-(var(--spacing-sidebar-expanded)))] ": pinned,
|
|
20
|
+
"max-w-[calc(100%-(var(--spacing-sidebar-collapsed)))] ": !pinned
|
|
18
21
|
};
|
|
19
|
-
return /*#__PURE__*/
|
|
20
|
-
|
|
21
|
-
}) : null, hideNavigation ? null : /*#__PURE__*/
|
|
22
|
-
|
|
23
|
-
}, /*#__PURE__*/
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
22
|
+
return /*#__PURE__*/ react.createElement(react.Fragment, null, title ? /*#__PURE__*/ react.createElement(react_helmet, {
|
|
23
|
+
title: title
|
|
24
|
+
}) : null, /*#__PURE__*/ react.createElement(CommandPalette, null), hideNavigation ? null : /*#__PURE__*/ react.createElement(Navigation, null), /*#__PURE__*/ react.createElement("div", {
|
|
25
|
+
className: cn("ml-auto bg-neutral-base transition-[max-width,min-width] ease-linear w-full", MAKE_ROOM_FOR_BANNER, hideNavigation ? void 0 : widthClassNames)
|
|
26
|
+
}, /*#__PURE__*/ react.createElement(BannerBar, null), /*#__PURE__*/ react.createElement(HeaderBar, {
|
|
27
|
+
start: /*#__PURE__*/ react.createElement("div", {
|
|
28
|
+
className: "flex items-center gap-sm"
|
|
29
|
+
}, /*#__PURE__*/ react.createElement(Breadcrumbs, null), startElement),
|
|
30
|
+
end: /*#__PURE__*/ react.createElement("div", {
|
|
31
|
+
className: "flex gap-x-sm items-center justify-end"
|
|
32
|
+
}, /*#__PURE__*/ react.createElement(TenantSelector, null), /*#__PURE__*/ react.createElement(AssumedPermissionsSelector, null), /*#__PURE__*/ react.createElement(UserMenu, null))
|
|
33
|
+
}), /*#__PURE__*/ react.createElement("main", {
|
|
34
|
+
className: "relative overflow-y-auto h-main-content"
|
|
30
35
|
}, children)));
|
|
31
|
-
|
|
32
|
-
|
|
36
|
+
};
|
|
37
|
+
const Layout_Layout = LayoutRenderer.createDecorator(()=>function(props) {
|
|
38
|
+
const localStorage = useLocalStorage();
|
|
39
|
+
const localStorageRef = useRef(localStorage);
|
|
40
|
+
localStorageRef.current = localStorage;
|
|
41
|
+
const rawState = useLocalStorageValue(SIDEBAR_STATE_KEY);
|
|
42
|
+
const cachedState = useMemo(()=>parseSidebarState(rawState), [
|
|
43
|
+
rawState
|
|
44
|
+
]);
|
|
45
|
+
const onChangeState = useCallback((newState)=>{
|
|
46
|
+
localStorageRef.current.set(SIDEBAR_STATE_KEY, JSON.stringify(newState));
|
|
47
|
+
}, []);
|
|
48
|
+
return /*#__PURE__*/ react.createElement(SidebarProvider, {
|
|
49
|
+
state: cachedState,
|
|
50
|
+
onChangeState: onChangeState
|
|
51
|
+
}, /*#__PURE__*/ react.createElement(LayoutContent, props));
|
|
52
|
+
});
|
|
53
|
+
export { Layout_Layout as Layout };
|
|
33
54
|
|
|
34
55
|
//# sourceMappingURL=Layout.js.map
|
package/Layout.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"Layout.js","sources":["../src/Layout.tsx"],"sourcesContent":["import React, { useCallback, useMemo, useRef } from \"react\";\nimport Helmet from \"react-helmet\";\nimport type { LayoutProps } from \"@webiny/app-admin\";\nimport { AssumedPermissionsSelector } from \"@webiny/app-admin\";\nimport { BannerBar } from \"@webiny/app-admin\";\nimport { LayoutRenderer } from \"@webiny/app-admin\";\nimport { Navigation } from \"@webiny/app-admin\";\nimport { TenantSelector } from \"@webiny/app-admin\";\nimport { UserMenu } from \"@webiny/app-admin\";\nimport { HeaderBar, SidebarProvider, cn, useSidebar } from \"@webiny/admin-ui\";\nimport { useLocalStorage, useLocalStorageValue } from \"@webiny/app\";\nimport { CommandPalette } from \"./CommandPalette/CommandPalette.js\";\nimport { Breadcrumbs } from \"./Breadcrumbs/Breadcrumbs.js\";\n\nconst SIDEBAR_STATE_KEY = \"navigation/state\";\n\ntype SidebarCachedState = {\n pinned: boolean;\n expandedSections: string[];\n pinnedItems: string[];\n};\n\nconst parseSidebarState = (raw: unknown): SidebarCachedState | undefined => {\n try {\n if (typeof raw === \"object\" && raw !== null) {\n return raw as SidebarCachedState;\n }\n if (typeof raw === \"string\") {\n return JSON.parse(raw) as SidebarCachedState;\n }\n } catch {\n // Ignore parse errors\n }\n return undefined;\n};\n\n/*\n * Views size themselves with `h-main-content`, which is the window minus the header. While the\n * banner bar shows, they have to lose its height too, or every page scrolls by exactly that much.\n * The bar is always `--spacing-banner` tall, so plain CSS can do it. Scoped to the wrapper below,\n * which holds both the bar and the views.\n *\n * TODO: Temporary. The real fix is for views to fill `main` instead of computing their own height\n * from the window: make this wrapper a full-height column and `main` `flex-1 min-h-0`, then move\n * the ~13 views that use `h-main-content` to `h-full`. That also lets the bar wrap its text.\n */\nconst MAKE_ROOM_FOR_BANNER =\n \"has-[>[data-admin-banner]]:[--spacing-main-content:calc(100vh_-_var(--spacing-header)_-_var(--spacing-banner))]\";\n\nconst LayoutContent = ({\n title,\n startElement = null,\n hideNavigation = false,\n children\n}: LayoutProps) => {\n const { pinned } = useSidebar();\n\n const widthClassNames = {\n \"max-w-[calc(100%-(var(--spacing-sidebar-expanded)))] \": pinned,\n \"max-w-[calc(100%-(var(--spacing-sidebar-collapsed)))] \": !pinned\n };\n\n return (\n <>\n {title ? <Helmet title={title} /> : null}\n <CommandPalette />\n {hideNavigation ? null : <Navigation />}\n <div\n className={cn(\n \"ml-auto bg-neutral-base transition-[max-width,min-width] ease-linear w-full\",\n MAKE_ROOM_FOR_BANNER,\n hideNavigation ? undefined : widthClassNames\n )}\n >\n <BannerBar />\n <HeaderBar\n start={\n <div className=\"flex items-center gap-sm\">\n <Breadcrumbs />\n {startElement}\n </div>\n }\n end={\n <div className={\"flex gap-x-sm items-center justify-end\"}>\n <TenantSelector />\n <AssumedPermissionsSelector />\n <UserMenu />\n </div>\n }\n />\n <main className={\"relative overflow-y-auto h-main-content\"}>{children}</main>\n </div>\n </>\n );\n};\n\nexport const Layout = LayoutRenderer.createDecorator(() => {\n return function Layout(props: LayoutProps) {\n const localStorage = useLocalStorage();\n const localStorageRef = useRef(localStorage);\n localStorageRef.current = localStorage;\n\n const rawState = useLocalStorageValue(SIDEBAR_STATE_KEY);\n const cachedState = useMemo(() => parseSidebarState(rawState), [rawState]);\n\n const onChangeState = useCallback((newState: SidebarCachedState) => {\n localStorageRef.current.set(SIDEBAR_STATE_KEY, JSON.stringify(newState));\n }, []);\n\n return (\n <SidebarProvider state={cachedState} onChangeState={onChangeState}>\n <LayoutContent {...props} />\n </SidebarProvider>\n );\n };\n});\n"],"names":["SIDEBAR_STATE_KEY","parseSidebarState","raw","JSON","MAKE_ROOM_FOR_BANNER","LayoutContent","title","startElement","hideNavigation","children","pinned","useSidebar","widthClassNames","Helmet","CommandPalette","Navigation","cn","undefined","BannerBar","HeaderBar","Breadcrumbs","TenantSelector","AssumedPermissionsSelector","UserMenu","Layout","LayoutRenderer","props","localStorage","useLocalStorage","localStorageRef","useRef","rawState","useLocalStorageValue","cachedState","useMemo","onChangeState","useCallback","newState","SidebarProvider"],"mappings":";;;;;;;AAcA,MAAMA,oBAAoB;AAQ1B,MAAMC,oBAAoB,CAACC;IACvB,IAAI;QACA,IAAI,AAAe,YAAf,OAAOA,OAAoBA,AAAQ,SAARA,KAC3B,OAAOA;QAEX,IAAI,AAAe,YAAf,OAAOA,KACP,OAAOC,KAAK,KAAK,CAACD;IAE1B,EAAE,OAAM,CAER;AAEJ;AAYA,MAAME,uBACF;AAEJ,MAAMC,gBAAgB,CAAC,EACnBC,KAAK,EACLC,eAAe,IAAI,EACnBC,iBAAiB,KAAK,EACtBC,QAAQ,EACE;IACV,MAAM,EAAEC,MAAM,EAAE,GAAGC;IAEnB,MAAMC,kBAAkB;QACpB,yDAAyDF;QACzD,0DAA0D,CAACA;IAC/D;IAEA,OAAO,WAAP,GACI,0CACKJ,QAAQ,WAARA,GAAQ,oBAACO,cAAMA;QAAC,OAAOP;SAAY,oBACpC,oBAACQ,gBAAcA,OACdN,iBAAiB,OAAO,WAAP,GAAO,oBAACO,YAAUA,OAAAA,WAAAA,GACpC,oBAAC;QACG,WAAWC,GACP,+EACAZ,sBACAI,iBAAiBS,SAAYL;qBAGjC,oBAACM,WAASA,OAAAA,WAAAA,GACV,oBAACC,WAASA;QACN,qBACI,oBAAC;YAAI,WAAU;yBACX,oBAACC,aAAWA,OACXb;QAGT,mBACI,oBAAC;YAAI,WAAW;yBACZ,oBAACc,gBAAcA,OAAAA,WAAAA,GACf,oBAACC,4BAA0BA,OAAAA,WAAAA,GAC3B,oBAACC,UAAQA;sBAIrB,oBAAC;QAAK,WAAW;OAA4Cd;AAI7E;AAEO,MAAMe,gBAASC,eAAe,eAAe,CAAC,IAC1C,SAAgBC,KAAkB;QACrC,MAAMC,eAAeC;QACrB,MAAMC,kBAAkBC,OAAOH;QAC/BE,gBAAgB,OAAO,GAAGF;QAE1B,MAAMI,WAAWC,qBAAqBhC;QACtC,MAAMiC,cAAcC,QAAQ,IAAMjC,kBAAkB8B,WAAW;YAACA;SAAS;QAEzE,MAAMI,gBAAgBC,YAAY,CAACC;YAC/BR,gBAAgB,OAAO,CAAC,GAAG,CAAC7B,mBAAmBG,KAAK,SAAS,CAACkC;QAClE,GAAG,EAAE;QAEL,OAAO,WAAP,GACI,oBAACC,iBAAeA;YAAC,OAAOL;YAAa,eAAeE;yBAChD,oBAAC9B,eAAkBqB;IAG/B"}
|
package/Logo.js
CHANGED
|
@@ -1,20 +1,16 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { LogoRenderer, useAdminConfig } from "@webiny/app-admin";
|
|
3
|
-
import { useIsInNavigation } from "@webiny/app-admin";
|
|
1
|
+
import react from "react";
|
|
2
|
+
import { LogoRenderer, useAdminConfig, useIsInNavigation } from "@webiny/app-admin";
|
|
4
3
|
const minHeight = {
|
|
5
|
-
|
|
4
|
+
minHeight: 48
|
|
6
5
|
};
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}, logoElement || null);
|
|
17
|
-
};
|
|
18
|
-
});
|
|
6
|
+
const Logo_Logo = LogoRenderer.createDecorator(()=>function() {
|
|
7
|
+
const { logo } = useAdminConfig();
|
|
8
|
+
const isInNavigation = useIsInNavigation();
|
|
9
|
+
const logoElement = isInNavigation ? logo.squareLogo : logo.horizontalLogo;
|
|
10
|
+
return /*#__PURE__*/ react.createElement("div", {
|
|
11
|
+
style: minHeight
|
|
12
|
+
}, logoElement || null);
|
|
13
|
+
});
|
|
14
|
+
export { Logo_Logo as Logo };
|
|
19
15
|
|
|
20
16
|
//# sourceMappingURL=Logo.js.map
|
package/Logo.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"Logo.js","sources":["../src/Logo.tsx"],"sourcesContent":["import React from \"react\";\nimport { LogoRenderer, useAdminConfig } from \"@webiny/app-admin\";\nimport { useIsInNavigation } from \"@webiny/app-admin\";\n\nconst minHeight = { minHeight: 48 };\n\nexport const Logo = LogoRenderer.createDecorator(() => {\n return function Logo() {\n const { logo } = useAdminConfig();\n const isInNavigation = useIsInNavigation();\n\n const logoElement = isInNavigation ? logo.squareLogo : logo.horizontalLogo;\n\n return <div style={minHeight}>{logoElement || null}</div>;\n };\n});\n"],"names":["minHeight","Logo","LogoRenderer","logo","useAdminConfig","isInNavigation","useIsInNavigation","logoElement"],"mappings":";;AAIA,MAAMA,YAAY;IAAE,WAAW;AAAG;AAE3B,MAAMC,YAAOC,aAAa,eAAe,CAAC,IACtC;QACH,MAAM,EAAEC,IAAI,EAAE,GAAGC;QACjB,MAAMC,iBAAiBC;QAEvB,MAAMC,cAAcF,iBAAiBF,KAAK,UAAU,GAAGA,KAAK,cAAc;QAE1E,OAAO,WAAP,GAAO,oBAAC;YAAI,OAAOH;WAAYO,eAAe;IAClD"}
|
package/Navigation/Navigation.js
CHANGED
|
@@ -1,38 +1,34 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { NavigationRenderer, useAdminConfig } from "@webiny/app-admin";
|
|
1
|
+
import react from "react";
|
|
2
|
+
import { NavigationRenderer, SimpleLink, useAdminConfig } from "@webiny/app-admin";
|
|
3
3
|
import { Sidebar } from "@webiny/admin-ui";
|
|
4
4
|
import { SidebarMenuItems } from "./SidebarMenuItems.js";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
menus: menus
|
|
34
|
-
}));
|
|
35
|
-
};
|
|
36
|
-
});
|
|
5
|
+
const Navigation_Navigation = NavigationRenderer.createDecorator(()=>function() {
|
|
6
|
+
const { menus, title, logo } = useAdminConfig();
|
|
7
|
+
const titleElement = /*#__PURE__*/ react.createElement(SimpleLink, {
|
|
8
|
+
to: "/"
|
|
9
|
+
}, title);
|
|
10
|
+
const icon = /*#__PURE__*/ react.createElement(SimpleLink, {
|
|
11
|
+
to: "/"
|
|
12
|
+
}, /*#__PURE__*/ react.createElement(Sidebar.Icon, {
|
|
13
|
+
element: logo.squareLogo,
|
|
14
|
+
label: "Webiny"
|
|
15
|
+
}));
|
|
16
|
+
const hasFooterMenus = menus.some((m)=>(m.tags || []).includes("footer"));
|
|
17
|
+
return /*#__PURE__*/ react.createElement(Sidebar, {
|
|
18
|
+
title: titleElement,
|
|
19
|
+
icon: icon,
|
|
20
|
+
footer: hasFooterMenus ? /*#__PURE__*/ react.createElement(SidebarMenuItems, {
|
|
21
|
+
menus: menus,
|
|
22
|
+
where: {
|
|
23
|
+
tags: [
|
|
24
|
+
"footer"
|
|
25
|
+
]
|
|
26
|
+
}
|
|
27
|
+
}) : void 0
|
|
28
|
+
}, /*#__PURE__*/ react.createElement(SidebarMenuItems, {
|
|
29
|
+
menus: menus
|
|
30
|
+
}));
|
|
31
|
+
});
|
|
32
|
+
export { Navigation_Navigation as Navigation };
|
|
37
33
|
|
|
38
34
|
//# sourceMappingURL=Navigation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"Navigation/Navigation.js","sources":["../../src/Navigation/Navigation.tsx"],"sourcesContent":["import React from \"react\";\nimport { NavigationRenderer, useAdminConfig } from \"@webiny/app-admin\";\nimport { Sidebar } from \"@webiny/admin-ui\";\nimport { SidebarMenuItems } from \"./SidebarMenuItems.js\";\nimport { SimpleLink } from \"@webiny/app-admin\";\n\nexport const Navigation = NavigationRenderer.createDecorator(() => {\n return function Navigation() {\n const { menus, title, logo } = useAdminConfig();\n\n const titleElement = <SimpleLink to={\"/\"}>{title}</SimpleLink>;\n const icon = (\n <SimpleLink to={\"/\"}>\n <Sidebar.Icon element={logo.squareLogo} label={\"Webiny\"} />\n </SimpleLink>\n );\n\n const hasFooterMenus = menus.some(m => (m.tags || []).includes(\"footer\"));\n\n return (\n <Sidebar\n title={titleElement}\n icon={icon}\n footer={\n hasFooterMenus ? (\n <SidebarMenuItems menus={menus} where={{ tags: [\"footer\"] }} />\n ) : undefined\n }\n >\n <SidebarMenuItems menus={menus} />\n </Sidebar>\n );\n };\n});\n"],"names":["Navigation","NavigationRenderer","menus","title","logo","useAdminConfig","titleElement","SimpleLink","icon","Sidebar","hasFooterMenus","m","SidebarMenuItems","undefined"],"mappings":";;;;AAMO,MAAMA,wBAAaC,mBAAmB,eAAe,CAAC,IAClD;QACH,MAAM,EAAEC,KAAK,EAAEC,KAAK,EAAEC,IAAI,EAAE,GAAGC;QAE/B,MAAMC,eAAe,WAAfA,GAAe,oBAACC,YAAUA;YAAC,IAAI;WAAMJ;QAC3C,MAAMK,OAAO,WAAPA,GACF,oBAACD,YAAUA;YAAC,IAAI;yBACZ,oBAACE,QAAQ,IAAI;YAAC,SAASL,KAAK,UAAU;YAAE,OAAO;;QAIvD,MAAMM,iBAAiBR,MAAM,IAAI,CAACS,CAAAA,IAAMA,AAAAA,CAAAA,EAAE,IAAI,IAAI,EAAC,EAAG,QAAQ,CAAC;QAE/D,OAAO,WAAP,GACI,oBAACF,SAAOA;YACJ,OAAOH;YACP,MAAME;YACN,QACIE,iBAAiB,WAAjBA,GACI,oBAACE,kBAAgBA;gBAAC,OAAOV;gBAAO,OAAO;oBAAE,MAAM;wBAAC;qBAAS;gBAAC;iBAC1DW;yBAGR,oBAACD,kBAAgBA;YAAC,OAAOV;;IAGrC"}
|
|
@@ -1,48 +1,36 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}, /*#__PURE__*/React.createElement(SidebarMenuItems, {
|
|
33
|
-
menus: allMenus,
|
|
34
|
-
where: {
|
|
35
|
-
parent: m.name
|
|
36
|
-
}
|
|
37
|
-
}));
|
|
38
|
-
}
|
|
39
|
-
if (m.hideIfEmpty) {
|
|
40
|
-
return null;
|
|
41
|
-
}
|
|
42
|
-
return /*#__PURE__*/React.cloneElement(m.element, {
|
|
43
|
-
key
|
|
1
|
+
import react from "react";
|
|
2
|
+
const SidebarMenuItems = (props)=>{
|
|
3
|
+
const { menus: allMenus, where = {} } = props;
|
|
4
|
+
const filteredMenus = allMenus.filter((menu)=>{
|
|
5
|
+
const whereParent = where.parent || null;
|
|
6
|
+
const menuParent = menu.parent;
|
|
7
|
+
if (whereParent !== menuParent) return false;
|
|
8
|
+
const whereTags = where.tags || [];
|
|
9
|
+
const menuTags = menu.tags || [];
|
|
10
|
+
if (whereTags.length > 0) return whereTags.every((tag)=>menuTags.includes(tag));
|
|
11
|
+
return 0 === menuTags.length;
|
|
12
|
+
});
|
|
13
|
+
return filteredMenus.map((m)=>{
|
|
14
|
+
if (!/*#__PURE__*/ react.isValidElement(m.element)) return null;
|
|
15
|
+
const key = [
|
|
16
|
+
m.parent,
|
|
17
|
+
m.name
|
|
18
|
+
].join("-");
|
|
19
|
+
const hasChildMenus = allMenus.some((menu)=>menu.parent === m.name);
|
|
20
|
+
if (hasChildMenus) return /*#__PURE__*/ react.cloneElement(m.element, {
|
|
21
|
+
key
|
|
22
|
+
}, /*#__PURE__*/ react.createElement(SidebarMenuItems, {
|
|
23
|
+
menus: allMenus,
|
|
24
|
+
where: {
|
|
25
|
+
parent: m.name
|
|
26
|
+
}
|
|
27
|
+
}));
|
|
28
|
+
if (m.hideIfEmpty) return null;
|
|
29
|
+
return /*#__PURE__*/ react.cloneElement(m.element, {
|
|
30
|
+
key
|
|
31
|
+
});
|
|
44
32
|
});
|
|
45
|
-
});
|
|
46
33
|
};
|
|
34
|
+
export { SidebarMenuItems };
|
|
47
35
|
|
|
48
36
|
//# sourceMappingURL=SidebarMenuItems.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"Navigation/SidebarMenuItems.js","sources":["../../src/Navigation/SidebarMenuItems.tsx"],"sourcesContent":["import React from \"react\";\nimport type { MenuConfig } from \"@webiny/app-admin/config/AdminConfig/Menu.js\";\n\nexport interface MenusProps {\n menus: MenuConfig[];\n where?: { tags?: string[]; parent?: string };\n}\n\n// This component is called recursively to render root and nested menu items.\n// The menu items are defined via AdminConfig.\nexport const SidebarMenuItems = (props: MenusProps) => {\n const { menus: allMenus, where = {} } = props;\n const filteredMenus = allMenus.filter(menu => {\n const whereParent = where.parent || null;\n const menuParent = menu.parent;\n if (whereParent !== menuParent) {\n return false;\n }\n\n const whereTags = where.tags || [];\n const menuTags = menu.tags || [];\n\n if (whereTags.length > 0) {\n // If not all tags are present, return false.\n return whereTags.every(tag => menuTags.includes(tag));\n }\n\n return menuTags.length === 0;\n });\n\n return filteredMenus.map(m => {\n if (!React.isValidElement(m.element)) {\n return null;\n }\n\n const key = [m.parent, m.name].join(\"-\");\n\n const hasChildMenus = allMenus.some(menu => menu.parent === m.name);\n if (hasChildMenus) {\n return React.cloneElement(\n m.element,\n { key },\n <SidebarMenuItems menus={allMenus} where={{ parent: m.name }} />\n );\n }\n\n if (m.hideIfEmpty) {\n return null;\n }\n\n return React.cloneElement(m.element, { key });\n });\n};\n"],"names":["SidebarMenuItems","props","allMenus","where","filteredMenus","menu","whereParent","menuParent","whereTags","menuTags","tag","m","React","key","hasChildMenus"],"mappings":";AAUO,MAAMA,mBAAmB,CAACC;IAC7B,MAAM,EAAE,OAAOC,QAAQ,EAAEC,QAAQ,CAAC,CAAC,EAAE,GAAGF;IACxC,MAAMG,gBAAgBF,SAAS,MAAM,CAACG,CAAAA;QAClC,MAAMC,cAAcH,MAAM,MAAM,IAAI;QACpC,MAAMI,aAAaF,KAAK,MAAM;QAC9B,IAAIC,gBAAgBC,YAChB,OAAO;QAGX,MAAMC,YAAYL,MAAM,IAAI,IAAI,EAAE;QAClC,MAAMM,WAAWJ,KAAK,IAAI,IAAI,EAAE;QAEhC,IAAIG,UAAU,MAAM,GAAG,GAEnB,OAAOA,UAAU,KAAK,CAACE,CAAAA,MAAOD,SAAS,QAAQ,CAACC;QAGpD,OAAOD,AAAoB,MAApBA,SAAS,MAAM;IAC1B;IAEA,OAAOL,cAAc,GAAG,CAACO,CAAAA;QACrB,IAAI,CAAC,WAAD,GAACC,MAAAA,cAAoB,CAACD,EAAE,OAAO,GAC/B,OAAO;QAGX,MAAME,MAAM;YAACF,EAAE,MAAM;YAAEA,EAAE,IAAI;SAAC,CAAC,IAAI,CAAC;QAEpC,MAAMG,gBAAgBZ,SAAS,IAAI,CAACG,CAAAA,OAAQA,KAAK,MAAM,KAAKM,EAAE,IAAI;QAClE,IAAIG,eACA,OAAO,WAAP,GAAOF,MAAAA,YAAkB,CACrBD,EAAE,OAAO,EACT;YAAEE;QAAI,iBACN,oBAACb,kBAAgBA;YAAC,OAAOE;YAAU,OAAO;gBAAE,QAAQS,EAAE,IAAI;YAAC;;QAInE,IAAIA,EAAE,WAAW,EACb,OAAO;QAGX,OAAO,WAAP,GAAOC,MAAAA,YAAkB,CAACD,EAAE,OAAO,EAAE;YAAEE;QAAI;IAC/C;AACJ"}
|