Mathias Markl
7 years ago
7 changed files with 1017 additions and 1 deletions
-
2muk_web_utils/__manifest__.py
-
4muk_web_utils/doc/changelog.rst
-
16muk_web_utils/i18n/de.po
-
16muk_web_utils/i18n/muk_web_utils.pot
-
187muk_web_utils/static/lib/bootstrap-switch/css/bootstrap-switch.css
-
784muk_web_utils/static/lib/bootstrap-switch/js/bootstrap-switch.js
-
9muk_web_utils/template/assets.xml
@ -0,0 +1,4 @@ |
|||
`1.0.0` |
|||
------- |
|||
|
|||
- Init version |
@ -0,0 +1,16 @@ |
|||
# Translation of Odoo Server. |
|||
# This file contains the translation of the following modules: |
|||
# |
|||
msgid "" |
|||
msgstr "" |
|||
"Project-Id-Version: Odoo Server 11.0\n" |
|||
"Report-Msgid-Bugs-To: \n" |
|||
"POT-Creation-Date: 2018-01-23 13:00+0000\n" |
|||
"PO-Revision-Date: 2018-01-23 13:00+0000\n" |
|||
"Last-Translator: <>\n" |
|||
"Language-Team: \n" |
|||
"MIME-Version: 1.0\n" |
|||
"Content-Type: text/plain; charset=UTF-8\n" |
|||
"Content-Transfer-Encoding: \n" |
|||
"Plural-Forms: \n" |
|||
|
@ -0,0 +1,16 @@ |
|||
# Translation of Odoo Server. |
|||
# This file contains the translation of the following modules: |
|||
# |
|||
msgid "" |
|||
msgstr "" |
|||
"Project-Id-Version: Odoo Server 11.0\n" |
|||
"Report-Msgid-Bugs-To: \n" |
|||
"POT-Creation-Date: 2018-01-23 13:00+0000\n" |
|||
"PO-Revision-Date: 2018-01-23 13:00+0000\n" |
|||
"Last-Translator: <>\n" |
|||
"Language-Team: \n" |
|||
"MIME-Version: 1.0\n" |
|||
"Content-Type: text/plain; charset=UTF-8\n" |
|||
"Content-Transfer-Encoding: \n" |
|||
"Plural-Forms: \n" |
|||
|
@ -0,0 +1,187 @@ |
|||
/** |
|||
* 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 |
|||
*/ |
|||
|
|||
.bootstrap-switch { |
|||
display: inline-block; |
|||
direction: ltr; |
|||
cursor: pointer; |
|||
border-radius: 4px; |
|||
border: 1px solid; |
|||
border-color: #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-on, |
|||
.bootstrap-switch .bootstrap-switch-handle-off, |
|||
.bootstrap-switch .bootstrap-switch-label { |
|||
-webkit-box-sizing: border-box; |
|||
-moz-box-sizing: border-box; |
|||
box-sizing: border-box; |
|||
cursor: pointer; |
|||
display: table-cell; |
|||
vertical-align: middle; |
|||
padding: 6px 12px; |
|||
font-size: 14px; |
|||
line-height: 20px; |
|||
} |
|||
.bootstrap-switch .bootstrap-switch-handle-on, |
|||
.bootstrap-switch .bootstrap-switch-handle-off { |
|||
text-align: center; |
|||
z-index: 1; |
|||
} |
|||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary, |
|||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary { |
|||
color: #fff; |
|||
background: #337ab7; |
|||
} |
|||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info, |
|||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info { |
|||
color: #fff; |
|||
background: #5bc0de; |
|||
} |
|||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success, |
|||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success { |
|||
color: #fff; |
|||
background: #5cb85c; |
|||
} |
|||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-warning, |
|||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-warning { |
|||
background: #f0ad4e; |
|||
color: #fff; |
|||
} |
|||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger, |
|||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger { |
|||
color: #fff; |
|||
background: #d9534f; |
|||
} |
|||
.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-default, |
|||
.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default { |
|||
color: #000; |
|||
background: #eeeeee; |
|||
} |
|||
.bootstrap-switch .bootstrap-switch-label { |
|||
text-align: center; |
|||
margin-top: -1px; |
|||
margin-bottom: -1px; |
|||
z-index: 100; |
|||
color: #333; |
|||
background: #fff; |
|||
} |
|||
.bootstrap-switch span::before { |
|||
content: "\200b"; |
|||
} |
|||
.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); |
|||
visibility: hidden; |
|||
} |
|||
.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-on, |
|||
.bootstrap-switch.bootstrap-switch-mini .bootstrap-switch-handle-off, |
|||
.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-on, |
|||
.bootstrap-switch.bootstrap-switch-small .bootstrap-switch-handle-off, |
|||
.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-on, |
|||
.bootstrap-switch.bootstrap-switch-large .bootstrap-switch-handle-off, |
|||
.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-readonly, |
|||
.bootstrap-switch.bootstrap-switch-indeterminate { |
|||
cursor: default !important; |
|||
} |
|||
.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-on, |
|||
.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-on, |
|||
.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-on, |
|||
.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-off, |
|||
.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-off, |
|||
.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-handle-off, |
|||
.bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-label, |
|||
.bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-label, |
|||
.bootstrap-switch.bootstrap-switch-indeterminate .bootstrap-switch-label { |
|||
opacity: 0.5; |
|||
filter: alpha(opacity=50); |
|||
cursor: default !important; |
|||
} |
|||
.bootstrap-switch.bootstrap-switch-animate .bootstrap-switch-container { |
|||
-webkit-transition: margin-left 0.5s; |
|||
-o-transition: margin-left 0.5s; |
|||
transition: margin-left 0.5s; |
|||
} |
|||
.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-on { |
|||
border-bottom-left-radius: 0; |
|||
border-top-left-radius: 0; |
|||
border-bottom-right-radius: 3px; |
|||
border-top-right-radius: 3px; |
|||
} |
|||
.bootstrap-switch.bootstrap-switch-inverse .bootstrap-switch-handle-off { |
|||
border-bottom-right-radius: 0; |
|||
border-top-right-radius: 0; |
|||
border-bottom-left-radius: 3px; |
|||
border-top-left-radius: 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, 0.6); |
|||
box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6); |
|||
} |
|||
.bootstrap-switch.bootstrap-switch-on .bootstrap-switch-label, |
|||
.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-off .bootstrap-switch-label { |
|||
border-bottom-right-radius: 3px; |
|||
border-top-right-radius: 3px; |
|||
} |
|||
.bootstrap-switch.bootstrap-switch-off .bootstrap-switch-label, |
|||
.bootstrap-switch.bootstrap-switch-inverse.bootstrap-switch-on .bootstrap-switch-label { |
|||
border-bottom-left-radius: 3px; |
|||
border-top-left-radius: 3px; |
|||
} |
@ -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() {} |
|||
}; |
|||
}); |
Write
Preview
Loading…
Cancel
Save
Reference in new issue