Skip to content

Commit 0907a15

Browse files
committed
PB-95: Video background for Row
1 parent ed15297 commit 0907a15

File tree

11 files changed

+64
-37
lines changed

11 files changed

+64
-37
lines changed

app/code/Magento/PageBuilder/view/adminhtml/pagebuilder/content_type/row.xml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,11 @@
7575
<converter name="background_type" component="Magento_PageBuilder/js/mass-converter/background-type">
7676
<config>
7777
<item name="attribute_name" value="background_type"/>
78+
<item name="desktop_image_variable" value="background_image"/>
79+
<item name="mobile_image_variable" value="mobile_image"/>
80+
<item name="video_source_variable" value="video_source"/>
81+
<item name="video_fallback_image_variable" value="video_fallback_image"/>
82+
<item name="video_overlay_color_variable" value="video_overlay_color"/>
7883
</config>
7984
</converter>
8085
<converter name="background_images" component="Magento_PageBuilder/js/mass-converter/background-images">
@@ -143,6 +148,11 @@
143148
<converter name="background_type" component="Magento_PageBuilder/js/mass-converter/background-type">
144149
<config>
145150
<item name="attribute_name" value="background_type"/>
151+
<item name="desktop_image_variable" value="background_image"/>
152+
<item name="mobile_image_variable" value="mobile_image"/>
153+
<item name="video_source_variable" value="video_source"/>
154+
<item name="video_fallback_image_variable" value="video_fallback_image"/>
155+
<item name="video_overlay_color_variable" value="video_overlay_color"/>
146156
</config>
147157
</converter>
148158
</converters>
@@ -204,6 +214,11 @@
204214
<converter name="background_type" component="Magento_PageBuilder/js/mass-converter/background-type">
205215
<config>
206216
<item name="attribute_name" value="background_type"/>
217+
<item name="desktop_image_variable" value="background_image"/>
218+
<item name="mobile_image_variable" value="mobile_image"/>
219+
<item name="video_source_variable" value="video_source"/>
220+
<item name="video_fallback_image_variable" value="video_fallback_image"/>
221+
<item name="video_overlay_color_variable" value="video_overlay_color"/>
207222
</config>
208223
</converter>
209224
</converters>

app/code/Magento/PageBuilder/view/adminhtml/ui_component/pagebuilder_base_form_with_background_video.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@
8888
<dataType>text</dataType>
8989
<label translate="true">Video URL</label>
9090
<tooltip>
91-
<description translate="true">Video URLs can include web URLs to files with video extensions (such as https://company/videos/myvideo.mp4) or embed codes from YouTube or Vimeo.</description>
91+
<description translate="true">Video URLs can be links to videos on YouTube or Vimeo, or HTTP(S) links to files with valid video extensions (we recommend .mp4)</description>
9292
</tooltip>
9393
<imports>
9494
<link name="visible">${$.parentName}.background_type:videoVisible</link>

app/code/Magento/PageBuilder/view/adminhtml/web/js/content-type/row/preview.js

Lines changed: 9 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/code/Magento/PageBuilder/view/adminhtml/web/js/form/element/validator-rules-mixin.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ define([
171171
href.match(/\.(mp4|ogv|webm)(?!\w)/)
172172
);
173173
},
174-
$.mage.__('Please enter a valid video URL. Valid URLs have a video file extension (.mp4, .webm, .ogv) or an embed code from YouTube or Vimeo.')//eslint-disable-line max-len
174+
$.mage.__('Please enter a valid video URL. Valid URLs have a video file extension (.mp4, .webm, .ogv) or links to videos on YouTube or Vimeo.')//eslint-disable-line max-len
175175
);
176176

177177
validator.addRule(

app/code/Magento/PageBuilder/view/adminhtml/web/js/mass-converter/background-type.js

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/code/Magento/PageBuilder/view/adminhtml/web/ts/js/content-type-config.types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ export interface DataMappingAttributesInterface {
7979
var?: string;
8080
name: string;
8181
reader?: string;
82-
value?: string|boolean;
82+
value?: string;
8383
converter?: string;
8484
preview_converter?: string;
8585
persistence_mode?: string;

app/code/Magento/PageBuilder/view/adminhtml/web/ts/js/content-type/row/preview.ts

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import "jarallax";
77
import "jarallaxVideo";
8-
import Player from "vimeo";
8+
import "vimeoWrapper";
99
import $ from "jquery";
1010
import ko from "knockout";
1111
import events from "Magento_PageBuilder/js/events";
@@ -20,10 +20,6 @@ import {ContentTypeMountEventParamsInterface, ContentTypeReadyEventParamsInterfa
2020
import ObservableUpdater from "../observable-updater";
2121
import PreviewCollection from "../preview-collection";
2222

23-
declare global {
24-
interface Window { Vimeo: any; }
25-
}
26-
2723
/**
2824
* @api
2925
*/
@@ -43,14 +39,18 @@ export default class Preview extends PreviewCollection {
4339
// store/apply correct style after destroying, as jarallax incorrectly overrides it with stale value
4440
const style = this.element.getAttribute("style") ||
4541
this.element.getAttribute("data-jarallax-original-styles");
42+
const backgroundImage = (this.contentType.dataStore.get("background_image") as any[]);
4643
jarallax(this.element, "destroy");
4744
this.element.setAttribute("style", style);
45+
if (this.contentType.dataStore.get("background_type") as string !== "video" && backgroundImage) {
46+
this.element.style.backgroundImage = backgroundImage;
47+
}
4848
} catch (e) {
4949
// Failure of destroying is acceptable
5050
}
5151
if (this.element &&
5252
$(this.element).hasClass("jarallax") &&
53-
(this.contentType.dataStore.get("background_type") as string) !== 'video' &&
53+
(this.contentType.dataStore.get("background_type") as string) !== "video" &&
5454
(this.contentType.dataStore.get("background_image") as any[]).length
5555
) {
5656
_.defer(() => {
@@ -76,10 +76,9 @@ export default class Preview extends PreviewCollection {
7676
}
7777

7878
if (this.element &&
79-
(this.element.dataset.backgroundType as string) === 'video' &&
79+
(this.element.dataset.backgroundType as string) === "video" &&
8080
(this.element.dataset.videoSrc as string).length
8181
) {
82-
window.Vimeo = window.Vimeo || {"Player": Player};
8382
const parallaxSpeed = (this.contentType.dataStore.get("enable_parallax") as string) === "1"
8483
? Number.parseFloat(this.contentType.dataStore.get("parallax_speed") as string)
8584
: 1;

app/code/Magento/PageBuilder/view/adminhtml/web/ts/js/mass-converter/background-type.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,15 @@ export default class BackgroundType implements ConverterInterface {
2626
* @returns {object}
2727
*/
2828
public toDom(data: ConverterDataInterface, config: ConverterConfigInterface): ConverterDataInterface {
29-
const backgroundType = get(data, config.attribute_name);
29+
const backgroundType = get<string>(data, config.attribute_name);
3030

3131
if (backgroundType === 'video') {
32-
set(data, "background_image", []);
33-
set(data, "mobile_image", []);
32+
set(data, config.desktop_image_variable, []);
33+
set(data, config.mobile_image_variable, []);
3434
} else if (backgroundType === 'image') {
35-
set(data, "video_source", "");
36-
set(data, "video_fallback_image", []);
37-
set(data, "video_overlay_color", "");
35+
set(data, config.video_source_variable, null);
36+
set(data, config.video_fallback_image_variable, []);
37+
set(data, config.video_overlay_color_variable, "");
3838
}
3939

4040
return data;

app/code/Magento/PageBuilder/view/base/requirejs-config.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,16 @@ var config = {
99
'slick': 'Magento_PageBuilder/js/resource/slick/slick',
1010
'jarallax': 'Magento_PageBuilder/js/resource/jarallax/jarallax',
1111
'jarallaxVideo': 'Magento_PageBuilder/js/resource/jarallax/jarallax-video',
12-
'vimeo': 'Magento_PageBuilder/js/resource/vimeo/player'
12+
'vimeo': 'Magento_PageBuilder/js/resource/vimeo/player',
13+
'vimeoWrapper': 'Magento_PageBuilder/js/resource/vimeo/vimeo-wrapper'
1314
}
1415
},
1516
shim: {
1617
'Magento_PageBuilder/js/resource/slick/slick': {
1718
deps: ['jquery']
1819
},
1920
'Magento_PageBuilder/js/resource/jarallax/jarallax-video': {
20-
deps: ['jarallax', 'vimeo']
21+
deps: ['jarallax', 'vimeoWrapper']
2122
},
2223
'Magento_PageBuilder/js/resource/vimeo/player': {
2324
exports: ['Player']

app/code/Magento/PageBuilder/view/base/web/js/content-type/row/appearance/default/widget.js

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44
*/
55
define([
66
'jquery',
7-
'vimeo',
87
'jarallax',
9-
'jarallaxVideo'
10-
], function ($, Player) {
8+
'jarallaxVideo',
9+
'vimeoWrapper'
10+
], function ($) {
1111
'use strict';
1212

1313
return function (config, element) {
@@ -28,10 +28,6 @@ define([
2828
parallaxSpeed = parallaxSpeed || parseFloat($element.data('parallaxSpeed'));
2929

3030
if ($element.data('background-type') === 'video') {
31-
window.Vimeo = window.Vimeo || {
32-
'Player': Player
33-
};
34-
3531
parallaxSpeed = $element.data('enableParallax') !== 1 ? 1 : parallaxSpeed;
3632

3733
jarallaxConfig = {

0 commit comments

Comments
 (0)