@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 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,6 @@
1
1
  {
2
2
  "name": "@skbkontur/side-menu",
3
- "version": "1.0.0",
3
+ "version": "1.0.1-router-test.0",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org/"
@@ -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 (props, ref) {
5
- return React.createElement(ClickableElement, __assign({}, props, { ref: ref, element: 'button' }));
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 (!_isSubMenu && context.isSeparatedMenu) {
69
- (_a = context.setIsSeparatedMenuShown) === null || _a === void 0 ? void 0 : _a.call(context, false);
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
- if (context.isSeparatedMenu && !_isSubMenu && children) {
72
- (_b = context.setIsSeparatedMenuShown) === null || _b === void 0 ? void 0 : _b.call(context, true);
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) {