11this .basicModal =
22
3- lastFocus : null
3+ _lastFocus : null
4+
5+ _dom : (elem ) ->
6+
7+ if not elem? then return $ (' .basicModal' )
8+ else return $ (' .basicModal' ).find (" #{ elem } " )
49
510 _valid : (data ) ->
611
@@ -41,8 +46,10 @@ this.basicModal =
4146
4247 if data .buttons ? .cancel ?
4348 if data .class .indexOf (' login' ) is - 1
49+ # Default close-button
4450 html += " <a id='basicModal__cancel' class='basicModal__button'>#{ data .buttons .cancel .title } </a>"
4551 else
52+ # Custom close-button for the login-theme
4653 html += " <div id='basicModal__cancel' class='basicModal__button' aria-label='close'><a class='ion-close'></a></div>"
4754
4855 if data .buttons ? .action ?
@@ -59,48 +66,49 @@ this.basicModal =
5966
6067 values = null
6168
62- if $ (' .basicModal input, .basicModal .basicModal__dropdown' ).length isnt 0
69+ if basicModal ._dom (' input' ).length isnt 0 or
70+ basicModal ._dom (' .basicModal__dropdown' ).length isnt 0
6371
64- values = {}
72+ values = {}
6573
66- $ ( ' .basicModal input' ).each ->
67- name = $ (this ).attr (' data-name' )
68- value = $ (this ).val ()
69- values[name] = value
74+ basicModal . _dom ( ' input' ).each ->
75+ name = $ (this ).attr (' data-name' )
76+ value = $ (this ).val ()
77+ values[name] = value
7078
71- $ ( ' .basicModal .basicModal__dropdown' ).each ->
72- name = $ (this ).attr (' data-name' )
73- value = $ (this ).attr (' data-value' )
74- values[name] = value
79+ basicModal . _dom ( ' .basicModal__dropdown' ).each ->
80+ name = $ (this ).attr (' data-name' )
81+ value = $ (this ).attr (' data-value' )
82+ values[name] = value
7583
7684 return values
7785
7886 _bind : (data ) ->
7987
8088 # Bind cancel button
8189 if data .buttons ? .cancel ? .fn ?
82- $ ( ' .basicModal #basicModal__cancel' ).click ->
90+ basicModal . _dom ( ' #basicModal__cancel' ).click ->
8391 return false if $ (this ).hasClass ' basicModal__button--active'
8492 $ (this ).addClass ' basicModal__button--active'
8593 data .buttons .cancel .fn ()
8694
8795 # Bind action button
8896 if data .buttons ? .action ? .fn ?
89- $ ( ' .basicModal #basicModal__action' ).click ->
97+ basicModal . _dom ( ' #basicModal__action' ).click ->
9098 return false if $ (this ).hasClass ' basicModal__button--active'
9199 $ (this ).addClass ' basicModal__button--active'
92100 data .buttons .action .fn basicModal ._getValues ()
93101
94102 # Bind input
95- $ ( ' .basicModal input' ).keydown -> $ (this ).removeClass ' error'
103+ basicModal . _dom ( ' input' ).keydown -> $ (this ).removeClass ' error'
96104
97105 ###
98106 # Bind dropdown
99107 ###
100108
101109 dropdownTimeout = null
102110
103- $ ( ' .basicModal .basicModal__dropdown .front' ).click ->
111+ basicModal . _dom ( ' .basicModal__dropdown .front' ).click ->
104112
105113 dropdown = $ (this ).parent ()
106114
@@ -109,7 +117,7 @@ this.basicModal =
109117 dropdown .find (' .back' ).show ()
110118 dropdown .addClass ' flip'
111119
112- $ ( ' .basicModal .basicModal__dropdown .back ul li[class!="separator"]' ).click ->
120+ basicModal . _dom ( ' .basicModal__dropdown .back ul li[class!="separator"]' ).click ->
113121
114122 dropdown = $ (this ).parent ().parent ().parent ()
115123
@@ -130,10 +138,11 @@ this.basicModal =
130138 return false if not basicModal ._valid data
131139
132140 # Save focused element
133- basicModal .lastFocus = document .activeElement
141+ basicModal ._lastFocus = document .activeElement
134142
135143 # Remove open modal
136- if $ (' .basicModalContainer' ).length isnt 0
144+
145+ if basicModal ._dom ().parent ().length isnt 0
137146 basicModal .close true
138147 setTimeout ->
139148 basicModal .show data
@@ -157,46 +166,46 @@ this.basicModal =
157166 basicModal .reset ()
158167
159168 # Focus input
160- $ ( " .basicModal input[data-name='#{ input } '], .basicModal .basicModal__dropdown[data-name='#{ input } ']" )
169+ basicModal . _dom ( " input[data-name='#{ input } '], .basicModal__dropdown[data-name='#{ input } ']" )
161170 .addClass ' error'
162171 .focus ().select ()
163172
164173 # Shake
165- $ ( ' . basicModal' ).removeClass ' basicModal--fadeIn basicModal--shake'
174+ basicModal . _dom ( ).removeClass ' basicModal--fadeIn basicModal--shake'
166175 setTimeout ->
167- $ ( ' . basicModal' ).addClass ' basicModal--shake'
176+ basicModal . _dom ( ).addClass ' basicModal--shake'
168177 , 1
169178
170179 visible : ->
171180
172- if $ ( ' .basicModalContainer ' ).length is 0 then return false
181+ if basicModal . _dom (). parent ( ).length is 0 then return false
173182 return true
174183
175184 action : ->
176185
177- if $ ( ' .basicModal #basicModal__action' ).length isnt 0
186+ if basicModal . _dom ( ' #basicModal__action' ).length isnt 0
178187
179- $ ( ' .basicModal #basicModal__action' ).click ()
188+ basicModal . _dom ( ' #basicModal__action' ).click ()
180189 return true
181190
182191 return false
183192
184193 cancel : ->
185194
186- if $ ( ' .basicModal #basicModal__cancel' ).length isnt 0
195+ if basicModal . _dom ( ' #basicModal__cancel' ).length isnt 0
187196
188- $ ( ' .basicModal #basicModal__cancel' ).click ()
197+ basicModal . _dom ( ' #basicModal__cancel' ).click ()
189198 return true
190199
191200 return false
192201
193202 reset : ->
194203
195204 # Reactive buttons
196- $ ( ' .basicModal .basicModal__button' ).removeClass ' basicModal__button--active'
205+ basicModal . _dom ( ' .basicModal__button' ).removeClass ' basicModal__button--active'
197206
198207 # Remove old error
199- $ (' .basicModal input, .basicModal .basicModal__dropdown' ).removeClass ' error'
208+ basicModal . _dom (' .input, .basicModal__dropdown' ).removeClass ' error'
200209
201210 return true
202211
@@ -206,21 +215,24 @@ this.basicModal =
206215 Close modal if force is not set or true,
207216 or mouse is not over modal.
208217 ###
218+
219+ container = basicModal ._dom ().parent ()
220+
209221 if not force? or
210222 force is true
211223
212224 # Don't close when not closable
213- return false if $ ( ' .basicModalContainer[ data-closable=true] ' ). length is 0 and force isnt true
225+ return false if container . attr ( ' data-closable' ) isnt ' true ' and force isnt true
214226
215- $ ( ' .basicModalContainer ' ) .removeClass (' basicModalContainer--fadeIn' ).addClass (' basicModalContainer--fadeOut' )
227+ container .removeClass (' basicModalContainer--fadeIn' ).addClass (' basicModalContainer--fadeOut' )
216228 setTimeout ->
217- $ ( ' .basicModalContainer ' ) .remove ()
229+ container .remove ()
218230 , 300
219231
220232 # Restore last active element
221- if basicModal .lastFocus ?
222- basicModal .lastFocus .focus ()
223- basicModal .lastFocus = null
233+ if basicModal ._lastFocus ?
234+ basicModal ._lastFocus .focus ()
235+ basicModal ._lastFocus = null
224236
225237 return true
226238
0 commit comments