YUI Tidbits

49
Saur Jai Santhosh @jaisanth YUI TIDBITS

description

A bunch of extremely simple but really useful YUI3 helpers.

Transcript of YUI Tidbits

Page 1: YUI Tidbits

Saurabh Sahni YDN Developer, Hacker, Evangelist

Jai Santhosh@jaisanth

YUI TIDBITS

Page 2: YUI Tidbits

What We’re Going to Cover

• Why YUI?

• YUI Tidbits

• Before we are done!

Page 3: YUI Tidbits

http://yuilibrary.com/

Page 4: YUI Tidbits

What We’re Going to Cover

• Why YUI?

• YUI Tidbits

• Before we are done!

Page 5: YUI Tidbits

Good Architecture!!

Page 6: YUI Tidbits
Page 7: YUI Tidbits
Page 8: YUI Tidbits

Few others

Page 9: YUI Tidbits

What’s in Smart Software?

• Reliability

• Maintainability

• Compatibility

• Extensibility

Page 10: YUI Tidbits

Y U NO SIMPLE?

Page 11: YUI Tidbits

http://yuilibrary.com/yui/docs/guides/

Page 12: YUI Tidbits

http://yuilibrary.com/yui/docs/guides/

Page 13: YUI Tidbits

What We’re Going to Cover

• Why YUI?

• YUI Tidbits

• Before we are done!

Page 14: YUI Tidbits

Getting YUI 3// http://yuilibrary.com/yui/docs/yui/

<script src="http://yui.yahooapis.com/3.4.1/build/yui/yui-min.js"></script>

Getting YUI sandbox instance

YUI().use(function (Y) {

// Your code here

});

Page 15: YUI Tidbits

YUI() Tidbits

YUI().use(function (Y) {

Y.log();Y.later();Y.cached();

Y.UAY.Lang

});

Page 16: YUI Tidbits

Y.log();

Y.log(message);

Console Widget

YUI().use(”console”, function(Y) {var myConsole = new Y.console();myConsole.render();

Y.log(message);});

Page 17: YUI Tidbits

Y.dump();

YUI().use(”dump”, function(Y) {

Y.log(Y.dump(myObj));});

Page 18: YUI Tidbits

Y.later();

var timer = Y.later(50, gizmo, gizmo.foo);

timer.cancel();

var args = [10, 20];var timer = Y.later(50, gizmo, gizmo.foo, args);

Page 19: YUI Tidbits

Y.cached();

var cachedFoo = Y.cached(foo);

var result = cachedFoo(arg1, arg2);

Page 20: YUI Tidbits

Y.cached();

var cachedFoo = Y.cached(foo);

var result = cachedFoo(arg1, arg2);

Classnamemanager

YUI().use(”classnamemanager”, function(Y) {var sClass = new Y.ClassNameManager.getclassname(”button”,

”hover”);

// sclass = ”yui-button-hover”});

Page 21: YUI Tidbits

Y.UA

Y.UA.gecko

Y.UA.os

Y.UA.mobile

Y.UA.secure

Y.UA.air

Y.UA.caja

Page 22: YUI Tidbits

Y.Lang

Y.Lang.isString(something);

Y.Lang.type(something);

Y.Lang.trim(something);

Page 23: YUI Tidbits

Y.mix();

Y.mix(obj1, obj2);

name

foo()

name

bar()

baz()

obj1 obj2

Page 24: YUI Tidbits

Y.mix();

Y.mix(obj1, obj2);

name

foo()

name

bar()

baz()

obj1 obj2

bar()

baz()

Page 25: YUI Tidbits

Y.merge();

var newObj = Y.merge(obj1, obj2, obj3);

name

foo

foo

bar

obj1 obj2

bar

baz

obj3newObj

Page 26: YUI Tidbits

Y.merge();

var newObj = Y.merge(obj1, obj2, obj3);

name

foo

foo

bar

obj1 obj2

bar

baz

obj3newObj

name

Page 27: YUI Tidbits

Y.merge();

var newObj = Y.merge(obj1, obj2, obj3);

name

foo

foo

bar

obj1 obj2

bar

baz

obj3newObj

name

foo

Page 28: YUI Tidbits

Y.merge();

var newObj = Y.merge(obj1, obj2, obj3);

name

foo

foo

bar

obj1 obj2

bar

baz

obj3newObj

name

foo

bar

baz

Page 29: YUI Tidbits

Y.merge();

var newObj = Y.merge(obj1, obj2, obj3);

name

foo

foo

bar

obj1 obj2

bar

baz

obj3newObj

name

foo

bar

baz

Page 30: YUI Tidbits

OOP Module

YUI().use(”oop”, function(Y) {

Y.clone();Y.aggregate();Y.augment();

});

Page 31: YUI Tidbits

bingbong

var obj2 = Y.clone(obj1);

foo

bar

baz

Y.clone()

bingbong

foo

bar

baz

obj2 obj1

Page 32: YUI Tidbits

bingbong

Y.aggregate(obj2, obj1);

foo

bar

Y.aggregate()

bingbong

foo

bam

baz

obj2 obj1

Page 33: YUI Tidbits

bingbong

Y.aggregate(obj2, obj1);

foo

bar

Y.aggregate()

bingbong

foo

bam

baz

obj2 obj1

bam

baz

Page 34: YUI Tidbits

list

ModelList

Prototype

Constructor

create

init

each

item

Y.augment(Y.ModelList, Y.ArrayList);

var list = new Y.ModelList({ ... });

list.each(function (item) { ... });

ModelList

Prototype

Constructor

create

init

ArrayList

Prototype

each

item

Constructor

each

item

Prototype

create

init

each

itemPrototype

Constructor

Y.augment()

Page 35: YUI Tidbits

list

item

each

ArrayList

Prototype

each

item

Constructor

Y.augment(Y.ModelList, Y.ArrayList);

var list = new Y.ModelList({ ... });

list.each(function (item) { ... });

ModelList

Prototype

Constructor

create

init

Prototype

each

item

each

Constructoreach 1. Copy

2. Construct

3. Execute

Y.augment()

Page 36: YUI Tidbits

Y.plug()var overlay = new Y.Overlay({ ... });

overlay.plug(Y.Plugin.Drag);

overlay.dd.set('lock', true);

overlay.unplug('dd');

Page 37: YUI Tidbits

var overlay = new Y.Overlay({ ... });

overlay.plug(Y.Plugin.Drag);

overlay.dd.set('lock', true);

overlay.unplug('dd');

Overlay

Attributes

x

y

Constructor

Overlay

ATTRS

x

y

Constructoroverlay

Attributes

x

y

Constructor

Y.plug()

Page 38: YUI Tidbits

overlay

Attributes

x

y

var overlay = new Y.Overlay({ ... });

overlay.plug(Y.Plugin.Drag);

overlay.dd.set('lock', true);

overlay.unplug('dd');

Overlay

ATTRS

x

y

Constructor

Plugin.Drag

Attributes

lock

Constructor

Plugin.Drag

ATTRS

lock

Constructor

overlay.ddAttributes

lock Constructordd

Y.plug()

Page 39: YUI Tidbits

var overlay = new Y.Overlay({ ... });

overlay.plug(Y.Plugin.Drag);

overlay.dd.set('lock', true);

overlay.unplug('dd');

Overlay

ATTRS

x

y

Constructor

Plugin.Drag

ATTRS

lock

Constructor

overlay

Attributes

x

y

overlay.ddAttributes

lock

dd

Y.plug()

Page 40: YUI Tidbits

var overlay = new Y.Overlay({ ... });

overlay.plug(Y.Plugin.Drag);

overlay.dd.set('lock', true);

overlay.unplug('dd');

Overlay

ATTRS

x

y

Constructor

Plugin.Drag

ATTRS

lock

Constructor

overlay

Attributes

x

y

overlay.ddAttributes

lock

dd

Y.plug()

Page 41: YUI Tidbits

Y.substitute()

var greeting = Y.substitute("Hello, {who}!", { who: "World" });

Page 42: YUI Tidbits

Y.bind()

Y.on('submit', Y.bind(function(e){e.halt();

this.set('businessForDirections', null);}, this), '#ymap-get-directions');

Page 43: YUI Tidbits

Y.delegate()

Y.one('#ymap-get-directions').delegate("keypress", function(e) { ... }, '>li.input');

node.delegate("myNode|keypress”, function(e) { ... }, 'input');node.on("myNode|keypress”, function(e) { ... }, 'input');node.delegate("myNode|keypress”, function(e) { ... }, 'input');node.delegate("myNode|keypress”, function(e) { ... }, 'input');

Page 44: YUI Tidbits

Y.detach()

node.delegate("myNode|keypress", function(e) { ... }, 'input');node.on("myNode|mouseenter", function(e) { ... });node.on("myNode|mouseleave", function(e) { ... });node.on("myNode|click", function(e) { ... });

Y.detach("myNode|*");

Page 45: YUI Tidbits

Y.Do

YUI().use("event-custom” , function(Y) {

Y.Do.before(objClass.woo, obj1, 'foo');Y.Do.after(objClass.wee, obj2, 'bar');

});

Page 46: YUI Tidbits

What We’re Going to Cover

• Why YUI?

• YUI Tidbits

• Before we are done!

Page 47: YUI Tidbits

References

• http://yuilibrary.com/

• Images from Google, Flickr

• YUI Theater - http://www.youtube.com/yuilibrary

INDUSTRIAL STRENGTH BUILT TO LAST!!

Page 48: YUI Tidbits

Questions?

• Slides at http://slideshare.net/jaisanth/

• jaisanth@

• IRC freenode: #yui

Page 49: YUI Tidbits

THANK YOU!