The Yahoo! User Interface Library (YUI) is a discontinued open-sourceJavaScript library for building richly interactiveweb applications using techniques such asAjax,DHTML, andDOM scripting. YUI includes several coresCSS resources. It is available under aBSD License.[3] Development on YUI began in 2005 and Yahoo! properties such as My Yahoo! and the Yahoo! front page began using YUI in the summer of that year. YUI was released for public use in February 2006.[1] It was actively developed by a core team of Yahoo! engineers.
In September 2009, Yahoo! released YUI 3, a new version of YUI rebuilt from the ground up to modernize the library and incorporate lessons learned from YUI 2. Among the enhancements are aCSS selector driven engine, likejQuery, for retrievingDOM elements, a greater emphasis on granularity of modules, a smaller seed file that loads other modules when necessary, and a variety of syntactic changes intended to make writing code faster and easier.[4]
The YUI Library project at Yahoo! was founded byThomas Sha and sponsored internally by Yahoo! co-founderJerry Yang; its principal architects have been Sha, Adam Moore, and Matt Sweeney. The library's developers maintain the YUIBlog; the YUI community discusses the library and its implementations in its community forum.
On August 29, 2014, it was announced that active development of YUI by Yahoo! would end, citing the evolution of the JavaScript standards, steadily decreasing interest in large JavaScript libraries by developers, and the proliferation of server-side solutions. Future development will be limited to maintenance releases addressing issues that are "absolutely critical to Yahoo properties."[5]
The YUI Library is fully documented on its website; detailed API documentation accompanies the library download. It has six types of components: YUI core, utilities, UI controls, CSS components, developer tools, and build tools.
The YUI Core is a light (31KB minified) set of tools for event management and DOM manipulation.
YUI Global Object
The YUI Global Object contains language utilities, a script loader, and other baseline infrastructure for YUI.
Dom Collection
Helps with commonDOM scripting tasks, including element positioning andCSS style management.
Event Utility
Provides developers with easy and safe access to browserevents (such as mouse clicks and key presses). It also provides the Custom Event object for publishing and subscribing to custom events.
Allows you to managebrowser cookies and subcookies through a simple API.
DataSource
Provides a common configurable interface for other components to interact with different types of data, from simple JavaScript arrays to online servers over XHR.
Drag and drop
The YUI Drag and Drop Utility makes it easy to make elements "draggable" and to create drop targets that respond to drag events.
Element
Provides a wrapper forHTML elements in the DOM and makes simpler common tasks such as adding listeners, manipulating the DOM, and setting and getting attributes.
Get
The Get Utility supports the asynchronous loading of data and scripts through script nodes and the dynamic loading of external CSS files.
ImageLoader
YUI's ImageLoader allows you to defer the loading of images that are not visible in the viewport at the time the page loads. This can result in big performance boosts.
JSON
The JSON Utility provides methods for validation of incomingJSON data to verify that it is safe and methods to convert JavaScript data to a JSON-formatted string. These methods are based onDouglas Crockford's work at JSON.org.
Resize
Allows you to make any block-level HTML element resizable.
Selector
The YUI Selector Utility allows you to grab references to HTML elements via CSS3 selector syntax.
YUI Loader
YUI Loader is a client-side loader engine that can dynamically load any YUI component (and dependencies) on the fly.
Providesautocomplete feature (suggestion lists and type-ahead functionality) for user interactions involving text-entry. It supports a variety of data-source formats. It also supports server-side data-sources via XMLHttpRequest.
Button
Enables the creation of rich, graphical buttons that function like traditional HTML form buttons.
Calendar
A graphical, dynamic control used for date selection.
Charts
The Charts Control retrieves data via the DataSource Utility and displays the data in a variety of common chart formats (line, bar, pie, etc.).
Color Picker
The Color Picker Control provides a rich visual interface for color selection.
Container
Supports a variety of DHTML windowing patterns includingTooltip, Panel, Dialog, SimpleDialog, Module and Overlay.
DataTable
Simple yet powerful API to display screen-reader accessible tabular data on a web page. Notable features include sortable columns, pagination, scrolling, row selection, resizable columns, and inline editing.
ImageCropper
ImageCropper provides the UI and interactive elements for a client-side image cropper.
Layout Manager
Allows you to create cross-browser, pixel perfect layouts with little effort by providing a fixed layout containing, top, bottom, left, right and center layout units.
Menu
Provides an easy API for creating fly-outmenus, menu bars, and context menus.
Rich Text Editor
TheYUI Rich Text Editor is a sophisticated client-side text-processor that is modular and highly configurable, suitable for any open-ended text-entry situation.
Slider
Provides a generic slider element that enables the user to choose within a finite range of values on one or two axes.
TabView
Provides navigable tabbed views of content; supports dynamic loading of tab content via XMLHttpRequest.
TreeView
Produces a content tree whose nodes can be expanded and contracted.
Uploader
Allows for multi-file file upload with feedback on upload progress.
Provides a quick and easy way to writelog messages to an on-screen console, theFirebug extension forMozilla Firefox, or theSafari JavaScript console.
Profiler
A cross-browser, non-visual code profiler for JavaScript.
ProfilerViewer
Used in combination with Profiler to provide rich visualizations of your profiling data — both graphically (using the Charts Control) and in tabular format (using DataTable).
YUI Test
YUI Test is a testing framework for browser-based JavaScript solutions. Using YUI Test, you can easily add unit testing to your JavaScript solutions. While not a direct port from any specific xUnit framework, YUI Test does derive some characteristics from nUnit and JUnit.
YUI Compressor is a tool that minifiesJavaScript and CSS safely.
YUIDoc
YUIDoc is a tool written inJavaScript that generates searchable API documentation of JavaScript code. It is typically used as part of a build process. YUIDoc is comment-driven and is compatible with a variety of coding styles and programming languages.