@skbkontur/side-menu 1.0.0 → 1.0.1-router-test.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/CHANGELOG.md +11 -0
- package/README.md +23 -0
- package/package.json +1 -1
- package/src/SideMenuItem/SideMenuItem.d.ts +1 -0
- package/src/SideMenuItem/SideMenuItem.js +4 -3
- package/src/SideMenuLink/SideMenuLink.d.ts +1 -0
- package/src/SideMenuLink/SideMenuLink.js +2 -2
- package/src/internal/ClickableElement.d.ts +1 -1
- package/src/internal/ClickableElement.js +6 -4
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [1.0.1](https://git.skbkontur.ru/ui/ui-parking/compare/@skbkontur/side-menu@1.0.0...@skbkontur/side-menu@1.0.1) (2023-08-03)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **SideMenu:** dropdown click fix ([6b729f5](https://git.skbkontur.ru/ui/ui-parking/commits/6b729f51fbd4d7b8f8e3ce54ceb2a09df4f2a3b5))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
# [1.0.0](https://git.skbkontur.ru/ui/ui-parking/compare/@skbkontur/side-menu@0.14.8...@skbkontur/side-menu@1.0.0) (2023-08-02)
|
|
7
18
|
|
|
8
19
|
|
package/README.md
CHANGED
|
@@ -591,6 +591,29 @@ import { useHistory } from "react-router-dom";
|
|
|
591
591
|
|
|
592
592
|
При необходимости вы можете повторить часть этой логики в своей обёртке.
|
|
593
593
|
|
|
594
|
+
---
|
|
595
|
+
|
|
596
|
+
Также можно использовать `SideMenu.Link` передав туда компонент ссылки, например обертку со ссылкой из `react-router-dom`:
|
|
597
|
+
|
|
598
|
+
```ts static
|
|
599
|
+
import { Link } from 'react-router-dom';
|
|
600
|
+
|
|
601
|
+
interface SideMenuReactRouterLinkProps extends SideMenuLinkProps {
|
|
602
|
+
href: string;
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
const LinkWrapper = React.forwardRef<HTMLAnchorElement, SideMenuReactRouterLinkProps>(({ href, ...rest }, ref) => (
|
|
606
|
+
<Link {...rest} to={href} ref={ref} />
|
|
607
|
+
));
|
|
608
|
+
|
|
609
|
+
const SideMenuReactRouterLink: React.FunctionComponent<SideMenuReactRouterLinkProps> = (props) => (
|
|
610
|
+
<SideMenu.Link {...props} component={LinkWrapper} />
|
|
611
|
+
);
|
|
612
|
+
```
|
|
613
|
+
|
|
614
|
+
Если вы используете кастомную ссылку, то убедитесь, что она прокидывает `ref` и остальные пропсы в корневой элемент.
|
|
615
|
+
|
|
616
|
+
|
|
594
617
|
#### Пример кастомизации
|
|
595
618
|
|
|
596
619
|
```jsx harmony
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { CommonClickableElementProps } from '../internal/ClickableElement';
|
|
3
3
|
export interface SideMenuItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, CommonClickableElementProps {
|
|
4
|
+
component?: React.ComponentType<any>;
|
|
4
5
|
}
|
|
5
6
|
/**
|
|
6
7
|
* Элемент списка
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { __assign } from "tslib";
|
|
1
|
+
import { __assign, __rest } from "tslib";
|
|
2
2
|
import React, { forwardRef } from 'react';
|
|
3
3
|
import { ClickableElement } from '../internal/ClickableElement';
|
|
4
|
-
var SideMenuItemInner = forwardRef(function (
|
|
5
|
-
|
|
4
|
+
var SideMenuItemInner = forwardRef(function (_a, ref) {
|
|
5
|
+
var component = _a.component, rest = __rest(_a, ["component"]);
|
|
6
|
+
return React.createElement(ClickableElement, __assign({}, rest, { ref: ref, element: component !== null && component !== void 0 ? component : 'button' }));
|
|
6
7
|
});
|
|
7
8
|
SideMenuItemInner.displayName = 'SideMenuItem';
|
|
8
9
|
/**
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { CommonClickableElementProps } from '../internal/ClickableElement';
|
|
3
3
|
export interface SideMenuLinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement>, CommonClickableElementProps {
|
|
4
|
+
component?: React.ComponentType<any>;
|
|
4
5
|
}
|
|
5
6
|
/**
|
|
6
7
|
* Ссылка для `SideMenu`
|
|
@@ -5,8 +5,8 @@ import { jsStyles } from './SideMenuLink.styles';
|
|
|
5
5
|
import { cx } from '@skbkontur/react-ui/lib/theming/Emotion';
|
|
6
6
|
var SideMenuLinkInner = forwardRef(function (_a, ref) {
|
|
7
7
|
var _b;
|
|
8
|
-
var className = _a.className, rest = __rest(_a, ["className"]);
|
|
9
|
-
return React.createElement(ClickableElement, __assign({}, rest, { ref: ref, element: 'a', className: cx((_b = {}, _b[jsStyles.link()] = true, _b), className) }));
|
|
8
|
+
var className = _a.className, component = _a.component, rest = __rest(_a, ["className", "component"]);
|
|
9
|
+
return (React.createElement(ClickableElement, __assign({}, rest, { ref: ref, element: component !== null && component !== void 0 ? component : 'a', className: cx((_b = {}, _b[jsStyles.link()] = true, _b), className) })));
|
|
10
10
|
});
|
|
11
11
|
SideMenuLinkInner.displayName = 'SideMenuLink';
|
|
12
12
|
/**
|
|
@@ -21,7 +21,7 @@ export interface CommonClickableElementProps extends CommonProps {
|
|
|
21
21
|
_isBackButton?: boolean;
|
|
22
22
|
}
|
|
23
23
|
export interface ClickableElementProps extends CommonClickableElementProps {
|
|
24
|
-
element: 'a' | 'button'
|
|
24
|
+
element: 'a' | 'button' | React.ComponentType<any>;
|
|
25
25
|
href?: string;
|
|
26
26
|
onClick?: React.EventHandler<React.MouseEvent<Element>>;
|
|
27
27
|
onKeyDown?: React.EventHandler<React.KeyboardEvent<Element>>;
|
|
@@ -65,11 +65,13 @@ var ClickableElement = forwardRef(function (_a, ref) {
|
|
|
65
65
|
};
|
|
66
66
|
var setSeparatedMenuIsShown = function () {
|
|
67
67
|
var _a, _b;
|
|
68
|
-
if (
|
|
69
|
-
|
|
68
|
+
if (_isDropdown || _isSubMenu || !context.isSeparatedMenu)
|
|
69
|
+
return;
|
|
70
|
+
if (children) {
|
|
71
|
+
(_a = context.setIsSeparatedMenuShown) === null || _a === void 0 ? void 0 : _a.call(context, true);
|
|
70
72
|
}
|
|
71
|
-
|
|
72
|
-
(_b = context.setIsSeparatedMenuShown) === null || _b === void 0 ? void 0 : _b.call(context,
|
|
73
|
+
else {
|
|
74
|
+
(_b = context.setIsSeparatedMenuShown) === null || _b === void 0 ? void 0 : _b.call(context, false);
|
|
73
75
|
}
|
|
74
76
|
};
|
|
75
77
|
var handleClick = function (e) {
|