'use strict';
(function ($) {
var toggleEntryFromArray = function toggleEntryFromArray(entriesArray, entryIndex, select) {
var index = entriesArray.indexOf(entryIndex);
var notAdded = index === -1;
if (notAdded) {
entriesArray.push(entryIndex);
} else {
entriesArray.splice(index, 1);
}
select.siblings('ul.dropdown-content').find('li:not(.optgroup)').eq(entryIndex).toggleClass('active');
select.find('option').eq(entryIndex).prop('selected', notAdded);
setValueToInput(entriesArray, select);
return notAdded;
};
var setValueToInput = function setValueToInput(entriesArray, select) {
var value = '';
for (var count = entriesArray.length, i = 0; i < count; i++) {
var text = select.find('option').eq(entriesArray[i]).text();
if (i === 0) {
value += text;
} else {
value += ', ' + text;
}
}
if (value === '') {
value = select.find('option:disabled').eq(0).text();
}
select.siblings('input.select-dropdown').val(value);
};
var guid = function guid() {
var d = new Date().getTime();
var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
var r = (d + Math.random() * 16) % 16 | 0;
d = Math.floor(d / 16);
return (c === 'x' ? r : r & 0x3 | 0x8).toString(16);
});
return uuid;
};
var applySeachInList = function applySeachInList() {
var $this = $(this);
var ul = $this.closest('ul');
var searchValue = $this.val();
var opts = ul.find('li span.filtrable');
opts.each(function () {
var $option = $(this);
if (typeof this.outerHTML === 'string') {
var liValue = this.textContent.toLowerCase();
if (liValue.indexOf(searchValue.toLowerCase()) === -1) {
$option.hide().parent().hide();
} else {
$option.show().parent().show();
}
}
});
};
var setSearchableOption = function setSearchableOption($select, options) {
var placeholder = $select.attr('searchable');
var element = $('');
options.append(element);
element.find('.search').keyup(applySeachInList);
};
$.fn.material_select = function (callback) {
$(this).each(function () {
var $select = $(this);
if ($select.hasClass('browser-default')) {
return;
}
var multiple = Boolean($select.attr('multiple'));
var lastID = $select.data('select-id');
if (lastID) {
$select.parent().find('span.caret').remove();
$select.parent().find('input').remove();
$select.unwrap();
$('ul#select-options-' + lastID).remove();
}
if (callback === 'destroy') {
$select.data('select-id', null).removeClass('initialized');
return;
}
var uniqueID = guid();
$select.data('select-id', uniqueID);
var wrapper = $('
');
wrapper.addClass($select.attr('class'));
var options = $('
');
var selectChildren = $select.children('option, optgroup');
var valuesSelected = [];
var label = $select.find('option:selected').html() || $select.find('option:first').html() || '';
var searchable = Boolean($select.attr('searchable'));
var optionsHover = false;
if (searchable) {
setSearchableOption($select, options);
}
var appendOptionWithIcon = function appendOptionWithIcon(options, option, type) {
var disabledClass = option.is(':disabled') ? 'disabled ' : '';
var optgroupClass = type === 'optgroup-option' ? 'optgroup-option ' : '';
var iconUrl = option.data('icon');
var classes = option.attr('class');
if (iconUrl) {
var classString = '';
if (classes) {
classString = ' class="' + classes + '"';
}
if (type === 'multiple') {
options.append($('