recordselect 3.1.8 → 3.1.9

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.
@@ -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