Use the originalEvent in the targetNotEditable condition

This commit is contained in:
Frederic Junod
2019-11-11 14:41:39 +01:00
parent 59faeff1bf
commit fc7cb5cd51
2 changed files with 18 additions and 6 deletions

View File

@@ -207,12 +207,9 @@ export const shiftKeyOnly = function(mapBrowserEvent) {
* @api
*/
export const targetNotEditable = function(mapBrowserEvent) {
const target = mapBrowserEvent.target;
const tagName = /** @type {Element} */ (target).tagName;
return (
tagName !== 'INPUT' &&
tagName !== 'SELECT' &&
tagName !== 'TEXTAREA');
const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (mapBrowserEvent.originalEvent);
const tagName = /** @type {Element} */ (originalEvent.target).tagName;
return tagName !== 'INPUT' && tagName !== 'SELECT' && tagName !== 'TEXTAREA';
};

View File

@@ -43,6 +43,21 @@ describe('ol.interaction.KeyboardZoom', function() {
view.animateInternal.restore();
});
it('does nothing if the target is editable', function() {
const view = map.getView();
const spy = sinon.spy(view, 'animateInternal');
const event = new MapBrowserEvent('keydown', map, {
type: 'keydown',
target: document.createElement('input'),
preventDefault: Event.prototype.preventDefault
});
event.originalEvent.charCode = '+'.charCodeAt(0);
map.handleMapBrowserEvent(event);
expect(spy.called).to.be(false);
});
});
});