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.
		
		
		
		
		
			
		
			
				
					
					
						
							180 lines
						
					
					
						
							5.4 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							180 lines
						
					
					
						
							5.4 KiB
						
					
					
				
								/*! ========================================================================
							 | 
						|
								 * Bootstrap Toggle: bootstrap-toggle.js v2.2.0
							 | 
						|
								 * http://www.bootstraptoggle.com
							 | 
						|
								 * ========================================================================
							 | 
						|
								 * Copyright 2014 Min Hur, The New York Times Company
							 | 
						|
								 * Licensed under MIT
							 | 
						|
								 * ======================================================================== */
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								 +function ($) {
							 | 
						|
								 	'use strict';
							 | 
						|
								
							 | 
						|
									// TOGGLE PUBLIC CLASS DEFINITION
							 | 
						|
									// ==============================
							 | 
						|
								
							 | 
						|
									var Toggle = function (element, options) {
							 | 
						|
										this.$element  = $(element)
							 | 
						|
										this.options   = $.extend({}, this.defaults(), options)
							 | 
						|
										this.render()
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									Toggle.VERSION  = '2.2.0'
							 | 
						|
								
							 | 
						|
									Toggle.DEFAULTS = {
							 | 
						|
										on: 'On',
							 | 
						|
										off: 'Off',
							 | 
						|
										onstyle: 'primary',
							 | 
						|
										offstyle: 'default',
							 | 
						|
										size: 'normal',
							 | 
						|
										style: '',
							 | 
						|
										width: null,
							 | 
						|
										height: null
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									Toggle.prototype.defaults = function() {
							 | 
						|
										return {
							 | 
						|
											on: this.$element.attr('data-on') || Toggle.DEFAULTS.on,
							 | 
						|
											off: this.$element.attr('data-off') || Toggle.DEFAULTS.off,
							 | 
						|
											onstyle: this.$element.attr('data-onstyle') || Toggle.DEFAULTS.onstyle,
							 | 
						|
											offstyle: this.$element.attr('data-offstyle') || Toggle.DEFAULTS.offstyle,
							 | 
						|
											size: this.$element.attr('data-size') || Toggle.DEFAULTS.size,
							 | 
						|
											style: this.$element.attr('data-style') || Toggle.DEFAULTS.style,
							 | 
						|
											width: this.$element.attr('data-width') || Toggle.DEFAULTS.width,
							 | 
						|
											height: this.$element.attr('data-height') || Toggle.DEFAULTS.height
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									Toggle.prototype.render = function () {
							 | 
						|
										this._onstyle = 'btn-' + this.options.onstyle
							 | 
						|
										this._offstyle = 'btn-' + this.options.offstyle
							 | 
						|
										var size = this.options.size === 'large' ? 'btn-lg'
							 | 
						|
											: this.options.size === 'small' ? 'btn-sm'
							 | 
						|
											: this.options.size === 'mini' ? 'btn-xs'
							 | 
						|
											: ''
							 | 
						|
										var $toggleOn = $('<label class="btn">').html(this.options.on)
							 | 
						|
											.addClass(this._onstyle + ' ' + size)
							 | 
						|
										var $toggleOff = $('<label class="btn">').html(this.options.off)
							 | 
						|
											.addClass(this._offstyle + ' ' + size + ' active')
							 | 
						|
										var $toggleHandle = $('<span class="toggle-handle btn btn-default">')
							 | 
						|
											.addClass(size)
							 | 
						|
										var $toggleGroup = $('<div class="toggle-group">')
							 | 
						|
											.append($toggleOn, $toggleOff, $toggleHandle)
							 | 
						|
										var $toggle = $('<div class="toggle btn" data-toggle="toggle">')
							 | 
						|
											.addClass( this.$element.prop('checked') ? this._onstyle : this._offstyle+' off' )
							 | 
						|
											.addClass(size).addClass(this.options.style)
							 | 
						|
								
							 | 
						|
										this.$element.wrap($toggle)
							 | 
						|
										$.extend(this, {
							 | 
						|
											$toggle: this.$element.parent(),
							 | 
						|
											$toggleOn: $toggleOn,
							 | 
						|
											$toggleOff: $toggleOff,
							 | 
						|
											$toggleGroup: $toggleGroup
							 | 
						|
										})
							 | 
						|
										this.$toggle.append($toggleGroup)
							 | 
						|
								
							 | 
						|
										var width = this.options.width || Math.max($toggleOn.outerWidth(), $toggleOff.outerWidth())+($toggleHandle.outerWidth()/2)
							 | 
						|
										var height = this.options.height || Math.max($toggleOn.outerHeight(), $toggleOff.outerHeight())
							 | 
						|
										$toggleOn.addClass('toggle-on')
							 | 
						|
										$toggleOff.addClass('toggle-off')
							 | 
						|
										this.$toggle.css({ width: width, height: height })
							 | 
						|
										if (this.options.height) {
							 | 
						|
											$toggleOn.css('line-height', $toggleOn.height() + 'px')
							 | 
						|
											$toggleOff.css('line-height', $toggleOff.height() + 'px')
							 | 
						|
										}
							 | 
						|
										this.update(true)
							 | 
						|
										this.trigger(true)
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									Toggle.prototype.toggle = function () {
							 | 
						|
										if (this.$element.prop('checked')) this.off()
							 | 
						|
										else this.on()
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									Toggle.prototype.on = function (silent) {
							 | 
						|
										if (this.$element.prop('disabled')) return false
							 | 
						|
										this.$toggle.removeClass(this._offstyle + ' off').addClass(this._onstyle)
							 | 
						|
										this.$element.prop('checked', true)
							 | 
						|
										if (!silent) this.trigger()
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									Toggle.prototype.off = function (silent) {
							 | 
						|
										if (this.$element.prop('disabled')) return false
							 | 
						|
										this.$toggle.removeClass(this._onstyle).addClass(this._offstyle + ' off')
							 | 
						|
										this.$element.prop('checked', false)
							 | 
						|
										if (!silent) this.trigger()
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									Toggle.prototype.enable = function () {
							 | 
						|
										this.$toggle.removeAttr('disabled')
							 | 
						|
										this.$element.prop('disabled', false)
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									Toggle.prototype.disable = function () {
							 | 
						|
										this.$toggle.attr('disabled', 'disabled')
							 | 
						|
										this.$element.prop('disabled', true)
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									Toggle.prototype.update = function (silent) {
							 | 
						|
										if (this.$element.prop('disabled')) this.disable()
							 | 
						|
										else this.enable()
							 | 
						|
										if (this.$element.prop('checked')) this.on(silent)
							 | 
						|
										else this.off(silent)
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									Toggle.prototype.trigger = function (silent) {
							 | 
						|
										this.$element.off('change.bs.toggle')
							 | 
						|
										if (!silent) this.$element.change()
							 | 
						|
										this.$element.on('change.bs.toggle', $.proxy(function() {
							 | 
						|
											this.update()
							 | 
						|
										}, this))
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									Toggle.prototype.destroy = function() {
							 | 
						|
										this.$element.off('change.bs.toggle')
							 | 
						|
										this.$toggleGroup.remove()
							 | 
						|
										this.$element.removeData('bs.toggle')
							 | 
						|
										this.$element.unwrap()
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									// TOGGLE PLUGIN DEFINITION
							 | 
						|
									// ========================
							 | 
						|
								
							 | 
						|
									function Plugin(option) {
							 | 
						|
										return this.each(function () {
							 | 
						|
											var $this   = $(this)
							 | 
						|
											var data    = $this.data('bs.toggle')
							 | 
						|
											var options = typeof option == 'object' && option
							 | 
						|
								
							 | 
						|
											if (!data) $this.data('bs.toggle', (data = new Toggle(this, options)))
							 | 
						|
											if (typeof option == 'string' && data[option]) data[option]()
							 | 
						|
										})
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									var old = $.fn.bootstrapToggle
							 | 
						|
								
							 | 
						|
									$.fn.bootstrapToggle             = Plugin
							 | 
						|
									$.fn.bootstrapToggle.Constructor = Toggle
							 | 
						|
								
							 | 
						|
									// TOGGLE NO CONFLICT
							 | 
						|
									// ==================
							 | 
						|
								
							 | 
						|
									$.fn.toggle.noConflict = function () {
							 | 
						|
										$.fn.bootstrapToggle = old
							 | 
						|
										return this
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									// TOGGLE DATA-API
							 | 
						|
									// ===============
							 | 
						|
								
							 | 
						|
									$(function() {
							 | 
						|
										$('input[type=checkbox][data-toggle^=toggle]').bootstrapToggle()
							 | 
						|
									})
							 | 
						|
								
							 | 
						|
									$(document).on('click.bs.toggle', 'div[data-toggle^=toggle]', function(e) {
							 | 
						|
										var $checkbox = $(this).find('input[type=checkbox]')
							 | 
						|
										$checkbox.bootstrapToggle('toggle')
							 | 
						|
										e.preventDefault()
							 | 
						|
									})
							 | 
						|
								
							 | 
						|
								}(jQuery);
							 | 
						|
								
							 |