src/cm/media/js/lib/yui/yui3.0.0/examples/widget/widget-build.html
author raph
Mon, 23 Nov 2009 15:14:29 +0100
changeset 0 40c8f766c9b8
permissions -rw-r--r--
import from internal svn r 4007
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     1
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     2
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     3
<html>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     4
<head>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     5
	<title>YUI Library Examples: Widget: Creating custom widget classes</title>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     6
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     7
    	<link rel="stylesheet" type="text/css" href="../../assets/yui.css" >
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     8
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     9
<style>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    10
    /*Supplemental CSS for the YUI distribution*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    11
    #custom-doc { width: 95%; min-width: 950px; }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    12
    #pagetitle {background-image: url(../../assets/bg_hd.gif);}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    13
/*    #pagetitle h1 {background-image: url(../../assets/title_h_bg.gif);}*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    14
</style>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    15
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    16
<link rel="stylesheet" type="text/css" href="../../assets/dpSyntaxHighlighter.css">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    17
<link type="text/css" rel="stylesheet" href="../../build/cssfonts/fonts-min.css" />
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    18
<script type="text/javascript" src="../../build/yui/yui-min.js"></script>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    19
<style type="text/css">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    20
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    21
/* Standard Module Widget CSS */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    22
.yui-standardmodule-hidden {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    23
    display:none;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    24
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    25
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    26
.yui-standardmodule {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    27
    margin:10px;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    28
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    29
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    30
.yui-standardmodule-content {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    31
    padding:3px;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    32
    border:1px solid #666;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    33
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    34
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    35
.yui-standardmodule-content .yui-widget-hd {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    36
    padding:5px;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    37
    border:2px solid #aa0000;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    38
    background-color:#fff;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    39
    overflow:auto;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    40
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    41
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    42
.yui-standardmodule-content .yui-widget-bd {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    43
    padding:5px;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    44
    border:2px solid #0000aa;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    45
    background-color:#fff;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    46
    overflow:auto;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    47
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    48
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    49
.yui-standardmodule-content .yui-widget-ft {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    50
    padding:5px;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    51
    border:2px solid #00aa00;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    52
    background-color:#fff;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    53
    overflow:auto;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    54
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    55
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    56
/* Positionable Widget CSS */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    57
.yui-positionable {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    58
    position:absolute;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    59
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    60
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    61
.yui-positionable-content {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    62
    text-align:center;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    63
    border:1px solid #000;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    64
    background-color:#999966;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    65
    color:#fff;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    66
    padding:10px;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    67
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    68
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    69
.yui-positionable-hidden {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    70
    visibility:hidden;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    71
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    72
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    73
/* Alignable Widget CSS */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    74
.yui-alignable {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    75
    position:absolute;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    76
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    77
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    78
.yui-alignable-content {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    79
    text-align:center;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    80
    border:1px solid #000000;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    81
    background-color:#004C6D;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    82
    color:#fff;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    83
    padding:2px;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    84
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    85
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    86
.yui-alignable-hidden {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    87
    visibility:hidden;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    88
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    89
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    90
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    91
/* Example Layout CSS */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    92
.widget-build-example {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    93
    border:1px solid #000;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    94
    background-color:#eee;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    95
    padding:5px;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    96
    margin:10px 0;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    97
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    98
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    99
.widget-build-example button, .widget-build-example label, .widget-build-example select, .widget-build-example input {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   100
    margin-right:5px;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   101
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   102
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   103
.widget-build-example button.fail {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   104
    color:#cc0000;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   105
    margin-left:10px;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   106
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   107
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   108
.widget-build-example .filler {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   109
    color:#999;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   110
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   111
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   112
#x, #y {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   113
    width:3em;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   114
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   115
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   116
#widget2-example, #widget3-example {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   117
    height:15em;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   118
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   119
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   120
#widget2-example select, #widget3-example select {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   121
    width:100%;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   122
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   123
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   124
#alignment p {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   125
    color:#dddd00;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   126
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   127
</style>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   128
</head>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   129
<body id="yahoo-com" class=" yui-skin-sam">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   130
<div id="custom-doc" class="yui-t2">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   131
<div id="hd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   132
	<div id="ygunav">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   133
		<p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   134
            <em>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   135
                <a href="http://developer.yahoo.com/yui/3/">YUI 3.x Home</a> <i> - </i>	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   136
            </em>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   137
		</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   138
		<form action="http://search.yahoo.com/search" id="sitesearchform">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   139
            <input name="vs" type="hidden" value="developer.yahoo.com">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   140
            <input name="vs" type="hidden" value="yuiblog.com">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   141
		    <div id="sitesearch">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   142
		    	<label for="searchinput">Site Search (YDN &amp; YUIBlog): </label>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   143
			    <input type="text" id="searchinput" name="p">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   144
			    <input type="submit" value="Search" id="searchsubmit" class="ygbt">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   145
		    </div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   146
		</form>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   147
    </div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   148
	<div id="ygma"><a href="../../"><img src="../../assets/logo.gif"  border="0" width="200" height="93"></a></div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   149
	<div id="pagetitle"><h1>YUI Library Examples: Widget: Creating custom widget classes</h1></div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   150
</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   151
<div id="bd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   152
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   153
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   154
	<div id="yui-main">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   155
		<div class="yui-b">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   156
		  <div class="yui-ge">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   157
			  <div class="yui-u first example" id="main">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   158
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   159
	<h2>Widget: Creating custom widget classes</h2>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   160
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   161
	<div id="example" class="promo">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   162
	<div class="example-intro">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   163
	This example shows how you can mix and match the <code>WidgetPostion</code>, <code>WidgetPositionExt</code>, <code>WidgetStack</code> and <code>WidgetStdMod</code> extensions to build custom versions of the <code>Widget</code> class, using <code>Base.build</code>.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   164
	</div>	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   165
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   166
	<div class="module example-container ">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   167
			<div class="hd exampleHd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   168
			<p class="newWindowButton yui-skin-sam">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   169
                <a href="widget-build_clean.html" target="_blank">View example in new window.</a>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   170
            </p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   171
		</div>		<div id="example-canvas" class="bd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   172
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   173
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   174
	<!--BEGIN SOURCE CODE FOR EXAMPLE =============================== -->
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   175
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   176
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   177
<ol>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   178
    <li><code>Widget</code> with <code>WidgetStdMod</code>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   179
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   180
        <div class="widget-build-example" id="widget1-example">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   181
            <input type="text" id="content" value="">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   182
            <select id="section">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   183
                <option value="header">Header</option>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   184
                <option value="body">Body</option>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   185
                <option value="footer">Footer</option>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   186
            </select>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   187
            <button type="button" id="setContent">Set Content</button>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   188
            <button type="button" class="fail" id="tryMove">move() (should fail)</button>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   189
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   190
            <div id="widget1">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   191
                <div class="yui-widget-hd">Module Header</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   192
                <div class="yui-widget-bd">Module Body</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   193
                <div class="yui-widget-ft">Module Footer</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   194
            </div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   195
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   196
            <p class="filler">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nunc pretium quam eu mi varius pulvinar. Duis orci arcu, ullamcorper sit amet, luctus ut, interdum ac, quam.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   197
        </div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   198
    </li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   199
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   200
    <li><code>Widget</code> with <code>WidgetPosition, WidgetStack</code>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   201
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   202
        <div class="widget-build-example" id="widget2-example">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   203
            <label>X: <input type="text" id="x" value="0" ></label>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   204
            <label>Y: <input type="text" id="y" value="0" ></label>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   205
            <button type="button" id="move">Move</button>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   206
            <button type="button" class="fail" id="tryContent">setStdModContent() (should fail)</button>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   207
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   208
            <div id="widget2"><strong>Positionable Widget</strong></div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   209
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   210
            <p class="filler">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   211
                <select>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   212
                    <option>Prevent IE6 Bleedthrough</option>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   213
                </select>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   214
                Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nunc pretium quam eu mi varius pulvinar. Duis orci arcu, ullamcorper sit amet, luctus ut, interdum ac, quam. Pellentesque euismod. Nam tincidunt, purus in ultrices congue, urna neque posuere arcu, aliquam tristique purus sapien id nulla. Etiam rhoncus nulla at leo. Cras scelerisque nisl in nibh. Sed eget odio. Morbi elit elit, porta a, convallis sit amet, rhoncus non, felis. Mauris nulla pede, pretium eleifend, porttitor at, rutrum id, orci. Quisque non urna. Nulla aliquam rhoncus est. 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   215
            </p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   216
        </div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   217
    </li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   218
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   219
    <li><code>Widget</code> with <code>WidgetPosition, WidgetStack, WidgetPositionExt</code></strong>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   220
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   221
        <div class="widget-build-example" id="widget3-example">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   222
            <button type="button" id="run">Run Through Alignment</button>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   223
            <p class="filler">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   224
                <select>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   225
                    <option>Prevent IE6 Bleedthrough</option>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   226
                </select>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   227
                Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nunc pretium quam eu mi varius pulvinar. Duis orci arcu, ullamcorper sit amet, luctus ut, interdum ac, quam. Pellentesque euismod. Nam tincidunt, purus in ultrices congue, urna neque posuere arcu, aliquam tristique purus sapien id nulla. Etiam rhoncus nulla at leo. Cras scelerisque nisl in nibh. Sed eget odio. Morbi elit elit, porta a, convallis sit amet, rhoncus non, felis. Mauris nulla pede, pretium eleifend, porttitor at, rutrum id, orci. Quisque non urna. Nulla aliquam rhoncus est.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   228
            </p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   229
        </div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   230
    </li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   231
</ol>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   232
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   233
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   234
<script type="text/javascript">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   235
YUI({base:"../../build/", timeout: 10000}).use("widget", "widget-position", "widget-stack", "widget-position-ext", "widget-stdmod", "async-queue", function(Y) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   236
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   237
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   238
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   239
    // WIDGET 1 : Build Widget with StdMod, but no positioning/stacking support.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   240
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   241
    var StandardModule = Y.Base.build("standardModule", Y.Widget, [Y.WidgetStdMod]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   242
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   243
    var stdmod = new StandardModule({
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   244
        contentBox: "#widget1",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   245
        width:"12em",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   246
        height:"12em"
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   247
    });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   248
    stdmod.render();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   249
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   250
    var contentInput = Y.one("#content");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   251
    var sectionInput = Y.one("#section");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   252
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   253
    Y.on("click", function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   254
        var content = contentInput.get("value");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   255
        var section = sectionInput.get("value");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   256
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   257
        stdmod.setStdModContent(section, content);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   258
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   259
    }, "#setContent");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   260
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   261
    Y.on("click", function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   262
        try {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   263
            stdmod.move([0,0]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   264
        } catch (e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   265
            alert("move() is " + typeof stdmod.move + ", stdmod.hasImpl(Y.WidgetPosition) : " + stdmod.hasImpl(Y.WidgetPosition));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   266
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   267
    }, "#tryMove");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   268
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   269
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   270
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   271
    // WIDGET 2: Build Widget with Position support and Stack support, but no StdMod support or Position Extras support.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   272
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   273
    var Positionable = Y.Base.build("positionable", Y.Widget, [Y.WidgetPosition, Y.WidgetStack]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   274
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   275
    var positionable = new Positionable({
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   276
        contentBox: "#widget2",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   277
        width:"10em",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   278
        zIndex:1
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   279
    });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   280
    positionable.render("#widget2-example");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   281
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   282
    var xy = Y.one("#widget2-example > p").getXY();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   283
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   284
    positionable.move(xy[0], xy[1]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   285
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   286
    var xInput = Y.one("#x");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   287
    var yInput = Y.one("#y");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   288
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   289
    xInput.set("value", Math.round(xy[0]));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   290
    yInput.set("value", Math.round(xy[1]));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   291
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   292
    Y.on("click", function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   293
        var x = parseInt(xInput.get("value"));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   294
        var y = parseInt(yInput.get("value"));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   295
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   296
        positionable.move(x,y);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   297
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   298
    }, "#move");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   299
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   300
    Y.on("click", function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   301
        try {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   302
            positionable.setStdModContent("header", "new content");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   303
        } catch (e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   304
            alert("setStdModContent() is " + typeof positionable.setStdModContent + ", positionable.hasImpl(Y.WidgetStdMod) : " + positionable.hasImpl(Y.WidgetStdMod));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   305
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   306
    }, "#tryContent");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   307
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   308
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   309
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   310
    // WIDGET 3: Build Widget with Position, PositionExt and Stack support, but no StdMod support.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   311
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   312
    var Alignable = Y.Base.build("alignable", Y.Widget, [Y.WidgetPosition, Y.WidgetPositionExt, Y.WidgetStack]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   313
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   314
    var alignable = new Alignable({
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   315
        width:"13em",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   316
        align : {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   317
            node: "#widget3-example",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   318
            points: ["cc", "cc"]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   319
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   320
        zIndex:1
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   321
    });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   322
    alignable.get("contentBox").set("innerHTML", '<strong>Alignable Widget</strong><div id="alignment"><p>#widget3-example</p><p>[center, center]</p></div>');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   323
    alignable.render("#widget3-example");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   324
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   325
    Y.on('click', function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   326
        var stepDelay = 2500;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   327
        var currAlignment = Y.one("#alignment");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   328
        var steps = [
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   329
            function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   330
                alignable.set("align", {node:"#widget3-example", points:["lc", "rc"]});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   331
                currAlignment.set("innerHTML", "<p>#widget3-example</p><p>[left-center, right-center]</p>");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   332
            },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   333
            function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   334
                alignable.set("align", {node:"#widget3-example", points:["tr", "br"]});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   335
                currAlignment.set("innerHTML", "<p>#widget3-example</p><p>[top-right, bottom-right]</p>");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   336
            },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   337
            function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   338
                alignable.set("centered", "#widget3-example");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   339
                currAlignment.set("innerHTML", "<p>#widget3-example</p><p>centered</p>");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   340
            },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   341
            function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   342
                alignable.set("align", {points:["rc", "rc"]});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   343
                currAlignment.set("innerHTML", "<p>viewport</p><p>[right-center, right-center]</p>");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   344
            },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   345
            function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   346
                alignable.set("centered", true);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   347
                currAlignment.set("innerHTML", "<p>viewport</p><p>centered</p>");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   348
            },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   349
            function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   350
                alignable.set("align", {node:"#widget3-example", points:["cc", "cc"]});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   351
                currAlignment.set("innerHTML", "<p>#widget3-example</p><p>[center, center]</p>");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   352
            }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   353
        ];
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   354
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   355
        var q = new Y.AsyncQueue();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   356
        for (var i = 0; i < steps.length; i++){
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   357
            q.add({
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   358
                timeout: (i === 0) ? 0 : stepDelay,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   359
                fn:steps[i]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   360
            });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   361
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   362
        q.run();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   363
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   364
    }, "#run");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   365
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   366
});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   367
</script>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   368
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   369
	<!--END SOURCE CODE FOR EXAMPLE =============================== -->
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   370
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   371
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   372
		</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   373
	</div>			
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   374
	</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   375
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   376
	<h3>Creating Custom Widget Classes</h3>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   377
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   378
<p>The <code>Base</code> class provides a <code>build</code> method which can be used to create custom versions of classes which derive from <code>Base</code> by adding extension classes to them.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   379
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   380
<p>Widget currently ships with four such extensions: <code>WidgetPosition</code>, <code>WidgetStack</code>, <code>WidgetPositionExt</code> and <code>WidgetStdMod</code>.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   381
These extensions are used to build the basic <code>Overlay</code> widget, but can also be used individually, to create custom versions of the base <code>Widget</code> class.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   382
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   383
<h3>Widget with WidgetStdMod support</h3>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   384
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   385
<p>Adding the <code>WidgetStdMod</code> extension to Widget, creates a statically positioned Widget, with support for standard module format sections - header, body and footer, which maybe useful in portal type use cases, where the positioning/stacking capabilities which come bundled with Overlay are not required.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   386
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   387
<p>To create a custom class, we use <a href="../../api/Base.html#method_Base.build"><code>Base.build</code></a>, which is described in detail on the documention page for <a href="http://developer.yahoo.com/yui/3/base/#extensions">Base</a>.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   388
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   389
<p>We pass in <code>Widget</code> as the main class we want to add extensions to, and <code>WidgetStdMod</code> as the extension we'd like added to the main class:</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   390
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   391
<div id="syntax1" class="yui-syntax-highlight"><div class="numbers"><pre class="javascript" style="font-family:monospace;"><ol><li class="li1"><div class="de1"><span class="kw2">var</span> StandardModule <span class="sy0">=</span> Y.<span class="me1">Base</span>.<span class="me1">build</span><span class="br0">&#40;</span><span class="st0">&quot;standardModule&quot;</span><span class="sy0">,</span> Y.<span class="me1">Widget</span><span class="sy0">,</span> <span class="br0">&#91;</span>Y.<span class="me1">WidgetStdMod</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="co1">// Render from Markup</span></div></li><li class="li1"><div class="de1"><span class="kw2">var</span> stdmod <span class="sy0">=</span> <span class="kw2">new</span> StandardModule<span class="br0">&#40;</span><span class="br0">&#123;</span></div></li><li class="li2"><div class="de2">    contentBox<span class="sy0">:</span> <span class="st0">&quot;#widget1&quot;</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">    width<span class="sy0">:</span><span class="st0">&quot;12em&quot;</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">    height<span class="sy0">:</span><span class="st0">&quot;12em&quot;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">stdmod.<span class="me1">render</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li></ol></pre></div><div class="nonumbers"><pre class="javascript" style="font-family:monospace;"><span class="kw2">var</span> StandardModule <span class="sy0">=</span> Y.<span class="me1">Base</span>.<span class="me1">build</span><span class="br0">&#40;</span><span class="st0">&quot;standardModule&quot;</span><span class="sy0">,</span> Y.<span class="me1">Widget</span><span class="sy0">,</span> <span class="br0">&#91;</span>Y.<span class="me1">WidgetStdMod</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   392
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   393
<span class="co1">// Render from Markup</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   394
<span class="kw2">var</span> stdmod <span class="sy0">=</span> <span class="kw2">new</span> StandardModule<span class="br0">&#40;</span><span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   395
    contentBox<span class="sy0">:</span> <span class="st0">&quot;#widget1&quot;</span><span class="sy0">,</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   396
    width<span class="sy0">:</span><span class="st0">&quot;12em&quot;</span><span class="sy0">,</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   397
    height<span class="sy0">:</span><span class="st0">&quot;12em&quot;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   398
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   399
stdmod.<span class="me1">render</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div><textarea id="syntax1-plain">var StandardModule = Y.Base.build("standardModule", Y.Widget, [Y.WidgetStdMod]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   400
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   401
// Render from Markup
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   402
var stdmod = new StandardModule({
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   403
    contentBox: "#widget1",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   404
    width:"12em",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   405
    height:"12em"
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   406
});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   407
stdmod.render();</textarea></div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   408
<p><code>Base.build</code> will:</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   409
<ol>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   410
    <li>Create a new class which extends <code>Widget</code></li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   411
    <li>Aggregate known <code>Base</code> and <code>Widget</code> fields, such as <code>ATTRS</code> and <code>HTML_PARSER</code> from <code>WidgetStdMod</code> on the new class</li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   412
    <li>Augment prototype methods from <code>WidgetStdMod</code> onto the new class prototype</li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   413
</ol>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   414
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   415
<p>The first argument to build is the <code>NAME</code> of the new class we are creating, just like the <code>NAME</code> we define when extending the Widget class directly.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   416
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   417
<p>Note that the <code>Widget</code> class is unchanged, allowing you to still create <code>Widget</code> instances without any standard module support, along with <code>StandardModule</code> instances which have standard module support.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   418
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   419
<h4>Testing It Out</h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   420
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   421
<p>The example attempts to set content on an instance of the newly created <code>StandardModule</code> class, using the <code>setStdModContent</code> method which is added by the extension (which would otherwise not exist on the Widget instance).</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   422
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   423
<div id="syntax2" class="yui-syntax-highlight"><div class="numbers"><pre class="javascript" style="font-family:monospace;"><ol><li class="li1"><div class="de1"><span class="kw2">var</span> contentInput <span class="sy0">=</span> Y.<span class="me1">one</span><span class="br0">&#40;</span><span class="st0">&quot;#content&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1"><span class="kw2">var</span> sectionInput <span class="sy0">=</span> Y.<span class="me1">one</span><span class="br0">&#40;</span><span class="st0">&quot;#section&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="co1">// This should work, since the StandardModule widget has settable </span></div></li><li class="li2"><div class="de2"><span class="co1">// header/body/footer sections</span></div></li><li class="li1"><div class="de1">Y.<span class="me1">on</span><span class="br0">&#40;</span><span class="st0">&quot;click&quot;</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">    <span class="kw2">var</span> content <span class="sy0">=</span> contentInput.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">&quot;value&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="kw2">var</span> section <span class="sy0">=</span> sectionInput.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">&quot;value&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1">    stdmod.<span class="me1">setStdModContent</span><span class="br0">&#40;</span>section<span class="sy0">,</span> content<span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span><span class="sy0">,</span> <span class="st0">&quot;#setContent&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li></ol></pre></div><div class="nonumbers"><pre class="javascript" style="font-family:monospace;"><span class="kw2">var</span> contentInput <span class="sy0">=</span> Y.<span class="me1">one</span><span class="br0">&#40;</span><span class="st0">&quot;#content&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   424
<span class="kw2">var</span> sectionInput <span class="sy0">=</span> Y.<span class="me1">one</span><span class="br0">&#40;</span><span class="st0">&quot;#section&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   425
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   426
<span class="co1">// This should work, since the StandardModule widget has settable </span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   427
<span class="co1">// header/body/footer sections</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   428
Y.<span class="me1">on</span><span class="br0">&#40;</span><span class="st0">&quot;click&quot;</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   429
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   430
    <span class="kw2">var</span> content <span class="sy0">=</span> contentInput.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">&quot;value&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   431
    <span class="kw2">var</span> section <span class="sy0">=</span> sectionInput.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">&quot;value&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   432
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   433
    stdmod.<span class="me1">setStdModContent</span><span class="br0">&#40;</span>section<span class="sy0">,</span> content<span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   434
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   435
<span class="br0">&#125;</span><span class="sy0">,</span> <span class="st0">&quot;#setContent&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div><textarea id="syntax2-plain">var contentInput = Y.one("#content");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   436
var sectionInput = Y.one("#section");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   437
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   438
// This should work, since the StandardModule widget has settable 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   439
// header/body/footer sections
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   440
Y.on("click", function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   441
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   442
    var content = contentInput.get("value");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   443
    var section = sectionInput.get("value");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   444
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   445
    stdmod.setStdModContent(section, content);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   446
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   447
}, "#setContent");</textarea></div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   448
<p>To verify that no unrequested features are added, we also attempt to move the instance using the <code>move</code> method, which is not part of the base Widget class, and would be added by the <code>WidgetPosition</code> extension. This verifies that the other example classes we'll create, which do create new classes which use <code>WidgetPosition</code>, have not modified the base Widget class.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   449
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   450
<div id="syntax3" class="yui-syntax-highlight"><div class="numbers"><pre class="javascript" style="font-family:monospace;"><ol><li class="li1"><div class="de1"><span class="co1">// This shoud fail, since the StandardModule widget is not positionable</span></div></li><li class="li1"><div class="de1">Y.<span class="me1">on</span><span class="br0">&#40;</span><span class="st0">&quot;click&quot;</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">    <span class="kw1">try</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">        stdmod.<span class="me1">move</span><span class="br0">&#40;</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="sy0">,</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2">    <span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">        <span class="kw3">alert</span><span class="br0">&#40;</span><span class="st0">&quot;move() is &quot;</span> <span class="sy0">+</span> <span class="kw1">typeof</span> stdmod.<span class="me1">move</span> <span class="sy0">+</span> <span class="st0">&quot;, stdmod.hasImpl(Y.WidgetPosition) : &quot;</span></div></li><li class="li1"><div class="de1">        <span class="sy0">+</span> stdmod.<span class="me1">hasImpl</span><span class="br0">&#40;</span>Y.<span class="me1">WidgetPosition</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span><span class="sy0">,</span> <span class="st0">&quot;#tryMove&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li></ol></pre></div><div class="nonumbers"><pre class="javascript" style="font-family:monospace;"><span class="co1">// This shoud fail, since the StandardModule widget is not positionable</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   451
Y.<span class="me1">on</span><span class="br0">&#40;</span><span class="st0">&quot;click&quot;</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   452
    <span class="kw1">try</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   453
        stdmod.<span class="me1">move</span><span class="br0">&#40;</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="sy0">,</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   454
    <span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   455
        <span class="kw3">alert</span><span class="br0">&#40;</span><span class="st0">&quot;move() is &quot;</span> <span class="sy0">+</span> <span class="kw1">typeof</span> stdmod.<span class="me1">move</span> <span class="sy0">+</span> <span class="st0">&quot;, stdmod.hasImpl(Y.WidgetPosition) : &quot;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   456
        <span class="sy0">+</span> stdmod.<span class="me1">hasImpl</span><span class="br0">&#40;</span>Y.<span class="me1">WidgetPosition</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   457
    <span class="br0">&#125;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   458
<span class="br0">&#125;</span><span class="sy0">,</span> <span class="st0">&quot;#tryMove&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div><textarea id="syntax3-plain">// This shoud fail, since the StandardModule widget is not positionable
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   459
Y.on("click", function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   460
    try {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   461
        stdmod.move([0,0]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   462
    } catch (e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   463
        alert("move() is " + typeof stdmod.move + ", stdmod.hasImpl(Y.WidgetPosition) : "
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   464
        + stdmod.hasImpl(Y.WidgetPosition));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   465
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   466
}, "#tryMove");</textarea></div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   467
<p>Note that <code>Base.build</code> adds a <code>hasImpl</code> method to the built class, which allows you to query whether or not it has a particular extension applied.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   468
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   469
<h4>CSS Considerations</h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   470
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   471
<p>We need to define the CSS which goes with this new <code>StandardModule</code> class we have created. The only rule really required out of the box is the rule which handles visibility (<code>yui-standardmodule-hidden</code>). The "standardmodule" used in the class name comes from the <code>NAME</code> property we set up for the new class, and is used to prefix all state related classes added to the widgets bounding box.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   472
Since the <code>StandardModule</code> class is not positionable, we use <code>display:none</code> to define the <code>hidden</code> state.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   473
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   474
<div id="syntax4" class="yui-syntax-highlight"><div class="numbers"><pre class="css" style="font-family:monospace;"><ol><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="coMULTI">/* Visibility - How to handle visibility for this new widget */</span></div></li><li class="li1"><div class="de1"><span class="re1">.yui-standardmodule-hidden</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">    <span class="kw1">display</span><span class="sy0">:</span><span class="kw2">none</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2"><span class="br0">&#125;</span></div></li></ol></pre></div><div class="nonumbers"><pre class="css" style="font-family:monospace;">&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   475
<span class="coMULTI">/* Visibility - How to handle visibility for this new widget */</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   476
<span class="re1">.yui-standardmodule-hidden</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   477
    <span class="kw1">display</span><span class="sy0">:</span><span class="kw2">none</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   478
<span class="br0">&#125;</span></pre></div><textarea id="syntax4-plain">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   479
/* Visibility - How to handle visibility for this new widget */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   480
.yui-standardmodule-hidden {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   481
    display:none;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   482
}</textarea></div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   483
<p>The other "yui-standardmodule" rules are only used to create the required look/feel for this particular example, and do not impact the StandardModule widget's functionality.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   484
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   485
<h3>Widget with WidgetPosition and WidgetStack support</h3>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   486
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   487
<p>As with <code>StandardModule</code>, we use <code>Base.build</code> to create the new <code>Positionable</code> widget class. This time we add <code>WidgetPosition</code> and <code>WidgetStack</code> support to the base <code>Widget</code> class to create a basic XY positionable widget, with shimming and z-index support.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   488
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   489
<div id="syntax5" class="yui-syntax-highlight"><div class="numbers"><pre class="javascript" style="font-family:monospace;"><ol><li class="li1"><div class="de1"><span class="kw2">var</span> Positionable <span class="sy0">=</span> Y.<span class="me1">Base</span>.<span class="me1">build</span><span class="br0">&#40;</span><span class="st0">&quot;positionable&quot;</span><span class="sy0">,</span> Y.<span class="me1">Widget</span><span class="sy0">,</span> </div></li><li class="li1"><div class="de1">                            <span class="br0">&#91;</span>Y.<span class="me1">WidgetPosition</span><span class="sy0">,</span> Y.<span class="me1">WidgetStack</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="co1">// Render from markup</span></div></li><li class="li2"><div class="de2"><span class="kw2">var</span> positionable <span class="sy0">=</span> <span class="kw2">new</span> Positionable<span class="br0">&#40;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">    contentBox<span class="sy0">:</span> <span class="st0">&quot;#widget2&quot;</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">    width<span class="sy0">:</span><span class="st0">&quot;10em&quot;</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">    height<span class="sy0">:</span><span class="st0">&quot;10em&quot;</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">    zIndex<span class="sy0">:</span><span class="nu0">1</span></div></li><li class="li2"><div class="de2"><span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">positionable.<span class="me1">render</span><span class="br0">&#40;</span><span class="st0">&quot;#widget2-example&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="kw2">var</span> xy <span class="sy0">=</span> Y.<span class="me1">one</span><span class="br0">&#40;</span><span class="st0">&quot;#widget2-example &gt; p&quot;</span><span class="br0">&#41;</span>.<span class="me1">getXY</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li2"><div class="de2">positionable.<span class="me1">move</span><span class="br0">&#40;</span>xy<span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">,</span> xy<span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li></ol></pre></div><div class="nonumbers"><pre class="javascript" style="font-family:monospace;"><span class="kw2">var</span> Positionable <span class="sy0">=</span> Y.<span class="me1">Base</span>.<span class="me1">build</span><span class="br0">&#40;</span><span class="st0">&quot;positionable&quot;</span><span class="sy0">,</span> Y.<span class="me1">Widget</span><span class="sy0">,</span> 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   490
                            <span class="br0">&#91;</span>Y.<span class="me1">WidgetPosition</span><span class="sy0">,</span> Y.<span class="me1">WidgetStack</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   491
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   492
<span class="co1">// Render from markup</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   493
<span class="kw2">var</span> positionable <span class="sy0">=</span> <span class="kw2">new</span> Positionable<span class="br0">&#40;</span><span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   494
    contentBox<span class="sy0">:</span> <span class="st0">&quot;#widget2&quot;</span><span class="sy0">,</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   495
    width<span class="sy0">:</span><span class="st0">&quot;10em&quot;</span><span class="sy0">,</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   496
    height<span class="sy0">:</span><span class="st0">&quot;10em&quot;</span><span class="sy0">,</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   497
    zIndex<span class="sy0">:</span><span class="nu0">1</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   498
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   499
positionable.<span class="me1">render</span><span class="br0">&#40;</span><span class="st0">&quot;#widget2-example&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   500
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   501
<span class="kw2">var</span> xy <span class="sy0">=</span> Y.<span class="me1">one</span><span class="br0">&#40;</span><span class="st0">&quot;#widget2-example &gt; p&quot;</span><span class="br0">&#41;</span>.<span class="me1">getXY</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   502
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   503
positionable.<span class="me1">move</span><span class="br0">&#40;</span>xy<span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">,</span> xy<span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div><textarea id="syntax5-plain">var Positionable = Y.Base.build("positionable", Y.Widget, 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   504
                            [Y.WidgetPosition, Y.WidgetStack]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   505
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   506
// Render from markup
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   507
var positionable = new Positionable({
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   508
    contentBox: "#widget2",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   509
    width:"10em",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   510
    height:"10em",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   511
    zIndex:1
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   512
});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   513
positionable.render("#widget2-example");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   514
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   515
var xy = Y.one("#widget2-example > p").getXY();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   516
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   517
positionable.move(xy[0], xy[1]);</textarea></div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   518
<p>We <strong>don't</strong> add <code>WidgetPositionExt</code> or <code>WidgetStdMod</code> support, so the widget doesn't have extended positioning support (align, center) or standard module support. Hence we position it manually using the <code>move</code> method which the <code>WidgetPosition</code> extension provides.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   519
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   520
<h4>Testing It Out</h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   521
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   522
<p>We should now be able to invoke the <code>move</code> method on an instance of the newly created <code>Positionable</code> class:</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   523
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   524
<div id="syntax6" class="yui-syntax-highlight"><div class="numbers"><pre class="javascript" style="font-family:monospace;"><ol><li class="li1"><div class="de1"><span class="co1">// This should work, since Positionable has basic XY Positioning support</span></div></li><li class="li1"><div class="de1">Y.<span class="me1">on</span><span class="br0">&#40;</span><span class="st0">&quot;click&quot;</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">    <span class="kw2">var</span> x <span class="sy0">=</span> parseInt<span class="br0">&#40;</span>xInput.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">&quot;value&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="kw2">var</span> y <span class="sy0">=</span> parseInt<span class="br0">&#40;</span>yInput.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">&quot;value&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1">    positionable.<span class="me1">move</span><span class="br0">&#40;</span>x<span class="sy0">,</span>y<span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span><span class="sy0">,</span> <span class="st0">&quot;#move&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li></ol></pre></div><div class="nonumbers"><pre class="javascript" style="font-family:monospace;"><span class="co1">// This should work, since Positionable has basic XY Positioning support</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   525
Y.<span class="me1">on</span><span class="br0">&#40;</span><span class="st0">&quot;click&quot;</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   526
    <span class="kw2">var</span> x <span class="sy0">=</span> parseInt<span class="br0">&#40;</span>xInput.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">&quot;value&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   527
    <span class="kw2">var</span> y <span class="sy0">=</span> parseInt<span class="br0">&#40;</span>yInput.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">&quot;value&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   528
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   529
    positionable.<span class="me1">move</span><span class="br0">&#40;</span>x<span class="sy0">,</span>y<span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   530
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   531
<span class="br0">&#125;</span><span class="sy0">,</span> <span class="st0">&quot;#move&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div><textarea id="syntax6-plain">// This should work, since Positionable has basic XY Positioning support
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   532
Y.on("click", function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   533
    var x = parseInt(xInput.get("value"));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   534
    var y = parseInt(yInput.get("value"));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   535
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   536
    positionable.move(x,y);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   537
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   538
}, "#move");</textarea></div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   539
<p>And, as with the <code>StandardModule</code> class, we should not be allowed to invoke any methods from an extension which we didn't request:</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   540
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   541
<div id="syntax7" class="yui-syntax-highlight"><div class="numbers"><pre class="javascript" style="font-family:monospace;"><ol><li class="li1"><div class="de1"><span class="co1">// This should fail, since Positionable does not have Standard Module sections</span></div></li><li class="li1"><div class="de1">Y.<span class="me1">on</span><span class="br0">&#40;</span><span class="st0">&quot;click&quot;</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">    <span class="kw1">try</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">        positionable.<span class="me1">setStdModContent</span><span class="br0">&#40;</span><span class="st0">&quot;header&quot;</span><span class="sy0">,</span> <span class="st0">&quot;new content&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2">    <span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">        <span class="kw3">alert</span><span class="br0">&#40;</span><span class="st0">&quot;setStdModContent() is &quot;</span> <span class="sy0">+</span> <span class="kw1">typeof</span> positionable.<span class="me1">setStdModContent</span> <span class="sy0">+</span> </div></li><li class="li1"><div class="de1">            <span class="st0">&quot;, positionable.hasImpl(Y.WidgetStdMod) : &quot;</span> <span class="sy0">+</span> positionable.<span class="me1">hasImpl</span><span class="br0">&#40;</span>Y.<span class="me1">WidgetStdMod</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span><span class="sy0">,</span> <span class="st0">&quot;#tryContent&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li></ol></pre></div><div class="nonumbers"><pre class="javascript" style="font-family:monospace;"><span class="co1">// This should fail, since Positionable does not have Standard Module sections</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   542
Y.<span class="me1">on</span><span class="br0">&#40;</span><span class="st0">&quot;click&quot;</span><span class="sy0">,</span> <span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   543
    <span class="kw1">try</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   544
        positionable.<span class="me1">setStdModContent</span><span class="br0">&#40;</span><span class="st0">&quot;header&quot;</span><span class="sy0">,</span> <span class="st0">&quot;new content&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   545
    <span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   546
        <span class="kw3">alert</span><span class="br0">&#40;</span><span class="st0">&quot;setStdModContent() is &quot;</span> <span class="sy0">+</span> <span class="kw1">typeof</span> positionable.<span class="me1">setStdModContent</span> <span class="sy0">+</span> 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   547
            <span class="st0">&quot;, positionable.hasImpl(Y.WidgetStdMod) : &quot;</span> <span class="sy0">+</span> positionable.<span class="me1">hasImpl</span><span class="br0">&#40;</span>Y.<span class="me1">WidgetStdMod</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   548
    <span class="br0">&#125;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   549
<span class="br0">&#125;</span><span class="sy0">,</span> <span class="st0">&quot;#tryContent&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div><textarea id="syntax7-plain">// This should fail, since Positionable does not have Standard Module sections
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   550
Y.on("click", function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   551
    try {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   552
        positionable.setStdModContent("header", "new content");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   553
    } catch (e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   554
        alert("setStdModContent() is " + typeof positionable.setStdModContent + 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   555
            ", positionable.hasImpl(Y.WidgetStdMod) : " + positionable.hasImpl(Y.WidgetStdMod));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   556
    }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   557
}, "#tryContent");</textarea></div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   558
<h4>CSS Considerations</h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   559
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   560
<p>Since now we have a positionable widget, with z-index support, we set the widget to be absolutely positioned by default, and control it's hidden state using <code>visibility</code> as opposed to <code>display</code></p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   561
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   562
<div id="syntax8" class="yui-syntax-highlight"><div class="numbers"><pre class="css" style="font-family:monospace;"><ol><li class="li1"><div class="de1"><span class="coMULTI">/* Define absolute positioning as the default for positionable widgets */</span></div></li><li class="li1"><div class="de1"><span class="re1">.yui-positionable</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">    <span class="kw1">position</span><span class="sy0">:</span><span class="kw2">absolute</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1"><span class="coMULTI">/* </span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp;  In order to be able to position the widget when hidden, we define hidden</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp;  to use visibility, as opposed to display</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">*/</span></div></li><li class="li2"><div class="de2"><span class="re1">.yui-positionable-hidden</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">    <span class="kw1">visibility</span><span class="sy0">:</span><span class="kw2">hidden</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li></ol></pre></div><div class="nonumbers"><pre class="css" style="font-family:monospace;"><span class="coMULTI">/* Define absolute positioning as the default for positionable widgets */</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   563
<span class="re1">.yui-positionable</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   564
    <span class="kw1">position</span><span class="sy0">:</span><span class="kw2">absolute</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   565
<span class="br0">&#125;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   566
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   567
<span class="coMULTI">/* 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   568
   In order to be able to position the widget when hidden, we define hidden
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   569
   to use visibility, as opposed to display
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   570
*/</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   571
<span class="re1">.yui-positionable-hidden</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   572
    <span class="kw1">visibility</span><span class="sy0">:</span><span class="kw2">hidden</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   573
<span class="br0">&#125;</span></pre></div><textarea id="syntax8-plain">/* Define absolute positioning as the default for positionable widgets */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   574
.yui-positionable {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   575
    position:absolute;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   576
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   577
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   578
/* 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   579
   In order to be able to position the widget when hidden, we define hidden
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   580
   to use visibility, as opposed to display
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   581
*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   582
.yui-positionable-hidden {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   583
    visibility:hidden;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   584
}</textarea></div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   585
<h3>Widget with WidgetPosition, WidgetStack and WidgetPositionExt support</h3>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   586
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   587
<p>Lastly, we'll attempt to create a new widget class, which, in addition to basic positioning and stacking support, also has extended positioning support, allowing us to align it with other elements on the page.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   588
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   589
<p>Again, we use <code>Base.build</code> to create our new <code>Alignable</code> widget class, by combining <code>WidgetPosition</code>, <code>WidgetStack</code> and <code>WidgetPositionExt</code> with the base widget class:</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   590
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   591
<div id="syntax9" class="yui-syntax-highlight"><div class="numbers"><pre class="javascript" style="font-family:monospace;"><ol><li class="li1"><div class="de1"><span class="kw2">var</span> Alignable <span class="sy0">=</span> Y.<span class="me1">Base</span>.<span class="me1">build</span><span class="br0">&#40;</span><span class="st0">&quot;alignable&quot;</span><span class="sy0">,</span> Y.<span class="me1">Widget</span><span class="sy0">,</span> </div></li><li class="li1"><div class="de1">                    <span class="br0">&#91;</span>Y.<span class="me1">WidgetPosition</span><span class="sy0">,</span> Y.<span class="me1">WidgetPositionExt</span><span class="sy0">,</span> Y.<span class="me1">WidgetStack</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="kw2">var</span> alignable <span class="sy0">=</span> <span class="kw2">new</span> Alignable<span class="br0">&#40;</span><span class="br0">&#123;</span></div></li><li class="li2"><div class="de2">    width<span class="sy0">:</span><span class="st0">&quot;13em&quot;</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">    align <span class="sy0">:</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">        node<span class="sy0">:</span> <span class="st0">&quot;#widget3-example&quot;</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">        points<span class="sy0">:</span> <span class="br0">&#91;</span><span class="st0">&quot;cc&quot;</span><span class="sy0">,</span> <span class="st0">&quot;cc&quot;</span><span class="br0">&#93;</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#125;</span><span class="sy0">,</span></div></li><li class="li2"><div class="de2">    zIndex<span class="sy0">:</span><span class="nu0">1</span></div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">alignable.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">&quot;contentBox&quot;</span><span class="br0">&#41;</span>.<span class="me1">set</span><span class="br0">&#40;</span><span class="st0">&quot;innerHTML&quot;</span><span class="sy0">,</span> </div></li><li class="li1"><div class="de1">    <span class="st0">'&lt;strong&gt;Alignable Widget&lt;/strong&gt;&lt;div id=&quot;alignment&quot;&gt;&lt;p&gt;#widget3-example&lt;/p&gt; <span class="es0">\</span></span></div></li><li class="li1"><div class="de1"><span class="st0">    &lt;p&gt;[center, center]&lt;/p&gt;&lt;/div&gt;'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2">alignable.<span class="me1">render</span><span class="br0">&#40;</span><span class="st0">&quot;#widget3-example&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li></ol></pre></div><div class="nonumbers"><pre class="javascript" style="font-family:monospace;"><span class="kw2">var</span> Alignable <span class="sy0">=</span> Y.<span class="me1">Base</span>.<span class="me1">build</span><span class="br0">&#40;</span><span class="st0">&quot;alignable&quot;</span><span class="sy0">,</span> Y.<span class="me1">Widget</span><span class="sy0">,</span> 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   592
                    <span class="br0">&#91;</span>Y.<span class="me1">WidgetPosition</span><span class="sy0">,</span> Y.<span class="me1">WidgetPositionExt</span><span class="sy0">,</span> Y.<span class="me1">WidgetStack</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   593
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   594
<span class="kw2">var</span> alignable <span class="sy0">=</span> <span class="kw2">new</span> Alignable<span class="br0">&#40;</span><span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   595
    width<span class="sy0">:</span><span class="st0">&quot;13em&quot;</span><span class="sy0">,</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   596
    align <span class="sy0">:</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   597
        node<span class="sy0">:</span> <span class="st0">&quot;#widget3-example&quot;</span><span class="sy0">,</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   598
        points<span class="sy0">:</span> <span class="br0">&#91;</span><span class="st0">&quot;cc&quot;</span><span class="sy0">,</span> <span class="st0">&quot;cc&quot;</span><span class="br0">&#93;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   599
    <span class="br0">&#125;</span><span class="sy0">,</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   600
    zIndex<span class="sy0">:</span><span class="nu0">1</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   601
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   602
alignable.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">&quot;contentBox&quot;</span><span class="br0">&#41;</span>.<span class="me1">set</span><span class="br0">&#40;</span><span class="st0">&quot;innerHTML&quot;</span><span class="sy0">,</span> 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   603
    <span class="st0">'&lt;strong&gt;Alignable Widget&lt;/strong&gt;&lt;div id=&quot;alignment&quot;&gt;&lt;p&gt;#widget3-example&lt;/p&gt; <span class="es0">\</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   604
    &lt;p&gt;[center, center]&lt;/p&gt;&lt;/div&gt;'</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   605
alignable.<span class="me1">render</span><span class="br0">&#40;</span><span class="st0">&quot;#widget3-example&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div><textarea id="syntax9-plain">var Alignable = Y.Base.build("alignable", Y.Widget, 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   606
                    [Y.WidgetPosition, Y.WidgetPositionExt, Y.WidgetStack]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   607
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   608
var alignable = new Alignable({
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   609
    width:"13em",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   610
    align : {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   611
        node: "#widget3-example",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   612
        points: ["cc", "cc"]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   613
    },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   614
    zIndex:1
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   615
});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   616
alignable.get("contentBox").set("innerHTML", 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   617
    '<strong>Alignable Widget</strong><div id="alignment"><p>#widget3-example</p> \
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   618
    <p>[center, center]</p></div>');
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   619
alignable.render("#widget3-example");</textarea></div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   620
<h4>Testing It Out</h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   621
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   622
<p>We'll attempt to align an instance of the <code>Alignable</code> class, using some of the additional attributes which <code>WidgetPositionExt</code> adds to the base <code>Widget</code> class: <code>align</code> and <code>centered</code>:</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   623
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   624
<div id="syntax10" class="yui-syntax-highlight"><div class="numbers"><pre class="javascript" style="font-family:monospace;"><ol><li class="li1"><div class="de1"><span class="co1">// Align left-center egde of widget to </span></div></li><li class="li1"><div class="de1"><span class="co1">// right-center edge of the node with id &quot;widget3-example&quot;</span></div></li><li class="li1"><div class="de1">alignable.<span class="me1">set</span><span class="br0">&#40;</span><span class="st0">&quot;align&quot;</span><span class="sy0">,</span> <span class="br0">&#123;</span>node<span class="sy0">:</span><span class="st0">&quot;#widget3-example&quot;</span><span class="sy0">,</span> points<span class="sy0">:</span><span class="br0">&#91;</span><span class="st0">&quot;lc&quot;</span><span class="sy0">,</span> <span class="st0">&quot;rc&quot;</span><span class="br0">&#93;</span><span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li2"><div class="de2"><span class="co1">// Align top-right corner of widget to </span></div></li><li class="li1"><div class="de1"><span class="co1">// bottom-right corner of the node with id &quot;widget3-example&quot;</span></div></li><li class="li1"><div class="de1">alignable.<span class="me1">set</span><span class="br0">&#40;</span><span class="st0">&quot;align&quot;</span><span class="sy0">,</span> <span class="br0">&#123;</span>node<span class="sy0">:</span><span class="st0">&quot;#widget3-example&quot;</span><span class="sy0">,</span> points<span class="sy0">:</span><span class="br0">&#91;</span><span class="st0">&quot;tr&quot;</span><span class="sy0">,</span> <span class="st0">&quot;br&quot;</span><span class="br0">&#93;</span><span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="co1">// Center the widget in the node with id &quot;widget3-example&quot;</span></div></li><li class="li2"><div class="de2">alignable.<span class="me1">set</span><span class="br0">&#40;</span><span class="st0">&quot;centered&quot;</span><span class="sy0">,</span> <span class="st0">&quot;widget3-example&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="co1">// Align the right-center edge of the widget to </span></div></li><li class="li1"><div class="de1"><span class="co1">// the right center edge of the viewport (since a node is not provided to 'align')</span></div></li><li class="li1"><div class="de1">alignable.<span class="me1">set</span><span class="br0">&#40;</span><span class="st0">&quot;align&quot;</span><span class="sy0">,</span> <span class="br0">&#123;</span>points<span class="sy0">:</span><span class="br0">&#91;</span><span class="st0">&quot;rc&quot;</span><span class="sy0">,</span> <span class="st0">&quot;rc&quot;</span><span class="br0">&#93;</span><span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1"><span class="co1">// Center the widget in the viewport (wince a node is not provided to 'centered')</span></div></li><li class="li1"><div class="de1">alignable.<span class="me1">set</span><span class="br0">&#40;</span><span class="st0">&quot;centered&quot;</span><span class="sy0">,</span> <span class="kw2">true</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="co1">// Return the node to it's original alignment </span></div></li><li class="li2"><div class="de2"><span class="co1">// (centered in the node with id &quot;widget3-example&quot;)</span></div></li><li class="li1"><div class="de1"><span class="co1">// NOTE: centered is a shortcut for align : { points:[&quot;cc&quot;, &quot;cc&quot;] }</span></div></li><li class="li1"><div class="de1">alignable.<span class="me1">set</span><span class="br0">&#40;</span><span class="st0">&quot;align&quot;</span><span class="sy0">,</span> <span class="br0">&#123;</span>node<span class="sy0">:</span><span class="st0">&quot;#widget3-example&quot;</span><span class="sy0">,</span> points<span class="sy0">:</span><span class="br0">&#91;</span><span class="st0">&quot;cc&quot;</span><span class="sy0">,</span> <span class="st0">&quot;cc&quot;</span><span class="br0">&#93;</span><span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li></ol></pre></div><div class="nonumbers"><pre class="javascript" style="font-family:monospace;"><span class="co1">// Align left-center egde of widget to </span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   625
<span class="co1">// right-center edge of the node with id &quot;widget3-example&quot;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   626
alignable.<span class="me1">set</span><span class="br0">&#40;</span><span class="st0">&quot;align&quot;</span><span class="sy0">,</span> <span class="br0">&#123;</span>node<span class="sy0">:</span><span class="st0">&quot;#widget3-example&quot;</span><span class="sy0">,</span> points<span class="sy0">:</span><span class="br0">&#91;</span><span class="st0">&quot;lc&quot;</span><span class="sy0">,</span> <span class="st0">&quot;rc&quot;</span><span class="br0">&#93;</span><span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   627
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   628
<span class="co1">// Align top-right corner of widget to </span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   629
<span class="co1">// bottom-right corner of the node with id &quot;widget3-example&quot;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   630
alignable.<span class="me1">set</span><span class="br0">&#40;</span><span class="st0">&quot;align&quot;</span><span class="sy0">,</span> <span class="br0">&#123;</span>node<span class="sy0">:</span><span class="st0">&quot;#widget3-example&quot;</span><span class="sy0">,</span> points<span class="sy0">:</span><span class="br0">&#91;</span><span class="st0">&quot;tr&quot;</span><span class="sy0">,</span> <span class="st0">&quot;br&quot;</span><span class="br0">&#93;</span><span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   631
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   632
<span class="co1">// Center the widget in the node with id &quot;widget3-example&quot;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   633
alignable.<span class="me1">set</span><span class="br0">&#40;</span><span class="st0">&quot;centered&quot;</span><span class="sy0">,</span> <span class="st0">&quot;widget3-example&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   634
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   635
<span class="co1">// Align the right-center edge of the widget to </span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   636
<span class="co1">// the right center edge of the viewport (since a node is not provided to 'align')</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   637
alignable.<span class="me1">set</span><span class="br0">&#40;</span><span class="st0">&quot;align&quot;</span><span class="sy0">,</span> <span class="br0">&#123;</span>points<span class="sy0">:</span><span class="br0">&#91;</span><span class="st0">&quot;rc&quot;</span><span class="sy0">,</span> <span class="st0">&quot;rc&quot;</span><span class="br0">&#93;</span><span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   638
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   639
<span class="co1">// Center the widget in the viewport (wince a node is not provided to 'centered')</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   640
alignable.<span class="me1">set</span><span class="br0">&#40;</span><span class="st0">&quot;centered&quot;</span><span class="sy0">,</span> <span class="kw2">true</span><span class="br0">&#41;</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   641
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   642
<span class="co1">// Return the node to it's original alignment </span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   643
<span class="co1">// (centered in the node with id &quot;widget3-example&quot;)</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   644
<span class="co1">// NOTE: centered is a shortcut for align : { points:[&quot;cc&quot;, &quot;cc&quot;] }</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   645
alignable.<span class="me1">set</span><span class="br0">&#40;</span><span class="st0">&quot;align&quot;</span><span class="sy0">,</span> <span class="br0">&#123;</span>node<span class="sy0">:</span><span class="st0">&quot;#widget3-example&quot;</span><span class="sy0">,</span> points<span class="sy0">:</span><span class="br0">&#91;</span><span class="st0">&quot;cc&quot;</span><span class="sy0">,</span> <span class="st0">&quot;cc&quot;</span><span class="br0">&#93;</span><span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div><textarea id="syntax10-plain">// Align left-center egde of widget to 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   646
// right-center edge of the node with id "widget3-example"
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   647
alignable.set("align", {node:"#widget3-example", points:["lc", "rc"]});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   648
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   649
// Align top-right corner of widget to 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   650
// bottom-right corner of the node with id "widget3-example"
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   651
alignable.set("align", {node:"#widget3-example", points:["tr", "br"]});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   652
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   653
// Center the widget in the node with id "widget3-example"
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   654
alignable.set("centered", "widget3-example");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   655
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   656
// Align the right-center edge of the widget to 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   657
// the right center edge of the viewport (since a node is not provided to 'align')
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   658
alignable.set("align", {points:["rc", "rc"]});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   659
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   660
// Center the widget in the viewport (wince a node is not provided to 'centered')
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   661
alignable.set("centered", true);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   662
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   663
// Return the node to it's original alignment 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   664
// (centered in the node with id "widget3-example")
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   665
// NOTE: centered is a shortcut for align : { points:["cc", "cc"] }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   666
alignable.set("align", {node:"#widget3-example", points:["cc", "cc"]});</textarea></div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   667
<h4>CSS Considerations</h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   668
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   669
<p>The <code>Alignable</code> widget class, has the same core CSS rules as the <code>Positionable</code> class, to define how it is positioned and how it is hidden:</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   670
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   671
<div id="syntax11" class="yui-syntax-highlight"><div class="numbers"><pre class="css" style="font-family:monospace;"><ol><li class="li1"><div class="de1"><span class="coMULTI">/* Define absolute positioning as the default for alignable widgets */</span></div></li><li class="li1"><div class="de1"><span class="re1">.yui-alignable</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">    <span class="kw1">position</span><span class="sy0">:</span><span class="kw2">absolute</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1"><span class="coMULTI">/* </span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp;  In order to be able to position the widget when hidden, we define hidden</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp;  to use visibility, as opposed to display</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">*/</span></div></li><li class="li2"><div class="de2"><span class="re1">.yui-alignable-hidden</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">    <span class="kw1">visibility</span><span class="sy0">:</span><span class="kw2">hidden</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li></ol></pre></div><div class="nonumbers"><pre class="css" style="font-family:monospace;"><span class="coMULTI">/* Define absolute positioning as the default for alignable widgets */</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   672
<span class="re1">.yui-alignable</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   673
    <span class="kw1">position</span><span class="sy0">:</span><span class="kw2">absolute</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   674
<span class="br0">&#125;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   675
&nbsp;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   676
<span class="coMULTI">/* 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   677
   In order to be able to position the widget when hidden, we define hidden
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   678
   to use visibility, as opposed to display
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   679
*/</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   680
<span class="re1">.yui-alignable-hidden</span> <span class="br0">&#123;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   681
    <span class="kw1">visibility</span><span class="sy0">:</span><span class="kw2">hidden</span><span class="sy0">;</span>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   682
<span class="br0">&#125;</span></pre></div><textarea id="syntax11-plain">/* Define absolute positioning as the default for alignable widgets */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   683
.yui-alignable {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   684
    position:absolute;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   685
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   686
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   687
/* 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   688
   In order to be able to position the widget when hidden, we define hidden
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   689
   to use visibility, as opposed to display
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   690
*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   691
.yui-alignable-hidden {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   692
    visibility:hidden;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   693
}</textarea></div>				</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   694
				<div class="yui-u sidebar">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   695
					
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   696
				
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   697
					<div id="examples" class="mod box4">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   698
                        <div class="hd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   699
						<h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   700
    Widget Examples:</h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   701
                        </div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   702
						<div class="bd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   703
							<ul>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   704
								<li><a href='../widget/widget-extend.html'>Extending the base widget class</a></li><li class='selected'><a href='../widget/widget-build.html'>Creating custom widget classes</a></li><li><a href='../widget/widget-tooltip.html'>Creating a simple Tooltip widget</a></li>							</ul>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   705
						</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   706
					</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   707
					
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   708
					<div class="mod box4">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   709
                        <div class="hd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   710
						<h4>More Widget Resources:</h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   711
                        </div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   712
                        <div class="bd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   713
						<ul>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   714
							<!-- <li><a href="http://developer.yahoo.com/yui/widget/">User's Guide</a> (external)</li> -->
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   715
<li><a href="../../api/module_widget.html">API Documentation</a></li></ul>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   716
                        </div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   717
					</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   718
			  </div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   719
		</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   720
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   721
		</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   722
	</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   723
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   724
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   725
<div class="yui-b toc3" id="tocWrapper">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   726
<!-- TABLE OF CONTENTS -->
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   727
<div id="toc">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   728
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   729
<ul>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   730
<li class="sect first">YUI 3 Resources</li><li class="item"><a title="YUI 3 -- Yahoo! User Interface (YUI) Library" href="http://developer.yahoo.com/yui/3/">YUI 3 Web Site</a></li><li class="item"><a title="Examples of every YUI utility and control in action" href="../../examples/">YUI 3 Examples</a></li><li class="item"><a title="Instantly searchable API documentation for the entire YUI library." href="../../api/">YUI 3 API Docs</a></li><li class="item"><a title="YUI 3 Dependency Configurator -- configure your custom YUI implementation" href="http://developer.yahoo.com/yui/3/configurator">YUI 3 Dependency Configurator</a></li><li class="item"><a title="The YUI 3 Forum on YUILibrary.com" href="http://yuilibrary.com/forum/viewforum.php?f=15">YUI 3 Forums (external)</a></li><li class="item"><a title="Found a bug or a missing feature? Let us know on YUILibrary.com." href="http://developer.yahoo.com/yui/articles/reportingbugs/">Bug Reports/Feature Requests</a></li><li class="item"><a title="YUI is free and open, offered under a BSD license." href="http://developer.yahoo.com/yui/license.html">YUI License</a></li><li class="item"><a title="Download and fork the YUI project on GitHub" href="http://github.com/yui">YUI on Github</a></li><li class="item"><a title="The Yahoo! User Interface Blog" href="http://yuiblog.com">YUI Blog (external)</a></li><li class="sect">YUI 3 Core - Examples</li><li class="item"><a title="YUI Global Object - Functional Examples" href="../../examples/yui/index.html">YUI Global Object</a></li><li class="item"><a title="Event - Functional Examples" href="../../examples/event/index.html">Event</a></li><li class="item"><a title="Node - Functional Examples" href="../../examples/node/index.html">Node</a></li><li class="sect">YUI 3 Component Infrastructure - Examples</li><li class="item"><a title="Attribute - Functional Examples" href="../../examples/attribute/index.html">Attribute</a></li><li class="item"><a title="Plugin - Functional Examples" href="../../examples/plugin/index.html">Plugin <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="selected "><a title="Widget - Functional Examples" href="../../examples/widget/index.html">Widget <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="sect">YUI 3 Utilities - Examples</li><li class="item"><a title="Animation - Functional Examples" href="../../examples/anim/index.html">Animation</a></li><li class="item"><a title="AsyncQueue - Functional Examples" href="../../examples/async-queue/index.html">AsyncQueue</a></li><li class="item"><a title="Browser History - Functional Examples" href="../../examples/history/index.html">Browser History</a></li><li class="item"><a title="Cache - Functional Examples" href="../../examples/cache/index.html">Cache</a></li><li class="item"><a title="Cookie - Functional Examples" href="../../examples/cookie/index.html">Cookie</a></li><li class="item"><a title="DataSchema - Functional Examples" href="../../examples/dataschema/index.html">DataSchema <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="DataSource - Functional Examples" href="../../examples/datasource/index.html">DataSource <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="DataType - Functional Examples" href="../../examples/datatype/index.html">DataType <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="Drag &amp; Drop - Functional Examples" href="../../examples/dd/index.html">Drag &amp; Drop</a></li><li class="item"><a title="Get - Functional Examples" href="../../examples/get/index.html">Get</a></li><li class="item"><a title="ImageLoader - Functional Examples" href="../../examples/imageloader/index.html">ImageLoader</a></li><li class="item"><a title="IO - Functional Examples" href="../../examples/io/index.html">IO</a></li><li class="item"><a title="JSON (JavaScript Object Notation) - Functional Examples" href="../../examples/json/index.html">JSON</a></li><li class="item"><a title="Stylesheet - Functional Examples" href="../../examples/stylesheet/index.html">Stylesheet</a></li><li class="sect">YUI 3 Widgets - Examples</li><li class="item"><a title="Overlay - Functional Examples" href="../../examples/overlay/index.html">Overlay <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="Slider - Functional Examples" href="../../examples/slider/index.html">Slider <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="sect">YUI 3 Node Plugins - Examples</li><li class="item"><a title="FocusManager Node Plugin - Functional Examples" href="../../examples/node-focusmanager/index.html">FocusManager Node Plugin <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="MenuNav Node Plugin - Functional Examples" href="../../examples/node-menunav/index.html">MenuNav Node Plugin <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="sect">YUI 3 CSS - Examples</li><li class="item"><a title="YUI CSS Reset - Functional Examples" href="../../examples/cssreset/index.html">CSS Reset</a></li><li class="item"><a title="YUI Fonts - Functional Examples" href="../../examples/cssfonts/index.html">CSS Fonts</a></li><li class="item"><a title="YUI Base - Functional Examples" href="../../examples/cssbase/index.html">CSS Base</a></li><li class="sect">YUI 3 Developer Tools - Examples</li><li class="item"><a title="Console - Functional Examples" href="../../examples/console/index.html">Console <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="Console Filters Plugin- Functional Examples" href="../../examples/console-filters/index.html">Plugin.ConsoleFilters <img src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="Profiler - Functional Examples" href="../../examples/profiler/index.html">Profiler</a></li><li class="item"><a title="Test - Functional Examples" href="../../examples/test/index.html">Test</a></li><li class="sect">Other Useful YUI 3 Resources</li><li class="item"><a title="Answers to Frequently Asked Questions about the YUI Library" href="http://developer.yahoo.com/yui/articles/faq/">YUI FAQ (external)</a></li><li class="item"><a title="Yahoo!'s philosophy of Graded Browser Support" href="http://developer.yahoo.com/yui/articles/gbs/">Graded Browser Support (external)</a></li><li class="item"><a title="Videos and podcasts from the YUI Team and from the Yahoo! frontend engineering community." href="http://developer.yahoo.com/yui/theater/">YUI Theater (external)</a></li></ul>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   731
</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   732
</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   733
	</div><!--closes bd-->
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   734
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   735
	<div id="ft">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   736
        <p class="first">Copyright &copy; 2009 Yahoo! Inc. All rights reserved.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   737
        <p><a href="http://privacy.yahoo.com/privacy/us/devel/index.html">Privacy Policy</a> - 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   738
            <a href="http://docs.yahoo.com/info/terms/">Terms of Service</a> - 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   739
            <a href="http://docs.yahoo.com/info/copyright/copyright.html">Copyright Policy</a> - 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   740
            <a href="http://careers.yahoo.com/">Job Openings</a></p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   741
	</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   742
</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   743
<script language="javascript"> 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   744
var yuiConfig = {base:"../../build/", timeout: 10000};
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   745
</script>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   746
<script src="../../assets/syntax.js"></script>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   747
<script src="../../assets/dpSyntaxHighlighter.js"></script>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   748
<script language="javascript"> 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   749
dp.SyntaxHighlighter.HighlightAll('code'); 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   750
</script>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   751
</body>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   752
</html>