src/cm/media/js/lib/yui/yui_3.10.3/build/scrollview-scrollbars/scrollview-scrollbars-debug.js
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 525 89ef5ed3c48b
permissions -rw-r--r--
add link to "privacy policy" in the header test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     1
/*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     2
YUI 3.10.3 (build 2fb5187)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     3
Copyright 2013 Yahoo! Inc. All rights reserved.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     4
Licensed under the BSD License.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     5
http://yuilibrary.com/license/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     6
*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     7
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     8
YUI.add('scrollview-scrollbars', function (Y, NAME) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     9
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    10
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    11
 * Provides a plugin, which adds support for a scroll indicator to ScrollView instances
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
 * @module scrollview
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
 * @submodule scrollview-scrollbars
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
var getClassName = Y.ClassNameManager.getClassName,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
    _classNames,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
    Transition = Y.Transition,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
    NATIVE_TRANSITIONS = Transition.useNative,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
    SCROLLBAR = 'scrollbar',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
    SCROLLVIEW = 'scrollview',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
    VERTICAL_NODE = "verticalNode",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
    HORIZONTAL_NODE = "horizontalNode",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
    CHILD_CACHE = "childCache",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
    TOP = "top",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
    LEFT = "left",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
    WIDTH = "width",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
    HEIGHT = "height",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
    HORIZ_CACHE = "_sbh",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
    VERT_CACHE = "_sbv",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
    TRANSITION_PROPERTY = Y.ScrollView._TRANSITION.PROPERTY,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
    TRANSFORM = "transform",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
    TRANSLATE_X = "translateX(",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
    TRANSLATE_Y = "translateY(",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
    SCALE_X = "scaleX(",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
    SCALE_Y = "scaleY(",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
    SCROLL_X = "scrollX",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
    SCROLL_Y = "scrollY",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
    PX = "px",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
    CLOSE = ")",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
    PX_CLOSE = PX + CLOSE;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
 * ScrollView plugin that adds scroll indicators to ScrollView instances
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
 * @class ScrollViewScrollbars
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
 * @namespace Plugin
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
 * @extends Plugin.Base
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
 * @constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
function ScrollbarsPlugin() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
    ScrollbarsPlugin.superclass.constructor.apply(this, arguments);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
ScrollbarsPlugin.CLASS_NAMES = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
    showing: getClassName(SCROLLVIEW, SCROLLBAR, 'showing'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
    scrollbar: getClassName(SCROLLVIEW, SCROLLBAR),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
    scrollbarV: getClassName(SCROLLVIEW, SCROLLBAR, 'vert'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
    scrollbarH: getClassName(SCROLLVIEW, SCROLLBAR, 'horiz'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
    scrollbarVB: getClassName(SCROLLVIEW, SCROLLBAR, 'vert', 'basic'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
    scrollbarHB: getClassName(SCROLLVIEW, SCROLLBAR, 'horiz', 'basic'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
    child: getClassName(SCROLLVIEW, 'child'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
    first: getClassName(SCROLLVIEW, 'first'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
    middle: getClassName(SCROLLVIEW, 'middle'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
    last: getClassName(SCROLLVIEW, 'last')
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
_classNames = ScrollbarsPlugin.CLASS_NAMES;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
 * The identity of the plugin
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
 * @property NAME
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
 * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
 * @default 'pluginScrollViewScrollbars'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
 * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
ScrollbarsPlugin.NAME = 'pluginScrollViewScrollbars';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
 * The namespace on which the plugin will reside.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
 * @property NS
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
 * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
 * @default 'scrollbars'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
 * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
ScrollbarsPlugin.NS = 'scrollbars';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
 * HTML template for the scrollbar
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
 * @property SCROLLBAR_TEMPLATE
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
 * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
 * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
ScrollbarsPlugin.SCROLLBAR_TEMPLATE = [
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
    '<div>',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
    '<span class="' + _classNames.child + ' ' + _classNames.first + '"></span>',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
    '<span class="' + _classNames.child + ' ' + _classNames.middle + '"></span>',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
    '<span class="' + _classNames.child + ' ' + _classNames.last + '"></span>',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
    '</div>'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
].join('');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
 * The default attribute configuration for the plugin
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
 *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
 * @property ATTRS
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
 * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
 * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
ScrollbarsPlugin.ATTRS = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
     * Vertical scrollbar node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
     * @attribute verticalNode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
     * @type Y.Node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
    verticalNode: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
        setter: '_setNode',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
        valueFn: '_defaultNode'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
     * Horizontal scrollbar node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
     * @attribute horizontalNode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
     * @type Y.Node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
    horizontalNode: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
        setter: '_setNode',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
        valueFn: '_defaultNode'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
Y.namespace("Plugin").ScrollViewScrollbars = Y.extend(ScrollbarsPlugin, Y.Plugin.Base, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
     * Designated initializer
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
     * @method initializer
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
    initializer: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
        this._host = this.get("host");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
        this.afterHostEvent('scrollEnd', this._hostScrollEnd);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
        this.afterHostMethod('scrollTo', this._update);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
        this.afterHostMethod('_uiDimensionsChange', this._hostDimensionsChange);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
     * Set up the DOM nodes for the scrollbars. This method is invoked whenever the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
     * host's _uiDimensionsChange fires, giving us the opportunity to remove un-needed
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
     * scrollbars, as well as add one if necessary.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
     * @method _hostDimensionsChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
    _hostDimensionsChange: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
        var host = this._host,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
            axis = host._cAxis,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
            scrollX = host.get(SCROLL_X),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
            scrollY = host.get(SCROLL_Y);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
        this._dims = host._getScrollDims();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
        if (axis && axis.y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
            this._renderBar(this.get(VERTICAL_NODE), true, 'vert');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
        if (axis && axis.x) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
            this._renderBar(this.get(HORIZONTAL_NODE), true, 'horiz');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
        this._update(scrollX, scrollY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
        Y.later(500, this, 'flash', true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
     * Handler for the scrollEnd event fired by the host. Default implementation flashes the scrollbar
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
     * @method _hostScrollEnd
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
     * @param {Event.Facade} e The event facade.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
    _hostScrollEnd : function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
        var host = this._host,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
            scrollX = host.get(SCROLL_X),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
            scrollY = host.get(SCROLL_Y);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
        this.flash();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
        this._update(scrollX, scrollY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
     * Adds or removes a scrollbar node from the document.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
     * @method _renderBar
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
     * @param {Node} bar The scrollbar node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
     * @param {boolean} add true, to add the node, false to remove it
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
    _renderBar: function(bar, add) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
        var inDoc = bar.inDoc(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
            bb = this._host._bb,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
            className = bar.getData("isHoriz") ? _classNames.scrollbarHB : _classNames.scrollbarVB;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
        if (add && !inDoc) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
            bb.append(bar);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
            bar.toggleClass(className, this._basic);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
            this._setChildCache(bar);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
        } else if(!add && inDoc) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
            bar.remove();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
            this._clearChildCache(bar);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
     * Caches scrollbar child element information,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
     * to optimize _update implementation
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
     * @method _setChildCache
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
     * @param {Node} node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
    _setChildCache : function(node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
        var c = node.get("children"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
            fc = c.item(0),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
            mc = c.item(1),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
            lc = c.item(2),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
            size = node.getData("isHoriz") ? "offsetWidth" : "offsetHeight";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
        node.setStyle(TRANSITION_PROPERTY, TRANSFORM);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
        mc.setStyle(TRANSITION_PROPERTY, TRANSFORM);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
        lc.setStyle(TRANSITION_PROPERTY, TRANSFORM);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
        node.setData(CHILD_CACHE, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
            fc : fc,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
            lc : lc,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
            mc : mc,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
            fcSize : fc && fc.get(size),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
            lcSize : lc && lc.get(size)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
     * Clears child cache
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
     * @method _clearChildCache
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
     * @param {Node} node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
    _clearChildCache : function(node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
        node.clearData(CHILD_CACHE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
     * Utility method, to move/resize either vertical or horizontal scrollbars
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
     * @method _updateBar
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
     * @param {Node} scrollbar The scrollbar node.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
     * @param {Number} current The current scroll position.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
     * @param {Number} duration The transition duration.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
     * @param {boolean} horiz true if horizontal, false if vertical.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
    _updateBar : function(scrollbar, current, duration, horiz) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
        var host = this._host,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
            basic = this._basic,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
            scrollbarSize = 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
            scrollbarPos = 1,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
            childCache = scrollbar.getData(CHILD_CACHE),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
            lastChild = childCache.lc,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
            middleChild = childCache.mc,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
            firstChildSize = childCache.fcSize,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
            lastChildSize = childCache.lcSize,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
            middleChildSize,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
            lastChildPosition,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
            transition,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
            translate,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
            scale,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
            dim,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
            dimOffset,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
            dimCache,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
            widgetSize,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
            contentSize;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
        if (horiz) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
            dim = WIDTH;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
            dimOffset = LEFT;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
            dimCache = HORIZ_CACHE;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
            widgetSize = this._dims.offsetWidth;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
            contentSize = this._dims.scrollWidth;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
            translate = TRANSLATE_X;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   315
            scale = SCALE_X;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   316
            current = (current !== undefined) ? current : host.get(SCROLL_X);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   317
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   318
            dim = HEIGHT;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
            dimOffset = TOP;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
            dimCache = VERT_CACHE;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
            widgetSize = this._dims.offsetHeight;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
            contentSize = this._dims.scrollHeight;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
            translate = TRANSLATE_Y;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
            scale = SCALE_Y;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
            current = (current !== undefined) ? current : host.get(SCROLL_Y);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
        scrollbarSize = Math.floor(widgetSize * (widgetSize/contentSize));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
        scrollbarPos = Math.floor((current/(contentSize - widgetSize)) * (widgetSize - scrollbarSize));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
        if (scrollbarSize > widgetSize) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
            scrollbarSize = 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   334
        if (scrollbarPos > (widgetSize - scrollbarSize)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
            scrollbarSize = scrollbarSize - (scrollbarPos - (widgetSize - scrollbarSize));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
        } else if (scrollbarPos < 0) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
            scrollbarSize = scrollbarPos + scrollbarSize;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   338
            scrollbarPos = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   339
        } else if (isNaN(scrollbarPos)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
            scrollbarPos = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   343
        middleChildSize = (scrollbarSize - (firstChildSize + lastChildSize));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   344
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   345
        if (middleChildSize < 0) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   346
            middleChildSize = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   347
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   348
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   349
        if (middleChildSize === 0 && scrollbarPos !== 0) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   350
            scrollbarPos = widgetSize - (firstChildSize + lastChildSize) - 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   351
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   352
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   353
        if (duration !== 0) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   354
            // Position Scrollbar
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   355
            transition = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   356
                duration : duration
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   357
            };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   358
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   359
            if (NATIVE_TRANSITIONS) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   360
                transition.transform = translate + scrollbarPos + PX_CLOSE;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   361
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   362
                transition[dimOffset] = scrollbarPos + PX;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   363
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   364
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   365
            scrollbar.transition(transition);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   366
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   367
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   368
            if (NATIVE_TRANSITIONS) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   369
                scrollbar.setStyle(TRANSFORM, translate + scrollbarPos + PX_CLOSE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   370
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   371
                scrollbar.setStyle(dimOffset, scrollbarPos + PX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   372
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   373
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   374
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   375
        // Resize Scrollbar Middle Child
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   376
        if (this[dimCache] !== middleChildSize) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   377
            this[dimCache] = middleChildSize;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   378
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   379
            if (middleChildSize > 0) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   380
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   381
                if (duration !== 0) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   382
                    transition = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   383
                        duration : duration
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   384
                    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   385
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   386
                    if(NATIVE_TRANSITIONS) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   387
                        transition.transform = scale + middleChildSize + CLOSE;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   388
                    } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   389
                        transition[dim] = middleChildSize + PX;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   390
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   391
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   392
                    middleChild.transition(transition);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   393
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   394
                    if (NATIVE_TRANSITIONS) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   395
                        middleChild.setStyle(TRANSFORM, scale + middleChildSize + CLOSE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   396
                    } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   397
                        middleChild.setStyle(dim, middleChildSize + PX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   398
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   399
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   400
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   401
                // Position Last Child
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   402
                if (!horiz || !basic) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   403
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   404
                    lastChildPosition = scrollbarSize - lastChildSize;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   405
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   406
                    if(duration !== 0) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   407
                        transition = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   408
                            duration : duration
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   409
                        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   410
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   411
                        if (NATIVE_TRANSITIONS) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   412
                            transition.transform = translate + lastChildPosition + PX_CLOSE;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   413
                        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   414
                            transition[dimOffset] = lastChildPosition;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   415
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   416
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   417
                        lastChild.transition(transition);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   418
                    } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   419
                        if (NATIVE_TRANSITIONS) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   420
                            lastChild.setStyle(TRANSFORM, translate + lastChildPosition + PX_CLOSE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   421
                        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   422
                            lastChild.setStyle(dimOffset, lastChildPosition + PX);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   423
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   424
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   425
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   426
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   427
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   428
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   429
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   430
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   431
     * AOP method, invoked after the host's _uiScrollTo method,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   432
     *  to position and resize the scroll bars
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   433
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   434
     * @method _update
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   435
     * @param x {Number} The current scrollX value
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   436
     * @param y {Number} The current scrollY value
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   437
     * @param duration {Number} Number of ms of animation (optional) - used when snapping to bounds
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   438
     * @param easing {String} Optional easing equation to use during the animation, if duration is set
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   439
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   440
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   441
    _update: function(x, y, duration) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   442
        var vNode = this.get(VERTICAL_NODE),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   443
            hNode = this.get(HORIZONTAL_NODE),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   444
            host = this._host,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   445
            axis = host._cAxis;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   446
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   447
        duration = (duration || 0)/1000;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   448
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   449
        if (!this._showing) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   450
            this.show();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   451
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   452
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   453
        if (axis && axis.y && vNode && y !== null) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   454
            this._updateBar(vNode, y, duration, false);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   455
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   456
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   457
        if (axis && axis.x && hNode && x !== null) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   458
            this._updateBar(hNode, x, duration, true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   459
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   460
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   461
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   462
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   463
     * Show the scroll bar indicators
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   464
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   465
     * @method show
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   466
     * @param animated {Boolean} Whether or not to animate the showing
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   467
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   468
    show: function(animated) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   469
        this._show(true, animated);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   470
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   471
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   472
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   473
     * Hide the scroll bar indicators
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   474
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   475
     * @method hide
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   476
     * @param animated {Boolean} Whether or not to animate the hiding
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   477
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   478
    hide: function(animated) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   479
        this._show(false, animated);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   480
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   481
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   482
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   483
     * Internal hide/show implementation utility method
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   484
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   485
     * @method _show
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   486
     * @param {boolean} show Whether to show or hide the scrollbar
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   487
     * @param {bolean} animated Whether or not to animate while showing/hide
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   488
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   489
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   490
    _show : function(show, animated) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   491
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   492
        var verticalNode = this.get(VERTICAL_NODE),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   493
            horizontalNode = this.get(HORIZONTAL_NODE),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   494
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   495
            duration = (animated) ? 0.6 : 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   496
            opacity = (show) ? 1 : 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   497
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   498
            transition;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   499
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   500
        this._showing = show;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   501
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   502
        if (this._flashTimer) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   503
            this._flashTimer.cancel();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   504
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   505
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   506
        transition = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   507
            duration : duration,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   508
            opacity : opacity
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   509
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   510
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   511
        if (verticalNode && verticalNode._node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   512
            verticalNode.transition(transition);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   513
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   514
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   515
        if (horizontalNode && horizontalNode._node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   516
            horizontalNode.transition(transition);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   517
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   518
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   519
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   520
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   521
     * Momentarily flash the scroll bars to indicate current scroll position
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   522
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   523
     * @method flash
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   524
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   525
    flash: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   526
        this.show(true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   527
        this._flashTimer = Y.later(800, this, 'hide', true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   528
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   529
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   530
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   531
     * Setter for the verticalNode and horizontalNode attributes
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   532
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   533
     * @method _setNode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   534
     * @param node {Node} The Y.Node instance for the scrollbar
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   535
     * @param name {String} The attribute name
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   536
     * @return {Node} The Y.Node instance for the scrollbar
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   537
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   538
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   539
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   540
    _setNode: function(node, name) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   541
        var horiz = (name === HORIZONTAL_NODE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   542
            node = Y.one(node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   543
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   544
        if (node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   545
            node.addClass(_classNames.scrollbar);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   546
            node.addClass( (horiz) ? _classNames.scrollbarH : _classNames.scrollbarV );
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   547
            node.setData("isHoriz", horiz);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   548
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   549
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   550
        return node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   551
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   552
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   553
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   554
     * Creates default node instances for scrollbars
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   555
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   556
     * @method _defaultNode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   557
     * @return {Node} The Y.Node instance for the scrollbar
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   558
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   559
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   560
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   561
    _defaultNode: function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   562
        return Y.Node.create(ScrollbarsPlugin.SCROLLBAR_TEMPLATE);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   563
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   564
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   565
    _basic: Y.UA.ie && Y.UA.ie <= 8
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   566
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   567
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   568
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   569
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   570
}, '3.10.3', {"requires": ["classnamemanager", "transition", "plugin"], "skinnable": true});