/*========================================================================================= File Name: ext-component-sliders.js Description: noUiSlider is a lightweight JavaScript range slider library. ---------------------------------------------------------------------------------------- Item Name: Vuexy - Vuejs, HTML & Laravel Admin Dashboard Template Author: PIXINVENT Author URL: http://www.themeforest.net/user/pixinvent ==========================================================================================*/ $(function () { 'use strict'; // RTL Support var direction = 'ltr'; if ($('html').data('textdirection') == 'rtl') { direction = 'rtl'; } /******************************************** * Slider values * ********************************************/ // Handles var handlesSlider = document.getElementById('slider-handles'), snapSlider = document.getElementById('slider-snap'), tapSlider = document.getElementById('tap'), dragSlider = document.getElementById('drag'), dragFixedSlider = document.getElementById('drag-fixed'), hoverSlider = document.getElementById('hover'), field = document.getElementById('hover-val'), dragTapSlider = document.getElementById('combined'), pipsRange = document.getElementById('pips-range'); if (typeof handlesSlider !== undefined && handlesSlider !== null) { noUiSlider.create(handlesSlider, { start: [4000, 8000], direction: direction, range: { min: [2000], max: [10000] } }); } // Snapping between steps if (typeof snapSlider !== undefined && snapSlider !== null) { noUiSlider.create(snapSlider, { start: [0, 500], direction: direction, snap: true, connect: true, range: { min: 0, '10%': 50, '20%': 100, '30%': 150, '40%': 500, '50%': 800, max: 1000 } }); } /************************************************ * Slider behaviour * ************************************************/ // Tap if (typeof tapSlider !== undefined && tapSlider !== null) { noUiSlider.create(tapSlider, { start: [20, 40], direction: direction, behaviour: 'tap', connect: true, range: { min: 10, max: 50 } }); } // Drag if (typeof dragSlider !== undefined && dragSlider !== null) { noUiSlider.create(dragSlider, { start: [40, 60], direction: direction, behaviour: 'drag', connect: true, range: { min: 20, max: 80 } }); } // Fixed dragging if (typeof dragFixedSlider !== undefined && dragFixedSlider !== null) { noUiSlider.create(dragFixedSlider, { start: [40, 60], direction: direction, behaviour: 'drag-fixed', connect: true, range: { min: 20, max: 80 } }); } // Hover if (typeof hoverSlider !== undefined && hoverSlider !== null) { noUiSlider.create(hoverSlider, { start: 20, direction: direction, behaviour: 'hover-snap', range: { min: 0, max: 100 } }); hoverSlider.noUiSlider.on('hover', function (value) { field.innerHTML = value; }); } // Combined options if (typeof dragTapSlider !== undefined && dragTapSlider !== null) { noUiSlider.create(dragTapSlider, { start: [40, 60], direction: direction, behaviour: 'drag-tap', connect: true, range: { min: 20, max: 80 } }); } /**************************************************** * Slider Scales / Pips * ****************************************************/ if (typeof pipsRange !== undefined && pipsRange !== null) { // Range noUiSlider.create(pipsRange, { start: 10, step: 10, range: { min: 0, max: 100 }, tooltips: true, direction: direction, pips: { mode: 'steps', stepped: true, density: 5 } }); } /******************************************** * Slider Colors * ********************************************/ var defaultColorSlider = document.getElementById('default-color-slider'), secondaryColorSlider = document.getElementById('secondary-color-slider'), successColorSlider = document.getElementById('success-color-slider'), infoColorSlider = document.getElementById('info-color-slider'), warningColorSlider = document.getElementById('warning-color-slider'), dangerColorSlider = document.getElementById('danger-color-slider'); var colorOptions = { start: [40, 60], connect: true, behaviour: 'drag', connect: true, step: 10, tooltips: true, range: { min: 0, max: 100 }, pips: { mode: 'steps', stepped: true, density: 5 }, direction: direction }; if (typeof defaultColorSlider !== undefined && defaultColorSlider !== null) { noUiSlider.create(defaultColorSlider, colorOptions); } if (typeof secondaryColorSlider !== undefined && secondaryColorSlider !== null) { noUiSlider.create(secondaryColorSlider, colorOptions); } if (typeof successColorSlider !== undefined && successColorSlider !== null) { noUiSlider.create(successColorSlider, colorOptions); } if (typeof infoColorSlider !== undefined && infoColorSlider !== null) { noUiSlider.create(infoColorSlider, colorOptions); } if (typeof warningColorSlider !== undefined && warningColorSlider !== null) { noUiSlider.create(warningColorSlider, colorOptions); } if (typeof dangerColorSlider !== undefined && dangerColorSlider !== null) { noUiSlider.create(dangerColorSlider, colorOptions); } /******************************************** * Vertical Slider * ********************************************/ // Default var verticalSlider = document.getElementById('slider-vertical'), connectUpperSlider = document.getElementById('connect-upper'), tooltipSlider = document.getElementById('slider-tooltips'), verticalLimitSlider = document.getElementById('vertical-limit'); if (typeof verticalSlider !== undefined && verticalSlider !== null) { verticalSlider.style.height = '200px'; noUiSlider.create(verticalSlider, { start: 20, direction: direction, orientation: 'vertical', range: { min: 0, max: 100 } }); } // Connect to upper if (typeof connectUpperSlider !== undefined && connectUpperSlider !== null) { connectUpperSlider.style.height = '200px'; noUiSlider.create(connectUpperSlider, { start: 30, direction: direction, orientation: 'vertical', connect: 'upper', range: { min: 0, max: 100 } }); } // Tooltips if (typeof tooltipSlider !== undefined && tooltipSlider !== null) { tooltipSlider.style.height = '200px'; noUiSlider.create(tooltipSlider, { start: [20, 80], direction: direction, orientation: 'vertical', tooltips: [ wNumb({ decimals: 1 }), wNumb({ decimals: 1 }) ], range: { min: 0, max: 100 } }); } // Limit if (typeof verticalLimitSlider !== undefined && verticalLimitSlider !== null) { verticalLimitSlider.style.height = '200px'; noUiSlider.create(verticalLimitSlider, { start: [40, 60], direction: direction, orientation: 'vertical', limit: 40, behaviour: 'drag', connect: true, range: { min: 0, max: 100 } }); } /**************************************************** * Slider With Input * ****************************************************/ var select = document.getElementById('slider-select'), sliderWithInput = document.getElementById('slider-with-input'), inputNumber = document.getElementById('slider-input-number'); if (typeof sliderWithInput !== undefined && sliderWithInput !== null) { noUiSlider.create(sliderWithInput, { start: [10, 30], direction: direction, connect: true, range: { min: -20, max: 40 } }); sliderWithInput.noUiSlider.on('update', function (values, handle) { var value = values[handle]; if (handle) { inputNumber.value = value; } else { select.value = Math.round(value); } }); } if (typeof sliderWithInput !== undefined && sliderWithInput !== null) { // Append the option elements for (var i = -20; i <= 40; i++) { var option = document.createElement('option'); option.text = i; option.value = i; select.appendChild(option); } select.addEventListener('change', function () { sliderWithInput.noUiSlider.set([this.value, null]); }); } if (typeof inputNumber !== undefined && inputNumber !== null) { inputNumber.addEventListener('change', function () { sliderWithInput.noUiSlider.set([null, this.value]); }); } });