UNPKG

bootstrap-checkbox-x

Version:

An extended checkbox plugin for bootstrap with three states and additional styles.

9 lines 5.67 kB
/*! * @copyright &copy; Kartik Visweswaran, Krajee.com, 2014 - 2021 * @version 1.5.7 * * An extended checkbox plugin for bootstrap with three states and additional styles. * * For more JQuery/Bootstrap plugins and demos visit http://plugins.krajee.com * For more Yii related demos visit http://demos.krajee.com */!function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery"],e):e("object"==typeof module&&"object"==typeof module.exports?require("jquery"):window.jQuery)}(function(e){"use strict";var n,t;n={CHECKED:'<svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" class="cbx-icon-krajee" viewBox="0 0 16 16"><path d="M13.485 1.431a1.473 1.473 0 012.104 2.062l-7.84 9.801a1.473 1.473 0 01-2.12.04L.431 8.138a1.473 1.473 0 012.084-2.083l4.111 4.112 6.82-8.69a.486.486 0 01.04-.045z"></path></svg>',CROSSED:'<svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" class="cbx-icon-krajee" viewBox="0 0 16 16"><path d="M1.293 1.293a1 1 0 011.414 0L8 6.586l5.293-5.293a1 1 0 111.414 1.414L9.414 8l5.293 5.293a1 1 0 01-1.414 1.414L8 9.414l-5.293 5.293a1 1 0 01-1.414-1.414L6.586 8 1.293 2.707a1 1 0 010-1.414z"></path></svg>',INDETERMINATE:'<svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" class="cbx-icon-krajee" viewBox="0 0 16 16"><path d="M0 2a2 2 0 012-2h12a2 2 0 012 2v12a2 2 0 01-2 2H2a2 2 0 01-2-2V2z"></path></svg>'},t=function(n,t){var c=this;c.$element=e(n),c.disabled=c.$element.attr("disabled")||c.$element.attr("readonly"),c.initialValue=c.$element.val(),c.init(t)},t.prototype={constructor:t,init:function(t){var c=this,a=c.$element,o=a.is(":checkbox"),i=a.is("select"),l=!o&&!i,s=i&&!t.enclosedLabel,r=t.inline?"cbx-container":"cbx-container cbx-block";t.theme&&(r+=" cbx-"+t.theme),t.iconChecked||(t.iconChecked=t.useCrossIcon?n.CROSSED:n.CHECKED),c.options=t,c.clearEvents(),a.removeClass("cbx-loading"),c.initCheckbox()&&(void 0===c.$container?(c.$container=e(document.createElement("div")).addClass(r).html(c.render()),c.$container.insertBefore(a).append(a),a.hide()):c.$container.before(a).addClass(r).html(c.render()).append(a),c.$cbx=c.$container.find(".cbx"),a.closest("form").on("reset.checkbox",function(){c.reset()}),c.$cbx.off("click.checkbox keyup.checkbox").on("click.checkbox",function(){return!o||t.enclosedLabel||t.useNative||c.disabled?void((l&&!t.enclosedLabel||s)&&c.change()):void a.trigger("change")}).on("keyup.checkbox",function(e){32===e.which&&(c.change(),e.preventDefault())}),(l||i)&&a.on("click.checkbox",function(){c.change()}),t.enclosedLabel&&c.$container.closest(".cbx-label").removeClass("cbx-enclosed").addClass("cbx-enclosed"))},initCheckbox:function(){var e,n=this,t=n.$element,c=n.options;return t.is(":checkbox")?(t.prop("checked")||(e=t.prop("indeterminate")?c.valueNull:c.valueUnchecked,t.val(e)),t.on("change.checkbox",function(){n.change()}),c.useNative?(t.removeClass("cbx-loading"),!1):!0):!0},change:function(){var e,n=this,t=n.$element;n.disabled||(e=n.getValue(),t.val(e),n.validateCheckbox(e),n.options.useNative||n.$cbx.html(n.getIndicator()))},getValue:function(){var e=this,n=e.$element.val(),t=e.options;switch(n){case t.valueUnchecked:return e.options.threeState?t.valueNull:t.valueChecked;case t.valueChecked:return t.valueUnchecked;default:return t.valueChecked}},setCheckboxProp:function(e){var n=this,t=n.$element,c=n.options;switch(t.prop("indeterminate",!1).prop("checked",!1),e){case c.valueChecked:t.prop("checked",!0);break;case c.valueUnchecked:break;default:c.threeState&&t.prop("indeterminate",!0)}},validateCheckbox:function(e){var n=this,t=n.$element,c=t.is(":checkbox");return c?void n.setCheckboxProp(e):void t.trigger("change")},clearEvents:function(){var e=this,n=e.$element,t=e.$container?e.$container.find(".cbx"):null;n.off(".checkbox"),t&&t.off(".checkbox")},destroy:function(){var e=this,n=e.$element;e.clearEvents(),e.$container.before(n).remove(),n.removeData().show()},reset:function(){var e=this,n=e.$element;n.val(e.initialValue),e.refresh(),n.trigger("checkbox:resetinput")},refresh:function(n){var t=this;n?t.init(e.extend(t.options,n)):(t.disabled=t.$element.attr("disabled")||t.$element.attr("readonly"),t.init(t.options)),t.initialValue=t.$element.val()},getIndicator:function(e){var n=this,t=n.options,c=t.iconUnchecked,a=n.$element,o=a.val(),i=t.iconUncheckedCss,l=a.is(":checkbox")?a.prop("indeterminate"):o!==t.valueUnchecked&&(t.threeState||e);return o===t.valueChecked?(c=t.iconChecked,i=t.iconCheckedCss):l&&(c=t.iconNull,i=t.iconNullCss),'<span class="cbx-icon'+(i?" "+i:"")+'">'+c+"</span>"},render:function(){var e=this,n=e.options,t=e.getIndicator(n.allowThreeValOnInit),c=e.disabled||!n.tabindex?"":' tabindex="'+n.tabindex+'"',a=n.size,o="cbx cbx-"+a+(e.disabled?" cbx-disabled":" cbx-active");return'<div class="'+o+'"'+c+">"+t+"</div>"}},e.fn.checkboxX=function(n){var c=Array.apply(null,arguments),a=[];switch(c.shift(),this.each(function(){var o=e(this),i=o.data("checkboxX"),l="object"==typeof n&&n;i||(i=new t(this,e.extend(!0,{},e.fn.checkboxX.defaults,l,o.data())),o.data("checkboxX",i)),"string"==typeof n&&a.push(i[n].apply(i,c))}),a.length){case 0:return this;case 1:return a[0];default:return a}},e.fn.checkboxX.defaults={theme:"",threeState:!0,inline:!0,iconChecked:null,iconUnchecked:"",iconNull:n.INDETERMINATE,iconCheckedCss:"",iconUncheckedCss:"",iconNullCss:"",useCrossIcon:!1,valueChecked:"1",valueUnchecked:"0",valueNull:"",size:"md",enclosedLabel:!1,useNative:!1,allowThreeValOnInit:!1,tabindex:"1000"},e.fn.checkboxX.Constructor=t,e('input[data-toggle="checkbox-x"]').addClass("cbx-loading"),e(document).ready(function(){e('input[data-toggle="checkbox-x"]').checkboxX()})});