All files / addon/utils event-handler.js

100% Statements 7/7
70% Branches 7/10
100% Functions 2/2
100% Lines 7/7

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75                                                          24x   24x 24x     24x                                                         24x   24x 13x              
/**
 * Binds the given callback with context to 'eventName' on the element / document and returns the reference.
 * 
 ```js
  import Component from '@ember/component';
  import EventHandler from '@freshworks/modal/utils/event-handler';
  export default Component.extend({
    state: null,
    action: {
      setFocusListener() {
        let _focusListener = EventHandler.bindEvent({
          context: this, 
          eventName: 'focusin',
          callback: this.loopFocus
        });
        set(this, '_focusListener', _focusListener);
      }
    }
  });
```
  *
  * @function bindEvent
  * @public
  * @param {string} eventName Name of the event to bind the callback to
  * @param {function} callback Callback function for the eventhandler 
  * @param {string} element element selector. Defaults to document 
  * @return {function} Returns the reference of the callback binded
*/
function bindEvent({ eventName, callback, element } = {}) {
  let domElement = element ? document.querySelector(element) : document;
  
  Eif(domElement) {
    domElement.addEventListener(eventName, callback);
  }
 
  return callback;
}
 
/**
 * Unbinds the given callback from 'eventName' on the element / document.
 ```js
  import Component from '@ember/component';
  import EventHandler from '@freshworks/modal/utils/event-handler';
  export default Component.extend({
    state: null,
    action: {
      setFocusListener() {
        let _focusListener = EventHandler.unbindEvent({
          eventName: 'focusin',
          callback: this.loopFocus
        });
        set(this, '_focusListener', _focusListener);
      }
    }
  });
  ```
  *
  * @function unbindEvent
  * @public
  * @param {string} eventName Name of the event to bind the callback to
  * @param {function} callback Callback function for the eventhandler 
  * @param {string} element element selector. Defaults to document 
*/
function unbindEvent({ eventName, callback, element } = {}) {
  let domElement = element ? document.querySelector(element) : document;
 
  if(domElement) {
    domElement.removeEventListener(eventName, callback);
  }
}
 
export {
  unbindEvent,
  bindEvent
}