@gravity-ui/navigation 0.12.0 → 0.13.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.
@@ -15,6 +15,7 @@ export interface ItemProps extends ItemPopup {
15
15
  item: MenuItem;
16
16
  enableTooltip?: boolean;
17
17
  onItemClick?: (item: MenuItem, collapsed: boolean, event: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;
18
+ onItemClickCapture?: (event: React.SyntheticEvent) => void;
18
19
  }
19
20
  interface ItemInnerProps extends ItemProps {
20
21
  className?: string;
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { ItemProps } from '../CompositeBar/Item/Item';
3
3
  import './FooterItem.scss';
4
- export interface FooterItemProps extends Omit<ItemProps, 'onItemClick'> {
4
+ export interface FooterItemProps extends Omit<ItemProps, 'onItemClick' | 'onItemClickCapture'> {
5
5
  compact: boolean;
6
6
  }
7
7
  export declare const FooterItem: React.FC<FooterItemProps>;
@@ -15,10 +15,12 @@ export interface MenuItem {
15
15
  current?: boolean;
16
16
  pinned?: boolean;
17
17
  onItemClick?: (item: MenuItem, collapsed: boolean, event: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;
18
+ onItemClickCapture?: (event: React.SyntheticEvent) => void;
18
19
  itemWrapper?: (p: MakeItemParams, makeItem: (p: MakeItemParams) => React.ReactNode, opts: {
19
20
  collapsed: boolean;
20
21
  compact: boolean;
21
22
  item: MenuItem;
23
+ ref: React.RefObject<HTMLElement>;
22
24
  }) => React.ReactNode;
23
25
  rightAdornment?: React.ReactNode;
24
26
  type?: MenuItemType;
@@ -3200,16 +3200,9 @@ var css_248z$l = ".ycn-logo {\n display: flex;\n align-items: center;\n flex-
3200
3200
  styleInject(css_248z$l);
3201
3201
 
3202
3202
  const b$m = block('logo');
3203
- const Logo$1 = ({ text, icon, iconSrc, iconClassName, iconSize = 24, textSize = 15, href = '/', wrapper, onClick, }) => {
3203
+ const Logo$1 = ({ text, icon, iconSrc, iconClassName, iconSize = 24, textSize = 15, href, wrapper, onClick, }) => {
3204
3204
  const { compact } = useAsideHeaderContext();
3205
- const hasClickHandler = typeof onClick === 'function';
3206
3205
  const hasWrapper = typeof wrapper === 'function';
3207
- const linkProps = hasClickHandler
3208
- ? {}
3209
- : {
3210
- target: '_self',
3211
- href,
3212
- };
3213
3206
  let buttonIcon;
3214
3207
  if (iconSrc) {
3215
3208
  buttonIcon = (React__default.createElement(Button.Icon, { className: iconClassName },
@@ -3218,7 +3211,7 @@ const Logo$1 = ({ text, icon, iconSrc, iconClassName, iconSize = 24, textSize =
3218
3211
  else if (icon) {
3219
3212
  buttonIcon = React__default.createElement(Icon, { data: icon, size: iconSize, className: iconClassName });
3220
3213
  }
3221
- const button = (React__default.createElement(Button, Object.assign({ view: "flat", size: "l", className: b$m('btn-logo'), component: hasWrapper ? 'span' : undefined, onClick: onClick }, linkProps), buttonIcon));
3214
+ const button = (React__default.createElement(Button, { view: "flat", size: "l", className: b$m('btn-logo'), component: hasWrapper ? 'span' : undefined, onClick: onClick, target: "_self", href: href }, buttonIcon));
3222
3215
  let logo;
3223
3216
  if (typeof text === 'function') {
3224
3217
  logo = text();
@@ -3229,7 +3222,7 @@ const Logo$1 = ({ text, icon, iconSrc, iconClassName, iconSize = 24, textSize =
3229
3222
  return (React__default.createElement("div", { className: b$m() },
3230
3223
  React__default.createElement("div", { className: b$m('logo-btn-place') }, hasWrapper ? wrapper(button, compact) : button),
3231
3224
  !compact &&
3232
- (hasWrapper ? (React__default.createElement("div", { onClick: onClick }, wrapper(logo, compact))) : (React__default.createElement("a", Object.assign({}, linkProps, { className: b$m('logo-link'), onClick: onClick }), logo)))));
3225
+ (hasWrapper ? (React__default.createElement("div", { onClick: onClick }, wrapper(logo, compact))) : (React__default.createElement("a", { href: href !== null && href !== void 0 ? href : '/', target: "_self", className: b$m('logo-link'), onClick: onClick }, logo)))));
3233
3226
  };
3234
3227
 
3235
3228
  /**
@@ -3718,7 +3711,7 @@ function renderItemTitle(item) {
3718
3711
  const defaultPopupPlacement = ['right-end'];
3719
3712
  const defaultPopupOffset = [-20, 8];
3720
3713
  const Item$1 = (props) => {
3721
- const { item, className, collapseItems, onMouseLeave, onMouseEnter, enableTooltip = true, popupVisible = false, popupAnchor, popupPlacement = defaultPopupPlacement, popupOffset = defaultPopupOffset, popupKeepMounted, renderPopupContent, onClosePopup, onItemClick, } = props;
3714
+ const { item, className, collapseItems, onMouseLeave, onMouseEnter, enableTooltip = true, popupVisible = false, popupAnchor, popupPlacement = defaultPopupPlacement, popupOffset = defaultPopupOffset, popupKeepMounted, renderPopupContent, onClosePopup, onItemClick, onItemClickCapture, } = props;
3722
3715
  const { compact } = useAsideHeaderContext();
3723
3716
  if (item.type === 'divider') {
3724
3717
  return React__default.createElement("div", { className: b$l('menu-divider') });
@@ -3754,7 +3747,7 @@ const Item$1 = (props) => {
3754
3747
  else {
3755
3748
  onItemClick === null || onItemClick === void 0 ? void 0 : onItemClick(item, false, event);
3756
3749
  }
3757
- }, onMouseEnter: () => {
3750
+ }, onClickCapture: onItemClickCapture, onMouseEnter: () => {
3758
3751
  if (!compact) {
3759
3752
  onMouseEnter === null || onMouseEnter === void 0 ? void 0 : onMouseEnter();
3760
3753
  }
@@ -3773,7 +3766,7 @@ const Item$1 = (props) => {
3773
3766
  const titleNode = renderItemTitle(item);
3774
3767
  const params = { icon: iconNode, title: titleNode };
3775
3768
  let node;
3776
- const opts = { compact, collapsed: false, item };
3769
+ const opts = { compact, collapsed: false, item, ref };
3777
3770
  if (typeof item.itemWrapper === 'function') {
3778
3771
  node = item.itemWrapper(params, makeNode, opts);
3779
3772
  }
@@ -3798,7 +3791,7 @@ function CollapsedPopup({ onItemClick, collapseItems, anchorRef, onClose, }) {
3798
3791
  };
3799
3792
  const titleNode = renderItemTitle(collapseItem);
3800
3793
  const params = { title: titleNode };
3801
- const opts = { compact, collapsed: true, item: collapseItem };
3794
+ const opts = { compact, collapsed: true, item: collapseItem, ref: anchorRef };
3802
3795
  if (typeof collapseItem.itemWrapper === 'function') {
3803
3796
  return collapseItem.itemWrapper(params, makeCollapseNode, opts);
3804
3797
  }
@@ -4122,7 +4115,7 @@ styleInject(css_248z$g);
4122
4115
  const b$h = block('footer-item');
4123
4116
  const FooterItem$1 = (_a) => {
4124
4117
  var { item } = _a, props = __rest(_a, ["item"]);
4125
- return (React__default.createElement(Item$1, Object.assign({}, props, { item: Object.assign({ iconSize: ASIDE_HEADER_FOOTER_ICON_SIZE }, item), className: b$h({ compact: props.compact }), onItemClick: item.onItemClick })));
4118
+ return (React__default.createElement(Item$1, Object.assign({}, props, { item: Object.assign({ iconSize: ASIDE_HEADER_FOOTER_ICON_SIZE }, item), className: b$h({ compact: props.compact }), onItemClick: item.onItemClick, onItemClickCapture: item.onItemClickCapture })));
4126
4119
  };
4127
4120
 
4128
4121
  var css_248z$f = ".ycn-action-bar-group {\n display: flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: flex-start;\n margin: 0;\n padding: 0;\n}\n.ycn-action-bar-group_pull_left {\n margin-left: 0;\n margin-right: auto;\n}\n.ycn-action-bar-group_pull_right {\n margin-left: auto;\n margin-right: 0;\n}\n.ycn-action-bar-group_pull_center {\n margin-left: auto;\n margin-right: auto;\n}";