Skip to content

Commit 275433b

Browse files
committed
MC-3939: Can't select or edit text ranges inside of a live edit block
- Somewhat improve text selection within Firefox
1 parent 9a9a039 commit 275433b

File tree

9 files changed

+16
-37
lines changed

9 files changed

+16
-37
lines changed

app/code/Magento/PageBuilder/view/adminhtml/web/css/source/content-type/tabs/_default.less

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ div[data-role='tabs'],
4545
white-space: normal;
4646

4747
span.tab-title {
48+
cursor: text !important;
4849
display: block;
4950
}
5051

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

Lines changed: 1 addition & 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/js/content-type/button-item/preview.js

Lines changed: 6 additions & 2 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/content-type/tabs/preview.js

Lines changed: 0 additions & 13 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/template/content-type/button-item/default/preview.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
<a attr="data.link.attributes"
1414
ko-style="data.link.style"
1515
css="data.link.css"
16+
draggable="false"
1617
click="function (context, event) { onClick($index(), event); }">
1718
<span class="button-item-drag-handle" css="{disabled: parent.parent.children().length <= 1}"></span>
1819
<span attr="data.link_text.attributes"

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
@@ -17,7 +17,7 @@
1717
click="function (context, event) { parent.parent.preview.onTabClick($index(), event); }"
1818
ko-style="parent.parent.preview.getTabHeaderStyles()"
1919
event="{ focusin: function () { parent.parent.preview.setFocusedTab($index(), true) }, focusout: function () { window.getSelection().removeAllRanges(); parent.parent.preview.setFocusedTab(null); } }">
20-
<a href="#no-tab" class="tab-title focus-options" attr="{ href: '#' + parent.id }">
20+
<a href="#no-tab" class="tab-title focus-options" attr="{ href: '#' + parent.id }" draggable="false">
2121
<render args="getOptions().template" />
2222
<span class="tab-drag-handle" css="{disabled: parent.parent.children().length <= 1}"></span>
2323
<span class="tab-title tab-name" data-tab-title="true" data-bind="liveEdit: { field: 'tab_name', placeholder: $t('...'), selectAll: true }, hasFocusNoScroll: parent.parent.preview.focusedTab() === $index()"></span>

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ ko.bindingHandlers.liveEdit = {
8383
*
8484
* Prevent styling such as bold, italic, and underline using keyboard commands, and prevent multi-line entries
8585
*
86-
* @param {any} event
86+
* @param {JQueryEventObject} event
8787
*/
8888
const onKeyDown = (event: JQueryEventObject) => {
8989
const key = keyCodes[event.keyCode];
@@ -105,8 +105,6 @@ ko.bindingHandlers.liveEdit = {
105105

106106
/**
107107
* On key up update the view model to ensure all changes are saved
108-
*
109-
* @param {Event} event
110108
*/
111109
const onKeyUp = () => {
112110
if (focusedValue !== stripHtml(element.innerHTML)) {

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,11 @@ export default class Preview extends BasePreview {
4141
* @param {JQueryEventObject} event
4242
*/
4343
public onClick(index: number, event: JQueryEventObject): void {
44-
$(event.currentTarget).find("[contenteditable]").focus();
45-
event.stopPropagation();
44+
const contentEditable = $(event.currentTarget).find("[contenteditable]");
45+
if (!$(":focus").is(contentEditable)) {
46+
$(event.currentTarget).find("[contenteditable]").focus();
47+
event.stopPropagation();
48+
}
4649
}
4750

4851
/**

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

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -190,19 +190,6 @@ export default class Preview extends PreviewCollection {
190190
if (this.element.getElementsByClassName("tab-name")[index]) {
191191
(this.element.getElementsByClassName("tab-name")[index] as HTMLElement).focus();
192192
}
193-
_.defer(() => {
194-
const $focusedElement = $(":focus");
195-
196-
if ($focusedElement.hasClass("tab-name") && $focusedElement.prop("contenteditable")) {
197-
// Selection alternative to execCommand to workaround issues with tinymce
198-
const selection = window.getSelection();
199-
const range = document.createRange();
200-
201-
range.selectNodeContents($focusedElement.get(0));
202-
selection.removeAllRanges();
203-
selection.addRange(range);
204-
}
205-
});
206193
}
207194
}
208195

0 commit comments

Comments
 (0)