fuelux-rails 2.2.0.beta.1 → 2.2.0
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/README.md +2 -2
- data/lib/fuelux-rails/version.rb +1 -1
- data/vendor/assets/javascripts/fuelux/checkbox.js +1 -1
- data/vendor/assets/javascripts/fuelux/combobox.js +3 -6
- data/vendor/assets/javascripts/fuelux/datagrid.js +64 -7
- data/vendor/assets/javascripts/fuelux/loader.js +226 -138
- data/vendor/assets/javascripts/fuelux/pillbox.js +1 -2
- data/vendor/assets/javascripts/fuelux/search.js +19 -4
- data/vendor/assets/javascripts/fuelux/spinner.js +18 -3
- data/vendor/assets/javascripts/fuelux/util.js +1 -1
- data/vendor/assets/javascripts/fuelux/wizard.js +147 -143
- data/vendor/toolkit/fuelux/checkbox.less +1 -1
- data/vendor/toolkit/fuelux/datagrid.less +45 -1
- data/vendor/toolkit/fuelux/radio.less +1 -1
- metadata +7 -7
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
# Fuel UX for Rails 3.1 Asset Pipeline
|
1
|
+
# Fuel UX for Rails 3.1/Rails 4.0 Asset Pipeline
|
2
2
|
Extends Twitter Bootstrap with additional lightweight JavaScript controls. Easy to install, customize, update, and optimize.
|
3
3
|
|
4
|
-
fuelux-rails project integrates Fuel UX into the Twitter Bootstrap CSS toolkit for Rails 3.1 Asset Pipeline (Rails 3.2 supported)
|
4
|
+
fuelux-rails project integrates Fuel UX into the Twitter Bootstrap CSS toolkit for Rails 3.1/Rails 4.0 Asset Pipeline (Rails 3.2 supported)
|
5
5
|
|
6
6
|
## Installing Gem
|
7
7
|
|
data/lib/fuelux-rails/version.rb
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
*/
|
8
8
|
|
9
9
|
!function ($) {
|
10
|
-
|
10
|
+
|
11
11
|
// COMBOBOX CONSTRUCTOR AND PROTOTYPE
|
12
12
|
|
13
13
|
var Combobox = function (element, options) {
|
@@ -72,11 +72,8 @@
|
|
72
72
|
setDefaultSelection: function () {
|
73
73
|
var selector = 'li[data-selected=true]:first';
|
74
74
|
var item = this.$element.find(selector);
|
75
|
-
|
76
|
-
|
77
|
-
this.selectByIndex(0);
|
78
|
-
}
|
79
|
-
else {
|
75
|
+
|
76
|
+
if (item.length > 0) {
|
80
77
|
// select by data-attribute
|
81
78
|
this.selectBySelector(selector);
|
82
79
|
item.removeData('selected');
|
@@ -13,8 +13,9 @@
|
|
13
13
|
var Datagrid = function (element, options) {
|
14
14
|
this.$element = $(element);
|
15
15
|
this.$thead = this.$element.find('thead');
|
16
|
+
this.$tfoot = this.$element.find('tfoot');
|
16
17
|
this.$footer = this.$element.find('tfoot th');
|
17
|
-
this.$footerchildren = this.$footer.children();
|
18
|
+
this.$footerchildren = this.$footer.children().show().css('visibility', 'hidden');
|
18
19
|
this.$topheader = this.$element.find('thead th');
|
19
20
|
this.$searchcontrol = this.$element.find('.search');
|
20
21
|
this.$pagesize = this.$element.find('.grid-pagesize');
|
@@ -30,7 +31,7 @@
|
|
30
31
|
this.$tbody = $('<tbody>').insertAfter(this.$thead);
|
31
32
|
this.$colheader = $('<tr>').appendTo(this.$thead);
|
32
33
|
|
33
|
-
this.options = $.extend({}, $.fn.datagrid.defaults, options);
|
34
|
+
this.options = $.extend(true, {}, $.fn.datagrid.defaults, options);
|
34
35
|
this.options.dataOptions.pageSize = parseInt(this.$pagesize.val(), 10);
|
35
36
|
this.columns = this.options.dataSource.columns();
|
36
37
|
|
@@ -42,6 +43,9 @@
|
|
42
43
|
this.$pageinput.on('change', $.proxy(this.pageChanged, this));
|
43
44
|
|
44
45
|
this.renderColumns();
|
46
|
+
|
47
|
+
if (this.options.stretchHeight) this.initStretchHeight();
|
48
|
+
|
45
49
|
this.renderData();
|
46
50
|
};
|
47
51
|
|
@@ -102,13 +106,14 @@
|
|
102
106
|
var self = this;
|
103
107
|
|
104
108
|
this.$tbody.html(this.placeholderRowHTML(this.options.loadingHTML));
|
105
|
-
this.$footerchildren.hide();
|
106
109
|
|
107
110
|
this.options.dataSource.data(this.options.dataOptions, function (data) {
|
108
111
|
var itemdesc = (data.count === 1) ? self.options.itemText : self.options.itemsText;
|
109
112
|
var rowHTML = '';
|
110
113
|
|
111
|
-
self.$footerchildren.
|
114
|
+
self.$footerchildren.css('visibility', function () {
|
115
|
+
return (data.count > 0) ? 'visible' : 'hidden';
|
116
|
+
});
|
112
117
|
|
113
118
|
self.$pageinput.val(data.page);
|
114
119
|
self.$pageslabel.text(data.pages);
|
@@ -130,13 +135,15 @@
|
|
130
135
|
if (!rowHTML) rowHTML = self.placeholderRowHTML('0 ' + self.options.itemsText);
|
131
136
|
|
132
137
|
self.$tbody.html(rowHTML);
|
138
|
+
self.stretchHeight();
|
139
|
+
|
133
140
|
self.$element.trigger('loaded');
|
134
141
|
});
|
135
142
|
|
136
143
|
},
|
137
144
|
|
138
145
|
placeholderRowHTML: function (content) {
|
139
|
-
return '<tr><td style="text-align:center;padding:20px;" colspan="' +
|
146
|
+
return '<tr><td style="text-align:center;padding:20px;border-bottom:none;" colspan="' +
|
140
147
|
this.columns.length + '">' + content + '</td></tr>';
|
141
148
|
},
|
142
149
|
|
@@ -190,8 +197,58 @@
|
|
190
197
|
reload: function () {
|
191
198
|
this.options.dataOptions.pageIndex = 0;
|
192
199
|
this.renderData();
|
193
|
-
}
|
200
|
+
},
|
201
|
+
|
202
|
+
initStretchHeight: function () {
|
203
|
+
this.$gridContainer = this.$element.parent();
|
204
|
+
|
205
|
+
this.$element.wrap('<div class="datagrid-stretch-wrapper">');
|
206
|
+
this.$stretchWrapper = this.$element.parent();
|
207
|
+
|
208
|
+
this.$headerTable = $('<table>').attr('class', this.$element.attr('class'));
|
209
|
+
this.$footerTable = this.$headerTable.clone();
|
210
|
+
|
211
|
+
this.$headerTable.prependTo(this.$gridContainer).addClass('datagrid-stretch-header');
|
212
|
+
this.$thead.detach().appendTo(this.$headerTable);
|
213
|
+
|
214
|
+
this.$sizingHeader = this.$thead.clone();
|
215
|
+
this.$sizingHeader.find('tr:first').remove();
|
216
|
+
|
217
|
+
this.$footerTable.appendTo(this.$gridContainer).addClass('datagrid-stretch-footer');
|
218
|
+
this.$tfoot.detach().appendTo(this.$footerTable);
|
219
|
+
},
|
194
220
|
|
221
|
+
stretchHeight: function () {
|
222
|
+
if (!this.$gridContainer) return;
|
223
|
+
|
224
|
+
this.setColumnWidths();
|
225
|
+
|
226
|
+
var targetHeight = this.$gridContainer.height();
|
227
|
+
var headerHeight = this.$headerTable.outerHeight();
|
228
|
+
var footerHeight = this.$footerTable.outerHeight();
|
229
|
+
var overhead = headerHeight + footerHeight;
|
230
|
+
|
231
|
+
this.$stretchWrapper.height(targetHeight - overhead);
|
232
|
+
},
|
233
|
+
|
234
|
+
setColumnWidths: function () {
|
235
|
+
if (!this.$sizingHeader) return;
|
236
|
+
|
237
|
+
this.$element.prepend(this.$sizingHeader);
|
238
|
+
|
239
|
+
var $sizingCells = this.$sizingHeader.find('th');
|
240
|
+
var columnCount = $sizingCells.length;
|
241
|
+
|
242
|
+
function matchSizingCellWidth(i, el) {
|
243
|
+
if (i === columnCount - 1) return;
|
244
|
+
$(el).width($sizingCells.eq(i).width());
|
245
|
+
}
|
246
|
+
|
247
|
+
this.$colheader.find('th').each(matchSizingCellWidth);
|
248
|
+
this.$tbody.find('tr:first > td').each(matchSizingCellWidth);
|
249
|
+
|
250
|
+
this.$sizingHeader.detach();
|
251
|
+
}
|
195
252
|
};
|
196
253
|
|
197
254
|
|
@@ -217,4 +274,4 @@
|
|
217
274
|
|
218
275
|
$.fn.datagrid.Constructor = Datagrid;
|
219
276
|
|
220
|
-
}(window.jQuery);
|
277
|
+
}(window.jQuery);
|
@@ -2843,11 +2843,8 @@ define('fuelux/combobox',['require','jquery','./util'],function (require) {
|
|
2843
2843
|
setDefaultSelection: function () {
|
2844
2844
|
var selector = 'li[data-selected=true]:first';
|
2845
2845
|
var item = this.$element.find(selector);
|
2846
|
-
|
2847
|
-
|
2848
|
-
this.selectByIndex(0);
|
2849
|
-
}
|
2850
|
-
else {
|
2846
|
+
|
2847
|
+
if (item.length > 0) {
|
2851
2848
|
// select by data-attribute
|
2852
2849
|
this.selectBySelector(selector);
|
2853
2850
|
item.removeData('selected');
|
@@ -2966,8 +2963,9 @@ define('fuelux/datagrid',['require','jquery'],function(require) {
|
|
2966
2963
|
var Datagrid = function (element, options) {
|
2967
2964
|
this.$element = $(element);
|
2968
2965
|
this.$thead = this.$element.find('thead');
|
2966
|
+
this.$tfoot = this.$element.find('tfoot');
|
2969
2967
|
this.$footer = this.$element.find('tfoot th');
|
2970
|
-
this.$footerchildren = this.$footer.children();
|
2968
|
+
this.$footerchildren = this.$footer.children().show().css('visibility', 'hidden');
|
2971
2969
|
this.$topheader = this.$element.find('thead th');
|
2972
2970
|
this.$searchcontrol = this.$element.find('.search');
|
2973
2971
|
this.$pagesize = this.$element.find('.grid-pagesize');
|
@@ -2983,7 +2981,7 @@ define('fuelux/datagrid',['require','jquery'],function(require) {
|
|
2983
2981
|
this.$tbody = $('<tbody>').insertAfter(this.$thead);
|
2984
2982
|
this.$colheader = $('<tr>').appendTo(this.$thead);
|
2985
2983
|
|
2986
|
-
this.options = $.extend({}, $.fn.datagrid.defaults, options);
|
2984
|
+
this.options = $.extend(true, {}, $.fn.datagrid.defaults, options);
|
2987
2985
|
this.options.dataOptions.pageSize = parseInt(this.$pagesize.val(), 10);
|
2988
2986
|
this.columns = this.options.dataSource.columns();
|
2989
2987
|
|
@@ -2995,6 +2993,9 @@ define('fuelux/datagrid',['require','jquery'],function(require) {
|
|
2995
2993
|
this.$pageinput.on('change', $.proxy(this.pageChanged, this));
|
2996
2994
|
|
2997
2995
|
this.renderColumns();
|
2996
|
+
|
2997
|
+
if (this.options.stretchHeight) this.initStretchHeight();
|
2998
|
+
|
2998
2999
|
this.renderData();
|
2999
3000
|
};
|
3000
3001
|
|
@@ -3055,13 +3056,14 @@ define('fuelux/datagrid',['require','jquery'],function(require) {
|
|
3055
3056
|
var self = this;
|
3056
3057
|
|
3057
3058
|
this.$tbody.html(this.placeholderRowHTML(this.options.loadingHTML));
|
3058
|
-
this.$footerchildren.hide();
|
3059
3059
|
|
3060
3060
|
this.options.dataSource.data(this.options.dataOptions, function (data) {
|
3061
3061
|
var itemdesc = (data.count === 1) ? self.options.itemText : self.options.itemsText;
|
3062
3062
|
var rowHTML = '';
|
3063
3063
|
|
3064
|
-
self.$footerchildren.
|
3064
|
+
self.$footerchildren.css('visibility', function () {
|
3065
|
+
return (data.count > 0) ? 'visible' : 'hidden';
|
3066
|
+
});
|
3065
3067
|
|
3066
3068
|
self.$pageinput.val(data.page);
|
3067
3069
|
self.$pageslabel.text(data.pages);
|
@@ -3083,13 +3085,15 @@ define('fuelux/datagrid',['require','jquery'],function(require) {
|
|
3083
3085
|
if (!rowHTML) rowHTML = self.placeholderRowHTML('0 ' + self.options.itemsText);
|
3084
3086
|
|
3085
3087
|
self.$tbody.html(rowHTML);
|
3088
|
+
self.stretchHeight();
|
3089
|
+
|
3086
3090
|
self.$element.trigger('loaded');
|
3087
3091
|
});
|
3088
3092
|
|
3089
3093
|
},
|
3090
3094
|
|
3091
3095
|
placeholderRowHTML: function (content) {
|
3092
|
-
return '<tr><td style="text-align:center;padding:20px;" colspan="' +
|
3096
|
+
return '<tr><td style="text-align:center;padding:20px;border-bottom:none;" colspan="' +
|
3093
3097
|
this.columns.length + '">' + content + '</td></tr>';
|
3094
3098
|
},
|
3095
3099
|
|
@@ -3143,8 +3147,58 @@ define('fuelux/datagrid',['require','jquery'],function(require) {
|
|
3143
3147
|
reload: function () {
|
3144
3148
|
this.options.dataOptions.pageIndex = 0;
|
3145
3149
|
this.renderData();
|
3146
|
-
}
|
3150
|
+
},
|
3151
|
+
|
3152
|
+
initStretchHeight: function () {
|
3153
|
+
this.$gridContainer = this.$element.parent();
|
3154
|
+
|
3155
|
+
this.$element.wrap('<div class="datagrid-stretch-wrapper">');
|
3156
|
+
this.$stretchWrapper = this.$element.parent();
|
3157
|
+
|
3158
|
+
this.$headerTable = $('<table>').attr('class', this.$element.attr('class'));
|
3159
|
+
this.$footerTable = this.$headerTable.clone();
|
3160
|
+
|
3161
|
+
this.$headerTable.prependTo(this.$gridContainer).addClass('datagrid-stretch-header');
|
3162
|
+
this.$thead.detach().appendTo(this.$headerTable);
|
3163
|
+
|
3164
|
+
this.$sizingHeader = this.$thead.clone();
|
3165
|
+
this.$sizingHeader.find('tr:first').remove();
|
3166
|
+
|
3167
|
+
this.$footerTable.appendTo(this.$gridContainer).addClass('datagrid-stretch-footer');
|
3168
|
+
this.$tfoot.detach().appendTo(this.$footerTable);
|
3169
|
+
},
|
3170
|
+
|
3171
|
+
stretchHeight: function () {
|
3172
|
+
if (!this.$gridContainer) return;
|
3173
|
+
|
3174
|
+
this.setColumnWidths();
|
3175
|
+
|
3176
|
+
var targetHeight = this.$gridContainer.height();
|
3177
|
+
var headerHeight = this.$headerTable.outerHeight();
|
3178
|
+
var footerHeight = this.$footerTable.outerHeight();
|
3179
|
+
var overhead = headerHeight + footerHeight;
|
3180
|
+
|
3181
|
+
this.$stretchWrapper.height(targetHeight - overhead);
|
3182
|
+
},
|
3183
|
+
|
3184
|
+
setColumnWidths: function () {
|
3185
|
+
if (!this.$sizingHeader) return;
|
3186
|
+
|
3187
|
+
this.$element.prepend(this.$sizingHeader);
|
3188
|
+
|
3189
|
+
var $sizingCells = this.$sizingHeader.find('th');
|
3190
|
+
var columnCount = $sizingCells.length;
|
3191
|
+
|
3192
|
+
function matchSizingCellWidth(i, el) {
|
3193
|
+
if (i === columnCount - 1) return;
|
3194
|
+
$(el).width($sizingCells.eq(i).width());
|
3195
|
+
}
|
3147
3196
|
|
3197
|
+
this.$colheader.find('th').each(matchSizingCellWidth);
|
3198
|
+
this.$tbody.find('tr:first > td').each(matchSizingCellWidth);
|
3199
|
+
|
3200
|
+
this.$sizingHeader.detach();
|
3201
|
+
}
|
3148
3202
|
};
|
3149
3203
|
|
3150
3204
|
|
@@ -3372,9 +3426,14 @@ define('fuelux/search',['require','jquery'],function(require) {
|
|
3372
3426
|
var Search = function (element, options) {
|
3373
3427
|
this.$element = $(element);
|
3374
3428
|
this.options = $.extend({}, $.fn.search.defaults, options);
|
3375
|
-
|
3376
|
-
this.$
|
3377
|
-
|
3429
|
+
|
3430
|
+
this.$button = this.$element.find('button')
|
3431
|
+
.on('click', $.proxy(this.buttonclicked, this));
|
3432
|
+
|
3433
|
+
this.$input = this.$element.find('input')
|
3434
|
+
.on('keydown', $.proxy(this.keypress, this))
|
3435
|
+
.on('keyup', $.proxy(this.keypressed, this));
|
3436
|
+
|
3378
3437
|
this.$icon = this.$element.find('i');
|
3379
3438
|
this.activeSearch = '';
|
3380
3439
|
};
|
@@ -3430,6 +3489,16 @@ define('fuelux/search',['require','jquery'],function(require) {
|
|
3430
3489
|
inputPresentAndUnchanged = val && (val === this.activeSearch);
|
3431
3490
|
this.$icon.attr('class', inputPresentAndUnchanged ? 'icon-remove' : 'icon-search');
|
3432
3491
|
}
|
3492
|
+
},
|
3493
|
+
|
3494
|
+
disable: function () {
|
3495
|
+
this.$input.attr('disabled', 'disabled');
|
3496
|
+
this.$button.addClass('disabled');
|
3497
|
+
},
|
3498
|
+
|
3499
|
+
enable: function () {
|
3500
|
+
this.$input.removeAttr('disabled');
|
3501
|
+
this.$button.removeClass('disabled');
|
3433
3502
|
}
|
3434
3503
|
|
3435
3504
|
};
|
@@ -3509,6 +3578,8 @@ define('fuelux/spinner',['require','jquery'],function(require) {
|
|
3509
3578
|
this.switches.speed = 500;
|
3510
3579
|
}
|
3511
3580
|
|
3581
|
+
this.lastValue = null;
|
3582
|
+
|
3512
3583
|
this.render();
|
3513
3584
|
|
3514
3585
|
if (this.options.disabled) {
|
@@ -3535,12 +3606,25 @@ define('fuelux/spinner',['require','jquery'],function(require) {
|
|
3535
3606
|
this.options.value = newVal/1;
|
3536
3607
|
}
|
3537
3608
|
|
3538
|
-
this
|
3609
|
+
this.triggerChangedEvent();
|
3539
3610
|
},
|
3540
3611
|
|
3541
3612
|
stopSpin: function () {
|
3542
3613
|
clearTimeout(this.switches.timeout);
|
3543
3614
|
this.switches.count = 1;
|
3615
|
+
this.triggerChangedEvent();
|
3616
|
+
},
|
3617
|
+
|
3618
|
+
triggerChangedEvent: function () {
|
3619
|
+
var currentValue = this.value();
|
3620
|
+
if (currentValue === this.lastValue) return;
|
3621
|
+
|
3622
|
+
this.lastValue = currentValue;
|
3623
|
+
|
3624
|
+
// Primary changed event
|
3625
|
+
this.$element.trigger('changed', currentValue);
|
3626
|
+
|
3627
|
+
// Undocumented, kept for backward compatibility
|
3544
3628
|
this.$element.trigger('change');
|
3545
3629
|
},
|
3546
3630
|
|
@@ -3644,7 +3728,7 @@ define('fuelux/spinner',['require','jquery'],function(require) {
|
|
3644
3728
|
$(function () {
|
3645
3729
|
$('body').on('mousedown.spinner.data-api', '.spinner', function (e) {
|
3646
3730
|
var $this = $(this);
|
3647
|
-
if ($this.data('
|
3731
|
+
if ($this.data('spinner')) return;
|
3648
3732
|
$this.spinner($this.data());
|
3649
3733
|
});
|
3650
3734
|
});
|
@@ -3998,153 +4082,157 @@ define('fuelux/tree',['require','jquery'],function(require) {
|
|
3998
4082
|
* Licensed under the MIT license.
|
3999
4083
|
*/
|
4000
4084
|
|
4001
|
-
define('fuelux/wizard',['require','jquery'],function(require) {
|
4085
|
+
define('fuelux/wizard',['require','jquery'],function (require) {
|
4002
4086
|
|
4003
|
-
|
4087
|
+
var $ = require('jquery');
|
4004
4088
|
|
4005
4089
|
|
4006
|
-
|
4090
|
+
// WIZARD CONSTRUCTOR AND PROTOTYPE
|
4007
4091
|
|
4008
|
-
|
4009
|
-
|
4010
|
-
|
4011
|
-
|
4012
|
-
|
4013
|
-
|
4014
|
-
|
4015
|
-
|
4016
|
-
|
4017
|
-
// handle events
|
4018
|
-
this.$prevBtn.on('click', $.proxy(this.previous, this));
|
4019
|
-
this.$nextBtn.on('click', $.proxy(this.next, this));
|
4020
|
-
this.$element.on('click', 'li.complete', $.proxy(this.stepclicked, this));
|
4021
|
-
};
|
4092
|
+
var Wizard = function (element, options) {
|
4093
|
+
this.$element = $(element);
|
4094
|
+
this.options = $.extend({}, $.fn.wizard.defaults, options);
|
4095
|
+
this.currentStep = 1;
|
4096
|
+
this.numSteps = this.$element.find('li').length;
|
4097
|
+
this.$prevBtn = this.$element.find('button.btn-prev');
|
4098
|
+
this.$nextBtn = this.$element.find('button.btn-next');
|
4099
|
+
this.nextText = this.$nextBtn.text();
|
4022
4100
|
|
4023
|
-
|
4024
|
-
|
4025
|
-
|
4026
|
-
|
4027
|
-
|
4028
|
-
var canMoveNext = (this.currentStep + 1 <= this.numSteps);
|
4029
|
-
var lastStep = (this.currentStep === this.numSteps);
|
4030
|
-
var canMovePrev = (this.currentStep > 1);
|
4031
|
-
var firstStep = (this.currentStep === 1);
|
4032
|
-
|
4033
|
-
// disable buttons based on current step
|
4034
|
-
this.$prevBtn.attr('disabled', (firstStep === true || canMovePrev === false));
|
4035
|
-
this.$nextBtn.attr('disabled', (lastStep === true || canMoveNext === false));
|
4036
|
-
|
4037
|
-
// change button text of last step, if specified
|
4038
|
-
var data = this.$nextBtn.data();
|
4039
|
-
if(data && data.last) {
|
4040
|
-
this.lastText = data.last;
|
4041
|
-
if(typeof this.lastText !== 'undefined') {
|
4042
|
-
var text = (lastStep !== true) ? this.nextText : this.lastText;
|
4043
|
-
this.$nextBtn
|
4044
|
-
.contents()
|
4045
|
-
.filter(function() {
|
4046
|
-
return this.nodeType === 3;
|
4047
|
-
}).replaceWith(text);
|
4048
|
-
}
|
4049
|
-
}
|
4101
|
+
// handle events
|
4102
|
+
this.$prevBtn.on('click', $.proxy(this.previous, this));
|
4103
|
+
this.$nextBtn.on('click', $.proxy(this.next, this));
|
4104
|
+
this.$element.on('click', 'li.complete', $.proxy(this.stepclicked, this));
|
4105
|
+
};
|
4050
4106
|
|
4051
|
-
|
4052
|
-
|
4053
|
-
|
4054
|
-
|
4055
|
-
|
4056
|
-
|
4057
|
-
|
4058
|
-
|
4059
|
-
|
4060
|
-
|
4061
|
-
|
4062
|
-
|
4063
|
-
|
4064
|
-
|
4065
|
-
|
4066
|
-
|
4067
|
-
|
4068
|
-
|
4069
|
-
|
4070
|
-
|
4071
|
-
|
4072
|
-
|
4073
|
-
|
4074
|
-
|
4107
|
+
Wizard.prototype = {
|
4108
|
+
|
4109
|
+
constructor: Wizard,
|
4110
|
+
|
4111
|
+
setState: function () {
|
4112
|
+
var canMovePrev = (this.currentStep > 1);
|
4113
|
+
var firstStep = (this.currentStep === 1);
|
4114
|
+
var lastStep = (this.currentStep === this.numSteps);
|
4115
|
+
|
4116
|
+
// disable buttons based on current step
|
4117
|
+
this.$prevBtn.attr('disabled', (firstStep === true || canMovePrev === false));
|
4118
|
+
|
4119
|
+
// change button text of last step, if specified
|
4120
|
+
var data = this.$nextBtn.data();
|
4121
|
+
if (data && data.last) {
|
4122
|
+
this.lastText = data.last;
|
4123
|
+
if (typeof this.lastText !== 'undefined') {
|
4124
|
+
// replace text
|
4125
|
+
var text = (lastStep !== true) ? this.nextText : this.lastText;
|
4126
|
+
this.$nextBtn
|
4127
|
+
.contents()
|
4128
|
+
.filter(function () {
|
4129
|
+
return this.nodeType === 3;
|
4130
|
+
}).replaceWith(text);
|
4131
|
+
}
|
4132
|
+
}
|
4075
4133
|
|
4076
|
-
|
4077
|
-
|
4134
|
+
// reset classes for all steps
|
4135
|
+
var $steps = this.$element.find('li');
|
4136
|
+
$steps.removeClass('active').removeClass('complete');
|
4137
|
+
$steps.find('span.badge').removeClass('badge-info').removeClass('badge-success');
|
4138
|
+
|
4139
|
+
// set class for all previous steps
|
4140
|
+
var prevSelector = 'li:lt(' + (this.currentStep - 1) + ')';
|
4141
|
+
var $prevSteps = this.$element.find(prevSelector);
|
4142
|
+
$prevSteps.addClass('complete');
|
4143
|
+
$prevSteps.find('span.badge').addClass('badge-success');
|
4144
|
+
|
4145
|
+
// set class for current step
|
4146
|
+
var currentSelector = 'li:eq(' + (this.currentStep - 1) + ')';
|
4147
|
+
var $currentStep = this.$element.find(currentSelector);
|
4148
|
+
$currentStep.addClass('active');
|
4149
|
+
$currentStep.find('span.badge').addClass('badge-info');
|
4150
|
+
|
4151
|
+
// set display of target element
|
4152
|
+
var target = $currentStep.data().target;
|
4153
|
+
$('.step-pane').removeClass('active');
|
4154
|
+
$(target).addClass('active');
|
4155
|
+
|
4156
|
+
this.$element.trigger('changed');
|
4157
|
+
},
|
4078
4158
|
|
4079
|
-
|
4080
|
-
|
4081
|
-
this.setState();
|
4082
|
-
},
|
4159
|
+
stepclicked: function (e) {
|
4160
|
+
var li = $(e.currentTarget);
|
4083
4161
|
|
4084
|
-
|
4085
|
-
|
4086
|
-
|
4087
|
-
|
4088
|
-
this.$element.trigger(e, {step:this.currentStep, direction:'previous'});
|
4089
|
-
if (e.isDefaultPrevented()) return;
|
4162
|
+
var index = $('.steps li').index(li);
|
4163
|
+
this.currentStep = (index + 1);
|
4164
|
+
this.setState();
|
4165
|
+
},
|
4090
4166
|
|
4091
|
-
|
4092
|
-
|
4093
|
-
|
4094
|
-
|
4167
|
+
previous: function () {
|
4168
|
+
var canMovePrev = (this.currentStep > 1);
|
4169
|
+
if (canMovePrev) {
|
4170
|
+
var e = $.Event('change');
|
4171
|
+
this.$element.trigger(e, {step: this.currentStep, direction: 'previous'});
|
4172
|
+
if (e.isDefaultPrevented()) return;
|
4173
|
+
|
4174
|
+
this.currentStep -= 1;
|
4175
|
+
this.setState();
|
4176
|
+
}
|
4177
|
+
},
|
4095
4178
|
|
4096
|
-
|
4097
|
-
|
4098
|
-
|
4099
|
-
var e = $.Event('change');
|
4100
|
-
this.$element.trigger(e, {step:this.currentStep, direction:'next'});
|
4179
|
+
next: function () {
|
4180
|
+
var canMoveNext = (this.currentStep + 1 <= this.numSteps);
|
4181
|
+
var lastStep = (this.currentStep === this.numSteps);
|
4101
4182
|
|
4102
|
-
|
4183
|
+
if (canMoveNext) {
|
4184
|
+
var e = $.Event('change');
|
4185
|
+
this.$element.trigger(e, {step: this.currentStep, direction: 'next'});
|
4103
4186
|
|
4104
|
-
|
4105
|
-
this.setState();
|
4106
|
-
}
|
4107
|
-
},
|
4187
|
+
if (e.isDefaultPrevented()) return;
|
4108
4188
|
|
4109
|
-
|
4110
|
-
|
4111
|
-
|
4112
|
-
|
4113
|
-
|
4114
|
-
|
4189
|
+
this.currentStep += 1;
|
4190
|
+
this.setState();
|
4191
|
+
}
|
4192
|
+
else if (lastStep) {
|
4193
|
+
this.$element.trigger('finished');
|
4194
|
+
}
|
4195
|
+
},
|
4115
4196
|
|
4197
|
+
selectedItem: function (val) {
|
4198
|
+
return {
|
4199
|
+
step: this.currentStep
|
4200
|
+
};
|
4201
|
+
}
|
4202
|
+
};
|
4116
4203
|
|
4117
|
-
// WIZARD PLUGIN DEFINITION
|
4118
4204
|
|
4119
|
-
|
4120
|
-
var methodReturn;
|
4205
|
+
// WIZARD PLUGIN DEFINITION
|
4121
4206
|
|
4122
|
-
|
4123
|
-
|
4124
|
-
var data = $this.data('wizard');
|
4125
|
-
var options = typeof option === 'object' && option;
|
4207
|
+
$.fn.wizard = function (option, value) {
|
4208
|
+
var methodReturn;
|
4126
4209
|
|
4127
|
-
|
4128
|
-
|
4129
|
-
|
4210
|
+
var $set = this.each(function () {
|
4211
|
+
var $this = $(this);
|
4212
|
+
var data = $this.data('wizard');
|
4213
|
+
var options = typeof option === 'object' && option;
|
4130
4214
|
|
4131
|
-
|
4132
|
-
|
4215
|
+
if (!data) $this.data('wizard', (data = new Wizard(this, options)));
|
4216
|
+
if (typeof option === 'string') methodReturn = data[option](value);
|
4217
|
+
});
|
4133
4218
|
|
4134
|
-
|
4219
|
+
return (methodReturn === undefined) ? $set : methodReturn;
|
4220
|
+
};
|
4135
4221
|
|
4136
|
-
|
4222
|
+
$.fn.wizard.defaults = {};
|
4137
4223
|
|
4224
|
+
$.fn.wizard.Constructor = Wizard;
|
4138
4225
|
|
4139
|
-
// WIZARD DATA-API
|
4140
4226
|
|
4141
|
-
|
4142
|
-
|
4143
|
-
|
4144
|
-
|
4145
|
-
|
4146
|
-
|
4147
|
-
|
4227
|
+
// WIZARD DATA-API
|
4228
|
+
|
4229
|
+
$(function () {
|
4230
|
+
$('body').on('mousedown.wizard.data-api', '.wizard', function () {
|
4231
|
+
var $this = $(this);
|
4232
|
+
if ($this.data('wizard')) return;
|
4233
|
+
$this.wizard($this.data());
|
4234
|
+
});
|
4235
|
+
});
|
4148
4236
|
|
4149
4237
|
});
|
4150
4238
|
|
@@ -13,9 +13,14 @@
|
|
13
13
|
var Search = function (element, options) {
|
14
14
|
this.$element = $(element);
|
15
15
|
this.options = $.extend({}, $.fn.search.defaults, options);
|
16
|
-
|
17
|
-
this.$
|
18
|
-
|
16
|
+
|
17
|
+
this.$button = this.$element.find('button')
|
18
|
+
.on('click', $.proxy(this.buttonclicked, this));
|
19
|
+
|
20
|
+
this.$input = this.$element.find('input')
|
21
|
+
.on('keydown', $.proxy(this.keypress, this))
|
22
|
+
.on('keyup', $.proxy(this.keypressed, this));
|
23
|
+
|
19
24
|
this.$icon = this.$element.find('i');
|
20
25
|
this.activeSearch = '';
|
21
26
|
};
|
@@ -71,6 +76,16 @@
|
|
71
76
|
inputPresentAndUnchanged = val && (val === this.activeSearch);
|
72
77
|
this.$icon.attr('class', inputPresentAndUnchanged ? 'icon-remove' : 'icon-search');
|
73
78
|
}
|
79
|
+
},
|
80
|
+
|
81
|
+
disable: function () {
|
82
|
+
this.$input.attr('disabled', 'disabled');
|
83
|
+
this.$button.addClass('disabled');
|
84
|
+
},
|
85
|
+
|
86
|
+
enable: function () {
|
87
|
+
this.$input.removeAttr('disabled');
|
88
|
+
this.$button.removeClass('disabled');
|
74
89
|
}
|
75
90
|
|
76
91
|
};
|
@@ -104,4 +119,4 @@
|
|
104
119
|
});
|
105
120
|
});
|
106
121
|
|
107
|
-
}(window.jQuery);
|
122
|
+
}(window.jQuery);
|
@@ -39,6 +39,8 @@
|
|
39
39
|
this.switches.speed = 500;
|
40
40
|
}
|
41
41
|
|
42
|
+
this.lastValue = null;
|
43
|
+
|
42
44
|
this.render();
|
43
45
|
|
44
46
|
if (this.options.disabled) {
|
@@ -65,12 +67,25 @@
|
|
65
67
|
this.options.value = newVal/1;
|
66
68
|
}
|
67
69
|
|
68
|
-
this
|
70
|
+
this.triggerChangedEvent();
|
69
71
|
},
|
70
72
|
|
71
73
|
stopSpin: function () {
|
72
74
|
clearTimeout(this.switches.timeout);
|
73
75
|
this.switches.count = 1;
|
76
|
+
this.triggerChangedEvent();
|
77
|
+
},
|
78
|
+
|
79
|
+
triggerChangedEvent: function () {
|
80
|
+
var currentValue = this.value();
|
81
|
+
if (currentValue === this.lastValue) return;
|
82
|
+
|
83
|
+
this.lastValue = currentValue;
|
84
|
+
|
85
|
+
// Primary changed event
|
86
|
+
this.$element.trigger('changed', currentValue);
|
87
|
+
|
88
|
+
// Undocumented, kept for backward compatibility
|
74
89
|
this.$element.trigger('change');
|
75
90
|
},
|
76
91
|
|
@@ -174,9 +189,9 @@
|
|
174
189
|
$(function () {
|
175
190
|
$('body').on('mousedown.spinner.data-api', '.spinner', function (e) {
|
176
191
|
var $this = $(this);
|
177
|
-
if ($this.data('
|
192
|
+
if ($this.data('spinner')) return;
|
178
193
|
$this.spinner($this.data());
|
179
194
|
});
|
180
195
|
});
|
181
196
|
|
182
|
-
}(window.jQuery);
|
197
|
+
}(window.jQuery);
|
@@ -8,147 +8,151 @@
|
|
8
8
|
|
9
9
|
!function ($) {
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
11
|
+
// WIZARD CONSTRUCTOR AND PROTOTYPE
|
12
|
+
|
13
|
+
var Wizard = function (element, options) {
|
14
|
+
this.$element = $(element);
|
15
|
+
this.options = $.extend({}, $.fn.wizard.defaults, options);
|
16
|
+
this.currentStep = 1;
|
17
|
+
this.numSteps = this.$element.find('li').length;
|
18
|
+
this.$prevBtn = this.$element.find('button.btn-prev');
|
19
|
+
this.$nextBtn = this.$element.find('button.btn-next');
|
20
|
+
this.nextText = this.$nextBtn.text();
|
21
|
+
|
22
|
+
// handle events
|
23
|
+
this.$prevBtn.on('click', $.proxy(this.previous, this));
|
24
|
+
this.$nextBtn.on('click', $.proxy(this.next, this));
|
25
|
+
this.$element.on('click', 'li.complete', $.proxy(this.stepclicked, this));
|
26
|
+
};
|
27
|
+
|
28
|
+
Wizard.prototype = {
|
29
|
+
|
30
|
+
constructor: Wizard,
|
31
|
+
|
32
|
+
setState: function () {
|
33
|
+
var canMovePrev = (this.currentStep > 1);
|
34
|
+
var firstStep = (this.currentStep === 1);
|
35
|
+
var lastStep = (this.currentStep === this.numSteps);
|
36
|
+
|
37
|
+
// disable buttons based on current step
|
38
|
+
this.$prevBtn.attr('disabled', (firstStep === true || canMovePrev === false));
|
39
|
+
|
40
|
+
// change button text of last step, if specified
|
41
|
+
var data = this.$nextBtn.data();
|
42
|
+
if (data && data.last) {
|
43
|
+
this.lastText = data.last;
|
44
|
+
if (typeof this.lastText !== 'undefined') {
|
45
|
+
// replace text
|
46
|
+
var text = (lastStep !== true) ? this.nextText : this.lastText;
|
47
|
+
this.$nextBtn
|
48
|
+
.contents()
|
49
|
+
.filter(function () {
|
50
|
+
return this.nodeType === 3;
|
51
|
+
}).replaceWith(text);
|
52
|
+
}
|
53
|
+
}
|
54
|
+
|
55
|
+
// reset classes for all steps
|
56
|
+
var $steps = this.$element.find('li');
|
57
|
+
$steps.removeClass('active').removeClass('complete');
|
58
|
+
$steps.find('span.badge').removeClass('badge-info').removeClass('badge-success');
|
59
|
+
|
60
|
+
// set class for all previous steps
|
61
|
+
var prevSelector = 'li:lt(' + (this.currentStep - 1) + ')';
|
62
|
+
var $prevSteps = this.$element.find(prevSelector);
|
63
|
+
$prevSteps.addClass('complete');
|
64
|
+
$prevSteps.find('span.badge').addClass('badge-success');
|
65
|
+
|
66
|
+
// set class for current step
|
67
|
+
var currentSelector = 'li:eq(' + (this.currentStep - 1) + ')';
|
68
|
+
var $currentStep = this.$element.find(currentSelector);
|
69
|
+
$currentStep.addClass('active');
|
70
|
+
$currentStep.find('span.badge').addClass('badge-info');
|
71
|
+
|
72
|
+
// set display of target element
|
73
|
+
var target = $currentStep.data().target;
|
74
|
+
$('.step-pane').removeClass('active');
|
75
|
+
$(target).addClass('active');
|
76
|
+
|
77
|
+
this.$element.trigger('changed');
|
78
|
+
},
|
79
|
+
|
80
|
+
stepclicked: function (e) {
|
81
|
+
var li = $(e.currentTarget);
|
82
|
+
|
83
|
+
var index = $('.steps li').index(li);
|
84
|
+
this.currentStep = (index + 1);
|
85
|
+
this.setState();
|
86
|
+
},
|
87
|
+
|
88
|
+
previous: function () {
|
89
|
+
var canMovePrev = (this.currentStep > 1);
|
90
|
+
if (canMovePrev) {
|
91
|
+
var e = $.Event('change');
|
92
|
+
this.$element.trigger(e, {step: this.currentStep, direction: 'previous'});
|
93
|
+
if (e.isDefaultPrevented()) return;
|
94
|
+
|
95
|
+
this.currentStep -= 1;
|
96
|
+
this.setState();
|
97
|
+
}
|
98
|
+
},
|
99
|
+
|
100
|
+
next: function () {
|
101
|
+
var canMoveNext = (this.currentStep + 1 <= this.numSteps);
|
102
|
+
var lastStep = (this.currentStep === this.numSteps);
|
103
|
+
|
104
|
+
if (canMoveNext) {
|
105
|
+
var e = $.Event('change');
|
106
|
+
this.$element.trigger(e, {step: this.currentStep, direction: 'next'});
|
107
|
+
|
108
|
+
if (e.isDefaultPrevented()) return;
|
109
|
+
|
110
|
+
this.currentStep += 1;
|
111
|
+
this.setState();
|
112
|
+
}
|
113
|
+
else if (lastStep) {
|
114
|
+
this.$element.trigger('finished');
|
115
|
+
}
|
116
|
+
},
|
117
|
+
|
118
|
+
selectedItem: function (val) {
|
119
|
+
return {
|
120
|
+
step: this.currentStep
|
121
|
+
};
|
122
|
+
}
|
123
|
+
};
|
124
|
+
|
125
|
+
|
126
|
+
// WIZARD PLUGIN DEFINITION
|
127
|
+
|
128
|
+
$.fn.wizard = function (option, value) {
|
129
|
+
var methodReturn;
|
130
|
+
|
131
|
+
var $set = this.each(function () {
|
132
|
+
var $this = $(this);
|
133
|
+
var data = $this.data('wizard');
|
134
|
+
var options = typeof option === 'object' && option;
|
135
|
+
|
136
|
+
if (!data) $this.data('wizard', (data = new Wizard(this, options)));
|
137
|
+
if (typeof option === 'string') methodReturn = data[option](value);
|
138
|
+
});
|
139
|
+
|
140
|
+
return (methodReturn === undefined) ? $set : methodReturn;
|
141
|
+
};
|
142
|
+
|
143
|
+
$.fn.wizard.defaults = {};
|
144
|
+
|
145
|
+
$.fn.wizard.Constructor = Wizard;
|
146
|
+
|
147
|
+
|
148
|
+
// WIZARD DATA-API
|
149
|
+
|
150
|
+
$(function () {
|
151
|
+
$('body').on('mousedown.wizard.data-api', '.wizard', function () {
|
152
|
+
var $this = $(this);
|
153
|
+
if ($this.data('wizard')) return;
|
154
|
+
$this.wizard($this.data());
|
155
|
+
});
|
156
|
+
});
|
153
157
|
|
154
|
-
}(window.jQuery);
|
158
|
+
}(window.jQuery);
|
@@ -95,4 +95,48 @@
|
|
95
95
|
|
96
96
|
}
|
97
97
|
|
98
|
-
}
|
98
|
+
}
|
99
|
+
|
100
|
+
.datagrid-stretch-header {
|
101
|
+
border-bottom: 0;
|
102
|
+
.border-bottom-radius(0);
|
103
|
+
|
104
|
+
margin-bottom: 0;
|
105
|
+
|
106
|
+
thead:last-child tr:last-child > th:first-child,
|
107
|
+
thead:last-child tr:last-child > th:last-child {
|
108
|
+
.border-bottom-radius(0);
|
109
|
+
}
|
110
|
+
}
|
111
|
+
|
112
|
+
.datagrid-stretch-wrapper {
|
113
|
+
border: 1px solid @tableBorder;
|
114
|
+
overflow: auto;
|
115
|
+
|
116
|
+
.datagrid {
|
117
|
+
border: none;
|
118
|
+
border-collapse: collapse;
|
119
|
+
.border-radius(0);
|
120
|
+
|
121
|
+
margin-bottom: 0;
|
122
|
+
|
123
|
+
td, th {
|
124
|
+
border-bottom: 1px solid @tableBorder;
|
125
|
+
|
126
|
+
&:first-child {
|
127
|
+
border-left: none;
|
128
|
+
.border-radius(0);
|
129
|
+
}
|
130
|
+
}
|
131
|
+
}
|
132
|
+
}
|
133
|
+
|
134
|
+
.datagrid-stretch-footer {
|
135
|
+
border-top: 0;
|
136
|
+
.border-top-radius(0);
|
137
|
+
|
138
|
+
th {
|
139
|
+
border-top: 0;
|
140
|
+
}
|
141
|
+
}
|
142
|
+
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fuelux-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.0
|
5
|
-
prerelease:
|
4
|
+
version: 2.2.0
|
5
|
+
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Stephen Baldwin
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-01-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: railties
|
@@ -66,7 +66,7 @@ dependencies:
|
|
66
66
|
requirements:
|
67
67
|
- - ~>
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: 2.
|
69
|
+
version: 2.2.0
|
70
70
|
type: :development
|
71
71
|
prerelease: false
|
72
72
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -74,7 +74,7 @@ dependencies:
|
|
74
74
|
requirements:
|
75
75
|
- - ~>
|
76
76
|
- !ruby/object:Gem::Version
|
77
|
-
version: 2.
|
77
|
+
version: 2.2.0
|
78
78
|
- !ruby/object:Gem::Dependency
|
79
79
|
name: rails
|
80
80
|
requirement: !ruby/object:Gem::Requirement
|
@@ -182,9 +182,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
182
182
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
183
183
|
none: false
|
184
184
|
requirements:
|
185
|
-
- - ! '
|
185
|
+
- - ! '>='
|
186
186
|
- !ruby/object:Gem::Version
|
187
|
-
version:
|
187
|
+
version: '0'
|
188
188
|
requirements: []
|
189
189
|
rubyforge_project: fuelux-rails
|
190
190
|
rubygems_version: 1.8.24
|