style-select.js: adapt and port to pure js

This commit is contained in:
Zankaria 2025-02-06 00:52:22 +01:00 committed by Zankaria
parent ae9ee56940
commit dcc4060986

View File

@ -7,39 +7,47 @@
* Released under the MIT license * Released under the MIT license
* Copyright (c) 2013 Michael Save <savetheinternet@tinyboard.org> * Copyright (c) 2013 Michael Save <savetheinternet@tinyboard.org>
* Copyright (c) 2013-2014 Marcin Łabanowski <marcin@6irc.net> * Copyright (c) 2013-2014 Marcin Łabanowski <marcin@6irc.net>
* Copyright (c) 2025 Zankaria Auxa <zankaria.auxa@mailu.io>
* *
* Usage: * Usage:
* $config['additional_javascript'][] = 'js/jquery.min.js';
* $config['additional_javascript'][] = 'js/style-select.js'; * $config['additional_javascript'][] = 'js/style-select.js';
* * // $config['additional_javascript'][] = 'js/style-select-simple.js'; // Conflicts with this file.
*/ */
onReady(function() { onReady(function() {
let stylesDiv = $('div.styles'); let stylesSelect = document.createElement('select');
let stylesSelect = $('<select></select>'); stylesSelect.style.setProperty('float', 'none');
let i = 1; let i = 1;
stylesDiv.children().each(function() { for (styleName in styles) {
let opt = $('<option></option>') if (styleName) {
.html(this.innerHTML.replace(/(^\[|\]$)/g, '')) let opt = document.createElement('option');
.val(i); opt.innerText = styleName;
if ($(this).hasClass('selected')) { opt.value = i;
opt.attr('selected', true); if (selectedstyle == styleName) {
opt.setAttribute('selected', true);
}
opt.setAttribute('id', 'style-select-' + i);
stylesSelect.appendChild(opt);
i++;
} }
stylesSelect.append(opt); }
$(this).attr('id', 'style-select-' + i);
i++; stylesSelect.addEventListener('change', function() {
let sel = document.getElementById(`style-select-${this.value}`);
sel.click();
}); });
stylesSelect.change(function() { stylesSelect.addEventListener('change', function() {
$('#style-select-' + $(this).val()).click(); let sel = document.getElementById(`style-select-${this.value}`);
let styleName = sel.innerHTML;
changeStyle(styleName, sel);
}); });
stylesDiv.hide(); let newElement = document.createElement('div');
newElement.className = 'styles';
newElement.innerHTML = _('Select theme: ');
newElement.appendChild(stylesSelect);
stylesDiv.after( document.getElementsByTagName('body')[0].insertBefore(newElement, document.getElementsByTagName('body')[0].lastChild.nextSibling);
$('<div id="style-select" style="float:right;margin-bottom:10px"></div>')
.text(_('Style: '))
.append(stylesSelect)
);
}); });