752e31b910dbf30e2b803437da522585eca28528Matt Sweeney * Provides shimming support for Node via a Plugin.
752e31b910dbf30e2b803437da522585eca28528Matt Sweeney * This fixes SELECT bleedthrough for IE6 & Mac scrollbars
752e31b910dbf30e2b803437da522585eca28528Matt Sweeney * @module shim-plugin
752e31b910dbf30e2b803437da522585eca28528Matt Sweeney * Node plugin which can be used to add shim support.
752e31b910dbf30e2b803437da522585eca28528Matt Sweeney * @class Plugin.Shim
752e31b910dbf30e2b803437da522585eca28528Matt Sweeney * @param {Object} User configuration object
752e31b910dbf30e2b803437da522585eca28528Matt Sweeney * Default class used to mark the shim element
10d8bafc5c24f3a4285cf6060a1935ba5cfc4b85Luke Smith * @property CLASS_NAME
752e31b910dbf30e2b803437da522585eca28528Matt Sweeney * @type String
752e31b910dbf30e2b803437da522585eca28528Matt Sweeney * @default "yui-node-shim"
752e31b910dbf30e2b803437da522585eca28528Matt Sweeney // TODO: use ClassNameManager
752e31b910dbf30e2b803437da522585eca28528Matt Sweeney * Default markup template used to generate the shim element.
10d8bafc5c24f3a4285cf6060a1935ba5cfc4b85Luke Smith * @property TEMPLATE
752e31b910dbf30e2b803437da522585eca28528Matt Sweeney * @type String
752e31b910dbf30e2b803437da522585eca28528Matt Sweeney Shim.TEMPLATE = '<iframe class="' + Shim.CLASS_NAME +
752e31b910dbf30e2b803437da522585eca28528Matt Sweeney '" frameborder="0" title="Node Stacking Shim"' +
752e31b910dbf30e2b803437da522585eca28528Matt Sweeney 'src="javascript:false" tabindex="-1" role="presentation"' +
752e31b910dbf30e2b803437da522585eca28528Matt Sweeney 'style="position:absolute; z-index:-1;"></iframe>';
752e31b910dbf30e2b803437da522585eca28528Matt Sweeney this._resizeHandle = this._host.on('resize', this.sync, this);
752e31b910dbf30e2b803437da522585eca28528Matt Sweeney getShim: function() {
752e31b910dbf30e2b803437da522585eca28528Matt Sweeney return this._shim || (
752e31b910dbf30e2b803437da522585eca28528Matt Sweeney insert: function() {
b0614bd702ed299874c87fd5d4d48bccda498c73Matt Sweeney this._shim = node.insertBefore( this.getShim(),
752e31b910dbf30e2b803437da522585eca28528Matt Sweeney * Updates the size of the shim to fill its container
752e31b910dbf30e2b803437da522585eca28528Matt Sweeney * @method sync
752e31b910dbf30e2b803437da522585eca28528Matt Sweeney sync: function() {
31acd99497fcc9fc72f15c5553fe356d64fb9d03Matt Sweeney * Removes the shim and destroys the plugin
752e31b910dbf30e2b803437da522585eca28528Matt Sweeney * @method destroy
752e31b910dbf30e2b803437da522585eca28528Matt Sweeney destroy: function() {