Sha256: 9fb9ce11f68a8a36d3f3fa203dd456a71cc1e170350e27bcb576432cf0c5bfc2

Contents?: true

Size: 785 Bytes

Versions: 4

Compression:

Stored size: 785 Bytes

Contents

#= require partystreusel/base
#= require partystreusel/scroll_to

class Accordion extends Partystreusel.Base
  @className = 'Accordion'

  constructor: (el) ->
    super
    @$el.find('.accordion__title').on 'click', @toggleItem
    @items = @$el.find('.accordion__item')
    @offset = @$el.data('scroll-offset')

  toggleItem: (e) =>
    item = $(e.target).closest('.accordion__item')
    currentOpen = item.hasClass('accordion__item--open')

    @items.filter('.accordion__item--open').each (_, i) =>
      @trigger('close', $(i))

    @items.removeClass('accordion__item--open')
    unless currentOpen
      item.toggleClass('accordion__item--open')
      @trigger('open', item)

    e.preventDefault()
    Partystreusel.scrollTo(item, @offset)

Partystreusel.Accordion = Accordion

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
partystreusel-2.0.0 app/assets/javascripts/partystreusel/accordion.js.coffee
partystreusel-1.2.0 app/assets/javascripts/partystreusel/accordion.js.coffee
partystreusel-1.1.1 app/assets/javascripts/partystreusel/accordion.js.coffee
partystreusel-1.1.0 app/assets/javascripts/partystreusel/accordion.js.coffee