const init_admin_select = function(){
const $ = jQuery
const generate_destination_language = () => {
return weglot_languages.available.filter(itm => {
return itm.internal_code !== $("#original_language").val()
});
}
let destination_selectize
const load_destination_selectize = () => {
destination_selectize = $(".weglot-select-destination")
.selectize({
delimiter: "|",
persist: false,
valueField: "internal_code",
labelField: "local",
searchField: ["internal_code", "english", "local"],
sortField: [{ field: "english", direction: "asc" }],
maxItems: weglot_languages.limit,
plugins: ["remove_button"],
options: generate_destination_language(),
render: {
option: function(item, escape) {
var english = escape(item.english);
var local = escape(item.local);
var external = escape(item.external_code);
return `
${english}${local}[${external}]
`;
}
}
})
.on("change", (value) => {
const code_languages = destination_selectize[0].selectize.getValue()
const template = $("#li-button-tpl");
if (template.length === 0){
return;
}
const is_fullname = $("#is_fullname").is(":checked")
const with_name = $("#with_name").is(":checked")
const with_flags = $("#with_flags").is(":checked")
let classes = ''
if (with_flags) {
classes = "weglot-flags";
}
let new_dest_language = ''
var currentFlagClasses = $("label.weglot-flags").attr("class")
var classArr = currentFlagClasses.split(/\s+/);
$.each(classArr, function(index, value){
if(value.includes('flag-') == true){
classes += ' '+value;
return false;
}
});
code_languages.forEach(element => {
const language = weglot_languages.available.find(itm => itm.internal_code === element);
let label = ''
if(with_name){
if (is_fullname){
label = language.local
}
else{
label = element.toUpperCase()
}
}
new_dest_language += template
.html()
.replace("{LABEL_LANGUAGE}", label)
.replace(new RegExp("{CODE_LANGUAGE}", "g"), element)
.replace("{CLASSES}", classes)
});
$(".country-selector ul").html(new_dest_language) //phpcs:ignore
});
}
const execute = () => {
let work_original_language = $("#original_language").val()
$("#original_language").on("change", function (e) {
const old_original_language = work_original_language;
const new_destination_option = work_original_language;
work_original_language = e.target.value;
destination_selectize[0].selectize.removeOption(work_original_language);
const new_option = weglot_languages.available.find(itm => {
return itm.internal_code === new_destination_option
});
const new_original_option = weglot_languages.available.find(itm => {
return itm.internal_code === work_original_language;
});
destination_selectize[0].selectize.addOption(new_option);
const is_fullname = $("#is_fullname").is(":checked")
const with_name = $("#with_name").is(":checked")
let label = ''
if(with_name){
label = is_fullname ? new_original_option.local : new_original_option.internal_code.toUpperCase();
}
$(".wgcurrent.wg-li")
.removeClass(old_original_language)
.addClass(work_original_language)
.attr("data-code-language", work_original_language)
.find('span').text(label)
});
load_destination_selectize();
window.addEventListener("weglotCheckApi", (data) => {
destination_selectize[0].selectize.settings.maxItems = weglot_languages.limit;
});
}
document.addEventListener('DOMContentLoaded', () => {
execute();
})
}
export default init_admin_select;