2014-01-03 13:32:13 -05:00
|
|
|
CocoView = require './CocoView'
|
|
|
|
|
|
|
|
module.exports = class ModalView extends CocoView
|
2014-01-23 21:49:29 -05:00
|
|
|
className: "modal fade"
|
2014-01-03 13:32:13 -05:00
|
|
|
closeButton: true
|
|
|
|
closesOnClickOutside: true
|
|
|
|
modalWidthPercent: null
|
|
|
|
|
|
|
|
shortcuts:
|
|
|
|
'esc': 'hide'
|
|
|
|
|
|
|
|
constructor: (options) ->
|
|
|
|
options ?= {}
|
|
|
|
@className = @className.replace " fade", "" if options.instant
|
|
|
|
@closeButton = options.closeButton if options.closeButton?
|
|
|
|
@modalWidthPercent = options.modalWidthPercent if options.modalWidthPercent
|
|
|
|
super options
|
|
|
|
|
|
|
|
getRenderData: (context={}) =>
|
|
|
|
context = super(context)
|
|
|
|
context.closeButton = @closeButton
|
|
|
|
context
|
|
|
|
|
|
|
|
subscriptions:
|
|
|
|
{}
|
|
|
|
|
|
|
|
afterRender: ->
|
|
|
|
super()
|
|
|
|
if @modalWidthPercent
|
|
|
|
@$el.css width: "#{@modalWidthPercent}%", "margin-left": "#{-@modalWidthPercent / 2}%"
|
2014-01-23 21:49:29 -05:00
|
|
|
@$el.on 'hide.bs.modal', =>
|
2014-01-03 13:32:13 -05:00
|
|
|
@onHidden() unless @hidden
|
|
|
|
@hidden = true
|
|
|
|
|
|
|
|
afterInsert: ->
|
|
|
|
super()
|
|
|
|
# This makes sure if you press enter right after opening the players guide,
|
|
|
|
# it doesn't just reopen the modal.
|
|
|
|
$(document.activeElement).blur()
|
|
|
|
|
|
|
|
showLoading: ($el) ->
|
|
|
|
$el = @$el.find('.modal-body') unless $el
|
|
|
|
super($el)
|
|
|
|
|
2014-01-23 21:49:29 -05:00
|
|
|
hide: ->
|
2014-01-03 13:32:13 -05:00
|
|
|
@$el.removeClass('fade').modal "hide"
|
|
|
|
|
2014-01-23 21:49:29 -05:00
|
|
|
onHidden: ->
|