Remove overlap check for elements in sticky

Our sticky controls often contain focusable
elements.
This commit is contained in:
Tom Byers
2019-03-25 15:16:51 +00:00
parent 8ad4c5e6e1
commit a426cae968

View File

@@ -6,7 +6,7 @@
var _mode = 'default'; var _mode = 'default';
// Constructor to make objects representing the area sticky elements can scroll in // Constructor to make objects representing the area sticky elements can scroll in
var ScrollArea = function (el, edge) { var ScrollArea = function (el, edge, selector) {
var $el = el.$fixedEl; var $el = el.$fixedEl;
var $scrollArea = $el.closest('.sticky-scroll-area'); var $scrollArea = $el.closest('.sticky-scroll-area');
@@ -15,6 +15,7 @@
this._els = [el]; this._els = [el];
this.edge = edge; this.edge = edge;
this.selector = selector;
this.node = scrollArea; this.node = scrollArea;
this.setEvents(); this.setEvents();
}; };
@@ -64,6 +65,9 @@
var $focusedElement = $(document.activeElement); var $focusedElement = $(document.activeElement);
var nodeName = $focusedElement.get(0).nodeName.toLowerCase(); var nodeName = $focusedElement.get(0).nodeName.toLowerCase();
var endOfFurthestEl = focusOverlap.endOfFurthestEl(this._els, this.edge); var endOfFurthestEl = focusOverlap.endOfFurthestEl(this._els, this.edge);
var isInSticky = function () {
return $focusedElement.closest(this.selector).length > 0;
}.bind(this);
var focused; var focused;
var overlap; var overlap;
@@ -71,6 +75,7 @@
if (nodeName === 'textarea') { if (nodeName === 'textarea') {
focused = this.getFocusedDetails.forCaret(e); focused = this.getFocusedDetails.forCaret(e);
} else { } else {
if (isInSticky()) { return; }
focused = this.getFocusedDetails.forElement($focusedElement); focused = this.getFocusedDetails.forElement($focusedElement);
} }
@@ -105,11 +110,11 @@
return matches[0] || false; return matches[0] || false;
}, },
addEl: function (el, edge) { addEl: function (el, edge, selector) {
var scrollArea = this.getAreaForEl(el); var scrollArea = this.getAreaForEl(el);
if (!scrollArea) { if (!scrollArea) {
this._scrollAreas.push(new ScrollArea(el, edge)); this._scrollAreas.push(new ScrollArea(el, edge, selector));
} else { } else {
scrollArea.addEl(el); scrollArea.addEl(el);
} }
@@ -652,7 +657,7 @@
if (!exists) { if (!exists) {
elObj = new StickyElement($el, self); elObj = new StickyElement($el, self);
scrollAreas.addEl(elObj, self.edge); scrollAreas.addEl(elObj, self.edge, self.CSS_SELECTOR);
} }
self.setElementDimensions(elObj, onDimensionsSet); self.setElementDimensions(elObj, onDimensionsSet);