alertify-rails 0.0.1
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.
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +29 -0
- data/Rakefile +1 -0
- data/alertify-rails.gemspec +19 -0
- data/lib/alertify-rails.rb +7 -0
- data/lib/alertify/engine.rb +5 -0
- data/lib/alertify/railtie.rb +12 -0
- data/lib/alertify/version.rb +7 -0
- data/vendor/assets/javascripts/alertify.js +393 -0
- data/vendor/assets/stylesheets/alertify.css +155 -0
- metadata +56 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2012 Rudolf Schmidt
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# Alertify::Rails
|
2
|
+
|
3
|
+
TODO: Write a gem description
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'alertify-rails'
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install alertify-rails
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
TODO: Write usage instructions here
|
22
|
+
|
23
|
+
## Contributing
|
24
|
+
|
25
|
+
1. Fork it
|
26
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
27
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
28
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
29
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'alertify/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |gem|
|
7
|
+
gem.name = "alertify-rails"
|
8
|
+
gem.version = Alertify::Rails::VERSION
|
9
|
+
gem.authors = ["Rudolf Schmidt"]
|
10
|
+
|
11
|
+
gem.description = %q{Use Alertify.js with Rails 3}
|
12
|
+
gem.summary = %q{This gem provides the Alertify.js deiver for Rails 3 applications}
|
13
|
+
gem.homepage = ""
|
14
|
+
|
15
|
+
gem.files = `git ls-files`.split($/)
|
16
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
17
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
|
+
gem.require_paths = ["lib"]
|
19
|
+
end
|
@@ -0,0 +1,393 @@
|
|
1
|
+
/**
|
2
|
+
* Alertify
|
3
|
+
* An unobtrusive customizable JavaScript notification system
|
4
|
+
*
|
5
|
+
* @author Fabien Doiron <fabien.doiron@gmail.com>
|
6
|
+
* @copyright Fabien Doiron 2012
|
7
|
+
* @license The MIT License (MIT) <http://opensource.org/licenses/mit-license.php>
|
8
|
+
* @link http://www.github.com/fabien-d
|
9
|
+
* @module Alertify
|
10
|
+
* @version 0.1a1
|
11
|
+
*/
|
12
|
+
|
13
|
+
;(function( window, undefined ) {
|
14
|
+
|
15
|
+
var
|
16
|
+
// Use the correct document accordingly with window argument (sandbox)
|
17
|
+
document = window.document,
|
18
|
+
|
19
|
+
// The ready event handler and self cleanup method
|
20
|
+
DOMContentLoaded = function() {
|
21
|
+
if ( document.addEventListener ) {
|
22
|
+
document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
|
23
|
+
|
24
|
+
window.alertify = new Alertify();
|
25
|
+
} else if ( document.readyState === "complete" ) {
|
26
|
+
// we're here because readyState === "complete" in oldIE
|
27
|
+
// which is good enough for us to call the dom ready!
|
28
|
+
document.detachEvent( "onreadystatechange", DOMContentLoaded );
|
29
|
+
|
30
|
+
window.alertify = new Alertify();
|
31
|
+
}
|
32
|
+
},
|
33
|
+
|
34
|
+
// sandboxed Alertify
|
35
|
+
Alertify = function () {
|
36
|
+
|
37
|
+
var init, addListeners, bind, unbind, build, close, extend, hide, notify, setup, alert, confirm, log, prompt,
|
38
|
+
$, cover, element, logElement,
|
39
|
+
dialogs = {},
|
40
|
+
delay = 5000,
|
41
|
+
keys = {},
|
42
|
+
labels = {},
|
43
|
+
queue = [],
|
44
|
+
isopen = false;
|
45
|
+
|
46
|
+
keys = {
|
47
|
+
ENTER : 13,
|
48
|
+
ESC : 27
|
49
|
+
};
|
50
|
+
|
51
|
+
labels = {
|
52
|
+
ok : "OK",
|
53
|
+
cancel : "Cancel"
|
54
|
+
};
|
55
|
+
|
56
|
+
dialogs = {
|
57
|
+
buttons : {
|
58
|
+
holder : "<nav class=\"alertify-buttons\">{{buttons}}</nav>",
|
59
|
+
ok : "<a href=\"#\" class=\"alertify-button alertify-button-ok\" id=\"aOK\">{{ok}}</a>",
|
60
|
+
cancel : "<a href=\"#\" class=\"alertify-button alertify-button-cancel\" id=\"aCancel\">{{cancel}}</a>"
|
61
|
+
},
|
62
|
+
input : "<input type=\"text\" class=\"alertify-text\" id=\"aText\">",
|
63
|
+
message : "<p class=\"alertify-message\">{{message}}</p>",
|
64
|
+
log : "<article class=\"alertify-log{{class}}\">{{message}}</article>"
|
65
|
+
};
|
66
|
+
|
67
|
+
/**
|
68
|
+
* Shorthand for document.getElementById()
|
69
|
+
*
|
70
|
+
* @param {String} id A specific element ID
|
71
|
+
|
72
|
+
* @return {Object} HTML element
|
73
|
+
*/
|
74
|
+
$ = function (id) {
|
75
|
+
return document.getElementById(id);
|
76
|
+
};
|
77
|
+
|
78
|
+
/**
|
79
|
+
* Initialize Alertify
|
80
|
+
* Create the 2 main elements
|
81
|
+
*
|
82
|
+
* @return {undefined}
|
83
|
+
*/
|
84
|
+
init = function () {
|
85
|
+
// ensure legacy browsers support html5 tags
|
86
|
+
document.createElement("nav");
|
87
|
+
document.createElement("article");
|
88
|
+
document.createElement("section");
|
89
|
+
// cover
|
90
|
+
cover = document.createElement("div");
|
91
|
+
cover.setAttribute("id", "alertifycover");
|
92
|
+
cover.className = "alertify-cover alertify-hidden";
|
93
|
+
document.body.appendChild(cover);
|
94
|
+
// main element
|
95
|
+
element = document.createElement("section");
|
96
|
+
element.setAttribute("id", "alertify");
|
97
|
+
element.className = "alertify alertify-hidden";
|
98
|
+
document.body.appendChild(element);
|
99
|
+
// main element
|
100
|
+
logElement = document.createElement("section");
|
101
|
+
logElement.setAttribute("id", "alertifylogs");
|
102
|
+
logElement.className = "alertify-logs";
|
103
|
+
document.body.appendChild(logElement);
|
104
|
+
};
|
105
|
+
|
106
|
+
/**
|
107
|
+
* Set the proper button click events
|
108
|
+
*
|
109
|
+
* @param {Function} fn [Optional] Callback function
|
110
|
+
*
|
111
|
+
* @return {undefined}
|
112
|
+
*/
|
113
|
+
addListeners = function (fn) {
|
114
|
+
var btnOK = $("aOK") || undefined,
|
115
|
+
btnCancel = $("aCancel") || undefined,
|
116
|
+
input = $("aText") || undefined,
|
117
|
+
val = "",
|
118
|
+
ok, cancel, common, key;
|
119
|
+
|
120
|
+
// ok event handler
|
121
|
+
ok = function (event) {
|
122
|
+
common(event);
|
123
|
+
if (typeof input !== "undefined") val = input.value;
|
124
|
+
if (typeof fn === "function") fn(true, val);
|
125
|
+
if (typeof event.preventDefault !== "undefined") event.preventDefault();
|
126
|
+
};
|
127
|
+
|
128
|
+
// cancel event handler
|
129
|
+
cancel = function (event) {
|
130
|
+
common(event);
|
131
|
+
if (typeof fn === "function") fn(false);
|
132
|
+
if (typeof event.preventDefault !== "undefined") event.preventDefault();
|
133
|
+
};
|
134
|
+
|
135
|
+
// common event handler (keyup, ok and cancel)
|
136
|
+
common = function (event) {
|
137
|
+
hide();
|
138
|
+
unbind(document.body, "keyup", key);
|
139
|
+
};
|
140
|
+
|
141
|
+
// keyup handler
|
142
|
+
key = function (event) {
|
143
|
+
var keyCode = event.keyCode;
|
144
|
+
if (keyCode === keys.ENTER && typeof btnOK !== "undefined") ok(event);
|
145
|
+
else if (keyCode === keys.ESC && typeof btnCancel !== "undefined") cancel(event);
|
146
|
+
};
|
147
|
+
|
148
|
+
// handle OK click
|
149
|
+
if (typeof btnOK !== "undefined") bind(btnOK, "click", ok);
|
150
|
+
// handle Cancel click
|
151
|
+
if (typeof btnCancel !== "undefined") bind(btnCancel, "click", cancel);
|
152
|
+
|
153
|
+
// clear focus off activeElement element to ensure
|
154
|
+
// the ENTER key triggers the correct behaviour
|
155
|
+
// Firefox has an issue if this isn't done and the current
|
156
|
+
// focus is an anchor
|
157
|
+
document.activeElement.blur();
|
158
|
+
// listen for keys, OK => ENTER, Cancel => ESC
|
159
|
+
bind(document.body, "keyup", key);
|
160
|
+
};
|
161
|
+
|
162
|
+
/**
|
163
|
+
* Bind events to elements
|
164
|
+
*
|
165
|
+
* @param {Object} el HTML Object
|
166
|
+
* @param {Event} event Event to attach to element
|
167
|
+
* @param {Function} fn Callback function
|
168
|
+
*
|
169
|
+
* @return {undefined}
|
170
|
+
*/
|
171
|
+
bind = function (el, event, fn) {
|
172
|
+
if (typeof el.addEventListener === "function") {
|
173
|
+
el.addEventListener(event, fn, false);
|
174
|
+
} else if (el.attachEvent) {
|
175
|
+
el.attachEvent("on" + event, fn);
|
176
|
+
}
|
177
|
+
};
|
178
|
+
|
179
|
+
/**
|
180
|
+
* Unbind events to elements
|
181
|
+
*
|
182
|
+
* @param {Object} el HTML Object
|
183
|
+
* @param {Event} event Event to detach to element
|
184
|
+
* @param {Function} fn Callback function
|
185
|
+
*
|
186
|
+
* @return {undefined}
|
187
|
+
*/
|
188
|
+
unbind = function (el, event, fn) {
|
189
|
+
if (typeof el.removeEventListener === "function") {
|
190
|
+
el.removeEventListener(event, fn, false);
|
191
|
+
} else if (el.detachEvent) {
|
192
|
+
el.detachEvent("on" + event, fn);
|
193
|
+
}
|
194
|
+
};
|
195
|
+
|
196
|
+
/**
|
197
|
+
* Build the proper message box
|
198
|
+
*
|
199
|
+
* @param {Object} item Current object in the queue
|
200
|
+
* @return {String} An HTML string of the message box
|
201
|
+
*/
|
202
|
+
build = function (item) {
|
203
|
+
var html = "",
|
204
|
+
type = item.type,
|
205
|
+
message = item.message;
|
206
|
+
|
207
|
+
html += "<div class=\"alertify-dialog\">";
|
208
|
+
html += "<article class=\"alertify-inner\">";
|
209
|
+
html += dialogs.message.replace("{{message}}", message);
|
210
|
+
|
211
|
+
if (type === "prompt") { html += dialogs.input; }
|
212
|
+
|
213
|
+
html += dialogs.buttons.holder;
|
214
|
+
html += "</article>";
|
215
|
+
html += "</div>";
|
216
|
+
|
217
|
+
switch (type) {
|
218
|
+
case "confirm":
|
219
|
+
case "prompt":
|
220
|
+
html = html.replace("{{buttons}}", dialogs.buttons.cancel + dialogs.buttons.ok);
|
221
|
+
html = html.replace("{{ok}}", labels.ok).replace("{{cancel}}", labels.cancel);
|
222
|
+
break;
|
223
|
+
case "alert":
|
224
|
+
html = html.replace("{{buttons}}", dialogs.buttons.ok);
|
225
|
+
html = html.replace("{{ok}}", labels.ok);
|
226
|
+
break;
|
227
|
+
default:
|
228
|
+
break;
|
229
|
+
}
|
230
|
+
|
231
|
+
element.className = "alertify alertify-show alertify-" + type;
|
232
|
+
cover.className = "alertify-cover";
|
233
|
+
return html;
|
234
|
+
};
|
235
|
+
|
236
|
+
/**
|
237
|
+
* Close the log messages
|
238
|
+
*
|
239
|
+
* @return {undefined}
|
240
|
+
*/
|
241
|
+
close = function () {
|
242
|
+
setTimeout(function () {
|
243
|
+
var child = logElement.childNodes[logElement.childNodes.length - 1];
|
244
|
+
if (typeof child !== "undefined") logElement.removeChild(child);
|
245
|
+
}, delay);
|
246
|
+
};
|
247
|
+
|
248
|
+
/**
|
249
|
+
* Extend the log method to create custom methods
|
250
|
+
*
|
251
|
+
* @param {String} type Custom method name
|
252
|
+
* @return {Function}
|
253
|
+
*/
|
254
|
+
extend = function (type) {
|
255
|
+
return function (message) { log(message, type); };
|
256
|
+
};
|
257
|
+
|
258
|
+
/**
|
259
|
+
* Add new log message
|
260
|
+
* If a type is passed, a class name "alertify-log-{type}" will get added.
|
261
|
+
* This allows for custom look and feel for various types of notifications.
|
262
|
+
*
|
263
|
+
* @param {String} message The message passed from the callee
|
264
|
+
* @param {String} type [Optional] Type of log message
|
265
|
+
*
|
266
|
+
* @return {undefined}
|
267
|
+
*/
|
268
|
+
notify = function (message, type) {
|
269
|
+
var log = document.createElement("article");
|
270
|
+
log.className = "alertify-log" + ((typeof type === "string" && type !== "") ? " alertify-log-" + type : "");
|
271
|
+
log.innerHTML = message;
|
272
|
+
// prepend child
|
273
|
+
logElement.insertBefore(log, logElement.firstChild);
|
274
|
+
// triggers the CSS animation
|
275
|
+
setTimeout(function() { log.className = log.className + " alertify-log-show"; }, 50);
|
276
|
+
close();
|
277
|
+
};
|
278
|
+
|
279
|
+
/**
|
280
|
+
* Hide the dialog and rest to defaults
|
281
|
+
*
|
282
|
+
* @return {undefined}
|
283
|
+
*/
|
284
|
+
hide = function () {
|
285
|
+
// remove reference from queue
|
286
|
+
queue.splice(0,1);
|
287
|
+
// if items remaining in the queue
|
288
|
+
if (queue.length > 0) setup();
|
289
|
+
else {
|
290
|
+
isopen = false;
|
291
|
+
element.className = "alertify alertify-hide alertify-hidden";
|
292
|
+
cover.className = "alertify-cover alertify-hidden";
|
293
|
+
}
|
294
|
+
};
|
295
|
+
|
296
|
+
/**
|
297
|
+
* Initiate all the required pieces for the dialog box
|
298
|
+
*
|
299
|
+
* @return {undefined}
|
300
|
+
*/
|
301
|
+
setup = function () {
|
302
|
+
var item = queue[0];
|
303
|
+
|
304
|
+
isopen = true;
|
305
|
+
element.innerHTML = build(item);
|
306
|
+
addListeners(item.callback);
|
307
|
+
};
|
308
|
+
|
309
|
+
/**
|
310
|
+
* Create an alert dialog box
|
311
|
+
*
|
312
|
+
* @param {String} message The message passed from the callee
|
313
|
+
* @param {Function} fn [Optional] Callback function
|
314
|
+
*
|
315
|
+
* @return {Object}
|
316
|
+
*/
|
317
|
+
alert = function (message, fn) {
|
318
|
+
queue.push({ type: "alert", message: message, callback: fn });
|
319
|
+
if (!isopen) setup();
|
320
|
+
|
321
|
+
return this;
|
322
|
+
};
|
323
|
+
|
324
|
+
/**
|
325
|
+
* Create a confirm dialog box
|
326
|
+
*
|
327
|
+
* @param {String} message The message passed from the callee
|
328
|
+
* @param {Function} fn [Optional] Callback function
|
329
|
+
*
|
330
|
+
* @return {Object}
|
331
|
+
*/
|
332
|
+
confirm = function (message, fn) {
|
333
|
+
queue.push({ type: "confirm", message: message, callback: fn });
|
334
|
+
if (!isopen) setup();
|
335
|
+
|
336
|
+
return this;
|
337
|
+
};
|
338
|
+
|
339
|
+
/**
|
340
|
+
* Show a new log message box
|
341
|
+
*
|
342
|
+
* @param {String} message The message passed from the callee
|
343
|
+
* @param {String} type [Optional] Optional type of log message
|
344
|
+
*
|
345
|
+
* @return {Object}
|
346
|
+
*/
|
347
|
+
log = function (message, type) {
|
348
|
+
notify(message, type);
|
349
|
+
return this;
|
350
|
+
};
|
351
|
+
|
352
|
+
/**
|
353
|
+
* Create a prompt dialog box
|
354
|
+
*
|
355
|
+
* @param {String} message The message passed from the function
|
356
|
+
* @param {Function} fn [Optional] Callback function
|
357
|
+
*
|
358
|
+
* @return {Object}
|
359
|
+
*/
|
360
|
+
prompt = function (message, fn) {
|
361
|
+
queue.push({ type: "prompt", message: message, callback: fn });
|
362
|
+
if (!isopen) setup();
|
363
|
+
|
364
|
+
return this;
|
365
|
+
};
|
366
|
+
|
367
|
+
// Bootstrap
|
368
|
+
init();
|
369
|
+
|
370
|
+
return {
|
371
|
+
alert : alert,
|
372
|
+
confirm : confirm,
|
373
|
+
log : log,
|
374
|
+
prompt : prompt,
|
375
|
+
success : function (message) { log(message, "success"); },
|
376
|
+
error : function (message) { log(message, "error"); },
|
377
|
+
extend : extend,
|
378
|
+
|
379
|
+
labels : labels,
|
380
|
+
delay : delay
|
381
|
+
};
|
382
|
+
};
|
383
|
+
|
384
|
+
/*
|
385
|
+
* Trigger DOMContentLoaded function when DOM is ready
|
386
|
+
*/
|
387
|
+
if (window.addEventListener) { // W3C standard
|
388
|
+
window.addEventListener('load', DOMContentLoaded, false);
|
389
|
+
} else if (window.attachEvent) { // Microsoft
|
390
|
+
window.attachEvent('onload', DOMContentLoaded);
|
391
|
+
};
|
392
|
+
|
393
|
+
})( window );
|
@@ -0,0 +1,155 @@
|
|
1
|
+
.alertify-show,
|
2
|
+
.alertify-log {
|
3
|
+
-webkit-transition: all 500ms cubic-bezier(0.175, 0.885, 0.320, 1); /* older webkit */
|
4
|
+
-webkit-transition: all 500ms cubic-bezier(0.175, 0.885, 0.320, 1.275);
|
5
|
+
-moz-transition: all 500ms cubic-bezier(0.175, 0.885, 0.320, 1.275);
|
6
|
+
-ms-transition: all 500ms cubic-bezier(0.175, 0.885, 0.320, 1.275);
|
7
|
+
-o-transition: all 500ms cubic-bezier(0.175, 0.885, 0.320, 1.275);
|
8
|
+
transition: all 500ms cubic-bezier(0.175, 0.885, 0.320, 1.275); /* easeOutBack */
|
9
|
+
}
|
10
|
+
.alertify-hide {
|
11
|
+
-webkit-transition: all 250ms cubic-bezier(0.600, 0, 0.735, 0.045); /* older webkit */
|
12
|
+
-webkit-transition: all 250ms cubic-bezier(0.600, -0.280, 0.735, 0.045);
|
13
|
+
-moz-transition: all 250ms cubic-bezier(0.600, -0.280, 0.735, 0.045);
|
14
|
+
-ms-transition: all 250ms cubic-bezier(0.600, -0.280, 0.735, 0.045);
|
15
|
+
-o-transition: all 250ms cubic-bezier(0.600, -0.280, 0.735, 0.045);
|
16
|
+
transition: all 250ms cubic-bezier(0.600, -0.280, 0.735, 0.045); /* easeInBack */
|
17
|
+
}
|
18
|
+
.alertify-cover {
|
19
|
+
position: fixed; z-index: 99999;
|
20
|
+
top: 0; right: 0; bottom: 0; left: 0;
|
21
|
+
}
|
22
|
+
.alertify {
|
23
|
+
position: fixed; z-index: 99999;
|
24
|
+
top: 50px; left: 50%;
|
25
|
+
width: 550px;
|
26
|
+
margin-left: -275px;
|
27
|
+
}
|
28
|
+
.alertify-hidden {
|
29
|
+
top: -50px;
|
30
|
+
visibility: hidden;
|
31
|
+
}
|
32
|
+
.alertify-logs {
|
33
|
+
position: fixed;
|
34
|
+
z-index: 5000;
|
35
|
+
bottom: 10px;
|
36
|
+
right: 10px;
|
37
|
+
width: 300px;
|
38
|
+
}
|
39
|
+
.alertify-log {
|
40
|
+
display: block;
|
41
|
+
margin-top: 10px;
|
42
|
+
position: relative;
|
43
|
+
right: -300px;
|
44
|
+
}
|
45
|
+
.alertify-log-show {
|
46
|
+
right: 0;
|
47
|
+
}
|
48
|
+
.alertify-dialog {
|
49
|
+
padding: 25px;
|
50
|
+
}
|
51
|
+
.alertify-inner {
|
52
|
+
text-align: center;
|
53
|
+
}
|
54
|
+
.alertify-text {
|
55
|
+
margin-bottom: 15px;
|
56
|
+
width: 100%;
|
57
|
+
-webkit-box-sizing: border-box;
|
58
|
+
-moz-box-sizing: border-box;
|
59
|
+
box-sizing: border-box;
|
60
|
+
font-size: 100%;
|
61
|
+
}
|
62
|
+
.alertify-buttons {
|
63
|
+
}
|
64
|
+
.alertify-button {
|
65
|
+
display: inline-block;
|
66
|
+
cursor: pointer;
|
67
|
+
margin-left: 5px;
|
68
|
+
}
|
69
|
+
|
70
|
+
@media only screen and (max-width: 680px) {
|
71
|
+
.alertify,
|
72
|
+
.alertify-logs {
|
73
|
+
width: 90%;
|
74
|
+
-webkit-box-sizing: border-box;
|
75
|
+
-moz-box-sizing: border-box;
|
76
|
+
box-sizing: border-box;
|
77
|
+
}
|
78
|
+
.alertify {
|
79
|
+
left: 5%;
|
80
|
+
margin: 0;
|
81
|
+
}
|
82
|
+
}
|
83
|
+
|
84
|
+
/**
|
85
|
+
* Default Look and Feel
|
86
|
+
*/
|
87
|
+
.alertify,
|
88
|
+
.alertify-log {
|
89
|
+
font-family: sans-serif;
|
90
|
+
}
|
91
|
+
.alertify {
|
92
|
+
background: #FFF;
|
93
|
+
border: 10px solid #333; /* browsers that don't support rgba */
|
94
|
+
border: 10px solid rgba(0,0,0,.7);
|
95
|
+
border-radius: 8px;
|
96
|
+
box-shadow: 0 3px 3px rgba(0,0,0,.3);
|
97
|
+
-webkit-background-clip: padding; /* Safari 4? Chrome 6? */
|
98
|
+
-moz-background-clip: padding; /* Firefox 3.6 */
|
99
|
+
background-clip: padding-box; /* Firefox 4, Safari 5, Opera 10, IE 9 */
|
100
|
+
}
|
101
|
+
.alertify-text {
|
102
|
+
border: 1px solid #CCC;
|
103
|
+
padding: 10px;
|
104
|
+
border-radius: 4px;
|
105
|
+
}
|
106
|
+
.alertify-button {
|
107
|
+
border-radius: 4px;
|
108
|
+
color: #FFF;
|
109
|
+
font-weight: bold;
|
110
|
+
padding: 6px 15px;
|
111
|
+
text-decoration: none;
|
112
|
+
text-shadow: 1px 1px 0 rgba(0,0,0,.5);
|
113
|
+
box-shadow: inset 0 1px 0 0 rgba(255,255,255,.5);
|
114
|
+
background-image: -webkit-linear-gradient(top, rgba(255,255,255,.3), rgba(255,255,255,0));
|
115
|
+
background-image: -moz-linear-gradient(top, rgba(255,255,255,.3), rgba(255,255,255,0));
|
116
|
+
background-image: -ms-linear-gradient(top, rgba(255,255,255,.3), rgba(255,255,255,0));
|
117
|
+
background-image: -o-linear-gradient(top, rgba(255,255,255,.3), rgba(255,255,255,0));
|
118
|
+
background-image: linear-gradient(top, rgba(255,255,255,.3), rgba(255,255,255,0));
|
119
|
+
}
|
120
|
+
.alertify-button:hover,
|
121
|
+
.alertify-button:focus {
|
122
|
+
background-image: -webkit-linear-gradient(top, rgba(0,0,0,.1), rgba(0,0,0,0));
|
123
|
+
background-image: -moz-linear-gradient(top, rgba(0,0,0,.1), rgba(0,0,0,0));
|
124
|
+
background-image: -ms-linear-gradient(top, rgba(0,0,0,.1), rgba(0,0,0,0));
|
125
|
+
background-image: -o-linear-gradient(top, rgba(0,0,0,.1), rgba(0,0,0,0));
|
126
|
+
background-image: linear-gradient(top, rgba(0,0,0,.1), rgba(0,0,0,0));
|
127
|
+
}
|
128
|
+
.alertify-button:active {
|
129
|
+
position: relative;
|
130
|
+
top: 1px;
|
131
|
+
}
|
132
|
+
.alertify-button-cancel {
|
133
|
+
background-color: #FE1A00;
|
134
|
+
border: 1px solid #D83526;
|
135
|
+
}
|
136
|
+
.alertify-button-ok {
|
137
|
+
background-color: #5CB811;
|
138
|
+
border: 1px solid #3b7808;
|
139
|
+
}
|
140
|
+
.alertify-log {
|
141
|
+
background: #1F1F1F;
|
142
|
+
background: rgba(0,0,0,.9);
|
143
|
+
padding: 15px;
|
144
|
+
border-radius: 4px;
|
145
|
+
color: #FFF;
|
146
|
+
text-shadow: -1px -1px 0 rgba(0,0,0,.5);
|
147
|
+
}
|
148
|
+
.alertify-log-error {
|
149
|
+
background: #FE1A00;
|
150
|
+
background: rgba(254,26,0,.9);
|
151
|
+
}
|
152
|
+
.alertify-log-success {
|
153
|
+
background: #5CB811;
|
154
|
+
background: rgba(92,184,17,.9);
|
155
|
+
}
|
metadata
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: alertify-rails
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Rudolf Schmidt
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-11-29 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
14
|
+
description: Use Alertify.js with Rails 3
|
15
|
+
email:
|
16
|
+
executables: []
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- .gitignore
|
21
|
+
- Gemfile
|
22
|
+
- LICENSE.txt
|
23
|
+
- README.md
|
24
|
+
- Rakefile
|
25
|
+
- alertify-rails.gemspec
|
26
|
+
- lib/alertify-rails.rb
|
27
|
+
- lib/alertify/engine.rb
|
28
|
+
- lib/alertify/railtie.rb
|
29
|
+
- lib/alertify/version.rb
|
30
|
+
- vendor/assets/javascripts/alertify.js
|
31
|
+
- vendor/assets/stylesheets/alertify.css
|
32
|
+
homepage: ''
|
33
|
+
licenses: []
|
34
|
+
post_install_message:
|
35
|
+
rdoc_options: []
|
36
|
+
require_paths:
|
37
|
+
- lib
|
38
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
45
|
+
none: false
|
46
|
+
requirements:
|
47
|
+
- - ! '>='
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '0'
|
50
|
+
requirements: []
|
51
|
+
rubyforge_project:
|
52
|
+
rubygems_version: 1.8.24
|
53
|
+
signing_key:
|
54
|
+
specification_version: 3
|
55
|
+
summary: This gem provides the Alertify.js deiver for Rails 3 applications
|
56
|
+
test_files: []
|