| /* |
| * jQuery UI Slider Access |
| * By: Trent Richardson [http://trentrichardson.com] |
| * Version 0.3 |
| * Last Modified: 10/20/2012 |
| * |
| * Copyright 2011 Trent Richardson |
| * Dual licensed under the MIT and GPL licenses. |
| * http://trentrichardson.com/Impromptu/GPL-LICENSE.txt |
| * http://trentrichardson.com/Impromptu/MIT-LICENSE.txt |
| * |
| */ |
| (function($){ |
| |
| $.fn.extend({ |
| sliderAccess: function(options){ |
| options = options || {}; |
| options.touchonly = options.touchonly !== undefined? options.touchonly : true; // by default only show it if touch device |
| |
| if(options.touchonly === true && !("ontouchend" in document)){ |
| return $(this); |
| } |
| |
| return $(this).each(function(i,obj){ |
| var $t = $(this), |
| o = $.extend({},{ |
| where: 'after', |
| step: $t.slider('option','step'), |
| upIcon: 'ui-icon-plus', |
| downIcon: 'ui-icon-minus', |
| text: false, |
| upText: '+', |
| downText: '-', |
| buttonset: true, |
| buttonsetTag: 'span', |
| isRTL: false |
| }, options), |
| $buttons = $('<'+ o.buttonsetTag +' class="ui-slider-access">'+ |
| '<button data-icon="'+ o.downIcon +'" data-step="'+ (o.isRTL? o.step : o.step*-1) +'">'+ o.downText +'</button>'+ |
| '<button data-icon="'+ o.upIcon +'" data-step="'+ (o.isRTL? o.step*-1 : o.step) +'">'+ o.upText +'</button>'+ |
| '</'+ o.buttonsetTag +'>'); |
| |
| $buttons.children('button').each(function(j, jobj){ |
| var $jt = $(this); |
| $jt.button({ |
| text: o.text, |
| icons: { primary: $jt.data('icon') } |
| }) |
| .click(function(e){ |
| var step = $jt.data('step'), |
| curr = $t.slider('value'), |
| newval = curr += step*1, |
| minval = $t.slider('option','min'), |
| maxval = $t.slider('option','max'), |
| slidee = $t.slider("option", "slide") || function(){}, |
| stope = $t.slider("option", "stop") || function(){}; |
| |
| e.preventDefault(); |
| |
| if(newval < minval || newval > maxval){ |
| return; |
| } |
| |
| $t.slider('value', newval); |
| |
| slidee.call($t, null, { value: newval }); |
| stope.call($t, null, { value: newval }); |
| }); |
| }); |
| |
| // before or after |
| $t[o.where]($buttons); |
| |
| if(o.buttonset){ |
| $buttons.removeClass('ui-corner-right').removeClass('ui-corner-left').buttonset(); |
| $buttons.eq(0).addClass('ui-corner-left'); |
| $buttons.eq(1).addClass('ui-corner-right'); |
| } |
| |
| // adjust the width so we don't break the original layout |
| var bOuterWidth = $buttons.css({ |
| marginLeft: ((o.where === 'after' && !o.isRTL) || (o.where === 'before' && o.isRTL)? 10:0), |
| marginRight: ((o.where === 'before' && !o.isRTL) || (o.where === 'after' && o.isRTL)? 10:0) |
| }).outerWidth(true) + 5; |
| var tOuterWidth = $t.outerWidth(true); |
| $t.css('display','inline-block').width(tOuterWidth-bOuterWidth); |
| }); |
| } |
| }); |
| |
| })(jQuery); |