@j2inn/fin5-ui-utils 5.0.0 → 5.1.0-beta.0
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 +5 -5
- package/dist/react/components/navigation/ReactRouterLayout.d.ts +11 -0
- package/dist/react/components/navigation/ReactRouterLayout.js +29 -10
- package/dist/react/components/navigation/ReactRouterLayout.js.map +1 -1
- package/dist_es/react/components/graphics/GraphicsTabViewer.jsx +12 -3
- package/dist_es/react/components/graphics/GraphicsTabViewer.jsx.map +1 -1
- package/dist_es/react/components/navigation/ReactRouterLayout.d.ts +11 -0
- package/dist_es/react/components/navigation/ReactRouterLayout.js +26 -8
- package/dist_es/react/components/navigation/ReactRouterLayout.js.map +1 -1
- package/dist_es/react/components/navigation/Router.js +19 -0
- package/dist_es/react/components/navigation/Router.js.map +1 -0
- package/dist_es/react/components/navigation/react-router/BasicLayout.d.ts +23 -0
- package/dist_es/react/components/navigation/react-router/BasicLayout.js +82 -0
- package/dist_es/react/components/navigation/react-router/BasicLayout.js.map +1 -0
- package/dist_es/react/components/navigation/react-router/ReactRouterBasicLayout.d.ts +24 -0
- package/dist_es/react/components/navigation/react-router/ReactRouterBasicLayout.js +82 -0
- package/dist_es/react/components/navigation/react-router/ReactRouterBasicLayout.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
# What is fin5-ui-utils? #
|
|
2
|
-
A set of useful client-side utilities useful for creating UI applications on top of the FIN 5 framework.
|
|
3
|
-
|
|
4
|
-
### How do I get set up? ###
|
|
5
|
-
To install this package run `npm i @j2inn/fin5-ui-utils`
|
|
1
|
+
# What is fin5-ui-utils? #
|
|
2
|
+
A set of useful client-side utilities useful for creating UI applications on top of the FIN 5 framework.
|
|
3
|
+
|
|
4
|
+
### How do I get set up? ###
|
|
5
|
+
To install this package run `npm i @j2inn/fin5-ui-utils`
|
|
@@ -12,8 +12,19 @@ export interface ReactRouterLayoutProps extends BasicLayoutProps<ReactRouterMenu
|
|
|
12
12
|
/**
|
|
13
13
|
* This hook can be used with react-router/BasicLayout,
|
|
14
14
|
* to ensure FIN5 URL is aligned with the internal frame URL.
|
|
15
|
+
* This does not skip the hash update and should be used only with
|
|
16
|
+
* FIN >= 5.1.7.92, otherwise FIN will reload the entire page.
|
|
15
17
|
*/
|
|
16
18
|
export declare const useLocationUpdate: () => void;
|
|
19
|
+
/**
|
|
20
|
+
* This hook can be used with react-router/BasicLayout,
|
|
21
|
+
* to ensure FIN5 URL is aligned with the internal frame URL.
|
|
22
|
+
* This skips the hash update and should be used only with
|
|
23
|
+
* FIN < 5.1.7.92.
|
|
24
|
+
* @deprecated use only with FIN < 5.1.7.92
|
|
25
|
+
* @see {@link useLocationUpdate} for FIN >= 5.1.7.92
|
|
26
|
+
*/
|
|
27
|
+
export declare const useLegacyLocationUpdate: () => void;
|
|
17
28
|
export declare const useSelectedRoutes: (pages: ReactRouterMenuPage[], isSelectedRoute?: (page: ReactRouterMenuPage, location: Location) => boolean) => string[];
|
|
18
29
|
/**
|
|
19
30
|
* If we are inside a frame (FIN5), the route is left as is.
|
|
@@ -26,7 +26,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
26
26
|
return result;
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.ReactRouterLayout = exports.useDefaultOnSelect = exports.useGetPageKeyRouteMap = exports.getRoute = exports.useSelectedRoutes = exports.useLocationUpdate = void 0;
|
|
29
|
+
exports.ReactRouterLayout = exports.useDefaultOnSelect = exports.useGetPageKeyRouteMap = exports.getRoute = exports.useSelectedRoutes = exports.useLegacyLocationUpdate = exports.useLocationUpdate = void 0;
|
|
30
30
|
const react_1 = __importStar(require("react"));
|
|
31
31
|
const react_router_1 = require("react-router");
|
|
32
32
|
const useFin5AppURLHashParameter_1 = require("../../../fin5Top/useFin5AppURLHashParameter");
|
|
@@ -35,25 +35,44 @@ const MenuPage_1 = require("./MenuPage");
|
|
|
35
35
|
/**
|
|
36
36
|
* This hook can be used with react-router/BasicLayout,
|
|
37
37
|
* to ensure FIN5 URL is aligned with the internal frame URL.
|
|
38
|
+
* This does not skip the hash update and should be used only with
|
|
39
|
+
* FIN >= 5.1.7.92, otherwise FIN will reload the entire page.
|
|
38
40
|
*/
|
|
39
41
|
const useLocationUpdate = () => {
|
|
40
42
|
const location = (0, react_router_1.useLocation)();
|
|
41
43
|
(0, react_1.useEffect)(() => {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
+
if (useFin5AppURLHashParameter_1.IN_IFRAME) {
|
|
45
|
+
setHash(location);
|
|
46
|
+
}
|
|
47
|
+
}, [location]);
|
|
48
|
+
};
|
|
49
|
+
exports.useLocationUpdate = useLocationUpdate;
|
|
50
|
+
/**
|
|
51
|
+
* This hook can be used with react-router/BasicLayout,
|
|
52
|
+
* to ensure FIN5 URL is aligned with the internal frame URL.
|
|
53
|
+
* This skips the hash update and should be used only with
|
|
54
|
+
* FIN < 5.1.7.92.
|
|
55
|
+
* @deprecated use only with FIN < 5.1.7.92
|
|
56
|
+
* @see {@link useLocationUpdate} for FIN >= 5.1.7.92
|
|
57
|
+
*/
|
|
58
|
+
const useLegacyLocationUpdate = () => {
|
|
59
|
+
const location = (0, react_router_1.useLocation)();
|
|
60
|
+
(0, react_1.useEffect)(() => {
|
|
44
61
|
if (useFin5AppURLHashParameter_1.IN_IFRAME) {
|
|
45
62
|
(0, useFin5AppURLHashParameter_1.fin5SkipHashUpdate)()?.then(() => {
|
|
46
|
-
|
|
47
|
-
frameParameters.set('url', frameParameters.get('url')?.split('#')[0] +
|
|
48
|
-
'#' +
|
|
49
|
-
hash +
|
|
50
|
-
queryParams);
|
|
51
|
-
(0, useFin5AppURLHashParameter_1.getTopLocation)().hash = `#${(0, useFin5AppURLHashParameter_1.getTopLocation)().hash.slice(1).split('?')[0]}?${frameParameters.toString()}`;
|
|
63
|
+
setHash(location);
|
|
52
64
|
});
|
|
53
65
|
}
|
|
54
66
|
}, [location]);
|
|
55
67
|
};
|
|
56
|
-
exports.
|
|
68
|
+
exports.useLegacyLocationUpdate = useLegacyLocationUpdate;
|
|
69
|
+
const setHash = (location) => {
|
|
70
|
+
const hash = location.pathname;
|
|
71
|
+
const queryParams = location.search;
|
|
72
|
+
const frameParameters = (0, useFin5AppURLHashParameter_1.getFin5HashFrameParameters)();
|
|
73
|
+
frameParameters.set('url', frameParameters.get('url')?.split('#')[0] + '#' + hash + queryParams);
|
|
74
|
+
(0, useFin5AppURLHashParameter_1.getTopLocation)().hash = `#${(0, useFin5AppURLHashParameter_1.getTopLocation)().hash.slice(1).split('?')[0]}?${frameParameters.toString()}`;
|
|
75
|
+
};
|
|
57
76
|
const useSelectedRoutes = (pages, isSelectedRoute = (page, location) => location.pathname.includes(page.route)) => {
|
|
58
77
|
const location = (0, react_router_1.useLocation)();
|
|
59
78
|
const flatPages = (0, react_1.useMemo)(() => (0, MenuPage_1.pageTreeToPageList)(pages), [pages]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactRouterLayout.js","sourceRoot":"","sources":["../../../../src/react/components/navigation/ReactRouterLayout.tsx"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;AAGH,+CAA8D;AAC9D,+CAKqB;AACrB,4FAKoD;AACpD,+CAA6D;AAC7D,yCAAyD;AAWzD
|
|
1
|
+
{"version":3,"file":"ReactRouterLayout.js","sourceRoot":"","sources":["../../../../src/react/components/navigation/ReactRouterLayout.tsx"],"names":[],"mappings":"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"}
|
|
@@ -22,8 +22,15 @@ const useStyles = createUseStyles({
|
|
|
22
22
|
},
|
|
23
23
|
},
|
|
24
24
|
},
|
|
25
|
+
fallback: {
|
|
26
|
+
height: '100%',
|
|
27
|
+
display: 'flex',
|
|
28
|
+
justifyContent: 'center',
|
|
29
|
+
alignItems: 'center',
|
|
30
|
+
fontSize: '1.1em',
|
|
31
|
+
},
|
|
25
32
|
});
|
|
26
|
-
export const GraphicsTabViewer = ({ projectName = fin5Top?.finstack?.projectName, targetRef, className, }) => {
|
|
33
|
+
export const GraphicsTabViewer = ({ projectName = fin5Top?.finstack?.projectName, targetRef, className, queryRelated = false, fallbackText = 'No graphics found.', fallbackClassName, }) => {
|
|
27
34
|
const client = useClient();
|
|
28
35
|
const classes = useStyles();
|
|
29
36
|
const [loading, setLoading] = useState(true);
|
|
@@ -31,7 +38,7 @@ export const GraphicsTabViewer = ({ projectName = fin5Top?.finstack?.projectName
|
|
|
31
38
|
useEffect(() => {
|
|
32
39
|
if (targetRef) {
|
|
33
40
|
client.ext
|
|
34
|
-
.eval(`readById(${targetRef.toAxon()}).finGraphicOn(
|
|
41
|
+
.eval(`readById(${targetRef.toAxon()}).finGraphicOn(${queryRelated})`)
|
|
35
42
|
.then((grid) => {
|
|
36
43
|
setGraphicsList(grid.getRows());
|
|
37
44
|
})
|
|
@@ -49,6 +56,8 @@ export const GraphicsTabViewer = ({ projectName = fin5Top?.finstack?.projectName
|
|
|
49
56
|
};
|
|
50
57
|
});
|
|
51
58
|
}, [graphicsList]);
|
|
52
|
-
return loading ? (<LoadingSpinner />) : (<Tabs className={cn(classes.tabs, className)} items={tabs}/>)
|
|
59
|
+
return loading ? (<LoadingSpinner />) : tabs.length > 0 ? (<Tabs className={cn(classes.tabs, className)} items={tabs}/>) : (<div className={cn(classes.fallback, fallbackClassName)}>
|
|
60
|
+
{fallbackText}
|
|
61
|
+
</div>);
|
|
53
62
|
};
|
|
54
63
|
//# sourceMappingURL=GraphicsTabViewer.jsx.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphicsTabViewer.jsx","sourceRoot":"","sources":["../../../../src/react/components/graphics/GraphicsTabViewer.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAC5C,OAAO,EAAE,MAAM,YAAY,CAAA;AAE3B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE/C,MAAM,SAAS,GAAG,eAAe,CAAC;IACjC,IAAI,EAAE;QACL,MAAM,EAAE,MAAM;QACd,CAAC,MAAM,UAAU,sBAAsB,CAAC,EAAE;YACzC,MAAM,EAAE,MAAM;YACd,CAAC,MAAM,UAAU,eAAe,CAAC,EAAE;gBAClC,MAAM,EAAE,MAAM;gBACd,CAAC,MAAM,UAAU,eAAe,CAAC,EAAE;oBAClC,MAAM,EAAE,MAAM;iBACd;aACD;SACD;KACD;CACD,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"GraphicsTabViewer.jsx","sourceRoot":"","sources":["../../../../src/react/components/graphics/GraphicsTabViewer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -12,8 +12,19 @@ export interface ReactRouterLayoutProps extends BasicLayoutProps<ReactRouterMenu
|
|
|
12
12
|
/**
|
|
13
13
|
* This hook can be used with react-router/BasicLayout,
|
|
14
14
|
* to ensure FIN5 URL is aligned with the internal frame URL.
|
|
15
|
+
* This does not skip the hash update and should be used only with
|
|
16
|
+
* FIN >= 5.1.7.92, otherwise FIN will reload the entire page.
|
|
15
17
|
*/
|
|
16
18
|
export declare const useLocationUpdate: () => void;
|
|
19
|
+
/**
|
|
20
|
+
* This hook can be used with react-router/BasicLayout,
|
|
21
|
+
* to ensure FIN5 URL is aligned with the internal frame URL.
|
|
22
|
+
* This skips the hash update and should be used only with
|
|
23
|
+
* FIN < 5.1.7.92.
|
|
24
|
+
* @deprecated use only with FIN < 5.1.7.92
|
|
25
|
+
* @see {@link useLocationUpdate} for FIN >= 5.1.7.92
|
|
26
|
+
*/
|
|
27
|
+
export declare const useLegacyLocationUpdate: () => void;
|
|
17
28
|
export declare const useSelectedRoutes: (pages: ReactRouterMenuPage[], isSelectedRoute?: (page: ReactRouterMenuPage, location: Location) => boolean) => string[];
|
|
18
29
|
/**
|
|
19
30
|
* If we are inside a frame (FIN5), the route is left as is.
|
|
@@ -9,24 +9,42 @@ import { pageTreeToPageList } from './MenuPage';
|
|
|
9
9
|
/**
|
|
10
10
|
* This hook can be used with react-router/BasicLayout,
|
|
11
11
|
* to ensure FIN5 URL is aligned with the internal frame URL.
|
|
12
|
+
* This does not skip the hash update and should be used only with
|
|
13
|
+
* FIN >= 5.1.7.92, otherwise FIN will reload the entire page.
|
|
12
14
|
*/
|
|
13
15
|
export const useLocationUpdate = () => {
|
|
14
16
|
const location = useLocation();
|
|
15
17
|
useEffect(() => {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
+
if (IN_IFRAME) {
|
|
19
|
+
setHash(location);
|
|
20
|
+
}
|
|
21
|
+
}, [location]);
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* This hook can be used with react-router/BasicLayout,
|
|
25
|
+
* to ensure FIN5 URL is aligned with the internal frame URL.
|
|
26
|
+
* This skips the hash update and should be used only with
|
|
27
|
+
* FIN < 5.1.7.92.
|
|
28
|
+
* @deprecated use only with FIN < 5.1.7.92
|
|
29
|
+
* @see {@link useLocationUpdate} for FIN >= 5.1.7.92
|
|
30
|
+
*/
|
|
31
|
+
export const useLegacyLocationUpdate = () => {
|
|
32
|
+
const location = useLocation();
|
|
33
|
+
useEffect(() => {
|
|
18
34
|
if (IN_IFRAME) {
|
|
19
35
|
fin5SkipHashUpdate()?.then(() => {
|
|
20
|
-
|
|
21
|
-
frameParameters.set('url', frameParameters.get('url')?.split('#')[0] +
|
|
22
|
-
'#' +
|
|
23
|
-
hash +
|
|
24
|
-
queryParams);
|
|
25
|
-
getTopLocation().hash = `#${getTopLocation().hash.slice(1).split('?')[0]}?${frameParameters.toString()}`;
|
|
36
|
+
setHash(location);
|
|
26
37
|
});
|
|
27
38
|
}
|
|
28
39
|
}, [location]);
|
|
29
40
|
};
|
|
41
|
+
const setHash = (location) => {
|
|
42
|
+
const hash = location.pathname;
|
|
43
|
+
const queryParams = location.search;
|
|
44
|
+
const frameParameters = getFin5HashFrameParameters();
|
|
45
|
+
frameParameters.set('url', frameParameters.get('url')?.split('#')[0] + '#' + hash + queryParams);
|
|
46
|
+
getTopLocation().hash = `#${getTopLocation().hash.slice(1).split('?')[0]}?${frameParameters.toString()}`;
|
|
47
|
+
};
|
|
30
48
|
export const useSelectedRoutes = (pages, isSelectedRoute = (page, location) => location.pathname.includes(page.route)) => {
|
|
31
49
|
const location = useLocation();
|
|
32
50
|
const flatPages = useMemo(() => pageTreeToPageList(pages), [pages]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactRouterLayout.js","sourceRoot":"","sources":["../../../../src/react/components/navigation/ReactRouterLayout.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC9D,OAAO,EAEN,MAAM,EACN,WAAW,EACX,WAAW,GACX,MAAM,cAAc,CAAA;AACrB,OAAO,EACN,SAAS,EACT,kBAAkB,EAClB,0BAA0B,EAC1B,cAAc,GACd,MAAM,6CAA6C,CAAA;AACpD,OAAO,EAAE,WAAW,EAAoB,MAAM,eAAe,CAAA;AAC7D,OAAO,EAAY,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAWzD
|
|
1
|
+
{"version":3,"file":"ReactRouterLayout.js","sourceRoot":"","sources":["../../../../src/react/components/navigation/ReactRouterLayout.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2022, J2 Innovations. All Rights Reserved
|
|
3
|
+
*/
|
|
4
|
+
import React, { Suspense, useEffect, useMemo, } from 'react';
|
|
5
|
+
import { LoadingSpinner } from '../LoadingSpinner';
|
|
6
|
+
import { findPageByName } from './MenuPage';
|
|
7
|
+
/**
|
|
8
|
+
* Renders the currently selected page from a tree of pages
|
|
9
|
+
*/
|
|
10
|
+
export function Router({ pages = [], currentPage, onPageChange, fallbackComponent, }) {
|
|
11
|
+
const page = useMemo(() => findPageByName(pages, currentPage), [pages, currentPage]);
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
onPageChange?.(page);
|
|
14
|
+
}, [page]);
|
|
15
|
+
return page?.component ? (React.createElement(Suspense, { fallback: React.createElement(LoadingSpinner, null) }, React.createElement(page.component, page?.props))) : (fallbackComponent ?? React.createElement("div", null,
|
|
16
|
+
currentPage,
|
|
17
|
+
" page not found"));
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=Router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Router.js","sourceRoot":"","sources":["../../../../src/react/components/navigation/Router.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,EAGb,QAAQ,EACR,SAAS,EACT,OAAO,GACP,MAAM,OAAO,CAAA;AACd,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAY,MAAM,YAAY,CAAA;AASrD;;GAEG;AACH,MAAM,UAAU,MAAM,CAAqB,EAC1C,KAAK,GAAG,EAAE,EACV,WAAW,EACX,YAAY,EACZ,iBAAiB,GACkB;IACnC,MAAM,IAAI,GAAG,OAAO,CACnB,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC,EACxC,CAAC,KAAK,EAAE,WAAW,CAAC,CACpB,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACd,YAAY,EAAE,CAAC,IAAI,CAAC,CAAA;IACrB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IAEV,OAAO,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CACxB,oBAAC,QAAQ,IAAC,QAAQ,EAAE,oBAAC,cAAc,OAAG,IACpC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CACvC,CACX,CAAC,CAAC,CAAC,CACH,iBAAiB,IAAI;QAAM,WAAW;0BAAsB,CAC5D,CAAA;AACF,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Location } from '@remix-run/router';
|
|
2
|
+
import { LayoutProps, MenuProps, SiderProps } from 'antd';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { MenuPage } from '../MenuPage';
|
|
5
|
+
export interface BasicLayoutProps {
|
|
6
|
+
pages?: MenuPage[];
|
|
7
|
+
compactSider?: boolean;
|
|
8
|
+
layoutProps?: LayoutProps;
|
|
9
|
+
mobileHeaderProps?: LayoutProps;
|
|
10
|
+
siderProps?: SiderProps;
|
|
11
|
+
contentProps?: LayoutProps;
|
|
12
|
+
menuProps?: Omit<MenuProps, 'items' | 'selectedKeys' | 'onSelect'>;
|
|
13
|
+
isSelectedRoute?: (page: MenuPage, location: Location) => boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* This hook can be used with react-router/BasicLayout,
|
|
17
|
+
* to ensure FIN5 URL is aligned with the internal frame URL.
|
|
18
|
+
*/
|
|
19
|
+
export declare const useLocationUpdate: () => void;
|
|
20
|
+
/**
|
|
21
|
+
* Basic layout that uses React Router.
|
|
22
|
+
*/
|
|
23
|
+
export declare const BasicLayout: React.FC<BasicLayoutProps>;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2023, J2 Innovations. All Rights Reserved
|
|
3
|
+
*/
|
|
4
|
+
import { MenuFoldOutlined, MenuUnfoldOutlined } from '@ant-design/icons';
|
|
5
|
+
import { Layout, Menu } from '@j2inn/ui';
|
|
6
|
+
import classNames from 'classnames';
|
|
7
|
+
import { IN_IFRAME, fin5SkipHashUpdate, getFin5HashFrameParameters, getTopLocation, } from 'fin5Top/useFin5AppURLHashParameter';
|
|
8
|
+
import React, { useEffect, useMemo, useState } from 'react';
|
|
9
|
+
import { Outlet, useLocation, useNavigate } from 'react-router';
|
|
10
|
+
import { HEADER_HEIGHT, getMenuPages, useStyles } from '../BasicLayout';
|
|
11
|
+
import { pageTreeToPageList } from '../MenuPage';
|
|
12
|
+
// Workaround j2inn/ui exporting problem
|
|
13
|
+
const Header = Layout.Header;
|
|
14
|
+
const Sider = Layout.Sider;
|
|
15
|
+
const Content = Layout.Content;
|
|
16
|
+
/**
|
|
17
|
+
* This hook can be used with react-router/BasicLayout,
|
|
18
|
+
* to ensure FIN5 URL is aligned with the internal frame URL.
|
|
19
|
+
*/
|
|
20
|
+
export const useLocationUpdate = () => {
|
|
21
|
+
const location = useLocation();
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
console.debug('Location changed', location);
|
|
24
|
+
const hash = location.pathname;
|
|
25
|
+
const queryParams = location.search;
|
|
26
|
+
if (IN_IFRAME) {
|
|
27
|
+
fin5SkipHashUpdate()?.then(() => {
|
|
28
|
+
const frameParameters = getFin5HashFrameParameters();
|
|
29
|
+
frameParameters.set('url', frameParameters.get('url')?.split('#')[0] +
|
|
30
|
+
'#' +
|
|
31
|
+
hash +
|
|
32
|
+
queryParams);
|
|
33
|
+
getTopLocation().hash = `#${getTopLocation().hash.slice(1).split('?')[0]}?${frameParameters.toString()}`;
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}, [location]);
|
|
37
|
+
};
|
|
38
|
+
const useSelectedRoutes = (pages, isSelectedRoute = (page, location) => location.pathname.includes(`/${page.key}`)) => {
|
|
39
|
+
const location = useLocation();
|
|
40
|
+
return useMemo(() => {
|
|
41
|
+
const flatPages = pageTreeToPageList(pages);
|
|
42
|
+
return flatPages
|
|
43
|
+
.filter((page) => isSelectedRoute(page, location))
|
|
44
|
+
.map((page) => page.key);
|
|
45
|
+
}, [location, pages]);
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Basic layout that uses React Router.
|
|
49
|
+
*/
|
|
50
|
+
export const BasicLayout = ({ pages = [], compactSider, layoutProps, mobileHeaderProps, siderProps, contentProps, menuProps, isSelectedRoute, }) => {
|
|
51
|
+
const navigate = useNavigate();
|
|
52
|
+
const selectedRoutes = useSelectedRoutes(pages, isSelectedRoute);
|
|
53
|
+
// manage mobile navigation
|
|
54
|
+
const [isMobile, setIsMobile] = useState(false);
|
|
55
|
+
const [hiddenSider, setHiddenSider] = useState(false);
|
|
56
|
+
const siderWidth = siderProps?.width;
|
|
57
|
+
const classes = useStyles({ isMobile, compactSider, siderWidth });
|
|
58
|
+
const menuPages = useMemo(() => getMenuPages(pages), [pages]);
|
|
59
|
+
return (React.createElement(Layout, { hasSider: true, ...layoutProps },
|
|
60
|
+
isMobile && (React.createElement(Header, { ...mobileHeaderProps, className: classNames(classes.header, mobileHeaderProps?.className) }, hiddenSider ? (React.createElement(MenuUnfoldOutlined, { className: classes.menuTrigger, onClick: () => {
|
|
61
|
+
setHiddenSider(!hiddenSider);
|
|
62
|
+
} })) : (React.createElement(MenuFoldOutlined, { className: classes.menuTrigger, onClick: () => {
|
|
63
|
+
setHiddenSider(!hiddenSider);
|
|
64
|
+
} })))),
|
|
65
|
+
React.createElement(Sider, { ...siderProps, className: classNames(classes.sider, siderProps?.className), breakpoint: 'md', onBreakpoint: (broken) => {
|
|
66
|
+
setIsMobile(broken);
|
|
67
|
+
setHiddenSider(true);
|
|
68
|
+
}, collapsed: (isMobile && hiddenSider) || compactSider, collapsedWidth: isMobile && hiddenSider
|
|
69
|
+
? 0
|
|
70
|
+
: compactSider
|
|
71
|
+
? HEADER_HEIGHT
|
|
72
|
+
: 0, trigger: null },
|
|
73
|
+
React.createElement(Menu, { ...menuProps, items: menuPages, selectedKeys: selectedRoutes, onSelect: ({ key }) => {
|
|
74
|
+
if (!hiddenSider) {
|
|
75
|
+
setHiddenSider(true);
|
|
76
|
+
}
|
|
77
|
+
navigate(key);
|
|
78
|
+
} })),
|
|
79
|
+
React.createElement(Content, { ...contentProps, className: classNames(classes.content, contentProps?.className) },
|
|
80
|
+
React.createElement(Outlet, null))));
|
|
81
|
+
};
|
|
82
|
+
//# sourceMappingURL=BasicLayout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BasicLayout.js","sourceRoot":"","sources":["../../../../../src/react/components/navigation/react-router/BasicLayout.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Location } from '@remix-run/router';
|
|
2
|
+
import { LayoutProps, MenuProps, SiderProps } from 'antd';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { MenuPage } from '../MenuPage';
|
|
5
|
+
export interface ReactRouterBasicLayoutProps {
|
|
6
|
+
pages?: MenuPage[];
|
|
7
|
+
defaultPage?: string;
|
|
8
|
+
compactSider?: boolean;
|
|
9
|
+
layoutProps?: LayoutProps;
|
|
10
|
+
mobileHeaderProps?: LayoutProps;
|
|
11
|
+
siderProps?: SiderProps;
|
|
12
|
+
contentProps?: LayoutProps;
|
|
13
|
+
menuProps?: Omit<MenuProps, 'items' | 'selectedKeys' | 'onSelect'>;
|
|
14
|
+
isSelectedRoute?: (page: MenuPage, location: Location) => boolean;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* This hook can be used with react-router/BasicLayout,
|
|
18
|
+
* to ensure FIN5 URL is aligned with the internal frame URL.
|
|
19
|
+
*/
|
|
20
|
+
export declare const useLocationUpdate: () => void;
|
|
21
|
+
/**
|
|
22
|
+
* Basic layout that uses React Router.
|
|
23
|
+
*/
|
|
24
|
+
export declare const ReactRouterBasicLayout: React.FC<ReactRouterBasicLayoutProps>;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2023, J2 Innovations. All Rights Reserved
|
|
3
|
+
*/
|
|
4
|
+
import { MenuFoldOutlined, MenuUnfoldOutlined } from '@ant-design/icons';
|
|
5
|
+
import { Layout, Menu } from '@j2inn/ui';
|
|
6
|
+
import classNames from 'classnames';
|
|
7
|
+
import React, { useEffect, useMemo, useState } from 'react';
|
|
8
|
+
import { Outlet, useLocation, useNavigate } from 'react-router';
|
|
9
|
+
import { IN_IFRAME, fin5SkipHashUpdate, getFin5HashFrameParameters, getTopLocation, } from '../../../../fin5Top/useFin5AppURLHashParameter';
|
|
10
|
+
import { HEADER_HEIGHT, getMenuPages, useStyles } from '../BasicLayout';
|
|
11
|
+
import { pageTreeToPageList } from '../MenuPage';
|
|
12
|
+
// Workaround j2inn/ui exporting problem
|
|
13
|
+
const Header = Layout.Header;
|
|
14
|
+
const Sider = Layout.Sider;
|
|
15
|
+
const Content = Layout.Content;
|
|
16
|
+
/**
|
|
17
|
+
* This hook can be used with react-router/BasicLayout,
|
|
18
|
+
* to ensure FIN5 URL is aligned with the internal frame URL.
|
|
19
|
+
*/
|
|
20
|
+
export const useLocationUpdate = () => {
|
|
21
|
+
const location = useLocation();
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
console.debug('Location changed', location);
|
|
24
|
+
const hash = location.pathname;
|
|
25
|
+
const queryParams = location.search;
|
|
26
|
+
if (IN_IFRAME) {
|
|
27
|
+
fin5SkipHashUpdate()?.then(() => {
|
|
28
|
+
const frameParameters = getFin5HashFrameParameters();
|
|
29
|
+
frameParameters.set('url', frameParameters.get('url')?.split('#')[0] +
|
|
30
|
+
'#' +
|
|
31
|
+
hash +
|
|
32
|
+
queryParams);
|
|
33
|
+
getTopLocation().hash = `#${getTopLocation().hash.slice(1).split('?')[0]}?${frameParameters.toString()}`;
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}, [location]);
|
|
37
|
+
};
|
|
38
|
+
const useSelectedRoutes = (pages, isSelectedRoute = (page, location) => location.pathname.includes(`/${page.key}`)) => {
|
|
39
|
+
const location = useLocation();
|
|
40
|
+
return useMemo(() => {
|
|
41
|
+
const flatPages = pageTreeToPageList(pages);
|
|
42
|
+
return flatPages
|
|
43
|
+
.filter((page) => isSelectedRoute(page, location))
|
|
44
|
+
.map((page) => page.key);
|
|
45
|
+
}, [location, pages]);
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Basic layout that uses React Router.
|
|
49
|
+
*/
|
|
50
|
+
export const ReactRouterBasicLayout = ({ pages = [], defaultPage, compactSider, layoutProps, mobileHeaderProps, siderProps, contentProps, menuProps, isSelectedRoute, }) => {
|
|
51
|
+
const navigate = useNavigate();
|
|
52
|
+
const selectedRoutes = useSelectedRoutes(pages, isSelectedRoute);
|
|
53
|
+
// manage mobile navigation
|
|
54
|
+
const [isMobile, setIsMobile] = useState(false);
|
|
55
|
+
const [hiddenSider, setHiddenSider] = useState(false);
|
|
56
|
+
const siderWidth = siderProps?.width;
|
|
57
|
+
const classes = useStyles({ isMobile, compactSider, siderWidth });
|
|
58
|
+
const menuPages = useMemo(() => getMenuPages(pages), [pages]);
|
|
59
|
+
return (React.createElement(Layout, { hasSider: true, ...layoutProps },
|
|
60
|
+
isMobile && (React.createElement(Header, { ...mobileHeaderProps, className: classNames(classes.header, mobileHeaderProps?.className) }, hiddenSider ? (React.createElement(MenuUnfoldOutlined, { className: classes.menuTrigger, onClick: () => {
|
|
61
|
+
setHiddenSider(!hiddenSider);
|
|
62
|
+
} })) : (React.createElement(MenuFoldOutlined, { className: classes.menuTrigger, onClick: () => {
|
|
63
|
+
setHiddenSider(!hiddenSider);
|
|
64
|
+
} })))),
|
|
65
|
+
React.createElement(Sider, { ...siderProps, className: classNames(classes.sider, siderProps?.className), breakpoint: 'md', onBreakpoint: (broken) => {
|
|
66
|
+
setIsMobile(broken);
|
|
67
|
+
setHiddenSider(true);
|
|
68
|
+
}, collapsed: (isMobile && hiddenSider) || compactSider, collapsedWidth: isMobile && hiddenSider
|
|
69
|
+
? 0
|
|
70
|
+
: compactSider
|
|
71
|
+
? HEADER_HEIGHT
|
|
72
|
+
: 0, trigger: null },
|
|
73
|
+
React.createElement(Menu, { ...menuProps, defaultSelectedKeys: defaultPage ? [defaultPage] : undefined, items: menuPages, selectedKeys: selectedRoutes, onSelect: ({ key }) => {
|
|
74
|
+
if (!hiddenSider) {
|
|
75
|
+
setHiddenSider(true);
|
|
76
|
+
}
|
|
77
|
+
navigate(key);
|
|
78
|
+
} })),
|
|
79
|
+
React.createElement(Content, { ...contentProps, className: classNames(classes.content, contentProps?.className) },
|
|
80
|
+
React.createElement(Outlet, null))));
|
|
81
|
+
};
|
|
82
|
+
//# sourceMappingURL=ReactRouterBasicLayout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReactRouterBasicLayout.js","sourceRoot":"","sources":["../../../../../src/react/components/navigation/react-router/ReactRouterBasicLayout.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED