Skip to content

Commit c77a5d3

Browse files
committed
MC-5025: Right/Left Margin Not Working For Content Types
- add width converter to column to subtract margins - remove row margins and paddings converter for column - skip ts lint error due to bad api
1 parent f131492 commit c77a5d3

File tree

4 files changed

+179
-192
lines changed

4 files changed

+179
-192
lines changed

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@
4646
<style name="border_radius" source="border_radius" converter="Magento_PageBuilder/js/converter/style/remove-px"/>
4747
<style name="justify_content" source="justify_content" persistence_mode="read"/>
4848
<style name="min_height" source="min_height" converter="Magento_PageBuilder/js/converter/style/remove-px"/>
49-
<style name="width" source="width"/>
50-
<style name="margins" storage_key="margins_and_padding" reader="Magento_PageBuilder/js/property/margins" converter="Magento_PageBuilder/js/converter/style/margins" preview_converter="Magento_PageBuilder/js/content-type/row/converter/style/margins"/>
51-
<style name="padding" storage_key="margins_and_padding" reader="Magento_PageBuilder/js/property/paddings" converter="Magento_PageBuilder/js/converter/style/paddings" preview_converter="Magento_PageBuilder/js/content-type/row/converter/style/paddings"/>
49+
<style name="width" source="width" converter="Magento_PageBuilder/js/converter/style/width"/>
50+
<style name="margins" storage_key="margins_and_padding" reader="Magento_PageBuilder/js/property/margins" converter="Magento_PageBuilder/js/converter/style/margins"/>
51+
<style name="padding" storage_key="margins_and_padding" reader="Magento_PageBuilder/js/property/paddings" converter="Magento_PageBuilder/js/converter/style/paddings"/>
5252
<static_style source="align_self" value="stretch"/>
5353
<attribute name="name" source="data-role"/>
5454
<attribute name="appearance" source="data-appearance"/>

app/code/Magento/PageBuilder/view/adminhtml/web/js/converter/style/width.js

Lines changed: 64 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
/**
2+
* Copyright © Magento, Inc. All rights reserved.
3+
* See COPYING.txt for license details.
4+
*/
5+
6+
import {DataObject} from "../../data-store";
7+
import ConverterInterface from "../converter-interface";
8+
9+
/**
10+
* Subtract margin from width to ensure adjacent elements do not
11+
* move or resize when positive or negative margins are present
12+
*
13+
* @api
14+
*/
15+
export default class Width implements ConverterInterface {
16+
/**
17+
* Convert value to internal format
18+
*
19+
* @param value string
20+
* @returns {string | object}
21+
*/
22+
public fromDom(value: string): object | string {
23+
if (value.indexOf("calc") !== -1) {
24+
return value.split("%")[0].split("(")[1] + "%";
25+
}
26+
27+
return value;
28+
}
29+
30+
/**
31+
* Convert value to knockout format
32+
*
33+
* @param name string
34+
* @param data Object
35+
* @returns {string | object}
36+
*/
37+
public toDom(name: string, data: DataObject): string {
38+
if (data[name] !== "" && data.margins_and_padding && data.margins_and_padding !== undefined) {
39+
const margins = data.margins_and_padding.margin || "";
40+
const marginLeft = margins.left ? parseInt(margins.left as string, 10) : 0;
41+
const marginRight = margins.right ? parseInt(margins.right as string, 10) : 0;
42+
43+
if (marginLeft === 0 && marginRight === 0) {
44+
return data[name].toString();
45+
}
46+
47+
return "calc(" + data[name].toString() + " - " + (marginLeft + marginRight) + "px)";
48+
}
49+
}
50+
}

0 commit comments

Comments
 (0)