Skip to content

Commit abad037

Browse files
committed
MC-849: Button On Frontend Has HTML Binding
- Replace usage of innerText with textContent in live edit - Use underscore library to handle html encoding/decoding
1 parent d7311c6 commit abad037

File tree

4 files changed

+14
-13
lines changed

4 files changed

+14
-13
lines changed

app/code/Magento/PageBuilder/view/adminhtml/web/js/binding/live-edit.js

Lines changed: 4 additions & 4 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/converter/html/tag-escaper.js

Lines changed: 3 additions & 3 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/binding/live-edit.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ ko.bindingHandlers.liveEdit = {
4848
const tempDiv = document.createElement("div");
4949

5050
tempDiv.innerHTML = html;
51-
return tempDiv.innerText;
51+
return tempDiv.textContent;
5252
};
5353

5454
/**
@@ -109,7 +109,7 @@ ko.bindingHandlers.liveEdit = {
109109
handlePlaceholderClass(element);
110110
};
111111
element.setAttribute("data-placeholder", placeholder);
112-
element.innerText = viewModel.previewData[field]();
112+
element.textContent = viewModel.previewData[field]();
113113
element.contentEditable = true;
114114
element.addEventListener("focus", onFocus);
115115
element.addEventListener("blur", onBlur);
@@ -122,7 +122,7 @@ ko.bindingHandlers.liveEdit = {
122122

123123
// Create a subscription onto the original data to update the internal value
124124
viewModel.previewData[field].subscribe((value: string) => {
125-
element.innerText = viewModel.previewData[field]();
125+
element.textContent = viewModel.previewData[field]();
126126
handlePlaceholderClass(element);
127127
});
128128
},
@@ -139,7 +139,7 @@ ko.bindingHandlers.liveEdit = {
139139
update(element, valueAccessor, allBindings, viewModel, bindingContext) {
140140
const {field} = valueAccessor();
141141

142-
element.innerText = viewModel.previewData[field]();
142+
element.textContent = viewModel.previewData[field]();
143143
handlePlaceholderClass(element);
144144
},
145145
};

app/code/Magento/PageBuilder/view/adminhtml/web/ts/js/converter/html/tag-escaper.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
* See COPYING.txt for license details.
44
*/
55

6+
import {escape, unescape} from "underscore";
67
import {DataObject} from "../../data-store";
78
import ConverterInterface from "../converter-interface";
89

@@ -14,7 +15,7 @@ export default class TagEscaper implements ConverterInterface {
1415
* @returns {string | object}
1516
*/
1617
public fromDom(value: string): string | object {
17-
return value.replace(/&amp;lt;/g, "<").replace(/&amp;gt;/g, ">");
18+
return unescape(unescape(value));
1819
}
1920

2021
/**
@@ -25,6 +26,6 @@ export default class TagEscaper implements ConverterInterface {
2526
* @returns {string}
2627
*/
2728
public toDom(name: string, data: DataObject): string {
28-
return data[name].toString().replace(/</g, "&amp;lt;").replace(/>/g, "&amp;gt;");
29+
return escape(escape(data[name].toString()));
2930
}
3031
}

0 commit comments

Comments
 (0)