mirror of
https://github.com/McShelby/hugo-theme-relearn
synced 2025-04-30 11:29:05 +08:00
version: fix multiple switchers #1050
This commit is contained in:
parent
b5f8bcc4e3
commit
17771625ba
@ -1996,55 +1996,55 @@ function initVersionIndex(index) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var select = document.querySelector('#R-select-version');
|
document.querySelectorAll('.R-versionswitcher select').forEach(function (select) {
|
||||||
if (!select) {
|
var preSelectedOption = select.querySelector('[data-selected]')?.cloneNode(true);
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Remember the currently selected option
|
var selectedOption = null;
|
||||||
var selectedOption = null;
|
if (select.selectedIndex >= 0) {
|
||||||
if (select.selectedIndex >= 0) {
|
selectedOption = select.options[select.selectedIndex].cloneNode(true);
|
||||||
selectedOption = select.options[select.selectedIndex].cloneNode(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Remove all existing options
|
|
||||||
while (select.firstChild) {
|
|
||||||
select.removeChild(select.firstChild);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add all options from the index
|
|
||||||
index.forEach(function (version) {
|
|
||||||
// Create new option element
|
|
||||||
var option = document.createElement('option');
|
|
||||||
option.id = 'R-select-version-' + version.value;
|
|
||||||
option.value = version.value;
|
|
||||||
option.dataset.abs = version.isAbs;
|
|
||||||
option.dataset.uri = version.baseURL;
|
|
||||||
option.dataset.identifier = version.identifier;
|
|
||||||
option.textContent = version.title;
|
|
||||||
|
|
||||||
// Add the option to the select
|
|
||||||
select.appendChild(option);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Re-select the previously selected option if it exists
|
|
||||||
if (selectedOption) {
|
|
||||||
for (var i = 0; i < select.options.length; i++) {
|
|
||||||
if (select.options[i].dataset.identifier === selectedOption.dataset.identifier) {
|
|
||||||
select.selectedIndex = i;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the previously selected option doesn't exist, add it at the end
|
// Remove all existing options
|
||||||
select.appendChild(selectedOption);
|
while (select.firstChild) {
|
||||||
select.selectedIndex = select.options.length - 1;
|
select.removeChild(select.firstChild);
|
||||||
return;
|
}
|
||||||
} else if (select.options.length > 0) {
|
|
||||||
// If there was no selection before, select the first option
|
// Add all options from the index
|
||||||
select.selectedIndex = 0;
|
index.forEach(function (version) {
|
||||||
return;
|
// Create new option element
|
||||||
}
|
var option = document.createElement('option');
|
||||||
|
option.id = 'R-select-version-' + version.value;
|
||||||
|
option.value = version.value;
|
||||||
|
option.dataset.abs = version.isAbs;
|
||||||
|
option.dataset.uri = version.baseURL;
|
||||||
|
option.dataset.identifier = version.identifier;
|
||||||
|
option.textContent = version.title;
|
||||||
|
|
||||||
|
// Add the option to the select
|
||||||
|
select.appendChild(option);
|
||||||
|
});
|
||||||
|
|
||||||
|
if (preSelectedOption) {
|
||||||
|
const option = select.querySelector(`option[value="${preSelectedOption.value}"]`);
|
||||||
|
if (!option) {
|
||||||
|
select.appendChild(preSelectedOption);
|
||||||
|
} else {
|
||||||
|
option.dataset.selected = '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (selectedOption) {
|
||||||
|
// Re-select the previously selected option if it exists
|
||||||
|
const option = select.querySelector(`option[value="${selectedOption.value}"]`);
|
||||||
|
if (!option) {
|
||||||
|
select.appendChild(selectedOption);
|
||||||
|
}
|
||||||
|
select.value = selectedOption.value;
|
||||||
|
} else if (select.options.length > 0) {
|
||||||
|
// If there was no selection before, select the first option
|
||||||
|
select.selectedIndex = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function initVersionJs() {
|
function initVersionJs() {
|
||||||
|
@ -65,7 +65,7 @@ var variants = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
removeCustomVariantOption: function () {
|
removeCustomVariantOption: function () {
|
||||||
document.querySelectorAll(`.R-variantswitcher option[value=${this.customvariantname}]`).forEach((option) => {
|
document.querySelectorAll(`.R-variantswitcher option[value="${this.customvariantname}"]`).forEach((option) => {
|
||||||
option.remove();
|
option.remove();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -1 +1 @@
|
|||||||
7.5.0+7a2667a7d3f4f14d5188e9df975ce6e3799e83c3
|
7.5.0+b5f8bcc4e397011d3dbec2ca215d641dd7a02689
|
Loading…
x
Reference in New Issue
Block a user