@vkontakte/vkui 5.7.0 → 5.7.2

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 (155) hide show
  1. package/dist/cjs/components/Banner/Banner.js +1 -1
  2. package/dist/cjs/components/Banner/Banner.js.map +1 -1
  3. package/dist/cjs/components/Checkbox/Checkbox.js +3 -1
  4. package/dist/cjs/components/Checkbox/Checkbox.js.map +1 -1
  5. package/dist/cjs/components/ChipsSelect/ChipsSelect.js +4 -2
  6. package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
  7. package/dist/cjs/components/Group/Group.js +2 -3
  8. package/dist/cjs/components/Group/Group.js.map +1 -1
  9. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js +13 -11
  10. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  11. package/dist/cjs/components/Image/Image.js +52 -37
  12. package/dist/cjs/components/Image/Image.js.map +1 -1
  13. package/dist/cjs/components/ImageBase/ImageBase.js +20 -1
  14. package/dist/cjs/components/ImageBase/ImageBase.js.map +1 -1
  15. package/dist/cjs/components/MiniInfoCell/MiniInfoCell.js +1 -1
  16. package/dist/cjs/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
  17. package/dist/cjs/components/PopoutRoot/PopoutRoot.js +1 -3
  18. package/dist/cjs/components/PopoutRoot/PopoutRoot.js.map +1 -1
  19. package/dist/cjs/components/PopoutWrapper/PopoutWrapper.js +1 -1
  20. package/dist/cjs/components/PopoutWrapper/PopoutWrapper.js.map +1 -1
  21. package/dist/cjs/components/SelectMimicry/SelectMimicry.d.ts +1 -1
  22. package/dist/cjs/components/SelectMimicry/SelectMimicry.js +8 -3
  23. package/dist/cjs/components/SelectMimicry/SelectMimicry.js.map +1 -1
  24. package/dist/cjs/components/SimpleCell/SimpleCell.js +0 -1
  25. package/dist/cjs/components/SimpleCell/SimpleCell.js.map +1 -1
  26. package/dist/cjs/components/View/View.js +4 -4
  27. package/dist/cjs/components/View/View.js.map +1 -1
  28. package/dist/cjs/components/View/ViewInfinite.js +4 -4
  29. package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
  30. package/dist/cjs/hooks/useAdaptivityHasHover.js +4 -3
  31. package/dist/cjs/hooks/useAdaptivityHasHover.js.map +1 -1
  32. package/dist/cjs/hooks/useAdaptivityHasPointer.js +5 -5
  33. package/dist/cjs/hooks/useAdaptivityHasPointer.js.map +1 -1
  34. package/dist/cjs/hooks/useAutoFocus.d.ts +2 -0
  35. package/dist/cjs/hooks/useAutoFocus.js +23 -0
  36. package/dist/cjs/hooks/useAutoFocus.js.map +1 -0
  37. package/dist/cjs/hooks/useChipsSelect.js +5 -4
  38. package/dist/cjs/hooks/useChipsSelect.js.map +1 -1
  39. package/dist/cjs/hooks/useFocusWithin.js +3 -0
  40. package/dist/cjs/hooks/useFocusWithin.js.map +1 -1
  41. package/dist/cjs/hooks/useIsClient.js +2 -1
  42. package/dist/cjs/hooks/useIsClient.js.map +1 -1
  43. package/dist/components/Banner/Banner.js +2 -2
  44. package/dist/components/Banner/Banner.js.map +1 -1
  45. package/dist/components/Checkbox/Checkbox.js +3 -1
  46. package/dist/components/Checkbox/Checkbox.js.map +1 -1
  47. package/dist/components/ChipsSelect/ChipsSelect.js +4 -2
  48. package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
  49. package/dist/components/Group/Group.js +2 -3
  50. package/dist/components/Group/Group.js.map +1 -1
  51. package/dist/components/HorizontalScroll/HorizontalScroll.js +13 -11
  52. package/dist/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  53. package/dist/components/Image/Image.js +54 -39
  54. package/dist/components/Image/Image.js.map +1 -1
  55. package/dist/components/ImageBase/ImageBase.js +20 -1
  56. package/dist/components/ImageBase/ImageBase.js.map +1 -1
  57. package/dist/components/MiniInfoCell/MiniInfoCell.js +1 -1
  58. package/dist/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
  59. package/dist/components/PopoutRoot/PopoutRoot.js +1 -3
  60. package/dist/components/PopoutRoot/PopoutRoot.js.map +1 -1
  61. package/dist/components/PopoutWrapper/PopoutWrapper.js +1 -1
  62. package/dist/components/PopoutWrapper/PopoutWrapper.js.map +1 -1
  63. package/dist/components/SelectMimicry/SelectMimicry.d.ts +1 -1
  64. package/dist/components/SelectMimicry/SelectMimicry.js +8 -3
  65. package/dist/components/SelectMimicry/SelectMimicry.js.map +1 -1
  66. package/dist/components/SimpleCell/SimpleCell.js +0 -1
  67. package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
  68. package/dist/components/View/View.js +4 -4
  69. package/dist/components/View/View.js.map +1 -1
  70. package/dist/components/View/ViewInfinite.js +4 -4
  71. package/dist/components/View/ViewInfinite.js.map +1 -1
  72. package/dist/components.css +22 -22
  73. package/dist/components.css.map +1 -1
  74. package/dist/components.js.tmp +757 -698
  75. package/dist/cssm/components/ActionSheet/ActionSheet.module.css +3 -3
  76. package/dist/cssm/components/Alert/Alert.module.css +4 -4
  77. package/dist/cssm/components/Banner/Banner.js +2 -2
  78. package/dist/cssm/components/Banner/Banner.js.map +1 -1
  79. package/dist/cssm/components/Banner/Banner.module.css +2 -2
  80. package/dist/cssm/components/Checkbox/Checkbox.js +3 -1
  81. package/dist/cssm/components/Checkbox/Checkbox.js.map +1 -1
  82. package/dist/cssm/components/Checkbox/Checkbox.module.css +6 -0
  83. package/dist/cssm/components/ChipsSelect/ChipsSelect.js +3 -1
  84. package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
  85. package/dist/cssm/components/FocusVisible/FocusVisible.module.css +4 -4
  86. package/dist/cssm/components/Group/Group.js +2 -3
  87. package/dist/cssm/components/Group/Group.js.map +1 -1
  88. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js +13 -11
  89. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  90. package/dist/cssm/components/Image/Image.js +46 -33
  91. package/dist/cssm/components/Image/Image.js.map +1 -1
  92. package/dist/cssm/components/ImageBase/ImageBase.js +20 -1
  93. package/dist/cssm/components/ImageBase/ImageBase.js.map +1 -1
  94. package/dist/cssm/components/MiniInfoCell/MiniInfoCell.js +1 -1
  95. package/dist/cssm/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
  96. package/dist/cssm/components/ModalPage/ModalPage.module.css +0 -4
  97. package/dist/cssm/components/ModalRoot/ModalRoot.module.css +2 -2
  98. package/dist/cssm/components/PanelHeader/PanelHeader.module.css +4 -2
  99. package/dist/cssm/components/PanelHeaderContext/PanelHeaderContext.module.css +8 -8
  100. package/dist/cssm/components/Placeholder/Placeholder.module.css +1 -0
  101. package/dist/cssm/components/PopoutRoot/PopoutRoot.js +1 -3
  102. package/dist/cssm/components/PopoutRoot/PopoutRoot.js.map +1 -1
  103. package/dist/cssm/components/PopoutRoot/PopoutRoot.module.css +0 -4
  104. package/dist/cssm/components/PopoutWrapper/PopoutWrapper.js +1 -1
  105. package/dist/cssm/components/PopoutWrapper/PopoutWrapper.js.map +1 -1
  106. package/dist/cssm/components/PopoutWrapper/PopoutWrapper.module.css +2 -2
  107. package/dist/cssm/components/Popover/Popover.module.css +2 -2
  108. package/dist/cssm/components/PullToRefresh/PullToRefresh.module.css +4 -4
  109. package/dist/cssm/components/RichTooltip/RichTooltip.module.css +2 -2
  110. package/dist/cssm/components/Root/Root.module.css +12 -13
  111. package/dist/cssm/components/ScreenSpinner/ScreenSpinner.module.css +5 -5
  112. package/dist/cssm/components/SelectMimicry/SelectMimicry.d.ts +1 -1
  113. package/dist/cssm/components/SelectMimicry/SelectMimicry.js +6 -2
  114. package/dist/cssm/components/SelectMimicry/SelectMimicry.js.map +1 -1
  115. package/dist/cssm/components/SimpleCell/SimpleCell.js +0 -1
  116. package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
  117. package/dist/cssm/components/Snackbar/Snackbar.module.css +4 -4
  118. package/dist/cssm/components/Tappable/Tappable.module.css +2 -2
  119. package/dist/cssm/components/TextTooltip/TextTooltip.module.css +2 -2
  120. package/dist/cssm/components/View/View.js +4 -4
  121. package/dist/cssm/components/View/View.js.map +1 -1
  122. package/dist/cssm/components/View/View.module.css +16 -16
  123. package/dist/cssm/components/View/ViewInfinite.js +4 -4
  124. package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
  125. package/dist/cssm/hooks/useAdaptivityHasHover.js +4 -3
  126. package/dist/cssm/hooks/useAdaptivityHasHover.js.map +1 -1
  127. package/dist/cssm/hooks/useAdaptivityHasPointer.js +5 -5
  128. package/dist/cssm/hooks/useAdaptivityHasPointer.js.map +1 -1
  129. package/dist/cssm/hooks/useAutoFocus.d.ts +2 -0
  130. package/dist/cssm/hooks/useAutoFocus.js +12 -0
  131. package/dist/cssm/hooks/useAutoFocus.js.map +1 -0
  132. package/dist/cssm/hooks/useChipsSelect.js +5 -4
  133. package/dist/cssm/hooks/useChipsSelect.js.map +1 -1
  134. package/dist/cssm/hooks/useFocusWithin.js +3 -0
  135. package/dist/cssm/hooks/useFocusWithin.js.map +1 -1
  136. package/dist/cssm/hooks/useIsClient.js +2 -1
  137. package/dist/cssm/hooks/useIsClient.js.map +1 -1
  138. package/dist/cssm/styles/constants.css +1 -1
  139. package/dist/hooks/useAdaptivityHasHover.js +4 -3
  140. package/dist/hooks/useAdaptivityHasHover.js.map +1 -1
  141. package/dist/hooks/useAdaptivityHasPointer.js +5 -5
  142. package/dist/hooks/useAdaptivityHasPointer.js.map +1 -1
  143. package/dist/hooks/useAutoFocus.d.ts +2 -0
  144. package/dist/hooks/useAutoFocus.js +12 -0
  145. package/dist/hooks/useAutoFocus.js.map +1 -0
  146. package/dist/hooks/useChipsSelect.js +5 -4
  147. package/dist/hooks/useChipsSelect.js.map +1 -1
  148. package/dist/hooks/useFocusWithin.js +3 -0
  149. package/dist/hooks/useFocusWithin.js.map +1 -1
  150. package/dist/hooks/useIsClient.js +2 -1
  151. package/dist/hooks/useIsClient.js.map +1 -1
  152. package/dist/vkui.css +22 -22
  153. package/dist/vkui.css.map +1 -1
  154. package/dist/vkui.js.tmp +757 -698
  155. package/package.json +3 -3
@@ -2,7 +2,7 @@
2
2
  box-shadow: var(--vkui--elevation3);
3
3
  border-radius: var(--vkui--size_border_radius--regular);
4
4
  background-color: var(--vkui--color_background_modal);
5
- animation: vkui-richtooltip-fadein 0.2s ease;
5
+ animation: richtooltip-fade-in 0.2s ease;
6
6
  color: var(--vkui--color_text_primary);
7
7
  }
8
8
 
@@ -46,7 +46,7 @@
46
46
  color: var(--vkui--color_background_modal_inverse);
47
47
  }
48
48
 
49
- @keyframes vkui-richtooltip-fadein {
49
+ @keyframes richtooltip-fade-in {
50
50
  from {
51
51
  opacity: 0;
52
52
  }
@@ -27,12 +27,11 @@
27
27
  }
28
28
 
29
29
  .Root__view--show-forward {
30
- animation: vkui-root-android-animation-show-forward 0.3s var(--vkui--animation_easing_platform);
30
+ animation: root-android-animation-show-forward 0.3s var(--vkui--animation_easing_platform);
31
31
  }
32
32
 
33
33
  .Root__view--hide-back {
34
- animation: vkui-root-android-animation-hide-back 0.3s var(--vkui--animation_easing_platform)
35
- forwards;
34
+ animation: root-android-animation-hide-back 0.3s var(--vkui--animation_easing_platform) forwards;
36
35
  }
37
36
 
38
37
  /**
@@ -52,22 +51,22 @@
52
51
  }
53
52
 
54
53
  .Root--ios .Root__view--show-back::after {
55
- animation: vkui-root-ios-animation-show-back 0.6s var(--vkui--animation_easing_platform) forwards;
54
+ animation: root-ios-animation-show-back 0.6s var(--vkui--animation_easing_platform) forwards;
56
55
  }
57
56
 
58
57
  .Root--ios .Root__view--hide-forward::after {
59
- animation: vkui-root-ios-animation-hide-forward 0.6s var(--vkui--animation_easing_platform);
58
+ animation: root-ios-animation-hide-forward 0.6s var(--vkui--animation_easing_platform);
60
59
  }
61
60
 
62
61
  .Root--ios .Root__view--show-forward {
63
- animation: vkui-root-ios-animation-show-forward 0.6s var(--vkui--animation_easing_platform);
62
+ animation: root-ios-animation-show-forward 0.6s var(--vkui--animation_easing_platform);
64
63
  }
65
64
 
66
65
  .Root--ios .Root__view--hide-back {
67
- animation: vkui-root-ios-animation-hide-back 0.6s var(--vkui--animation_easing_platform) forwards;
66
+ animation: root-ios-animation-hide-back 0.6s var(--vkui--animation_easing_platform) forwards;
68
67
  }
69
68
 
70
- @keyframes vkui-root-ios-animation-show-back {
69
+ @keyframes root-ios-animation-show-back {
71
70
  from {
72
71
  opacity: 0.3;
73
72
  }
@@ -77,7 +76,7 @@
77
76
  }
78
77
  }
79
78
 
80
- @keyframes vkui-root-ios-animation-hide-forward {
79
+ @keyframes root-ios-animation-hide-forward {
81
80
  from {
82
81
  opacity: 0;
83
82
  }
@@ -87,7 +86,7 @@
87
86
  }
88
87
  }
89
88
 
90
- @keyframes vkui-root-ios-animation-hide-back {
89
+ @keyframes root-ios-animation-hide-back {
91
90
  from {
92
91
  transform: translate3d(0, 0, 0);
93
92
  }
@@ -97,7 +96,7 @@
97
96
  }
98
97
  }
99
98
 
100
- @keyframes vkui-root-ios-animation-show-forward {
99
+ @keyframes root-ios-animation-show-forward {
101
100
  from {
102
101
  transform: translate3d(0, 100%, 0);
103
102
  }
@@ -111,7 +110,7 @@
111
110
  * Android
112
111
  */
113
112
 
114
- @keyframes vkui-root-android-animation-hide-back {
113
+ @keyframes root-android-animation-hide-back {
115
114
  from {
116
115
  transform: scale(1);
117
116
  opacity: 1;
@@ -123,7 +122,7 @@
123
122
  }
124
123
  }
125
124
 
126
- @keyframes vkui-root-android-animation-show-forward {
125
+ @keyframes root-android-animation-show-forward {
127
126
  from {
128
127
  transform: scale(1.05);
129
128
  opacity: 0;
@@ -1,5 +1,5 @@
1
1
  .ScreenSpinner {
2
- animation: vkui-screen-spinner-intro 0.3s ease;
2
+ animation: screen-spinner-intro 0.3s ease;
3
3
  }
4
4
 
5
5
  .ScreenSpinner--clickable {
@@ -36,16 +36,16 @@
36
36
  }
37
37
 
38
38
  .ScreenSpinner__icon :global(.vkuiIcon) {
39
- animation: vkui-screen-spinner-intro 0.2s ease;
39
+ animation: screen-spinner-intro 0.2s ease;
40
40
  }
41
41
 
42
42
  .ScreenSpinner__icon--state-done :global(.vkuiIcon) path {
43
43
  stroke-dasharray: 50;
44
44
  stroke-dashoffset: 50;
45
- animation: vkui-screen-spinner-iconDone 0.6s 0.3s var(--vkui--animation_easing_platform) forwards;
45
+ animation: screen-spinner-icon-done 0.6s 0.3s var(--vkui--animation_easing_platform) forwards;
46
46
  }
47
47
 
48
- @keyframes vkui-screen-spinner-iconDone {
48
+ @keyframes screen-spinner-icon-done {
49
49
  from {
50
50
  stroke-dashoffset: 50;
51
51
  }
@@ -55,7 +55,7 @@
55
55
  }
56
56
  }
57
57
 
58
- @keyframes vkui-screen-spinner-intro {
58
+ @keyframes screen-spinner-intro {
59
59
  from {
60
60
  opacity: 0;
61
61
  }
@@ -10,4 +10,4 @@ export interface SelectMimicryProps extends React.HTMLAttributes<HTMLElement>, H
10
10
  /**
11
11
  * @see https://vkcom.github.io/VKUI/#/SelectMimicry
12
12
  */
13
- export declare const SelectMimicry: ({ tabIndex, placeholder, children, align, getRootRef, multiline, disabled, onClick, before, after, selectType, status, className, ...restProps }: SelectMimicryProps) => React.JSX.Element;
13
+ export declare const SelectMimicry: ({ tabIndex, placeholder, children, align, getRootRef, multiline, disabled, onClick, before, after, selectType, status, className, autoFocus, ...restProps }: SelectMimicryProps) => React.JSX.Element;
@@ -1,6 +1,8 @@
1
1
  import * as React from 'react';
2
2
  import { classNames } from '@vkontakte/vkjs';
3
3
  import { useAdaptivity } from '../../hooks/useAdaptivity';
4
+ import { useAutoFocus } from '../../hooks/useAutoFocus';
5
+ import { useExternRef } from '../../hooks/useExternRef';
4
6
  import { SizeType } from '../../lib/adaptivity';
5
7
  import { getFormFieldModeFromSelectType } from '../../lib/select';
6
8
  import { DropdownIcon } from '../DropdownIcon/DropdownIcon';
@@ -13,14 +15,16 @@ const sizeYClassNames = {
13
15
  };
14
16
  /**
15
17
  * @see https://vkcom.github.io/VKUI/#/SelectMimicry
16
- */ export const SelectMimicry = ({ tabIndex = 0, placeholder, children, align, getRootRef, multiline, disabled, onClick, before, after = /*#__PURE__*/ React.createElement(DropdownIcon, null), selectType = 'default', status, className, ...restProps })=>{
18
+ */ export const SelectMimicry = ({ tabIndex = 0, placeholder, children, align, getRootRef, multiline, disabled, onClick, before, after = /*#__PURE__*/ React.createElement(DropdownIcon, null), selectType = 'default', status, className, autoFocus, ...restProps })=>{
19
+ const rootRef = useExternRef(getRootRef);
17
20
  const { sizeY = 'none' } = useAdaptivity();
18
21
  const title = children || placeholder;
22
+ useAutoFocus(rootRef, autoFocus);
19
23
  return /*#__PURE__*/ React.createElement(FormField, {
20
24
  ...restProps,
21
25
  tabIndex: disabled ? undefined : tabIndex,
22
26
  className: classNames(styles['Select'], sizeY !== SizeType.REGULAR && sizeYClassNames[sizeY], !children && styles['Select--empty'], multiline && styles['Select--multiline'], align === 'center' && styles['Select--align-center'], align === 'right' && styles['Select--align-right'], before && styles['Select--hasBefore'], className),
23
- getRootRef: getRootRef,
27
+ getRootRef: rootRef,
24
28
  onClick: disabled ? undefined : onClick,
25
29
  disabled: disabled,
26
30
  before: before,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/SelectMimicry/SelectMimicry.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { SizeType } from '../../lib/adaptivity';\nimport { getFormFieldModeFromSelectType } from '../../lib/select';\nimport { HasAlign, HasRootRef } from '../../types';\nimport { DropdownIcon } from '../DropdownIcon/DropdownIcon';\nimport { FormField, FormFieldProps } from '../FormField/FormField';\nimport type { SelectType } from '../Select/Select';\nimport { SelectTypography } from '../SelectTypography/SelectTypography';\nimport styles from '../Select/Select.module.css';\n\nconst sizeYClassNames = {\n none: styles['Select--sizeY-none'],\n [SizeType.COMPACT]: styles['Select--sizeY-compact'],\n};\n\nexport interface SelectMimicryProps\n extends React.HTMLAttributes<HTMLElement>,\n HasAlign,\n HasRootRef<HTMLElement>,\n Pick<FormFieldProps, 'before' | 'after' | 'status'> {\n multiline?: boolean;\n disabled?: boolean;\n selectType?: SelectType;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/SelectMimicry\n */\nexport const SelectMimicry = ({\n tabIndex = 0,\n placeholder,\n children,\n align,\n getRootRef,\n multiline,\n disabled,\n onClick,\n before,\n after = <DropdownIcon />,\n selectType = 'default',\n status,\n className,\n ...restProps\n}: SelectMimicryProps) => {\n const { sizeY = 'none' } = useAdaptivity();\n const title = children || placeholder;\n\n return (\n <FormField\n {...restProps}\n tabIndex={disabled ? undefined : tabIndex}\n className={classNames(\n styles['Select'],\n sizeY !== SizeType.REGULAR && sizeYClassNames[sizeY],\n !children && styles['Select--empty'],\n multiline && styles['Select--multiline'],\n align === 'center' && styles['Select--align-center'],\n align === 'right' && styles['Select--align-right'],\n before && styles['Select--hasBefore'],\n className,\n )}\n getRootRef={getRootRef}\n onClick={disabled ? undefined : onClick}\n disabled={disabled}\n before={before}\n after={after}\n mode={getFormFieldModeFromSelectType(selectType)}\n status={status}\n >\n <div className={styles['Select__container']}>\n <SelectTypography selectType={selectType} className={styles['Select__title']}>\n {title}\n </SelectTypography>\n </div>\n </FormField>\n );\n};\n"],"names":["React","classNames","useAdaptivity","SizeType","getFormFieldModeFromSelectType","DropdownIcon","FormField","SelectTypography","styles","sizeYClassNames","none","COMPACT","SelectMimicry","tabIndex","placeholder","children","align","getRootRef","multiline","disabled","onClick","before","after","selectType","status","className","restProps","sizeY","title","undefined","REGULAR","mode","div"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,aAAa,QAAQ,4BAA4B;AAC1D,SAASC,QAAQ,QAAQ,uBAAuB;AAChD,SAASC,8BAA8B,QAAQ,mBAAmB;AAElE,SAASC,YAAY,QAAQ,+BAA+B;AAC5D,SAASC,SAAS,QAAwB,yBAAyB;AAEnE,SAASC,gBAAgB,QAAQ,uCAAuC;AACxE,OAAOC,YAAY,8BAA8B;AAEjD,MAAMC,kBAAkB;IACtBC,MAAMF,MAAM,CAAC,qBAAqB;IAClC,CAACL,SAASQ,OAAO,CAAC,EAAEH,MAAM,CAAC,wBAAwB;AACrD;AAYA;;CAEC,GACD,OAAO,MAAMI,gBAAgB,CAAC,EAC5BC,WAAW,CAAC,EACZC,WAAW,EACXC,QAAQ,EACRC,KAAK,EACLC,UAAU,EACVC,SAAS,EACTC,QAAQ,EACRC,OAAO,EACPC,MAAM,EACNC,sBAAQ,oBAACjB,mBAAe,EACxBkB,aAAa,SAAS,EACtBC,MAAM,EACNC,SAAS,EACT,GAAGC,WACgB;IACnB,MAAM,EAAEC,QAAQ,MAAM,EAAE,GAAGzB;IAC3B,MAAM0B,QAAQb,YAAYD;IAE1B,qBACE,oBAACR;QACE,GAAGoB,SAAS;QACbb,UAAUM,WAAWU,YAAYhB;QACjCY,WAAWxB,WACTO,MAAM,CAAC,SAAS,EAChBmB,UAAUxB,SAAS2B,OAAO,IAAIrB,eAAe,CAACkB,MAAM,EACpD,CAACZ,YAAYP,MAAM,CAAC,gBAAgB,EACpCU,aAAaV,MAAM,CAAC,oBAAoB,EACxCQ,UAAU,YAAYR,MAAM,CAAC,uBAAuB,EACpDQ,UAAU,WAAWR,MAAM,CAAC,sBAAsB,EAClDa,UAAUb,MAAM,CAAC,oBAAoB,EACrCiB;QAEFR,YAAYA;QACZG,SAASD,WAAWU,YAAYT;QAChCD,UAAUA;QACVE,QAAQA;QACRC,OAAOA;QACPS,MAAM3B,+BAA+BmB;QACrCC,QAAQA;qBAER,oBAACQ;QAAIP,WAAWjB,MAAM,CAAC,oBAAoB;qBACzC,oBAACD;QAAiBgB,YAAYA;QAAYE,WAAWjB,MAAM,CAAC,gBAAgB;OACzEoB;AAKX,EAAE"}
1
+ {"version":3,"sources":["../../../../src/components/SelectMimicry/SelectMimicry.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useAutoFocus } from '../../hooks/useAutoFocus';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { SizeType } from '../../lib/adaptivity';\nimport { getFormFieldModeFromSelectType } from '../../lib/select';\nimport { HasAlign, HasRootRef } from '../../types';\nimport { DropdownIcon } from '../DropdownIcon/DropdownIcon';\nimport { FormField, FormFieldProps } from '../FormField/FormField';\nimport type { SelectType } from '../Select/Select';\nimport { SelectTypography } from '../SelectTypography/SelectTypography';\nimport styles from '../Select/Select.module.css';\n\nconst sizeYClassNames = {\n none: styles['Select--sizeY-none'],\n [SizeType.COMPACT]: styles['Select--sizeY-compact'],\n};\n\nexport interface SelectMimicryProps\n extends React.HTMLAttributes<HTMLElement>,\n HasAlign,\n HasRootRef<HTMLElement>,\n Pick<FormFieldProps, 'before' | 'after' | 'status'> {\n multiline?: boolean;\n disabled?: boolean;\n selectType?: SelectType;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/SelectMimicry\n */\nexport const SelectMimicry = ({\n tabIndex = 0,\n placeholder,\n children,\n align,\n getRootRef,\n multiline,\n disabled,\n onClick,\n before,\n after = <DropdownIcon />,\n selectType = 'default',\n status,\n className,\n autoFocus,\n ...restProps\n}: SelectMimicryProps) => {\n const rootRef = useExternRef(getRootRef);\n\n const { sizeY = 'none' } = useAdaptivity();\n const title = children || placeholder;\n\n useAutoFocus(rootRef, autoFocus);\n\n return (\n <FormField\n {...restProps}\n tabIndex={disabled ? undefined : tabIndex}\n className={classNames(\n styles['Select'],\n sizeY !== SizeType.REGULAR && sizeYClassNames[sizeY],\n !children && styles['Select--empty'],\n multiline && styles['Select--multiline'],\n align === 'center' && styles['Select--align-center'],\n align === 'right' && styles['Select--align-right'],\n before && styles['Select--hasBefore'],\n className,\n )}\n getRootRef={rootRef}\n onClick={disabled ? undefined : onClick}\n disabled={disabled}\n before={before}\n after={after}\n mode={getFormFieldModeFromSelectType(selectType)}\n status={status}\n >\n <div className={styles['Select__container']}>\n <SelectTypography selectType={selectType} className={styles['Select__title']}>\n {title}\n </SelectTypography>\n </div>\n </FormField>\n );\n};\n"],"names":["React","classNames","useAdaptivity","useAutoFocus","useExternRef","SizeType","getFormFieldModeFromSelectType","DropdownIcon","FormField","SelectTypography","styles","sizeYClassNames","none","COMPACT","SelectMimicry","tabIndex","placeholder","children","align","getRootRef","multiline","disabled","onClick","before","after","selectType","status","className","autoFocus","restProps","rootRef","sizeY","title","undefined","REGULAR","mode","div"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,aAAa,QAAQ,4BAA4B;AAC1D,SAASC,YAAY,QAAQ,2BAA2B;AACxD,SAASC,YAAY,QAAQ,2BAA2B;AACxD,SAASC,QAAQ,QAAQ,uBAAuB;AAChD,SAASC,8BAA8B,QAAQ,mBAAmB;AAElE,SAASC,YAAY,QAAQ,+BAA+B;AAC5D,SAASC,SAAS,QAAwB,yBAAyB;AAEnE,SAASC,gBAAgB,QAAQ,uCAAuC;AACxE,OAAOC,YAAY,8BAA8B;AAEjD,MAAMC,kBAAkB;IACtBC,MAAMF,MAAM,CAAC,qBAAqB;IAClC,CAACL,SAASQ,OAAO,CAAC,EAAEH,MAAM,CAAC,wBAAwB;AACrD;AAYA;;CAEC,GACD,OAAO,MAAMI,gBAAgB,CAAC,EAC5BC,WAAW,CAAC,EACZC,WAAW,EACXC,QAAQ,EACRC,KAAK,EACLC,UAAU,EACVC,SAAS,EACTC,QAAQ,EACRC,OAAO,EACPC,MAAM,EACNC,sBAAQ,oBAACjB,mBAAe,EACxBkB,aAAa,SAAS,EACtBC,MAAM,EACNC,SAAS,EACTC,SAAS,EACT,GAAGC,WACgB;IACnB,MAAMC,UAAU1B,aAAae;IAE7B,MAAM,EAAEY,QAAQ,MAAM,EAAE,GAAG7B;IAC3B,MAAM8B,QAAQf,YAAYD;IAE1Bb,aAAa2B,SAASF;IAEtB,qBACE,oBAACpB;QACE,GAAGqB,SAAS;QACbd,UAAUM,WAAWY,YAAYlB;QACjCY,WAAW1B,WACTS,MAAM,CAAC,SAAS,EAChBqB,UAAU1B,SAAS6B,OAAO,IAAIvB,eAAe,CAACoB,MAAM,EACpD,CAACd,YAAYP,MAAM,CAAC,gBAAgB,EACpCU,aAAaV,MAAM,CAAC,oBAAoB,EACxCQ,UAAU,YAAYR,MAAM,CAAC,uBAAuB,EACpDQ,UAAU,WAAWR,MAAM,CAAC,sBAAsB,EAClDa,UAAUb,MAAM,CAAC,oBAAoB,EACrCiB;QAEFR,YAAYW;QACZR,SAASD,WAAWY,YAAYX;QAChCD,UAAUA;QACVE,QAAQA;QACRC,OAAOA;QACPW,MAAM7B,+BAA+BmB;QACrCC,QAAQA;qBAER,oBAACU;QAAIT,WAAWjB,MAAM,CAAC,oBAAoB;qBACzC,oBAACD;QAAiBgB,YAAYA;QAAYE,WAAWjB,MAAM,CAAC,gBAAgB;OACzEsB;AAKX,EAAE"}
@@ -61,7 +61,6 @@ const sizeYClassNames = {
61
61
  }, subtitle), badgeAfterSubtitle && /*#__PURE__*/ React.createElement("span", {
62
62
  className: styles['SimpleCell__badge']
63
63
  }, badgeAfterSubtitle)), extraSubtitle && /*#__PURE__*/ React.createElement(Footnote, {
64
- normalize: false,
65
64
  className: classNames(styles['SimpleCell__text'], styles['SimpleCell__extraSubtitle'])
66
65
  }, extraSubtitle)), hasReactNode(indicator) && /*#__PURE__*/ React.createElement(Headline, {
67
66
  Component: "span",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/SimpleCell/SimpleCell.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { SizeType } from '../../lib/adaptivity';\nimport { Platform } from '../../lib/platform';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { HasComponent } from '../../types';\nimport { Tappable, TappableProps } from '../Tappable/Tappable';\nimport { Footnote } from '../Typography/Footnote/Footnote';\nimport { Headline } from '../Typography/Headline/Headline';\nimport { Subhead } from '../Typography/Subhead/Subhead';\nimport { Chevron } from './Chevron/Chevron';\nimport styles from './SimpleCell.module.css';\n\nconst warn = warnOnce('SimpleCell');\n\nconst platformClassNames = {\n ios: classNames(styles['SimpleCell--ios'], 'vkuiInternalSimpleCell--ios'),\n android: styles['SimpleCell--android'],\n vkcom: styles['SimpleCell--vkcom'],\n};\n\nconst sizeYClassNames = {\n none: classNames(styles['SimpleCell--sizeY-none'], 'vkuiInternalSimpleCell--sizeY-none'),\n [SizeType.COMPACT]: classNames(\n styles['SimpleCell--sizeY-compact'],\n 'vkuiInternalSimpleCell--sizeY-compact',\n ),\n [SizeType.REGULAR]: styles['SimpleCell--sizeY-regular'],\n};\n\nexport interface SimpleCellOwnProps extends HasComponent {\n /**\n * Иконка 28 или `<Avatar size={28|32|40|48|72} />`\n */\n before?: React.ReactNode;\n /**\n * Иконка 12 или `<Badge />`. Добавится слева от текста `children`.\n */\n badgeBeforeTitle?: React.ReactNode;\n /**\n * Иконка 12 или `<Badge />`. Добавится справа от текста `children`.\n */\n badgeAfterTitle?: React.ReactNode;\n /**\n * Иконка 12. Добавится слева от текста `subtitle`.\n */\n badgeBeforeSubtitle?: React.ReactNode;\n /**\n * Иконка 12. Добавится справа от текста `subtitle`.\n */\n badgeAfterSubtitle?: React.ReactNode;\n /**\n * Контейнер для текста справа от `children`.\n */\n indicator?: React.ReactNode;\n /**\n * Дополнительная строка текста над `children`.\n */\n subhead?: React.ReactNode;\n /**\n * Дополнительная строка текста под `children`.\n */\n subtitle?: React.ReactNode;\n /**\n * Дополнительная строка текста под `children` и `subtitle`.\n */\n extraSubtitle?: React.ReactNode;\n /**\n * Иконка 24|28 или `<Switch />`. Располагается справа от `indicator`.\n */\n after?: React.ReactNode;\n /**\n * Убирает анимацию нажатия\n */\n disabled?: boolean;\n /**\n * В iOS добавляет chevron справа. Передавать `true`, если предполагается переход при клике по ячейке.\n */\n expandable?: boolean | 'auto' | 'always';\n /**\n * Размер chevron\n */\n chevronSize?: 's' | 'm';\n /**\n * Включает многострочный режим для отображения текста\n */\n multiline?: boolean;\n}\n\nexport interface SimpleCellProps extends SimpleCellOwnProps, TappableProps {}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/SimpleCell\n */\nexport const SimpleCell = ({\n badgeBeforeTitle,\n badgeAfterTitle,\n badgeBeforeSubtitle,\n badgeAfterSubtitle,\n before,\n indicator,\n children,\n after,\n expandable,\n multiline,\n subhead,\n subtitle,\n extraSubtitle,\n className,\n chevronSize = 'm',\n ...restProps\n}: SimpleCellProps) => {\n const platform = usePlatform();\n\n if (process.env.NODE_ENV === 'development' && expandable === true) {\n // TODO [>=6]: Обновить типизацию для expandable свойства\n warn(\n 'Значение true свойства expandable устарело и будет удалено в v6. Используйте expandable=\"auto\"',\n );\n }\n\n const hasChevron =\n expandable === 'always' ||\n ((expandable === true || expandable === 'auto') && platform === Platform.IOS);\n\n const hasAfter = hasReactNode(after) || hasChevron;\n const { sizeY = 'none' } = useAdaptivity();\n\n return (\n <Tappable\n {...restProps}\n className={classNames(\n styles['SimpleCell'],\n 'vkuiInternalSimpleCell',\n platformClassNames.hasOwnProperty(platform)\n ? platformClassNames[platform]\n : platformClassNames.android,\n sizeYClassNames[sizeY],\n multiline && styles['SimpleCell--mult'],\n className,\n )}\n >\n {before}\n <div className={classNames(styles['SimpleCell__main'], 'vkuiInternalSimpleCell__main')}>\n {subhead && (\n <Subhead\n Component=\"span\"\n className={classNames(styles['SimpleCell__text'], styles['SimpleCell__subhead'])}\n >\n {subhead}\n </Subhead>\n )}\n <div className={styles['SimpleCell__content']}>\n {badgeBeforeTitle && (\n <span className={styles['SimpleCell__badge']}>{badgeBeforeTitle}</span>\n )}\n <Headline Component=\"span\" className={styles['SimpleCell__children']} weight=\"3\">\n {children}\n </Headline>\n {hasReactNode(badgeAfterTitle) && (\n <span className={styles['SimpleCell__badge']}>{badgeAfterTitle}</span>\n )}\n </div>\n {subtitle && (\n <div className={styles['SimpleCell__content']}>\n {badgeBeforeSubtitle && (\n <span className={styles['SimpleCell__badge']}>{badgeBeforeSubtitle}</span>\n )}\n <Footnote\n normalize={false}\n className={classNames(styles['SimpleCell__text'], styles['SimpleCell__subtitle'])}\n >\n {subtitle}\n </Footnote>\n {badgeAfterSubtitle && (\n <span className={styles['SimpleCell__badge']}>{badgeAfterSubtitle}</span>\n )}\n </div>\n )}\n {extraSubtitle && (\n <Footnote\n normalize={false}\n className={classNames(styles['SimpleCell__text'], styles['SimpleCell__extraSubtitle'])}\n >\n {extraSubtitle}\n </Footnote>\n )}\n </div>\n {hasReactNode(indicator) && (\n <Headline Component=\"span\" weight=\"3\" className={styles['SimpleCell__indicator']}>\n {indicator}\n </Headline>\n )}\n {hasAfter && (\n <div className={classNames(styles['SimpleCell__after'], 'vkuiInternalSimpleCell__after')}>\n {after}\n {hasChevron && (\n <Chevron size={chevronSize} className={styles['SimpleCell__chevronIcon']} />\n )}\n </div>\n )}\n </Tappable>\n );\n};\n"],"names":["React","classNames","hasReactNode","useAdaptivity","usePlatform","SizeType","Platform","warnOnce","Tappable","Footnote","Headline","Subhead","Chevron","styles","warn","platformClassNames","ios","android","vkcom","sizeYClassNames","none","COMPACT","REGULAR","SimpleCell","badgeBeforeTitle","badgeAfterTitle","badgeBeforeSubtitle","badgeAfterSubtitle","before","indicator","children","after","expandable","multiline","subhead","subtitle","extraSubtitle","className","chevronSize","restProps","platform","process","env","NODE_ENV","hasChevron","IOS","hasAfter","sizeY","hasOwnProperty","div","Component","span","weight","normalize","size"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/components/SimpleCell/SimpleCell.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { SizeType } from '../../lib/adaptivity';\nimport { Platform } from '../../lib/platform';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { HasComponent } from '../../types';\nimport { Tappable, TappableProps } from '../Tappable/Tappable';\nimport { Footnote } from '../Typography/Footnote/Footnote';\nimport { Headline } from '../Typography/Headline/Headline';\nimport { Subhead } from '../Typography/Subhead/Subhead';\nimport { Chevron } from './Chevron/Chevron';\nimport styles from './SimpleCell.module.css';\n\nconst warn = warnOnce('SimpleCell');\n\nconst platformClassNames = {\n ios: classNames(styles['SimpleCell--ios'], 'vkuiInternalSimpleCell--ios'),\n android: styles['SimpleCell--android'],\n vkcom: styles['SimpleCell--vkcom'],\n};\n\nconst sizeYClassNames = {\n none: classNames(styles['SimpleCell--sizeY-none'], 'vkuiInternalSimpleCell--sizeY-none'),\n [SizeType.COMPACT]: classNames(\n styles['SimpleCell--sizeY-compact'],\n 'vkuiInternalSimpleCell--sizeY-compact',\n ),\n [SizeType.REGULAR]: styles['SimpleCell--sizeY-regular'],\n};\n\nexport interface SimpleCellOwnProps extends HasComponent {\n /**\n * Иконка 28 или `<Avatar size={28|32|40|48|72} />`\n */\n before?: React.ReactNode;\n /**\n * Иконка 12 или `<Badge />`. Добавится слева от текста `children`.\n */\n badgeBeforeTitle?: React.ReactNode;\n /**\n * Иконка 12 или `<Badge />`. Добавится справа от текста `children`.\n */\n badgeAfterTitle?: React.ReactNode;\n /**\n * Иконка 12. Добавится слева от текста `subtitle`.\n */\n badgeBeforeSubtitle?: React.ReactNode;\n /**\n * Иконка 12. Добавится справа от текста `subtitle`.\n */\n badgeAfterSubtitle?: React.ReactNode;\n /**\n * Контейнер для текста справа от `children`.\n */\n indicator?: React.ReactNode;\n /**\n * Дополнительная строка текста над `children`.\n */\n subhead?: React.ReactNode;\n /**\n * Дополнительная строка текста под `children`.\n */\n subtitle?: React.ReactNode;\n /**\n * Дополнительная строка текста под `children` и `subtitle`.\n */\n extraSubtitle?: React.ReactNode;\n /**\n * Иконка 24|28 или `<Switch />`. Располагается справа от `indicator`.\n */\n after?: React.ReactNode;\n /**\n * Убирает анимацию нажатия\n */\n disabled?: boolean;\n /**\n * В iOS добавляет chevron справа. Передавать `true`, если предполагается переход при клике по ячейке.\n */\n expandable?: boolean | 'auto' | 'always';\n /**\n * Размер chevron\n */\n chevronSize?: 's' | 'm';\n /**\n * Включает многострочный режим для отображения текста\n */\n multiline?: boolean;\n}\n\nexport interface SimpleCellProps extends SimpleCellOwnProps, TappableProps {}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/SimpleCell\n */\nexport const SimpleCell = ({\n badgeBeforeTitle,\n badgeAfterTitle,\n badgeBeforeSubtitle,\n badgeAfterSubtitle,\n before,\n indicator,\n children,\n after,\n expandable,\n multiline,\n subhead,\n subtitle,\n extraSubtitle,\n className,\n chevronSize = 'm',\n ...restProps\n}: SimpleCellProps) => {\n const platform = usePlatform();\n\n if (process.env.NODE_ENV === 'development' && expandable === true) {\n // TODO [>=6]: Обновить типизацию для expandable свойства\n warn(\n 'Значение true свойства expandable устарело и будет удалено в v6. Используйте expandable=\"auto\"',\n );\n }\n\n const hasChevron =\n expandable === 'always' ||\n ((expandable === true || expandable === 'auto') && platform === Platform.IOS);\n\n const hasAfter = hasReactNode(after) || hasChevron;\n const { sizeY = 'none' } = useAdaptivity();\n\n return (\n <Tappable\n {...restProps}\n className={classNames(\n styles['SimpleCell'],\n 'vkuiInternalSimpleCell',\n platformClassNames.hasOwnProperty(platform)\n ? platformClassNames[platform]\n : platformClassNames.android,\n sizeYClassNames[sizeY],\n multiline && styles['SimpleCell--mult'],\n className,\n )}\n >\n {before}\n <div className={classNames(styles['SimpleCell__main'], 'vkuiInternalSimpleCell__main')}>\n {subhead && (\n <Subhead\n Component=\"span\"\n className={classNames(styles['SimpleCell__text'], styles['SimpleCell__subhead'])}\n >\n {subhead}\n </Subhead>\n )}\n <div className={styles['SimpleCell__content']}>\n {badgeBeforeTitle && (\n <span className={styles['SimpleCell__badge']}>{badgeBeforeTitle}</span>\n )}\n <Headline Component=\"span\" className={styles['SimpleCell__children']} weight=\"3\">\n {children}\n </Headline>\n {hasReactNode(badgeAfterTitle) && (\n <span className={styles['SimpleCell__badge']}>{badgeAfterTitle}</span>\n )}\n </div>\n {subtitle && (\n <div className={styles['SimpleCell__content']}>\n {badgeBeforeSubtitle && (\n <span className={styles['SimpleCell__badge']}>{badgeBeforeSubtitle}</span>\n )}\n <Footnote\n normalize={false}\n className={classNames(styles['SimpleCell__text'], styles['SimpleCell__subtitle'])}\n >\n {subtitle}\n </Footnote>\n {badgeAfterSubtitle && (\n <span className={styles['SimpleCell__badge']}>{badgeAfterSubtitle}</span>\n )}\n </div>\n )}\n {extraSubtitle && (\n <Footnote\n className={classNames(styles['SimpleCell__text'], styles['SimpleCell__extraSubtitle'])}\n >\n {extraSubtitle}\n </Footnote>\n )}\n </div>\n {hasReactNode(indicator) && (\n <Headline Component=\"span\" weight=\"3\" className={styles['SimpleCell__indicator']}>\n {indicator}\n </Headline>\n )}\n {hasAfter && (\n <div className={classNames(styles['SimpleCell__after'], 'vkuiInternalSimpleCell__after')}>\n {after}\n {hasChevron && (\n <Chevron size={chevronSize} className={styles['SimpleCell__chevronIcon']} />\n )}\n </div>\n )}\n </Tappable>\n );\n};\n"],"names":["React","classNames","hasReactNode","useAdaptivity","usePlatform","SizeType","Platform","warnOnce","Tappable","Footnote","Headline","Subhead","Chevron","styles","warn","platformClassNames","ios","android","vkcom","sizeYClassNames","none","COMPACT","REGULAR","SimpleCell","badgeBeforeTitle","badgeAfterTitle","badgeBeforeSubtitle","badgeAfterSubtitle","before","indicator","children","after","expandable","multiline","subhead","subtitle","extraSubtitle","className","chevronSize","restProps","platform","process","env","NODE_ENV","hasChevron","IOS","hasAfter","sizeY","hasOwnProperty","div","Component","span","weight","normalize","size"],"mappings":"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"}
@@ -31,7 +31,7 @@
31
31
 
32
32
  .Snackbar__in {
33
33
  padding: 8px;
34
- animation: vkui-animation-snackbar-intro-vertical 340ms var(--vkui--animation_easing_platform);
34
+ animation: animation-snackbar-intro-vertical 340ms var(--vkui--animation_easing_platform);
35
35
  }
36
36
 
37
37
  .Snackbar--closing .Snackbar__in {
@@ -125,7 +125,7 @@
125
125
 
126
126
  .Snackbar--desktop .Snackbar__in {
127
127
  padding: 12px;
128
- animation-name: vkui-animation-snackbar-intro-horizontal;
128
+ animation-name: animation-snackbar-intro-horizontal;
129
129
  }
130
130
 
131
131
  .Snackbar--desktop.Snackbar--closing .Snackbar__in {
@@ -144,7 +144,7 @@
144
144
  * Animations
145
145
  */
146
146
 
147
- @keyframes vkui-animation-snackbar-intro-vertical {
147
+ @keyframes animation-snackbar-intro-vertical {
148
148
  from {
149
149
  transform: translate3d(0, 140%, 0);
150
150
  }
@@ -154,7 +154,7 @@
154
154
  }
155
155
  }
156
156
 
157
- @keyframes vkui-animation-snackbar-intro-horizontal {
157
+ @keyframes animation-snackbar-intro-horizontal {
158
158
  from {
159
159
  transform: translate3d(-140%, 0, 0);
160
160
  }
@@ -106,7 +106,7 @@ https://github.com/VKCOM/VKUI/pull/3641
106
106
  content: '';
107
107
  border-radius: 50%;
108
108
  background: var(--vkui--color_transparent--active);
109
- animation: vkui-animation-wave 0.3s var(--vkui--animation_easing_platform);
109
+ animation: animation-wave 0.3s var(--vkui--animation_easing_platform);
110
110
  }
111
111
 
112
112
  /**
@@ -127,7 +127,7 @@ https://github.com/VKCOM/VKUI/pull/3641
127
127
  * Animations
128
128
  */
129
129
 
130
- @keyframes vkui-animation-wave {
130
+ @keyframes animation-wave {
131
131
  0% {
132
132
  transform: scale(1);
133
133
  opacity: 1;
@@ -4,7 +4,7 @@
4
4
  padding: 8px 12px 9px;
5
5
  color: var(--vkui--color_text_primary);
6
6
  box-shadow: var(--vkui--elevation3);
7
- animation: vkui-texttooltip-fadein 0.2s ease;
7
+ animation: texttooltip-fade-in 0.2s ease;
8
8
  }
9
9
 
10
10
  .TextTooltip__arrow {
@@ -47,7 +47,7 @@
47
47
  color: var(--vkui--color_background_modal_inverse);
48
48
  }
49
49
 
50
- @keyframes vkui-texttooltip-fadein {
50
+ @keyframes texttooltip-fade-in {
51
51
  from {
52
52
  opacity: 0;
53
53
  }
@@ -114,10 +114,10 @@ const warn = warnOnce('View');
114
114
  ]);
115
115
  const transitionEndHandler = React.useCallback((e)=>{
116
116
  if ((!e || [
117
- styles['vkui-animation-ios-next-forward'],
118
- styles['vkui-animation-ios-prev-back'],
119
- styles['vkui-animation-view-next-forward'],
120
- styles['vkui-animation-view-prev-back']
117
+ styles['animation-ios-next-forward'],
118
+ styles['animation-ios-prev-back'],
119
+ styles['animation-view-next-forward'],
120
+ styles['animation-view-prev-back']
121
121
  ].includes(e.animationName)) && prevPanel !== null) {
122
122
  flushTransition(prevPanel, Boolean(isBack));
123
123
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/View/View.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, noop } from '@vkontakte/vkjs';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { usePrevious } from '../../hooks/usePrevious';\nimport { useTimeout } from '../../hooks/useTimeout';\nimport { useWaitTransitionFinish } from '../../hooks/useWaitTransitionFinish';\nimport { blurActiveElement, canUseDOM, useDOM } from '../../lib/dom';\nimport { getNavId, NavIdProps } from '../../lib/getNavId';\nimport { Platform } from '../../lib/platform';\nimport { animationEvent } from '../../lib/supportEvents';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { useScroll } from '../AppRoot/ScrollContext';\nimport { useConfigProvider } from '../ConfigProvider/ConfigProviderContext';\nimport { NavTransitionProvider } from '../NavTransitionContext/NavTransitionContext';\nimport { useSplitCol } from '../SplitCol/SplitColContext';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport { swipeBackExcluded } from './utils';\nimport styles from './View.module.css';\n\nconst SWIPE_BACK_AREA = 70;\n\nenum SwipeBackResults {\n fail = 1,\n success,\n}\n\ninterface Scrolls {\n [index: string]: number | undefined;\n}\n\ninterface ViewsScrolls {\n [index: string]: Scrolls;\n}\n\nexport let scrollsCache: ViewsScrolls = {};\n\nexport interface ViewProps extends React.HTMLAttributes<HTMLElement>, NavIdProps {\n activePanel: string;\n onTransition?(params: { isBack: boolean; from: string; to: string }): void;\n /**\n * callback свайпа назад\n */\n onSwipeBack?(): void;\n /**\n * callback начала анимации свайпа назад.\n *\n * Чтобы остановить свайп назад, возвращайте `\"prevent\"`.\n */\n onSwipeBackStart?(activePanel: string | null): void | 'prevent';\n /**\n * callback завершения анимации отмененного пользователем свайпа\n */\n onSwipeBackCancel?(): void;\n history?: string[];\n\n children: React.ReactElement | Iterable<React.ReactElement>;\n}\n\nexport interface ViewState {\n animated: boolean;\n\n visiblePanels: string[];\n activePanel: string | null;\n isBack: boolean | undefined;\n prevPanel: string | null;\n nextPanel: string | null;\n\n swipingBack: boolean;\n swipeBackStartX: number;\n swipeBackShift: number;\n swipeBackNextPanel: string | null;\n swipeBackPrevPanel: string | null;\n swipeBackResult: SwipeBackResults | null;\n\n browserSwipe: boolean;\n}\n\nconst warn = warnOnce('View');\n\n/**\n * @see https://vkcom.github.io/VKUI/#/View\n */\nexport const View = ({\n activePanel: activePanelProp,\n history,\n nav,\n onTransition,\n onSwipeBack,\n onSwipeBackStart,\n onSwipeBackCancel: onSwipeBackCancelProp,\n children,\n className,\n ...restProps\n}: ViewProps) => {\n const scrolls = React.useRef(scrollsCache[getNavId({ nav, id: restProps.id }) as string] || {});\n const afterTransition = React.useRef(noop);\n\n React.useEffect(() => () => {\n const id = getNavId({ nav, id: restProps.id });\n if (id) {\n scrollsCache[id] = scrolls.current;\n }\n });\n\n const panelNodes = React.useRef<{ [id: string]: HTMLDivElement | null }>({});\n\n const { window, document } = useDOM();\n const scroll = useScroll();\n const configProvider = useConfigProvider();\n const splitCol = useSplitCol();\n const platform = usePlatform();\n\n const [animated, setAnimated] = React.useState(false);\n\n const [visiblePanels, setVisiblePanels] = React.useState([activePanelProp]);\n const [activePanel, setActivePanel] = React.useState<string | null>(activePanelProp);\n const [isBack, setIsBack] = React.useState<boolean | undefined>(undefined);\n const [prevPanel, setPrevPanel] = React.useState<string | null>(null);\n const [nextPanel, setNextPanel] = React.useState<string | null>(null);\n\n const [swipingBack, setSwipingBack] = React.useState<boolean>(false);\n const [swipeBackPrevented, setSwipeBackPrevented] = React.useState<boolean>(false);\n const [swipeBackStartX, setSwipeBackStartX] = React.useState<number>(0);\n const [swipeBackShift, setSwipeBackShift] = React.useState<number>(0);\n const [swipeBackNextPanel, setSwipeBackNextPanel] = React.useState<string | null>(null);\n const [swipeBackPrevPanel, setSwipeBackPrevPanel] = React.useState<string | null>(null);\n const [swipeBackResult, setSwipeBackResult] = React.useState<SwipeBackResults | null>(null);\n\n const [browserSwipe, setBrowserSwipe] = React.useState(false);\n\n const prevActivePanel = usePrevious(activePanelProp);\n const prevSwipingBack = usePrevious(swipingBack);\n const prevBrowserSwipe = usePrevious(browserSwipe);\n const prevSwipeBackResult = usePrevious(swipeBackResult);\n const prevSwipeBackPrevPanel = usePrevious(swipeBackPrevPanel);\n const prevOnTransition = usePrevious(onTransition);\n\n const panels = (React.Children.toArray(children) as React.ReactElement[]).filter(\n (panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n\n return (\n (panelId !== undefined && visiblePanels.includes(panelId)) ||\n panelId === swipeBackPrevPanel ||\n panelId === swipeBackNextPanel\n );\n },\n );\n\n const disableAnimation =\n configProvider?.transitionMotionEnabled === false ||\n !splitCol?.animate ||\n platform === Platform.VKCOM;\n\n const pickPanel = (id: string | null) => {\n if (id === null) {\n return null;\n }\n return panelNodes.current[id];\n };\n\n const flushTransition = React.useCallback(\n (prevPanel: string, isBackTransition: boolean) => {\n if (isBackTransition) {\n scrolls.current[prevPanel] = 0;\n }\n setPrevPanel(null);\n setNextPanel(null);\n setVisiblePanels([activePanelProp]);\n setActivePanel(activePanelProp);\n setAnimated(false);\n setIsBack(undefined);\n\n afterTransition.current = () => {\n scroll?.scrollTo(0, isBackTransition ? scrolls.current[activePanelProp] : 0);\n onTransition &&\n onTransition({\n isBack: isBackTransition,\n from: prevPanel,\n to: activePanelProp,\n });\n };\n },\n [activePanelProp, onTransition, scroll],\n );\n\n useIsomorphicLayoutEffect(() => {\n afterTransition.current();\n afterTransition.current = noop;\n }, [afterTransition.current]);\n\n const transitionEndHandler = React.useCallback(\n (e?: React.AnimationEvent): void => {\n if (\n (!e ||\n [\n styles['vkui-animation-ios-next-forward'],\n styles['vkui-animation-ios-prev-back'],\n styles['vkui-animation-view-next-forward'],\n styles['vkui-animation-view-prev-back'],\n ].includes(e.animationName)) &&\n prevPanel !== null\n ) {\n flushTransition(prevPanel, Boolean(isBack));\n }\n },\n [flushTransition, isBack, prevPanel],\n );\n\n const { waitTransitionFinish } = useWaitTransitionFinish();\n const animationFinishTimeout = useTimeout(\n transitionEndHandler,\n platform === Platform.IOS ? 600 : 300,\n );\n\n const onSwipeBackSuccess = React.useCallback(() => {\n onSwipeBack && onSwipeBack();\n }, [onSwipeBack]);\n\n const onSwipeBackCancel = React.useCallback(() => {\n onSwipeBackCancelProp && onSwipeBackCancelProp();\n setSwipeBackPrevPanel(null);\n setSwipeBackNextPanel(null);\n setSwipingBack(false);\n setSwipeBackResult(null);\n setSwipeBackStartX(0);\n setSwipeBackShift(0);\n }, [onSwipeBackCancelProp]);\n\n const swipingBackTransitionEndHandler = React.useCallback(\n (e?: TransitionEvent): void => {\n // indexOf because of vendor prefixes in old browsers\n if (\n !e ||\n (e?.propertyName.includes('transform') && e?.target === pickPanel(swipeBackNextPanel))\n ) {\n switch (swipeBackResult) {\n case SwipeBackResults.fail:\n onSwipeBackCancel();\n break;\n case SwipeBackResults.success:\n onSwipeBackSuccess();\n }\n }\n },\n [onSwipeBackCancel, onSwipeBackSuccess, swipeBackNextPanel, swipeBackResult],\n );\n\n const onMoveX = (event: TouchEvent): void => {\n if (\n platform !== Platform.IOS ||\n swipeBackPrevented ||\n swipeBackExcluded(event) ||\n disableAnimation\n ) {\n return;\n }\n\n if (!configProvider?.isWebView) {\n if (\n (event.startX <= SWIPE_BACK_AREA || event.startX >= window!.innerWidth - SWIPE_BACK_AREA) &&\n !browserSwipe\n ) {\n setBrowserSwipe(true);\n }\n\n return;\n }\n\n if (!onSwipeBack || (animated && event.startX <= SWIPE_BACK_AREA)) {\n return;\n }\n\n if (!swipingBack && event.startX <= SWIPE_BACK_AREA && history && history.length > 1) {\n // Начался свайп назад\n if (onSwipeBackStart) {\n const payload = onSwipeBackStart(activePanel);\n if (payload === 'prevent') {\n setSwipeBackPrevented(true);\n return;\n }\n }\n\n if (activePanel !== null) {\n // Note: вызываем закрытие клавиатуры. В iOS это нативное поведение при свайпе.\n blurActiveElement(document);\n scrolls.current[activePanel] = scroll?.getScroll().y;\n }\n\n setSwipingBack(true);\n setSwipeBackStartX(event.startX);\n setSwipeBackPrevPanel(activePanel);\n setSwipeBackNextPanel(history.slice(-2)[0]);\n }\n\n if (swipingBack) {\n let swipeBackShift = 0;\n if (event.shiftX < 0) {\n swipeBackShift = 0;\n } else if (event.shiftX > window!.innerWidth - swipeBackStartX) {\n swipeBackShift = window!.innerWidth;\n } else {\n swipeBackShift = event.shiftX;\n }\n setSwipeBackShift(swipeBackShift);\n }\n };\n\n const onEnd = React.useCallback(\n (event: TouchEvent): void => {\n if (swipingBack) {\n const speed = (swipeBackShift / event.duration) * 1000;\n if (swipeBackShift === 0) {\n onSwipeBackCancel();\n } else if (swipeBackShift >= (window!.innerWidth ?? 0)) {\n onSwipeBackSuccess();\n } else if (speed > 250 || swipeBackStartX + swipeBackShift > window!.innerWidth / 2) {\n setSwipeBackResult(SwipeBackResults.success);\n } else {\n setSwipeBackResult(SwipeBackResults.fail);\n }\n }\n if (swipeBackPrevented) {\n setSwipeBackPrevented(false);\n }\n },\n [\n onSwipeBackCancel,\n onSwipeBackSuccess,\n swipeBackShift,\n swipeBackStartX,\n swipingBack,\n swipeBackPrevented,\n window,\n ],\n );\n\n const calcPanelSwipeStyles = (panelId: string | undefined): React.CSSProperties => {\n if (!canUseDOM || !window) {\n return {};\n }\n\n const isPrev = panelId === swipeBackPrevPanel;\n const isNext = panelId === swipeBackNextPanel;\n\n if ((!isPrev && !isNext) || swipeBackResult) {\n return {};\n }\n\n let prevPanelTranslate = `${swipeBackShift}px`;\n let nextPanelTranslate = `${-50 + (swipeBackShift * 100) / window.innerWidth / 2}%`;\n let prevPanelShadow = (0.3 * (window.innerWidth - swipeBackShift)) / window.innerWidth;\n\n if (swipeBackResult) {\n return isPrev ? { boxShadow: `-2px 0 12px rgba(0, 0, 0, ${prevPanelShadow})` } : {};\n }\n\n if (isNext) {\n return {\n transform: `translate3d(${nextPanelTranslate}, 0, 0)`,\n WebkitTransform: `translate3d(${nextPanelTranslate}, 0, 0)`,\n };\n }\n if (isPrev) {\n return {\n transform: `translate3d(${prevPanelTranslate}, 0, 0)`,\n WebkitTransform: `translate3d(${prevPanelTranslate}, 0, 0)`,\n boxShadow: `-2px 0 12px rgba(0, 0, 0, ${prevPanelShadow})`,\n };\n }\n\n return {};\n };\n\n React.useEffect(() => {\n // Нужен переход\n if (\n prevActivePanel &&\n prevActivePanel !== activePanelProp &&\n !prevSwipingBack &&\n !prevBrowserSwipe\n ) {\n const firstLayerId = (React.Children.toArray(children) as React.ReactElement[])\n .map((panel) => getNavId(panel.props, warn))\n .find((id) => id === prevActivePanel || id === activePanelProp);\n\n const isBackTransition = firstLayerId === activePanelProp;\n scrolls.current[prevActivePanel] = scroll?.getScroll().y;\n\n if (disableAnimation) {\n flushTransition(prevActivePanel, isBackTransition);\n } else {\n blurActiveElement(document);\n\n setVisiblePanels([prevActivePanel, activePanelProp]);\n setPrevPanel(prevActivePanel);\n setNextPanel(activePanelProp);\n setActivePanel(null);\n setAnimated(true);\n setIsBack(isBackTransition);\n\n // Фолбек анимации перехода\n if (!animationEvent.supported) {\n animationFinishTimeout.set();\n }\n }\n }\n\n // Закончилась анимация свайпа назад\n if (prevActivePanel && prevActivePanel !== activePanelProp && prevSwipingBack) {\n const nextPanel = activePanelProp;\n const prevPanel = prevActivePanel;\n if (prevSwipeBackPrevPanel) {\n scrolls.current[prevSwipeBackPrevPanel] = 0;\n }\n\n setSwipeBackPrevPanel(null);\n setSwipeBackNextPanel(null);\n setSwipingBack(false);\n setSwipeBackResult(null);\n setSwipeBackStartX(0);\n setSwipeBackShift(0);\n setActivePanel(nextPanel);\n setVisiblePanels([nextPanel]);\n\n afterTransition.current = () => {\n if (nextPanel !== null) {\n scroll?.scrollTo(0, scrolls.current[nextPanel]);\n }\n prevOnTransition &&\n prevOnTransition({\n isBack: true,\n from: prevPanel,\n to: nextPanel,\n });\n };\n }\n\n // Началась анимация завершения свайпа назад.\n if (!prevSwipeBackResult && swipeBackResult) {\n waitTransitionFinish(\n pickPanel(swipeBackNextPanel),\n swipingBackTransitionEndHandler,\n platform === Platform.IOS ? 600 : 300,\n );\n }\n\n // Если свайп назад отменился (когда пользователь недостаточно сильно свайпнул)\n if (prevSwipeBackResult === SwipeBackResults.fail && !swipeBackResult && activePanel !== null) {\n scroll?.scrollTo(0, scrolls.current[activePanel]);\n }\n\n // Закончился Safari свайп\n if (prevActivePanel !== activePanelProp && browserSwipe) {\n setBrowserSwipe(false);\n setNextPanel(null);\n setPrevPanel(null);\n setAnimated(false);\n setVisiblePanels([activePanelProp]);\n setActivePanel(activePanelProp);\n }\n }, [\n activePanelProp,\n activePanel,\n animationFinishTimeout,\n browserSwipe,\n children,\n disableAnimation,\n document,\n flushTransition,\n onSwipeBackStart,\n panels,\n platform,\n prevActivePanel,\n prevBrowserSwipe,\n prevOnTransition,\n prevSwipeBackPrevPanel,\n prevSwipeBackResult,\n prevSwipingBack,\n scroll,\n swipeBackNextPanel,\n swipeBackResult,\n swipingBack,\n swipingBackTransitionEndHandler,\n waitTransitionFinish,\n ]);\n\n return (\n <Touch\n Component=\"section\"\n {...restProps}\n className={classNames(\n styles['View'],\n platform === Platform.IOS && classNames(styles['View--ios'], 'vkuiInternalView--ios'),\n !disableAnimation && animated && styles['View--animated'],\n !disableAnimation && swipingBack && styles['View--swiping-back'],\n disableAnimation && styles['View--no-motion'],\n className,\n )}\n onMoveX={onMoveX}\n onEnd={onEnd}\n >\n <div className={styles['View__panels']}>\n {panels.map((panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n const isPrev = panelId === prevPanel || panelId === swipeBackPrevPanel;\n const isTransitionTarget = animated && panelId === (isBack ? prevPanel : nextPanel);\n const compensateScroll =\n isPrev || panelId === swipeBackNextPanel || (panelId === nextPanel && isBack);\n\n return (\n <div\n className={classNames(\n styles['View__panel'],\n panelId === activePanel && styles['View__panel--active'],\n panelId === prevPanel && styles['View__panel--prev'],\n panelId === nextPanel && styles['View__panel--next'],\n panelId === swipeBackPrevPanel && styles['View__panel--swipe-back-prev'],\n panelId === swipeBackNextPanel && styles['View__panel--swipe-back-next'],\n swipeBackResult === SwipeBackResults.success &&\n styles['View__panel--swipe-back-success'],\n swipeBackResult === SwipeBackResults.fail &&\n styles['View__panel--swipe-back-failed'],\n )}\n onAnimationEnd={isTransitionTarget ? transitionEndHandler : undefined}\n ref={(el) => panelId !== undefined && (panelNodes.current[panelId] = el)}\n style={calcPanelSwipeStyles(panelId)}\n key={panelId}\n >\n <div\n className={styles['View__panel-in']}\n style={{\n marginTop: compensateScroll ? -(scrolls.current[panelId] ?? 0) : undefined,\n }}\n >\n <NavTransitionProvider\n entering={panelId === nextPanel || panelId === swipeBackNextPanel}\n >\n {panel}\n </NavTransitionProvider>\n </div>\n </div>\n );\n })}\n </div>\n </Touch>\n );\n};\n"],"names":["React","classNames","noop","usePlatform","usePrevious","useTimeout","useWaitTransitionFinish","blurActiveElement","canUseDOM","useDOM","getNavId","Platform","animationEvent","useIsomorphicLayoutEffect","warnOnce","useScroll","useConfigProvider","NavTransitionProvider","useSplitCol","Touch","swipeBackExcluded","styles","SWIPE_BACK_AREA","SwipeBackResults","fail","success","scrollsCache","warn","View","activePanel","activePanelProp","history","nav","onTransition","onSwipeBack","onSwipeBackStart","onSwipeBackCancel","onSwipeBackCancelProp","children","className","restProps","scrolls","useRef","id","afterTransition","useEffect","current","panelNodes","window","document","scroll","configProvider","splitCol","platform","animated","setAnimated","useState","visiblePanels","setVisiblePanels","setActivePanel","isBack","setIsBack","undefined","prevPanel","setPrevPanel","nextPanel","setNextPanel","swipingBack","setSwipingBack","swipeBackPrevented","setSwipeBackPrevented","swipeBackStartX","setSwipeBackStartX","swipeBackShift","setSwipeBackShift","swipeBackNextPanel","setSwipeBackNextPanel","swipeBackPrevPanel","setSwipeBackPrevPanel","swipeBackResult","setSwipeBackResult","browserSwipe","setBrowserSwipe","prevActivePanel","prevSwipingBack","prevBrowserSwipe","prevSwipeBackResult","prevSwipeBackPrevPanel","prevOnTransition","panels","Children","toArray","filter","panel","panelId","props","includes","disableAnimation","transitionMotionEnabled","animate","VKCOM","pickPanel","flushTransition","useCallback","isBackTransition","scrollTo","from","to","transitionEndHandler","e","animationName","Boolean","waitTransitionFinish","animationFinishTimeout","IOS","onSwipeBackSuccess","swipingBackTransitionEndHandler","propertyName","target","onMoveX","event","isWebView","startX","innerWidth","length","payload","getScroll","y","slice","shiftX","onEnd","speed","duration","calcPanelSwipeStyles","isPrev","isNext","prevPanelTranslate","nextPanelTranslate","prevPanelShadow","boxShadow","transform","WebkitTransform","firstLayerId","map","find","supported","set","Component","div","isTransitionTarget","compensateScroll","onAnimationEnd","ref","el","style","key","marginTop","entering"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/components/View/View.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, noop } from '@vkontakte/vkjs';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { usePrevious } from '../../hooks/usePrevious';\nimport { useTimeout } from '../../hooks/useTimeout';\nimport { useWaitTransitionFinish } from '../../hooks/useWaitTransitionFinish';\nimport { blurActiveElement, canUseDOM, useDOM } from '../../lib/dom';\nimport { getNavId, NavIdProps } from '../../lib/getNavId';\nimport { Platform } from '../../lib/platform';\nimport { animationEvent } from '../../lib/supportEvents';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { useScroll } from '../AppRoot/ScrollContext';\nimport { useConfigProvider } from '../ConfigProvider/ConfigProviderContext';\nimport { NavTransitionProvider } from '../NavTransitionContext/NavTransitionContext';\nimport { useSplitCol } from '../SplitCol/SplitColContext';\nimport { Touch, TouchEvent } from '../Touch/Touch';\nimport { swipeBackExcluded } from './utils';\nimport styles from './View.module.css';\n\nconst SWIPE_BACK_AREA = 70;\n\nenum SwipeBackResults {\n fail = 1,\n success,\n}\n\ninterface Scrolls {\n [index: string]: number | undefined;\n}\n\ninterface ViewsScrolls {\n [index: string]: Scrolls;\n}\n\nexport let scrollsCache: ViewsScrolls = {};\n\nexport interface ViewProps extends React.HTMLAttributes<HTMLElement>, NavIdProps {\n activePanel: string;\n onTransition?(params: { isBack: boolean; from: string; to: string }): void;\n /**\n * callback свайпа назад\n */\n onSwipeBack?(): void;\n /**\n * callback начала анимации свайпа назад.\n *\n * Чтобы остановить свайп назад, возвращайте `\"prevent\"`.\n */\n onSwipeBackStart?(activePanel: string | null): void | 'prevent';\n /**\n * callback завершения анимации отмененного пользователем свайпа\n */\n onSwipeBackCancel?(): void;\n history?: string[];\n\n children: React.ReactElement | Iterable<React.ReactElement>;\n}\n\nexport interface ViewState {\n animated: boolean;\n\n visiblePanels: string[];\n activePanel: string | null;\n isBack: boolean | undefined;\n prevPanel: string | null;\n nextPanel: string | null;\n\n swipingBack: boolean;\n swipeBackStartX: number;\n swipeBackShift: number;\n swipeBackNextPanel: string | null;\n swipeBackPrevPanel: string | null;\n swipeBackResult: SwipeBackResults | null;\n\n browserSwipe: boolean;\n}\n\nconst warn = warnOnce('View');\n\n/**\n * @see https://vkcom.github.io/VKUI/#/View\n */\nexport const View = ({\n activePanel: activePanelProp,\n history,\n nav,\n onTransition,\n onSwipeBack,\n onSwipeBackStart,\n onSwipeBackCancel: onSwipeBackCancelProp,\n children,\n className,\n ...restProps\n}: ViewProps) => {\n const scrolls = React.useRef(scrollsCache[getNavId({ nav, id: restProps.id }) as string] || {});\n const afterTransition = React.useRef(noop);\n\n React.useEffect(() => () => {\n const id = getNavId({ nav, id: restProps.id });\n if (id) {\n scrollsCache[id] = scrolls.current;\n }\n });\n\n const panelNodes = React.useRef<{ [id: string]: HTMLDivElement | null }>({});\n\n const { window, document } = useDOM();\n const scroll = useScroll();\n const configProvider = useConfigProvider();\n const splitCol = useSplitCol();\n const platform = usePlatform();\n\n const [animated, setAnimated] = React.useState(false);\n\n const [visiblePanels, setVisiblePanels] = React.useState([activePanelProp]);\n const [activePanel, setActivePanel] = React.useState<string | null>(activePanelProp);\n const [isBack, setIsBack] = React.useState<boolean | undefined>(undefined);\n const [prevPanel, setPrevPanel] = React.useState<string | null>(null);\n const [nextPanel, setNextPanel] = React.useState<string | null>(null);\n\n const [swipingBack, setSwipingBack] = React.useState<boolean>(false);\n const [swipeBackPrevented, setSwipeBackPrevented] = React.useState<boolean>(false);\n const [swipeBackStartX, setSwipeBackStartX] = React.useState<number>(0);\n const [swipeBackShift, setSwipeBackShift] = React.useState<number>(0);\n const [swipeBackNextPanel, setSwipeBackNextPanel] = React.useState<string | null>(null);\n const [swipeBackPrevPanel, setSwipeBackPrevPanel] = React.useState<string | null>(null);\n const [swipeBackResult, setSwipeBackResult] = React.useState<SwipeBackResults | null>(null);\n\n const [browserSwipe, setBrowserSwipe] = React.useState(false);\n\n const prevActivePanel = usePrevious(activePanelProp);\n const prevSwipingBack = usePrevious(swipingBack);\n const prevBrowserSwipe = usePrevious(browserSwipe);\n const prevSwipeBackResult = usePrevious(swipeBackResult);\n const prevSwipeBackPrevPanel = usePrevious(swipeBackPrevPanel);\n const prevOnTransition = usePrevious(onTransition);\n\n const panels = (React.Children.toArray(children) as React.ReactElement[]).filter(\n (panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n\n return (\n (panelId !== undefined && visiblePanels.includes(panelId)) ||\n panelId === swipeBackPrevPanel ||\n panelId === swipeBackNextPanel\n );\n },\n );\n\n const disableAnimation =\n configProvider?.transitionMotionEnabled === false ||\n !splitCol?.animate ||\n platform === Platform.VKCOM;\n\n const pickPanel = (id: string | null) => {\n if (id === null) {\n return null;\n }\n return panelNodes.current[id];\n };\n\n const flushTransition = React.useCallback(\n (prevPanel: string, isBackTransition: boolean) => {\n if (isBackTransition) {\n scrolls.current[prevPanel] = 0;\n }\n setPrevPanel(null);\n setNextPanel(null);\n setVisiblePanels([activePanelProp]);\n setActivePanel(activePanelProp);\n setAnimated(false);\n setIsBack(undefined);\n\n afterTransition.current = () => {\n scroll?.scrollTo(0, isBackTransition ? scrolls.current[activePanelProp] : 0);\n onTransition &&\n onTransition({\n isBack: isBackTransition,\n from: prevPanel,\n to: activePanelProp,\n });\n };\n },\n [activePanelProp, onTransition, scroll],\n );\n\n useIsomorphicLayoutEffect(() => {\n afterTransition.current();\n afterTransition.current = noop;\n }, [afterTransition.current]);\n\n const transitionEndHandler = React.useCallback(\n (e?: React.AnimationEvent): void => {\n if (\n (!e ||\n [\n styles['animation-ios-next-forward'],\n styles['animation-ios-prev-back'],\n styles['animation-view-next-forward'],\n styles['animation-view-prev-back'],\n ].includes(e.animationName)) &&\n prevPanel !== null\n ) {\n flushTransition(prevPanel, Boolean(isBack));\n }\n },\n [flushTransition, isBack, prevPanel],\n );\n\n const { waitTransitionFinish } = useWaitTransitionFinish();\n const animationFinishTimeout = useTimeout(\n transitionEndHandler,\n platform === Platform.IOS ? 600 : 300,\n );\n\n const onSwipeBackSuccess = React.useCallback(() => {\n onSwipeBack && onSwipeBack();\n }, [onSwipeBack]);\n\n const onSwipeBackCancel = React.useCallback(() => {\n onSwipeBackCancelProp && onSwipeBackCancelProp();\n setSwipeBackPrevPanel(null);\n setSwipeBackNextPanel(null);\n setSwipingBack(false);\n setSwipeBackResult(null);\n setSwipeBackStartX(0);\n setSwipeBackShift(0);\n }, [onSwipeBackCancelProp]);\n\n const swipingBackTransitionEndHandler = React.useCallback(\n (e?: TransitionEvent): void => {\n // indexOf because of vendor prefixes in old browsers\n if (\n !e ||\n (e?.propertyName.includes('transform') && e?.target === pickPanel(swipeBackNextPanel))\n ) {\n switch (swipeBackResult) {\n case SwipeBackResults.fail:\n onSwipeBackCancel();\n break;\n case SwipeBackResults.success:\n onSwipeBackSuccess();\n }\n }\n },\n [onSwipeBackCancel, onSwipeBackSuccess, swipeBackNextPanel, swipeBackResult],\n );\n\n const onMoveX = (event: TouchEvent): void => {\n if (\n platform !== Platform.IOS ||\n swipeBackPrevented ||\n swipeBackExcluded(event) ||\n disableAnimation\n ) {\n return;\n }\n\n if (!configProvider?.isWebView) {\n if (\n (event.startX <= SWIPE_BACK_AREA || event.startX >= window!.innerWidth - SWIPE_BACK_AREA) &&\n !browserSwipe\n ) {\n setBrowserSwipe(true);\n }\n\n return;\n }\n\n if (!onSwipeBack || (animated && event.startX <= SWIPE_BACK_AREA)) {\n return;\n }\n\n if (!swipingBack && event.startX <= SWIPE_BACK_AREA && history && history.length > 1) {\n // Начался свайп назад\n if (onSwipeBackStart) {\n const payload = onSwipeBackStart(activePanel);\n if (payload === 'prevent') {\n setSwipeBackPrevented(true);\n return;\n }\n }\n\n if (activePanel !== null) {\n // Note: вызываем закрытие клавиатуры. В iOS это нативное поведение при свайпе.\n blurActiveElement(document);\n scrolls.current[activePanel] = scroll?.getScroll().y;\n }\n\n setSwipingBack(true);\n setSwipeBackStartX(event.startX);\n setSwipeBackPrevPanel(activePanel);\n setSwipeBackNextPanel(history.slice(-2)[0]);\n }\n\n if (swipingBack) {\n let swipeBackShift = 0;\n if (event.shiftX < 0) {\n swipeBackShift = 0;\n } else if (event.shiftX > window!.innerWidth - swipeBackStartX) {\n swipeBackShift = window!.innerWidth;\n } else {\n swipeBackShift = event.shiftX;\n }\n setSwipeBackShift(swipeBackShift);\n }\n };\n\n const onEnd = React.useCallback(\n (event: TouchEvent): void => {\n if (swipingBack) {\n const speed = (swipeBackShift / event.duration) * 1000;\n if (swipeBackShift === 0) {\n onSwipeBackCancel();\n } else if (swipeBackShift >= (window!.innerWidth ?? 0)) {\n onSwipeBackSuccess();\n } else if (speed > 250 || swipeBackStartX + swipeBackShift > window!.innerWidth / 2) {\n setSwipeBackResult(SwipeBackResults.success);\n } else {\n setSwipeBackResult(SwipeBackResults.fail);\n }\n }\n if (swipeBackPrevented) {\n setSwipeBackPrevented(false);\n }\n },\n [\n onSwipeBackCancel,\n onSwipeBackSuccess,\n swipeBackShift,\n swipeBackStartX,\n swipingBack,\n swipeBackPrevented,\n window,\n ],\n );\n\n const calcPanelSwipeStyles = (panelId: string | undefined): React.CSSProperties => {\n if (!canUseDOM || !window) {\n return {};\n }\n\n const isPrev = panelId === swipeBackPrevPanel;\n const isNext = panelId === swipeBackNextPanel;\n\n if ((!isPrev && !isNext) || swipeBackResult) {\n return {};\n }\n\n let prevPanelTranslate = `${swipeBackShift}px`;\n let nextPanelTranslate = `${-50 + (swipeBackShift * 100) / window.innerWidth / 2}%`;\n let prevPanelShadow = (0.3 * (window.innerWidth - swipeBackShift)) / window.innerWidth;\n\n if (swipeBackResult) {\n return isPrev ? { boxShadow: `-2px 0 12px rgba(0, 0, 0, ${prevPanelShadow})` } : {};\n }\n\n if (isNext) {\n return {\n transform: `translate3d(${nextPanelTranslate}, 0, 0)`,\n WebkitTransform: `translate3d(${nextPanelTranslate}, 0, 0)`,\n };\n }\n if (isPrev) {\n return {\n transform: `translate3d(${prevPanelTranslate}, 0, 0)`,\n WebkitTransform: `translate3d(${prevPanelTranslate}, 0, 0)`,\n boxShadow: `-2px 0 12px rgba(0, 0, 0, ${prevPanelShadow})`,\n };\n }\n\n return {};\n };\n\n React.useEffect(() => {\n // Нужен переход\n if (\n prevActivePanel &&\n prevActivePanel !== activePanelProp &&\n !prevSwipingBack &&\n !prevBrowserSwipe\n ) {\n const firstLayerId = (React.Children.toArray(children) as React.ReactElement[])\n .map((panel) => getNavId(panel.props, warn))\n .find((id) => id === prevActivePanel || id === activePanelProp);\n\n const isBackTransition = firstLayerId === activePanelProp;\n scrolls.current[prevActivePanel] = scroll?.getScroll().y;\n\n if (disableAnimation) {\n flushTransition(prevActivePanel, isBackTransition);\n } else {\n blurActiveElement(document);\n\n setVisiblePanels([prevActivePanel, activePanelProp]);\n setPrevPanel(prevActivePanel);\n setNextPanel(activePanelProp);\n setActivePanel(null);\n setAnimated(true);\n setIsBack(isBackTransition);\n\n // Фолбек анимации перехода\n if (!animationEvent.supported) {\n animationFinishTimeout.set();\n }\n }\n }\n\n // Закончилась анимация свайпа назад\n if (prevActivePanel && prevActivePanel !== activePanelProp && prevSwipingBack) {\n const nextPanel = activePanelProp;\n const prevPanel = prevActivePanel;\n if (prevSwipeBackPrevPanel) {\n scrolls.current[prevSwipeBackPrevPanel] = 0;\n }\n\n setSwipeBackPrevPanel(null);\n setSwipeBackNextPanel(null);\n setSwipingBack(false);\n setSwipeBackResult(null);\n setSwipeBackStartX(0);\n setSwipeBackShift(0);\n setActivePanel(nextPanel);\n setVisiblePanels([nextPanel]);\n\n afterTransition.current = () => {\n if (nextPanel !== null) {\n scroll?.scrollTo(0, scrolls.current[nextPanel]);\n }\n prevOnTransition &&\n prevOnTransition({\n isBack: true,\n from: prevPanel,\n to: nextPanel,\n });\n };\n }\n\n // Началась анимация завершения свайпа назад.\n if (!prevSwipeBackResult && swipeBackResult) {\n waitTransitionFinish(\n pickPanel(swipeBackNextPanel),\n swipingBackTransitionEndHandler,\n platform === Platform.IOS ? 600 : 300,\n );\n }\n\n // Если свайп назад отменился (когда пользователь недостаточно сильно свайпнул)\n if (prevSwipeBackResult === SwipeBackResults.fail && !swipeBackResult && activePanel !== null) {\n scroll?.scrollTo(0, scrolls.current[activePanel]);\n }\n\n // Закончился Safari свайп\n if (prevActivePanel !== activePanelProp && browserSwipe) {\n setBrowserSwipe(false);\n setNextPanel(null);\n setPrevPanel(null);\n setAnimated(false);\n setVisiblePanels([activePanelProp]);\n setActivePanel(activePanelProp);\n }\n }, [\n activePanelProp,\n activePanel,\n animationFinishTimeout,\n browserSwipe,\n children,\n disableAnimation,\n document,\n flushTransition,\n onSwipeBackStart,\n panels,\n platform,\n prevActivePanel,\n prevBrowserSwipe,\n prevOnTransition,\n prevSwipeBackPrevPanel,\n prevSwipeBackResult,\n prevSwipingBack,\n scroll,\n swipeBackNextPanel,\n swipeBackResult,\n swipingBack,\n swipingBackTransitionEndHandler,\n waitTransitionFinish,\n ]);\n\n return (\n <Touch\n Component=\"section\"\n {...restProps}\n className={classNames(\n styles['View'],\n platform === Platform.IOS && classNames(styles['View--ios'], 'vkuiInternalView--ios'),\n !disableAnimation && animated && styles['View--animated'],\n !disableAnimation && swipingBack && styles['View--swiping-back'],\n disableAnimation && styles['View--no-motion'],\n className,\n )}\n onMoveX={onMoveX}\n onEnd={onEnd}\n >\n <div className={styles['View__panels']}>\n {panels.map((panel: React.ReactElement) => {\n const panelId = getNavId(panel.props, warn);\n const isPrev = panelId === prevPanel || panelId === swipeBackPrevPanel;\n const isTransitionTarget = animated && panelId === (isBack ? prevPanel : nextPanel);\n const compensateScroll =\n isPrev || panelId === swipeBackNextPanel || (panelId === nextPanel && isBack);\n\n return (\n <div\n className={classNames(\n styles['View__panel'],\n panelId === activePanel && styles['View__panel--active'],\n panelId === prevPanel && styles['View__panel--prev'],\n panelId === nextPanel && styles['View__panel--next'],\n panelId === swipeBackPrevPanel && styles['View__panel--swipe-back-prev'],\n panelId === swipeBackNextPanel && styles['View__panel--swipe-back-next'],\n swipeBackResult === SwipeBackResults.success &&\n styles['View__panel--swipe-back-success'],\n swipeBackResult === SwipeBackResults.fail &&\n styles['View__panel--swipe-back-failed'],\n )}\n onAnimationEnd={isTransitionTarget ? transitionEndHandler : undefined}\n ref={(el) => panelId !== undefined && (panelNodes.current[panelId] = el)}\n style={calcPanelSwipeStyles(panelId)}\n key={panelId}\n >\n <div\n className={styles['View__panel-in']}\n style={{\n marginTop: compensateScroll ? -(scrolls.current[panelId] ?? 0) : undefined,\n }}\n >\n <NavTransitionProvider\n entering={panelId === nextPanel || panelId === swipeBackNextPanel}\n >\n {panel}\n </NavTransitionProvider>\n </div>\n </div>\n );\n })}\n </div>\n </Touch>\n );\n};\n"],"names":["React","classNames","noop","usePlatform","usePrevious","useTimeout","useWaitTransitionFinish","blurActiveElement","canUseDOM","useDOM","getNavId","Platform","animationEvent","useIsomorphicLayoutEffect","warnOnce","useScroll","useConfigProvider","NavTransitionProvider","useSplitCol","Touch","swipeBackExcluded","styles","SWIPE_BACK_AREA","SwipeBackResults","fail","success","scrollsCache","warn","View","activePanel","activePanelProp","history","nav","onTransition","onSwipeBack","onSwipeBackStart","onSwipeBackCancel","onSwipeBackCancelProp","children","className","restProps","scrolls","useRef","id","afterTransition","useEffect","current","panelNodes","window","document","scroll","configProvider","splitCol","platform","animated","setAnimated","useState","visiblePanels","setVisiblePanels","setActivePanel","isBack","setIsBack","undefined","prevPanel","setPrevPanel","nextPanel","setNextPanel","swipingBack","setSwipingBack","swipeBackPrevented","setSwipeBackPrevented","swipeBackStartX","setSwipeBackStartX","swipeBackShift","setSwipeBackShift","swipeBackNextPanel","setSwipeBackNextPanel","swipeBackPrevPanel","setSwipeBackPrevPanel","swipeBackResult","setSwipeBackResult","browserSwipe","setBrowserSwipe","prevActivePanel","prevSwipingBack","prevBrowserSwipe","prevSwipeBackResult","prevSwipeBackPrevPanel","prevOnTransition","panels","Children","toArray","filter","panel","panelId","props","includes","disableAnimation","transitionMotionEnabled","animate","VKCOM","pickPanel","flushTransition","useCallback","isBackTransition","scrollTo","from","to","transitionEndHandler","e","animationName","Boolean","waitTransitionFinish","animationFinishTimeout","IOS","onSwipeBackSuccess","swipingBackTransitionEndHandler","propertyName","target","onMoveX","event","isWebView","startX","innerWidth","length","payload","getScroll","y","slice","shiftX","onEnd","speed","duration","calcPanelSwipeStyles","isPrev","isNext","prevPanelTranslate","nextPanelTranslate","prevPanelShadow","boxShadow","transform","WebkitTransform","firstLayerId","map","find","supported","set","Component","div","isTransitionTarget","compensateScroll","onAnimationEnd","ref","el","style","key","marginTop","entering"],"mappings":"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"}
@@ -47,18 +47,18 @@
47
47
  */
48
48
 
49
49
  .View__panel--next ~ .View__panel--prev {
50
- animation: vkui-animation-view-prev-back 0.3s var(--vkui--animation_easing_platform) forwards;
50
+ animation: animation-view-prev-back 0.3s var(--vkui--animation_easing_platform) forwards;
51
51
  }
52
52
 
53
53
  .View__panel--prev ~ .View__panel--next {
54
- animation: vkui-animation-view-next-forward 0.3s var(--vkui--animation_easing_platform);
54
+ animation: animation-view-next-forward 0.3s var(--vkui--animation_easing_platform);
55
55
  }
56
56
 
57
57
  .View--no-motion .View__panel {
58
58
  animation: none;
59
59
  }
60
60
 
61
- @keyframes vkui-animation-view-prev-back {
61
+ @keyframes animation-view-prev-back {
62
62
  from {
63
63
  opacity: 1;
64
64
  transform: translateY(0);
@@ -70,7 +70,7 @@
70
70
  }
71
71
  }
72
72
 
73
- @keyframes vkui-animation-view-next-forward {
73
+ @keyframes animation-view-next-forward {
74
74
  from {
75
75
  opacity: 0;
76
76
  transform: translateY(80px);
@@ -115,19 +115,19 @@
115
115
  */
116
116
 
117
117
  .View--ios .View__panel--prev {
118
- animation: vkui-animation-ios-prev-forward 0.6s var(--vkui--animation_easing_platform);
118
+ animation: animation-ios-prev-forward 0.6s var(--vkui--animation_easing_platform);
119
119
  }
120
120
 
121
121
  .View--ios .View__panel--next {
122
- animation: vkui-animation-ios-next-back 0.6s var(--vkui--animation_easing_platform);
122
+ animation: animation-ios-next-back 0.6s var(--vkui--animation_easing_platform);
123
123
  }
124
124
 
125
125
  .View--ios .View__panel--prev ~ .View__panel--next {
126
- animation: vkui-animation-ios-next-forward 0.6s var(--vkui--animation_easing_platform);
126
+ animation: animation-ios-next-forward 0.6s var(--vkui--animation_easing_platform);
127
127
  }
128
128
 
129
129
  .View--ios .View__panel--next ~ .View__panel--prev {
130
- animation: vkui-animation-ios-prev-back 0.6s var(--vkui--animation_easing_platform) forwards;
130
+ animation: animation-ios-prev-back 0.6s var(--vkui--animation_easing_platform) forwards;
131
131
  }
132
132
 
133
133
  .View--ios .View__panel--prev :global(.vkuiInternalPanel__fade),
@@ -143,11 +143,11 @@
143
143
  }
144
144
 
145
145
  .View--ios .View__panel--prev :global(.vkuiInternalPanel__fade) {
146
- animation: vkui-animation-ios-fade-in 0.6s var(--vkui--animation_easing_platform);
146
+ animation: animation-ios-fade-in 0.6s var(--vkui--animation_easing_platform);
147
147
  }
148
148
 
149
149
  .View--ios .View__panel--next :global(.vkuiInternalPanel__fade) {
150
- animation: vkui-animation-ios-fade-out 0.6s var(--vkui--animation_easing_platform) forwards;
150
+ animation: animation-ios-fade-out 0.6s var(--vkui--animation_easing_platform) forwards;
151
151
  }
152
152
 
153
153
  .View--ios .View__panel--prev ~ .View__panel--next :global(.vkuiInternalPanel__fade),
@@ -168,7 +168,7 @@
168
168
  display: none;
169
169
  }
170
170
 
171
- @keyframes vkui-animation-ios-next-forward {
171
+ @keyframes animation-ios-next-forward {
172
172
  from {
173
173
  transform: translate3d(100%, 0, 0);
174
174
  }
@@ -178,7 +178,7 @@
178
178
  }
179
179
  }
180
180
 
181
- @keyframes vkui-animation-ios-next-back {
181
+ @keyframes animation-ios-next-back {
182
182
  from {
183
183
  transform: translate3d(-50%, 0, 0);
184
184
  }
@@ -188,7 +188,7 @@
188
188
  }
189
189
  }
190
190
 
191
- @keyframes vkui-animation-ios-prev-forward {
191
+ @keyframes animation-ios-prev-forward {
192
192
  from {
193
193
  transform: translate3d(0, 0, 0);
194
194
  }
@@ -198,7 +198,7 @@
198
198
  }
199
199
  }
200
200
 
201
- @keyframes vkui-animation-ios-prev-back {
201
+ @keyframes animation-ios-prev-back {
202
202
  from {
203
203
  transform: translate3d(0, 0, 0);
204
204
  }
@@ -208,7 +208,7 @@
208
208
  }
209
209
  }
210
210
 
211
- @keyframes vkui-animation-ios-fade-in {
211
+ @keyframes animation-ios-fade-in {
212
212
  from {
213
213
  opacity: 0;
214
214
  }
@@ -218,7 +218,7 @@
218
218
  }
219
219
  }
220
220
 
221
- @keyframes vkui-animation-ios-fade-out {
221
+ @keyframes animation-ios-fade-out {
222
222
  from {
223
223
  opacity: 0.3;
224
224
  }