improvements-2.x-dev/modules/improvements_form/assets/improvements.range-slider.js

modules/improvements_form/assets/improvements.range-slider.js
(function ($, Drupal) {

  Drupal.behaviors.improvementsRangeSlider = {
    attach: function (context, settings) {
      if (context.tagName == 'SCRIPT') {
        return;
      }

      // Init jQuery UI Slider widget
      context.querySelectorAll('.form-range-slider__slider:not(.ui-slider)').forEach(function (sliderElement) {
        var $sliderElement = $(sliderElement);
        var $sliderWrapper = $sliderElement.closest('.form-range-slider');
        var $minInput = $sliderWrapper.find('.form-range-slider__min');
        var $maxInput = $sliderWrapper.find('.form-range-slider__max');
        var min = parseFloat($minInput.attr('min'));
        var max = parseFloat($minInput.attr('max'));
        var step = parseFloat($minInput.attr('step'));

        // Show default values in placeholder
        $minInput.attr('placeholder', $minInput.attr('min'));
        $maxInput.attr('placeholder', $maxInput.attr('max'));

        $sliderElement.slider({
          range: true,
          min: min,
          max: max,
          step: step,
          // Default slider values
          values: [
            $minInput.val() !== '' ? $minInput.val() : $minInput.attr('min'),
            $maxInput.val() !== '' ? $maxInput.val() : $maxInput.attr('max'),
          ],
          // Set inputs value on slider slide
          slide: function (event, ui) {
            var $input = (ui.handleIndex == 0) ? $minInput : $maxInput;
            $input.val(ui.value);
          },
          // Trigger input "change" event after user stop sliding
          stop: function (event, ui) {
            var $input = (ui.handleIndex == 0) ? $minInput : $maxInput;
            $input.trigger('change');
            $input.trigger('input');
          },
        });

        // Change slider after inputs changed
        $minInput.on('input', function () {
          $sliderElement.slider('values', 0, this.value);
        });
        $maxInput.on('input', function () {
          if (this.value === '') {
            $sliderElement.slider('values', 1, $maxInput.attr('max'));
          }
          else {
            $sliderElement.slider('values', 1, this.value);
          }
        });
      });
    }
  };

})(jQuery, Drupal);

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc