Skip to content

Commit 2017440

Browse files
committed
MC-3495: Dragging And Dropping Button From Inline Button Text Causes Issues
- Re-factor usage of deprecated methods for new dataStore API - Add event listener that will prevent dropping content inside inline editing area
1 parent 9b6ca7c commit 2017440

File tree

2 files changed

+31
-10
lines changed

2 files changed

+31
-10
lines changed

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

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

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -102,29 +102,39 @@ ko.bindingHandlers.liveEdit = {
102102
}
103103
};
104104

105+
/**
106+
* Prevent content from being dropped inside of inline edit area
107+
*
108+
* @param {DragEvent} event
109+
*/
110+
const onDrop = (event: DragEvent) => {
111+
event.preventDefault();
112+
};
113+
105114
/**
106115
* Input event on element
107116
*/
108117
const onInput = () => {
109118
handlePlaceholderClass(element);
110119
};
111120
element.setAttribute("data-placeholder", placeholder);
112-
element.innerText = viewModel.previewData[field]();
121+
element.innerText = viewModel.parent.dataStore.get(field);
113122
element.contentEditable = true;
114123
element.addEventListener("focus", onFocus);
115124
element.addEventListener("blur", onBlur);
116125
element.addEventListener("click", onClick);
117126
element.addEventListener("keydown", onKeyDown);
118127
element.addEventListener("input", onInput);
128+
element.addEventListener("drop", onDrop);
119129

120130
$(element).parent().css("cursor", "text");
121131
handlePlaceholderClass(element);
122132

123133
// Create a subscription onto the original data to update the internal value
124-
viewModel.previewData[field].subscribe((value: string) => {
125-
element.innerText = viewModel.previewData[field]();
134+
viewModel.parent.dataStore.subscribe(() => {
135+
element.innerText = viewModel.parent.dataStore.get(field);
126136
handlePlaceholderClass(element);
127-
});
137+
}, field);
128138
},
129139

130140
/**
@@ -139,7 +149,7 @@ ko.bindingHandlers.liveEdit = {
139149
update(element, valueAccessor, allBindings, viewModel, bindingContext) {
140150
const {field} = valueAccessor();
141151

142-
element.innerText = viewModel.previewData[field]();
152+
element.innerText = viewModel.parent.dataStore.get(field);
143153
handlePlaceholderClass(element);
144154
},
145155
};

0 commit comments

Comments
 (0)