Sha256: f7f7b25e36434260849075e42b6cf4dcb70831bfb6b18650910614b817c46497

Contents?: true

Size: 1.46 KB

Versions: 13

Compression:

Stored size: 1.46 KB

Contents

# Hooks for collapsibles, with (external) triggers

createTrigger = ($el) ->
  $target = $($el.data('mtl-collapsible-toggle'))
  currentIdx = $target.find('.collapsible-header.active:first').parent().index()
  if currentIdx == -1
    $target.find('.collapsible-header:first').addClass('active')
    currentIdx = 0
  else if currentIdx > 0
    $el.addClass('active')

  # hide collapsible-header and disable initial animation
  $target.find('.collapsible-header').hide()
  $target.find('.collapsible-header.active:first').siblings().css('display', 'block')

  # enable accordion
  createAccordion $target

  # bind events
  $el.off '.mtl-collapsible'
  $el.on 'click.mtl-collapsible', (e) ->
    e.preventDefault()
    currentIdx = if currentIdx == 0
      $el.addClass('active')
      $target.find('.collapsible-header:last').trigger('click').parent().index()
    else
      $el.removeClass('active')
      $target.find('.collapsible-header:first').trigger('click').parent().index()

createAccordion = ($el) ->
  $el.data('collapsible', 'accordion')
    .collapsible(accordion: true)

createExpandable = ($el) ->
  $el.data('collapsible', 'expandable')
    .collapsible(accordion: false)

init = ->
  $('[data-mtl-collapsible="accordion"]').each -> createAccordion($(this))
  $('[data-mtl-collapsible="expandable"]').each -> createExpandable($(this))
  $('[data-mtl-collapsible-toggle]').each -> createTrigger($(this))

if Turbolinks? then $(document).on('turbolinks:load', init) else $(init)

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
mtl-1.1.10 app/assets/javascripts/mtl/collapsible.coffee
mtl-1.1.9 app/assets/javascripts/mtl/collapsible.coffee
mtl-1.1.8 app/assets/javascripts/mtl/collapsible.coffee
mtl-1.1.7 app/assets/javascripts/mtl/collapsible.coffee
mtl-1.1.6 app/assets/javascripts/mtl/collapsible.coffee
mtl-1.1.5 app/assets/javascripts/mtl/collapsible.coffee
mtl-1.1.4 app/assets/javascripts/mtl/collapsible.coffee
mtl-1.1.2 app/assets/javascripts/mtl/collapsible.coffee
mtl-1.1.1 app/assets/javascripts/mtl/collapsible.coffee
mtl-1.1.0 app/assets/javascripts/mtl/collapsible.coffee
mtl-1.0.3 app/assets/javascripts/mtl/collapsible.coffee
mtl-1.0.2 app/assets/javascripts/mtl/collapsible.coffee
mtl-1.0.1 app/assets/javascripts/mtl/collapsible.coffee