fix(enter-is-tab.js): implemented destroy method in enter-is-tab Util
This commit is contained in:
parent
c1c35369d1
commit
d1b9952690
@ -1,4 +1,5 @@
|
||||
import { Utility } from '../../core/utility';
|
||||
import { EventManager, EventWrapper, EVENT_TYPE } from '../../lib/event-manager/event-manager';
|
||||
|
||||
const ENTER_IS_TAB_INITIALIZED_CLASS = 'enter-as-tab--initialized';
|
||||
const AREA_SELECTOR = 'input, textarea';
|
||||
@ -10,6 +11,8 @@ const AREA_SELECTOR = 'input, textarea';
|
||||
export class EnterIsTab {
|
||||
_element;
|
||||
|
||||
_eventManager;
|
||||
|
||||
constructor(element) {
|
||||
|
||||
if(!element) {
|
||||
@ -17,6 +20,8 @@ export class EnterIsTab {
|
||||
}
|
||||
|
||||
this._element = element;
|
||||
|
||||
this._eventManager = new EventManager();
|
||||
|
||||
if (this._element.classList.contains(ENTER_IS_TAB_INITIALIZED_CLASS)) {
|
||||
return false;
|
||||
@ -27,27 +32,32 @@ export class EnterIsTab {
|
||||
|
||||
|
||||
start() {
|
||||
this._element.addEventListener('keydown', (e) => {
|
||||
if(e.key === 'Enter') {
|
||||
e.preventDefault();
|
||||
let currentInputFieldId = this._element.id;
|
||||
let inputAreas = document.querySelectorAll(AREA_SELECTOR);
|
||||
let nextInputArea = null;
|
||||
for (let i = 0; i < inputAreas.length; i++) {
|
||||
if(inputAreas[i].id === currentInputFieldId) {
|
||||
nextInputArea = inputAreas[i+1];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(nextInputArea) {
|
||||
nextInputArea.focus();
|
||||
let eventWrapper = new EventWrapper(EVENT_TYPE.KEYDOWN, this._captureEnter.bind(this), this._element);
|
||||
this._eventManager.registerNewListener(eventWrapper);
|
||||
}
|
||||
|
||||
_captureEnter (e) {
|
||||
if(e.key === 'Enter') {
|
||||
e.preventDefault();
|
||||
let currentInputFieldId = this._element.id;
|
||||
let inputAreas = document.querySelectorAll(AREA_SELECTOR);
|
||||
let nextInputArea = null;
|
||||
for (let i = 0; i < inputAreas.length; i++) {
|
||||
if(inputAreas[i].id === currentInputFieldId) {
|
||||
nextInputArea = inputAreas[i+1];
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if(nextInputArea) {
|
||||
nextInputArea.focus();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
destroy() {
|
||||
console.log('TBD: Destroy EnterIsTab');
|
||||
this._eventManager.removeAllEventListenersFromUtil();
|
||||
if(this._element.classList.contains(ENTER_IS_TAB_INITIALIZED_CLASS))
|
||||
this._element.classList.remove(ENTER_IS_TAB_INITIALIZED_CLASS);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user