@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.
Files changed (29) hide show
  1. package/build/cjs/AsideHeader.js +1 -1
  2. package/build/cjs/Drawer.js +47 -26
  3. package/build/cjs/Drawer.js.map +1 -1
  4. package/build/cjs/{FooterItem-de603636.js → FooterItem-fef16564.js} +1 -1
  5. package/build/cjs/{FooterItem-de603636.js.map → FooterItem-fef16564.js.map} +1 -1
  6. package/build/cjs/{HotkeysPanel-1ed9fc32.js → HotkeysPanel-9c965feb.js} +1 -1
  7. package/build/cjs/{HotkeysPanel-1ed9fc32.js.map → HotkeysPanel-9c965feb.js.map} +1 -1
  8. package/build/cjs/{PageLayoutAside-30f2015c.js → PageLayoutAside-122aea8e.js} +1 -1
  9. package/build/cjs/{PageLayoutAside-30f2015c.js.map → PageLayoutAside-122aea8e.js.map} +1 -1
  10. package/build/cjs/PageLayoutAside.js +1 -1
  11. package/build/cjs/components/Drawer/utils.d.ts +4 -2
  12. package/build/cjs/index.js +3 -3
  13. package/build/cjs/index4.js +1 -1
  14. package/build/cjs/index6.js +1 -1
  15. package/build/esm/AsideHeader.js +1 -1
  16. package/build/esm/Drawer.js +47 -26
  17. package/build/esm/Drawer.js.map +1 -1
  18. package/build/esm/{FooterItem-3cc816a3.js → FooterItem-eea84655.js} +1 -1
  19. package/build/esm/{FooterItem-3cc816a3.js.map → FooterItem-eea84655.js.map} +1 -1
  20. package/build/esm/{HotkeysPanel-0576deee.js → HotkeysPanel-4693d73c.js} +1 -1
  21. package/build/esm/{HotkeysPanel-0576deee.js.map → HotkeysPanel-4693d73c.js.map} +1 -1
  22. package/build/esm/{PageLayoutAside-5d010e96.js → PageLayoutAside-d7365bdf.js} +1 -1
  23. package/build/esm/{PageLayoutAside-5d010e96.js.map → PageLayoutAside-d7365bdf.js.map} +1 -1
  24. package/build/esm/PageLayoutAside.js +1 -1
  25. package/build/esm/components/Drawer/utils.d.ts +4 -2
  26. package/build/esm/index.js +4 -4
  27. package/build/esm/index4.js +1 -1
  28. package/build/esm/index6.js +1 -1
  29. package/package.json +1 -1
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var tslib_es6 = require('./tslib.es6-705c6589.js');
6
6
  var React = require('react');
7
7
  var PageLayout = require('./PageLayout.js');
8
- var PageLayoutAside = require('./PageLayoutAside-30f2015c.js');
8
+ var PageLayoutAside = require('./PageLayoutAside-122aea8e.js');
9
9
  require('./Content-64d5738a.js');
10
10
  require('./constants-d81c3867.js');
11
11
  require('./AsideHeaderContext.js');
@@ -3041,36 +3041,39 @@ SwitchTransition.defaultProps = {
3041
3041
  const DRAWER_ITEM_MIN_RESIZE_WIDTH = 200;
3042
3042
  const DRAWER_ITEM_MAX_RESIZE_WIDTH = 800;
3043
3043
  const DRAWER_ITEM_INITIAL_RESIZE_WIDTH = 400;
3044
- function getEventClientX(e) {
3045
- var _a, _b;
3046
- return 'touches' in e ? (_b = (_a = e.touches[0]) === null || _a === void 0 ? void 0 : _a.clientX) !== null && _b !== void 0 ? _b : 0 : e.clientX;
3044
+ function getEventClientPosition(e, direction) {
3045
+ var _a, _b, _c, _d;
3046
+ if ('touches' in e) {
3047
+ 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;
3048
+ }
3049
+ return direction === 'horizontal' ? e.clientX : e.clientY;
3047
3050
  }
3048
- function useResizeHandlers({ onStart, onMove, onEnd }) {
3049
- const initialXPosition = React__namespace.useRef(0);
3050
- const currentXPosition = React__namespace.useRef(0);
3051
+ function useResizeHandlers({ onStart, onMove, onEnd, direction = 'horizontal', }) {
3052
+ const initialPosition = React__namespace.useRef(0);
3053
+ const currentPosition = React__namespace.useRef(0);
3051
3054
  const handleMove = React__namespace.useCallback((e) => {
3052
- const currentX = getEventClientX(e);
3053
- if (currentXPosition.current === currentX) {
3055
+ const current = getEventClientPosition(e, direction);
3056
+ if (currentPosition.current === current) {
3054
3057
  return;
3055
3058
  }
3056
- currentXPosition.current = currentX;
3057
- const delta = initialXPosition.current - currentX;
3059
+ currentPosition.current = current;
3060
+ const delta = initialPosition.current - current;
3058
3061
  onMove(delta);
3059
- }, [onMove]);
3062
+ }, [onMove, direction]);
3060
3063
  const handleEnd = React__namespace.useCallback((e) => {
3061
3064
  window.removeEventListener('mousemove', handleMove);
3062
3065
  window.removeEventListener('touchmove', handleMove);
3063
3066
  document.body.style.removeProperty('user-select');
3064
3067
  document.body.style.removeProperty('-webkit-user-select');
3065
3068
  document.body.style.removeProperty('cursor');
3066
- const currentX = getEventClientX(e);
3067
- const delta = initialXPosition.current - currentX;
3069
+ const current = getEventClientPosition(e, direction);
3070
+ const delta = initialPosition.current - current;
3068
3071
  onEnd(delta);
3069
- }, [handleMove, onEnd]);
3072
+ }, [handleMove, onEnd, direction]);
3070
3073
  const handleStart = React__namespace.useCallback((e) => {
3071
- const currentX = getEventClientX(e);
3072
- initialXPosition.current = currentX;
3073
- currentXPosition.current = currentX;
3074
+ const current = getEventClientPosition(e, direction);
3075
+ initialPosition.current = current;
3076
+ currentPosition.current = current;
3074
3077
  window.addEventListener('mouseup', handleEnd, { once: true });
3075
3078
  window.addEventListener('touchend', handleEnd, { once: true });
3076
3079
  window.addEventListener('touchcancel', handleEnd, { once: true });
@@ -3080,20 +3083,20 @@ function useResizeHandlers({ onStart, onMove, onEnd }) {
3080
3083
  document.body.style.setProperty('-webkit-user-select', 'none');
3081
3084
  document.body.style.setProperty('cursor', 'col-resize');
3082
3085
  onStart();
3083
- }, [handleEnd, handleMove, onStart]);
3086
+ }, [handleEnd, handleMove, onStart, direction]);
3084
3087
  return {
3085
3088
  onMouseDown: handleStart,
3086
3089
  onTouchStart: handleStart,
3087
3090
  };
3088
3091
  }
3089
3092
  function useResizableDrawerItem(params) {
3090
- const { direction, width, minResizeWidth = DRAWER_ITEM_MIN_RESIZE_WIDTH, maxResizeWidth = DRAWER_ITEM_MAX_RESIZE_WIDTH, onResizeStart, onResize, } = params;
3093
+ const { direction = 'left', width, minResizeWidth = DRAWER_ITEM_MIN_RESIZE_WIDTH, maxResizeWidth = DRAWER_ITEM_MAX_RESIZE_WIDTH, onResizeStart, onResize, } = params;
3091
3094
  const [isResizing, setIsResizing] = React__namespace.useState(false);
3092
3095
  const [resizeDelta, setResizeDelta] = React__namespace.useState(0);
3093
3096
  const [internalWidth, setInternalWidth] = React__namespace.useState(width !== null && width !== void 0 ? width : DRAWER_ITEM_INITIAL_RESIZE_WIDTH);
3094
3097
  const getClampedWidth = React__namespace.useCallback((width) => Math.min(Math.max(width, minResizeWidth), maxResizeWidth), [minResizeWidth, maxResizeWidth]);
3095
3098
  const getResizedWidth = React__namespace.useCallback((delta) => {
3096
- const signedDelta = direction === 'right' ? delta : -delta;
3099
+ const signedDelta = ['right', 'bottom'].includes(direction) ? delta : -delta;
3097
3100
  const newWidth = (width !== null && width !== void 0 ? width : internalWidth) + signedDelta;
3098
3101
  return getClampedWidth(newWidth);
3099
3102
  }, [width, internalWidth, direction, getClampedWidth]);
@@ -3114,11 +3117,16 @@ function useResizableDrawerItem(params) {
3114
3117
  const displayWidth = isResizing
3115
3118
  ? getResizedWidth(resizeDelta)
3116
3119
  : getClampedWidth(width !== null && width !== void 0 ? width : internalWidth);
3117
- const handlers = useResizeHandlers({ onStart, onMove, onEnd });
3118
- return { resizedWidth: displayWidth, resizerHandlers: handlers };
3120
+ const handlers = useResizeHandlers({
3121
+ onStart,
3122
+ onMove,
3123
+ onEnd,
3124
+ direction: ['left', 'right'].includes(direction) ? 'horizontal' : 'vertical',
3125
+ });
3126
+ return { resizedWidth: displayWidth, resizerHandlers: handlers, isResizing };
3119
3127
  }
3120
3128
 
3121
- 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))}";
3129
+ 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))}";
3122
3130
  styleInject_es.styleInject(css_248z);
3123
3131
 
3124
3132
  const b = cn.block('drawer');
@@ -3129,7 +3137,7 @@ const DrawerItem = React__default["default"].forwardRef(function DrawerItem(prop
3129
3137
  const itemRef = React__default["default"].useRef(null);
3130
3138
  const handleRef = uikit.useForkRef(ref, itemRef);
3131
3139
  const cssDirection = direction === 'left' ? undefined : direction;
3132
- const { resizedWidth, resizerHandlers } = useResizableDrawerItem({
3140
+ const { resizedWidth, resizerHandlers, isResizing } = useResizableDrawerItem({
3133
3141
  direction,
3134
3142
  width,
3135
3143
  minResizeWidth,
@@ -3137,13 +3145,26 @@ const DrawerItem = React__default["default"].forwardRef(function DrawerItem(prop
3137
3145
  onResizeStart,
3138
3146
  onResize,
3139
3147
  });
3148
+ const style = {};
3149
+ if (resizable) {
3150
+ if (['left', 'right'].includes(direction)) {
3151
+ style.width = `${resizedWidth}px`;
3152
+ }
3153
+ else {
3154
+ style.height = `${resizedWidth}px`;
3155
+ }
3156
+ }
3140
3157
  React__default["default"].useEffect(() => {
3141
3158
  setInitialRender(true);
3142
3159
  }, [direction]);
3143
3160
  const resizerElement = resizable ? (React__default["default"].createElement("div", Object.assign({ className: b('resizer', { direction }) }, resizerHandlers),
3144
- React__default["default"].createElement("div", { className: b('resizer-handle') }))) : null;
3161
+ React__default["default"].createElement("div", { className: b('resizer-handle', { direction }) }))) : null;
3145
3162
  return (React__default["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) },
3146
- React__default["default"].createElement("div", { ref: handleRef, className: b('item', { direction: cssDirection, hidden: isInitialRender && !visible }, [className]), style: { width: resizable ? `${resizedWidth}px` : undefined } },
3163
+ React__default["default"].createElement("div", { ref: handleRef, className: b('item', {
3164
+ direction: cssDirection,
3165
+ hidden: isInitialRender && !visible,
3166
+ resize: isResizing,
3167
+ }, [className]), style: style },
3147
3168
  resizerElement, children !== null && children !== void 0 ? children : content)));
3148
3169
  });
3149
3170
  const Drawer = ({ className, veilClassName, children, style, onVeilClick, onEscape, preventScrollBody = true, hideVeil, disablePortal = true, keepMounted = false, }) => {