fuelux-rails 2.1.3 → 2.2.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
data/COPYING ADDED
@@ -0,0 +1,28 @@
1
+ Copyright (C) 2012, LivePage, LLC.
2
+ All rights reserved.
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
5
+ this software and associated documentation files (the "Software"), to deal in the
6
+ Software without restriction, including without limitation the rights to use, copy,
7
+ modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
8
+ and to permit persons to whom the Software is furnished to do so, subject to the
9
+ following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be included in all
12
+ copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
15
+ INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
16
+ PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
17
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
18
+ CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
19
+ OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20
+
21
+ ====================================================================
22
+
23
+ The above license does not apply to the following bundled components:
24
+
25
+ • Fuel UX Located under vendor/assets/javascripts/fuelux
26
+ • Fuel UX Located under vendor/toolkit/fuelux
27
+
28
+ Licensing information regarding the above packages can be found in the THIRD-PARTY file.
data/README.md ADDED
@@ -0,0 +1,59 @@
1
+ # Fuel UX for Rails 3.1 Asset Pipeline
2
+ Extends Twitter Bootstrap with additional lightweight JavaScript controls. Easy to install, customize, update, and optimize.
3
+
4
+ fuelux-rails project integrates Fuel UX into the Twitter Bootstrap CSS toolkit for Rails 3.1 Asset Pipeline (Rails 3.2 supported)
5
+
6
+ ## Installing Gem
7
+
8
+ Include the [FuelUX Rails gem](http://rubygems.org/gems/fuelux-rails) in Gemfile to install it from [RubyGems.org](http://rubygems.org);
9
+
10
+ ```ruby
11
+ gem "fuelux-rails"
12
+ ```
13
+
14
+ or you can install from latest build;
15
+
16
+ ```ruby
17
+ gem 'fuelux-rails', :git => 'git://github.com/stephenbaldwin/fuelux-rails.git'
18
+ ```
19
+
20
+ You can run bundle from command line
21
+
22
+ bundle install
23
+
24
+
25
+ ## Installing to App (using Generators)
26
+
27
+ You can run following generators to get started with Twitter Bootstrap quickly.
28
+
29
+
30
+ Install (requires directives to Asset pipeline.)
31
+
32
+
33
+ Usage:
34
+
35
+ rails g fuelux:install
36
+
37
+ ## Using with Less
38
+
39
+ Fuel UX was built with Preboot, an open-source pack of mixins and variables to be used in conjunction with Less, a CSS preprocessor for faster and easier web development.
40
+
41
+ ## Using stylesheets with Less
42
+
43
+ You have to require Fuel UX Rails LESS (fuelux.less) in your bootstrap_and_overrides.css.less
44
+
45
+ ```css
46
+ @import 'fuelux.less';
47
+ ```
48
+
49
+ ## Using Javascripts
50
+
51
+ You have to require Fuel UX (fuelux.js) in your application.js
52
+
53
+ ```js
54
+ //= require fuelux.js
55
+
56
+ $(document).ready(function(){
57
+ /* Your javascripts goes here... */
58
+ });
59
+ ```
data/THIRD-PARTY ADDED
@@ -0,0 +1,25 @@
1
+ This file lists bundled packages and their associated licensing terms.
2
+
3
+ MIT
4
+
5
+ • Fuel UX located under vendor/assets/javascripts/fuelux. Copyright (C) 2012, ExactTarget, Inc
6
+ • Fuel UX located under vendor/toolkit/fuelux. Copyright (C) 2012, ExactTarget, Inc
7
+
8
+ All rights reserved.
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
11
+ this software and associated documentation files (the "Software"), to deal in the
12
+ Software without restriction, including without limitation the rights to use, copy,
13
+ modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
14
+ and to permit persons to whom the Software is furnished to do so, subject to the
15
+ following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in all
18
+ copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
21
+ INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
22
+ PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
23
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
24
+ CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
25
+ OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -1,3 +1,3 @@
1
1
  module FueluxRails
2
- VERSION = "2.1.3"
2
+ VERSION = "2.2.0.beta.1"
3
3
  end
Binary file
@@ -0,0 +1,106 @@
1
+ /*
2
+ * Fuel UX Checkbox
3
+ * https://github.com/ExactTarget/fuelux
4
+ *
5
+ * Copyright (c) 2012 ExactTarget
6
+ * Licensed under the MIT license.
7
+ */
8
+
9
+ !function ($) {
10
+
11
+ // CHECKBOX CONSTRUCTOR AND PROTOTYPE
12
+
13
+ var Checkbox = function (element, options) {
14
+
15
+ this.$element = $(element);
16
+ this.options = $.extend({}, $.fn.checkbox.defaults, options);
17
+
18
+ // cache elements
19
+ this.$label = this.$element.parent();
20
+ this.$icon = this.$label.find('i');
21
+ this.$chk = this.$label.find('input[type=checkbox]');
22
+
23
+ // set default state
24
+ this.setState(this.$chk);
25
+
26
+ // handle events
27
+ this.$chk.on('change', $.proxy(this.itemchecked, this));
28
+ };
29
+
30
+ Checkbox.prototype = {
31
+
32
+ constructor: Checkbox,
33
+
34
+ setState: function ($chk) {
35
+ var checked = $chk.is(':checked');
36
+ var disabled = $chk.is(':disabled');
37
+
38
+ // reset classes
39
+ this.$icon.removeClass('checked').removeClass('disabled');
40
+
41
+ // set state of checkbox
42
+ if (checked === true) {
43
+ this.$icon.addClass('checked');
44
+ }
45
+ if (disabled === true) {
46
+ this.$icon.addClass('disabled');
47
+ }
48
+ },
49
+
50
+ enable: function () {
51
+ this.$chk.attr('disabled', false);
52
+ this.$icon.removeClass('disabled');
53
+ },
54
+
55
+ disable: function () {
56
+ this.$chk.attr('disabled', true);
57
+ this.$icon.addClass('disabled');
58
+ },
59
+
60
+ toggle: function () {
61
+ this.$chk.click();
62
+ },
63
+
64
+ itemchecked: function (e) {
65
+ var chk = $(e.target);
66
+ this.setState(chk);
67
+ }
68
+ };
69
+
70
+
71
+ // CHECKBOX PLUGIN DEFINITION
72
+
73
+ $.fn.checkbox = function (option, value) {
74
+ var methodReturn;
75
+
76
+ var $set = this.each(function () {
77
+ var $this = $(this);
78
+ var data = $this.data('checkbox');
79
+ var options = typeof option === 'object' && option;
80
+
81
+ if (!data) $this.data('checkbox', (data = new Checkbox(this, options)));
82
+ if (typeof option === 'string') methodReturn = data[option](value);
83
+ });
84
+
85
+ return (methodReturn === undefined) ? $set : methodReturn;
86
+ };
87
+
88
+ $.fn.checkbox.defaults = {};
89
+
90
+ $.fn.checkbox.Constructor = Checkbox;
91
+
92
+
93
+ // CHECKBOX DATA-API
94
+
95
+ $(function () {
96
+ $(window).on('load', function () {
97
+ //$('i.checkbox').each(function () {
98
+ $('.checkbox-custom > input[type=checkbox]').each(function () {
99
+ var $this = $(this);
100
+ if ($this.data('checkbox')) return;
101
+ $this.checkbox($this.data());
102
+ });
103
+ });
104
+ });
105
+
106
+ }(window.jQuery);
@@ -6,31 +6,129 @@
6
6
  * Licensed under the MIT license.
7
7
  */
8
8
 
9
- !function($){
10
-
11
-
9
+ !function ($) {
10
+
12
11
  // COMBOBOX CONSTRUCTOR AND PROTOTYPE
13
12
 
14
13
  var Combobox = function (element, options) {
15
14
  this.$element = $(element);
16
15
  this.options = $.extend({}, $.fn.combobox.defaults, options);
17
16
  this.$element.on('click', 'a', $.proxy(this.itemclicked, this));
17
+ this.$element.on('change', 'input', $.proxy(this.inputchanged, this));
18
18
  this.$input = this.$element.find('input');
19
+ this.$button = this.$element.find('.btn');
20
+
21
+ // set default selection
22
+ this.setDefaultSelection();
19
23
  };
20
24
 
21
25
  Combobox.prototype = {
22
26
 
23
27
  constructor: Combobox,
24
28
 
25
- select: function (val) {
26
- this.$input.val(val).change();
27
- return this;
29
+ selectedItem: function () {
30
+ var item = this.$selectedItem;
31
+ var data = {};
32
+
33
+ if (item) {
34
+ var txt = this.$selectedItem.text();
35
+ data = $.extend({ text: txt }, this.$selectedItem.data());
36
+ }
37
+ else {
38
+ data = { text: this.$input.val()};
39
+ }
40
+
41
+ return data;
42
+ },
43
+
44
+ selectByText: function (text) {
45
+ var selector = 'li:fuelTextExactCI(' + text + ')';
46
+ this.selectBySelector(selector);
47
+ },
48
+
49
+ selectByValue: function (value) {
50
+ var selector = 'li[data-value=' + value + ']';
51
+ this.selectBySelector(selector);
52
+ },
53
+
54
+ selectByIndex: function (index) {
55
+ // zero-based index
56
+ var selector = 'li:eq(' + index + ')';
57
+ this.selectBySelector(selector);
58
+ },
59
+
60
+ selectBySelector: function (selector) {
61
+ var $item = this.$element.find(selector);
62
+
63
+ if (typeof $item[0] !== 'undefined') {
64
+ this.$selectedItem = $item;
65
+ this.$input.val(this.$selectedItem.text());
66
+ }
67
+ else {
68
+ this.$selectedItem = null;
69
+ }
70
+ },
71
+
72
+ setDefaultSelection: function () {
73
+ var selector = 'li[data-selected=true]:first';
74
+ var item = this.$element.find(selector);
75
+ if (item.length === 0) {
76
+ // select first item
77
+ this.selectByIndex(0);
78
+ }
79
+ else {
80
+ // select by data-attribute
81
+ this.selectBySelector(selector);
82
+ item.removeData('selected');
83
+ item.removeAttr('data-selected');
84
+ }
85
+ },
86
+
87
+ enable: function () {
88
+ this.$input.removeAttr('disabled');
89
+ this.$button.removeClass('disabled');
90
+ },
91
+
92
+ disable: function () {
93
+ this.$input.attr('disabled', true);
94
+ this.$button.addClass('disabled');
28
95
  },
29
96
 
30
97
  itemclicked: function (e) {
31
- this.select($(e.target).text());
32
- $('body').click();
98
+ this.$selectedItem = $(e.target).parent();
99
+
100
+ // set input text and trigger input change event marked as synthetic
101
+ this.$input.val(this.$selectedItem.text()).trigger('change', { synthetic: true });
102
+
103
+ // pass object including text and any data-attributes
104
+ // to onchange event
105
+ var data = this.selectedItem();
106
+
107
+ // trigger changed event
108
+ this.$element.trigger('changed', data);
109
+
33
110
  e.preventDefault();
111
+ },
112
+
113
+ inputchanged: function (e, extra) {
114
+
115
+ // skip processing for internally-generated synthetic event
116
+ // to avoid double processing
117
+ if (extra && extra.synthetic) return;
118
+
119
+ var val = $(e.target).val();
120
+ this.selectByText(val);
121
+
122
+ // find match based on input
123
+ // if no match, pass the input value
124
+ var data = this.selectedItem();
125
+ if (data.text.length === 0) {
126
+ data = { text: val };
127
+ }
128
+
129
+ // trigger changed event
130
+ this.$element.trigger('changed', data);
131
+
34
132
  }
35
133
 
36
134
  };
@@ -38,15 +136,19 @@
38
136
 
39
137
  // COMBOBOX PLUGIN DEFINITION
40
138
 
41
- $.fn.combobox = function (option) {
42
- return this.each(function () {
139
+ $.fn.combobox = function (option, value) {
140
+ var methodReturn;
141
+
142
+ var $set = this.each(function () {
43
143
  var $this = $(this);
44
144
  var data = $this.data('combobox');
45
145
  var options = typeof option === 'object' && option;
46
146
 
47
147
  if (!data) $this.data('combobox', (data = new Combobox(this, options)));
48
- if (typeof option === 'string') data[option]();
148
+ if (typeof option === 'string') methodReturn = data[option](value);
49
149
  });
150
+
151
+ return (methodReturn === undefined) ? $set : methodReturn;
50
152
  };
51
153
 
52
154
  $.fn.combobox.defaults = {};
@@ -57,6 +159,15 @@
57
159
  // COMBOBOX DATA-API
58
160
 
59
161
  $(function () {
162
+
163
+ $(window).on('load', function () {
164
+ $('.combobox').each(function () {
165
+ var $this = $(this);
166
+ if ($this.data('combobox')) return;
167
+ $this.combobox($this.data());
168
+ });
169
+ });
170
+
60
171
  $('body').on('mousedown.combobox.data-api', '.combobox', function (e) {
61
172
  var $this = $(this);
62
173
  if ($this.data('combobox')) return;
@@ -6,8 +6,7 @@
6
6
  * Licensed under the MIT license.
7
7
  */
8
8
 
9
- !function($){
10
-
9
+ !function ($) {
11
10
 
12
11
  // DATAGRID CONSTRUCTOR AND PROTOTYPE
13
12
 
@@ -186,6 +185,11 @@
186
185
  next: function () {
187
186
  this.options.dataOptions.pageIndex++;
188
187
  this.renderData();
188
+ },
189
+
190
+ reload: function () {
191
+ this.options.dataOptions.pageIndex = 0;
192
+ this.renderData();
189
193
  }
190
194
 
191
195
  };
@@ -213,4 +217,4 @@
213
217
 
214
218
  $.fn.datagrid.Constructor = Datagrid;
215
219
 
216
- }(window.jQuery);
220
+ }(window.jQuery);