muu

DEPRECATED lightweight JS framework
git clone https://git.ce9e.org/muu.git

commit
f07e992959844b74872592fb32e8a7e11d134be3
parent
993bb84d2f22418a3c82597486c929d9f42886c8
Author
Tobias Bengfort <tobias.bengfort@gmx.net>
Date
2015-08-30 19:44
Fix: allow aliases for events on non-target

Diffstat

M src/muu-directive.js 5 +++--
M test/test-directive.js 20 ++++++++++++++++++++

2 files changed, 23 insertions, 2 deletions


diff --git a/src/muu-directive.js b/src/muu-directive.js

@@ -39,9 +39,10 @@ define('muu-directive', ['muu-dom-helpers', 'muu-js-helpers', 'muu-update-dom'],
   39    39         root.innerHTML = '';
   40    40 
   41    41         var eventCallback = function(originalEvent) {
   -1    42             var element = originalEvent.currentTarget;
   42    43             var attrName = 'data-on' + originalEvent.type;
   43    -1             if (originalEvent.target.hasAttribute(attrName)) {
   44    -1                 var eventName = originalEvent.target.getAttribute(attrName);
   -1    44             if (element.hasAttribute(attrName)) {
   -1    45                 var eventName = element.getAttribute(attrName);
   45    46                 var event = $.createEvent(
   46    47                     'muu-' + eventName, undefined, undefined, originalEvent);
   47    48                 root.dispatchEvent(event);

diff --git a/test/test-directive.js b/test/test-directive.js

@@ -47,6 +47,26 @@ define(['muu-directive', 'muu-js-helpers', 'muu-dom-helpers'], function(Directiv
   47    47                 button.dispatchEvent($.createEvent('click'));
   48    48                 expect(spy.callCount).to.equal(3);
   49    49             });
   -1    50             it('registers event aliases for non-target elements', function() {
   -1    51                 var element = document.createElement('div');
   -1    52                 var template = '<div data-onclick="test"><a href="#" class="button"></a></div>';
   -1    53                 var directive = new Directive(element, template, registry);
   -1    54                 directive.update({});
   -1    55 
   -1    56                 var button = element.querySelector('.button');
   -1    57                 var spy = sinon.spy();
   -1    58                 element.addEventListener('muu-test', spy, false);
   -1    59 
   -1    60                 document.body.appendChild(element);
   -1    61                 expect(spy.callCount).to.equal(0);
   -1    62                 button.dispatchEvent($.createEvent('click', true));
   -1    63                 expect(spy.callCount).to.equal(1);
   -1    64                 button.dispatchEvent($.createEvent('click', true));
   -1    65                 expect(spy.callCount).to.equal(2);
   -1    66                 button.dispatchEvent($.createEvent('click', true));
   -1    67                 expect(spy.callCount).to.equal(3);
   -1    68                 document.body.removeChild(element);
   -1    69             });
   50    70             it('initialises new child directives', function() {
   51    71                 var element = document.createElement('div');
   52    72                 var template = '';