window_rails 1.0.2 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2f331da79c09a9e873bd6ea2c1eb4846c093122b
4
- data.tar.gz: ed0172253b5f8a9a862d1d45ac58cf56602dfa36
3
+ metadata.gz: 3c6f0d1045b9c538f13cfd7e7f08f0aa78bff4ef
4
+ data.tar.gz: 97849f2e5f5509de2c266485d6d5e58eb2d97139
5
5
  SHA512:
6
- metadata.gz: d08753fe8c4eb51ca41e491a53f94bbc04d7569558ae2a4e7b6241758b4fd77ef27360166cd97efb31745f41aa56bc9882f0f99fde835709de7831c8c53c33b0
7
- data.tar.gz: ba14800eb47c170edee74a0610fa6724e182b8d8779e27ae2db1c969ab66f55cf2da8e12abe9288db56bf6527605d60db37d60fab342adb3fe1928e182ce8136
6
+ metadata.gz: 8573ad195c66b5772126615002e0e26b7e761a380f3559a512155373cb91f29c756d06b3789fa36e3a75659dd9cc8663b11c05055c6a8009cbd66a5938badcec
7
+ data.tar.gz: 00205fa5c3b818d6cd926bc7a85ae32580ab9320cb79c5e28a7fdee150ca44cf3cf618802e72dae26f606d7b7b43ca68274cab3d35eef6f1d734d5f436a69e89
@@ -1,3 +1,8 @@
1
+ # v1.0.4
2
+ * Update loader content
3
+ * Re-hook after AJAX requests to auto-enable additions
4
+ * Provide local context to callback on confirmation
5
+
1
6
  # v1.0.2
2
7
  * Support custom callback on confirmation accept
3
8
 
data/README.md CHANGED
@@ -2,11 +2,6 @@
2
2
 
3
3
  Rails helper for easy to use modals via bootstrap.
4
4
 
5
- ## Important note
6
-
7
- As of the 1.0 release, window_rails has been re-implemented
8
- using bootstrap as the core.
9
-
10
5
  ## Requirements
11
6
 
12
7
  * jQuery
@@ -36,28 +31,305 @@ and then update your application manifests:
36
31
 
37
32
  ## Basic usage
38
33
 
39
- ### Show an alert
34
+ The WindowRails library provides a simple interface to Bootstrap
35
+ based modals from Rails views removing the need for writing JavaScript
36
+ for integration. For simplicity of examples, lets assume the views
37
+ defined below are for JS formatted requests:
38
+
39
+ ### Creating a new window
40
+
41
+ Create a new window:
42
+
43
+ ```erb
44
+ <%=
45
+ create_window(
46
+ :name => 'my_window',
47
+ :title => 'My window!',
48
+ :content => 'Important things.'
49
+ )
50
+ %>
51
+ ```
52
+
53
+ Create a small window:
54
+
55
+ ```erb
56
+ <%=
57
+ create_window(
58
+ :name => 'my_window',
59
+ :title => 'My window!',
60
+ :size => 'small',
61
+ :content => 'Important things.'
62
+ )
63
+ %>
64
+ ```
65
+
66
+ Or create a large window:
67
+
68
+ ```erb
69
+ <%=
70
+ create_window(
71
+ :name => 'my_window',
72
+ :title => 'My window!',
73
+ :size => 'large',
74
+ :content => 'Important things.'
75
+ )
76
+ %>
77
+ ```
78
+
79
+ Perhaps the content is located in a partial:
80
+
81
+ ```erb
82
+ <%=
83
+ create_window(
84
+ :name => 'my_window',
85
+ :title => 'My window!',
86
+ :size => 'large',
87
+ :content => render(
88
+ :partial => 'my_partial',
89
+ :locals => {
90
+ :thing1 => @thing1,
91
+ :thing2 => @thing2
92
+ }
93
+ )
94
+ )
95
+ %>
96
+ ```
97
+
98
+ Include a footer on the window:
99
+
100
+ ```erb
101
+ <%=
102
+ create_window(
103
+ :name => 'my_window',
104
+ :title => 'My window!',
105
+ :size => 'large',
106
+ :content => render(
107
+ :partial => 'my_partial',
108
+ :locals => {
109
+ :thing1 => @thing1,
110
+ :thing2 => @thing2
111
+ }
112
+ ),
113
+ :footer => render(
114
+ :partial => 'my_footer_partial'
115
+ )
116
+ )
117
+ %>
118
+ ```
119
+
120
+ ### Close the window
121
+
122
+ Windows are referenced by name. We can close the
123
+ previously defined `my_window`:
124
+
125
+ ```erb
126
+ <%= close_window('my_window') %>
127
+ ```
128
+
129
+ ### Open a closed window
130
+
131
+ Lets open that window back up:
132
+
133
+ ```erb
134
+ <%= open_window('my_window') %>
135
+ ```
136
+
137
+ Or lets open it and change the title and content:
40
138
 
41
139
  ```erb
42
- <%= open_alert_window('This is an alert!') %>
140
+ <%=
141
+ open_window(
142
+ 'my_window',
143
+ :title => 'My Updated Window!',
144
+ :content => 'New content.'
145
+ )
146
+ %>
43
147
  ```
44
148
 
45
- ### Close alert
149
+ There's also options we can set:
150
+
151
+ ```erb
152
+ <%=
153
+ open_window(
154
+ 'my_window',
155
+ :title => 'My Updated Window!',
156
+ :content => 'New content.',
157
+ :esc_close => true,
158
+ :backdrop => true,
159
+ :static_backdrop => true
160
+ )
161
+ %>
162
+ ```
163
+
164
+ ### Alert window
165
+
166
+ #### Open alert window
167
+
168
+ Need to show an alert? Use the alert window:
169
+
170
+ ```erb
171
+ <%= open_alert_window('This is an important alert!') %>
172
+ ```
173
+
174
+ #### Close alert window
175
+
176
+ And to close the important alert:
46
177
 
47
178
  ```erb
48
179
  <%= close_alert_window %>
49
180
  ```
50
181
 
51
- ### Create a new window
182
+ ### Information window
183
+
184
+ #### Open information window
185
+
186
+ Need to show some information:
187
+
188
+ ```erb
189
+ <%= open_info_window('This is some information') %>
190
+ ```
191
+
192
+ Want to provide a title for the informational window:
193
+
194
+ ```erb
195
+ <%=
196
+ open_info_window(
197
+ 'This is some information',
198
+ :title => 'Information!'
199
+ )
200
+ %>
201
+ ```
202
+
203
+ Or automatically close the window after a set number of seconds:
204
+
205
+ ```erb
206
+ <%=
207
+ open_info_window(
208
+ 'This is some information',
209
+ :title => 'Information!',
210
+ :auto_close => 4
211
+ )
212
+ %>
213
+ ```
214
+
215
+ #### Close information window
216
+
217
+ ```erb
218
+ <%= close_info_window %>
219
+ ```
220
+
221
+ ### Confirmation window
222
+
223
+ WindowRails provides a confirmation window to allow user
224
+ acceptance prior to running a task. The task can be provided
225
+ as a remote URL that is requested via AJAX, or a local callback
226
+ function. Upon user confirmation, WindowRails will display a
227
+ loading window while the action is processing and a completion
228
+ window once completed.
229
+
230
+ #### Open a confirmation window
231
+
232
+ Open a confirmation window before making a remote request:
233
+
234
+ ```erb
235
+ <%=
236
+ open_confirm_window(
237
+ 'Do this thing?',
238
+ :url => '/do/thing'
239
+ )
240
+ %>
241
+ ```
242
+
243
+ Specify the HTTP method for the remote call when doing something
244
+ like a deletion:
245
+
246
+ ```erb
247
+ <%=
248
+ open_confirm_window(
249
+ 'Delete this thing?',
250
+ :url => '/delete/thing',
251
+ :ajax => 'delete'
252
+ )
253
+ %>
254
+ ```
255
+
256
+ Set title for the loading window:
257
+
258
+ ```erb
259
+ <%=
260
+ open_confirm_window(
261
+ 'Delete this thing?',
262
+ :url => '/delete/thing',
263
+ :ajax => 'delete',
264
+ :progress => 'Deleting thing'
265
+ )
266
+ %>
267
+ ```
268
+
269
+ Set content for the completion window:
270
+
271
+ ```erb
272
+ <%=
273
+ open_confirm_window(
274
+ 'Delete this thing?',
275
+ :url => '/delete/thing',
276
+ :ajax => 'delete',
277
+ :progress => 'Deleting thing',
278
+ :complete => 'Thing has been deleted!'
279
+ )
280
+ %>
281
+ ```
282
+
283
+ Use a callback instead of making a remote request:
284
+
285
+ ```erb
286
+ <%=
287
+ open_confirm_window(
288
+ 'Delete this thing?',
289
+ :callback => 'my_javascript_callback',
290
+ :progress => 'Deleting thing',
291
+ :complete => 'Thing has been deleted!'
292
+ )
293
+ %>
294
+ ```
295
+
296
+ And the javascript function `my_javascript_callback` will
297
+ be executed.
298
+
299
+ #### Close the confirmation window
300
+
301
+ ```erb
302
+ <%= close_confirm_window %>
303
+ ```
304
+
305
+ #### Confirmation window via link
306
+
307
+ The confirmation window can be generated using information defined within
308
+ a link. Using the rails link helper:
52
309
 
53
310
  ```erb
54
- <%= create_window(:name => 'my-window', :title => 'My Window!', :content => 'Some Content') %>
311
+ <%=
312
+ link_to('Thing', do_thing_path,
313
+ 'class' => 'window-rails',
314
+ 'window-rails-url' => do_thing_path,
315
+ 'window-rails-confirm' => 'Do the thing?',
316
+ 'window-rails-title' => 'Thing Doer',
317
+ 'window-rails-ajax' => 'post'
318
+ )
319
+ %>
55
320
  ```
56
321
 
57
- ### Close window
322
+ Or use a callback:
58
323
 
59
324
  ```erb
60
- <%= close_window('my-window') %>
325
+ <%=
326
+ link_to('Thing', do_thing_path,
327
+ 'class' => 'window-rails',
328
+ 'window-rails-callback' => 'my_javascript_function',
329
+ 'window-rails-confirm' => 'Do the thing?',
330
+ 'window-rails-title' => 'Thing Doer',
331
+ )
332
+ %>
61
333
  ```
62
334
 
63
335
  ## Infos
@@ -207,7 +207,7 @@ window_rails.confirm.execute = function(){
207
207
  } else if(args.url) {
208
208
  document.location = args.url;
209
209
  } else if(args.callback) {
210
- window[args.callback]();
210
+ window[args.callback](args.element);
211
211
  }
212
212
  }
213
213
 
@@ -233,7 +233,7 @@ window_rails.loading.open = function(style, title){
233
233
  if(style == 'progress'){
234
234
  content = '<div class="progress progress-striped active look-busy"><div class="progress-bar progress-bar-info" aria-valuemax="100" aria-valuemin="0" aria-valuenow="5" role="progressbar" style="width: 5%"></div></div>';
235
235
  } else {
236
- content = '<div style="height: 50px" class="' + style + ' csspinner no-overlay standard" />';
236
+ content = '<center><i class="fa fa-spinner fa-4x fa-pulse" /></center>';
237
237
  }
238
238
  window_rails.open_window('loading', {
239
239
  esc_close: false,
@@ -307,9 +307,11 @@ window_rails.initialize_window = function(args){
307
307
  }
308
308
  name = window_rails.namer(args.name);
309
309
  if(args.size == 'large'){
310
- size = 'lg';
310
+ size = 'modal-lg';
311
+ } else if(args.size == 'small'){
312
+ size = 'modal-sm';
311
313
  } else {
312
- size = window_rails.config('default_size', 'sm');
314
+ size = window_rails.config('default_size', '');
313
315
  }
314
316
  if(args.footer){
315
317
  footer = '\
@@ -322,7 +324,7 @@ window_rails.initialize_window = function(args){
322
324
  }
323
325
  $('#window-rails-container').append('\
324
326
  <div id="' + name + '" class="modal fade" role="modal" aria-labelledby="' + name + '" aria-hidden="true">\
325
- <div class="modal-dialog modal-' + size + '">\
327
+ <div class="modal-dialog ' + size + '">\
326
328
  <div class="modal-content">\
327
329
  <div class="modal-header">\
328
330
  <button class="close" type="button" data-dismiss="modal" aria-hidden="true">\
@@ -400,7 +402,7 @@ window_rails.init = function(){
400
402
  <b class="modal-title">Loading...</b>\
401
403
  </div>\
402
404
  <div class="modal-body">\
403
- <div style="height: 50px" class="csspinner no-overlay standard" />\
405
+ <center><i class="fa fa-spinner fa-4x fa-pulse" /></center>\
404
406
  </div>\
405
407
  </div>\
406
408
  </div>\
@@ -424,8 +426,10 @@ window_rails.hooks.open_window = function(){
424
426
  progress: $(this).attr('window-rails-progress'),
425
427
  complete: $(this).attr('window-rails-complete'),
426
428
  error: $(this).attr('window-rails-error'),
427
- callback: $(this).attr('window-rails-callback')
429
+ callback: $(this).attr('window-rails-callback'),
430
+ element: $(this)
428
431
  });
432
+ return false;
429
433
  }
430
434
 
431
435
  /**
@@ -458,4 +462,6 @@ window_rails.hooks.init_links = function(dom_filter){
458
462
  }
459
463
 
460
464
  // Initialize once page has loaded
461
- $(document).ready(window_rails.init);
465
+ $(document).ready(window_rails.init);
466
+ $(document).on('page:load', window_rails.init);
467
+ $(document).ajaxComplete(window_rails.hooks.init);
@@ -1,4 +1,4 @@
1
1
  module WindowRails
2
2
  # Current library version
3
- VERSION = Gem::Version.new('1.0.2')
3
+ VERSION = Gem::Version.new('1.0.4')
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: window_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Roberts
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-14 00:00:00.000000000 Z
11
+ date: 2015-11-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails