/** * 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; });