src/cm/media/js/lib/yui/yui_3.10.3/build/app-transitions-native/app-transitions-native.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('app-transitions-native', 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 the implementation of view transitions for `Y.App.Transitions` in
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
browsers which support native CSS3 transitions.
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 app
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
@submodule app-transitions-native
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
var AppTransitions = Y.App.Transitions;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
Provides the implementation of view transitions for `Y.App.Transitions` in
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
browsers which support native CSS3 transitions.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
When this module is used, `Y.App.TransitionsNative` will automatically mix
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
itself in to `Y.App`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
@class App.TransitionsNative
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
@extensionfor App
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
@since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
**/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
function AppTransitionsNative() {}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
AppTransitionsNative.prototype = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
    // -- Protected Properties -------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
    Whether this app is currently transitioning its `activeView`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
    @property _transitioning
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
    @type Boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
    @default false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
    A queue that holds pending calls to this app's `_uiTransitionActiveView()`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
    method.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
    @property _viewTransitionQueue
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
    @type Array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
    @default []
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
    @since 3.5.0
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
    // -- Lifecycle Methods ----------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
    initializer: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
        this._transitioning       = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
        this._viewTransitionQueue = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
        // TODO: Consider the AOP approach that `Plugin.WidgetAnim` uses.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
        Y.Do.before(this._queueActiveView, this, '_uiSetActiveView');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
    // -- Protected Methods ----------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
    Dequeues any pending calls to `_uiTransitionActiveView()`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
    **Note:** When there is more than one queued transition, only the most
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
    recent `activeView` change will be visually transitioned, while the others
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
    will have their `transition` option overridden to `false`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
    @method _dequeueActiveView
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
    _dequeueActiveView: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
        var queue      = this._viewTransitionQueue,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
            transition = queue.shift(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
            options;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
        if (transition) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
            // When items are still left in the queue, override the transition
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
            // so it does not run.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
            if (queue.length) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
                // Overrides `transition` option and splices in the new options.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
                options = Y.merge(transition[2], {transition: false});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
                transition.splice(2, 1, options);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
            this._uiTransitionActiveView.apply(this, transition);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
    Returns an object containing a named fx for both `viewIn` and `viewOut`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
    based on the relationship between the specified `newView` and `oldView`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
    @method _getFx
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
    @param {View} newView The view being transitioned-in.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
    @param {View} oldView The view being transitioned-out.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
    @param {String} [transition] The preferred transition to use.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
    @return {Object} An object containing a named fx for both `viewIn` and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
        `viewOut`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
    _getFx: function (newView, oldView, transition) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
        var fx          = AppTransitions.FX,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
            transitions = this.get('transitions');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
        if (transition === false || !transitions) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
            return null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
        if (transition) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
            return fx[transition];
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
        if (this._isChildView(newView, oldView)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
            return fx[transitions.toChild];
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
        if (this._isParentView(newView, oldView)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
            return fx[transitions.toParent];
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
        return fx[transitions.navigate];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
    Queues calls to `_uiTransitionActiveView()` to make sure a currently running
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
    transition isn't interrupted.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
    **Note:** This method prevents the default `_uiSetActiveView()` method from
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
    running.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
    @method _queueActiveView
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
    _queueActiveView: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
        var args = Y.Array(arguments, 0, true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
        this._viewTransitionQueue.push(args);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
        if (!this._transitioning) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
            this._dequeueActiveView();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
        return new Y.Do.Prevent();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
    },
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
    Performs the actual change of this app's `activeView` by visually
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
    transitioning between the `newView` and `oldView` using any specified
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
    `options`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
    The `newView` is attached to the app by rendering it to the `viewContainer`,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
    and making this app a bubble target of its events.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
    The `oldView` is detached from the app by removing it from the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
    `viewContainer`, and removing this app as a bubble target for its events.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
    The `oldView` will either be preserved or properly destroyed.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
    **Note:** This method overrides `_uiSetActiveView()` and provides all of its
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
    functionality plus supports visual transitions. Also, the `activeView`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
    attribute is read-only and can be changed by calling the `showView()`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
    method.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
    @method _uiTransitionActiveView
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
    @param {View} newView The View which is now this app's `activeView`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
    @param {View} [oldView] The View which was this app's `activeView`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
    @param {Object} [options] Optional object containing any of the following
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
        properties:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
      @param {Function} [options.callback] Optional callback function to call
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
        after new `activeView` is ready to use, the function will be passed:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
          @param {View} options.callback.view A reference to the new
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
            `activeView`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
      @param {Boolean} [options.prepend=false] Whether the `view` should be
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
        prepended instead of appended to the `viewContainer`.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
      @param {Boolean} [options.render] Whether the `view` should be rendered.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
        **Note:** If no value is specified, a view instance will only be
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
        rendered if it's newly created by this method.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
      @param {Boolean|String} [options.transition] Optional transition override.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
        A transition can be specified which will override the default, or
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
        `false` for no transition.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
      @param {Boolean} [options.update=false] Whether an existing view should
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
        have its attributes updated by passing the `config` object to its
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
        `setAttrs()` method. **Note:** This option does not have an effect if
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
        the `view` instance is created as a result of calling this method.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
    @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
    @since 3.5.0
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
    **/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
    _uiTransitionActiveView: function (newView, oldView, options) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
        options || (options = {});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
        var callback = options.callback,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
            container, transitioning, isChild, isParent, prepend,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
            fx, fxConfig, transitions;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
        // Quits early when to new and old views are the same.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
        if (newView === oldView) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
            callback && callback.call(this, newView);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
            this._transitioning = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
            return this._dequeueActiveView();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
        fx       = this._getFx(newView, oldView, options.transition);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
        isChild  = this._isChildView(newView, oldView);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
        isParent = !isChild && this._isParentView(newView, oldView);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
        prepend  = !!options.prepend || isParent;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
        // Preforms simply attach/detach of the new and old view respectively
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
        // when there's no transition to perform.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
        if (!fx) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
            this._attachView(newView, prepend);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
            this._detachView(oldView);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
            callback && callback.call(this, newView);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
            this._transitioning = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
            return this._dequeueActiveView();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
        this._transitioning = true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
        container     = this.get('container');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
        transitioning = Y.App.CLASS_NAMES.transitioning;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
        container.addClass(transitioning);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
        this._attachView(newView, prepend);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
        // Called when view transitions completed, if none were added this will
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
        // run right away.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
        function complete() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
            this._detachView(oldView);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
            container.removeClass(transitioning);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
            callback && callback.call(this, newView);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
            this._transitioning = false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
            return this._dequeueActiveView();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
        // Setup a new stack to run the view transitions in parallel.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
        transitions = new Y.Parallel({context: this});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
        fxConfig    = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
            crossView: !!oldView && !!newView,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
            prepended: prepend
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
        };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
        // Transition the new view first to prevent a gap when sliding.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
        if (newView && fx.viewIn) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
            newView.get('container')
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
                .transition(fx.viewIn, fxConfig, transitions.add());
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
        if (oldView && fx.viewOut) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
            oldView.get('container')
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
                .transition(fx.viewOut, fxConfig, transitions.add());
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
        transitions.done(complete);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
// -- Transition fx ------------------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
Y.mix(Y.Transition.fx, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
    'app:fadeIn': {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
        opacity : 1,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
        duration: 0.3,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
        on: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
            start: function (data) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
                var styles = {opacity: 0},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
                    config = data.config;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
                if (config.crossView && !config.prepended) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
                    styles.transform = 'translateX(-100%)';
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
                this.setStyles(styles);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
            end: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
                this.setStyle('transform', 'translateX(0)');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
    'app:fadeOut': {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
        opacity : 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
        duration: 0.3,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
        on: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
            start: function (data) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
                var styles = {opacity: 1},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
                    config = data.config;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
                if (config.crossView && config.prepended) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
                    styles.transform = 'translateX(-100%)';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
                this.setStyles(styles);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
            end: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
                this.setStyle('transform', 'translateX(0)');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
            }
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
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   318
    'app:slideLeft': {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
        duration : 0.3,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
        transform: 'translateX(-100%)',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
        on: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
            start: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
                this.setStyles({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
                    opacity  : 1,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
                    transform: 'translateX(0%)'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
                });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
            end: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
                this.setStyle('transform', 'translateX(0)');
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
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
    'app:slideRight': {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
        duration : 0.3,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   338
        transform: 'translateX(0)',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   339
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
        on: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
            start: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
                this.setStyles({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   343
                    opacity  : 1,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   344
                    transform: 'translateX(-100%)'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   345
                });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   346
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   347
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   348
            end: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   349
                this.setStyle('transform', 'translateX(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
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   352
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   353
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   354
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   355
// -- Namespacae ---------------------------------------------------------------
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   356
Y.App.TransitionsNative = AppTransitionsNative;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   357
Y.Base.mix(Y.App, [AppTransitionsNative]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   358
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   359
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   360
}, '3.10.3', {"requires": ["app-transitions", "app-transitions-css", "parallel", "transition"]});