social-likes-nojq/gh-pages/tamia/modules/spinner/script.coffee

54 lines
996 B
CoffeeScript

# Tâmia © 2013 Artem Sapegin http://sapegin.me
# Spinner
'use strict'
$ = jQuery
_wrapperClass = 'loader-wrapper'
_shadeSelector = '.loader-shade'
_loaderTmpl = '''
<div class="loader-shade">
<div class="l-center">
<div class="l-center-i">
<div class="spinner spinner_big"></div>
</div>
</div>
</div>
'''
class Loader extends Component
init: ->
@initHtml()
setTimeout((=> @addState('loading')), 0)
destroy: ->
@removeState('loading')
@elem.find(_shadeSelector).afterTransition(=>
@elem.removeClass(_wrapperClass)
@loader.remove()
)
initHtml: ->
@elem.addClass(_wrapperClass)
@loader = $(_loaderTmpl)
@elem.append(@loader)
# Events
tamia.registerEvents(
'loading-start': (elem) ->
container = $(elem)
return if container.data('loader')
container.data('loader', new Loader(elem))
'loading-stop': (elem) ->
container = $(elem)
loader = container.data('loader')
return if not loader
loader.destroy()
container.removeData('loader')
)