src/cm/media/js/lib/yui/yui3-3.15.0/build/slider-base/slider-base.js
author gibus
Mon, 10 Mar 2014 15:19:48 +0100
changeset 602 e16a97fb364a
permissions -rw-r--r--
Use YUI 3.15
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
602
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     1
YUI.add('slider-base', function (Y, NAME) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     2
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     3
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     4
 * Create a sliding value range input visualized as a draggable thumb on a
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     5
 * background element.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     6
 *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     7
 * @module slider
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     8
 * @submodule slider-base
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
     9
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    10
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    11
var INVALID_VALUE = Y.Attribute.INVALID_VALUE;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    12
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    13
/**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    14
 * Create a slider to represent an input control capable of representing a
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    15
 * series of intermediate states based on the position of the slider's thumb.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    16
 * These states are typically aligned to a value algorithm whereby the thumb
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    17
 * position corresponds to a given value. Sliders may be oriented vertically or
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    18
 * horizontally, based on the <code>axis</code> configuration.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    19
 *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    20
 * @class SliderBase
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    21
 * @extends Widget
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    22
 * @param config {Object} Configuration object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    23
 * @constructor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    24
 */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    25
function SliderBase() {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    26
    SliderBase.superclass.constructor.apply( this, arguments );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    27
}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    28
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    29
Y.SliderBase = Y.extend( SliderBase, Y.Widget, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    30
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    31
    // Y.Slider prototype
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    32
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    33
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    34
     * Construction logic executed during Slider instantiation.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    35
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    36
     * @method initializer
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    37
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    38
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    39
    initializer : function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    40
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    41
         * The configured axis, stored for fast lookup since it's a writeOnce
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    42
         * attribute.  This is for use by extension classes.  For
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    43
         * implementation code, use <code>get( &quot;axis&quot; )</code> for
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    44
         * authoritative source.  Never write to this property.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    45
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    46
         * @property axis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    47
         * @type {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    48
         * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    49
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    50
        this.axis = this.get( 'axis' );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    51
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    52
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    53
         * Cached fast access map for DOM properties and attributes that
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    54
         * pertain to accessing dimensional or positioning information
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    55
         * according to the Slider's axis (e.g. &quot;height&quot; vs.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    56
         * &quot;width&quot;).  Extension classes should add to this collection
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    57
         * for axis related strings if necessary.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    58
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    59
         * @property _key
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    60
         * @type {Object}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    61
         * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    62
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    63
        this._key = {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    64
            dim    : ( this.axis === 'y' ) ? 'height' : 'width',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    65
            minEdge: ( this.axis === 'y' ) ? 'top'    : 'left',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    66
            maxEdge: ( this.axis === 'y' ) ? 'bottom' : 'right',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    67
            xyIndex: ( this.axis === 'y' ) ? 1 : 0
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    68
        };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    69
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    70
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    71
         * Signals that the thumb has moved.  Payload includes the thumb's
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    72
         * pixel offset from the top/left edge of the rail, and if triggered by
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    73
         * dragging the thumb, the <code>drag:drag</code> event.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    74
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    75
         * @event thumbMove
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    76
         * @param event {Event} The event object for the thumbMove with the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    77
         *                      following extra properties:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    78
         *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    79
         *      <dt>offset</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    80
         *          <dd>Pixel offset from top/left of the slider to the new
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    81
         *          thumb position</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    82
         *      <dt>ddEvent (deprecated)</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    83
         *          <dd><code>drag:drag</code> event from the thumb</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    84
         *      <dt>originEvent</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    85
         *          <dd><code>drag:drag</code> event from the thumb</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    86
         *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    87
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    88
        this.publish( 'thumbMove', {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    89
            defaultFn: this._defThumbMoveFn,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    90
            queuable : true
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    91
        } );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    92
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    93
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    94
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    95
     * Create the DOM structure for the Slider.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    96
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    97
     * @method renderUI
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    98
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
    99
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   100
    renderUI : function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   101
        var contentBox = this.get( 'contentBox' );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   102
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   103
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   104
         * The Node instance of the Slider's rail element.  Do not write to
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   105
         * this property.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   106
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   107
         * @property rail
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   108
         * @type {Node}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   109
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   110
        this.rail = this.renderRail();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   111
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   112
        this._uiSetRailLength( this.get( 'length' ) );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   113
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   114
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   115
         * The Node instance of the Slider's thumb element.  Do not write to
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   116
         * this property.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   117
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   118
         * @property thumb
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   119
         * @type {Node}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   120
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   121
        this.thumb = this.renderThumb();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   122
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   123
        this.rail.appendChild( this.thumb );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   124
        // @TODO: insert( contentBox, 'replace' ) or setHTML?
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   125
        contentBox.appendChild( this.rail );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   126
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   127
        // <span class="yui3-slider-x">
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   128
        contentBox.addClass( this.getClassName( this.axis ) );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   129
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   130
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   131
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   132
     * Creates the Slider rail DOM subtree for insertion into the Slider's
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   133
     * <code>contentBox</code>.  Override this method if you want to provide
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   134
     * the rail element (presumably from existing markup).
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   135
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   136
     * @method renderRail
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   137
     * @return {Node} the rail node subtree
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   138
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   139
    renderRail: function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   140
        var minCapClass = this.getClassName( 'rail', 'cap', this._key.minEdge ),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   141
            maxCapClass = this.getClassName( 'rail', 'cap', this._key.maxEdge );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   142
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   143
        return Y.Node.create(
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   144
            Y.Lang.sub( this.RAIL_TEMPLATE, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   145
                railClass      : this.getClassName( 'rail' ),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   146
                railMinCapClass: minCapClass,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   147
                railMaxCapClass: maxCapClass
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   148
            } ) );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   149
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   150
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   151
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   152
     * Sets the rail length according to the <code>length</code> attribute.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   153
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   154
     * @method _uiSetRailLength
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   155
     * @param length {String} the length to apply to the rail style
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   156
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   157
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   158
    _uiSetRailLength: function ( length ) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   159
        this.rail.setStyle( this._key.dim, length );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   160
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   161
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   162
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   163
     * Creates the Slider thumb DOM subtree for insertion into the Slider's
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   164
     * rail.  Override this method if you want to provide the thumb element
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   165
     * (presumably from existing markup).
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   166
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   167
     * @method renderThumb
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   168
     * @return {Node} the thumb node subtree
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   169
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   170
    renderThumb: function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   171
        this._initThumbUrl();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   172
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   173
        var imageUrl = this.get( 'thumbUrl' );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   174
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   175
        return Y.Node.create(
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   176
            Y.Lang.sub( this.THUMB_TEMPLATE, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   177
                thumbClass      : this.getClassName( 'thumb' ),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   178
                thumbShadowClass: this.getClassName( 'thumb', 'shadow' ),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   179
                thumbImageClass : this.getClassName( 'thumb', 'image' ),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   180
                thumbShadowUrl  : imageUrl,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   181
                thumbImageUrl   : imageUrl,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   182
                thumbAriaLabelId: this.getClassName( 'label', Y.guid()) // get unique id for specifying a label for ARIA
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   183
            } ) );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   184
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   185
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   186
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   187
     * Gives focus to the thumb enabling keyboard access after clicking thumb
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   188
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   189
     * @method _onThumbClick
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   190
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   191
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   192
    _onThumbClick : function(e){
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   193
        this.thumb.focus();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   194
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   195
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   196
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   197
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   198
     * Creates the Y.DD.Drag instance used to handle the thumb movement and
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   199
     * binds Slider interaction to the configured value model.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   200
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   201
     * @method bindUI
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   202
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   203
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   204
    bindUI : function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   205
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   206
        // Begin keyboard listeners ///////////////////////////////
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   207
        var boundingBox = this.get("boundingBox"), //Y.one('body'),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   208
        // Looking for a key event which will fire continously across browsers while the key is held down.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   209
        keyEvent = (!Y.UA.opera) ? "down:" : "press:",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   210
        // 38, 40 = arrow up/down, 33, 34 = page up/down,  35 , 36 = end/home
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   211
        keyEventSpec = keyEvent + "38,40,33,34,35,36",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   212
        // 37 , 39 = arrow left/right
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   213
        keyLeftRightSpec = keyEvent + "37,39",
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   214
        // 37 , 39 = arrow left/right + meta (command/apple key) for mac
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   215
        keyLeftRightSpecMeta = keyEvent + "37+meta,39+meta";
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   216
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   217
        boundingBox.on("key", this._onDirectionKey, keyEventSpec, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   218
        boundingBox.on("key", this._onLeftRightKey, keyLeftRightSpec, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   219
        boundingBox.on("key", this._onLeftRightKeyMeta, keyLeftRightSpecMeta, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   220
        // End keyboard listeners //////////////////////////////////
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   221
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   222
        this.thumb.on('click', this._onThumbClick, this);
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   223
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   224
        this._bindThumbDD();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   225
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   226
        this._bindValueLogic();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   227
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   228
        this.after( 'disabledChange', this._afterDisabledChange );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   229
        this.after( 'lengthChange',   this._afterLengthChange );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   230
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   231
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   232
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   233
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   234
     * increments Slider value by a minor increment
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   235
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   236
     * @method _incrMinor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   237
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   238
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   239
    _incrMinor : function(){
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   240
        this.set('value', (this.get('value') + this.get('minorStep')));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   241
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   242
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   243
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   244
     * decrements Slider value by a minor increment
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   245
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   246
     * @method _decrMinor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   247
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   248
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   249
    _decrMinor : function(){
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   250
        this.set('value', (this.get('value') - this.get('minorStep')));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   251
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   252
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   253
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   254
     * increments Slider value by a major increment
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   255
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   256
     * @method _incrMajor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   257
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   258
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   259
    _incrMajor : function(){
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   260
        this.set('value', (this.get('value') + this.get('majorStep')));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   261
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   262
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   263
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   264
     * decrements Slider value by a major increment
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   265
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   266
     * @method _decrMajor
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   267
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   268
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   269
    _decrMajor : function(){
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   270
        this.set('value', (this.get('value') - this.get('majorStep')));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   271
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   272
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   273
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   274
     * sets the Slider value to the min value.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   275
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   276
     * @method _setToMin
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   277
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   278
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   279
    _setToMin : function(e){
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   280
        this.set('value', this.get('min'));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   281
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   282
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   283
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   284
     * sets the Slider value to the max value.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   285
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   286
     * @method _setToMax
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   287
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   288
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   289
    _setToMax : function(e){
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   290
        this.set('value', this.get('max'));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   291
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   292
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   293
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   294
     * sets the Slider's value in response to key events.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   295
     * Left and right keys are in a separate method
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   296
     * in case an implementation wants to increment values
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   297
     * but needs left and right arrow keys for other purposes.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   298
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   299
     * @method _onDirectionKey
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   300
     * @param e {Event} the key event
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   301
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   302
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   303
    _onDirectionKey : function(e) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   304
        e.preventDefault();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   305
        if(this.get('disabled') === false){
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   306
            switch (e.charCode) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   307
                case 38: // up
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   308
                    this._incrMinor();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   309
                    break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   310
                case 40: // down
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   311
                    this._decrMinor();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   312
                    break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   313
                case 36: // home
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   314
                    this._setToMin();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   315
                    break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   316
                case 35: // end
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   317
                    this._setToMax();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   318
                    break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   319
                case 33: // page up
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   320
                    this._incrMajor();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   321
                    break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   322
                case 34: // page down
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   323
                    this._decrMajor();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   324
                    break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   325
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   326
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   327
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   328
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   329
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   330
     * sets the Slider's value in response to left or right key events
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   331
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   332
     * @method _onLeftRightKey
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   333
     * @param e {Event} the key event
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   334
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   335
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   336
    _onLeftRightKey : function(e) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   337
        e.preventDefault();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   338
        if(this.get('disabled') === false){
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   339
            switch (e.charCode) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   340
                case 37: // left
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   341
                    this._decrMinor();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   342
                    break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   343
                case 39: // right
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   344
                    this._incrMinor();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   345
                    break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   346
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   347
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   348
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   349
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   350
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   351
     * sets the Slider's value in response to left or right key events when a meta (mac command/apple) key is also pressed
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   352
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   353
     * @method _onLeftRightKeyMeta
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   354
     * @param e {Event} the key event
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   355
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   356
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   357
    _onLeftRightKeyMeta : function(e) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   358
        e.preventDefault();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   359
        if(this.get('disabled') === false){
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   360
            switch (e.charCode) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   361
                case 37: // left + meta
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   362
                    this._setToMin();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   363
                    break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   364
                case 39: // right + meta
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   365
                    this._setToMax();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   366
                    break;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   367
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   368
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   369
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   370
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   371
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   372
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   373
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   374
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   375
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   376
     * Makes the thumb draggable and constrains it to the rail.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   377
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   378
     * @method _bindThumbDD
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   379
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   380
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   381
    _bindThumbDD: function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   382
        var config = { constrain: this.rail };
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   383
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   384
        // { constrain: rail, stickX: true }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   385
        config[ 'stick' + this.axis.toUpperCase() ] = true;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   386
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   387
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   388
         * The DD.Drag instance linked to the thumb node.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   389
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   390
         * @property _dd
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   391
         * @type {DD.Drag}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   392
         * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   393
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   394
        this._dd = new Y.DD.Drag( {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   395
            node   : this.thumb,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   396
            bubble : false,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   397
            on     : {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   398
                'drag:start': Y.bind( this._onDragStart, this )
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   399
            },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   400
            after  : {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   401
                'drag:drag': Y.bind( this._afterDrag,    this ),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   402
                'drag:end' : Y.bind( this._afterDragEnd, this )
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   403
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   404
        } );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   405
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   406
        // Constrain the thumb to the rail
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   407
        this._dd.plug( Y.Plugin.DDConstrained, config );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   408
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   409
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   410
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   411
     * Stub implementation.  Override this (presumably in a class extension) to
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   412
     * initialize any value logic that depends on the presence of the Drag
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   413
     * instance.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   414
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   415
     * @method _bindValueLogic
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   416
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   417
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   418
    _bindValueLogic: function () {},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   419
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   420
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   421
     * Moves the thumb to pixel offset position along the rail.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   422
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   423
     * @method _uiMoveThumb
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   424
     * @param offset {Number} the pixel offset to set as left or top style
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   425
     * @param [options] {Object} Details to send with the `thumbMove` event
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   426
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   427
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   428
    _uiMoveThumb: function ( offset, options ) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   429
        if ( this.thumb ) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   430
            this.thumb.setStyle( this._key.minEdge, offset + 'px' );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   431
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   432
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   433
            options || (options = {});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   434
            options.offset = offset;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   435
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   436
            this.fire( 'thumbMove', options );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   437
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   438
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   439
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   440
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   441
     * Dispatches the <code>slideStart</code> event.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   442
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   443
     * @method _onDragStart
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   444
     * @param e {Event} the <code>drag:start</code> event from the thumb
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   445
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   446
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   447
    _onDragStart: function ( e ) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   448
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   449
         * Signals the beginning of a thumb drag operation.  Payload includes
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   450
         * the thumb's drag:start event.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   451
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   452
         * @event slideStart
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   453
         * @param event {Event} The event object for the slideStart with the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   454
         *                      following extra properties:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   455
         *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   456
         *      <dt>ddEvent (deprecated)</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   457
         *          <dd><code>drag:start</code> event from the thumb</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   458
         *      <dt>originEvent</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   459
         *          <dd><code>drag:start</code> event from the thumb</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   460
         *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   461
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   462
        this.fire('slideStart', {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   463
           ddEvent: e, // for backward compatibility
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   464
           originEvent: e
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   465
        });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   466
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   467
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   468
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   469
     * Dispatches the <code>thumbMove</code> event.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   470
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   471
     * @method _afterDrag
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   472
     * @param e {Event} the <code>drag:drag</code> event from the thumb
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   473
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   474
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   475
    _afterDrag: function ( e ) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   476
        var thumbXY = e.info.xy[ this._key.xyIndex ],
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   477
            railXY  = e.target.con._regionCache[ this._key.minEdge ];
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   478
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   479
        this.fire( 'thumbMove', {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   480
            offset : (thumbXY - railXY),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   481
            ddEvent: e, // for backward compatibility
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   482
            originEvent: e
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   483
        } );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   484
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   485
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   486
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   487
     * Dispatches the <code>slideEnd</code> event.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   488
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   489
     * @method _onDragEnd
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   490
     * @param e {Event} the <code>drag:end</code> event from the thumb
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   491
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   492
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   493
    _afterDragEnd: function ( e ) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   494
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   495
         * Signals the end of a thumb drag operation.  Payload includes
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   496
         * the thumb's drag:end event.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   497
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   498
         * @event slideEnd
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   499
         * @param event {Event} The event object for the slideEnd with the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   500
         *                      following extra properties:
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   501
         *  <dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   502
         *      <dt>ddEvent (deprecated)</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   503
         *          <dd><code>drag:end</code> event from the thumb</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   504
         *      <dt>originEvent</dt>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   505
         *          <dd><code>drag:end</code> event from the thumb</dd>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   506
         *  </dl>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   507
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   508
        this.fire('slideEnd', {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   509
            ddEvent: e,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   510
            originEvent: e
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   511
        });
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   512
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   513
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   514
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   515
     * Locks or unlocks the thumb.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   516
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   517
     * @method _afterDisabledChange
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   518
     * @param e {Event} The disabledChange event object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   519
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   520
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   521
    _afterDisabledChange: function ( e ) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   522
        this._dd.set( 'lock', e.newVal );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   523
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   524
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   525
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   526
     * Handles changes to the <code>length</code> attribute.  By default, it
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   527
     * triggers an update to the UI.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   528
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   529
     * @method _afterLengthChange
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   530
     * @param e {Event} The lengthChange event object
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   531
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   532
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   533
    _afterLengthChange: function ( e ) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   534
        if ( this.get( 'rendered' ) ) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   535
            this._uiSetRailLength( e.newVal );
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   536
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   537
            this.syncUI();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   538
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   539
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   540
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   541
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   542
     * Synchronizes the DOM state with the attribute settings.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   543
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   544
     * @method syncUI
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   545
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   546
    syncUI : function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   547
        this._dd.con.resetCache();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   548
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   549
        this._syncThumbPosition();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   550
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   551
        // Forces a reflow of the bounding box to address IE8 inline-block
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   552
        // container not expanding correctly. bug 2527905
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   553
        //this.get('boundingBox').toggleClass('');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   554
        this.thumb.set('aria-valuemin', this.get('min'));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   555
        this.thumb.set('aria-valuemax', this.get('max'));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   556
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   557
        this._dd.set('lock', this.get('disabled'));
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   558
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   559
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   560
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   561
     * Stub implementation.  Override this (presumably in a class extension) to
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   562
     * ensure the thumb is in the correct position according to the value
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   563
     * alogorithm.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   564
     * instance.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   565
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   566
     * @method _syncThumbPosition
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   567
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   568
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   569
    _syncThumbPosition: function () {},
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   570
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   571
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   572
     * Validates the axis is &quot;x&quot; or &quot;y&quot; (case insensitive).
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   573
     * Converts to lower case for storage.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   574
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   575
     * @method _setAxis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   576
     * @param v {String} proposed value for the axis attribute
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   577
     * @return {String} lowercased first character of the input string
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   578
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   579
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   580
    _setAxis : function (v) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   581
        v = ( v + '' ).toLowerCase();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   582
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   583
        return ( v === 'x' || v === 'y' ) ? v : INVALID_VALUE;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   584
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   585
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   586
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   587
     * <p>Ensures the stored length value is a string with a quantity and unit.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   588
     * Unit will be defaulted to &quot;px&quot; if not included.  Rejects
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   589
     * values less than or equal to 0 and those that don't at least start with
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   590
     * a number.</p>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   591
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   592
     * <p>Currently only pixel lengths are supported.</p>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   593
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   594
     * @method _setLength
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   595
     * @param v {String} proposed value for the length attribute
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   596
     * @return {String} the sanitized value
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   597
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   598
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   599
    _setLength: function ( v ) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   600
        v = ( v + '' ).toLowerCase();
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   601
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   602
        var length = parseFloat( v, 10 ),
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   603
            units  = v.replace( /[\d\.\-]/g, '' ) || this.DEF_UNIT;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   604
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   605
        return length > 0 ? ( length + units ) : INVALID_VALUE;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   606
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   607
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   608
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   609
     * <p>Defaults the thumbURL attribute according to the current skin, or
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   610
     * &quot;sam&quot; if none can be determined.  Horizontal Sliders will have
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   611
     * their <code>thumbUrl</code> attribute set to</p>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   612
     * <p><code>&quot;/<em>configured</em>/<em>yu</em>i/<em>builddi</em>r/slider-base/assets/skins/sam/thumb-x.png&quot;</code></p>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   613
     * <p>And vertical thumbs will get</p>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   614
     * <p><code>&quot;/<em>configured</em>/<em>yui</em>/<em>builddir</em>/slider-base/assets/skins/sam/thumb-y.png&quot;</code></p>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   615
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   616
     * @method _initThumbUrl
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   617
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   618
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   619
    _initThumbUrl: function () {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   620
        if (!this.get('thumbUrl')) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   621
            var skin = this.getSkinName() || 'sam',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   622
                base = Y.config.base;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   623
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   624
            // Unfortunate hack to avoid requesting image resources from the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   625
            // combo service.  The combo service does not serve images.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   626
            if (base.indexOf('http://yui.yahooapis.com/combo') === 0) {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   627
                base = 'http://yui.yahooapis.com/' + Y.version + '/build/';
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   628
            }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   629
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   630
            // <img src="/path/to/build/slider-base/assets/skins/sam/thumb-x.png">
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   631
            this.set('thumbUrl', base + 'slider-base/assets/skins/' +
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   632
                                 skin + '/thumb-' + this.axis + '.png');
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   633
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   634
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   635
    },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   636
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   637
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   638
     * Bounding box template that will contain the Slider's DOM subtree.  &lt;span&gt;s are used to support inline-block styling.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   639
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   640
     * @property BOUNDING_TEMPLATE
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   641
     * @type {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   642
     * @default &lt;span>&lt;/span>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   643
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   644
    BOUNDING_TEMPLATE : '<span></span>',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   645
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   646
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   647
     * Content box template that will contain the Slider's rail and thumb.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   648
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   649
     * @property CONTENT_TEMPLATE
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   650
     * @type {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   651
     * @default &lt;span>&lt;/span>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   652
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   653
    CONTENT_TEMPLATE  : '<span></span>',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   654
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   655
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   656
     * Rail template that will contain the end caps and the thumb.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   657
     * {placeholder}s are used for template substitution at render time.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   658
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   659
     * @property RAIL_TEMPLATE
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   660
     * @type {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   661
     * @default &lt;span class="{railClass}">&lt;span class="{railMinCapClass}">&lt;/span>&lt;span class="{railMaxCapClass}">&lt;/span>&lt;/span>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   662
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   663
    RAIL_TEMPLATE     : '<span class="{railClass}">' +
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   664
                            '<span class="{railMinCapClass}"></span>' +
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   665
                            '<span class="{railMaxCapClass}"></span>' +
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   666
                        '</span>',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   667
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   668
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   669
     * Thumb template that will contain the thumb image and shadow. &lt;img>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   670
     * tags are used instead of background images to avoid a flicker bug in IE.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   671
     * {placeholder}s are used for template substitution at render time.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   672
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   673
     * @property THUMB_TEMPLATE
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   674
     * @type {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   675
     * @default &lt;span class="{thumbClass}" tabindex="-1">&lt;img src="{thumbShadowUrl}" alt="Slider thumb shadow" class="{thumbShadowClass}">&lt;img src="{thumbImageUrl}" alt="Slider thumb" class="{thumbImageClass}">&lt;/span>
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   676
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   677
    THUMB_TEMPLATE    : '<span class="{thumbClass}" aria-labelledby="{thumbAriaLabelId}" aria-valuetext="" aria-valuemax="" aria-valuemin="" aria-valuenow="" role="slider" tabindex="0">' +   // keyboard access jeff     tabindex="-1"
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   678
                            '<img src="{thumbShadowUrl}" ' +
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   679
                                'alt="Slider thumb shadow" ' +
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   680
                                'class="{thumbShadowClass}">' +
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   681
                            '<img src="{thumbImageUrl}" ' +
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   682
                                'alt="Slider thumb" ' +
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   683
                                'class="{thumbImageClass}">' +
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   684
                        '</span>'
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   685
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   686
}, {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   687
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   688
    // Y.SliderBase static properties
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   689
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   690
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   691
     * The identity of the widget.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   692
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   693
     * @property NAME
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   694
     * @type String
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   695
     * @default 'sliderBase'
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   696
     * @readOnly
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   697
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   698
     * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   699
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   700
    NAME : 'sliderBase',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   701
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   702
    /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   703
     * Static property used to define the default attribute configuration of
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   704
     * the Widget.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   705
     *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   706
     * @property ATTRS
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   707
     * @type {Object}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   708
     * @protected
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   709
     * @static
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   710
     */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   711
    ATTRS : {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   712
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   713
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   714
         * Axis upon which the Slider's thumb moves.  &quot;x&quot; for
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   715
         * horizontal, &quot;y&quot; for vertical.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   716
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   717
         * @attribute axis
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   718
         * @type {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   719
         * @default &quot;x&quot;
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   720
         * @writeOnce
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   721
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   722
        axis : {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   723
            value     : 'x',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   724
            writeOnce : true,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   725
            setter    : '_setAxis',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   726
            lazyAdd   : false
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   727
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   728
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   729
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   730
         * The length of the rail (exclusive of the end caps if positioned by
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   731
         * CSS).  This corresponds to the movable range of the thumb.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   732
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   733
         * @attribute length
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   734
         * @type {String | Number} e.g. "200px" or 200
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   735
         * @default 150px
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   736
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   737
        length: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   738
            value: '150px',
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   739
            setter: '_setLength'
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   740
        },
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   741
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   742
        /**
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   743
         * Path to the thumb image.  This will be used as both the thumb and
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   744
         * shadow as a sprite.  Defaults at render() to thumb-x.png or
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   745
         * thumb-y.png in the skin directory of the current skin.
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   746
         *
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   747
         * @attribute thumbUrl
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   748
         * @type {String}
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   749
         * @default thumb-x.png or thumb-y.png in the sam skin directory of the
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   750
         *          current build path for Slider
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   751
         */
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   752
        thumbUrl: {
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   753
            value: null,
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   754
            validator: Y.Lang.isString
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   755
        }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   756
    }
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   757
});
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   758
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   759
e16a97fb364a Use YUI 3.15
gibus
parents:
diff changeset
   760
}, '@VERSION@', {"requires": ["widget", "dd-constrain", "event-key"], "skinnable": true});