@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;
@@ -3227,16 +3227,9 @@ var css_248z$l = ".ycn-logo {\n display: flex;\n align-items: center;\n flex-
3227
3227
  styleInject(css_248z$l);
3228
3228
 
3229
3229
  const b$m = block('logo');
3230
- const Logo$1 = ({ text, icon, iconSrc, iconClassName, iconSize = 24, textSize = 15, href = '/', wrapper, onClick, }) => {
3230
+ const Logo$1 = ({ text, icon, iconSrc, iconClassName, iconSize = 24, textSize = 15, href, wrapper, onClick, }) => {
3231
3231
  const { compact } = useAsideHeaderContext();
3232
- const hasClickHandler = typeof onClick === 'function';
3233
3232
  const hasWrapper = typeof wrapper === 'function';
3234
- const linkProps = hasClickHandler
3235
- ? {}
3236
- : {
3237
- target: '_self',
3238
- href,
3239
- };
3240
3233
  let buttonIcon;
3241
3234
  if (iconSrc) {
3242
3235
  buttonIcon = (React__default["default"].createElement(uikit.Button.Icon, { className: iconClassName },
@@ -3245,7 +3238,7 @@ const Logo$1 = ({ text, icon, iconSrc, iconClassName, iconSize = 24, textSize =
3245
3238
  else if (icon) {
3246
3239
  buttonIcon = React__default["default"].createElement(uikit.Icon, { data: icon, size: iconSize, className: iconClassName });
3247
3240
  }
3248
- const button = (React__default["default"].createElement(uikit.Button, Object.assign({ view: "flat", size: "l", className: b$m('btn-logo'), component: hasWrapper ? 'span' : undefined, onClick: onClick }, linkProps), buttonIcon));
3241
+ const button = (React__default["default"].createElement(uikit.Button, { view: "flat", size: "l", className: b$m('btn-logo'), component: hasWrapper ? 'span' : undefined, onClick: onClick, target: "_self", href: href }, buttonIcon));
3249
3242
  let logo;
3250
3243
  if (typeof text === 'function') {
3251
3244
  logo = text();
@@ -3256,7 +3249,7 @@ const Logo$1 = ({ text, icon, iconSrc, iconClassName, iconSize = 24, textSize =
3256
3249
  return (React__default["default"].createElement("div", { className: b$m() },
3257
3250
  React__default["default"].createElement("div", { className: b$m('logo-btn-place') }, hasWrapper ? wrapper(button, compact) : button),
3258
3251
  !compact &&
3259
- (hasWrapper ? (React__default["default"].createElement("div", { onClick: onClick }, wrapper(logo, compact))) : (React__default["default"].createElement("a", Object.assign({}, linkProps, { className: b$m('logo-link'), onClick: onClick }), logo)))));
3252
+ (hasWrapper ? (React__default["default"].createElement("div", { onClick: onClick }, wrapper(logo, compact))) : (React__default["default"].createElement("a", { href: href !== null && href !== void 0 ? href : '/', target: "_self", className: b$m('logo-link'), onClick: onClick }, logo)))));
3260
3253
  };
3261
3254
 
3262
3255
  /**
@@ -3745,7 +3738,7 @@ function renderItemTitle(item) {
3745
3738
  const defaultPopupPlacement = ['right-end'];
3746
3739
  const defaultPopupOffset = [-20, 8];
3747
3740
  const Item$1 = (props) => {
3748
- const { item, className, collapseItems, onMouseLeave, onMouseEnter, enableTooltip = true, popupVisible = false, popupAnchor, popupPlacement = defaultPopupPlacement, popupOffset = defaultPopupOffset, popupKeepMounted, renderPopupContent, onClosePopup, onItemClick, } = props;
3741
+ const { item, className, collapseItems, onMouseLeave, onMouseEnter, enableTooltip = true, popupVisible = false, popupAnchor, popupPlacement = defaultPopupPlacement, popupOffset = defaultPopupOffset, popupKeepMounted, renderPopupContent, onClosePopup, onItemClick, onItemClickCapture, } = props;
3749
3742
  const { compact } = useAsideHeaderContext();
3750
3743
  if (item.type === 'divider') {
3751
3744
  return React__default["default"].createElement("div", { className: b$l('menu-divider') });
@@ -3781,7 +3774,7 @@ const Item$1 = (props) => {
3781
3774
  else {
3782
3775
  onItemClick === null || onItemClick === void 0 ? void 0 : onItemClick(item, false, event);
3783
3776
  }
3784
- }, onMouseEnter: () => {
3777
+ }, onClickCapture: onItemClickCapture, onMouseEnter: () => {
3785
3778
  if (!compact) {
3786
3779
  onMouseEnter === null || onMouseEnter === void 0 ? void 0 : onMouseEnter();
3787
3780
  }
@@ -3800,7 +3793,7 @@ const Item$1 = (props) => {
3800
3793
  const titleNode = renderItemTitle(item);
3801
3794
  const params = { icon: iconNode, title: titleNode };
3802
3795
  let node;
3803
- const opts = { compact, collapsed: false, item };
3796
+ const opts = { compact, collapsed: false, item, ref };
3804
3797
  if (typeof item.itemWrapper === 'function') {
3805
3798
  node = item.itemWrapper(params, makeNode, opts);
3806
3799
  }
@@ -3825,7 +3818,7 @@ function CollapsedPopup({ onItemClick, collapseItems, anchorRef, onClose, }) {
3825
3818
  };
3826
3819
  const titleNode = renderItemTitle(collapseItem);
3827
3820
  const params = { title: titleNode };
3828
- const opts = { compact, collapsed: true, item: collapseItem };
3821
+ const opts = { compact, collapsed: true, item: collapseItem, ref: anchorRef };
3829
3822
  if (typeof collapseItem.itemWrapper === 'function') {
3830
3823
  return collapseItem.itemWrapper(params, makeCollapseNode, opts);
3831
3824
  }
@@ -4149,7 +4142,7 @@ styleInject(css_248z$g);
4149
4142
  const b$h = block('footer-item');
4150
4143
  const FooterItem$1 = (_a) => {
4151
4144
  var { item } = _a, props = __rest(_a, ["item"]);
4152
- return (React__default["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 })));
4145
+ return (React__default["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 })));
4153
4146
  };
4154
4147
 
4155
4148
  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}";