sidebar with many options!!
This commit is contained in:
		
							
								
								
									
										784
									
								
								share/public/javascripts/bootstrap-switch.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										784
									
								
								share/public/javascripts/bootstrap-switch.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,784 @@ | ||||
| /** | ||||
|   * bootstrap-switch - Turn checkboxes and radio buttons into toggle switches. | ||||
|   * | ||||
|   * @version v3.3.4 | ||||
|   * @homepage https://bttstrp.github.io/bootstrap-switch | ||||
|   * @author Mattia Larentis <mattia@larentis.eu> (http://larentis.eu) | ||||
|   * @license Apache-2.0 | ||||
|   */ | ||||
|  | ||||
| (function (global, factory) { | ||||
|   if (typeof define === "function" && define.amd) { | ||||
|     define(['jquery'], factory); | ||||
|   } else if (typeof exports !== "undefined") { | ||||
|     factory(require('jquery')); | ||||
|   } else { | ||||
|     var mod = { | ||||
|       exports: {} | ||||
|     }; | ||||
|     factory(global.jquery); | ||||
|     global.bootstrapSwitch = mod.exports; | ||||
|   } | ||||
| })(this, function (_jquery) { | ||||
|   'use strict'; | ||||
|  | ||||
|   var _jquery2 = _interopRequireDefault(_jquery); | ||||
|  | ||||
|   function _interopRequireDefault(obj) { | ||||
|     return obj && obj.__esModule ? obj : { | ||||
|       default: obj | ||||
|     }; | ||||
|   } | ||||
|  | ||||
|   var _extends = Object.assign || function (target) { | ||||
|     for (var i = 1; i < arguments.length; i++) { | ||||
|       var source = arguments[i]; | ||||
|  | ||||
|       for (var key in source) { | ||||
|         if (Object.prototype.hasOwnProperty.call(source, key)) { | ||||
|           target[key] = source[key]; | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     return target; | ||||
|   }; | ||||
|  | ||||
|   function _classCallCheck(instance, Constructor) { | ||||
|     if (!(instance instanceof Constructor)) { | ||||
|       throw new TypeError("Cannot call a class as a function"); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   var _createClass = function () { | ||||
|     function defineProperties(target, props) { | ||||
|       for (var i = 0; i < props.length; i++) { | ||||
|         var descriptor = props[i]; | ||||
|         descriptor.enumerable = descriptor.enumerable || false; | ||||
|         descriptor.configurable = true; | ||||
|         if ("value" in descriptor) descriptor.writable = true; | ||||
|         Object.defineProperty(target, descriptor.key, descriptor); | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     return function (Constructor, protoProps, staticProps) { | ||||
|       if (protoProps) defineProperties(Constructor.prototype, protoProps); | ||||
|       if (staticProps) defineProperties(Constructor, staticProps); | ||||
|       return Constructor; | ||||
|     }; | ||||
|   }(); | ||||
|  | ||||
|   var $ = _jquery2.default || window.jQuery || window.$; | ||||
|  | ||||
|   var BootstrapSwitch = function () { | ||||
|     function BootstrapSwitch(element) { | ||||
|       var _this = this; | ||||
|  | ||||
|       var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; | ||||
|  | ||||
|       _classCallCheck(this, BootstrapSwitch); | ||||
|  | ||||
|       this.$element = $(element); | ||||
|       this.options = $.extend({}, $.fn.bootstrapSwitch.defaults, this._getElementOptions(), options); | ||||
|       this.prevOptions = {}; | ||||
|       this.$wrapper = $('<div>', { | ||||
|         class: function _class() { | ||||
|           var classes = []; | ||||
|           classes.push(_this.options.state ? 'on' : 'off'); | ||||
|           if (_this.options.size) { | ||||
|             classes.push(_this.options.size); | ||||
|           } | ||||
|           if (_this.options.disabled) { | ||||
|             classes.push('disabled'); | ||||
|           } | ||||
|           if (_this.options.readonly) { | ||||
|             classes.push('readonly'); | ||||
|           } | ||||
|           if (_this.options.indeterminate) { | ||||
|             classes.push('indeterminate'); | ||||
|           } | ||||
|           if (_this.options.inverse) { | ||||
|             classes.push('inverse'); | ||||
|           } | ||||
|           if (_this.$element.attr('id')) { | ||||
|             classes.push('id-' + _this.$element.attr('id')); | ||||
|           } | ||||
|           return classes.map(_this._getClass.bind(_this)).concat([_this.options.baseClass], _this._getClasses(_this.options.wrapperClass)).join(' '); | ||||
|         } | ||||
|       }); | ||||
|       this.$container = $('<div>', { class: this._getClass('container') }); | ||||
|       this.$on = $('<span>', { | ||||
|         html: this.options.onText, | ||||
|         class: this._getClass('handle-on') + ' ' + this._getClass(this.options.onColor) | ||||
|       }); | ||||
|       this.$off = $('<span>', { | ||||
|         html: this.options.offText, | ||||
|         class: this._getClass('handle-off') + ' ' + this._getClass(this.options.offColor) | ||||
|       }); | ||||
|       this.$label = $('<span>', { | ||||
|         html: this.options.labelText, | ||||
|         class: this._getClass('label') | ||||
|       }); | ||||
|  | ||||
|       this.$element.on('init.bootstrapSwitch', this.options.onInit.bind(this, element)); | ||||
|       this.$element.on('switchChange.bootstrapSwitch', function () { | ||||
|         for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { | ||||
|           args[_key] = arguments[_key]; | ||||
|         } | ||||
|  | ||||
|         if (_this.options.onSwitchChange.apply(element, args) === false) { | ||||
|           if (_this.$element.is(':radio')) { | ||||
|             $('[name="' + _this.$element.attr('name') + '"]').trigger('previousState.bootstrapSwitch', true); | ||||
|           } else { | ||||
|             _this.$element.trigger('previousState.bootstrapSwitch', true); | ||||
|           } | ||||
|         } | ||||
|       }); | ||||
|  | ||||
|       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); | ||||
|  | ||||
|       if (this.options.indeterminate) { | ||||
|         this.$element.prop('indeterminate', true); | ||||
|       } | ||||
|  | ||||
|       this._init(); | ||||
|       this._elementHandlers(); | ||||
|       this._handleHandlers(); | ||||
|       this._labelHandlers(); | ||||
|       this._formHandler(); | ||||
|       this._externalLabelHandler(); | ||||
|       this.$element.trigger('init.bootstrapSwitch', this.options.state); | ||||
|     } | ||||
|  | ||||
|     _createClass(BootstrapSwitch, [{ | ||||
|       key: 'setPrevOptions', | ||||
|       value: function setPrevOptions() { | ||||
|         this.prevOptions = _extends({}, this.options); | ||||
|       } | ||||
|     }, { | ||||
|       key: 'state', | ||||
|       value: function state(value, skip) { | ||||
|         if (typeof value === 'undefined') { | ||||
|           return this.options.state; | ||||
|         } | ||||
|         if (this.options.disabled || this.options.readonly || this.options.state && !this.options.radioAllOff && this.$element.is(':radio')) { | ||||
|           return this.$element; | ||||
|         } | ||||
|         if (this.$element.is(':radio')) { | ||||
|           $('[name="' + this.$element.attr('name') + '"]').trigger('setPreviousOptions.bootstrapSwitch'); | ||||
|         } else { | ||||
|           this.$element.trigger('setPreviousOptions.bootstrapSwitch'); | ||||
|         } | ||||
|         if (this.options.indeterminate) { | ||||
|           this.indeterminate(false); | ||||
|         } | ||||
|         this.$element.prop('checked', Boolean(value)).trigger('change.bootstrapSwitch', skip); | ||||
|         return this.$element; | ||||
|       } | ||||
|     }, { | ||||
|       key: 'toggleState', | ||||
|       value: function toggleState(skip) { | ||||
|         if (this.options.disabled || this.options.readonly) { | ||||
|           return this.$element; | ||||
|         } | ||||
|         if (this.options.indeterminate) { | ||||
|           this.indeterminate(false); | ||||
|           return this.state(true); | ||||
|         } else { | ||||
|           return this.$element.prop('checked', !this.options.state).trigger('change.bootstrapSwitch', skip); | ||||
|         } | ||||
|       } | ||||
|     }, { | ||||
|       key: 'size', | ||||
|       value: function size(value) { | ||||
|         if (typeof value === 'undefined') { | ||||
|           return this.options.size; | ||||
|         } | ||||
|         if (this.options.size != null) { | ||||
|           this.$wrapper.removeClass(this._getClass(this.options.size)); | ||||
|         } | ||||
|         if (value) { | ||||
|           this.$wrapper.addClass(this._getClass(value)); | ||||
|         } | ||||
|         this._width(); | ||||
|         this._containerPosition(); | ||||
|         this.options.size = value; | ||||
|         return this.$element; | ||||
|       } | ||||
|     }, { | ||||
|       key: 'animate', | ||||
|       value: function animate(value) { | ||||
|         if (typeof value === 'undefined') { | ||||
|           return this.options.animate; | ||||
|         } | ||||
|         if (this.options.animate === Boolean(value)) { | ||||
|           return this.$element; | ||||
|         } | ||||
|         return this.toggleAnimate(); | ||||
|       } | ||||
|     }, { | ||||
|       key: 'toggleAnimate', | ||||
|       value: function toggleAnimate() { | ||||
|         this.options.animate = !this.options.animate; | ||||
|         this.$wrapper.toggleClass(this._getClass('animate')); | ||||
|         return this.$element; | ||||
|       } | ||||
|     }, { | ||||
|       key: 'disabled', | ||||
|       value: function disabled(value) { | ||||
|         if (typeof value === 'undefined') { | ||||
|           return this.options.disabled; | ||||
|         } | ||||
|         if (this.options.disabled === Boolean(value)) { | ||||
|           return this.$element; | ||||
|         } | ||||
|         return this.toggleDisabled(); | ||||
|       } | ||||
|     }, { | ||||
|       key: 'toggleDisabled', | ||||
|       value: function toggleDisabled() { | ||||
|         this.options.disabled = !this.options.disabled; | ||||
|         this.$element.prop('disabled', this.options.disabled); | ||||
|         this.$wrapper.toggleClass(this._getClass('disabled')); | ||||
|         return this.$element; | ||||
|       } | ||||
|     }, { | ||||
|       key: 'readonly', | ||||
|       value: function readonly(value) { | ||||
|         if (typeof value === 'undefined') { | ||||
|           return this.options.readonly; | ||||
|         } | ||||
|         if (this.options.readonly === Boolean(value)) { | ||||
|           return this.$element; | ||||
|         } | ||||
|         return this.toggleReadonly(); | ||||
|       } | ||||
|     }, { | ||||
|       key: 'toggleReadonly', | ||||
|       value: function toggleReadonly() { | ||||
|         this.options.readonly = !this.options.readonly; | ||||
|         this.$element.prop('readonly', this.options.readonly); | ||||
|         this.$wrapper.toggleClass(this._getClass('readonly')); | ||||
|         return this.$element; | ||||
|       } | ||||
|     }, { | ||||
|       key: 'indeterminate', | ||||
|       value: function indeterminate(value) { | ||||
|         if (typeof value === 'undefined') { | ||||
|           return this.options.indeterminate; | ||||
|         } | ||||
|         if (this.options.indeterminate === Boolean(value)) { | ||||
|           return this.$element; | ||||
|         } | ||||
|         return this.toggleIndeterminate(); | ||||
|       } | ||||
|     }, { | ||||
|       key: 'toggleIndeterminate', | ||||
|       value: function toggleIndeterminate() { | ||||
|         this.options.indeterminate = !this.options.indeterminate; | ||||
|         this.$element.prop('indeterminate', this.options.indeterminate); | ||||
|         this.$wrapper.toggleClass(this._getClass('indeterminate')); | ||||
|         this._containerPosition(); | ||||
|         return this.$element; | ||||
|       } | ||||
|     }, { | ||||
|       key: 'inverse', | ||||
|       value: function inverse(value) { | ||||
|         if (typeof value === 'undefined') { | ||||
|           return this.options.inverse; | ||||
|         } | ||||
|         if (this.options.inverse === Boolean(value)) { | ||||
|           return this.$element; | ||||
|         } | ||||
|         return this.toggleInverse(); | ||||
|       } | ||||
|     }, { | ||||
|       key: 'toggleInverse', | ||||
|       value: function toggleInverse() { | ||||
|         this.$wrapper.toggleClass(this._getClass('inverse')); | ||||
|         var $on = this.$on.clone(true); | ||||
|         var $off = this.$off.clone(true); | ||||
|         this.$on.replaceWith($off); | ||||
|         this.$off.replaceWith($on); | ||||
|         this.$on = $off; | ||||
|         this.$off = $on; | ||||
|         this.options.inverse = !this.options.inverse; | ||||
|         return this.$element; | ||||
|       } | ||||
|     }, { | ||||
|       key: 'onColor', | ||||
|       value: function onColor(value) { | ||||
|         if (typeof value === 'undefined') { | ||||
|           return this.options.onColor; | ||||
|         } | ||||
|         if (this.options.onColor) { | ||||
|           this.$on.removeClass(this._getClass(this.options.onColor)); | ||||
|         } | ||||
|         this.$on.addClass(this._getClass(value)); | ||||
|         this.options.onColor = value; | ||||
|         return this.$element; | ||||
|       } | ||||
|     }, { | ||||
|       key: 'offColor', | ||||
|       value: function offColor(value) { | ||||
|         if (typeof value === 'undefined') { | ||||
|           return this.options.offColor; | ||||
|         } | ||||
|         if (this.options.offColor) { | ||||
|           this.$off.removeClass(this._getClass(this.options.offColor)); | ||||
|         } | ||||
|         this.$off.addClass(this._getClass(value)); | ||||
|         this.options.offColor = value; | ||||
|         return this.$element; | ||||
|       } | ||||
|     }, { | ||||
|       key: 'onText', | ||||
|       value: function onText(value) { | ||||
|         if (typeof value === 'undefined') { | ||||
|           return this.options.onText; | ||||
|         } | ||||
|         this.$on.html(value); | ||||
|         this._width(); | ||||
|         this._containerPosition(); | ||||
|         this.options.onText = value; | ||||
|         return this.$element; | ||||
|       } | ||||
|     }, { | ||||
|       key: 'offText', | ||||
|       value: function offText(value) { | ||||
|         if (typeof value === 'undefined') { | ||||
|           return this.options.offText; | ||||
|         } | ||||
|         this.$off.html(value); | ||||
|         this._width(); | ||||
|         this._containerPosition(); | ||||
|         this.options.offText = value; | ||||
|         return this.$element; | ||||
|       } | ||||
|     }, { | ||||
|       key: 'labelText', | ||||
|       value: function labelText(value) { | ||||
|         if (typeof value === 'undefined') { | ||||
|           return this.options.labelText; | ||||
|         } | ||||
|         this.$label.html(value); | ||||
|         this._width(); | ||||
|         this.options.labelText = value; | ||||
|         return this.$element; | ||||
|       } | ||||
|     }, { | ||||
|       key: 'handleWidth', | ||||
|       value: function handleWidth(value) { | ||||
|         if (typeof value === 'undefined') { | ||||
|           return this.options.handleWidth; | ||||
|         } | ||||
|         this.options.handleWidth = value; | ||||
|         this._width(); | ||||
|         this._containerPosition(); | ||||
|         return this.$element; | ||||
|       } | ||||
|     }, { | ||||
|       key: 'labelWidth', | ||||
|       value: function labelWidth(value) { | ||||
|         if (typeof value === 'undefined') { | ||||
|           return this.options.labelWidth; | ||||
|         } | ||||
|         this.options.labelWidth = value; | ||||
|         this._width(); | ||||
|         this._containerPosition(); | ||||
|         return this.$element; | ||||
|       } | ||||
|     }, { | ||||
|       key: 'baseClass', | ||||
|       value: function baseClass(value) { | ||||
|         return this.options.baseClass; | ||||
|       } | ||||
|     }, { | ||||
|       key: 'wrapperClass', | ||||
|       value: function wrapperClass(value) { | ||||
|         if (typeof value === 'undefined') { | ||||
|           return this.options.wrapperClass; | ||||
|         } | ||||
|         if (!value) { | ||||
|           value = $.fn.bootstrapSwitch.defaults.wrapperClass; | ||||
|         } | ||||
|         this.$wrapper.removeClass(this._getClasses(this.options.wrapperClass).join(' ')); | ||||
|         this.$wrapper.addClass(this._getClasses(value).join(' ')); | ||||
|         this.options.wrapperClass = value; | ||||
|         return this.$element; | ||||
|       } | ||||
|     }, { | ||||
|       key: 'radioAllOff', | ||||
|       value: function radioAllOff(value) { | ||||
|         if (typeof value === 'undefined') { | ||||
|           return this.options.radioAllOff; | ||||
|         } | ||||
|         var val = Boolean(value); | ||||
|         if (this.options.radioAllOff === val) { | ||||
|           return this.$element; | ||||
|         } | ||||
|         this.options.radioAllOff = val; | ||||
|         return this.$element; | ||||
|       } | ||||
|     }, { | ||||
|       key: 'onInit', | ||||
|       value: function onInit(value) { | ||||
|         if (typeof value === 'undefined') { | ||||
|           return this.options.onInit; | ||||
|         } | ||||
|         if (!value) { | ||||
|           value = $.fn.bootstrapSwitch.defaults.onInit; | ||||
|         } | ||||
|         this.options.onInit = value; | ||||
|         return this.$element; | ||||
|       } | ||||
|     }, { | ||||
|       key: 'onSwitchChange', | ||||
|       value: function onSwitchChange(value) { | ||||
|         if (typeof value === 'undefined') { | ||||
|           return this.options.onSwitchChange; | ||||
|         } | ||||
|         if (!value) { | ||||
|           value = $.fn.bootstrapSwitch.defaults.onSwitchChange; | ||||
|         } | ||||
|         this.options.onSwitchChange = value; | ||||
|         return this.$element; | ||||
|       } | ||||
|     }, { | ||||
|       key: 'destroy', | ||||
|       value: function destroy() { | ||||
|         var $form = this.$element.closest('form'); | ||||
|         if ($form.length) { | ||||
|           $form.off('reset.bootstrapSwitch').removeData('bootstrap-switch'); | ||||
|         } | ||||
|         this.$container.children().not(this.$element).remove(); | ||||
|         this.$element.unwrap().unwrap().off('.bootstrapSwitch').removeData('bootstrap-switch'); | ||||
|         return this.$element; | ||||
|       } | ||||
|     }, { | ||||
|       key: '_getElementOptions', | ||||
|       value: function _getElementOptions() { | ||||
|         return { | ||||
|           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') | ||||
|         }; | ||||
|       } | ||||
|     }, { | ||||
|       key: '_width', | ||||
|       value: function _width() { | ||||
|         var _this2 = this; | ||||
|  | ||||
|         var $handles = this.$on.add(this.$off).add(this.$label).css('width', ''); | ||||
|         var handleWidth = this.options.handleWidth === 'auto' ? Math.round(Math.max(this.$on.width(), this.$off.width())) : this.options.handleWidth; | ||||
|         $handles.width(handleWidth); | ||||
|         this.$label.width(function (index, width) { | ||||
|           if (_this2.options.labelWidth !== 'auto') { | ||||
|             return _this2.options.labelWidth; | ||||
|           } | ||||
|           if (width < handleWidth) { | ||||
|             return handleWidth; | ||||
|           } | ||||
|           return width; | ||||
|         }); | ||||
|         this._handleWidth = this.$on.outerWidth(); | ||||
|         this._labelWidth = this.$label.outerWidth(); | ||||
|         this.$container.width(this._handleWidth * 2 + this._labelWidth); | ||||
|         return this.$wrapper.width(this._handleWidth + this._labelWidth); | ||||
|       } | ||||
|     }, { | ||||
|       key: '_containerPosition', | ||||
|       value: function _containerPosition() { | ||||
|         var _this3 = this; | ||||
|  | ||||
|         var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.options.state; | ||||
|         var callback = arguments[1]; | ||||
|  | ||||
|         this.$container.css('margin-left', function () { | ||||
|           var values = [0, '-' + _this3._handleWidth + 'px']; | ||||
|           if (_this3.options.indeterminate) { | ||||
|             return '-' + _this3._handleWidth / 2 + 'px'; | ||||
|           } | ||||
|           if (state) { | ||||
|             if (_this3.options.inverse) { | ||||
|               return values[1]; | ||||
|             } else { | ||||
|               return values[0]; | ||||
|             } | ||||
|           } else { | ||||
|             if (_this3.options.inverse) { | ||||
|               return values[0]; | ||||
|             } else { | ||||
|               return values[1]; | ||||
|             } | ||||
|           } | ||||
|         }); | ||||
|       } | ||||
|     }, { | ||||
|       key: '_init', | ||||
|       value: function _init() { | ||||
|         var _this4 = this; | ||||
|  | ||||
|         var init = function init() { | ||||
|           _this4.setPrevOptions(); | ||||
|           _this4._width(); | ||||
|           _this4._containerPosition(); | ||||
|           setTimeout(function () { | ||||
|             if (_this4.options.animate) { | ||||
|               return _this4.$wrapper.addClass(_this4._getClass('animate')); | ||||
|             } | ||||
|           }, 50); | ||||
|         }; | ||||
|         if (this.$wrapper.is(':visible')) { | ||||
|           init(); | ||||
|           return; | ||||
|         } | ||||
|         var initInterval = window.setInterval(function () { | ||||
|           if (_this4.$wrapper.is(':visible')) { | ||||
|             init(); | ||||
|             return window.clearInterval(initInterval); | ||||
|           } | ||||
|         }, 50); | ||||
|       } | ||||
|     }, { | ||||
|       key: '_elementHandlers', | ||||
|       value: function _elementHandlers() { | ||||
|         var _this5 = this; | ||||
|  | ||||
|         return this.$element.on({ | ||||
|           'setPreviousOptions.bootstrapSwitch': this.setPrevOptions.bind(this), | ||||
|  | ||||
|           'previousState.bootstrapSwitch': function previousStateBootstrapSwitch() { | ||||
|             _this5.options = _this5.prevOptions; | ||||
|             if (_this5.options.indeterminate) { | ||||
|               _this5.$wrapper.addClass(_this5._getClass('indeterminate')); | ||||
|             } | ||||
|             _this5.$element.prop('checked', _this5.options.state).trigger('change.bootstrapSwitch', true); | ||||
|           }, | ||||
|  | ||||
|           'change.bootstrapSwitch': function changeBootstrapSwitch(event, skip) { | ||||
|             event.preventDefault(); | ||||
|             event.stopImmediatePropagation(); | ||||
|             var state = _this5.$element.is(':checked'); | ||||
|             _this5._containerPosition(state); | ||||
|             if (state === _this5.options.state) { | ||||
|               return; | ||||
|             } | ||||
|             _this5.options.state = state; | ||||
|             _this5.$wrapper.toggleClass(_this5._getClass('off')).toggleClass(_this5._getClass('on')); | ||||
|             if (!skip) { | ||||
|               if (_this5.$element.is(':radio')) { | ||||
|                 $('[name="' + _this5.$element.attr('name') + '"]').not(_this5.$element).prop('checked', false).trigger('change.bootstrapSwitch', true); | ||||
|               } | ||||
|               _this5.$element.trigger('switchChange.bootstrapSwitch', [state]); | ||||
|             } | ||||
|           }, | ||||
|  | ||||
|           'focus.bootstrapSwitch': function focusBootstrapSwitch(event) { | ||||
|             event.preventDefault(); | ||||
|             _this5.$wrapper.addClass(_this5._getClass('focused')); | ||||
|           }, | ||||
|  | ||||
|           'blur.bootstrapSwitch': function blurBootstrapSwitch(event) { | ||||
|             event.preventDefault(); | ||||
|             _this5.$wrapper.removeClass(_this5._getClass('focused')); | ||||
|           }, | ||||
|  | ||||
|           'keydown.bootstrapSwitch': function keydownBootstrapSwitch(event) { | ||||
|             if (!event.which || _this5.options.disabled || _this5.options.readonly) { | ||||
|               return; | ||||
|             } | ||||
|             if (event.which === 37 || event.which === 39) { | ||||
|               event.preventDefault(); | ||||
|               event.stopImmediatePropagation(); | ||||
|               _this5.state(event.which === 39); | ||||
|             } | ||||
|           } | ||||
|         }); | ||||
|       } | ||||
|     }, { | ||||
|       key: '_handleHandlers', | ||||
|       value: function _handleHandlers() { | ||||
|         var _this6 = this; | ||||
|  | ||||
|         this.$on.on('click.bootstrapSwitch', function (event) { | ||||
|           event.preventDefault(); | ||||
|           event.stopPropagation(); | ||||
|           _this6.state(false); | ||||
|           return _this6.$element.trigger('focus.bootstrapSwitch'); | ||||
|         }); | ||||
|         return this.$off.on('click.bootstrapSwitch', function (event) { | ||||
|           event.preventDefault(); | ||||
|           event.stopPropagation(); | ||||
|           _this6.state(true); | ||||
|           return _this6.$element.trigger('focus.bootstrapSwitch'); | ||||
|         }); | ||||
|       } | ||||
|     }, { | ||||
|       key: '_labelHandlers', | ||||
|       value: function _labelHandlers() { | ||||
|         var _this7 = this; | ||||
|  | ||||
|         var handlers = { | ||||
|           click: function click(event) { | ||||
|             event.stopPropagation(); | ||||
|           }, | ||||
|  | ||||
|  | ||||
|           'mousedown.bootstrapSwitch touchstart.bootstrapSwitch': function mousedownBootstrapSwitchTouchstartBootstrapSwitch(event) { | ||||
|             if (_this7._dragStart || _this7.options.disabled || _this7.options.readonly) { | ||||
|               return; | ||||
|             } | ||||
|             event.preventDefault(); | ||||
|             event.stopPropagation(); | ||||
|             _this7._dragStart = (event.pageX || event.originalEvent.touches[0].pageX) - parseInt(_this7.$container.css('margin-left'), 10); | ||||
|             if (_this7.options.animate) { | ||||
|               _this7.$wrapper.removeClass(_this7._getClass('animate')); | ||||
|             } | ||||
|             _this7.$element.trigger('focus.bootstrapSwitch'); | ||||
|           }, | ||||
|  | ||||
|           'mousemove.bootstrapSwitch touchmove.bootstrapSwitch': function mousemoveBootstrapSwitchTouchmoveBootstrapSwitch(event) { | ||||
|             if (_this7._dragStart == null) { | ||||
|               return; | ||||
|             } | ||||
|             var difference = (event.pageX || event.originalEvent.touches[0].pageX) - _this7._dragStart; | ||||
|             event.preventDefault(); | ||||
|             if (difference < -_this7._handleWidth || difference > 0) { | ||||
|               return; | ||||
|             } | ||||
|             _this7._dragEnd = difference; | ||||
|             _this7.$container.css('margin-left', _this7._dragEnd + 'px'); | ||||
|           }, | ||||
|  | ||||
|           'mouseup.bootstrapSwitch touchend.bootstrapSwitch': function mouseupBootstrapSwitchTouchendBootstrapSwitch(event) { | ||||
|             if (!_this7._dragStart) { | ||||
|               return; | ||||
|             } | ||||
|             event.preventDefault(); | ||||
|             if (_this7.options.animate) { | ||||
|               _this7.$wrapper.addClass(_this7._getClass('animate')); | ||||
|             } | ||||
|             if (_this7._dragEnd) { | ||||
|               var state = _this7._dragEnd > -(_this7._handleWidth / 2); | ||||
|               _this7._dragEnd = false; | ||||
|               _this7.state(_this7.options.inverse ? !state : state); | ||||
|             } else { | ||||
|               _this7.state(!_this7.options.state); | ||||
|             } | ||||
|             _this7._dragStart = false; | ||||
|           }, | ||||
|  | ||||
|           'mouseleave.bootstrapSwitch': function mouseleaveBootstrapSwitch() { | ||||
|             _this7.$label.trigger('mouseup.bootstrapSwitch'); | ||||
|           } | ||||
|         }; | ||||
|         this.$label.on(handlers); | ||||
|       } | ||||
|     }, { | ||||
|       key: '_externalLabelHandler', | ||||
|       value: function _externalLabelHandler() { | ||||
|         var _this8 = this; | ||||
|  | ||||
|         var $externalLabel = this.$element.closest('label'); | ||||
|         $externalLabel.on('click', function (event) { | ||||
|           event.preventDefault(); | ||||
|           event.stopImmediatePropagation(); | ||||
|           if (event.target === $externalLabel[0]) { | ||||
|             _this8.toggleState(); | ||||
|           } | ||||
|         }); | ||||
|       } | ||||
|     }, { | ||||
|       key: '_formHandler', | ||||
|       value: function _formHandler() { | ||||
|         var $form = this.$element.closest('form'); | ||||
|         if ($form.data('bootstrap-switch')) { | ||||
|           return; | ||||
|         } | ||||
|         $form.on('reset.bootstrapSwitch', function () { | ||||
|           window.setTimeout(function () { | ||||
|             $form.find('input').filter(function () { | ||||
|               return $(this).data('bootstrap-switch'); | ||||
|             }).each(function () { | ||||
|               return $(this).bootstrapSwitch('state', this.checked); | ||||
|             }); | ||||
|           }, 1); | ||||
|         }).data('bootstrap-switch', true); | ||||
|       } | ||||
|     }, { | ||||
|       key: '_getClass', | ||||
|       value: function _getClass(name) { | ||||
|         return this.options.baseClass + '-' + name; | ||||
|       } | ||||
|     }, { | ||||
|       key: '_getClasses', | ||||
|       value: function _getClasses(classes) { | ||||
|         if (!$.isArray(classes)) { | ||||
|           return [this._getClass(classes)]; | ||||
|         } | ||||
|         return classes.map(this._getClass.bind(this)); | ||||
|       } | ||||
|     }]); | ||||
|  | ||||
|     return BootstrapSwitch; | ||||
|   }(); | ||||
|  | ||||
|   $.fn.bootstrapSwitch = function (option) { | ||||
|     for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { | ||||
|       args[_key2 - 1] = arguments[_key2]; | ||||
|     } | ||||
|  | ||||
|     function reducer(ret, next) { | ||||
|       var $this = $(next); | ||||
|       var existingData = $this.data('bootstrap-switch'); | ||||
|       var data = existingData || new BootstrapSwitch(next, option); | ||||
|       if (!existingData) { | ||||
|         $this.data('bootstrap-switch', data); | ||||
|       } | ||||
|       if (typeof option === 'string') { | ||||
|         return data[option].apply(data, args); | ||||
|       } | ||||
|       return ret; | ||||
|     } | ||||
|     return Array.prototype.reduce.call(this, reducer, this); | ||||
|   }; | ||||
|   $.fn.bootstrapSwitch.Constructor = BootstrapSwitch; | ||||
|   $.fn.bootstrapSwitch.defaults = { | ||||
|     state: true, | ||||
|     size: null, | ||||
|     animate: true, | ||||
|     disabled: false, | ||||
|     readonly: false, | ||||
|     indeterminate: false, | ||||
|     inverse: false, | ||||
|     radioAllOff: false, | ||||
|     onColor: 'primary', | ||||
|     offColor: 'default', | ||||
|     onText: 'ON', | ||||
|     offText: 'OFF', | ||||
|     labelText: ' ', | ||||
|     handleWidth: 'auto', | ||||
|     labelWidth: 'auto', | ||||
|     baseClass: 'bootstrap-switch', | ||||
|     wrapperClass: 'wrapper', | ||||
|     onInit: function onInit() {}, | ||||
|     onSwitchChange: function onSwitchChange() {} | ||||
|   }; | ||||
| }); | ||||
		Reference in New Issue
	
	Block a user