recordselect 3.1.8 → 3.1.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -239,8 +239,8 @@ RecordSelect.Abstract = Class.extend({
239
239
  var offset = this.obj.offset(), top = this.obj.height() + offset.top;
240
240
  this.container.show();
241
241
  this.container.css('left', offset.left);
242
- if (top + this.container.height() > $(document).height())
243
- this.container.css('top', offset.top - this.container.height());
242
+ if (top + this.container.height() > $(window).height())
243
+ this.container.css('bottom', $(window).height() - offset.top);
244
244
  else this.container.css('top', top);
245
245
 
246
246
  if (this._use_iframe_mask()) {
@@ -239,8 +239,8 @@ RecordSelect.Abstract = Class.extend({
239
239
  var offset = this.obj.offset(), top = this.obj.height() + offset.top;
240
240
  this.container.show();
241
241
  this.container.css('left', offset.left);
242
- if (top + this.container.height() > $(document).height())
243
- this.container.css('top', offset.top - this.container.height());
242
+ if (top + this.container.height() > $(window).height())
243
+ this.container.css('bottom', offset.top);
244
244
  else this.container.css('top', top);
245
245
 
246
246
  if (this._use_iframe_mask()) {
@@ -438,7 +438,6 @@ RecordSelect.Single = RecordSelect.Abstract.extend({
438
438
  onselect: function(id, value) {
439
439
  this.set(id, value);
440
440
  if (this.options.onchange) this.options.onchange.call(this, id, value);
441
- var _this = this;
442
441
  this.obj.trigger("recordselect:change", [id, value]);
443
442
  this.close();
444
443
  },
@@ -105,9 +105,13 @@ Object.extend(RecordSelect.Abstract.prototype, {
105
105
  * positions and reveals the recordselect
106
106
  */
107
107
  show: function() {
108
- var offset = Position.cumulativeOffset(this.obj);
108
+ var offset = Position.cumulativeOffset(this.obj),
109
+ top = Element.getHeight(this.obj) + offset[1],
110
+ window_height = document.viewport.getHeight();
109
111
  this.container.style.left = offset[0] + 'px';
110
- this.container.style.top = (Element.getHeight(this.obj) + offset[1]) + 'px';
112
+ if (top + Element.getHeight(this.container) > window_height)
113
+ this.container.style.bottom = (window_height - offset[1]) + 'px';
114
+ else this.container.style.top = top + 'px';
111
115
 
112
116
  if (this._use_iframe_mask()) {
113
117
  this.container.insertAdjacentHTML('afterEnd', '<iframe src="javascript:false;" class="record-select-mask" />');
@@ -61,6 +61,9 @@ Object.extend(RecordSelect.Abstract.prototype, {
61
61
  this.url = url;
62
62
  this.options = options;
63
63
  this.container;
64
+ if (this.options.onchange && typeof this.options.onchange != 'function') {
65
+ this.options.onchange = eval(this.options.onchange);
66
+ }
64
67
 
65
68
  if (RecordSelect.document_loaded) this.onload();
66
69
  else Event.observe(window, 'load', this.onload.bind(this));
@@ -102,9 +105,13 @@ Object.extend(RecordSelect.Abstract.prototype, {
102
105
  * positions and reveals the recordselect
103
106
  */
104
107
  show: function() {
105
- var offset = Position.cumulativeOffset(this.obj);
108
+ var offset = Position.cumulativeOffset(this.obj),
109
+ top = Element.getHeight(this.obj) + offset[1],
110
+ window_height = document.viewport.getDimensions().height;
106
111
  this.container.style.left = offset[0] + 'px';
107
- this.container.style.top = (Element.getHeight(this.obj) + offset[1]) + 'px';
112
+ if (top + Element.getHeight(this.container) > window_height)
113
+ this.container.style.bottom = (window_height - offset[1]) + 'px';
114
+ else this.container.style.top = top + 'px';
108
115
 
109
116
  if (this._use_iframe_mask()) {
110
117
  this.container.insertAdjacentHTML('afterEnd', '<iframe src="javascript:false;" class="record-select-mask" />');
@@ -304,6 +311,7 @@ RecordSelect.Single.prototype = Object.extend(new RecordSelect.Abstract(), {
304
311
  onselect: function(id, value) {
305
312
  this.set(id, value);
306
313
  if (this.options.onchange) this.options.onchange.call(this, id, value);
314
+ this.obj.fire('recordselect:change', {"id": id, "label": value});
307
315
  this.close();
308
316
  },
309
317
 
@@ -343,17 +351,17 @@ RecordSelect.Autocomplete.prototype = Object.extend(new RecordSelect.Abstract(),
343
351
  },
344
352
 
345
353
  onselect: function(id, value) {
346
- this.set(id, value);
354
+ this.set(value);
347
355
  if (this.options.onchange) this.options.onchange.call(this, id, value);
356
+ this.obj.fire('recordselect:change', {"id": id, "label": value});
348
357
  this.close();
349
358
  },
350
359
 
351
360
  /**
352
361
  * sets the id/label
353
362
  */
354
- set: function(id, label) {
363
+ set: function(label) {
355
364
  this.obj.value = label.unescapeHTML();
356
- this.hidden_input.value = id;
357
365
  }
358
366
  });
359
367
 
@@ -2,7 +2,7 @@ module RecordSelect
2
2
  module Version
3
3
  MAJOR = 3
4
4
  MINOR = 1
5
- PATCH = 8
5
+ PATCH = 9
6
6
 
7
7
  STRING = [MAJOR, MINOR, PATCH].compact.join('.')
8
8
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: recordselect
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 17
5
5
  prerelease:
6
6
  segments:
7
7
  - 3
8
8
  - 1
9
- - 8
10
- version: 3.1.8
9
+ - 9
10
+ version: 3.1.9
11
11
  platform: ruby
12
12
  authors:
13
13
  - Sergio Cambra
@@ -17,7 +17,7 @@ autorequire:
17
17
  bindir: bin
18
18
  cert_chain: []
19
19
 
20
- date: 2012-02-01 00:00:00 Z
20
+ date: 2012-02-21 00:00:00 Z
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
23
23
  version_requirements: &id001 !ruby/object:Gem::Requirement