Sha256: e42a51380813a2c971c2826ff4bf3dbff4ade825aa6c46a1195226bc889d04ce

Contents?: true

Size: 1.44 KB

Versions: 32

Compression:

Stored size: 1.44 KB

Contents

###*
Toast alerts
============

@class up.toast
###
up.toast = (($) ->

  u = up.util
  b = up.browser

  VARIABLE_FORMATTER = (arg) -> "<span class='up-toast-variable'>#{u.escapeHtml(arg)}</span>"

  state = u.config
    $toast: null

  reset = ->
    close()
    state.reset()

  messageToHtml = (message) ->
    if u.isArray(message)
      message[0] = u.escapeHtml(message[0])
      message = b.sprintfWithFormattedArgs(VARIABLE_FORMATTER, message...)
    else
      message = u.escapeHtml(message)
    message

  isOpen = ->
    !!state.$toast
    
  addAction = ($actions, label, callback) ->
    $action = $('<span class="up-toast-action"></span>').text(label)
    $action.on 'click', callback
    $action.appendTo($actions)
  
  open = (message, options = {}) ->
    close()
    $toast = $('<div class="up-toast"></div>').prependTo('body')
    $message = $('<div class="up-toast-message"></div>').appendTo($toast)
    $actions = $('<div class="up-toast-actions"></div>').appendTo($toast)

    message = messageToHtml(message)
    $message.html(message)

    if action = (options.action || options.inspect)
      addAction($actions, action.label, action.callback)

    addAction($actions, 'Close', close)

    state.$toast = $toast

  close = ->
    if isOpen()
      state.$toast.remove()
      state.$toast = null

  # The framework is reset between tests
  up.on 'up:framework:reset', reset

  open: open
  close: close
  reset: reset
  isOpen: isOpen

)(jQuery)

Version data entries

32 entries across 32 versions & 1 rubygems

Version Path
unpoly-rails-0.54.0 lib/assets/javascripts/unpoly/toast.coffee
unpoly-rails-0.53.4 lib/assets/javascripts/unpoly/toast.coffee
unpoly-rails-0.53.3 lib/assets/javascripts/unpoly/toast.coffee
unpoly-rails-0.53.2 lib/assets/javascripts/unpoly/toast.coffee
unpoly-rails-0.53.1 lib/assets/javascripts/unpoly/toast.coffee
unpoly-rails-0.53.0 lib/assets/javascripts/unpoly/toast.coffee
unpoly-rails-0.52.0 lib/assets/javascripts/unpoly/toast.coffee
unpoly-rails-0.51.1 lib/assets/javascripts/unpoly/toast.coffee
unpoly-rails-0.51.0 lib/assets/javascripts/unpoly/toast.coffee
unpoly-rails-0.50.2 lib/assets/javascripts/unpoly/toast.coffee
unpoly-rails-0.50.1 lib/assets/javascripts/unpoly/toast.coffee
unpoly-rails-0.50.0 lib/assets/javascripts/unpoly/toast.coffee
unpoly-rails-0.37.0 lib/assets/javascripts/unpoly/toast.coffee
unpoly-rails-0.36.2 lib/assets/javascripts/unpoly/toast.coffee
unpoly-rails-0.36.1 lib/assets/javascripts/unpoly/toast.coffee
unpoly-rails-0.36.0 lib/assets/javascripts/unpoly/toast.coffee
unpoly-rails-0.35.2 lib/assets/javascripts/unpoly/toast.coffee
unpoly-rails-0.35.1 lib/assets/javascripts/unpoly/toast.coffee
unpoly-rails-0.35.0 lib/assets/javascripts/unpoly/toast.coffee
unpoly-rails-0.34.2 lib/assets/javascripts/unpoly/toast.coffee