|
@@ -9886,6 +9886,16 @@ define('select2/results',[
|
|
|
var $next = $options.eq(nextIndex);
|
|
|
|
|
|
$next.trigger('mouseenter');
|
|
|
+
|
|
|
+ var currentOffset = self.$results.offset().top;
|
|
|
+ var nextTop = $next.offset().top;
|
|
|
+ var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);
|
|
|
+
|
|
|
+ if (nextIndex === 0) {
|
|
|
+ self.$results.scrollTop(0);
|
|
|
+ } else if (nextTop - currentOffset < 0) {
|
|
|
+ self.$results.scrollTop(nextOffset);
|
|
|
+ }
|
|
|
});
|
|
|
|
|
|
container.on('results:next', function () {
|
|
@@ -9905,8 +9915,17 @@ define('select2/results',[
|
|
|
var $next = $options.eq(nextIndex);
|
|
|
|
|
|
$next.trigger('mouseenter');
|
|
|
- console.log($next.offset().top, self.$results.parent().scrollTop());
|
|
|
- //self.$results.parents().scrollTop($next.offset().top);
|
|
|
+
|
|
|
+ var currentOffset = self.$results.offset().top +
|
|
|
+ self.$results.outerHeight(false);
|
|
|
+ var nextBottom = $next.offset().top + $next.outerHeight(false);
|
|
|
+ var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;
|
|
|
+
|
|
|
+ if (nextIndex === 0) {
|
|
|
+ self.$results.scrollTop(0);
|
|
|
+ } else if (nextBottom > currentOffset) {
|
|
|
+ self.$results.scrollTop(nextOffset);
|
|
|
+ }
|
|
|
});
|
|
|
|
|
|
this.$results.on('mouseup', '.option[aria-selected]', function (evt) {
|
|
@@ -10083,7 +10102,7 @@ define('select2/selection/single',[
|
|
|
// User exits the container
|
|
|
});
|
|
|
|
|
|
- this.$selection.on('keyup', function (evt) {
|
|
|
+ this.$selection.on('keydown', function (evt) {
|
|
|
var key = evt.which;
|
|
|
|
|
|
if (container.isOpen()) {
|
|
@@ -10091,8 +10110,12 @@ define('select2/selection/single',[
|
|
|
self.trigger('results:select');
|
|
|
} else if (key == KEYS.UP) {
|
|
|
self.trigger('results:previous');
|
|
|
+
|
|
|
+ evt.preventDefault();
|
|
|
} else if (key == KEYS.DOWN) {
|
|
|
self.trigger('results:next');
|
|
|
+
|
|
|
+ evt.preventDefault();
|
|
|
}
|
|
|
} else {
|
|
|
if (key == KEYS.ENTER || key == KEYS.SPACE) {
|
|
@@ -10297,7 +10320,7 @@ define('select2/data/base',[
|
|
|
};
|
|
|
|
|
|
BaseAdapter.prototype.generateResultId = function (data) {
|
|
|
- var id = '';
|
|
|
+ var id = 'select2-result-';
|
|
|
|
|
|
for (var i = 0; i < 4; i++) {
|
|
|
var r = Math.floor(Math.random() * 16);
|