fuelux-rails 2.3.2 → 2.4.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +6 -3
- data/lib/fuelux-rails/version.rb +1 -1
- data/lib/generators/fuelux/install_generator.rb +2 -2
- data/lib/tasks/fuelux-rails_tasks.rake +99 -3
- data/vendor/assets/javascripts/fuelux.js +4 -4
- data/vendor/assets/javascripts/fuelux/checkbox.js +22 -3
- data/vendor/assets/javascripts/fuelux/combobox.js +5 -2
- data/vendor/assets/javascripts/fuelux/datagrid.js +61 -12
- data/vendor/assets/javascripts/fuelux/intelligent-dropdown.js +132 -0
- data/vendor/assets/javascripts/fuelux/pillbox.js +64 -12
- data/vendor/assets/javascripts/fuelux/radio.js +11 -1
- data/vendor/assets/javascripts/fuelux/search.js +4 -1
- data/vendor/assets/javascripts/fuelux/select.js +13 -16
- data/vendor/assets/javascripts/fuelux/spinner.js +20 -6
- data/vendor/assets/javascripts/fuelux/tree.js +98 -27
- data/vendor/assets/javascripts/fuelux/util.js +3 -1
- data/vendor/assets/javascripts/fuelux/wizard.js +69 -13
- data/vendor/toolkit/fuelux.less +6 -4
- data/vendor/toolkit/fuelux/checkbox.less +14 -2
- data/vendor/toolkit/fuelux/combobox.less +1 -1
- data/vendor/toolkit/fuelux/datagrid.less +5 -0
- data/vendor/toolkit/fuelux/intelligent-dropdown.less +5 -0
- data/vendor/toolkit/fuelux/pillbox.less +1 -1
- data/vendor/toolkit/fuelux/radio.less +4 -2
- data/vendor/toolkit/fuelux/search.less +1 -1
- data/vendor/toolkit/fuelux/select.less +7 -7
- data/vendor/toolkit/fuelux/spinner.less +1 -1
- data/vendor/toolkit/fuelux/tree.less +5 -3
- data/vendor/toolkit/fuelux/wizard.less +21 -34
- metadata +29 -13
@@ -8,6 +8,8 @@
|
|
8
8
|
|
9
9
|
!function ($) {
|
10
10
|
|
11
|
+
|
12
|
+
|
11
13
|
// PILLBOX CONSTRUCTOR AND PROTOTYPE
|
12
14
|
|
13
15
|
var Pillbox = function (element, options) {
|
@@ -17,25 +19,76 @@
|
|
17
19
|
};
|
18
20
|
|
19
21
|
Pillbox.prototype = {
|
20
|
-
constructor: Pillbox,
|
22
|
+
constructor : Pillbox,
|
21
23
|
|
22
24
|
items: function() {
|
23
25
|
return this.$element.find('li').map(function() {
|
24
26
|
var $this = $(this);
|
25
|
-
return $.extend({
|
27
|
+
return $.extend({
|
28
|
+
text : $this.text()
|
29
|
+
}, $this.data());
|
26
30
|
}).get();
|
27
31
|
},
|
28
32
|
|
29
|
-
itemclicked: function
|
30
|
-
|
33
|
+
itemclicked: function(e) {
|
34
|
+
|
35
|
+
var $li = $(e.currentTarget);
|
36
|
+
var data = $.extend({
|
37
|
+
text : $li.html()
|
38
|
+
}, $li.data());
|
39
|
+
|
40
|
+
$li.remove();
|
31
41
|
e.preventDefault();
|
42
|
+
|
43
|
+
this.$element.trigger('removed', data);
|
44
|
+
},
|
45
|
+
|
46
|
+
itemCount: function() {
|
47
|
+
|
48
|
+
return this.$element.find('li').length;
|
49
|
+
},
|
50
|
+
|
51
|
+
addItem: function(text, value) {
|
52
|
+
|
53
|
+
value = value || text;
|
54
|
+
|
55
|
+
//<li data-value="foo">Item One</li>
|
56
|
+
|
57
|
+
var $li = $('<li data-value="' + value + '">' + text + '</li>');
|
58
|
+
|
59
|
+
this.$element.find('ul').append($li);
|
60
|
+
|
61
|
+
return $li;
|
62
|
+
},
|
63
|
+
|
64
|
+
removeBySelector: function(selector) {
|
65
|
+
|
66
|
+
this.$element.find('ul').find(selector).remove();
|
67
|
+
},
|
68
|
+
|
69
|
+
removeByValue: function(value) {
|
70
|
+
|
71
|
+
var selector = 'li[data-value="' + value + '"]';
|
72
|
+
|
73
|
+
this.removeBySelector(selector);
|
74
|
+
},
|
75
|
+
|
76
|
+
removeByText: function(text) {
|
77
|
+
|
78
|
+
var selector = 'li:contains("' + text + '")';
|
79
|
+
|
80
|
+
this.removeBySelector(selector);
|
81
|
+
},
|
82
|
+
|
83
|
+
clear: function() {
|
84
|
+
|
85
|
+
this.$element.find('ul').empty();
|
32
86
|
}
|
33
87
|
};
|
34
88
|
|
35
|
-
|
36
89
|
// PILLBOX PLUGIN DEFINITION
|
37
90
|
|
38
|
-
$.fn.pillbox = function (option) {
|
91
|
+
$.fn.pillbox = function (option, value1, value2) {
|
39
92
|
var methodReturn;
|
40
93
|
|
41
94
|
var $set = this.each(function () {
|
@@ -43,8 +96,8 @@
|
|
43
96
|
var data = $this.data('pillbox');
|
44
97
|
var options = typeof option === 'object' && option;
|
45
98
|
|
46
|
-
if (!data) $this.data('pillbox', (data = new Pillbox(this, options)));
|
47
|
-
if (typeof option === 'string') methodReturn = data[option]();
|
99
|
+
if (!data) $this.data('pillbox', ( data = new Pillbox(this, options)));
|
100
|
+
if ( typeof option === 'string') methodReturn = data[option](value1, value2);
|
48
101
|
});
|
49
102
|
|
50
103
|
return (methodReturn === undefined) ? $set : methodReturn;
|
@@ -54,15 +107,14 @@
|
|
54
107
|
|
55
108
|
$.fn.pillbox.Constructor = Pillbox;
|
56
109
|
|
57
|
-
|
58
110
|
// PILLBOX DATA-API
|
59
111
|
|
60
112
|
$(function () {
|
61
|
-
$('body').on('mousedown.pillbox.data-api', '.pillbox', function (
|
113
|
+
$('body').on('mousedown.pillbox.data-api', '.pillbox', function () {
|
62
114
|
var $this = $(this);
|
63
115
|
if ($this.data('pillbox')) return;
|
64
116
|
$this.pillbox($this.data());
|
65
117
|
});
|
66
118
|
});
|
67
|
-
|
68
|
-
|
119
|
+
}(window.jQuery);
|
120
|
+
|
@@ -8,6 +8,9 @@
|
|
8
8
|
|
9
9
|
!function ($) {
|
10
10
|
|
11
|
+
|
12
|
+
|
13
|
+
|
11
14
|
// RADIO CONSTRUCTOR AND PROTOTYPE
|
12
15
|
|
13
16
|
var Radio = function (element, options) {
|
@@ -31,9 +34,16 @@
|
|
31
34
|
|
32
35
|
constructor: Radio,
|
33
36
|
|
34
|
-
setState: function ($radio
|
37
|
+
setState: function ($radio) {
|
38
|
+
$radio = $radio || this.$radio;
|
39
|
+
|
35
40
|
var checked = $radio.is(':checked');
|
36
41
|
var disabled = $radio.is(':disabled');
|
42
|
+
|
43
|
+
// reset classes
|
44
|
+
this.$icon.removeClass('checked').removeClass('disabled');
|
45
|
+
|
46
|
+
this.$icon.removeClass('checked disabled');
|
37
47
|
|
38
48
|
// set state of radio
|
39
49
|
if (checked === true) {
|
@@ -8,6 +8,9 @@
|
|
8
8
|
|
9
9
|
!function ($) {
|
10
10
|
|
11
|
+
|
12
|
+
|
13
|
+
|
11
14
|
// SELECT CONSTRUCTOR AND PROTOTYPE
|
12
15
|
|
13
16
|
var Select = function (element, options) {
|
@@ -42,29 +45,23 @@
|
|
42
45
|
},
|
43
46
|
|
44
47
|
resize: function() {
|
45
|
-
var el = $('#selectTextSize')[0];
|
46
|
-
|
47
|
-
// create element if it doesn't exist
|
48
|
-
// used to calculate the length of the longest string
|
49
|
-
if(!el) {
|
50
|
-
$('<div/>').attr({id:'selectTextSize'}).appendTo('body');
|
51
|
-
}
|
52
|
-
|
53
|
-
var width = 0;
|
54
48
|
var newWidth = 0;
|
49
|
+
var sizer = $('<div/>').addClass('select-sizer');
|
50
|
+
var width = 0;
|
51
|
+
|
52
|
+
$('body').append(sizer);
|
55
53
|
|
56
54
|
// iterate through each item to find longest string
|
57
55
|
this.$element.find('a').each(function () {
|
58
|
-
|
59
|
-
|
60
|
-
var $txtSize = $('#selectTextSize');
|
61
|
-
$txtSize.text(txt);
|
62
|
-
newWidth = $txtSize.outerWidth();
|
56
|
+
sizer.text($(this).text());
|
57
|
+
newWidth = sizer.outerWidth();
|
63
58
|
if(newWidth > width) {
|
64
59
|
width = newWidth;
|
65
60
|
}
|
66
61
|
});
|
67
62
|
|
63
|
+
sizer.remove();
|
64
|
+
|
68
65
|
this.$label.width(width);
|
69
66
|
},
|
70
67
|
|
@@ -79,7 +76,7 @@
|
|
79
76
|
},
|
80
77
|
|
81
78
|
selectByValue: function(value) {
|
82
|
-
var selector = 'li[data-value=' + value + ']';
|
79
|
+
var selector = 'li[data-value="' + value + '"]';
|
83
80
|
this.selectBySelector(selector);
|
84
81
|
},
|
85
82
|
|
@@ -156,7 +153,7 @@
|
|
156
153
|
});
|
157
154
|
});
|
158
155
|
|
159
|
-
$('body').on('mousedown.select.data-api', '.select', function (
|
156
|
+
$('body').on('mousedown.select.data-api', '.select', function () {
|
160
157
|
var $this = $(this);
|
161
158
|
if ($this.data('select')) return;
|
162
159
|
$this.select($this.data());
|
@@ -6,7 +6,10 @@
|
|
6
6
|
* Licensed under the MIT license.
|
7
7
|
*/
|
8
8
|
|
9
|
-
!function ($) {
|
9
|
+
!function ($) {
|
10
|
+
|
11
|
+
|
12
|
+
|
10
13
|
|
11
14
|
// SPINNER CONSTRUCTOR AND PROTOTYPE
|
12
15
|
|
@@ -52,8 +55,15 @@
|
|
52
55
|
constructor: Spinner,
|
53
56
|
|
54
57
|
render: function () {
|
55
|
-
this.$input.val(
|
56
|
-
|
58
|
+
var inputValue = this.$input.val();
|
59
|
+
|
60
|
+
if (inputValue) {
|
61
|
+
this.value(inputValue);
|
62
|
+
} else {
|
63
|
+
this.$input.val(this.options.value);
|
64
|
+
}
|
65
|
+
|
66
|
+
this.$input.attr('maxlength', (this.options.max + '').split('').length);
|
57
67
|
},
|
58
68
|
|
59
69
|
change: function () {
|
@@ -127,11 +137,15 @@
|
|
127
137
|
} else {
|
128
138
|
this.value(newVal);
|
129
139
|
}
|
140
|
+
} else if (this.options.cycle) {
|
141
|
+
var cycleVal = dir ? this.options.min : this.options.max;
|
142
|
+
this.value(cycleVal);
|
130
143
|
}
|
131
144
|
},
|
132
145
|
|
133
146
|
value: function (value) {
|
134
|
-
if (
|
147
|
+
if (!isNaN(parseFloat(value)) && isFinite(value)) {
|
148
|
+
value = parseFloat(value);
|
135
149
|
this.options.value = value;
|
136
150
|
this.$input.val(value);
|
137
151
|
return this;
|
@@ -187,11 +201,11 @@
|
|
187
201
|
// SPINNER DATA-API
|
188
202
|
|
189
203
|
$(function () {
|
190
|
-
$('body').on('mousedown.spinner.data-api', '.spinner', function (
|
204
|
+
$('body').on('mousedown.spinner.data-api', '.spinner', function () {
|
191
205
|
var $this = $(this);
|
192
206
|
if ($this.data('spinner')) return;
|
193
207
|
$this.spinner($this.data());
|
194
208
|
});
|
195
209
|
});
|
196
210
|
|
197
|
-
}(window.jQuery);
|
211
|
+
}(window.jQuery);
|
@@ -6,7 +6,10 @@
|
|
6
6
|
* Licensed under the MIT license.
|
7
7
|
*/
|
8
8
|
|
9
|
-
!function ($) {
|
9
|
+
!function ($) {
|
10
|
+
|
11
|
+
|
12
|
+
|
10
13
|
|
11
14
|
// TREE CONSTRUCTOR AND PROTOTYPE
|
12
15
|
|
@@ -29,7 +32,8 @@
|
|
29
32
|
|
30
33
|
populate: function ($el) {
|
31
34
|
var self = this;
|
32
|
-
var
|
35
|
+
var $parent = $el.parent();
|
36
|
+
var loader = $parent.find('.tree-loader:eq(0)');
|
33
37
|
|
34
38
|
loader.show();
|
35
39
|
this.options.dataSource.data($el.data(), function (items) {
|
@@ -49,14 +53,47 @@
|
|
49
53
|
$entity.data(value);
|
50
54
|
}
|
51
55
|
|
56
|
+
// Decorate $entity with data making the element
|
57
|
+
// easily accessable with libraries like jQuery.
|
58
|
+
//
|
59
|
+
// Values are contained within the object returned
|
60
|
+
// for folders and items as dataAttributes:
|
61
|
+
//
|
62
|
+
// {
|
63
|
+
// name: "An Item",
|
64
|
+
// type: 'item',
|
65
|
+
// dataAttributes = {
|
66
|
+
// 'classes': 'required-item red-text',
|
67
|
+
// 'data-parent': parentId,
|
68
|
+
// 'guid': guid
|
69
|
+
// }
|
70
|
+
// };
|
71
|
+
|
72
|
+
var dataAttributes = value.dataAttributes || [];
|
73
|
+
$.each(dataAttributes, function(key, value) {
|
74
|
+
switch (key) {
|
75
|
+
case 'class':
|
76
|
+
case 'classes':
|
77
|
+
case 'className':
|
78
|
+
$entity.addClass(value);
|
79
|
+
break;
|
80
|
+
|
81
|
+
// id, style, data-*
|
82
|
+
default:
|
83
|
+
$entity.attr(key, value);
|
84
|
+
break;
|
85
|
+
}
|
86
|
+
});
|
87
|
+
|
52
88
|
if($el.hasClass('tree-folder-header')) {
|
53
|
-
$
|
89
|
+
$parent.find('.tree-folder-content:eq(0)').append($entity);
|
54
90
|
} else {
|
55
91
|
$el.append($entity);
|
56
92
|
}
|
57
93
|
});
|
58
94
|
|
59
|
-
|
95
|
+
// return newly populated folder
|
96
|
+
self.$element.trigger('loaded', $parent);
|
60
97
|
});
|
61
98
|
},
|
62
99
|
|
@@ -78,7 +115,9 @@
|
|
78
115
|
data.push($el.data());
|
79
116
|
}
|
80
117
|
|
118
|
+
var eventType = 'selected';
|
81
119
|
if($el.hasClass('tree-selected')) {
|
120
|
+
eventType = 'unselected';
|
82
121
|
$el.removeClass('tree-selected');
|
83
122
|
$el.find('i').removeClass('icon-ok').addClass('tree-dot');
|
84
123
|
} else {
|
@@ -93,37 +132,47 @@
|
|
93
132
|
this.$element.trigger('selected', {info: data});
|
94
133
|
}
|
95
134
|
|
135
|
+
// Return new list of selected items, the item
|
136
|
+
// clicked, and the type of event:
|
137
|
+
$el.trigger('updated', {
|
138
|
+
info: data,
|
139
|
+
item: $el,
|
140
|
+
eventType: eventType
|
141
|
+
});
|
96
142
|
},
|
97
143
|
|
98
144
|
selectFolder: function (el) {
|
99
145
|
var $el = $(el);
|
100
|
-
var $
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
146
|
+
var $parent = $el.parent();
|
147
|
+
var $treeFolderContent = $parent.find('.tree-folder-content');
|
148
|
+
var $treeFolderContentFirstChild = $treeFolderContent.eq(0);
|
149
|
+
|
150
|
+
var eventType, classToTarget, classToAdd;
|
151
|
+
if ($el.find('.icon-folder-close').length) {
|
152
|
+
eventType = 'opened';
|
153
|
+
classToTarget = '.icon-folder-close';
|
154
|
+
classToAdd = 'icon-folder-open';
|
155
|
+
|
156
|
+
$treeFolderContentFirstChild.show();
|
157
|
+
if (!$treeFolderContent.children().length) {
|
158
|
+
this.populate($el);
|
107
159
|
}
|
108
|
-
|
109
|
-
$par.find('.icon-folder-close:eq(0)')
|
110
|
-
.removeClass('icon-folder-close')
|
111
|
-
.addClass('icon-folder-open');
|
112
|
-
|
113
|
-
this.$element.trigger('opened', $el.data());
|
114
160
|
} else {
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
161
|
+
eventType = 'closed';
|
162
|
+
classToTarget = '.icon-folder-open';
|
163
|
+
classToAdd = 'icon-folder-close';
|
164
|
+
|
165
|
+
$treeFolderContentFirstChild.hide();
|
166
|
+
if (!this.options.cacheItems) {
|
167
|
+
$treeFolderContentFirstChild.empty();
|
119
168
|
}
|
169
|
+
}
|
120
170
|
|
121
|
-
|
122
|
-
|
123
|
-
|
171
|
+
$parent.find(classToTarget).eq(0)
|
172
|
+
.removeClass('icon-folder-close icon-folder-open')
|
173
|
+
.addClass(classToAdd);
|
124
174
|
|
125
|
-
|
126
|
-
}
|
175
|
+
this.$element.trigger(eventType, $el.data());
|
127
176
|
},
|
128
177
|
|
129
178
|
selectedItems: function () {
|
@@ -134,6 +183,28 @@
|
|
134
183
|
data.push($(value).data());
|
135
184
|
});
|
136
185
|
return data;
|
186
|
+
},
|
187
|
+
|
188
|
+
// collapses open folders
|
189
|
+
collapse: function () {
|
190
|
+
var cacheItems = this.options.cacheItems;
|
191
|
+
|
192
|
+
// find open folders
|
193
|
+
this.$element.find('.icon-folder-open').each(function () {
|
194
|
+
// update icon class
|
195
|
+
var $this = $(this)
|
196
|
+
.removeClass('icon-folder-close icon-folder-open')
|
197
|
+
.addClass('icon-folder-close');
|
198
|
+
|
199
|
+
// "close" or empty folder contents
|
200
|
+
var $parent = $this.parent().parent();
|
201
|
+
var $folder = $parent.children('.tree-folder-content');
|
202
|
+
|
203
|
+
$folder.hide();
|
204
|
+
if (!cacheItems) {
|
205
|
+
$folder.empty();
|
206
|
+
}
|
207
|
+
});
|
137
208
|
}
|
138
209
|
};
|
139
210
|
|
@@ -163,4 +234,4 @@
|
|
163
234
|
|
164
235
|
$.fn.tree.Constructor = Tree;
|
165
236
|
|
166
|
-
}(window.jQuery);
|
237
|
+
}(window.jQuery);
|