@seij/common-ui 0.1.6 → 0.1.8
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/README.md +0 -1
- package/dist/init/SeijUIProvider.d.ts.map +1 -1
- package/dist/init/SeijUIProvider.js.map +1 -1
- package/dist/lib/applicationshell/ApplicationShell.d.ts +73 -2
- package/dist/lib/applicationshell/ApplicationShell.d.ts.map +1 -1
- package/dist/lib/applicationshell/ApplicationShell.js +75 -70
- package/dist/lib/applicationshell/ApplicationShell.js.map +1 -1
- package/dist/lib/applicationshell/ApplicationShellHamburger.d.ts +4 -0
- package/dist/lib/applicationshell/ApplicationShellHamburger.d.ts.map +1 -0
- package/dist/lib/applicationshell/ApplicationShellHamburger.js +17 -0
- package/dist/lib/applicationshell/ApplicationShellHamburger.js.map +1 -0
- package/dist/lib/applicationshell/ApplicationShellPanelContract.d.ts +5 -0
- package/dist/lib/applicationshell/ApplicationShellPanelContract.d.ts.map +1 -0
- package/dist/lib/applicationshell/ApplicationShellPanelContract.js +19 -0
- package/dist/lib/applicationshell/ApplicationShellPanelContract.js.map +1 -0
- package/dist/lib/applicationshell/ApplicationShellRails.d.ts +11 -0
- package/dist/lib/applicationshell/ApplicationShellRails.d.ts.map +1 -0
- package/dist/lib/applicationshell/ApplicationShellRails.js +111 -0
- package/dist/lib/applicationshell/ApplicationShellRails.js.map +1 -0
- package/dist/lib/applicationshell/ApplicationShellSidebar.d.ts +18 -0
- package/dist/lib/applicationshell/ApplicationShellSidebar.d.ts.map +1 -0
- package/dist/lib/applicationshell/ApplicationShellSidebar.js +52 -0
- package/dist/lib/applicationshell/ApplicationShellSidebar.js.map +1 -0
- package/dist/lib/applicationshell/TitleBar.d.ts +6 -2
- package/dist/lib/applicationshell/TitleBar.d.ts.map +1 -1
- package/dist/lib/applicationshell/TitleBar.js +39 -33
- package/dist/lib/applicationshell/TitleBar.js.map +1 -1
- package/dist/lib/button_bar/ButtonBar.d.ts.map +1 -1
- package/dist/lib/button_bar/ButtonBar.js.map +1 -1
- package/dist/lib/commons/currencysymbol.js.map +1 -1
- package/dist/lib/errorbox/ErrorBox.js +6 -6
- package/dist/lib/errorbox/ErrorBox.js.map +1 -1
- package/dist/lib/i18n/i18n.detect.d.ts.map +1 -1
- package/dist/lib/i18n/i18n.react.d.ts.map +1 -1
- package/dist/lib/i18n/i18n.react.js.map +1 -1
- package/dist/lib/i18n/i18n.types.d.ts.map +1 -1
- package/dist/lib/i18n/index.d.ts.map +1 -1
- package/dist/lib/inlineedit/InlineEdit.js +12 -12
- package/dist/lib/inlineedit/InlineEdit.js.map +1 -1
- package/dist/lib/listview/ListView.js +25 -24
- package/dist/lib/listview/ListView.js.map +1 -1
- package/dist/lib/localdate/InputLocalDate.js +3 -2
- package/dist/lib/localdate/InputLocalDate.js.map +1 -1
- package/dist/lib/month/InputMonth.js +9 -8
- package/dist/lib/month/InputMonth.js.map +1 -1
- package/dist/lib/navigation/Navigation.d.ts +5 -1
- package/dist/lib/navigation/Navigation.d.ts.map +1 -1
- package/dist/lib/navigation/Navigation.js +24 -26
- package/dist/lib/navigation/Navigation.js.map +1 -1
- package/dist/lib/navigation/Navigation.types.d.ts +59 -17
- package/dist/lib/navigation/Navigation.types.d.ts.map +1 -1
- package/dist/lib/responsive/useMobile.d.ts +2 -0
- package/dist/lib/responsive/useMobile.d.ts.map +1 -0
- package/dist/lib/responsive/useMobile.js +12 -0
- package/dist/lib/responsive/useMobile.js.map +1 -0
- package/dist/lib/view_layout/ViewTitle.d.ts.map +1 -1
- package/dist/lib/view_layout/ViewTitle.js +22 -25
- package/dist/lib/view_layout/ViewTitle.js.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SeijUIProvider.d.ts","sourceRoot":"","sources":["../../src/init/SeijUIProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAc1C,UAAU,mBAAoB,SAAQ,iBAAiB;
|
|
1
|
+
{"version":3,"file":"SeijUIProvider.d.ts","sourceRoot":"","sources":["../../src/init/SeijUIProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAc1C,UAAU,mBAAoB,SAAQ,iBAAiB;CAAG;AAE1D,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,mBAAmB,2CAS/D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SeijUIProvider.js","sources":["../../src/init/SeijUIProvider.tsx"],"sourcesContent":["import { FluentProvider, Theme, webLightTheme } from \"@fluentui/react-components\";\n\nimport { PropsWithChildren } from \"react\";\nimport { ErrorManager } from \"../lib/error_notifier/ErrorNotifier\";\nimport { I18nProvider } from \"../lib/i18n/i18n.react\";\n\n// noinspection SpellCheckingInspection\nconst theme: Theme = {\n ...webLightTheme,\n fontFamilyBase:\n \"'Noto Sans', 'Segoe UI', 'Segoe UI Web (West European)', -apple-system, BlinkMacSystemFont, Roboto, 'Helvetica Neue', sans-serif\",\n fontFamilyMonospace: \"Fira Mono, Consolas, 'Courier New', Courier, monospace\",\n fontFamilyNumeric:\n \"Bahnschrift, 'Segoe UI', 'Segoe UI Web (West European)', -apple-system, BlinkMacSystemFont, Roboto, 'Helvetica Neue', sans-serif\",\n};\n\ninterface SeijUIProviderProps extends PropsWithChildren {
|
|
1
|
+
{"version":3,"file":"SeijUIProvider.js","sources":["../../src/init/SeijUIProvider.tsx"],"sourcesContent":["import { FluentProvider, Theme, webLightTheme } from \"@fluentui/react-components\";\n\nimport { PropsWithChildren } from \"react\";\nimport { ErrorManager } from \"../lib/error_notifier/ErrorNotifier\";\nimport { I18nProvider } from \"../lib/i18n/i18n.react\";\n\n// noinspection SpellCheckingInspection\nconst theme: Theme = {\n ...webLightTheme,\n fontFamilyBase:\n \"'Noto Sans', 'Segoe UI', 'Segoe UI Web (West European)', -apple-system, BlinkMacSystemFont, Roboto, 'Helvetica Neue', sans-serif\",\n fontFamilyMonospace: \"Fira Mono, Consolas, 'Courier New', Courier, monospace\",\n fontFamilyNumeric:\n \"Bahnschrift, 'Segoe UI', 'Segoe UI Web (West European)', -apple-system, BlinkMacSystemFont, Roboto, 'Helvetica Neue', sans-serif\",\n};\n\ninterface SeijUIProviderProps extends PropsWithChildren {}\n\nexport function SeijUIProvider({ children }: SeijUIProviderProps) {\n return (\n <I18nProvider>\n <FluentProvider theme={theme}>\n {children}\n <ErrorManager />\n </FluentProvider>\n </I18nProvider>\n );\n}\n"],"names":["theme","webLightTheme","SeijUIProvider","children","jsx","I18nProvider","jsxs","FluentProvider","ErrorManager"],"mappings":";;;;AAOA,MAAMA,IAAe;AAAA,EACnB,GAAGC;AAAA,EACH,gBACE;AAAA,EACF,qBAAqB;AAAA,EACrB,mBACE;AACJ;AAIO,SAASC,EAAe,EAAE,UAAAC,KAAiC;AAChE,SACE,gBAAAC,EAACC,GAAA,EACC,UAAA,gBAAAC,EAACC,GAAA,EAAe,OAAAP,GACb,UAAA;AAAA,IAAAG;AAAA,sBACAK,GAAA,CAAA,CAAa;AAAA,EAAA,EAAA,CAChB,EAAA,CACF;AAEJ;"}
|
|
@@ -1,13 +1,84 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
2
|
import { NavigationTreeItem } from '../navigation/Navigation.types';
|
|
3
3
|
import { UserStatus } from './ApplicationShell.types';
|
|
4
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Props for the `ApplicationShell` layout component.
|
|
6
|
+
*
|
|
7
|
+
* The shell renders a persistent left navigation (Fluent UI `NavDrawer`), a top `TitleBar`,
|
|
8
|
+
* and your main application content. It also wires navigation events so the currently
|
|
9
|
+
* selected item reflects the browser URL and clicking items triggers navigation.
|
|
10
|
+
*/
|
|
11
|
+
export interface ApplicationShellProps {
|
|
12
|
+
/**
|
|
13
|
+
* Human‑readable name of the application displayed in the `TitleBar`.
|
|
14
|
+
* Example: "Orders Console".
|
|
15
|
+
*/
|
|
5
16
|
applicationName: string;
|
|
17
|
+
/**
|
|
18
|
+
* Icon to display next to the application name
|
|
19
|
+
*/
|
|
20
|
+
applicationIcon?: ReactNode;
|
|
21
|
+
/**
|
|
22
|
+
* Main content of the page. This is rendered in the scrollable content area on the right
|
|
23
|
+
* of the navigation drawer. Typically the routed page/component for the current URL.
|
|
24
|
+
*/
|
|
6
25
|
main: ReactNode;
|
|
26
|
+
/**
|
|
27
|
+
* Tree of navigation items used to render the side navigation and compute selection.
|
|
28
|
+
* Items may be categories or leaf entries with a `path`. When a leaf item is selected
|
|
29
|
+
* and has a `path`, `navigate(path)` is invoked.
|
|
30
|
+
*/
|
|
7
31
|
navigationItems: NavigationTreeItem[];
|
|
32
|
+
/**
|
|
33
|
+
* Current user status information shown in the `TitleBar` (e.g., username, avatar, roles).
|
|
34
|
+
*/
|
|
8
35
|
userStatus: UserStatus;
|
|
36
|
+
/**
|
|
37
|
+
* Called when the home button in the `TitleBar` is clicked.
|
|
38
|
+
* Use this to navigate to your application home route or perform any related action.
|
|
39
|
+
*/
|
|
9
40
|
onClickHome: () => void;
|
|
41
|
+
/**
|
|
42
|
+
* Imperative navigation function called when a navigation leaf item with a `path`
|
|
43
|
+
* is selected. Provide the function from your router (e.g., react-router navigate).
|
|
44
|
+
*/
|
|
10
45
|
navigate: (path: string) => void;
|
|
46
|
+
/**
|
|
47
|
+
* Function used to check whether the current browser location matches a given item `path`.
|
|
48
|
+
* It is used at render time to preselect the item that corresponds to the current URL.
|
|
49
|
+
* Return `true` if the provided `path` matches the active route.
|
|
50
|
+
*/
|
|
11
51
|
matchPath: (path: string | undefined) => boolean;
|
|
12
|
-
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* ApplicationShell
|
|
55
|
+
*
|
|
56
|
+
* High‑level layout component that composes the application chrome:
|
|
57
|
+
* - Top `TitleBar` showing the application name and user status
|
|
58
|
+
* - Left `NavDrawer` for hierarchical navigation
|
|
59
|
+
* - Main scrollable content area where your routed page is rendered
|
|
60
|
+
*
|
|
61
|
+
* Behavior
|
|
62
|
+
* - Preselects the navigation item that matches the current URL via `matchPath`
|
|
63
|
+
* - When a leaf item with a `path` is clicked, calls `navigate(path)`
|
|
64
|
+
* - Keeps track of opened navigation categories and the selected item
|
|
65
|
+
* - Displays a hamburger in the TitleBar to toggle the navigation drawer
|
|
66
|
+
*
|
|
67
|
+
* Usage (example)
|
|
68
|
+
*
|
|
69
|
+
* ```tsx
|
|
70
|
+
* <ApplicationShell
|
|
71
|
+
* applicationName="Orders Console"
|
|
72
|
+
* navigationItems={items}
|
|
73
|
+
* userStatus={{ displayName: "Jane Doe" }}
|
|
74
|
+
* onClickHome={() => navigate("/")}
|
|
75
|
+
* navigate={(path) => navigate(path)}
|
|
76
|
+
* matchPath={(path) => !!path && !!match(path)}
|
|
77
|
+
* main={<Outlet />}
|
|
78
|
+
* />
|
|
79
|
+
* ```
|
|
80
|
+
* Where `navigate`/`match` typically come from your router (e.g., react‑router v6's
|
|
81
|
+
* `useNavigate`/`useMatch`). See `ApplicationShellProps` for details on each prop.
|
|
82
|
+
*/
|
|
83
|
+
export declare function ApplicationShell({ applicationName, applicationIcon, main, navigationItems, userStatus, onClickHome, navigate, matchPath, }: ApplicationShellProps): import("react/jsx-runtime").JSX.Element;
|
|
13
84
|
//# sourceMappingURL=ApplicationShell.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApplicationShell.d.ts","sourceRoot":"","sources":["../../../src/lib/applicationshell/ApplicationShell.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ApplicationShell.d.ts","sourceRoot":"","sources":["../../../src/lib/applicationshell/ApplicationShell.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAgC,MAAM,OAAO,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAmCtD;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B;;;OAGG;IACH,IAAI,EAAE,SAAS,CAAC;IAEhB;;;;OAIG;IACH,eAAe,EAAE,kBAAkB,EAAE,CAAC;IAEtC;;OAEG;IACH,UAAU,EAAE,UAAU,CAAC;IAEvB;;;OAGG;IACH,WAAW,EAAE,MAAM,IAAI,CAAC;IAExB;;;OAGG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAEjC;;;;OAIG;IACH,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,KAAK,OAAO,CAAC;CAClD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,eAAe,EACf,eAAe,EACf,IAAI,EACJ,eAAe,EACf,UAAU,EACV,WAAW,EACX,QAAQ,EACR,SAAS,GACV,EAAE,qBAAqB,2CAqHvB"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { makeStyles as
|
|
3
|
-
import { useState as
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
1
|
+
import { jsxs as S, jsx as a } from "react/jsx-runtime";
|
|
2
|
+
import { makeStyles as E, tokens as F } from "@fluentui/react-components";
|
|
3
|
+
import { useState as c, useMemo as R, useEffect as T } from "react";
|
|
4
|
+
import { createNavigationTreeItemServiceImpl as P } from "../navigation/NavigationService.js";
|
|
5
|
+
import { TitleBar as U } from "./TitleBar.js";
|
|
6
|
+
import { useIsMobile as q } from "../responsive/useMobile.js";
|
|
7
|
+
import { Rails as z } from "./ApplicationShellRails.js";
|
|
8
|
+
import { Sidebar as G } from "./ApplicationShellSidebar.js";
|
|
9
|
+
import { MenuBurger as H } from "./ApplicationShellHamburger.js";
|
|
10
|
+
const J = E({
|
|
8
11
|
shell: {
|
|
9
12
|
width: "100vw",
|
|
10
13
|
height: "100vh",
|
|
@@ -28,83 +31,85 @@ const y = j({
|
|
|
28
31
|
justifyContent: "flex-start",
|
|
29
32
|
alignItems: "flex-start",
|
|
30
33
|
overflow: "auto",
|
|
31
|
-
backgroundColor:
|
|
32
|
-
},
|
|
33
|
-
bugerIcon: {
|
|
34
|
-
color: m.colorNeutralForegroundOnBrand,
|
|
35
|
-
":hover": {
|
|
36
|
-
color: m.colorNeutralForegroundOnBrand
|
|
37
|
-
}
|
|
34
|
+
backgroundColor: F.colorNeutralBackground2
|
|
38
35
|
}
|
|
39
36
|
});
|
|
40
|
-
function
|
|
41
|
-
applicationName:
|
|
42
|
-
|
|
43
|
-
|
|
37
|
+
function te({
|
|
38
|
+
applicationName: o,
|
|
39
|
+
applicationIcon: p,
|
|
40
|
+
main: M,
|
|
41
|
+
navigationItems: d,
|
|
44
42
|
userStatus: f,
|
|
45
|
-
onClickHome:
|
|
46
|
-
navigate:
|
|
47
|
-
matchPath:
|
|
43
|
+
onClickHome: m,
|
|
44
|
+
navigate: k,
|
|
45
|
+
matchPath: v
|
|
48
46
|
}) {
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
47
|
+
const t = d.find((n) => "path" in n && n.path !== null && v(n.path)), y = t?.id, w = t && "parentId" in t && t.parentId !== null ? [t.parentId] : [], i = q(), s = J(), [l, g] = c(K), [x, _] = c(!1), [B, N] = c(y ?? ""), [r, h] = c(w), O = R(() => P(d), [d]);
|
|
48
|
+
T(() => {
|
|
49
|
+
i || localStorage.setItem("sidebarMode", l);
|
|
50
|
+
}, [i, l]);
|
|
51
|
+
const C = () => {
|
|
52
|
+
_(!x);
|
|
53
|
+
}, b = () => {
|
|
54
|
+
l === "expanded" && g("rails"), l === "rails" && g("expanded");
|
|
55
|
+
}, I = (n) => {
|
|
56
|
+
const e = O.findById(n);
|
|
57
|
+
N(e.id);
|
|
58
|
+
const u = "parentId" in e ? e.parentId : null;
|
|
59
|
+
u && (r.find((A) => A === u) || h([...r, u])), "path" in e && e.path && k(e.path);
|
|
60
|
+
}, j = (n) => {
|
|
61
|
+
r.find((e) => e === n) ? h(r.filter((e) => e !== n)) : h([...r, n]);
|
|
62
|
+
}, D = [];
|
|
63
|
+
return t && "parentId" in t && t.parentId !== null && D.push(t.parentId), /* @__PURE__ */ S("div", { "data-e2e-id": "shell", className: s.shell, children: [
|
|
64
|
+
/* @__PURE__ */ a("div", { "data-e2e-id": "shell__menu_top", className: s.titleBar, children: i ? /* @__PURE__ */ a(
|
|
65
|
+
U,
|
|
62
66
|
{
|
|
63
|
-
applicationName:
|
|
67
|
+
applicationName: o,
|
|
68
|
+
applicationIcon: p,
|
|
64
69
|
userStatus: f,
|
|
65
|
-
onClickHome:
|
|
66
|
-
hamburger: /* @__PURE__ */
|
|
70
|
+
onClickHome: m,
|
|
71
|
+
hamburger: /* @__PURE__ */ a(H, { onClick: C })
|
|
67
72
|
}
|
|
68
|
-
) }),
|
|
69
|
-
/* @__PURE__ */
|
|
70
|
-
/* @__PURE__ */
|
|
71
|
-
|
|
73
|
+
) : null }),
|
|
74
|
+
/* @__PURE__ */ S("div", { "data-e2e-id": "shell__main", className: s.main, children: [
|
|
75
|
+
(!i && l === "expanded" || i) && /* @__PURE__ */ a(
|
|
76
|
+
G,
|
|
77
|
+
{
|
|
78
|
+
selectedItem: B,
|
|
79
|
+
openedCategories: r,
|
|
80
|
+
drawerOpen: x,
|
|
81
|
+
isMobile: i,
|
|
82
|
+
applicationName: o,
|
|
83
|
+
applicationIcon: p,
|
|
84
|
+
userStatus: f,
|
|
85
|
+
navigationItems: d,
|
|
86
|
+
onClickHome: m,
|
|
87
|
+
onClickHamburger: C,
|
|
88
|
+
onClickMenuItem: I,
|
|
89
|
+
onClickCategory: j,
|
|
90
|
+
onClickPanelReduce: b
|
|
91
|
+
}
|
|
92
|
+
),
|
|
93
|
+
l === "rails" && /* @__PURE__ */ a(
|
|
94
|
+
z,
|
|
72
95
|
{
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
D(e.value);
|
|
80
|
-
},
|
|
81
|
-
onNavCategoryItemToggle: (t, e) => {
|
|
82
|
-
O(e.categoryValue ?? "");
|
|
83
|
-
},
|
|
84
|
-
children: [
|
|
85
|
-
/* @__PURE__ */ n(
|
|
86
|
-
I,
|
|
87
|
-
{
|
|
88
|
-
applicationName: a,
|
|
89
|
-
userStatus: f,
|
|
90
|
-
onClickHome: g,
|
|
91
|
-
hamburger: /* @__PURE__ */ n(N, { onClick: v })
|
|
92
|
-
}
|
|
93
|
-
),
|
|
94
|
-
/* @__PURE__ */ n(A, {}),
|
|
95
|
-
/* @__PURE__ */ n(H, { children: /* @__PURE__ */ n(z, { items: o }) })
|
|
96
|
-
]
|
|
96
|
+
applicationIcon: p,
|
|
97
|
+
navigationItems: d,
|
|
98
|
+
userStatus: f,
|
|
99
|
+
onClickHome: m,
|
|
100
|
+
onClickMenuItem: I,
|
|
101
|
+
onClickSidebarExpand: b
|
|
97
102
|
}
|
|
98
103
|
),
|
|
99
|
-
/* @__PURE__ */
|
|
104
|
+
/* @__PURE__ */ a("div", { "data-e2e-id": "shell__content", className: s.content, children: M })
|
|
100
105
|
] })
|
|
101
106
|
] });
|
|
102
107
|
}
|
|
103
|
-
const
|
|
104
|
-
const
|
|
105
|
-
return
|
|
108
|
+
const K = () => {
|
|
109
|
+
const o = localStorage.getItem("sidebarMode");
|
|
110
|
+
return o === "expanded" ? "expanded" : o === "rails" ? "rails" : "expanded";
|
|
106
111
|
};
|
|
107
112
|
export {
|
|
108
|
-
|
|
113
|
+
te as ApplicationShell
|
|
109
114
|
};
|
|
110
115
|
//# sourceMappingURL=ApplicationShell.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApplicationShell.js","sources":["../../../src/lib/applicationshell/ApplicationShell.tsx"],"sourcesContent":["import {\n Hamburger,\n makeStyles,\n NavDrawer,\n NavDrawerBody,\n NavDrawerHeader,\n tokens,\n Tooltip,\n} from \"@fluentui/react-components\";\nimport { ReactNode, useMemo, useState } from \"react\";\nimport { Navigation } from \"../navigation/Navigation\";\nimport { NavigationTreeItem } from \"../navigation/Navigation.types\";\nimport { createNavigationTreeItemServiceImpl } from \"../navigation/NavigationService\";\nimport { UserStatus } from \"./ApplicationShell.types\";\nimport { TitleBar } from \"./TitleBar\";\n\nconst useApplicationShellStyles = makeStyles({\n shell: {\n width: \"100vw\",\n height: \"100vh\",\n display: \"flex\",\n flexDirection: \"column\",\n overflow: \"hidden\",\n },\n titleBar: {\n width: \"100%\",\n height: \"48px\",\n flex: 0,\n },\n main: {\n overflow: \"hidden\",\n display: \"flex\",\n height: \"100%\",\n },\n content: {\n flex: \"1\",\n display: \"bloc\",\n justifyContent: \"flex-start\",\n alignItems: \"flex-start\",\n overflow: \"auto\",\n backgroundColor: tokens.colorNeutralBackground2,\n },\n bugerIcon: {\n color: tokens.colorNeutralForegroundOnBrand,\n \":hover\": {\n color: tokens.colorNeutralForegroundOnBrand,\n },\n },\n});\n\nexport function ApplicationShell({\n applicationName,\n main,\n navigationItems,\n userStatus,\n onClickHome,\n navigate,\n matchPath,\n}: {\n applicationName: string;\n main: ReactNode;\n navigationItems: NavigationTreeItem[];\n userStatus: UserStatus;\n onClickHome: () => void;\n navigate: (path: string) => void;\n matchPath: (path: string | undefined) => boolean;\n}) {\n // test si le chemin courant du navigateur correspond à cet item\n // attention, on est obligés de tester tous les items, qu'ils aient\n // un lien ou pas, d'où le url-inconnue pour ceux qui n'ont pas de lien.\n // On est obligés car useMatch est un hook que l'on ne peut pas lancer\n // de manière conditionnelle\n const navigationItemFound = navigationItems.find((it) => \"path\" in it && it.path !== null && matchPath(it.path));\n const navigationItemSelectedFromUrl = navigationItemFound?.id;\n const defaultOpenCategory =\n navigationItemFound && \"parentId\" in navigationItemFound && navigationItemFound.parentId !== null\n ? [navigationItemFound.parentId]\n : [];\n\n const styles = useApplicationShellStyles();\n const [navDrawerOpened, setNavDrawerOpened] = useState<boolean>(true);\n const [selectedItem, setSelectedItem] = useState<string>(navigationItemSelectedFromUrl ?? \"\");\n const [openedCategories, setOpenCategories] = useState<string[]>(defaultOpenCategory);\n\n const navigationService = useMemo(() => createNavigationTreeItemServiceImpl(navigationItems), [navigationItems]);\n const handleClickHamburger = () => {\n setNavDrawerOpened(!navDrawerOpened);\n };\n\n const handleClickMenuItem = (itemId: string) => {\n const item = navigationService.findById(itemId);\n setSelectedItem(item.id);\n const parentId = \"parentId\" in item ? item.parentId : null;\n if (parentId) {\n if (!openedCategories.find((cat) => cat === parentId)) {\n setOpenCategories([...openedCategories, parentId]);\n }\n }\n if (\"path\" in item && item.path) navigate(item.path);\n };\n\n const handleClickCategory = (categoryId: string) => {\n if (!openedCategories.find((cat) => cat === categoryId)) {\n setOpenCategories([...openedCategories, categoryId]);\n } else {\n setOpenCategories(openedCategories.filter((it) => it !== categoryId));\n }\n };\n\n const openCategories: string[] = [];\n if (navigationItemFound && \"parentId\" in navigationItemFound && navigationItemFound.parentId !== null) {\n openCategories.push(navigationItemFound.parentId);\n }\n\n return (\n <div data-e2e-id=\"shell\" className={styles.shell}>\n <div data-e2e-id=\"shell__menu_top\" className={styles.titleBar}>\n {!navDrawerOpened ? (\n <TitleBar\n applicationName={applicationName}\n userStatus={userStatus}\n onClickHome={onClickHome}\n hamburger={<MenuBurger onClick={handleClickHamburger} />}\n />\n ) : null}\n </div>\n <div data-e2e-id=\"shell__main\" className={styles.main}>\n <NavDrawer\n selectedValue={selectedItem}\n open={navDrawerOpened}\n density={\"small\"}\n type={\"inline\"}\n openCategories={openedCategories}\n onNavItemSelect={(e, data) => {\n handleClickMenuItem(data.value);\n }}\n onNavCategoryItemToggle={(e, data) => {\n handleClickCategory(data.categoryValue ?? \"\");\n }}\n >\n <TitleBar\n applicationName={applicationName}\n userStatus={userStatus}\n onClickHome={onClickHome}\n hamburger={<MenuBurger onClick={handleClickHamburger} />}\n />\n <NavDrawerHeader></NavDrawerHeader>\n <NavDrawerBody>\n <Navigation items={navigationItems} />\n </NavDrawerBody>\n </NavDrawer>\n <div data-e2e-id=\"shell__content\" className={styles.content}>\n {main}\n </div>\n </div>\n </div>\n );\n}\n\nconst MenuBurger = ({ onClick }: { onClick: () => void }) => {\n const styles = useApplicationShellStyles();\n return (\n <Tooltip content=\"Navigation\" relationship=\"label\">\n <Hamburger className={styles.bugerIcon} onClick={onClick} />\n </Tooltip>\n );\n};\n"],"names":["useApplicationShellStyles","makeStyles","tokens","ApplicationShell","applicationName","main","navigationItems","userStatus","onClickHome","navigate","matchPath","navigationItemFound","it","navigationItemSelectedFromUrl","defaultOpenCategory","styles","navDrawerOpened","setNavDrawerOpened","useState","selectedItem","setSelectedItem","openedCategories","setOpenCategories","navigationService","useMemo","createNavigationTreeItemServiceImpl","handleClickHamburger","handleClickMenuItem","itemId","item","parentId","cat","handleClickCategory","categoryId","openCategories","jsx","TitleBar","MenuBurger","jsxs","NavDrawer","e","data","NavDrawerHeader","NavDrawerBody","Navigation","onClick","Tooltip","Hamburger"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ApplicationShell.js","sources":["../../../src/lib/applicationshell/ApplicationShell.tsx"],"sourcesContent":["import { makeStyles, tokens } from \"@fluentui/react-components\";\nimport { ReactNode, useEffect, useMemo, useState } from \"react\";\nimport { NavigationTreeItem } from \"../navigation/Navigation.types\";\nimport { createNavigationTreeItemServiceImpl } from \"../navigation/NavigationService\";\nimport { UserStatus } from \"./ApplicationShell.types\";\nimport { TitleBar } from \"./TitleBar\";\nimport { useIsMobile } from \"../responsive/useMobile\";\nimport { Rails } from \"./ApplicationShellRails\";\nimport { Sidebar } from \"./ApplicationShellSidebar\";\nimport { MenuBurger } from \"./ApplicationShellHamburger\";\n\nconst useApplicationShellStyles = makeStyles({\n shell: {\n width: \"100vw\",\n height: \"100vh\",\n display: \"flex\",\n flexDirection: \"column\",\n overflow: \"hidden\",\n },\n titleBar: {\n width: \"100%\",\n height: \"48px\",\n flex: 0,\n },\n main: {\n overflow: \"hidden\",\n display: \"flex\",\n height: \"100%\",\n },\n content: {\n flex: \"1\",\n display: \"bloc\",\n justifyContent: \"flex-start\",\n alignItems: \"flex-start\",\n overflow: \"auto\",\n backgroundColor: tokens.colorNeutralBackground2,\n },\n});\n\n/**\n * Props for the `ApplicationShell` layout component.\n *\n * The shell renders a persistent left navigation (Fluent UI `NavDrawer`), a top `TitleBar`,\n * and your main application content. It also wires navigation events so the currently\n * selected item reflects the browser URL and clicking items triggers navigation.\n */\nexport interface ApplicationShellProps {\n /**\n * Human‑readable name of the application displayed in the `TitleBar`.\n * Example: \"Orders Console\".\n */\n applicationName: string;\n /**\n * Icon to display next to the application name\n */\n applicationIcon?: ReactNode;\n /**\n * Main content of the page. This is rendered in the scrollable content area on the right\n * of the navigation drawer. Typically the routed page/component for the current URL.\n */\n main: ReactNode;\n\n /**\n * Tree of navigation items used to render the side navigation and compute selection.\n * Items may be categories or leaf entries with a `path`. When a leaf item is selected\n * and has a `path`, `navigate(path)` is invoked.\n */\n navigationItems: NavigationTreeItem[];\n\n /**\n * Current user status information shown in the `TitleBar` (e.g., username, avatar, roles).\n */\n userStatus: UserStatus;\n\n /**\n * Called when the home button in the `TitleBar` is clicked.\n * Use this to navigate to your application home route or perform any related action.\n */\n onClickHome: () => void;\n\n /**\n * Imperative navigation function called when a navigation leaf item with a `path`\n * is selected. Provide the function from your router (e.g., react-router navigate).\n */\n navigate: (path: string) => void;\n\n /**\n * Function used to check whether the current browser location matches a given item `path`.\n * It is used at render time to preselect the item that corresponds to the current URL.\n * Return `true` if the provided `path` matches the active route.\n */\n matchPath: (path: string | undefined) => boolean;\n}\n\n/**\n * ApplicationShell\n *\n * High‑level layout component that composes the application chrome:\n * - Top `TitleBar` showing the application name and user status\n * - Left `NavDrawer` for hierarchical navigation\n * - Main scrollable content area where your routed page is rendered\n *\n * Behavior\n * - Preselects the navigation item that matches the current URL via `matchPath`\n * - When a leaf item with a `path` is clicked, calls `navigate(path)`\n * - Keeps track of opened navigation categories and the selected item\n * - Displays a hamburger in the TitleBar to toggle the navigation drawer\n *\n * Usage (example)\n *\n * ```tsx\n * <ApplicationShell\n * applicationName=\"Orders Console\"\n * navigationItems={items}\n * userStatus={{ displayName: \"Jane Doe\" }}\n * onClickHome={() => navigate(\"/\")}\n * navigate={(path) => navigate(path)}\n * matchPath={(path) => !!path && !!match(path)}\n * main={<Outlet />}\n * />\n * ```\n * Where `navigate`/`match` typically come from your router (e.g., react‑router v6's\n * `useNavigate`/`useMatch`). See `ApplicationShellProps` for details on each prop.\n */\nexport function ApplicationShell({\n applicationName,\n applicationIcon,\n main,\n navigationItems,\n userStatus,\n onClickHome,\n navigate,\n matchPath,\n}: ApplicationShellProps) {\n // test si le chemin courant du navigateur correspond à cet item\n // attention, on est obligés de tester tous les items, qu'ils aient\n // un lien ou pas, d'où le url-inconnue pour ceux qui n'ont pas de lien.\n // On est obligés car useMatch est un hook que l'on ne peut pas lancer\n // de manière conditionnelle\n const navigationItemFound = navigationItems.find((it) => \"path\" in it && it.path !== null && matchPath(it.path));\n const navigationItemSelectedFromUrl = navigationItemFound?.id;\n const defaultOpenCategory =\n navigationItemFound && \"parentId\" in navigationItemFound && navigationItemFound.parentId !== null\n ? [navigationItemFound.parentId]\n : [];\n\n // Hooks\n const isMobile = useIsMobile();\n const styles = useApplicationShellStyles();\n\n const [sidebarMode, setSidebarMode] = useState<\"rails\" | \"expanded\">(initialSidebarModeDetect);\n const [drawerOpen, setDrawerOpen] = useState(false);\n const [selectedItem, setSelectedItem] = useState<string>(navigationItemSelectedFromUrl ?? \"\");\n const [openedCategories, setOpenCategories] = useState<string[]>(defaultOpenCategory);\n const navigationService = useMemo(() => createNavigationTreeItemServiceImpl(navigationItems), [navigationItems]);\n\n useEffect(() => {\n // Persist user choice for the rails or sidebar mode\n if (!isMobile) {\n localStorage.setItem(\"sidebarMode\", sidebarMode);\n }\n }, [isMobile, sidebarMode]);\n\n // Events\n\n const handleClickHamburger = () => {\n setDrawerOpen(!drawerOpen);\n };\n\n const handleChangeSidebarMode = () => {\n if (sidebarMode === \"expanded\") {\n setSidebarMode(\"rails\");\n }\n if (sidebarMode === \"rails\") {\n setSidebarMode(\"expanded\");\n }\n };\n\n const handleClickMenuItem = (itemId: string) => {\n const item = navigationService.findById(itemId);\n setSelectedItem(item.id);\n const parentId = \"parentId\" in item ? item.parentId : null;\n if (parentId) {\n if (!openedCategories.find((cat) => cat === parentId)) {\n setOpenCategories([...openedCategories, parentId]);\n }\n }\n if (\"path\" in item && item.path) navigate(item.path);\n };\n\n const handleClickCategory = (categoryId: string) => {\n if (!openedCategories.find((cat) => cat === categoryId)) {\n setOpenCategories([...openedCategories, categoryId]);\n } else {\n setOpenCategories(openedCategories.filter((it) => it !== categoryId));\n }\n };\n\n const openCategories: string[] = [];\n if (navigationItemFound && \"parentId\" in navigationItemFound && navigationItemFound.parentId !== null) {\n openCategories.push(navigationItemFound.parentId);\n }\n\n return (\n <div data-e2e-id=\"shell\" className={styles.shell}>\n <div data-e2e-id=\"shell__menu_top\" className={styles.titleBar}>\n {isMobile ? (\n <TitleBar\n applicationName={applicationName}\n applicationIcon={applicationIcon}\n userStatus={userStatus}\n onClickHome={onClickHome}\n hamburger={<MenuBurger onClick={handleClickHamburger} />}\n />\n ) : null}\n </div>\n <div data-e2e-id=\"shell__main\" className={styles.main}>\n {((!isMobile && sidebarMode === \"expanded\") || isMobile) && (\n <Sidebar\n selectedItem={selectedItem}\n openedCategories={openedCategories}\n drawerOpen={drawerOpen}\n isMobile={isMobile}\n applicationName={applicationName}\n applicationIcon={applicationIcon}\n userStatus={userStatus}\n navigationItems={navigationItems}\n onClickHome={onClickHome}\n onClickHamburger={handleClickHamburger}\n onClickMenuItem={handleClickMenuItem}\n onClickCategory={handleClickCategory}\n onClickPanelReduce={handleChangeSidebarMode}\n />\n )}\n {sidebarMode === \"rails\" && (\n <Rails\n applicationIcon={applicationIcon}\n navigationItems={navigationItems}\n userStatus={userStatus}\n onClickHome={onClickHome}\n onClickMenuItem={handleClickMenuItem}\n onClickSidebarExpand={handleChangeSidebarMode}\n />\n )}\n <div data-e2e-id=\"shell__content\" className={styles.content}>\n {main}\n </div>\n </div>\n </div>\n );\n}\n\nconst initialSidebarModeDetect = () => {\n const value = localStorage.getItem(\"sidebarMode\");\n if (value === \"expanded\") return \"expanded\";\n if (value === \"rails\") return \"rails\";\n return \"expanded\";\n};\n"],"names":["useApplicationShellStyles","makeStyles","tokens","ApplicationShell","applicationName","applicationIcon","main","navigationItems","userStatus","onClickHome","navigate","matchPath","navigationItemFound","it","navigationItemSelectedFromUrl","defaultOpenCategory","isMobile","useIsMobile","styles","sidebarMode","setSidebarMode","useState","initialSidebarModeDetect","drawerOpen","setDrawerOpen","selectedItem","setSelectedItem","openedCategories","setOpenCategories","navigationService","useMemo","createNavigationTreeItemServiceImpl","useEffect","handleClickHamburger","handleChangeSidebarMode","handleClickMenuItem","itemId","item","parentId","cat","handleClickCategory","categoryId","openCategories","jsx","TitleBar","MenuBurger","Sidebar","Rails","value"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApplicationShellHamburger.d.ts","sourceRoot":"","sources":["../../../src/lib/applicationshell/ApplicationShellHamburger.tsx"],"names":[],"mappings":"AASA,eAAO,MAAM,UAAU,GAAI,aAAa;IAAE,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,4CAO9D,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { jsx as o } from "react/jsx-runtime";
|
|
2
|
+
import { makeStyles as t, tokens as r, Tooltip as l, Hamburger as a } from "@fluentui/react-components";
|
|
3
|
+
const c = t({
|
|
4
|
+
bugerIcon: {
|
|
5
|
+
color: r.colorNeutralForegroundOnBrand,
|
|
6
|
+
":hover": {
|
|
7
|
+
color: r.colorNeutralForegroundOnBrand
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
}), i = ({ onClick: e }) => {
|
|
11
|
+
const n = c();
|
|
12
|
+
return /* @__PURE__ */ o(l, { content: "Navigation", relationship: "label", children: /* @__PURE__ */ o(a, { className: n.bugerIcon, onClick: e }) });
|
|
13
|
+
};
|
|
14
|
+
export {
|
|
15
|
+
i as MenuBurger
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=ApplicationShellHamburger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApplicationShellHamburger.js","sources":["../../../src/lib/applicationshell/ApplicationShellHamburger.tsx"],"sourcesContent":["import { Hamburger, makeStyles, tokens, Tooltip } from \"@fluentui/react-components\";\nconst useApplicationShellStyles = makeStyles({\n bugerIcon: {\n color: tokens.colorNeutralForegroundOnBrand,\n \":hover\": {\n color: tokens.colorNeutralForegroundOnBrand,\n },\n },\n});\nexport const MenuBurger = ({ onClick }: { onClick: () => void }) => {\n const styles = useApplicationShellStyles();\n return (\n <Tooltip content=\"Navigation\" relationship=\"label\">\n <Hamburger className={styles.bugerIcon} onClick={onClick} />\n </Tooltip>\n );\n};\n"],"names":["useApplicationShellStyles","makeStyles","tokens","MenuBurger","onClick","styles","jsx","Tooltip","Hamburger"],"mappings":";;AACA,MAAMA,IAA4BC,EAAW;AAAA,EAC3C,WAAW;AAAA,IACT,OAAOC,EAAO;AAAA,IACd,UAAU;AAAA,MACR,OAAOA,EAAO;AAAA,IAAA;AAAA,EAChB;AAEJ,CAAC,GACYC,IAAa,CAAC,EAAE,SAAAC,QAAuC;AAClE,QAAMC,IAASL,EAAA;AACf,SACE,gBAAAM,EAACC,GAAA,EAAQ,SAAQ,cAAa,cAAa,SACzC,UAAA,gBAAAD,EAACE,GAAA,EAAU,WAAWH,EAAO,WAAW,SAAAD,EAAA,CAAkB,GAC5D;AAEJ;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApplicationShellPanelContract.d.ts","sourceRoot":"","sources":["../../../src/lib/applicationshell/ApplicationShellPanelContract.tsx"],"names":[],"mappings":"AAGA,eAAO,MAAM,iBAAiB,GAAI,0BAG/B;IACD,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC;IACjC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,4CAWA,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import { Tooltip as o, Button as r } from "@fluentui/react-components";
|
|
3
|
+
import { Icon as a } from "@seij/common-ui-icons";
|
|
4
|
+
const c = ({
|
|
5
|
+
panelState: n,
|
|
6
|
+
onClick: t
|
|
7
|
+
}) => /* @__PURE__ */ e(o, { content: "Reduce panel", relationship: "label", children: /* @__PURE__ */ e(
|
|
8
|
+
r,
|
|
9
|
+
{
|
|
10
|
+
onClick: t,
|
|
11
|
+
icon: /* @__PURE__ */ e(a, { name: n === "expanded" ? "panel_left_reduce" : "panel_left_expand" }),
|
|
12
|
+
size: "medium",
|
|
13
|
+
appearance: "subtle"
|
|
14
|
+
}
|
|
15
|
+
) });
|
|
16
|
+
export {
|
|
17
|
+
c as PanelLeftContract
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=ApplicationShellPanelContract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApplicationShellPanelContract.js","sources":["../../../src/lib/applicationshell/ApplicationShellPanelContract.tsx"],"sourcesContent":["import { Button, Tooltip } from \"@fluentui/react-components\";\nimport { Icon } from \"@seij/common-ui-icons\";\n\nexport const PanelLeftContract = ({\n panelState,\n onClick,\n}: {\n panelState: \"expanded\" | \"rails\";\n onClick: () => void;\n}) => {\n return (\n <Tooltip content=\"Reduce panel\" relationship=\"label\">\n <Button\n onClick={onClick}\n icon={<Icon name={panelState === \"expanded\" ? \"panel_left_reduce\" : \"panel_left_expand\"} />}\n size=\"medium\"\n appearance=\"subtle\"\n />\n </Tooltip>\n );\n};\n"],"names":["PanelLeftContract","panelState","onClick","jsx","Tooltip","Button","Icon"],"mappings":";;;AAGO,MAAMA,IAAoB,CAAC;AAAA,EAChC,YAAAC;AAAA,EACA,SAAAC;AACF,MAKI,gBAAAC,EAACC,GAAA,EAAQ,SAAQ,gBAAe,cAAa,SAC3C,UAAA,gBAAAD;AAAA,EAACE;AAAA,EAAA;AAAA,IACC,SAAAH;AAAA,IACA,MAAM,gBAAAC,EAACG,GAAA,EAAK,MAAML,MAAe,aAAa,sBAAsB,qBAAqB;AAAA,IACzF,MAAK;AAAA,IACL,YAAW;AAAA,EAAA;AAAA,GAEf;"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { NavigationTreeItem, UserStatus } from '@seij/common-ui';
|
|
3
|
+
export declare function Rails({ applicationIcon, navigationItems, userStatus, onClickHome, onClickMenuItem, onClickSidebarExpand, }: {
|
|
4
|
+
applicationIcon?: ReactNode;
|
|
5
|
+
navigationItems: NavigationTreeItem[];
|
|
6
|
+
userStatus: UserStatus;
|
|
7
|
+
onClickHome: () => void;
|
|
8
|
+
onClickMenuItem: (id: string) => void;
|
|
9
|
+
onClickSidebarExpand: () => void;
|
|
10
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
//# sourceMappingURL=ApplicationShellRails.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApplicationShellRails.d.ts","sourceRoot":"","sources":["../../../src/lib/applicationshell/ApplicationShellRails.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAmD,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAsBlH,wBAAgB,KAAK,CAAC,EACpB,eAAe,EACf,eAAe,EACf,UAAU,EACV,WAAW,EACX,eAAe,EACf,oBAAoB,GACrB,EAAE;IACD,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,eAAe,EAAE,kBAAkB,EAAE,CAAC;IACtC,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,oBAAoB,EAAE,MAAM,IAAI,CAAC;CAClC,2CAgDA"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { jsxs as d, jsx as n } from "react/jsx-runtime";
|
|
2
|
+
import { makeStyles as f, tokens as m, Tooltip as r } from "@fluentui/react-components";
|
|
3
|
+
import { User as h } from "./TitleBar.js";
|
|
4
|
+
import { PanelLeftContract as x } from "./ApplicationShellPanelContract.js";
|
|
5
|
+
import { Icon as c, parseIconName as p } from "@seij/common-ui-icons";
|
|
6
|
+
const a = f({
|
|
7
|
+
container: {
|
|
8
|
+
display: "flex",
|
|
9
|
+
textAlign: "center",
|
|
10
|
+
width: "32px",
|
|
11
|
+
height: "32px",
|
|
12
|
+
alignItems: "center",
|
|
13
|
+
alignContent: "center",
|
|
14
|
+
"& > div": {
|
|
15
|
+
width: "100%"
|
|
16
|
+
},
|
|
17
|
+
"&:hover": {
|
|
18
|
+
cursor: "pointer",
|
|
19
|
+
backgroundColor: m.colorNeutralBackground4Hover
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
function j({
|
|
24
|
+
applicationIcon: t,
|
|
25
|
+
navigationItems: i,
|
|
26
|
+
userStatus: l,
|
|
27
|
+
onClickHome: e,
|
|
28
|
+
onClickMenuItem: o,
|
|
29
|
+
onClickSidebarExpand: u
|
|
30
|
+
}) {
|
|
31
|
+
return /* @__PURE__ */ d(
|
|
32
|
+
"div",
|
|
33
|
+
{
|
|
34
|
+
style: {
|
|
35
|
+
backgroundColor: m.colorNeutralBackground4,
|
|
36
|
+
width: "48px",
|
|
37
|
+
height: "100%",
|
|
38
|
+
display: "flex",
|
|
39
|
+
flexDirection: "column"
|
|
40
|
+
},
|
|
41
|
+
children: [
|
|
42
|
+
/* @__PURE__ */ n(
|
|
43
|
+
"div",
|
|
44
|
+
{
|
|
45
|
+
style: {
|
|
46
|
+
display: "flex",
|
|
47
|
+
flexDirection: "column",
|
|
48
|
+
alignItems: "center",
|
|
49
|
+
justifyContent: "start",
|
|
50
|
+
paddingTop: "0.5em"
|
|
51
|
+
},
|
|
52
|
+
children: /* @__PURE__ */ n(y, { applicationIcon: t, onClick: e })
|
|
53
|
+
}
|
|
54
|
+
),
|
|
55
|
+
/* @__PURE__ */ n(
|
|
56
|
+
"div",
|
|
57
|
+
{
|
|
58
|
+
style: {
|
|
59
|
+
flex: 1,
|
|
60
|
+
display: "flex",
|
|
61
|
+
flexDirection: "column",
|
|
62
|
+
alignItems: "center",
|
|
63
|
+
justifyContent: "start"
|
|
64
|
+
},
|
|
65
|
+
children: i.map((s) => /* @__PURE__ */ n(g, { item: s, onClick: o }, s.id))
|
|
66
|
+
}
|
|
67
|
+
),
|
|
68
|
+
/* @__PURE__ */ d(
|
|
69
|
+
"div",
|
|
70
|
+
{
|
|
71
|
+
style: {
|
|
72
|
+
display: "flex",
|
|
73
|
+
flexDirection: "column",
|
|
74
|
+
alignItems: "center",
|
|
75
|
+
justifyContent: "start"
|
|
76
|
+
},
|
|
77
|
+
children: [
|
|
78
|
+
/* @__PURE__ */ n(h, { status: l }),
|
|
79
|
+
/* @__PURE__ */ n(v, { onClick: u })
|
|
80
|
+
]
|
|
81
|
+
}
|
|
82
|
+
)
|
|
83
|
+
]
|
|
84
|
+
}
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
const y = ({ applicationIcon: t, onClick: i }) => {
|
|
88
|
+
const l = a();
|
|
89
|
+
return /* @__PURE__ */ n("div", { className: l.container, onClick: () => i(), children: /* @__PURE__ */ n(r, { content: "Home", relationship: "description", children: /* @__PURE__ */ n("span", { children: t || /* @__PURE__ */ n(c, { name: "dashboard" }) }) }) });
|
|
90
|
+
}, v = ({ onClick: t }) => {
|
|
91
|
+
const i = a();
|
|
92
|
+
return /* @__PURE__ */ n("div", { className: i.container, onClick: () => t(), children: /* @__PURE__ */ n(x, { panelState: "rails", onClick: t }) });
|
|
93
|
+
}, g = ({ item: t, onClick: i }) => {
|
|
94
|
+
const l = a();
|
|
95
|
+
if (t.type === "divider") return null;
|
|
96
|
+
if (t.type === "group") {
|
|
97
|
+
const e = t, o = e.icon ? p(e.icon) : void 0;
|
|
98
|
+
return /* @__PURE__ */ n("div", { className: l.container, onClick: () => i(e.id), children: /* @__PURE__ */ n(r, { content: e.label, relationship: "description", children: o && /* @__PURE__ */ n(c, { name: o }) }) }, e.id);
|
|
99
|
+
}
|
|
100
|
+
if (t.type === "page") {
|
|
101
|
+
const e = t;
|
|
102
|
+
if (e.parentId !== null) return null;
|
|
103
|
+
const o = e.icon ? p(e.icon) : void 0;
|
|
104
|
+
return /* @__PURE__ */ n(r, { content: e.label, relationship: "description", children: /* @__PURE__ */ n("div", { className: l.container, onClick: () => i(e.id), children: /* @__PURE__ */ n("div", { children: o && /* @__PURE__ */ n(c, { name: o }) }) }, e.id) });
|
|
105
|
+
}
|
|
106
|
+
return null;
|
|
107
|
+
};
|
|
108
|
+
export {
|
|
109
|
+
j as Rails
|
|
110
|
+
};
|
|
111
|
+
//# sourceMappingURL=ApplicationShellRails.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApplicationShellRails.js","sources":["../../../src/lib/applicationshell/ApplicationShellRails.tsx"],"sourcesContent":["import { makeStyles, tokens, Tooltip } from \"@fluentui/react-components\";\nimport { User } from \"./TitleBar\";\nimport { ReactNode } from \"react\";\nimport { NavigationTreeItem, NavigationTreeItemGroup, NavigationTreeItemPage, UserStatus } from \"@seij/common-ui\";\nimport { PanelLeftContract } from \"./ApplicationShellPanelContract\";\nimport { Icon, IconName, parseIconName } from \"@seij/common-ui-icons\";\n\nconst useStylesRailboxItem = makeStyles({\n container: {\n display: \"flex\",\n textAlign: \"center\",\n width: \"32px\",\n height: \"32px\",\n alignItems: \"center\",\n alignContent: \"center\",\n \"& > div\": {\n width: \"100%\",\n },\n \"&:hover\": {\n cursor: \"pointer\",\n backgroundColor: tokens.colorNeutralBackground4Hover,\n },\n },\n});\n\nexport function Rails({\n applicationIcon,\n navigationItems,\n userStatus,\n onClickHome,\n onClickMenuItem,\n onClickSidebarExpand,\n}: {\n applicationIcon?: ReactNode;\n navigationItems: NavigationTreeItem[];\n userStatus: UserStatus;\n onClickHome: () => void;\n onClickMenuItem: (id: string) => void;\n onClickSidebarExpand: () => void;\n}) {\n return (\n <div\n style={{\n backgroundColor: tokens.colorNeutralBackground4,\n width: \"48px\",\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"start\",\n paddingTop: \"0.5em\",\n }}\n >\n <RailBoxApplicationIcon applicationIcon={applicationIcon} onClick={onClickHome} />\n </div>\n <div\n style={{\n flex: 1,\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"start\",\n }}\n >\n {navigationItems.map((it) => (\n <RailBoxNavigationItem key={it.id} item={it} onClick={onClickMenuItem} />\n ))}\n </div>\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"start\",\n }}\n >\n <User status={userStatus} />\n <RailBoxPanelLeftExpand onClick={onClickSidebarExpand} />\n </div>\n </div>\n );\n}\n\nconst RailBoxApplicationIcon = ({ applicationIcon, onClick }: { applicationIcon?: ReactNode; onClick: () => void }) => {\n const styles = useStylesRailboxItem();\n return (\n <div className={styles.container} onClick={() => onClick()}>\n <Tooltip content={\"Home\"} relationship=\"description\">\n <span>{applicationIcon ? applicationIcon : <Icon name={\"dashboard\"} />}</span>\n </Tooltip>\n </div>\n );\n};\nconst RailBoxPanelLeftExpand = ({ onClick }: { onClick: () => void }) => {\n const styles = useStylesRailboxItem();\n return (\n <div className={styles.container} onClick={() => onClick()}>\n <PanelLeftContract panelState={\"rails\"} onClick={onClick} />\n </div>\n );\n};\nconst RailBoxNavigationItem = ({ item, onClick }: { item: NavigationTreeItem; onClick: (id: string) => void }) => {\n const styles = useStylesRailboxItem();\n if (item.type === \"divider\") return null;\n if (item.type === \"group\") {\n const nav = item as NavigationTreeItemGroup;\n const iconName: IconName | undefined = nav.icon ? parseIconName(nav.icon) : undefined;\n return (\n <div key={nav.id} className={styles.container} onClick={() => onClick(nav.id)}>\n <Tooltip content={nav.label} relationship=\"description\">\n {iconName && <Icon name={iconName} />}\n </Tooltip>\n </div>\n );\n }\n if (item.type === \"page\") {\n const nav = item as NavigationTreeItemPage;\n if (nav.parentId !== null) return null;\n const iconName: IconName | undefined = nav.icon ? parseIconName(nav.icon) : undefined;\n return (\n <Tooltip content={nav.label} relationship=\"description\">\n <div key={nav.id} className={styles.container} onClick={() => onClick(nav.id)}>\n <div>{iconName && <Icon name={iconName} />}</div>\n </div>\n </Tooltip>\n );\n }\n return null;\n};\n"],"names":["useStylesRailboxItem","makeStyles","tokens","Rails","applicationIcon","navigationItems","userStatus","onClickHome","onClickMenuItem","onClickSidebarExpand","jsxs","jsx","RailBoxApplicationIcon","it","RailBoxNavigationItem","User","RailBoxPanelLeftExpand","onClick","styles","Tooltip","Icon","PanelLeftContract","item","nav","iconName","parseIconName"],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { NavigationTreeItem, UserStatus } from '@seij/common-ui';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
export declare function Sidebar({ selectedItem, isMobile, applicationName, drawerOpen, openedCategories, applicationIcon, userStatus, navigationItems, onClickHome, onClickMenuItem, onClickCategory, onClickHamburger, onClickPanelReduce, }: {
|
|
4
|
+
isMobile: boolean;
|
|
5
|
+
drawerOpen: boolean;
|
|
6
|
+
selectedItem: string;
|
|
7
|
+
applicationName: string;
|
|
8
|
+
applicationIcon?: ReactNode;
|
|
9
|
+
openedCategories: string[];
|
|
10
|
+
navigationItems: NavigationTreeItem[];
|
|
11
|
+
userStatus: UserStatus;
|
|
12
|
+
onClickHome: () => void;
|
|
13
|
+
onClickMenuItem: (id: string) => void;
|
|
14
|
+
onClickCategory: (id: string) => void;
|
|
15
|
+
onClickHamburger: () => void;
|
|
16
|
+
onClickPanelReduce: () => void;
|
|
17
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
//# sourceMappingURL=ApplicationShellSidebar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApplicationShellSidebar.d.ts","sourceRoot":"","sources":["../../../src/lib/applicationshell/ApplicationShellSidebar.tsx"],"names":[],"mappings":"AASA,OAAO,EAAc,kBAAkB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7E,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,wBAAgB,OAAO,CAAC,EACtB,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,eAAe,EACf,WAAW,EACX,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,kBAAkB,GACnB,EAAE;IACD,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,EAAE,kBAAkB,EAAE,CAAC;IACtC,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,kBAAkB,EAAE,MAAM,IAAI,CAAC;CAChC,2CAoCA"}
|