rails-alertify 0.2.13 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -3,4 +3,8 @@ source "http://rubygems.org"
3
3
  # Declare your gem's dependencies in alertify-rails.gemspec.
4
4
  # Bundler will treat runtime dependencies like base dependencies, and
5
5
  # development dependencies will be added by default to the :development group.
6
- gemspec
6
+ gemspec
7
+
8
+ group :development do
9
+ gem "rake"
10
+ end
data/README.md CHANGED
@@ -24,7 +24,7 @@ If your manifest is written in CoffeeScript:
24
24
  #= require alertify
25
25
  ```
26
26
 
27
- Last step is to add the <code>core</code> and <code>default</code> stylesheets tou your application if you want to use the default ones.
27
+ Last step is to add the <code>core</code> and <code>default</code> or <code>bootstrap</code> stylesheets tou your application if you want to use the default ones.
28
28
 
29
29
  ```css
30
30
  /*
@@ -34,6 +34,16 @@ Last step is to add the <code>core</code> and <code>default</code> stylesheets t
34
34
  */
35
35
  ```
36
36
 
37
+ If you want to use the bootstrap theme instead:
38
+
39
+ ```css
40
+ /*
41
+ *= require alertify/core
42
+ *= require alertify/bootstrap
43
+ *
44
+ */
45
+ ```
46
+
37
47
  ### About me
38
48
 
39
49
  Senior Developer @ Datenspiel GmbH (Leipzig/Germany)
@@ -1,3 +1,3 @@
1
1
  module AlertifyRails
2
- VERSION = "0.2.13"
2
+ VERSION = "0.3.2"
3
3
  end
@@ -5,9 +5,9 @@
5
5
  * @author Fabien Doiron <fabien.doiron@gmail.com>
6
6
  * @copyright Fabien Doiron 2012
7
7
  * @license MIT <http://opensource.org/licenses/mit-license.php>
8
- * @link http://www.github.com/fabien-d
8
+ * @link http://fabien-d.github.com/alertify.js/
9
9
  * @module alertify
10
- * @version 0.2.12
10
+ * @version 0.3.2
11
11
  */
12
12
 
13
13
  /*global define*/
@@ -24,7 +24,7 @@
24
24
  isopen = false,
25
25
  keys = { ENTER: 13, ESC: 27, SPACE: 32 },
26
26
  queue = [],
27
- $, elCallee, elCover, elDialog, elLog;
27
+ $, elCallee, elCover, elDialog, elLog, getTransitionEvent;
28
28
 
29
29
  /**
30
30
  * Markup pieces
@@ -37,11 +37,31 @@
37
37
  ok : "<a href=\"#\" class=\"alertify-button alertify-button-ok\" id=\"alertify-ok\">{{ok}}</a>",
38
38
  cancel : "<a href=\"#\" class=\"alertify-button alertify-button-cancel\" id=\"alertify-cancel\">{{cancel}}</a>"
39
39
  },
40
- input : "<input type=\"text\" class=\"alertify-text\" id=\"alertify-text\">",
40
+ input : "<div class=\"alertify-text-wrapper\"><input type=\"text\" class=\"alertify-text\" id=\"alertify-text\"></div>",
41
41
  message : "<p class=\"alertify-message\">{{message}}</p>",
42
42
  log : "<article class=\"alertify-log{{class}}\">{{message}}</article>"
43
43
  };
44
44
 
45
+ /**
46
+ * Return the proper transitionend event
47
+ * @return {String} Transition type string
48
+ */
49
+ getTransitionEvent = function () {
50
+ var t,
51
+ el = document.createElement("fakeelement"),
52
+ transitions = {
53
+ "transition" : "transitionend",
54
+ "OTransition" : "otransitionend",
55
+ "MSTransition" : "msTransitionEnd",
56
+ "MozTransition" : "transitionend",
57
+ "WebkitTransition" : "webkitTransitionEnd"
58
+ };
59
+
60
+ for (t in transitions) {
61
+ if (el.style[t] !== undefined) return transitions[t];
62
+ }
63
+ };
64
+
45
65
  /**
46
66
  * Shorthand for document.getElementById()
47
67
  *
@@ -73,6 +93,18 @@
73
93
  */
74
94
  delay : 5000,
75
95
 
96
+ /**
97
+ * Whether buttons are reversed (default is secondary/primary)
98
+ * @type {Boolean}
99
+ */
100
+ buttonReverse : false,
101
+
102
+ /**
103
+ * Set the transition event on load
104
+ * @type {[type]}
105
+ */
106
+ transition : undefined,
107
+
76
108
  /**
77
109
  * Set the proper button click events
78
110
  *
@@ -172,6 +204,18 @@
172
204
  }
173
205
  },
174
206
 
207
+ /**
208
+ * Append button HTML strings
209
+ *
210
+ * @param {String} secondary The secondary button HTML string
211
+ * @param {String} primary The primary button HTML string
212
+ *
213
+ * @return {String} The appended button HTML strings
214
+ */
215
+ appendButtons : function (secondary, primary) {
216
+ return this.buttonReverse ? primary + secondary : secondary + primary;
217
+ },
218
+
175
219
  /**
176
220
  * Build the proper message box
177
221
  *
@@ -182,7 +226,8 @@
182
226
  build : function (item) {
183
227
  var html = "",
184
228
  type = item.type,
185
- message = item.message;
229
+ message = item.message,
230
+ css = item.cssClass || "";
186
231
 
187
232
  html += "<div class=\"alertify-dialog\">";
188
233
 
@@ -203,11 +248,11 @@
203
248
 
204
249
  switch (type) {
205
250
  case "confirm":
206
- html = html.replace("{{buttons}}", dialogs.buttons.cancel + dialogs.buttons.ok);
251
+ html = html.replace("{{buttons}}", this.appendButtons(dialogs.buttons.cancel, dialogs.buttons.ok));
207
252
  html = html.replace("{{ok}}", this.labels.ok).replace("{{cancel}}", this.labels.cancel);
208
253
  break;
209
254
  case "prompt":
210
- html = html.replace("{{buttons}}", dialogs.buttons.cancel + dialogs.buttons.submit);
255
+ html = html.replace("{{buttons}}", this.appendButtons(dialogs.buttons.cancel, dialogs.buttons.submit));
211
256
  html = html.replace("{{ok}}", this.labels.ok).replace("{{cancel}}", this.labels.cancel);
212
257
  break;
213
258
  case "alert":
@@ -218,7 +263,7 @@
218
263
  break;
219
264
  }
220
265
 
221
- elDialog.className = "alertify alertify-show alertify-" + type;
266
+ elDialog.className = "alertify alertify-show alertify-" + type + " " + css;
222
267
  elCover.className = "alertify-cover";
223
268
  return html;
224
269
  },
@@ -227,17 +272,42 @@
227
272
  * Close the log messages
228
273
  *
229
274
  * @param {Object} elem HTML Element of log message to close
230
- * @param {Number} wait [optional] Time (in ms) to wait before automatically hiding the message
275
+ * @param {Number} wait [optional] Time (in ms) to wait before automatically hiding the message, if 0 never hide
231
276
  *
232
277
  * @return {undefined}
233
278
  */
234
279
  close : function (elem, wait) {
235
- var timer = (wait && !isNaN(wait)) ? +wait : this.delay; // Unary Plus: +"2" === 2
280
+ // Unary Plus: +"2" === 2
281
+ var timer = (wait && !isNaN(wait)) ? +wait : this.delay,
282
+ self = this,
283
+ removeElement;
284
+
236
285
  this.bind(elem, "click", function () {
237
286
  elLog.removeChild(elem);
238
287
  });
288
+
289
+ // Remove element after transition is done
290
+ removeElement = function (event) {
291
+ event.stopPropagation();
292
+ // transitionend event gets fired for every property
293
+ // this ensures it only tries to remove the element once
294
+ if (event.propertyName === "opacity") elLog.removeChild(this);
295
+ };
296
+
297
+ // never close (until click) if wait is set to 0
298
+ if (wait === 0) return;
299
+
239
300
  setTimeout(function () {
240
- if (typeof elem !== "undefined" && elem.parentNode === elLog) elLog.removeChild(elem);
301
+ // ensure element exists
302
+ if (typeof elem !== "undefined" && elem.parentNode === elLog) {
303
+ // whether CSS transition exists
304
+ if (typeof self.transition !== "undefined") {
305
+ self.bind(elem, self.transition, removeElement);
306
+ elem.className += " alertify-log-hide";
307
+ } else {
308
+ elLog.removeChild(elem);
309
+ }
310
+ }
241
311
  }, timer);
242
312
  },
243
313
 
@@ -248,10 +318,11 @@
248
318
  * @param {String} type Type of dialog to create
249
319
  * @param {Function} fn [Optional] Callback function
250
320
  * @param {String} placeholder [Optional] Default value for prompt input field
321
+ * @param {String} cssClass [Optional] Class(es) to append to dialog box
251
322
  *
252
323
  * @return {Object}
253
324
  */
254
- dialog : function (message, type, fn, placeholder) {
325
+ dialog : function (message, type, fn, placeholder, cssClass) {
255
326
  // set the current active element
256
327
  // this allows the keyboard focus to be resetted
257
328
  // after the dialog box is closed
@@ -272,7 +343,7 @@
272
343
  check();
273
344
  }
274
345
 
275
- queue.push({ type: type, message: message, callback: fn, placeholder: placeholder });
346
+ queue.push({ type: type, message: message, callback: fn, placeholder: placeholder, cssClass: cssClass });
276
347
  if (!isopen) this.setup();
277
348
 
278
349
  return this;
@@ -286,7 +357,11 @@
286
357
  * @return {Function}
287
358
  */
288
359
  extend : function (type) {
289
- return function (message, wait) { this.log(message, type, wait); };
360
+ if (typeof type !== "string") throw new Error("extend method must have exactly one paramter");
361
+ return function (message, wait) {
362
+ this.log(message, type, wait);
363
+ return this;
364
+ };
290
365
  },
291
366
 
292
367
  /**
@@ -339,6 +414,8 @@
339
414
  // this allows script to give it focus
340
415
  // after the dialog is closed
341
416
  document.body.setAttribute("tabindex", "0");
417
+ // set transition type
418
+ this.transition = getTransitionEvent();
342
419
  // clean up init method
343
420
  delete this.init;
344
421
  },
@@ -419,7 +496,7 @@
419
496
 
420
497
  isopen = true;
421
498
  elDialog.innerHTML = this.build(item);
422
- if (typeof item.placeholder === "string") $("alertify-text").value = item.placeholder;
499
+ if (typeof item.placeholder === "string" && item.placeholder !== "") $("alertify-text").value = item.placeholder;
423
500
  this.addListeners(item.callback);
424
501
  },
425
502
 
@@ -442,12 +519,12 @@
442
519
  };
443
520
 
444
521
  return {
445
- alert : function (message, fn) { _alertify.dialog(message, "alert", fn); return this; },
446
- confirm : function (message, fn) { _alertify.dialog(message, "confirm", fn); return this; },
522
+ alert : function (message, fn, cssClass) { _alertify.dialog(message, "alert", fn, "", cssClass); return this; },
523
+ confirm : function (message, fn, cssClass) { _alertify.dialog(message, "confirm", fn, "", cssClass); return this; },
447
524
  extend : _alertify.extend,
448
525
  init : _alertify.init,
449
526
  log : function (message, type, wait) { _alertify.log(message, type, wait); return this; },
450
- prompt : function (message, fn, placeholder) { _alertify.dialog(message, "prompt", fn, placeholder); return this; },
527
+ prompt : function (message, fn, placeholder, cssClass) { _alertify.dialog(message, "prompt", fn, placeholder, cssClass); return this; },
451
528
  success : function (message, wait) { _alertify.log(message, "success", wait); return this; },
452
529
  error : function (message, wait) { _alertify.log(message, "error", wait); return this; },
453
530
  set : function (args) { _alertify.set(args); },
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Twitter Bootstrap Look and Feel
3
+ * Based on http://twitter.github.com/bootstrap/
4
+ */
5
+ .alertify,
6
+ .alertify-log {
7
+ font-family: sans-serif;
8
+ }
9
+ .alertify {
10
+ background: #FFF;
11
+ border: 1px solid #8E8E8E; /* browsers that don't support rgba */
12
+ border: 1px solid rgba(0,0,0,.3);
13
+ border-radius: 6px;
14
+ box-shadow: 0 3px 7px rgba(0,0,0,.3);
15
+ -webkit-background-clip: padding; /* Safari 4? Chrome 6? */
16
+ -moz-background-clip: padding; /* Firefox 3.6 */
17
+ background-clip: padding-box; /* Firefox 4, Safari 5, Opera 10, IE 9 */
18
+ }
19
+ .alertify-dialog {
20
+ padding: 0;
21
+ }
22
+ .alertify-inner {
23
+ text-align: left;
24
+ }
25
+ .alertify-message {
26
+ padding: 15px;
27
+ margin: 0;
28
+ }
29
+ .alertify-text-wrapper {
30
+ padding: 0 15px;
31
+ }
32
+ .alertify-text {
33
+ color: #555;
34
+ border-radius: 4px;
35
+ padding: 8px;
36
+ background-color: #FFF;
37
+ border: 1px solid #CCC;
38
+ box-shadow: inset 0 1px 1px rgba(0,0,0,.075);
39
+ }
40
+ .alertify-text:focus {
41
+ border-color: rgba(82,168,236,.8);
42
+ outline: 0;
43
+ box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
44
+ }
45
+
46
+ .alertify-buttons {
47
+ padding: 14px 15px 15px;
48
+ background: #F5F5F5;
49
+ border-top: 1px solid #DDD;
50
+ border-radius: 0 0 6px 6px;
51
+ box-shadow: inset 0 1px 0 #FFF;
52
+ text-align: right;
53
+ }
54
+ .alertify-button {
55
+ margin-left: 10px;
56
+ border-radius: 4px;
57
+ font-weight: normal;
58
+ padding: 4px 12px;
59
+ text-decoration: none;
60
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, .2), 0 1px 2px rgba(0, 0, 0, .05);
61
+ background-image: -webkit-linear-gradient(top, rgba(255,255,255,.3), rgba(255,255,255,0));
62
+ background-image: -moz-linear-gradient(top, rgba(255,255,255,.3), rgba(255,255,255,0));
63
+ background-image: -ms-linear-gradient(top, rgba(255,255,255,.3), rgba(255,255,255,0));
64
+ background-image: -o-linear-gradient(top, rgba(255,255,255,.3), rgba(255,255,255,0));
65
+ background-image: linear-gradient(top, rgba(255,255,255,.3), rgba(255,255,255,0));
66
+ }
67
+ .alertify-button:focus {
68
+ outline: none;
69
+ box-shadow: 0 0 5px #2B72D5;
70
+ }
71
+ .alertify-button:active {
72
+ position: relative;
73
+ box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05);
74
+ }
75
+ .alertify-button-cancel {
76
+ text-shadow: 0 -1px 0 rgba(255,255,255,.75);
77
+ background-color: #E6E6E6;
78
+ border: 1px solid #BBB;
79
+ color: #333;
80
+ background-image: -webkit-linear-gradient(top, #FFF, #E6E6E6);
81
+ background-image: -moz-linear-gradient(top, #FFF, #E6E6E6);
82
+ background-image: -ms-linear-gradient(top, #FFF, #E6E6E6);
83
+ background-image: -o-linear-gradient(top, #FFF, #E6E6E6);
84
+ background-image: linear-gradient(top, #FFF, #E6E6E6);
85
+ }
86
+ .alertify-button-cancel:hover {
87
+ background: #E6E6E6;
88
+ }
89
+ .alertify-button-ok {
90
+ text-shadow: 0 -1px 0 rgba(0,0,0,.25);
91
+ background-color: #04C;
92
+ border: 1px solid #04C;
93
+ border-color: #04C #04C #002A80;
94
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
95
+ color: #FFF;
96
+ }
97
+ .alertify-button-ok:hover {
98
+ background: #04C;
99
+ }
100
+
101
+ .alertify-log {
102
+ background: #D9EDF7;
103
+ padding: 8px 14px;
104
+ border-radius: 4px;
105
+ color: #3A8ABF;
106
+ text-shadow: 0 1px 0 rgba(255,255,255,.5);
107
+ border: 1px solid #BCE8F1;
108
+ }
109
+ .alertify-log-error {
110
+ color: #B94A48;
111
+ background: #F2DEDE;
112
+ border: 1px solid #EED3D7;
113
+ }
114
+ .alertify-log-success {
115
+ color: #468847;
116
+ background: #DFF0D8;
117
+ border: 1px solid #D6E9C6;
118
+ }
@@ -15,6 +15,14 @@
15
15
  -o-transition: all 250ms cubic-bezier(0.600, -0.280, 0.735, 0.045);
16
16
  transition: all 250ms cubic-bezier(0.600, -0.280, 0.735, 0.045); /* easeInBack */
17
17
  }
18
+ .alertify-log-hide {
19
+ -webkit-transition: all 500ms cubic-bezier(0.600, 0, 0.735, 0.045); /* older webkit */
20
+ -webkit-transition: all 500ms cubic-bezier(0.600, -0.280, 0.735, 0.045);
21
+ -moz-transition: all 500ms cubic-bezier(0.600, -0.280, 0.735, 0.045);
22
+ -ms-transition: all 500ms cubic-bezier(0.600, -0.280, 0.735, 0.045);
23
+ -o-transition: all 500ms cubic-bezier(0.600, -0.280, 0.735, 0.045);
24
+ transition: all 500ms cubic-bezier(0.600, -0.280, 0.735, 0.045); /* easeInBack */
25
+ }
18
26
  .alertify-cover {
19
27
  position: fixed; z-index: 99999;
20
28
  top: 0; right: 0; bottom: 0; left: 0;
@@ -26,7 +34,11 @@
26
34
  margin-left: -275px;
27
35
  }
28
36
  .alertify-hidden {
29
- top: -50px;
37
+ -webkit-transform: translate(0,-150px);
38
+ -moz-transform: translate(0,-150px);
39
+ -ms-transform: translate(0,-150px);
40
+ -o-transform: translate(0,-150px);
41
+ transform: translate(0,-150px);
30
42
  visibility: hidden;
31
43
  }
32
44
  .alertify-logs {
@@ -41,9 +53,19 @@
41
53
  margin-top: 10px;
42
54
  position: relative;
43
55
  right: -300px;
56
+ opacity: 0;
44
57
  }
45
58
  .alertify-log-show {
46
59
  right: 0;
60
+ opacity: 1;
61
+ }
62
+ .alertify-log-hide {
63
+ -webkit-transform: translate(300px, 0);
64
+ -moz-transform: translate(300px, 0);
65
+ -ms-transform: translate(300px, 0);
66
+ -o-transform: translate(300px, 0);
67
+ transform: translate(300px, 0);
68
+ opacity: 0;
47
69
  }
48
70
  .alertify-dialog {
49
71
  padding: 25px;
@@ -15,47 +15,48 @@
15
15
  -moz-background-clip: padding; /* Firefox 3.6 */
16
16
  background-clip: padding-box; /* Firefox 4, Safari 5, Opera 10, IE 9 */
17
17
  }
18
- .alertify-text {
19
- border: 1px solid #CCC;
20
- padding: 10px;
21
- border-radius: 4px;
22
- }
23
- .alertify-button {
24
- border-radius: 4px;
25
- color: #FFF;
26
- font-weight: bold;
27
- padding: 6px 15px;
28
- text-decoration: none;
29
- text-shadow: 1px 1px 0 rgba(0,0,0,.5);
30
- box-shadow: inset 0 1px 0 0 rgba(255,255,255,.5);
31
- background-image: -webkit-linear-gradient(top, rgba(255,255,255,.3), rgba(255,255,255,0));
32
- background-image: -moz-linear-gradient(top, rgba(255,255,255,.3), rgba(255,255,255,0));
33
- background-image: -ms-linear-gradient(top, rgba(255,255,255,.3), rgba(255,255,255,0));
34
- background-image: -o-linear-gradient(top, rgba(255,255,255,.3), rgba(255,255,255,0));
35
- background-image: linear-gradient(top, rgba(255,255,255,.3), rgba(255,255,255,0));
36
- }
37
- .alertify-button:hover,
38
- .alertify-button:focus {
39
- outline: none;
40
- box-shadow: 0 0 15px #2B72D5;
41
- background-image: -webkit-linear-gradient(top, rgba(0,0,0,.1), rgba(0,0,0,0));
42
- background-image: -moz-linear-gradient(top, rgba(0,0,0,.1), rgba(0,0,0,0));
43
- background-image: -ms-linear-gradient(top, rgba(0,0,0,.1), rgba(0,0,0,0));
44
- background-image: -o-linear-gradient(top, rgba(0,0,0,.1), rgba(0,0,0,0));
45
- background-image: linear-gradient(top, rgba(0,0,0,.1), rgba(0,0,0,0));
46
- }
47
- .alertify-button:active {
48
- position: relative;
49
- top: 1px;
50
- }
51
- .alertify-button-cancel {
52
- background-color: #FE1A00;
53
- border: 1px solid #D83526;
18
+ .alertify-text {
19
+ border: 1px solid #CCC;
20
+ padding: 10px;
21
+ border-radius: 4px;
22
+ }
23
+ .alertify-button {
24
+ border-radius: 4px;
25
+ color: #FFF;
26
+ font-weight: bold;
27
+ padding: 6px 15px;
28
+ text-decoration: none;
29
+ text-shadow: 1px 1px 0 rgba(0,0,0,.5);
30
+ box-shadow: inset 0 1px 0 0 rgba(255,255,255,.5);
31
+ background-image: -webkit-linear-gradient(top, rgba(255,255,255,.3), rgba(255,255,255,0));
32
+ background-image: -moz-linear-gradient(top, rgba(255,255,255,.3), rgba(255,255,255,0));
33
+ background-image: -ms-linear-gradient(top, rgba(255,255,255,.3), rgba(255,255,255,0));
34
+ background-image: -o-linear-gradient(top, rgba(255,255,255,.3), rgba(255,255,255,0));
35
+ background-image: linear-gradient(top, rgba(255,255,255,.3), rgba(255,255,255,0));
36
+ }
37
+ .alertify-button:hover,
38
+ .alertify-button:focus {
39
+ outline: none;
40
+ box-shadow: 0 0 15px #2B72D5;
41
+ background-image: -webkit-linear-gradient(top, rgba(0,0,0,.1), rgba(0,0,0,0));
42
+ background-image: -moz-linear-gradient(top, rgba(0,0,0,.1), rgba(0,0,0,0));
43
+ background-image: -ms-linear-gradient(top, rgba(0,0,0,.1), rgba(0,0,0,0));
44
+ background-image: -o-linear-gradient(top, rgba(0,0,0,.1), rgba(0,0,0,0));
45
+ background-image: linear-gradient(top, rgba(0,0,0,.1), rgba(0,0,0,0));
54
46
  }
55
- .alertify-button-ok {
56
- background-color: #5CB811;
57
- border: 1px solid #3B7808;
47
+ .alertify-button:active {
48
+ position: relative;
49
+ top: 1px;
58
50
  }
51
+ .alertify-button-cancel {
52
+ background-color: #FE1A00;
53
+ border: 1px solid #D83526;
54
+ }
55
+ .alertify-button-ok {
56
+ background-color: #5CB811;
57
+ border: 1px solid #3B7808;
58
+ }
59
+
59
60
  .alertify-log {
60
61
  background: #1F1F1F;
61
62
  background: rgba(0,0,0,.9);
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-alertify
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.13
4
+ version: 0.3.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-12 00:00:00.000000000 Z
12
+ date: 2013-01-09 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description:
15
15
  email:
@@ -27,6 +27,7 @@ files:
27
27
  - lib/rails-alertify/version.rb
28
28
  - rails-alertify.gemspec
29
29
  - vendor/assets/javascripts/alertify.js
30
+ - vendor/assets/stylesheets/alertify/bootstrap.css
30
31
  - vendor/assets/stylesheets/alertify/core.css
31
32
  - vendor/assets/stylesheets/alertify/default.css
32
33
  homepage: https://github.com/dsci/rails-alertify
@@ -41,12 +42,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
41
42
  - - ! '>='
42
43
  - !ruby/object:Gem::Version
43
44
  version: '0'
45
+ segments:
46
+ - 0
47
+ hash: -1108957417410191220
44
48
  required_rubygems_version: !ruby/object:Gem::Requirement
45
49
  none: false
46
50
  requirements:
47
51
  - - ! '>='
48
52
  - !ruby/object:Gem::Version
49
53
  version: '0'
54
+ segments:
55
+ - 0
56
+ hash: -1108957417410191220
50
57
  requirements: []
51
58
  rubyforge_project:
52
59
  rubygems_version: 1.8.24