semantic_ui_rails 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (78) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE +20 -0
  5. data/README.md +4 -0
  6. data/Rakefile +1 -0
  7. data/app/assets/fonts/semantic/icons.eot +0 -0
  8. data/app/assets/fonts/semantic/icons.svg +450 -0
  9. data/app/assets/fonts/semantic/icons.ttf +0 -0
  10. data/app/assets/fonts/semantic/icons.woff +0 -0
  11. data/app/assets/images/semantic/loader-large-inverted.gif +0 -0
  12. data/app/assets/images/semantic/loader-large.gif +0 -0
  13. data/app/assets/images/semantic/loader-medium-inverted.gif +0 -0
  14. data/app/assets/images/semantic/loader-medium.gif +0 -0
  15. data/app/assets/images/semantic/loader-mini-inverted.gif +0 -0
  16. data/app/assets/images/semantic/loader-mini.gif +0 -0
  17. data/app/assets/images/semantic/loader-small-inverted.gif +0 -0
  18. data/app/assets/images/semantic/loader-small.gif +0 -0
  19. data/app/assets/javascript/semantic/accordion.js +411 -0
  20. data/app/assets/javascript/semantic/behavior/api.js +666 -0
  21. data/app/assets/javascript/semantic/behavior/colorize.js +271 -0
  22. data/app/assets/javascript/semantic/behavior/form.js +703 -0
  23. data/app/assets/javascript/semantic/behavior/state.js +752 -0
  24. data/app/assets/javascript/semantic/chatroom.js +766 -0
  25. data/app/assets/javascript/semantic/checkbox.js +348 -0
  26. data/app/assets/javascript/semantic/dimmer.js +524 -0
  27. data/app/assets/javascript/semantic/dropdown.js +707 -0
  28. data/app/assets/javascript/semantic/modal.js +478 -0
  29. data/app/assets/javascript/semantic/nag.js +542 -0
  30. data/app/assets/javascript/semantic/popup.js +721 -0
  31. data/app/assets/javascript/semantic/rating.js +358 -0
  32. data/app/assets/javascript/semantic/search.js +769 -0
  33. data/app/assets/javascript/semantic/shape.js +776 -0
  34. data/app/assets/javascript/semantic/sidebar.js +489 -0
  35. data/app/assets/javascript/semantic/tab.js +674 -0
  36. data/app/assets/javascript/semantic/transition.js +650 -0
  37. data/app/assets/javascript/semantic/video.js +459 -0
  38. data/app/assets/stylesheets/semantic/accordion.css +97 -0
  39. data/app/assets/stylesheets/semantic/breadcrumb.css +66 -0
  40. data/app/assets/stylesheets/semantic/button.css +993 -0
  41. data/app/assets/stylesheets/semantic/chatroom.css +242 -0
  42. data/app/assets/stylesheets/semantic/checkbox.css +300 -0
  43. data/app/assets/stylesheets/semantic/comment.css +178 -0
  44. data/app/assets/stylesheets/semantic/dimmer.css +185 -0
  45. data/app/assets/stylesheets/semantic/divider.css +155 -0
  46. data/app/assets/stylesheets/semantic/dropdown.css +415 -0
  47. data/app/assets/stylesheets/semantic/feed.css +126 -0
  48. data/app/assets/stylesheets/semantic/form.css +427 -0
  49. data/app/assets/stylesheets/semantic/grid.css +561 -0
  50. data/app/assets/stylesheets/semantic/header.css +277 -0
  51. data/app/assets/stylesheets/semantic/icon.css +811 -0
  52. data/app/assets/stylesheets/semantic/image.css +143 -0
  53. data/app/assets/stylesheets/semantic/input.css +225 -0
  54. data/app/assets/stylesheets/semantic/item.css +564 -0
  55. data/app/assets/stylesheets/semantic/label.css +687 -0
  56. data/app/assets/stylesheets/semantic/list.css +418 -0
  57. data/app/assets/stylesheets/semantic/loader.css +148 -0
  58. data/app/assets/stylesheets/semantic/menu.css +1409 -0
  59. data/app/assets/stylesheets/semantic/message.css +242 -0
  60. data/app/assets/stylesheets/semantic/modal.css +123 -0
  61. data/app/assets/stylesheets/semantic/nag.css +130 -0
  62. data/app/assets/stylesheets/semantic/popup.css +209 -0
  63. data/app/assets/stylesheets/semantic/progress.css +257 -0
  64. data/app/assets/stylesheets/semantic/rating.css +120 -0
  65. data/app/assets/stylesheets/semantic/reveal.css +283 -0
  66. data/app/assets/stylesheets/semantic/search.css +222 -0
  67. data/app/assets/stylesheets/semantic/segment.css +362 -0
  68. data/app/assets/stylesheets/semantic/shape.css +87 -0
  69. data/app/assets/stylesheets/semantic/sidebar.css +100 -0
  70. data/app/assets/stylesheets/semantic/step.css +240 -0
  71. data/app/assets/stylesheets/semantic/tab.css +52 -0
  72. data/app/assets/stylesheets/semantic/table.css +468 -0
  73. data/app/assets/stylesheets/semantic/transition.css +867 -0
  74. data/app/assets/stylesheets/semantic/video.css +81 -0
  75. data/lib/semantic_ui_rails/version.rb +3 -0
  76. data/lib/semantic_ui_rails.rb +7 -0
  77. data/semantic_ui_rails.gemspec +23 -0
  78. metadata +149 -0
@@ -0,0 +1,524 @@
1
+ /* ******************************
2
+ Semantic Module: Dimmer
3
+ Author: Jack Lukic
4
+ Notes: First Commit May 30, 2013
5
+
6
+ Simple plug-in which maintains the state for ui dimmer
7
+
8
+ ****************************** */
9
+
10
+ ;(function ( $, window, document, undefined ) {
11
+
12
+ $.fn.dimmer = function(parameters) {
13
+ var
14
+ $allModules = $(this),
15
+
16
+ settings = ( $.isPlainObject(parameters) )
17
+ ? $.extend(true, {}, $.fn.dimmer.settings, parameters)
18
+ : $.fn.dimmer.settings,
19
+
20
+ selector = settings.selector,
21
+ namespace = settings.namespace,
22
+ className = settings.className,
23
+ error = settings.error,
24
+
25
+ eventNamespace = '.' + namespace,
26
+ moduleNamespace = 'module-' + namespace,
27
+ moduleSelector = $allModules.selector || '',
28
+
29
+ time = new Date().getTime(),
30
+ performance = [],
31
+
32
+ query = arguments[0],
33
+ methodInvoked = (typeof query == 'string'),
34
+ queryArguments = [].slice.call(arguments, 1),
35
+ clickEvent = ('ontouchstart' in document.documentElement)
36
+ ? 'touchstart'
37
+ : 'click',
38
+
39
+ invokedResponse
40
+ ;
41
+
42
+ $allModules
43
+ .each(function() {
44
+ var
45
+ $module = $(this),
46
+ $dimmer = $module.children(selector.dimmer).first(),
47
+
48
+ element = this,
49
+ instance = $dimmer.data(moduleNamespace),
50
+ module
51
+ ;
52
+
53
+ module = {
54
+
55
+ initialize: function() {
56
+ if( module.is.dimmer() ) {
57
+ $dimmer = $module;
58
+ $module = $dimmer.parent();
59
+ module.debug('Module initialized as dimmer', settings);
60
+ }
61
+ else {
62
+ if( module.has.dimmer() ) {
63
+ $dimmer = $module.children(selector.dimmer).first();
64
+ module.debug('Module initialized with found dimmer', settings);
65
+ }
66
+ else {
67
+ module.create();
68
+ module.debug('Module initialized with created dimmer', settings);
69
+ }
70
+ if(settings.on == 'hover') {
71
+ $module
72
+ .on('mouseenter' + eventNamespace, module.show)
73
+ .on('mouseleave' + eventNamespace, module.hide)
74
+ ;
75
+ }
76
+ else if(settings.on == 'click') {
77
+ $module
78
+ .on(clickEvent + eventNamespace, module.toggle)
79
+ ;
80
+ }
81
+ }
82
+ if(settings.closable) {
83
+ $dimmer
84
+ .on(clickEvent, module.event.click)
85
+ ;
86
+ }
87
+ module.set.dimmable();
88
+ module.instantiate();
89
+ },
90
+
91
+ instantiate: function() {
92
+ module.verbose('Storing instance of module');
93
+ instance = module;
94
+ $dimmer
95
+ .data(moduleNamespace, instance)
96
+ ;
97
+ },
98
+
99
+ destroy: function() {
100
+ module.verbose('Destroying previous module');
101
+ $module
102
+ .off(eventNamespace)
103
+ ;
104
+ },
105
+
106
+ event: {
107
+
108
+ click: function(event) {
109
+ module.verbose('Determining if event occured on dimmer', event);
110
+ if( $dimmer.find(event.target).size() === 0 || $(event.target).is(selector.content) ) {
111
+ module.hide();
112
+ event.stopImmediatePropagation();
113
+ }
114
+ }
115
+
116
+ },
117
+
118
+ create: function() {
119
+ $dimmer = settings.template.dimmer();
120
+ $dimmer
121
+ .appendTo($module)
122
+ ;
123
+ if(module.is.page()) {
124
+ module.set.pageDimmer();
125
+ }
126
+ },
127
+
128
+ animate: {
129
+ show: function(callback) {
130
+ callback = callback || function(){};
131
+ module.set.dimmed();
132
+ if($.fn.transition !== undefined) {
133
+ $dimmer
134
+ .transition(settings.transition + ' in', settings.duration, function() {
135
+ module.set.active();
136
+ callback();
137
+ })
138
+ ;
139
+ }
140
+ else {
141
+ module.verbose('Showing dimmer animation with javascript');
142
+ $dimmer
143
+ .stop()
144
+ .css({
145
+ opacity : 0,
146
+ width : '100%',
147
+ height : '100%'
148
+ })
149
+ .fadeTo(settings.duration, 1, function() {
150
+ $dimmer.removeAttr('style');
151
+ module.set.active();
152
+ callback();
153
+ })
154
+ ;
155
+ }
156
+ },
157
+ hide: function(callback) {
158
+ callback = callback || function(){};
159
+ module.remove.dimmed();
160
+ if($.fn.transition !== undefined) {
161
+ module.verbose('Hiding dimmer with css');
162
+ $dimmer
163
+ .transition(settings.transition + ' out', settings.duration, function() {
164
+ module.remove.active();
165
+ callback();
166
+ })
167
+ ;
168
+ }
169
+ else {
170
+ module.verbose('Hiding dimmer with javascript');
171
+ $dimmer
172
+ .stop()
173
+ .fadeOut(settings.duration, function() {
174
+ $dimmer.removeAttr('style');
175
+ module.remove.active();
176
+ callback();
177
+ })
178
+ ;
179
+ }
180
+ }
181
+ },
182
+
183
+ has: {
184
+ dimmer: function() {
185
+ return ( $module.children(selector.dimmer).size() > 0 );
186
+ }
187
+ },
188
+
189
+ is: {
190
+ active: function() {
191
+ return $dimmer.hasClass(className.active);
192
+ },
193
+ animating: function() {
194
+ return ( $dimmer.is(':animated') || $dimmer.hasClass(className.transition) );
195
+ },
196
+ dimmer: function() {
197
+ return $module.is(selector.dimmer);
198
+ },
199
+ page: function () {
200
+ return $module.is('body');
201
+ },
202
+ dimmable: function() {
203
+ return $module.is(selector.dimmable);
204
+ },
205
+ enabled: function() {
206
+ return !$module.hasClass(className.disabled);
207
+ },
208
+ disabled: function() {
209
+ return $module.hasClass(className.disabled);
210
+ },
211
+ pageDimmer: function() {
212
+ return $dimmer.hasClass(className.pageDimmer);
213
+ }
214
+ },
215
+
216
+ can: {
217
+ show: function() {
218
+ return !$dimmer.hasClass(className.disabled);
219
+ }
220
+ },
221
+
222
+ set: {
223
+ active: function() {
224
+ $dimmer
225
+ .removeClass(className.transition)
226
+ .addClass(className.active)
227
+ ;
228
+ },
229
+ dimmable: function() {
230
+ $module
231
+ .addClass(className.dimmable)
232
+ ;
233
+ },
234
+ dimmed: function() {
235
+ $module.addClass(className.dimmed);
236
+ },
237
+ pageDimmer: function() {
238
+ $dimmer.addClass(className.pageDimmer);
239
+ },
240
+ disabled: function() {
241
+ $dimmer.addClass(className.disabled);
242
+ }
243
+ },
244
+
245
+ remove: {
246
+ active: function() {
247
+ $dimmer
248
+ .removeClass(className.transition)
249
+ .removeClass(className.active)
250
+ ;
251
+ },
252
+ dimmed: function() {
253
+ $module.removeClass(className.dimmed);
254
+ },
255
+ disabled: function() {
256
+ $dimmer.removeClass(className.disabled);
257
+ }
258
+ },
259
+
260
+ show: function(callback) {
261
+ module.debug('Showing dimmer', $dimmer);
262
+ if( !(module.is.active() || module.is.animating() ) && module.is.enabled() ) {
263
+ module.animate.show(callback);
264
+ $.proxy(settings.onShow, element)();
265
+ $.proxy(settings.onChange, element)();
266
+ }
267
+ else {
268
+ module.debug('Dimmer is already shown or disabled');
269
+ }
270
+ },
271
+
272
+ hide: function(callback) {
273
+ if( module.is.active() && !module.is.animating() ) {
274
+ module.debug('Hiding dimmer', $dimmer);
275
+ module.animate.hide(callback);
276
+ $.proxy(settings.onHide, element)();
277
+ $.proxy(settings.onChange, element)();
278
+ }
279
+ else {
280
+ module.debug('Dimmer is not visible');
281
+ }
282
+ },
283
+
284
+ toggle: function() {
285
+ module.verbose('Toggling dimmer visibility', $dimmer);
286
+ if( !module.is.active() ) {
287
+ module.show();
288
+ }
289
+ else {
290
+ module.hide();
291
+ }
292
+ },
293
+
294
+ setting: function(name, value) {
295
+ if(value !== undefined) {
296
+ if( $.isPlainObject(name) ) {
297
+ $.extend(true, settings, name);
298
+ }
299
+ else {
300
+ settings[name] = value;
301
+ }
302
+ }
303
+ else {
304
+ return settings[name];
305
+ }
306
+ },
307
+ internal: function(name, value) {
308
+ if(value !== undefined) {
309
+ if( $.isPlainObject(name) ) {
310
+ $.extend(true, module, name);
311
+ }
312
+ else {
313
+ module[name] = value;
314
+ }
315
+ }
316
+ else {
317
+ return module[name];
318
+ }
319
+ },
320
+ debug: function() {
321
+ if(settings.debug) {
322
+ if(settings.performance) {
323
+ module.performance.log(arguments);
324
+ }
325
+ else {
326
+ module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
327
+ module.debug.apply(console, arguments);
328
+ }
329
+ }
330
+ },
331
+ verbose: function() {
332
+ if(settings.verbose && settings.debug) {
333
+ if(settings.performance) {
334
+ module.performance.log(arguments);
335
+ }
336
+ else {
337
+ module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
338
+ module.verbose.apply(console, arguments);
339
+ }
340
+ }
341
+ },
342
+ error: function() {
343
+ module.error = Function.prototype.bind.call(console.error, console, settings.moduleName + ':');
344
+ module.error.apply(console, arguments);
345
+ },
346
+ performance: {
347
+ log: function(message) {
348
+ var
349
+ currentTime,
350
+ executionTime,
351
+ previousTime
352
+ ;
353
+ if(settings.performance) {
354
+ currentTime = new Date().getTime();
355
+ previousTime = time || currentTime;
356
+ executionTime = currentTime - previousTime;
357
+ time = currentTime;
358
+ performance.push({
359
+ 'Element' : element,
360
+ 'Name' : message[0],
361
+ 'Arguments' : [].slice.call(message, 1) || '',
362
+ 'Execution Time' : executionTime
363
+ });
364
+ }
365
+ clearTimeout(module.performance.timer);
366
+ module.performance.timer = setTimeout(module.performance.display, 100);
367
+ },
368
+ display: function() {
369
+ var
370
+ title = settings.name + ':',
371
+ totalTime = 0
372
+ ;
373
+ time = false;
374
+ clearTimeout(module.performance.timer);
375
+ $.each(performance, function(index, data) {
376
+ totalTime += data['Execution Time'];
377
+ });
378
+ title += ' ' + totalTime + 'ms';
379
+ if(moduleSelector) {
380
+ title += ' \'' + moduleSelector + '\'';
381
+ }
382
+ if($allModules.size() > 1) {
383
+ title += ' ' + '(' + $allModules.size() + ')';
384
+ }
385
+ if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {
386
+ console.groupCollapsed(title);
387
+ if(console.table) {
388
+ console.table(performance);
389
+ }
390
+ else {
391
+ $.each(performance, function(index, data) {
392
+ console.log(data['Name'] + ': ' + data['Execution Time']+'ms');
393
+ });
394
+ }
395
+ console.groupEnd();
396
+ }
397
+ performance = [];
398
+ }
399
+ },
400
+ invoke: function(query, passedArguments, context) {
401
+ var
402
+ maxDepth,
403
+ found,
404
+ response
405
+ ;
406
+ passedArguments = passedArguments || queryArguments;
407
+ context = element || context;
408
+ if(typeof query == 'string' && instance !== undefined) {
409
+ query = query.split(/[\. ]/);
410
+ maxDepth = query.length - 1;
411
+ $.each(query, function(depth, value) {
412
+ var camelCaseValue = (depth != maxDepth)
413
+ ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
414
+ : query
415
+ ;
416
+ if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) {
417
+ instance = instance[value];
418
+ }
419
+ else if( $.isPlainObject( instance[camelCaseValue] ) && (depth != maxDepth) ) {
420
+ instance = instance[camelCaseValue];
421
+ }
422
+ else if( instance[value] !== undefined ) {
423
+ found = instance[value];
424
+ return false;
425
+ }
426
+ else if( instance[camelCaseValue] !== undefined ) {
427
+ found = instance[camelCaseValue];
428
+ return false;
429
+ }
430
+ else {
431
+ module.error(error.method);
432
+ return false;
433
+ }
434
+ });
435
+ }
436
+ if ( $.isFunction( found ) ) {
437
+ response = found.apply(context, passedArguments);
438
+ }
439
+ else if(found !== undefined) {
440
+ response = found;
441
+ }
442
+ if($.isArray(invokedResponse)) {
443
+ invokedResponse.push(response);
444
+ }
445
+ else if(typeof invokedResponse == 'string') {
446
+ invokedResponse = [invokedResponse, response];
447
+ }
448
+ else if(response !== undefined) {
449
+ invokedResponse = response;
450
+ }
451
+ return found;
452
+ }
453
+ };
454
+
455
+ if(methodInvoked) {
456
+ if(instance === undefined) {
457
+ module.initialize();
458
+ }
459
+ module.invoke(query);
460
+ }
461
+ else {
462
+ if(instance !== undefined) {
463
+ module.destroy();
464
+ }
465
+ module.initialize();
466
+ }
467
+ })
468
+ ;
469
+
470
+ return (invokedResponse !== undefined)
471
+ ? invokedResponse
472
+ : this
473
+ ;
474
+ };
475
+
476
+ $.fn.dimmer.settings = {
477
+
478
+ name : 'Dimmer',
479
+ namespace : 'dimmer',
480
+
481
+ verbose : true,
482
+ debug : true,
483
+ performance : true,
484
+
485
+ transition : 'fade',
486
+
487
+ on : false,
488
+ closable : true,
489
+ duration : 500,
490
+
491
+ onChange : function(){},
492
+ onShow : function(){},
493
+ onHide : function(){},
494
+
495
+ error : {
496
+ method : 'The method you called is not defined.'
497
+ },
498
+
499
+ selector: {
500
+ dimmable : '.ui.dimmable',
501
+ dimmer : '.ui.dimmer',
502
+ content : '.ui.dimmer > .content, .ui.dimmer > .content > .center'
503
+ },
504
+
505
+ template: {
506
+ dimmer: function() {
507
+ return $('<div />').attr('class', 'ui dimmer');
508
+ }
509
+ },
510
+
511
+ className : {
512
+ active : 'active',
513
+ dimmable : 'ui dimmable',
514
+ dimmed : 'dimmed',
515
+ disabled : 'disabled',
516
+ pageDimmer : 'page',
517
+ hide : 'hide',
518
+ show : 'show',
519
+ transition : 'transition'
520
+ }
521
+
522
+ };
523
+
524
+ })( jQuery, window , document );