angular-switcher
Version:
Angular Switcher is an AngularJS directive that models toggle switches.
2 lines • 1.61 kB
JavaScript
/*! angular-switcher - v0.2.7 - https://github.com/indrimuska/angular-switcher - (c) 2015 Indri Muska - MIT */
!function(a){var b=function(){function b(a){this.restrict="E",this.require="ngModel",this.scope={model:"=ngModel",disabled:"=?ngDisabled",trueValue:"=?",trueLabel:"@?",falseValue:"=?",falseLabel:"@?",change:"&?ngChange"},this.template='<div class="switcher" ng-class="{active:shadowModel,disabled:disabled}"><span class="switcher-label false" ng-bind-html="trustedHtml(falseLabel)" ng-click="set(false)"></span><label class="switcher-line"><input type="checkbox" ng-model="shadowModel" ng-disabled="disabled" ng-change="onChange()"></label><span class="switcher-label true" ng-bind-html="trustedHtml(trueLabel)" ng-click="set(true)"></span></div>',$sce=a}return b.prototype.$inject=["$sce"],b.prototype.link=function(b,c,d,e){var f={trueValue:!0,falseValue:!1,disabled:!1},g={trueLabel:"On",falseLabel:"Off"};a.forEach(f,function(c,d){a.isDefined(b[d])||(b[d]=c)}),a.forEach(g,function(c,e){a.isDefined(b[e])||(d[e]=c)}),b.trustedHtml=function(a){return $sce.trustAsHtml(a)},b.set=function(c){b.disabled||c==b.shadowModel||(a.isFunction(b.change)&&b.change({newValue:c,oldValue:b.shadowModel}),b.shadowModel=c)},b.onChange=function(){var c=b.model,d=b.shadowModel?b.trueValue:b.falseValue;b.model=d,a.isFunction(b.change)&&b.change({newValue:d,oldValue:c})},b.$watch("model",function(){b.shadowModel=b.model==b.trueValue}),b.$watch("shadowModel",function(){b.model=b[b.shadowModel+"Value"]})},b}();a.module("switcher",[]).directive("switcher",["$sce",function(a){return new b(a)}])}(window.angular);