ppeasy/public/dist/filter-multi-select.js

106 lines
4.1 KiB
JavaScript

/*!
* Multiple select dropdown with filter jQuery plugin.
* Copyright (C) 2022 Andrew Wagner github.com/andreww1011
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
* USA
*/
import $ from 'jquery';
import FilterMultiSelect from './FilterMultiSelect';
// define the plugin function on the jQuery extension point.
$.fn.filterMultiSelect = function (args) {
var target = this;
// merge the global options with the per-call options.
args = $.extend({}, $.fn.filterMultiSelect.args, args);
// factory defaults
if (typeof args.placeholderText === 'undefined')
args.placeholderText = 'nothing selected';
if (typeof args.filterText === 'undefined')
args.filterText = 'Filter';
if (typeof args.selectAllText === 'undefined')
args.selectAllText = 'Select All';
if (typeof args.labelText === 'undefined')
args.labelText = '';
if (typeof args.selectionLimit === 'undefined')
args.selectionLimit = 0;
if (typeof args.caseSensitive === 'undefined')
args.caseSensitive = false;
if (typeof args.allowEnablingAndDisabling === 'undefined')
args.allowEnablingAndDisabling = true;
if (typeof args.items === 'undefined')
args.items = new Array();
var filterMultiSelect = new FilterMultiSelect(target, args);
var fms = $(filterMultiSelect.getRootElement());
target.replaceWith(fms);
var methods = {
hasOption: function (value) {
return filterMultiSelect.hasOption(value);
},
selectOption: function (value) {
filterMultiSelect.selectOption(value);
},
deselectOption: function (value) {
filterMultiSelect.deselectOption(value);
},
isOptionSelected: function (value) {
return filterMultiSelect.isOptionSelected(value);
},
enableOption: function (value) {
filterMultiSelect.enableOption(value);
},
disableOption: function (value) {
filterMultiSelect.disableOption(value);
},
isOptionDisabled: function (value) {
return filterMultiSelect.isOptionDisabled(value);
},
enable: function () {
filterMultiSelect.enable();
},
disable: function () {
filterMultiSelect.disable();
},
selectAll: function () {
filterMultiSelect.selectAll();
},
deselectAll: function () {
filterMultiSelect.deselectAll();
},
getSelectedOptionsAsJson: function (includeDisabled) {
if (includeDisabled === void 0) { includeDisabled = true; }
return filterMultiSelect.getSelectedOptionsAsJson(includeDisabled);
}
};
// store applied element
$.fn.filterMultiSelect.applied.push(methods);
return methods;
};
// activate plugin by targeting selector
$(function () {
// factory defaults
var selector = typeof $.fn.filterMultiSelect.selector === 'undefined' ? 'select.filter-multi-select' : $.fn.filterMultiSelect.selector;
// target
var s = $(selector);
s.each(function (i, e) {
$(e).filterMultiSelect();
});
});
// store collection of applied elements
$.fn.filterMultiSelect.applied = new Array();
// define the plugin's global default selector.
$.fn.filterMultiSelect.selector = undefined;
// define the plugin's global default options.
$.fn.filterMultiSelect.args = {};
//# sourceMappingURL=filter-multi-select.js.map