diff options
Diffstat (limited to 'ui')
-rw-r--r-- | ui/i18n/jquery.ui.datepicker-pl.js | 2 | ||||
-rw-r--r-- | ui/jquery.ui.accordion.js | 4 | ||||
-rw-r--r-- | ui/jquery.ui.autocomplete.js | 11 | ||||
-rw-r--r-- | ui/jquery.ui.core.js | 6 | ||||
-rw-r--r-- | ui/jquery.ui.slider.js | 735 | ||||
-rw-r--r-- | ui/jquery.ui.tooltip.js | 145 | ||||
-rw-r--r-- | ui/jquery.ui.widget.js | 4 |
7 files changed, 412 insertions, 495 deletions
diff --git a/ui/i18n/jquery.ui.datepicker-pl.js b/ui/i18n/jquery.ui.datepicker-pl.js index 2d2d4d765..d315bf523 100644 --- a/ui/i18n/jquery.ui.datepicker-pl.js +++ b/ui/i18n/jquery.ui.datepicker-pl.js @@ -10,7 +10,7 @@ jQuery(function($){ 'Lipiec','Sierpień','Wrzesień','Październik','Listopad','Grudzień'], monthNamesShort: ['Sty','Lu','Mar','Kw','Maj','Cze', 'Lip','Sie','Wrz','Pa','Lis','Gru'], - dayNames: ['Niedziela','Poniedzialek','Wtorek','Środa','Czwartek','Piątek','Sobota'], + dayNames: ['Niedziela','Poniedziałek','Wtorek','Środa','Czwartek','Piątek','Sobota'], dayNamesShort: ['Nie','Pn','Wt','Śr','Czw','Pt','So'], dayNamesMin: ['N','Pn','Wt','Śr','Cz','Pt','So'], weekHeader: 'Tydz', diff --git a/ui/jquery.ui.accordion.js b/ui/jquery.ui.accordion.js index bce78231b..0ac478b73 100644 --- a/ui/jquery.ui.accordion.js +++ b/ui/jquery.ui.accordion.js @@ -140,9 +140,9 @@ $.widget("ui.accordion", { this.headers .unbind(".accordion") .removeClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-corner-top") - .removeAttr("role").removeAttr("aria-expanded").removeAttr("tabindex"); + .removeAttr("role").removeAttr("aria-expanded").removeAttr("tabIndex"); - this.headers.find("a").removeAttr("tabindex"); + this.headers.find("a").removeAttr("tabIndex"); this._destroyIcons(); var contents = this.headers.next().css("display", "").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active"); if (o.autoHeight || o.fillHeight) { diff --git a/ui/jquery.ui.autocomplete.js b/ui/jquery.ui.autocomplete.js index a1d798c59..14a19e4b2 100644 --- a/ui/jquery.ui.autocomplete.js +++ b/ui/jquery.ui.autocomplete.js @@ -83,6 +83,7 @@ $.widget( "ui.autocomplete", { } }) .bind( "focus.autocomplete", function() { + self.selectedItem = null; self.previous = self.element.val(); }) .bind( "blur.autocomplete", function( event ) { @@ -91,6 +92,7 @@ $.widget( "ui.autocomplete", { // TODO try to implement this without a timeout, see clearTimeout in search() self.closing = setTimeout(function() { self.close( event ); + self._change( event ); }, 150 ); }); this._initSource(); @@ -116,11 +118,13 @@ $.widget( "ui.autocomplete", { self.element.val( item.value ); } self.close( event ); - self.previous = self.element.val(); // only trigger when focus was lost (click on menu) + var previous = self.previous; if ( self.element[0] !== doc.activeElement ) { self.element.focus(); + self.previous = previous; } + self.selectedItem = item; }, blur: function( event, ui ) { if ( self.menu.element.is(":visible") ) { @@ -219,8 +223,11 @@ $.widget( "ui.autocomplete", { this.menu.element.hide(); this.menu.deactivate(); } + }, + + _change: function( event ) { if ( this.previous !== this.element.val() ) { - this._trigger( "change", event ); + this._trigger( "change", event, { item: this.selectedItem } ); } }, diff --git a/ui/jquery.ui.core.js b/ui/jquery.ui.core.js index 197a1aba9..c0eab46b4 100644 --- a/ui/jquery.ui.core.js +++ b/ui/jquery.ui.core.js @@ -118,15 +118,13 @@ $.fn.extend({ enableSelection: function() { return this .attr('unselectable', 'off') - .css('MozUserSelect', '') - .unbind('selectstart.ui'); + .css('MozUserSelect', ''); }, disableSelection: function() { return this .attr('unselectable', 'on') - .css('MozUserSelect', 'none') - .bind('selectstart.ui', function() { return false; }); + .css('MozUserSelect', 'none'); }, scrollParent: function() { diff --git a/ui/jquery.ui.slider.js b/ui/jquery.ui.slider.js index 185fe809c..440e75635 100644 --- a/ui/jquery.ui.slider.js +++ b/ui/jquery.ui.slider.js @@ -13,28 +13,32 @@ * jquery.ui.widget.js */ -(function($) { +(function( $ ) { // number of pages in a slider // (how many times can you page up/down to go through the whole range) var numPages = 5; -$.widget("ui.slider", $.ui.mouse, { +$.widget( "ui.slider", $.ui.mouse, { + widgetEventPrefix: "slide", + options: { animate: false, distance: 0, max: 100, min: 0, - orientation: 'horizontal', + orientation: "horizontal", range: false, step: 1, value: 0, values: null }, + _create: function() { + var self = this, + o = this.options; - var self = this, o = this.options; this._keySliding = false; this._mouseSliding = false; this._animateOff = true; @@ -43,197 +47,218 @@ $.widget("ui.slider", $.ui.mouse, { this._mouseInit(); this.element - .addClass("ui-slider" - + " ui-slider-" + this.orientation - + " ui-widget" - + " ui-widget-content" - + " ui-corner-all"); + .addClass( "ui-slider" + + " ui-slider-" + this.orientation + + " ui-widget" + + " ui-widget-content" + + " ui-corner-all" ); - if (o.disabled) { - this.element.addClass('ui-slider-disabled ui-disabled'); + if ( o.disabled ) { + this.element.addClass( "ui-slider-disabled ui-disabled" ); } this.range = $([]); - if (o.range) { - - if (o.range === true) { - this.range = $('<div></div>'); - if (!o.values) o.values = [this._valueMin(), this._valueMin()]; - if (o.values.length && o.values.length != 2) { - o.values = [o.values[0], o.values[0]]; + if ( o.range ) { + if ( o.range === true ) { + this.range = $( "<div></div>" ); + if ( !o.values ) { + o.values = [ this._valueMin(), this._valueMin() ]; + } + if ( o.values.length && o.values.length !== 2 ) { + o.values = [ o.values[0], o.values[0] ]; } } else { - this.range = $('<div></div>'); + this.range = $( "<div></div>" ); } this.range - .appendTo(this.element) - .addClass("ui-slider-range"); + .appendTo( this.element ) + .addClass( "ui-slider-range" ); - if (o.range == "min" || o.range == "max") { - this.range.addClass("ui-slider-range-" + o.range); + if ( o.range === "min" || o.range === "max" ) { + this.range.addClass( "ui-slider-range-" + o.range ); } // note: this isn't the most fittingly semantic framework class for this element, // but worked best visually with a variety of themes - this.range.addClass("ui-widget-header"); - + this.range.addClass( "ui-widget-header" ); } - if ($(".ui-slider-handle", this.element).length == 0) - $('<a href="#"></a>') - .appendTo(this.element) - .addClass("ui-slider-handle"); + if ( $( ".ui-slider-handle", this.element ).length === 0 ) { + $( "<a href='#'></a>" ) + .appendTo( this.element ) + .addClass( "ui-slider-handle" ); + } - if (o.values && o.values.length) { - while ($(".ui-slider-handle", this.element).length < o.values.length) - $('<a href="#"></a>') - .appendTo(this.element) - .addClass("ui-slider-handle"); + if ( o.values && o.values.length ) { + while ( $(".ui-slider-handle", this.element).length < o.values.length ) { + $( "<a href='#'></a>" ) + .appendTo( this.element ) + .addClass( "ui-slider-handle" ); + } } - this.handles = $(".ui-slider-handle", this.element) - .addClass("ui-state-default" - + " ui-corner-all"); + this.handles = $( ".ui-slider-handle", this.element ) + .addClass( "ui-state-default" + + " ui-corner-all" ); - this.handle = this.handles.eq(0); + this.handle = this.handles.eq( 0 ); - this.handles.add(this.range).filter("a") - .click(function(event) { + this.handles.add( this.range ).filter( "a" ) + .click(function( event ) { event.preventDefault(); }) .hover(function() { - if (!o.disabled) { - $(this).addClass('ui-state-hover'); + if ( !o.disabled ) { + $( this ).addClass( "ui-state-hover" ); } }, function() { - $(this).removeClass('ui-state-hover'); + $( this ).removeClass( "ui-state-hover" ); }) .focus(function() { - if (!o.disabled) { - $(".ui-slider .ui-state-focus").removeClass('ui-state-focus'); $(this).addClass('ui-state-focus'); + if ( !o.disabled ) { + $( ".ui-slider .ui-state-focus" ).removeClass( "ui-state-focus" ); + $( this ).addClass( "ui-state-focus" ); } else { - $(this).blur(); + $( this ).blur(); } }) .blur(function() { - $(this).removeClass('ui-state-focus'); + $( this ).removeClass( "ui-state-focus" ); }); - this.handles.each(function(i) { - $(this).data("index.ui-slider-handle", i); + this.handles.each(function( i ) { + $( this ).data( "index.ui-slider-handle", i ); }); - this.handles.keydown(function(event) { - - var ret = true; - - var index = $(this).data("index.ui-slider-handle"); - - if (self.options.disabled) - return; - - switch (event.keyCode) { - case $.ui.keyCode.HOME: - case $.ui.keyCode.END: - case $.ui.keyCode.PAGE_UP: - case $.ui.keyCode.PAGE_DOWN: - case $.ui.keyCode.UP: - case $.ui.keyCode.RIGHT: - case $.ui.keyCode.DOWN: - case $.ui.keyCode.LEFT: - ret = false; - if (!self._keySliding) { - self._keySliding = true; - $(this).addClass("ui-state-active"); - self._start(event, index); - } - break; - } - - var curVal, newVal, step = self.options.step; - if (self.options.values && self.options.values.length) { - curVal = newVal = self.values(index); - } else { - curVal = newVal = self.value(); - } - - switch (event.keyCode) { - case $.ui.keyCode.HOME: - newVal = self._valueMin(); - break; - case $.ui.keyCode.END: - newVal = self._valueMax(); - break; - case $.ui.keyCode.PAGE_UP: - newVal = curVal + ((self._valueMax() - self._valueMin()) / numPages); - break; - case $.ui.keyCode.PAGE_DOWN: - newVal = curVal - ((self._valueMax() - self._valueMin()) / numPages); - break; - case $.ui.keyCode.UP: - case $.ui.keyCode.RIGHT: - if(curVal == self._valueMax()) return; - newVal = curVal + step; - break; - case $.ui.keyCode.DOWN: - case $.ui.keyCode.LEFT: - if(curVal == self._valueMin()) return; - newVal = curVal - step; - break; - } - - self._slide(event, index, newVal); - - return ret; - - }).keyup(function(event) { - - var index = $(this).data("index.ui-slider-handle"); - - if (self._keySliding) { - self._keySliding = false; - self._stop(event, index); - self._change(event, index); - $(this).removeClass("ui-state-active"); - } - - }); + this.handles + .keydown(function( event ) { + var ret = true, + index = $( this ).data( "index.ui-slider-handle" ), + allowed, + curVal, + newVal, + step; + + if ( self.options.disabled ) { + return; + } + + switch ( event.keyCode ) { + case $.ui.keyCode.HOME: + case $.ui.keyCode.END: + case $.ui.keyCode.PAGE_UP: + case $.ui.keyCode.PAGE_DOWN: + case $.ui.keyCode.UP: + case $.ui.keyCode.RIGHT: + case $.ui.keyCode.DOWN: + case $.ui.keyCode.LEFT: + ret = false; + if ( !self._keySliding ) { + self._keySliding = true; + $( this ).addClass( "ui-state-active" ); + allowed = self._start( event, index ); + if ( allowed === false ) { + return; + } + } + break; + } + + step = self.options.step; + if ( self.options.values && self.options.values.length ) { + curVal = newVal = self.values( index ); + } else { + curVal = newVal = self.value(); + } + + switch ( event.keyCode ) { + case $.ui.keyCode.HOME: + newVal = self._valueMin(); + break; + case $.ui.keyCode.END: + newVal = self._valueMax(); + break; + case $.ui.keyCode.PAGE_UP: + newVal = curVal + ( (self._valueMax() - self._valueMin()) / numPages ); + break; + case $.ui.keyCode.PAGE_DOWN: + newVal = curVal - ( (self._valueMax() - self._valueMin()) / numPages ); + break; + case $.ui.keyCode.UP: + case $.ui.keyCode.RIGHT: + if ( curVal === self._valueMax() ) { + return; + } + newVal = curVal + step; + break; + case $.ui.keyCode.DOWN: + case $.ui.keyCode.LEFT: + if ( curVal === self._valueMin() ) { + return; + } + newVal = curVal - step; + break; + } + + self._slide( event, index, newVal ); + + return ret; + + }) + .keyup(function( event ) { + var index = $( this ).data( "index.ui-slider-handle" ); + + if ( self._keySliding ) { + self._keySliding = false; + self._stop( event, index ); + self._change( event, index ); + $( this ).removeClass( "ui-state-active" ); + } + + }); this._refreshValue(); this._animateOff = false; - }, destroy: function() { - this.handles.remove(); this.range.remove(); this.element - .removeClass("ui-slider" - + " ui-slider-horizontal" - + " ui-slider-vertical" - + " ui-slider-disabled" - + " ui-widget" - + " ui-widget-content" - + " ui-corner-all") - .removeData("slider") - .unbind(".slider"); + .removeClass( "ui-slider" + + " ui-slider-horizontal" + + " ui-slider-vertical" + + " ui-slider-disabled" + + " ui-widget" + + " ui-widget-content" + + " ui-corner-all" ) + .removeData( "slider" ) + .unbind( ".slider" ); this._mouseDestroy(); return this; }, - _mouseCapture: function(event) { - - var o = this.options; - - if (o.disabled) + _mouseCapture: function( event ) { + var o = this.options, + position, + normValue, + distance, + closestHandle, + self, + index, + allowed, + offset, + mouseOverHandle; + + if ( o.disabled ) { return false; + } this.elementSize = { width: this.element.outerWidth(), @@ -241,16 +266,15 @@ $.widget("ui.slider", $.ui.mouse, { }; this.elementOffset = this.element.offset(); - var position = { x: event.pageX, y: event.pageY }; - var normValue = this._normValueFromMouse(position); - - var distance = this._valueMax() - this._valueMin() + 1, closestHandle; - var self = this, index; - this.handles.each(function(i) { - var thisDistance = Math.abs(normValue - self.values(i)); - if (distance > thisDistance) { + position = { x: event.pageX, y: event.pageY }; + normValue = this._normValueFromMouse( position ); + distance = this._valueMax() - this._valueMin() + 1; + self = this; + this.handles.each(function( i ) { + var thisDistance = Math.abs( normValue - self.values(i) ); + if ( distance > thisDistance ) { distance = thisDistance; - closestHandle = $(this); + closestHandle = $( this ); index = i; } }); @@ -258,216 +282,218 @@ $.widget("ui.slider", $.ui.mouse, { // workaround for bug #3736 (if both handles of a range are at 0, // the first is always used as the one with least distance, // and moving it is obviously prevented by preventing negative ranges) - if(o.range == true && this.values(1) == o.min) { - closestHandle = $(this.handles[++index]); + if( o.range === true && this.values(1) === o.min ) { + index += 1; + closestHandle = $( this.handles[index] ); } - this._start(event, index); + allowed = this._start( event, index ); + if ( allowed === false ) { + return false; + } this._mouseSliding = true; self._handleIndex = index; closestHandle - .addClass("ui-state-active") + .addClass( "ui-state-active" ) .focus(); - var offset = closestHandle.offset(); - var mouseOverHandle = !$(event.target).parents().andSelf().is('.ui-slider-handle'); + offset = closestHandle.offset(); + mouseOverHandle = !$( event.target ).parents().andSelf().is( ".ui-slider-handle" ); this._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : { - left: event.pageX - offset.left - (closestHandle.width() / 2), - top: event.pageY - offset.top - - (closestHandle.height() / 2) - - (parseInt(closestHandle.css('borderTopWidth'),10) || 0) - - (parseInt(closestHandle.css('borderBottomWidth'),10) || 0) - + (parseInt(closestHandle.css('marginTop'),10) || 0) + left: event.pageX - offset.left - ( closestHandle.width() / 2 ), + top: event.pageY - offset.top - + ( closestHandle.height() / 2 ) - + ( parseInt( closestHandle.css("borderTopWidth"), 10 ) || 0 ) - + ( parseInt( closestHandle.css("borderBottomWidth"), 10 ) || 0) + + ( parseInt( closestHandle.css("marginTop"), 10 ) || 0) }; - normValue = this._normValueFromMouse(position); - this._slide(event, index, normValue); + normValue = this._normValueFromMouse( position ); + this._slide( event, index, normValue ); this._animateOff = true; return true; - }, - _mouseStart: function(event) { + _mouseStart: function( event ) { return true; }, - _mouseDrag: function(event) { - - var position = { x: event.pageX, y: event.pageY }; - var normValue = this._normValueFromMouse(position); + _mouseDrag: function( event ) { + var position = { x: event.pageX, y: event.pageY }, + normValue = this._normValueFromMouse( position ); - this._slide(event, this._handleIndex, normValue); + this._slide( event, this._handleIndex, normValue ); return false; - }, - _mouseStop: function(event) { - - this.handles.removeClass("ui-state-active"); + _mouseStop: function( event ) { + this.handles.removeClass( "ui-state-active" ); this._mouseSliding = false; - this._stop(event, this._handleIndex); - this._change(event, this._handleIndex); + + this._stop( event, this._handleIndex ); + this._change( event, this._handleIndex ); + this._handleIndex = null; this._clickOffset = null; - this._animateOff = false; - return false; + return false; }, _detectOrientation: function() { - this.orientation = this.options.orientation == 'vertical' ? 'vertical' : 'horizontal'; + this.orientation = ( this.options.orientation === "vertical" ) ? "vertical" : "horizontal"; }, - _normValueFromMouse: function(position) { + _normValueFromMouse: function( position ) { + var pixelTotal, + pixelMouse, + percentMouse, + valueTotal, + valueMouse; - var pixelTotal, pixelMouse; - if ('horizontal' == this.orientation) { + if ( this.orientation === "horizontal" ) { pixelTotal = this.elementSize.width; - pixelMouse = position.x - this.elementOffset.left - (this._clickOffset ? this._clickOffset.left : 0); + pixelMouse = position.x - this.elementOffset.left - ( this._clickOffset ? this._clickOffset.left : 0 ); } else { pixelTotal = this.elementSize.height; - pixelMouse = position.y - this.elementOffset.top - (this._clickOffset ? this._clickOffset.top : 0); + pixelMouse = position.y - this.elementOffset.top - ( this._clickOffset ? this._clickOffset.top : 0 ); } - var percentMouse = (pixelMouse / pixelTotal); - if (percentMouse > 1) percentMouse = 1; - if (percentMouse < 0) percentMouse = 0; - if ('vertical' == this.orientation) + percentMouse = ( pixelMouse / pixelTotal ); + if ( percentMouse > 1 ) { + percentMouse = 1; + } + if ( percentMouse < 0 ) { + percentMouse = 0; + } + if ( this.orientation === "vertical" ) { percentMouse = 1 - percentMouse; + } - var valueTotal = this._valueMax() - this._valueMin(), - valueMouse = percentMouse * valueTotal, - valueMouseModStep = valueMouse % this.options.step, - normValue = this._valueMin() + valueMouse - valueMouseModStep; - - if (valueMouseModStep > (this.options.step / 2)) - normValue += this.options.step; - - // Since JavaScript has problems with large floats, round - // the final value to 5 digits after the decimal point (see #4124) - return parseFloat(normValue.toFixed(5)); + valueTotal = this._valueMax() - this._valueMin(); + valueMouse = this._valueMin() + percentMouse * valueTotal; + return this._trimAlignValue( valueMouse ); }, - _start: function(event, index) { + _start: function( event, index ) { var uiHash = { - handle: this.handles[index], + handle: this.handles[ index ], value: this.value() }; - if (this.options.values && this.options.values.length) { - uiHash.value = this.values(index); + if ( this.options.values && this.options.values.length ) { + uiHash.value = this.values( index ); uiHash.values = this.values(); } - this._trigger("start", event, uiHash); + return this._trigger( "start", event, uiHash ); }, - _slide: function(event, index, newVal) { + _slide: function( event, index, newVal ) { + var otherVal, + newValues, + allowed; - var handle = this.handles[index]; + if ( this.options.values && this.options.values.length ) { + otherVal = this.values( index ? 0 : 1 ); - if (this.options.values && this.options.values.length) { - - var otherVal = this.values(index ? 0 : 1); - - if ((this.options.values.length == 2 && this.options.range === true) && - ((index == 0 && newVal > otherVal) || (index == 1 && newVal < otherVal))){ - newVal = otherVal; + if ( ( this.options.values.length === 2 && this.options.range === true ) && + ( ( index === 0 && newVal > otherVal) || ( index === 1 && newVal < otherVal ) ) + ) { + newVal = otherVal; } - if (newVal != this.values(index)) { - var newValues = this.values(); - newValues[index] = newVal; + if ( newVal !== this.values( index ) ) { + newValues = this.values(); + newValues[ index ] = newVal; // A slide can be canceled by returning false from the slide callback - var allowed = this._trigger("slide", event, { - handle: this.handles[index], + allowed = this._trigger( "slide", event, { + handle: this.handles[ index ], value: newVal, values: newValues - }); - var otherVal = this.values(index ? 0 : 1); - if (allowed !== false) { - this.values(index, newVal, true); + } ); + otherVal = this.values( index ? 0 : 1 ); + if ( allowed !== false ) { + this.values( index, newVal, true ); } } - } else { - - if (newVal != this.value()) { + if ( newVal !== this.value() ) { // A slide can be canceled by returning false from the slide callback - var allowed = this._trigger("slide", event, { - handle: this.handles[index], + allowed = this._trigger( "slide", event, { + handle: this.handles[ index ], value: newVal - }); - if (allowed !== false) { - this.value(newVal); + } ); + if ( allowed !== false ) { + this.value( newVal ); } - } - } - }, - _stop: function(event, index) { + _stop: function( event, index ) { var uiHash = { - handle: this.handles[index], + handle: this.handles[ index ], value: this.value() }; - if (this.options.values && this.options.values.length) { - uiHash.value = this.values(index); + if ( this.options.values && this.options.values.length ) { + uiHash.value = this.values( index ); uiHash.values = this.values(); } - this._trigger("stop", event, uiHash); + + this._trigger( "stop", event, uiHash ); }, - _change: function(event, index) { - if (!this._keySliding && !this._mouseSliding) { + _change: function( event, index ) { + if ( !this._keySliding && !this._mouseSliding ) { var uiHash = { - handle: this.handles[index], + handle: this.handles[ index ], value: this.value() }; - if (this.options.values && this.options.values.length) { - uiHash.value = this.values(index); + if ( this.options.values && this.options.values.length ) { + uiHash.value = this.values( index ); uiHash.values = this.values(); } - this._trigger("change", event, uiHash); + + this._trigger( "change", event, uiHash ); } }, - value: function(newValue) { - - if (arguments.length) { - this.options.value = this._trimValue(newValue); + value: function( newValue ) { + if ( arguments.length ) { + this.options.value = this._trimAlignValue( newValue ); this._refreshValue(); - this._change(null, 0); + this._change( null, 0 ); } return this._value(); - }, - values: function(index, newValue) { + values: function( index, newValue ) { + var vals, + newValues, + i; - if (arguments.length > 1) { - this.options.values[index] = this._trimValue(newValue); + if ( arguments.length > 1 ) { + this.options.values[ index ] = this._trimAlignValue( newValue ); this._refreshValue(); - this._change(null, index); + this._change( null, index ); } - if (arguments.length) { - if ($.isArray(arguments[0])) { - var vals = this.options.values, newValues = arguments[0]; - for (var i = 0, l = vals.length; i < l; i++) { - vals[i] = this._trimValue(newValues[i]); - this._change(null, i); + if ( arguments.length ) { + if ( $.isArray( arguments[ 0 ] ) ) { + vals = this.options.values; + newValues = arguments[ 0 ]; + for ( i = 0; i < vals.length; i += 1 ) { + vals[ i ] = this._trimAlignValue( newValues[ i ] ); + this._change( null, i ); } this._refreshValue(); } else { - if (this.options.values && this.options.values.length) { - return this._values(index); + if ( this.options.values && this.options.values.length ) { + return this._values( index ); } else { return this.value(); } @@ -475,97 +501,107 @@ $.widget("ui.slider", $.ui.mouse, { } else { return this._values(); } - }, - _setOption: function(key, value) { - + _setOption: function( key, value ) { var i, valsLength = 0; - if ( jQuery.isArray(this.options.values) ) { + + if ( $.isArray( this.options.values ) ) { valsLength = this.options.values.length; - }; + } - $.Widget.prototype._setOption.apply(this, arguments); + $.Widget.prototype._setOption.apply( this, arguments ); - switch (key) { - case 'disabled': - if (value) { - this.handles.filter(".ui-state-focus").blur(); - this.handles.removeClass("ui-state-hover"); - this.handles.attr("disabled", "disabled"); - this.element.addClass("ui-disabled"); + switch ( key ) { + case "disabled": + if ( value ) { + this.handles.filter( ".ui-state-focus" ).blur(); + this.handles.removeClass( "ui-state-hover" ); + this.handles.attr( "disabled", "disabled" ); + this.element.addClass( "ui-disabled" ); } else { - this.handles.removeAttr("disabled"); - this.element.removeClass("ui-disabled"); + this.handles.removeAttr( "disabled" ); + this.element.removeClass( "ui-disabled" ); } - case 'orientation': - + break; + case "orientation": this._detectOrientation(); - this.element - .removeClass("ui-slider-horizontal ui-slider-vertical") - .addClass("ui-slider-" + this.orientation); + .removeClass( "ui-slider-horizontal ui-slider-vertical" ) + .addClass( "ui-slider-" + this.orientation ); this._refreshValue(); break; - case 'value': + case "value": this._animateOff = true; this._refreshValue(); - this._change(null, 0); + this._change( null, 0 ); this._animateOff = false; break; - case 'values': + case "values": this._animateOff = true; this._refreshValue(); - for (i = 0; i < valsLength; i++) { - this._change(null, i); + for ( i = 0; i < valsLength; i += 1 ) { + this._change( null, i ); } this._animateOff = false; break; } - }, + //internal value getter + // _value() returns value trimmed by min and max, aligned by step _value: function() { - //internal value getter - // _value() returns value trimmed by min and max var val = this.options.value; - val = this._trimValue(val); + val = this._trimAlignValue( val ); return val; }, - _values: function(index) { - //internal values getter - // _values() returns array of values trimmed by min and max - // _values(index) returns single value trimmed by min and max + //internal values getter + // _values() returns array of values trimmed by min and max, aligned by step + // _values( index ) returns single value trimmed by min and max, aligned by step + _values: function( index ) { + var val, + vals, + i; - if (arguments.length) { - var val = this.options.values[index]; - val = this._trimValue(val); + if ( arguments.length ) { + val = this.options.values[ index ]; + val = this._trimAlignValue( val ); return val; } else { // .slice() creates a copy of the array // this copy gets trimmed by min and max and then returned - var vals = this.options.values.slice(); - for (var i = 0, l = vals.length; i < l; i++) { - vals[i] = this._trimValue(vals[i]); + vals = this.options.values.slice(); + for ( i = 0; i < vals.length; i+= 1) { + vals[ i ] = this._trimAlignValue( vals[ i ] ); } return vals; } - }, - _trimValue: function(val) { - if (val < this._valueMin()) { + // returns the step-aligned value that val is closest to, between (inclusive) min and max + _trimAlignValue: function( val ) { + if ( val < this._valueMin() ) { return this._valueMin(); } - if (val > this._valueMax()) { + if ( val > this._valueMax() ) { return this._valueMax(); } - return val; + var step = this.options.step, + valModStep = val % step, + alignValue = val - valModStep; + + if ( valModStep >= ( step / 2 ) ) { + alignValue += step; + } + + // Since JavaScript has problems with large floats, round + // the final value to 5 digits after the decimal point (see #4124) + return parseFloat( alignValue.toFixed(5) ); }, _valueMin: function() { @@ -577,49 +613,70 @@ $.widget("ui.slider", $.ui.mouse, { }, _refreshValue: function() { - - var oRange = this.options.range, o = this.options, self = this; - var animate = (!this._animateOff) ? o.animate : false; - - if (this.options.values && this.options.values.length) { - var vp0, vp1; - this.handles.each(function(i, j) { - var valPercent = (self.values(i) - self._valueMin()) / (self._valueMax() - self._valueMin()) * 100; - var _set = {}; _set[self.orientation == 'horizontal' ? 'left' : 'bottom'] = valPercent + '%'; - $(this).stop(1,1)[animate ? 'animate' : 'css'](_set, o.animate); - if (self.options.range === true) { - if (self.orientation == 'horizontal') { - (i == 0) && self.range.stop(1,1)[animate ? 'animate' : 'css']({ left: valPercent + '%' }, o.animate); - (i == 1) && self.range[animate ? 'animate' : 'css']({ width: (valPercent - lastValPercent) + '%' }, { queue: false, duration: o.animate }); + var oRange = this.options.range, + o = this.options, + self = this, + animate = ( !this._animateOff ) ? o.animate : false, + valPercent, + _set = {}, + lastValPercent, + value, + valueMin, + valueMax; + + if ( this.options.values && this.options.values.length ) { + this.handles.each(function( i, j ) { + valPercent = ( self.values(i) - self._valueMin() ) / ( self._valueMax() - self._valueMin() ) * 100; + _set[ self.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%"; + $( this ).stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate ); + if ( self.options.range === true ) { + if ( self.orientation === "horizontal" ) { + if ( i === 0 ) { + self.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { left: valPercent + "%" }, o.animate ); + } + if ( i === 1 ) { + self.range[ animate ? "animate" : "css" ]( { width: ( valPercent - lastValPercent ) + "%" }, { queue: false, duration: o.animate } ); + } } else { - (i == 0) && self.range.stop(1,1)[animate ? 'animate' : 'css']({ bottom: (valPercent) + '%' }, o.animate); - (i == 1) && self.range[animate ? 'animate' : 'css']({ height: (valPercent - lastValPercent) + '%' }, { queue: false, duration: o.animate }); + if ( i === 0 ) { + self.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { bottom: ( valPercent ) + "%" }, o.animate ); + } + if ( i === 1 ) { + self.range[ animate ? "animate" : "css" ]( { height: ( valPercent - lastValPercent ) + "%" }, { queue: false, duration: o.animate } ); + } } } lastValPercent = valPercent; }); } else { - var value = this.value(), - valueMin = this._valueMin(), - valueMax = this._valueMax(), - valPercent = valueMax != valueMin - ? (value - valueMin) / (valueMax - valueMin) * 100 - : 0; - var _set = {}; _set[self.orientation == 'horizontal' ? 'left' : 'bottom'] = valPercent + '%'; - this.handle.stop(1,1)[animate ? 'animate' : 'css'](_set, o.animate); - - (oRange == "min") && (this.orientation == "horizontal") && this.range.stop(1,1)[animate ? 'animate' : 'css']({ width: valPercent + '%' }, o.animate); - (oRange == "max") && (this.orientation == "horizontal") && this.range[animate ? 'animate' : 'css']({ width: (100 - valPercent) + '%' }, { queue: false, duration: o.animate }); - (oRange == "min") && (this.orientation == "vertical") && this.range.stop(1,1)[animate ? 'animate' : 'css']({ height: valPercent + '%' }, o.animate); - (oRange == "max") && (this.orientation == "vertical") && this.range[animate ? 'animate' : 'css']({ height: (100 - valPercent) + '%' }, { queue: false, duration: o.animate }); + value = this.value(); + valueMin = this._valueMin(); + valueMax = this._valueMax(); + valPercent = ( valueMax !== valueMin ) ? + ( value - valueMin ) / ( valueMax - valueMin ) * 100 : + 0; + _set[ self.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%"; + this.handle.stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate ); + + if ( oRange === "min" && this.orientation === "horizontal" ) { + this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { width: valPercent + "%" }, o.animate ); + } + if ( oRange === "max" && this.orientation === "horizontal" ) { + this.range[ animate ? "animate" : "css" ]( { width: ( 100 - valPercent ) + "%" }, { queue: false, duration: o.animate } ); + } + if ( oRange === "min" && this.orientation === "vertical" ) { + this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( { height: valPercent + "%" }, o.animate ); + } + if ( oRange === "max" && this.orientation === "vertical" ) { + this.range[ animate ? "animate" : "css" ]( { height: ( 100 - valPercent ) + "%" }, { queue: false, duration: o.animate } ); + } } - } - + }); -$.extend($.ui.slider, { +$.extend( $.ui.slider, { version: "@VERSION" }); -})(jQuery); +}(jQuery)); diff --git a/ui/jquery.ui.tooltip.js b/ui/jquery.ui.tooltip.js deleted file mode 100644 index 166bff407..000000000 --- a/ui/jquery.ui.tooltip.js +++ /dev/null @@ -1,145 +0,0 @@ -/* - * jQuery UI Tooltip @VERSION - * - * Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about) - * Dual licensed under the MIT (MIT-LICENSE.txt) - * and GPL (GPL-LICENSE.txt) licenses. - * - * http://docs.jquery.com/UI/Tooltip - * - * Depends: - * jquery.ui.core.js - * jquery.ui.widget.js - * jquery.ui.position.js - */ -(function($) { - -// role=application on body required for screenreaders to correctly interpret aria attributes -if( !$(document.body).is('[role]') ){ - $(document.body).attr('role','application'); -} - -var increments = 0; - -$.widget("ui.tooltip", { - options: { - tooltipClass: "ui-widget-content", - content: function() { - return $(this).attr("title"); - }, - position: { - my: "left center", - at: "right center", - offset: "15 0" - } - }, - _init: function() { - var self = this; - this.tooltip = $("<div></div>") - .attr("id", "ui-tooltip-" + increments++) - .attr("role", "tooltip") - .attr("aria-hidden", "true") - .addClass("ui-tooltip ui-widget ui-corner-all") - .addClass(this.options.tooltipClass) - .appendTo(document.body) - .hide(); - this.tooltipContent = $("<div></div>") - .addClass("ui-tooltip-content") - .appendTo(this.tooltip); - this.opacity = this.tooltip.css("opacity"); - this.element - .bind("focus.tooltip mouseenter.tooltip", function(event) { - self.open(); - }) - .bind("blur.tooltip mouseleave.tooltip", function(event) { - self.close(); - }); - }, - - enable: function() { - this.options.disabled = false; - }, - - disable: function() { - this.options.disabled = true; - }, - - destroy: function() { - this.tooltip.remove(); - $.Widget.prototype.destroy.apply(this, arguments); - }, - - widget: function() { - return this.tooltip; - }, - - open: function() { - var target = this.element; - // already visible? possible when both focus and mouseover events occur - if (this.current && this.current[0] == target[0]) - return; - var self = this; - this.current = target; - this.currentTitle = target.attr("title"); - var content = this.options.content.call(target[0], function(response) { - // ignore async responses that come in after the tooltip is already hidden - if (self.current == target) - self._show(target, response); - }); - if (content) { - self._show(target, content); - } - }, - - _show: function(target, content) { - if (!content) - return; - - target.attr("title", ""); - - if (this.options.disabled) - return; - - this.tooltipContent.html(content); - this.tooltip.css({ - top: 0, - left: 0 - }).position($.extend(this.options.position, { - of: target - })); - - this.tooltip.attr("aria-hidden", "false"); - target.attr("aria-describedby", this.tooltip.attr("id")); - - if (this.tooltip.is(":animated")) - this.tooltip.stop().show().fadeTo("normal", this.opacity); - else - this.tooltip.is(':visible') ? this.tooltip.fadeTo("normal", this.opacity) : this.tooltip.fadeIn(); - - this._trigger( "open" ); - }, - - close: function() { - if (!this.current) - return; - - var current = this.current.attr("title", this.currentTitle); - this.current = null; - - if (this.options.disabled) - return; - - current.removeAttr("aria-describedby"); - this.tooltip.attr("aria-hidden", "true"); - - if (this.tooltip.is(':animated')) - this.tooltip.stop().fadeTo("normal", 0); - else - this.tooltip.stop().fadeOut(); - - this._trigger( "close" ); - } - -}); - -})(jQuery);
\ No newline at end of file diff --git a/ui/jquery.ui.widget.js b/ui/jquery.ui.widget.js index 49067449d..a9829d2e5 100644 --- a/ui/jquery.ui.widget.js +++ b/ui/jquery.ui.widget.js @@ -155,7 +155,7 @@ $.Widget.prototype = { .removeAttr( "aria-disabled" ) .removeClass( this.widgetBaseClass + "-disabled " + - this.namespace + "-state-disabled" ); + "ui-state-disabled" ); }, widget: function() { @@ -192,7 +192,7 @@ $.Widget.prototype = { this.widget() [ value ? "addClass" : "removeClass"]( this.widgetBaseClass + "-disabled" + " " + - this.namespace + "-state-disabled" ) + "ui-state-disabled" ) .attr( "aria-disabled", value ); } |