jquery-grid
Version:
jQuery Grid by Gijgo.com is a plug-in for the jQuery Javascript library. It is a very fast and extandable datagrid, and will add advanced interaction controls to any HTML table. This plugin has build-in integration with Bootstrap and Material Design. Free
192 lines (163 loc) • 5.59 kB
JavaScript
/*
* Gijgo Checkbox v1.9.13
* http://gijgo.com/checkbox
*
* Copyright 2014, 2019 gijgo.com
* Released under the MIT license
*/
/* global window alert jQuery */
/**
*/
gj.checkbox = {
plugins: {}
};
gj.checkbox.config = {
base: {
/** The name of the UI library that is going to be in use. Currently we support only Material Design and Bootstrap.
*/
uiLibrary: 'materialdesign',
/** The name of the icons library that is going to be in use. Currently we support Material Icons, Font Awesome and Glyphicons.
*/
iconsLibrary: 'materialicons',
style: {
wrapperCssClass: 'gj-checkbox-md',
spanCssClass: undefined
}
},
bootstrap: {
style: {
wrapperCssClass: 'gj-checkbox-bootstrap'
},
iconsLibrary: 'glyphicons'
},
bootstrap4: {
style: {
wrapperCssClass: 'gj-checkbox-bootstrap gj-checkbox-bootstrap-4'
},
iconsLibrary: 'materialicons'
},
materialicons: {
style: {
iconsCssClass: 'gj-checkbox-material-icons',
spanCssClass: 'gj-icon'
}
},
glyphicons: {
style: {
iconsCssClass: 'gj-checkbox-glyphicons',
spanCssClass: ''
}
},
fontawesome: {
style: {
iconsCssClass: 'gj-checkbox-fontawesome',
spanCssClass: 'fa'
}
}
};
gj.checkbox.methods = {
init: function (jsConfig) {
var $chkb = this;
gj.widget.prototype.init.call(this, jsConfig, 'checkbox');
$chkb.attr('data-checkbox', 'true');
gj.checkbox.methods.initialize($chkb);
return $chkb;
},
initialize: function ($chkb) {
var data = $chkb.data(), $wrapper, $span;
if (data.style.wrapperCssClass) {
$wrapper = $('<label class="' + data.style.wrapperCssClass + ' ' + data.style.iconsCssClass + '"></label>');
if ($chkb.attr('id')) {
$wrapper.attr('for', $chkb.attr('id'));
}
$chkb.wrap($wrapper);
$span = $('<span />');
if (data.style.spanCssClass) {
$span.addClass(data.style.spanCssClass);
}
$chkb.parent().append($span);
}
},
state: function ($chkb, value) {
if (value) {
if ('checked' === value) {
$chkb.prop('indeterminate', false);
$chkb.prop('checked', true);
} else if ('unchecked' === value) {
$chkb.prop('indeterminate', false);
$chkb.prop('checked', false);
} else if ('indeterminate' === value) {
$chkb.prop('checked', true);
$chkb.prop('indeterminate', true);
}
gj.checkbox.events.change($chkb, value);
return $chkb;
} else {
if ($chkb.prop('indeterminate')) {
value = 'indeterminate';
} else if ($chkb.prop('checked')) {
value = 'checked';
} else {
value = 'unchecked';
}
return value;
}
},
toggle: function ($chkb) {
if ($chkb.state() == 'checked') {
$chkb.state('unchecked');
} else {
$chkb.state('checked');
}
return $chkb;
},
destroy: function ($chkb) {
if ($chkb.attr('data-checkbox') === 'true') {
$chkb.removeData();
$chkb.removeAttr('data-guid');
$chkb.removeAttr('data-checkbox');
$chkb.off();
$chkb.next('span').remove();
$chkb.unwrap();
}
return $chkb;
}
};
gj.checkbox.events = {
/**
* Triggered when the state of the checkbox is changed
*
*/
change: function ($chkb, state) {
return $chkb.triggerHandler('change', [state]);
}
};
gj.checkbox.widget = function ($element, jsConfig) {
var self = this,
methods = gj.checkbox.methods;
/** Toogle the state of the checkbox.
*/
self.toggle = function () {
return methods.toggle(this);
};
/** Return state or set state if you pass parameter.
*/
self.state = function (value) {
return methods.state(this, value);
};
/** Remove checkbox functionality from the element.
*/
self.destroy = function () {
return methods.destroy(this);
};
$.extend($element, self);
if ('true' !== $element.attr('data-checkbox')) {
methods.init.call($element, jsConfig);
}
return $element;
};
gj.checkbox.widget.prototype = new gj.widget();
gj.checkbox.widget.constructor = gj.checkbox.widget;
(function ($) {
$.fn.checkbox = function (method) {
var $widget;
if (this && this.length) {
if (typeof method === 'object' || !method) {
return new gj.checkbox.widget(this, method);
} else {
$widget = new gj.checkbox.widget(this, null);
if ($widget[method]) {
return $widget[method].apply(this, Array.prototype.slice.call(arguments, 1));
} else {
throw 'Method ' + method + ' does not exist.';
}
}
}
};
})(jQuery);