/**
* Lens LAF Switches: Check boxes, radio buttons, and toggles.
*
* @name Lens.LAF.Switches
* @namespace
*/
define(["lib/jquery", "lib/underscore", "common/util/dom_utils"],
function($, _, DOMUtils) {
"use strict";
var enabled = true;
var Switches = /** @lends Lens.LAF.Switches */ {
/**
* Enables scrollbar styling
*/
enable: function() {
DOMUtils.addStylesheet("LAF/widgets/switches.less");
enabled = true;
},
/**
* Disabled scrollbar styling
*/
disable: function() {
DOMUtils.removeStylesheet("LAF/widgets/switches.less");
enabled = false;
},
/**
* Returns true if this LAF module is enabled
* @return {Boolean}
* @memberOf Lens.LAF.Switches
*/
enabled: function() {
return enabled;
}
};
var toggleChecked = function(target) {
if($(target).is(":not(:disabled)")) {
$(target).click();
}
};
var pickRadio = function(target) {
if($(target).is(":not(:disabled)")) {
$(target).click();
}
};
var switchRadio = function(container) {
container.find("input:not(:checked)").click();
};
$(function(){
document.addEventListener("lens:touchend", function(evt) {
if(!enabled) {
return;
}
_.each(evt.changedTouches, function(touch) {
if($(touch.target).is("input[type=checkbox]")) {
toggleChecked(touch.target);
}
else if($(touch.target).is("input[type=radio]")) {
pickRadio(touch.target);
}
else if($(touch.target).is("label")){
if($(touch.target).parents(".toggle").length === 1) {
// it's a toggle, let the click handler below deal with
// it
}
else {
toggleChecked($(touch.target).find("input[type=checkbox]"));
pickRadio($(touch.target).find("input[type=radio]"));
}
}
});
});
document.addEventListener("click", function(evt) {
if($(evt.target).is("label") && ($(evt.target).parents(".toggle").length === 1)){
switchRadio($(evt.target).parents(".toggle"));
}
});
});
Switches.enable();
Lens._addMember(Switches, "Switches", Lens.LAF);
return Switches;
});