xf/ui/xf.ui.header.js (44 lines of code) (raw):

define([ 'jquery', 'underscore', '../src/xf.core', '../src/xf.utils', '../ui/xf.ui.core' ], function($, _, XF) { /** Enhances headers view */ XF.ui.header = { // Selectors will be used to detect header's element on the page selector : '[data-role=header]', render : function (header, options) { var jQHeader = $(header); if (!header || !(jQHeader instanceof $) || jQHeader.attr('data-skip-enhance') == 'true') { return; } // Detect if we have title var headerTitle = jQHeader.find('h1'); if (headerTitle.length > 0) { headerTitle.addClass('xf-header-title'); } // Set up options options.id = options.id || XF.utils.uniqueID(); options.title = options.title || ''; options.html = jQHeader.html(); options.isFixed = (options.fixed && options.fixed === true) ? true : false; var parentPages = $(this.selector).parents('.xf-page'), siblingPages = $(this.selector).siblings('.xf-page'); // Add additional class for parent node if (!_.isEmpty(parentPages) && options.isFixed) { parentPages.addClass('xf-has-header'); } // Add additional class for siblings if (!_.isEmpty(siblingPages)) { siblingPages.addClass('xf-has-header'); } jQHeader.attr({ 'data-id': options.id, 'id': options.id, 'data-skip-enhance' : 'true' }); // Underscore template for header var _template = _.template( '<header class="xf-header <% if(isFixed) { %> xf-header-fixed <% } %>">' + '<%= html %>' + '</header>' ); jQHeader.html(_template(options)); } }; });