Refactor event within view detection into utils
[MAILPOET-1819]
This commit is contained in:
committed by
M. Shull
parent
b8ce70ec2f
commit
d445495cba
@ -6,7 +6,7 @@
|
|||||||
import Marionette from 'backbone.marionette';
|
import Marionette from 'backbone.marionette';
|
||||||
import BehaviorsLookup from 'newsletter_editor/behaviors/BehaviorsLookup';
|
import BehaviorsLookup from 'newsletter_editor/behaviors/BehaviorsLookup';
|
||||||
import interact from 'interact';
|
import interact from 'interact';
|
||||||
import _ from 'underscore';
|
import { isEventInsideElement } from 'newsletter_editor/utils';
|
||||||
|
|
||||||
var BL = BehaviorsLookup;
|
var BL = BehaviorsLookup;
|
||||||
|
|
||||||
@ -66,7 +66,7 @@ BL.ResizableBehavior = Marionette.Behavior.extend({
|
|||||||
.on('resizeend', function resizeend(event) {
|
.on('resizeend', function resizeend(event) {
|
||||||
that.view.model.trigger('stopEditing');
|
that.view.model.trigger('stopEditing');
|
||||||
that.isBeingResized = null;
|
that.isBeingResized = null;
|
||||||
if (!that.detectMousePointerFocus(event).isViewFocused) {
|
if (!isEventInsideElement(event, that.view.$el)) {
|
||||||
that.hideResizeHandle();
|
that.hideResizeHandle();
|
||||||
}
|
}
|
||||||
that.$el.removeClass('mailpoet_resize_active');
|
that.$el.removeClass('mailpoet_resize_active');
|
||||||
@ -86,20 +86,4 @@ BL.ResizableBehavior = Marionette.Behavior.extend({
|
|||||||
this.view.$(this.options.resizeHandleSelector).addClass('mailpoet_hidden');
|
this.view.$(this.options.resizeHandleSelector).addClass('mailpoet_hidden');
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
detectMousePointerFocus: function detectMousePointerFocus(event) {
|
|
||||||
var eventCopy = _.extend({}, event);
|
|
||||||
var offset = this.view.$el.offset();
|
|
||||||
var height = this.view.$el.height();
|
|
||||||
var width = this.view.$el.width();
|
|
||||||
if (event.pageX < offset.left
|
|
||||||
|| event.pageX > offset.left + width
|
|
||||||
|| event.pageY < offset.top
|
|
||||||
|| event.pageY > offset.top + height
|
|
||||||
) {
|
|
||||||
eventCopy.isViewFocused = false;
|
|
||||||
} else {
|
|
||||||
eventCopy.isViewFocused = true;
|
|
||||||
}
|
|
||||||
return eventCopy;
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
|
13
assets/js/src/newsletter_editor/utils.js
Normal file
13
assets/js/src/newsletter_editor/utils.js
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
export const isEventInsideElement = (event, $el) => {
|
||||||
|
var offset = $el.offset();
|
||||||
|
var height = $el.height();
|
||||||
|
var width = $el.width();
|
||||||
|
if (event.pageX < offset.left
|
||||||
|
|| event.pageX > offset.left + width
|
||||||
|
|| event.pageY < offset.top
|
||||||
|
|| event.pageY > offset.top + height
|
||||||
|
) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
};
|
Reference in New Issue
Block a user