@vkontakte/vkui 8.1.1 → 8.1.3

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 (65) hide show
  1. package/dist/components/Flex/FlexItem/FlexItem.d.ts +1 -1
  2. package/dist/components/Flex/FlexItem/FlexItem.d.ts.map +1 -1
  3. package/dist/components/Flex/FlexItem/FlexItem.js +39 -8
  4. package/dist/components/Flex/FlexItem/FlexItem.js.map +1 -1
  5. package/dist/components/NavTransitionContext/NavTransitionContext.d.ts +2 -1
  6. package/dist/components/NavTransitionContext/NavTransitionContext.d.ts.map +1 -1
  7. package/dist/components/NavTransitionContext/NavTransitionContext.js +8 -4
  8. package/dist/components/NavTransitionContext/NavTransitionContext.js.map +1 -1
  9. package/dist/components/OnboardingTooltip/OnboardingTooltip.d.ts.map +1 -1
  10. package/dist/components/OnboardingTooltip/OnboardingTooltip.js +2 -4
  11. package/dist/components/OnboardingTooltip/OnboardingTooltip.js.map +1 -1
  12. package/dist/components/Popper/Popper.d.ts.map +1 -1
  13. package/dist/components/Popper/Popper.js +6 -3
  14. package/dist/components/Popper/Popper.js.map +1 -1
  15. package/dist/components/Root/Root.d.ts.map +1 -1
  16. package/dist/components/Root/Root.js +29 -32
  17. package/dist/components/Root/Root.js.map +1 -1
  18. package/dist/components/View/View.d.ts.map +1 -1
  19. package/dist/components/View/View.js +50 -53
  20. package/dist/components/View/View.js.map +1 -1
  21. package/dist/components/View/ViewInfinite.d.ts.map +1 -1
  22. package/dist/components/View/ViewInfinite.js +34 -37
  23. package/dist/components/View/ViewInfinite.js.map +1 -1
  24. package/dist/components.css +1 -1
  25. package/dist/components.css.map +1 -1
  26. package/dist/cssm/components/Flex/FlexItem/FlexItem.js +39 -9
  27. package/dist/cssm/components/Flex/FlexItem/FlexItem.js.map +1 -1
  28. package/dist/cssm/components/NavTransitionContext/NavTransitionContext.js +8 -4
  29. package/dist/cssm/components/NavTransitionContext/NavTransitionContext.js.map +1 -1
  30. package/dist/cssm/components/OnboardingTooltip/OnboardingTooltip.js +2 -4
  31. package/dist/cssm/components/OnboardingTooltip/OnboardingTooltip.js.map +1 -1
  32. package/dist/cssm/components/Popper/Popper.js +6 -3
  33. package/dist/cssm/components/Popper/Popper.js.map +1 -1
  34. package/dist/cssm/components/Root/Root.js +29 -32
  35. package/dist/cssm/components/Root/Root.js.map +1 -1
  36. package/dist/cssm/components/View/View.js +50 -53
  37. package/dist/cssm/components/View/View.js.map +1 -1
  38. package/dist/cssm/components/View/ViewInfinite.js +34 -37
  39. package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
  40. package/dist/cssm/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js +4 -4
  41. package/dist/cssm/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js.map +1 -1
  42. package/dist/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.d.ts.map +1 -1
  43. package/dist/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js +4 -4
  44. package/dist/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js.map +1 -1
  45. package/dist/vkui.css +1 -1
  46. package/dist/vkui.css.map +1 -1
  47. package/package.json +1 -1
  48. package/src/components/Flex/FlexItem/FlexItem.tsx +38 -11
  49. package/src/components/NavTransitionContext/NavTransitionContext.tsx +5 -1
  50. package/src/components/OnboardingTooltip/OnboardingTooltip.tsx +2 -5
  51. package/src/components/Popper/Popper.tsx +7 -4
  52. package/src/components/Root/Root.tsx +50 -52
  53. package/src/components/View/View.tsx +83 -89
  54. package/src/components/View/ViewInfinite.tsx +65 -69
  55. package/src/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.ts +4 -5
  56. package/dist/cssm/components/Flex/FlexItem/FlexItem.module.css +0 -17
  57. package/dist/cssm/lib/floating/LockFloatingPosition/LockFloatingPosition.js +0 -6
  58. package/dist/cssm/lib/floating/LockFloatingPosition/LockFloatingPosition.js.map +0 -1
  59. package/dist/lib/floating/LockFloatingPosition/LockFloatingPosition.d.ts +0 -6
  60. package/dist/lib/floating/LockFloatingPosition/LockFloatingPosition.d.ts.map +0 -1
  61. package/dist/lib/floating/LockFloatingPosition/LockFloatingPosition.js +0 -6
  62. package/dist/lib/floating/LockFloatingPosition/LockFloatingPosition.js.map +0 -1
  63. package/src/components/Flex/FlexItem/FlexItem.module.css +0 -17
  64. package/src/components/Flex/FlexItem/FlexItem.module.css.d.ts.map +0 -1
  65. package/src/lib/floating/LockFloatingPosition/LockFloatingPosition.tsx +0 -6
@@ -6,7 +6,6 @@ import { withContext } from '../../hoc/withContext';
6
6
  import { withPlatform } from '../../hoc/withPlatform';
7
7
  import { millisecondsInSecond } from '../../lib/date';
8
8
  import { canUseDOM, type DOMProps, withDOM } from '../../lib/dom';
9
- import { LockFloatingPositionContext } from '../../lib/floating/LockFloatingPosition/LockFloatingPosition';
10
9
  import { getNavId, type NavIdProps } from '../../lib/getNavId';
11
10
  import { warnOnce } from '../../lib/warnOnce';
12
11
  import type { HasPlatform, HTMLAttributesWithRootRef } from '../../types';
@@ -601,78 +600,75 @@ class ViewInfiniteComponent extends React.Component<
601
600
 
602
601
  return (
603
602
  <NavViewIdContext.Provider value={id || nav}>
604
- <LockFloatingPositionContext.Provider value={swipingBack || animated}>
605
- <Touch
606
- Component="section"
607
- {...restProps}
608
- className={classNames(
609
- styles.host,
610
- platform === 'ios' && classNames(styles.ios, 'vkuiInternalView--ios'),
611
- !disableAnimation && this.state.animated && styles.animated,
612
- !disableAnimation && this.state.swipingBack && styles.swipingBack,
613
- disableAnimation && styles.noMotion,
614
- className,
615
- )}
616
- onMoveX={
617
- iOSSwipeBackSimulationEnabled
618
- ? this.handleTouchMoveXForIOSSwipeBackSimulation
619
- : platform === 'ios'
620
- ? this.handleTouchMoveXForNativeIOSSwipeBackOrSwipeNext
621
- : undefined
622
- }
623
- onEnd={
624
- iOSSwipeBackSimulationEnabled
625
- ? this.handleTouchEndForIOSSwipeBackSimulation
603
+ <Touch
604
+ Component="section"
605
+ {...restProps}
606
+ className={classNames(
607
+ styles.host,
608
+ platform === 'ios' && classNames(styles.ios, 'vkuiInternalView--ios'),
609
+ !disableAnimation && this.state.animated && styles.animated,
610
+ !disableAnimation && this.state.swipingBack && styles.swipingBack,
611
+ disableAnimation && styles.noMotion,
612
+ className,
613
+ )}
614
+ onMoveX={
615
+ iOSSwipeBackSimulationEnabled
616
+ ? this.handleTouchMoveXForIOSSwipeBackSimulation
617
+ : platform === 'ios'
618
+ ? this.handleTouchMoveXForNativeIOSSwipeBackOrSwipeNext
626
619
  : undefined
627
- }
628
- >
629
- <div className={styles.panels}>
630
- {panels.map((panel) => {
631
- const panelId = getNavId(panel.props, warn);
632
- const isPrev = panelId === prevPanel || panelId === swipeBackPrevPanel;
633
- const compensateScroll =
634
- isPrev || panelId === swipeBackNextPanel || (panelId === nextPanel && isBack);
635
- const isTransitionTarget = animated && panelId === (isBack ? prevPanel : nextPanel);
636
- const scrollList = (panelId && this.scrolls.get(panelId)) || [];
637
- const scroll = scrollList[scrollList.length - 1] || 0;
638
-
639
- return (
620
+ }
621
+ onEnd={
622
+ iOSSwipeBackSimulationEnabled ? this.handleTouchEndForIOSSwipeBackSimulation : undefined
623
+ }
624
+ >
625
+ <div className={styles.panels}>
626
+ {panels.map((panel) => {
627
+ const panelId = getNavId(panel.props, warn);
628
+ const isPrev = panelId === prevPanel || panelId === swipeBackPrevPanel;
629
+ const compensateScroll =
630
+ isPrev || panelId === swipeBackNextPanel || (panelId === nextPanel && isBack);
631
+ const isTransitionTarget = animated && panelId === (isBack ? prevPanel : nextPanel);
632
+ const scrollList = (panelId && this.scrolls.get(panelId)) || [];
633
+ const scroll = scrollList[scrollList.length - 1] || 0;
634
+
635
+ return (
636
+ <div
637
+ className={classNames(
638
+ styles.panel,
639
+ panelId === activePanel && styles.panelActive,
640
+ panelId === prevPanel && styles.panelPrev,
641
+ panelId === nextPanel && styles.panelNext,
642
+ panelId === swipeBackPrevPanel && styles.panelSwipeBackPrev,
643
+ panelId === swipeBackNextPanel && styles.panelSwipeBackNext,
644
+ swipeBackResult === 'success' && styles.panelSwipeBackSuccess,
645
+ swipeBackResult === 'fail' && styles.panelSwipeBackFailed,
646
+ )}
647
+ onAnimationEnd={isTransitionTarget ? this.transitionEndHandler : undefined}
648
+ ref={(el) => {
649
+ panelId !== undefined && (this.panelNodes[panelId] = el);
650
+ }}
651
+ style={this.calcPanelSwipeStyles(panelId)}
652
+ key={panelId}
653
+ >
640
654
  <div
641
- className={classNames(
642
- styles.panel,
643
- panelId === activePanel && styles.panelActive,
644
- panelId === prevPanel && styles.panelPrev,
645
- panelId === nextPanel && styles.panelNext,
646
- panelId === swipeBackPrevPanel && styles.panelSwipeBackPrev,
647
- panelId === swipeBackNextPanel && styles.panelSwipeBackNext,
648
- swipeBackResult === 'success' && styles.panelSwipeBackSuccess,
649
- swipeBackResult === 'fail' && styles.panelSwipeBackFailed,
650
- )}
651
- onAnimationEnd={isTransitionTarget ? this.transitionEndHandler : undefined}
652
- ref={(el) => {
653
- panelId !== undefined && (this.panelNodes[panelId] = el);
654
- }}
655
- style={this.calcPanelSwipeStyles(panelId)}
656
- key={panelId}
655
+ className={styles.panelIn}
656
+ style={{ marginTop: compensateScroll ? -scroll : undefined }}
657
657
  >
658
- <div
659
- className={styles.panelIn}
660
- style={{ marginTop: compensateScroll ? -scroll : undefined }}
661
- >
662
- <NavTransitionDirectionProvider isBack={swipingBack || isBack}>
663
- <NavTransitionProvider
664
- entering={panelId === nextPanel || panelId === swipeBackNextPanel}
665
- >
666
- {panel}
667
- </NavTransitionProvider>
668
- </NavTransitionDirectionProvider>
669
- </div>
658
+ <NavTransitionDirectionProvider isBack={swipingBack || isBack}>
659
+ <NavTransitionProvider
660
+ entering={panelId === nextPanel || panelId === swipeBackNextPanel}
661
+ animating={swipingBack || animated}
662
+ >
663
+ {panel}
664
+ </NavTransitionProvider>
665
+ </NavTransitionDirectionProvider>
670
666
  </div>
671
- );
672
- })}
673
- </div>
674
- </Touch>
675
- </LockFloatingPositionContext.Provider>
667
+ </div>
668
+ );
669
+ })}
670
+ </div>
671
+ </Touch>
676
672
  </NavViewIdContext.Provider>
677
673
  );
678
674
  }
@@ -1,12 +1,12 @@
1
1
  import * as React from 'react';
2
2
  import { debounce, noop } from '@vkontakte/vkjs';
3
3
  import { getWindow, isHTMLElement } from '@vkontakte/vkui-floating-ui/utils/dom';
4
+ import { useNavTransition } from '../../../components/NavTransitionContext/NavTransitionContext';
4
5
  import { useCustomEnsuredControl } from '../../../hooks/useEnsuredControl';
5
6
  import { useGlobalOnClickOutside } from '../../../hooks/useGlobalOnClickOutside';
6
7
  import { useStableCallback } from '../../../hooks/useStableCallback';
7
8
  import { contains, getActiveElementByAnotherElement } from '../../dom';
8
9
  import { useIsomorphicLayoutEffect } from '../../useIsomorphicLayoutEffect';
9
- import { LockFloatingPositionContext } from '../LockFloatingPosition/LockFloatingPosition';
10
10
  import { autoUpdateFloatingElement, useFloating } from '../adapters';
11
11
  import { convertFloatingDataToReactCSSProperties } from '../functions';
12
12
  import type { UseFloatingOptions } from '../types/common';
@@ -57,6 +57,7 @@ export const useFloatingWithInteractions = <T extends HTMLElement = HTMLElement>
57
57
  () => (shownProp !== undefined ? { shown: shownProp } : undefined),
58
58
  [shownProp],
59
59
  );
60
+ const { entering, animating } = useNavTransition();
60
61
  const [shownLocalState, setShownLocalState] = useCustomEnsuredControl<LocalState>({
61
62
  value: memoizedValue,
62
63
  disabled,
@@ -84,14 +85,12 @@ export const useFloatingWithInteractions = <T extends HTMLElement = HTMLElement>
84
85
 
85
86
  const { triggerOnFocus, triggerOnClick, triggerOnHover } = useResolveTriggerType(trigger);
86
87
 
87
- const isLock = React.useContext(LockFloatingPositionContext);
88
-
89
88
  // Библиотека `floating-ui`
90
89
  const { placement, x, y, strategy, refs, middlewareData } = useFloating<T>({
91
90
  strategy: strategyProp,
92
91
  placement: placementProp,
93
92
  ...(middlewares !== undefined ? { middleware: middlewares } : {}),
94
- ...(!isLock && { whileElementsMounted }),
93
+ ...(!animating && { whileElementsMounted }),
95
94
  });
96
95
 
97
96
  const commitShownLocalState = React.useCallback(
@@ -376,7 +375,7 @@ export const useFloatingWithInteractions = <T extends HTMLElement = HTMLElement>
376
375
 
377
376
  return {
378
377
  placement,
379
- shown: shownFinalState,
378
+ shown: shownFinalState && !entering,
380
379
  willBeHide,
381
380
  refs,
382
381
  referenceProps,
@@ -1,17 +0,0 @@
1
- /* flex */
2
-
3
- .flexGrow {
4
- flex: 1 0 auto;
5
- }
6
-
7
- .flexShrink {
8
- flex: 0 1 auto;
9
- }
10
-
11
- .flexContent {
12
- flex: 1 1 auto;
13
- }
14
-
15
- .flexFixed {
16
- flex: 0 0 auto;
17
- }
@@ -1,6 +0,0 @@
1
- import * as React from "react";
2
- /**
3
- * @see https://github.com/VKCOM/VKUI/pull/9603
4
- */ export const LockFloatingPositionContext = /*#__PURE__*/ React.createContext(false);
5
-
6
- //# sourceMappingURL=LockFloatingPosition.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../src/lib/floating/LockFloatingPosition/LockFloatingPosition.tsx"],"sourcesContent":["import * as React from 'react';\n\n/**\n * @see https://github.com/VKCOM/VKUI/pull/9603\n */\nexport const LockFloatingPositionContext = React.createContext(false);\n"],"names":["React","LockFloatingPositionContext","createContext"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAE/B;;CAEC,GACD,OAAO,MAAMC,4CAA8BD,MAAME,aAAa,CAAC,OAAO"}
@@ -1,6 +0,0 @@
1
- import * as React from 'react';
2
- /**
3
- * @see https://github.com/VKCOM/VKUI/pull/9603
4
- */
5
- export declare const LockFloatingPositionContext: React.Context<boolean>;
6
- //# sourceMappingURL=LockFloatingPosition.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LockFloatingPosition.d.ts","sourceRoot":"","sources":["../../../../src/lib/floating/LockFloatingPosition/LockFloatingPosition.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;GAEG;AACH,eAAO,MAAM,2BAA2B,wBAA6B,CAAC"}
@@ -1,6 +0,0 @@
1
- import * as React from "react";
2
- /**
3
- * @see https://github.com/VKCOM/VKUI/pull/9603
4
- */ export const LockFloatingPositionContext = /*#__PURE__*/ React.createContext(false);
5
-
6
- //# sourceMappingURL=LockFloatingPosition.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/lib/floating/LockFloatingPosition/LockFloatingPosition.tsx"],"sourcesContent":["import * as React from 'react';\n\n/**\n * @see https://github.com/VKCOM/VKUI/pull/9603\n */\nexport const LockFloatingPositionContext = React.createContext(false);\n"],"names":["React","LockFloatingPositionContext","createContext"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAE/B;;CAEC,GACD,OAAO,MAAMC,4CAA8BD,MAAME,aAAa,CAAC,OAAO"}
@@ -1,17 +0,0 @@
1
- /* flex */
2
-
3
- .flexGrow {
4
- flex: 1 0 auto;
5
- }
6
-
7
- .flexShrink {
8
- flex: 0 1 auto;
9
- }
10
-
11
- .flexContent {
12
- flex: 1 1 auto;
13
- }
14
-
15
- .flexFixed {
16
- flex: 0 0 auto;
17
- }
@@ -1 +0,0 @@
1
- {"version":3,"sources":["./FlexItem.module.css"],"names":["flexGrow","flexShrink","flexContent","flexFixed"],"mappings":"AAAA;AAAA,E,aAEAA,U,WAFA;AAAA,E,aAMAC,Y,WANA;AAAA,E,aAUAC,a,WAVA;AAAA,E,aAcAC,W,WAdA;AAAA;AAAA","file":"FlexItem.module.css.d.ts","sourceRoot":""}
@@ -1,6 +0,0 @@
1
- import * as React from 'react';
2
-
3
- /**
4
- * @see https://github.com/VKCOM/VKUI/pull/9603
5
- */
6
- export const LockFloatingPositionContext = React.createContext(false);