Scroll improvements
* Load the next region when scroll reached half of the current region * Fix the scroll sync with region highlight in both up and down scrolls * Address Bug 39923 - Make scroll to next region more fluent
This commit is contained in:
@@ -241,7 +241,7 @@
|
|||||||
this.$noResults.find( 'h2' ).after( $suggestions );
|
this.$noResults.find( 'h2' ).after( $suggestions );
|
||||||
},
|
},
|
||||||
|
|
||||||
listen: function() {
|
listen: function () {
|
||||||
var that = this;
|
var that = this;
|
||||||
if ( this.options.clickhandler ) {
|
if ( this.options.clickhandler ) {
|
||||||
this.$element.on( 'click', 'div.row li', function() {
|
this.$element.on( 'click', 'div.row li', function() {
|
||||||
@@ -251,11 +251,26 @@
|
|||||||
|
|
||||||
// The region section need to be in sync with the map filter.
|
// The region section need to be in sync with the map filter.
|
||||||
that.$element.scroll( function () {
|
that.$element.scroll( function () {
|
||||||
if ( this.offsetHeight + this.scrollTop >= this.scrollHeight ) {
|
var scrollTop = $( this ).position().top;
|
||||||
|
var scrollBottom = $( this ).height();
|
||||||
|
if ( this.offsetHeight + this.scrollTop >= this.scrollHeight/2 ) {
|
||||||
that.$element.trigger( 'scrollend' );
|
that.$element.trigger( 'scrollend' );
|
||||||
}
|
}
|
||||||
|
// The region section need to be in sync with the map filter.
|
||||||
|
var inviewRegion = 'WW';
|
||||||
|
that.$element.find( 'div.uls-lcd-region-section' ).each( function () {
|
||||||
|
var top = $( this ).position().top;
|
||||||
|
var height = $( this ).height();
|
||||||
|
if ( top < scrollTop && height > scrollBottom ) {
|
||||||
|
inviewRegion = $( this ).attr( 'id' );
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} );
|
||||||
|
var inview = $.uls.data.regiongroups[inviewRegion];
|
||||||
|
$( '.regionselector' ).removeClass( 'active' );
|
||||||
|
$( '#uls-region-' + inview ).addClass( 'active' );
|
||||||
} );
|
} );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -65,13 +65,6 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
show: function() {
|
show: function() {
|
||||||
// Make the selected region (and it only) active
|
|
||||||
$( '.regionselector' ).removeClass( 'active' );
|
|
||||||
if ( this.regionGroup ) {
|
|
||||||
// if there is a region group, make it active.
|
|
||||||
this.$element.addClass( 'active' );
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( this.cache ) {
|
if ( this.cache ) {
|
||||||
// If the result cache is present, render the results from there.
|
// If the result cache is present, render the results from there.
|
||||||
var result = null;
|
var result = null;
|
||||||
@@ -141,6 +134,12 @@
|
|||||||
// Re-populate the list of languages
|
// Re-populate the list of languages
|
||||||
this.options.$target.empty();
|
this.options.$target.empty();
|
||||||
this.show();
|
this.show();
|
||||||
|
// Make the selected region (and it only) active
|
||||||
|
$( '.regionselector' ).removeClass( 'active' );
|
||||||
|
if ( this.regionGroup ) {
|
||||||
|
// if there is a region group, make it active.
|
||||||
|
this.$element.addClass( 'active' );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user