mirror of
				https://github.com/inventree/InvenTree.git
				synced 2025-11-03 22:55:43 +00:00 
			
		
		
		
	Remove reliance on "bootstrap-toggle" library
- Still needs fixing in modal forms
This commit is contained in:
		@@ -1,83 +0,0 @@
 | 
			
		||||
/*! ========================================================================
 | 
			
		||||
 * Bootstrap Toggle: bootstrap-toggle.css v2.2.0
 | 
			
		||||
 * http://www.bootstraptoggle.com
 | 
			
		||||
 * ========================================================================
 | 
			
		||||
 * Copyright 2014 Min Hur, The New York Times Company
 | 
			
		||||
 * Licensed under MIT
 | 
			
		||||
 * ======================================================================== */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.checkbox label .toggle,
 | 
			
		||||
.checkbox-inline .toggle {
 | 
			
		||||
	margin-left: -20px;
 | 
			
		||||
	margin-right: 5px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.toggle {
 | 
			
		||||
	position: relative;
 | 
			
		||||
	overflow: hidden;
 | 
			
		||||
}
 | 
			
		||||
.toggle input[type="checkbox"] {
 | 
			
		||||
	display: none;
 | 
			
		||||
}
 | 
			
		||||
.toggle-group {
 | 
			
		||||
	position: absolute;
 | 
			
		||||
	width: 200%;
 | 
			
		||||
	top: 0;
 | 
			
		||||
	bottom: 0;
 | 
			
		||||
	left: 0;
 | 
			
		||||
	transition: left 0.35s;
 | 
			
		||||
	-webkit-transition: left 0.35s;
 | 
			
		||||
	-moz-user-select: none;
 | 
			
		||||
	-webkit-user-select: none;
 | 
			
		||||
}
 | 
			
		||||
.toggle.off .toggle-group {
 | 
			
		||||
	left: -100%;
 | 
			
		||||
}
 | 
			
		||||
.toggle-on {
 | 
			
		||||
	position: absolute;
 | 
			
		||||
	top: 0;
 | 
			
		||||
	bottom: 0;
 | 
			
		||||
	left: 0;
 | 
			
		||||
	right: 50%;
 | 
			
		||||
	margin: 0;
 | 
			
		||||
	border: 0;
 | 
			
		||||
	border-radius: 0;
 | 
			
		||||
}
 | 
			
		||||
.toggle-off {
 | 
			
		||||
	position: absolute;
 | 
			
		||||
	top: 0;
 | 
			
		||||
	bottom: 0;
 | 
			
		||||
	left: 50%;
 | 
			
		||||
	right: 0;
 | 
			
		||||
	margin: 0;
 | 
			
		||||
	border: 0;
 | 
			
		||||
	border-radius: 0;
 | 
			
		||||
}
 | 
			
		||||
.toggle-handle {
 | 
			
		||||
	position: relative;
 | 
			
		||||
	margin: 0 auto;
 | 
			
		||||
	padding-top: 0px;
 | 
			
		||||
	padding-bottom: 0px;
 | 
			
		||||
	height: 100%;
 | 
			
		||||
	width: 0px;
 | 
			
		||||
	border-width: 0 1px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.toggle.btn { min-width: 59px; min-height: 34px; }
 | 
			
		||||
.toggle-on.btn { padding-right: 24px; }
 | 
			
		||||
.toggle-off.btn { padding-left: 24px; }
 | 
			
		||||
 | 
			
		||||
.toggle.btn-lg { min-width: 79px; min-height: 45px; }
 | 
			
		||||
.toggle-on.btn-lg { padding-right: 31px; }
 | 
			
		||||
.toggle-off.btn-lg { padding-left: 31px; }
 | 
			
		||||
.toggle-handle.btn-lg { width: 40px; }
 | 
			
		||||
 | 
			
		||||
.toggle.btn-sm { border-radius: 15px; min-width: 50px; min-height: 20px; max-height: 25px;}
 | 
			
		||||
.toggle-on.btn-sm { padding-right: 20px; }
 | 
			
		||||
.toggle-off.btn-sm { padding-left: 20px; }
 | 
			
		||||
 | 
			
		||||
.toggle.btn-xs { min-width: 35px; min-height: 22px;}
 | 
			
		||||
.toggle-on.btn-xs { padding-right: 12px; }
 | 
			
		||||
.toggle-off.btn-xs { padding-left: 12px; }
 | 
			
		||||
 | 
			
		||||
@@ -725,7 +725,8 @@
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.modal-dialog {
 | 
			
		||||
    width: 60%;
 | 
			
		||||
    width: 65%;
 | 
			
		||||
    max-width: 80%;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.modal-secondary .modal-dialog {
 | 
			
		||||
 
 | 
			
		||||
@@ -1,180 +0,0 @@
 | 
			
		||||
/*! ========================================================================
 | 
			
		||||
 * 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: '',
 | 
			
		||||
		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);
 | 
			
		||||
@@ -41,7 +41,6 @@
 | 
			
		||||
<link rel="stylesheet" href="{% static 'fontawesome/css/brands.css' %}">
 | 
			
		||||
<link rel="stylesheet" href="{% static 'fontawesome/css/solid.css' %}">
 | 
			
		||||
<link rel="stylesheet" href="{% static 'select2/css/select2.css' %}">
 | 
			
		||||
<link rel="stylesheet" href="{% static 'css/bootstrap-toggle.css' %}">
 | 
			
		||||
<link rel="stylesheet" href="{% static 'fullcalendar/main.css' %}">
 | 
			
		||||
<link rel="stylesheet" href="{% static 'script/jquery-ui/jquery-ui.min.css' %}">
 | 
			
		||||
 | 
			
		||||
@@ -118,7 +117,6 @@
 | 
			
		||||
 | 
			
		||||
<script type="text/javascript" src="{% static 'bootstrap/js/bootstrap.bundle.min.js' %}"></script>
 | 
			
		||||
<script type='text/javascript' src="{% static 'script/bootstrap/bootstrap-treeview.js' %}"></script>
 | 
			
		||||
<script type='text/javascript' src="{% static 'script/bootstrap/bootstrap-toggle.js' %}"></script>
 | 
			
		||||
<script type='text/javascript' src="{% static 'bootstrap-table/bootstrap-table.js' %}"></script>
 | 
			
		||||
<script type='text/javascript' src="{% static 'bootstrap-table/bootstrap-table-en-US.min.js' %}"></script>
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,6 @@
 | 
			
		||||
{% load inventree_extras %}
 | 
			
		||||
 | 
			
		||||
/* globals
 | 
			
		||||
    attachToggle,
 | 
			
		||||
    createNewModal,
 | 
			
		||||
    inventreeFormDataUpload,
 | 
			
		||||
    inventreeGet,
 | 
			
		||||
@@ -519,8 +518,6 @@ function constructFormBody(fields, options) {
 | 
			
		||||
    // Attach clear callbacks (if required)
 | 
			
		||||
    addClearCallbacks(fields, options);
 | 
			
		||||
 | 
			
		||||
    attachToggle(modal);
 | 
			
		||||
 | 
			
		||||
    $(modal + ' .select2-container').addClass('select-full-width');
 | 
			
		||||
    $(modal + ' .select2-container').css('width', '100%');
 | 
			
		||||
 | 
			
		||||
@@ -563,13 +560,13 @@ function insertConfirmButton(options) {
 | 
			
		||||
 | 
			
		||||
    var message = options.confirmMessage || '{% trans "Confirm" %}';
 | 
			
		||||
 | 
			
		||||
    var confirm = `
 | 
			
		||||
    <span style='float: left;'>
 | 
			
		||||
        ${message}
 | 
			
		||||
        <input id='modal-confirm' name='confirm' type='checkbox'>
 | 
			
		||||
    </span>`;
 | 
			
		||||
    var html = `
 | 
			
		||||
    <div class="form-check form-switch">
 | 
			
		||||
        <input class="form-check-input" type="checkbox" id="modal-confirm">
 | 
			
		||||
        <label class="form-check-label" for="modal-confirm">${message}</label>
 | 
			
		||||
    </div>`;
 | 
			
		||||
 | 
			
		||||
    $(options.modal).find('#modal-footer-buttons').append(confirm);
 | 
			
		||||
    $(options.modal).find('#modal-footer-buttons').append(html);
 | 
			
		||||
 | 
			
		||||
    // Disable the 'submit' button
 | 
			
		||||
    $(options.modal).find('#modal-form-submit').prop('disabled', true);
 | 
			
		||||
@@ -2029,7 +2026,7 @@ function constructCheckboxInput(name, parameters) {
 | 
			
		||||
 | 
			
		||||
    return constructInputOptions(
 | 
			
		||||
        name,
 | 
			
		||||
        'checkboxinput',
 | 
			
		||||
        'form-check-input',
 | 
			
		||||
        'checkbox',
 | 
			
		||||
        parameters
 | 
			
		||||
    );
 | 
			
		||||
 
 | 
			
		||||
@@ -355,22 +355,6 @@ function partialMatcher(params, data) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
function attachToggle(modal) {
 | 
			
		||||
    /* Attach 'bootstrap-toggle' functionality to any checkbox in the modal.
 | 
			
		||||
     * This is simple for visual improvement, 
 | 
			
		||||
     * and also larger toggle style buttons are easier to press!
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
    $(modal).find(`input[type='checkbox']`).each(function() {
 | 
			
		||||
        $(this).bootstrapToggle({
 | 
			
		||||
            size: 'small',
 | 
			
		||||
            onstyle: 'success',
 | 
			
		||||
            offstyle: 'warning',
 | 
			
		||||
        });
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
function attachSelect(modal) {
 | 
			
		||||
    /* Attach 'select2' functionality to any drop-down list in the modal. 
 | 
			
		||||
     * Provides search filtering for dropdown items
 | 
			
		||||
@@ -698,7 +682,6 @@ function injectModalForm(modal, form_html) {
 | 
			
		||||
     */
 | 
			
		||||
    $(modal).find('.modal-form-content').html(form_html);
 | 
			
		||||
    attachSelect(modal);
 | 
			
		||||
    attachToggle(modal);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user