@vkontakte/vkui 7.5.1 → 7.5.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "type": "module",
3
- "version": "7.5.1",
3
+ "version": "7.5.3",
4
4
  "name": "@vkontakte/vkui",
5
5
  "description": "VKUI library",
6
6
  "module": "./dist/index.js",
@@ -5,6 +5,8 @@ import { classNames, noop } from '@vkontakte/vkjs';
5
5
  import { useAdaptivityHasPointer } from '../../hooks/useAdaptivityHasPointer';
6
6
  import { useConfigDirection } from '../../hooks/useConfigDirection';
7
7
  import { useExternRef } from '../../hooks/useExternRef';
8
+ import { useFocusVisible } from '../../hooks/useFocusVisible';
9
+ import { useFocusVisibleClassName } from '../../hooks/useFocusVisibleClassName';
8
10
  import { easeInOutSine } from '../../lib/fx';
9
11
  import { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';
10
12
  import type { HasRef, HTMLAttributesWithRootRef } from '../../types';
@@ -216,6 +218,11 @@ export const HorizontalScroll = ({
216
218
  }: HorizontalScrollProps): React.ReactNode => {
217
219
  const [canScrollStart, setCanScrollStart] = React.useState(false);
218
220
  const [canScrollEnd, setCanScrollEnd] = React.useState(false);
221
+ const { focusVisible, ...focusEvents } = useFocusVisible();
222
+ const focusVisibleClassNames = useFocusVisibleClassName({
223
+ focusVisible,
224
+ });
225
+
219
226
  const direction = useConfigDirection();
220
227
  const isRtl = direction === 'rtl';
221
228
 
@@ -346,7 +353,12 @@ export const HorizontalScroll = ({
346
353
  onClick={scrollToEnd}
347
354
  />
348
355
  )}
349
- <div className={styles.in} ref={scrollerRef}>
356
+ <div
357
+ className={classNames(styles.in, focusVisibleClassNames)}
358
+ ref={scrollerRef}
359
+ tabIndex={0}
360
+ {...focusEvents}
361
+ >
350
362
  <ContentWrapperComponent
351
363
  className={classNames(styles.inWrapper, contentWrapperClassName)}
352
364
  ref={contentWrapperRef}
@@ -45,6 +45,13 @@
45
45
  display: block;
46
46
  inline-size: 100%;
47
47
  block-size: 100%;
48
+ /* Скрывает текст из атрибута alt. */
49
+ color: transparent;
50
+ /*
51
+ Скрывает альтернативную иконку, которая появляется когда нет атрибута alt.
52
+ Работает только в Chromium. В остальных ситуациях сработает `.imgHiddenAlt`, который добавляется на `onError`.
53
+ */
54
+ text-indent: 10000px;
48
55
  border: 0;
49
56
  border-radius: inherit;
50
57
  }
@@ -88,8 +95,8 @@
88
95
  );
89
96
  }
90
97
 
91
- .host:not(.loaded) .img {
92
- visibility: hidden;
98
+ .imgHiddenAlt {
99
+ opacity: 0;
93
100
  }
94
101
 
95
102
  .fallback {
@@ -1 +1 @@
1
- {"version":3,"sources":["./ImageBase.module.css"],"names":["host","loaded","transparentBackground","children","border","img","imgKeepRatio","imgObjectFitContain","imgObjectFitCover","imgObjectFitNone","imgObjectFitScaleDown","withObjectPosition","withFilter","fallback"],"mappings":"AAAA;AAAA,E,aAAAA,M,WAAA;AAAA,E,aAaAC,Q,WAbA;AAAA,E,aAcAC,uB,WAdA;AAAA,E,aAkBAC,U,WAlBA;AAAA,E,aAmBAC,Q,WAnBA;AAAA,E,aA2BAD,U,WA3BA;AAAA,E,aAkCAC,Q,WAlCA;AAAA,E,aA2CAC,K,WA3CA;AAAA,E,aAmDAC,c,WAnDA;AAAA,E,aAwDAC,qB,WAxDA;AAAA,E,aA4DAC,mB,WA5DA;AAAA,E,aAgEAC,kB,WAhEA;AAAA,E,aAoEAC,uB,WApEA;AAAA,E,aAwEAC,oB,WAxEA;AAAA,E,aAiFAC,Y,WAjFA;AAAA,E,aA0FAZ,M,WA1FA;AAAA,E,aA0FUC,Q,WA1FV;AAAA,E,aA0FmBI,K,WA1FnB;AAAA,E,aA8FAQ,U,WA9FA;AAAA,E,aA2G4Cb,M,WA3G5C;AAAA,E,aAgH2CA,M,WAhH3C;AAAA;AAAA","file":"ImageBase.module.css.d.ts","sourceRoot":""}
1
+ {"version":3,"sources":["./ImageBase.module.css"],"names":["host","loaded","transparentBackground","children","border","img","imgKeepRatio","imgObjectFitContain","imgObjectFitCover","imgObjectFitNone","imgObjectFitScaleDown","withObjectPosition","withFilter","imgHiddenAlt","fallback"],"mappings":"AAAA;AAAA,E,aAAAA,M,WAAA;AAAA,E,aAaAC,Q,WAbA;AAAA,E,aAcAC,uB,WAdA;AAAA,E,aAkBAC,U,WAlBA;AAAA,E,aAmBAC,Q,WAnBA;AAAA,E,aA2BAD,U,WA3BA;AAAA,E,aAkCAC,Q,WAlCA;AAAA,E,aA2CAC,K,WA3CA;AAAA,E,aA0DAC,c,WA1DA;AAAA,E,aA+DAC,qB,WA/DA;AAAA,E,aAmEAC,mB,WAnEA;AAAA,E,aAuEAC,kB,WAvEA;AAAA,E,aA2EAC,uB,WA3EA;AAAA,E,aA+EAC,oB,WA/EA;AAAA,E,aAwFAC,Y,WAxFA;AAAA,E,aAiGAC,c,WAjGA;AAAA,E,aAqGAC,U,WArGA;AAAA,E,aAkH4Cd,M,WAlH5C;AAAA,E,aAuH2CA,M,WAvH3C;AAAA;AAAA","file":"ImageBase.module.css.d.ts","sourceRoot":""}
@@ -202,13 +202,11 @@ export const ImageBase: React.FC<ImageBaseProps> & {
202
202
  const mouseOutHandlersRef = useRef<VoidFunction[]>([]);
203
203
 
204
204
  const hasSrc = src || srcSet;
205
- const needShowFallbackIcon = (failed || !hasSrc) && React.isValidElement(fallbackIconProp);
206
-
207
- const fallbackIcon = needShowFallbackIcon ? fallbackIconProp : null;
205
+ const fallbackIcon = failed || !hasSrc ? fallbackIconProp : null;
208
206
 
209
207
  if (process.env.NODE_ENV === 'development') {
210
208
  validateSize(size);
211
- if (fallbackIcon) {
209
+ if (React.isValidElement(fallbackIcon)) {
212
210
  validateFallbackIcon(size, { name: 'fallbackIcon', value: fallbackIcon });
213
211
  }
214
212
  }
@@ -304,6 +302,7 @@ export const ImageBase: React.FC<ImageBaseProps> & {
304
302
  objectPosition && styles.withObjectPosition,
305
303
  filter && styles.withFilter,
306
304
  keepAspectRatio && styles.imgKeepRatio,
305
+ failed && styles.imgHiddenAlt,
307
306
  )}
308
307
  crossOrigin={crossOrigin}
309
308
  decoding={decoding}
@@ -30,29 +30,24 @@
30
30
 
31
31
  /* Desktop */
32
32
  .hostDesktop {
33
- --vkui_internal_ModalPage--desktopSafeInsetBlock: calc(var(--vkui--spacing_size_2xl) * 2);
33
+ --vkui_internal_ModalPage--desktopStretchedSize: calc(100% - var(--vkui--spacing_size_2xl) * 2);
34
34
  --vkui_internal_ModalPage--desktopMaxWidth: 100%;
35
35
  --vkui_internal_ModalPage--desktopMaxHeight: 640px;
36
36
  --vkui_internal_ModalPage--userHeight: auto;
37
37
 
38
38
  position: relative;
39
39
  box-sizing: content-box;
40
- max-inline-size: var(--vkui_internal_ModalPage--desktopMaxWidth);
41
- max-block-size: var(--vkui_internal_ModalPage--desktopMaxHeight);
42
- padding-block: var(--vkui_internal_ModalPage--desktopSafeInsetBlock);
43
- padding-inline: var(--vkui--spacing_size_xl);
40
+ max-inline-size: min(
41
+ var(--vkui_internal_ModalPage--desktopMaxWidth),
42
+ var(--vkui_internal_ModalPage--desktopStretchedSize)
43
+ );
44
+ max-block-size: min(
45
+ var(--vkui_internal_ModalPage--desktopMaxHeight),
46
+ var(--vkui_internal_ModalPage--desktopStretchedSize)
47
+ );
44
48
  margin-block: auto;
45
49
  }
46
50
 
47
- /* Неизвестный брейкпоинт */
48
- @media (max-height: 672px) {
49
- .hostDesktop {
50
- --vkui_internal_ModalPage--desktopMaxHeight: calc(
51
- 100% - var(--vkui_internal_ModalPage--desktopSafeInsetBlock) * 2
52
- );
53
- }
54
- }
55
-
56
51
  .hostDesktopMaxWidthS {
57
52
  --vkui_internal_ModalPage--desktopMaxWidth: var(--vkui--size_popup_small--regular);
58
53
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["./ModalPage.module.css"],"names":["host","hostMobile","hostMobileSafeAreaInsetTop","hostMobileSafeAreaInsetTopWithCustomOffset","hostDesktop","hostDesktopMaxWidthS","hostDesktopMaxWidthM","hostDesktopMaxWidthL","document","documentMobile","documentStateEnter","documentStateEntering","documentStateExiting","documentStateExited","documentDesktop","children","childrenMobile","childrenDesktop"],"mappings":"AAAA;AAAA,E,aAAAA,M,WAAA;AAAA,E,aASAC,Y,WATA;AAAA,E,aAoBAC,4B,WApBA;AAAA,E,aAwBAC,4C,WAxBA;AAAA,E,aA+BAC,a,WA/BA;AAAA,E,aAgDEA,a,WAhDF;AAAA,E,aAuDAC,sB,WAvDA;AAAA,E,aA2DAC,sB,WA3DA;AAAA,E,aA+DAC,sB,WA/DA;AAAA,E,aAmEAC,U,WAnEA;AAAA,E,aAgFAC,gB,WAhFA;AAAA,E,aAiGAA,gB,WAjGA;AAAA,E,aAiGeC,oB,WAjGf;AAAA,E,aAqGAD,gB,WArGA;AAAA,E,aAqGeE,uB,WArGf;AAAA,E,aA0GAF,gB,WA1GA;AAAA,E,aA0GeG,sB,WA1Gf;AAAA,E,aA+GAH,gB,WA/GA;AAAA,E,aA+GeI,qB,WA/Gf;AAAA,E,aAoHAC,iB,WApHA;AAAA,E,aAyHAA,iB,WAzHA;AAAA,E,aAyHgBJ,oB,WAzHhB;AAAA,E,aA6HAI,iB,WA7HA;AAAA,E,aA6HgBH,uB,WA7HhB;AAAA,E,aAkIAG,iB,WAlIA;AAAA,E,aAkIgBF,sB,WAlIhB;AAAA,E,aAuIAE,iB,WAvIA;AAAA,E,aAuIgBD,qB,WAvIhB;AAAA,E,aA2IAE,U,WA3IA;AAAA,E,aA+JAC,gB,WA/JA;AAAA,E,aAoKAC,iB,WApKA;AAAA;AAAA","file":"ModalPage.module.css.d.ts","sourceRoot":""}
1
+ {"version":3,"sources":["./ModalPage.module.css"],"names":["host","hostMobile","hostMobileSafeAreaInsetTop","hostMobileSafeAreaInsetTopWithCustomOffset","hostDesktop","hostDesktopMaxWidthS","hostDesktopMaxWidthM","hostDesktopMaxWidthL","document","documentMobile","documentStateEnter","documentStateEntering","documentStateExiting","documentStateExited","documentDesktop","children","childrenMobile","childrenDesktop"],"mappings":"AAAA;AAAA,E,aAAAA,M,WAAA;AAAA,E,aASAC,Y,WATA;AAAA,E,aAoBAC,4B,WApBA;AAAA,E,aAwBAC,4C,WAxBA;AAAA,E,aA+BAC,a,WA/BA;AAAA,E,aAkDAC,sB,WAlDA;AAAA,E,aAsDAC,sB,WAtDA;AAAA,E,aA0DAC,sB,WA1DA;AAAA,E,aA8DAC,U,WA9DA;AAAA,E,aA2EAC,gB,WA3EA;AAAA,E,aA4FAA,gB,WA5FA;AAAA,E,aA4FeC,oB,WA5Ff;AAAA,E,aAgGAD,gB,WAhGA;AAAA,E,aAgGeE,uB,WAhGf;AAAA,E,aAqGAF,gB,WArGA;AAAA,E,aAqGeG,sB,WArGf;AAAA,E,aA0GAH,gB,WA1GA;AAAA,E,aA0GeI,qB,WA1Gf;AAAA,E,aA+GAC,iB,WA/GA;AAAA,E,aAoHAA,iB,WApHA;AAAA,E,aAoHgBJ,oB,WApHhB;AAAA,E,aAwHAI,iB,WAxHA;AAAA,E,aAwHgBH,uB,WAxHhB;AAAA,E,aA6HAG,iB,WA7HA;AAAA,E,aA6HgBF,sB,WA7HhB;AAAA,E,aAkIAE,iB,WAlIA;AAAA,E,aAkIgBD,qB,WAlIhB;AAAA,E,aAsIAE,U,WAtIA;AAAA,E,aA0JAC,gB,WA1JA;AAAA,E,aA+JAC,iB,WA/JA;AAAA;AAAA","file":"ModalPage.module.css.d.ts","sourceRoot":""}