46 lines
1.5 KiB
JavaScript
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));
|
|
});
|
|
});
|
|
});
|