src/cm/media/js/lib/yui/yui_3.10.3/docs/widget/widget-tooltip.html
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
<!DOCTYPE html>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     2
<html lang="en">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     3
<head>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     4
    <meta charset="utf-8">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     5
    <title>Example: Creating a Simple Tooltip Widget With Extensions</title>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     6
    <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=PT+Sans:400,700,400italic,700italic">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     7
    <link rel="stylesheet" href="../../build/cssgrids/cssgrids-min.css">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     8
    <link rel="stylesheet" href="../assets/css/main.css">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     9
    <link rel="stylesheet" href="../assets/vendor/prettify/prettify-min.css">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    10
    <link rel="shortcut icon" type="image/png" href="../assets/favicon.png">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    11
    <script src="../../build/yui/yui-min.js"></script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
</head>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
<body>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
<!--
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
<a href="https://github.com/yui/yui3"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub"></a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
-->
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
<div id="doc">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
    <div id="hd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
        <h1><img src="http://yuilibrary.com/img/yui-logo.png"></h1>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
            <h1>Example: Creating a Simple Tooltip Widget With Extensions</h1>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
    <div class="yui3-g">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
        <div class="yui3-u-3-4">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
            <div id="main">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
                <div class="content"><style type="text/css" scoped>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
    .yui3-tooltip {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
        position:absolute;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
    .yui3-tooltip-content {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
        color: #000;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
        padding: 2px 5px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
        border-color: #D4C237 #A6982B #A6982B #A6982B;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
        border-width: 1px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
        border-style: solid;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
        background-color: #FFEE69;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
    .yui3-tooltip-hidden {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
        visibility:hidden;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
    div.yui3-hastooltip {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
        border:1px solid #243356;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
        background-color:#406ED9;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
        color:#ffffff;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
        width:25em;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
        margin:20px 0px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
        padding:5px;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
        cursor:default;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
    div.yui3-hastooltip span {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
        font-style:italic;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
        font-weight:bold;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
        color:#ABCEFF;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
    .yui3-tooltip-content strong {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
        font-weight:bold;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
</style>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
<div class="intro">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
    <p>This is an advanced example, in which we create a Tooltip widget, by extending the base <code>Widget</code> class, and adding <code>WidgetStack</code> and <code>WidgetPosition</code> extensions, through <code>Base.build</code>.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
<div class="example">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
    <div id="delegate">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
    <div class="yui3-hastooltip" title="Tooltip 1" id="tt1">Tooltip One <span>(content from title)</span></div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
    <div class="yui3-hastooltip" title="Tooltip 2" id="tt2">Tooltip Two <span>(content set in event listener)</span></div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
    <div class="yui3-hastooltip" title="Tooltip 3" id="tt3">Tooltip Three <span>(content from lookup)</span></div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
    <div class="yui3-hastooltip" title="Tooltip 4" id="tt4">Tooltip Four <span>(content from title)</span></div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
    <label><input type="checkbox" id="prevent" /> Prevent Tooltip Four</label>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
<script type="text/javascript">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
YUI().use("event-mouseenter", "widget", "widget-position", "widget-stack", function(Y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
    var Lang = Y.Lang,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
        Node = Y.Node,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
        OX = -10000,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
        OY = -10000;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
    var Tooltip = Y.Base.create("tooltip", Y.Widget, [Y.WidgetPosition, Y.WidgetStack], {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
        // PROTOTYPE METHODS/PROPERTIES
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
        /*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
         * Initialization Code: Sets up privately used state
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
         * properties, and publishes the events Tooltip introduces
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
        initializer : function(config) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
            this._triggerClassName = this.getClassName("trigger");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
            // Currently bound trigger node information
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
            this._currTrigger = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
                node: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
                title: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
                mouseX: Tooltip.OFFSCREEN_X,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
                mouseY: Tooltip.OFFSCREEN_Y
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
            // Event handles - mouse over is set on the delegate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
            // element, mousemove and mouseleave are set on the trigger node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
            this._eventHandles = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
                delegate: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
                trigger: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
                    mouseMove : null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
                    mouseOut: null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
            };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
            // Show/hide timers
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
            this._timers = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
                show: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
                hide: null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
            };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
            // Publish events introduced by Tooltip. Note the triggerEnter event is preventable,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
            // with the default behavior defined in the _defTriggerEnterFn method 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
            this.publish("triggerEnter", {defaultFn: this._defTriggerEnterFn, preventable:true});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
            this.publish("triggerLeave", {preventable:false});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
        /*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
         * Destruction Code: Clears event handles, timers,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
         * and current trigger information
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
        destructor : function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
            this._clearCurrentTrigger();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
            this._clearTimers();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
            this._clearHandles();
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
        /*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
         * bindUI is used to bind attribute change and dom event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
         * listeners
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
        bindUI : function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
            this.after("delegateChange", this._afterSetDelegate);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
            this.after("nodesChange", this._afterSetNodes);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
            this._bindDelegate();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
        /*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
         * syncUI is used to update the rendered DOM, based on the current
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
         * Tooltip state
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
        syncUI : function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
            this._uiSetNodes(this.get("triggerNodes"));
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
         * Public method, which can be used by triggerEvent event listeners
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
         * to set the content of the tooltip for the current trigger node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
        setTriggerContent : function(content) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
            var contentBox = this.get("contentBox");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
            contentBox.set("innerHTML", "");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
            if (content) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
                if (content instanceof Node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
                    for (var i = 0, l = content.size(); i < l; ++i) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
                        contentBox.appendChild(content.item(i));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
                } else if (Lang.isString(content)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
                    contentBox.set("innerHTML", content);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
        /*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
         * Default attribute change listener for 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
         * the triggerNodes attribute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
        _afterSetNodes : function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
            this._uiSetNodes(e.newVal);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
        /*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
         * Default attribute change listener for 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
         * the delegate attribute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
        _afterSetDelegate : function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
            this._bindDelegate(e.newVal);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
        /*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
         * Updates the rendered DOM to reflect the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
         * set of trigger nodes passed in
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
        _uiSetNodes : function(nodes) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
            if (this._triggerNodes) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
                this._triggerNodes.removeClass(this._triggerClassName);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
            if (nodes) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
                this._triggerNodes = nodes;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
                this._triggerNodes.addClass(this._triggerClassName);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
        },
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
         * Attaches the default mouseover DOM listener to the 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
         * current delegate node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
        _bindDelegate : function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
            var eventHandles = this._eventHandles;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
            if (eventHandles.delegate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
                eventHandles.delegate.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
                eventHandles.delegate = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
            eventHandles.delegate = Y.delegate("mouseenter", Y.bind(this._onNodeMouseEnter, this), this.get("delegate"), "." + this._triggerClassName);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
        /*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
         * Default mouse enter DOM event listener.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
         * 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
         * Delegates to the _enterTrigger method,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
         * if the mouseover enters a trigger node.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
        _onNodeMouseEnter : function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
            var node = e.currentTarget;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
            if (node && (!this._currTrigger.node || !node.compareTo(this._currTrigger.node))) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
                this._enterTrigger(node, e.pageX, e.pageY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
        /*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
         * Default mouse leave DOM event listener
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
         * 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
         * Delegates to _leaveTrigger if the mouse
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
         * leaves the current trigger node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
        _onNodeMouseLeave : function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
            this._leaveTrigger(e.currentTarget);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
        /*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
         * Default mouse move DOM event listener
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
        _onNodeMouseMove : function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
            this._overTrigger(e.pageX, e.pageY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
        /*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
         * Default handler invoked when the mouse enters
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
         * a trigger node. Fires the triggerEnter
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
         * event which can be prevented by listeners to 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
         * show the tooltip from being displayed.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
        _enterTrigger : function(node, x, y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
            this._setCurrentTrigger(node, x, y);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
            this.fire("triggerEnter", {node:node, pageX:x, pageY:y});
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
         * Default handler for the triggerEvent event,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
         * which will setup the timer to display the tooltip,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
         * if the default handler has not been prevented.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
        _defTriggerEnterFn : function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
            var node = e.node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
            if (!this.get("disabled")) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
                this._clearTimers();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
                var delay = (this.get("visible")) ? 0 : this.get("showDelay");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
                this._timers.show = Y.later(delay, this, this._showTooltip, [node]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
        /*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
         * Default handler invoked when the mouse leaves
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
         * the current trigger node. Fires the triggerLeave
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
         * event and sets up the hide timer
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
        _leaveTrigger : function(node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
            this.fire("triggerLeave");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
            this._clearCurrentTrigger();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
            this._clearTimers();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
            this._timers.hide = Y.later(this.get("hideDelay"), this, this._hideTooltip);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
        /*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
         * Default handler invoked for mousemove events
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
         * on the trigger node. Stores the current mouse 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
         * x, y positions
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
        _overTrigger : function(x, y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
            this._currTrigger.mouseX = x;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
            this._currTrigger.mouseY = y;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
        /*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
         * Shows the tooltip, after moving it to the current mouse
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
         * position.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
        _showTooltip : function(node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
            var x = this._currTrigger.mouseX;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
            var y = this._currTrigger.mouseY;
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.move(x + Tooltip.OFFSET_X, y + Tooltip.OFFSET_Y);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
            this.show();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
            this._clearTimers();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
            this._timers.hide = Y.later(this.get("autoHideDelay"), this, this._hideTooltip);
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
         * Hides the tooltip, after clearing existing timers.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
        _hideTooltip : function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
            this._clearTimers();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
            this.hide();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
        /*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
         * Set the rendered content of the tooltip for the current
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
         * trigger, based on (in order of precedence):
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
         * 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
         * a). The string/node content attribute value
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
         * b). From the content lookup map if it is set, or 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
         * c). From the title attribute if set.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
        _setTriggerContent : function(node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   334
            var content = this.get("content");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
            if (content && !(content instanceof Node || Lang.isString(content))) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
                content = content[node.get("id")] || node.getAttribute("title");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   338
            this.setTriggerContent(content);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   339
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
        /*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
         * Set the currently bound trigger node information, clearing 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   343
         * out the title attribute if set and setting up mousemove/out 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   344
         * listeners.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   345
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   346
        _setCurrentTrigger : function(node, x, y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   347
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   348
            var currTrigger = this._currTrigger,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   349
                triggerHandles = this._eventHandles.trigger;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   350
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   351
            this._setTriggerContent(node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   352
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   353
            triggerHandles.mouseMove = Y.on("mousemove", Y.bind(this._onNodeMouseMove, this), node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   354
            triggerHandles.mouseOut = Y.on("mouseleave", Y.bind(this._onNodeMouseLeave, this), node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   355
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   356
            var title = node.getAttribute("title");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   357
            node.setAttribute("title", "");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   358
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   359
            currTrigger.mouseX = x;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   360
            currTrigger.mouseY = y;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   361
            currTrigger.node = node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   362
            currTrigger.title = title;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   363
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   364
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   365
        /*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   366
         * Clear out the current trigger state, restoring
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   367
         * the title attribute on the trigger node, 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   368
         * if it was originally set.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   369
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   370
        _clearCurrentTrigger : function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   371
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   372
            var currTrigger = this._currTrigger,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   373
                triggerHandles = this._eventHandles.trigger;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   374
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   375
            if (currTrigger.node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   376
                var node = currTrigger.node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   377
                var title = currTrigger.title || "";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   378
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   379
                currTrigger.node = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   380
                currTrigger.title = "";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   381
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   382
                triggerHandles.mouseMove.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   383
                triggerHandles.mouseOut.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   384
                triggerHandles.mouseMove = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   385
                triggerHandles.mouseOut = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   386
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   387
                node.setAttribute("title", title);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   388
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   389
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   390
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   391
        /*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   392
         * Cancel any existing show/hide timers
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   393
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   394
        _clearTimers : function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   395
            var timers = this._timers;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   396
            if (timers.hide) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   397
                timers.hide.cancel();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   398
                timers.hide = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   399
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   400
            if (timers.show) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   401
              timers.show.cancel();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   402
              timers.show = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   403
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   404
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   405
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   406
        /*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   407
         * Detach any stored event handles
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   408
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   409
        _clearHandles : function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   410
            var eventHandles = this._eventHandles;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   411
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   412
            if (eventHandles.delegate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   413
                this._eventHandles.delegate.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   414
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   415
            if (eventHandles.trigger.mouseOut) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   416
                eventHandles.trigger.mouseOut.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   417
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   418
            if (eventHandles.trigger.mouseMove) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   419
                eventHandles.trigger.mouseMove.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   420
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   421
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   422
    }, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   423
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   424
        // STATIC METHODS/PROPERTIES
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   425
       
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   426
        OFFSET_X : 15,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   427
        OFFSET_Y : 15,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   428
        OFFSCREEN_X : OX,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   429
        OFFSCREEN_Y : OY,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   430
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   431
        ATTRS : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   432
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   433
            /* 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   434
             * The tooltip content. This can either be a fixed content value, 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   435
             * or a map of id-to-values, designed to be used when a single
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   436
             * tooltip is mapped to multiple trigger elements.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   437
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   438
            content : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   439
                value: null
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
             * The set of nodes to bind to the tooltip instance. Can be a string, 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   444
             * or a node instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   445
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   446
            triggerNodes : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   447
                value: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   448
                setter: function(val) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   449
                    if (val && Lang.isString(val)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   450
                        val = Node.all(val);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   451
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   452
                    return val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   453
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   454
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   455
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   456
            /*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   457
             * The delegate node to which event listeners should be attached.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   458
             * This node should be an ancestor of all trigger nodes bound
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   459
             * to the instance. By default the document is used.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   460
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   461
            delegate : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   462
                value: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   463
                setter: function(val) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   464
                    return Y.one(val) || Y.one("document");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   465
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   466
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   467
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   468
            /*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   469
             * The time to wait, after the mouse enters the trigger node,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   470
             * to display the tooltip
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   471
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   472
            showDelay : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   473
                value:250
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   474
            },
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
             * The time to wait, after the mouse leaves the trigger node,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   478
             * to hide the tooltip
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   479
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   480
            hideDelay : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   481
                value:10
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   482
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   483
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   484
            /*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   485
             * The time to wait, after the tooltip is first displayed for 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   486
             * a trigger node, to hide it, if the mouse has not left the 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   487
             * trigger node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   488
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   489
            autoHideDelay : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   490
                value:2000
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
             * Override the default visibility set by the widget base class
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   495
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   496
            visible : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   497
                value:false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   498
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   499
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   500
            /*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   501
             * Override the default XY value set by the widget base class,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   502
             * to position the tooltip offscreen
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   503
             */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   504
            xy: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   505
                value:[OX, OY]
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   506
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   507
        }
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
    var tt = new Tooltip({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   511
        triggerNodes:".yui3-hastooltip",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   512
        delegate: "#delegate",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   513
        content: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   514
            tt3: "Tooltip 3 (from lookup)"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   515
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   516
        shim:false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   517
        zIndex:2
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   518
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   519
    tt.render();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   520
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   521
    tt.on("triggerEnter", function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   522
        var node = e.node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   523
        if (node && node.get("id") == "tt2") {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   524
            this.setTriggerContent("Tooltip 2 (from triggerEvent)");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   525
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   526
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   527
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   528
    var prevent = Y.one("#prevent");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   529
    tt.on("triggerEnter", function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   530
        var node = e.node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   531
        if (prevent.get("checked")) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   532
            if (node && node.get("id") == "tt4") {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   533
                e.preventDefault();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   534
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   535
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   536
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   537
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   538
</script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   539
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   540
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   541
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   542
<h2>Creating A Tooltip Widget Class</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   543
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   544
<h3>Basic Class Structure</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   545
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   546
<p>As with the basic <a href="widget-extend.html">"Extending Widget"</a> example, the <code>Tooltip</code> class will extend the <code>Widget</code> base class and follows the same pattern we use for other classes which extend Base.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   547
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   548
<p>Namely:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   549
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   550
<ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   551
    <li>Set up the constructor to invoke the superclass constructor</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   552
    <li>Define a <code>NAME</code> property, to identify the class</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   553
    <li>Define the default attribute configuration, using the <code>ATTRS</code> property</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   554
    <li>Implement prototype methods</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   555
</ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   556
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   557
<p>This basic structure is shown below:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   558
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   559
<pre class="code prettyprint">&#x2F;* 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   560
 *  Required NAME static field, used to identify the Widget class and 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   561
 *  used as an event prefix, to generate class names etc. (set to the 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   562
 *  class name in camel case). 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   563
 *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   564
Tooltip.NAME = &quot;tooltip&quot;;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   565
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   566
&#x2F;* Default Tooltip Attributes *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   567
Tooltip.ATTRS = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   568
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   569
    &#x2F;* 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   570
     * The tooltip content. This can either be a fixed content value, 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   571
     * or a map of id-to-values, designed to be used when a single
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   572
     * tooltip is mapped to multiple trigger elements.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   573
     *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   574
    content : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   575
        value: null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   576
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   577
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   578
    &#x2F;* 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   579
     * The set of nodes to bind to the tooltip instance. Can be a string, 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   580
     * or a node instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   581
     *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   582
    triggerNodes : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   583
        value: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   584
        setter: function(val) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   585
            if (val &amp;&amp; Lang.isString(val)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   586
                val = Node.all(val);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   587
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   588
            return val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   589
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   590
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   591
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   592
    &#x2F;*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   593
     * The delegate node to which event listeners should be attached.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   594
     * This node should be an ancestor of all trigger nodes bound
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   595
     * to the instance. By default the document is used.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   596
     *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   597
    delegate : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   598
        value: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   599
        setter: function(val) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   600
            return Y.one(val) || Y.one(&quot;document&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   601
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   602
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   603
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   604
    &#x2F;*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   605
     * The time to wait, after the mouse enters the trigger node,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   606
     * to display the tooltip
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   607
     *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   608
    showDelay : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   609
        value:250
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   610
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   611
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   612
    &#x2F;*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   613
     * The time to wait, after the mouse leaves the trigger node,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   614
     * to hide the tooltip
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   615
     *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   616
    hideDelay : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   617
        value:10
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   618
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   619
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   620
    &#x2F;*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   621
     * The time to wait, after the tooltip is first displayed for 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   622
     * a trigger node, to hide it, if the mouse has not left the 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   623
     * trigger node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   624
     *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   625
    autoHideDelay : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   626
        value:2000
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   627
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   628
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   629
    &#x2F;*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   630
     * Override the default visibility set by the widget base class
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   631
     *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   632
    visible : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   633
        value:false
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
    &#x2F;*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   637
     * Override the default XY value set by the widget base class,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   638
     * to position the tooltip offscreen
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   639
     *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   640
    xy: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   641
        value:[Tooltip.OFFSCREEN_X, Tooltip.OFFSCREEN_Y]
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   642
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   643
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   644
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   645
Y.extend(Tooltip, Y.Widget, { 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   646
    &#x2F;&#x2F; Prototype methods&#x2F;properties
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   647
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   648
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   649
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   650
<h3>Adding WidgetPosition and WidgetStack Extension Support</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   651
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   652
<p>The Tooltip class also needs basic positioning and stacking (z-index, shimming) support. As with the <a href="widget-build.html">Custom Widget Classes</a> example, we use
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   653
<code>Base.create</code> to create a new <code>Tooltip</code> class with this support:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   654
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   655
<pre class="code prettyprint">var Tooltip = Y.Base.create(&quot;tooltip&quot;, Y.Widget, [Y.WidgetPosition, Y.WidgetStack], 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   656
                                  { ... prototype properties ... },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   657
                                  { ... static properties ... },</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   658
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   659
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   660
<h3>Lifecycle Methods: initializer, destructor</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   661
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   662
<p>The <code>initializer</code> method is invoked during the <code>init</code> lifecycle phase, after the attributes are configured for each class. <code>Tooltip</code> uses it 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   663
to setup the private state variables it will use to store the trigger node currently being serviced by the tooltip instance, event handles and show/hide timers.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   664
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   665
<pre class="code prettyprint">initializer : function(config) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   666
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   667
    this._triggerClassName = this.getClassName(&quot;trigger&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   668
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   669
    &#x2F;&#x2F; Currently bound trigger node information
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   670
    this._currTrigger = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   671
        node: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   672
        title: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   673
        mouseX: Tooltip.OFFSCREEN_X,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   674
        mouseY: Tooltip.OFFSCREEN_Y
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   675
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   676
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   677
    &#x2F;&#x2F; Event handles - mouse over is set on the delegate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   678
    &#x2F;&#x2F; element, mousemove and mouseleave are set on the trigger node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   679
    this._eventHandles = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   680
        delegate: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   681
        trigger: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   682
            mouseMove : null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   683
            mouseOut: null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   684
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   685
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   686
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   687
    &#x2F;&#x2F; Show&#x2F;hide timers
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   688
    this._timers = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   689
        show: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   690
        hide: null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   691
    };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   692
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   693
    &#x2F;&#x2F; Publish events introduced by Tooltip. Note the triggerEnter event is preventable,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   694
    &#x2F;&#x2F; with the default behavior defined in the _defTriggerEnterFn method 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   695
    this.publish(&quot;triggerEnter&quot;, {defaultFn: this._defTriggerEnterFn, preventable:true});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   696
    this.publish(&quot;triggerLeave&quot;, {preventable:false});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   697
}</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   698
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   699
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   700
<p>The <code>destructor</code> is used to clear out stored state, detach any event handles and clear out the show/hide timers:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   701
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   702
<pre class="code prettyprint">destructor : function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   703
    this._clearCurrentTrigger();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   704
    this._clearTimers();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   705
    this._clearHandles();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   706
}</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   707
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   708
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   709
<h3>Lifecycle Methods: bindUI, syncUI</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   710
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   711
<p>The <code>bindUI</code> and <code>syncUI</code> are invoked by the base Widget class' <code>renderer</code> method.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   712
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   713
<p><code>bindUI</code> is used to bind the attribute change listeners used to update the rendered UI from the current state of the widget and also to bind
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   714
the DOM listeners required to enable the UI for interaction.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   715
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   716
<p><code>syncUI</code> is used to sync the UI state from the current widget state, when initially rendered.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   717
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   718
<p><em>NOTE:</em> Widget's <code>renderer</code> method also invokes the <code>renderUI</code> method, which is responsible for laying down any additional content elements a widget requires. However
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   719
tooltip does not have any additional elements in needs to add to the DOM, outside of the default Widget boundingBox and contentBox.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   720
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   721
<pre class="code prettyprint">bindUI : function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   722
    this.after(&quot;delegateChange&quot;, this._afterSetDelegate);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   723
    this.after(&quot;nodesChange&quot;, this._afterSetNodes);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   724
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   725
    this._bindDelegate();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   726
},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   727
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   728
syncUI : function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   729
    this._uiSetNodes(this.get(&quot;triggerNodes&quot;));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   730
}</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   731
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   732
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   733
<h3>Attribute Supporting Methods</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   734
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   735
<p>Tooltip's <code>triggerNodes</code>, which defines the set of nodes which should trigger this tooltip instance,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   736
has a couple of supporting methods associated with it.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   737
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   738
<p>The <code>_afterSetNodes</code> method is the default attribute change event handler for the <code>triggerNodes</code>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   739
attribute. It invokes the <code>_uiSetNodes</code> method, which marks all trigger nodes with a trigger class name (<code>yui-tooltip-trigger</code>) when set.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   740
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   741
<pre class="code prettyprint">_afterSetNodes : function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   742
    this._uiSetNodes(e.newVal);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   743
},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   744
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   745
_uiSetNodes : function(nodes) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   746
    if (this._triggerNodes) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   747
        this._triggerNodes.removeClass(this._triggerClassName);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   748
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   749
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   750
    if (nodes) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   751
        this._triggerNodes = nodes;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   752
        this._triggerNodes.addClass(this._triggerClassName);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   753
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   754
},</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   755
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   756
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   757
<p>Similarly the <code>_afterSetDelegate</code> method is the default attribute change listener for the <code>delegate</code> attribute,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   758
and invokes <code>_bindDelegate</code> to set up the listeners when a new delegate node is set. We use <code>Y.delegate</code> support, along with Event's <code>mouseenter</code> support, 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   759
which means the only thing we need to do is tell delegate which node we want to act as the delegate, and which elements we want to target using the <code>&quot;.&quot; + this._triggerClassName</code> selector.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   760
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   761
<pre class="code prettyprint">_afterSetDelegate : function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   762
    this._bindDelegate(e.newVal);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   763
},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   764
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   765
_bindDelegate : function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   766
    var eventHandles = this._eventHandles;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   767
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   768
    if (eventHandles.delegate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   769
        eventHandles.delegate.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   770
        eventHandles.delegate = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   771
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   772
    eventHandles.delegate = Y.delegate(&quot;mouseenter&quot;, Y.bind(this._onNodeMouseEnter, this), this.get(&quot;delegate&quot;), &quot;.&quot; + this._triggerClassName);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   773
},</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   774
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   775
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   776
<h3>DOM Event Handlers</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   777
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   778
<p>Tooltips interaction revolves around the <code>mouseenter</code>, <code>mousemove</code> and <code>mouseleave</code> DOM events. The mousenter listener is the only listener set up initially, on the <code>delegate</code> node:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   779
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   780
<pre class="code prettyprint">_onNodeMouseEnter : function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   781
    var node = e.currentTarget;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   782
    if (node &amp;&amp; (!this._currTrigger.node || !node.compareTo(this._currTrigger.node))) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   783
        this._enterTrigger(node, e.pageX, e.pageY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   784
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   785
}</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   786
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   787
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   788
<p>Since the <code>mouseenter</code> implementation doesn't invoke it's listeners for <code>mouseover</code> events generated from elements nested 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   789
inside the targeted node (for example when mousing out of a child element of a trigger node), there are no additional checks we need to perform other than to see if the node is the current trigger, before handing off to 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   790
the <code>_enterTrigger</code> method to setup the current trigger state and attach mousemove and mouseleave listeners on the current trigger node.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   791
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   792
<p>The mouseleave listener delegates to the <code>_leaveTrigger</code> method, and again, since the <code>mouseleave</code> implementation deals with nested elements, we don't need to perform any additional target checks:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   793
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   794
<pre class="code prettyprint">_onNodeMouseLeave : function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   795
    this._leaveTrigger(e.currentTarget);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   796
}</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   797
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   798
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   799
<p>The mouse move listener delegates to the <code>_overTrigger</code> method to store the current mouse XY co-ordinates (used to position the Tooltip when it is displayed after the <code>showDelay</code>):</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   800
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   801
<pre class="code prettyprint">_onNodeMouseMove : function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   802
    this._overTrigger(e.pageX, e.pageY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   803
}</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   804
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   805
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   806
<h3>Trigger Event Delegates: _enterTrigger, _leaveTrigger, _overTrigger</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   807
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   808
<p>As seen above, the DOM event handlers delegate to the <code>_enterTrigger, _leaveTrigger and _overTrigger</code> methods to update the 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   809
Tooltip state based on the currently active trigger node.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   810
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   811
<p>The <code>_enterTrigger</code> method sets the current trigger state (which node is the current tooltip trigger, 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   812
what the current mouse XY position is, etc.). The method also fires the <code>triggerEnter</code> event, whose default function actually handles 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   813
showing the tooltip after the configured <code>showDelay</code> period. The <code>triggerEnter</code> event can be prevented by listeners, allowing 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   814
users to prevent the tooltip from being shown if required. (<code>triggerEnter</code> listeners are passed the current trigger node and pageX, pageY mouse co-ordinates as event facade properties):</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   815
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   816
<pre class="code prettyprint">_enterTrigger : function(node, x, y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   817
    this._setCurrentTrigger(node, x, y);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   818
    this.fire(&quot;triggerEnter&quot;, null, node, x, y);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   819
},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   820
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   821
_defTriggerEnterFn : function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   822
    var node = e.node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   823
    if (!this.get(&quot;disabled&quot;)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   824
        this._clearTimers();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   825
        var delay = (this.get(&quot;visible&quot;)) ? 0 : this.get(&quot;showDelay&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   826
        this._timers.show = Y.later(delay, this, this._showTooltip, [node]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   827
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   828
},</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   829
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   830
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   831
<p>Similarly the <code>_leaveTrigger</code> method is invoked when the mouse leaves a trigger node, and clears any stored state, timers and listeners before setting up
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   832
the <code>hideDelay</code> timer. It fires a <code>triggerLeave</code> event, but cannot be prevented, and has no default behavior to prevent:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   833
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   834
<pre class="code prettyprint">_leaveTrigger : function(node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   835
    this.fire(&quot;triggerLeave&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   836
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   837
    this._clearCurrentTrigger();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   838
    this._clearTimers();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   839
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   840
    this._timers.hide = Y.later(this.get(&quot;hideDelay&quot;), this, this._hideTooltip);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   841
},</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   842
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   843
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   844
<p>As mentioned previously, the <code>_overTrigger</code> method simply stores the current mouse XY co-ordinates for use when the tooltip is shown:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   845
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   846
<pre class="code prettyprint">_overTrigger : function(x, y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   847
    this._currTrigger.mouseX = x;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   848
    this._currTrigger.mouseY = y;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   849
}</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   850
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   851
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   852
<h3>Setting Tooltip Content</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   853
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   854
<p>Since the content for a tooltip is usually a function of the trigger node and not constant, <code>Tooltip</code> provides a number of ways to set the content.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   855
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   856
<ol>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   857
    <li>Setting the <code>content</code> attribute to a string or node. In this case, the value of the <code>content</code> attribute is used
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   858
    for all triggerNodes</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   859
    <li>Setting the <code>content</code> attribute to an object literal, containing a map of triggerNode id to content. The content for a trigger node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   860
    will be set using the map, when the tooltip is triggered for the node.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   861
    <li>Setting the title attribute on the trigger node. The value of the title attribute is used to set the tooltip content,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   862
    when triggered for the node.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   863
    <li>By calling the <code>setTriggerContent</code> method to set content for a specific trigger node, in a <code>triggerEnter</code> event listener.</li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   864
</ol>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   865
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   866
<p>The precedence of these methods is handled in the <code>_setTriggerContent</code> method, invoked when the mouse enters a trigger:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   867
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   868
<pre class="code prettyprint">_setTriggerContent : function(node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   869
    var content = this.get(&quot;content&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   870
    if (content &amp;&amp; !(content instanceof Node || Lang.isString(content))) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   871
        content = content[node.get(&quot;id&quot;)] || node.getAttribute(&quot;title&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   872
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   873
    this.setTriggerContent(content);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   874
},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   875
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   876
setTriggerContent : function(content) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   877
    var contentBox = this.get(&quot;contentBox&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   878
    contentBox.set(&quot;innerHTML&quot;, &quot;&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   879
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   880
    if (content) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   881
        if (content instanceof Node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   882
            for (var i = 0, l = content.size(); i &lt; l; ++i) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   883
                contentBox.appendChild(content.item(i));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   884
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   885
        } else if (Lang.isString(content)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   886
            contentBox.set(&quot;innerHTML&quot;, content);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   887
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   888
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   889
}</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   890
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   891
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   892
<p>Calling the public <code>setTriggerContent</code> in a <code>triggerEvent</code> listener will over-ride content set using the <code>content</code> attribute or the trigger node's title value.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   893
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   894
<h3>Using Tooltip</h3>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   895
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   896
<p>For this example, we set up 4 DIV elements which will act as tooltip triggers. They are all marked using a <code>yui-hastooltip</code> class, so that they can be queried using a simple selector, passed as the value for the <code>triggerNodes</code> attribute in the tooltip's constructor Also all 4 trigger nodes are contained in a wrapper DIV with <code>id=&quot;delegate&quot;</code> which will act as the <code>delegate</code> node.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   897
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   898
<pre class="code prettyprint">var tt = new Tooltip({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   899
    triggerNodes:&quot;.yui3-hastooltip&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   900
    delegate: &quot;#delegate&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   901
    content: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   902
        tt3: &quot;Tooltip 3 (from lookup)&quot;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   903
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   904
    shim:false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   905
    zIndex:2
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   906
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   907
tt.render();</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   908
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   909
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   910
<p>The tooltip content for each of the trigger nodes is setup differently. The first trigger node uses the title attribute to set it's content. The third trigger node's content is set using the content map set in the constructor above. The second trigger node's content is set using a <code>triggerEnter</code> event listener and the <code>setTriggerContent</code> method as shown below:</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   911
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   912
<pre class="code prettyprint">tt.on(&quot;triggerEnter&quot;, function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   913
    var node = e.node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   914
    if (node &amp;&amp; node.get(&quot;id&quot;) == &quot;tt2&quot;) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   915
        this.setTriggerContent(&quot;Tooltip 2 (from triggerEvent)&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   916
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   917
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   918
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   919
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   920
<p>The fourth trigger node's content is set using it's title attribute, however it also has a <code>triggerEvent</code> listener which prevents the tooltip from being displayed for it, if the checkbox is checked.</p>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   921
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   922
<pre class="code prettyprint">var prevent = Y.one(&quot;#prevent&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   923
tt.on(&quot;triggerEnter&quot;, function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   924
    var node = e.node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   925
    if (prevent.get(&quot;checked&quot;)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   926
        if (node &amp;&amp; node.get(&quot;id&quot;) == &quot;tt4&quot;) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   927
            e.preventDefault();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   928
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   929
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   930
});</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   931
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   932
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   933
<h2>Complete Example Source</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   934
<pre class="code prettyprint">&lt;div id=&quot;delegate&quot;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   935
    &lt;div class=&quot;yui3-hastooltip&quot; title=&quot;Tooltip 1&quot; id=&quot;tt1&quot;&gt;Tooltip One &lt;span&gt;(content from title)&lt;&#x2F;span&gt;&lt;&#x2F;div&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   936
    &lt;div class=&quot;yui3-hastooltip&quot; title=&quot;Tooltip 2&quot; id=&quot;tt2&quot;&gt;Tooltip Two &lt;span&gt;(content set in event listener)&lt;&#x2F;span&gt;&lt;&#x2F;div&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   937
    &lt;div class=&quot;yui3-hastooltip&quot; title=&quot;Tooltip 3&quot; id=&quot;tt3&quot;&gt;Tooltip Three &lt;span&gt;(content from lookup)&lt;&#x2F;span&gt;&lt;&#x2F;div&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   938
    &lt;div class=&quot;yui3-hastooltip&quot; title=&quot;Tooltip 4&quot; id=&quot;tt4&quot;&gt;Tooltip Four &lt;span&gt;(content from title)&lt;&#x2F;span&gt;&lt;&#x2F;div&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   939
    &lt;label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;prevent&quot; &#x2F;&gt; Prevent Tooltip Four&lt;&#x2F;label&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   940
&lt;&#x2F;div&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   941
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   942
&lt;script type=&quot;text&#x2F;javascript&quot;&gt;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   943
YUI().use(&quot;event-mouseenter&quot;, &quot;widget&quot;, &quot;widget-position&quot;, &quot;widget-stack&quot;, function(Y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   944
    var Lang = Y.Lang,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   945
        Node = Y.Node,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   946
        OX = -10000,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   947
        OY = -10000;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   948
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   949
    var Tooltip = Y.Base.create(&quot;tooltip&quot;, Y.Widget, [Y.WidgetPosition, Y.WidgetStack], {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   950
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   951
        &#x2F;&#x2F; PROTOTYPE METHODS&#x2F;PROPERTIES
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   952
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   953
        &#x2F;*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   954
         * Initialization Code: Sets up privately used state
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   955
         * properties, and publishes the events Tooltip introduces
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   956
         *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   957
        initializer : function(config) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   958
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   959
            this._triggerClassName = this.getClassName(&quot;trigger&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   960
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   961
            &#x2F;&#x2F; Currently bound trigger node information
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   962
            this._currTrigger = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   963
                node: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   964
                title: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   965
                mouseX: Tooltip.OFFSCREEN_X,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   966
                mouseY: Tooltip.OFFSCREEN_Y
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   967
            };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   968
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   969
            &#x2F;&#x2F; Event handles - mouse over is set on the delegate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   970
            &#x2F;&#x2F; element, mousemove and mouseleave are set on the trigger node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   971
            this._eventHandles = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   972
                delegate: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   973
                trigger: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   974
                    mouseMove : null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   975
                    mouseOut: null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   976
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   977
            };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   978
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   979
            &#x2F;&#x2F; Show&#x2F;hide timers
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   980
            this._timers = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   981
                show: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   982
                hide: null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   983
            };
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   984
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   985
            &#x2F;&#x2F; Publish events introduced by Tooltip. Note the triggerEnter event is preventable,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   986
            &#x2F;&#x2F; with the default behavior defined in the _defTriggerEnterFn method 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   987
            this.publish(&quot;triggerEnter&quot;, {defaultFn: this._defTriggerEnterFn, preventable:true});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   988
            this.publish(&quot;triggerLeave&quot;, {preventable:false});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   989
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   990
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   991
        &#x2F;*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   992
         * Destruction Code: Clears event handles, timers,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   993
         * and current trigger information
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   994
         *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   995
        destructor : function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   996
            this._clearCurrentTrigger();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   997
            this._clearTimers();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   998
            this._clearHandles();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   999
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1000
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1001
        &#x2F;*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1002
         * bindUI is used to bind attribute change and dom event
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1003
         * listeners
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1004
         *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1005
        bindUI : function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1006
            this.after(&quot;delegateChange&quot;, this._afterSetDelegate);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1007
            this.after(&quot;nodesChange&quot;, this._afterSetNodes);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1008
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1009
            this._bindDelegate();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1010
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1011
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1012
        &#x2F;*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1013
         * syncUI is used to update the rendered DOM, based on the current
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1014
         * Tooltip state
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1015
         *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1016
        syncUI : function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1017
            this._uiSetNodes(this.get(&quot;triggerNodes&quot;));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1018
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1019
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1020
        &#x2F;*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1021
         * Public method, which can be used by triggerEvent event listeners
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1022
         * to set the content of the tooltip for the current trigger node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1023
         *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1024
        setTriggerContent : function(content) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1025
            var contentBox = this.get(&quot;contentBox&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1026
            contentBox.set(&quot;innerHTML&quot;, &quot;&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1027
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1028
            if (content) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1029
                if (content instanceof Node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1030
                    for (var i = 0, l = content.size(); i &lt; l; ++i) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1031
                        contentBox.appendChild(content.item(i));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1032
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1033
                } else if (Lang.isString(content)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1034
                    contentBox.set(&quot;innerHTML&quot;, content);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1035
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1036
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1037
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1038
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1039
        &#x2F;*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1040
         * Default attribute change listener for 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1041
         * the triggerNodes attribute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1042
         *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1043
        _afterSetNodes : function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1044
            this._uiSetNodes(e.newVal);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1045
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1046
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1047
        &#x2F;*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1048
         * Default attribute change listener for 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1049
         * the delegate attribute
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1050
         *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1051
        _afterSetDelegate : function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1052
            this._bindDelegate(e.newVal);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1053
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1054
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1055
        &#x2F;*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1056
         * Updates the rendered DOM to reflect the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1057
         * set of trigger nodes passed in
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1058
         *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1059
        _uiSetNodes : function(nodes) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1060
            if (this._triggerNodes) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1061
                this._triggerNodes.removeClass(this._triggerClassName);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1062
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1063
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1064
            if (nodes) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1065
                this._triggerNodes = nodes;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1066
                this._triggerNodes.addClass(this._triggerClassName);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1067
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1068
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1069
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1070
        &#x2F;*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1071
         * Attaches the default mouseover DOM listener to the 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1072
         * current delegate node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1073
         *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1074
        _bindDelegate : function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1075
            var eventHandles = this._eventHandles;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1076
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1077
            if (eventHandles.delegate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1078
                eventHandles.delegate.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1079
                eventHandles.delegate = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1080
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1081
            eventHandles.delegate = Y.delegate(&quot;mouseenter&quot;, Y.bind(this._onNodeMouseEnter, this), this.get(&quot;delegate&quot;), &quot;.&quot; + this._triggerClassName);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1082
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1083
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1084
        &#x2F;*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1085
         * Default mouse enter DOM event listener.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1086
         * 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1087
         * Delegates to the _enterTrigger method,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1088
         * if the mouseover enters a trigger node.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1089
         *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1090
        _onNodeMouseEnter : function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1091
            var node = e.currentTarget;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1092
            if (node &amp;&amp; (!this._currTrigger.node || !node.compareTo(this._currTrigger.node))) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1093
                this._enterTrigger(node, e.pageX, e.pageY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1094
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1095
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1096
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1097
        &#x2F;*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1098
         * Default mouse leave DOM event listener
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1099
         * 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1100
         * Delegates to _leaveTrigger if the mouse
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1101
         * leaves the current trigger node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1102
         *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1103
        _onNodeMouseLeave : function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1104
            this._leaveTrigger(e.currentTarget);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1105
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1106
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1107
        &#x2F;*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1108
         * Default mouse move DOM event listener
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1109
         *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1110
        _onNodeMouseMove : function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1111
            this._overTrigger(e.pageX, e.pageY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1112
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1113
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1114
        &#x2F;*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1115
         * Default handler invoked when the mouse enters
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1116
         * a trigger node. Fires the triggerEnter
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1117
         * event which can be prevented by listeners to 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1118
         * show the tooltip from being displayed.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1119
         *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1120
        _enterTrigger : function(node, x, y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1121
            this._setCurrentTrigger(node, x, y);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1122
            this.fire(&quot;triggerEnter&quot;, {node:node, pageX:x, pageY:y});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1123
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1124
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1125
        &#x2F;*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1126
         * Default handler for the triggerEvent event,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1127
         * which will setup the timer to display the tooltip,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1128
         * if the default handler has not been prevented.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1129
         *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1130
        _defTriggerEnterFn : function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1131
            var node = e.node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1132
            if (!this.get(&quot;disabled&quot;)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1133
                this._clearTimers();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1134
                var delay = (this.get(&quot;visible&quot;)) ? 0 : this.get(&quot;showDelay&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1135
                this._timers.show = Y.later(delay, this, this._showTooltip, [node]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1136
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1137
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1138
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1139
        &#x2F;*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1140
         * Default handler invoked when the mouse leaves
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1141
         * the current trigger node. Fires the triggerLeave
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1142
         * event and sets up the hide timer
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1143
         *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1144
        _leaveTrigger : function(node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1145
            this.fire(&quot;triggerLeave&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1146
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1147
            this._clearCurrentTrigger();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1148
            this._clearTimers();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1149
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1150
            this._timers.hide = Y.later(this.get(&quot;hideDelay&quot;), this, this._hideTooltip);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1151
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1152
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1153
        &#x2F;*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1154
         * Default handler invoked for mousemove events
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1155
         * on the trigger node. Stores the current mouse 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1156
         * x, y positions
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1157
         *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1158
        _overTrigger : function(x, y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1159
            this._currTrigger.mouseX = x;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1160
            this._currTrigger.mouseY = y;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1161
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1162
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1163
        &#x2F;*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1164
         * Shows the tooltip, after moving it to the current mouse
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1165
         * position.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1166
         *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1167
        _showTooltip : function(node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1168
            var x = this._currTrigger.mouseX;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1169
            var y = this._currTrigger.mouseY;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1170
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1171
            this.move(x + Tooltip.OFFSET_X, y + Tooltip.OFFSET_Y);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1172
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1173
            this.show();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1174
            this._clearTimers();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1175
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1176
            this._timers.hide = Y.later(this.get(&quot;autoHideDelay&quot;), this, this._hideTooltip);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1177
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1178
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1179
        &#x2F;*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1180
         * Hides the tooltip, after clearing existing timers.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1181
         *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1182
        _hideTooltip : function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1183
            this._clearTimers();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1184
            this.hide();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1185
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1186
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1187
        &#x2F;*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1188
         * Set the rendered content of the tooltip for the current
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1189
         * trigger, based on (in order of precedence):
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1190
         * 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1191
         * a). The string&#x2F;node content attribute value
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1192
         * b). From the content lookup map if it is set, or 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1193
         * c). From the title attribute if set.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1194
         *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1195
        _setTriggerContent : function(node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1196
            var content = this.get(&quot;content&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1197
            if (content &amp;&amp; !(content instanceof Node || Lang.isString(content))) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1198
                content = content[node.get(&quot;id&quot;)] || node.getAttribute(&quot;title&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1199
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1200
            this.setTriggerContent(content);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1201
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1202
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1203
        &#x2F;*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1204
         * Set the currently bound trigger node information, clearing 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1205
         * out the title attribute if set and setting up mousemove&#x2F;out 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1206
         * listeners.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1207
         *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1208
        _setCurrentTrigger : function(node, x, y) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1209
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1210
            var currTrigger = this._currTrigger,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1211
                triggerHandles = this._eventHandles.trigger;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1212
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1213
            this._setTriggerContent(node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1214
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1215
            triggerHandles.mouseMove = Y.on(&quot;mousemove&quot;, Y.bind(this._onNodeMouseMove, this), node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1216
            triggerHandles.mouseOut = Y.on(&quot;mouseleave&quot;, Y.bind(this._onNodeMouseLeave, this), node);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1217
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1218
            var title = node.getAttribute(&quot;title&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1219
            node.setAttribute(&quot;title&quot;, &quot;&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1220
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1221
            currTrigger.mouseX = x;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1222
            currTrigger.mouseY = y;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1223
            currTrigger.node = node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1224
            currTrigger.title = title;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1225
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1226
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1227
        &#x2F;*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1228
         * Clear out the current trigger state, restoring
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1229
         * the title attribute on the trigger node, 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1230
         * if it was originally set.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1231
         *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1232
        _clearCurrentTrigger : function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1233
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1234
            var currTrigger = this._currTrigger,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1235
                triggerHandles = this._eventHandles.trigger;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1236
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1237
            if (currTrigger.node) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1238
                var node = currTrigger.node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1239
                var title = currTrigger.title || &quot;&quot;;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1240
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1241
                currTrigger.node = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1242
                currTrigger.title = &quot;&quot;;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1243
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1244
                triggerHandles.mouseMove.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1245
                triggerHandles.mouseOut.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1246
                triggerHandles.mouseMove = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1247
                triggerHandles.mouseOut = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1248
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1249
                node.setAttribute(&quot;title&quot;, title);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1250
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1251
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1252
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1253
        &#x2F;*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1254
         * Cancel any existing show&#x2F;hide timers
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1255
         *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1256
        _clearTimers : function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1257
            var timers = this._timers;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1258
            if (timers.hide) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1259
                timers.hide.cancel();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1260
                timers.hide = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1261
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1262
            if (timers.show) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1263
              timers.show.cancel();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1264
              timers.show = null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1265
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1266
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1267
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1268
        &#x2F;*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1269
         * Detach any stored event handles
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1270
         *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1271
        _clearHandles : function() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1272
            var eventHandles = this._eventHandles;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1273
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1274
            if (eventHandles.delegate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1275
                this._eventHandles.delegate.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1276
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1277
            if (eventHandles.trigger.mouseOut) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1278
                eventHandles.trigger.mouseOut.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1279
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1280
            if (eventHandles.trigger.mouseMove) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1281
                eventHandles.trigger.mouseMove.detach();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1282
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1283
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1284
    }, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1285
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1286
        &#x2F;&#x2F; STATIC METHODS&#x2F;PROPERTIES
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1287
       
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1288
        OFFSET_X : 15,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1289
        OFFSET_Y : 15,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1290
        OFFSCREEN_X : OX,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1291
        OFFSCREEN_Y : OY,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1292
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1293
        ATTRS : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1294
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1295
            &#x2F;* 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1296
             * The tooltip content. This can either be a fixed content value, 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1297
             * or a map of id-to-values, designed to be used when a single
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1298
             * tooltip is mapped to multiple trigger elements.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1299
             *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1300
            content : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1301
                value: null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1302
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1303
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1304
            &#x2F;* 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1305
             * The set of nodes to bind to the tooltip instance. Can be a string, 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1306
             * or a node instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1307
             *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1308
            triggerNodes : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1309
                value: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1310
                setter: function(val) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1311
                    if (val &amp;&amp; Lang.isString(val)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1312
                        val = Node.all(val);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1313
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1314
                    return val;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1315
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1316
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1317
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1318
            &#x2F;*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1319
             * The delegate node to which event listeners should be attached.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1320
             * This node should be an ancestor of all trigger nodes bound
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1321
             * to the instance. By default the document is used.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1322
             *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1323
            delegate : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1324
                value: null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1325
                setter: function(val) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1326
                    return Y.one(val) || Y.one(&quot;document&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1327
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1328
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1329
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1330
            &#x2F;*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1331
             * The time to wait, after the mouse enters the trigger node,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1332
             * to display the tooltip
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1333
             *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1334
            showDelay : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1335
                value:250
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1336
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1337
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1338
            &#x2F;*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1339
             * The time to wait, after the mouse leaves the trigger node,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1340
             * to hide the tooltip
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1341
             *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1342
            hideDelay : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1343
                value:10
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1344
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1345
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1346
            &#x2F;*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1347
             * The time to wait, after the tooltip is first displayed for 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1348
             * a trigger node, to hide it, if the mouse has not left the 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1349
             * trigger node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1350
             *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1351
            autoHideDelay : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1352
                value:2000
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1353
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1354
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1355
            &#x2F;*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1356
             * Override the default visibility set by the widget base class
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1357
             *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1358
            visible : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1359
                value:false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1360
            },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1361
    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1362
            &#x2F;*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1363
             * Override the default XY value set by the widget base class,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1364
             * to position the tooltip offscreen
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1365
             *&#x2F;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1366
            xy: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1367
                value:[OX, OY]
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1368
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1369
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1370
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1371
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1372
    var tt = new Tooltip({
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1373
        triggerNodes:&quot;.yui3-hastooltip&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1374
        delegate: &quot;#delegate&quot;,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1375
        content: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1376
            tt3: &quot;Tooltip 3 (from lookup)&quot;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1377
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1378
        shim:false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1379
        zIndex:2
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1380
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1381
    tt.render();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1382
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1383
    tt.on(&quot;triggerEnter&quot;, function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1384
        var node = e.node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1385
        if (node &amp;&amp; node.get(&quot;id&quot;) == &quot;tt2&quot;) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1386
            this.setTriggerContent(&quot;Tooltip 2 (from triggerEvent)&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1387
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1388
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1389
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1390
    var prevent = Y.one(&quot;#prevent&quot;);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1391
    tt.on(&quot;triggerEnter&quot;, function(e) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1392
        var node = e.node;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1393
        if (prevent.get(&quot;checked&quot;)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1394
            if (node &amp;&amp; node.get(&quot;id&quot;) == &quot;tt4&quot;) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1395
                e.preventDefault();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1396
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1397
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1398
    });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1399
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1400
&lt;&#x2F;script&gt;</pre>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1401
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1402
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1403
            </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1404
        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1405
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1406
        <div class="yui3-u-1-4">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1407
            <div class="sidebar">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1408
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1409
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1410
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1411
                    <div class="sidebox">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1412
                        <div class="hd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1413
                            <h2 class="no-toc">Examples</h2>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1414
                        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1415
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1416
                        <div class="bd">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1417
                            <ul class="examples">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1418
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1419
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1420
                                        <li data-description="Shows how to extend the base widget class, to create your own Widgets.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1421
                                            <a href="widget-extend.html">Extending the Base Widget Class</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1422
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1423
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1424
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1425
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1426
                                        <li data-description="Shows how to use Base.create and mix/match extensions to create custom Widget classes.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1427
                                            <a href="widget-build.html">Creating Custom Widget Classes With Extensions</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1428
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1429
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1430
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1431
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1432
                                        <li data-description="Shows how to create an IO plugin for Widget.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1433
                                            <a href="widget-plugin.html">Creating a Widget Plugin</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1434
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1435
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1436
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1437
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1438
                                        <li data-description="Shows how to extend the Widget class, and add WidgetPosition and WidgetStack to create a Tooltip widget class.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1439
                                            <a href="widget-tooltip.html">Creating a Simple Tooltip Widget With Extensions</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1440
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1441
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1442
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1443
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1444
                                        <li data-description="Shows how to extend the Widget class, and add WidgetParent and WidgetChild to create a simple ListBox widget.">
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1445
                                            <a href="widget-parentchild-listbox.html">Creating a Hierarchical ListBox Widget</a>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1446
                                        </li>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1447
                                    
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1448
                                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1449
                            </ul>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1450
                        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1451
                    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1452
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1453
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1454
                
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1455
            </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1456
        </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1457
    </div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1458
</div>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1459
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1460
<script src="../assets/vendor/prettify/prettify-min.js"></script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1461
<script>prettyPrint();</script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1462
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1463
<script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1464
YUI.Env.Tests = {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1465
    examples: [],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1466
    project: '../assets',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1467
    assets: '../assets/widget',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1468
    name: 'widget-tooltip',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1469
    title: 'Creating a Simple Tooltip Widget With Extensions',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1470
    newWindow: '',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1471
    auto:  false 
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1472
};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1473
YUI.Env.Tests.examples.push('widget-extend');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1474
YUI.Env.Tests.examples.push('widget-build');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1475
YUI.Env.Tests.examples.push('widget-plugin');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1476
YUI.Env.Tests.examples.push('widget-tooltip');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1477
YUI.Env.Tests.examples.push('widget-parentchild-listbox');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1478
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1479
</script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1480
<script src="../assets/yui/test-runner.js"></script>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1481
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1482
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1483
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1484
</body>
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1485
</html>