Blame | Letzte Änderung | Log anzeigen | RSS feed
var ComponentsNoUiSliders = function() {var demo2 = function() {var connectSlider = document.getElementById('demo2');noUiSlider.create(connectSlider, {start: [20],connect: false,range: {'min': 0,'max': 100}});}var demo3 = function() {var connectSlider = document.getElementById('demo3');noUiSlider.create(connectSlider, {start: [20, 80],connect: false,range: {'min': 0,'max': 100}});var connectBar = document.createElement('div'),connectBase = connectSlider.getElementsByClassName('noUi-base')[0],connectHandles = connectSlider.getElementsByClassName('noUi-origin');// Give the bar a class for styling and add it to the slider.connectBar.className += 'connect';connectBase.appendChild(connectBar);connectSlider.noUiSlider.on('update', function( values, handle ) {// Pick left for the first handle, right for the second.var side = handle ? 'right' : 'left',// Get the handle position and trim the '%' sign.offset = (connectHandles[handle].style.left).slice(0, - 1);// Right offset is 100% - left offsetif ( handle === 1 ) {offset = 100 - offset;}connectBar.style[side] = offset + '%';});}var demo4 = function() {//** init the selectvar select = document.getElementById('demo4_select');// Append the option elementsfor ( var i = -20; i <= 40; i++ ) {var option = document.createElement("option");option.text = i;option.value = i;select.appendChild(option);}//** init the slidervar html5Slider = document.getElementById('demo4');noUiSlider.create(html5Slider, {start: [ 10, 30 ],connect: true,range: {'min': -20,'max': 40}});//** init the inputvar inputNumber = document.getElementById('demo4_input');html5Slider.noUiSlider.on('update', function( values, handle ) {var value = values[handle];if ( handle ) {inputNumber.value = value;} else {select.value = Math.round(value);}});select.addEventListener('change', function(){html5Slider.noUiSlider.set([this.value, null]);});inputNumber.addEventListener('change', function(){html5Slider.noUiSlider.set([null, this.value]);});}var demo5 = function() {var nonLinearSlider = document.getElementById('demo5');noUiSlider.create(nonLinearSlider, {connect: true,behaviour: 'tap',start: [ 500, 4000 ],range: {// Starting at 500, step the value by 500,// until 4000 is reached. From there, step by 1000.'min': [ 0 ],'10%': [ 500, 500 ],'50%': [ 4000, 1000 ],'max': [ 10000 ]}});// Write the CSS 'left' value to a span.function leftValue ( handle ) {return handle.parentElement.style.left;}var lowerValue = document.getElementById('demo5_lower-value'),upperValue = document.getElementById('demo5_upper-value'),handles = nonLinearSlider.getElementsByClassName('noUi-handle');// Display the slider value and how far the handle moved// from the left edge of the slider.nonLinearSlider.noUiSlider.on('update', function ( values, handle ) {if ( !handle ) {lowerValue.innerHTML = values[handle] + ', ' + leftValue(handles[handle]);} else {upperValue.innerHTML = values[handle] + ', ' + leftValue(handles[handle]);}});}var demo6 = function() {// Store the locked state and slider values.var lockedState = false,lockedSlider = false,lockedValues = [60, 80],slider1 = document.getElementById('demo6_slider1'),slider2 = document.getElementById('demo6_slider2'),lockButton = document.getElementById('demo6_lockbutton'),slider1Value = document.getElementById('demo6_slider1-span'),slider2Value = document.getElementById('demo6_slider2-span');// When the button is clicked, the locked// state is inverted.lockButton.addEventListener('click', function(){lockedState = !lockedState;this.textContent = lockedState ? 'unlock' : 'lock';});function crossUpdate ( value, slider ) {// If the sliders aren't interlocked, don't// cross-update.if ( !lockedState ) return;// Select whether to increase or decrease// the other slider value.var a = slider1 === slider ? 0 : 1, b = a ? 0 : 1;// Offset the slider value.value -= lockedValues[b] - lockedValues[a];// Set the valueslider.noUiSlider.set(value);}noUiSlider.create(slider1, {start: 60,// Disable animation on value-setting,// so the sliders respond immediately.animate: false,range: {min: 50,max: 100}});noUiSlider.create(slider2, {start: 80,animate: false,range: {min: 50,max: 100}});slider1.noUiSlider.on('update', function( values, handle ){slider1Value.innerHTML = values[handle];});slider2.noUiSlider.on('update', function( values, handle ){slider2Value.innerHTML = values[handle];});function setLockedValues ( ) {lockedValues = [Number(slider1.noUiSlider.get()),Number(slider2.noUiSlider.get())];}slider1.noUiSlider.on('change', setLockedValues);slider2.noUiSlider.on('change', setLockedValues);// The value will be send to the other slider,// using a custom function as the serialization// method. The function uses the global 'lockedState'// variable to decide whether the other slider is updated.slider1.noUiSlider.on('slide', function( values, handle ){crossUpdate(values[handle], slider2);});slider2.noUiSlider.on('slide', function( values, handle ){crossUpdate(values[handle], slider1);});}var demo7 = function() {var softSlider = document.getElementById('demo7');noUiSlider.create(softSlider, {start: 50,range: {min: 0,max: 100},pips: {mode: 'values',values: [20, 80],density: 4}});softSlider.noUiSlider.on('change', function ( values, handle ) {if ( values[handle] < 20 ) {softSlider.noUiSlider.set(20);} else if ( values[handle] > 80 ) {softSlider.noUiSlider.set(80);}});}var demo8 = function() {var tooltipSlider = document.getElementById('demo8');noUiSlider.create(tooltipSlider, {start: [40, 50],connect: true,range: {'min': 30,'30%': 40,'max': 50}});var tipHandles = tooltipSlider.getElementsByClassName('noUi-handle'),tooltips = [];// Add divs to the slider handles.for ( var i = 0; i < tipHandles.length; i++ ){tooltips[i] = document.createElement('div');tipHandles[i].appendChild(tooltips[i]);}// Add a class for stylingtooltips[1].className += 'noUi-tooltip';// Add additional markuptooltips[1].innerHTML = '<strong>Value: </strong><span></span>';// Replace the tooltip reference with the span we just addedtooltips[1] = tooltips[1].getElementsByTagName('span')[0];// Add a class for stylingtooltips[0].className += 'noUi-tooltip';// Add additional markuptooltips[0].innerHTML = '<strong>Value: </strong><span></span>';// Replace the tooltip reference with the span we just addedtooltips[0] = tooltips[0].getElementsByTagName('span')[0];// When the slider changes, write the value to the tooltips.tooltipSlider.noUiSlider.on('update', function( values, handle ){tooltips[handle].innerHTML = values[handle];});}return {//main function to initiate the moduleinit: function() {demo2();demo3();demo4();demo5();demo6();demo7();demo8();}};}();jQuery(document).ready(function() {ComponentsNoUiSliders.init();});