@gravity-ui/navigation 0.9.0 → 0.10.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.
- package/CHANGELOG.md +16 -0
- package/build/cjs/components/AsideHeader/AsideHeader.d.ts +1 -0
- package/build/cjs/components/AsideHeader/__stories__/AsideHeader.stories.d.ts +2 -0
- package/build/cjs/components/AsideHeader/__stories__/AsideHeaderShowcase.d.ts +7 -2
- package/build/cjs/components/CompositeBar/CompositeBar.d.ts +7 -15
- package/build/cjs/components/CompositeBar/Item/Item.d.ts +1 -1
- package/build/cjs/components/CompositeBar/MultipleTooltip/MultipleTooltip.d.ts +8 -0
- package/build/cjs/components/CompositeBar/MultipleTooltip/MultipleTooltipContext.d.ts +24 -0
- package/build/cjs/components/CompositeBar/MultipleTooltip/index.d.ts +3 -0
- package/build/cjs/components/CompositeBar/utils.d.ts +6 -1
- package/build/cjs/index.js +223 -148
- package/build/cjs/index.js.map +1 -1
- package/build/esm/components/AsideHeader/AsideHeader.d.ts +1 -0
- package/build/esm/components/AsideHeader/__stories__/AsideHeader.stories.d.ts +2 -0
- package/build/esm/components/AsideHeader/__stories__/AsideHeaderShowcase.d.ts +7 -2
- package/build/esm/components/CompositeBar/CompositeBar.d.ts +7 -15
- package/build/esm/components/CompositeBar/Item/Item.d.ts +1 -1
- package/build/esm/components/CompositeBar/MultipleTooltip/MultipleTooltip.d.ts +8 -0
- package/build/esm/components/CompositeBar/MultipleTooltip/MultipleTooltipContext.d.ts +24 -0
- package/build/esm/components/CompositeBar/MultipleTooltip/index.d.ts +3 -0
- package/build/esm/components/CompositeBar/utils.d.ts +6 -1
- package/build/esm/index.js +225 -150
- package/build/esm/index.js.map +1 -1
- package/package.json +1 -1
package/build/esm/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import React__default, { Children, isValidElement, cloneElement, createElement, PureComponent,
|
|
2
|
+
import React__default, { Children, isValidElement, cloneElement, createElement, PureComponent, useRef, useContext, useCallback, useState, useMemo, useEffect } from 'react';
|
|
3
3
|
import { useBodyScrollLock, Button, Icon, Popup, List, Tooltip, Text, Hotkey, TextInput, Tabs, Loader, Sheet, eventBroker } from '@gravity-ui/uikit';
|
|
4
4
|
import ReactDOM from 'react-dom';
|
|
5
|
-
import { Xmark } from '@gravity-ui/icons';
|
|
5
|
+
import { Ellipsis, Xmark } from '@gravity-ui/icons';
|
|
6
6
|
|
|
7
7
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
8
8
|
|
|
@@ -84,8 +84,8 @@ const defaultDict$2 = {
|
|
|
84
84
|
[MobileHeaderDict.OpenBurger]: 'Open menu',
|
|
85
85
|
};
|
|
86
86
|
|
|
87
|
-
function _extends$
|
|
88
|
-
_extends$
|
|
87
|
+
function _extends$3() {
|
|
88
|
+
_extends$3 = Object.assign ? Object.assign.bind() : function (target) {
|
|
89
89
|
for (var i = 1; i < arguments.length; i++) {
|
|
90
90
|
var source = arguments[i];
|
|
91
91
|
for (var key in source) {
|
|
@@ -96,7 +96,7 @@ function _extends$4() {
|
|
|
96
96
|
}
|
|
97
97
|
return target;
|
|
98
98
|
};
|
|
99
|
-
return _extends$
|
|
99
|
+
return _extends$3.apply(this, arguments);
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
function _objectWithoutPropertiesLoose(source, excluded) {
|
|
@@ -2249,7 +2249,7 @@ var CSSTransition = /*#__PURE__*/function (_React$Component) {
|
|
|
2249
2249
|
_this$props.classNames;
|
|
2250
2250
|
var props = _objectWithoutPropertiesLoose(_this$props, ["classNames"]);
|
|
2251
2251
|
|
|
2252
|
-
return /*#__PURE__*/React__default.createElement(Transition, _extends$
|
|
2252
|
+
return /*#__PURE__*/React__default.createElement(Transition, _extends$3({}, props, {
|
|
2253
2253
|
onEnter: this.onEnter,
|
|
2254
2254
|
onEntered: this.onEntered,
|
|
2255
2255
|
onEntering: this.onEntering,
|
|
@@ -2265,7 +2265,7 @@ var CSSTransition = /*#__PURE__*/function (_React$Component) {
|
|
|
2265
2265
|
CSSTransition.defaultProps = {
|
|
2266
2266
|
classNames: ''
|
|
2267
2267
|
};
|
|
2268
|
-
CSSTransition.propTypes = process.env.NODE_ENV !== "production" ? _extends$
|
|
2268
|
+
CSSTransition.propTypes = process.env.NODE_ENV !== "production" ? _extends$3({}, Transition.propTypes, {
|
|
2269
2269
|
/**
|
|
2270
2270
|
* The animation classNames applied to the component as it appears, enters,
|
|
2271
2271
|
* exits or has finished the transition. A single name can be provided, which
|
|
@@ -2627,7 +2627,7 @@ var TransitionGroup = /*#__PURE__*/function (_React$Component) {
|
|
|
2627
2627
|
|
|
2628
2628
|
if (this.mounted) {
|
|
2629
2629
|
this.setState(function (state) {
|
|
2630
|
-
var children = _extends$
|
|
2630
|
+
var children = _extends$3({}, state.children);
|
|
2631
2631
|
|
|
2632
2632
|
delete children[child.key];
|
|
2633
2633
|
return {
|
|
@@ -3130,15 +3130,15 @@ function styleInject(css, ref) {
|
|
|
3130
3130
|
}
|
|
3131
3131
|
}
|
|
3132
3132
|
|
|
3133
|
-
var css_248z$
|
|
3134
|
-
styleInject(css_248z$
|
|
3133
|
+
var css_248z$m = ".ycn-drawer__item {\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n height: 100%;\n will-change: transform;\n background-color: var(--yc-color-base-background);\n}\n.ycn-drawer__item_direction_right {\n left: auto;\n right: 0;\n}\n.ycn-drawer__item-transition-enter {\n transform: translate(-100%, 0);\n}\n.ycn-drawer__item-transition_direction_right-enter {\n transform: translate(100%, 0);\n}\n.ycn-drawer__item-transition-enter-active, .ycn-drawer__item-transition_direction_right-enter-active {\n transform: translate(0, 0);\n transition: transform 300ms;\n}\n.ycn-drawer__item-transition-enter-done, .ycn-drawer__item-transition_direction_right-enter-done {\n filter: blur(0px);\n transform: translateZ(0);\n}\n.ycn-drawer__item-transition-exit, .ycn-drawer__item-transition_direction_right-exit {\n transform: translate(0, 0);\n}\n.ycn-drawer__item-transition-exit-active, .ycn-drawer__item-transition_direction_right-exit-active {\n transition: transform 300ms;\n}\n.ycn-drawer__item-transition-exit-active {\n transform: translate(-100%, 0);\n}\n.ycn-drawer__item-transition_direction_right-exit-active {\n transform: translate(100%, 0);\n}\n.ycn-drawer__item-transition-exit-done, .ycn-drawer__item-transition_direction_right-exit-done {\n visibility: hidden;\n}\n.ycn-drawer__veil {\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n background-color: var(--yc-color-sfx-veil);\n}\n.ycn-drawer__veil-transition-enter {\n opacity: 0;\n}\n.ycn-drawer__veil-transition-enter-active {\n opacity: 1;\n transition: opacity 300ms;\n}\n.ycn-drawer__veil-transition-exit {\n opacity: 1;\n}\n.ycn-drawer__veil-transition-exit-active {\n opacity: 0;\n transition: opacity 300ms;\n}\n.ycn-drawer__veil-transition-exit-done {\n visibility: hidden;\n}";
|
|
3134
|
+
styleInject(css_248z$m);
|
|
3135
3135
|
|
|
3136
|
-
const b$
|
|
3136
|
+
const b$n = block('drawer');
|
|
3137
3137
|
const TIMEOUT = 300;
|
|
3138
3138
|
const DrawerItem = ({ visible, content, direction, className }) => {
|
|
3139
3139
|
const itemRef = React__default.useRef(null);
|
|
3140
|
-
return (React__default.createElement(CSSTransition, { in: visible, timeout: TIMEOUT, unmountOnExit: true, classNames: b$
|
|
3141
|
-
React__default.createElement("div", { ref: itemRef, className: b$
|
|
3140
|
+
return (React__default.createElement(CSSTransition, { in: visible, timeout: TIMEOUT, unmountOnExit: true, classNames: b$n('item-transition', { direction }), nodeRef: itemRef },
|
|
3141
|
+
React__default.createElement("div", { ref: itemRef, className: b$n('item', { direction }, className) }, content)));
|
|
3142
3142
|
};
|
|
3143
3143
|
const Drawer = ({ className, children, style, onVeilClick, onEscape, preventScrollBody = true, }) => {
|
|
3144
3144
|
let someItemVisible = false;
|
|
@@ -3169,9 +3169,9 @@ const Drawer = ({ className, children, style, onVeilClick, onEscape, preventScro
|
|
|
3169
3169
|
const veilRef = React__default.useRef(null);
|
|
3170
3170
|
return (React__default.createElement(Transition, { in: someItemVisible, timeout: { enter: 0, exit: TIMEOUT }, mountOnEnter: true, unmountOnExit: true, nodeRef: containerRef }, (state) => {
|
|
3171
3171
|
const childrenVisible = someItemVisible && state === 'entered';
|
|
3172
|
-
return (React__default.createElement("div", { ref: containerRef, className: b$
|
|
3173
|
-
React__default.createElement(CSSTransition, { in: childrenVisible, timeout: TIMEOUT, unmountOnExit: true, classNames: b$
|
|
3174
|
-
React__default.createElement("div", { ref: veilRef, className: b$
|
|
3172
|
+
return (React__default.createElement("div", { ref: containerRef, className: b$n(null, className), style: style },
|
|
3173
|
+
React__default.createElement(CSSTransition, { in: childrenVisible, timeout: TIMEOUT, unmountOnExit: true, classNames: b$n('veil-transition'), nodeRef: veilRef },
|
|
3174
|
+
React__default.createElement("div", { ref: veilRef, className: b$n('veil'), onClick: onVeilClick })),
|
|
3175
3175
|
React__default.Children.map(children, (child) => {
|
|
3176
3176
|
const childElem = child;
|
|
3177
3177
|
if (childElem.type === DrawerItem) {
|
|
@@ -3183,10 +3183,10 @@ const Drawer = ({ className, children, style, onVeilClick, onEscape, preventScro
|
|
|
3183
3183
|
}));
|
|
3184
3184
|
};
|
|
3185
3185
|
|
|
3186
|
-
var css_248z$
|
|
3187
|
-
styleInject(css_248z$
|
|
3186
|
+
var css_248z$l = ".ycn-logo {\n display: flex;\n align-items: center;\n flex-shrink: 0;\n height: 40px;\n}\n.ycn-logo__logo-btn-place {\n flex-shrink: 0;\n width: var(--aside-header-min-width);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n}\n.ycn-logo__logo-btn-place .yc-button::before {\n background-color: transparent;\n}\n.ycn-logo__btn-logo.yc-button_view_flat.yc-button_size_l {\n --yc-button-height: 38px;\n}\n.ycn-logo__logo {\n font-size: var(--yc-text-body-2-font-size);\n line-height: var(--yc-text-body-2-line-height);\n font-weight: var(--yc-text-body-font-weight);\n vertical-align: middle;\n cursor: pointer;\n}\n.ycn-logo__logo-link, .ycn-logo__logo-link:hover, .ycn-logo__logo-link:active, .ycn-logo__logo-link:visited, .ycn-logo__logo-link:focus {\n text-decoration: none;\n outline: none;\n color: inherit;\n}\n.yc-root .ycn-logo__btn-logo.button2_theme_flat.button2_hovered_yes::before {\n background-color: transparent;\n}";
|
|
3187
|
+
styleInject(css_248z$l);
|
|
3188
3188
|
|
|
3189
|
-
const b$
|
|
3189
|
+
const b$m = block('logo');
|
|
3190
3190
|
const Logo$1 = ({ text, compact, icon, iconSrc, iconClassName, iconSize = 24, textSize = 15, href = '/', wrapper, onClick, }) => {
|
|
3191
3191
|
const hasClickHandler = typeof onClick === 'function';
|
|
3192
3192
|
const hasWrapper = typeof wrapper === 'function';
|
|
@@ -3204,18 +3204,18 @@ const Logo$1 = ({ text, compact, icon, iconSrc, iconClassName, iconSize = 24, te
|
|
|
3204
3204
|
else if (icon) {
|
|
3205
3205
|
buttonIcon = React__default.createElement(Icon, { data: icon, size: iconSize, className: iconClassName });
|
|
3206
3206
|
}
|
|
3207
|
-
const button = (React__default.createElement(Button, Object.assign({ view: "flat", size: "l", className: b$
|
|
3207
|
+
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));
|
|
3208
3208
|
let logo;
|
|
3209
3209
|
if (typeof text === 'function') {
|
|
3210
3210
|
logo = text();
|
|
3211
3211
|
}
|
|
3212
3212
|
else {
|
|
3213
|
-
logo = (React__default.createElement("div", { className: b$
|
|
3213
|
+
logo = (React__default.createElement("div", { className: b$m('logo'), style: { fontSize: textSize } }, text));
|
|
3214
3214
|
}
|
|
3215
|
-
return (React__default.createElement("div", { className: b$
|
|
3216
|
-
React__default.createElement("div", { className: b$
|
|
3215
|
+
return (React__default.createElement("div", { className: b$m() },
|
|
3216
|
+
React__default.createElement("div", { className: b$m('logo-btn-place') }, hasWrapper ? wrapper(button, compact) : button),
|
|
3217
3217
|
!compact &&
|
|
3218
|
-
(hasWrapper ? (React__default.createElement("div", { onClick: onClick }, wrapper(logo, compact))) : (React__default.createElement("a", Object.assign({}, linkProps, { className: b$
|
|
3218
|
+
(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)))));
|
|
3219
3219
|
};
|
|
3220
3220
|
|
|
3221
3221
|
var classCallCheck = function (instance, Constructor) {
|
|
@@ -3242,7 +3242,7 @@ var createClass = function () {
|
|
|
3242
3242
|
};
|
|
3243
3243
|
}();
|
|
3244
3244
|
|
|
3245
|
-
var _extends$
|
|
3245
|
+
var _extends$2 = Object.assign || function (target) {
|
|
3246
3246
|
for (var i = 1; i < arguments.length; i++) {
|
|
3247
3247
|
var source = arguments[i];
|
|
3248
3248
|
|
|
@@ -3685,7 +3685,7 @@ var AutoSizer = function (_React$PureComponent) {
|
|
|
3685
3685
|
{
|
|
3686
3686
|
className: className,
|
|
3687
3687
|
ref: this._setRef,
|
|
3688
|
-
style: _extends$
|
|
3688
|
+
style: _extends$2({}, outerStyle, style)
|
|
3689
3689
|
},
|
|
3690
3690
|
!bailoutOnChildren && children(childParams)
|
|
3691
3691
|
);
|
|
@@ -3746,17 +3746,66 @@ function getItemsMinHeight(items) {
|
|
|
3746
3746
|
getItemsHeight(afterMoreButtonItems) +
|
|
3747
3747
|
(pinnedItems.length === items.length ? 0 : ITEM_HEIGHT));
|
|
3748
3748
|
}
|
|
3749
|
+
function getMoreButtonItem(dict) {
|
|
3750
|
+
var _a;
|
|
3751
|
+
const title = (_a = dict === null || dict === void 0 ? void 0 : dict[Dict.MoreButton]) !== null && _a !== void 0 ? _a : defaultDict$2[Dict.MoreButton];
|
|
3752
|
+
return {
|
|
3753
|
+
id: COLLAPSE_ITEM_ID,
|
|
3754
|
+
title,
|
|
3755
|
+
icon: Ellipsis,
|
|
3756
|
+
iconSize: 18,
|
|
3757
|
+
};
|
|
3758
|
+
}
|
|
3759
|
+
function getAutosizeListItems(items, height, collapseItem) {
|
|
3760
|
+
var _a, _b, _c;
|
|
3761
|
+
const afterMoreButtonItems = items.filter((item) => item.afterMoreButton);
|
|
3762
|
+
const regularItems = items.filter((item) => !item.afterMoreButton);
|
|
3763
|
+
const listItems = [...regularItems, ...afterMoreButtonItems];
|
|
3764
|
+
const allItemsHeight = getItemsHeight(listItems);
|
|
3765
|
+
if (allItemsHeight <= height) {
|
|
3766
|
+
return { listItems, collapseItems: [] };
|
|
3767
|
+
}
|
|
3768
|
+
const collapseItemHeight = getItemHeight$1(collapseItem);
|
|
3769
|
+
listItems.splice(regularItems.length, 0, collapseItem);
|
|
3770
|
+
const collapseItems = [];
|
|
3771
|
+
let listHeight = allItemsHeight + collapseItemHeight;
|
|
3772
|
+
let index = listItems.length;
|
|
3773
|
+
while (listHeight > height) {
|
|
3774
|
+
if (index === 0) {
|
|
3775
|
+
break;
|
|
3776
|
+
}
|
|
3777
|
+
index--;
|
|
3778
|
+
const item = listItems[index];
|
|
3779
|
+
if (item.pinned || item.id === COLLAPSE_ITEM_ID || item.afterMoreButton) {
|
|
3780
|
+
continue;
|
|
3781
|
+
}
|
|
3782
|
+
if (item.type === 'divider') {
|
|
3783
|
+
if (index + 1 < listItems.length && ((_a = listItems[index + 1]) === null || _a === void 0 ? void 0 : _a.type) === 'divider') {
|
|
3784
|
+
listHeight -= getItemHeight$1(item);
|
|
3785
|
+
listItems.splice(index, 1);
|
|
3786
|
+
}
|
|
3787
|
+
continue;
|
|
3788
|
+
}
|
|
3789
|
+
listHeight -= getItemHeight$1(item);
|
|
3790
|
+
collapseItems.unshift(...listItems.splice(index, 1));
|
|
3791
|
+
}
|
|
3792
|
+
if (((_b = listItems[index]) === null || _b === void 0 ? void 0 : _b.type) === 'divider' &&
|
|
3793
|
+
(index === 0 || ((_c = listItems[index - 1]) === null || _c === void 0 ? void 0 : _c.type) === 'divider')) {
|
|
3794
|
+
listItems.splice(index, 1);
|
|
3795
|
+
}
|
|
3796
|
+
return { listItems, collapseItems };
|
|
3797
|
+
}
|
|
3749
3798
|
|
|
3750
|
-
var css_248z$
|
|
3751
|
-
styleInject(css_248z$
|
|
3799
|
+
var css_248z$k = ".ycn-composite-bar-item {\n --composite-bar-item-action-size: 36px;\n display: flex;\n width: 100%;\n height: 100%;\n align-items: center;\n cursor: pointer;\n}\n.ycn-composite-bar-item__icon {\n color: var(--yc-color-text-misc);\n}\n.ycn-composite-bar-item__icon-place {\n flex-shrink: 0;\n width: var(--aside-header-min-width);\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n}\n.ycn-composite-bar-item__title {\n display: flex;\n overflow: hidden;\n}\n.ycn-composite-bar-item__title-text {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n.ycn-composite-bar-item__title-adornment {\n margin: 0 10px;\n}\n.ycn-composite-bar-item__collapse-item {\n display: flex;\n padding: 0 16px;\n align-items: center;\n width: 100%;\n height: 100%;\n cursor: pointer;\n}\n.ycn-composite-bar-item__collapse-item .ycn-composite-bar-item__title-adornment {\n margin-right: 0;\n}\n.ycn-composite-bar-item__menu-divider {\n margin: 0 8px;\n width: 100%;\n border-top: 1px solid var(--yc-color-line-generic);\n cursor: default;\n}\n.ycn-composite-bar-item__collapse-items-popup-content {\n padding: 4px 0;\n}\n.ycn-composite-bar-item__link {\n display: flex;\n width: 100%;\n height: 100%;\n align-items: center;\n}\n.ycn-composite-bar-item__link, .ycn-composite-bar-item__link:hover, .ycn-composite-bar-item__link:active, .ycn-composite-bar-item__link:visited, .ycn-composite-bar-item__link:focus {\n text-decoration: none;\n outline: none;\n color: inherit;\n}\n.ycn-composite-bar-item__btn-icon {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.ycn-composite-bar-item_type_action {\n justify-content: center;\n height: var(--composite-bar-item-action-size);\n margin: 0 10px 8px;\n background: var(--yc-color-base-float);\n box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.03), 0px 5px 6px rgba(0, 0, 0, 0.12);\n border-radius: var(--composite-bar-item-action-size);\n transition: transform 0.1s ease-out, background-color 0.15s linear;\n}\n.ycn-composite-bar-item_type_action:focus {\n box-shadow: 0 0 0 2px var(--yc-color-line-misc);\n}\n.ycn-composite-bar-item_type_action:focus:not(:focus-visible) {\n box-shadow: none;\n}\n.ycn-composite-bar-item_type_action:hover {\n background-color: var(--yc-color-base-float-hover);\n}\n.ycn-composite-bar-item_type_action:active {\n box-shadow: 0 1px 2px var(--yc-color-sfx-shadow);\n transition: none;\n transform: scale(0.96);\n}\n.ycn-composite-bar-item_type_action .ycn-composite-bar-item__icon-place {\n width: var(--composite-bar-item-action-size);\n}\n.ycn-composite-bar-item_type_action .ycn-composite-bar-item__title {\n margin-right: 16px;\n}\n.ycn-composite-bar-item__icon-tooltip_item-type_action {\n margin-left: 10px;\n}\n.ycn-composite-bar-item:not(.ycn-composite-bar-item_compact).ycn-composite-bar-item_current.ycn-composite-bar-item_type_regular {\n background-color: var(--yc-color-base-selection);\n}\n.ycn-composite-bar-item:not(.ycn-composite-bar-item_compact):not(.ycn-composite-bar-item_current):hover.ycn-composite-bar-item_type_regular {\n background-color: var(--yc-color-base-simple-hover);\n}\n.ycn-composite-bar-item_compact.ycn-composite-bar-item_type_action {\n width: var(--composite-bar-item-action-size);\n}\n.ycn-composite-bar-item_compact.ycn-composite-bar-item_type_action .ycn-composite-bar-item__title {\n margin: 0;\n}\n.ycn-composite-bar-item_compact.ycn-composite-bar-item_current.ycn-composite-bar-item_type_regular .ycn-composite-bar-item__btn-icon {\n position: relative;\n background-color: transparent;\n}\n.ycn-composite-bar-item_compact.ycn-composite-bar-item_current.ycn-composite-bar-item_type_regular .ycn-composite-bar-item__btn-icon::before {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n z-index: -1;\n width: 38px;\n height: 38px;\n margin-top: -19px;\n margin-left: -19px;\n border-radius: 7px;\n}\n.ycn-composite-bar-item_compact.ycn-composite-bar-item_current.ycn-composite-bar-item_type_regular .ycn-composite-bar-item__btn-icon::before {\n background-color: var(--yc-color-base-selection);\n}\n.ycn-composite-bar-item_compact:not(.ycn-composite-bar-item_current):hover.ycn-composite-bar-item_type_regular .ycn-composite-bar-item__btn-icon {\n position: relative;\n background-color: transparent;\n}\n.ycn-composite-bar-item_compact:not(.ycn-composite-bar-item_current):hover.ycn-composite-bar-item_type_regular .ycn-composite-bar-item__btn-icon::before {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n z-index: -1;\n width: 38px;\n height: 38px;\n margin-top: -19px;\n margin-left: -19px;\n border-radius: 7px;\n}\n.ycn-composite-bar-item_compact:not(.ycn-composite-bar-item_current):hover.ycn-composite-bar-item_type_regular .ycn-composite-bar-item__btn-icon::before {\n background-color: var(--yc-color-base-simple-hover);\n}";
|
|
3800
|
+
styleInject(css_248z$k);
|
|
3752
3801
|
|
|
3753
|
-
const b$
|
|
3802
|
+
const b$l = block('composite-bar-item');
|
|
3754
3803
|
function renderItemTitle(item) {
|
|
3755
|
-
let titleNode = React__default.createElement("div", { className: b$
|
|
3804
|
+
let titleNode = React__default.createElement("div", { className: b$l('title-text') }, item.title);
|
|
3756
3805
|
if (item.rightAdornment) {
|
|
3757
3806
|
titleNode = (React__default.createElement(React__default.Fragment, null,
|
|
3758
3807
|
titleNode,
|
|
3759
|
-
React__default.createElement("div", { className: b$
|
|
3808
|
+
React__default.createElement("div", { className: b$l('title-adornment') }, item.rightAdornment)));
|
|
3760
3809
|
}
|
|
3761
3810
|
return titleNode;
|
|
3762
3811
|
}
|
|
@@ -3765,7 +3814,7 @@ const defaultPopupOffset = [-20, 8];
|
|
|
3765
3814
|
const Item$1 = (props) => {
|
|
3766
3815
|
const { item, compact, className, collapseItems, onMouseLeave, onMouseEnter, enableTooltip = true, popupVisible = false, popupAnchor, popupPlacement = defaultPopupPlacement, popupOffset = defaultPopupOffset, popupKeepMounted, renderPopupContent, onClosePopup, onItemClick, } = props;
|
|
3767
3816
|
if (item.type === 'divider') {
|
|
3768
|
-
return React__default.createElement("div", { className: b$
|
|
3817
|
+
return React__default.createElement("div", { className: b$l('menu-divider') });
|
|
3769
3818
|
}
|
|
3770
3819
|
const [open, toggleOpen] = React__default.useState(false);
|
|
3771
3820
|
const ref = React__default.useRef(null);
|
|
@@ -3786,7 +3835,7 @@ const Item$1 = (props) => {
|
|
|
3786
3835
|
onClosePopup === null || onClosePopup === void 0 ? void 0 : onClosePopup();
|
|
3787
3836
|
}, [onClosePopup]);
|
|
3788
3837
|
const makeNode = ({ icon: iconEl, title: titleEl }) => {
|
|
3789
|
-
const createdNode = (React__default.createElement("div", { className: b$
|
|
3838
|
+
const createdNode = (React__default.createElement("div", { className: b$l({ type, current, compact }, className), ref: ref, onClick: (event) => {
|
|
3790
3839
|
if (collapsedItem) {
|
|
3791
3840
|
/**
|
|
3792
3841
|
* If we call onItemClick for collapsedItem then:
|
|
@@ -3796,7 +3845,7 @@ const Item$1 = (props) => {
|
|
|
3796
3845
|
toggleOpen(!open);
|
|
3797
3846
|
}
|
|
3798
3847
|
else {
|
|
3799
|
-
onItemClick === null || onItemClick === void 0 ? void 0 : onItemClick(item, false);
|
|
3848
|
+
onItemClick === null || onItemClick === void 0 ? void 0 : onItemClick(item, false, event);
|
|
3800
3849
|
}
|
|
3801
3850
|
}, onMouseEnter: () => {
|
|
3802
3851
|
if (!compact) {
|
|
@@ -3807,13 +3856,13 @@ const Item$1 = (props) => {
|
|
|
3807
3856
|
onMouseLeave === null || onMouseLeave === void 0 ? void 0 : onMouseLeave();
|
|
3808
3857
|
}
|
|
3809
3858
|
} },
|
|
3810
|
-
React__default.createElement("div", { className: b$
|
|
3811
|
-
React__default.createElement("div", { onMouseEnter: () => onMouseEnter === null || onMouseEnter === void 0 ? void 0 : onMouseEnter(), onMouseLeave: () => onMouseLeave === null || onMouseLeave === void 0 ? void 0 : onMouseLeave(), className: b$
|
|
3812
|
-
React__default.createElement("div", { className: b$
|
|
3813
|
-
renderPopupContent && Boolean(anchorRef === null || anchorRef === void 0 ? void 0 : anchorRef.current) && (React__default.createElement(Popup, { className: b$
|
|
3814
|
-
return item.link ? (React__default.createElement("a", { href: item.link, className: b$
|
|
3859
|
+
React__default.createElement("div", { className: b$l('icon-place') }, compact ? (React__default.createElement(Tooltip, { content: tooltipText, disabled: !enableTooltip || (collapsedItem && open), placement: "right", className: b$l('icon-tooltip', { 'item-type': type }) },
|
|
3860
|
+
React__default.createElement("div", { onMouseEnter: () => onMouseEnter === null || onMouseEnter === void 0 ? void 0 : onMouseEnter(), onMouseLeave: () => onMouseLeave === null || onMouseLeave === void 0 ? void 0 : onMouseLeave(), className: b$l('btn-icon') }, iconEl))) : (iconEl)),
|
|
3861
|
+
React__default.createElement("div", { className: b$l('title'), title: typeof item.title === 'string' ? item.title : undefined }, titleEl),
|
|
3862
|
+
renderPopupContent && Boolean(anchorRef === null || anchorRef === void 0 ? void 0 : anchorRef.current) && (React__default.createElement(Popup, { className: b$l('popup'), open: popupVisible, keepMounted: popupKeepMounted, placement: popupPlacement, offset: popupOffset, anchorRef: anchorRef, onClose: onClose }, renderPopupContent()))));
|
|
3863
|
+
return item.link ? (React__default.createElement("a", { href: item.link, className: b$l('link') }, createdNode)) : (createdNode);
|
|
3815
3864
|
};
|
|
3816
|
-
const iconNode = icon ? React__default.createElement(Icon, { data: icon, size: iconSize, className: b$
|
|
3865
|
+
const iconNode = icon ? React__default.createElement(Icon, { data: icon, size: iconSize, className: b$l('icon') }) : null;
|
|
3817
3866
|
const titleNode = renderItemTitle(item);
|
|
3818
3867
|
const params = { icon: iconNode, title: titleNode };
|
|
3819
3868
|
let node;
|
|
@@ -3831,13 +3880,13 @@ const Item$1 = (props) => {
|
|
|
3831
3880
|
Item$1.displayName = 'Item';
|
|
3832
3881
|
function CollapsedPopup({ compact, onItemClick, collapseItems, anchorRef, onClose, }) {
|
|
3833
3882
|
return (collapseItems === null || collapseItems === void 0 ? void 0 : collapseItems.length) ? (React__default.createElement(Popup, { placement: POPUP_PLACEMENT, open: true, anchorRef: anchorRef, onClose: onClose },
|
|
3834
|
-
React__default.createElement("div", { className: b$
|
|
3835
|
-
React__default.createElement(List, { itemClassName: b$
|
|
3883
|
+
React__default.createElement("div", { className: b$l('collapse-items-popup-content') },
|
|
3884
|
+
React__default.createElement(List, { itemClassName: b$l('root-collapse-item'), items: collapseItems, selectedItemIndex: getSelectedItemIndex$1(collapseItems), itemHeight: POPUP_ITEM_HEIGHT, itemsHeight: collapseItems.length * POPUP_ITEM_HEIGHT, virtualized: false, filterable: false, sortable: false, renderItem: (collapseItem) => {
|
|
3836
3885
|
const makeCollapseNode = ({ title: titleEl }) => {
|
|
3837
|
-
const res = (React__default.createElement("div", { className: b$
|
|
3838
|
-
onItemClick === null || onItemClick === void 0 ? void 0 : onItemClick(collapseItem, true);
|
|
3886
|
+
const res = (React__default.createElement("div", { className: b$l('collapse-item'), onClick: (event) => {
|
|
3887
|
+
onItemClick === null || onItemClick === void 0 ? void 0 : onItemClick(collapseItem, true, event);
|
|
3839
3888
|
} }, titleEl));
|
|
3840
|
-
return collapseItem.link ? (React__default.createElement("a", { href: collapseItem.link, className: b$
|
|
3889
|
+
return collapseItem.link ? (React__default.createElement("a", { href: collapseItem.link, className: b$l('link') }, res)) : (res);
|
|
3841
3890
|
};
|
|
3842
3891
|
const titleNode = renderItemTitle(collapseItem);
|
|
3843
3892
|
const params = { title: titleNode };
|
|
@@ -3851,123 +3900,149 @@ function CollapsedPopup({ compact, onItemClick, collapseItems, anchorRef, onClos
|
|
|
3851
3900
|
} })))) : null;
|
|
3852
3901
|
}
|
|
3853
3902
|
|
|
3854
|
-
var
|
|
3855
|
-
|
|
3856
|
-
var SvgDots = function SvgDots(props) {
|
|
3857
|
-
return /*#__PURE__*/React.createElement("svg", _extends$2({
|
|
3858
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
3859
|
-
viewBox: "0 0 16 16",
|
|
3860
|
-
width: 16,
|
|
3861
|
-
height: 16
|
|
3862
|
-
}, props), _path$2 || (_path$2 = /*#__PURE__*/React.createElement("path", {
|
|
3863
|
-
d: "M14 6.125a1.874 1.874 0 1 1 .001 3.749A1.874 1.874 0 0 1 14 6.125zm-5.906 0a1.874 1.874 0 1 1 0 3.749 1.874 1.874 0 0 1 0-3.749zM2 6.125a1.874 1.874 0 1 1 .001 3.749A1.874 1.874 0 0 1 2 6.125z",
|
|
3864
|
-
fill: "currentColor",
|
|
3865
|
-
fillRule: "evenodd"
|
|
3866
|
-
})));
|
|
3867
|
-
};
|
|
3868
|
-
var dotsIcon = SvgDots;
|
|
3869
|
-
|
|
3870
|
-
var css_248z$i = ".ycn-composite-bar {\n flex: 1 0 auto;\n width: 100%;\n min-height: 40px;\n}\n.ycn-composite-bar .ycn-composite-bar__root-menu-item[class] {\n background-color: transparent;\n}";
|
|
3871
|
-
styleInject(css_248z$i);
|
|
3903
|
+
var css_248z$j = ".ycn-composite-bar {\n flex: 1 0 auto;\n width: 100%;\n min-height: 40px;\n}\n.ycn-composite-bar .ycn-composite-bar__root-menu-item[class] {\n background-color: transparent;\n}";
|
|
3904
|
+
styleInject(css_248z$j);
|
|
3872
3905
|
|
|
3873
|
-
const
|
|
3874
|
-
|
|
3906
|
+
const multipleTooltipContextDefaults = {
|
|
3907
|
+
active: false,
|
|
3908
|
+
activeIndex: undefined,
|
|
3909
|
+
hideCollapseItemTooltip: false,
|
|
3910
|
+
lastClickedItemIndex: undefined,
|
|
3911
|
+
setValue: () => { },
|
|
3912
|
+
};
|
|
3913
|
+
const MultipleTooltipContext = React__default.createContext(multipleTooltipContextDefaults);
|
|
3914
|
+
class MultipleTooltipProvider extends React__default.PureComponent {
|
|
3875
3915
|
constructor() {
|
|
3876
3916
|
super(...arguments);
|
|
3877
|
-
this.state = {
|
|
3878
|
-
|
|
3917
|
+
this.state = Object.assign({}, multipleTooltipContextDefaults);
|
|
3918
|
+
this.setValue = (value) => {
|
|
3919
|
+
this.setState(Object.assign({}, value));
|
|
3879
3920
|
};
|
|
3880
|
-
this.listRef = React__default.createRef();
|
|
3881
3921
|
}
|
|
3882
3922
|
render() {
|
|
3883
|
-
const {
|
|
3884
|
-
|
|
3885
|
-
return null;
|
|
3886
|
-
}
|
|
3887
|
-
if (!enableCollapsing) {
|
|
3888
|
-
return React__default.createElement("div", { className: b$j() }, this.renderMenu());
|
|
3889
|
-
}
|
|
3890
|
-
const minHeight = getItemsMinHeight(items);
|
|
3891
|
-
return (React__default.createElement("div", { className: b$j({ autosizer: true }), style: { minHeight } }, items.length !== 0 && (React__default.createElement(AutoSizer, null, ({ width, height }) => {
|
|
3892
|
-
const style = {
|
|
3893
|
-
width,
|
|
3894
|
-
height,
|
|
3895
|
-
};
|
|
3896
|
-
return React__default.createElement("div", { style: style }, this.renderAutosizeMenu(height));
|
|
3897
|
-
}))));
|
|
3898
|
-
}
|
|
3899
|
-
renderAutosizeMenu(height) {
|
|
3900
|
-
const { compact, onItemClick } = this.props;
|
|
3901
|
-
const { listItems, collapseItems } = this.getAutosizeListItems(height);
|
|
3902
|
-
return (React__default.createElement(List, { ref: this.listRef, items: listItems, selectedItemIndex: getSelectedItemIndex$1(listItems), itemHeight: getItemHeight$1, itemClassName: b$j('root-menu-item'), itemsHeight: getItemsHeight, virtualized: false, filterable: false, sortable: false, renderItem: (item) => (React__default.createElement(Item$1, { item: item, onMouseLeave: () => {
|
|
3903
|
-
var _a;
|
|
3904
|
-
if (compact) {
|
|
3905
|
-
(_a = this.listRef.current) === null || _a === void 0 ? void 0 : _a.activateItem(undefined);
|
|
3906
|
-
}
|
|
3907
|
-
}, compact: compact, collapseItems: collapseItems, onItemClick: onItemClick })) }));
|
|
3923
|
+
const { children } = this.props;
|
|
3924
|
+
return (React__default.createElement(MultipleTooltipContext.Provider, { value: Object.assign(Object.assign({}, this.state), { setValue: this.setValue }) }, children));
|
|
3908
3925
|
}
|
|
3909
|
-
|
|
3910
|
-
|
|
3911
|
-
|
|
3912
|
-
|
|
3913
|
-
|
|
3914
|
-
|
|
3915
|
-
|
|
3916
|
-
|
|
3917
|
-
|
|
3918
|
-
|
|
3919
|
-
|
|
3920
|
-
|
|
3921
|
-
|
|
3922
|
-
|
|
3923
|
-
|
|
3924
|
-
|
|
3925
|
-
|
|
3926
|
-
|
|
3927
|
-
|
|
3928
|
-
|
|
3929
|
-
|
|
3930
|
-
|
|
3931
|
-
|
|
3932
|
-
|
|
3933
|
-
|
|
3934
|
-
|
|
3935
|
-
|
|
3936
|
-
|
|
3937
|
-
|
|
3926
|
+
}
|
|
3927
|
+
|
|
3928
|
+
var css_248z$i = ".yc-root_theme_dark .ycn-multiple-tooltip,\n.yc-root_theme_dark-hc .ycn-multiple-tooltip {\n --multiple-tooltip-item-bg-color: #424147;\n --multiple-tooltip-item-active-bg-color: var(--yc-color-base-float-heavy);\n --multiple-tooltip-backdrop-background: linear-gradient(\n 90deg,\n #313036 0%,\n rgba(49, 48, 54, 0.3) 100%\n );\n --multiple-tooltip-backdrop-filter: blur(16px);\n}\n\n.yc-root_theme_light .ycn-multiple-tooltip,\n.yc-root_theme_light-hc .ycn-multiple-tooltip {\n --multiple-tooltip-item-bg-color: #7a7a7a;\n --multiple-tooltip-item-active-bg-color: var(--yc-color-base-float-heavy);\n --multiple-tooltip-backdrop-background: linear-gradient(\n 90deg,\n #ffffff 0%,\n rgba(255, 255, 255, 0.3) 100%\n );\n --multiple-tooltip-backdrop-filter: blur(12px);\n}\n\n.ycn-multiple-tooltip {\n background-color: transparent;\n box-shadow: none;\n}\n.ycn-multiple-tooltip::before {\n content: \"\";\n box-shadow: none;\n position: absolute;\n width: 100%;\n height: 100%;\n z-index: -1;\n background: var(--multiple-tooltip-backdrop-background);\n filter: var(--multiple-tooltip-backdrop-filter);\n}\n.ycn-multiple-tooltip__items-container {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n padding: 32px 40px 32px 12px;\n}\n.ycn-multiple-tooltip__item {\n display: flex;\n box-sizing: border-box;\n height: 30px;\n padding: 8px 12px;\n background-color: var(--multiple-tooltip-item-bg-color);\n position: relative;\n border-radius: 5px;\n align-items: center;\n color: var(--yc-color-text-light-primary);\n margin-bottom: 5px;\n transition: transform 100ms ease-in-out;\n}\n.ycn-multiple-tooltip__item:not(.ycn-multiple-tooltip__item_divider) + .ycn-multiple-tooltip__item:not(.ycn-multiple-tooltip__item_divider), .ycn-multiple-tooltip__item:first-child {\n margin-top: 5px;\n}\n.ycn-multiple-tooltip__item_divider + .ycn-multiple-tooltip__item:not(.ycn-multiple-tooltip__item_divider) {\n margin-top: 4px;\n}\n.ycn-multiple-tooltip__item_active {\n background-color: var(--multiple-tooltip-item-active-bg-color);\n transform: translateX(-12px);\n}\n.ycn-multiple-tooltip__item_divider {\n height: 15px;\n visibility: hidden;\n margin: 0;\n}";
|
|
3929
|
+
styleInject(css_248z$i);
|
|
3930
|
+
|
|
3931
|
+
const b$k = block('multiple-tooltip');
|
|
3932
|
+
const POPUP_OFFSET = [-32, 4];
|
|
3933
|
+
const POPUP_MODIFIERS = [
|
|
3934
|
+
{
|
|
3935
|
+
name: 'preventOverflow',
|
|
3936
|
+
enabled: false,
|
|
3937
|
+
},
|
|
3938
|
+
];
|
|
3939
|
+
const MultipleTooltip = ({ items, open, anchorRef, placement, }) => {
|
|
3940
|
+
const { activeIndex, hideCollapseItemTooltip } = React__default.useContext(MultipleTooltipContext);
|
|
3941
|
+
const activeItem = activeIndex === undefined ? null : items[activeIndex];
|
|
3942
|
+
return (React__default.createElement(Popup, { open: open, anchorRef: anchorRef, placement: placement, offset: POPUP_OFFSET, className: b$k(null), modifiers: POPUP_MODIFIERS },
|
|
3943
|
+
React__default.createElement("div", { className: b$k('items-container') }, items
|
|
3944
|
+
.filter(({ type = 'regular', id }) => !hideCollapseItemTooltip ||
|
|
3945
|
+
(id !== COLLAPSE_ITEM_ID && type !== 'action'))
|
|
3946
|
+
.map((item, idx) => {
|
|
3947
|
+
switch (item.type) {
|
|
3948
|
+
case 'divider':
|
|
3949
|
+
return (React__default.createElement("div", { className: b$k('item', { divider: true }), key: idx }, item.title));
|
|
3950
|
+
default:
|
|
3951
|
+
return (React__default.createElement("div", { className: b$k('item', {
|
|
3952
|
+
active: item === activeItem,
|
|
3953
|
+
}), key: idx }, item.title));
|
|
3954
|
+
}
|
|
3955
|
+
}))));
|
|
3956
|
+
};
|
|
3957
|
+
|
|
3958
|
+
const b$j = block('composite-bar');
|
|
3959
|
+
const CompositeBarView = ({ items, compact, onItemClick, collapseItems, multipleTooltip = true, }) => {
|
|
3960
|
+
const ref = useRef(null);
|
|
3961
|
+
const tooltipRef = useRef(null);
|
|
3962
|
+
const { setValue: setMultipleTooltipContextValue, active: multipleTooltipActive, activeIndex, lastClickedItemIndex, } = useContext(MultipleTooltipContext);
|
|
3963
|
+
const onTooltipMouseEnter = useCallback((e) => {
|
|
3964
|
+
if (!multipleTooltipActive &&
|
|
3965
|
+
activeIndex !== lastClickedItemIndex &&
|
|
3966
|
+
e.clientX <= ASIDE_HEADER_COMPACT_WIDTH) {
|
|
3967
|
+
setMultipleTooltipContextValue === null || setMultipleTooltipContextValue === void 0 ? void 0 : setMultipleTooltipContextValue({
|
|
3968
|
+
active: true,
|
|
3969
|
+
});
|
|
3938
3970
|
}
|
|
3939
|
-
|
|
3940
|
-
|
|
3941
|
-
|
|
3942
|
-
|
|
3943
|
-
|
|
3944
|
-
|
|
3945
|
-
|
|
3946
|
-
|
|
3947
|
-
|
|
3971
|
+
}, [multipleTooltipActive, activeIndex, lastClickedItemIndex, setMultipleTooltipContextValue]);
|
|
3972
|
+
const onTooltipMouseLeave = useCallback(() => {
|
|
3973
|
+
if (multipleTooltipActive) {
|
|
3974
|
+
setMultipleTooltipContextValue === null || setMultipleTooltipContextValue === void 0 ? void 0 : setMultipleTooltipContextValue({
|
|
3975
|
+
active: false,
|
|
3976
|
+
lastClickedItemIndex: undefined,
|
|
3977
|
+
});
|
|
3978
|
+
}
|
|
3979
|
+
}, [multipleTooltipActive, setMultipleTooltipContextValue]);
|
|
3980
|
+
const onMouseEnterByIndex = useCallback((itemIndex) => () => {
|
|
3981
|
+
if (multipleTooltip) {
|
|
3982
|
+
let multipleTooltipActiveValue = multipleTooltipActive;
|
|
3983
|
+
if (!multipleTooltipActive && itemIndex !== lastClickedItemIndex) {
|
|
3984
|
+
multipleTooltipActiveValue = true;
|
|
3948
3985
|
}
|
|
3949
|
-
|
|
3950
|
-
|
|
3951
|
-
|
|
3952
|
-
continue;
|
|
3986
|
+
if (activeIndex === itemIndex &&
|
|
3987
|
+
multipleTooltipActive === multipleTooltipActiveValue) {
|
|
3988
|
+
return;
|
|
3953
3989
|
}
|
|
3954
|
-
|
|
3955
|
-
|
|
3956
|
-
|
|
3957
|
-
|
|
3958
|
-
|
|
3959
|
-
|
|
3990
|
+
setMultipleTooltipContextValue({
|
|
3991
|
+
activeIndex: itemIndex,
|
|
3992
|
+
active: multipleTooltipActiveValue,
|
|
3993
|
+
});
|
|
3994
|
+
}
|
|
3995
|
+
}, [multipleTooltipActive, activeIndex, lastClickedItemIndex, setMultipleTooltipContextValue]);
|
|
3996
|
+
const onMouseLeave = useCallback(() => {
|
|
3997
|
+
var _a;
|
|
3998
|
+
if (compact) {
|
|
3999
|
+
(_a = ref.current) === null || _a === void 0 ? void 0 : _a.activateItem(undefined);
|
|
4000
|
+
if (multipleTooltip &&
|
|
4001
|
+
(activeIndex !== undefined || lastClickedItemIndex !== undefined)) {
|
|
4002
|
+
setMultipleTooltipContextValue({
|
|
4003
|
+
activeIndex: undefined,
|
|
4004
|
+
lastClickedItemIndex: undefined,
|
|
4005
|
+
});
|
|
3960
4006
|
}
|
|
3961
|
-
listHeight -= getItemHeight$1(item);
|
|
3962
|
-
collapseItems.unshift(...listItems.splice(index, 1));
|
|
3963
4007
|
}
|
|
3964
|
-
|
|
3965
|
-
|
|
3966
|
-
|
|
4008
|
+
}, [activeIndex, lastClickedItemIndex, setMultipleTooltipContextValue]);
|
|
4009
|
+
const onItemClickByIndex = useCallback((itemIndex) => (item, collapsed) => {
|
|
4010
|
+
if (compact &&
|
|
4011
|
+
multipleTooltip &&
|
|
4012
|
+
itemIndex !== lastClickedItemIndex &&
|
|
4013
|
+
item.id !== COLLAPSE_ITEM_ID) {
|
|
4014
|
+
setMultipleTooltipContextValue({
|
|
4015
|
+
lastClickedItemIndex: itemIndex,
|
|
4016
|
+
active: false,
|
|
4017
|
+
});
|
|
3967
4018
|
}
|
|
3968
|
-
|
|
4019
|
+
onItemClick === null || onItemClick === void 0 ? void 0 : onItemClick(item, collapsed);
|
|
4020
|
+
}, [lastClickedItemIndex, setMultipleTooltipContextValue]);
|
|
4021
|
+
return (React__default.createElement(React__default.Fragment, null,
|
|
4022
|
+
React__default.createElement("div", { ref: tooltipRef, onMouseEnter: onTooltipMouseEnter, onMouseLeave: onTooltipMouseLeave },
|
|
4023
|
+
React__default.createElement(List, { ref: ref, items: items, selectedItemIndex: getSelectedItemIndex$1(items), itemHeight: getItemHeight$1, itemClassName: b$j('root-menu-item'), itemsHeight: getItemsHeight, virtualized: false, filterable: false, sortable: false, renderItem: (item, _isItemActive, itemIndex) => (React__default.createElement(Item$1, { item: item, onMouseEnter: onMouseEnterByIndex(itemIndex), onMouseLeave: onMouseLeave, onItemClick: onItemClickByIndex(itemIndex), compact: compact, collapseItems: collapseItems, enableTooltip: !multipleTooltip })) })),
|
|
4024
|
+
React__default.createElement(MultipleTooltip, { open: compact && multipleTooltip && multipleTooltipActive, anchorRef: tooltipRef, placement: ['right-start'], items: items })));
|
|
4025
|
+
};
|
|
4026
|
+
const CompositeBar = ({ items, compact, enableCollapsing, dict, onItemClick, multipleTooltip = false, }) => {
|
|
4027
|
+
if (items.length === 0) {
|
|
4028
|
+
return null;
|
|
3969
4029
|
}
|
|
3970
|
-
|
|
4030
|
+
let node = null;
|
|
4031
|
+
if (enableCollapsing) {
|
|
4032
|
+
const minHeight = getItemsMinHeight(items);
|
|
4033
|
+
const collapseItem = getMoreButtonItem(dict);
|
|
4034
|
+
node = (React__default.createElement("div", { className: b$j({ autosizer: true }), style: { minHeight } }, items.length !== 0 && (React__default.createElement(AutoSizer, null, ({ width, height }) => {
|
|
4035
|
+
const { listItems, collapseItems } = getAutosizeListItems(items, height, collapseItem);
|
|
4036
|
+
return (React__default.createElement("div", { style: { width, height } },
|
|
4037
|
+
React__default.createElement(CompositeBarView, { items: listItems, compact: compact, onItemClick: onItemClick, collapseItems: collapseItems, multipleTooltip: multipleTooltip })));
|
|
4038
|
+
}))));
|
|
4039
|
+
}
|
|
4040
|
+
else {
|
|
4041
|
+
node = (React__default.createElement("div", { className: b$j() },
|
|
4042
|
+
React__default.createElement(CompositeBarView, { items: items, compact: compact, onItemClick: onItemClick, multipleTooltip: multipleTooltip })));
|
|
4043
|
+
}
|
|
4044
|
+
return React__default.createElement(MultipleTooltipProvider, null, node);
|
|
4045
|
+
};
|
|
3971
4046
|
|
|
3972
4047
|
/* Used by renderContent AsideHeader prop */
|
|
3973
4048
|
const RenderContent = React__default.memo(({ renderContent, size }) => {
|
|
@@ -4017,13 +4092,13 @@ class AsideHeader extends React__default.Component {
|
|
|
4017
4092
|
super(...arguments);
|
|
4018
4093
|
this.asideRef = React__default.createRef();
|
|
4019
4094
|
this.renderFirstPane = (size) => {
|
|
4020
|
-
const { dict, menuItems, panelItems, compact, headerDecoration } = this.props;
|
|
4095
|
+
const { dict, menuItems, panelItems, compact, headerDecoration, multipleTooltip } = this.props;
|
|
4021
4096
|
return (React__default.createElement(React__default.Fragment, null,
|
|
4022
4097
|
React__default.createElement("div", { className: b$i('aside'), style: { width: size } },
|
|
4023
4098
|
React__default.createElement("div", { className: b$i('aside-popup-anchor'), ref: this.asideRef }),
|
|
4024
4099
|
React__default.createElement("div", { className: b$i('aside-content', { ['with-decoration']: headerDecoration }) },
|
|
4025
4100
|
this.renderHeader(),
|
|
4026
|
-
(menuItems === null || menuItems === void 0 ? void 0 : menuItems.length) ? (React__default.createElement(CompositeBar, { items: menuItems, compact: compact, enableCollapsing: true, dict: dict, onItemClick: this.onItemClick })) : (React__default.createElement("div", { className: b$i('menu-items') })),
|
|
4101
|
+
(menuItems === null || menuItems === void 0 ? void 0 : menuItems.length) ? (React__default.createElement(CompositeBar, { items: menuItems, compact: compact, enableCollapsing: true, dict: dict, onItemClick: this.onItemClick, multipleTooltip: multipleTooltip })) : (React__default.createElement("div", { className: b$i('menu-items') })),
|
|
4027
4102
|
this.renderFooter(size),
|
|
4028
4103
|
this.renderCollapseButton())),
|
|
4029
4104
|
panelItems && this.renderPanels(size)));
|