Changeset 648
- Timestamp:
- 03/30/06 12:53:38 (3 years ago)
- Files:
-
- mochikit/branches/scriptaculous/MochiKit/DragAndDrop.js (modified) (8 diffs)
- mochikit/branches/scriptaculous/MochiKit/New.js (modified) (1 diff)
- mochikit/branches/scriptaculous/MochiKit/Sortable.js (modified) (6 diffs)
- mochikit/branches/scriptaculous/MochiKit/Visual.js (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
mochikit/branches/scriptaculous/MochiKit/DragAndDrop.js
r633 r648 207 207 208 208 isAccepted: function (element) { 209 return ((!this.accept) || MochiKit.Iter.some(this.accept, function (d) { 210 return MochiKit.Iter.some(element.className.split(' '), 211 function (c) { 212 return c == d; 213 } 214 )})); 209 return ((!this.accept) || MochiKit.Iter.some(this.accept, function (c) { 210 return MochiKit.DOM.hasElementClass(element, c); 211 })); 215 212 }, 216 213 … … 422 419 423 420 if (options.handle && (typeof(options.handle) == 'string')) { 424 this.handle = MochiKit.DOM.get ElementsByTagAndClassName(null,425 options.handle, this.element) [0];421 this.handle = MochiKit.DOM.getFirstElementByTagAndClassName(null, 422 options.handle, this.element); 426 423 } 427 424 if (!this.handle) { … … 432 429 } 433 430 434 if (options.scroll ) {431 if (options.scroll && !options.scroll.scrollTo && !options.scroll.outerHTML) { 435 432 options.scroll = MochiKit.DOM.getElement(options.scroll); 436 433 } … … 509 506 510 507 if (this.options.scroll) { 511 this.originalScrollLeft = this.options.scroll.scrollLeft; 512 this.originalScrollTop = this.options.scroll.scrollTop; 508 if (this.options.scroll == window) { 509 var where = this._getWindowScroll(this.options.scroll); 510 this.originalScrollLeft = where.left; 511 this.originalScrollTop = where.top; 512 } else { 513 this.originalScrollLeft = this.options.scroll.scrollLeft; 514 this.originalScrollTop = this.options.scroll.scrollTop; 515 } 513 516 } 514 517 … … 534 537 if (this.options.scroll) { 535 538 this.stopScrolling(); 536 var p = MochiKit.Position.page(this.options.scroll); 537 p[0] += this.options.scroll.scrollLeft; 538 p[1] += this.options.scroll.scrollTop; 539 p.push(p[0] + this.options.scroll.offsetWidth); 540 p.push(p[1] + this.options.scroll.offsetHeight); 539 var p; 540 if (this.options.scroll == window) { 541 var s = this._getWindowScroll(this.options.scroll); 542 p = [s.left, s.top, s.left+s.width, s.top+s.height]; 543 } else { 544 p = MochiKit.Position.page(this.options.scroll); 545 p[0] += this.options.scroll.scrollLeft; 546 p[1] += this.options.scroll.scrollTop; 547 p.push(p[0] + this.options.scroll.offsetWidth); 548 p.push(p[1] + this.options.scroll.offsetHeight); 549 } 541 550 var speed = [0, 0]; 542 551 if (pointer.page.x < (p[0] + this.options.scrollSensitivity)) { … … 633 642 pos[1] -= d[1]; 634 643 635 if (this.options.scroll ) {644 if (this.options.scroll && !this.options.scroll.scrollTo) { 636 645 pos[0] -= this.options.scroll.scrollLeft - this.originalScrollLeft; 637 646 pos[1] -= this.options.scroll.scrollTop - this.originalScrollTop; … … 691 700 var delta = current - this.lastScrolled; 692 701 this.lastScrolled = current; 693 this.options.scroll.scrollLeft += this.scrollSpeed[0] * delta / 1000; 694 this.options.scroll.scrollTop += this.scrollSpeed[1] * delta / 1000; 702 703 if (this.options.scroll == window) { 704 var s = this._getWindowScroll(this.options.scroll); 705 if (this.scrollSpeed[0] || this.scrollSpeed[1]) { 706 var d = delta / 1000; 707 this.options.scroll.scrollTo(s.left + d*this.scrollSpeed[0], s.top + d*this.scrollSpeed[1]); 708 } 709 } else { 710 this.options.scroll.scrollLeft += this.scrollSpeed[0] * delta / 1000; 711 this.options.scroll.scrollTop += this.scrollSpeed[1] * delta / 1000; 712 } 713 695 714 MochiKit.Position.prepare(); 696 715 MochiKit.DragAndDrop.Droppables.show(MochiKit.DragAndDrop.Draggables._lastPointer, this.element); … … 702 721 }, 703 722 723 _getWindowScroll: function (w) { 724 var T, L, W, H; 725 with (w.document) { 726 if (w.document.documentElement && documentElement.scrollTop) { 727 T = documentElement.scrollTop; 728 L = documentElement.scrollLeft; 729 } else if (w.document.body) { 730 T = body.scrollTop; 731 L = body.scrollLeft; 732 } 733 if (w.innerWidth) { 734 W = w.innerWidth; 735 H = w.innerHeight; 736 } else if (w.document.documentElement && documentElement.clientWidth) { 737 W = documentElement.clientWidth; 738 H = documentElement.clientHeight; 739 } else { 740 W = body.offsetWidth; 741 H = body.offsetHeight 742 } 743 } 744 return {top: T, left: L, width: W, height: H}; 745 }, 746 704 747 repr: function () { 705 748 return '[' + this.__class__.NAME + ", options:" + MochiKit.Base.repr(this.options) + "]"; mochikit/branches/scriptaculous/MochiKit/New.js
r616 r648 165 165 element.style.position = element.style.top = element.style.left = element.style.bottom = element.style.right = ''; 166 166 } 167 }, 168 169 getFirstElementByTagAndClassName: function (tagName, className, 170 /* optional */parent) { 171 var self = MochiKit.DOM; 172 if (typeof(tagName) == 'undefined' || tagName === null) { 173 tagName = '*'; 174 } 175 if (typeof(parent) == 'undefined' || parent === null) { 176 parent = self._document; 177 } 178 parent = self.getElement(parent); 179 var children = (parent.getElementsByTagName(tagName) 180 || self._document.all); 181 if (typeof(className) == 'undefined' || className === null) { 182 return MochiKit.Base.extend(null, children); 183 } 184 185 for (var i = 0; i < children.length; i++) { 186 var child = children[i]; 187 var classNames = child.className.split(' '); 188 for (var j = 0; j < classNames.length; j++) { 189 if (classNames[j] == className) { 190 return child; 191 } 192 } 193 } 167 194 } 168 195 }); mochikit/branches/scriptaculous/MochiKit/Sortable.js
r633 r648 136 136 ghosting: false, 137 137 scroll: false, 138 scrollSensitivity: 20, 139 scrollSpeed: 15, 138 140 format: null, 139 141 onChange: MochiKit.Base.emptyFunction, … … 149 151 ghosting: options.ghosting, 150 152 scroll: options.scroll, 153 scrollSensitivity: options.scrollSensitivity, 154 scrollSpeed: options.scrollSpeed, 151 155 constraint: options.constraint, 152 156 handle: options.handle … … 203 207 // handles are per-draggable 204 208 var handle = options.handle ? 205 MochiKit.DOM.get ElementsByTagAndClassName(null,206 options.handle, e) [0]: e;209 MochiKit.DOM.getFirstElementByTagAndClassName(null, 210 options.handle, e) : e; 207 211 options.draggables.push( 208 212 new MochiKit.DragAndDrop.Draggable(e, … … 231 235 e.tagName.toUpperCase() == options.tag.toUpperCase() && 232 236 (!options.only || 233 (MochiKit.DOM.hasElementClass(e, options.only)))) { 237 MochiKit.Iter.some(option.only, function (c) { 238 return MochiKit.DOM.hasElementClass(element, c); 239 }))) { 234 240 elements.push(e); 235 241 } … … 319 325 }, 320 326 327 setSequence: function (element, newSequence) { 328 element = MochiKit.DOM.getElement(element); 329 var options = MochiKit.Base.update(arguments[2] || {}, this.options(element)); 330 331 var nodeMap = {}; 332 MochiKit.Base.map(function (n) { 333 var m = n.id.match(options.format); 334 if (m) { 335 nodeMap[m[1]] = [n, n.parentNode]; 336 } 337 n.parentNode.removeChild(n); 338 }, this.findElements(element, options)); 339 340 MochiKit.Base.map(function (ident) { 341 var n = nodeMap[ident]; 342 if (n) { 343 n[1].appendChild(n[0]); 344 delete nodeMap[ident]; 345 } 346 }, newSequence); 347 }, 348 321 349 serialize: function (element, options) { 322 350 element = MochiKit.DOM.getElement(element); … … 328 356 format: sortableOptions.format || /^[^_]*_(.*)$/ 329 357 }, options || {}); 358 330 359 return MochiKit.Base.map(function (item) { 331 360 return (encodeURIComponent(options.name) + '[]=' + mochikit/branches/scriptaculous/MochiKit/Visual.js
r620 r648 399 399 } 400 400 }); 401 }; 402 403 MochiKit.Visual.forceRerendering = function (element) { 404 try { 405 element = MochiKit.DOM.getElement(element); 406 var n = document.createTextNode(' '); 407 element.appendChild(n); 408 element.removeChild(n); 409 } catch(e) { 410 } 401 411 }; 402 412 … … 1098 1108 MochiKit.DOM.getOpacity(element) || 0.0), 1099 1109 to: 1.0, 1110 // force Safari to render floated elements properly 1111 afterFinishInternal: function(effect) { 1112 MochiKit.Visual.forceRerendering(effect.element); 1113 }, 1100 1114 beforeSetup: function (effect) { 1101 1115 MochiKit.DOM.setOpacity(effect.element, effect.options.from); … … 1164 1178 ***/ 1165 1179 element = MochiKit.DOM.getElement(element); 1166 var oldHeight = MochiKit.DOM.getStyle(element, 'height');1167 1180 var elementDimensions = MochiKit.DOM.elementDimensions(element); 1168 1181 options = MochiKit.Base.update({ … … 1180 1193 afterFinishInternal: function (effect) { 1181 1194 MochiKit.DOM.undoClipping(effect.element); 1182 MochiKit.DOM.setStyle(effect.element, {height: oldHeight});1183 1195 } 1184 1196 }, options || {});
