@gravity-ui/navigation 3.4.0 → 3.4.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/build/cjs/components/Drawer/Drawer.d.ts +4 -2
- package/build/cjs/{index-D40EbfWh.js → index-CLs1L-sq.js} +33 -17
- package/build/{esm/index-DWA-PD7D.js.map → cjs/index-CLs1L-sq.js.map} +1 -1
- package/build/cjs/{index-Duvas6w0.js → index-ClUpN5oD.js} +2 -2
- package/build/cjs/{index-Duvas6w0.js.map → index-ClUpN5oD.js.map} +1 -1
- package/build/cjs/index.js +1 -1
- package/build/esm/components/Drawer/Drawer.d.ts +4 -2
- package/build/esm/{index-BHcJfNP_.js → index-AHJjBN3a.js} +2 -2
- package/build/esm/{index-BHcJfNP_.js.map → index-AHJjBN3a.js.map} +1 -1
- package/build/esm/{index-DWA-PD7D.js → index-CoM0LT-x.js} +33 -17
- package/build/{cjs/index-D40EbfWh.js.map → esm/index-CoM0LT-x.js.map} +1 -1
- package/build/esm/index.js +1 -1
- package/package.json +1 -1
|
@@ -49,6 +49,8 @@ export interface DrawerItemProps {
|
|
|
49
49
|
* @default false
|
|
50
50
|
* */
|
|
51
51
|
keepMounted?: boolean;
|
|
52
|
+
/** Optional inline styles to be applied to the DrawerItem component. */
|
|
53
|
+
style?: React.CSSProperties;
|
|
52
54
|
}
|
|
53
55
|
export declare const DrawerItem: React.ForwardRefExoticComponent<DrawerItemProps & React.RefAttributes<HTMLDivElement>>;
|
|
54
56
|
type DrawerChild = React.ReactElement<DrawerItemProps>;
|
|
@@ -63,11 +65,11 @@ export interface DrawerProps {
|
|
|
63
65
|
veilClassName?: string;
|
|
64
66
|
/** Optional callback function that is called when the veil (overlay) is clicked. */
|
|
65
67
|
onVeilClick?: (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;
|
|
66
|
-
/** Optional callback function that is called when the escape key is pressed
|
|
68
|
+
/** Optional callback function that is called when the escape key is pressed if the drawer is open. */
|
|
67
69
|
onEscape?: (event: KeyboardEvent) => void;
|
|
68
70
|
/** Optional flag to hide the background darkening */
|
|
69
71
|
hideVeil?: boolean;
|
|
70
|
-
/** Optional flag to
|
|
72
|
+
/** Optional flag to doesn't use `Portal` for drawer */
|
|
71
73
|
disablePortal?: boolean;
|
|
72
74
|
/**
|
|
73
75
|
* Keep child components mounted when closed
|
|
@@ -141,7 +141,7 @@ function styleInject(css, ref) {
|
|
|
141
141
|
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)}";
|
|
142
142
|
styleInject(css_248z$u);
|
|
143
143
|
|
|
144
|
-
const TopAlert$1 = React.lazy(() => Promise.resolve().then(function () { return require('./index-
|
|
144
|
+
const TopAlert$1 = React.lazy(() => Promise.resolve().then(function () { return require('./index-ClUpN5oD.js'); }).then((module) => ({ default: module.TopAlert })));
|
|
145
145
|
const Layout = ({ compact, className, children, topAlert }) => {
|
|
146
146
|
const size = compact ? ASIDE_HEADER_COMPACT_WIDTH : ASIDE_HEADER_EXPANDED_WIDTH;
|
|
147
147
|
const asideHeaderContextValue = React.useMemo(() => ({ size, compact }), [compact, size]);
|
|
@@ -4491,7 +4491,7 @@ styleInject(css_248z$l);
|
|
|
4491
4491
|
const b$m = block('drawer');
|
|
4492
4492
|
const TIMEOUT = 300;
|
|
4493
4493
|
const DrawerItem = React.forwardRef(function DrawerItem(props, ref) {
|
|
4494
|
-
const { visible, content, children, direction = 'left', className, resizable, width, minResizeWidth, maxResizeWidth, onResizeStart, onResizeContinue, onResize, keepMounted = false, } = props;
|
|
4494
|
+
const { visible, content, children, direction = 'left', className, resizable, width, minResizeWidth, maxResizeWidth, onResizeStart, onResizeContinue, onResize, keepMounted = false, style = {}, } = props;
|
|
4495
4495
|
const [isInitialRender, setInitialRender] = React.useState(true);
|
|
4496
4496
|
const itemRef = React.useRef(null);
|
|
4497
4497
|
const handleRef = uikit.useForkRef(ref, itemRef);
|
|
@@ -4505,15 +4505,18 @@ const DrawerItem = React.forwardRef(function DrawerItem(props, ref) {
|
|
|
4505
4505
|
onResize,
|
|
4506
4506
|
onResizeContinue,
|
|
4507
4507
|
});
|
|
4508
|
-
const
|
|
4509
|
-
|
|
4510
|
-
if (
|
|
4511
|
-
|
|
4512
|
-
|
|
4513
|
-
|
|
4514
|
-
|
|
4508
|
+
const innerStyle = React.useMemo(() => {
|
|
4509
|
+
const css = Object.assign({}, style);
|
|
4510
|
+
if (resizable) {
|
|
4511
|
+
if (['left', 'right'].includes(direction)) {
|
|
4512
|
+
css.width = `${resizedWidth}px`;
|
|
4513
|
+
}
|
|
4514
|
+
else {
|
|
4515
|
+
css.height = `${resizedWidth}px`;
|
|
4516
|
+
}
|
|
4515
4517
|
}
|
|
4516
|
-
|
|
4518
|
+
return css;
|
|
4519
|
+
}, [direction, resizable, resizedWidth, style]);
|
|
4517
4520
|
React.useEffect(() => {
|
|
4518
4521
|
setInitialRender(true);
|
|
4519
4522
|
}, [direction]);
|
|
@@ -4524,7 +4527,7 @@ const DrawerItem = React.forwardRef(function DrawerItem(props, ref) {
|
|
|
4524
4527
|
direction: cssDirection,
|
|
4525
4528
|
hidden: isInitialRender && !visible,
|
|
4526
4529
|
resize: isResizing,
|
|
4527
|
-
}, [className]), style:
|
|
4530
|
+
}, [className]), style: innerStyle },
|
|
4528
4531
|
resizerElement, children !== null && children !== undefined ? children : content)));
|
|
4529
4532
|
});
|
|
4530
4533
|
const Drawer = ({ className, veilClassName, children, style, onVeilClick, onEscape, hideVeil, disablePortal = true, keepMounted = false, scrollLock = false, }) => {
|
|
@@ -5647,10 +5650,23 @@ styleInject(css_248z$5);
|
|
|
5647
5650
|
|
|
5648
5651
|
const b$5 = block('mobile-overlap-panel');
|
|
5649
5652
|
const OverlapPanel = ({ title, renderContent, className, onClose, action, closeTitle = i18n('overlap_button_close'), visible, topOffset, }) => {
|
|
5650
|
-
|
|
5651
|
-
|
|
5652
|
-
|
|
5653
|
-
|
|
5653
|
+
const topOffsetValue = typeof topOffset === 'number' ? `${topOffset}px` : topOffset;
|
|
5654
|
+
const [itemPosition, setItemPosition] = React.useState();
|
|
5655
|
+
const drawerStyle = React.useMemo(() => ({ top: `calc(${topOffsetValue} + var(--gn-top-alert-height, 0px))` }), [topOffsetValue]);
|
|
5656
|
+
const drawerItemStyle = React.useMemo(() => itemPosition === 'absolute'
|
|
5657
|
+
? {}
|
|
5658
|
+
: { top: `calc(${topOffsetValue} + var(--gn-top-alert-height, 0px))` }, [topOffsetValue, itemPosition]);
|
|
5659
|
+
const itemRef = React.useRef(null);
|
|
5660
|
+
// It is necessary to determine the position of the DrawerItem in order to correctly set the top offset
|
|
5661
|
+
React.useLayoutEffect(() => {
|
|
5662
|
+
if (itemRef.current) {
|
|
5663
|
+
const style = getComputedStyle(itemRef.current);
|
|
5664
|
+
const position = style.position;
|
|
5665
|
+
setItemPosition(position);
|
|
5666
|
+
}
|
|
5667
|
+
}, []);
|
|
5668
|
+
return (React.createElement(Drawer, { className: b$5('', { action: Boolean(action) }, className), onVeilClick: onClose, onEscape: onClose, style: drawerStyle },
|
|
5669
|
+
React.createElement(DrawerItem, { id: "overlap", ref: itemRef, visible: visible, className: b$5('drawer-item'), style: drawerItemStyle },
|
|
5654
5670
|
React.createElement("div", { className: b$5('header') },
|
|
5655
5671
|
React.createElement(uikit.Button, { size: "l", view: "flat", className: b$5('close'), onClick: onClose, "aria-label": closeTitle },
|
|
5656
5672
|
React.createElement(uikit.Icon, { className: b$5('icon'), data: icons.ArrowLeft, size: MOBILE_HEADER_ICON_SIZE })),
|
|
@@ -5663,7 +5679,7 @@ const OverlapPanel = ({ title, renderContent, className, onClose, action, closeT
|
|
|
5663
5679
|
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}";
|
|
5664
5680
|
styleInject(css_248z$4);
|
|
5665
5681
|
|
|
5666
|
-
const TopAlert = React.lazy(() => Promise.resolve().then(function () { return require('./index-
|
|
5682
|
+
const TopAlert = React.lazy(() => Promise.resolve().then(function () { return require('./index-ClUpN5oD.js'); }).then((module) => ({ default: module.TopAlert })));
|
|
5667
5683
|
const b$4 = block('mobile-header');
|
|
5668
5684
|
const MobileHeader = React.forwardRef(({ logo, burgerMenu, burgerCloseTitle = i18n('burger_button_close'), burgerOpenTitle = i18n('burger_button_open'), panelItems = [], renderContent, sideItemRenderContent, onClosePanel, onEvent, className, contentClassName, overlapPanel, topAlert, }, ref) => {
|
|
5669
5685
|
const targetRef = useForwardRef(ref);
|
|
@@ -5979,4 +5995,4 @@ exports.styleInject = styleInject;
|
|
|
5979
5995
|
exports.useAsideHeaderContext = useAsideHeaderContext;
|
|
5980
5996
|
exports.useSettingsContext = useSettingsContext;
|
|
5981
5997
|
exports.useSettingsSelectionContext = useSettingsSelectionContext;
|
|
5982
|
-
//# sourceMappingURL=index-
|
|
5998
|
+
//# sourceMappingURL=index-CLs1L-sq.js.map
|