artabro/wire/modules/Inputfield/InputfieldAsmSelect/InputfieldAsmSelect.js
2024-08-27 11:35:37 +02:00

46 lines
1.5 KiB
JavaScript

function initInputfieldAsmSelect($select) {
var id = $select.attr('id');
// determine options common among all InputfieldAsmSelect instances
var options = {};
if(typeof ProcessWire.config == 'undefined') {
options = { sortable: true };
} else if(typeof ProcessWire.config[id] != "undefined") {
options = ProcessWire.config[id]; // deprecated/legacy
} else if(typeof ProcessWire.config['InputfieldAsmSelect'] != "undefined") {
jQuery.extend(options, ProcessWire.config['InputfieldAsmSelect']);
}
// merge options unique to this instance from select.data-asmopt attribute
var data = $select.attr('data-asmopt');
if(typeof data != "undefined") {
data = JSON.parse(data);
if(data) {
jQuery.extend(options, data);
if(typeof ProcessWire.config != "undefined" && typeof ProcessWire.config[id] == "undefined") {
// for classes like Repeater/Matrix that may be looking for this in ProcessWire.config
ProcessWire.config[id] = options;
}
}
}
$select.asmSelect(options);
}
jQuery(document).ready(function($) {
$(".InputfieldAsmSelect select[multiple]").each(function() {
initInputfieldAsmSelect($(this));
});
$(document).on('reloaded', '.InputfieldAsmSelect, .InputfieldPage', function() {
var $t = $(this);
if($t.hasClass('InputfieldPage')) $t = $t.find('.InputfieldAsmSelect');
if(!$t.length) return;
if($t.find('.asmList').length) return;
$(this).find("select[multiple]").each(function() {
initInputfieldAsmSelect($(this));
});
});
});