Commit 374fb7715c047a73fcfa5fe354e6825fe62f6d66

Authored by andryeyev
1 parent df71ab61

+ bootstrap switch

bootstrap/switch/css/bootstrap-switch.css 0 → 100644
  1 +/* ========================================================================
  2 + * bootstrap-switch - v3.3.2
  3 + * http://www.bootstrap-switch.org
  4 + * ========================================================================
  5 + * Copyright 2012-2013 Mattia Larentis
  6 + *
  7 + * ========================================================================
  8 + * Licensed under the Apache License, Version 2.0 (the "License");
  9 + * you may not use this file except in compliance with the License.
  10 + * You may obtain a copy of the License at
  11 + *
  12 + * http://www.apache.org/licenses/LICENSE-2.0
  13 + *
  14 + * Unless required by applicable law or agreed to in writing, software
  15 + * distributed under the License is distributed on an "AS IS" BASIS,
  16 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  17 + * See the License for the specific language governing permissions and
  18 + * limitations under the License.
  19 + * ========================================================================
  20 + */
  21 +
  22 +.bootstrap-switch {
  23 + display: inline-block;
  24 + direction: ltr;
  25 + cursor: pointer;
  26 + border-radius: 4px;
  27 + border: 1px solid;
  28 + border-color: #cccccc;
  29 + position: relative;
  30 + text-align: left;
  31 + overflow: hidden;
  32 + line-height: 8px;
  33 + z-index: 0;
  34 + -webkit-user-select: none;
  35 + -moz-user-select: none;
  36 + -ms-user-select: none;
  37 + user-select: none;
  38 + vertical-align: middle;
  39 + -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  40 + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  41 + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  42 +}
  43 +.bootstrap-switch .bootstrap-switch-container {
  44 + display: inline-block;
  45 + top: 0;
  46 + border-radius: 4px;
  47 + -webkit-transform: translate3d(0, 0, 0);
  48 + transform: translate3d(0, 0, 0);
  49 +}
  50 +.bootstrap-switch .bootstrap-switch-handle-on,
  51 +.bootstrap-switch .bootstrap-switch-handle-off,
  52 +.bootstrap-switch .bootstrap-switch-label {
  53 + -webkit-box-sizing: border-box;
  54 + -moz-box-sizing: border-box;
  55 + box-sizing: border-box;
  56 + cursor: pointer;
  57 + display: inline-block !important;
  58 + height: 100%;
  59 + padding: 6px 12px;
  60 + font-size: 14px;
  61 + line-height: 20px;
  62 +}
  63 +.bootstrap-switch .bootstrap-switch-handle-on,
  64 +.bootstrap-switch .bootstrap-switch-handle-off {
  65 + text-align: center;
  66 + z-index: 1;
  67 +}
  68 +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary,
  69 +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary {
  70 + color: #fff;
  71 + background: #337ab7;
  72 +}
  73 +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info,
  74 +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info {
  75 + color: #fff;
  76 + background: #5bc0de;
  77 +}
  78 +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success,
  79 +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success {
  80 + color: #fff;
  81 + background: #5cb85c;
  82 +}
  83 +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning,
  84 +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning {
  85 + background: #f0ad4e;
  86 + color: #fff;
  87 +}
  88 +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger,
  89 +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger {
  90 + color: #fff;
  91 + background: #d9534f;
  92 +}
  93 +.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default,
  94 +.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default {
  95 + color: #000;
  96 + background: #eeeeee;
  97 +}
  98 +.bootstrap-switch .bootstrap-switch-label {
  99 + text-align: center;
  100 + margin-top: -1px;
  101 + margin-bottom: -1px;
  102 + z-index: 100;
  103 + color: #333333;
  104 + background: #ffffff;
  105 +}
  106 +.bootstrap-switch .bootstrap-switch-handle-on {
  107 + border-bottom-left-radius: 3px;
  108 + border-top-left-radius: 3px;
  109 +}
  110 +.bootstrap-switch .bootstrap-switch-handle-off {
  111 + border-bottom-right-radius: 3px;
  112 + border-top-right-radius: 3px;
  113 +}
  114 +.bootstrap-switch input[type='radio'],
  115 +.bootstrap-switch input[type='checkbox'] {
  116 + position: absolute !important;
  117 + top: 0;
  118 + left: 0;
  119 + margin: 0;
  120 + z-index: -1;
  121 + opacity: 0;
  122 + filter: alpha(opacity=0);
  123 +}
  124 +.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-on,
  125 +.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-off,
  126 +.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-label {
  127 + padding: 1px 5px;
  128 + font-size: 12px;
  129 + line-height: 1.5;
  130 +}
  131 +.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-on,
  132 +.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-off,
  133 +.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-label {
  134 + padding: 5px 10px;
  135 + font-size: 12px;
  136 + line-height: 1.5;
  137 +}
  138 +.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-on,
  139 +.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-off,
  140 +.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-label {
  141 + padding: 6px 16px;
  142 + font-size: 18px;
  143 + line-height: 1.3333333;
  144 +}
  145 +.bootstrap-switch.bootstrap-switch-disabled,
  146 +.bootstrap-switch.bootstrap-switch-readonly,
  147 +.bootstrap-switch.bootstrap-switch-indeterminate {
  148 + cursor: default !important;
  149 +}
  150 +.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-on,
  151 +.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-on,
  152 +.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-on,
  153 +.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-off,
  154 +.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-off,
  155 +.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-off,
  156 +.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-label,
  157 +.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-label,
  158 +.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-label {
  159 + opacity: 0.5;
  160 + filter: alpha(opacity=50);
  161 + cursor: default !important;
  162 +}
  163 +.bootstrap-switch.bootstrap-switch-animate .bootstrap-switch-container {
  164 + -webkit-transition: margin-left 0.5s;
  165 + -o-transition: margin-left 0.5s;
  166 + transition: margin-left 0.5s;
  167 +}
  168 +.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-on {
  169 + border-bottom-left-radius: 0;
  170 + border-top-left-radius: 0;
  171 + border-bottom-right-radius: 3px;
  172 + border-top-right-radius: 3px;
  173 +}
  174 +.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-off {
  175 + border-bottom-right-radius: 0;
  176 + border-top-right-radius: 0;
  177 + border-bottom-left-radius: 3px;
  178 + border-top-left-radius: 3px;
  179 +}
  180 +.bootstrap-switch.bootstrap-switch-focused {
  181 + border-color: #66afe9;
  182 + outline: 0;
  183 + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
  184 + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
  185 +}
  186 +.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-label,
  187 +.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-off .bootstrap-switch-label {
  188 + border-bottom-right-radius: 3px;
  189 + border-top-right-radius: 3px;
  190 +}
  191 +.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-label,
  192 +.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-on .bootstrap-switch-label {
  193 + border-bottom-left-radius: 3px;
  194 + border-top-left-radius: 3px;
  195 +}
... ...
bootstrap/switch/css/bootstrap-switch.min.css 0 → 100644
  1 +/* ========================================================================
  2 + * bootstrap-switch - v3.3.2
  3 + * http://www.bootstrap-switch.org
  4 + * ========================================================================
  5 + * Copyright 2012-2013 Mattia Larentis
  6 + *
  7 + * ========================================================================
  8 + * Licensed under the Apache License, Version 2.0 (the "License");
  9 + * you may not use this file except in compliance with the License.
  10 + * You may obtain a copy of the License at
  11 + *
  12 + * http://www.apache.org/licenses/LICENSE-2.0
  13 + *
  14 + * Unless required by applicable law or agreed to in writing, software
  15 + * distributed under the License is distributed on an "AS IS" BASIS,
  16 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  17 + * See the License for the specific language governing permissions and
  18 + * limitations under the License.
  19 + * ========================================================================
  20 + */
  21 +
  22 +.bootstrap-switch{display:inline-block;direction:ltr;cursor:pointer;border-radius:4px;border:1px solid #ccc;position:relative;text-align:left;overflow:hidden;line-height:8px;z-index:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.bootstrap-switch .bootstrap-switch-container{display:inline-block;top:0;border-radius:4px;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.bootstrap-switch .bootstrap-switch-handle-off,.bootstrap-switch .bootstrap-switch-handle-on,.bootstrap-switch .bootstrap-switch-label{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;cursor:pointer;display:inline-block!important;height:100%;padding:6px 12px;font-size:14px;line-height:20px}.bootstrap-switch .bootstrap-switch-handle-off,.bootstrap-switch .bootstrap-switch-handle-on{text-align:center;z-index:1}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary{color:#fff;background:#337ab7}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info{color:#fff;background:#5bc0de}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success{color:#fff;background:#5cb85c}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning{background:#f0ad4e;color:#fff}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger{color:#fff;background:#d9534f}.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default,.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default{color:#000;background:#eee}.bootstrap-switch .bootstrap-switch-label{text-align:center;margin-top:-1px;margin-bottom:-1px;z-index:100;color:#333;background:#fff}.bootstrap-switch .bootstrap-switch-handle-on{border-bottom-left-radius:3px;border-top-left-radius:3px}.bootstrap-switch .bootstrap-switch-handle-off{border-bottom-right-radius:3px;border-top-right-radius:3px}.bootstrap-switch input[type=radio],.bootstrap-switch input[type=checkbox]{position:absolute!important;top:0;left:0;margin:0;z-index:-1;opacity:0;filter:alpha(opacity=0)}.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-label{padding:1px 5px;font-size:12px;line-height:1.5}.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-label{padding:5px 10px;font-size:12px;line-height:1.5}.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-label{padding:6px 16px;font-size:18px;line-height:1.3333333}.bootstrap-switch.bootstrap-switch-disabled,.bootstrap-switch.bootstrap-switch-indeterminate,.bootstrap-switch.bootstrap-switch-readonly{cursor:default!important}.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-label,.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-label,.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-off,.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-on,.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-label{opacity:.5;filter:alpha(opacity=50);cursor:default!important}.bootstrap-switch.bootstrap-switch-animate .bootstrap-switch-container{-webkit-transition:margin-left .5s;-o-transition:margin-left .5s;transition:margin-left .5s}.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-on{border-radius:0 3px 3px 0}.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-off{border-radius:3px 0 0 3px}.bootstrap-switch.bootstrap-switch-focused{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-off .bootstrap-switch-label,.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-label{border-bottom-right-radius:3px;border-top-right-radius:3px}.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-on .bootstrap-switch-label,.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-label{border-bottom-left-radius:3px;border-top-left-radius:3px}
0 23 \ No newline at end of file
... ...
bootstrap/switch/js/bootstrap-switch.js 0 → 100644
  1 +/* ========================================================================
  2 + * bootstrap-switch - v3.3.2
  3 + * http://www.bootstrap-switch.org
  4 + * ========================================================================
  5 + * Copyright 2012-2013 Mattia Larentis
  6 + *
  7 + * ========================================================================
  8 + * Licensed under the Apache License, Version 2.0 (the "License");
  9 + * you may not use this file except in compliance with the License.
  10 + * You may obtain a copy of the License at
  11 + *
  12 + * http://www.apache.org/licenses/LICENSE-2.0
  13 + *
  14 + * Unless required by applicable law or agreed to in writing, software
  15 + * distributed under the License is distributed on an "AS IS" BASIS,
  16 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  17 + * See the License for the specific language governing permissions and
  18 + * limitations under the License.
  19 + * ========================================================================
  20 + */
  21 +
  22 +(function() {
  23 + var slice = [].slice;
  24 +
  25 + (function($, window) {
  26 + "use strict";
  27 + var BootstrapSwitch;
  28 + BootstrapSwitch = (function() {
  29 + function BootstrapSwitch(element, options) {
  30 + if (options == null) {
  31 + options = {};
  32 + }
  33 + this.$element = $(element);
  34 + this.options = $.extend({}, $.fn.bootstrapSwitch.defaults, {
  35 + state: this.$element.is(":checked"),
  36 + size: this.$element.data("size"),
  37 + animate: this.$element.data("animate"),
  38 + disabled: this.$element.is(":disabled"),
  39 + readonly: this.$element.is("[readonly]"),
  40 + indeterminate: this.$element.data("indeterminate"),
  41 + inverse: this.$element.data("inverse"),
  42 + radioAllOff: this.$element.data("radio-all-off"),
  43 + onColor: this.$element.data("on-color"),
  44 + offColor: this.$element.data("off-color"),
  45 + onText: this.$element.data("on-text"),
  46 + offText: this.$element.data("off-text"),
  47 + labelText: this.$element.data("label-text"),
  48 + handleWidth: this.$element.data("handle-width"),
  49 + labelWidth: this.$element.data("label-width"),
  50 + baseClass: this.$element.data("base-class"),
  51 + wrapperClass: this.$element.data("wrapper-class")
  52 + }, options);
  53 + this.prevOptions = {};
  54 + this.$wrapper = $("<div>", {
  55 + "class": (function(_this) {
  56 + return function() {
  57 + var classes;
  58 + classes = ["" + _this.options.baseClass].concat(_this._getClasses(_this.options.wrapperClass));
  59 + classes.push(_this.options.state ? _this.options.baseClass + "-on" : _this.options.baseClass + "-off");
  60 + if (_this.options.size != null) {
  61 + classes.push(_this.options.baseClass + "-" + _this.options.size);
  62 + }
  63 + if (_this.options.disabled) {
  64 + classes.push(_this.options.baseClass + "-disabled");
  65 + }
  66 + if (_this.options.readonly) {
  67 + classes.push(_this.options.baseClass + "-readonly");
  68 + }
  69 + if (_this.options.indeterminate) {
  70 + classes.push(_this.options.baseClass + "-indeterminate");
  71 + }
  72 + if (_this.options.inverse) {
  73 + classes.push(_this.options.baseClass + "-inverse");
  74 + }
  75 + if (_this.$element.attr("id")) {
  76 + classes.push(_this.options.baseClass + "-id-" + (_this.$element.attr("id")));
  77 + }
  78 + return classes.join(" ");
  79 + };
  80 + })(this)()
  81 + });
  82 + this.$container = $("<div>", {
  83 + "class": this.options.baseClass + "-container"
  84 + });
  85 + this.$on = $("<span>", {
  86 + html: this.options.onText,
  87 + "class": this.options.baseClass + "-handle-on " + this.options.baseClass + "-" + this.options.onColor
  88 + });
  89 + this.$off = $("<span>", {
  90 + html: this.options.offText,
  91 + "class": this.options.baseClass + "-handle-off " + this.options.baseClass + "-" + this.options.offColor
  92 + });
  93 + this.$label = $("<span>", {
  94 + html: this.options.labelText,
  95 + "class": this.options.baseClass + "-label"
  96 + });
  97 + this.$element.on("init.bootstrapSwitch", (function(_this) {
  98 + return function() {
  99 + return _this.options.onInit.apply(element, arguments);
  100 + };
  101 + })(this));
  102 + this.$element.on("switchChange.bootstrapSwitch", (function(_this) {
  103 + return function(e) {
  104 + if (false === _this.options.onSwitchChange.apply(element, arguments)) {
  105 + if (_this.$element.is(":radio")) {
  106 + return $("[name='" + (_this.$element.attr('name')) + "']").trigger("previousState.bootstrapSwitch", true);
  107 + } else {
  108 + return _this.$element.trigger("previousState.bootstrapSwitch", true);
  109 + }
  110 + }
  111 + };
  112 + })(this));
  113 + this.$container = this.$element.wrap(this.$container).parent();
  114 + this.$wrapper = this.$container.wrap(this.$wrapper).parent();
  115 + this.$element.before(this.options.inverse ? this.$off : this.$on).before(this.$label).before(this.options.inverse ? this.$on : this.$off);
  116 + if (this.options.indeterminate) {
  117 + this.$element.prop("indeterminate", true);
  118 + }
  119 + this._init();
  120 + this._elementHandlers();
  121 + this._handleHandlers();
  122 + this._labelHandlers();
  123 + this._formHandler();
  124 + this._externalLabelHandler();
  125 + this.$element.trigger("init.bootstrapSwitch", this.options.state);
  126 + }
  127 +
  128 + BootstrapSwitch.prototype._constructor = BootstrapSwitch;
  129 +
  130 + BootstrapSwitch.prototype.setPrevOptions = function() {
  131 + return this.prevOptions = $.extend(true, {}, this.options);
  132 + };
  133 +
  134 + BootstrapSwitch.prototype.state = function(value, skip) {
  135 + if (typeof value === "undefined") {
  136 + return this.options.state;
  137 + }
  138 + if (this.options.disabled || this.options.readonly) {
  139 + return this.$element;
  140 + }
  141 + if (this.options.state && !this.options.radioAllOff && this.$element.is(":radio")) {
  142 + return this.$element;
  143 + }
  144 + if (this.$element.is(":radio")) {
  145 + $("[name='" + (this.$element.attr('name')) + "']").trigger("setPreviousOptions.bootstrapSwitch");
  146 + } else {
  147 + this.$element.trigger("setPreviousOptions.bootstrapSwitch");
  148 + }
  149 + if (this.options.indeterminate) {
  150 + this.indeterminate(false);
  151 + }
  152 + value = !!value;
  153 + this.$element.prop("checked", value).trigger("change.bootstrapSwitch", skip);
  154 + return this.$element;
  155 + };
  156 +
  157 + BootstrapSwitch.prototype.toggleState = function(skip) {
  158 + if (this.options.disabled || this.options.readonly) {
  159 + return this.$element;
  160 + }
  161 + if (this.options.indeterminate) {
  162 + this.indeterminate(false);
  163 + return this.state(true);
  164 + } else {
  165 + return this.$element.prop("checked", !this.options.state).trigger("change.bootstrapSwitch", skip);
  166 + }
  167 + };
  168 +
  169 + BootstrapSwitch.prototype.size = function(value) {
  170 + if (typeof value === "undefined") {
  171 + return this.options.size;
  172 + }
  173 + if (this.options.size != null) {
  174 + this.$wrapper.removeClass(this.options.baseClass + "-" + this.options.size);
  175 + }
  176 + if (value) {
  177 + this.$wrapper.addClass(this.options.baseClass + "-" + value);
  178 + }
  179 + this._width();
  180 + this._containerPosition();
  181 + this.options.size = value;
  182 + return this.$element;
  183 + };
  184 +
  185 + BootstrapSwitch.prototype.animate = function(value) {
  186 + if (typeof value === "undefined") {
  187 + return this.options.animate;
  188 + }
  189 + value = !!value;
  190 + if (value === this.options.animate) {
  191 + return this.$element;
  192 + }
  193 + return this.toggleAnimate();
  194 + };
  195 +
  196 + BootstrapSwitch.prototype.toggleAnimate = function() {
  197 + this.options.animate = !this.options.animate;
  198 + this.$wrapper.toggleClass(this.options.baseClass + "-animate");
  199 + return this.$element;
  200 + };
  201 +
  202 + BootstrapSwitch.prototype.disabled = function(value) {
  203 + if (typeof value === "undefined") {
  204 + return this.options.disabled;
  205 + }
  206 + value = !!value;
  207 + if (value === this.options.disabled) {
  208 + return this.$element;
  209 + }
  210 + return this.toggleDisabled();
  211 + };
  212 +
  213 + BootstrapSwitch.prototype.toggleDisabled = function() {
  214 + this.options.disabled = !this.options.disabled;
  215 + this.$element.prop("disabled", this.options.disabled);
  216 + this.$wrapper.toggleClass(this.options.baseClass + "-disabled");
  217 + return this.$element;
  218 + };
  219 +
  220 + BootstrapSwitch.prototype.readonly = function(value) {
  221 + if (typeof value === "undefined") {
  222 + return this.options.readonly;
  223 + }
  224 + value = !!value;
  225 + if (value === this.options.readonly) {
  226 + return this.$element;
  227 + }
  228 + return this.toggleReadonly();
  229 + };
  230 +
  231 + BootstrapSwitch.prototype.toggleReadonly = function() {
  232 + this.options.readonly = !this.options.readonly;
  233 + this.$element.prop("readonly", this.options.readonly);
  234 + this.$wrapper.toggleClass(this.options.baseClass + "-readonly");
  235 + return this.$element;
  236 + };
  237 +
  238 + BootstrapSwitch.prototype.indeterminate = function(value) {
  239 + if (typeof value === "undefined") {
  240 + return this.options.indeterminate;
  241 + }
  242 + value = !!value;
  243 + if (value === this.options.indeterminate) {
  244 + return this.$element;
  245 + }
  246 + return this.toggleIndeterminate();
  247 + };
  248 +
  249 + BootstrapSwitch.prototype.toggleIndeterminate = function() {
  250 + this.options.indeterminate = !this.options.indeterminate;
  251 + this.$element.prop("indeterminate", this.options.indeterminate);
  252 + this.$wrapper.toggleClass(this.options.baseClass + "-indeterminate");
  253 + this._containerPosition();
  254 + return this.$element;
  255 + };
  256 +
  257 + BootstrapSwitch.prototype.inverse = function(value) {
  258 + if (typeof value === "undefined") {
  259 + return this.options.inverse;
  260 + }
  261 + value = !!value;
  262 + if (value === this.options.inverse) {
  263 + return this.$element;
  264 + }
  265 + return this.toggleInverse();
  266 + };
  267 +
  268 + BootstrapSwitch.prototype.toggleInverse = function() {
  269 + var $off, $on;
  270 + this.$wrapper.toggleClass(this.options.baseClass + "-inverse");
  271 + $on = this.$on.clone(true);
  272 + $off = this.$off.clone(true);
  273 + this.$on.replaceWith($off);
  274 + this.$off.replaceWith($on);
  275 + this.$on = $off;
  276 + this.$off = $on;
  277 + this.options.inverse = !this.options.inverse;
  278 + return this.$element;
  279 + };
  280 +
  281 + BootstrapSwitch.prototype.onColor = function(value) {
  282 + var color;
  283 + color = this.options.onColor;
  284 + if (typeof value === "undefined") {
  285 + return color;
  286 + }
  287 + if (color != null) {
  288 + this.$on.removeClass(this.options.baseClass + "-" + color);
  289 + }
  290 + this.$on.addClass(this.options.baseClass + "-" + value);
  291 + this.options.onColor = value;
  292 + return this.$element;
  293 + };
  294 +
  295 + BootstrapSwitch.prototype.offColor = function(value) {
  296 + var color;
  297 + color = this.options.offColor;
  298 + if (typeof value === "undefined") {
  299 + return color;
  300 + }
  301 + if (color != null) {
  302 + this.$off.removeClass(this.options.baseClass + "-" + color);
  303 + }
  304 + this.$off.addClass(this.options.baseClass + "-" + value);
  305 + this.options.offColor = value;
  306 + return this.$element;
  307 + };
  308 +
  309 + BootstrapSwitch.prototype.onText = function(value) {
  310 + if (typeof value === "undefined") {
  311 + return this.options.onText;
  312 + }
  313 + this.$on.html(value);
  314 + this._width();
  315 + this._containerPosition();
  316 + this.options.onText = value;
  317 + return this.$element;
  318 + };
  319 +
  320 + BootstrapSwitch.prototype.offText = function(value) {
  321 + if (typeof value === "undefined") {
  322 + return this.options.offText;
  323 + }
  324 + this.$off.html(value);
  325 + this._width();
  326 + this._containerPosition();
  327 + this.options.offText = value;
  328 + return this.$element;
  329 + };
  330 +
  331 + BootstrapSwitch.prototype.labelText = function(value) {
  332 + if (typeof value === "undefined") {
  333 + return this.options.labelText;
  334 + }
  335 + this.$label.html(value);
  336 + this._width();
  337 + this.options.labelText = value;
  338 + return this.$element;
  339 + };
  340 +
  341 + BootstrapSwitch.prototype.handleWidth = function(value) {
  342 + if (typeof value === "undefined") {
  343 + return this.options.handleWidth;
  344 + }
  345 + this.options.handleWidth = value;
  346 + this._width();
  347 + this._containerPosition();
  348 + return this.$element;
  349 + };
  350 +
  351 + BootstrapSwitch.prototype.labelWidth = function(value) {
  352 + if (typeof value === "undefined") {
  353 + return this.options.labelWidth;
  354 + }
  355 + this.options.labelWidth = value;
  356 + this._width();
  357 + this._containerPosition();
  358 + return this.$element;
  359 + };
  360 +
  361 + BootstrapSwitch.prototype.baseClass = function(value) {
  362 + return this.options.baseClass;
  363 + };
  364 +
  365 + BootstrapSwitch.prototype.wrapperClass = function(value) {
  366 + if (typeof value === "undefined") {
  367 + return this.options.wrapperClass;
  368 + }
  369 + if (!value) {
  370 + value = $.fn.bootstrapSwitch.defaults.wrapperClass;
  371 + }
  372 + this.$wrapper.removeClass(this._getClasses(this.options.wrapperClass).join(" "));
  373 + this.$wrapper.addClass(this._getClasses(value).join(" "));
  374 + this.options.wrapperClass = value;
  375 + return this.$element;
  376 + };
  377 +
  378 + BootstrapSwitch.prototype.radioAllOff = function(value) {
  379 + if (typeof value === "undefined") {
  380 + return this.options.radioAllOff;
  381 + }
  382 + value = !!value;
  383 + if (value === this.options.radioAllOff) {
  384 + return this.$element;
  385 + }
  386 + this.options.radioAllOff = value;
  387 + return this.$element;
  388 + };
  389 +
  390 + BootstrapSwitch.prototype.onInit = function(value) {
  391 + if (typeof value === "undefined") {
  392 + return this.options.onInit;
  393 + }
  394 + if (!value) {
  395 + value = $.fn.bootstrapSwitch.defaults.onInit;
  396 + }
  397 + this.options.onInit = value;
  398 + return this.$element;
  399 + };
  400 +
  401 + BootstrapSwitch.prototype.onSwitchChange = function(value) {
  402 + if (typeof value === "undefined") {
  403 + return this.options.onSwitchChange;
  404 + }
  405 + if (!value) {
  406 + value = $.fn.bootstrapSwitch.defaults.onSwitchChange;
  407 + }
  408 + this.options.onSwitchChange = value;
  409 + return this.$element;
  410 + };
  411 +
  412 + BootstrapSwitch.prototype.destroy = function() {
  413 + var $form;
  414 + $form = this.$element.closest("form");
  415 + if ($form.length) {
  416 + $form.off("reset.bootstrapSwitch").removeData("bootstrap-switch");
  417 + }
  418 + this.$container.children().not(this.$element).remove();
  419 + this.$element.unwrap().unwrap().off(".bootstrapSwitch").removeData("bootstrap-switch");
  420 + return this.$element;
  421 + };
  422 +
  423 + BootstrapSwitch.prototype._width = function() {
  424 + var $handles, handleWidth;
  425 + $handles = this.$on.add(this.$off);
  426 + $handles.add(this.$label).css("width", "");
  427 + handleWidth = this.options.handleWidth === "auto" ? Math.max(this.$on.width(), this.$off.width()) : this.options.handleWidth;
  428 + $handles.width(handleWidth);
  429 + this.$label.width((function(_this) {
  430 + return function(index, width) {
  431 + if (_this.options.labelWidth !== "auto") {
  432 + return _this.options.labelWidth;
  433 + }
  434 + if (width < handleWidth) {
  435 + return handleWidth;
  436 + } else {
  437 + return width;
  438 + }
  439 + };
  440 + })(this));
  441 + this._handleWidth = this.$on.outerWidth();
  442 + this._labelWidth = this.$label.outerWidth();
  443 + this.$container.width((this._handleWidth * 2) + this._labelWidth);
  444 + return this.$wrapper.width(this._handleWidth + this._labelWidth);
  445 + };
  446 +
  447 + BootstrapSwitch.prototype._containerPosition = function(state, callback) {
  448 + if (state == null) {
  449 + state = this.options.state;
  450 + }
  451 + this.$container.css("margin-left", (function(_this) {
  452 + return function() {
  453 + var values;
  454 + values = [0, "-" + _this._handleWidth + "px"];
  455 + if (_this.options.indeterminate) {
  456 + return "-" + (_this._handleWidth / 2) + "px";
  457 + }
  458 + if (state) {
  459 + if (_this.options.inverse) {
  460 + return values[1];
  461 + } else {
  462 + return values[0];
  463 + }
  464 + } else {
  465 + if (_this.options.inverse) {
  466 + return values[0];
  467 + } else {
  468 + return values[1];
  469 + }
  470 + }
  471 + };
  472 + })(this));
  473 + if (!callback) {
  474 + return;
  475 + }
  476 + return setTimeout(function() {
  477 + return callback();
  478 + }, 50);
  479 + };
  480 +
  481 + BootstrapSwitch.prototype._init = function() {
  482 + var init, initInterval;
  483 + init = (function(_this) {
  484 + return function() {
  485 + _this.setPrevOptions();
  486 + _this._width();
  487 + return _this._containerPosition(null, function() {
  488 + if (_this.options.animate) {
  489 + return _this.$wrapper.addClass(_this.options.baseClass + "-animate");
  490 + }
  491 + });
  492 + };
  493 + })(this);
  494 + if (this.$wrapper.is(":visible")) {
  495 + return init();
  496 + }
  497 + return initInterval = window.setInterval((function(_this) {
  498 + return function() {
  499 + if (_this.$wrapper.is(":visible")) {
  500 + init();
  501 + return window.clearInterval(initInterval);
  502 + }
  503 + };
  504 + })(this), 50);
  505 + };
  506 +
  507 + BootstrapSwitch.prototype._elementHandlers = function() {
  508 + return this.$element.on({
  509 + "setPreviousOptions.bootstrapSwitch": (function(_this) {
  510 + return function(e) {
  511 + return _this.setPrevOptions();
  512 + };
  513 + })(this),
  514 + "previousState.bootstrapSwitch": (function(_this) {
  515 + return function(e) {
  516 + _this.options = _this.prevOptions;
  517 + if (_this.options.indeterminate) {
  518 + _this.$wrapper.addClass(_this.options.baseClass + "-indeterminate");
  519 + }
  520 + return _this.$element.prop("checked", _this.options.state).trigger("change.bootstrapSwitch", true);
  521 + };
  522 + })(this),
  523 + "change.bootstrapSwitch": (function(_this) {
  524 + return function(e, skip) {
  525 + var state;
  526 + e.preventDefault();
  527 + e.stopImmediatePropagation();
  528 + state = _this.$element.is(":checked");
  529 + _this._containerPosition(state);
  530 + if (state === _this.options.state) {
  531 + return;
  532 + }
  533 + _this.options.state = state;
  534 + _this.$wrapper.toggleClass(_this.options.baseClass + "-off").toggleClass(_this.options.baseClass + "-on");
  535 + if (!skip) {
  536 + if (_this.$element.is(":radio")) {
  537 + $("[name='" + (_this.$element.attr('name')) + "']").not(_this.$element).prop("checked", false).trigger("change.bootstrapSwitch", true);
  538 + }
  539 + return _this.$element.trigger("switchChange.bootstrapSwitch", [state]);
  540 + }
  541 + };
  542 + })(this),
  543 + "focus.bootstrapSwitch": (function(_this) {
  544 + return function(e) {
  545 + e.preventDefault();
  546 + return _this.$wrapper.addClass(_this.options.baseClass + "-focused");
  547 + };
  548 + })(this),
  549 + "blur.bootstrapSwitch": (function(_this) {
  550 + return function(e) {
  551 + e.preventDefault();
  552 + return _this.$wrapper.removeClass(_this.options.baseClass + "-focused");
  553 + };
  554 + })(this),
  555 + "keydown.bootstrapSwitch": (function(_this) {
  556 + return function(e) {
  557 + if (!e.which || _this.options.disabled || _this.options.readonly) {
  558 + return;
  559 + }
  560 + switch (e.which) {
  561 + case 37:
  562 + e.preventDefault();
  563 + e.stopImmediatePropagation();
  564 + return _this.state(false);
  565 + case 39:
  566 + e.preventDefault();
  567 + e.stopImmediatePropagation();
  568 + return _this.state(true);
  569 + }
  570 + };
  571 + })(this)
  572 + });
  573 + };
  574 +
  575 + BootstrapSwitch.prototype._handleHandlers = function() {
  576 + this.$on.on("click.bootstrapSwitch", (function(_this) {
  577 + return function(event) {
  578 + event.preventDefault();
  579 + event.stopPropagation();
  580 + _this.state(false);
  581 + return _this.$element.trigger("focus.bootstrapSwitch");
  582 + };
  583 + })(this));
  584 + return this.$off.on("click.bootstrapSwitch", (function(_this) {
  585 + return function(event) {
  586 + event.preventDefault();
  587 + event.stopPropagation();
  588 + _this.state(true);
  589 + return _this.$element.trigger("focus.bootstrapSwitch");
  590 + };
  591 + })(this));
  592 + };
  593 +
  594 + BootstrapSwitch.prototype._labelHandlers = function() {
  595 + return this.$label.on({
  596 + "click": function(e) {
  597 + return e.stopPropagation();
  598 + },
  599 + "mousedown.bootstrapSwitch touchstart.bootstrapSwitch": (function(_this) {
  600 + return function(e) {
  601 + if (_this._dragStart || _this.options.disabled || _this.options.readonly) {
  602 + return;
  603 + }
  604 + e.preventDefault();
  605 + e.stopPropagation();
  606 + _this._dragStart = (e.pageX || e.originalEvent.touches[0].pageX) - parseInt(_this.$container.css("margin-left"), 10);
  607 + if (_this.options.animate) {
  608 + _this.$wrapper.removeClass(_this.options.baseClass + "-animate");
  609 + }
  610 + return _this.$element.trigger("focus.bootstrapSwitch");
  611 + };
  612 + })(this),
  613 + "mousemove.bootstrapSwitch touchmove.bootstrapSwitch": (function(_this) {
  614 + return function(e) {
  615 + var difference;
  616 + if (_this._dragStart == null) {
  617 + return;
  618 + }
  619 + e.preventDefault();
  620 + difference = (e.pageX || e.originalEvent.touches[0].pageX) - _this._dragStart;
  621 + if (difference < -_this._handleWidth || difference > 0) {
  622 + return;
  623 + }
  624 + _this._dragEnd = difference;
  625 + return _this.$container.css("margin-left", _this._dragEnd + "px");
  626 + };
  627 + })(this),
  628 + "mouseup.bootstrapSwitch touchend.bootstrapSwitch": (function(_this) {
  629 + return function(e) {
  630 + var state;
  631 + if (!_this._dragStart) {
  632 + return;
  633 + }
  634 + e.preventDefault();
  635 + if (_this.options.animate) {
  636 + _this.$wrapper.addClass(_this.options.baseClass + "-animate");
  637 + }
  638 + if (_this._dragEnd) {
  639 + state = _this._dragEnd > -(_this._handleWidth / 2);
  640 + _this._dragEnd = false;
  641 + _this.state(_this.options.inverse ? !state : state);
  642 + } else {
  643 + _this.state(!_this.options.state);
  644 + }
  645 + return _this._dragStart = false;
  646 + };
  647 + })(this),
  648 + "mouseleave.bootstrapSwitch": (function(_this) {
  649 + return function(e) {
  650 + return _this.$label.trigger("mouseup.bootstrapSwitch");
  651 + };
  652 + })(this)
  653 + });
  654 + };
  655 +
  656 + BootstrapSwitch.prototype._externalLabelHandler = function() {
  657 + var $externalLabel;
  658 + $externalLabel = this.$element.closest("label");
  659 + return $externalLabel.on("click", (function(_this) {
  660 + return function(event) {
  661 + event.preventDefault();
  662 + event.stopImmediatePropagation();
  663 + if (event.target === $externalLabel[0]) {
  664 + return _this.toggleState();
  665 + }
  666 + };
  667 + })(this));
  668 + };
  669 +
  670 + BootstrapSwitch.prototype._formHandler = function() {
  671 + var $form;
  672 + $form = this.$element.closest("form");
  673 + if ($form.data("bootstrap-switch")) {
  674 + return;
  675 + }
  676 + return $form.on("reset.bootstrapSwitch", function() {
  677 + return window.setTimeout(function() {
  678 + return $form.find("input").filter(function() {
  679 + return $(this).data("bootstrap-switch");
  680 + }).each(function() {
  681 + return $(this).bootstrapSwitch("state", this.checked);
  682 + });
  683 + }, 1);
  684 + }).data("bootstrap-switch", true);
  685 + };
  686 +
  687 + BootstrapSwitch.prototype._getClasses = function(classes) {
  688 + var c, cls, i, len;
  689 + if (!$.isArray(classes)) {
  690 + return [this.options.baseClass + "-" + classes];
  691 + }
  692 + cls = [];
  693 + for (i = 0, len = classes.length; i < len; i++) {
  694 + c = classes[i];
  695 + cls.push(this.options.baseClass + "-" + c);
  696 + }
  697 + return cls;
  698 + };
  699 +
  700 + return BootstrapSwitch;
  701 +
  702 + })();
  703 + $.fn.bootstrapSwitch = function() {
  704 + var args, option, ret;
  705 + option = arguments[0], args = 2 <= arguments.length ? slice.call(arguments, 1) : [];
  706 + ret = this;
  707 + this.each(function() {
  708 + var $this, data;
  709 + $this = $(this);
  710 + data = $this.data("bootstrap-switch");
  711 + if (!data) {
  712 + $this.data("bootstrap-switch", data = new BootstrapSwitch(this, option));
  713 + }
  714 + if (typeof option === "string") {
  715 + return ret = data[option].apply(data, args);
  716 + }
  717 + });
  718 + return ret;
  719 + };
  720 + $.fn.bootstrapSwitch.Constructor = BootstrapSwitch;
  721 + return $.fn.bootstrapSwitch.defaults = {
  722 + state: true,
  723 + size: null,
  724 + animate: true,
  725 + disabled: false,
  726 + readonly: false,
  727 + indeterminate: false,
  728 + inverse: false,
  729 + radioAllOff: false,
  730 + onColor: "primary",
  731 + offColor: "default",
  732 + onText: "ON",
  733 + offText: "OFF",
  734 + labelText: "&nbsp;",
  735 + handleWidth: "auto",
  736 + labelWidth: "auto",
  737 + baseClass: "bootstrap-switch",
  738 + wrapperClass: "wrapper",
  739 + onInit: function() {},
  740 + onSwitchChange: function() {}
  741 + };
  742 + })(window.jQuery, window);
  743 +
  744 +}).call(this);
... ...
bootstrap/switch/js/bootstrap-switch.min.js 0 → 100644
  1 +/* ========================================================================
  2 + * bootstrap-switch - v3.3.2
  3 + * http://www.bootstrap-switch.org
  4 + * ========================================================================
  5 + * Copyright 2012-2013 Mattia Larentis
  6 + *
  7 + * ========================================================================
  8 + * Licensed under the Apache License, Version 2.0 (the "License");
  9 + * you may not use this file except in compliance with the License.
  10 + * You may obtain a copy of the License at
  11 + *
  12 + * http://www.apache.org/licenses/LICENSE-2.0
  13 + *
  14 + * Unless required by applicable law or agreed to in writing, software
  15 + * distributed under the License is distributed on an "AS IS" BASIS,
  16 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  17 + * See the License for the specific language governing permissions and
  18 + * limitations under the License.
  19 + * ========================================================================
  20 + */
  21 +
  22 +(function(){var t=[].slice;!function(e,i){"use strict";var n;return n=function(){function t(t,i){null==i&&(i={}),this.$element=e(t),this.options=e.extend({},e.fn.bootstrapSwitch.defaults,{state:this.$element.is(":checked"),size:this.$element.data("size"),animate:this.$element.data("animate"),disabled:this.$element.is(":disabled"),readonly:this.$element.is("[readonly]"),indeterminate:this.$element.data("indeterminate"),inverse:this.$element.data("inverse"),radioAllOff:this.$element.data("radio-all-off"),onColor:this.$element.data("on-color"),offColor:this.$element.data("off-color"),onText:this.$element.data("on-text"),offText:this.$element.data("off-text"),labelText:this.$element.data("label-text"),handleWidth:this.$element.data("handle-width"),labelWidth:this.$element.data("label-width"),baseClass:this.$element.data("base-class"),wrapperClass:this.$element.data("wrapper-class")},i),this.prevOptions={},this.$wrapper=e("<div>",{"class":function(t){return function(){var e;return e=[""+t.options.baseClass].concat(t._getClasses(t.options.wrapperClass)),e.push(t.options.state?t.options.baseClass+"-on":t.options.baseClass+"-off"),null!=t.options.size&&e.push(t.options.baseClass+"-"+t.options.size),t.options.disabled&&e.push(t.options.baseClass+"-disabled"),t.options.readonly&&e.push(t.options.baseClass+"-readonly"),t.options.indeterminate&&e.push(t.options.baseClass+"-indeterminate"),t.options.inverse&&e.push(t.options.baseClass+"-inverse"),t.$element.attr("id")&&e.push(t.options.baseClass+"-id-"+t.$element.attr("id")),e.join(" ")}}(this)()}),this.$container=e("<div>",{"class":this.options.baseClass+"-container"}),this.$on=e("<span>",{html:this.options.onText,"class":this.options.baseClass+"-handle-on "+this.options.baseClass+"-"+this.options.onColor}),this.$off=e("<span>",{html:this.options.offText,"class":this.options.baseClass+"-handle-off "+this.options.baseClass+"-"+this.options.offColor}),this.$label=e("<span>",{html:this.options.labelText,"class":this.options.baseClass+"-label"}),this.$element.on("init.bootstrapSwitch",function(e){return function(){return e.options.onInit.apply(t,arguments)}}(this)),this.$element.on("switchChange.bootstrapSwitch",function(i){return function(n){return!1===i.options.onSwitchChange.apply(t,arguments)?i.$element.is(":radio")?e("[name='"+i.$element.attr("name")+"']").trigger("previousState.bootstrapSwitch",!0):i.$element.trigger("previousState.bootstrapSwitch",!0):void 0}}(this)),this.$container=this.$element.wrap(this.$container).parent(),this.$wrapper=this.$container.wrap(this.$wrapper).parent(),this.$element.before(this.options.inverse?this.$off:this.$on).before(this.$label).before(this.options.inverse?this.$on:this.$off),this.options.indeterminate&&this.$element.prop("indeterminate",!0),this._init(),this._elementHandlers(),this._handleHandlers(),this._labelHandlers(),this._formHandler(),this._externalLabelHandler(),this.$element.trigger("init.bootstrapSwitch",this.options.state)}return t.prototype._constructor=t,t.prototype.setPrevOptions=function(){return this.prevOptions=e.extend(!0,{},this.options)},t.prototype.state=function(t,i){return"undefined"==typeof t?this.options.state:this.options.disabled||this.options.readonly?this.$element:this.options.state&&!this.options.radioAllOff&&this.$element.is(":radio")?this.$element:(this.$element.is(":radio")?e("[name='"+this.$element.attr("name")+"']").trigger("setPreviousOptions.bootstrapSwitch"):this.$element.trigger("setPreviousOptions.bootstrapSwitch"),this.options.indeterminate&&this.indeterminate(!1),t=!!t,this.$element.prop("checked",t).trigger("change.bootstrapSwitch",i),this.$element)},t.prototype.toggleState=function(t){return this.options.disabled||this.options.readonly?this.$element:this.options.indeterminate?(this.indeterminate(!1),this.state(!0)):this.$element.prop("checked",!this.options.state).trigger("change.bootstrapSwitch",t)},t.prototype.size=function(t){return"undefined"==typeof t?this.options.size:(null!=this.options.size&&this.$wrapper.removeClass(this.options.baseClass+"-"+this.options.size),t&&this.$wrapper.addClass(this.options.baseClass+"-"+t),this._width(),this._containerPosition(),this.options.size=t,this.$element)},t.prototype.animate=function(t){return"undefined"==typeof t?this.options.animate:(t=!!t,t===this.options.animate?this.$element:this.toggleAnimate())},t.prototype.toggleAnimate=function(){return this.options.animate=!this.options.animate,this.$wrapper.toggleClass(this.options.baseClass+"-animate"),this.$element},t.prototype.disabled=function(t){return"undefined"==typeof t?this.options.disabled:(t=!!t,t===this.options.disabled?this.$element:this.toggleDisabled())},t.prototype.toggleDisabled=function(){return this.options.disabled=!this.options.disabled,this.$element.prop("disabled",this.options.disabled),this.$wrapper.toggleClass(this.options.baseClass+"-disabled"),this.$element},t.prototype.readonly=function(t){return"undefined"==typeof t?this.options.readonly:(t=!!t,t===this.options.readonly?this.$element:this.toggleReadonly())},t.prototype.toggleReadonly=function(){return this.options.readonly=!this.options.readonly,this.$element.prop("readonly",this.options.readonly),this.$wrapper.toggleClass(this.options.baseClass+"-readonly"),this.$element},t.prototype.indeterminate=function(t){return"undefined"==typeof t?this.options.indeterminate:(t=!!t,t===this.options.indeterminate?this.$element:this.toggleIndeterminate())},t.prototype.toggleIndeterminate=function(){return this.options.indeterminate=!this.options.indeterminate,this.$element.prop("indeterminate",this.options.indeterminate),this.$wrapper.toggleClass(this.options.baseClass+"-indeterminate"),this._containerPosition(),this.$element},t.prototype.inverse=function(t){return"undefined"==typeof t?this.options.inverse:(t=!!t,t===this.options.inverse?this.$element:this.toggleInverse())},t.prototype.toggleInverse=function(){var t,e;return this.$wrapper.toggleClass(this.options.baseClass+"-inverse"),e=this.$on.clone(!0),t=this.$off.clone(!0),this.$on.replaceWith(t),this.$off.replaceWith(e),this.$on=t,this.$off=e,this.options.inverse=!this.options.inverse,this.$element},t.prototype.onColor=function(t){var e;return e=this.options.onColor,"undefined"==typeof t?e:(null!=e&&this.$on.removeClass(this.options.baseClass+"-"+e),this.$on.addClass(this.options.baseClass+"-"+t),this.options.onColor=t,this.$element)},t.prototype.offColor=function(t){var e;return e=this.options.offColor,"undefined"==typeof t?e:(null!=e&&this.$off.removeClass(this.options.baseClass+"-"+e),this.$off.addClass(this.options.baseClass+"-"+t),this.options.offColor=t,this.$element)},t.prototype.onText=function(t){return"undefined"==typeof t?this.options.onText:(this.$on.html(t),this._width(),this._containerPosition(),this.options.onText=t,this.$element)},t.prototype.offText=function(t){return"undefined"==typeof t?this.options.offText:(this.$off.html(t),this._width(),this._containerPosition(),this.options.offText=t,this.$element)},t.prototype.labelText=function(t){return"undefined"==typeof t?this.options.labelText:(this.$label.html(t),this._width(),this.options.labelText=t,this.$element)},t.prototype.handleWidth=function(t){return"undefined"==typeof t?this.options.handleWidth:(this.options.handleWidth=t,this._width(),this._containerPosition(),this.$element)},t.prototype.labelWidth=function(t){return"undefined"==typeof t?this.options.labelWidth:(this.options.labelWidth=t,this._width(),this._containerPosition(),this.$element)},t.prototype.baseClass=function(t){return this.options.baseClass},t.prototype.wrapperClass=function(t){return"undefined"==typeof t?this.options.wrapperClass:(t||(t=e.fn.bootstrapSwitch.defaults.wrapperClass),this.$wrapper.removeClass(this._getClasses(this.options.wrapperClass).join(" ")),this.$wrapper.addClass(this._getClasses(t).join(" ")),this.options.wrapperClass=t,this.$element)},t.prototype.radioAllOff=function(t){return"undefined"==typeof t?this.options.radioAllOff:(t=!!t,t===this.options.radioAllOff?this.$element:(this.options.radioAllOff=t,this.$element))},t.prototype.onInit=function(t){return"undefined"==typeof t?this.options.onInit:(t||(t=e.fn.bootstrapSwitch.defaults.onInit),this.options.onInit=t,this.$element)},t.prototype.onSwitchChange=function(t){return"undefined"==typeof t?this.options.onSwitchChange:(t||(t=e.fn.bootstrapSwitch.defaults.onSwitchChange),this.options.onSwitchChange=t,this.$element)},t.prototype.destroy=function(){var t;return t=this.$element.closest("form"),t.length&&t.off("reset.bootstrapSwitch").removeData("bootstrap-switch"),this.$container.children().not(this.$element).remove(),this.$element.unwrap().unwrap().off(".bootstrapSwitch").removeData("bootstrap-switch"),this.$element},t.prototype._width=function(){var t,e;return t=this.$on.add(this.$off),t.add(this.$label).css("width",""),e="auto"===this.options.handleWidth?Math.max(this.$on.width(),this.$off.width()):this.options.handleWidth,t.width(e),this.$label.width(function(t){return function(i,n){return"auto"!==t.options.labelWidth?t.options.labelWidth:e>n?e:n}}(this)),this._handleWidth=this.$on.outerWidth(),this._labelWidth=this.$label.outerWidth(),this.$container.width(2*this._handleWidth+this._labelWidth),this.$wrapper.width(this._handleWidth+this._labelWidth)},t.prototype._containerPosition=function(t,e){return null==t&&(t=this.options.state),this.$container.css("margin-left",function(e){return function(){var i;return i=[0,"-"+e._handleWidth+"px"],e.options.indeterminate?"-"+e._handleWidth/2+"px":t?e.options.inverse?i[1]:i[0]:e.options.inverse?i[0]:i[1]}}(this)),e?setTimeout(function(){return e()},50):void 0},t.prototype._init=function(){var t,e;return t=function(t){return function(){return t.setPrevOptions(),t._width(),t._containerPosition(null,function(){return t.options.animate?t.$wrapper.addClass(t.options.baseClass+"-animate"):void 0})}}(this),this.$wrapper.is(":visible")?t():e=i.setInterval(function(n){return function(){return n.$wrapper.is(":visible")?(t(),i.clearInterval(e)):void 0}}(this),50)},t.prototype._elementHandlers=function(){return this.$element.on({"setPreviousOptions.bootstrapSwitch":function(t){return function(e){return t.setPrevOptions()}}(this),"previousState.bootstrapSwitch":function(t){return function(e){return t.options=t.prevOptions,t.options.indeterminate&&t.$wrapper.addClass(t.options.baseClass+"-indeterminate"),t.$element.prop("checked",t.options.state).trigger("change.bootstrapSwitch",!0)}}(this),"change.bootstrapSwitch":function(t){return function(i,n){var o;return i.preventDefault(),i.stopImmediatePropagation(),o=t.$element.is(":checked"),t._containerPosition(o),o!==t.options.state?(t.options.state=o,t.$wrapper.toggleClass(t.options.baseClass+"-off").toggleClass(t.options.baseClass+"-on"),n?void 0:(t.$element.is(":radio")&&e("[name='"+t.$element.attr("name")+"']").not(t.$element).prop("checked",!1).trigger("change.bootstrapSwitch",!0),t.$element.trigger("switchChange.bootstrapSwitch",[o]))):void 0}}(this),"focus.bootstrapSwitch":function(t){return function(e){return e.preventDefault(),t.$wrapper.addClass(t.options.baseClass+"-focused")}}(this),"blur.bootstrapSwitch":function(t){return function(e){return e.preventDefault(),t.$wrapper.removeClass(t.options.baseClass+"-focused")}}(this),"keydown.bootstrapSwitch":function(t){return function(e){if(e.which&&!t.options.disabled&&!t.options.readonly)switch(e.which){case 37:return e.preventDefault(),e.stopImmediatePropagation(),t.state(!1);case 39:return e.preventDefault(),e.stopImmediatePropagation(),t.state(!0)}}}(this)})},t.prototype._handleHandlers=function(){return this.$on.on("click.bootstrapSwitch",function(t){return function(e){return e.preventDefault(),e.stopPropagation(),t.state(!1),t.$element.trigger("focus.bootstrapSwitch")}}(this)),this.$off.on("click.bootstrapSwitch",function(t){return function(e){return e.preventDefault(),e.stopPropagation(),t.state(!0),t.$element.trigger("focus.bootstrapSwitch")}}(this))},t.prototype._labelHandlers=function(){return this.$label.on({click:function(t){return t.stopPropagation()},"mousedown.bootstrapSwitch touchstart.bootstrapSwitch":function(t){return function(e){return t._dragStart||t.options.disabled||t.options.readonly?void 0:(e.preventDefault(),e.stopPropagation(),t._dragStart=(e.pageX||e.originalEvent.touches[0].pageX)-parseInt(t.$container.css("margin-left"),10),t.options.animate&&t.$wrapper.removeClass(t.options.baseClass+"-animate"),t.$element.trigger("focus.bootstrapSwitch"))}}(this),"mousemove.bootstrapSwitch touchmove.bootstrapSwitch":function(t){return function(e){var i;if(null!=t._dragStart&&(e.preventDefault(),i=(e.pageX||e.originalEvent.touches[0].pageX)-t._dragStart,!(i<-t._handleWidth||i>0)))return t._dragEnd=i,t.$container.css("margin-left",t._dragEnd+"px")}}(this),"mouseup.bootstrapSwitch touchend.bootstrapSwitch":function(t){return function(e){var i;if(t._dragStart)return e.preventDefault(),t.options.animate&&t.$wrapper.addClass(t.options.baseClass+"-animate"),t._dragEnd?(i=t._dragEnd>-(t._handleWidth/2),t._dragEnd=!1,t.state(t.options.inverse?!i:i)):t.state(!t.options.state),t._dragStart=!1}}(this),"mouseleave.bootstrapSwitch":function(t){return function(e){return t.$label.trigger("mouseup.bootstrapSwitch")}}(this)})},t.prototype._externalLabelHandler=function(){var t;return t=this.$element.closest("label"),t.on("click",function(e){return function(i){return i.preventDefault(),i.stopImmediatePropagation(),i.target===t[0]?e.toggleState():void 0}}(this))},t.prototype._formHandler=function(){var t;return t=this.$element.closest("form"),t.data("bootstrap-switch")?void 0:t.on("reset.bootstrapSwitch",function(){return i.setTimeout(function(){return t.find("input").filter(function(){return e(this).data("bootstrap-switch")}).each(function(){return e(this).bootstrapSwitch("state",this.checked)})},1)}).data("bootstrap-switch",!0)},t.prototype._getClasses=function(t){var i,n,o,s;if(!e.isArray(t))return[this.options.baseClass+"-"+t];for(n=[],o=0,s=t.length;s>o;o++)i=t[o],n.push(this.options.baseClass+"-"+i);return n},t}(),e.fn.bootstrapSwitch=function(){var i,o,s;return o=arguments[0],i=2<=arguments.length?t.call(arguments,1):[],s=this,this.each(function(){var t,a;return t=e(this),a=t.data("bootstrap-switch"),a||t.data("bootstrap-switch",a=new n(this,o)),"string"==typeof o?s=a[o].apply(a,i):void 0}),s},e.fn.bootstrapSwitch.Constructor=n,e.fn.bootstrapSwitch.defaults={state:!0,size:null,animate:!0,disabled:!1,readonly:!1,indeterminate:!1,inverse:!1,radioAllOff:!1,onColor:"primary",offColor:"default",onText:"ON",offText:"OFF",labelText:"&nbsp;",handleWidth:"auto",labelWidth:"auto",baseClass:"bootstrap-switch",wrapperClass:"wrapper",onInit:function(){},onSwitchChange:function(){}}}(window.jQuery,window)}).call(this);
0 23 \ No newline at end of file
... ...