src/cm/media/js/lib/yui/yui_3.10.3/build/widget-position-align/widget-position-align.js
author Yves-Marie Haussonne <ymh.work+github@gmail.com>
Fri, 09 May 2014 18:35:26 +0200
changeset 656 a84519031134
parent 525 89ef5ed3c48b
permissions -rw-r--r--
add link to "privacy policy" in the header test
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     1
/*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     2
YUI 3.10.3 (build 2fb5187)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     3
Copyright 2013 Yahoo! Inc. All rights reserved.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     4
Licensed under the BSD License.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     5
http://yuilibrary.com/license/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     6
*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     7
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     8
YUI.add('widget-position-align', function (Y, NAME) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     9
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    10
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    11
Provides extended/advanced XY positioning support for Widgets, through an
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
extension.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
It builds on top of the `widget-position` module, to provide alignment and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
centering support. Future releases aim to add constrained and fixed positioning
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
support.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
@module widget-position-align
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
**/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
var Lang = Y.Lang,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
    ALIGN        = 'align',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
    ALIGN_ON     = 'alignOn',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
    VISIBLE      = 'visible',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
    BOUNDING_BOX = 'boundingBox',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
    OFFSET_WIDTH    = 'offsetWidth',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
    OFFSET_HEIGHT   = 'offsetHeight',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
    REGION          = 'region',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
    VIEWPORT_REGION = 'viewportRegion';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
Widget extension, which can be used to add extended XY positioning support to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
the base Widget class, through the `Base.create` method.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
**Note:** This extension requires that the `WidgetPosition` extension be added
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
to the Widget (before `WidgetPositionAlign`, if part of the same extension list
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
passed to `Base.build`).
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
@class WidgetPositionAlign
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
@param {Object} config User configuration object.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
@constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
**/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
function PositionAlign (config) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
    if ( ! this._posNode) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
        Y.error('WidgetPosition needs to be added to the Widget, ' + 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
            'before WidgetPositionAlign is added'); 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
    Y.after(this._bindUIPosAlign, this, 'bindUI');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
    Y.after(this._syncUIPosAlign, this, 'syncUI');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
PositionAlign.ATTRS = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
    The alignment configuration for this widget.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
    The `align` attribute is used to align a reference point on the widget, with
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
    the reference point on another `Node`, or the viewport. The object which
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
    `align` expects has the following properties:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
      * __`node`__: The `Node` to which the widget is to be aligned. If set to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
        `null`, or not provided, the widget is aligned to the viewport.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
      * __`points`__: A two element Array, defining the two points on the widget
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
        and `Node`/viewport which are to be aligned. The first element is the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
        point on the widget, and the second element is the point on the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
        `Node`/viewport. Supported alignment points are defined as static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
        properties on `WidgetPositionAlign`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
    @example Aligns the top-right corner of the widget with the top-left corner 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
    of the viewport:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
        myWidget.set('align', {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
            points: [Y.WidgetPositionAlign.TR, Y.WidgetPositionAlign.TL]
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
    @attribute align
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
    @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
    @default null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
    align: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
        value: null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
    },
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
    A convenience Attribute, which can be used as a shortcut for the `align` 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
    Attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
    If set to `true`, the widget is centered in the viewport. If set to a `Node` 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
    reference or valid selector String, the widget will be centered within the 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
    `Node`. If set to `false`, no center positioning is applied.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
    @attribute centered
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
    @type Boolean|Node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
    @default false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
    centered: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
        setter : '_setAlignCenter',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
        lazyAdd:false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
        value  :false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
    An Array of Objects corresponding to the `Node`s and events that will cause
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
    the alignment of this widget to be synced to the DOM.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
    The `alignOn` Attribute is expected to be an Array of Objects with the 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
    following properties:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
      * __`eventName`__: The String event name to listen for.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
      * __`node`__: The optional `Node` that will fire the event, it can be a 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
        `Node` reference or a selector String. This will default to the widget's 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
        `boundingBox`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
    @example Sync this widget's alignment on window resize:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
        myWidget.set('alignOn', [
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
            {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
                node     : Y.one('win'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
                eventName: 'resize'
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
    @attribute alignOn
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
    @type Array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
    @default []
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
    alignOn: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
        value    : [],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
        validator: Y.Lang.isArray
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
Constant used to specify the top-left corner for alignment
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
@property TL
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
@type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
@value 'tl'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
@static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
**/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
PositionAlign.TL = 'tl';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
Constant used to specify the top-right corner for alignment
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
@property TR
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
@type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
@value 'tr'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
@static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
**/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
PositionAlign.TR = 'tr';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
Constant used to specify the bottom-left corner for alignment
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
@property BL
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
@type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
@value 'bl'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
@static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
**/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
PositionAlign.BL = 'bl';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
Constant used to specify the bottom-right corner for alignment
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
@property BR
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
@type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
@value 'br'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
@static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
**/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
PositionAlign.BR = 'br';
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
Constant used to specify the top edge-center point for alignment
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
@property TC
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
@type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
@value 'tc'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
@static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
**/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
PositionAlign.TC = 'tc';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
Constant used to specify the right edge, center point for alignment
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
@property RC
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
@type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
@value 'rc'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
@static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
**/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
PositionAlign.RC = 'rc';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
Constant used to specify the bottom edge, center point for alignment
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
@property BC
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
@type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
@value 'bc'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
@static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
**/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
PositionAlign.BC = 'bc';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
Constant used to specify the left edge, center point for alignment
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
@property LC
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
@type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
@value 'lc'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
@static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
**/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
PositionAlign.LC = 'lc';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
Constant used to specify the center of widget/node/viewport for alignment
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
@property CC
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
@type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
@value 'cc'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
@static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
PositionAlign.CC = 'cc';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
PositionAlign.prototype = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
    // -- Protected Properties -------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
    Holds the alignment-syncing event handles.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
    @property _posAlignUIHandles
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
    @type Array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
    @default null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
    _posAlignUIHandles: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
    // -- Lifecycle Methods ----------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
    destructor: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
        this._detachPosAlignUIHandles();
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
    Bind event listeners responsible for updating the UI state in response to
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
    the widget's position-align related state changes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
    This method is invoked after `bindUI` has been invoked for the `Widget`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
    class using the AOP infrastructure.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
    @method _bindUIPosAlign
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
    _bindUIPosAlign: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
        this.after('alignChange', this._afterAlignChange);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
        this.after('alignOnChange', this._afterAlignOnChange);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
        this.after('visibleChange', this._syncUIPosAlign);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
    Synchronizes the current `align` Attribute value to the DOM.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
    This method is invoked after `syncUI` has been invoked for the `Widget`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
    class using the AOP infrastructure.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
    @method _syncUIPosAlign
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
    _syncUIPosAlign: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
        var align = this.get(ALIGN);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
        this._uiSetVisiblePosAlign(this.get(VISIBLE));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
        if (align) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
            this._uiSetAlign(align.node, align.points);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
        }
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
    // -- Public Methods -------------------------------------------------------
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
    Aligns this widget to the provided `Node` (or viewport) using the provided
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
    points. This method can be invoked with no arguments which will cause the 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
    widget's current `align` Attribute value to be synced to the DOM.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
    @example Aligning to the top-left corner of the `<body>`:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
        myWidget.align('body',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
            [Y.WidgetPositionAlign.TL, Y.WidgetPositionAlign.TR]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
    @method align
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
    @param {Node|String|null} [node] A reference (or selector String) for the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
      `Node` which with the widget is to be aligned. If null is passed in, the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
      widget will be aligned with the viewport.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
    @param {Array[2]} [points] A two item array specifying the points on the 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
      widget and `Node`/viewport which will to be aligned. The first entry is 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
      the point on the widget, and the second entry is the point on the 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
      `Node`/viewport. Valid point references are defined as static constants on 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
      the `WidgetPositionAlign` extension.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
    @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
    align: function (node, points) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
        if (arguments.length) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
            // Set the `align` Attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
            this.set(ALIGN, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
                node  : node,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
                points: points
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
            // Sync the current `align` Attribute value to the DOM.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
            this._syncUIPosAlign();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   315
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   316
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   317
        return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   318
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
    Centers the widget in the viewport, or if a `Node` is passed in, it will 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
    be centered to that `Node`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
    @method centered
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
    @param {Node|String} [node] A `Node` reference or selector String defining 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
      the `Node` which the widget should be centered. If a `Node` is not  passed
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
      in, then the widget will be centered to the viewport.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
    @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
    centered: function (node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
        return this.align(node, [PositionAlign.CC, PositionAlign.CC]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   334
    // -- Protected Methods ----------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
    Default setter for `center` Attribute changes. Sets up the appropriate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   338
    value, and passes it through the to the align attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   339
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
    @method _setAlignCenter
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
    @param {Boolean|Node} val The Attribute value being set.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
    @return {Boolean|Node} the value passed in.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   343
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   344
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   345
    _setAlignCenter: function (val) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   346
        if (val) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   347
            this.set(ALIGN, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   348
                node  : val === true ? null : val,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   349
                points: [PositionAlign.CC, PositionAlign.CC]
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   350
            });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   351
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   352
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   353
        return val;
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
    Updates the UI to reflect the `align` value passed in.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   358
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   359
    **Note:** See the `align` Attribute documentation, for the Object structure
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   360
    expected.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   361
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   362
    @method _uiSetAlign
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   363
    @param {Node|String|null} [node] The node to align to, or null to indicate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   364
      the viewport.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   365
    @param {Array} points The alignment points.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   366
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   367
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   368
    _uiSetAlign: function (node, points) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   369
        if ( ! Lang.isArray(points) || points.length !== 2) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   370
            Y.error('align: Invalid Points Arguments');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   371
            return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   372
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   373
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   374
        var nodeRegion = this._getRegion(node), 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   375
            widgetPoint, nodePoint, xy;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   376
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   377
        if ( ! nodeRegion) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   378
            // No-op, nothing to align to.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   379
            return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   380
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   381
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   382
        widgetPoint = points[0];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   383
        nodePoint   = points[1];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   384
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   385
        // TODO: Optimize KWeight - Would lookup table help?
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   386
        switch (nodePoint) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   387
        case PositionAlign.TL:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   388
            xy = [nodeRegion.left, nodeRegion.top];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   389
            break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   390
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   391
        case PositionAlign.TR:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   392
            xy = [nodeRegion.right, nodeRegion.top];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   393
            break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   394
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   395
        case PositionAlign.BL:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   396
            xy = [nodeRegion.left, nodeRegion.bottom];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   397
            break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   398
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   399
        case PositionAlign.BR:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   400
            xy = [nodeRegion.right, nodeRegion.bottom];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   401
            break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   402
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   403
        case PositionAlign.TC:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   404
            xy = [
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   405
                nodeRegion.left + Math.floor(nodeRegion.width / 2),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   406
                nodeRegion.top
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   407
            ];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   408
            break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   409
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   410
        case PositionAlign.BC:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   411
            xy = [
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   412
                nodeRegion.left + Math.floor(nodeRegion.width / 2),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   413
                nodeRegion.bottom
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   414
            ];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   415
            break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   416
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   417
        case PositionAlign.LC:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   418
            xy = [
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   419
                nodeRegion.left,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   420
                nodeRegion.top + Math.floor(nodeRegion.height / 2)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   421
            ];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   422
            break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   423
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   424
        case PositionAlign.RC:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   425
            xy = [
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   426
                nodeRegion.right,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   427
                nodeRegion.top + Math.floor(nodeRegion.height / 2)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   428
            ];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   429
            break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   430
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   431
        case PositionAlign.CC:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   432
            xy = [
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   433
                nodeRegion.left + Math.floor(nodeRegion.width / 2),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   434
                nodeRegion.top + Math.floor(nodeRegion.height / 2)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   435
            ];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   436
            break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   437
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   438
        default:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   439
            break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   440
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   441
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   442
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   443
        if (xy) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   444
            this._doAlign(widgetPoint, xy[0], xy[1]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   445
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   446
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   447
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   448
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   449
    Attaches or detaches alignment-syncing event handlers based on the widget's
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   450
    `visible` Attribute state.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   451
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   452
    @method _uiSetVisiblePosAlign
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   453
    @param {Boolean} visible The current value of the widget's `visible`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   454
      Attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   455
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   456
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   457
    _uiSetVisiblePosAlign: function (visible) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   458
        if (visible) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   459
            this._attachPosAlignUIHandles();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   460
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   461
            this._detachPosAlignUIHandles();
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   465
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   466
    Attaches the alignment-syncing event handlers.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   467
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   468
    @method _attachPosAlignUIHandles
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
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   471
    _attachPosAlignUIHandles: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   472
        if (this._posAlignUIHandles) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   473
            // No-op if we have already setup the event handlers.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   474
            return;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   475
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   476
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   477
        var bb        = this.get(BOUNDING_BOX),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   478
            syncAlign = Y.bind(this._syncUIPosAlign, this),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   479
            handles   = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   480
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   481
        Y.Array.each(this.get(ALIGN_ON), function (o) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   482
            var event = o.eventName,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   483
                node  = Y.one(o.node) || bb;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   484
            
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   485
            if (event) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   486
                handles.push(node.on(event, syncAlign));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   487
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   488
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   489
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   490
        this._posAlignUIHandles = handles;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   491
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   492
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   493
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   494
    Detaches the alignment-syncing event handlers.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   495
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   496
    @method _detachPosAlignUIHandles
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   497
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   498
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   499
    _detachPosAlignUIHandles: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   500
        var handles = this._posAlignUIHandles;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   501
        if (handles) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   502
            new Y.EventHandle(handles).detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   503
            this._posAlignUIHandles = null;
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   507
    // -- Private Methods ------------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   508
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   509
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   510
    Helper method, used to align the given point on the widget, with the XY page
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   511
    coordinates provided.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   512
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   513
    @method _doAlign
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   514
    @param {String} widgetPoint Supported point constant
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   515
      (e.g. WidgetPositionAlign.TL)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   516
    @param {Number} x X page coordinate to align to.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   517
    @param {Number} y Y page coordinate to align to.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   518
    @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   519
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   520
    _doAlign: function (widgetPoint, x, y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   521
        var widgetNode = this._posNode,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   522
            xy;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   523
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   524
        switch (widgetPoint) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   525
        case PositionAlign.TL:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   526
            xy = [x, y];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   527
            break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   528
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   529
        case PositionAlign.TR:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   530
            xy = [
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   531
                x - widgetNode.get(OFFSET_WIDTH),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   532
                y
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   533
            ];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   534
            break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   535
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   536
        case PositionAlign.BL:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   537
            xy = [
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   538
                x,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   539
                y - widgetNode.get(OFFSET_HEIGHT)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   540
            ];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   541
            break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   542
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   543
        case PositionAlign.BR:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   544
            xy = [
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   545
                x - widgetNode.get(OFFSET_WIDTH),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   546
                y - widgetNode.get(OFFSET_HEIGHT)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   547
            ];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   548
            break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   549
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   550
        case PositionAlign.TC:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   551
            xy = [
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   552
                x - (widgetNode.get(OFFSET_WIDTH) / 2),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   553
                y
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   554
            ];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   555
            break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   556
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   557
        case PositionAlign.BC:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   558
            xy = [
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   559
                x - (widgetNode.get(OFFSET_WIDTH) / 2),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   560
                y - widgetNode.get(OFFSET_HEIGHT)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   561
            ];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   562
            break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   563
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   564
        case PositionAlign.LC:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   565
            xy = [
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   566
                x,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   567
                y - (widgetNode.get(OFFSET_HEIGHT) / 2)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   568
            ];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   569
            break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   570
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   571
        case PositionAlign.RC:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   572
            xy = [
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   573
                x - widgetNode.get(OFFSET_WIDTH),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   574
                y - (widgetNode.get(OFFSET_HEIGHT) / 2)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   575
            ];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   576
            break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   577
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   578
        case PositionAlign.CC:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   579
            xy = [
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   580
                x - (widgetNode.get(OFFSET_WIDTH) / 2),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   581
                y - (widgetNode.get(OFFSET_HEIGHT) / 2)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   582
            ];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   583
            break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   584
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   585
        default:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   586
            break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   587
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   588
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   589
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   590
        if (xy) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   591
            this.move(xy);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   592
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   593
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   594
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   595
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   596
    Returns the region of the passed-in `Node`, or the viewport region if
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   597
    calling with passing in a `Node`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   598
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   599
    @method _getRegion
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   600
    @param {Node} [node] The node to get the region of.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   601
    @return {Object} The node's region.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   602
    @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   603
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   604
    _getRegion: function (node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   605
        var nodeRegion;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   606
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   607
        if ( ! node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   608
            nodeRegion = this._posNode.get(VIEWPORT_REGION);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   609
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   610
            node = Y.Node.one(node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   611
            if (node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   612
                nodeRegion = node.get(REGION);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   613
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   614
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   615
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   616
        return nodeRegion;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   617
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   618
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   619
    // -- Protected Event Handlers ---------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   620
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   621
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   622
    Handles `alignChange` events by updating the UI in response to `align`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   623
    Attribute changes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   624
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   625
    @method _afterAlignChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   626
    @param {EventFacade} e
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   627
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   628
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   629
    _afterAlignChange: function (e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   630
        var align = e.newVal;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   631
        if (align) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   632
            this._uiSetAlign(align.node, align.points);               
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   633
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   634
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   635
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   636
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   637
    Handles `alignOnChange` events by updating the alignment-syncing event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   638
    handlers.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   639
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   640
    @method _afterAlignOnChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   641
    @param {EventFacade} e
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   642
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   643
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   644
    _afterAlignOnChange: function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   645
        this._detachPosAlignUIHandles();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   646
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   647
        if (this.get(VISIBLE)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   648
            this._attachPosAlignUIHandles();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   649
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   650
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   651
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   652
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   653
Y.WidgetPositionAlign = PositionAlign;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   654
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   655
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   656
}, '3.10.3', {"requires": ["widget-position"]});