D10 theme for Island Scholar v2 Clone of "vre2024"
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

34 lines
1.6 KiB

(function (Drupal) {
"use strict";
Drupal.behaviors.nouisliderYearFormat = {
// Weight needs to be higher than the module's behavior so we run after it.
// Drupal behaviors don't have explicit weight in this API, but attaching
// after DOM ready is fine since once() ensures the module ran first.
attach: function (context, settings) {
const sliderEl = context.querySelector("#year.noUi-target");
if (!sliderEl || !sliderEl.noUiSlider) return;
if (sliderEl.dataset.yearFormatApplied) return;
sliderEl.dataset.yearFormatApplied = "true";
const inputFrom = document.getElementById("nouislider-input-from");
const inputTo = document.getElementById("nouislider-input-to");
// The module's update listener gives inputs the raw float (e.g. 1971.00)
// because no top-level format is set on the slider. We add our own
// update listener that overwrites the input value with a rounded integer.
// 'update' fires on drag but does NOT trigger navigation — only 'set' does.
sliderEl.noUiSlider.on("update", function (values, handle) {
const rounded = Math.round(parseFloat(values[handle]));
if (handle === 0 && inputFrom) inputFrom.value = rounded;
if (handle === 1 && inputTo) inputTo.value = rounded;
});
// Fix the current displayed values in the inputs immediately
const current = sliderEl.noUiSlider.get();
if (inputFrom) inputFrom.value = Math.round(parseFloat(current[0]));
if (inputTo) inputTo.value = Math.round(parseFloat(current[1]));
},
};
})(Drupal);