Skip to content

Commit 4b95d67

Browse files
committed
MC-3636: User couldn't upload image to a hidden Image Content Block
- Disable uploading of images to hidden content types from the stage
1 parent bc413ee commit 4b95d67

File tree

4 files changed

+50
-0
lines changed

4 files changed

+50
-0
lines changed

app/code/Magento/PageBuilder/view/adminhtml/web/css/source/form/element/uploader/preview/_image.less

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,3 +186,15 @@
186186
.pagebuilder-image .pagebuilder-image-uploader-container {
187187
visibility: visible;
188188
}
189+
.pagebuilder-content-type-hidden .pagebuilder-content-type-active .pagebuilder-image-uploader-container .pagebuilder-options {
190+
opacity: 0 !important;
191+
visibility: hidden !important;
192+
}
193+
.pagebuilder-content-type-hidden .pagebuilder-image-uploader-container {
194+
&.dragging .pagebuilder-image-uploader-container-dropzone-overlay {
195+
display: none;
196+
}
197+
&.dragging .file-uploader {
198+
visibility: visible;
199+
}
200+
}

app/code/Magento/PageBuilder/view/adminhtml/web/js/content-type/preview.js

Lines changed: 20 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/ts/js/content-type/image/preview.ts

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

6+
import $ from "jquery";
67
import events from "Magento_PageBuilder/js/events";
78
import {DataObject} from "../../data-store";
9+
import ContentTypeAfterRenderEventParamsInterface from "../content-type-after-render-event-params";
810
import BasePreview from "../preview";
911
import Uploader from "../uploader";
1012

app/code/Magento/PageBuilder/view/adminhtml/web/ts/js/content-type/preview.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,7 @@ export default class Preview {
222222
id: this.parent.id,
223223
},
224224
);
225+
this.disableImageUploadOnHide(element);
225226
}
226227
}
227228

@@ -578,6 +579,21 @@ export default class Preview {
578579
return hasDataChanges;
579580
}
580581

582+
/**
583+
* Any hidden element should block drag / drop events from uploading images from the OS. We have to block this for
584+
* all elements as underlying elements could still receive the events if a parent is hidden.
585+
*
586+
* @param {Element} element
587+
*/
588+
private disableImageUploadOnHide(element: Element) {
589+
$(element).on("drag dragstart dragend dragover dragenter dragleave drop", (event) => {
590+
if (this.display() === false) {
591+
event.preventDefault();
592+
event.stopPropagation();
593+
}
594+
});
595+
}
596+
581597
/**
582598
* Update observables
583599
*/

0 commit comments

Comments
 (0)