window.CMI or= {}
# # Will triggers method “onCmiTabsClick: (target)” on # the view if method is defined. # # Attention: It does not automatically mean, there is a # new tab visible. It just triggers on navbar # tab click. # class CMI.TabsBehavior extends Marionette.Behavior
ui: tabs: '.cmi-tabs > li > a' tabActive: '.cmi-tabs > li.cmi-tabs-active > a' # fixed here li identifier tabsNavigation: '.cmi-tabs' events: 'click @ui.tabs': 'onTabClick' onRender: -> @onCmiTabsRefresh() onShow: -> @activate(@ui.tabActive) onCmiTabsRefresh: -> @view.bindUIElements() @activate(@ui.tabActive) onTabClick: (event, b) -> event.preventDefault() target = $(event.currentTarget) @activate(target) @view.triggerMethod 'cmi:tabs:click', target getTabsName: -> @ui.tabsNavigation.data('cmi-tabs-name') getCurrentTab: -> $("[data-cmi-tabs-name=#{@getTabsName()}].cmi-tabs-tab.cmi-tabs-active") getTabForNavigationElement: (domElement) -> id = domElement.data('cmi-tab-id').replace('#', '') $("[data-cmi-tabs-name=#{@getTabsName()}]##{id}.cmi-tabs-tab") activate: (domElement) -> return unless domElement instanceof jQuery return unless domElement.length > 0 return if domElement == @getCurrentTab() currentDomElement = @getCurrentTab() unless currentDomElement instanceof jQuery && currentDomElement.length > 0 currentDomElement = null @view.triggerMethod 'cmi:tabs:tab:beforeShow', @getTabForNavigationElement(domElement) @view.triggerMethod 'cmi:tabs:tab:beforeHide', currentDomElement if currentDomElement? == true CMI.Tabs.activate(domElement) @view.triggerMethod 'cmi:tabs:tab:hide', currentDomElement if currentDomElement? == true @view.triggerMethod 'cmi:tabs:tab:show', @getTabForNavigationElement(domElement)