@vkontakte/vkui 7.11.2 → 7.11.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/components/ContentCard/ContentCard.d.ts.map +1 -1
  2. package/dist/components/ContentCard/ContentCard.js +4 -1
  3. package/dist/components/ContentCard/ContentCard.js.map +1 -1
  4. package/dist/components/ImageBase/ImageBase.d.ts.map +1 -1
  5. package/dist/components/ImageBase/ImageBase.js +4 -1
  6. package/dist/components/ImageBase/ImageBase.js.map +1 -1
  7. package/dist/components/PanelHeaderButton/PanelHeaderButton.d.ts +1 -1
  8. package/dist/components/PanelHeaderButton/PanelHeaderButton.d.ts.map +1 -1
  9. package/dist/components/PanelHeaderButton/PanelHeaderButton.js +18 -20
  10. package/dist/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
  11. package/dist/components/Tooltip/useTooltip.d.ts.map +1 -1
  12. package/dist/components/Tooltip/useTooltip.js +2 -13
  13. package/dist/components/Tooltip/useTooltip.js.map +1 -1
  14. package/dist/components.css +1 -1
  15. package/dist/components.css.map +1 -1
  16. package/dist/cssm/components/CalendarHeader/CalendarHeader.module.css +4 -0
  17. package/dist/cssm/components/ContentCard/ContentCard.js +4 -1
  18. package/dist/cssm/components/ContentCard/ContentCard.js.map +1 -1
  19. package/dist/cssm/components/ImageBase/ImageBase.js +4 -1
  20. package/dist/cssm/components/ImageBase/ImageBase.js.map +1 -1
  21. package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js +14 -19
  22. package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
  23. package/dist/cssm/components/Tooltip/useTooltip.js +2 -13
  24. package/dist/cssm/components/Tooltip/useTooltip.js.map +1 -1
  25. package/dist/cssm/hooks/useAdaptivityWithJSMediaQueries.js +5 -4
  26. package/dist/cssm/hooks/useAdaptivityWithJSMediaQueries.js.map +1 -1
  27. package/dist/hooks/useAdaptivityWithJSMediaQueries.d.ts +0 -13
  28. package/dist/hooks/useAdaptivityWithJSMediaQueries.d.ts.map +1 -1
  29. package/dist/hooks/useAdaptivityWithJSMediaQueries.js +5 -4
  30. package/dist/hooks/useAdaptivityWithJSMediaQueries.js.map +1 -1
  31. package/dist/vkui.css +1 -1
  32. package/dist/vkui.css.map +1 -1
  33. package/package.json +1 -1
  34. package/src/components/CalendarHeader/CalendarHeader.module.css +4 -0
  35. package/src/components/CalendarHeader/CalendarHeader.module.css.d.ts.map +1 -1
  36. package/src/components/ContentCard/ContentCard.tsx +4 -1
  37. package/src/components/ImageBase/ImageBase.tsx +4 -1
  38. package/src/components/PanelHeaderButton/PanelHeaderButton.tsx +18 -20
  39. package/src/components/Tooltip/useTooltip.tsx +1 -13
  40. package/src/hooks/useAdaptivityWithJSMediaQueries.ts +8 -3
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "type": "module",
3
- "version": "7.11.2",
3
+ "version": "7.11.3",
4
4
  "name": "@vkontakte/vkui",
5
5
  "description": "VKUI library",
6
6
  "module": "./dist/index.js",
@@ -24,6 +24,10 @@
24
24
  padding: 3px;
25
25
  }
26
26
 
27
+ .navIcon.navIcon {
28
+ border-radius: var(--vkui--size_border_radius--regular);
29
+ }
30
+
27
31
  .navIconAccent {
28
32
  color: var(--vkui--color_icon_accent);
29
33
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["./CalendarHeader.module.css"],"names":["host","pickers","picker","navIcon","navIconAccent","navIconNext","navIconPrev","month"],"mappings":"AAAA;AAAA,E,aAAAA,M,WAAA;AAAA,E,aAQAC,S,WARA;AAAA,E,aAcAC,Q,WAdA;AAAA,E,aAcUA,Q,WAdV;AAAA,E,aAkBAC,S,WAlBA;AAAA,E,aA0BAC,e,WA1BA;AAAA,E,aA8BAC,a,WA9BA;AAAA,E,aAkCAC,a,WAlCA;AAAA,E,aAsCAC,O,WAtCA;AAAA;AAAA","file":"CalendarHeader.module.css.d.ts","sourceRoot":""}
1
+ {"version":3,"sources":["./CalendarHeader.module.css"],"names":["host","pickers","picker","navIcon","navIconAccent","navIconNext","navIconPrev","month"],"mappings":"AAAA;AAAA,E,aAAAA,M,WAAA;AAAA,E,aAQAC,S,WARA;AAAA,E,aAcAC,Q,WAdA;AAAA,E,aAcUA,Q,WAdV;AAAA,E,aAkBAC,S,WAlBA;AAAA,E,aA0BAA,S,WA1BA;AAAA,E,aA0BQA,S,WA1BR;AAAA,E,aA8BAC,e,WA9BA;AAAA,E,aAkCAC,a,WAlCA;AAAA,E,aAsCAC,a,WAtCA;AAAA,E,aA0CAC,O,WA1CA;AAAA;AAAA","file":"CalendarHeader.module.css.d.ts","sourceRoot":""}
@@ -102,6 +102,10 @@ export const ContentCard = ({
102
102
  >
103
103
  {(src || srcSet) && (
104
104
  <img
105
+ // safari и firefox нужно чтобы атрибут `loading` был до `src`
106
+ //
107
+ // https://mihaly4.ru/image-loading-lazy-bug
108
+ loading={loading}
105
109
  ref={getRef}
106
110
  className={styles.img}
107
111
  src={src}
@@ -109,7 +113,6 @@ export const ContentCard = ({
109
113
  alt={alt}
110
114
  crossOrigin={crossOrigin}
111
115
  decoding={decoding}
112
- loading={loading}
113
116
  referrerPolicy={referrerPolicy}
114
117
  sizes={sizes}
115
118
  useMap={useMap}
@@ -257,6 +257,10 @@ export const ImageBase: React.FC<ImageBaseProps> & {
257
257
  } = useMergeProps<React.ComponentProps<'img'> & HasRootRef<HTMLImageElement> & HasDataAttribute>(
258
258
  hasSrc
259
259
  ? {
260
+ // safari и firefox нужно чтобы атрибут `loading` был до `src`
261
+ //
262
+ // https://mihaly4.ru/image-loading-lazy-bug
263
+ loading,
260
264
  getRootRef: getRef,
261
265
  alt,
262
266
  className: classNames(
@@ -269,7 +273,6 @@ export const ImageBase: React.FC<ImageBaseProps> & {
269
273
  ),
270
274
  crossOrigin,
271
275
  decoding,
272
- loading,
273
276
  referrerPolicy,
274
277
  style: mergeStyle(
275
278
  keepAspectRatio
@@ -16,6 +16,18 @@ const platformClassNames = {
16
16
  vkcom: styles.vkcom,
17
17
  };
18
18
 
19
+ const defaultHoverMode = {
20
+ ios: 'background',
21
+ android: 'background',
22
+ vkcom: styles.hover,
23
+ };
24
+
25
+ const defaultActiveMode = {
26
+ ios: 'opacity',
27
+ android: 'background',
28
+ vkcom: styles.active,
29
+ };
30
+
19
31
  export interface PanelHeaderButtonProps extends Omit<TappableOmitProps, 'label'> {
20
32
  /**
21
33
  * Флаг для обозначения первичной кнопки
@@ -59,29 +71,15 @@ export const PanelHeaderButton = ({
59
71
  children,
60
72
  primary = false,
61
73
  label,
74
+ activeEffectDelay = 200,
75
+ hoverMode,
76
+ activeMode,
62
77
  ...restProps
63
78
  }: PanelHeaderButtonProps): React.ReactNode => {
64
79
  const isPrimitive = isPrimitiveReactNode(children);
65
80
  const isPrimitiveLabel = isPrimitiveReactNode(label);
66
81
  const platform = usePlatform();
67
82
 
68
- let hoverMode;
69
- let activeMode;
70
-
71
- switch (platform) {
72
- case 'ios':
73
- hoverMode = 'background';
74
- activeMode = 'opacity';
75
- break;
76
- case 'vkcom':
77
- hoverMode = styles.hover;
78
- activeMode = styles.active;
79
- break;
80
- default:
81
- hoverMode = 'background';
82
- activeMode = 'background';
83
- }
84
-
85
83
  if (process.env.NODE_ENV === 'development') {
86
84
  /* istanbul ignore next: проверка в dev mode, тест на hasAccessibleName() есть в lib/accessibility.test.tsx */
87
85
  const isAccessible = hasAccessibleName({
@@ -100,9 +98,9 @@ export const PanelHeaderButton = ({
100
98
  return (
101
99
  <Tappable
102
100
  Component={restProps.href ? 'a' : 'button'}
103
- hoverMode={hoverMode}
104
- activeEffectDelay={200}
105
- activeMode={activeMode}
101
+ activeEffectDelay={activeEffectDelay}
102
+ hoverMode={hoverMode ? hoverMode : defaultHoverMode[platform]}
103
+ activeMode={activeMode ? activeMode : defaultActiveMode[platform]}
106
104
  {...restProps}
107
105
  baseClassName={classNames(
108
106
  styles.host,
@@ -9,7 +9,7 @@ import {
9
9
  type UseFloatingElementProps,
10
10
  } from '../../hooks/useFloatingElement';
11
11
  import { animationFadeClassNames } from '../../lib/animation';
12
- import { getArrowCoordsByMiddlewareData, sizeMiddleware } from '../../lib/floating';
12
+ import { getArrowCoordsByMiddlewareData } from '../../lib/floating';
13
13
  import { type ReferenceProps } from '../../lib/floating/useFloatingWithInteractions/types';
14
14
  import { AppRootPortal } from '../AppRoot/AppRootPortal';
15
15
  import { TooltipBase } from '../TooltipBase/TooltipBase';
@@ -171,18 +171,6 @@ export const useTooltip = ({
171
171
  renderFloatingComponent,
172
172
  externalFloatingElementRef: getRootRef,
173
173
  remapReferenceProps,
174
-
175
- customMiddlewares: [
176
- sizeMiddleware({
177
- apply({ rects, elements, availableWidth }) {
178
- const width = Math.min(Math.ceil(rects.floating.width), Math.floor(availableWidth));
179
- Object.assign(elements.floating.style, {
180
- width: `${width}px`,
181
- });
182
- },
183
- padding: overflowPadding,
184
- }),
185
- ],
186
174
  });
187
175
 
188
176
  return {
@@ -13,6 +13,7 @@ import {
13
13
  tryToCheckIsDesktop,
14
14
  } from '../lib/adaptivity';
15
15
  import { matchMediaListAddListener, matchMediaListRemoveListener } from '../lib/matchMedia';
16
+ import { warnOnce } from '../lib/warnOnce';
16
17
  import { useMediaQueries } from './useMediaQueries';
17
18
  import { usePlatform } from './usePlatform';
18
19
 
@@ -33,14 +34,18 @@ export interface UseAdaptivityWithJSMediaQueries extends Required<BaseAdaptivity
33
34
  * > Лучше всего использовать для всплывающих окон, т.к. они вызываются только после загрузки
34
35
  * > страницы либо пользователем, либо программно.
35
36
  */
37
+ const warn = warnOnce('useAdaptivityWithJSMediaQueries');
38
+
36
39
  export const useAdaptivityWithJSMediaQueries = (): UseAdaptivityWithJSMediaQueries => {
37
40
  if (!canUseDOM) {
38
- // eslint-disable-next-line no-console
39
- console.error(`[useAdaptivityWithJSMediaQueries] Похоже, вы пытаетесь использовать хук вне браузера.
41
+ warn(
42
+ `Похоже, вы пытаетесь использовать хук вне браузера.
40
43
 
41
44
  Постарайтесь этого избегать, чтобы не было ошибок при гидратации: при SSR нет информации о размерах экрана.
42
45
 
43
- Используйте CSS Media Query или библиотеку по типу https://github.com/artsy/fresnel.`);
46
+ Используйте CSS Media Query или библиотеку по типу https://github.com/artsy/fresnel.`,
47
+ 'error',
48
+ );
44
49
  }
45
50
 
46
51
  const {