Sha256: 61275caa8fdffc57fdd832e0d41e0467994b182a2432c66e1e4b848121f1dbcd

Contents?: true

Size: 1.94 KB

Versions: 2

Compression:

Stored size: 1.94 KB

Contents

class Tao.Dialog.Element extends TaoComponent

  @tag 'tao-dialog'

  @attribute 'active', type: 'boolean', observe: true

  @attribute 'modal', 'withCloseButton', 'autoDestroy', 'autoActivate', type: 'boolean'

  @attribute 'closeSelector', default: '.remove-dialog'

  @attribute 'triggerSelector', 'triggerTraversal', 'size'

  _connected: ->
    @triggerEl = if @triggerTraversal && @triggerSelector
      @jq[@triggerTraversal]?(@triggerSelector)
    else if @triggerSelector
      $ @triggerSelector

    @_initSize()
    @_bind()

    if @autoActivate
      @reflow()
      @active = true
    else if @active
      @_activeChanged()

  _disconnected: ->
    @triggerEl?.off ".tao-slide-box-#{@taoId}"
    @off()

  _initSize: ->
    if _.isNumber(size = parseFloat @size)
      @jq.find('.tao-dialog-wrapper').width size

  _bind: ->
    @on 'click', (e) =>
      @active = false if e.target == @

    @on 'click', ".tao-dialog-wrapper > .link-close, #{@closeSelector}", =>
      @active = false

    if @triggerEl && @triggerEl.length > 0
      @triggerEl.on "click.tao-slide-box-#{@taoId}", (e) =>
        @active = true

  _beforeActiveChanged: (active) ->
    if active
      @jq.find('.tao-dialog-content').css
        maxHeight: $(window).height() - 40
      @jq.show()
      @reflow()
    else
      if @jq.is(':visible')
        @one 'transitionend', =>
          if @autoDestroy
            @remove()
          else
            @jq.hide()
    null

  _activeChanged: ->
    if @active
      $('body').addClass('dialog-active')
      @trigger 'tao:show'
    else
      $('body').removeClass('dialog-active')
      @trigger 'tao:hide'

  setContent: (content) ->
    @jq.find('.tao-dialog-content').empty()
      .append content
    @

  remove: ->
    @trigger 'tao:beforeRemove'
    @jq.remove()
    @trigger 'tao:remove'
    @

  beforeCache: ->
    if @autoDestroy
      @remove()
    else
      @jq.hide()
      active = false

TaoComponent.register Tao.Dialog.Element

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
tao_ui-0.2.5 lib/assets/javascripts/tao/ui/dialog/element.coffee
tao_ui-0.2.4 lib/assets/javascripts/tao/ui/dialog/element.coffee