slider-value-range-debug.js revision a79d36e65c99c6422a9eb88d1fc3be127e92b391
550N/A * Adds value support for Slider as a range of integers between a configured 919N/A * minimum and maximum value. For use with <code>Y.Base.build(..)</code> to 919N/A * add the plumbing to <code>Y.SliderBase</code>. 919N/A * @submodule slider-value-range 919N/A// Constants for compression or performance 919N/A// MINORSTEP = 'minorStep', 919N/A// MAJORSTEP = 'majorStep', 550N/A * One class of value algorithm that can be built onto SliderBase. By default, 550N/A * values range between 0 and 100, but you can configure these on the 550N/A * built Slider class by setting the <code>min</code> and <code>max</code> 550N/A * configurations. Set the initial value (will cause the thumb to move to the 550N/A * appropriate location on the rail) in configuration as well if appropriate. 550N/A * @class SliderValueRange 550N/A // Prototype properties and methods that will be added onto host class 550N/A * Factor used to translate value -> position -> value. * Stub for construction logic. Override if extending this class and * you need to set something up during the initializer phase. * @method _initSliderValueRange * Override of stub method in SliderBase that is called at the end of * its bindUI stage of render(). Subscribes to internal events to * trigger UI and related state updates. * @method _bindValueLogic * Move the thumb to appropriate position if necessary. Also resets * the cached offsets and recalculates the conversion factor to * translate position to value. * @method _syncThumbPosition * (range between max and min) / (rail length) * for fast runtime calculation of position -> value. * @method _calculateFactor // The default thumb width is based on Sam skin's thumb dimension. // This attempts to allow for rendering off-DOM, then attaching // without the need to call syncUI(). It is still recommended // to call syncUI() in these cases though, just to be sure. * Dispatch the new position of the thumb into the value setting * @method _defThumbMoveFn * @param e { EventFacade } The host's thumbMove event // This test avoids duplication of this.set(..) if the origin // of this thumbMove is from slider.set('value',x); // slider.set() -> afterValueChange -> uiMoveThumb -> // fire(thumbMove) -> _defThumbMoveFn -> this.set() /* FIXME: aria and keyboard have problems with this "if condition" when slider length is less than max - min. If the value change caused by keyboard doesn't result in the thumb moving, the value is set back to previous value * <p>Converts a pixel position into a value. Calculates current * thumb offset from the leading edge of the rail multiplied by the * ratio of <code>(max - min) / (constraining dim)</code>.</p> * <p>Override this if you want to use a different value mapping * @param offset { Number } X or Y pixel offset * @return { mixed } Value corresponding to the provided pixel offset * Converts a value into a pixel offset for use in positioning * the thumb according to the reverse of the * <code>_offsetToValue( xy )</code> operation. * @param val { Number } The value to map to pixel X or Y position * @return { Number } The pixel offset * Returns the current value. Override this if you want to introduce * output formatting. Otherwise equivalent to slider.get( "value" ); * Updates the current value. Override this if you want to introduce * input value parsing or preprocessing. Otherwise equivalent to * slider.set( "value", v ); * @param val {Number} The new value * Update position according to new min value. If the new min results * in the current value being out of range, the value is set to the * @method _afterMinChange * @param e { EventFacade } The <code>min</code> attribute change event. * Update position according to new max value. If the new max results * in the current value being out of range, the value is set to the * @method _afterMaxChange * @param e { EventFacade } The <code>max</code> attribute change event. * Verifies that the current value is within the min - max range. If * not, value is set to either min or max, depending on which is // @TODO Can/should valueChange, minChange, etc be queued // events? To make dd.set( 'min', n ); execute after minChange // subscribers before on/after valueChange subscribers. * Propagate change to the thumb position unless the change originated * from the thumbMove event. * @method _afterValueChange * @param e { EventFacade } The <code>valueChange</code> event. Y.
log(
"Positioning thumb after set('value',x)",
"info",
"slider");
* Positions the thumb in accordance with the translated value. * Validates new values assigned to <code>min</code> attribute. Numbers * are acceptable. Override this to enforce different rules. * @method _validateNewMin * @param value { mixed } Value assigned to <code>min</code> attribute. * @return { Boolean } True for numbers. False otherwise. * Validates new values assigned to <code>max</code> attribute. Numbers * are acceptable. Override this to enforce different rules. * @method _validateNewMax * @param value { mixed } Value assigned to <code>max</code> attribute. * @return { Boolean } True for numbers. False otherwise. * Restricts new values assigned to <code>value</code> attribute to be * between the configured <code>min</code> and <code>max</code>. * Rounds to nearest integer value. * @param value { Number } Value assigned to <code>value</code> attribute * @return { Number } Normalized and constrained value * Returns the nearest valid value to the value input. If the provided * value is outside the min - max range, accounting for min > max * scenarios, the nearest of either min or max is returned. Otherwise, * the provided value is returned. * @param value { mixed } Value to test against current min - max range * @return { Number } Current min, max, or value if within range // Account for reverse value range (min > max) * Attributes that will be added onto host class. * The value associated with the farthest top, left position of the * rail. Can be greater than the configured <code>max</code> if you * want values to increase from right-to-left or bottom-to-top. * The value associated with the farthest bottom, right position of * the rail. Can be less than the configured <code>min</code> if * you want values to increase from right-to-left or bottom-to-top. * when the page up/down keys are pressed * The value associated with the thumb's current position on the * rail. Defaults to the value inferred from the thumb's current * position. Specifying value in the constructor will move the * thumb to the position that corresponds to the supplied value. * @default (inferred from current thumb position) },
'@VERSION@' ,{
requires:[
'slider-base']});