123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- (function (global, factory) {
- if (typeof define === "function" && define.amd) {
- define("/Plugin/asselectable", ["exports", "jquery"], factory);
- } else if (typeof exports !== "undefined") {
- factory(exports, require("jquery"));
- } else {
- var mod = {
- exports: {}
- };
- factory(mod.exports, global.jQuery);
- global.PluginAsselectable = mod.exports;
- }
- })(this, function (_exports, _jquery) {
- "use strict";
- Object.defineProperty(_exports, "__esModule", {
- value: true
- });
- _exports.default = void 0;
- _jquery = babelHelpers.interopRequireDefault(_jquery);
- var pluginName = 'asSelectable';
- var defaults = {
- allSelector: '.selectable-all',
- itemSelector: '.selectable-item',
- rowSelector: 'tr',
- rowSelectable: false,
- rowActiveClass: 'active',
- onChange: null
- };
- var asSelectable =
- /*#__PURE__*/
- function () {
- function asSelectable(element, options) {
- babelHelpers.classCallCheck(this, asSelectable);
- this.element = element;
- this.$element = (0, _jquery.default)(element);
- this.options = _jquery.default.extend({}, defaults, options, this.$element.data());
- this.init();
- }
- babelHelpers.createClass(asSelectable, [{
- key: "init",
- value: function init() {
- var self = this;
- var options = this.options;
- self.$element.on('change', options.allSelector, function () {
- var value = (0, _jquery.default)(this).prop('checked');
- self.getItems().each(function () {
- var $one = (0, _jquery.default)(this);
- $one.prop('checked', value).trigger('change', [true]);
- self.selectRow($one, value);
- });
- });
- self.$element.on('click', options.itemSelector, function (e) {
- var $one = (0, _jquery.default)(this);
- var value = $one.prop('checked');
- self.selectRow($one, value);
- e.stopPropagation();
- });
- self.$element.on('change', options.itemSelector, function () {
- var $all = self.$element.find(options.allSelector);
- var $row = self.getItems();
- var total = $row.length;
- var checked = self.getSelected().length;
- if (total === checked) {
- $all.prop('checked', true);
- } else {
- $all.prop('checked', false);
- }
- self._trigger('change', checked);
- if (typeof options.callback === 'function') {
- options.callback.call(this);
- }
- });
- if (options.rowSelectable) {
- self.$element.on('click', options.rowSelector, function (e) {
- if (e.target.type !== 'checkbox' && e.target.type !== 'button' && e.target.tagName.toLowerCase() !== 'a' && !(0, _jquery.default)(e.target).parent('div.checkbox-custom').length) {
- var $checkbox = (0, _jquery.default)(options.itemSelector, this);
- var value = $checkbox.prop('checked');
- $checkbox.prop('checked', !value);
- self.selectRow($checkbox, !value);
- }
- });
- }
- }
- }, {
- key: "selectRow",
- value: function selectRow(item, value) {
- if (value) {
- item.parents(this.options.rowSelector).addClass(this.options.rowActiveClass);
- } else {
- item.parents(this.options.rowSelector).removeClass(this.options.rowActiveClass);
- }
- }
- }, {
- key: "getItems",
- value: function getItems() {
- return this.$element.find(this.options.itemSelector);
- }
- }, {
- key: "getSelected",
- value: function getSelected() {
- return this.getItems().filter(':checked');
- }
- }, {
- key: "_trigger",
- value: function _trigger(eventType) {
- var method_arguments = Array.prototype.slice.call(arguments, 1);
- var data = [this].concat(method_arguments); // event
- this.$element.trigger("".concat(pluginName, "::").concat(eventType), data); // callback
- eventType = eventType.replace(/\b\w+\b/g, function (word) {
- return word.substring(0, 1).toUpperCase() + word.substring(1);
- });
- var onFunction = "on".concat(eventType);
- if (typeof this.options[onFunction] === 'function') {
- this.options[onFunction].apply(this, method_arguments);
- }
- }
- }], [{
- key: "_jQueryInterface",
- value: function _jQueryInterface(options) {
- for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
- args[_key - 1] = arguments[_key];
- }
- if (typeof options === 'string') {
- var method = options;
- if (/^\_/.test(method)) {
- return false;
- } else if (/^(get)/.test(method)) {
- var api = this.first().data(pluginName);
- if (api && typeof api[method] === 'function') {
- return api[method].apply(api, args);
- }
- } else {
- return this.each(function () {
- var api = _jquery.default.data(this, pluginName);
- if (api && typeof api[method] === 'function') {
- api[method].apply(api, args);
- }
- });
- }
- } else {
- return this.each(function () {
- if (!_jquery.default.data(this, pluginName)) {
- _jquery.default.data(this, pluginName, new asSelectable(this, options));
- }
- });
- }
- }
- }]);
- return asSelectable;
- }();
- _jquery.default.fn[pluginName] = asSelectable._jQueryInterface;
- _jquery.default.fn[pluginName].constructor = asSelectable;
- _jquery.default.fn[pluginName].noConflict = function () {
- _jquery.default.fn[pluginName] = window.JQUERY_NO_CONFLICT;
- return asSelectable._jQueryInterface;
- };
- var _default = asSelectable;
- _exports.default = _default;
- });
|