@gravity-ui/navigation 0.22.1 → 0.23.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/build/cjs/components/AllPagesPanel/constants.d.ts +1 -1
- package/build/cjs/components/AllPagesPanel/index.d.ts +1 -1
- package/build/cjs/components/AsideHeader/AsideHeader.d.ts +1 -1
- package/build/cjs/components/AsideHeader/components/FirstPanel.d.ts +1 -1
- package/build/cjs/components/AsideHeader/types.d.ts +1 -1
- package/build/cjs/index.js +21 -15
- package/build/cjs/index.js.map +1 -1
- package/build/esm/components/AllPagesPanel/constants.d.ts +1 -1
- package/build/esm/components/AllPagesPanel/index.d.ts +1 -1
- package/build/esm/components/AsideHeader/AsideHeader.d.ts +1 -1
- package/build/esm/components/AsideHeader/components/FirstPanel.d.ts +1 -1
- package/build/esm/components/AsideHeader/types.d.ts +1 -1
- package/build/esm/index.js +21 -15
- package/build/esm/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { AsideHeaderProps } from './types';
|
|
3
3
|
import './AsideHeader.scss';
|
|
4
|
-
export declare const AsideHeader:
|
|
4
|
+
export declare const AsideHeader: React.ForwardRefExoticComponent<AsideHeaderProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
export declare const FirstPanel:
|
|
2
|
+
export declare const FirstPanel: React.ForwardRefExoticComponent<React.RefAttributes<HTMLDivElement>>;
|
|
@@ -14,7 +14,7 @@ export interface AsideHeaderGeneralProps {
|
|
|
14
14
|
renderFooter?: (data: {
|
|
15
15
|
size: number;
|
|
16
16
|
compact: boolean;
|
|
17
|
-
asideRef: React.
|
|
17
|
+
asideRef: React.ForwardedRef<HTMLDivElement>;
|
|
18
18
|
}) => React.ReactNode;
|
|
19
19
|
onClosePanel?: () => void;
|
|
20
20
|
onChangeCompact?: (compact: boolean) => void;
|
package/build/cjs/index.js
CHANGED
|
@@ -1700,12 +1700,14 @@ const COMPONENT$4 = 'AllPagesPanel';
|
|
|
1700
1700
|
var i18n$4 = registerKeyset({ en: en$4, ru: ru$4 }, COMPONENT$4);
|
|
1701
1701
|
|
|
1702
1702
|
const ALL_PAGES_ID = 'all-pages';
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1703
|
+
function getAllPagesMenuItem() {
|
|
1704
|
+
return {
|
|
1705
|
+
id: ALL_PAGES_ID,
|
|
1706
|
+
title: i18n$4('menu-item.all-pages.title'),
|
|
1707
|
+
tooltipText: i18n$4('menu-item.all-pages.title'),
|
|
1708
|
+
icon: icons.Ellipsis,
|
|
1709
|
+
};
|
|
1710
|
+
}
|
|
1709
1711
|
|
|
1710
1712
|
const useGroupedMenuItems = (items) => {
|
|
1711
1713
|
const allPagesMenuItems = React.useMemo(() => {
|
|
@@ -5025,24 +5027,25 @@ const Panels = () => {
|
|
|
5025
5027
|
return panelItems ? (React__default["default"].createElement(Drawer, { className: b$m('panels'), onVeilClick: onClosePanel, onEscape: onClosePanel, style: { left: size } }, panelItems.map((item) => (React__default["default"].createElement(DrawerItem, Object.assign({ key: item.id }, item)))))) : null;
|
|
5026
5028
|
};
|
|
5027
5029
|
|
|
5028
|
-
const FirstPanel = () => {
|
|
5030
|
+
const FirstPanel = React__default["default"].forwardRef((_props, ref) => {
|
|
5029
5031
|
const { size, onItemClick, headerDecoration, multipleTooltip, menuMoreTitle, renderFooter, compact, } = useAsideHeaderInnerContext();
|
|
5030
5032
|
const visibleMenuItems = useVisibleMenuItems();
|
|
5031
5033
|
const asideRef = React.useRef(null);
|
|
5034
|
+
const popupAnchorRef = React.useMemo(() => ref || asideRef, [ref, asideRef]);
|
|
5032
5035
|
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
5033
5036
|
React__default["default"].createElement("div", { className: b$m('aside'), style: { width: size } },
|
|
5034
|
-
React__default["default"].createElement("div", { className: b$m('aside-popup-anchor'), ref:
|
|
5037
|
+
React__default["default"].createElement("div", { className: b$m('aside-popup-anchor'), ref: popupAnchorRef }),
|
|
5035
5038
|
React__default["default"].createElement("div", { className: b$m('aside-content', { ['with-decoration']: headerDecoration }) },
|
|
5036
5039
|
React__default["default"].createElement(Header, null),
|
|
5037
5040
|
(visibleMenuItems === null || visibleMenuItems === void 0 ? void 0 : visibleMenuItems.length) ? (React__default["default"].createElement(CompositeBar, { type: "menu", items: visibleMenuItems, menuMoreTitle: menuMoreTitle !== null && menuMoreTitle !== void 0 ? menuMoreTitle : i18n$3('label_more'), onItemClick: onItemClick, multipleTooltip: multipleTooltip })) : (React__default["default"].createElement("div", { className: b$m('menu-items') })),
|
|
5038
5041
|
React__default["default"].createElement("div", { className: b$m('footer') }, renderFooter === null || renderFooter === void 0 ? void 0 : renderFooter({
|
|
5039
5042
|
size,
|
|
5040
5043
|
compact: Boolean(compact),
|
|
5041
|
-
asideRef,
|
|
5044
|
+
asideRef: popupAnchorRef,
|
|
5042
5045
|
})),
|
|
5043
5046
|
React__default["default"].createElement(CollapseButton, null))),
|
|
5044
5047
|
React__default["default"].createElement(Panels, null)));
|
|
5045
|
-
};
|
|
5048
|
+
});
|
|
5046
5049
|
|
|
5047
5050
|
var css_248z$h = ".g-root {\n --gn-aside-header-background-color: var(--g-color-base-warning-light);\n --gn-aside-header-collapse-button-divider-line-color: var(\n --gn-aside-header-subheader-divider-line-color\n );\n --gn-aside-header-footer-item-icon-color: var(--g-color-text-primary);\n --gn-aside-header-subheader-item-icon-color: var(--g-color-text-primary);\n --gn-aside-header-item-icon-background-size: 38px;\n}\n\n.g-root_theme_light,\n.g-root_theme_light-hc {\n --gn-aside-header-divider-line-color: transparent;\n --gn-aside-header-subheader-divider-line-color: var(--g-color-line-generic);\n}\n\n.g-root_theme_dark,\n.g-root_theme_dark-hc {\n --gn-aside-header-divider-line-color: var(--g-color-line-generic-solid);\n --gn-aside-header-subheader-divider-line-color: var(--g-color-line-generic-solid);\n}\n\n.gn-aside-header {\n --gn-aside-header-min-width: 56px;\n height: 100%;\n width: 100%;\n position: relative;\n background-color: var(--g-color-base-background);\n}\n.gn-aside-header__aside {\n position: sticky;\n top: 0;\n left: 0;\n height: 100vh;\n width: inherit;\n display: flex;\n flex-direction: column;\n background-color: var(--g-color-base-background);\n z-index: 100;\n box-sizing: border-box;\n}\n.gn-aside-header__aside::after {\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n width: 1px;\n height: 100%;\n content: \"\";\n background-color: var(--gn-aside-header-divider-line-color);\n}\n.gn-aside-header__aside-popup-anchor {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 1;\n}\n.gn-aside-header__aside-content {\n --gradient-height: 334px;\n display: flex;\n flex-direction: column;\n overflow-x: hidden;\n width: inherit;\n height: inherit;\n position: relative;\n z-index: 2;\n user-select: none;\n}\n.gn-aside-header__aside-content::after {\n position: absolute;\n top: 0;\n right: -100px;\n bottom: 0;\n width: 100px;\n content: \"\";\n box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.1), 0px 0px 24px rgba(0, 0, 0, 0.08);\n}\n.gn-aside-header__aside-content > .gn-aside-header-logo {\n margin: 8px 0;\n}\n.gn-aside-header__aside-content_with-decoration {\n background: linear-gradient(180deg, var(--gn-aside-header-background-color) calc(var(--gradient-height) * 0.33), transparent calc(var(--gradient-height) * 0.88));\n}\n.gn-aside-header_compact .gn-aside-header__aside-content {\n background: transparent;\n}\n.gn-aside-header__header {\n --gn-aside-header-header-divider-height: 29px;\n position: relative;\n z-index: 1;\n flex: none;\n box-sizing: border-box;\n width: 100%;\n padding-top: 8px;\n padding-bottom: 22px;\n}\n.gn-aside-header__header .gn-aside-header__header-divider {\n position: absolute;\n bottom: 0;\n left: 0;\n z-index: -2;\n display: none;\n color: var(--gn-aside-header-background-color);\n}\n.gn-aside-header__header_with-decoration::before {\n position: absolute;\n top: 0;\n left: 0;\n z-index: -2;\n display: none;\n width: 100%;\n height: calc(100% - var(--gn-aside-header-header-divider-height));\n content: \"\";\n background-color: var(--gn-aside-header-background-color);\n}\n.gn-aside-header__header::after {\n position: absolute;\n bottom: 12px;\n left: 0;\n z-index: -2;\n width: 100%;\n height: 1px;\n content: \"\";\n background-color: var(--gn-aside-header-subheader-divider-line-color);\n}\n.gn-aside-header_compact .gn-aside-header__header::before {\n display: block;\n}\n.gn-aside-header_compact .gn-aside-header__header_with-decoration .gn-aside-header__header-divider {\n display: block;\n}\n.gn-aside-header_compact .gn-aside-header__header_with-decoration::after {\n display: none;\n}\n.gn-aside-header__menu-items {\n flex-grow: 1;\n}\n.gn-aside-header__footer {\n flex-shrink: 0;\n width: 100%;\n margin: 8px 0;\n display: flex;\n flex-direction: column;\n}\n.gn-aside-header__panels {\n z-index: 98;\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n overflow: auto;\n}\n.gn-aside-header__panel {\n height: 100%;\n}\n.gn-aside-header__pane-container {\n display: flex;\n outline: none;\n overflow: visible;\n user-select: text;\n flex-direction: row;\n}\n.gn-aside-header__content {\n width: calc(100% - var(--gn-aside-header-size));\n z-index: 95;\n}\n.gn-aside-header__collapse-button {\n --yc-button-background-color-hover: transparent;\n overflow: hidden;\n box-sizing: border-box;\n flex: none;\n width: 100%;\n height: 20px;\n border-top: 1px solid var(--gn-aside-header-collapse-button-divider-line-color);\n margin-top: auto;\n}\n.gn-aside-header__collapse-button > .yc-button__text {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 20px;\n}\n.gn-aside-header__collapse-button:not(.gn-aside-header__collapse-button_compact) .gn-aside-header__collapse-icon {\n transform: rotate(180deg);\n}\n.gn-aside-header__collapse-button .gn-aside-header__collapse-icon {\n color: var(--g-color-text-secondary);\n}\n.gn-aside-header__collapse-button:hover .gn-aside-header__collapse-icon {\n color: var(--g-color-text-primary);\n}";
|
|
5048
5051
|
styleInject(css_248z$h);
|
|
@@ -5056,6 +5059,9 @@ const EMPTY_MENU_ITEMS = [];
|
|
|
5056
5059
|
const useAsideHeaderInnerContextValue = (props) => {
|
|
5057
5060
|
const { size, onClosePanel, menuItems, panelItems, onMenuItemsChanged } = props;
|
|
5058
5061
|
const [innerVisiblePanel, setInnerVisiblePanel] = React.useState();
|
|
5062
|
+
const ALL_PAGES_MENU_ITEM = React__default["default"].useMemo(() => {
|
|
5063
|
+
return getAllPagesMenuItem();
|
|
5064
|
+
}, []);
|
|
5059
5065
|
const allPagesIsAvailable = Boolean(onMenuItemsChanged) && (!menuItems || (menuItems === null || menuItems === void 0 ? void 0 : menuItems.length) > 0);
|
|
5060
5066
|
React.useEffect(() => {
|
|
5061
5067
|
// If any user panel became visible we need to switch off all inner panels
|
|
@@ -5076,13 +5082,13 @@ const useAsideHeaderInnerContextValue = (props) => {
|
|
|
5076
5082
|
innerOnClosePanel();
|
|
5077
5083
|
}
|
|
5078
5084
|
(_a = item.onItemClick) === null || _a === void 0 ? void 0 : _a.call(item, item, collapsed, event);
|
|
5079
|
-
}, [innerOnClosePanel]);
|
|
5085
|
+
}, [innerOnClosePanel, ALL_PAGES_MENU_ITEM]);
|
|
5080
5086
|
const innerMenuItems = React.useMemo(() => allPagesIsAvailable
|
|
5081
5087
|
? [
|
|
5082
5088
|
...(menuItems || EMPTY_MENU_ITEMS),
|
|
5083
5089
|
Object.assign(Object.assign({}, ALL_PAGES_MENU_ITEM), { current: innerVisiblePanel === InnerPanels.AllPages }),
|
|
5084
5090
|
]
|
|
5085
|
-
: menuItems || EMPTY_MENU_ITEMS, [allPagesIsAvailable, menuItems, innerVisiblePanel]);
|
|
5091
|
+
: menuItems || EMPTY_MENU_ITEMS, [allPagesIsAvailable, menuItems, innerVisiblePanel, ALL_PAGES_MENU_ITEM]);
|
|
5086
5092
|
const innerPanelItems = React.useMemo(() => {
|
|
5087
5093
|
if (!allPagesIsAvailable) {
|
|
5088
5094
|
return panelItems;
|
|
@@ -5100,7 +5106,7 @@ const useAsideHeaderInnerContextValue = (props) => {
|
|
|
5100
5106
|
onItemClick });
|
|
5101
5107
|
};
|
|
5102
5108
|
|
|
5103
|
-
const AsideHeader = (props) => {
|
|
5109
|
+
const AsideHeader = React__default["default"].forwardRef((props, ref) => {
|
|
5104
5110
|
const { className, compact } = props;
|
|
5105
5111
|
const size = compact ? ASIDE_HEADER_COMPACT_WIDTH : ASIDE_HEADER_EXPANDED_WIDTH;
|
|
5106
5112
|
const asideHeaderContextValue = React.useMemo(() => ({ size, compact }), [compact, size]);
|
|
@@ -5109,9 +5115,9 @@ const AsideHeader = (props) => {
|
|
|
5109
5115
|
React__default["default"].createElement(AsideHeaderInnerContextProvider, { value: asideHeaderInnerContextValue },
|
|
5110
5116
|
React__default["default"].createElement("div", { className: b$m({ compact }, className) },
|
|
5111
5117
|
React__default["default"].createElement("div", { className: b$m('pane-container') },
|
|
5112
|
-
React__default["default"].createElement(FirstPanel,
|
|
5118
|
+
React__default["default"].createElement(FirstPanel, { ref: ref }),
|
|
5113
5119
|
React__default["default"].createElement(Content, { size: size, renderContent: props.renderContent, className: b$m('content') }))))));
|
|
5114
|
-
};
|
|
5120
|
+
});
|
|
5115
5121
|
|
|
5116
5122
|
/******************************************************************************
|
|
5117
5123
|
Copyright (c) Microsoft Corporation.
|