@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/esm/index.js
CHANGED
|
@@ -1673,12 +1673,14 @@ const COMPONENT$4 = 'AllPagesPanel';
|
|
|
1673
1673
|
var i18n$4 = registerKeyset({ en: en$4, ru: ru$4 }, COMPONENT$4);
|
|
1674
1674
|
|
|
1675
1675
|
const ALL_PAGES_ID = 'all-pages';
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
|
|
1676
|
+
function getAllPagesMenuItem() {
|
|
1677
|
+
return {
|
|
1678
|
+
id: ALL_PAGES_ID,
|
|
1679
|
+
title: i18n$4('menu-item.all-pages.title'),
|
|
1680
|
+
tooltipText: i18n$4('menu-item.all-pages.title'),
|
|
1681
|
+
icon: Ellipsis,
|
|
1682
|
+
};
|
|
1683
|
+
}
|
|
1682
1684
|
|
|
1683
1685
|
const useGroupedMenuItems = (items) => {
|
|
1684
1686
|
const allPagesMenuItems = useMemo(() => {
|
|
@@ -4998,24 +5000,25 @@ const Panels = () => {
|
|
|
4998
5000
|
return panelItems ? (React__default.createElement(Drawer, { className: b$m('panels'), onVeilClick: onClosePanel, onEscape: onClosePanel, style: { left: size } }, panelItems.map((item) => (React__default.createElement(DrawerItem, Object.assign({ key: item.id }, item)))))) : null;
|
|
4999
5001
|
};
|
|
5000
5002
|
|
|
5001
|
-
const FirstPanel = () => {
|
|
5003
|
+
const FirstPanel = React__default.forwardRef((_props, ref) => {
|
|
5002
5004
|
const { size, onItemClick, headerDecoration, multipleTooltip, menuMoreTitle, renderFooter, compact, } = useAsideHeaderInnerContext();
|
|
5003
5005
|
const visibleMenuItems = useVisibleMenuItems();
|
|
5004
5006
|
const asideRef = useRef(null);
|
|
5007
|
+
const popupAnchorRef = useMemo(() => ref || asideRef, [ref, asideRef]);
|
|
5005
5008
|
return (React__default.createElement(React__default.Fragment, null,
|
|
5006
5009
|
React__default.createElement("div", { className: b$m('aside'), style: { width: size } },
|
|
5007
|
-
React__default.createElement("div", { className: b$m('aside-popup-anchor'), ref:
|
|
5010
|
+
React__default.createElement("div", { className: b$m('aside-popup-anchor'), ref: popupAnchorRef }),
|
|
5008
5011
|
React__default.createElement("div", { className: b$m('aside-content', { ['with-decoration']: headerDecoration }) },
|
|
5009
5012
|
React__default.createElement(Header, null),
|
|
5010
5013
|
(visibleMenuItems === null || visibleMenuItems === void 0 ? void 0 : visibleMenuItems.length) ? (React__default.createElement(CompositeBar, { type: "menu", items: visibleMenuItems, menuMoreTitle: menuMoreTitle !== null && menuMoreTitle !== void 0 ? menuMoreTitle : i18n$3('label_more'), onItemClick: onItemClick, multipleTooltip: multipleTooltip })) : (React__default.createElement("div", { className: b$m('menu-items') })),
|
|
5011
5014
|
React__default.createElement("div", { className: b$m('footer') }, renderFooter === null || renderFooter === void 0 ? void 0 : renderFooter({
|
|
5012
5015
|
size,
|
|
5013
5016
|
compact: Boolean(compact),
|
|
5014
|
-
asideRef,
|
|
5017
|
+
asideRef: popupAnchorRef,
|
|
5015
5018
|
})),
|
|
5016
5019
|
React__default.createElement(CollapseButton, null))),
|
|
5017
5020
|
React__default.createElement(Panels, null)));
|
|
5018
|
-
};
|
|
5021
|
+
});
|
|
5019
5022
|
|
|
5020
5023
|
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}";
|
|
5021
5024
|
styleInject(css_248z$h);
|
|
@@ -5029,6 +5032,9 @@ const EMPTY_MENU_ITEMS = [];
|
|
|
5029
5032
|
const useAsideHeaderInnerContextValue = (props) => {
|
|
5030
5033
|
const { size, onClosePanel, menuItems, panelItems, onMenuItemsChanged } = props;
|
|
5031
5034
|
const [innerVisiblePanel, setInnerVisiblePanel] = useState();
|
|
5035
|
+
const ALL_PAGES_MENU_ITEM = React__default.useMemo(() => {
|
|
5036
|
+
return getAllPagesMenuItem();
|
|
5037
|
+
}, []);
|
|
5032
5038
|
const allPagesIsAvailable = Boolean(onMenuItemsChanged) && (!menuItems || (menuItems === null || menuItems === void 0 ? void 0 : menuItems.length) > 0);
|
|
5033
5039
|
useEffect(() => {
|
|
5034
5040
|
// If any user panel became visible we need to switch off all inner panels
|
|
@@ -5049,13 +5055,13 @@ const useAsideHeaderInnerContextValue = (props) => {
|
|
|
5049
5055
|
innerOnClosePanel();
|
|
5050
5056
|
}
|
|
5051
5057
|
(_a = item.onItemClick) === null || _a === void 0 ? void 0 : _a.call(item, item, collapsed, event);
|
|
5052
|
-
}, [innerOnClosePanel]);
|
|
5058
|
+
}, [innerOnClosePanel, ALL_PAGES_MENU_ITEM]);
|
|
5053
5059
|
const innerMenuItems = useMemo(() => allPagesIsAvailable
|
|
5054
5060
|
? [
|
|
5055
5061
|
...(menuItems || EMPTY_MENU_ITEMS),
|
|
5056
5062
|
Object.assign(Object.assign({}, ALL_PAGES_MENU_ITEM), { current: innerVisiblePanel === InnerPanels.AllPages }),
|
|
5057
5063
|
]
|
|
5058
|
-
: menuItems || EMPTY_MENU_ITEMS, [allPagesIsAvailable, menuItems, innerVisiblePanel]);
|
|
5064
|
+
: menuItems || EMPTY_MENU_ITEMS, [allPagesIsAvailable, menuItems, innerVisiblePanel, ALL_PAGES_MENU_ITEM]);
|
|
5059
5065
|
const innerPanelItems = useMemo(() => {
|
|
5060
5066
|
if (!allPagesIsAvailable) {
|
|
5061
5067
|
return panelItems;
|
|
@@ -5073,7 +5079,7 @@ const useAsideHeaderInnerContextValue = (props) => {
|
|
|
5073
5079
|
onItemClick });
|
|
5074
5080
|
};
|
|
5075
5081
|
|
|
5076
|
-
const AsideHeader = (props) => {
|
|
5082
|
+
const AsideHeader = React__default.forwardRef((props, ref) => {
|
|
5077
5083
|
const { className, compact } = props;
|
|
5078
5084
|
const size = compact ? ASIDE_HEADER_COMPACT_WIDTH : ASIDE_HEADER_EXPANDED_WIDTH;
|
|
5079
5085
|
const asideHeaderContextValue = useMemo(() => ({ size, compact }), [compact, size]);
|
|
@@ -5082,9 +5088,9 @@ const AsideHeader = (props) => {
|
|
|
5082
5088
|
React__default.createElement(AsideHeaderInnerContextProvider, { value: asideHeaderInnerContextValue },
|
|
5083
5089
|
React__default.createElement("div", { className: b$m({ compact }, className) },
|
|
5084
5090
|
React__default.createElement("div", { className: b$m('pane-container') },
|
|
5085
|
-
React__default.createElement(FirstPanel,
|
|
5091
|
+
React__default.createElement(FirstPanel, { ref: ref }),
|
|
5086
5092
|
React__default.createElement(Content, { size: size, renderContent: props.renderContent, className: b$m('content') }))))));
|
|
5087
|
-
};
|
|
5093
|
+
});
|
|
5088
5094
|
|
|
5089
5095
|
/******************************************************************************
|
|
5090
5096
|
Copyright (c) Microsoft Corporation.
|