Skip to content

Commit 5a783e2

Browse files
committed
Merge branch 'MC-930-Row-Appearances' into cms-team-1-delivery
2 parents cde9f64 + 7c467d8 commit 5a783e2

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+103
-106
lines changed

app/code/Magento/PageBuilder/Setup/DataConverter/Renderer/Row.php

Lines changed: 29 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -34,53 +34,48 @@ public function render(array $itemData, array $additionalData = []) : string
3434
$appearance = (isset($formData['template'])
3535
&& $formData['template'] === 'full-width.phtml') ? 'full-width' : 'contained';
3636

37-
// Handle adding the wrapper element attributes when using the contained appearance
38-
$rootElementAttributes = [];
39-
if ($appearance === 'contained') {
40-
$rootElementAttributes = [
41-
'data-element' => 'main',
42-
'class' => $itemData['formData']['css_classes'] ?? '',
43-
];
44-
} elseif ($appearance === 'full-width') {
45-
$rootElementAttributes = [
46-
'data-element' => 'main',
47-
'data-role' => 'row',
48-
'data-appearance' => 'full-width',
49-
'class' => $itemData['formData']['css_classes'] ?? '',
50-
];
51-
}
52-
5337
$style = $this->styleExtractor->extractStyle($formData);
54-
if ($style) {
55-
$rootElementAttributes['style'] = $style;
56-
}
5738

5839
$childrenHtml = (isset($additionalData['children']) ? $additionalData['children'] : '');
5940

60-
// Wrap the children when the layout is full width
6141
if ($appearance === 'full-width') {
62-
$childrenHtml = '<div class="row-full-width-inner" data-element="inner">' . $childrenHtml . '</div>';
42+
return $this->renderElementWithAttributes(
43+
[
44+
'data-element' => 'main',
45+
'data-role' => 'row',
46+
'data-appearance' => 'full-width',
47+
'class' => $itemData['formData']['css_classes'] ?? '',
48+
'style' => $style ?? null
49+
],
50+
$this->renderElementWithAttributes(
51+
[
52+
'data-element' => 'inner',
53+
'class' => 'row-full-width-inner',
54+
],
55+
$childrenHtml
56+
)
57+
);
6358
}
6459

65-
$rootElementHtml = $this->renderElementWithAttributes(
66-
$rootElementAttributes,
67-
$childrenHtml
68-
);
69-
70-
// Wrap the root element in our wrapper for contained appearances
7160
if ($appearance === 'contained') {
7261
return $this->renderElementWithAttributes(
7362
[
74-
'data-element' => 'wrapper',
63+
'data-element' => 'main',
7564
'data-role' => 'row',
7665
'data-appearance' => 'contained',
77-
'class' => 'row-contained',
7866
],
79-
$rootElementHtml
67+
$this->renderElementWithAttributes(
68+
[
69+
'data-element' => 'inner',
70+
'class' => $itemData['formData']['css_classes'] ?? '',
71+
'style' => $style ?? null
72+
],
73+
$childrenHtml
74+
)
8075
);
8176
}
8277

83-
return $rootElementHtml;
78+
return '';
8479
}
8580

8681
/**
@@ -95,7 +90,9 @@ private function renderElementWithAttributes(array $attributes, string $children
9590
$rootElementHtml = '<div';
9691
foreach ($attributes as $attributeName => $attributeValue) {
9792
$attributeValue = trim($attributeValue);
98-
$rootElementHtml .= $attributeValue ? " $attributeName=\"$attributeValue\"" : '';
93+
if ($attributeValue) {
94+
$rootElementHtml .= $attributeValue ? " $attributeName=\"$attributeValue\"" : '';
95+
}
9996
}
10097
$rootElementHtml .= '>' . $childrenHtml . '</div>';
10198
return $rootElementHtml;
Binary file not shown.
Binary file not shown.

app/code/Magento/PageBuilder/docs/master-format.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ PageBuilder uses XHTML with inline styles and data attributes as the master form
6060

6161
## Row
6262

63-
#### Contained:
63+
Contained:
6464
```
6565
<div class="row-contained-wrapper" data-element="wrapper" data-role="row" data-appearance="contained">
6666
<div style="..."></div>
@@ -75,21 +75,21 @@ PageBuilder uses XHTML with inline styles and data attributes as the master form
7575
### main element
7676

7777
Attributes
78-
4. data-enable-parallax [1, 0]
79-
5. data-parallax-speed [0-1]
80-
6. data-background-color-format [hex, rgb, hsl, hsv, name, none]
81-
7. class
78+
1. data-enable-parallax [1, 0]
79+
2. data-parallax-speed [0-1]
80+
3. data-background-color-format [hex, rgb, hsl, hsv, name, none]
81+
4. class
8282

83-
#### Full Width:
83+
Full Width:
8484
```
8585
<div data-element="main" data-role="row" data-appearance="contained" style="...">
8686
<div data-element="inner" class="row-full-width-inner"></div>
8787
</div>
8888
```
8989

90-
#### Full Bleed:
90+
Full Bleed:
9191
```
92-
<div data-element="main" data-role="row" data-appearance="contained" style="..."></div>
92+
<div data-element="main" data-role="row" data-appearance="full-bleed" style="..."></div>
9393
```
9494

9595
### main element

app/code/Magento/PageBuilder/view/adminhtml/web/template/content-type/row/contained/master.html

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@
55
*/
66
-->
77

8-
<div attr="data.wrapper.attributes"
9-
ko-style="data.wrapper.style"
10-
css="data.wrapper.css">
11-
<div attr="data.main.attributes"
12-
ko-style="Object.assign(data.container.style(), data.main.style())"
13-
css="data.main.css">
8+
<div attr="data.main.attributes"
9+
ko-style="data.main.style"
10+
css="data.main.css">
11+
<div attr="data.inner.attributes"
12+
ko-style="Object.assign(data.container.style(), data.inner.style())"
13+
css="data.inner.css">
1414
<render args="renderChildTemplate"/>
1515
</div>
1616
</div>

app/code/Magento/PageBuilder/view/adminhtml/web/template/content-type/row/contained/preview.html

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55
*/
66
-->
77

8-
<div attr="data.wrapper.attributes"
9-
ko-style="data.wrapper.style"
10-
css="data.wrapper.css">
8+
<div attr="data.main.attributes"
9+
ko-style="data.main.style"
10+
css="data.main.css">
1111
<div class="pagebuilder-content-type type-container pagebuilder-row children-min-height"
12-
attr="data.main.attributes"
13-
ko-style="data.main.style"
14-
css="Object.assign(data.main.css(), {'empty-container': parent.children().length == 0, 'jarallax': data.main.attributes()['data-enable-parallax'] == 1})"
12+
attr="data.inner.attributes"
13+
ko-style="data.inner.style"
14+
css="Object.assign(data.inner.css(), {'empty-container': parent.children().length == 0, 'jarallax': data.inner.attributes()['data-enable-parallax'] == 1})"
1515
event="{ mouseover: onMouseOver, mouseout: onMouseOut }, mouseoverBubble: false"
1616
afterRender="initParallax">
1717
<render args="getOptions().template"/>

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,13 @@
3131
reader="Magento_PageBuilder/js/master-format/read/configurable">
3232
<data_mapping>
3333
<elements>
34-
<element name="wrapper">
34+
<element name="main">
3535
<attributes>
3636
<attribute name="name" source="data-role"/>
3737
<attribute name="appearance" source="data-appearance"/>
3838
</attributes>
3939
</element>
40-
<element name="main">
40+
<element name="inner">
4141
<style_properties>
4242
<property name="background_color" source="background_color" converter="Magento_PageBuilder/js/converter/style/color"/>
4343
<property name="background_image" source="background_image" converter="Magento_PageBuilder/js/converter/style/background-image" preview_converter="Magento_PageBuilder/js/converter/style/preview/background-image"/>
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
<div data-element="wrapper" data-role="row" data-appearance="contained" class="row-contained"><div data-element="main"><div data-element="main" data-role="accordion" data-appearance="default" data-mage-init="{&quot;accordion&quot;:{&quot;active&quot;:[0],&quot;collapsibleElement&quot;:&quot;[data-collapsible=true]&quot;,&quot;content&quot;:&quot;[data-content=true]&quot;}}" class="pagebuilder-accordion one two"><div data-collapsible="true" class="accordion-collapsible" data-open-on-load="0"><div data-role="trigger"><span>Accordion Title</span></div></div><div data-content="true" class="accordion-content"><p>Accordion Contents</p></div></div></div></div>
1+
<div data-element="main" data-role="row" data-appearance="contained"><div data-element="inner"><div data-element="main" data-role="accordion" data-appearance="default" data-mage-init="{&quot;accordion&quot;:{&quot;active&quot;:[0],&quot;collapsibleElement&quot;:&quot;[data-collapsible=true]&quot;,&quot;content&quot;:&quot;[data-content=true]&quot;}}" class="pagebuilder-accordion one two"><div data-collapsible="true" class="accordion-collapsible" data-open-on-load="0"><div data-role="trigger"><span>Accordion Title</span></div></div><div data-content="true" class="accordion-content"><p>Accordion Contents</p></div></div></div></div>
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
<div data-element="wrapper" data-role="row" data-appearance="contained" class="row-contained"><div data-element="main"><div data-element="main" data-role="accordion" data-appearance="default" data-mage-init="{&quot;accordion&quot;:{&quot;active&quot;:[1],&quot;collapsibleElement&quot;:&quot;[data-collapsible=true]&quot;,&quot;content&quot;:&quot;[data-content=true]&quot;}}" class="pagebuilder-accordion one two"><div data-collapsible="true" class="accordion-collapsible" data-open-on-load="0"><div data-role="trigger"><span>Title 1</span></div></div><div data-content="true" class="accordion-content"><p>Content 1</p></div><div data-collapsible="true" class="accordion-collapsible" data-open-on-load="1"><div data-role="trigger"><span>Title 2</span></div></div><div data-content="true" class="accordion-content"><p>Content 2</p></div></div></div></div>
1+
<div data-element="main" data-role="row" data-appearance="contained"><div data-element="inner"><div data-element="main" data-role="accordion" data-appearance="default" data-mage-init="{&quot;accordion&quot;:{&quot;active&quot;:[1],&quot;collapsibleElement&quot;:&quot;[data-collapsible=true]&quot;,&quot;content&quot;:&quot;[data-content=true]&quot;}}" class="pagebuilder-accordion one two"><div data-collapsible="true" class="accordion-collapsible" data-open-on-load="0"><div data-role="trigger"><span>Title 1</span></div></div><div data-content="true" class="accordion-content"><p>Content 1</p></div><div data-collapsible="true" class="accordion-collapsible" data-open-on-load="1"><div data-role="trigger"><span>Title 2</span></div></div><div data-content="true" class="accordion-content"><p>Content 2</p></div></div></div></div>
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
<div data-element="wrapper" data-role="row" data-appearance="contained" class="row-contained"><div data-element="main"><div data-element="main" data-role="slider" data-appearance="default" data-autoplay="0" data-autoplay-speed="0" data-fade="0" data-is-infinite="0" data-show-arrows="0" data-show-dots="0" class="one two pagebuilder-slider" style="text-align: left; margin: 2px 3px 4px 1px; padding: 6px 7px 8px 5px;"><div data-element="main" data-role="slide" data-appearance="poster" class="one two" style="margin: 2px 3px 4px 1px;"><a data-element="link" href="http://domain.com/"><div data-element="mobile_image" class="pagebuilder-slide-wrapper pagebuilder-mobile-only" style="text-align: left; margin: 2px 3px 4px 1px; padding: 6px 7px 8px 5px;"><div data-element="overlay" class="pagebuilder-overlay pagebuilder-poster-overlay" data-overlay-color="transparent" style="padding: 6px 7px 8px 5px;"><div class="pagebuilder-poster-content"><div data-element="content"><h3>Slide title</h3><div><p>Slide <strong>content</strong></p></div></div><button data-element="button" type="button" class="pagebuilder-slide-button pagebuilder-button-primary" style="opacity: 1; visibility: visible;">Domain</button></div></div></div><div data-element="desktop_image" class="pagebuilder-slide-wrapper pagebuilder-mobile-hidden" style="text-align: left; margin: 2px 3px 4px 1px; padding: 6px 7px 8px 5px;"><div data-element="overlay" class="pagebuilder-overlay pagebuilder-poster-overlay" data-overlay-color="transparent" style="padding: 6px 7px 8px 5px;"><div class="pagebuilder-poster-content"><div data-element="content"><h3>Slide title</h3><div><p>Slide <strong>content</strong></p></div></div><button data-element="button" type="button" class="pagebuilder-slide-button pagebuilder-button-primary" style="opacity: 1; visibility: visible;">Domain</button></div></div></div></a></div></div></div></div>
1+
<div data-element="main" data-role="row" data-appearance="contained"><div data-element="inner"><div data-element="main" data-role="slider" data-appearance="default" data-autoplay="0" data-autoplay-speed="0" data-fade="0" data-is-infinite="0" data-show-arrows="0" data-show-dots="0" class="one two pagebuilder-slider" style="text-align: left; margin: 2px 3px 4px 1px; padding: 6px 7px 8px 5px;"><div data-element="main" data-role="slide" data-appearance="poster" class="one two" style="margin: 2px 3px 4px 1px;"><a data-element="link" href="http://domain.com/"><div data-element="mobile_image" class="pagebuilder-slide-wrapper pagebuilder-mobile-only" style="text-align: left; margin: 2px 3px 4px 1px; padding: 6px 7px 8px 5px;"><div data-element="overlay" class="pagebuilder-overlay pagebuilder-poster-overlay" data-overlay-color="transparent" style="padding: 6px 7px 8px 5px;"><div class="pagebuilder-poster-content"><div data-element="content"><h3>Slide title</h3><div><p>Slide <strong>content</strong></p></div></div><button data-element="button" type="button" class="pagebuilder-slide-button pagebuilder-button-primary" style="opacity: 1; visibility: visible;">Domain</button></div></div></div><div data-element="desktop_image" class="pagebuilder-slide-wrapper pagebuilder-mobile-hidden" style="text-align: left; margin: 2px 3px 4px 1px; padding: 6px 7px 8px 5px;"><div data-element="overlay" class="pagebuilder-overlay pagebuilder-poster-overlay" data-overlay-color="transparent" style="padding: 6px 7px 8px 5px;"><div class="pagebuilder-poster-content"><div data-element="content"><h3>Slide title</h3><div><p>Slide <strong>content</strong></p></div></div><button data-element="button" type="button" class="pagebuilder-slide-button pagebuilder-button-primary" style="opacity: 1; visibility: visible;">Domain</button></div></div></div></a></div></div></div></div>

0 commit comments

Comments
 (0)