r2857 - positionTo: Added support for stackfix and by options. Added tests for offset and by opt...

r2857 - positionTo: Added support for stackfix and by options. Added tests for offset and by opt...


Author: scott.gonzalez
Date: Tue Jun 30 19:36:35 2009
New Revision: 2857
Modified:
branches/dev/positionTo/tests/unit/positionTo/positionTo_core.js
branches/dev/positionTo/ui/ui.positionTo.js
Log:
positionTo: Added support for stackfix and by options. Added tests for
offset and by options.
Modified: branches/dev/positionTo/tests/unit/positionTo/positionTo_core.js
==============================================================================
--- branches/dev/positionTo/tests/unit/positionTo/positionTo_core.js    
(original)
+++ branches/dev/positionTo/tests/unit/positionTo/positionTo_core.js    Tue
Jun 30 19:36:35 2009
@@ -62,4 +62,58 @@
    });
});
+test('offset', function() {
+    $('#elx').positionTo({
+        my: 'left top',
+        at: 'left bottom',
+        of: '#parentx',
+        offset: '10'
+    });
+    same($('#elx').offset(), { top: 17, left: 14 }, 'single value');
+    
+    $('#elx').positionTo({
+        my: 'left top',
+        at: 'left bottom',
+        of: '#parentx',
+        offset: '5 -3'
+    });
+    same($('#elx').offset(), { top: 4, left: 9 }, 'two values');
+    
+    $('#elx').positionTo({
+        my: 'left top',
+        at: 'left bottom',
+        of: '#parentx',
+        offset: '5px -3px'
+    });
+    same($('#elx').offset(), { top: 4, left: 9 }, 'with units');
+});
+
+test('by', function() {
+    expect(6);
+    
+    var count = 0,
+        elems = $('#el1, #el2'),
+        expectedPosition = { top: 4, left: 4 },
+        originalPosition = elems.positionTo({
+            my: 'right bottom',
+            at: 'rigt bottom',
+            of: '#parentx'
+        }).offset();
+    
+    elems.positionTo({
+        my: 'left top',
+        at: 'left top',
+        of: '#parentx',
+        by: function(position) {
+            same(this, elems[count], 'correct context for call #' + count);
+            same(position, expectedPosition, 'correct position for call #' + count);
+            count++;
+        }
+    });
+    
+    elems.each(function() {
+        same($(this).offset(), originalPosition, 'elements not moved');
+    });
+});
+
})(jQuery);
Modified: branches/dev/positionTo/ui/ui.positionTo.js
==============================================================================
--- branches/dev/positionTo/ui/ui.positionTo.js    (original)
+++ branches/dev/positionTo/ui/ui.positionTo.js    Tue Jun 30 19:36:35 2009
@@ -88,12 +88,10 @@
                break;
        }
-        // TODO: offset option
        // TODO: collision option
-        // TODO: by option
-        // TODO: stackfix option
-        elem.offset(position);
+        (options.stackfix && $.fn.stackfix && elem.stackfix());
+        (options.by ? options.by.call(this, position) : elem.offset(position));
    });
};