@vkontakte/vkui 4.36.0 → 4.36.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vkontakte/vkui",
3
- "version": "4.36.0",
3
+ "version": "4.36.1",
4
4
  "main": "dist/cjs/index.js",
5
5
  "module": "dist/index.js",
6
6
  "typings": "dist/index.d.ts",
@@ -1,3 +1,7 @@
1
+ > **Deprecated:** этот компонент устарел и будет удален в 5.0.0.
2
+ >
3
+ > Используйте [`Banner`](https://vkcom.github.io/VKUI/#/Banner).
4
+
1
5
  Компонент используется для отображения статуса формы. Например, когда в форме допущена ошибка, и нет возможности
2
6
  указать на конкретное поле. Заголовок и текст опциональны.
3
7
 
@@ -1,5 +1,5 @@
1
1
  .Link {
2
- color: var(--accent, var(--vkui--color_text_link));
2
+ color: var(--text_link, var(--vkui--color_text_link));
3
3
  text-decoration: none;
4
4
  border: 0;
5
5
  background: none;
@@ -31,6 +31,7 @@
31
31
  color: var(--vkui--color_text_link_visited);
32
32
  }
33
33
 
34
+ /* stylelint-disable-next-line vkui/atomic */
34
35
  .Link .Icon {
35
36
  margin-left: 4px;
36
37
  display: inline-block;
@@ -44,12 +44,12 @@ const [activePanel, setActivePanel] = useState("panel1");
44
44
  ### <a id="/View?id=iosswipeback"></a>[iOS Swipe Back](https://vkcom.github.io/VKUI/#/View?id=iosswipeback)
45
45
 
46
46
  В iOS есть возможность свайпнуть от левого края назад, чтобы перейти на предыдущую панель. Для того, чтобы
47
- повторить такое поведение в VKUI нужно:
47
+ повторить такое поведение в VKUI, нужно:
48
48
 
49
49
  - Передать во `View` коллбек `onSwipeBack` — он сработает при завершении анимации свайпа. Поменяйте в нем `activePanel` и обновите `history`.
50
50
  - Передать во `View` проп `history` — массив из id панелей в порядке открытия. Например, если пользователь из `main` перешел в `profile`, а оттуда попал в `education`, то `history=['main', 'profile', 'education']`.
51
51
  - Обернуть ваше приложение в `ConfigProvider` — он определит, открыто приложение в webview клиента VK или в браузере (там есть свой swipe back, который будет конфликтовать с нашим). Для проверки в браузере форсируйте определение webview: `<ConfigProvider isWebView>`.
52
- - На первой панели должен включаться свайпбек нативного клиента, чтобы пользователь смог выйти из приложения — для этого используют `vk-bridge`. **Если вы не из ВК,** при переходах отправляйте [событие `VKWebAppSetSwipeSettings`](https://dev.vk.com/bridge/VKWebAppSetSwipeSettings) с `history: true` на первой панели или `history: false` на других. **Если вы из ВК,** при переходе на первую панель отправляйте событие `VKWebAppEnableSwipeBack`, на любую другую — `VKWebAppDisableSwipeBack`.
52
+ - На первой панели должен включаться свайпбек нативного клиента, чтобы пользователь смог выйти из приложения — для этого используют `vk-bridge`. **Если вы делаете стандартное мини-приложение ВКонтакте,** при переходах отправляйте [событие `VKWebAppSetSwipeSettings`](https://dev.vk.com/bridge/VKWebAppSetSwipeSettings) с `history: true` на первой панели или `history: false` на других. **Если тип вашего мини-приложения — `WebviewType.INTERNAL`,** отправляйте событие `VKWebAppEnableSwipeBack` при переходе на первую панель и событие `VKWebAppDisableSwipeBack` при переходе на любую другух.
53
53
  - Компоненты, которые сами обрабатывают жесты (например, карта), могут конфликтовать со свайпбеком — повесьте на них свойство `data-vkui-swipe-back={false}`
54
54
 
55
55
  ```jsx
@@ -60,12 +60,12 @@ const activePanel = history[history.length - 1];
60
60
  const isFirst = history.length === 1;
61
61
 
62
62
  React.useEffect(() => {
63
- // Если вы из ВК, делайте так
63
+ // В стандартных мини-приложениях делайте так:
64
+ vkBridge.send("VKWebAppSetSwipeSettings", { history: isFirst });
65
+ // В мини-приложениях `WebviewType.INTERNAL` делайте так:
64
66
  vkBridge.send(
65
67
  isFirst ? "VKWebAppEnableSwipeBack" : "VKWebAppDisableSwipeBack"
66
68
  );
67
- // Если вы не из ВК, то так:
68
- vkBridge.send("VKWebAppSetSwipeSettings", { history: isFirst });
69
69
  }, [isFirst]);
70
70
 
71
71
  const goBack = () => setHistory(history.slice(0, -1));
@@ -167,9 +167,6 @@ export const View = ({
167
167
  const prevSwipeBackPrevPanel = usePrevious(swipeBackPrevPanel);
168
168
  const prevOnTransition = usePrevious(onTransition);
169
169
 
170
- const hasPopout = !!popout;
171
- const hasModal = !!modal;
172
-
173
170
  const panels = (
174
171
  React.Children.toArray(children) as React.ReactElement[]
175
172
  ).filter((panel: React.ReactElement) => {
@@ -402,10 +399,6 @@ export const View = ({
402
399
  popout && blurActiveElement(document);
403
400
  }, [document, popout]);
404
401
 
405
- React.useEffect(() => {
406
- modal && blurActiveElement(document);
407
- }, [document, modal]);
408
-
409
402
  React.useEffect(() => {
410
403
  // Нужен переход
411
404
  if (
@@ -606,8 +599,8 @@ export const View = ({
606
599
  })}
607
600
  </div>
608
601
  <AppRootPortal>
609
- {hasPopout && <div vkuiClass="View__popout">{popout}</div>}
610
- {hasModal && <div vkuiClass="View__modal">{modal}</div>}
602
+ {!!popout && <div vkuiClass="View__popout">{popout}</div>}
603
+ {!!modal && <div vkuiClass="View__modal">{modal}</div>}
611
604
  </AppRootPortal>
612
605
  </Touch>
613
606
  );