jquery.layout.resizeTabLayout.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. /**
  2. * UI Layout Callback: resizeTabLayout
  3. *
  4. * Requires Layout 1.3.0.rc29.15 or later
  5. *
  6. * This callback is used when a tab-panel is the container for a layout
  7. * The tab-layout can be initialized either before or after the tabs are created
  8. * Assign this callback to the tabs.show event:
  9. * - if the layout HAS been fully initialized already, it will be resized
  10. * - if the layout has NOT fully initialized, it will attempt to do so
  11. * - if it cannot initialize, it will try again next time the tab is accessed
  12. * - it also looks for ANY visible layout *inside* teh tab and resize/init it
  13. *
  14. * SAMPLE:
  15. * < jQuery UI 1.9: $("#elem").tabs({ show: $.layout.callbacks.resizeTabLayout });
  16. * > jQuery UI 1.9: $("#elem").tabs({ activate: $.layout.callbacks.resizeTabLayout });
  17. * $("body").layout({ center__onresize: $.layout.callbacks.resizeTabLayout });
  18. *
  19. * Version: 1.3 - 2013-01-12
  20. * Author: Kevin Dalman (kevin@jquery-dev.com)
  21. */
  22. ;(function ($) {
  23. var _ = $.layout;
  24. // make sure the callbacks branch exists
  25. if (!_.callbacks) _.callbacks = {};
  26. // this callback is bound to the tabs.show event OR to layout-pane.onresize event
  27. _.callbacks.resizeTabLayout = function (x, ui) {
  28. // may be called EITHER from layout-pane.onresize OR tabs.show/activate
  29. var $P = ui.jquery ? ui : $(ui.newPanel || ui.panel);
  30. // find all VISIBLE layouts inside this pane/panel and resize them
  31. $P.filter(":visible").find(".ui-layout-container:visible").andSelf().each(function(){
  32. var layout = $(this).data("layout");
  33. if (layout) {
  34. layout.options.resizeWithWindow = false; // set option just in case not already set
  35. layout.resizeAll();
  36. }
  37. });
  38. };
  39. })( jQuery );