Sha256: fecd59bd3256aad78f069908e5ab68b8eeb696b5cb562ad14326d71d80ca846e

Contents?: true

Size: 1.55 KB

Versions: 58

Compression:

Stored size: 1.55 KB

Contents

pageflow.TabsView = Backbone.Marionette.Layout.extend({
  template: 'pageflow/ui/templates/tabs_view',
  className: 'tabs_view',

  ui: {
    headers: '> ul',
  },

  regions: {
    container: '> div'
  },

  events: {
    'click > ul > li': function(event) {
      this.changeTab($(event.target).data('tab-name'));
    }
  },

  initialize: function() {
    this.tabFactoryFns = {};
    this.tabNames = [];
    this.currentTabName = null;
  },

  tab: function(name, factoryFn) {
    this.tabFactoryFns[name] = factoryFn;
    this.tabNames.push(name);
  },

  onRender: function() {
    _.each(this.tabNames, function(name) {
      this.ui.headers.append(
        $('<li />')
          .attr('data-tab-name', name)
          .text(I18n.t(this.options.i18n + '.' + name))
      );
    }, this);

    this.changeTab(this.defaultTab());
  },

  changeTab: function(name) {
    this.container.show(this.tabFactoryFns[name]());
    this._updateActiveHeader(name);
    this.currentTabName = name;
  },

  defaultTab: function() {
    if (_.include(this.tabNames, this.options.defaultTab)) {
      return this.options.defaultTab;
    }
    else {
      return _.first(this.tabNames);
    }
  },

  refresh: function() {
    this.changeTab(this.currentTabName);
  },

  toggleSpinnerOnTab: function(name, visible) {
    this.$('[data-tab-name=' + name + ']').toggleClass('spinner', visible);
  },

  _updateActiveHeader: function(activeTabName) {
    this.ui.headers.children().each(function() {
      $(this).toggleClass('active', $(this).data('tab-name') === activeTabName);
    });
  }
});

Version data entries

58 entries across 58 versions & 1 rubygems

Version Path
pageflow-14.1.1 app/assets/javascripts/pageflow/ui/views/tabs_view.js
pageflow-14.1.0 app/assets/javascripts/pageflow/ui/views/tabs_view.js
pageflow-14.0.0 app/assets/javascripts/pageflow/ui/views/tabs_view.js
pageflow-14.0.0.rc2 app/assets/javascripts/pageflow/ui/views/tabs_view.js
pageflow-14.0.0.rc1 app/assets/javascripts/pageflow/ui/views/tabs_view.js
pageflow-14.0.0.beta3 app/assets/javascripts/pageflow/ui/views/tabs_view.js
pageflow-14.0.0.beta2 app/assets/javascripts/pageflow/ui/views/tabs_view.js
pageflow-14.0.0.beta1 app/assets/javascripts/pageflow/ui/views/tabs_view.js
pageflow-13.6.0 app/assets/javascripts/pageflow/ui/views/tabs_view.js
pageflow-13.5.0 app/assets/javascripts/pageflow/ui/views/tabs_view.js
pageflow-13.4.0 app/assets/javascripts/pageflow/ui/views/tabs_view.js
pageflow-13.3.0 app/assets/javascripts/pageflow/ui/views/tabs_view.js
pageflow-13.2.0 app/assets/javascripts/pageflow/ui/views/tabs_view.js
pageflow-12.6.0 app/assets/javascripts/pageflow/ui/views/tabs_view.js
pageflow-13.1.0 app/assets/javascripts/pageflow/ui/views/tabs_view.js
pageflow-12.5.0 app/assets/javascripts/pageflow/ui/views/tabs_view.js
pageflow-12.4.1 app/assets/javascripts/pageflow/ui/views/tabs_view.js
pageflow-13.0.0 app/assets/javascripts/pageflow/ui/views/tabs_view.js
pageflow-13.0.0.rc1 app/assets/javascripts/pageflow/ui/views/tabs_view.js
pageflow-12.4.0 app/assets/javascripts/pageflow/ui/views/tabs_view.js