You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
784 lines
26 KiB
784 lines
26 KiB
/** |
|
* 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() {} |
|
}; |
|
});
|
|
|