Skip to content

Latest commit

 

History

History
82 lines (61 loc) · 2.02 KB

README.md

File metadata and controls

82 lines (61 loc) · 2.02 KB

Resolve handlers · GitHub license npm version

Resolve and bind handlers from strings. Inspired by event delegation in Backbone.js.

Installation

npm install resolve-handlers

Example usage

import { resolveDOMEventHandlers } from 'resolve-handlers';

/**
 * CommentController
 */
export default class CommentController {

  constructor(element) {
    // Target for event listeners
    this.element = element;
    // Resolve event handlers
    this._resolvedEventHandlers = resolveDOMEventHandlers.call(this, this.getDOMEventHandlerStrings());
    // Add event listeners
    this.addEventListeners();
  }

  getDOMEventHandlerStrings() {
    return [
      'click .comment > .btn-delete: onDeleteCommentClick',
      'focusin .comment: onCommentFocus',
      'click .comment: onCommentClick'
    ];
  }

  onDeleteCommentClick() {
    /* delete handler */
  }

  onCommentFocus() {
    /* focus handler */
  }

  onCommentClick() {
    /* click handler */
  }

  addEventListeners() {
    this._resolvedEventHandlers.forEach(eventHandler => {
      this.element.addEventListener(eventHandler.eventType, eventHandler);
    });
  }

  removeEventListeners() {
    this._resolvedEventHandlers.forEach(eventHandler => {
      this.element.removeEventListener(eventHandler.eventType, eventHandler);
    });
  }

}

Change log

0.4.0

  • Dependency updates
  • Babel config for build

0.3.0

  • getResolveFunction now returns a function that needs context.
  • resolveDOMEventHandlers tests.
  • Dev env config and dependency updates (eslint, babel, nyc).

0.2.0

  • Removed dependency component-closest

License

This software is licensed under the MIT License.