@megafon/ui-shared 3.2.2 → 3.3.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/CHANGELOG.md +19 -0
- package/dist/es/components/VideoBanner/VideoBanner.css +2 -3
- package/dist/es/components/VideoBanner/VideoBanner.d.ts +2 -0
- package/dist/es/components/VideoBanner/VideoBanner.js +20 -33
- package/dist/lib/components/VideoBanner/VideoBanner.css +2 -3
- package/dist/lib/components/VideoBanner/VideoBanner.d.ts +2 -0
- package/dist/lib/components/VideoBanner/VideoBanner.js +20 -33
- package/package.json +3 -3
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.1](https://github.com/MegafonWebLab/megafon-ui/compare/@megafon/ui-shared@3.3.0...@megafon/ui-shared@3.3.1) (2022-04-25)
|
7
|
+
|
8
|
+
**Note:** Version bump only for package @megafon/ui-shared
|
9
|
+
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
|
14
|
+
# [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)
|
15
|
+
|
16
|
+
|
17
|
+
### Features
|
18
|
+
|
19
|
+
* **videobanner:** add proprety for mobile video, use picture for background image ([c21c927](https://github.com/MegafonWebLab/megafon-ui/commit/c21c9278d2ff1e192195a5113d43d50753fd02c5))
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
|
24
|
+
|
6
25
|
## [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)
|
7
26
|
|
8
27
|
**Note:** Version bump only for package @megafon/ui-shared
|
@@ -84,9 +84,8 @@ h5 {
|
|
84
84
|
.mfui-video-banner__background-image {
|
85
85
|
width: 100%;
|
86
86
|
height: 100%;
|
87
|
-
|
88
|
-
|
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
|
-
}, [
|
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("
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
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
|
-
|
88
|
-
|
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
|
-
}, [
|
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("
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
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.
|
3
|
+
"version": "3.3.1",
|
4
4
|
"files": [
|
5
5
|
"dist"
|
6
6
|
],
|
@@ -82,7 +82,7 @@
|
|
82
82
|
},
|
83
83
|
"dependencies": {
|
84
84
|
"@babel/runtime": "^7.8.4",
|
85
|
-
"@megafon/ui-core": "^3.
|
85
|
+
"@megafon/ui-core": "^3.6.0",
|
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": "
|
93
|
+
"gitHead": "87e4483070e37f017a90358648860a5f4139bae1"
|
94
94
|
}
|