@gravity-ui/navigation 2.32.0 → 2.34.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/AsideHeader.js +1 -1
- package/build/cjs/Drawer.js +47 -26
- package/build/cjs/Drawer.js.map +1 -1
- package/build/cjs/{FooterItem-de603636.js → FooterItem-fef16564.js} +1 -1
- package/build/cjs/{FooterItem-de603636.js.map → FooterItem-fef16564.js.map} +1 -1
- package/build/cjs/{HotkeysPanel-1ed9fc32.js → HotkeysPanel-9c965feb.js} +1 -1
- package/build/cjs/{HotkeysPanel-1ed9fc32.js.map → HotkeysPanel-9c965feb.js.map} +1 -1
- package/build/cjs/{PageLayoutAside-30f2015c.js → PageLayoutAside-122aea8e.js} +1 -1
- package/build/cjs/{PageLayoutAside-30f2015c.js.map → PageLayoutAside-122aea8e.js.map} +1 -1
- package/build/cjs/PageLayoutAside.js +1 -1
- package/build/cjs/components/Drawer/utils.d.ts +4 -2
- package/build/cjs/index.js +3 -3
- package/build/cjs/index4.js +1 -1
- package/build/cjs/index6.js +1 -1
- package/build/esm/AsideHeader.js +1 -1
- package/build/esm/Drawer.js +47 -26
- package/build/esm/Drawer.js.map +1 -1
- package/build/esm/{FooterItem-3cc816a3.js → FooterItem-eea84655.js} +1 -1
- package/build/esm/{FooterItem-3cc816a3.js.map → FooterItem-eea84655.js.map} +1 -1
- package/build/esm/{HotkeysPanel-0576deee.js → HotkeysPanel-4693d73c.js} +1 -1
- package/build/esm/{HotkeysPanel-0576deee.js.map → HotkeysPanel-4693d73c.js.map} +1 -1
- package/build/esm/{PageLayoutAside-5d010e96.js → PageLayoutAside-d7365bdf.js} +1 -1
- package/build/esm/{PageLayoutAside-5d010e96.js.map → PageLayoutAside-d7365bdf.js.map} +1 -1
- package/build/esm/PageLayoutAside.js +1 -1
- package/build/esm/components/Drawer/utils.d.ts +4 -2
- package/build/esm/index.js +4 -4
- package/build/esm/index4.js +1 -1
- package/build/esm/index6.js +1 -1
- package/package.json +1 -1
package/build/esm/Drawer.js
CHANGED
|
@@ -3014,36 +3014,39 @@ SwitchTransition.defaultProps = {
|
|
|
3014
3014
|
const DRAWER_ITEM_MIN_RESIZE_WIDTH = 200;
|
|
3015
3015
|
const DRAWER_ITEM_MAX_RESIZE_WIDTH = 800;
|
|
3016
3016
|
const DRAWER_ITEM_INITIAL_RESIZE_WIDTH = 400;
|
|
3017
|
-
function
|
|
3018
|
-
var _a, _b;
|
|
3019
|
-
|
|
3017
|
+
function getEventClientPosition(e, direction) {
|
|
3018
|
+
var _a, _b, _c, _d;
|
|
3019
|
+
if ('touches' in e) {
|
|
3020
|
+
return direction === 'horizontal' ? (_b = (_a = e.touches[0]) === null || _a === void 0 ? void 0 : _a.clientX) !== null && _b !== void 0 ? _b : 0 : (_d = (_c = e.touches[0]) === null || _c === void 0 ? void 0 : _c.clientY) !== null && _d !== void 0 ? _d : 0;
|
|
3021
|
+
}
|
|
3022
|
+
return direction === 'horizontal' ? e.clientX : e.clientY;
|
|
3020
3023
|
}
|
|
3021
|
-
function useResizeHandlers({ onStart, onMove, onEnd }) {
|
|
3022
|
-
const
|
|
3023
|
-
const
|
|
3024
|
+
function useResizeHandlers({ onStart, onMove, onEnd, direction = 'horizontal', }) {
|
|
3025
|
+
const initialPosition = React.useRef(0);
|
|
3026
|
+
const currentPosition = React.useRef(0);
|
|
3024
3027
|
const handleMove = React.useCallback((e) => {
|
|
3025
|
-
const
|
|
3026
|
-
if (
|
|
3028
|
+
const current = getEventClientPosition(e, direction);
|
|
3029
|
+
if (currentPosition.current === current) {
|
|
3027
3030
|
return;
|
|
3028
3031
|
}
|
|
3029
|
-
|
|
3030
|
-
const delta =
|
|
3032
|
+
currentPosition.current = current;
|
|
3033
|
+
const delta = initialPosition.current - current;
|
|
3031
3034
|
onMove(delta);
|
|
3032
|
-
}, [onMove]);
|
|
3035
|
+
}, [onMove, direction]);
|
|
3033
3036
|
const handleEnd = React.useCallback((e) => {
|
|
3034
3037
|
window.removeEventListener('mousemove', handleMove);
|
|
3035
3038
|
window.removeEventListener('touchmove', handleMove);
|
|
3036
3039
|
document.body.style.removeProperty('user-select');
|
|
3037
3040
|
document.body.style.removeProperty('-webkit-user-select');
|
|
3038
3041
|
document.body.style.removeProperty('cursor');
|
|
3039
|
-
const
|
|
3040
|
-
const delta =
|
|
3042
|
+
const current = getEventClientPosition(e, direction);
|
|
3043
|
+
const delta = initialPosition.current - current;
|
|
3041
3044
|
onEnd(delta);
|
|
3042
|
-
}, [handleMove, onEnd]);
|
|
3045
|
+
}, [handleMove, onEnd, direction]);
|
|
3043
3046
|
const handleStart = React.useCallback((e) => {
|
|
3044
|
-
const
|
|
3045
|
-
|
|
3046
|
-
|
|
3047
|
+
const current = getEventClientPosition(e, direction);
|
|
3048
|
+
initialPosition.current = current;
|
|
3049
|
+
currentPosition.current = current;
|
|
3047
3050
|
window.addEventListener('mouseup', handleEnd, { once: true });
|
|
3048
3051
|
window.addEventListener('touchend', handleEnd, { once: true });
|
|
3049
3052
|
window.addEventListener('touchcancel', handleEnd, { once: true });
|
|
@@ -3053,20 +3056,20 @@ function useResizeHandlers({ onStart, onMove, onEnd }) {
|
|
|
3053
3056
|
document.body.style.setProperty('-webkit-user-select', 'none');
|
|
3054
3057
|
document.body.style.setProperty('cursor', 'col-resize');
|
|
3055
3058
|
onStart();
|
|
3056
|
-
}, [handleEnd, handleMove, onStart]);
|
|
3059
|
+
}, [handleEnd, handleMove, onStart, direction]);
|
|
3057
3060
|
return {
|
|
3058
3061
|
onMouseDown: handleStart,
|
|
3059
3062
|
onTouchStart: handleStart,
|
|
3060
3063
|
};
|
|
3061
3064
|
}
|
|
3062
3065
|
function useResizableDrawerItem(params) {
|
|
3063
|
-
const { direction, width, minResizeWidth = DRAWER_ITEM_MIN_RESIZE_WIDTH, maxResizeWidth = DRAWER_ITEM_MAX_RESIZE_WIDTH, onResizeStart, onResize, } = params;
|
|
3066
|
+
const { direction = 'left', width, minResizeWidth = DRAWER_ITEM_MIN_RESIZE_WIDTH, maxResizeWidth = DRAWER_ITEM_MAX_RESIZE_WIDTH, onResizeStart, onResize, } = params;
|
|
3064
3067
|
const [isResizing, setIsResizing] = React.useState(false);
|
|
3065
3068
|
const [resizeDelta, setResizeDelta] = React.useState(0);
|
|
3066
3069
|
const [internalWidth, setInternalWidth] = React.useState(width !== null && width !== void 0 ? width : DRAWER_ITEM_INITIAL_RESIZE_WIDTH);
|
|
3067
3070
|
const getClampedWidth = React.useCallback((width) => Math.min(Math.max(width, minResizeWidth), maxResizeWidth), [minResizeWidth, maxResizeWidth]);
|
|
3068
3071
|
const getResizedWidth = React.useCallback((delta) => {
|
|
3069
|
-
const signedDelta =
|
|
3072
|
+
const signedDelta = ['right', 'bottom'].includes(direction) ? delta : -delta;
|
|
3070
3073
|
const newWidth = (width !== null && width !== void 0 ? width : internalWidth) + signedDelta;
|
|
3071
3074
|
return getClampedWidth(newWidth);
|
|
3072
3075
|
}, [width, internalWidth, direction, getClampedWidth]);
|
|
@@ -3087,11 +3090,16 @@ function useResizableDrawerItem(params) {
|
|
|
3087
3090
|
const displayWidth = isResizing
|
|
3088
3091
|
? getResizedWidth(resizeDelta)
|
|
3089
3092
|
: getClampedWidth(width !== null && width !== void 0 ? width : internalWidth);
|
|
3090
|
-
const handlers = useResizeHandlers({
|
|
3091
|
-
|
|
3093
|
+
const handlers = useResizeHandlers({
|
|
3094
|
+
onStart,
|
|
3095
|
+
onMove,
|
|
3096
|
+
onEnd,
|
|
3097
|
+
direction: ['left', 'right'].includes(direction) ? 'horizontal' : 'vertical',
|
|
3098
|
+
});
|
|
3099
|
+
return { resizedWidth: displayWidth, resizerHandlers: handlers, isResizing };
|
|
3092
3100
|
}
|
|
3093
3101
|
|
|
3094
|
-
var css_248z = ".gn-drawer{--_--item-shadow-default:0 1px 5px 0 var(--g-color-sfx-shadow);--_--resizer-width:8px;--_--resizer-color:var(--g-color-base-generic);--_--resizer-handle-color:var(--g-color-line-generic);--_--resizer-handle-color-hover:var(--g-color-line-generic-hover);--_--resizer-z-index:100;--_--veil-background-color:var(--g-color-sfx-veil);pointer-events:none}.gn-drawer_hideVeil{--_--item-shadow:var(--gn-drawer-item-shadow,var(--_--item-shadow-default))}.gn-drawer__item{background-color:var(--g-color-base-background);bottom:0;box-shadow:var(--_--item-shadow,none);height:100%;left:0;pointer-events:auto;position:absolute;top:0;will-change:transform;z-index:var(--gn-drawer-item-z-index)}.gn-drawer__item_direction_right{left:auto;right:0}.gn-drawer__item-transition-enter{transform:translate(-100%)}.gn-drawer__item-transition_direction_right-enter{transform:translate(100%)}.gn-drawer__item-transition-enter-active,.gn-drawer__item-transition_direction_right-enter-active{transform:translate(0);transition:transform .3s}.gn-drawer__item-transition-enter-done,.gn-drawer__item-transition_direction_right-enter-done{filter:blur(0);transform:translateZ(0)}.gn-drawer__item-transition-exit,.gn-drawer__item-transition_direction_right-exit{transform:translate(0)}.gn-drawer__item-transition-exit-active,.gn-drawer__item-transition_direction_right-exit-active{transition:transform .3s}.gn-drawer__item-transition-exit-active{transform:translate(-100%)}.gn-drawer__item-transition_direction_right-exit-active{transform:translate(100%)}.gn-drawer__item-transition-exit-done,.gn-drawer__item-transition_direction_right-exit-done,.gn-drawer__item_hidden{visibility:hidden}.gn-drawer__veil{background-color:var(--gn-drawer-veil-background-color,var(--_--veil-background-color));inset:0;pointer-events:auto;position:absolute;z-index:var(--gn-drawer-veil-z-index)}.gn-drawer__veil_hidden{display:none}.gn-drawer__veil-transition-enter{opacity:0}.gn-drawer__veil-transition-enter-active{opacity:1;transition:opacity .3s}.gn-drawer__veil-transition-exit{opacity:1}.gn-drawer__veil-transition-exit-active{opacity:0;transition:opacity .3s}.gn-drawer__veil-transition-exit-done{visibility:hidden}.gn-drawer__resizer-handle{background:var(--gn-drawer-item-resizer-handle-color,var(--_--resizer-handle-color));border-radius:2px;height:28px;width:2px}.gn-drawer__resizer{align-items:center;background:var(--gn-drawer-item-resizer-color,var(--_--resizer-color));cursor:col-resize;display:flex;flex-direction:column;height:100%;justify-content:center;position:absolute;top:0;width:var(--gn-drawer-item-resizer-width,var(--_--resizer-width));z-index:var(--gn-drawer-item-resizer-z-index,var(--_--resizer-z-index))}.gn-drawer__resizer_direction_right{left:0}.gn-drawer__resizer_direction_left{right:0}.gn-drawer__resizer:hover .gn-drawer__resizer-handle{background:var(--gn-drawer-item-resizer-handle-color-hover,var(--_--resizer-handle-color-hover))}";
|
|
3102
|
+
var css_248z = ".gn-drawer{--_--item-shadow-default:0 1px 5px 0 var(--g-color-sfx-shadow);--_--resizer-width:8px;--_--resizer-color:var(--g-color-base-generic);--_--resizer-handle-color:var(--g-color-line-generic);--_--resizer-handle-color-hover:var(--g-color-line-generic-hover);--_--resizer-z-index:100;--_--veil-background-color:var(--g-color-sfx-veil);pointer-events:none}.gn-drawer_hideVeil{--_--item-shadow:var(--gn-drawer-item-shadow,var(--_--item-shadow-default))}.gn-drawer__item{background-color:var(--g-color-base-background);bottom:0;box-shadow:var(--_--item-shadow,none);height:100%;left:0;pointer-events:auto;position:absolute;top:0;will-change:transform;z-index:var(--gn-drawer-item-z-index)}.gn-drawer__item_direction_right{left:auto;right:0}.gn-drawer__item_direction_top{bottom:auto;right:0}.gn-drawer__item_direction_bottom{right:0;top:auto}.gn-drawer__item-transition-enter{transform:translate(-100%)}.gn-drawer__item-transition_direction_right-enter{transform:translate(100%)}.gn-drawer__item-transition_direction_top-enter{transform:translateY(-100%)}.gn-drawer__item-transition_direction_bottom-enter{transform:translateY(100%)}.gn-drawer__item-transition-enter-active,.gn-drawer__item-transition_direction_bottom-enter-active,.gn-drawer__item-transition_direction_right-enter-active,.gn-drawer__item-transition_direction_top-enter-active{transform:translate(0);transition:transform .3s}.gn-drawer__item-transition-enter-done,.gn-drawer__item-transition_direction_bottom-enter-done,.gn-drawer__item-transition_direction_right-enter-done,.gn-drawer__item-transition_direction_top-enter-done{filter:blur(0);transform:translateZ(0)}.gn-drawer__item-transition-exit,.gn-drawer__item-transition_direction_bottom-exit,.gn-drawer__item-transition_direction_right-exit,.gn-drawer__item-transition_direction_top-exit{transform:translate(0)}.gn-drawer__item-transition-exit-active,.gn-drawer__item-transition_direction_bottom-exit-active,.gn-drawer__item-transition_direction_right-exit-active,.gn-drawer__item-transition_direction_top-exit-active{transition:transform .3s}.gn-drawer__item-transition-exit-active{transform:translate(-100%)}.gn-drawer__item-transition_direction_right-exit-active{transform:translate(100%)}.gn-drawer__item-transition_direction_top-exit-active{transform:translateY(-100%)}.gn-drawer__item-transition_direction_bottom-exit-active{transform:translateY(100%)}.gn-drawer__item-transition-exit-done,.gn-drawer__item-transition_direction_bottom-exit-done,.gn-drawer__item-transition_direction_right-exit-done,.gn-drawer__item-transition_direction_top-exit-done,.gn-drawer__item_hidden{visibility:hidden}.gn-drawer__veil{background-color:var(--gn-drawer-veil-background-color,var(--_--veil-background-color));inset:0;pointer-events:auto;position:absolute;z-index:var(--gn-drawer-veil-z-index)}.gn-drawer__veil_hidden{display:none}.gn-drawer__veil-transition-enter{opacity:0}.gn-drawer__veil-transition-enter-active{opacity:1;transition:opacity .3s}.gn-drawer__veil-transition-exit{opacity:1}.gn-drawer__veil-transition-exit-active{opacity:0;transition:opacity .3s}.gn-drawer__veil-transition-exit-done{visibility:hidden}.gn-drawer__resizer-handle{background:var(--gn-drawer-item-resizer-handle-color,var(--_--resizer-handle-color));border-radius:2px;height:28px;width:2px}.gn-drawer__resizer-handle_direction_bottom,.gn-drawer__resizer-handle_direction_top{height:2px;width:28px}.gn-drawer__resizer{align-items:center;background:var(--gn-drawer-item-resizer-color,var(--_--resizer-color));cursor:col-resize;display:flex;flex-direction:column;height:100%;justify-content:center;position:absolute;top:0;width:var(--gn-drawer-item-resizer-width,var(--_--resizer-width));z-index:var(--gn-drawer-item-resizer-z-index,var(--_--resizer-z-index))}.gn-drawer__resizer_direction_right{left:0}.gn-drawer__resizer_direction_left{right:0}.gn-drawer__resizer_direction_top{bottom:0;left:0;top:unset}.gn-drawer__resizer_direction_bottom{left:0;top:0}.gn-drawer__resizer_direction_bottom,.gn-drawer__resizer_direction_top{height:var(--gn-drawer-item-resizer-width,var(--_--resizer-width));width:100%}.gn-drawer__resizer:hover .gn-drawer__resizer-handle{background:var(--gn-drawer-item-resizer-handle-color-hover,var(--_--resizer-handle-color-hover))}";
|
|
3095
3103
|
styleInject(css_248z);
|
|
3096
3104
|
|
|
3097
3105
|
const b = block('drawer');
|
|
@@ -3102,7 +3110,7 @@ const DrawerItem = React__default.forwardRef(function DrawerItem(props, ref) {
|
|
|
3102
3110
|
const itemRef = React__default.useRef(null);
|
|
3103
3111
|
const handleRef = useForkRef(ref, itemRef);
|
|
3104
3112
|
const cssDirection = direction === 'left' ? undefined : direction;
|
|
3105
|
-
const { resizedWidth, resizerHandlers } = useResizableDrawerItem({
|
|
3113
|
+
const { resizedWidth, resizerHandlers, isResizing } = useResizableDrawerItem({
|
|
3106
3114
|
direction,
|
|
3107
3115
|
width,
|
|
3108
3116
|
minResizeWidth,
|
|
@@ -3110,13 +3118,26 @@ const DrawerItem = React__default.forwardRef(function DrawerItem(props, ref) {
|
|
|
3110
3118
|
onResizeStart,
|
|
3111
3119
|
onResize,
|
|
3112
3120
|
});
|
|
3121
|
+
const style = {};
|
|
3122
|
+
if (resizable) {
|
|
3123
|
+
if (['left', 'right'].includes(direction)) {
|
|
3124
|
+
style.width = `${resizedWidth}px`;
|
|
3125
|
+
}
|
|
3126
|
+
else {
|
|
3127
|
+
style.height = `${resizedWidth}px`;
|
|
3128
|
+
}
|
|
3129
|
+
}
|
|
3113
3130
|
React__default.useEffect(() => {
|
|
3114
3131
|
setInitialRender(true);
|
|
3115
3132
|
}, [direction]);
|
|
3116
3133
|
const resizerElement = resizable ? (React__default.createElement("div", Object.assign({ className: b('resizer', { direction }) }, resizerHandlers),
|
|
3117
|
-
React__default.createElement("div", { className: b('resizer-handle') }))) : null;
|
|
3134
|
+
React__default.createElement("div", { className: b('resizer-handle', { direction }) }))) : null;
|
|
3118
3135
|
return (React__default.createElement(CSSTransition, { in: visible, timeout: TIMEOUT, mountOnEnter: !keepMounted, unmountOnExit: !keepMounted, classNames: b('item-transition', { direction: cssDirection }), nodeRef: itemRef, onEnter: () => setInitialRender(false), onExit: () => setInitialRender(false) },
|
|
3119
|
-
React__default.createElement("div", { ref: handleRef, className: b('item', {
|
|
3136
|
+
React__default.createElement("div", { ref: handleRef, className: b('item', {
|
|
3137
|
+
direction: cssDirection,
|
|
3138
|
+
hidden: isInitialRender && !visible,
|
|
3139
|
+
resize: isResizing,
|
|
3140
|
+
}, [className]), style: style },
|
|
3120
3141
|
resizerElement, children !== null && children !== void 0 ? children : content)));
|
|
3121
3142
|
});
|
|
3122
3143
|
const Drawer = ({ className, veilClassName, children, style, onVeilClick, onEscape, preventScrollBody = true, hideVeil, disablePortal = true, keepMounted = false, }) => {
|