Sha256: 2df81bf5d42b2f47a6882b24ae8bb9a90a54b6533925c07d4b9809754b387251

Contents?: true

Size: 1.71 KB

Versions: 3

Compression:

Stored size: 1.71 KB

Contents

class Para.NestedManyField
  constructor: (@$field) ->
    @$fieldsList = @$field.find('.fields-list')

    @initializeOrderable()
    @initializeCocoon()

    @$field.on 'shown.bs.collapse', $.proxy(@collapseShown, this)

  initializeOrderable: ->
    @orderable = @$field.hasClass('orderable')
    return unless @orderable

    @$fieldsList.sortable
      handle: '.order-anchor'
      forcePlaceholderSize: true

    @$fieldsList.on('sortupdate', $.proxy(@sortUpdate, this))

  sortUpdate: (e, ui) ->
    @$fieldsList.find('.form-fields').each (i, el) ->
      $(el).find('.resource-position-field').val(i)

  initializeCocoon: ->
    @$fieldsList.on 'cocoon:after-insert', $.proxy(@afterInsertField, this)

  afterInsertField: (e, $element) ->
    if ($collapsible = $element.find('[data-open-on-insert="true"]')).length
      @openInsertedField($collapsible)

    if @orderable
      @$fieldsList.sortable('destroy')
      @initializeOrderable()

    if ($redactor = $element.find('[data-redactor]')).length
      $redactor.simpleFormRedactor()

    if ($selectize = $element.find('[data-selectize]'))
      $selectize.simpleFormSelectize()

    if ($slider = $element.find('[data-slider]'))
      $slider.simpleFormSlider()

  openInsertedField: ($field) ->
    $target = $($field.attr('href'))
    $target.collapse('show')

  collapseShown: (e) ->
    $target = $(e.target)
    $field = @$field.find("[data-toggle='collapse'][href='##{ $target.attr('id') }']")
    scrollOffset = -($('[data-header]').outerHeight() + 20)
    $.scrollTo($field, 200, offset: scrollOffset)
    $target.find('input, textarea, select').eq('0').focus()


$(document).on 'page:change', ->
  $('.nested-many-field').each (i, el) -> new Para.NestedManyField($(el))

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
para-0.5.1 app/assets/javascripts/para/inputs/nested_many.coffee
para-0.5.0 app/assets/javascripts/para/inputs/nested_many.coffee
para-0.4.0 app/assets/javascripts/para/inputs/nested_many.coffee