Security update for Core, with self-updated composer
[yaffs-website] / web / core / misc / tableheader.js
index 8fc1b048963c90fabad8b08e864e875a51714bc7..bce54ec7d43d9cf9d6bbac087ba22a455b9fa088 100644 (file)
@@ -1,23 +1,14 @@
 /**
- * @file
- * Sticky table headers.
- */
+* DO NOT EDIT THIS FILE.
+* See the following change record for more information,
+* https://www.drupal.org/node/2815083
+* @preserve
+**/
 
 (function ($, Drupal, displace) {
-
-  'use strict';
-
-  /**
-   * Attaches sticky table headers.
-   *
-   * @type {Drupal~behavior}
-   *
-   * @prop {Drupal~behaviorAttach} attach
-   *   Attaches the sticky table header behavior.
-   */
   Drupal.behaviors.tableHeader = {
-    attach: function (context) {
-      $(window).one('scroll.TableHeaderInit', {context: context}, tableHeaderInitHandler);
+    attach: function attach(context) {
+      $(window).one('scroll.TableHeaderInit', { context: context }, tableHeaderInitHandler);
     }
   };
 
@@ -25,7 +16,6 @@
     return document.documentElement[position] || document.body[position];
   }
 
-  // Select and initialize sticky table headers.
   function tableHeaderInitHandler(e) {
     var $tables = $(e.data.context).find('table.sticky-enabled').once('tableheader');
     var il = $tables.length;
@@ -35,7 +25,6 @@
     forTables('onScroll');
   }
 
-  // Helper method to loop through tables and execute a method.
   function forTables(method, arg) {
     var tables = TableHeader.tables;
     var il = tables.length;
     forTables('stickyPosition', offsets.top);
   }
 
-  // Bind event that need to change all tables.
   $(window).on({
-
-    /**
-     * When resizing table width can change, recalculate everything.
-     *
-     * @ignore
-     */
     'resize.TableHeader': tableHeaderResizeHandler,
 
-    /**
-     * Bind only one event to take care of calling all scroll callbacks.
-     *
-     * @ignore
-     */
     'scroll.TableHeader': tableHeaderOnScrollHandler
   });
-  // Bind to custom Drupal events.
-  $(document).on({
 
-    /**
-     * Recalculate columns width when window is resized and when show/hide
-     * weight is triggered.
-     *
-     * @ignore
-     */
+  $(document).on({
     'columnschange.TableHeader': tableHeaderResizeHandler,
 
-    /**
-     * Recalculate TableHeader.topOffset when viewport is resized.
-     *
-     * @ignore
-     */
     'drupalViewportOffsetChange.TableHeader': tableHeaderOffsetChangeHandler
   });
 
-  /**
-   * Constructor for the tableHeader object. Provides sticky table headers.
-   *
-   * TableHeader will make the current table header stick to the top of the page
-   * if the table is very long.
-   *
-   * @constructor Drupal.TableHeader
-   *
-   * @param {HTMLElement} table
-   *   DOM object for the table to add a sticky header to.
-   *
-   * @listens event:columnschange
-   */
   function TableHeader(table) {
     var $table = $(table);
 
-    /**
-     * @name Drupal.TableHeader#$originalTable
-     *
-     * @type {HTMLElement}
-     */
     this.$originalTable = $table;
 
-    /**
-     * @type {jQuery}
-     */
     this.$originalHeader = $table.children('thead');
 
-    /**
-     * @type {jQuery}
-     */
     this.$originalHeaderCells = this.$originalHeader.find('> tr > th');
 
-    /**
-     * @type {null|bool}
-     */
     this.displayWeight = null;
     this.$originalTable.addClass('sticky-table');
     this.tableHeight = $table[0].clientHeight;
     this.tableOffset = this.$originalTable.offset();
 
-    // React to columns change to avoid making checks in the scroll callback.
-    this.$originalTable.on('columnschange', {tableHeader: this}, function (e, display) {
+    this.$originalTable.on('columnschange', { tableHeader: this }, function (e, display) {
       var tableHeader = e.data.tableHeader;
       if (tableHeader.displayWeight === null || tableHeader.displayWeight !== display) {
         tableHeader.recalculateSticky();
       tableHeader.displayWeight = display;
     });
 
-    // Create and display sticky header.
     this.createSticky();
   }
 
-  /**
-   * Store the state of TableHeader.
-   */
-  $.extend(TableHeader, /** @lends Drupal.TableHeader */{
-
-    /**
-     * This will store the state of all processed tables.
-     *
-     * @type {Array.<Drupal.TableHeader>}
-     */
+  $.extend(TableHeader, {
     tables: []
   });
 
-  /**
-   * Extend TableHeader prototype.
-   */
-  $.extend(TableHeader.prototype, /** @lends Drupal.TableHeader# */{
-
-    /**
-     * Minimum height in pixels for the table to have a sticky header.
-     *
-     * @type {number}
-     */
+  $.extend(TableHeader.prototype, {
     minHeight: 100,
 
-    /**
-     * Absolute position of the table on the page.
-     *
-     * @type {?Drupal~displaceOffset}
-     */
     tableOffset: null,
 
-    /**
-     * Absolute position of the table on the page.
-     *
-     * @type {?number}
-     */
     tableHeight: null,
 
-    /**
-     * Boolean storing the sticky header visibility state.
-     *
-     * @type {bool}
-     */
     stickyVisible: false,
 
-    /**
-     * Create the duplicate header.
-     */
-    createSticky: function () {
-      // Clone the table header so it inherits original jQuery properties.
+    createSticky: function createSticky() {
       var $stickyHeader = this.$originalHeader.clone(true);
-      // Hide the table to avoid a flash of the header clone upon page load.
-      this.$stickyTable = $('<table class="sticky-header"/>')
-        .css({
-          visibility: 'hidden',
-          position: 'fixed',
-          top: '0px'
-        })
-        .append($stickyHeader)
-        .insertBefore(this.$originalTable);
+
+      this.$stickyTable = $('<table class="sticky-header"/>').css({
+        visibility: 'hidden',
+        position: 'fixed',
+        top: '0px'
+      }).append($stickyHeader).insertBefore(this.$originalTable);
 
       this.$stickyHeaderCells = $stickyHeader.find('> tr > th');
 
-      // Initialize all computations.
       this.recalculateSticky();
     },
-
-    /**
-     * Set absolute position of sticky.
-     *
-     * @param {number} offsetTop
-     *   The top offset for the sticky header.
-     * @param {number} offsetLeft
-     *   The left offset for the sticky header.
-     *
-     * @return {jQuery}
-     *   The sticky table as a jQuery collection.
-     */
-    stickyPosition: function (offsetTop, offsetLeft) {
+    stickyPosition: function stickyPosition(offsetTop, offsetLeft) {
       var css = {};
       if (typeof offsetTop === 'number') {
         css.top = offsetTop + 'px';
       }
       if (typeof offsetLeft === 'number') {
-        css.left = (this.tableOffset.left - offsetLeft) + 'px';
+        css.left = this.tableOffset.left - offsetLeft + 'px';
       }
       return this.$stickyTable.css(css);
     },
-
-    /**
-     * Returns true if sticky is currently visible.
-     *
-     * @return {bool}
-     *   The visibility status.
-     */
-    checkStickyVisible: function () {
+    checkStickyVisible: function checkStickyVisible() {
       var scrollTop = scrollValue('scrollTop');
       var tableTop = this.tableOffset.top - displace.offsets.top;
       var tableBottom = tableTop + this.tableHeight;
       var visible = false;
 
-      if (tableTop < scrollTop && scrollTop < (tableBottom - this.minHeight)) {
+      if (tableTop < scrollTop && scrollTop < tableBottom - this.minHeight) {
         visible = true;
       }
 
       this.stickyVisible = visible;
       return visible;
     },
-
-    /**
-     * Check if sticky header should be displayed.
-     *
-     * This function is throttled to once every 250ms to avoid unnecessary
-     * calls.
-     *
-     * @param {jQuery.Event} e
-     *   The scroll event.
-     */
-    onScroll: function (e) {
+    onScroll: function onScroll(e) {
       this.checkStickyVisible();
-      // Track horizontal positioning relative to the viewport.
+
       this.stickyPosition(null, scrollValue('scrollLeft'));
       this.$stickyTable.css('visibility', this.stickyVisible ? 'visible' : 'hidden');
     },
-
-    /**
-     * Event handler: recalculates position of the sticky table header.
-     *
-     * @param {jQuery.Event} event
-     *   Event being triggered.
-     */
-    recalculateSticky: function (event) {
-      // Update table size.
+    recalculateSticky: function recalculateSticky(event) {
       this.tableHeight = this.$originalTable[0].clientHeight;
 
-      // Update offset top.
       displace.offsets.top = displace.calculateOffset('top');
       this.tableOffset = this.$originalTable.offset();
       this.stickyPosition(displace.offsets.top, scrollValue('scrollLeft'));
 
-      // Update columns width.
       var $that = null;
       var $stickyCell = null;
       var display = null;
-      // Resize header and its cell widths.
-      // Only apply width to visible table cells. This prevents the header from
-      // displaying incorrectly when the sticky header is no longer visible.
+
       var il = this.$originalHeaderCells.length;
       for (var i = 0; i < il; i++) {
         $that = $(this.$originalHeaderCells[i]);
         $stickyCell = this.$stickyHeaderCells.eq($that.index());
         display = $that.css('display');
         if (display !== 'none') {
-          $stickyCell.css({width: $that.css('width'), display: display});
-        }
-        else {
+          $stickyCell.css({ width: $that.css('width'), display: display });
+        } else {
           $stickyCell.css('display', 'none');
         }
       }
     }
   });
 
-  // Expose constructor in the public space.
   Drupal.TableHeader = TableHeader;
-
-}(jQuery, Drupal, window.parent.Drupal.displace));
+})(jQuery, Drupal, window.parent.Drupal.displace);
\ No newline at end of file