1956 lines
76 KiB
JavaScript
1956 lines
76 KiB
JavaScript
(function webpackUniversalModuleDefinition(root, factory) {
|
|
if(typeof exports === 'object' && typeof module === 'object')
|
|
module.exports = factory();
|
|
else if(typeof define === 'function' && define.amd)
|
|
define([], factory);
|
|
else if(typeof exports === 'object')
|
|
exports["SlimSelect"] = factory();
|
|
else
|
|
root["SlimSelect"] = factory();
|
|
})(window, function() {
|
|
return /******/ (function(modules) { // webpackBootstrap
|
|
/******/ // The module cache
|
|
/******/ var installedModules = {};
|
|
/******/
|
|
/******/ // The require function
|
|
/******/ function __webpack_requireesc_html__(moduleId) {
|
|
/******/
|
|
/******/ // Check if module is in cache
|
|
/******/ if(installedModules[moduleId]) {
|
|
/******/ return installedModules[moduleId].exports;
|
|
/******/ }
|
|
/******/ // Create a new module (and put it into the cache)
|
|
/******/ var module = installedModules[moduleId] = {
|
|
/******/ i: moduleId,
|
|
/******/ l: false,
|
|
/******/ exports: {}
|
|
/******/ };
|
|
/******/
|
|
/******/ // Execute the module function
|
|
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
|
/******/
|
|
/******/ // Flag the module as loaded
|
|
/******/ module.l = true;
|
|
/******/
|
|
/******/ // Return the exports of the module
|
|
/******/ return module.exports;
|
|
/******/ }
|
|
/******/
|
|
/******/
|
|
/******/ // expose the modules object (__webpack_modules__)
|
|
/******/ __webpack_require__.m = modules;
|
|
/******/
|
|
/******/ // expose the module cache
|
|
/******/ __webpack_require__.c = installedModules;
|
|
/******/
|
|
/******/ // define getter function for harmony exports
|
|
/******/ __webpack_require__.d = function(exports, name, getter) {
|
|
/******/ if(!__webpack_require__.o(exports, name)) {
|
|
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
|
|
/******/ }
|
|
/******/ };
|
|
/******/
|
|
/******/ // define __esModule on exports
|
|
/******/ __webpack_require__.r = function(exports) {
|
|
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
|
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
/******/ }
|
|
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
|
/******/ };
|
|
/******/
|
|
/******/ // create a fake namespace object
|
|
/******/ // mode & 1: value is a module id, require it
|
|
/******/ // mode & 2: merge all properties of value into the ns
|
|
/******/ // mode & 4: return value when already ns object
|
|
/******/ // mode & 8|1: behave like require
|
|
/******/ __webpack_require__.t = function(value, mode) {
|
|
/******/ if(mode & 1) value = __webpack_requireesc_html__(value);
|
|
/******/ if(mode & 8) return value;
|
|
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
|
|
/******/ var ns = Object.create(null);
|
|
/******/ __webpack_require__.r(ns);
|
|
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
|
|
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
|
|
/******/ return ns;
|
|
/******/ };
|
|
/******/
|
|
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
|
/******/ __webpack_require__.n = function(module) {
|
|
/******/ var getter = module && module.__esModule ?
|
|
/******/ function getDefault() { return module['default']; } :
|
|
/******/ function getModuleExports() { return module; };
|
|
/******/ __webpack_require__.d(getter, 'a', getter);
|
|
/******/ return getter;
|
|
/******/ };
|
|
/******/
|
|
/******/ // Object.prototype.hasOwnProperty.call
|
|
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
|
|
/******/
|
|
/******/ // __webpack_public_path__
|
|
/******/ __webpack_require__.p = "";
|
|
/******/
|
|
/******/
|
|
/******/ // Load entry module and return exports
|
|
/******/ return __webpack_requireesc_html__(__webpack_require__.s = 2);
|
|
/******/ })
|
|
/************************************************************************/
|
|
/******/ ([
|
|
/* 0 */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
exports.__esModule = true;
|
|
function hasClassInTree(element, className) {
|
|
function hasClass(e, c) {
|
|
if (!(!c || !e || !e.classList || !e.classList.contains(c))) {
|
|
return e;
|
|
}
|
|
return null;
|
|
}
|
|
function parentByClass(e, c) {
|
|
if (!e || e === document) {
|
|
return null;
|
|
}
|
|
else if (hasClass(e, c)) {
|
|
return e;
|
|
}
|
|
else {
|
|
return parentByClass(e.parentNode, c);
|
|
}
|
|
}
|
|
return hasClass(element, className) || parentByClass(element, className);
|
|
}
|
|
exports.hasClassInTree = hasClassInTree;
|
|
function ensureElementInView(container, element) {
|
|
var cTop = container.scrollTop + container.offsetTop;
|
|
var cBottom = cTop + container.clientHeight;
|
|
var eTop = element.offsetTop;
|
|
var eBottom = eTop + element.clientHeight;
|
|
if (eTop < cTop) {
|
|
container.scrollTop -= (cTop - eTop);
|
|
}
|
|
else if (eBottom > cBottom) {
|
|
container.scrollTop += (eBottom - cBottom);
|
|
}
|
|
}
|
|
exports.ensureElementInView = ensureElementInView;
|
|
function putContent(el, currentPosition, isOpen) {
|
|
var height = el.offsetHeight;
|
|
var rect = el.getBoundingClientRect();
|
|
var elemTop = (isOpen ? rect.top : rect.top - height);
|
|
var elemBottom = (isOpen ? rect.bottom : rect.bottom + height);
|
|
if (elemTop <= 0) {
|
|
return 'below';
|
|
}
|
|
if (elemBottom >= window.innerHeight) {
|
|
return 'above';
|
|
}
|
|
return (isOpen ? currentPosition : 'below');
|
|
}
|
|
exports.putContent = putContent;
|
|
function debounce(func, wait, immediate) {
|
|
if (wait === void 0) { wait = 100; }
|
|
if (immediate === void 0) { immediate = false; }
|
|
var timeout;
|
|
return function () {
|
|
var args = [];
|
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
args[_i] = arguments[_i];
|
|
}
|
|
var context = self;
|
|
var later = function () {
|
|
timeout = null;
|
|
if (!immediate) {
|
|
func.apply(context, args);
|
|
}
|
|
};
|
|
var callNow = immediate && !timeout;
|
|
clearTimeout(timeout);
|
|
timeout = setTimeout(later, wait);
|
|
if (callNow) {
|
|
func.apply(context, args);
|
|
}
|
|
};
|
|
}
|
|
exports.debounce = debounce;
|
|
function isValueInArrayOfObjects(selected, key, value) {
|
|
if (!Array.isArray(selected)) {
|
|
return selected[key] === value;
|
|
}
|
|
for (var _i = 0, selected_1 = selected; _i < selected_1.length; _i++) {
|
|
var s = selected_1[_i];
|
|
if (s && s[key] && s[key] === value) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
exports.isValueInArrayOfObjects = isValueInArrayOfObjects;
|
|
function highlight(str, search, className) {
|
|
var completedString = str;
|
|
var regex = new RegExp('(' + search.trim() + ')(?![^<]*>[^<>]*</)', 'i');
|
|
if (!str.match(regex)) {
|
|
return str;
|
|
}
|
|
var matchStartPosition = str.match(regex).index;
|
|
var matchEndPosition = matchStartPosition + str.match(regex)[0].toString().length;
|
|
var originalTextFoundByRegex = str.substring(matchStartPosition, matchEndPosition);
|
|
completedString = completedString.replace(regex, "<mark class=\"" + className + "\">" + originalTextFoundByRegex + "</mark>");
|
|
return completedString;
|
|
}
|
|
exports.highlight = highlight;
|
|
function kebabCase(str) {
|
|
var result = str.replace(/[A-Z\u00C0-\u00D6\u00D8-\u00DE]/g, function (match) { return '-' + match.toLowerCase(); });
|
|
return (str[0] === str[0].toUpperCase())
|
|
? result.substring(1)
|
|
: result;
|
|
}
|
|
exports.kebabCase = kebabCase;
|
|
(function () {
|
|
var w = window;
|
|
if (typeof w.CustomEvent === 'function') {
|
|
return;
|
|
}
|
|
function CustomEvent(event, params) {
|
|
params = params || { bubbles: false, cancelable: false, detail: undefined };
|
|
var evt = document.createEvent('CustomEvent');
|
|
evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
|
|
return evt;
|
|
}
|
|
CustomEvent.prototype = w.Event.prototype;
|
|
w.CustomEvent = CustomEvent;
|
|
})();
|
|
|
|
|
|
/***/ }),
|
|
/* 1 */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
exports.__esModule = true;
|
|
var Data = (function () {
|
|
function Data(info) {
|
|
this.contentOpen = false;
|
|
this.contentPosition = 'below';
|
|
this.isOnChangeEnabled = true;
|
|
this.main = info.main;
|
|
this.searchValue = '';
|
|
this.data = [];
|
|
this.filtered = null;
|
|
this.parseSelectData();
|
|
this.setSelectedFromSelect();
|
|
}
|
|
Data.prototype.newOption = function (info) {
|
|
return {
|
|
id: (info.id ? info.id : String(Math.floor(Math.random() * 100000000))),
|
|
value: (info.value ? info.value : ''),
|
|
text: (info.text ? info.text : ''),
|
|
innerHTML: (info.innerHTML ? info.innerHTML : ''),
|
|
selected: (info.selected ? info.selected : false),
|
|
display: (info.display !== undefined ? info.display : true),
|
|
disabled: (info.disabled ? info.disabled : false),
|
|
placeholder: (info.placeholder ? info.placeholder : false),
|
|
"class": (info["class"] ? info["class"] : undefined),
|
|
data: (info.data ? info.data : {}),
|
|
mandatory: (info.mandatory ? info.mandatory : false)
|
|
};
|
|
};
|
|
Data.prototype.add = function (data) {
|
|
this.data.push({
|
|
id: String(Math.floor(Math.random() * 100000000)),
|
|
value: data.value,
|
|
text: data.text,
|
|
innerHTML: '',
|
|
selected: false,
|
|
display: true,
|
|
disabled: false,
|
|
placeholder: false,
|
|
"class": undefined,
|
|
mandatory: data.mandatory,
|
|
data: {}
|
|
});
|
|
};
|
|
Data.prototype.parseSelectData = function () {
|
|
this.data = [];
|
|
var nodes = this.main.select.element.childNodes;
|
|
for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) {
|
|
var n = nodes_1[_i];
|
|
if (n.nodeName === 'OPTGROUP') {
|
|
var node = n;
|
|
var optgroup = {
|
|
label: node.label,
|
|
options: []
|
|
};
|
|
var options = n.childNodes;
|
|
for (var _a = 0, options_1 = options; _a < options_1.length; _a++) {
|
|
var o = options_1[_a];
|
|
if (o.nodeName === 'OPTION') {
|
|
var option = this.pullOptionData(o);
|
|
optgroup.options.push(option);
|
|
if (option.placeholder && option.text.trim() !== '') {
|
|
this.main.config.placeholderText = option.text;
|
|
}
|
|
}
|
|
}
|
|
this.data.push(optgroup);
|
|
}
|
|
else if (n.nodeName === 'OPTION') {
|
|
var option = this.pullOptionData(n);
|
|
this.data.push(option);
|
|
if (option.placeholder && option.text.trim() !== '') {
|
|
this.main.config.placeholderText = option.text;
|
|
}
|
|
}
|
|
}
|
|
};
|
|
Data.prototype.pullOptionData = function (option) {
|
|
return {
|
|
id: (option.dataset ? option.dataset.id : false) || String(Math.floor(Math.random() * 100000000)),
|
|
value: option.value,
|
|
text: option.text,
|
|
innerHTML: option.innerHTML,
|
|
selected: option.selected,
|
|
disabled: option.disabled,
|
|
placeholder: option.dataset.placeholder === 'true',
|
|
"class": option.className,
|
|
style: option.style.cssText,
|
|
data: option.dataset,
|
|
mandatory: (option.dataset ? option.dataset.mandatory === 'true' : false)
|
|
};
|
|
};
|
|
Data.prototype.setSelectedFromSelect = function () {
|
|
if (this.main.config.isMultiple) {
|
|
var options = this.main.select.element.options;
|
|
var newSelected = [];
|
|
for (var _i = 0, options_2 = options; _i < options_2.length; _i++) {
|
|
var o = options_2[_i];
|
|
if (o.selected) {
|
|
var newOption = this.getObjectFromData(o.value, 'value');
|
|
if (newOption && newOption.id) {
|
|
newSelected.push(newOption.id);
|
|
}
|
|
}
|
|
}
|
|
this.setSelected(newSelected, 'id');
|
|
}
|
|
else {
|
|
var element = this.main.select.element;
|
|
if (element.selectedIndex !== -1) {
|
|
var option = element.options[element.selectedIndex];
|
|
var value = option.value;
|
|
this.setSelected(value, 'value');
|
|
}
|
|
}
|
|
};
|
|
Data.prototype.setSelected = function (value, type) {
|
|
if (type === void 0) { type = 'id'; }
|
|
for (var _i = 0, _a = this.data; _i < _a.length; _i++) {
|
|
var d = _a[_i];
|
|
if (d.hasOwnProperty('label')) {
|
|
if (d.hasOwnProperty('options')) {
|
|
var options = d.options;
|
|
if (options) {
|
|
for (var _b = 0, options_3 = options; _b < options_3.length; _b++) {
|
|
var o = options_3[_b];
|
|
if (o.placeholder) {
|
|
continue;
|
|
}
|
|
o.selected = this.shouldBeSelected(o, value, type);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
d.selected = this.shouldBeSelected(d, value, type);
|
|
}
|
|
}
|
|
};
|
|
Data.prototype.shouldBeSelected = function (option, value, type) {
|
|
if (type === void 0) { type = 'id'; }
|
|
if (Array.isArray(value)) {
|
|
for (var _i = 0, value_1 = value; _i < value_1.length; _i++) {
|
|
var v = value_1[_i];
|
|
if (type in option && String(option[type]) === String(v)) {
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (type in option && String(option[type]) === String(value)) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
};
|
|
Data.prototype.getSelected = function () {
|
|
var value = { text: '', placeholder: this.main.config.placeholderText };
|
|
var values = [];
|
|
for (var _i = 0, _a = this.data; _i < _a.length; _i++) {
|
|
var d = _a[_i];
|
|
if (d.hasOwnProperty('label')) {
|
|
if (d.hasOwnProperty('options')) {
|
|
var options = d.options;
|
|
if (options) {
|
|
for (var _b = 0, options_4 = options; _b < options_4.length; _b++) {
|
|
var o = options_4[_b];
|
|
if (o.selected) {
|
|
if (!this.main.config.isMultiple) {
|
|
value = o;
|
|
}
|
|
else {
|
|
values.push(o);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (d.selected) {
|
|
if (!this.main.config.isMultiple) {
|
|
value = d;
|
|
}
|
|
else {
|
|
values.push(d);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (this.main.config.isMultiple) {
|
|
return values;
|
|
}
|
|
return value;
|
|
};
|
|
Data.prototype.addToSelected = function (value, type) {
|
|
if (type === void 0) { type = 'id'; }
|
|
if (this.main.config.isMultiple) {
|
|
var values = [];
|
|
var selected = this.getSelected();
|
|
if (Array.isArray(selected)) {
|
|
for (var _i = 0, selected_1 = selected; _i < selected_1.length; _i++) {
|
|
var s = selected_1[_i];
|
|
values.push(s[type]);
|
|
}
|
|
}
|
|
values.push(value);
|
|
this.setSelected(values, type);
|
|
}
|
|
};
|
|
Data.prototype.removeFromSelected = function (value, type) {
|
|
if (type === void 0) { type = 'id'; }
|
|
if (this.main.config.isMultiple) {
|
|
var values = [];
|
|
var selected = this.getSelected();
|
|
for (var _i = 0, selected_2 = selected; _i < selected_2.length; _i++) {
|
|
var s = selected_2[_i];
|
|
if (String(s[type]) !== String(value)) {
|
|
values.push(s[type]);
|
|
}
|
|
}
|
|
this.setSelected(values, type);
|
|
}
|
|
};
|
|
Data.prototype.onDataChange = function () {
|
|
if (this.main.onChange && this.isOnChangeEnabled) {
|
|
this.main.onChange(JSON.parse(JSON.stringify(this.getSelected())));
|
|
}
|
|
};
|
|
Data.prototype.getObjectFromData = function (value, type) {
|
|
if (type === void 0) { type = 'id'; }
|
|
for (var _i = 0, _a = this.data; _i < _a.length; _i++) {
|
|
var d = _a[_i];
|
|
if (type in d && String(d[type]) === String(value)) {
|
|
return d;
|
|
}
|
|
if (d.hasOwnProperty('options')) {
|
|
var optgroupObject = d;
|
|
if (optgroupObject.options) {
|
|
for (var _b = 0, _c = optgroupObject.options; _b < _c.length; _b++) {
|
|
var oo = _c[_b];
|
|
if (String(oo[type]) === String(value)) {
|
|
return oo;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return null;
|
|
};
|
|
Data.prototype.search = function (search) {
|
|
this.searchValue = search;
|
|
if (search.trim() === '') {
|
|
this.filtered = null;
|
|
return;
|
|
}
|
|
var searchFilter = this.main.config.searchFilter;
|
|
var valuesArray = this.data.slice(0);
|
|
search = search.trim();
|
|
var filtered = valuesArray.map(function (obj) {
|
|
if (obj.hasOwnProperty('options')) {
|
|
var optgroupObj = obj;
|
|
var options = [];
|
|
if (optgroupObj.options) {
|
|
options = optgroupObj.options.filter(function (opt) {
|
|
return searchFilter(opt, search);
|
|
});
|
|
}
|
|
if (options.length !== 0) {
|
|
var optgroup = Object.assign({}, optgroupObj);
|
|
optgroup.options = options;
|
|
return optgroup;
|
|
}
|
|
}
|
|
if (obj.hasOwnProperty('text')) {
|
|
var optionObj = obj;
|
|
if (searchFilter(optionObj, search)) {
|
|
return obj;
|
|
}
|
|
}
|
|
return null;
|
|
});
|
|
this.filtered = filtered.filter(function (info) { return info; });
|
|
};
|
|
return Data;
|
|
}());
|
|
exports.Data = Data;
|
|
function validateData(data) {
|
|
if (!data) {
|
|
console.error('Data must be an array of objects');
|
|
return false;
|
|
}
|
|
var isValid = false;
|
|
var errorCount = 0;
|
|
for (var _i = 0, data_1 = data; _i < data_1.length; _i++) {
|
|
var d = data_1[_i];
|
|
if (d.hasOwnProperty('label')) {
|
|
if (d.hasOwnProperty('options')) {
|
|
var optgroup = d;
|
|
var options = optgroup.options;
|
|
if (options) {
|
|
for (var _a = 0, options_5 = options; _a < options_5.length; _a++) {
|
|
var o = options_5[_a];
|
|
isValid = validateOption(o);
|
|
if (!isValid) {
|
|
errorCount++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
var option = d;
|
|
isValid = validateOption(option);
|
|
if (!isValid) {
|
|
errorCount++;
|
|
}
|
|
}
|
|
}
|
|
return errorCount === 0;
|
|
}
|
|
exports.validateData = validateData;
|
|
function validateOption(option) {
|
|
if (option.text === undefined) {
|
|
console.error('Data object option must have at least have a text value. Check object: ' + JSON.stringify(option));
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
exports.validateOption = validateOption;
|
|
|
|
|
|
/***/ }),
|
|
/* 2 */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
exports.__esModule = true;
|
|
var config_1 = __webpack_requireesc_html__(3);
|
|
var select_1 = __webpack_requireesc_html__(4);
|
|
var slim_1 = __webpack_requireesc_html__(5);
|
|
var data_1 = __webpack_requireesc_html__(1);
|
|
var helper_1 = __webpack_requireesc_html__(0);
|
|
var SlimSelect = (function () {
|
|
function SlimSelect(info) {
|
|
var _this = this;
|
|
this.ajax = null;
|
|
this.addable = null;
|
|
this.beforeOnChange = null;
|
|
this.onChange = null;
|
|
this.beforeOpen = null;
|
|
this.afterOpen = null;
|
|
this.beforeClose = null;
|
|
this.afterClose = null;
|
|
this.windowScroll = helper_1.debounce(function (e) {
|
|
if (_this.data.contentOpen) {
|
|
if (helper_1.putContent(_this.slim.content, _this.data.contentPosition, _this.data.contentOpen) === 'above') {
|
|
_this.moveContentAbove();
|
|
}
|
|
else {
|
|
_this.moveContentBelow();
|
|
}
|
|
}
|
|
});
|
|
this.documentClick = function (e) {
|
|
if (e.target && !helper_1.hasClassInTree(e.target, _this.config.id)) {
|
|
_this.close();
|
|
}
|
|
};
|
|
var selectElement = this.validate(info);
|
|
if (selectElement.dataset.ssid) {
|
|
this.destroy(selectElement.dataset.ssid);
|
|
}
|
|
if (info.ajax) {
|
|
this.ajax = info.ajax;
|
|
}
|
|
if (info.addable) {
|
|
this.addable = info.addable;
|
|
}
|
|
this.config = new config_1.Config({
|
|
select: selectElement,
|
|
isAjax: (info.ajax ? true : false),
|
|
showSearch: info.showSearch,
|
|
searchPlaceholder: info.searchPlaceholder,
|
|
searchText: info.searchText,
|
|
searchingText: info.searchingText,
|
|
searchFocus: info.searchFocus,
|
|
searchHighlight: info.searchHighlight,
|
|
searchFilter: info.searchFilter,
|
|
closeOnSelect: info.closeOnSelect,
|
|
showContent: info.showContent,
|
|
placeholderText: info.placeholder,
|
|
allowDeselect: info.allowDeselect,
|
|
allowDeselectOption: info.allowDeselectOption,
|
|
hideSelectedOption: info.hideSelectedOption,
|
|
deselectLabel: info.deselectLabel,
|
|
isEnabled: info.isEnabled,
|
|
valuesUseText: info.valuesUseText,
|
|
showOptionTooltips: info.showOptionTooltips,
|
|
selectByGroup: info.selectByGroup,
|
|
limit: info.limit,
|
|
timeoutDelay: info.timeoutDelay,
|
|
addToBody: info.addToBody
|
|
});
|
|
this.select = new select_1.Select({
|
|
select: selectElement,
|
|
main: this
|
|
});
|
|
this.data = new data_1.Data({ main: this });
|
|
this.slim = new slim_1.Slim({ main: this });
|
|
if (this.select.element.parentNode) {
|
|
this.select.element.parentNode.insertBefore(this.slim.container, this.select.element.nextSibling);
|
|
}
|
|
if (info.data) {
|
|
this.setData(info.data);
|
|
}
|
|
else {
|
|
this.render();
|
|
}
|
|
document.addEventListener('click', this.documentClick);
|
|
if (this.config.showContent === 'auto') {
|
|
window.addEventListener('scroll', this.windowScroll, false);
|
|
}
|
|
if (info.beforeOnChange) {
|
|
this.beforeOnChange = info.beforeOnChange;
|
|
}
|
|
if (info.onChange) {
|
|
this.onChange = info.onChange;
|
|
}
|
|
if (info.beforeOpen) {
|
|
this.beforeOpen = info.beforeOpen;
|
|
}
|
|
if (info.afterOpen) {
|
|
this.afterOpen = info.afterOpen;
|
|
}
|
|
if (info.beforeClose) {
|
|
this.beforeClose = info.beforeClose;
|
|
}
|
|
if (info.afterClose) {
|
|
this.afterClose = info.afterClose;
|
|
}
|
|
if (!this.config.isEnabled) {
|
|
this.disable();
|
|
}
|
|
}
|
|
SlimSelect.prototype.validate = function (info) {
|
|
var select = (typeof info.select === 'string' ? document.querySelector(info.select) : info.select);
|
|
if (!select) {
|
|
throw new Error('Could not find select element');
|
|
}
|
|
if (select.tagName !== 'SELECT') {
|
|
throw new Error('Element isnt of type select');
|
|
}
|
|
return select;
|
|
};
|
|
SlimSelect.prototype.selected = function () {
|
|
if (this.config.isMultiple) {
|
|
var selected = this.data.getSelected();
|
|
var outputSelected = [];
|
|
for (var _i = 0, selected_1 = selected; _i < selected_1.length; _i++) {
|
|
var s = selected_1[_i];
|
|
outputSelected.push(s.value);
|
|
}
|
|
return outputSelected;
|
|
}
|
|
else {
|
|
var selected = this.data.getSelected();
|
|
return (selected ? selected.value : '');
|
|
}
|
|
};
|
|
SlimSelect.prototype.set = function (value, type, close, render) {
|
|
if (type === void 0) { type = 'value'; }
|
|
if (close === void 0) { close = true; }
|
|
if (render === void 0) { render = true; }
|
|
if (this.config.isMultiple && !Array.isArray(value)) {
|
|
this.data.addToSelected(value, type);
|
|
}
|
|
else {
|
|
this.data.setSelected(value, type);
|
|
}
|
|
this.select.setValue();
|
|
this.data.onDataChange();
|
|
this.render();
|
|
if (close) {
|
|
this.close();
|
|
}
|
|
};
|
|
SlimSelect.prototype.setSelected = function (value, type, close, render) {
|
|
if (type === void 0) { type = 'value'; }
|
|
if (close === void 0) { close = true; }
|
|
if (render === void 0) { render = true; }
|
|
this.set(value, type, close, render);
|
|
};
|
|
SlimSelect.prototype.setData = function (data) {
|
|
var isValid = data_1.validateData(data);
|
|
if (!isValid) {
|
|
console.error('Validation problem on: #' + this.select.element.id);
|
|
return;
|
|
}
|
|
var newData = JSON.parse(JSON.stringify(data));
|
|
var selected = this.data.getSelected();
|
|
for (var i = 0; i < newData.length; i++) {
|
|
if (!newData[i].value && !newData[i].placeholder) {
|
|
newData[i].value = newData[i].text;
|
|
}
|
|
}
|
|
if (this.config.isAjax && selected) {
|
|
if (this.config.isMultiple) {
|
|
var reverseSelected = selected.reverse();
|
|
for (var _i = 0, reverseSelected_1 = reverseSelected; _i < reverseSelected_1.length; _i++) {
|
|
var r = reverseSelected_1[_i];
|
|
newData.unshift(r);
|
|
}
|
|
}
|
|
else {
|
|
newData.unshift(selected);
|
|
for (var i = 0; i < newData.length; i++) {
|
|
if (!newData[i].placeholder && newData[i].value === selected.value && newData[i].text === selected.text) {
|
|
delete newData[i];
|
|
}
|
|
}
|
|
var hasPlaceholder = false;
|
|
for (var i = 0; i < newData.length; i++) {
|
|
if (newData[i].placeholder) {
|
|
hasPlaceholder = true;
|
|
}
|
|
}
|
|
if (!hasPlaceholder) {
|
|
newData.unshift({ text: '', placeholder: true });
|
|
}
|
|
}
|
|
}
|
|
this.select.create(newData);
|
|
this.data.parseSelectData();
|
|
this.data.setSelectedFromSelect();
|
|
};
|
|
SlimSelect.prototype.addData = function (data) {
|
|
var isValid = data_1.validateData([data]);
|
|
if (!isValid) {
|
|
console.error('Validation problem on: #' + this.select.element.id);
|
|
return;
|
|
}
|
|
this.data.add(this.data.newOption(data));
|
|
this.select.create(this.data.data);
|
|
this.data.parseSelectData();
|
|
this.data.setSelectedFromSelect();
|
|
this.render();
|
|
};
|
|
SlimSelect.prototype.open = function () {
|
|
var _this = this;
|
|
if (!this.config.isEnabled) {
|
|
return;
|
|
}
|
|
if (this.data.contentOpen) {
|
|
return;
|
|
}
|
|
if (this.beforeOpen) {
|
|
this.beforeOpen();
|
|
}
|
|
if (this.config.isMultiple && this.slim.multiSelected) {
|
|
this.slim.multiSelected.plus.classList.add('ss-cross');
|
|
}
|
|
else if (this.slim.singleSelected) {
|
|
this.slim.singleSelected.arrowIcon.arrow.classList.remove('arrow-down');
|
|
this.slim.singleSelected.arrowIcon.arrow.classList.add('arrow-up');
|
|
}
|
|
this.slim[(this.config.isMultiple ? 'multiSelected' : 'singleSelected')].container.classList.add((this.data.contentPosition === 'above' ? this.config.openAbove : this.config.openBelow));
|
|
if (this.config.addToBody) {
|
|
var containerRect = this.slim.container.getBoundingClientRect();
|
|
this.slim.content.style.top = (containerRect.top + containerRect.height + window.scrollY) + 'px';
|
|
this.slim.content.style.left = (containerRect.left + window.scrollX) + 'px';
|
|
this.slim.content.style.width = containerRect.width + 'px';
|
|
}
|
|
this.slim.content.classList.add(this.config.open);
|
|
if (this.config.showContent.toLowerCase() === 'up') {
|
|
this.moveContentAbove();
|
|
}
|
|
else if (this.config.showContent.toLowerCase() === 'down') {
|
|
this.moveContentBelow();
|
|
}
|
|
else {
|
|
if (helper_1.putContent(this.slim.content, this.data.contentPosition, this.data.contentOpen) === 'above') {
|
|
this.moveContentAbove();
|
|
}
|
|
else {
|
|
this.moveContentBelow();
|
|
}
|
|
}
|
|
if (!this.config.isMultiple) {
|
|
var selected = this.data.getSelected();
|
|
if (selected) {
|
|
var selectedId = selected.id;
|
|
var selectedOption = this.slim.list.querySelector('[data-id="' + selectedId + '"]');
|
|
if (selectedOption) {
|
|
helper_1.ensureElementInView(this.slim.list, selectedOption);
|
|
}
|
|
}
|
|
}
|
|
setTimeout(function () {
|
|
_this.data.contentOpen = true;
|
|
if (_this.config.searchFocus) {
|
|
_this.slim.search.input.focus();
|
|
}
|
|
if (_this.afterOpen) {
|
|
_this.afterOpen();
|
|
}
|
|
}, this.config.timeoutDelay);
|
|
};
|
|
SlimSelect.prototype.close = function () {
|
|
var _this = this;
|
|
if (!this.data.contentOpen) {
|
|
return;
|
|
}
|
|
if (this.beforeClose) {
|
|
this.beforeClose();
|
|
}
|
|
if (this.config.isMultiple && this.slim.multiSelected) {
|
|
this.slim.multiSelected.container.classList.remove(this.config.openAbove);
|
|
this.slim.multiSelected.container.classList.remove(this.config.openBelow);
|
|
this.slim.multiSelected.plus.classList.remove('ss-cross');
|
|
}
|
|
else if (this.slim.singleSelected) {
|
|
this.slim.singleSelected.container.classList.remove(this.config.openAbove);
|
|
this.slim.singleSelected.container.classList.remove(this.config.openBelow);
|
|
this.slim.singleSelected.arrowIcon.arrow.classList.add('arrow-down');
|
|
this.slim.singleSelected.arrowIcon.arrow.classList.remove('arrow-up');
|
|
}
|
|
this.slim.content.classList.remove(this.config.open);
|
|
this.data.contentOpen = false;
|
|
this.search('');
|
|
setTimeout(function () {
|
|
_this.slim.content.removeAttribute('style');
|
|
_this.data.contentPosition = 'below';
|
|
if (_this.config.isMultiple && _this.slim.multiSelected) {
|
|
_this.slim.multiSelected.container.classList.remove(_this.config.openAbove);
|
|
_this.slim.multiSelected.container.classList.remove(_this.config.openBelow);
|
|
}
|
|
else if (_this.slim.singleSelected) {
|
|
_this.slim.singleSelected.container.classList.remove(_this.config.openAbove);
|
|
_this.slim.singleSelected.container.classList.remove(_this.config.openBelow);
|
|
}
|
|
_this.slim.search.input.blur();
|
|
if (_this.afterClose) {
|
|
_this.afterClose();
|
|
}
|
|
}, this.config.timeoutDelay);
|
|
};
|
|
SlimSelect.prototype.moveContentAbove = function () {
|
|
var selectHeight = 0;
|
|
if (this.config.isMultiple && this.slim.multiSelected) {
|
|
selectHeight = this.slim.multiSelected.container.offsetHeight;
|
|
}
|
|
else if (this.slim.singleSelected) {
|
|
selectHeight = this.slim.singleSelected.container.offsetHeight;
|
|
}
|
|
var contentHeight = this.slim.content.offsetHeight;
|
|
var height = selectHeight + contentHeight - 1;
|
|
this.slim.content.style.margin = '-' + height + 'px 0 0 0';
|
|
this.slim.content.style.height = (height - selectHeight + 1) + 'px';
|
|
this.slim.content.style.transformOrigin = 'center bottom';
|
|
this.data.contentPosition = 'above';
|
|
if (this.config.isMultiple && this.slim.multiSelected) {
|
|
this.slim.multiSelected.container.classList.remove(this.config.openBelow);
|
|
this.slim.multiSelected.container.classList.add(this.config.openAbove);
|
|
}
|
|
else if (this.slim.singleSelected) {
|
|
this.slim.singleSelected.container.classList.remove(this.config.openBelow);
|
|
this.slim.singleSelected.container.classList.add(this.config.openAbove);
|
|
}
|
|
};
|
|
SlimSelect.prototype.moveContentBelow = function () {
|
|
this.data.contentPosition = 'below';
|
|
if (this.config.isMultiple && this.slim.multiSelected) {
|
|
this.slim.multiSelected.container.classList.remove(this.config.openAbove);
|
|
this.slim.multiSelected.container.classList.add(this.config.openBelow);
|
|
}
|
|
else if (this.slim.singleSelected) {
|
|
this.slim.singleSelected.container.classList.remove(this.config.openAbove);
|
|
this.slim.singleSelected.container.classList.add(this.config.openBelow);
|
|
}
|
|
};
|
|
SlimSelect.prototype.enable = function () {
|
|
this.config.isEnabled = true;
|
|
if (this.config.isMultiple && this.slim.multiSelected) {
|
|
this.slim.multiSelected.container.classList.remove(this.config.disabled);
|
|
}
|
|
else if (this.slim.singleSelected) {
|
|
this.slim.singleSelected.container.classList.remove(this.config.disabled);
|
|
}
|
|
this.select.triggerMutationObserver = false;
|
|
this.select.element.disabled = false;
|
|
this.slim.search.input.disabled = false;
|
|
this.select.triggerMutationObserver = true;
|
|
};
|
|
SlimSelect.prototype.disable = function () {
|
|
this.config.isEnabled = false;
|
|
if (this.config.isMultiple && this.slim.multiSelected) {
|
|
this.slim.multiSelected.container.classList.add(this.config.disabled);
|
|
}
|
|
else if (this.slim.singleSelected) {
|
|
this.slim.singleSelected.container.classList.add(this.config.disabled);
|
|
}
|
|
this.select.triggerMutationObserver = false;
|
|
this.select.element.disabled = true;
|
|
this.slim.search.input.disabled = true;
|
|
this.select.triggerMutationObserver = true;
|
|
};
|
|
SlimSelect.prototype.search = function (value) {
|
|
if (this.data.searchValue === value) {
|
|
return;
|
|
}
|
|
this.slim.search.input.value = value;
|
|
if (this.config.isAjax) {
|
|
var master_1 = this;
|
|
this.config.isSearching = true;
|
|
this.render();
|
|
if (this.ajax) {
|
|
this.ajax(value, function (info) {
|
|
master_1.config.isSearching = false;
|
|
if (Array.isArray(info)) {
|
|
info.unshift({ text: '', placeholder: true });
|
|
master_1.setData(info);
|
|
master_1.data.search(value);
|
|
master_1.render();
|
|
}
|
|
else if (typeof info === 'string') {
|
|
master_1.slim.options(info);
|
|
}
|
|
else {
|
|
master_1.render();
|
|
}
|
|
});
|
|
}
|
|
}
|
|
else {
|
|
this.data.search(value);
|
|
this.render();
|
|
}
|
|
};
|
|
SlimSelect.prototype.setSearchText = function (text) {
|
|
this.config.searchText = text;
|
|
};
|
|
SlimSelect.prototype.render = function () {
|
|
if (this.config.isMultiple) {
|
|
this.slim.values();
|
|
}
|
|
else {
|
|
this.slim.placeholder();
|
|
this.slim.deselect();
|
|
}
|
|
this.slim.options();
|
|
};
|
|
SlimSelect.prototype.destroy = function (id) {
|
|
if (id === void 0) { id = null; }
|
|
var slim = (id ? document.querySelector('.' + id + '.ss-main') : this.slim.container);
|
|
var select = (id ? document.querySelector("[data-ssid=" + id + "]") : this.select.element);
|
|
if (!slim || !select) {
|
|
return;
|
|
}
|
|
document.removeEventListener('click', this.documentClick);
|
|
if (this.config.showContent === 'auto') {
|
|
window.removeEventListener('scroll', this.windowScroll, false);
|
|
}
|
|
select.style.display = '';
|
|
delete select.dataset.ssid;
|
|
var el = select;
|
|
el.slim = null;
|
|
if (slim.parentElement) {
|
|
slim.parentElement.removeChild(slim);
|
|
}
|
|
if (this.config.addToBody) {
|
|
var slimContent = (id ? document.querySelector('.' + id + '.ss-content') : this.slim.content);
|
|
if (!slimContent) {
|
|
return;
|
|
}
|
|
document.body.removeChild(slimContent);
|
|
}
|
|
};
|
|
return SlimSelect;
|
|
}());
|
|
exports["default"] = SlimSelect;
|
|
|
|
|
|
/***/ }),
|
|
/* 3 */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
exports.__esModule = true;
|
|
var Config = (function () {
|
|
function Config(info) {
|
|
this.id = '';
|
|
this.isMultiple = false;
|
|
this.isAjax = false;
|
|
this.isSearching = false;
|
|
this.showSearch = true;
|
|
this.searchFocus = true;
|
|
this.searchHighlight = false;
|
|
this.closeOnSelect = true;
|
|
this.showContent = 'auto';
|
|
this.searchPlaceholder = 'Search';
|
|
this.searchText = 'No Results';
|
|
this.searchingText = 'Searching...';
|
|
this.placeholderText = 'Select Value';
|
|
this.allowDeselect = false;
|
|
this.allowDeselectOption = false;
|
|
this.hideSelectedOption = false;
|
|
this.deselectLabel = 'x';
|
|
this.isEnabled = true;
|
|
this.valuesUseText = false;
|
|
this.showOptionTooltips = false;
|
|
this.selectByGroup = false;
|
|
this.limit = 0;
|
|
this.timeoutDelay = 200;
|
|
this.addToBody = false;
|
|
this.main = 'ss-main';
|
|
this.singleSelected = 'ss-single-selected';
|
|
this.arrow = 'ss-arrow';
|
|
this.multiSelected = 'ss-multi-selected';
|
|
this.add = 'ss-add';
|
|
this.plus = 'ss-plus';
|
|
this.values = 'ss-values';
|
|
this.value = 'ss-value';
|
|
this.valueText = 'ss-value-text';
|
|
this.valueDelete = 'ss-value-delete';
|
|
this.content = 'ss-content';
|
|
this.open = 'ss-open';
|
|
this.openAbove = 'ss-open-above';
|
|
this.openBelow = 'ss-open-below';
|
|
this.search = 'ss-search';
|
|
this.searchHighlighter = 'ss-search-highlight';
|
|
this.addable = 'ss-addable';
|
|
this.list = 'ss-list';
|
|
this.optgroup = 'ss-optgroup';
|
|
this.optgroupLabel = 'ss-optgroup-label';
|
|
this.optgroupLabelSelectable = 'ss-optgroup-label-selectable';
|
|
this.option = 'ss-option';
|
|
this.optionSelected = 'ss-option-selected';
|
|
this.highlighted = 'ss-highlighted';
|
|
this.disabled = 'ss-disabled';
|
|
this.hide = 'ss-hide';
|
|
this.id = 'ss-' + Math.floor(Math.random() * 100000);
|
|
this.style = info.select.style.cssText;
|
|
this["class"] = info.select.className.split(' ');
|
|
this.isMultiple = info.select.multiple;
|
|
this.isAjax = info.isAjax;
|
|
this.showSearch = (info.showSearch === false ? false : true);
|
|
this.searchFocus = (info.searchFocus === false ? false : true);
|
|
this.searchHighlight = (info.searchHighlight === true ? true : false);
|
|
this.closeOnSelect = (info.closeOnSelect === false ? false : true);
|
|
if (info.showContent) {
|
|
this.showContent = info.showContent;
|
|
}
|
|
this.isEnabled = (info.isEnabled === false ? false : true);
|
|
if (info.searchPlaceholder) {
|
|
this.searchPlaceholder = info.searchPlaceholder;
|
|
}
|
|
if (info.searchText) {
|
|
this.searchText = info.searchText;
|
|
}
|
|
if (info.searchingText) {
|
|
this.searchingText = info.searchingText;
|
|
}
|
|
if (info.placeholderText) {
|
|
this.placeholderText = info.placeholderText;
|
|
}
|
|
this.allowDeselect = (info.allowDeselect === true ? true : false);
|
|
this.allowDeselectOption = (info.allowDeselectOption === true ? true : false);
|
|
this.hideSelectedOption = (info.hideSelectedOption === true ? true : false);
|
|
if (info.deselectLabel) {
|
|
this.deselectLabel = info.deselectLabel;
|
|
}
|
|
if (info.valuesUseText) {
|
|
this.valuesUseText = info.valuesUseText;
|
|
}
|
|
if (info.showOptionTooltips) {
|
|
this.showOptionTooltips = info.showOptionTooltips;
|
|
}
|
|
if (info.selectByGroup) {
|
|
this.selectByGroup = info.selectByGroup;
|
|
}
|
|
if (info.limit) {
|
|
this.limit = info.limit;
|
|
}
|
|
if (info.searchFilter) {
|
|
this.searchFilter = info.searchFilter;
|
|
}
|
|
if (info.timeoutDelay != null) {
|
|
this.timeoutDelay = info.timeoutDelay;
|
|
}
|
|
this.addToBody = (info.addToBody === true ? true : false);
|
|
}
|
|
Config.prototype.searchFilter = function (opt, search) {
|
|
return opt.text.toLowerCase().indexOf(search.toLowerCase()) !== -1;
|
|
};
|
|
return Config;
|
|
}());
|
|
exports.Config = Config;
|
|
|
|
|
|
/***/ }),
|
|
/* 4 */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
exports.__esModule = true;
|
|
var helper_1 = __webpack_requireesc_html__(0);
|
|
var Select = (function () {
|
|
function Select(info) {
|
|
this.triggerMutationObserver = true;
|
|
this.element = info.select;
|
|
this.main = info.main;
|
|
if (this.element.disabled) {
|
|
this.main.config.isEnabled = false;
|
|
}
|
|
this.addAttributes();
|
|
this.addEventListeners();
|
|
this.mutationObserver = null;
|
|
this.addMutationObserver();
|
|
var el = this.element;
|
|
el.slim = info.main;
|
|
}
|
|
Select.prototype.setValue = function () {
|
|
if (!this.main.data.getSelected()) {
|
|
return;
|
|
}
|
|
if (this.main.config.isMultiple) {
|
|
var selected = this.main.data.getSelected();
|
|
var options = this.element.options;
|
|
for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {
|
|
var o = options_1[_i];
|
|
o.selected = false;
|
|
for (var _a = 0, selected_1 = selected; _a < selected_1.length; _a++) {
|
|
var s = selected_1[_a];
|
|
if (s.value === o.value) {
|
|
o.selected = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
var selected = this.main.data.getSelected();
|
|
this.element.value = (selected ? selected.value : '');
|
|
}
|
|
this.main.data.isOnChangeEnabled = false;
|
|
this.element.dispatchEvent(new CustomEvent('change', { bubbles: true }));
|
|
this.main.data.isOnChangeEnabled = true;
|
|
};
|
|
Select.prototype.addAttributes = function () {
|
|
this.element.tabIndex = -1;
|
|
this.element.style.display = 'none';
|
|
this.element.dataset.ssid = this.main.config.id;
|
|
};
|
|
Select.prototype.addEventListeners = function () {
|
|
var _this = this;
|
|
this.element.addEventListener('change', function (e) {
|
|
_this.main.data.setSelectedFromSelect();
|
|
_this.main.render();
|
|
});
|
|
};
|
|
Select.prototype.addMutationObserver = function () {
|
|
var _this = this;
|
|
if (this.main.config.isAjax) {
|
|
return;
|
|
}
|
|
this.mutationObserver = new MutationObserver(function (mutations) {
|
|
if (!_this.triggerMutationObserver) {
|
|
return;
|
|
}
|
|
_this.main.data.parseSelectData();
|
|
_this.main.data.setSelectedFromSelect();
|
|
_this.main.render();
|
|
mutations.forEach(function (mutation) {
|
|
if (mutation.attributeName === 'class') {
|
|
_this.main.slim.updateContainerDivClass(_this.main.slim.container);
|
|
}
|
|
});
|
|
});
|
|
this.observeMutationObserver();
|
|
};
|
|
Select.prototype.observeMutationObserver = function () {
|
|
if (!this.mutationObserver) {
|
|
return;
|
|
}
|
|
this.mutationObserver.observe(this.element, {
|
|
attributes: true,
|
|
childList: true,
|
|
characterData: true
|
|
});
|
|
};
|
|
Select.prototype.disconnectMutationObserver = function () {
|
|
if (this.mutationObserver) {
|
|
this.mutationObserver.disconnect();
|
|
}
|
|
};
|
|
Select.prototype.create = function (data) {
|
|
this.element.innerHTML = '';
|
|
for (var _i = 0, data_1 = data; _i < data_1.length; _i++) {
|
|
var d = data_1[_i];
|
|
if (d.hasOwnProperty('options')) {
|
|
var optgroupObject = d;
|
|
var optgroupEl = document.createElement('optgroup');
|
|
optgroupEl.label = optgroupObject.label;
|
|
if (optgroupObject.options) {
|
|
for (var _a = 0, _b = optgroupObject.options; _a < _b.length; _a++) {
|
|
var oo = _b[_a];
|
|
optgroupEl.appendChild(this.createOption(oo));
|
|
}
|
|
}
|
|
this.element.appendChild(optgroupEl);
|
|
}
|
|
else {
|
|
this.element.appendChild(this.createOption(d));
|
|
}
|
|
}
|
|
};
|
|
Select.prototype.createOption = function (info) {
|
|
var optionEl = document.createElement('option');
|
|
optionEl.value = info.value !== '' ? info.value : info.text;
|
|
optionEl.innerHTML = info.innerHTML || info.text;
|
|
if (info.selected) {
|
|
optionEl.selected = info.selected;
|
|
}
|
|
if (info.display === false) {
|
|
optionEl.style.display = 'none';
|
|
}
|
|
if (info.disabled) {
|
|
optionEl.disabled = true;
|
|
}
|
|
if (info.placeholder) {
|
|
optionEl.setAttribute('data-placeholder', 'true');
|
|
}
|
|
if (info.mandatory) {
|
|
optionEl.setAttribute('data-mandatory', 'true');
|
|
}
|
|
if (info["class"]) {
|
|
info["class"].split(' ').forEach(function (optionClass) {
|
|
optionEl.classList.add(optionClass);
|
|
});
|
|
}
|
|
if (info.data && typeof info.data === 'object') {
|
|
Object.keys(info.data).forEach(function (key) {
|
|
optionEl.setAttribute('data-' + helper_1.kebabCase(key), info.data[key]);
|
|
});
|
|
}
|
|
return optionEl;
|
|
};
|
|
return Select;
|
|
}());
|
|
exports.Select = Select;
|
|
|
|
|
|
/***/ }),
|
|
/* 5 */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
|
|
exports.__esModule = true;
|
|
var helper_1 = __webpack_requireesc_html__(0);
|
|
var data_1 = __webpack_requireesc_html__(1);
|
|
var Slim = (function () {
|
|
function Slim(info) {
|
|
this.main = info.main;
|
|
this.container = this.containerDiv();
|
|
this.content = this.contentDiv();
|
|
this.search = this.searchDiv();
|
|
this.list = this.listDiv();
|
|
this.options();
|
|
this.singleSelected = null;
|
|
this.multiSelected = null;
|
|
if (this.main.config.isMultiple) {
|
|
this.multiSelected = this.multiSelectedDiv();
|
|
if (this.multiSelected) {
|
|
this.container.appendChild(this.multiSelected.container);
|
|
}
|
|
}
|
|
else {
|
|
this.singleSelected = this.singleSelectedDiv();
|
|
this.container.appendChild(this.singleSelected.container);
|
|
}
|
|
if (this.main.config.addToBody) {
|
|
this.content.classList.add(this.main.config.id);
|
|
document.body.appendChild(this.content);
|
|
}
|
|
else {
|
|
this.container.appendChild(this.content);
|
|
}
|
|
this.content.appendChild(this.search.container);
|
|
this.content.appendChild(this.list);
|
|
}
|
|
Slim.prototype.containerDiv = function () {
|
|
var container = document.createElement('div');
|
|
container.style.cssText = this.main.config.style;
|
|
this.updateContainerDivClass(container);
|
|
return container;
|
|
};
|
|
Slim.prototype.updateContainerDivClass = function (container) {
|
|
this.main.config["class"] = this.main.select.element.className.split(' ');
|
|
container.className = '';
|
|
container.classList.add(this.main.config.id);
|
|
container.classList.add(this.main.config.main);
|
|
for (var _i = 0, _a = this.main.config["class"]; _i < _a.length; _i++) {
|
|
var c = _a[_i];
|
|
if (c.trim() !== '') {
|
|
container.classList.add(c);
|
|
}
|
|
}
|
|
};
|
|
Slim.prototype.singleSelectedDiv = function () {
|
|
var _this = this;
|
|
var container = document.createElement('div');
|
|
container.classList.add(this.main.config.singleSelected);
|
|
var placeholder = document.createElement('span');
|
|
placeholder.classList.add('placeholder');
|
|
container.appendChild(placeholder);
|
|
var deselect = document.createElement('span');
|
|
deselect.innerHTML = this.main.config.deselectLabel;
|
|
deselect.classList.add('ss-deselect');
|
|
deselect.onclick = function (e) {
|
|
e.stopPropagation();
|
|
if (!_this.main.config.isEnabled) {
|
|
return;
|
|
}
|
|
_this.main.set('');
|
|
};
|
|
container.appendChild(deselect);
|
|
var arrowContainer = document.createElement('span');
|
|
arrowContainer.classList.add(this.main.config.arrow);
|
|
var arrowIcon = document.createElement('span');
|
|
arrowIcon.classList.add('arrow-down');
|
|
arrowContainer.appendChild(arrowIcon);
|
|
container.appendChild(arrowContainer);
|
|
container.onclick = function () {
|
|
if (!_this.main.config.isEnabled) {
|
|
return;
|
|
}
|
|
_this.main.data.contentOpen ? _this.main.close() : _this.main.open();
|
|
};
|
|
return {
|
|
container: container,
|
|
placeholder: placeholder,
|
|
deselect: deselect,
|
|
arrowIcon: {
|
|
container: arrowContainer,
|
|
arrow: arrowIcon
|
|
}
|
|
};
|
|
};
|
|
Slim.prototype.placeholder = function () {
|
|
var selected = this.main.data.getSelected();
|
|
if (selected === null || (selected && selected.placeholder)) {
|
|
var placeholder = document.createElement('span');
|
|
placeholder.classList.add(this.main.config.disabled);
|
|
placeholder.innerHTML = this.main.config.placeholderText;
|
|
if (this.singleSelected) {
|
|
this.singleSelected.placeholder.innerHTML = placeholder.outerHTML;
|
|
}
|
|
}
|
|
else {
|
|
var selectedValue = '';
|
|
if (selected) {
|
|
selectedValue = selected.innerHTML && this.main.config.valuesUseText !== true ? selected.innerHTML : selected.text;
|
|
}
|
|
if (this.singleSelected) {
|
|
this.singleSelected.placeholder.innerHTML = (selected ? selectedValue : '');
|
|
}
|
|
}
|
|
};
|
|
Slim.prototype.deselect = function () {
|
|
if (this.singleSelected) {
|
|
if (!this.main.config.allowDeselect) {
|
|
this.singleSelected.deselect.classList.add('ss-hide');
|
|
return;
|
|
}
|
|
if (this.main.selected() === '') {
|
|
this.singleSelected.deselect.classList.add('ss-hide');
|
|
}
|
|
else {
|
|
this.singleSelected.deselect.classList.remove('ss-hide');
|
|
}
|
|
}
|
|
};
|
|
Slim.prototype.multiSelectedDiv = function () {
|
|
var _this = this;
|
|
var container = document.createElement('div');
|
|
container.classList.add(this.main.config.multiSelected);
|
|
var values = document.createElement('div');
|
|
values.classList.add(this.main.config.values);
|
|
container.appendChild(values);
|
|
var add = document.createElement('div');
|
|
add.classList.add(this.main.config.add);
|
|
var plus = document.createElement('span');
|
|
plus.classList.add(this.main.config.plus);
|
|
plus.onclick = function (e) {
|
|
if (_this.main.data.contentOpen) {
|
|
_this.main.close();
|
|
e.stopPropagation();
|
|
}
|
|
};
|
|
add.appendChild(plus);
|
|
container.appendChild(add);
|
|
container.onclick = function (e) {
|
|
if (!_this.main.config.isEnabled) {
|
|
return;
|
|
}
|
|
var target = e.target;
|
|
if (!target.classList.contains(_this.main.config.valueDelete)) {
|
|
_this.main.data.contentOpen ? _this.main.close() : _this.main.open();
|
|
}
|
|
};
|
|
return {
|
|
container: container,
|
|
values: values,
|
|
add: add,
|
|
plus: plus
|
|
};
|
|
};
|
|
Slim.prototype.values = function () {
|
|
if (!this.multiSelected) {
|
|
return;
|
|
}
|
|
var currentNodes = this.multiSelected.values.childNodes;
|
|
var selected = this.main.data.getSelected();
|
|
var exists;
|
|
var nodesToRemove = [];
|
|
for (var _i = 0, currentNodes_1 = currentNodes; _i < currentNodes_1.length; _i++) {
|
|
var c = currentNodes_1[_i];
|
|
exists = true;
|
|
for (var _a = 0, selected_1 = selected; _a < selected_1.length; _a++) {
|
|
var s = selected_1[_a];
|
|
if (String(s.id) === String(c.dataset.id)) {
|
|
exists = false;
|
|
}
|
|
}
|
|
if (exists) {
|
|
nodesToRemove.push(c);
|
|
}
|
|
}
|
|
for (var _b = 0, nodesToRemove_1 = nodesToRemove; _b < nodesToRemove_1.length; _b++) {
|
|
var n = nodesToRemove_1[_b];
|
|
n.classList.add('ss-out');
|
|
this.multiSelected.values.removeChild(n);
|
|
}
|
|
currentNodes = this.multiSelected.values.childNodes;
|
|
for (var s = 0; s < selected.length; s++) {
|
|
exists = false;
|
|
for (var _c = 0, currentNodes_2 = currentNodes; _c < currentNodes_2.length; _c++) {
|
|
var c = currentNodes_2[_c];
|
|
if (String(selected[s].id) === String(c.dataset.id)) {
|
|
exists = true;
|
|
}
|
|
}
|
|
if (!exists) {
|
|
if (currentNodes.length === 0 || !HTMLElement.prototype.insertAdjacentElement) {
|
|
this.multiSelected.values.appendChild(this.valueDiv(selected[s]));
|
|
}
|
|
else if (s === 0) {
|
|
this.multiSelected.values.insertBefore(this.valueDiv(selected[s]), currentNodes[s]);
|
|
}
|
|
else {
|
|
currentNodes[s - 1].insertAdjacentElement('afterend', this.valueDiv(selected[s]));
|
|
}
|
|
}
|
|
}
|
|
if (selected.length === 0) {
|
|
var placeholder = document.createElement('span');
|
|
placeholder.classList.add(this.main.config.disabled);
|
|
placeholder.innerHTML = this.main.config.placeholderText;
|
|
this.multiSelected.values.innerHTML = placeholder.outerHTML;
|
|
}
|
|
};
|
|
Slim.prototype.valueDiv = function (optionObj) {
|
|
var _this = this;
|
|
var value = document.createElement('div');
|
|
value.classList.add(this.main.config.value);
|
|
value.dataset.id = optionObj.id;
|
|
var text = document.createElement('span');
|
|
text.classList.add(this.main.config.valueText);
|
|
text.innerHTML = (optionObj.innerHTML && this.main.config.valuesUseText !== true ? optionObj.innerHTML : optionObj.text);
|
|
value.appendChild(text);
|
|
if (!optionObj.mandatory) {
|
|
var deleteSpan = document.createElement('span');
|
|
deleteSpan.classList.add(this.main.config.valueDelete);
|
|
deleteSpan.innerHTML = this.main.config.deselectLabel;
|
|
deleteSpan.onclick = function (e) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
var shouldUpdate = false;
|
|
if (!_this.main.beforeOnChange) {
|
|
shouldUpdate = true;
|
|
}
|
|
if (_this.main.beforeOnChange) {
|
|
var selected = _this.main.data.getSelected();
|
|
var currentValues = JSON.parse(JSON.stringify(selected));
|
|
for (var i = 0; i < currentValues.length; i++) {
|
|
if (currentValues[i].id === optionObj.id) {
|
|
currentValues.splice(i, 1);
|
|
}
|
|
}
|
|
var beforeOnchange = _this.main.beforeOnChange(currentValues);
|
|
if (beforeOnchange !== false) {
|
|
shouldUpdate = true;
|
|
}
|
|
}
|
|
if (shouldUpdate) {
|
|
_this.main.data.removeFromSelected(optionObj.id, 'id');
|
|
_this.main.render();
|
|
_this.main.select.setValue();
|
|
_this.main.data.onDataChange();
|
|
}
|
|
};
|
|
value.appendChild(deleteSpan);
|
|
}
|
|
return value;
|
|
};
|
|
Slim.prototype.contentDiv = function () {
|
|
var container = document.createElement('div');
|
|
container.classList.add(this.main.config.content);
|
|
return container;
|
|
};
|
|
Slim.prototype.searchDiv = function () {
|
|
var _this = this;
|
|
var container = document.createElement('div');
|
|
var input = document.createElement('input');
|
|
var addable = document.createElement('div');
|
|
container.classList.add(this.main.config.search);
|
|
var searchReturn = {
|
|
container: container,
|
|
input: input
|
|
};
|
|
if (!this.main.config.showSearch) {
|
|
container.classList.add(this.main.config.hide);
|
|
input.readOnly = true;
|
|
}
|
|
input.type = 'search';
|
|
input.placeholder = this.main.config.searchPlaceholder;
|
|
input.tabIndex = 0;
|
|
input.setAttribute('aria-label', this.main.config.searchPlaceholder);
|
|
input.setAttribute('autocapitalize', 'off');
|
|
input.setAttribute('autocomplete', 'off');
|
|
input.setAttribute('autocorrect', 'off');
|
|
input.onclick = function (e) {
|
|
setTimeout(function () {
|
|
var target = e.target;
|
|
if (target.value === '') {
|
|
_this.main.search('');
|
|
}
|
|
}, 10);
|
|
};
|
|
input.onkeydown = function (e) {
|
|
if (e.key === 'ArrowUp') {
|
|
_this.main.open();
|
|
_this.highlightUp();
|
|
e.preventDefault();
|
|
}
|
|
else if (e.key === 'ArrowDown') {
|
|
_this.main.open();
|
|
_this.highlightDown();
|
|
e.preventDefault();
|
|
}
|
|
else if (e.key === 'Tab') {
|
|
if (!_this.main.data.contentOpen) {
|
|
setTimeout(function () { _this.main.close(); }, _this.main.config.timeoutDelay);
|
|
}
|
|
else {
|
|
_this.main.close();
|
|
}
|
|
}
|
|
else if (e.key === 'Enter') {
|
|
e.preventDefault();
|
|
}
|
|
};
|
|
input.onkeyup = function (e) {
|
|
var target = e.target;
|
|
if (e.key === 'Enter') {
|
|
if (_this.main.addable && e.ctrlKey) {
|
|
addable.click();
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
return;
|
|
}
|
|
var highlighted = _this.list.querySelector('.' + _this.main.config.highlighted);
|
|
if (highlighted) {
|
|
highlighted.click();
|
|
}
|
|
}
|
|
else if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {
|
|
}
|
|
else if (e.key === 'Escape') {
|
|
_this.main.close();
|
|
}
|
|
else {
|
|
if (_this.main.config.showSearch && _this.main.data.contentOpen) {
|
|
_this.main.search(target.value);
|
|
}
|
|
else {
|
|
input.value = '';
|
|
}
|
|
}
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
};
|
|
input.onfocus = function () { _this.main.open(); };
|
|
container.appendChild(input);
|
|
if (this.main.addable) {
|
|
addable.classList.add(this.main.config.addable);
|
|
addable.innerHTML = '+';
|
|
addable.onclick = function (e) {
|
|
if (_this.main.addable) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
var inputValue = _this.search.input.value;
|
|
if (inputValue.trim() === '') {
|
|
_this.search.input.focus();
|
|
return;
|
|
}
|
|
var addableValue = _this.main.addable(inputValue);
|
|
var addableValueStr_1 = '';
|
|
if (!addableValue) {
|
|
return;
|
|
}
|
|
if (typeof addableValue === 'object') {
|
|
var validValue = data_1.validateOption(addableValue);
|
|
if (validValue) {
|
|
_this.main.addData(addableValue);
|
|
addableValueStr_1 = (addableValue.value ? addableValue.value : addableValue.text);
|
|
}
|
|
}
|
|
else {
|
|
_this.main.addData(_this.main.data.newOption({
|
|
text: addableValue,
|
|
value: addableValue
|
|
}));
|
|
addableValueStr_1 = addableValue;
|
|
}
|
|
_this.main.search('');
|
|
setTimeout(function () {
|
|
_this.main.set(addableValueStr_1, 'value', false, false);
|
|
}, 100);
|
|
if (_this.main.config.closeOnSelect) {
|
|
setTimeout(function () {
|
|
_this.main.close();
|
|
}, 100);
|
|
}
|
|
}
|
|
};
|
|
container.appendChild(addable);
|
|
searchReturn.addable = addable;
|
|
}
|
|
return searchReturn;
|
|
};
|
|
Slim.prototype.highlightUp = function () {
|
|
var highlighted = this.list.querySelector('.' + this.main.config.highlighted);
|
|
var prev = null;
|
|
if (highlighted) {
|
|
prev = highlighted.previousSibling;
|
|
while (prev !== null) {
|
|
if (prev.classList.contains(this.main.config.disabled)) {
|
|
prev = prev.previousSibling;
|
|
continue;
|
|
}
|
|
else {
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
var allOptions = this.list.querySelectorAll('.' + this.main.config.option + ':not(.' + this.main.config.disabled + ')');
|
|
prev = allOptions[allOptions.length - 1];
|
|
}
|
|
if (prev && prev.classList.contains(this.main.config.optgroupLabel)) {
|
|
prev = null;
|
|
}
|
|
if (prev === null) {
|
|
var parent_1 = highlighted.parentNode;
|
|
if (parent_1.classList.contains(this.main.config.optgroup)) {
|
|
if (parent_1.previousSibling) {
|
|
var prevNodes = parent_1.previousSibling.querySelectorAll('.' + this.main.config.option + ':not(.' + this.main.config.disabled + ')');
|
|
if (prevNodes.length) {
|
|
prev = prevNodes[prevNodes.length - 1];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (prev) {
|
|
if (highlighted) {
|
|
highlighted.classList.remove(this.main.config.highlighted);
|
|
}
|
|
prev.classList.add(this.main.config.highlighted);
|
|
helper_1.ensureElementInView(this.list, prev);
|
|
}
|
|
};
|
|
Slim.prototype.highlightDown = function () {
|
|
var highlighted = this.list.querySelector('.' + this.main.config.highlighted);
|
|
var next = null;
|
|
if (highlighted) {
|
|
next = highlighted.nextSibling;
|
|
while (next !== null) {
|
|
if (next.classList.contains(this.main.config.disabled)) {
|
|
next = next.nextSibling;
|
|
continue;
|
|
}
|
|
else {
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
next = this.list.querySelector('.' + this.main.config.option + ':not(.' + this.main.config.disabled + ')');
|
|
}
|
|
if (next === null && highlighted !== null) {
|
|
var parent_2 = highlighted.parentNode;
|
|
if (parent_2.classList.contains(this.main.config.optgroup)) {
|
|
if (parent_2.nextSibling) {
|
|
var sibling = parent_2.nextSibling;
|
|
next = sibling.querySelector('.' + this.main.config.option + ':not(.' + this.main.config.disabled + ')');
|
|
}
|
|
}
|
|
}
|
|
if (next) {
|
|
if (highlighted) {
|
|
highlighted.classList.remove(this.main.config.highlighted);
|
|
}
|
|
next.classList.add(this.main.config.highlighted);
|
|
helper_1.ensureElementInView(this.list, next);
|
|
}
|
|
};
|
|
Slim.prototype.listDiv = function () {
|
|
var list = document.createElement('div');
|
|
list.classList.add(this.main.config.list);
|
|
return list;
|
|
};
|
|
Slim.prototype.options = function (content) {
|
|
if (content === void 0) { content = ''; }
|
|
var data = this.main.data.filtered || this.main.data.data;
|
|
this.list.innerHTML = '';
|
|
if (content !== '') {
|
|
var searching = document.createElement('div');
|
|
searching.classList.add(this.main.config.option);
|
|
searching.classList.add(this.main.config.disabled);
|
|
searching.innerHTML = content;
|
|
this.list.appendChild(searching);
|
|
return;
|
|
}
|
|
if (this.main.config.isAjax && this.main.config.isSearching) {
|
|
var searching = document.createElement('div');
|
|
searching.classList.add(this.main.config.option);
|
|
searching.classList.add(this.main.config.disabled);
|
|
searching.innerHTML = this.main.config.searchingText;
|
|
this.list.appendChild(searching);
|
|
return;
|
|
}
|
|
if (data.length === 0) {
|
|
var noResults = document.createElement('div');
|
|
noResults.classList.add(this.main.config.option);
|
|
noResults.classList.add(this.main.config.disabled);
|
|
noResults.innerHTML = this.main.config.searchText;
|
|
this.list.appendChild(noResults);
|
|
return;
|
|
}
|
|
var _loop_1 = function (d) {
|
|
if (d.hasOwnProperty('label')) {
|
|
var item = d;
|
|
var optgroupEl_1 = document.createElement('div');
|
|
optgroupEl_1.classList.add(this_1.main.config.optgroup);
|
|
var optgroupLabel = document.createElement('div');
|
|
optgroupLabel.classList.add(this_1.main.config.optgroupLabel);
|
|
if (this_1.main.config.selectByGroup && this_1.main.config.isMultiple) {
|
|
optgroupLabel.classList.add(this_1.main.config.optgroupLabelSelectable);
|
|
}
|
|
optgroupLabel.innerHTML = item.label;
|
|
optgroupEl_1.appendChild(optgroupLabel);
|
|
var options = item.options;
|
|
if (options) {
|
|
for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {
|
|
var o = options_1[_i];
|
|
optgroupEl_1.appendChild(this_1.option(o));
|
|
}
|
|
if (this_1.main.config.selectByGroup && this_1.main.config.isMultiple) {
|
|
var master_1 = this_1;
|
|
optgroupLabel.addEventListener('click', function (e) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
for (var _i = 0, _a = optgroupEl_1.children; _i < _a.length; _i++) {
|
|
var childEl = _a[_i];
|
|
if (childEl.className.indexOf(master_1.main.config.option) !== -1) {
|
|
childEl.click();
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}
|
|
this_1.list.appendChild(optgroupEl_1);
|
|
}
|
|
else {
|
|
this_1.list.appendChild(this_1.option(d));
|
|
}
|
|
};
|
|
var this_1 = this;
|
|
for (var _i = 0, data_2 = data; _i < data_2.length; _i++) {
|
|
var d = data_2[_i];
|
|
_loop_1(d);
|
|
}
|
|
};
|
|
Slim.prototype.option = function (data) {
|
|
if (data.placeholder) {
|
|
var placeholder = document.createElement('div');
|
|
placeholder.classList.add(this.main.config.option);
|
|
placeholder.classList.add(this.main.config.hide);
|
|
return placeholder;
|
|
}
|
|
var optionEl = document.createElement('div');
|
|
optionEl.classList.add(this.main.config.option);
|
|
if (data["class"]) {
|
|
data["class"].split(' ').forEach(function (dataClass) {
|
|
optionEl.classList.add(dataClass);
|
|
});
|
|
}
|
|
if (data.style) {
|
|
optionEl.style.cssText = data.style;
|
|
}
|
|
var selected = this.main.data.getSelected();
|
|
optionEl.dataset.id = data.id;
|
|
if (this.main.config.searchHighlight && this.main.slim && data.innerHTML && this.main.slim.search.input.value.trim() !== '') {
|
|
optionEl.innerHTML = helper_1.highlight(data.innerHTML, this.main.slim.search.input.value, this.main.config.searchHighlighter);
|
|
}
|
|
else if (data.innerHTML) {
|
|
optionEl.innerHTML = data.innerHTML;
|
|
}
|
|
if (this.main.config.showOptionTooltips && optionEl.textContent) {
|
|
optionEl.setAttribute('title', optionEl.textContent);
|
|
}
|
|
var master = this;
|
|
optionEl.addEventListener('click', function (e) {
|
|
e.preventDefault();
|
|
e.stopPropagation();
|
|
var element = this;
|
|
var elementID = element.dataset.id;
|
|
if (data.selected === true && master.main.config.allowDeselectOption) {
|
|
var shouldUpdate = false;
|
|
if (!master.main.beforeOnChange || !master.main.config.isMultiple) {
|
|
shouldUpdate = true;
|
|
}
|
|
if (master.main.beforeOnChange && master.main.config.isMultiple) {
|
|
var selectedValues = master.main.data.getSelected();
|
|
var currentValues = JSON.parse(JSON.stringify(selectedValues));
|
|
for (var i = 0; i < currentValues.length; i++) {
|
|
if (currentValues[i].id === elementID) {
|
|
currentValues.splice(i, 1);
|
|
}
|
|
}
|
|
var beforeOnchange = master.main.beforeOnChange(currentValues);
|
|
if (beforeOnchange !== false) {
|
|
shouldUpdate = true;
|
|
}
|
|
}
|
|
if (shouldUpdate) {
|
|
if (master.main.config.isMultiple) {
|
|
master.main.data.removeFromSelected(elementID, 'id');
|
|
master.main.render();
|
|
master.main.select.setValue();
|
|
master.main.data.onDataChange();
|
|
}
|
|
else {
|
|
master.main.set('');
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
if (data.disabled || data.selected) {
|
|
return;
|
|
}
|
|
if (master.main.config.limit && Array.isArray(selected) && master.main.config.limit <= selected.length) {
|
|
return;
|
|
}
|
|
if (master.main.beforeOnChange) {
|
|
var value = void 0;
|
|
var objectInfo = JSON.parse(JSON.stringify(master.main.data.getObjectFromData(elementID)));
|
|
objectInfo.selected = true;
|
|
if (master.main.config.isMultiple) {
|
|
value = JSON.parse(JSON.stringify(selected));
|
|
value.push(objectInfo);
|
|
}
|
|
else {
|
|
value = JSON.parse(JSON.stringify(objectInfo));
|
|
}
|
|
var beforeOnchange = master.main.beforeOnChange(value);
|
|
if (beforeOnchange !== false) {
|
|
master.main.set(elementID, 'id', master.main.config.closeOnSelect);
|
|
}
|
|
}
|
|
else {
|
|
master.main.set(elementID, 'id', master.main.config.closeOnSelect);
|
|
}
|
|
}
|
|
});
|
|
var isSelected = selected && helper_1.isValueInArrayOfObjects(selected, 'id', data.id);
|
|
if (data.disabled || isSelected) {
|
|
optionEl.onclick = null;
|
|
if (!master.main.config.allowDeselectOption) {
|
|
optionEl.classList.add(this.main.config.disabled);
|
|
}
|
|
if (master.main.config.hideSelectedOption) {
|
|
optionEl.classList.add(this.main.config.hide);
|
|
}
|
|
}
|
|
if (isSelected) {
|
|
optionEl.classList.add(this.main.config.optionSelected);
|
|
}
|
|
else {
|
|
optionEl.classList.remove(this.main.config.optionSelected);
|
|
}
|
|
return optionEl;
|
|
};
|
|
return Slim;
|
|
}());
|
|
exports.Slim = Slim;
|
|
|
|
|
|
/***/ })
|
|
/******/ ])["default"];
|
|
}); |