@megafon/ui-shared 3.2.1 → 3.3.0

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/CHANGELOG.md CHANGED
@@ -3,6 +3,25 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [3.3.0](https://github.com/MegafonWebLab/megafon-ui/compare/@megafon/ui-shared@3.2.2...@megafon/ui-shared@3.3.0) (2022-04-18)
7
+
8
+
9
+ ### Features
10
+
11
+ * **videobanner:** add proprety for mobile video, use picture for background image ([c21c927](https://github.com/MegafonWebLab/megafon-ui/commit/c21c9278d2ff1e192195a5113d43d50753fd02c5))
12
+
13
+
14
+
15
+
16
+
17
+ ## [3.2.2](https://github.com/MegafonWebLab/megafon-ui/compare/@megafon/ui-shared@3.2.1...@megafon/ui-shared@3.2.2) (2022-04-13)
18
+
19
+ **Note:** Version bump only for package @megafon/ui-shared
20
+
21
+
22
+
23
+
24
+
6
25
  ## [3.2.1](https://github.com/MegafonWebLab/megafon-ui/compare/@megafon/ui-shared@3.2.0...@megafon/ui-shared@3.2.1) (2022-04-11)
7
26
 
8
27
 
@@ -84,9 +84,8 @@ h5 {
84
84
  .mfui-video-banner__background-image {
85
85
  width: 100%;
86
86
  height: 100%;
87
- background-repeat: no-repeat;
88
- background-position: center;
89
- background-size: cover;
87
+ -o-object-fit: cover;
88
+ object-fit: cover;
90
89
  }
91
90
  .mfui-video-banner__content {
92
91
  position: relative;
@@ -78,6 +78,8 @@ interface IVideoBannerProps {
78
78
  videoSrc?: string;
79
79
  /** Тип видео */
80
80
  videoType?: VideoType;
81
+ /** Разрешить проигрывать видео на мобильном разрешении */
82
+ videoMobile?: boolean;
81
83
  /** Наличие звука в видео */
82
84
  isMuted?: boolean;
83
85
  /** Изображение для мобильного разрешения */
@@ -63,20 +63,17 @@ var VideoBanner = function VideoBanner(_ref2) {
63
63
  content = _ref2.content,
64
64
  _ref2$isMuted = _ref2.isMuted,
65
65
  isMuted = _ref2$isMuted === void 0 ? true : _ref2$isMuted,
66
- breadcrumbs = _ref2.breadcrumbs;
66
+ breadcrumbs = _ref2.breadcrumbs,
67
+ _ref2$videoMobile = _ref2.videoMobile,
68
+ videoMobile = _ref2$videoMobile === void 0 ? false : _ref2$videoMobile;
67
69
 
68
70
  var _React$useState = React.useState(true),
69
71
  _React$useState2 = _slicedToArray(_React$useState, 2),
70
72
  isMobile = _React$useState2[0],
71
73
  setIsMobile = _React$useState2[1];
72
74
 
73
- var _React$useState3 = React.useState(imageMobile),
74
- _React$useState4 = _slicedToArray(_React$useState3, 2),
75
- imageSrc = _React$useState4[0],
76
- setImageSrc = _React$useState4[1];
77
-
78
75
  var isVideoData = !!videoSrc && !!videoType;
79
- var isRenderVideo = !isMobile && isVideoData;
76
+ var isRenderVideo = (!isMobile || videoMobile) && isVideoData;
80
77
  var renderContent = React.useCallback(function (_ref3) {
81
78
  var title = _ref3.title,
82
79
  description = _ref3.description,
@@ -189,27 +186,8 @@ var VideoBanner = function VideoBanner(_ref2) {
189
186
  }
190
187
  }, [videoType, videoSrc, isMuted, classes.video]);
191
188
  React.useEffect(function () {
192
- var getImageSrc = function getImageSrc() {
193
- var windowWidth = window.innerWidth;
194
-
195
- switch (true) {
196
- case windowWidth >= breakpoints.DESKTOP_MIDDLE_START:
197
- return imageDesktopWide;
198
-
199
- case windowWidth >= breakpoints.DESKTOP_SMALL_START && windowWidth <= breakpoints.DESKTOP_SMALL_END:
200
- return imageDesktop;
201
-
202
- case windowWidth >= breakpoints.MOBILE_BIG_START && windowWidth <= breakpoints.MOBILE_BIG_END:
203
- return imageTablet;
204
-
205
- default:
206
- return imageMobile;
207
- }
208
- };
209
-
210
189
  var resizeHandler = function resizeHandler() {
211
190
  setIsMobile(window.innerWidth < breakpoints.DESKTOP_SMALL_START);
212
- setImageSrc(getImageSrc());
213
191
  };
214
192
 
215
193
  var resizeHandlerThrottled = throttle(resizeHandler, throttleTime.resize);
@@ -218,7 +196,7 @@ var VideoBanner = function VideoBanner(_ref2) {
218
196
  return function () {
219
197
  window.removeEventListener('resize', resizeHandlerThrottled);
220
198
  };
221
- }, [imageDesktop, imageDesktopWide, imageMobile, imageTablet]);
199
+ }, [setIsMobile]);
222
200
  return /*#__PURE__*/React.createElement("div", _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root), {
223
201
  className: cn([className, classes.root]),
224
202
  ref: rootRef
@@ -235,12 +213,20 @@ var VideoBanner = function VideoBanner(_ref2) {
235
213
  classes: {
236
214
  item: classes.breadcrumbs
237
215
  }
238
- }), content && renderContent(content), isRenderVideo && renderVideo(), !isRenderVideo && /*#__PURE__*/React.createElement("div", {
239
- style: {
240
- backgroundImage: "url(".concat(imageSrc, ")")
241
- },
242
- className: cn('background-image')
243
- }))));
216
+ }), content && renderContent(content), isRenderVideo && renderVideo(), !isRenderVideo && /*#__PURE__*/React.createElement("picture", null, /*#__PURE__*/React.createElement("source", {
217
+ media: "(min-width: ".concat(breakpoints.DESKTOP_MIDDLE_START, "px)"),
218
+ srcSet: imageDesktopWide
219
+ }), /*#__PURE__*/React.createElement("source", {
220
+ media: "(min-width: ".concat(breakpoints.DESKTOP_SMALL_START, "px)"),
221
+ srcSet: imageDesktop
222
+ }), /*#__PURE__*/React.createElement("source", {
223
+ media: "(min-width: ".concat(breakpoints.MOBILE_BIG_START, "px)"),
224
+ srcSet: imageTablet
225
+ }), /*#__PURE__*/React.createElement("img", {
226
+ className: cn('background-image'),
227
+ src: imageMobile,
228
+ alt: ""
229
+ })))));
244
230
  };
245
231
 
246
232
  VideoBanner.propTypes = {
@@ -263,6 +249,7 @@ VideoBanner.propTypes = {
263
249
  }), PropTypes.any])]),
264
250
  videoSrc: PropTypes.string,
265
251
  videoType: PropTypes.oneOf(Object.values(VideoType)),
252
+ videoMobile: PropTypes.bool,
266
253
  content: PropTypes.shape({
267
254
  title: PropTypes.string.isRequired,
268
255
  description: PropTypes.string.isRequired,
@@ -84,9 +84,8 @@ h5 {
84
84
  .mfui-video-banner__background-image {
85
85
  width: 100%;
86
86
  height: 100%;
87
- background-repeat: no-repeat;
88
- background-position: center;
89
- background-size: cover;
87
+ -o-object-fit: cover;
88
+ object-fit: cover;
90
89
  }
91
90
  .mfui-video-banner__content {
92
91
  position: relative;
@@ -78,6 +78,8 @@ interface IVideoBannerProps {
78
78
  videoSrc?: string;
79
79
  /** Тип видео */
80
80
  videoType?: VideoType;
81
+ /** Разрешить проигрывать видео на мобильном разрешении */
82
+ videoMobile?: boolean;
81
83
  /** Наличие звука в видео */
82
84
  isMuted?: boolean;
83
85
  /** Изображение для мобильного разрешения */
@@ -95,20 +95,17 @@ var VideoBanner = function VideoBanner(_ref2) {
95
95
  content = _ref2.content,
96
96
  _ref2$isMuted = _ref2.isMuted,
97
97
  isMuted = _ref2$isMuted === void 0 ? true : _ref2$isMuted,
98
- breadcrumbs = _ref2.breadcrumbs;
98
+ breadcrumbs = _ref2.breadcrumbs,
99
+ _ref2$videoMobile = _ref2.videoMobile,
100
+ videoMobile = _ref2$videoMobile === void 0 ? false : _ref2$videoMobile;
99
101
 
100
102
  var _React$useState = _react["default"].useState(true),
101
103
  _React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
102
104
  isMobile = _React$useState2[0],
103
105
  setIsMobile = _React$useState2[1];
104
106
 
105
- var _React$useState3 = _react["default"].useState(imageMobile),
106
- _React$useState4 = (0, _slicedToArray2["default"])(_React$useState3, 2),
107
- imageSrc = _React$useState4[0],
108
- setImageSrc = _React$useState4[1];
109
-
110
107
  var isVideoData = !!videoSrc && !!videoType;
111
- var isRenderVideo = !isMobile && isVideoData;
108
+ var isRenderVideo = (!isMobile || videoMobile) && isVideoData;
112
109
 
113
110
  var renderContent = _react["default"].useCallback(function (_ref3) {
114
111
  var title = _ref3.title,
@@ -224,27 +221,8 @@ var VideoBanner = function VideoBanner(_ref2) {
224
221
  }, [videoType, videoSrc, isMuted, classes.video]);
225
222
 
226
223
  _react["default"].useEffect(function () {
227
- var getImageSrc = function getImageSrc() {
228
- var windowWidth = window.innerWidth;
229
-
230
- switch (true) {
231
- case windowWidth >= _uiHelpers.breakpoints.DESKTOP_MIDDLE_START:
232
- return imageDesktopWide;
233
-
234
- case windowWidth >= _uiHelpers.breakpoints.DESKTOP_SMALL_START && windowWidth <= _uiHelpers.breakpoints.DESKTOP_SMALL_END:
235
- return imageDesktop;
236
-
237
- case windowWidth >= _uiHelpers.breakpoints.MOBILE_BIG_START && windowWidth <= _uiHelpers.breakpoints.MOBILE_BIG_END:
238
- return imageTablet;
239
-
240
- default:
241
- return imageMobile;
242
- }
243
- };
244
-
245
224
  var resizeHandler = function resizeHandler() {
246
225
  setIsMobile(window.innerWidth < _uiHelpers.breakpoints.DESKTOP_SMALL_START);
247
- setImageSrc(getImageSrc());
248
226
  };
249
227
 
250
228
  var resizeHandlerThrottled = (0, _lodash["default"])(resizeHandler, _throttleTime["default"].resize);
@@ -253,7 +231,7 @@ var VideoBanner = function VideoBanner(_ref2) {
253
231
  return function () {
254
232
  window.removeEventListener('resize', resizeHandlerThrottled);
255
233
  };
256
- }, [imageDesktop, imageDesktopWide, imageMobile, imageTablet]);
234
+ }, [setIsMobile]);
257
235
 
258
236
  return /*#__PURE__*/_react["default"].createElement("div", (0, _extends2["default"])({}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root), {
259
237
  className: cn([className, classes.root]),
@@ -271,12 +249,20 @@ var VideoBanner = function VideoBanner(_ref2) {
271
249
  classes: {
272
250
  item: classes.breadcrumbs
273
251
  }
274
- }), content && renderContent(content), isRenderVideo && renderVideo(), !isRenderVideo && /*#__PURE__*/_react["default"].createElement("div", {
275
- style: {
276
- backgroundImage: "url(".concat(imageSrc, ")")
277
- },
278
- className: cn('background-image')
279
- }))));
252
+ }), content && renderContent(content), isRenderVideo && renderVideo(), !isRenderVideo && /*#__PURE__*/_react["default"].createElement("picture", null, /*#__PURE__*/_react["default"].createElement("source", {
253
+ media: "(min-width: ".concat(_uiHelpers.breakpoints.DESKTOP_MIDDLE_START, "px)"),
254
+ srcSet: imageDesktopWide
255
+ }), /*#__PURE__*/_react["default"].createElement("source", {
256
+ media: "(min-width: ".concat(_uiHelpers.breakpoints.DESKTOP_SMALL_START, "px)"),
257
+ srcSet: imageDesktop
258
+ }), /*#__PURE__*/_react["default"].createElement("source", {
259
+ media: "(min-width: ".concat(_uiHelpers.breakpoints.MOBILE_BIG_START, "px)"),
260
+ srcSet: imageTablet
261
+ }), /*#__PURE__*/_react["default"].createElement("img", {
262
+ className: cn('background-image'),
263
+ src: imageMobile,
264
+ alt: ""
265
+ })))));
280
266
  };
281
267
 
282
268
  VideoBanner.propTypes = {
@@ -299,6 +285,7 @@ VideoBanner.propTypes = {
299
285
  }), PropTypes.any])]),
300
286
  videoSrc: PropTypes.string,
301
287
  videoType: PropTypes.oneOf(Object.values(VideoType)),
288
+ videoMobile: PropTypes.bool,
302
289
  content: PropTypes.shape({
303
290
  title: PropTypes.string.isRequired,
304
291
  description: PropTypes.string.isRequired,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@megafon/ui-shared",
3
- "version": "3.2.1",
3
+ "version": "3.3.0",
4
4
  "files": [
5
5
  "dist"
6
6
  ],
@@ -52,7 +52,7 @@
52
52
  "@babel/preset-env": "^7.8.6",
53
53
  "@babel/preset-react": "^7.8.3",
54
54
  "@babel/preset-typescript": "^7.8.3",
55
- "@megafon/ui-icons": "^1.2.0",
55
+ "@megafon/ui-icons": "^1.2.1",
56
56
  "@svgr/core": "^2.4.1",
57
57
  "@types/enzyme": "^3.10.5",
58
58
  "@types/enzyme-adapter-react-16": "^1.0.6",
@@ -82,7 +82,7 @@
82
82
  },
83
83
  "dependencies": {
84
84
  "@babel/runtime": "^7.8.4",
85
- "@megafon/ui-core": "^3.5.1",
85
+ "@megafon/ui-core": "^3.5.3",
86
86
  "@megafon/ui-helpers": "^2.1.2",
87
87
  "core-js": "^3.6.4",
88
88
  "htmr": "^0.9.2",
@@ -90,5 +90,5 @@
90
90
  "prop-types": "^15.7.2",
91
91
  "swiper": "^6.5.6"
92
92
  },
93
- "gitHead": "f5ab6a57d56a26ac5ca11697e1ca650c053b6214"
93
+ "gitHead": "7bfc4700247bbc8c96e1878511b4c5919abb6325"
94
94
  }