puffer 0.0.23 → 0.0.24

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.
Files changed (100) hide show
  1. data/.rspec +1 -0
  2. data/Gemfile +1 -1
  3. data/Gemfile.lock +55 -53
  4. data/VERSION +1 -1
  5. data/app/assets/javascripts/puffer/application.js +6 -3
  6. data/app/assets/javascripts/puffer/paginator.js +223 -0
  7. data/app/assets/javascripts/puffer/puffer.js +12 -0
  8. data/app/assets/javascripts/puffer/rails.js +1 -0
  9. data/app/assets/javascripts/puffer/{right-autocompleter.js → right-autocompleter-src.js} +45 -41
  10. data/app/assets/javascripts/puffer/{right-calendar.js → right-calendar-src.js} +53 -50
  11. data/app/assets/javascripts/puffer/right-dialog-src.js +768 -0
  12. data/app/assets/javascripts/puffer/right-slider-src.js +507 -0
  13. data/app/assets/javascripts/puffer/{right.js → right-src.js} +1000 -230
  14. data/app/assets/stylesheets/puffer/application.css +2 -0
  15. data/app/assets/stylesheets/puffer/paginator.css +33 -0
  16. data/app/assets/stylesheets/puffer/right.css +4 -0
  17. data/app/components/base/form.html.erb +15 -0
  18. data/app/components/base_component.rb +15 -0
  19. data/app/components/boolean/form.html.erb +3 -0
  20. data/app/components/boolean/index.html.erb +3 -0
  21. data/app/components/boolean_component.rb +13 -0
  22. data/app/components/date_time/form.html.erb +5 -0
  23. data/app/components/date_time_component.rb +12 -0
  24. data/app/components/file/form.html.erb +5 -0
  25. data/app/components/file_component.rb +3 -0
  26. data/app/components/hidden/form.html.erb +1 -0
  27. data/app/components/hidden_component.rb +3 -0
  28. data/app/components/password/form.html.erb +5 -0
  29. data/app/components/password_component.rb +7 -0
  30. data/app/components/references_many/form.html.erb +1 -0
  31. data/app/components/references_many_component.rb +7 -0
  32. data/app/components/references_one/choose.html.erb +9 -0
  33. data/app/components/references_one/form.html.erb +28 -0
  34. data/app/components/references_one_component.rb +12 -0
  35. data/app/components/select/form.html.erb +5 -0
  36. data/app/components/select_component.rb +15 -0
  37. data/app/components/string/form.html.erb +5 -0
  38. data/app/components/string_component.rb +3 -0
  39. data/app/components/text/form.html.erb +5 -0
  40. data/app/components/text_component.rb +3 -0
  41. data/app/controllers/puffer/base.rb +4 -0
  42. data/app/views/puffer/base/_form.html.erb +0 -1
  43. data/app/views/puffer/base/_table.html.erb +25 -0
  44. data/app/views/puffer/base/index.html.erb +14 -28
  45. data/app/views/puffer/tree_base/_record.html.erb +1 -1
  46. data/lib/generators/puffer/component/USAGE +12 -0
  47. data/lib/generators/puffer/component/component_generator.rb +19 -0
  48. data/lib/generators/puffer/component/templates/component.rb +15 -0
  49. data/lib/generators/puffer/component/templates/component_spec.rb +19 -0
  50. data/lib/puffer/component.rb +141 -0
  51. data/lib/puffer/controller/dsl.rb +25 -12
  52. data/lib/puffer/engine.rb +5 -0
  53. data/lib/puffer/extensions/controller.rb +11 -9
  54. data/lib/puffer/extensions/form.rb +2 -1
  55. data/lib/puffer/extensions/mapper.rb +2 -0
  56. data/lib/puffer/field.rb +30 -19
  57. data/lib/puffer/field_set.rb +17 -2
  58. data/lib/puffer.rb +25 -8
  59. data/puffer.gemspec +59 -28
  60. data/spec/app/components/base_component_spec.rb +19 -0
  61. data/spec/app/components/boolean_component_spec.rb +36 -0
  62. data/spec/app/components/date_time_component_spec.rb +26 -0
  63. data/spec/app/components/file_component_spec.rb +25 -0
  64. data/spec/app/components/hidden_component_spec.rb +24 -0
  65. data/spec/app/components/password_component_spec.rb +37 -0
  66. data/spec/app/components/references_many_component_spec.rb +19 -0
  67. data/spec/app/components/references_one_component_spec.rb +19 -0
  68. data/spec/app/components/select_component_spec.rb +30 -0
  69. data/spec/app/components/string_component_spec.rb +25 -0
  70. data/spec/app/components/text_component_spec.rb +25 -0
  71. data/spec/dummy/app/controllers/admin/categories_controller.rb +3 -3
  72. data/spec/dummy/app/controllers/admin/posts_controller.rb +3 -0
  73. data/spec/dummy/app/controllers/{puffer → admin}/sessions_controller.rb +1 -1
  74. data/spec/dummy/app/controllers/admin/users_controller.rb +2 -2
  75. data/spec/dummy/app/models/post.rb +4 -0
  76. data/spec/dummy/db/migrate/20100930132656_create_posts.rb +2 -0
  77. data/spec/dummy/db/migrate/20100930132726_create_categories.rb +1 -0
  78. data/spec/dummy/db/schema.rb +3 -0
  79. data/spec/dummy/db/seeds.rb +6 -1
  80. data/spec/fabricators/categories_fabricator.rb +1 -0
  81. data/spec/fabricators/posts_fabricator.rb +1 -0
  82. data/spec/lib/component_spec.rb +7 -0
  83. data/spec/lib/fields_spec.rb +0 -4
  84. metadata +85 -56
  85. data/app/views/puffer/base/associated/_many.html.erb +0 -56
  86. data/app/views/puffer/base/associated/many.rjs +0 -1
  87. data/app/views/puffer/base/associated/one.js.erb +0 -13
  88. data/app/views/puffer/base/association/_many.html.erb +0 -7
  89. data/lib/puffer/controller/generated.rb +0 -65
  90. data/lib/puffer/customs.rb +0 -64
  91. data/lib/puffer/inputs/association.rb +0 -38
  92. data/lib/puffer/inputs/base.rb +0 -51
  93. data/lib/puffer/inputs/boolean.rb +0 -19
  94. data/lib/puffer/inputs/collection_association.rb +0 -11
  95. data/lib/puffer/inputs/date_time.rb +0 -16
  96. data/lib/puffer/inputs/file.rb +0 -11
  97. data/lib/puffer/inputs/hidden.rb +0 -15
  98. data/lib/puffer/inputs/password.rb +0 -11
  99. data/lib/puffer/inputs/select.rb +0 -19
  100. data/lib/puffer/inputs/text.rb +0 -11
data/.rspec CHANGED
@@ -1,2 +1,3 @@
1
1
  --colour
2
2
  --format documentation
3
+ --backtrace
data/Gemfile CHANGED
@@ -1,6 +1,6 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- gem 'rails', '>= 3.1.0.rc5'
3
+ gem 'rails', '~> 3.1.0'
4
4
  gem 'kaminari'
5
5
  gem 'apotomo'
6
6
 
data/Gemfile.lock CHANGED
@@ -1,74 +1,75 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- actionmailer (3.1.0.rc5)
5
- actionpack (= 3.1.0.rc5)
4
+ actionmailer (3.1.0)
5
+ actionpack (= 3.1.0)
6
6
  mail (~> 2.3.0)
7
- actionpack (3.1.0.rc5)
8
- activemodel (= 3.1.0.rc5)
9
- activesupport (= 3.1.0.rc5)
7
+ actionpack (3.1.0)
8
+ activemodel (= 3.1.0)
9
+ activesupport (= 3.1.0)
10
10
  builder (~> 3.0.0)
11
11
  erubis (~> 2.7.0)
12
12
  i18n (~> 0.6)
13
- rack (~> 1.3.1)
14
- rack-cache (~> 1.0.2)
15
- rack-mount (~> 0.8.1)
16
- rack-test (~> 0.6.0)
17
- sprockets (~> 2.0.0.beta.12)
18
- activemodel (3.1.0.rc5)
19
- activesupport (= 3.1.0.rc5)
20
- bcrypt-ruby (~> 2.1.4)
13
+ rack (~> 1.3.2)
14
+ rack-cache (~> 1.0.3)
15
+ rack-mount (~> 0.8.2)
16
+ rack-test (~> 0.6.1)
17
+ sprockets (~> 2.0.0)
18
+ activemodel (3.1.0)
19
+ activesupport (= 3.1.0)
20
+ bcrypt-ruby (~> 3.0.0)
21
21
  builder (~> 3.0.0)
22
22
  i18n (~> 0.6)
23
- activerecord (3.1.0.rc5)
24
- activemodel (= 3.1.0.rc5)
25
- activesupport (= 3.1.0.rc5)
26
- arel (~> 2.1.4)
23
+ activerecord (3.1.0)
24
+ activemodel (= 3.1.0)
25
+ activesupport (= 3.1.0)
26
+ arel (~> 2.2.1)
27
27
  tzinfo (~> 0.3.29)
28
- activeresource (3.1.0.rc5)
29
- activemodel (= 3.1.0.rc5)
30
- activesupport (= 3.1.0.rc5)
31
- activesupport (3.1.0.rc5)
28
+ activeresource (3.1.0)
29
+ activemodel (= 3.1.0)
30
+ activesupport (= 3.1.0)
31
+ activesupport (3.1.0)
32
32
  multi_json (~> 1.0)
33
33
  apotomo (1.1.2)
34
34
  cells (>= 3.5.6)
35
35
  hooks (~> 0.1.3)
36
36
  onfire (~> 0.2.0)
37
- arel (2.1.4)
38
- bcrypt-ruby (2.1.4)
37
+ arel (2.2.1)
38
+ bcrypt-ruby (3.0.0)
39
39
  builder (3.0.0)
40
- capybara (1.0.0)
40
+ capybara (1.1.1)
41
41
  mime-types (>= 1.16)
42
42
  nokogiri (>= 1.3.3)
43
43
  rack (>= 1.0.0)
44
44
  rack-test (>= 0.5.4)
45
- selenium-webdriver (~> 0.2.0)
45
+ selenium-webdriver (~> 2.0)
46
46
  xpath (~> 0.1.4)
47
- cells (3.6.4)
47
+ cells (3.6.5)
48
48
  actionpack (~> 3.0)
49
49
  railties (~> 3.0)
50
- childprocess (0.2.0)
50
+ childprocess (0.2.2)
51
51
  ffi (~> 1.0.6)
52
52
  database_cleaner (0.6.7)
53
- diff-lcs (1.1.2)
53
+ diff-lcs (1.1.3)
54
54
  erubis (2.7.0)
55
- fabrication (1.0.1)
55
+ fabrication (1.1.0)
56
56
  ffi (1.0.9)
57
- forgery (0.3.12)
57
+ forgery (0.4.3)
58
58
  nokogiri (~> 1.4)
59
59
  git (1.2.5)
60
- guard (0.5.1)
60
+ guard (0.6.3)
61
61
  thor (~> 0.14.6)
62
- guard-rspec (0.4.0)
62
+ guard-rspec (0.4.4)
63
63
  guard (>= 0.4.0)
64
- hike (1.2.0)
64
+ hike (1.2.1)
65
65
  hooks (0.1.4)
66
66
  i18n (0.6.0)
67
67
  jeweler (1.6.4)
68
68
  bundler (~> 1.0)
69
69
  git (>= 1.2.5)
70
70
  rake
71
- json_pure (1.5.3)
71
+ json_pure (1.5.4)
72
+ spruz (~> 0.2.8)
72
73
  kaminari (0.12.4)
73
74
  rails (>= 3.0.0)
74
75
  libnotify (0.5.7)
@@ -78,38 +79,38 @@ GEM
78
79
  treetop (~> 1.4.8)
79
80
  mime-types (1.16)
80
81
  multi_json (1.0.3)
81
- nested_set (1.6.7)
82
+ nested_set (1.6.8)
82
83
  activerecord (>= 3.0.0)
83
84
  railties (>= 3.0.0)
84
85
  nokogiri (1.5.0)
85
86
  onfire (0.2.0)
86
87
  polyglot (0.3.2)
87
88
  rack (1.3.2)
88
- rack-cache (1.0.2)
89
+ rack-cache (1.0.3)
89
90
  rack (>= 0.4)
90
- rack-mount (0.8.1)
91
+ rack-mount (0.8.3)
91
92
  rack (>= 1.0.0)
92
93
  rack-ssl (1.3.2)
93
94
  rack
94
95
  rack-test (0.6.1)
95
96
  rack (>= 1.0)
96
- rails (3.1.0.rc5)
97
- actionmailer (= 3.1.0.rc5)
98
- actionpack (= 3.1.0.rc5)
99
- activerecord (= 3.1.0.rc5)
100
- activeresource (= 3.1.0.rc5)
101
- activesupport (= 3.1.0.rc5)
97
+ rails (3.1.0)
98
+ actionmailer (= 3.1.0)
99
+ actionpack (= 3.1.0)
100
+ activerecord (= 3.1.0)
101
+ activeresource (= 3.1.0)
102
+ activesupport (= 3.1.0)
102
103
  bundler (~> 1.0)
103
- railties (= 3.1.0.rc5)
104
- railties (3.1.0.rc5)
105
- actionpack (= 3.1.0.rc5)
106
- activesupport (= 3.1.0.rc5)
104
+ railties (= 3.1.0)
105
+ railties (3.1.0)
106
+ actionpack (= 3.1.0)
107
+ activesupport (= 3.1.0)
107
108
  rack-ssl (~> 1.3.2)
108
109
  rake (>= 0.8.7)
109
110
  rdoc (~> 3.4)
110
111
  thor (~> 0.14.6)
111
112
  rake (0.9.2)
112
- rdoc (3.9)
113
+ rdoc (3.9.4)
113
114
  rspec (2.6.0)
114
115
  rspec-core (~> 2.6.0)
115
116
  rspec-expectations (~> 2.6.0)
@@ -124,18 +125,19 @@ GEM
124
125
  railties (~> 3.0)
125
126
  rspec (~> 2.6.0)
126
127
  rubyzip (0.9.4)
127
- selenium-webdriver (0.2.2)
128
- childprocess (>= 0.1.9)
128
+ selenium-webdriver (2.5.0)
129
+ childprocess (>= 0.2.1)
129
130
  ffi (>= 1.0.7)
130
131
  json_pure
131
132
  rubyzip
132
- sprockets (2.0.0.beta.12)
133
+ sprockets (2.0.0)
133
134
  hike (~> 1.2)
134
135
  rack (~> 1.0)
135
136
  tilt (~> 1.1, != 1.3.0)
137
+ spruz (0.2.13)
136
138
  sqlite3 (1.3.4)
137
139
  thor (0.14.6)
138
- tilt (1.3.2)
140
+ tilt (1.3.3)
139
141
  treetop (1.4.10)
140
142
  polyglot
141
143
  polyglot (>= 0.3.1)
@@ -158,6 +160,6 @@ DEPENDENCIES
158
160
  kaminari
159
161
  libnotify
160
162
  nested_set
161
- rails (>= 3.1.0.rc5)
163
+ rails (~> 3.1.0)
162
164
  rspec-rails
163
165
  sqlite3
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.23
1
+ 0.0.24
@@ -1,5 +1,8 @@
1
- //= require puffer/right
2
- //= require puffer/right-calendar
3
- //= require puffer/right-autocompleter
1
+ //= require puffer/right-src
2
+ //= require puffer/right-dialog-src
3
+ //= require puffer/right-slider-src
4
+ //= require puffer/right-calendar-src
5
+ //= require puffer/right-autocompleter-src
6
+ //= require puffer/paginator
4
7
  //= require puffer/rails
5
8
  //= require puffer/puffer
@@ -0,0 +1,223 @@
1
+ var Paginator = RightJS.Paginator = (function(document, Math, RightJS) {
2
+
3
+ /**
4
+ * This module defines the basic widgets constructor
5
+ * it creates an abstract proxy with the common functionality
6
+ * which then we reuse and override in the actual widgets
7
+ *
8
+ * Copyright (C) 2010-2011 Nikolay Nemshilov
9
+ */
10
+
11
+ /**
12
+ * The widget units constructor
13
+ *
14
+ * @param String tag-name or Object methods
15
+ * @param Object methods
16
+ * @return Widget wrapper
17
+ */
18
+ function Widget(tag_name, methods) {
19
+ if (!methods) {
20
+ methods = tag_name;
21
+ tag_name = 'DIV';
22
+ }
23
+
24
+ /**
25
+ * An Abstract Widget Unit
26
+ *
27
+ * Copyright (C) 2010 Nikolay Nemshilov
28
+ */
29
+ var AbstractWidget = new RightJS.Class(RightJS.Element.Wrappers[tag_name] || RightJS.Element, {
30
+ /**
31
+ * The common constructor
32
+ *
33
+ * @param Object options
34
+ * @param String optional tag name
35
+ * @return void
36
+ */
37
+ initialize: function(key, options) {
38
+ this.key = key;
39
+ var args = [{'class': 'rui-' + key}];
40
+
41
+ // those two have different constructors
42
+ if (!(this instanceof RightJS.Input || this instanceof RightJS.Form)) {
43
+ args.unshift(tag_name);
44
+ }
45
+ this.$super.apply(this, args);
46
+
47
+ if (RightJS.isString(options)) {
48
+ options = RightJS.$(options);
49
+ }
50
+
51
+ // if the options is another element then
52
+ // try to dynamically rewrap it with our widget
53
+ if (options instanceof RightJS.Element) {
54
+ this._ = options._;
55
+ if ('$listeners' in options) {
56
+ options.$listeners = options.$listeners;
57
+ }
58
+ options = {};
59
+ }
60
+ this.setOptions(options, this);
61
+
62
+ return (RightJS.Wrapper.Cache[RightJS.$uid(this._)] = this);
63
+ },
64
+
65
+ // protected
66
+
67
+ /**
68
+ * Catches the options
69
+ *
70
+ * @param Object user-options
71
+ * @param Element element with contextual options
72
+ * @return void
73
+ */
74
+ setOptions: function(options, element) {
75
+ if (element) {
76
+ options = RightJS.Object.merge(options, new Function("return "+(
77
+ element.get('data-'+ this.key) || '{}'
78
+ ))());
79
+ }
80
+
81
+ if (options) {
82
+ RightJS.Options.setOptions.call(this, RightJS.Object.merge(this.options, options));
83
+ }
84
+
85
+ return this;
86
+ }
87
+ });
88
+
89
+ /**
90
+ * Creating the actual widget class
91
+ *
92
+ */
93
+ var Klass = new RightJS.Class(AbstractWidget, methods);
94
+
95
+ // creating the widget related shortcuts
96
+ RightJS.Observer.createShortcuts(Klass.prototype, Klass.EVENTS || RightJS([]));
97
+
98
+ return Klass;
99
+ }
100
+
101
+
102
+ /**
103
+ * The filenames to include
104
+ *
105
+ * Copyright (C) 2010 Nikolay Nemshilov
106
+ */
107
+ var R = RightJS,
108
+ $ = RightJS.$,
109
+ $$ = RightJS.$$,
110
+ $w = RightJS.$w,
111
+ $E = RightJS.$E,
112
+ $A = RightJS.$A,
113
+ isHash = RightJS.isHash,
114
+ Element = RightJS.Element;
115
+
116
+
117
+ var Paginator = new Widget({
118
+ extend: {
119
+ version: '2.2.3',
120
+
121
+ Options: {
122
+ total: 1,
123
+ current: 1,
124
+ link: ''
125
+ }
126
+ },
127
+
128
+ initialize: function() {
129
+ var args = $A(arguments).compact(), options = args.pop(), element = args.pop();
130
+
131
+ if (!isHash(options) || options instanceof Element) {
132
+ element = $(element || options);
133
+ options = {};
134
+ }
135
+
136
+ this.$super('paginator', element).setOptions(options);
137
+
138
+ this.sliderValue = (this.options.current - 1) * 100 / (this.options.total - 1)
139
+ this.append(
140
+ this.wrapper = new Element('div', {'class': 'rui-paginator-pages-wrapper'}).append(this.pages = new Paginator.Pages(this)),
141
+ this.slider = new Slider({round: 1})
142
+ );
143
+ this.slider.onChange(this.pages.redraw.bind(this.pages));
144
+ this.slider.setValue(this.sliderValue);
145
+ this.pages.redraw();
146
+ },
147
+
148
+ insertTo: function(element, position) {
149
+ this.$super(element, position);
150
+ this.slider.setValue(this.sliderValue);
151
+ this.pages.redraw();
152
+ return this;
153
+ }
154
+ });
155
+
156
+ Paginator.Pages = new Class(Element, {
157
+ initialize: function(paginator) {
158
+ this.paginator = paginator;
159
+ this.options = paginator.options;
160
+
161
+ this.$super('ul', {'class': 'rui-paginator-pages'});
162
+ },
163
+
164
+ redraw: function(event) {
165
+ var value = this.paginator.slider.getValue();
166
+ var current_page = (value * (this.options.total - 1) / 100).round() + 1;
167
+
168
+ this.clean();
169
+ var page = new Paginator.Page(this.paginator, current_page);
170
+ this.append(page);
171
+
172
+ var width = this.paginator.wrapper.dimensions().width;
173
+ var page_width = page.dimensions().width;
174
+ var pages_width = width - page_width/2;
175
+ var track_point = value * pages_width / 100;
176
+
177
+ var i = current_page - 1;
178
+ while (i > 0 && this.dimensions().width < track_point) {
179
+ this.insert(new Paginator.Page(this.paginator, i), 'top');
180
+ i--;
181
+ }
182
+
183
+ var i = current_page + 1;
184
+ while (i <= this.options.total && this.dimensions().width < pages_width) {
185
+ this.append(new Paginator.Page(this.paginator, i));
186
+ i++;
187
+ }
188
+ }
189
+ });
190
+
191
+ Paginator.Page = new Class(Element, {
192
+ initialize: function(paginator, page) {
193
+ this.paginator = paginator;
194
+ this.options = paginator.options;
195
+
196
+ this.$super('li');
197
+
198
+ if (this.options.current == page) {
199
+ this.setClass('current');
200
+ this.insert(new Element('span').update(page));
201
+ } else {
202
+ var link = {'href': '#'}
203
+ RightJS.Object.each(this.options.link, function(key, value) {
204
+ link[key] = value.replace('%{page}', page).replace('%25%7Bpage%7D', page);
205
+ });
206
+
207
+ this.insert(new Element('a', link).update(page));
208
+ }
209
+ }
210
+ });
211
+
212
+ $(document).on({
213
+ ready: function() {
214
+ $$('.rui-paginator').each(function(element) {
215
+ if (!(element instanceof Paginator)) {
216
+ element = new Paginator(element);
217
+ }
218
+ });
219
+ }
220
+ });
221
+
222
+ return Paginator;
223
+ })(document, Math, RightJS);
@@ -8,3 +8,15 @@ var association_done = function(event) {
8
8
  this.prev('input[type=text]').value('').enable();
9
9
  this.next('input[type=hidden]').value('');
10
10
  });
11
+
12
+ 'a[data-dialog-uri]'.on('click', function(event) {
13
+ if (event.which != 1) return;
14
+ event.stop();
15
+
16
+ var dialog = event.find('.rui-dialog');
17
+ if (!dialog || !(dialog instanceof Dialog)) {
18
+ dialog = new Dialog({expandable: true});
19
+ }
20
+
21
+ dialog.load(this.get('data-dialog-uri'));
22
+ });
@@ -25,6 +25,7 @@
25
25
  });
26
26
 
27
27
  'a[data-confirm], a[data-method], a[data-remote]'.on('click', function(event) {
28
+ if (event.which != 1) return;
28
29
  if (cancel(this)) { event.stop(); return; }
29
30
 
30
31
  var method = this.get('data-method') || 'get',
@@ -1,8 +1,8 @@
1
1
  /**
2
- * RightJS-UI: Autocompleter
2
+ * RightJS-UI Autocompleter v2.2.1
3
3
  * http://rightjs.org/ui/autocompleter
4
4
  *
5
- * Copyright (C) 2010 Nikolay Nemshilov
5
+ * Copyright (C) 2010-2011 Nikolay Nemshilov
6
6
  */
7
7
  var Autocompleter = RightJS.Autocompleter = (function(document, RightJS) {
8
8
  /**
@@ -13,26 +13,6 @@ var Autocompleter = RightJS.Autocompleter = (function(document, RightJS) {
13
13
  * Copyright (C) 2010-2011 Nikolay Nemshilov
14
14
  */
15
15
 
16
- /**
17
- * Autocompleter initializer
18
- *
19
- * Copyright (C) 2010 Nikolay Nemshilov
20
- */
21
- var R = RightJS,
22
- $ = RightJS.$,
23
- $w = RightJS.$w,
24
- $E = RightJS.$E,
25
- Xhr = RightJS.Xhr,
26
- RegExp = RightJS.RegExp,
27
- isArray = RightJS.isArray;
28
-
29
-
30
-
31
-
32
-
33
-
34
-
35
-
36
16
  /**
37
17
  * The widget units constructor
38
18
  *
@@ -97,12 +77,16 @@ function Widget(tag_name, methods) {
97
77
  * @return void
98
78
  */
99
79
  setOptions: function(options, element) {
100
- element = element || this;
101
- RightJS.Options.setOptions.call(this,
102
- RightJS.Object.merge(options, eval("("+(
80
+ if (element) {
81
+ options = RightJS.Object.merge(options, new Function("return "+(
103
82
  element.get('data-'+ this.key) || '{}'
104
- )+")"))
105
- );
83
+ ))());
84
+ }
85
+
86
+ if (options) {
87
+ RightJS.Options.setOptions.call(this, RightJS.Object.merge(this.options, options));
88
+ }
89
+
106
90
  return this;
107
91
  }
108
92
  });
@@ -114,7 +98,7 @@ function Widget(tag_name, methods) {
114
98
  var Klass = new RightJS.Class(AbstractWidget, methods);
115
99
 
116
100
  // creating the widget related shortcuts
117
- RightJS.Observer.createShortcuts(Klass.prototype, Klass.EVENTS || []);
101
+ RightJS.Observer.createShortcuts(Klass.prototype, Klass.EVENTS || RightJS([]));
118
102
 
119
103
  return Klass;
120
104
  }
@@ -309,6 +293,26 @@ function Toggler_re_position(element, where, resize) {
309
293
  target.setStyle('visibility:visible').hide(null);
310
294
  }
311
295
 
296
+ /**
297
+ * Autocompleter initializer
298
+ *
299
+ * Copyright (C) 2010 Nikolay Nemshilov
300
+ */
301
+ var R = RightJS,
302
+ $ = RightJS.$,
303
+ $w = RightJS.$w,
304
+ $E = RightJS.$E,
305
+ Xhr = RightJS.Xhr,
306
+ RegExp = RightJS.RegExp,
307
+ isArray = RightJS.isArray;
308
+
309
+
310
+
311
+
312
+
313
+
314
+
315
+
312
316
  /**
313
317
  * The RightJS UI Autocompleter unit base class
314
318
  *
@@ -318,7 +322,7 @@ var Autocompleter = new Widget('UL', {
318
322
  include: Toggler,
319
323
 
320
324
  extend: {
321
- version: '2.2.0',
325
+ version: '2.2.1',
322
326
 
323
327
  EVENTS: $w('show hide update load select done'),
324
328
 
@@ -397,7 +401,7 @@ var Autocompleter = new Widget('UL', {
397
401
 
398
402
  if (current) {
399
403
  current.radioClass('current');
400
- this.input.setValue(R(current.html()).stripTags());
404
+ this.input.setValue(current._.textContent || current._.innerText);
401
405
  this.fire('done');
402
406
  }
403
407
 
@@ -602,20 +606,20 @@ $(document).on({
602
606
  }
603
607
  }
604
608
  });
605
- (function() {
606
- var style = document.createElement('style'),
607
- rules = document.createTextNode(" *.rui-dd-menu, *.rui-dd-menu li{margin:0;padding:0;border:none;background:none;list-style:none;font-weight:normal;float:none} *.rui-dd-menu{display:none;position:absolute;z-index:9999;background:white;border:1px solid #BBB;border-radius:.2em;-moz-border-radius:.2em;-webkit-border-radius:.2em;box-shadow:#DDD .2em .2em .4em;-moz-box-shadow:#DDD .2em .2em .4em;-webkit-box-shadow:#DDD .2em .2em .4em} *.rui-dd-menu li{padding:.2em .4em;border-top:none;border-bottom:none;cursor:pointer} *.rui-dd-menu li.current{background:#DDD} *.rui-dd-menu li:hover{background:#EEE}dl.rui-dd-menu dt{padding:.3em .5em;cursor:default;font-weight:bold;font-style:italic;color:#444;background:#EEE}dl.rui-dd-menu dd li{padding-left:1.5em}div.rui-spinner,div.rui-spinner div{margin:0;padding:0;border:none;background:none;list-style:none;font-weight:normal;float:none;display:inline-block; *display:inline; *zoom:1;border-radius:.12em;-moz-border-radius:.12em;-webkit-border-radius:.12em}div.rui-spinner{text-align:center;white-space:nowrap;background:#EEE;border:1px solid #DDD;height:1.2em;padding:0 .2em}div.rui-spinner div{width:.4em;height:70%;background:#BBB;margin-left:1px}div.rui-spinner div:first-child{margin-left:0}div.rui-spinner div.glowing{background:#777}div.rui-re-anchor{margin:0;padding:0;background:none;border:none;float:none;display:inline;position:absolute;z-index:9999}.rui-autocompleter{border-top-color:#DDD !important;border-top-left-radius:0 !important;border-top-right-radius:0 !important;-moz-border-radius-topleft:0 !important;-moz-border-radius-topright:0 !important;-webkit-border-top-left-radius:0 !important;-webkit-border-top-right-radius:0 !important}.rui-autocompleter-spinner{border:none !important;background:none !important;position:absolute;z-index:9999}.rui-autocompleter-spinner div{margin-top:.2em !important; *margin-top:0.1em !important}");
608
609
 
609
- style.type = 'text/css';
610
610
 
611
- if(style.styleSheet) {
612
- style.styleSheet.cssText = rules.nodeValue;
613
- } else {
614
- style.appendChild(rules);
615
- }
611
+ var embed_style = document.createElement('style'),
612
+ embed_rules = document.createTextNode("*.rui-dd-menu, *.rui-dd-menu li{margin:0;padding:0;border:none;background:none;list-style:none;font-weight:normal;float:none} *.rui-dd-menu{display:none;position:absolute;z-index:9999;background:white;border:1px solid #BBB;border-radius:.2em;-moz-border-radius:.2em;-webkit-border-radius:.2em;box-shadow:#DDD .2em .2em .4em;-moz-box-shadow:#DDD .2em .2em .4em;-webkit-box-shadow:#DDD .2em .2em .4em} *.rui-dd-menu li{padding:.2em .4em;border-top:none;border-bottom:none;cursor:pointer} *.rui-dd-menu li.current{background:#DDD} *.rui-dd-menu li:hover{background:#EEE}dl.rui-dd-menu dt{padding:.3em .5em;cursor:default;font-weight:bold;font-style:italic;color:#444;background:#EEE}dl.rui-dd-menu dd li{padding-left:1.5em}div.rui-spinner,div.rui-spinner div{margin:0;padding:0;border:none;background:none;list-style:none;font-weight:normal;float:none;display:inline-block; *display:inline; *zoom:1;border-radius:.12em;-moz-border-radius:.12em;-webkit-border-radius:.12em}div.rui-spinner{text-align:center;white-space:nowrap;background:#EEE;border:1px solid #DDD;height:1.2em;padding:0 .2em}div.rui-spinner div{width:.4em;height:70%;background:#BBB;margin-left:1px}div.rui-spinner div:first-child{margin-left:0}div.rui-spinner div.glowing{background:#777}div.rui-re-anchor{margin:0;padding:0;background:none;border:none;float:none;display:inline;position:absolute;z-index:9999}.rui-autocompleter{border-top-color:#DDD !important;border-top-left-radius:0 !important;border-top-right-radius:0 !important;-moz-border-radius-topleft:0 !important;-moz-border-radius-topright:0 !important;-webkit-border-top-left-radius:0 !important;-webkit-border-top-right-radius:0 !important}.rui-autocompleter-spinner{border:none !important;background:none !important;position:absolute;z-index:9999}.rui-autocompleter-spinner div{margin-top:.2em !important; *margin-top:0.1em !important}");
613
+
614
+ embed_style.type = 'text/css';
615
+ document.getElementsByTagName('head')[0].appendChild(embed_style);
616
+
617
+ if(embed_style.styleSheet) {
618
+ embed_style.styleSheet.cssText = embed_rules.nodeValue;
619
+ } else {
620
+ embed_style.appendChild(embed_rules);
621
+ }
616
622
 
617
- document.getElementsByTagName('head')[0].appendChild(style);
618
- })();
619
623
 
620
624
  return Autocompleter;
621
625
  })(document, RightJS);