Context Navigation


YUI Release 2.9.0 README Digest

This document is a summary of the 2.9.0 update information that has been added to the respective README files included within each component folder. Please refer the README files for the components you are using for a full change history of each component.

  • Animation
    • Fixes
      • fixed #2529183 AnimMgr.unRegister race condition
    • Enhancements
      • add "afterTween" event which fires after element has been updated
  • Autocomplete
    • Enhancements
      • Better support for forceSelection when typeAhead is enabled.
      • Add formatEscapedResult() for implementers who need to escape potentially untrustworthy result data for insertion into DOM.
  • Base
    • Fixes
      • Move list styles to list from item (fix #2528199)
  • Button
    • Fixes
      • #2529099 Button type=checkbox doesn't stay checked in Firefox 4.0
      • #2529139 [bz 3991424] [IE9] hack in _onDocumentMouseDown fails
      • #2529193 Menu buttons (of type submit) do not fire a forms onsubmit event in IE 9.
      • #2529245 Right click only *seemingly* changes active state in buttongroup
      • #2529295 Sub menus don't work on Menu Buttons
  • Calendar
    • Fixes
      • Fixed renderStack application when multiple renderers applied to the same date.
    • Enhancements / Changes
      • Removed Opera Width Fix. No longer required. Opera handles floats correclty
      • Allow calendar to be rendered into a (iframe) document, different from the instance.
      • Added OOM selection support, driven by the "oom_select" config property. When oom_select is enabled, OOM dates will also accept custom renderers. Based on patches provided by Joshua Flynn (flynnjandm) and Pranav (unohoo) in tickets #1755642, #2528933
      • APIDocs updated to identify string parameters and properties, which get added to the DOM as HTML. These string values should be escaped by the implementor, if they come from an untrusted external source.
  • Carousel
    • Fixes
      • Fixed rendering issues on IE9
      • Fixed an issue that was preventing addItem to work with the index argument.
      • Minor bug fix in replaceItem
  • Charts
    • Fixes
      • Fixed bug in which flash minimum version was miscalculated in some instances.
      • Fixed bug in which an error occurred when a Chart using legendLabelFunction was reloaded.
      • Fixed bug in which itemDoubleClick event was not working.
      • Fixed bug in which the legend label function was not working for pie charts.
      • Fixed bug in which export to png/jpeg was not working in certain versions of flash player 10.
  • ColorPicker
    • No change.
  • Connection
    • Fixes
      • #2528954: HTML form submit event binding now fixed for Safari and Chrome.
      • #2528480: Missing callback throws error.
      • #2528941, #2529220: JSON and HTML response, in file upload response, are now evaluated as text, avoiding HTML entity issues.
  • Container
    • Fixes
      • Fixed config.resetProperty for falsey initial values
      • We no longer use innerHTML to add hidden input to form in SimpleDialog, so that we don't blow away listeners.
      • Showing a modal dialog, without any focusable content will now focus on the innerElement (or hidden focus element, for browsers which don't support tabIndex 0 on divs)
      • public setTabLoop should honor firstElement, lastElement arguments passed in. Before, since it was being used as the hook for Dialog to jump in and change the first/lastElement to account for its buttons, it was overriding lastElement with lastButton. There is now a separate hook, a protected _setTabLoop which Dialog overrides instead, to inject it's custom argumements.
      • Fixed tab behavior for close button. It's now rendered as the first child of innerElement, as opposed to the last, so that it fits in with the natural DOM flow. Also, Dialog, when Tab/Shift-Tabbing in Modal mode, loops from the lastButton to the firstElement (the close button usually), instead of to the first form element (thereby, bypassing the button).
      • Module/Overlay now caches ContainerEffect (and hence Anim) instances, instead of recreating them each time hide/show is called. This was required so that we could correctly stop running Anim instances when switching between animIn and animOut midway through an animation. This should also help performance. If you need to revert back to the pre 2.9.0 behavior for any reason, you can set the overlay.cacheEffects property to false on your instance before setting the effect property, or on the prototype.
    • Enhancements / Changes
      • Hide or Show can now be prevented by returning false from beforeHide, and beforeShow subscribers respectively.
      • Dialog's button configuration now passes "type" onto the YUI Button constructor, when provided.
      • Added beforeShowMask, beforeHideMask events. Subscribers to these events can return false to prevent the mask from being shown/hidden respectively.
      • Fixed config.resetProperty for falsey initial values
      • We no longer use innerHTML to add hidden input to form in SimpleDialog, so that we don't blow away listeners.
      • Showing a modal dialog, without any focusable content will now focus on the innerElement (or hidden focus element, for browsers which don't support tabIndex 0 on divs)
      • Module's destroy method (and the destroy method of all subclasses) now supports a 'shallowPurge' argument, which when true, prevents Module from recursively purging DOM event listeners from all children on destruction. If the shallowPurge argument is not provided Module will purge event listeners from all children. This was preferred, over supporting the opposite (a 'deepPurge' argument for example), to maintain backwards compatiblity while supporting intuitive argument values (false and undefined mean the same thing).
      • APIDocs updated to identify string parameters and properties, which get added to the DOM as HTML. These string values should be escaped by the implementor, if they come from an untrusted external source.
  • Cookie
    • No change.
  • DataSource
    • Fixes
      • Fixed YAHOO.util.Number.format regression for custom decimal separators in numbers smaller than 1000
    • Enhancements / Changes
      • For consistency, JSON parser functions are now called with DataSource instance as the context.
  • DataTable
    • Fixes
      • Bug #2528233: Rewired getTrEl(), getFirstTrEl(), getLastTrEl(), getNextTrEl(), getPreviousTrEl(), getAboveTdEl(), getBelowTdEl(), getTrIndex() in order to support non-primary rows (i.e., row expansions).
    • Enhancements / Changes
      • Added className property to CellEditor for custom class assignment.
      • Added useIFrame property to CellEditor for IE6 select bleed-through workaround.
      • DateCellEditors now correctly display selected date.
      • Regexes now supported as custom Column config data.
      • DragDrop proxies for Column resizer and draggable Column target are now created and destroyed for each instance instead of being shared globally.
      • Added new method load(), a convenience method that calls DataSource's sendRequest() method under the hood.
      • Moved YAHOO.widget.DataTable._cloneObject definition to YAHOO.util.DataSourceBase._cloneObject.
      • Added new Attribte "sortFunction" to serve as overridable default sort function.
      • YAHOO.widget.DataTable.formatEmail, YAHOO.widget.DataTable.formatLink, YAHOO.widget.DataTable.formatText, YAHOO.widget.DataTable.formatTextarea, and YAHOO.widget.DataTable.formatTextbox now escape data value with YAHOO.lang.escapeHTML before insertion into DOM.
  • DateMath
    • No change.
  • Dom
    • Fixes
      • getXY round instead of floor values (fix #2527813)
      • enable DOM get for number values (fix #2528281)
      • only set position when element in DOM (fix #2527933)
  • 'Drag & Drop
    • Fixes
      • #2528803 DragDrop API docs inaccurate
      • #2528759 Don't fire mouseDownEvent if onMouseDown already returned false
      • #2528804 b4DragDropEvent doesn't stop dragDropEvent
      • #2529042 mising semicolon in Drag & Drop: Reordering a List example
      • #2529136 Drag&Drop does not work in IE9 (Document mode - IE9 standards)
  • Editor
    • Fixes
      • #2528628 Toolbar.prototype.destroy uses variable without local declaration
      • #2528910 Editor issue with "Paragraph style" feature in Opera 10.5 -- document.selection abandoned between Op...
      • #2529145 Editor regexs fail in IE9
  • Element
    • No change.
  • Event
    • Fixes
      • Fixed callback signature for mouseenter and mouseleave when subscribing with additional args - e.g. addListener('x', 'mouseenter', callback, 'arg!')
  • Event-Simulate
    • Fixes
      • IE9 fix
  • Fonts
    • Fixes
      • removed redundant BUTTON declaration
  • Get
    • Enhancements / Changes
      • charset defaults to utf-8
  • Grids
    • Fixes
      • Fix clearing gap due to generated content
  • History
    • Fixes
      • Fixed a bug in which escaped module names caused navigate() calls to fail. (See YUILibrary Bug #2529015)
  • ImageCropper
    • Enhancements / Changes
      • Promoted to GA in this release.
      • No Code Changes
  • ImageLoader
    • Fixes
      • #2527646 - Time limits work with Loader
    • Enhancements / Changes
      • Time limit setting and first fold check done via onDOMReady instead of window load
  • JSON
    • Enhancements / Changes
      • parse() now coerces input to a string before processing (per spec).
  • Layout
    • Fixes
      • #2528581 Layout manager will not display collapse if bottom unit has no collapse or header
      • #2528769 LayoutUnit destroy does not remove all events
      • #2528850 Disabling close/collapse for a LayoutUnit with no header removes the first div in the entire DOM wit...
      • #2528914 Layout Manager mishandles zIndex of collapsible panel, making Menu Controls unusable
  • Logger
    • Enhancements / Changes
      • No more duplicate logging in webkit browsers
      • Added support for logging in Opera with opera.postError
      • Changed element ID generation to use Dom.generateId to be safer in YUI 3 environments via yui2-logger
  • Menu
    • Fixes
      • Remove scrollable menu submenu position workaround for Webkit >= 523. It's not longer required for newer webkits, and resulted in incorrect positioning of submenus when scrolled
      • stopMouseEventHandlers made into a prototype method to correct scope, and also allow for it to be overridden (was originally pure private)
      • remove UL using UL.parentNode.removeChild, as opposed to assuming this.body, to allow for customizations.
      • Keyboard handling now correctly updates scroll indicators, when used on a scrollable Menu (without max height defined) and programmatically updates body scrollTop values.
      • Added support to remove shadow when flipped from true to false. This was missing in general, but also fixes the use case where shadow is set to false in the constructor configuration. Ideally we should never be setting it to true in this later use case, but due to the way menu lazyload is configured to handle the configuration queue, we do. Cleaning this up is beyond the scope of 2.9.0.
      • Reversed condition to hide/show submenus with delay, so that menus aren't hidden prematurely when showdelay is less than submenuhidedelay
      • Menus are no longer left un-hidden, when mousing slowly through the shadow
      • Use standards based create/init/dispatch for IE9 keylistener click dispatch, as opposed to anchor.fireEvent('click'). Also pulled the logic out into _dispatchDOMClick so it's more easily changed, if required.
    • Enhancements / Changes
      • Menu and ContextMenu's destroy methods now accept a 'shallowPurge' argument, which is passed through to Module's destroy implementation and can be used to prevent Module destroy() from deep purging all it's children. See Container README for further details
      • APIDocs updated to identify string parameters and properties, which get added to the DOM as HTML. These string values should be escaped by the implementor, if they come from an untrusted external source.
  • Paginator
    • Enhancements / Changes
      • alwaysVisible=false now works when rowsPerPageOptions is supplied an array of objects (e.g. [{ label: 'A few', value: '5' }, ... ]
      • Added JumpToPageDropdown UI Component (hat tip to Matt Parker)
      • renderUIComponent is now chainable
      • Add link title configuration attributes (hat tip to Pete Peterson)
      • RowsPerPageDropdown configuration rowsPerPageOptions text now assigned to option.text rather than option.innerHTML.
      • IDs generated for UI components now use Dom.generateId for safety from creating duplicate IDs when using in YUI 3 as yui2-paginator
  • Profiler
    • No change.
  • ProfilerViewer
    • No change.
  • ProgressBar
    • Enhancements / Changes
      • Added animAcceleration configuration attribute
  • Reset
    • Enhancements / Changes
      • reset OPTGROUP, OPTION
      • reset SELECT margin
  • Resize
    • No change.
  • Selector
    • Fixes
      • Fixes for IE 8 compat mode
      • fix last-of-type pseudo
    • Enhancements / Changes
      • added enabled/disabled pseudos
      • allow special characters ("-", ":", ".", etc.) in attributes
  • Slider
    • No change.
  • Storage
    • Fixes

* Fixed bug #2529271, to allow LOCATION_LOCAL data to persist across restarts

  • StyleSheet
    • Fixes
      • Add fix for IE 9 throwing an error from set() "Invalid this pointer used as target for method call". Best guess is that the style collection used for off-DOM calculations was getting corrupted.
  • SWF
    • Fixes
      • Added escapes to all non-HTML text written to innerHTML.
      • Fixed regression that causes absence of Flash to cause an error.
      • Updated the list of possible attributes to include all standard parameters allowed for the Flash Player object.
  • SWFDetect
    • Fixes
      • Fixed a regression bug that caused the absence of Flash to cause an error.
  • SWFStore
    • Fixes
      • Fixed a regression bug that caused an incorrect error about a domain name mismatch to be thrown.
  • TabView
    • Enhancements / Changes
      • correctly update activeIndex when adding/removing
      • content elements synched with tab item index
      • IE memory leak fix
      • Set "content" attribute for tabs from markup
  • TreeView
    • Fixes
      • webkit +/- key capture fixed.
  • Uploader
    • Fixes
      • Added escapes to all non-HTML text written to innerHTML.
      • Fixed bug #2527851, where an error was thrown when simUpload limit was larger than the number of files being uploaded.
      • Fixed bug #2528386, where removeFile() wasn't cancelling an upload.
      • Fixed bug #2528387, where cancelling an invalid id caused an error.
      • Fixed bug #2528785, where upload process stopped if errors occurred.
  • Yahoo
    • Enhancements / Changes
      • The user agent parse function was exposed as YAHOO.env.parseUA().
      • ios/android/chrome ua tests
      • substitute has a 'recurse' option to support nested templates (the previous default behavior). Normal operation is now a single level substitution which is tolerant of brackets in the replacement string.
      • Added YAHOO.lang.escapeHTML(), which does exactly what it says.
  • YUI Loader
    • Fixes
      • Fixed iterative skin requirement leak.
  • YUI Test
    • Enhancements / Changes
      • Works with YUI Test Selenium Driver
      • Added JUnit XML test format.
      • Added TAP test format.
      • Added getResults() method on YAHOO.tool.TestRunner.
      • Added isRunning() method on YAHOO.tool.TestRunner.
      • Added coverage support, including getCoverage() on YAHOO.tool.TestRunner and YAHOO.tool.CoverageFormat.
      • Added getName()/setName() method to allow setting overall results name.
      • Changed master suite default name to be "yuitests" plus a timestamp.
      • Changed functionality of TestRunner when there's only one suite to run. Internally, the TestRunner uses a TestSuite to manage everything added via add(). Previously, this test suite was always represented in the results. Now, if you've only added one TestSuite to the TestRunner via add(), the specified TestSuite becomes the root. This may affect the reporting of test results if you're using TestReporter. To run tests in the old way, call TestRunner.run(true).