芝麻web文件管理V1.00
编辑当前文件:/home2/sdektunc/.trash/cepali/lib/yuilib/3.17.2/dd-proxy/dd-proxy.js
/* YUI 3.17.2 (build 9c3c78e) Copyright 2014 Yahoo! Inc. All rights reserved. Licensed under the BSD License. http://yuilibrary.com/license/ */ YUI.add('dd-proxy', function (Y, NAME) { /** * Plugin for dd-drag for creating a proxy drag node, instead of dragging the original node. * @module dd * @submodule dd-proxy */ /** * Plugin for dd-drag for creating a proxy drag node, instead of dragging the original node. * @class DDProxy * @extends Base * @constructor * @namespace Plugin */ var DDM = Y.DD.DDM, NODE = 'node', DRAG_NODE = 'dragNode', HOST = 'host', TRUE = true, proto, P = function() { P.superclass.constructor.apply(this, arguments); }; P.NAME = 'DDProxy'; /** * The Proxy instance will be placed on the Drag instance under the proxy namespace. * @property NS * @default con * @readonly * @protected * @static * @type {String} */ P.NS = 'proxy'; P.ATTRS = { host: { }, /** * Move the original node at the end of the drag. Default: true * @attribute moveOnEnd * @type Boolean */ moveOnEnd: { value: TRUE }, /** * Hide the drag node at the end of the drag. Default: true * @attribute hideOnEnd * @type Boolean */ hideOnEnd: { value: TRUE }, /** * Make the Proxy node assume the size of the original node. Default: true * @attribute resizeFrame * @type Boolean */ resizeFrame: { value: TRUE }, /** * Make the Proxy node appear in the same place as the original node. Default: true * @attribute positionProxy * @type Boolean */ positionProxy: { value: TRUE }, /** * The default border style for the border of the proxy. Default: 1px solid #808080 * @attribute borderStyle * @type Boolean */ borderStyle: { value: '1px solid #808080' }, /** * Should the node be cloned into the proxy for you. Default: false * @attribute cloneNode * @type Boolean */ cloneNode: { value: false } }; proto = { /** * Holds the event handles for setting the proxy * @private * @property _hands */ _hands: null, /** * Handler for the proxy config attribute * @private * @method _init */ _init: function() { if (!DDM._proxy) { DDM._createFrame(); Y.on('domready', Y.bind(this._init, this)); return; } if (!this._hands) { this._hands = []; } var h, h1, host = this.get(HOST), dnode = host.get(DRAG_NODE); if (dnode.compareTo(host.get(NODE))) { if (DDM._proxy) { host.set(DRAG_NODE, DDM._proxy); } } Y.Array.each(this._hands, function(v) { v.detach(); }); h = DDM.on('ddm:start', Y.bind(function() { if (DDM.activeDrag === host) { DDM._setFrame(host); } }, this)); h1 = DDM.on('ddm:end', Y.bind(function() { if (host.get('dragging')) { if (this.get('moveOnEnd')) { host.get(NODE).setXY(host.lastXY); } if (this.get('hideOnEnd')) { host.get(DRAG_NODE).setStyle('display', 'none'); } if (this.get('cloneNode')) { host.get(DRAG_NODE).remove(); host.set(DRAG_NODE, DDM._proxy); } } }, this)); this._hands = [h, h1]; }, initializer: function() { this._init(); }, destructor: function() { var host = this.get(HOST); Y.Array.each(this._hands, function(v) { v.detach(); }); host.set(DRAG_NODE, host.get(NODE)); }, clone: function() { var host = this.get(HOST), n = host.get(NODE), c = n.cloneNode(true); c.all('input[type="radio"]').removeAttribute('name'); delete c._yuid; c.setAttribute('id', Y.guid()); c.setStyle('position', 'absolute'); n.get('parentNode').appendChild(c); host.set(DRAG_NODE, c); return c; } }; Y.namespace('Plugin'); Y.extend(P, Y.Base, proto); Y.Plugin.DDProxy = P; //Add a couple of methods to the DDM Y.mix(DDM, { /** * Create the proxy element if it doesn't already exist and set the DD.DDM._proxy value * @private * @for DDM * @namespace DD * @method _createFrame */ _createFrame: function() { if (!DDM._proxy) { DDM._proxy = TRUE; var p = Y.Node.create('
'), b = Y.one('body'); p.setStyles({ position: 'absolute', display: 'none', zIndex: '999', top: '-999px', left: '-999px' }); b.prepend(p); p.set('id', Y.guid()); p.addClass(DDM.CSS_PREFIX + '-proxy'); DDM._proxy = p; } }, /** * If resizeProxy is set to true (default) it will resize the proxy element to match the size of the Drag Element. * If positionProxy is set to true (default) it will position the proxy element in the same location as the Drag Element. * @private * @for DDM * @namespace DD * @method _setFrame */ _setFrame: function(drag) { var n = drag.get(NODE), d = drag.get(DRAG_NODE), ah, cur = 'auto'; ah = DDM.activeDrag.get('activeHandle'); if (ah) { cur = ah.getStyle('cursor'); } if (cur === 'auto') { cur = DDM.get('dragCursor'); } d.setStyles({ visibility: 'hidden', display: 'block', cursor: cur, border: drag.proxy.get('borderStyle') }); if (drag.proxy.get('cloneNode')) { d = drag.proxy.clone(); } if (drag.proxy.get('resizeFrame')) { d.setStyles({ height: n.get('offsetHeight') + 'px', width: n.get('offsetWidth') + 'px' }); } if (drag.proxy.get('positionProxy')) { d.setXY(drag.nodeXY); } d.setStyle('visibility', 'visible'); } }); //Create the frame when DOM is ready //Y.on('domready', Y.bind(DDM._createFrame, DDM)); }, '3.17.2', {"requires": ["dd-drag"]});