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,348 @@
1
+ /* ******************************
2
+ Semantic Module: Checkbox
3
+ Author: Jack Lukic
4
+ Notes: First Commit March 25, 2013
5
+
6
+ Simple plug-in which maintains the state for ui checkbox
7
+ This can be done without javascript, only in instances
8
+ where each checkbox is assigned a unique ID. This provides a separate
9
+ programmatic option when that is not possible.
10
+
11
+ ****************************** */
12
+
13
+ ;(function ( $, window, document, undefined ) {
14
+
15
+ $.fn.checkbox = function(parameters) {
16
+ var
17
+ $allModules = $(this),
18
+
19
+ settings = $.extend(true, {}, $.fn.checkbox.settings, parameters),
20
+
21
+ className = settings.className,
22
+ namespace = settings.namespace,
23
+ error = settings.error,
24
+
25
+ eventNamespace = '.' + namespace,
26
+ moduleNamespace = 'module-' + namespace,
27
+
28
+ moduleSelector = $allModules.selector || '',
29
+
30
+ time = new Date().getTime(),
31
+ performance = [],
32
+
33
+ query = arguments[0],
34
+ methodInvoked = (typeof query == 'string'),
35
+ queryArguments = [].slice.call(arguments, 1),
36
+ invokedResponse
37
+ ;
38
+
39
+ $allModules
40
+ .each(function() {
41
+ var
42
+ $module = $(this),
43
+ $label = $(this).next(settings.selector.label).first(),
44
+ $input = $(this).find(settings.selector.input),
45
+
46
+ selector = $module.selector || '',
47
+ instance = $module.data(moduleNamespace),
48
+
49
+ element = this,
50
+ module
51
+ ;
52
+
53
+ module = {
54
+
55
+ initialize: function() {
56
+ module.verbose('Initializing checkbox', settings);
57
+ if(settings.context && selector !== '') {
58
+ module.verbose('Adding delegated events');
59
+ $(element, settings.context)
60
+ .on(selector, 'click' + eventNamespace, module.toggle)
61
+ .on(selector + ' + ' + settings.selector.label, 'click' + eventNamespace, module.toggle)
62
+ ;
63
+ }
64
+ else {
65
+ $module
66
+ .on('click' + eventNamespace, module.toggle)
67
+ .data(moduleNamespace, module)
68
+ ;
69
+ $label
70
+ .on('click' + eventNamespace, module.toggle)
71
+ ;
72
+ }
73
+ module.instantiate();
74
+ },
75
+
76
+ instantiate: function() {
77
+ module.verbose('Storing instance of module', module);
78
+ instance = module;
79
+ $module
80
+ .data(moduleNamespace, module)
81
+ ;
82
+ },
83
+
84
+ destroy: function() {
85
+ module.verbose('Destroying previous module');
86
+ $module
87
+ .off(eventNamespace)
88
+ .removeData(moduleNamespace)
89
+ ;
90
+ },
91
+
92
+ is: {
93
+ radio: function() {
94
+ return $module.hasClass(className.radio);
95
+ }
96
+ },
97
+
98
+ can: {
99
+ disable: function() {
100
+ return (typeof settings.required === 'boolean')
101
+ ? settings.required
102
+ : !module.is.radio()
103
+ ;
104
+ }
105
+ },
106
+
107
+ enable: function() {
108
+ module.debug('Enabling checkbox');
109
+ $input
110
+ .prop('checked', true)
111
+ ;
112
+ $.proxy(settings.onChange, $input.get())();
113
+ $.proxy(settings.onEnable, $input.get())();
114
+ },
115
+
116
+ disable: function() {
117
+ module.debug('Disabling checkbox');
118
+ $input
119
+ .prop('checked', false)
120
+ ;
121
+ $.proxy(settings.onChange, $input.get())();
122
+ $.proxy(settings.onDisable, $input.get())();
123
+ },
124
+
125
+ toggle: function(event) {
126
+ module.verbose('Determining new checkbox state');
127
+ if($input.prop('checked') === undefined || !$input.prop('checked')) {
128
+ module.enable();
129
+ }
130
+ else if( module.can.disable() ) {
131
+ module.disable();
132
+ }
133
+ },
134
+ setting: function(name, value) {
135
+ if(value !== undefined) {
136
+ if( $.isPlainObject(name) ) {
137
+ $.extend(true, settings, name);
138
+ }
139
+ else {
140
+ settings[name] = value;
141
+ }
142
+ }
143
+ else {
144
+ return settings[name];
145
+ }
146
+ },
147
+ internal: function(name, value) {
148
+ if(value !== undefined) {
149
+ if( $.isPlainObject(name) ) {
150
+ $.extend(true, module, name);
151
+ }
152
+ else {
153
+ module[name] = value;
154
+ }
155
+ }
156
+ else {
157
+ return module[name];
158
+ }
159
+ },
160
+ debug: function() {
161
+ if(settings.debug) {
162
+ if(settings.performance) {
163
+ module.performance.log(arguments);
164
+ }
165
+ else {
166
+ module.debug = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
167
+ module.debug.apply(console, arguments);
168
+ }
169
+ }
170
+ },
171
+ verbose: function() {
172
+ if(settings.verbose && settings.debug) {
173
+ if(settings.performance) {
174
+ module.performance.log(arguments);
175
+ }
176
+ else {
177
+ module.verbose = Function.prototype.bind.call(console.info, console, settings.moduleName + ':');
178
+ module.verbose.apply(console, arguments);
179
+ }
180
+ }
181
+ },
182
+ error: function() {
183
+ module.error = Function.prototype.bind.call(console.error, console, settings.moduleName + ':');
184
+ module.error.apply(console, arguments);
185
+ },
186
+ performance: {
187
+ log: function(message) {
188
+ var
189
+ currentTime,
190
+ executionTime,
191
+ previousTime
192
+ ;
193
+ if(settings.performance) {
194
+ currentTime = new Date().getTime();
195
+ previousTime = time || currentTime;
196
+ executionTime = currentTime - previousTime;
197
+ time = currentTime;
198
+ performance.push({
199
+ 'Element' : element,
200
+ 'Name' : message[0],
201
+ 'Arguments' : [].slice.call(message, 1) || '',
202
+ 'Execution Time' : executionTime
203
+ });
204
+ }
205
+ clearTimeout(module.performance.timer);
206
+ module.performance.timer = setTimeout(module.performance.display, 100);
207
+ },
208
+ display: function() {
209
+ var
210
+ title = settings.name + ':',
211
+ totalTime = 0
212
+ ;
213
+ time = false;
214
+ clearTimeout(module.performance.timer);
215
+ $.each(performance, function(index, data) {
216
+ totalTime += data['Execution Time'];
217
+ });
218
+ title += ' ' + totalTime + 'ms';
219
+ if(moduleSelector) {
220
+ title += ' \'' + moduleSelector + '\'';
221
+ }
222
+ if($allModules.size() > 1) {
223
+ title += ' ' + '(' + $allModules.size() + ')';
224
+ }
225
+ if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {
226
+ console.groupCollapsed(title);
227
+ if(console.table) {
228
+ console.table(performance);
229
+ }
230
+ else {
231
+ $.each(performance, function(index, data) {
232
+ console.log(data['Name'] + ': ' + data['Execution Time']+'ms');
233
+ });
234
+ }
235
+ console.groupEnd();
236
+ }
237
+ performance = [];
238
+ }
239
+ },
240
+ invoke: function(query, passedArguments, context) {
241
+ var
242
+ maxDepth,
243
+ found,
244
+ response
245
+ ;
246
+ passedArguments = passedArguments || queryArguments;
247
+ context = element || context;
248
+ if(typeof query == 'string' && instance !== undefined) {
249
+ query = query.split(/[\. ]/);
250
+ maxDepth = query.length - 1;
251
+ $.each(query, function(depth, value) {
252
+ var camelCaseValue = (depth != maxDepth)
253
+ ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1)
254
+ : query
255
+ ;
256
+ if( $.isPlainObject( instance[value] ) && (depth != maxDepth) ) {
257
+ instance = instance[value];
258
+ }
259
+ else if( $.isPlainObject( instance[camelCaseValue] ) && (depth != maxDepth) ) {
260
+ instance = instance[camelCaseValue];
261
+ }
262
+ else if( instance[value] !== undefined ) {
263
+ found = instance[value];
264
+ return false;
265
+ }
266
+ else if( instance[camelCaseValue] !== undefined ) {
267
+ found = instance[camelCaseValue];
268
+ return false;
269
+ }
270
+ else {
271
+ module.error(error.method);
272
+ return false;
273
+ }
274
+ });
275
+ }
276
+ if ( $.isFunction( found ) ) {
277
+ response = found.apply(context, passedArguments);
278
+ }
279
+ else if(found !== undefined) {
280
+ response = found;
281
+ }
282
+ if($.isArray(invokedResponse)) {
283
+ invokedResponse.push(response);
284
+ }
285
+ else if(typeof invokedResponse == 'string') {
286
+ invokedResponse = [invokedResponse, response];
287
+ }
288
+ else if(response !== undefined) {
289
+ invokedResponse = response;
290
+ }
291
+ return found;
292
+ }
293
+ };
294
+
295
+ if(methodInvoked) {
296
+ if(instance === undefined) {
297
+ module.initialize();
298
+ }
299
+ module.invoke(query);
300
+ }
301
+ else {
302
+ if(instance !== undefined) {
303
+ module.destroy();
304
+ }
305
+ module.initialize();
306
+ }
307
+ })
308
+ ;
309
+
310
+ return (invokedResponse !== undefined)
311
+ ? invokedResponse
312
+ : this
313
+ ;
314
+ };
315
+
316
+ $.fn.checkbox.settings = {
317
+
318
+ name : 'Checkbox',
319
+ namespace : 'checkbox',
320
+
321
+ verbose : true,
322
+ debug : true,
323
+ performance : true,
324
+
325
+ // delegated event context
326
+ context : false,
327
+ required : 'auto',
328
+
329
+ onChange : function(){},
330
+ onEnable : function(){},
331
+ onDisable : function(){},
332
+
333
+ error : {
334
+ method : 'The method you called is not defined.'
335
+ },
336
+
337
+ selector : {
338
+ input : 'input',
339
+ label : 'label'
340
+ },
341
+
342
+ className : {
343
+ radio : 'radio'
344
+ }
345
+
346
+ };
347
+
348
+ })( jQuery, window , document );