Skip to content

Commit d288b37

Browse files
committed
Merge remote-tracking branch 'origin/MC-4232-button-text-draggable-triggers-the-image-drop-zone' into cms-team-1-delivery
# Conflicts: # app/code/Magento/PageBuilder/view/adminhtml/web/js/binding/live-edit.js # app/code/Magento/PageBuilder/view/adminhtml/web/template/content-type/tabs/default/preview.html # app/code/Magento/PageBuilder/view/adminhtml/web/ts/js/binding/live-edit.ts
2 parents 4a997f0 + c43233b commit d288b37

File tree

5 files changed

+43
-12
lines changed

5 files changed

+43
-12
lines changed

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

Lines changed: 11 additions & 0 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/form/element/image-uploader.js

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ define([
5757

5858
this._super();
5959

60-
events.on('image:' + this.id +':assignAfter', this.onAssignedFile.bind(this));
60+
events.on('image:' + this.id + ':assignAfter', this.onAssignedFile.bind(this));
6161

6262
// bind dropzone highlighting using event delegation only once
6363
if (!initializedOnce) {
@@ -95,19 +95,28 @@ define([
9595
* @param {jQuery.event} e
9696
*/
9797
highlightDropzone: function (e) {
98-
var $dropzone = $(e.target).closest(this.dropZone),
98+
var draggedItem,
99+
$dropzone = $(e.target).closest(this.dropZone),
99100
$otherDropzones = $(this.dropZone).not($dropzone),
100101
isInsideDropzone = !!$dropzone.length;
101102

102-
if (isInsideDropzone) {
103-
$dropzone
104-
.removeClass(this.classes.draggingOutside)
105-
.addClass([this.classes.dragging, this.classes.draggingInside].join(' '));
103+
if (e.originalEvent.dataTransfer.items.length === 0) {
104+
return false;
106105
}
107106

108-
$otherDropzones
109-
.removeClass(this.classes.draggingInside)
110-
.addClass([this.classes.dragging, this.classes.draggingOutside].join(' '));
107+
draggedItem = e.originalEvent.dataTransfer.items[0];
108+
109+
if (draggedItem.kind === 'file' && /image\//.test(draggedItem.type)) {
110+
if (isInsideDropzone) {
111+
$dropzone
112+
.removeClass(this.classes.draggingOutside)
113+
.addClass([this.classes.dragging, this.classes.draggingInside].join(' '));
114+
}
115+
116+
$otherDropzones
117+
.removeClass(this.classes.draggingInside)
118+
.addClass([this.classes.dragging, this.classes.draggingOutside].join(' '));
119+
}
111120
},
112121

113122
/**
@@ -212,7 +221,7 @@ define([
212221
/**
213222
* {@inheritDoc}
214223
*/
215-
hasData: function() {
224+
hasData: function () {
216225
// Some of the components automatically add an empty object if the value is unset.
217226
return this._super() && !$.isEmptyObject(this.value()[0]);
218227
}

app/code/Magento/PageBuilder/view/adminhtml/web/template/content-type/button-item/default/preview.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313
<a attr="data.link.attributes"
1414
ko-style="data.link.style"
1515
css="data.link.css"
16-
click="function (context, event) { onClick($index(), event); }">
16+
click="function (context, event) { onClick($index(), event); }"
17+
event="{ dragstart: function(context, event) { event.preventDefault(); }}">
1718
<span class="button-item-drag-handle" css="{disabled: parent.parent.children().length <= 1}"></span>
1819
<span attr="data.link_text.attributes"
1920
data-bind="liveEdit: { field: 'button_text', placeholder: buttonPlaceholder, selectAll: true }, hasFocusNoScroll: $parent.parent.preview.focusedButton() === $index()"

app/code/Magento/PageBuilder/view/adminhtml/web/template/content-type/tabs/default/preview.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
event="{ focusin: function (context, event) { onFocusIn($index(), event); }, focusout: function (context, event) { onFocusOut($index(), event); } }">
2020
<a href="#no-tab"
2121
class="tab-title focus-options"
22-
attr="{ href: '#' + parent.id }">
22+
attr="{ href: '#' + parent.id }" event="{ dragstart: function(context, event) { event.preventDefault(); }}">
2323
<render args="getOptions().template" />
2424
<span class="tab-drag-handle" css="{disabled: parent.parent.children().length <= 1}"></span>
2525
<span class="tab-title tab-name"

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,15 @@ ko.bindingHandlers.liveEdit = {
137137
event.preventDefault();
138138
};
139139

140+
/**
141+
* Prevent content from being dragged
142+
*
143+
* @param {DragEvent} event
144+
*/
145+
const onDragStart = (event: DragEvent) => {
146+
event.preventDefault();
147+
};
148+
140149
/**
141150
* Input event on element
142151
*/
@@ -185,6 +194,7 @@ ko.bindingHandlers.liveEdit = {
185194
element.addEventListener("input", onInput);
186195
element.addEventListener("drop", onDrop);
187196
element.addEventListener("paste", onPaste);
197+
element.addEventListener("dragstart", onDragStart);
188198

189199
$(element).parent().css("cursor", "text");
190200
handlePlaceholderClass(element);

0 commit comments

Comments
 (0)