@tramvai/module-router 3.5.0 → 3.7.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/lib/components/link.browser.js +7 -3
- package/lib/components/link.d.ts +11 -3
- package/lib/components/link.es.js +7 -3
- package/lib/components/link.js +7 -3
- package/lib/index.browser.js +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.es.js +1 -1
- package/lib/index.js +4 -0
- package/lib/modules/common.browser.js +16 -0
- package/lib/modules/common.es.js +16 -0
- package/lib/modules/common.js +16 -0
- package/lib/modules/tokens/common/render.browser.js +2 -2
- package/lib/modules/tokens/common/render.es.js +2 -2
- package/lib/modules/tokens/common/render.js +2 -2
- package/package.json +17 -17
|
@@ -4,8 +4,8 @@ import { useNavigate } from '@tinkoff/router';
|
|
|
4
4
|
import { usePrefetch } from '../hooks/usePrefetch.browser.browser.js';
|
|
5
5
|
|
|
6
6
|
function Link(props) {
|
|
7
|
-
const { children, onClick, url, query, replace, target, navigateOptions, prefetch = true, ...otherProps } = props;
|
|
8
|
-
const navigate = useNavigate({ url, query, replace, ...navigateOptions });
|
|
7
|
+
const { children, onClick, url, query, replace, target, navigateOptions, prefetch = true, viewTransition = false, ...otherProps } = props;
|
|
8
|
+
const navigate = useNavigate({ url, query, replace, viewTransition, ...navigateOptions });
|
|
9
9
|
const [linkElement, setLinkElement] = useState(null);
|
|
10
10
|
usePrefetch({
|
|
11
11
|
url,
|
|
@@ -27,7 +27,11 @@ function Link(props) {
|
|
|
27
27
|
navigate();
|
|
28
28
|
onClick && onClick(event);
|
|
29
29
|
}, [navigate, target, onClick]);
|
|
30
|
-
const extraProps = {
|
|
30
|
+
const extraProps = {
|
|
31
|
+
href: url,
|
|
32
|
+
onClick: handleClick,
|
|
33
|
+
target,
|
|
34
|
+
};
|
|
31
35
|
if (isValidElement(children)) {
|
|
32
36
|
return cloneElement(children, {
|
|
33
37
|
// @ts-expect-error
|
package/lib/components/link.d.ts
CHANGED
|
@@ -1,16 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import type { ReactNode, AnchorHTMLAttributes } from 'react';
|
|
2
|
+
import type { NavigateOptions } from '@tinkoff/router';
|
|
3
|
+
type AnchorLinkProps = Pick<AnchorHTMLAttributes<HTMLAnchorElement>, 'id' | 'className' | 'style'>;
|
|
4
|
+
interface Props extends Partial<AnchorLinkProps> {
|
|
5
|
+
children?: ReactNode;
|
|
3
6
|
url: string;
|
|
4
7
|
query?: Record<string, string>;
|
|
5
8
|
replace?: boolean;
|
|
6
9
|
target?: string;
|
|
7
10
|
onClick?: Function;
|
|
8
|
-
navigateOptions?:
|
|
11
|
+
navigateOptions?: Partial<NavigateOptions>;
|
|
9
12
|
/**
|
|
10
13
|
* @description enable or disable target page resources prefetching
|
|
11
14
|
* @default true
|
|
12
15
|
*/
|
|
13
16
|
prefetch?: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* @description enable view transition for underlying navigation
|
|
19
|
+
* @default false
|
|
20
|
+
*/
|
|
21
|
+
viewTransition?: boolean;
|
|
14
22
|
}
|
|
15
23
|
declare function Link(props: Props): import("react/jsx-runtime").JSX.Element;
|
|
16
24
|
declare namespace Link {
|
|
@@ -3,8 +3,8 @@ import { useState, useCallback, isValidElement, cloneElement } from 'react';
|
|
|
3
3
|
import { useNavigate } from '@tinkoff/router';
|
|
4
4
|
|
|
5
5
|
function Link(props) {
|
|
6
|
-
const { children, onClick, url, query, replace, target, navigateOptions, prefetch = true, ...otherProps } = props;
|
|
7
|
-
const navigate = useNavigate({ url, query, replace, ...navigateOptions });
|
|
6
|
+
const { children, onClick, url, query, replace, target, navigateOptions, prefetch = true, viewTransition = false, ...otherProps } = props;
|
|
7
|
+
const navigate = useNavigate({ url, query, replace, viewTransition, ...navigateOptions });
|
|
8
8
|
const [linkElement, setLinkElement] = useState(null);
|
|
9
9
|
const handleClick = useCallback((event) => {
|
|
10
10
|
// ignores the navigation when clicked using right mouse button or
|
|
@@ -21,7 +21,11 @@ function Link(props) {
|
|
|
21
21
|
navigate();
|
|
22
22
|
onClick && onClick(event);
|
|
23
23
|
}, [navigate, target, onClick]);
|
|
24
|
-
const extraProps = {
|
|
24
|
+
const extraProps = {
|
|
25
|
+
href: url,
|
|
26
|
+
onClick: handleClick,
|
|
27
|
+
target,
|
|
28
|
+
};
|
|
25
29
|
if (isValidElement(children)) {
|
|
26
30
|
return cloneElement(children, {
|
|
27
31
|
// @ts-expect-error
|
package/lib/components/link.js
CHANGED
|
@@ -7,8 +7,8 @@ var react = require('react');
|
|
|
7
7
|
var router = require('@tinkoff/router');
|
|
8
8
|
|
|
9
9
|
function Link(props) {
|
|
10
|
-
const { children, onClick, url, query, replace, target, navigateOptions, prefetch = true, ...otherProps } = props;
|
|
11
|
-
const navigate = router.useNavigate({ url, query, replace, ...navigateOptions });
|
|
10
|
+
const { children, onClick, url, query, replace, target, navigateOptions, prefetch = true, viewTransition = false, ...otherProps } = props;
|
|
11
|
+
const navigate = router.useNavigate({ url, query, replace, viewTransition, ...navigateOptions });
|
|
12
12
|
const [linkElement, setLinkElement] = react.useState(null);
|
|
13
13
|
const handleClick = react.useCallback((event) => {
|
|
14
14
|
// ignores the navigation when clicked using right mouse button or
|
|
@@ -25,7 +25,11 @@ function Link(props) {
|
|
|
25
25
|
navigate();
|
|
26
26
|
onClick && onClick(event);
|
|
27
27
|
}, [navigate, target, onClick]);
|
|
28
|
-
const extraProps = {
|
|
28
|
+
const extraProps = {
|
|
29
|
+
href: url,
|
|
30
|
+
onClick: handleClick,
|
|
31
|
+
target,
|
|
32
|
+
};
|
|
29
33
|
if (react.isValidElement(children)) {
|
|
30
34
|
return react.cloneElement(children, {
|
|
31
35
|
// @ts-expect-error
|
package/lib/index.browser.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { NoSpaRouterModule } from './modules/no-spa.browser.js';
|
|
2
2
|
export { SpaRouterModule } from './modules/spa.browser.js';
|
|
3
3
|
export { RouterChildAppModule } from './modules/child-app.browser.js';
|
|
4
|
-
export { Provider, useNavigate, useRoute, useRouter, useUrl } from '@tinkoff/router';
|
|
4
|
+
export { Provider, useNavigate, useRoute, useRouter, useUrl, useViewTransition } from '@tinkoff/router';
|
|
5
5
|
export { Link } from './components/link.browser.js';
|
|
6
6
|
export * from '@tramvai/tokens-router';
|
|
7
7
|
export { generateForRoot, routerForRoot } from './modules/utils/forRoot.browser.js';
|
package/lib/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { NoSpaRouterModule, SpaRouterModule } from './modules/server';
|
|
2
2
|
export { RouterChildAppModule } from './modules/child-app';
|
|
3
|
-
export { Provider, useNavigate, useRoute, useRouter, useUrl } from '@tinkoff/router';
|
|
3
|
+
export { Provider, useNavigate, useRoute, useRouter, useUrl, useViewTransition, } from '@tinkoff/router';
|
|
4
4
|
export { Link } from './components/link';
|
|
5
5
|
export * from '@tramvai/tokens-router';
|
|
6
6
|
export { routerForRoot, generateForRoot } from './modules/utils/forRoot';
|
package/lib/index.es.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { NoSpaRouterModule, SpaRouterModule } from './modules/server.es.js';
|
|
2
2
|
export { RouterChildAppModule } from './modules/child-app.es.js';
|
|
3
|
-
export { Provider, useNavigate, useRoute, useRouter, useUrl } from '@tinkoff/router';
|
|
3
|
+
export { Provider, useNavigate, useRoute, useRouter, useUrl, useViewTransition } from '@tinkoff/router';
|
|
4
4
|
export { Link } from './components/link.es.js';
|
|
5
5
|
export * from '@tramvai/tokens-router';
|
|
6
6
|
export { generateForRoot, routerForRoot } from './modules/utils/forRoot.es.js';
|
package/lib/index.js
CHANGED
|
@@ -42,6 +42,10 @@ Object.defineProperty(exports, 'useUrl', {
|
|
|
42
42
|
enumerable: true,
|
|
43
43
|
get: function () { return router.useUrl; }
|
|
44
44
|
});
|
|
45
|
+
Object.defineProperty(exports, 'useViewTransition', {
|
|
46
|
+
enumerable: true,
|
|
47
|
+
get: function () { return router.useViewTransition; }
|
|
48
|
+
});
|
|
45
49
|
exports.Link = link.Link;
|
|
46
50
|
exports.generateForRoot = forRoot.generateForRoot;
|
|
47
51
|
exports.routerForRoot = forRoot.routerForRoot;
|
|
@@ -3,6 +3,7 @@ import { provide, commandLineListTokens } from '@tramvai/core';
|
|
|
3
3
|
import { setLogger } from '@tinkoff/router';
|
|
4
4
|
import { LOGGER_TOKEN, COMBINE_REDUCERS } from '@tramvai/tokens-common';
|
|
5
5
|
import { ROUTER_TOKEN, ROUTES_TOKEN, ROUTE_RESOLVE_TOKEN, ROUTER_GUARD_TOKEN, ROUTER_SPA_ACTIONS_RUN_MODE_TOKEN } from '@tramvai/tokens-router';
|
|
6
|
+
import { RENDER_SLOTS, ResourceType, ResourceSlot } from '@tramvai/tokens-render';
|
|
6
7
|
import { routerClassToken, additionalRouterParameters, routeTransformToken, onChangeHooksToken, beforeResolveHooksToken, beforeNavigateHooksToken, afterNavigateHooksToken, beforeUpdateCurrentHooksToken, afterUpdateCurrentHooksToken } from './tokens.browser.js';
|
|
7
8
|
import { RouterStore } from '../stores/RouterStore.browser.js';
|
|
8
9
|
import { commonGuards } from './guards/common/index.browser.js';
|
|
@@ -22,6 +23,7 @@ const providers = [
|
|
|
22
23
|
...additionalParameters,
|
|
23
24
|
trailingSlash: true,
|
|
24
25
|
mergeSlashes: true,
|
|
26
|
+
enableViewTransitions: process.env.__TRAMVAI_VIEW_TRANSITIONS === 'true',
|
|
25
27
|
routes: flatten(routes !== null && routes !== void 0 ? routes : []).map(routeTransform),
|
|
26
28
|
});
|
|
27
29
|
if (routeResolve) {
|
|
@@ -127,6 +129,20 @@ const providers = [
|
|
|
127
129
|
multi: true,
|
|
128
130
|
useValue: RouterStore,
|
|
129
131
|
}),
|
|
132
|
+
...(process.env.__TRAMVAI_VIEW_TRANSITIONS === 'true'
|
|
133
|
+
? [
|
|
134
|
+
provide({
|
|
135
|
+
provide: RENDER_SLOTS,
|
|
136
|
+
useValue: [
|
|
137
|
+
{
|
|
138
|
+
type: ResourceType.inlineStyle,
|
|
139
|
+
slot: ResourceSlot.HEAD_CORE_STYLES,
|
|
140
|
+
payload: '@media (prefers-reduced-motion) { ::view-transition-group(*),::view-transition-old(*),::view-transition-new(*) { animation: none !important; } }',
|
|
141
|
+
},
|
|
142
|
+
],
|
|
143
|
+
}),
|
|
144
|
+
]
|
|
145
|
+
: []),
|
|
130
146
|
];
|
|
131
147
|
|
|
132
148
|
export { providers };
|
package/lib/modules/common.es.js
CHANGED
|
@@ -3,6 +3,7 @@ import { provide, commandLineListTokens } from '@tramvai/core';
|
|
|
3
3
|
import { setLogger } from '@tinkoff/router';
|
|
4
4
|
import { LOGGER_TOKEN, COMBINE_REDUCERS } from '@tramvai/tokens-common';
|
|
5
5
|
import { ROUTER_TOKEN, ROUTES_TOKEN, ROUTE_RESOLVE_TOKEN, ROUTER_GUARD_TOKEN, ROUTER_SPA_ACTIONS_RUN_MODE_TOKEN } from '@tramvai/tokens-router';
|
|
6
|
+
import { RENDER_SLOTS, ResourceType, ResourceSlot } from '@tramvai/tokens-render';
|
|
6
7
|
import { routerClassToken, additionalRouterParameters, routeTransformToken, onChangeHooksToken, beforeResolveHooksToken, beforeNavigateHooksToken, afterNavigateHooksToken, beforeUpdateCurrentHooksToken, afterUpdateCurrentHooksToken } from './tokens.es.js';
|
|
7
8
|
import { RouterStore } from '../stores/RouterStore.es.js';
|
|
8
9
|
import { commonGuards } from './guards/common/index.es.js';
|
|
@@ -22,6 +23,7 @@ const providers = [
|
|
|
22
23
|
...additionalParameters,
|
|
23
24
|
trailingSlash: true,
|
|
24
25
|
mergeSlashes: true,
|
|
26
|
+
enableViewTransitions: process.env.__TRAMVAI_VIEW_TRANSITIONS === 'true',
|
|
25
27
|
routes: flatten(routes !== null && routes !== void 0 ? routes : []).map(routeTransform),
|
|
26
28
|
});
|
|
27
29
|
if (routeResolve) {
|
|
@@ -127,6 +129,20 @@ const providers = [
|
|
|
127
129
|
multi: true,
|
|
128
130
|
useValue: RouterStore,
|
|
129
131
|
}),
|
|
132
|
+
...(process.env.__TRAMVAI_VIEW_TRANSITIONS === 'true'
|
|
133
|
+
? [
|
|
134
|
+
provide({
|
|
135
|
+
provide: RENDER_SLOTS,
|
|
136
|
+
useValue: [
|
|
137
|
+
{
|
|
138
|
+
type: ResourceType.inlineStyle,
|
|
139
|
+
slot: ResourceSlot.HEAD_CORE_STYLES,
|
|
140
|
+
payload: '@media (prefers-reduced-motion) { ::view-transition-group(*),::view-transition-old(*),::view-transition-new(*) { animation: none !important; } }',
|
|
141
|
+
},
|
|
142
|
+
],
|
|
143
|
+
}),
|
|
144
|
+
]
|
|
145
|
+
: []),
|
|
130
146
|
];
|
|
131
147
|
|
|
132
148
|
export { providers };
|
package/lib/modules/common.js
CHANGED
|
@@ -7,6 +7,7 @@ var core = require('@tramvai/core');
|
|
|
7
7
|
var router = require('@tinkoff/router');
|
|
8
8
|
var tokensCommon = require('@tramvai/tokens-common');
|
|
9
9
|
var tokensRouter = require('@tramvai/tokens-router');
|
|
10
|
+
var tokensRender = require('@tramvai/tokens-render');
|
|
10
11
|
var tokens = require('./tokens.js');
|
|
11
12
|
var RouterStore = require('../stores/RouterStore.js');
|
|
12
13
|
var index = require('./guards/common/index.js');
|
|
@@ -30,6 +31,7 @@ const providers = [
|
|
|
30
31
|
...additionalParameters,
|
|
31
32
|
trailingSlash: true,
|
|
32
33
|
mergeSlashes: true,
|
|
34
|
+
enableViewTransitions: process.env.__TRAMVAI_VIEW_TRANSITIONS === 'true',
|
|
33
35
|
routes: flatten__default["default"](routes !== null && routes !== void 0 ? routes : []).map(routeTransform),
|
|
34
36
|
});
|
|
35
37
|
if (routeResolve) {
|
|
@@ -135,6 +137,20 @@ const providers = [
|
|
|
135
137
|
multi: true,
|
|
136
138
|
useValue: RouterStore.RouterStore,
|
|
137
139
|
}),
|
|
140
|
+
...(process.env.__TRAMVAI_VIEW_TRANSITIONS === 'true'
|
|
141
|
+
? [
|
|
142
|
+
core.provide({
|
|
143
|
+
provide: tokensRender.RENDER_SLOTS,
|
|
144
|
+
useValue: [
|
|
145
|
+
{
|
|
146
|
+
type: tokensRender.ResourceType.inlineStyle,
|
|
147
|
+
slot: tokensRender.ResourceSlot.HEAD_CORE_STYLES,
|
|
148
|
+
payload: '@media (prefers-reduced-motion) { ::view-transition-group(*),::view-transition-old(*),::view-transition-new(*) { animation: none !important; } }',
|
|
149
|
+
},
|
|
150
|
+
],
|
|
151
|
+
}),
|
|
152
|
+
]
|
|
153
|
+
: []),
|
|
138
154
|
];
|
|
139
155
|
|
|
140
156
|
exports.providers = providers;
|
|
@@ -3,8 +3,8 @@ import { Provider } from '@tinkoff/router';
|
|
|
3
3
|
|
|
4
4
|
const provideRouter = ({ router }) => {
|
|
5
5
|
const serverState = {
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
route: router.getCurrentRoute(),
|
|
7
|
+
url: router.getCurrentUrl(),
|
|
8
8
|
};
|
|
9
9
|
return (render) => {
|
|
10
10
|
return (jsx(Provider, { router: router, serverState: serverState, children: render }));
|
|
@@ -3,8 +3,8 @@ import { Provider } from '@tinkoff/router';
|
|
|
3
3
|
|
|
4
4
|
const provideRouter = ({ router }) => {
|
|
5
5
|
const serverState = {
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
route: router.getCurrentRoute(),
|
|
7
|
+
url: router.getCurrentUrl(),
|
|
8
8
|
};
|
|
9
9
|
return (render) => {
|
|
10
10
|
return (jsx(Provider, { router: router, serverState: serverState, children: render }));
|
|
@@ -7,8 +7,8 @@ var router = require('@tinkoff/router');
|
|
|
7
7
|
|
|
8
8
|
const provideRouter = ({ router: router$1 }) => {
|
|
9
9
|
const serverState = {
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
route: router$1.getCurrentRoute(),
|
|
11
|
+
url: router$1.getCurrentUrl(),
|
|
12
12
|
};
|
|
13
13
|
return (render) => {
|
|
14
14
|
return (jsxRuntime.jsx(router.Provider, { router: router$1, serverState: serverState, children: render }));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tramvai/module-router",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.7.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"browser": {
|
|
@@ -26,27 +26,27 @@
|
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
28
|
"@tinkoff/errors": "0.4.1",
|
|
29
|
-
"@tinkoff/router": "0.3.
|
|
29
|
+
"@tinkoff/router": "0.3.2",
|
|
30
30
|
"@tinkoff/url": "0.9.1",
|
|
31
|
-
"@tramvai/react": "3.
|
|
31
|
+
"@tramvai/react": "3.7.0",
|
|
32
32
|
"@tramvai/safe-strings": "0.6.1",
|
|
33
|
-
"@tramvai/tokens-child-app": "3.
|
|
34
|
-
"@tramvai/tokens-render": "3.
|
|
35
|
-
"@tramvai/tokens-router": "3.
|
|
36
|
-
"@tramvai/tokens-server": "3.
|
|
37
|
-
"@tramvai/experiments": "3.
|
|
33
|
+
"@tramvai/tokens-child-app": "3.7.0",
|
|
34
|
+
"@tramvai/tokens-render": "3.7.0",
|
|
35
|
+
"@tramvai/tokens-router": "3.7.0",
|
|
36
|
+
"@tramvai/tokens-server": "3.7.0",
|
|
37
|
+
"@tramvai/experiments": "3.7.0"
|
|
38
38
|
},
|
|
39
39
|
"peerDependencies": {
|
|
40
40
|
"@tinkoff/utils": "^2.1.2",
|
|
41
|
-
"@tramvai/cli": "3.
|
|
42
|
-
"@tramvai/core": "3.
|
|
43
|
-
"@tramvai/module-log": "3.
|
|
44
|
-
"@tramvai/module-server": "3.
|
|
45
|
-
"@tramvai/papi": "3.
|
|
46
|
-
"@tramvai/state": "3.
|
|
47
|
-
"@tramvai/test-helpers": "3.
|
|
48
|
-
"@tramvai/test-mocks": "3.
|
|
49
|
-
"@tramvai/tokens-common": "3.
|
|
41
|
+
"@tramvai/cli": "3.7.0",
|
|
42
|
+
"@tramvai/core": "3.7.0",
|
|
43
|
+
"@tramvai/module-log": "3.7.0",
|
|
44
|
+
"@tramvai/module-server": "3.7.0",
|
|
45
|
+
"@tramvai/papi": "3.7.0",
|
|
46
|
+
"@tramvai/state": "3.7.0",
|
|
47
|
+
"@tramvai/test-helpers": "3.7.0",
|
|
48
|
+
"@tramvai/test-mocks": "3.7.0",
|
|
49
|
+
"@tramvai/tokens-common": "3.7.0",
|
|
50
50
|
"@tinkoff/dippy": "0.9.1",
|
|
51
51
|
"react": "*",
|
|
52
52
|
"tslib": "^2.4.0"
|