Skip to content

Commit 82bc558

Browse files
committed
Merge branch '1.0.0-beta-release' into MC-3329
2 parents 126621f + 27243d5 commit 82bc558

File tree

174 files changed

+2789
-816
lines changed

Some content is hidden

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

174 files changed

+2789
-816
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,5 @@
66
static-error-log.xml
77
.DS_Store
88
.vscode
9-
.history/
9+
.history/
10+
/yarn-error.log

app/code/Magento/PageBuilder/Model/Stage/Config/UiComponentConfig.php

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -49,21 +49,44 @@ public function getFields($componentName) : array
4949
function ($item, $key) {
5050
// Determine if this item has a formElement key
5151
if (isset($item[Converter::DATA_ARGUMENTS_KEY]['data']['config']['formElement'])) {
52-
$elementConfig
53-
= $item[Converter::DATA_ARGUMENTS_KEY]['data']['config'];
54-
return [
55-
$key => [
56-
'default' => (isset($elementConfig['default'])
57-
? $elementConfig['default'] : '')
58-
]
59-
];
52+
$elementConfig = $item[Converter::DATA_ARGUMENTS_KEY]['data']['config'];
53+
// If the field has a dataScope use that for the key instead of the name
54+
if (isset($elementConfig['dataScope'])) {
55+
$key = $elementConfig['dataScope'];
56+
}
57+
$field = [];
58+
// Generate our nested field array with defaults supporting dot notation within the key
59+
$this->generateFieldArray(
60+
$field,
61+
$key . ".default",
62+
(isset($elementConfig['default']) ? $elementConfig['default'] : '')
63+
);
64+
return $field;
6065
}
6166
}
6267
);
6368

6469
return $fields;
6570
}
6671

72+
/**
73+
* Recursively generate our field array, allowing for dot notation within the key
74+
*
75+
* @param array $array
76+
* @param string $path
77+
* @param string|array $value
78+
*/
79+
private function generateFieldArray(array &$array, string $path, $value)
80+
{
81+
$keys = explode(".", $path);
82+
83+
foreach ($keys as $key) {
84+
$array = &$array[$key];
85+
}
86+
87+
$array = $value;
88+
}
89+
6790
/**
6891
* Iterate over components within the configuration and run a defined callback function
6992
*
@@ -84,7 +107,7 @@ private function iterateComponents($config, $callback, $key = false) : array
84107
)
85108
) {
86109
foreach ($config[Converter::DATA_COMPONENTS_KEY] as $key => $child) {
87-
$values = array_merge(
110+
$values = array_merge_recursive(
88111
$values,
89112
$this->iterateComponents($child, $callback, $key) ?: []
90113
);

app/code/Magento/PageBuilder/Test/Mftf/ActionGroup/ElementPositioningActionGroup.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
-->
88

99
<actionGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
10-
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
10+
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Test/etc/actionGroupSchema.xsd">
1111
<!-- Element Position -->
1212
<actionGroup name="validatePositionRightWithinContainer">
1313
<arguments>

app/code/Magento/PageBuilder/Test/Mftf/Data/AdvancedData.xml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616
<data key="value"/>
1717
<data key="optionsList">[Default, Left, Center, Right]</data>
1818
</entity>
19+
<entity name="PageBuilderAdvancedAlignmentPropertyStart" type="pagebuilder_advanced_alignment_property">
20+
<data key="value">start</data>
21+
</entity>
1922
<entity name="PageBuilderAdvancedAlignmentPropertyLeft" type="pagebuilder_advanced_alignment_property">
2023
<data key="name">Alignment</data>
2124
<data key="section">advanced</data>
@@ -345,6 +348,16 @@
345348
<data key="marginBottom">1</data>
346349
<data key="marginLeft">1</data>
347350
</entity>
351+
<entity name="PageBuilderMarginsProperty_50" type="pagebuilder_margins_property">
352+
<data key="name">Margins and Padding</data>
353+
<data key="section">advanced</data>
354+
<data key="fieldName">margins_and_padding</data>
355+
<data key="value">50</data>
356+
<data key="marginTop">50</data>
357+
<data key="marginRight">50</data>
358+
<data key="marginBottom">50</data>
359+
<data key="marginLeft">50</data>
360+
</entity>
348361
<entity name="PageBuilderMarginsProperty500" type="pagebuilder_margins_property">
349362
<data key="name">Margins and Padding</data>
350363
<data key="section">advanced</data>

app/code/Magento/PageBuilder/Test/Mftf/Section/PageBuilderBannerSection.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
xsi:noNamespaceSchemaLocation="urn:magento:mftf:Page/etc/SectionObject.xsd">
1111
<section name="BannerOnFrontend">
1212
<element name="base" type="button" selector="(//div[@data-role='banner'])[{{arg1}}]" parameterized="true"/>
13+
<element name="baseCSS" type="button" selector="[data-role=banner]"/>
1314
<element name="baseJS" type="button" selector="document.querySelectorAll('[data-role=banner] div.pagebuilder-banner-wrapper')[{{arg1}} - 1]" parameterized="true"/>
1415
<element name="hidden" type="button" selector="(//div[@data-role='banner'])[{{arg1}}][contains(@style, 'display: none')]" parameterized="true"/>
1516
<element name="notHidden" type="button" selector="(//div[@data-role='banner'])[{{arg1}}][not(contains(@style, 'display: none'))]" parameterized="true"/>
@@ -71,6 +72,7 @@
7172
</section>
7273
<section name="BannerOnBackend">
7374
<element name="base" type="button" selector="(//div[contains(@class,'pagebuilder-banner') and contains(@class,'pagebuilder-content-type')])[{{arg1}}]" parameterized="true"/>
75+
<element name="baseCSS" type="button" selector=".pagebuilder-banner.pagebuilder-content-type"/>
7476
<element name="hidden" type="button" selector="(//div[contains(@class,'pagebuilder-banner') and contains(@class,'pagebuilder-content-type')])[{{arg1}}]/ancestor::*[contains(@class, 'pagebuilder-content-type-wrapper') and contains(@class, 'pagebuilder-content-type-hidden')]" parameterized="true"/>
7577
<element name="notHidden" type="button" selector="(//div[contains(@class,'pagebuilder-banner') and contains(@class,'pagebuilder-content-type')])[{{arg1}}]/parent::*[contains(@class, 'pagebuilder-content-type-wrapper') and not(contains(@class, 'pagebuilder-content-type-hidden'))][1]" parameterized="true"/>
7678
<element name="elementJS" type="button" selector="document.querySelectorAll('[data-role=banner]')[{{arg1}} - 1]" parameterized="true"/>

app/code/Magento/PageBuilder/Test/Mftf/Section/PageBuilderVideoSection.xml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,19 +20,19 @@
2020
<element name="hidden" type="text" selector="(//div[contains(@class,'pagebuilder-video-wrapper')])[{{arg1}}]/ancestor::*[contains(@class, 'pagebuilder-content-type-wrapper') and contains(@class, 'pagebuilder-content-type-hidden')]" parameterized="true"/>
2121
<element name="notHidden" type="text" selector="(//div[contains(@class,'pagebuilder-content-type') and contains(@class,'pagebuilder-video')])[{{arg1}}]/parent::*[contains(@class, 'pagebuilder-content-type-wrapper') and not(contains(@class, 'pagebuilder-content-type-hidden'))][1]" parameterized="true"/>
2222
<element name="source" type="text" selector="(//div[contains(@class,'pagebuilder-video-wrapper')])[{{arg1}}]//iframe[@src='{{arg2}}']" parameterized="true"/>
23-
<element name="width" type="text" selector="(//div[contains(@class,'pagebuilder-video-wrapper')])[{{arg1}}][contains(@style,'max-width: {{arg2}}px;')]" parameterized="true"/>
23+
<element name="width" type="text" selector="(//div[contains(@class,'pagebuilder-video-inner')])[{{arg1}}][contains(@style,'max-width: {{arg2}}px;')]" parameterized="true"/>
2424
<element name="noWidth" type="text" selector="(//div[contains(@class,'pagebuilder-video-wrapper')])[{{arg1}}][not(starts-with(@style,'width:')) and not(contains(@style,' width:'))][contains(@class,'pagebuilder-video-wrapper')]" parameterized="true"/>
2525
<!-- Advanced Configuration -->
26-
<element name="alignment" type="text" selector="(//div[contains(@class,'pagebuilder-video-wrapper')])[{{arg1}}]/parent::div[contains(@style, 'text-align: {{arg2}};')]" parameterized="true"/>
27-
<element name="noAlignment" type="text" selector="(//div[contains(@class,'pagebuilder-video-wrapper')])[{{arg1}}]/parent::div[not(contains(@style,'text-align:'))]" parameterized="true"/>
26+
<element name="alignment" type="text" selector="(//div[contains(@class,'pagebuilder-video-inner')])[{{arg1}}]/parent::div[contains(@style, 'text-align: {{arg2}};')]" parameterized="true"/>
27+
<element name="noAlignment" type="text" selector="(//div[contains(@class,'pagebuilder-video-inner')])[{{arg1}}]/parent::div[not(contains(@style,'text-align:'))]" parameterized="true"/>
2828
<element name="border" type="text" selector="(//div[contains(@class,'pagebuilder-video-wrapper')])[{{arg1}}][contains(@style,'border-style: {{arg2}};')]" parameterized="true"/>
2929
<element name="borderColor" type="text" selector="(//div[contains(@class,'pagebuilder-video-wrapper')])[{{arg1}}][contains(@style,'border-color: {{arg2}};')]" parameterized="true"/>
3030
<element name="noBorderColor" type="text" selector="(//div[contains(@class,'pagebuilder-video-wrapper')])[{{arg1}}][not(contains(@style,'border-color:'))]" parameterized="true"/>
3131
<element name="borderWidth" type="text" selector="(//div[contains(@class,'pagebuilder-video-wrapper')])[{{arg1}}][contains(@style,'border-width: {{arg2}}px;')]" parameterized="true"/>
3232
<element name="borderRadius" type="text" selector="(//div[contains(@class,'pagebuilder-video-wrapper')])[{{arg1}}][contains(@style,'border-radius: {{arg2}}px;')]" parameterized="true"/>
33-
<element name="cssClasses" type="text" selector="(//div[contains(@class,'pagebuilder-video-wrapper')])[{{arg1}}]/parent::div[contains(@class,'{{arg2}}')]" parameterized="true"/>
33+
<element name="cssClasses" type="text" selector="(//div[contains(@class,'pagebuilder-video-inner')])[{{arg1}}]/parent::div[contains(@class,'{{arg2}}')]" parameterized="true"/>
3434
<element name="noCssClasses" type="text" selector="(//div[contains(@class,'pagebuilder-video-wrapper')])[{{arg1}}]" parameterized="true"/>
35-
<element name="margins" type="text" selector="(//div[contains(@class,'pagebuilder-video-wrapper')])[{{arg1}}][contains(@style,'margin: {{arg2}}px;')]" parameterized="true"/>
35+
<element name="margins" type="text" selector="(//div[@data-role='video'])[{{arg1}}][contains(@style,'margin: {{arg2}}px;')]" parameterized="true"/>
3636
<element name="padding" type="text" selector="(//div[contains(@class,'pagebuilder-video-wrapper')])[{{arg1}}][contains(@style,'padding: {{arg2}}px;')]" parameterized="true"/>
3737
</section>
3838
<section name="VideoOnStorefront">
@@ -45,7 +45,7 @@
4545
<element name="notHidden" type="text" selector="(//div[@data-role='video'])[{{arg1}}][not(contains(@style, 'display: none'))]" parameterized="true"/>
4646
<element name="iframe" type="text" selector="(//div[@data-role='video']//iframe)[{{arg1}}]" parameterized="true"/>
4747
<element name="source" type="text" selector="(//div[@data-role='video']//iframe)[{{arg1}}][@src='{{arg2}}']" parameterized="true"/>
48-
<element name="width" type="text" selector="(//div[@data-role='video'])[{{arg1}}]//div[@data-element='wrapper'][contains(@style,'max-width: {{arg2}}')]" parameterized="true"/>
48+
<element name="width" type="text" selector="(//div[@data-role='video'])[{{arg1}}]//div[@data-element='inner'][contains(@style,'max-width: {{arg2}}')]" parameterized="true"/>
4949
<element name="noWidth" type="text" selector="(//div[@data-role='video']//iframe)[{{arg1}}][not(starts-with(@style,'width:')) and not(contains(@style,' width:'))]" parameterized="true"/>
5050
<!-- Advanced Configuration -->
5151
<element name="alignment" type="text" selector="(//div[@data-role='video'])[{{arg1}}][contains(@style,'text-align: {{arg2}};')]" parameterized="true"/>
@@ -57,7 +57,7 @@
5757
<element name="borderRadius" type="text" selector="(//div[@data-role='video'])[{{arg1}}]//div[@data-element='wrapper'][contains(@style,'border-radius: {{arg2}}px;')]" parameterized="true"/>
5858
<element name="cssClasses" type="text" selector="(//div[@data-role='video'])[{{arg1}}][contains(@class,'{{arg2}}')]" parameterized="true"/>
5959
<element name="noCssClasses" type="text" selector="(//div[@data-role='video'])[{{arg1}}][not(@class)]" parameterized="true"/>
60-
<element name="margins" type="text" selector="(//div[@data-role='video'])[{{arg1}}]//div[@data-element='wrapper'][contains(@style,'margin: {{arg2}}px;')]" parameterized="true"/>
60+
<element name="margins" type="text" selector="(//div[@data-role='video'])[{{arg1}}][contains(@style,'margin: {{arg2}}px;')]" parameterized="true"/>
6161
<element name="padding" type="text" selector="(//div[@data-role='video'])[{{arg1}}]//div[@data-element='wrapper'][contains(@style,'padding: {{arg2}}px;')]" parameterized="true"/>
6262
</section>
6363
</sections>

app/code/Magento/PageBuilder/Test/Mftf/Test/AdminPageBuilderBannerCollageCenterAppearanceTest.xml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1370,4 +1370,27 @@
13701370
<argument name="diffThreshold" value="0"/>
13711371
</actionGroup>
13721372
</test>
1373+
<test name="BannerCollageCenterAlignmentInheritance" extends="BannerPosterAlignmentInheritance">
1374+
<annotations>
1375+
<features value="PageBuilder"/>
1376+
<stories value="Banner"/>
1377+
<title value="Collage Center - Alignment Inherits"/>
1378+
<description value="A user should be able to have a parent container content type pass its alignment to its children"/>
1379+
<severity value="MAJOR"/>
1380+
<useCaseId value="MC-4290"/>
1381+
<testCaseId value="MC-6018"/>
1382+
<group value="pagebuilder"/>
1383+
<group value="pagebuilder-banner"/>
1384+
<group value="pagebuilder-bannerCollageCenter"/>
1385+
</annotations>
1386+
<!-- Fill Out Banner Edit Panel -->
1387+
<comment userInput="Fill Out Banner Edit Panel" stepKey="commentFillBannerEditPanel"/>
1388+
<actionGroup ref="chooseVisualSelectOption" stepKey="enterAppearanceProperty">
1389+
<argument name="property" value="PageBuilderAppearance_CollageCentered"/>
1390+
</actionGroup>
1391+
<executeJS function="return Math.abs(Math.round({$buttonLeftPosition}-{$overlayLeftPosition}-30))" stepKey="buttonMinusOverlayMinusPadding"/>
1392+
<executeJS function="return Math.abs(Math.round({$overlayRightPosition}-{$buttonRightPosition}-30))" stepKey="overlayMinusButtonMinusPadding"/>
1393+
<executeJS function="return Math.abs(Math.round({$overlayRightPositionAfterSave}-{$buttonRightPositionAfterSave}-30))" stepKey="overlayMinusButtonMinusPaddingAfterSave"/>
1394+
<executeJS function="return Math.abs(Math.round({$overlayRightPositionStoreFront}-{$buttonRightPositionStoreFront}-30))" stepKey="overlayMinusButtonMinusPaddingStoreFront"/>
1395+
</test>
13731396
</tests>

app/code/Magento/PageBuilder/Test/Mftf/Test/AdminPageBuilderBannerCollageLeftAppearanceTest.xml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1373,4 +1373,27 @@
13731373
<argument name="diffThreshold" value="0"/>
13741374
</actionGroup>
13751375
</test>
1376+
<test name="BannerCollageLeftAlignmentInheritance" extends="BannerPosterAlignmentInheritance">
1377+
<annotations>
1378+
<features value="PageBuilder"/>
1379+
<stories value="Banner"/>
1380+
<title value="Collage Left - Alignment Inherits"/>
1381+
<description value="A user should be able to have a parent container content type pass its alignment to its children"/>
1382+
<severity value="MAJOR"/>
1383+
<useCaseId value="MC-4290"/>
1384+
<testCaseId value="MC-6017"/>
1385+
<group value="pagebuilder"/>
1386+
<group value="pagebuilder-banner"/>
1387+
<group value="pagebuilder-bannerCollageLeft"/>
1388+
</annotations>
1389+
<!-- Fill Out Banner Edit Panel -->
1390+
<comment userInput="Fill Out Banner Edit Panel" stepKey="commentFillBannerEditPanel"/>
1391+
<actionGroup ref="chooseVisualSelectOption" stepKey="enterAppearanceProperty">
1392+
<argument name="property" value="PageBuilderAppearance_CollageLeft"/>
1393+
</actionGroup>
1394+
<executeJS function="return Math.abs(Math.round({$buttonLeftPosition}-{$overlayLeftPosition}-30))" stepKey="buttonMinusOverlayMinusPadding"/>
1395+
<executeJS function="return Math.abs(Math.round({$overlayRightPosition}-{$buttonRightPosition}-30))" stepKey="overlayMinusButtonMinusPadding"/>
1396+
<executeJS function="return Math.abs(Math.round({$overlayRightPositionAfterSave}-{$buttonRightPositionAfterSave}-30))" stepKey="overlayMinusButtonMinusPaddingAfterSave"/>
1397+
<executeJS function="return Math.abs(Math.round({$overlayRightPositionStoreFront}-{$buttonRightPositionStoreFront}-30))" stepKey="overlayMinusButtonMinusPaddingStoreFront"/>
1398+
</test>
13761399
</tests>

app/code/Magento/PageBuilder/Test/Mftf/Test/AdminPageBuilderBannerCollageRightAppearanceTest.xml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1274,4 +1274,27 @@
12741274
<argument name="diffThreshold" value="0"/>
12751275
</actionGroup>
12761276
</test>
1277+
<test name="BannerCollageRightAlignmentInheritance" extends="BannerPosterAlignmentInheritance">
1278+
<annotations>
1279+
<features value="PageBuilder"/>
1280+
<stories value="Banner"/>
1281+
<title value="Collage Right - Alignment Inherits"/>
1282+
<description value="A user should be able to have a parent container content type pass its alignment to its children"/>
1283+
<severity value="MAJOR"/>
1284+
<useCaseId value="MC-4290"/>
1285+
<testCaseId value="MC-6016"/>
1286+
<group value="pagebuilder"/>
1287+
<group value="pagebuilder-banner"/>
1288+
<group value="pagebuilder-bannerCollageRight"/>
1289+
</annotations>
1290+
<!-- Fill Out Banner Edit Panel -->
1291+
<comment userInput="Fill Out Banner Edit Panel" stepKey="commentFillBannerEditPanel"/>
1292+
<actionGroup ref="chooseVisualSelectOption" stepKey="enterAppearanceProperty">
1293+
<argument name="property" value="PageBuilderAppearance_CollageRight"/>
1294+
</actionGroup>
1295+
<executeJS function="return Math.abs(Math.round({$buttonLeftPosition}-{$overlayLeftPosition}-30))" stepKey="buttonMinusOverlayMinusPadding"/>
1296+
<executeJS function="return Math.abs(Math.round({$overlayRightPosition}-{$buttonRightPosition}-30))" stepKey="overlayMinusButtonMinusPadding"/>
1297+
<executeJS function="return Math.abs(Math.round({$overlayRightPositionAfterSave}-{$buttonRightPositionAfterSave}-30))" stepKey="overlayMinusButtonMinusPaddingAfterSave"/>
1298+
<executeJS function="return Math.abs(Math.round({$overlayRightPositionStoreFront}-{$buttonRightPositionStoreFront}-30))" stepKey="overlayMinusButtonMinusPaddingStoreFront"/>
1299+
</test>
12771300
</tests>

app/code/Magento/PageBuilder/Test/Mftf/Test/AdminPageBuilderBannerCommonTest.xml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,6 @@
5858
<group value="pagebuilder"/>
5959
<group value="pagebuilder-banner"/>
6060
<group value="pagebuilder-bannerCommon"/>
61-
<skip>
62-
<issueId value="MC-5023"/>
63-
</skip>
6461
</annotations>
6562
<before>
6663
<actionGroup ref="LoginAsAdmin" stepKey="loginAsAdmin"/>

0 commit comments

Comments
 (0)