@j2inn/fin5-ui-utils 2.0.2-beta.0 → 2.0.2-beta.1
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/dist/react/components/navigation/ReactRouterLayout.d.ts +5 -2
- package/dist/react/components/navigation/ReactRouterLayout.js +16 -2
- package/dist/react/components/navigation/ReactRouterLayout.js.map +1 -1
- package/dist_es/react/components/navigation/ReactRouterLayout.d.ts +5 -2
- package/dist_es/react/components/navigation/ReactRouterLayout.js +16 -2
- package/dist_es/react/components/navigation/ReactRouterLayout.js.map +1 -1
- package/package.json +1 -1
|
@@ -2,8 +2,11 @@ import type { Location } from '@remix-run/router';
|
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { BasicLayoutProps } from './BasicLayout';
|
|
4
4
|
import { MenuPage } from './MenuPage';
|
|
5
|
-
export
|
|
6
|
-
|
|
5
|
+
export declare type ReactRouterMenuPage = MenuPage & {
|
|
6
|
+
route: string;
|
|
7
|
+
};
|
|
8
|
+
export interface ReactRouterLayoutProps extends BasicLayoutProps<ReactRouterMenuPage> {
|
|
9
|
+
isSelectedRoute?: (page: ReactRouterMenuPage, location: Location) => boolean;
|
|
7
10
|
}
|
|
8
11
|
/**
|
|
9
12
|
* This hook can be used with react-router/BasicLayout,
|
|
@@ -80,9 +80,23 @@ exports.getRoute = getRoute;
|
|
|
80
80
|
const ReactRouterLayout = ({ isSelectedRoute, pages = [], onSelect, ...otherProps }) => {
|
|
81
81
|
const navigate = (0, react_router_1.useNavigate)();
|
|
82
82
|
const selectedRoutes = useSelectedRoutes(pages, isSelectedRoute);
|
|
83
|
+
const pageKeyRouteMap = (0, react_1.useMemo)(() => {
|
|
84
|
+
const flatPages = (0, MenuPage_1.pageTreeToPageList)(pages);
|
|
85
|
+
const result = new Map();
|
|
86
|
+
flatPages.forEach((page) => {
|
|
87
|
+
result.set(page.key, page.route);
|
|
88
|
+
});
|
|
89
|
+
return result;
|
|
90
|
+
}, [pages]);
|
|
83
91
|
const defaultOnSelect = (0, react_1.useCallback)((key) => {
|
|
84
|
-
|
|
85
|
-
|
|
92
|
+
const route = pageKeyRouteMap.get(key);
|
|
93
|
+
if (route) {
|
|
94
|
+
navigate(route);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
console.warn('Could not find route for page key', key, 'pages', pages);
|
|
98
|
+
}
|
|
99
|
+
}, [navigate, pageKeyRouteMap]);
|
|
86
100
|
return (react_1.default.createElement(BasicLayout_1.BasicLayout, { ...otherProps, pages: pages, onSelect: onSelect ?? defaultOnSelect, selectedPages: selectedRoutes },
|
|
87
101
|
react_1.default.createElement(react_router_1.Outlet, null)));
|
|
88
102
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactRouterLayout.js","sourceRoot":"","sources":["../../../../src/react/components/navigation/ReactRouterLayout.tsx"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;AAGH,+CAA8D;AAC9D,+CAA+D;AAC/D,4FAKoD;AACpD,+CAA6D;AAC7D,yCAAyD;
|
|
1
|
+
{"version":3,"file":"ReactRouterLayout.js","sourceRoot":"","sources":["../../../../src/react/components/navigation/ReactRouterLayout.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,11 @@ import type { Location } from '@remix-run/router';
|
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { BasicLayoutProps } from './BasicLayout';
|
|
4
4
|
import { MenuPage } from './MenuPage';
|
|
5
|
-
export
|
|
6
|
-
|
|
5
|
+
export declare type ReactRouterMenuPage = MenuPage & {
|
|
6
|
+
route: string;
|
|
7
|
+
};
|
|
8
|
+
export interface ReactRouterLayoutProps extends BasicLayoutProps<ReactRouterMenuPage> {
|
|
9
|
+
isSelectedRoute?: (page: ReactRouterMenuPage, location: Location) => boolean;
|
|
7
10
|
}
|
|
8
11
|
/**
|
|
9
12
|
* This hook can be used with react-router/BasicLayout,
|
|
@@ -52,9 +52,23 @@ export const getRoute = (route) => {
|
|
|
52
52
|
export const ReactRouterLayout = ({ isSelectedRoute, pages = [], onSelect, ...otherProps }) => {
|
|
53
53
|
const navigate = useNavigate();
|
|
54
54
|
const selectedRoutes = useSelectedRoutes(pages, isSelectedRoute);
|
|
55
|
+
const pageKeyRouteMap = useMemo(() => {
|
|
56
|
+
const flatPages = pageTreeToPageList(pages);
|
|
57
|
+
const result = new Map();
|
|
58
|
+
flatPages.forEach((page) => {
|
|
59
|
+
result.set(page.key, page.route);
|
|
60
|
+
});
|
|
61
|
+
return result;
|
|
62
|
+
}, [pages]);
|
|
55
63
|
const defaultOnSelect = useCallback((key) => {
|
|
56
|
-
|
|
57
|
-
|
|
64
|
+
const route = pageKeyRouteMap.get(key);
|
|
65
|
+
if (route) {
|
|
66
|
+
navigate(route);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
console.warn('Could not find route for page key', key, 'pages', pages);
|
|
70
|
+
}
|
|
71
|
+
}, [navigate, pageKeyRouteMap]);
|
|
58
72
|
return (React.createElement(BasicLayout, { ...otherProps, pages: pages, onSelect: onSelect ?? defaultOnSelect, selectedPages: selectedRoutes },
|
|
59
73
|
React.createElement(Outlet, null)));
|
|
60
74
|
};
|
|
@@ -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,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/D,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;
|
|
1
|
+
{"version":3,"file":"ReactRouterLayout.js","sourceRoot":"","sources":["../../../../src/react/components/navigation/ReactRouterLayout.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED