@gravity-ui/navigation 3.3.3 → 3.3.4
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/Drawer/__stories__/Drawer.stories.d.ts +1 -0
- package/build/cjs/components/Drawer/__stories__/UsePortal.d.ts +3 -0
- package/build/cjs/{index-DI64hfWr.js → index-D6uqfv-5.js} +3 -2
- package/build/cjs/{index-DI64hfWr.js.map → index-D6uqfv-5.js.map} +1 -1
- package/build/cjs/{index-Bh8tV34w.js → index-py2gz-nN.js} +103 -4
- package/build/cjs/index-py2gz-nN.js.map +1 -0
- package/build/cjs/index.js +2 -1
- package/build/cjs/index.js.map +1 -1
- package/build/esm/components/Drawer/__stories__/Drawer.stories.d.ts +1 -0
- package/build/esm/components/Drawer/__stories__/UsePortal.d.ts +3 -0
- package/build/esm/{index-Du2Q9-2w.js → index-BsIP-jc4.js} +103 -4
- package/build/esm/index-BsIP-jc4.js.map +1 -0
- package/build/esm/{index-Bs6JJPIU.js → index-C1p1hsp4.js} +3 -2
- package/build/esm/{index-Bs6JJPIU.js.map → index-C1p1hsp4.js.map} +1 -1
- package/build/esm/index.js +2 -1
- package/build/esm/index.js.map +1 -1
- package/package.json +1 -1
- package/build/cjs/index-Bh8tV34w.js.map +0 -1
- package/build/esm/index-Du2Q9-2w.js.map +0 -1
package/build/cjs/index.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-py2gz-nN.js');
|
|
4
4
|
require('react');
|
|
5
5
|
require('@bem-react/classname');
|
|
6
6
|
require('@gravity-ui/uikit');
|
|
7
7
|
require('@gravity-ui/icons');
|
|
8
8
|
require('@gravity-ui/uikit/i18n');
|
|
9
|
+
require('react/jsx-runtime');
|
|
9
10
|
require('react-dom');
|
|
10
11
|
require('@gravity-ui/uikit/legacy');
|
|
11
12
|
|
package/build/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -5,3 +5,4 @@ export declare const Showcase: import("@storybook/csf").AnnotatedStoryFn<import(
|
|
|
5
5
|
export declare const ResizableItem: import("@storybook/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, import("@storybook/csf").Args>;
|
|
6
6
|
export declare const DisablePortal: import("@storybook/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, import("@storybook/csf").Args>;
|
|
7
7
|
export declare const HideVeil: import("@storybook/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, import("@storybook/csf").Args>;
|
|
8
|
+
export declare const UsePortal: import("@storybook/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, import("@storybook/csf").Args>;
|
|
@@ -4,6 +4,7 @@ import { withNaming } from '@bem-react/classname';
|
|
|
4
4
|
import { Icon, Button, Flex, Text, Tooltip, List, Portal, Popup, ActionTooltip, useForkRef, setRef, Hotkey, TextInput, Loader, Sheet, eventBroker, Menu, DropdownMenu } from '@gravity-ui/uikit';
|
|
5
5
|
import { Pin, PinFill, Ellipsis, Gear, Xmark, ListUl, ArrowLeft } from '@gravity-ui/icons';
|
|
6
6
|
import { addComponentKeysets } from '@gravity-ui/uikit/i18n';
|
|
7
|
+
import { jsx } from 'react/jsx-runtime';
|
|
7
8
|
import ReactDOM from 'react-dom';
|
|
8
9
|
import { Tabs } from '@gravity-ui/uikit/legacy';
|
|
9
10
|
|
|
@@ -120,7 +121,7 @@ function styleInject(css, ref) {
|
|
|
120
121
|
var css_248z$u = ".g-root{--gn-aside-top-panel-height:0px}.gn-aside-header{--gn-aside-header-min-width:56px;--_--item-icon-background-size:38px;--_--background-color:var(--g-color-base-background);--_--decoration-collapsed-background-color:var(--g-color-base-warning-light);--_--decoration-expanded-background-color:var(--g-color-base-warning-light);--_--vertical-divider-line-color:var(--g-color-line-generic);--_--horizontal-divider-line-color:var(--g-color-line-generic);background-color:var(--g-color-base-background);height:100%;position:relative;width:100%}.gn-aside-header__aside{background-color:var(--gn-aside-header-expanded-background-color,var(--gn-aside-header-background-color,var(--_--background-color)));box-sizing:border-box;display:flex;flex-direction:column;height:100vh;left:0;margin-top:var(--gn-top-alert-height,0);max-height:calc(100vh - var(--gn-top-alert-height, 0));position:sticky;top:var(--gn-top-alert-height,0);width:inherit;z-index:var(--gn-aside-header-z-index,100)}.gn-aside-header__aside:after{background-color:var(--gn-aside-header-divider-vertical-color,var(--_--vertical-divider-line-color));content:\"\";height:100%;position:absolute;right:0;top:0;width:1px;z-index:2}.gn-aside-header__aside-popup-anchor{inset:0;position:absolute;z-index:1}.gn-aside-header__aside-content{--gradient-height:334px;display:flex;flex-direction:column;height:inherit;overflow-x:hidden;padding-top:var(--gn-aside-header-padding-top);position:relative;user-select:none;width:inherit;z-index:2}.gn-aside-header__aside-content>.gn-aside-header-logo{margin:8px 0}.gn-aside-header__aside-content_with-decoration{background:linear-gradient(180deg,var(--gn-aside-header-decoration-expanded-background-color,var(--_--decoration-expanded-background-color)) calc(var(--gradient-height)*.33),transparent calc(var(--gradient-height)*.88))}.gn-aside-header__aside-custom-background{bottom:0;display:flex;position:absolute;top:0;width:var(--gn-aside-header-size);z-index:-1}.gn-aside-header_compact .gn-aside-header__aside{background-color:var(--gn-aside-header-collapsed-background-color,var(--gn-aside-header-background-color,var(--_--background-color)))}.gn-aside-header_compact .gn-aside-header__aside-content{background:transparent}.gn-aside-header__header{--gn-aside-header-header-divider-height:29px;box-sizing:border-box;flex:none;padding-bottom:22px;padding-top:8px;position:relative;width:100%;z-index:1}.gn-aside-header__header .gn-aside-header__header-divider{bottom:0;color:var(--gn-aside-header-decoration-collapsed-background-color,var(--_--decoration-collapsed-background-color));display:none;left:0;position:absolute;z-index:-2}.gn-aside-header__header_with-decoration:before{background-color:var(--gn-aside-header-decoration-collapsed-background-color,var(--_--decoration-collapsed-background-color));content:\"\";display:none;height:calc(100% - var(--gn-aside-header-header-divider-height));left:0;position:absolute;top:0;width:100%;z-index:-2}.gn-aside-header__header:after{background-color:var(--gn-aside-header-divider-horizontal-color,var(--_--horizontal-divider-line-color));bottom:12px;content:\"\";height:1px;left:0;position:absolute;width:100%;z-index:-2}.gn-aside-header_compact .gn-aside-header__header:before,.gn-aside-header_compact .gn-aside-header__header_with-decoration .gn-aside-header__header-divider{display:block}.gn-aside-header_compact .gn-aside-header__header_with-decoration:after{display:none}.gn-aside-header__logo-button .gn-aside-header__logo-icon-place{height:var(--gn-aside-header-item-icon-background-size,var(--_--item-icon-background-size));width:var(--gn-aside-header-min-width)}.gn-aside-header__menu-items{flex-grow:1}.gn-aside-header__footer{display:flex;flex-direction:column;flex-shrink:0;margin:8px 0;width:100%}.gn-aside-header__panels{inset:var(--gn-top-alert-height,0) 0 0;max-height:calc(100vh - var(--gn-top-alert-height, 0));overflow:auto;position:fixed;z-index:var(--gn-aside-header-panel-z-index,98)}.gn-aside-header__panel{height:100%}.gn-aside-header__pane-container{display:flex;flex-direction:row;outline:none;overflow:visible;user-select:text}.gn-aside-header__top-alert{background:var(--g-color-base-background);position:fixed;top:0;width:100%;z-index:var(--gn-aside-header-pane-top-z-index,98)}.gn-aside-header__content{margin-top:var(--gn-top-alert-height,0);width:calc(100% - var(--gn-aside-header-size));z-index:var(--gn-aside-header-content-z-index,95)}";
|
|
121
122
|
styleInject(css_248z$u);
|
|
122
123
|
|
|
123
|
-
const TopAlert$1 = React__default.lazy(() => import('./index-
|
|
124
|
+
const TopAlert$1 = React__default.lazy(() => import('./index-C1p1hsp4.js').then((module) => ({ default: module.TopAlert })));
|
|
124
125
|
const Layout = ({ compact, className, children, topAlert }) => {
|
|
125
126
|
const size = compact ? ASIDE_HEADER_COMPACT_WIDTH : ASIDE_HEADER_EXPANDED_WIDTH;
|
|
126
127
|
const asideHeaderContextValue = useMemo(() => ({ size, compact }), [compact, size]);
|
|
@@ -1954,6 +1955,104 @@ const Header = () => {
|
|
|
1954
1955
|
headerDecoration && (React__default.createElement(Icon, { data: SvgDividerCollapsed, className: b$v('header-divider'), width: ASIDE_HEADER_COMPACT_WIDTH, height: HEADER_DIVIDER_HEIGHT }))));
|
|
1955
1956
|
};
|
|
1956
1957
|
|
|
1958
|
+
// Avoid Chrome DevTools blue warning.
|
|
1959
|
+
function getPlatform() {
|
|
1960
|
+
const uaData = navigator.userAgentData;
|
|
1961
|
+
if (uaData != null && uaData.platform) {
|
|
1962
|
+
return uaData.platform;
|
|
1963
|
+
}
|
|
1964
|
+
return navigator.platform;
|
|
1965
|
+
}
|
|
1966
|
+
|
|
1967
|
+
var index = typeof document !== 'undefined' ? useLayoutEffect : useEffect;
|
|
1968
|
+
if (process.env.NODE_ENV !== "production") ;
|
|
1969
|
+
|
|
1970
|
+
let lockCount = 0;
|
|
1971
|
+
function enableScrollLock() {
|
|
1972
|
+
const isIOS = /iP(hone|ad|od)|iOS/.test(getPlatform());
|
|
1973
|
+
const bodyStyle = document.body.style;
|
|
1974
|
+
// RTL <body> scrollbar
|
|
1975
|
+
const scrollbarX = Math.round(document.documentElement.getBoundingClientRect().left) + document.documentElement.scrollLeft;
|
|
1976
|
+
const paddingProp = scrollbarX ? 'paddingLeft' : 'paddingRight';
|
|
1977
|
+
const scrollbarWidth = window.innerWidth - document.documentElement.clientWidth;
|
|
1978
|
+
const scrollX = bodyStyle.left ? parseFloat(bodyStyle.left) : window.scrollX;
|
|
1979
|
+
const scrollY = bodyStyle.top ? parseFloat(bodyStyle.top) : window.scrollY;
|
|
1980
|
+
bodyStyle.overflow = 'hidden';
|
|
1981
|
+
if (scrollbarWidth) {
|
|
1982
|
+
bodyStyle[paddingProp] = scrollbarWidth + "px";
|
|
1983
|
+
}
|
|
1984
|
+
|
|
1985
|
+
// Only iOS doesn't respect `overflow: hidden` on document.body, and this
|
|
1986
|
+
// technique has fewer side effects.
|
|
1987
|
+
if (isIOS) {
|
|
1988
|
+
var _window$visualViewpor, _window$visualViewpor2;
|
|
1989
|
+
// iOS 12 does not support `visualViewport`.
|
|
1990
|
+
const offsetLeft = ((_window$visualViewpor = window.visualViewport) == null ? undefined : _window$visualViewpor.offsetLeft) || 0;
|
|
1991
|
+
const offsetTop = ((_window$visualViewpor2 = window.visualViewport) == null ? undefined : _window$visualViewpor2.offsetTop) || 0;
|
|
1992
|
+
Object.assign(bodyStyle, {
|
|
1993
|
+
position: 'fixed',
|
|
1994
|
+
top: -(scrollY - Math.floor(offsetTop)) + "px",
|
|
1995
|
+
left: -(scrollX - Math.floor(offsetLeft)) + "px",
|
|
1996
|
+
right: '0'
|
|
1997
|
+
});
|
|
1998
|
+
}
|
|
1999
|
+
return () => {
|
|
2000
|
+
Object.assign(bodyStyle, {
|
|
2001
|
+
overflow: '',
|
|
2002
|
+
[paddingProp]: ''
|
|
2003
|
+
});
|
|
2004
|
+
if (isIOS) {
|
|
2005
|
+
Object.assign(bodyStyle, {
|
|
2006
|
+
position: '',
|
|
2007
|
+
top: '',
|
|
2008
|
+
left: '',
|
|
2009
|
+
right: ''
|
|
2010
|
+
});
|
|
2011
|
+
window.scrollTo(scrollX, scrollY);
|
|
2012
|
+
}
|
|
2013
|
+
};
|
|
2014
|
+
}
|
|
2015
|
+
let cleanup = () => {};
|
|
2016
|
+
|
|
2017
|
+
/**
|
|
2018
|
+
* Provides base styling for a fixed overlay element to dim content or block
|
|
2019
|
+
* pointer events behind a floating element.
|
|
2020
|
+
* It's a regular `<div>`, so it can be styled via any CSS solution you prefer.
|
|
2021
|
+
* @see https://floating-ui.com/docs/FloatingOverlay
|
|
2022
|
+
*/
|
|
2023
|
+
const FloatingOverlay = /*#__PURE__*/React.forwardRef(function FloatingOverlay(props, ref) {
|
|
2024
|
+
const {
|
|
2025
|
+
lockScroll = false,
|
|
2026
|
+
...rest
|
|
2027
|
+
} = props;
|
|
2028
|
+
index(() => {
|
|
2029
|
+
if (!lockScroll) return;
|
|
2030
|
+
lockCount++;
|
|
2031
|
+
if (lockCount === 1) {
|
|
2032
|
+
cleanup = enableScrollLock();
|
|
2033
|
+
}
|
|
2034
|
+
return () => {
|
|
2035
|
+
lockCount--;
|
|
2036
|
+
if (lockCount === 0) {
|
|
2037
|
+
cleanup();
|
|
2038
|
+
}
|
|
2039
|
+
};
|
|
2040
|
+
}, [lockScroll]);
|
|
2041
|
+
return /*#__PURE__*/jsx("div", {
|
|
2042
|
+
ref: ref,
|
|
2043
|
+
...rest,
|
|
2044
|
+
style: {
|
|
2045
|
+
position: 'fixed',
|
|
2046
|
+
overflow: 'auto',
|
|
2047
|
+
top: 0,
|
|
2048
|
+
right: 0,
|
|
2049
|
+
bottom: 0,
|
|
2050
|
+
left: 0,
|
|
2051
|
+
...rest.style
|
|
2052
|
+
}
|
|
2053
|
+
});
|
|
2054
|
+
});
|
|
2055
|
+
|
|
1957
2056
|
function _extends() {
|
|
1958
2057
|
return _extends = Object.assign ? Object.assign.bind() : function (n) {
|
|
1959
2058
|
for (var e = 1; e < arguments.length; e++) {
|
|
@@ -4439,7 +4538,7 @@ const Drawer = ({ className, veilClassName, children, style, onVeilClick, onEsca
|
|
|
4439
4538
|
if (disablePortal) {
|
|
4440
4539
|
return drawer;
|
|
4441
4540
|
}
|
|
4442
|
-
return React__default.createElement(Portal, null, drawer);
|
|
4541
|
+
return (React__default.createElement(Portal, null, someItemVisible ? React__default.createElement(FloatingOverlay, { lockScroll: true }, drawer) : drawer));
|
|
4443
4542
|
};
|
|
4444
4543
|
|
|
4445
4544
|
const Panels = () => {
|
|
@@ -5527,7 +5626,7 @@ const OverlapPanel = ({ title, renderContent, className, onClose, action, closeT
|
|
|
5527
5626
|
var css_248z$4 = ".gn-mobile-header{--mobile-header-min-heigth:50px;--mobile-header-icon-size:20px;background-color:var(--g-color-base-background)}.gn-mobile-header__header-container{background-color:var(--g-color-base-background);position:sticky;top:0;z-index:var(--gn-mobile-header-z-index,100)}.gn-mobile-header__header{align-items:center;border-bottom:1px solid var(--g-color-line-generic);box-sizing:border-box;display:flex;justify-content:space-between;padding:0 10px}.gn-mobile-header__burger{padding:12px}.gn-mobile-header__panel-item{--gn-drawer-item-position:var(--gn-mobile-header-panel-position,absolute)}.gn-mobile-header__burger-menu,.gn-mobile-header__panel-item{background-color:var(--g-color-base-background);max-height:100%;max-width:90vw;width:320px}.gn-mobile-header__user-menu{overflow-y:auto}.gn-mobile-header__overlap-panel,.gn-mobile-header__panels{z-index:var(--gn-mobile-header-panel-z-index,98)}.gn-mobile-header__panels{inset:var(--mobile-header-min-heigth) 0 0;overflow:hidden;position:fixed}.gn-mobile-header__panel-item{top:unset}.gn-mobile-header__content{overflow:auto}";
|
|
5528
5627
|
styleInject(css_248z$4);
|
|
5529
5628
|
|
|
5530
|
-
const TopAlert = React__default.lazy(() => import('./index-
|
|
5629
|
+
const TopAlert = React__default.lazy(() => import('./index-C1p1hsp4.js').then((module) => ({ default: module.TopAlert })));
|
|
5531
5630
|
const b$4 = block('mobile-header');
|
|
5532
5631
|
const MobileHeader = React__default.forwardRef(({ logo, burgerMenu, burgerCloseTitle = i18n('burger_button_close'), burgerOpenTitle = i18n('burger_button_open'), panelItems = [], renderContent, sideItemRenderContent, onClosePanel, onEvent, className, contentClassName, overlapPanel, topAlert, }, ref) => {
|
|
5533
5632
|
const targetRef = useForwardRef(ref);
|
|
@@ -5818,4 +5917,4 @@ const MobileFooter = ({ className, menuItems: providedMenuItems, withDivider, mo
|
|
|
5818
5917
|
};
|
|
5819
5918
|
|
|
5820
5919
|
export { AsideHeader as A, DrawerItem as D, FooterItem$1 as F, HotkeysPanel as H, Logo as L, MOBILE_HEADER_EVENT_NAMES as M, PageLayout as P, Settings as S, Title as T, AsideHeaderContextProvider as a, block as b, PageLayoutAside as c, debounceFn as d, AsideFallback as e, Drawer as f, PublicActionBar as g, useSettingsSelectionContext as h, useSettingsContext as i, FooterItem as j, getMobileHeaderCustomEvent as k, MobileHeader as l, MobileLogo as m, Footer as n, MobileFooter as o, styleInject as s, useAsideHeaderContext as u };
|
|
5821
|
-
//# sourceMappingURL=index-
|
|
5920
|
+
//# sourceMappingURL=index-BsIP-jc4.js.map
|