semantic-ui-rails 0.1.0 → 0.1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/generators/semantic/install/install_generator.rb +3 -3
- data/lib/generators/semantic/install/templates/semantic-ui.css.less +47 -0
- data/lib/semantic/ui/rails/version.rb +1 -1
- data/semantic.thor +29 -25
- data/vendor/assets/javascripts/semantic-ui/modules/accordion.js +7 -0
- data/vendor/assets/javascripts/semantic-ui/modules/chatroom.js +1 -1
- data/vendor/assets/javascripts/semantic-ui/modules/checkbox.js +2 -5
- data/vendor/assets/javascripts/semantic-ui/modules/dimmer.js +73 -49
- data/vendor/assets/javascripts/semantic-ui/modules/dropdown.js +135 -136
- data/vendor/assets/javascripts/semantic-ui/modules/modal.js +196 -125
- data/vendor/assets/javascripts/semantic-ui/modules/popup.js +3 -6
- data/vendor/assets/javascripts/semantic-ui/modules/rating.js +80 -38
- data/vendor/assets/javascripts/semantic-ui/modules/sidebar.js +17 -20
- data/vendor/assets/javascripts/semantic-ui/modules/tab.js +32 -20
- data/vendor/assets/javascripts/semantic-ui/modules/transition.js +2 -0
- data/vendor/assets/stylesheets/semantic-ui/collections/form.less +15 -2
- data/vendor/assets/stylesheets/semantic-ui/collections/grid.less +20 -39
- data/vendor/assets/stylesheets/semantic-ui/collections/menu.less +12 -12
- data/vendor/assets/stylesheets/semantic-ui/elements/basic.icon.less +203 -198
- data/vendor/assets/stylesheets/semantic-ui/elements/button.less +17 -6
- data/vendor/assets/stylesheets/semantic-ui/elements/header.less +49 -31
- data/vendor/assets/stylesheets/semantic-ui/elements/icon.less +9 -13
- data/vendor/assets/stylesheets/semantic-ui/elements/image.less +13 -1
- data/vendor/assets/stylesheets/semantic-ui/elements/input.less +1 -1
- data/vendor/assets/stylesheets/semantic-ui/elements/loader.less +8 -8
- data/vendor/assets/stylesheets/semantic-ui/modules/checkbox.less +1 -1
- data/vendor/assets/stylesheets/semantic-ui/modules/dimmer.less +13 -5
- data/vendor/assets/stylesheets/semantic-ui/modules/dropdown.less +48 -8
- data/vendor/assets/stylesheets/semantic-ui/modules/modal.less +72 -13
- data/vendor/assets/stylesheets/semantic-ui/modules/rating.less +38 -35
- data/vendor/assets/stylesheets/semantic-ui/modules/search.less +1 -1
- data/vendor/assets/stylesheets/semantic-ui/modules/tab.less +1 -1
- data/vendor/assets/stylesheets/semantic-ui/modules/transition.less +283 -25
- data/vendor/assets/stylesheets/semantic-ui/views/list.less +24 -2
- metadata +3 -7
- data/lib/generators/semantic/install/templates/semantic-ui/collections.less +0 -6
- data/lib/generators/semantic/install/templates/semantic-ui/elements.less +0 -12
- data/lib/generators/semantic/install/templates/semantic-ui/modules.less +0 -16
- data/lib/generators/semantic/install/templates/semantic-ui/views.less +0 -6
- data/vendor/assets/stylesheets/semantic-ui/views/statistic.css +0 -27
@@ -253,7 +253,9 @@ $.fn.popup = function(parameters) {
|
|
253
253
|
// refresh state of module
|
254
254
|
module.refresh();
|
255
255
|
if( !$module.hasClass(className.visible) ) {
|
256
|
-
|
256
|
+
if(settings.on == 'click') {
|
257
|
+
module.hideAll();
|
258
|
+
}
|
257
259
|
module.show();
|
258
260
|
}
|
259
261
|
else {
|
@@ -552,11 +554,6 @@ $.fn.popup = function(parameters) {
|
|
552
554
|
if(moduleSelector) {
|
553
555
|
title += ' \'' + moduleSelector + '\'';
|
554
556
|
}
|
555
|
-
if($allModules.size() > 1) {
|
556
|
-
if($allModules.size() > 1) {
|
557
|
-
title += ' ' + '(' + $allModules.size() + ')';
|
558
|
-
}
|
559
|
-
}
|
560
557
|
if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {
|
561
558
|
console.groupCollapsed(title);
|
562
559
|
if(console.table) {
|
@@ -49,14 +49,15 @@ $.fn.rating = function(parameters) {
|
|
49
49
|
module = {
|
50
50
|
|
51
51
|
initialize: function() {
|
52
|
-
module.verbose('Initializing rating module');
|
52
|
+
module.verbose('Initializing rating module', settings);
|
53
|
+
|
53
54
|
if(settings.interactive) {
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
;
|
55
|
+
module.enable();
|
56
|
+
}
|
57
|
+
else {
|
58
|
+
module.disable();
|
59
59
|
}
|
60
|
+
|
60
61
|
if(settings.initialRating) {
|
61
62
|
module.debug('Setting initial rating');
|
62
63
|
module.setRating(settings.initialRating);
|
@@ -65,9 +66,6 @@ $.fn.rating = function(parameters) {
|
|
65
66
|
module.debug('Rating found in metadata');
|
66
67
|
module.setRating( $module.data(metadata.rating) );
|
67
68
|
}
|
68
|
-
$module
|
69
|
-
.addClass(className.active)
|
70
|
-
;
|
71
69
|
module.instantiate();
|
72
70
|
},
|
73
71
|
|
@@ -87,29 +85,6 @@ $.fn.rating = function(parameters) {
|
|
87
85
|
;
|
88
86
|
},
|
89
87
|
|
90
|
-
setRating: function(rating) {
|
91
|
-
var
|
92
|
-
$activeIcon = $icon.eq(rating - 1)
|
93
|
-
;
|
94
|
-
module.verbose('Setting current rating to', rating);
|
95
|
-
$module
|
96
|
-
.removeClass(className.hover)
|
97
|
-
;
|
98
|
-
$icon
|
99
|
-
.removeClass(className.hover)
|
100
|
-
;
|
101
|
-
$activeIcon
|
102
|
-
.nextAll()
|
103
|
-
.removeClass(className.active)
|
104
|
-
;
|
105
|
-
$activeIcon
|
106
|
-
.addClass(className.active)
|
107
|
-
.prevAll()
|
108
|
-
.addClass(className.active)
|
109
|
-
;
|
110
|
-
$.proxy(settings.onRate, element)();
|
111
|
-
},
|
112
|
-
|
113
88
|
event: {
|
114
89
|
mouseenter: function() {
|
115
90
|
var
|
@@ -138,11 +113,79 @@ $.fn.rating = function(parameters) {
|
|
138
113
|
},
|
139
114
|
click: function() {
|
140
115
|
var
|
141
|
-
$activeIcon
|
116
|
+
$activeIcon = $(this),
|
117
|
+
currentRating = module.getRating(),
|
118
|
+
rating = $icon.index($activeIcon) + 1
|
142
119
|
;
|
143
|
-
|
120
|
+
if(settings.clearable && currentRating == rating) {
|
121
|
+
module.clearRating();
|
122
|
+
}
|
123
|
+
else {
|
124
|
+
module.setRating( rating );
|
125
|
+
}
|
144
126
|
}
|
145
127
|
},
|
128
|
+
|
129
|
+
clearRating: function() {
|
130
|
+
module.debug('Clearing current rating');
|
131
|
+
module.setRating(0);
|
132
|
+
},
|
133
|
+
|
134
|
+
getRating: function() {
|
135
|
+
var
|
136
|
+
currentRating = $icon.filter('.' + className.active).size()
|
137
|
+
;
|
138
|
+
module.verbose('Current rating retrieved', currentRating);
|
139
|
+
return currentRating;
|
140
|
+
},
|
141
|
+
|
142
|
+
enable: function() {
|
143
|
+
module.debug('Setting rating to interactive mode');
|
144
|
+
$icon
|
145
|
+
.on('mouseenter' + eventNamespace, module.event.mouseenter)
|
146
|
+
.on('mouseleave' + eventNamespace, module.event.mouseleave)
|
147
|
+
.on('click' + eventNamespace, module.event.click)
|
148
|
+
;
|
149
|
+
$module
|
150
|
+
.addClass(className.active)
|
151
|
+
;
|
152
|
+
},
|
153
|
+
|
154
|
+
disable: function() {
|
155
|
+
module.debug('Setting rating to read-only mode');
|
156
|
+
$icon
|
157
|
+
.off(eventNamespace)
|
158
|
+
;
|
159
|
+
$module
|
160
|
+
.removeClass(className.active)
|
161
|
+
;
|
162
|
+
},
|
163
|
+
|
164
|
+
setRating: function(rating) {
|
165
|
+
var
|
166
|
+
ratingIndex = (rating - 1 >= 0)
|
167
|
+
? (rating - 1)
|
168
|
+
: 0,
|
169
|
+
$activeIcon = $icon.eq(ratingIndex)
|
170
|
+
;
|
171
|
+
$module
|
172
|
+
.removeClass(className.hover)
|
173
|
+
;
|
174
|
+
$icon
|
175
|
+
.removeClass(className.hover)
|
176
|
+
.removeClass(className.active)
|
177
|
+
;
|
178
|
+
if(rating > 0) {
|
179
|
+
module.verbose('Setting current rating to', rating);
|
180
|
+
$activeIcon
|
181
|
+
.addClass(className.active)
|
182
|
+
.prevAll()
|
183
|
+
.addClass(className.active)
|
184
|
+
;
|
185
|
+
}
|
186
|
+
$.proxy(settings.onRate, element)(rating);
|
187
|
+
},
|
188
|
+
|
146
189
|
setting: function(name, value) {
|
147
190
|
if(value !== undefined) {
|
148
191
|
if( $.isPlainObject(name) ) {
|
@@ -231,9 +274,6 @@ $.fn.rating = function(parameters) {
|
|
231
274
|
if(moduleSelector) {
|
232
275
|
title += ' \'' + moduleSelector + '\'';
|
233
276
|
}
|
234
|
-
if($allModules.size() > 1) {
|
235
|
-
title += ' ' + '(' + $allModules.size() + ')';
|
236
|
-
}
|
237
277
|
if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) {
|
238
278
|
console.groupCollapsed(title);
|
239
279
|
if(console.table) {
|
@@ -336,7 +376,9 @@ $.fn.rating.settings = {
|
|
336
376
|
|
337
377
|
initialRating : 0,
|
338
378
|
interactive : true,
|
339
|
-
|
379
|
+
clearable : false,
|
380
|
+
|
381
|
+
onRate : function(rating){},
|
340
382
|
|
341
383
|
error : {
|
342
384
|
method : 'The method you called is not defined'
|
@@ -79,30 +79,27 @@ $.fn.sidebar = function(parameters) {
|
|
79
79
|
$style = $('style[title=' + namespace + ']');
|
80
80
|
},
|
81
81
|
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
82
|
+
attachEvents: function(selector, event) {
|
83
|
+
var
|
84
|
+
$toggle = $(selector)
|
85
|
+
;
|
86
|
+
event = $.isFunction(module[event])
|
87
|
+
? module[event]
|
88
|
+
: module.toggle
|
89
|
+
;
|
90
|
+
if($toggle.size() > 0) {
|
91
|
+
module.debug('Attaching sidebar events to element', selector, event);
|
92
|
+
$toggle
|
93
|
+
.off(eventNamespace)
|
94
|
+
.on('click' + eventNamespace, event)
|
91
95
|
;
|
92
|
-
if($toggle.size() > 0) {
|
93
|
-
module.debug('Attaching sidebar events to element', selector, event);
|
94
|
-
$toggle
|
95
|
-
.off(eventNamespace)
|
96
|
-
.on('click' + eventNamespace, event)
|
97
|
-
;
|
98
|
-
}
|
99
|
-
else {
|
100
|
-
module.error(error.notFound);
|
101
|
-
}
|
102
96
|
}
|
103
|
-
|
97
|
+
else {
|
98
|
+
module.error(error.notFound);
|
99
|
+
}
|
104
100
|
},
|
105
101
|
|
102
|
+
|
106
103
|
show: function() {
|
107
104
|
module.debug('Showing sidebar');
|
108
105
|
if(module.is.closed()) {
|
@@ -54,6 +54,15 @@
|
|
54
54
|
|
55
55
|
initialize: function() {
|
56
56
|
module.debug('Initializing Tabs', $module);
|
57
|
+
|
58
|
+
// set up automatic routing
|
59
|
+
if(settings.auto) {
|
60
|
+
module.verbose('Setting up automatic tab retrieval from server');
|
61
|
+
settings.apiSettings = {
|
62
|
+
url: settings.path + '/{$tab}'
|
63
|
+
};
|
64
|
+
}
|
65
|
+
|
57
66
|
// attach history events
|
58
67
|
if(settings.history) {
|
59
68
|
if( $.address === undefined ) {
|
@@ -65,11 +74,6 @@
|
|
65
74
|
return false;
|
66
75
|
}
|
67
76
|
else {
|
68
|
-
if(settings.auto) {
|
69
|
-
settings.apiSettings = {
|
70
|
-
url: settings.path + '/{$tab}'
|
71
|
-
};
|
72
|
-
}
|
73
77
|
module.verbose('Address library found adding state change event');
|
74
78
|
$.address
|
75
79
|
.state(settings.path)
|
@@ -78,8 +82,10 @@
|
|
78
82
|
;
|
79
83
|
}
|
80
84
|
}
|
85
|
+
|
81
86
|
// attach events if navigation wasn't set to window
|
82
87
|
if( !$.isWindow( element ) ) {
|
88
|
+
module.debug('Attaching tab activation events to element', $module);
|
83
89
|
$module
|
84
90
|
.on('click' + eventNamespace, module.event.click)
|
85
91
|
;
|
@@ -102,7 +108,7 @@
|
|
102
108
|
},
|
103
109
|
|
104
110
|
event: {
|
105
|
-
click: function() {
|
111
|
+
click: function(event) {
|
106
112
|
module.debug('Navigation clicked');
|
107
113
|
var
|
108
114
|
tabPath = $(this).data(metadata.tab)
|
@@ -114,6 +120,7 @@
|
|
114
120
|
else {
|
115
121
|
module.changeTab(tabPath);
|
116
122
|
}
|
123
|
+
event.preventDefault();
|
117
124
|
}
|
118
125
|
else {
|
119
126
|
module.debug('No tab specified');
|
@@ -172,9 +179,9 @@
|
|
172
179
|
// only get default path if not remote content
|
173
180
|
pathArray = (remoteContent && !shouldIgnoreLoad)
|
174
181
|
? module.utilities.pathToArray(tabPath)
|
175
|
-
: module.get.defaultPathArray(tabPath)
|
176
|
-
tabPath = module.utilities.arrayToPath(pathArray)
|
182
|
+
: module.get.defaultPathArray(tabPath)
|
177
183
|
;
|
184
|
+
tabPath = module.utilities.arrayToPath(pathArray);
|
178
185
|
module.deactivate.all();
|
179
186
|
$.each(pathArray, function(index, tab) {
|
180
187
|
var
|
@@ -241,8 +248,6 @@
|
|
241
248
|
fetch: function(tabPath, fullTabPath) {
|
242
249
|
var
|
243
250
|
$tab = module.get.tabElement(tabPath),
|
244
|
-
fullTabPath = fullTabPath || tabPath,
|
245
|
-
cachedContent = module.cache.read(fullTabPath),
|
246
251
|
apiSettings = {
|
247
252
|
dataType : 'html',
|
248
253
|
stateContext : $tab,
|
@@ -262,8 +267,14 @@
|
|
262
267
|
urlData: { tab: fullTabPath }
|
263
268
|
},
|
264
269
|
request = $tab.data(metadata.promise) || false,
|
265
|
-
existingRequest = ( request && request.state() === 'pending' )
|
270
|
+
existingRequest = ( request && request.state() === 'pending' ),
|
271
|
+
requestSettings,
|
272
|
+
cachedContent
|
266
273
|
;
|
274
|
+
|
275
|
+
fullTabPath = fullTabPath || tabPath;
|
276
|
+
cachedContent = module.cache.read(fullTabPath);
|
277
|
+
|
267
278
|
if(settings.cache && cachedContent) {
|
268
279
|
module.debug('Showing existing content', fullTabPath);
|
269
280
|
module.content.update(tabPath, cachedContent);
|
@@ -277,8 +288,10 @@
|
|
277
288
|
;
|
278
289
|
}
|
279
290
|
else if($.api !== undefined) {
|
280
|
-
|
281
|
-
|
291
|
+
console.log(settings.apiSettings);
|
292
|
+
requestSettings = $.extend(true, { headers: { 'X-Remote': true } }, settings.apiSettings, apiSettings);
|
293
|
+
module.debug('Retrieving remote content', fullTabPath, requestSettings);
|
294
|
+
$.api( requestSettings );
|
282
295
|
}
|
283
296
|
else {
|
284
297
|
module.error(error.api);
|
@@ -368,7 +381,7 @@
|
|
368
381
|
module.error(error.recursion);
|
369
382
|
}
|
370
383
|
else {
|
371
|
-
module.debug('No default tabs found for', tabPath);
|
384
|
+
module.debug('No default tabs found for', tabPath, $tabs);
|
372
385
|
}
|
373
386
|
recursionDepth = 0;
|
374
387
|
return tabPath;
|
@@ -630,7 +643,6 @@
|
|
630
643
|
|
631
644
|
// uses pjax style endpoints fetching content from same url with remote-content headers
|
632
645
|
auto : false,
|
633
|
-
|
634
646
|
history : false,
|
635
647
|
path : false,
|
636
648
|
|
@@ -639,7 +651,7 @@
|
|
639
651
|
// max depth a tab can be nested
|
640
652
|
maxDepth : 25,
|
641
653
|
// dont load content on first load
|
642
|
-
ignoreFirstLoad :
|
654
|
+
ignoreFirstLoad : false,
|
643
655
|
// load tab content new every tab click
|
644
656
|
alwaysRefresh : false,
|
645
657
|
// cache the content requests to pull locally
|
@@ -649,12 +661,12 @@
|
|
649
661
|
|
650
662
|
error: {
|
651
663
|
api : 'You attempted to load content without API module',
|
652
|
-
noContent : 'The tab you specified is missing a content url.',
|
653
664
|
method : 'The method you called is not defined',
|
654
|
-
state : 'The state library has not been initialized',
|
655
665
|
missingTab : 'Tab cannot be found',
|
666
|
+
noContent : 'The tab you specified is missing a content url.',
|
656
667
|
path : 'History enabled, but no path was specified',
|
657
|
-
recursion : 'Max recursive depth reached'
|
668
|
+
recursion : 'Max recursive depth reached',
|
669
|
+
state : 'The state library has not been initialized'
|
658
670
|
},
|
659
671
|
|
660
672
|
metadata : {
|
@@ -669,7 +681,7 @@
|
|
669
681
|
},
|
670
682
|
|
671
683
|
selector : {
|
672
|
-
tabs : '.tab'
|
684
|
+
tabs : '.ui.tab'
|
673
685
|
}
|
674
686
|
|
675
687
|
};
|
@@ -408,6 +408,7 @@ $.fn.transition = function() {
|
|
408
408
|
.addClass(className.transition)
|
409
409
|
.addClass(className.hidden)
|
410
410
|
;
|
411
|
+
module.repaint();
|
411
412
|
},
|
412
413
|
show: function() {
|
413
414
|
module.verbose('Showing element');
|
@@ -416,6 +417,7 @@ $.fn.transition = function() {
|
|
416
417
|
.addClass(className.transition)
|
417
418
|
.addClass(className.visible)
|
418
419
|
;
|
420
|
+
module.repaint();
|
419
421
|
},
|
420
422
|
|
421
423
|
start: function() {
|
@@ -65,6 +65,7 @@
|
|
65
65
|
|
66
66
|
.ui.form textarea,
|
67
67
|
.ui.form input[type="text"],
|
68
|
+
.ui.form input[type="email"],
|
68
69
|
.ui.form input[type="date"],
|
69
70
|
.ui.form input[type="password"],
|
70
71
|
.ui.form .ui.input {
|
@@ -73,6 +74,7 @@
|
|
73
74
|
|
74
75
|
.ui.form textarea,
|
75
76
|
.ui.form input[type="text"],
|
77
|
+
.ui.form input[type="email"],
|
76
78
|
.ui.form input[type="date"],
|
77
79
|
.ui.form input[type="password"] {
|
78
80
|
|
@@ -201,6 +203,8 @@
|
|
201
203
|
---------------------*/
|
202
204
|
|
203
205
|
.ui.form input[type="text"]:focus,
|
206
|
+
.ui.form input[type="email"]:focus,
|
207
|
+
.ui.form input[type="date"]:focus,
|
204
208
|
.ui.form input[type="password"]:focus,
|
205
209
|
.ui.form textarea:focus {
|
206
210
|
color: rgba(0, 0, 0, 0.85);
|
@@ -240,10 +244,12 @@
|
|
240
244
|
}
|
241
245
|
.ui.form .fields.error .field textarea,
|
242
246
|
.ui.form .fields.error .field input[type="text"],
|
247
|
+
.ui.form .fields.error .field input[type="email"],
|
243
248
|
.ui.form .fields.error .field input[type="date"],
|
244
249
|
.ui.form .fields.error .field input[type="password"],
|
245
250
|
.ui.form .field.error textarea,
|
246
251
|
.ui.form .field.error input[type="text"],
|
252
|
+
.ui.form .field.error input[type="email"],
|
247
253
|
.ui.form .field.error input[type="date"],
|
248
254
|
.ui.form .field.error input[type="password"] {
|
249
255
|
background-color: #FFFAFA;
|
@@ -263,6 +269,8 @@
|
|
263
269
|
}
|
264
270
|
.ui.form .field.error textarea:focus,
|
265
271
|
.ui.form .field.error input[type="text"]:focus,
|
272
|
+
.ui.form .field.error input[type="email"]:focus,
|
273
|
+
.ui.form .field.error input[type="date"]:focus,
|
266
274
|
.ui.form .field.error input[type="password"]:focus {
|
267
275
|
border-color: rgba(255, 80, 80, 1);
|
268
276
|
color: rgba(255, 80, 80, 1);
|
@@ -337,7 +345,7 @@
|
|
337
345
|
|
338
346
|
width: 100%;
|
339
347
|
height: 100%;
|
340
|
-
background: rgba(255, 255, 255, 0.8) url(
|
348
|
+
background: rgba(255, 255, 255, 0.8) url(/assets/semantic-ui/loader-large.gif) no-repeat 50% 50%;
|
341
349
|
visibility: visible;
|
342
350
|
}
|
343
351
|
|
@@ -395,7 +403,10 @@
|
|
395
403
|
color: #FFFFFF;
|
396
404
|
}
|
397
405
|
.ui.inverted.form .field.error textarea,
|
398
|
-
.ui.inverted.form .field.error input[type="text"]
|
406
|
+
.ui.inverted.form .field.error input[type="text"],
|
407
|
+
.ui.inverted.form .field.error input[type="email"],
|
408
|
+
.ui.inverted.form .field.error input[type="date"],
|
409
|
+
.ui.inverted.form .field.error input[type="password"]{
|
399
410
|
background-color: #FFCCCC;
|
400
411
|
}
|
401
412
|
|
@@ -527,6 +538,8 @@
|
|
527
538
|
}
|
528
539
|
.ui.small.form textarea,
|
529
540
|
.ui.small.form input[type="text"],
|
541
|
+
.ui.small.form input[type="email"],
|
542
|
+
.ui.small.form input[type="date"],
|
530
543
|
.ui.small.form input[type="password"],
|
531
544
|
.ui.small.form label {
|
532
545
|
font-size: 1em;
|