-
Notifications
You must be signed in to change notification settings - Fork 3
/
blockuiservice.coffee
97 lines (82 loc) · 2.74 KB
/
blockuiservice.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
'use strict'
angular.module('BlockUI', [])
.provider "$blockUI", ->
defaults =
# messageClass: 'blockui-message' # from user (optional) - styling purposes
# backdropClass: 'blockui-backdrop' # from user (optional) - styling purposes
innerHTML: 'Loading ...' # Overwrite this with your content i.e. <img src="/some/path"/>
blockUIClass: "blockui-blocked" # this class will be appended to the body
# Returns the `$blockUI` service that is injected in controllers
@$get = ["$document", ($document) ->
body = $document.find('body')
createElement = (className) ->
return angular.element("<div>").addClass(className)
BlockUI = (opts) ->
options = @options = angular.extend({}, defaults, opts)
console.log "blockuiservice::constructor() - options:", options
if options.backdropClass?
@backdropEl = createElement(options.backdropClass)
else
backdropCss =
'z-index': 10001
border: 'none'
margin: 0
padding: 0
width: '100%'
height: '100%'
top: 0
leff: 0
'background-color': '#000'
opacity: 0.6
cursor: 'wait'
position: 'fixed'
@backdropEl = angular.element('<div>').css(backdropCss)
if options.messageClass?
@messageEl = createElement(options.messageClass)
else
messageBoxCss =
'z-index': 10002
position: 'fixed'
'text-align': 'center'
width: '30%'
top: '40%'
left: '30%'
border: 'none'
padding: '15px'
backgroundColor: '#000'
'-webkit-border-radius': '10px'
'-moz-border-radius': '10px'
'border-radius': '10px'
opacity: 0.5
color: '#fff'
@messageEl = angular.element('<div>').css(messageBoxCss).html(options.innerHTML)
return
BlockUI::isBlocked = ->
return @_blocked
BlockUI::blockUI = () ->
return unless not @_blocked
self = this
self._addElementsToDom()
body.addClass self.options.blockUIClass
return
BlockUI::unblockUI = () ->
self = this
body.removeClass self.options.blockUIClass
@_removeElementsFromDom()
return
BlockUI::_addElementsToDom = ->
body.append @messageEl
body.append @backdropEl
@_blocked = true
return
BlockUI::_removeElementsFromDom = ->
@messageEl.remove()
@backdropEl.remove()
@_blocked = false
return
return {
createBlockUI: (opts) ->
return new BlockUI(opts)
}
]
return