src/cm/media/js/lib/yui/yui_3.10.3/build/datatable-scroll/datatable-scroll.js
author gibus
Tue, 16 Jul 2013 14:29:46 +0200
changeset 525 89ef5ed3c48b
permissions -rw-r--r--
Upgrades to yui 3.10.3
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('datatable-scroll', 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
Adds the ability to make the table rows scrollable while preserving the header
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
placement.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
@module datatable-scroll
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
@for DataTable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
@since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
**/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
var YLang = Y.Lang,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
    isString = YLang.isString,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
    isNumber = YLang.isNumber,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
    isArray  = YLang.isArray,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
    Scrollable;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
// Returns the numeric value portion of the computed style, defaulting to 0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
function styleDim(node, style) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
    return parseInt(node.getComputedStyle(style), 10) || 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
_API docs for this extension are included in the DataTable class._
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
Adds the ability to make the table rows scrollable while preserving the header
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
placement.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
There are two types of scrolling, horizontal (x) and vertical (y).  Horizontal
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
scrolling is achieved by wrapping the entire table in a scrollable container.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
Vertical scrolling is achieved by splitting the table headers and data into two
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
separate tables, the latter of which is wrapped in a vertically scrolling
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
container.  In this case, column widths of header cells and data cells are kept
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
in sync programmatically.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
Since the split table synchronization can be costly at runtime, the split is only
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
done if the data in the table stretches beyond the configured `height` value.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
To activate or deactivate scrolling, set the `scrollable` attribute to one of
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
the following values:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
 * `false` - (default) Scrolling is disabled.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
 * `true` or 'xy' - If `height` is set, vertical scrolling will be activated, if
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
            `width` is set, horizontal scrolling will be activated.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
 * 'x' - Activate horizontal scrolling only. Requires the `width` attribute is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
         also set.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
 * 'y' - Activate vertical scrolling only. Requires the `height` attribute is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
         also set.
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 DataTable.Scrollable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
@for DataTable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
@since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
**/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
Y.DataTable.Scrollable = Scrollable = function () {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
Scrollable.ATTRS = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
    Activates or deactivates scrolling in the table.  Acceptable values are:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
     * `false` - (default) Scrolling is disabled.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
     * `true` or 'xy' - If `height` is set, vertical scrolling will be
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
       activated, if `width` is set, horizontal scrolling will be activated.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
     * 'x' - Activate horizontal scrolling only. Requires the `width` attribute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
       is also set.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
     * 'y' - Activate vertical scrolling only. Requires the `height` attribute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
       is also set.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
    @attribute scrollable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
    @type {String|Boolean}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
    @value false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
    scrollable: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
        value: false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
        setter: '_setScrollable'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
Y.mix(Scrollable.prototype, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
    Scrolls a given row or cell into view if the table is scrolling.  Pass the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
    `clientId` of a Model from the DataTable's `data` ModelList or its row
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
    index to scroll to a row or a [row index, column index] array to scroll to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
    a cell.  Alternately, to scroll to any element contained within the table's
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
    scrolling areas, pass its ID, or the Node itself (though you could just as
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
    well call `node.scrollIntoView()` yourself, but hey, whatever).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
    @method scrollTo
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
    @param {String|Number|Number[]|Node} id A row clientId, row index, cell
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
            coordinate array, id string, or Node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
    @return {DataTable}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
    @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
    scrollTo: function (id) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
        var target;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
        if (id && this._tbodyNode && (this._yScrollNode || this._xScrollNode)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
            if (isArray(id)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
                target = this.getCell(id);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
            } else if (isNumber(id)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
                target = this.getRow(id);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
            } else if (isString(id)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
                target = this._tbodyNode.one('#' + id);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
            } else if (id instanceof Y.Node &&
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
                    // TODO: ancestor(yScrollNode, xScrollNode)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
                    id.ancestor('.yui3-datatable') === this.get('boundingBox')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
                target = id;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
            if(target) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
                target.scrollIntoView();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
        return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
    //--------------------------------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
    // Protected properties and methods
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
    //--------------------------------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
    Template for the `<table>` that is used to fix the caption in place when
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
    the table is horizontally scrolling.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
    @property _CAPTION_TABLE_TEMPLATE
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
    @type {HTML}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
    @value '<table class="{className}" role="presentation"></table>'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
    _CAPTION_TABLE_TEMPLATE: '<table class="{className}" role="presentation"></table>',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
    Template used to create sizable element liners around header content to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
    synchronize fixed header column widths.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
    @property _SCROLL_LINER_TEMPLATE
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
    @type {HTML}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
    @value '<div class="{className}"></div>'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
    _SCROLL_LINER_TEMPLATE: '<div class="{className}"></div>',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
    Template for the virtual scrollbar needed in "y" and "xy" scrolling setups.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
    @property _SCROLLBAR_TEMPLATE
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
    @type {HTML}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
    @value '<div class="{className}"><div></div></div>'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
    _SCROLLBAR_TEMPLATE: '<div class="{className}"><div></div></div>',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
    Template for the `<div>` that is used to contain the table when the table is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
    horizontally scrolling.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
    @property _X_SCROLLER_TEMPLATE
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
    @type {HTML}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
    @value '<div class="{className}"></div>'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
    _X_SCROLLER_TEMPLATE: '<div class="{className}"></div>',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
    Template for the `<table>` used to contain the fixed column headers for
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
    vertically scrolling tables.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
    @property _Y_SCROLL_HEADER_TEMPLATE
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
    @type {HTML}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
    @value '<table cellspacing="0" role="presentation" aria-hidden="true" class="{className}"></table>'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
    _Y_SCROLL_HEADER_TEMPLATE: '<table cellspacing="0" aria-hidden="true" class="{className}"></table>',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
    Template for the `<div>` that is used to contain the rows when the table is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
    vertically scrolling.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
    @property _Y_SCROLLER_TEMPLATE
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
    @type {HTML}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
    @value '<div class="{className}"><div class="{scrollerClassName}"></div></div>'
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
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
    _Y_SCROLLER_TEMPLATE: '<div class="{className}"><div class="{scrollerClassName}"></div></div>',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
    Adds padding to the last cells in the fixed header for vertically scrolling
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
    tables.  This padding is equal in width to the scrollbar, so can't be
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
    relegated to a stylesheet.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
    @method _addScrollbarPadding
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
    _addScrollbarPadding: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
        var fixedHeader = this._yScrollHeader,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
            headerClass = '.' + this.getClassName('header'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
            scrollbarWidth, rows, header, i, len;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
        if (fixedHeader) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
            scrollbarWidth = Y.DOM.getScrollbarWidth() + 'px';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
            rows = fixedHeader.all('tr');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
            for (i = 0, len = rows.size(); i < len; i += +header.get('rowSpan')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
                header = rows.item(i).all(headerClass).pop();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
                header.setStyle('paddingRight', scrollbarWidth);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
    Reacts to changes in the `scrollable` attribute by updating the `_xScroll`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
    and `_yScroll` properties and syncing the scrolling structure accordingly.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
    @method _afterScrollableChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
    @param {EventFacade} e The relevant change event (ignored)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
    _afterScrollableChange: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
        var scroller = this._xScrollNode;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
        if (this._xScroll && scroller) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
            if (this._yScroll && !this._yScrollNode) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
                scroller.setStyle('paddingRight',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
                    Y.DOM.getScrollbarWidth() + 'px');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
            } else if (!this._yScroll && this._yScrollNode) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
                scroller.setStyle('paddingRight', '');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
        this._syncScrollUI();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
    Reacts to changes in the `caption` attribute by adding, removing, or
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
    syncing the caption table when the table is set to scroll.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
    @method _afterScrollCaptionChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
    @param {EventFacade} e The relevant change event (ignored)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
    _afterScrollCaptionChange: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
        if (this._xScroll || this._yScroll) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
            this._syncScrollUI();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
    Reacts to changes in the `columns` attribute of vertically scrolling tables
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
    by refreshing the fixed headers, scroll container, and virtual scrollbar
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
    position.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
    @method _afterScrollColumnsChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
    @param {EventFacade} e The relevant change event (ignored)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
    _afterScrollColumnsChange: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
        if (this._xScroll || this._yScroll) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
            if (this._yScroll && this._yScrollHeader) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
                this._syncScrollHeaders();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
            this._syncScrollUI();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
    Reacts to changes in vertically scrolling table's `data` ModelList by
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
    synchronizing the fixed column header widths and virtual scrollbar height.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
    @method _afterScrollDataChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
    @param {EventFacade} e The relevant change event (ignored)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
    _afterScrollDataChange: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
        if (this._xScroll || this._yScroll) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
            this._syncScrollUI();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
    Reacts to changes in the `height` attribute of vertically scrolling tables
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
    by updating the height of the `<div>` wrapping the data table and the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
    virtual scrollbar.  If `scrollable` was set to "y" or "xy" but lacking a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
    declared `height` until the received change, `_syncScrollUI` is called to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
    create the fixed headers etc.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
    @method _afterScrollHeightChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
    @param {EventFacade} e The relevant change event (ignored)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
    _afterScrollHeightChange: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
        if (this._yScroll) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   315
            this._syncScrollUI();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   316
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   317
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   318
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
    /* (not an API doc comment on purpose)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
    Reacts to the sort event (if the table is also sortable) by updating the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
    fixed header classes to match the data table's headers.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
    THIS IS A HACK that will be removed immediately after the 3.5.0 release.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
    If you're reading this and the current version is greater than 3.5.0, I
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
    should be publicly scolded.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
    _afterScrollSort: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
        var headers, headerClass;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
        if (this._yScroll && this._yScrollHeader) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
            headerClass = '.' + this.getClassName('header');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
            headers = this._theadNode.all(headerClass);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   334
            this._yScrollHeader.all(headerClass).each(function (header, i) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
                header.set('className', headers.item(i).get('className'));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   338
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   339
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
    Reacts to changes in the width of scrolling tables by expanding the width of
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
    the `<div>` wrapping the data table for horizontally scrolling tables or
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   343
    upding the position of the virtual scrollbar for vertically scrolling
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   344
    tables.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   345
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   346
    @method _afterScrollWidthChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   347
    @param {EventFacade} e The relevant change event (ignored)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   348
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   349
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   350
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   351
    _afterScrollWidthChange: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   352
        if (this._xScroll || this._yScroll) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   353
            this._syncScrollUI();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   354
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   355
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   356
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   357
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   358
    Binds virtual scrollbar interaction to the `_yScrollNode`'s `scrollTop` and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   359
    vice versa.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   360
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   361
    @method _bindScrollbar
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   362
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   363
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   364
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   365
    _bindScrollbar: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   366
        var scrollbar = this._scrollbarNode,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   367
            scroller  = this._yScrollNode;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   368
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   369
        if (scrollbar && scroller && !this._scrollbarEventHandle) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   370
            this._scrollbarEventHandle = new Y.Event.Handle([
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   371
                scrollbar.on('scroll', this._syncScrollPosition, this),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   372
                scroller.on('scroll', this._syncScrollPosition, this)
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
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   376
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   377
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   378
    Binds to the window resize event to update the vertical scrolling table
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   379
    headers and wrapper `<div>` dimensions.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   380
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   381
    @method _bindScrollResize
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   382
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   383
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   384
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   385
    _bindScrollResize: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   386
        if (!this._scrollResizeHandle) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   387
            // TODO: sync header widths and scrollbar position.  If the height
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   388
            // of the headers has changed, update the scrollbar dims as well.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   389
            this._scrollResizeHandle = Y.on('resize',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   390
                this._syncScrollUI, null, this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   391
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   392
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   393
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   394
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   395
    Attaches internal subscriptions to keep the scrolling structure up to date
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   396
    with changes in the table's `data`, `columns`, `caption`, or `height`.  The
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   397
    `width` is taken care of already.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   398
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   399
    This executes after the table's native `bindUI` method.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   400
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   401
    @method _bindScrollUI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   402
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   403
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   404
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   405
    _bindScrollUI: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   406
        this.after({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   407
            columnsChange: Y.bind('_afterScrollColumnsChange', this),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   408
            heightChange : Y.bind('_afterScrollHeightChange', this),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   409
            widthChange  : Y.bind('_afterScrollWidthChange', this),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   410
            captionChange: Y.bind('_afterScrollCaptionChange', this),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   411
            scrollableChange: Y.bind('_afterScrollableChange', this),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   412
            // FIXME: this is a last minute hack to work around the fact that
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   413
            // DT doesn't use a tableView to render table content that can be
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   414
            // replaced with a scrolling table view.  This must be removed asap!
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   415
            sort         : Y.bind('_afterScrollSort', this)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   416
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   417
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   418
        this.after(['dataChange', '*:add', '*:remove', '*:reset', '*:change'],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   419
            Y.bind('_afterScrollDataChange', this));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   420
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   421
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   422
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   423
    Clears the lock and timer used to manage synchronizing the scroll position
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   424
    between the vertical scroll container and the virtual scrollbar.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   425
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   426
    @method _clearScrollLock
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   427
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   428
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   429
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   430
    _clearScrollLock: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   431
        if (this._scrollLock) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   432
            this._scrollLock.cancel();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   433
            delete this._scrollLock;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   434
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   435
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   436
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   437
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   438
    Creates a virtual scrollbar from the `_SCROLLBAR_TEMPLATE`, assigning it to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   439
    the `_scrollbarNode` property.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   440
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   441
    @method _createScrollbar
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   442
    @return {Node} The created Node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   443
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   444
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   445
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   446
    _createScrollbar: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   447
        var scrollbar = this._scrollbarNode;
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 (!scrollbar) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   450
            scrollbar = this._scrollbarNode = Y.Node.create(
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   451
                Y.Lang.sub(this._SCROLLBAR_TEMPLATE, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   452
                    className: this.getClassName('scrollbar')
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   453
                }));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   454
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   455
            // IE 6-10 require the scrolled area to be visible (at least 1px)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   456
            // or they don't respond to clicking on the scrollbar rail or arrows
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   457
            scrollbar.setStyle('width', (Y.DOM.getScrollbarWidth() + 1) + 'px');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   458
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   459
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   460
        return scrollbar;
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
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   464
    Creates a separate table to contain the caption when the table is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   465
    configured to scroll vertically or horizontally.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   466
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   467
    @method _createScrollCaptionTable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   468
    @return {Node} The created Node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   469
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   470
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   471
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   472
    _createScrollCaptionTable: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   473
        if (!this._captionTable) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   474
            this._captionTable = Y.Node.create(
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   475
                Y.Lang.sub(this._CAPTION_TABLE_TEMPLATE, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   476
                    className: this.getClassName('caption', 'table')
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   477
                }));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   478
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   479
            this._captionTable.empty();
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
        return this._captionTable;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   483
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   484
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   485
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   486
    Populates the `_xScrollNode` property by creating the `<div>` Node described
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   487
    by the `_X_SCROLLER_TEMPLATE`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   488
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   489
    @method _createXScrollNode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   490
    @return {Node} The created Node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   491
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   492
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   493
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   494
    _createXScrollNode: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   495
        if (!this._xScrollNode) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   496
            this._xScrollNode = Y.Node.create(
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   497
                Y.Lang.sub(this._X_SCROLLER_TEMPLATE, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   498
                    className: this.getClassName('x','scroller')
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   499
                }));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   500
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   501
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   502
        return this._xScrollNode;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   503
    },
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
    Populates the `_yScrollHeader` property by creating the `<table>` Node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   507
    described by the `_Y_SCROLL_HEADER_TEMPLATE`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   508
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   509
    @method _createYScrollHeader
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   510
    @return {Node} The created Node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   511
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   512
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   513
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   514
    _createYScrollHeader: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   515
        var fixedHeader = this._yScrollHeader;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   516
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   517
        if (!fixedHeader) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   518
            fixedHeader = this._yScrollHeader = Y.Node.create(
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   519
                Y.Lang.sub(this._Y_SCROLL_HEADER_TEMPLATE, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   520
                    className: this.getClassName('scroll','columns')
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   521
                }));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   522
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   523
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   524
        return fixedHeader;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   525
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   526
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   527
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   528
    Populates the `_yScrollNode` property by creating the `<div>` Node described
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   529
    by the `_Y_SCROLLER_TEMPLATE`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   530
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   531
    @method _createYScrollNode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   532
    @return {Node} The created Node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   533
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   534
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   535
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   536
    _createYScrollNode: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   537
        var scrollerClass;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   538
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   539
        if (!this._yScrollNode) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   540
            scrollerClass = this.getClassName('y', 'scroller');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   541
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   542
            this._yScrollContainer = Y.Node.create(
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   543
                Y.Lang.sub(this._Y_SCROLLER_TEMPLATE, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   544
                    className: this.getClassName('y','scroller','container'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   545
                    scrollerClassName: scrollerClass
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   546
                }));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   547
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   548
            this._yScrollNode = this._yScrollContainer
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   549
                .one('.' + scrollerClass);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   550
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   551
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   552
        return this._yScrollContainer;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   553
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   554
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   555
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   556
    Removes the nodes used to create horizontal and vertical scrolling and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   557
    rejoins the caption to the main table if needed.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   558
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   559
    @method _disableScrolling
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   560
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   561
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   562
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   563
    _disableScrolling: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   564
        this._removeScrollCaptionTable();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   565
        this._disableXScrolling();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   566
        this._disableYScrolling();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   567
        this._unbindScrollResize();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   568
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   569
        this._uiSetWidth(this.get('width'));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   570
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   571
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   572
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   573
    Removes the nodes used to allow horizontal scrolling.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   574
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   575
    @method _disableXScrolling
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   576
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   577
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   578
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   579
    _disableXScrolling: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   580
        this._removeXScrollNode();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   581
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   582
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   583
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   584
    Removes the nodes used to allow vertical scrolling.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   585
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   586
    @method _disableYScrolling
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   587
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   588
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   589
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   590
    _disableYScrolling: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   591
        this._removeYScrollHeader();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   592
        this._removeYScrollNode();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   593
        this._removeYScrollContainer();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   594
        this._removeScrollbar();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   595
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   596
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   597
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   598
    Cleans up external event subscriptions.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   599
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   600
    @method destructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   601
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   602
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   603
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   604
    destructor: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   605
        this._unbindScrollbar();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   606
        this._unbindScrollResize();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   607
        this._clearScrollLock();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   608
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   609
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   610
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   611
    Sets up event handlers and AOP advice methods to bind the DataTable's natural
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   612
    behaviors with the scrolling APIs and state.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   613
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   614
    @method initializer
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   615
    @param {Object} config The config object passed to the constructor (ignored)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   616
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   617
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   618
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   619
    initializer: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   620
        this._setScrollProperties();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   621
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   622
        this.after(['scrollableChange', 'heightChange', 'widthChange'],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   623
            this._setScrollProperties);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   624
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   625
        this.after('renderView', Y.bind('_syncScrollUI', this));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   626
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   627
        Y.Do.after(this._bindScrollUI, this, 'bindUI');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   628
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   629
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   630
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   631
    Removes the table used to house the caption when the table is scrolling.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   632
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   633
    @method _removeScrollCaptionTable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   634
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   635
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   636
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   637
    _removeScrollCaptionTable: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   638
        if (this._captionTable) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   639
            if (this._captionNode) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   640
                this._tableNode.prepend(this._captionNode);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   641
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   642
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   643
            this._captionTable.remove().destroy(true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   644
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   645
            delete this._captionTable;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   646
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   647
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   648
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   649
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   650
    Removes the `<div>` wrapper used to contain the data table when the table
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   651
    is horizontally scrolling.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   652
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   653
    @method _removeXScrollNode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   654
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   655
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   656
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   657
    _removeXScrollNode: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   658
        var scroller = this._xScrollNode;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   659
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   660
        if (scroller) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   661
            scroller.replace(scroller.get('childNodes').toFrag());
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   662
            scroller.remove().destroy(true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   663
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   664
            delete this._xScrollNode;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   665
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   666
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   667
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   668
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   669
    Removes the `<div>` wrapper used to contain the data table and fixed header
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   670
    when the table is vertically scrolling.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   671
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   672
    @method _removeYScrollContainer
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   673
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   674
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   675
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   676
    _removeYScrollContainer: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   677
        var scroller = this._yScrollContainer;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   678
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   679
        if (scroller) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   680
            scroller.replace(scroller.get('childNodes').toFrag());
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   681
            scroller.remove().destroy(true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   682
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   683
            delete this._yScrollContainer;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   684
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   685
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   686
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   687
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   688
    Removes the `<table>` used to contain the fixed column headers when the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   689
    table is vertically scrolling.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   690
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   691
    @method _removeYScrollHeader
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   692
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   693
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   694
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   695
    _removeYScrollHeader: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   696
        if (this._yScrollHeader) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   697
            this._yScrollHeader.remove().destroy(true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   698
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   699
            delete this._yScrollHeader;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   700
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   701
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   702
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   703
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   704
    Removes the `<div>` wrapper used to contain the data table when the table
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   705
    is vertically scrolling.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   706
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   707
    @method _removeYScrollNode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   708
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   709
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   710
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   711
    _removeYScrollNode: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   712
        var scroller = this._yScrollNode;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   713
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   714
        if (scroller) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   715
            scroller.replace(scroller.get('childNodes').toFrag());
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   716
            scroller.remove().destroy(true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   717
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   718
            delete this._yScrollNode;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   719
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   720
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   721
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   722
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   723
    Removes the virtual scrollbar used by scrolling tables.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   724
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   725
    @method _removeScrollbar
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   726
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   727
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   728
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   729
    _removeScrollbar: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   730
        if (this._scrollbarNode) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   731
            this._scrollbarNode.remove().destroy(true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   732
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   733
            delete this._scrollbarNode;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   734
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   735
        if (this._scrollbarEventHandle) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   736
            this._scrollbarEventHandle.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   737
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   738
            delete this._scrollbarEventHandle;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   739
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   740
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   741
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   742
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   743
    Accepts (case insensitive) values "x", "y", "xy", `true`, and `false`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   744
    `true` is translated to "xy" and upper case values are converted to lower
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   745
    case.  All other values are invalid.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   746
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   747
    @method _setScrollable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   748
    @param {String|Boolea} val Incoming value for the `scrollable` attribute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   749
    @return {String}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   750
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   751
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   752
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   753
    _setScrollable: function (val) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   754
        if (val === true) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   755
            val = 'xy';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   756
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   757
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   758
        if (isString(val)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   759
            val = val.toLowerCase();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   760
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   761
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   762
        return (val === false || val === 'y' || val === 'x' || val === 'xy') ?
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   763
            val :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   764
            Y.Attribute.INVALID_VALUE;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   765
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   766
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   767
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   768
    Assigns the `_xScroll` and `_yScroll` properties to true if an
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   769
    appropriate value is set in the `scrollable` attribute and the `height`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   770
    and/or `width` is set.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   771
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   772
    @method _setScrollProperties
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   773
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   774
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   775
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   776
    _setScrollProperties: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   777
        var scrollable = this.get('scrollable') || '',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   778
            width      = this.get('width'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   779
            height     = this.get('height');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   780
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   781
        this._xScroll = width  && scrollable.indexOf('x') > -1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   782
        this._yScroll = height && scrollable.indexOf('y') > -1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   783
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   784
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   785
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   786
    Keeps the virtual scrollbar and the scrolling `<div>` wrapper around the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   787
    data table in vertically scrolling tables in sync.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   788
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   789
    @method _syncScrollPosition
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   790
    @param {DOMEventFacade} e The scroll event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   791
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   792
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   793
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   794
    _syncScrollPosition: function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   795
        var scrollbar = this._scrollbarNode,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   796
            scroller  = this._yScrollNode,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   797
            source    = e.currentTarget,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   798
            other;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   799
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   800
        if (scrollbar && scroller) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   801
            if (this._scrollLock && this._scrollLock.source !== source) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   802
                return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   803
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   804
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   805
            this._clearScrollLock();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   806
            this._scrollLock = Y.later(300, this, this._clearScrollLock);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   807
            this._scrollLock.source = source;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   808
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   809
            other = (source === scrollbar) ? scroller : scrollbar;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   810
            other.set('scrollTop', source.get('scrollTop'));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   811
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   812
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   813
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   814
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   815
    Splits the caption from the data `<table>` if the table is configured to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   816
    scroll.  If not, rejoins the caption to the data `<table>` if it needs to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   817
    be.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   818
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   819
    @method _syncScrollCaptionUI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   820
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   821
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   822
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   823
    _syncScrollCaptionUI: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   824
        var caption      = this._captionNode,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   825
            table        = this._tableNode,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   826
            captionTable = this._captionTable,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   827
            id;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   828
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   829
        if (caption) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   830
            id = caption.getAttribute('id');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   831
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   832
            if (!captionTable) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   833
                captionTable = this._createScrollCaptionTable();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   834
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   835
                this.get('contentBox').prepend(captionTable);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   836
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   837
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   838
            if (!caption.get('parentNode').compareTo(captionTable)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   839
                captionTable.empty().insert(caption);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   840
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   841
                if (!id) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   842
                    id = Y.stamp(caption);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   843
                    caption.setAttribute('id', id);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   844
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   845
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   846
                table.setAttribute('aria-describedby', id);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   847
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   848
        } else if (captionTable) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   849
            this._removeScrollCaptionTable();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   850
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   851
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   852
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   853
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   854
    Assigns widths to the fixed header columns to match the columns in the data
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   855
    table.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   856
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   857
    @method _syncScrollColumnWidths
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   858
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   859
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   860
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   861
    _syncScrollColumnWidths: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   862
        var widths = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   863
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   864
        if (this._theadNode && this._yScrollHeader) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   865
            // Capture dims and assign widths in two passes to avoid reflows for
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   866
            // each access of clientWidth/getComputedStyle
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   867
            this._theadNode.all('.' + this.getClassName('header'))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   868
                .each(function (header) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   869
                    widths.push(
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   870
                        // FIXME: IE returns the col.style.width from
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   871
                        // getComputedStyle even if the column has been
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   872
                        // compressed below that width, so it must use
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   873
                        // clientWidth. FF requires getComputedStyle because it
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   874
                        // uses fractional widths that round up to an overall
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   875
                        // cell/table width 1px greater than the data table's
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   876
                        // cell/table width, resulting in misaligned columns or
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   877
                        // fixed header bleed through. I can't think of a
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   878
                        // *reasonable* way to capture the correct width without
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   879
                        // a sniff.  Math.min(cW - p, getCS(w)) was imperfect
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   880
                        // and punished all browsers, anyway.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   881
                        (Y.UA.ie && Y.UA.ie < 8) ?
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   882
                            (header.get('clientWidth') -
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   883
                             styleDim(header, 'paddingLeft') -
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   884
                             styleDim(header, 'paddingRight')) + 'px' :
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   885
                            header.getComputedStyle('width'));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   886
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   887
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   888
            this._yScrollHeader.all('.' + this.getClassName('scroll', 'liner'))
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   889
                .each(function (liner, i) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   890
                    liner.setStyle('width', widths[i]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   891
                });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   892
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   893
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   894
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   895
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   896
    Creates matching headers in the fixed header table for vertically scrolling
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   897
    tables and synchronizes the column widths.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   898
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   899
    @method _syncScrollHeaders
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   900
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   901
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   902
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   903
    _syncScrollHeaders: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   904
        var fixedHeader   = this._yScrollHeader,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   905
            linerTemplate = this._SCROLL_LINER_TEMPLATE,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   906
            linerClass    = this.getClassName('scroll', 'liner'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   907
            headerClass   = this.getClassName('header'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   908
            headers       = this._theadNode.all('.' + headerClass);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   909
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   910
        if (this._theadNode && fixedHeader) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   911
            fixedHeader.empty().appendChild(
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   912
                this._theadNode.cloneNode(true));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   913
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   914
            // Prevent duplicate IDs and assign ARIA attributes to hide
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   915
            // from screen readers
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   916
            fixedHeader.all('[id]').removeAttribute('id');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   917
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   918
            fixedHeader.all('.' + headerClass).each(function (header, i) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   919
                var liner = Y.Node.create(Y.Lang.sub(linerTemplate, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   920
                            className: linerClass
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   921
                        })),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   922
                    refHeader = headers.item(i);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   923
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   924
                // Can't assign via skin css because sort (and potentially
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   925
                // others) might override the padding values.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   926
                liner.setStyle('padding',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   927
                    refHeader.getComputedStyle('paddingTop') + ' ' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   928
                    refHeader.getComputedStyle('paddingRight') + ' ' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   929
                    refHeader.getComputedStyle('paddingBottom') + ' ' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   930
                    refHeader.getComputedStyle('paddingLeft'));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   931
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   932
                liner.appendChild(header.get('childNodes').toFrag());
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   933
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   934
                header.appendChild(liner);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   935
            }, this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   936
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   937
            this._syncScrollColumnWidths();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   938
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   939
            this._addScrollbarPadding();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   940
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   941
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   942
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   943
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   944
    Wraps the table for X and Y scrolling, if necessary, if the `scrollable`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   945
    attribute is set.  Synchronizes dimensions and DOM placement of all
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   946
    scrolling related nodes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   947
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   948
    @method _syncScrollUI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   949
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   950
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   951
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   952
    _syncScrollUI: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   953
        var x = this._xScroll,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   954
            y = this._yScroll,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   955
            xScroller  = this._xScrollNode,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   956
            yScroller  = this._yScrollNode,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   957
            scrollLeft = xScroller && xScroller.get('scrollLeft'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   958
            scrollTop  = yScroller && yScroller.get('scrollTop');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   959
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   960
        this._uiSetScrollable();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   961
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   962
        // TODO: Probably should split this up into syncX, syncY, and syncXY
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   963
        if (x || y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   964
            if ((this.get('width') || '').slice(-1) === '%') {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   965
                this._bindScrollResize();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   966
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   967
                this._unbindScrollResize();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   968
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   969
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   970
            this._syncScrollCaptionUI();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   971
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   972
            this._disableScrolling();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   973
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   974
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   975
        if (this._yScrollHeader) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   976
            this._yScrollHeader.setStyle('display', 'none');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   977
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   978
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   979
        if (x) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   980
            if (!y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   981
                this._disableYScrolling();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   982
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   983
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   984
            this._syncXScrollUI(y);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   985
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   986
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   987
        if (y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   988
            if (!x) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   989
                this._disableXScrolling();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   990
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   991
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   992
            this._syncYScrollUI(x);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   993
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   994
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   995
        // Restore scroll position
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   996
        if (scrollLeft && this._xScrollNode) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   997
            this._xScrollNode.set('scrollLeft', scrollLeft);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   998
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   999
        if (scrollTop && this._yScrollNode) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1000
            this._yScrollNode.set('scrollTop', scrollTop);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1001
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1002
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1003
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1004
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1005
    Wraps the table in a scrolling `<div>` of the configured width for "x"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1006
    scrolling.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1007
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1008
    @method _syncXScrollUI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1009
    @param {Boolean} xy True if the table is configured with scrollable ="xy"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1010
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1011
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1012
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1013
    _syncXScrollUI: function (xy) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1014
        var scroller     = this._xScrollNode,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1015
            yScroller    = this._yScrollContainer,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1016
            table        = this._tableNode,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1017
            width        = this.get('width'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1018
            bbWidth      = this.get('boundingBox').get('offsetWidth'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1019
            scrollbarWidth = Y.DOM.getScrollbarWidth(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1020
            borderWidth, tableWidth;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1021
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1022
        if (!scroller) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1023
            scroller = this._createXScrollNode();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1024
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1025
            // Not using table.wrap() because IE went all crazy, wrapping the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1026
            // table in the last td in the table itself.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1027
            (yScroller || table).replace(scroller).appendTo(scroller);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1028
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1029
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1030
        // Can't use offsetHeight - clientHeight because IE6 returns
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1031
        // clientHeight of 0 intially.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1032
        borderWidth = styleDim(scroller, 'borderLeftWidth') +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1033
                      styleDim(scroller, 'borderRightWidth');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1034
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1035
        scroller.setStyle('width', '');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1036
        this._uiSetDim('width', '');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1037
        if (xy && this._yScrollContainer) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1038
            this._yScrollContainer.setStyle('width', '');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1039
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1040
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1041
        // Lock the table's unconstrained width to avoid configured column
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1042
        // widths being ignored
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1043
        if (Y.UA.ie && Y.UA.ie < 8) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1044
            // Have to assign a style and trigger a reflow to allow the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1045
            // subsequent clearing of width + reflow to expand the table to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1046
            // natural width in IE 6
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1047
            table.setStyle('width', width);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1048
            table.get('offsetWidth');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1049
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1050
        table.setStyle('width', '');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1051
        tableWidth = table.get('offsetWidth');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1052
        table.setStyle('width', tableWidth + 'px');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1053
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1054
        this._uiSetDim('width', width);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1055
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1056
        // Can't use 100% width because the borders add additional width
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1057
        // TODO: Cache the border widths, though it won't prevent a reflow
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1058
        scroller.setStyle('width', (bbWidth - borderWidth) + 'px');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1059
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1060
        // expand the table to fill the assigned width if it doesn't
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1061
        // already overflow the configured width
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1062
        if ((scroller.get('offsetWidth') - borderWidth) > tableWidth) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1063
            // Assumes the wrapped table doesn't have borders
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1064
            if (xy) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1065
                table.setStyle('width', (scroller.get('offsetWidth') -
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1066
                     borderWidth - scrollbarWidth) + 'px');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1067
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1068
                table.setStyle('width', '100%');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1069
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1070
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1071
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1072
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1073
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1074
    Wraps the table in a scrolling `<div>` of the configured height (accounting
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1075
    for the caption if there is one) if "y" scrolling is enabled.  Otherwise,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1076
    unwraps the table if necessary.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1077
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1078
    @method _syncYScrollUI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1079
    @param {Boolean} xy True if the table is configured with scrollable = "xy"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1080
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1081
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1082
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1083
    _syncYScrollUI: function (xy) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1084
        var yScroller    = this._yScrollContainer,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1085
            yScrollNode  = this._yScrollNode,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1086
            xScroller    = this._xScrollNode,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1087
            fixedHeader  = this._yScrollHeader,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1088
            scrollbar    = this._scrollbarNode,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1089
            table        = this._tableNode,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1090
            thead        = this._theadNode,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1091
            captionTable = this._captionTable,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1092
            boundingBox  = this.get('boundingBox'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1093
            contentBox   = this.get('contentBox'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1094
            width        = this.get('width'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1095
            height       = boundingBox.get('offsetHeight'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1096
            scrollbarWidth = Y.DOM.getScrollbarWidth(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1097
            outerScroller;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1098
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1099
        if (captionTable && !xy) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1100
            captionTable.setStyle('width', width || '100%');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1101
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1102
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1103
        if (!yScroller) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1104
            yScroller = this._createYScrollNode();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1105
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1106
            yScrollNode = this._yScrollNode;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1107
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1108
            table.replace(yScroller).appendTo(yScrollNode);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1109
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1110
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1111
        outerScroller = xy ? xScroller : yScroller;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1112
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1113
        if (!xy) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1114
            table.setStyle('width', '');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1115
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1116
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1117
        // Set the scroller height
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1118
        if (xy) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1119
            // Account for the horizontal scrollbar in the overall height
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1120
            height -= scrollbarWidth;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1121
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1122
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1123
        yScrollNode.setStyle('height',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1124
            (height - outerScroller.get('offsetTop') -
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1125
            // because IE6 is returning clientHeight 0 initially
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1126
            styleDim(outerScroller, 'borderTopWidth') -
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1127
            styleDim(outerScroller, 'borderBottomWidth')) + 'px');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1128
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1129
        // Set the scroller width
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1130
        if (xy) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1131
            // For xy scrolling tables, the table should expand freely within
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1132
            // the x scroller
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1133
            yScroller.setStyle('width',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1134
                (table.get('offsetWidth') + scrollbarWidth) + 'px');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1135
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1136
            this._uiSetYScrollWidth(width);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1137
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1138
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1139
        if (captionTable && !xy) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1140
            captionTable.setStyle('width', yScroller.get('offsetWidth') + 'px');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1141
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1142
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1143
        // Allow headerless scrolling
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1144
        if (thead && !fixedHeader) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1145
            fixedHeader = this._createYScrollHeader();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1146
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1147
            yScroller.prepend(fixedHeader);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1148
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1149
            this._syncScrollHeaders();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1150
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1151
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1152
        if (fixedHeader) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1153
            this._syncScrollColumnWidths();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1154
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1155
            fixedHeader.setStyle('display', '');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1156
            // This might need to come back if FF has issues
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1157
            //fixedHeader.setStyle('width', '100%');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1158
                //(yScroller.get('clientWidth') + scrollbarWidth) + 'px');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1159
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1160
            if (!scrollbar) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1161
                scrollbar = this._createScrollbar();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1162
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1163
                this._bindScrollbar();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1164
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1165
                contentBox.prepend(scrollbar);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1166
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1167
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1168
            this._uiSetScrollbarHeight();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1169
            this._uiSetScrollbarPosition(outerScroller);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1170
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1171
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1172
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1173
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1174
    Assigns the appropriate class to the `boundingBox` to identify the DataTable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1175
    as horizontally scrolling, vertically scrolling, or both (adds both classes).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1176
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1177
    Classes added are "yui3-datatable-scrollable-x" or "...-y"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1178
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1179
    @method _uiSetScrollable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1180
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1181
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1182
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1183
    _uiSetScrollable: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1184
        this.get('boundingBox')
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1185
            .toggleClass(this.getClassName('scrollable','x'), this._xScroll)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1186
            .toggleClass(this.getClassName('scrollable','y'), this._yScroll);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1187
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1188
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1189
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1190
    Updates the virtual scrollbar's height to avoid overlapping with the fixed
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1191
    headers.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1192
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1193
    @method _uiSetScrollbarHeight
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1194
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1195
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1196
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1197
    _uiSetScrollbarHeight: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1198
        var scrollbar   = this._scrollbarNode,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1199
            scroller    = this._yScrollNode,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1200
            fixedHeader = this._yScrollHeader;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1201
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1202
        if (scrollbar && scroller && fixedHeader) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1203
            scrollbar.get('firstChild').setStyle('height',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1204
                this._tbodyNode.get('scrollHeight') + 'px');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1205
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1206
            scrollbar.setStyle('height',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1207
                (parseFloat(scroller.getComputedStyle('height')) -
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1208
                 parseFloat(fixedHeader.getComputedStyle('height'))) + 'px');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1209
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1210
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1211
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1212
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1213
    Updates the virtual scrollbar's placement to avoid overlapping the fixed
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1214
    headers or the data table.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1215
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1216
    @method _uiSetScrollbarPosition
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1217
    @param {Node} scroller Reference node to position the scrollbar over
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1218
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1219
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1220
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1221
    _uiSetScrollbarPosition: function (scroller) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1222
        var scrollbar     = this._scrollbarNode,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1223
            fixedHeader   = this._yScrollHeader;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1224
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1225
        if (scrollbar && scroller && fixedHeader) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1226
            scrollbar.setStyles({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1227
                // Using getCS instead of offsetHeight because FF uses
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1228
                // fractional values, but reports ints to offsetHeight, so
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1229
                // offsetHeight is unreliable.  It is probably fine to use
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1230
                // offsetHeight in this case but this was left in place after
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1231
                // fixing an off-by-1px issue in FF 10- by fixing the caption
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1232
                // font style so FF picked it up.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1233
                top: (parseFloat(fixedHeader.getComputedStyle('height')) +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1234
                      styleDim(scroller, 'borderTopWidth') +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1235
                      scroller.get('offsetTop')) + 'px',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1236
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1237
                // Minus 1 because IE 6-10 require the scrolled area to be
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1238
                // visible by at least 1px or it won't respond to clicks on the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1239
                // scrollbar rail or endcap arrows.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1240
                left: (scroller.get('offsetWidth') -
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1241
                       Y.DOM.getScrollbarWidth() - 1 -
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1242
                       styleDim(scroller, 'borderRightWidth')) + 'px'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1243
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1244
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1245
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1246
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1247
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1248
    Assigns the width of the `<div>` wrapping the data table in vertically
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1249
    scrolling tables.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1250
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1251
    If the table can't compress to the specified width, the container is
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1252
    expanded accordingly.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1253
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1254
    @method _uiSetYScrollWidth
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1255
    @param {String} width The CSS width to attempt to set
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1256
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1257
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1258
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1259
    _uiSetYScrollWidth: function (width) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1260
        var scroller = this._yScrollContainer,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1261
            table    = this._tableNode,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1262
            tableWidth, borderWidth, scrollerWidth, scrollbarWidth;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1263
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1264
        if (scroller && table) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1265
            scrollbarWidth = Y.DOM.getScrollbarWidth();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1266
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1267
            if (width) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1268
                // Assumes no table border
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1269
                borderWidth = scroller.get('offsetWidth') -
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1270
                              scroller.get('clientWidth') +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1271
                              scrollbarWidth; // added back at the end
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1272
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1273
                // The table's rendered width might be greater than the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1274
                // configured width
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1275
                scroller.setStyle('width', width);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1276
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1277
                // Have to subtract the border width from the configured width
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1278
                // because the scroller's width will need to be reduced by the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1279
                // border width as well during the width reassignment below.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1280
                scrollerWidth = scroller.get('clientWidth') - borderWidth;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1281
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1282
                // Assumes no table borders
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1283
                table.setStyle('width', scrollerWidth + 'px');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1284
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1285
                tableWidth = table.get('offsetWidth');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1286
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1287
                // Expand the scroll node width if the table can't fit.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1288
                // Otherwise, reassign the scroller a pixel width that
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1289
                // accounts for the borders.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1290
                scroller.setStyle('width',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1291
                    (tableWidth + scrollbarWidth) + 'px');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1292
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1293
                // Allow the table to expand naturally
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1294
                table.setStyle('width', '');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1295
                scroller.setStyle('width', '');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1296
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1297
                scroller.setStyle('width',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1298
                    (table.get('offsetWidth') + scrollbarWidth) + 'px');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1299
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1300
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1301
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1302
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1303
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1304
    Detaches the scroll event subscriptions used to maintain scroll position
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1305
    parity between the scrollable `<div>` wrapper around the data table and the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1306
    virtual scrollbar for vertically scrolling tables.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1307
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1308
    @method _unbindScrollbar
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1309
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1310
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1311
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1312
    _unbindScrollbar: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1313
        if (this._scrollbarEventHandle) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1314
            this._scrollbarEventHandle.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1315
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1316
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1317
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1318
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1319
    Detaches the resize event subscription used to maintain column parity for
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1320
    vertically scrolling tables with percentage widths.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1321
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1322
    @method _unbindScrollResize
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1323
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1324
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1325
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1326
    _unbindScrollResize: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1327
        if (this._scrollResizeHandle) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1328
            this._scrollResizeHandle.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1329
            delete this._scrollResizeHandle;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1330
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1331
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1332
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1333
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1334
    Indicates horizontal table scrolling is enabled.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1335
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1336
    @property _xScroll
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1337
    @type {Boolean}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1338
    @default undefined (not initially set)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1339
    @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1340
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1341
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1342
    //_xScroll: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1343
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1344
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1345
    Indicates vertical table scrolling is enabled.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1346
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1347
    @property _yScroll
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1348
    @type {Boolean}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1349
    @default undefined (not initially set)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1350
    @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1351
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1352
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1353
    //_yScroll: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1354
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1355
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1356
    Fixed column header `<table>` Node for vertical scrolling tables.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1357
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1358
    @property _yScrollHeader
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1359
    @type {Node}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1360
    @default undefined (not initially set)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1361
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1362
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1363
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1364
    //_yScrollHeader: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1365
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1366
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1367
    Overflow Node used to contain the data rows in a vertically scrolling table.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1368
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1369
    @property _yScrollNode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1370
    @type {Node}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1371
    @default undefined (not initially set)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1372
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1373
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1374
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1375
    //_yScrollNode: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1376
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1377
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1378
    Overflow Node used to contain the table headers and data in a horizontally
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1379
    scrolling table.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1380
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1381
    @property _xScrollNode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1382
    @type {Node}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1383
    @default undefined (not initially set)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1384
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1385
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1386
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1387
    //_xScrollNode: null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1388
}, true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1389
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1390
Y.Base.mix(Y.DataTable, [Scrollable]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1391
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1392
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1393
}, '3.10.3', {"requires": ["datatable-base", "datatable-column-widths", "dom-screen"], "skinnable": true});