collapsibleTabs: Clean up and simplify code

Authored by Krinkle on Nov 28 2016, 11:14 PM.


collapsibleTabs: Clean up and simplify code

  • Rename 'rtl' to 'isRTL' and use DOM to compute its value.
  • Document code with JSDuck similar to other extensions.
  • Remove unused 'prevElement' property. Not used in Vector nor anywhere else in Wikimedia Git.
  • Make 'boundEvent' property private. Not used anywhere in Wikimedia Git outside this file.
  • Simplify 'instances' tracking. The jQuery object stored in this property wasn't used beyond calling each(). Convert to a plain array. Preserve and re-use the jQuery object first created by collapsibleTabs().
  • Simplify calculateTabDistance() by using getElementById() and getBoundingClientRect(). Its support includes IE 5. The "new" version (since Firefox 3.5 and IE 9) also includes 'height' and 'width' properties and is supported in all browsers supported by the MediaWiki 1.28 startup feature test.

    This helps avoid code in offset() and width(), which is fairly expensive in jQuery 1.x.
  • moveToCollapsed()
    • Remove redundant jQuery object creation (only caller passes a jQuery object already).
    • Remove redundant re-receiving of expContainerSettings inside the animate() callback. Already in the main scope. Relates to a bunch of patches that work around a problem caused by use of remove() instead of detach() in an earlier version of the code. Which was only a problem because the other settings object was also not used from the main scope. (See pre-Gerrit commits 1f93310e and e7900807.)

Change-Id: I48d542580d767df2d17ce4c6668e9e233a0f7902