src/cm/media/js/lib/yui/yui_3.0.0b1/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
	<div id="bar-note"><p><strong>Note:</strong> This is YUI 3.x. Looking for <a href="http://developer.yahoo.com/yui/">YUI 2.x</a>?</p></div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   154
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   155
	<div id="yui-main">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   156
		<div class="yui-b">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   157
		  <div class="yui-ge">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   158
			  <div class="yui-u first example" id="main">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   159
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   160
	<h2>Widget: Creating custom widget classes</h2>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   161
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   162
	<div id="example" class="promo">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   163
	<p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   164
	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
   165
	</p>	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   166
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   167
	<div class="module example-container ">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   168
			<div class="hd exampleHd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   169
			<p class="newWindowButton yui-skin-sam">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   170
                <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
   171
            </p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   172
		</div>		<div id="example-canvas" class="bd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   173
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   174
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   175
	<!--BEGIN SOURCE CODE FOR EXAMPLE =============================== -->
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   176
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   177
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   178
<ol>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   179
    <li><code>Widget</code> with <code>WidgetStdMod</code>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   180
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   181
        <div class="widget-build-example" id="widget1-example">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   182
            <input type="text" id="content" value="">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   183
            <select id="section">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   184
                <option value="header">Header</option>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   185
                <option value="body">Body</option>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   186
                <option value="footer">Footer</option>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   187
            </select>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   188
            <button type="button" id="setContent">Set Content</button>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   189
            <button type="button" class="fail" id="tryMove">move() (should fail)</button>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   190
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   191
            <div id="widget1">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   192
                <div class="yui-widget-hd">Module Header</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   193
                <div class="yui-widget-bd">Module Body</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   194
                <div class="yui-widget-ft">Module Footer</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   195
            </div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   196
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   197
            <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
   198
        </div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   199
    </li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   200
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   201
    <li><code>Widget</code> with <code>WidgetPosition, WidgetStack</code>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   202
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   203
        <div class="widget-build-example" id="widget2-example">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   204
            <label>X: <input type="text" id="x" value="0" ></label>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   205
            <label>Y: <input type="text" id="y" value="0" ></label>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   206
            <button type="button" id="move">Move</button>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   207
            <button type="button" class="fail" id="tryContent">setStdModContent() (should fail)</button>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   208
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   209
            <div id="widget2"><strong>Positionable Widget</strong></div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   210
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   211
            <p class="filler">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   212
                <select>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   213
                    <option>Prevent IE6 Bleedthrough</option>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   214
                </select>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   215
                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
   216
            </p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   217
        </div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   218
    </li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   219
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   220
    <li><code>Widget</code> with <code>WidgetPosition, WidgetStack, WidgetPositionExt</code></strong>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   221
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   222
        <div class="widget-build-example" id="widget3-example">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   223
            <button type="button" id="run">Run Through Alignment</button>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   224
            <p class="filler">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   225
                <select>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   226
                    <option>Prevent IE6 Bleedthrough</option>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   227
                </select>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   228
                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
   229
            </p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   230
        </div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   231
    </li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   232
</ol>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   233
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   234
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   235
<script type="text/javascript">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   236
YUI({base:"../../build/", timeout: 10000}).use("widget", "widget-position", "widget-stack", "widget-position-ext", "widget-stdmod", "queue", function(Y) {
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
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   240
    // WIDGET 1 : Build Widget with StdMod, but no positioning/stacking support.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   241
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   242
    var StandardModule = Y.Base.build("standardModule", Y.Widget, [Y.WidgetStdMod]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   243
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   244
    var stdmod = new StandardModule({
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   245
        contentBox: "#widget1",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   246
        width:"12em",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   247
        height:"12em"
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   248
    });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   249
    stdmod.render();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   250
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   251
    var contentInput = Y.Node.get("#content");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   252
    var sectionInput = Y.Node.get("#section");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   253
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   254
    Y.on("click", function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   255
        var content = contentInput.get("value");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   256
        var section = sectionInput.get("value");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   257
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   258
        stdmod.setStdModContent(section, content);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   259
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   260
    }, "#setContent");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   261
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   262
    Y.on("click", function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   263
        try {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   264
            stdmod.move([0,0]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   265
        } catch (e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   266
            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
   267
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   268
    }, "#tryMove");
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
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   272
    // 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
   273
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   274
    var Positionable = Y.Base.build("positionable", Y.Widget, [Y.WidgetPosition, Y.WidgetStack]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   275
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   276
    var positionable = new Positionable({
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   277
        contentBox: "#widget2",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   278
        width:"10em",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   279
        zIndex:1
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   280
    });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   281
    positionable.render("#widget2-example");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   282
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   283
    var xy = Y.Node.get("#widget2-example > p").getXY();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   284
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   285
    positionable.move(xy[0], xy[1]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   286
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   287
    var xInput = Y.Node.get("#x");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   288
    var yInput = Y.Node.get("#y");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   289
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   290
    xInput.set("value", Math.round(xy[0]));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   291
    yInput.set("value", Math.round(xy[1]));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   292
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   293
    Y.on("click", function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   294
        var x = parseInt(xInput.get("value"));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   295
        var y = parseInt(yInput.get("value"));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   296
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   297
        positionable.move(x,y);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   298
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   299
    }, "#move");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   300
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   301
    Y.on("click", function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   302
        try {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   303
            positionable.setStdModContent("header", "new content");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   304
        } catch (e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   305
            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
   306
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   307
    }, "#tryContent");
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
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   311
    // 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
   312
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   313
    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
   314
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   315
    var alignable = new Alignable({
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   316
        width:"13em",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   317
        align : {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   318
            node: "#widget3-example",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   319
            points: ["cc", "cc"]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   320
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   321
        zIndex:1
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   322
    });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   323
    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
   324
    alignable.render("#widget3-example");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   325
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   326
    Y.on('click', function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   327
        var stepDelay = 2500;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   328
        var currAlignment = Y.Node.get("#alignment");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   329
        var steps = [
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   330
            function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   331
                alignable.set("align", {node:"#widget3-example", points:["lc", "rc"]});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   332
                currAlignment.set("innerHTML", "<p>#widget3-example</p><p>[left-center, right-center]</p>");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   333
            },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   334
            function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   335
                alignable.set("align", {node:"#widget3-example", points:["tr", "br"]});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   336
                currAlignment.set("innerHTML", "<p>#widget3-example</p><p>[top-right, bottom-right]</p>");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   337
            },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   338
            function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   339
                alignable.set("centered", "#widget3-example");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   340
                currAlignment.set("innerHTML", "<p>#widget3-example</p><p>centered</p>");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   341
            },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   342
            function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   343
                alignable.set("align", {points:["rc", "rc"]});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   344
                currAlignment.set("innerHTML", "<p>viewport</p><p>[right-center, right-center]</p>");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   345
            },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   346
            function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   347
                alignable.set("centered", true);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   348
                currAlignment.set("innerHTML", "<p>viewport</p><p>centered</p>");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   349
            },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   350
            function() {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   351
                alignable.set("align", {node:"#widget3-example", points:["cc", "cc"]});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   352
                currAlignment.set("innerHTML", "<p>#widget3-example</p><p>[center, center]</p>");
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
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   356
        var q = new Y.AsyncQueue();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   357
        for (var i = 0; i < steps.length; i++){
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   358
            q.add({
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   359
                timeout: (i === 0) ? 0 : stepDelay,
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   360
                fn:steps[i]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   361
            });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   362
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   363
        q.run();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   364
        
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   365
    }, "#run");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   366
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   367
});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   368
</script>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   369
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   370
	<!--END SOURCE CODE FOR EXAMPLE =============================== -->
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   371
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   372
		
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
	</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   376
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   377
	<h3>Creating Custom Widget Classes</h3>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   378
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   379
<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
   380
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   381
<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
   382
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
   383
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   384
<h3>Widget with WidgetStdMod support</h3>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   385
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   386
<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
   387
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   388
<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
   389
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   390
<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
   391
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   392
<textarea name="code" class="JScript" rows="1" cols="60">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   393
    var StandardModule = Y.Base.build("standardModule", Y.Widget, [Y.WidgetStdMod]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   394
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   395
    // Render from Markup
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   396
    var stdmod = new StandardModule({
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   397
        contentBox: "#widget1",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   398
        width:"12em",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   399
        height:"12em"
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   400
    });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   401
    stdmod.render();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   402
</textarea>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   403
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   404
<p><code>Base.build</code> will:</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   405
<ol>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   406
    <li>Create a new class which extends <code>Widget</code></li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   407
    <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
   408
    <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
   409
</ol>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   410
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   411
<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
   412
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   413
<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
   414
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   415
<h4>Testing It Out</h4>
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>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
   418
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   419
<textarea name="code" class="JScript" rows="1" cols="60">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   420
    var contentInput = Y.Node.get("#content");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   421
    var sectionInput = Y.Node.get("#section");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   422
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   423
    // This should work, since the StandardModule widget has settable 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   424
    // header/body/footer sections
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   425
    Y.on("click", function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   426
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   427
        var content = contentInput.get("value");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   428
        var section = sectionInput.get("value");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   429
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   430
        stdmod.setStdModContent(section, content);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   431
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   432
    }, "#setContent");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   433
</textarea>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   434
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   435
<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
   436
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   437
<textarea name="code" class="JScript" rows="1" cols="60">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   438
    // This shoud fail, since the StandardModule widget is not positionable
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   439
    Y.on("click", function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   440
        try {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   441
            stdmod.move([0,0]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   442
        } catch (e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   443
            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
   444
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   445
    }, "#tryMove");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   446
</textarea>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   447
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   448
<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
   449
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   450
<h4>CSS Considerations</h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   451
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   452
<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
   453
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
   454
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   455
<textarea name="code" class="CSS" rows="1" cols="60">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   456
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   457
/* Visibility - How to handle visibility for this new widget */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   458
.yui-standardmodule-hidden {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   459
    display:none;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   460
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   461
</textarea>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   462
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   463
<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
   464
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   465
<h3>Widget with WidgetPosition and WidgetStack support</h3>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   466
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   467
<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
   468
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   469
<textarea name="code" class="JScript" rows="1" cols="60">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   470
    var Positionable = Y.Base.build("positionable", Y.Widget, [Y.WidgetPosition, Y.WidgetStack]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   471
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   472
    // Render from markup
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   473
    var positionable = new Positionable({
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   474
        contentBox: "#widget2",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   475
        width:"10em",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   476
        height:"10em",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   477
        zIndex:1
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   478
    });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   479
    positionable.render("#widget2-example");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   480
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   481
    var xy = Y.Node.get("#widget2-example > p").getXY();
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   482
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   483
    positionable.move(xy[0], xy[1]);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   484
</textarea>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   485
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   486
<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
   487
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   488
<h4>Testing It Out</h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   489
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   490
<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
   491
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   492
<textarea name="code" class="JScript" rows="1" cols="60">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   493
    // This should work, since Positionable has basic XY Positioning support
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   494
    Y.on("click", function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   495
        var x = parseInt(xInput.get("value"));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   496
        var y = parseInt(yInput.get("value"));
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   497
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   498
        positionable.move(x,y);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   499
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   500
    }, "#move");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   501
</textarea>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   502
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   503
<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
   504
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   505
<textarea name="code" class="JScript" rows="1" cols="60">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   506
    // This should fail, since Positionable does not have Standard Module sections
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   507
    Y.on("click", function(e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   508
        try {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   509
            positionable.setStdModContent("header", "new content");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   510
        } catch (e) {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   511
            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
   512
        }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   513
    }, "#tryContent");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   514
</textarea>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   515
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   516
<h4>CSS Considerations</h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   517
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   518
<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
   519
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   520
<textarea name="code" class="CSS" rows="1" cols="60">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   521
/* Define absolute positioning as the default for positionable widgets */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   522
.yui-positionable {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   523
    position:absolute;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   524
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   525
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   526
/* 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   527
   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
   528
   to use visibility, as opposed to display
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   529
*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   530
.yui-positionable-hidden {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   531
    visibility:hidden;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   532
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   533
</textarea>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   534
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   535
<h3>Widget with WidgetPosition, WidgetStack and WidgetPositionExt support</h3>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   536
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   537
<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
   538
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   539
<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
   540
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   541
<textarea name="code" class="JScript" rows="1" cols="60">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   542
    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
   543
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   544
    var alignable = new Alignable({
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   545
        width:"13em",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   546
        align : {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   547
            node: "#widget3-example",
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   548
            points: ["cc", "cc"]
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   549
        },
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   550
        zIndex:1
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   551
    });
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   552
    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
   553
    alignable.render("#widget3-example");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   554
</textarea>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   555
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   556
<h4>Testing It Out</h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   557
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   558
<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
   559
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   560
<textarea name="code" class="JScript" rows="1" cols="60">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   561
    // Align left-center egde of widget to right-center edge of the node with id "widget3-example"
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   562
    alignable.set("align", {node:"#widget3-example", points:["lc", "rc"]});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   563
    
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   564
    // Align top-right corner of widget to bottom-right corner of the node with id "widget3-example"
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   565
    alignable.set("align", {node:"#widget3-example", points:["tr", "br"]});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   566
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   567
    // Center the widget in the node with id "widget3-example"
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   568
    alignable.set("centered", "widget3-example");
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   569
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   570
    // Align the right-center edge of the widget to 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
   571
    alignable.set("align", {points:["rc", "rc"]});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   572
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   573
    // 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
   574
    alignable.set("centered", true);
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   575
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   576
    // Return the node to it's original alignment (centered in the node with id "widget3-example")
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   577
    // NOTE: centered is a shortcut for align : { points:["cc", "cc"] }
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   578
    alignable.set("align", {node:"#widget3-example", points:["cc", "cc"]});
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   579
</textarea>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   580
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   581
<h4>CSS Considerations</h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   582
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   583
<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
   584
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   585
<textarea name="code" class="CSS" rows="1" cols="60">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   586
/* Define absolute positioning as the default for alignable widgets */
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   587
.yui-alignable {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   588
    position:absolute;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   589
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   590
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   591
/* 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   592
   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
   593
   to use visibility, as opposed to display
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   594
*/
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   595
.yui-alignable-hidden {
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   596
    visibility:hidden;
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   597
}
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   598
</textarea>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   599
				</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   600
				<div class="yui-u sidebar">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   601
					
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   602
				
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   603
					<div id="examples" class="mod box4">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   604
                        <div class="hd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   605
						<h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   606
    Widget Examples:</h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   607
                        </div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   608
						<div class="bd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   609
							<ul>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   610
								<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
   611
						</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   612
					</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   613
					
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   614
					<div class="mod box4">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   615
                        <div class="hd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   616
						<h4>More Widget Resources:</h4>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   617
                        </div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   618
                        <div class="bd">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   619
						<ul>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   620
							<!-- <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
   621
						<li><a href="../../api/module_widget.html">API Documentation</a></li>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   622
</ul>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   623
                        </div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   624
					</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   625
			  </div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   626
		</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   627
		
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   628
		</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   629
	</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   630
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   631
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   632
<div class="yui-b toc3" id="tocWrapper">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   633
<!-- TABLE OF CONTENTS -->
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   634
<div id="toc">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   635
	
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   636
<ul>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   637
<li class="sect first">YUI 3.x Project</li><li class="item"><a title="The Yahoo! User Interface (YUI) Library, 3.x Branch, " href="http://developer.yahoo.com/yui/3/">YUI 3 Web Site (external)</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="The YUI Library can be downloaded from SourceForge" href="http://sourceforge.net/projects/yui/">YUI 3 on Sourceforge (external)</a></li><li class="item"><a title="YUI is free and open, offered under a BSD license." href="http://developer.yahoo.com/yui/3/license.html">YUI License (external)</a></li><li class="sect">YUI 3 Core - Examples</li><li class="item"><a title="YUI (Global Prerequisite) - Functional Examples" href="../../examples/yui/index.html">YUI (Global Prerequisite)</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</a></li><li class="selected "><a title="Widget - Functional Examples" href="../../examples/widget/index.html">Widget</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="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</a></li><li class="item"><a title="DataSource - Functional Examples" href="../../examples/datasource/index.html">DataSource</a></li><li class="item"><a title="DataType - Functional Examples" href="../../examples/datatype/index.html">DataType</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="History - Functional Examples" href="../../examples/history/index.html">History</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="Queue - Functional Examples" href="../../examples/queue/index.html">Queue</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</a></li><li class="item"><a title="Slider - Functional Examples" href="../../examples/slider/index.html">Slider</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</a></li><li class="item"><a title="MenuNav Node Plugin - Functional Examples" href="../../examples/node-menunav/index.html">MenuNav Node Plugin</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</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">The YUI Community</li><li class="item"><a title="The Yahoo! User Interface Blog" href="http://yuiblog.com">YUI Blog (external)</a></li><li class="item"><a title="The Yahoo! Group YDN-JavaScript hosts the YUI community forum" href="http://tech.groups.yahoo.com/group/ydn-javascript/">YUI Forum (external)</a></li><li class="item"><a title="The Yahoo! Group yui3 is dedicated to the 3.x branch of the Yahoo! User Interface (YUI) Library." href="http://tech.groups.yahoo.com/group/yui3/">YUI 3 Forum (external)</a></li><li class="item"><a title="YUI is used by Yahoo! and by hundreds of other sites, including many you know and love." href="/yui/poweredby/">YUI Sightings (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><li class="sect">YUI Articles on the YUI Website</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="Reporting Bugs and Making Feature Requests for YUI Components" href="http://developer.yahoo.com/yui/articles/reportingbugs/">Bug Reports/Feature Requests (external)</a></li><li class="item"><a title="Serve YUI source files from Yahoo! -- free, fast, and simple" href="http://developer.yahoo.com/yui/3/articles/hosting/">Serving YUI Files from Yahoo! (external)</a></li></ul>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   638
</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   639
</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   640
	</div><!--closes bd-->
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   641
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   642
	<div id="ft">
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   643
        <p class="first">Copyright &copy; 2009 Yahoo! Inc. All rights reserved.</p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   644
        <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
   645
            <a href="http://docs.yahoo.com/info/terms/">Terms of Service</a> - 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   646
            <a href="http://docs.yahoo.com/info/copyright/copyright.html">Copyright Policy</a> - 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   647
            <a href="http://careers.yahoo.com/">Job Openings</a></p>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   648
	</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   649
</div>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   650
<script src="../../assets/dpSyntaxHighlighter.js"></script>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   651
<script language="javascript"> 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   652
dp.SyntaxHighlighter.HighlightAll('code'); 
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   653
</script>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   654
</body>
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
   655
</html>