Example #1
0
test('on', 9, function () {
	var called = false,
		DelegateTest = Control.extend({
			click: function () {}
		}),
		Tester = Control.extend({
			init: function (el, ops) {
				this.on(window, 'click', function (ev) {
					ok(true, 'Got window click event');
				});
				this.on(window, 'click', 'clicked');
				this.on('click', function () {
					ok(true, 'Directly clicked element');
				});
				this.on('click', 'clicked');
			},
			clicked: function (context) {
                console.log(context);
				ok(true, 'Controller action delegated click triggered, too');
			}
		}),
		div = document.createElement('div');
	this.fixture.appendChild( div );

    var rb = new Tester(div);
	this.fixture.appendChild( fragment( '<div id=\'els\'><span id=\'elspan\'><a href=\'javascript://\' id=\'elsa\'>click me</a></span></div>') );

	var dt = new DelegateTest('#els');

	dt.on(document.querySelector('#els span'), 'a', 'click', function () {
		called = true;
	});

	domDispatch.call(document.querySelector('#els a'), 'click');

	ok(called, 'delegate works');

    domMutate.removeChild.call(this.fixture, document.querySelector('#els') );

	domDispatch.call(div, 'click');
    domDispatch.call(window, 'click');

	rb.destroy();
});
Example #2
0
test('custom events with hyphens work', 1, function () {
	this.fixture.appendChild( fragment( '<div id=\'customEvent\'><span></span></div>') );
	var FooBar = Control.extend({
		'span custom-event': function () {
			ok(true, 'Custom event was fired.');
		}
	});
	new FooBar('#customEvent');
	domDispatch.call(document.querySelector('#customEvent span'), 'custom-event');
});
Example #3
0
test('space makes event', 1, function () {

	var Dot = Control.extend({
		' foo': function () {
			ok(true, 'called');
		}
	});
	this.fixture.appendChild( fragment( '<div id=\'els\'><span id=\'elspan\'><a href=\'#\' id=\'elsa\'>click me</a></span></div>') );

	new Dot('#els');
	domDispatch.call(document.querySelector('#els'), 'foo');
});
Example #4
0
test('windowresize', function () {
	var called = false,
		WindowBind = Control.extend('', {
			'{window} resize': function () {
				called = true;
			}
		});

	this.fixture.appendChild( fragment( '<div id=\'weird\'>') );
	new WindowBind('#weird');
	domDispatch.call(window, 'resize');
	ok(called, 'got window resize event');
});
Example #5
0
test('inherit', function () {
	var called = false,
		Parent = Control.extend({
			click: function () {
				called = true;
			}
		}),
		Child = Parent.extend({});
	this.fixture.appendChild( fragment( '<div id=\'els\'><span id=\'elspan\'><a href=\'#\' id=\'elsa\'>click me</a></span></div>') );

	new Child('#els');
	domDispatch.call(document.querySelector('#els'), 'click');
	ok(called, 'inherited the click method');
});
Example #6
0
test('parameterized actions', function () {

	var called = false,
		WeirderBind = Control.extend({
			'{parameterized}': function () {
				called = true;
			}
		}),
		a;
    this.fixture.appendChild( fragment('<div id=\'crazy\'></div>'));

	a = document.getElementById('crazy');
	new WeirderBind(a, {
		parameterized: 'sillyEvent'
	});
	domDispatch.call(a, 'sillyEvent');
	ok(called, 'heard the trigger');
});
Example #7
0
test("drag and drop events", function() {
	expect(7);
	var DragDrop = Control.extend("", {
		" dragstart": function() {
			ok(true, "dragstart called");
		},
		" dragenter": function() {
			ok(true, "dragenter called");
		},
		" dragover": function() {
			ok(true, "dragover called");
		},
		" dragleave": function() {
			ok(true, "dragleave called");
		},
		" drag": function() {
			ok(true, "drag called");
		},
		" drop": function() {
			ok(true, "drop called");
		},
		" dragend": function() {
			ok(true, "dragend called");
		}
	});
	this.fixture.appendChild( fragment( '<div id="draggable"/>') );
	new DragDrop("#draggable");

    var draggable = document.getElementById("draggable");

	domDispatch.call(draggable, "dragstart");
	domDispatch.call(draggable, "dragenter");
	domDispatch.call(draggable, "dragover");
	domDispatch.call(draggable, "dragleave");
	domDispatch.call(draggable, "drag");
	domDispatch.call(draggable, "drop");
	domDispatch.call(draggable, "dragend");
});