1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Script.aculo.us: autocompletion focus fix, setContentZoom fix #1546 [Thomas Fuchs]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1560 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
David Heinemeier Hansson 2005-06-29 08:07:55 +00:00
parent a551ba2c01
commit 0ffcceffac
3 changed files with 21 additions and 19 deletions

View file

@ -61,6 +61,7 @@ Ajax.Autocompleter.prototype = (new Ajax.Base()).extend({
this.observer = null; this.observer = null;
Event.observe(this.element, "blur", this.onBlur.bindAsEventListener(this));
Event.observe(this.element, "keypress", this.onKeyPress.bindAsEventListener(this)); Event.observe(this.element, "keypress", this.onKeyPress.bindAsEventListener(this));
Event.observe(document, "click", this.onBlur.bindAsEventListener(this)); Event.observe(document, "click", this.onBlur.bindAsEventListener(this));
}, },
@ -108,9 +109,15 @@ Ajax.Autocompleter.prototype = (new Ajax.Base()).extend({
} }
}, },
addObservers: function(element) {
Event.observe(element, "mouseover", this.onHover.bindAsEventListener(this));
Event.observe(element, "click", this.onClick.bindAsEventListener(this));
},
onComplete: function(request) { onComplete: function(request) {
if(!this.changed) { if(!this.changed && this.has_focus) {
this.update.innerHTML = request.responseText; this.update.innerHTML = request.responseText;
Element.cleanWhitespace(this.update);
Element.cleanWhitespace(this.update.firstChild); Element.cleanWhitespace(this.update.firstChild);
if(this.update.firstChild && this.update.firstChild.childNodes) { if(this.update.firstChild && this.update.firstChild.childNodes) {
@ -119,8 +126,7 @@ Ajax.Autocompleter.prototype = (new Ajax.Base()).extend({
for (var i = 0; i < this.entry_count; i++) { for (var i = 0; i < this.entry_count; i++) {
entry = this.get_entry(i); entry = this.get_entry(i);
entry.autocompleteIndex = i; entry.autocompleteIndex = i;
Event.observe(entry, "mouseover", this.onHover.bindAsEventListener(this)); this.addObservers(entry);
Event.observe(entry, "click", this.onClick.bindAsEventListener(this));
} }
} else { } else {
this.entry_count = 0; this.entry_count = 0;
@ -171,26 +177,29 @@ Ajax.Autocompleter.prototype = (new Ajax.Base()).extend({
}, },
onHover: function(event) { onHover: function(event) {
element = Event.findElement(event, 'LI'); var element = Event.findElement(event, 'LI');
if(this.index != element.autocompleteIndex) if(this.index != element.autocompleteIndex)
{ {
this.index = element.autocompleteIndex; this.index = element.autocompleteIndex;
this.render(); this.render();
} }
Event.stop(event);
}, },
onClick: function(event) { onClick: function(event) {
element = Event.findElement(event, 'LI'); var element = Event.findElement(event, 'LI');
this.index = element.autocompleteIndex; this.index = element.autocompleteIndex;
this.select_entry(); this.select_entry();
Event.stop(event);
}, },
onBlur: function(event) { onBlur: function(event) {
element = Event.element(event); var element = Event.element(event);
if(element==this.update) return; if(element==this.update) return;
while(element.parentNode) while(element.parentNode)
{ element = element.parentNode; if(element==this.update) return; } { element = element.parentNode; if(element==this.update) return; }
this.hide(); this.hide();
this.has_focus = false;
this.active = false; this.active = false;
}, },

View file

@ -235,13 +235,13 @@ Draggable.prototype = {
var options = { var options = {
handle: false, handle: false,
starteffect: function(element) { starteffect: function(element) {
new Effect2.Opacity(element, {duration:0.2, from:1.0, to:0.7}); new Effect.Opacity(element, {duration:0.2, from:1.0, to:0.7});
}, },
reverteffect: function(element, top_offset, left_offset) { reverteffect: function(element, top_offset, left_offset) {
new Effect2.MoveBy(element, -top_offset, -left_offset, {duration:0.4}); new Effect.MoveBy(element, -top_offset, -left_offset, {duration:0.4});
}, },
endeffect: function(element) { endeffect: function(element) {
new Effect2.Opacity(element, {duration:0.2, from:0.7, to:1.0}); new Effect.Opacity(element, {duration:0.2, from:0.7, to:1.0});
}, },
zindex: 1000 zindex: 1000
}.extend(arguments[1] || {}); }.extend(arguments[1] || {});
@ -467,5 +467,3 @@ Sortable = {
return queryComponents.join("&"); return queryComponents.join("&");
} }
} }
/*--------------------------------------------------------------------------*/

View file

@ -529,7 +529,7 @@ Effect.Pulsate = function(element) {
Effect.Fold = function(element) { Effect.Fold = function(element) {
$(element).style.overflow = 'hidden'; $(element).style.overflow = 'hidden';
new Effect2.Scale(element, 5, { new Effect.Scale(element, 5, {
scaleContent: false, scaleContent: false,
scaleTo: 100, scaleTo: 100,
scaleX: false, scaleX: false,
@ -547,11 +547,6 @@ Effect.Fold = function(element) {
Element.setContentZoom = function(element, percent) { Element.setContentZoom = function(element, percent) {
var element = $(element); var element = $(element);
element.style.fontSize = (percent/100) + "em";
var sizeEm = 1.0;
if (element.style.fontSize.indexOf("em")>0)
sizeEm = parseFloat(element.style.fontSize);
element.style.fontSize = sizeEm*(percent/100) + "em";
if(navigator.appVersion.indexOf('AppleWebKit')>0) window.scrollBy(0,0); if(navigator.appVersion.indexOf('AppleWebKit')>0) window.scrollBy(0,0);
} }