diff --git a/src/jquery.uls.core.js b/src/jquery.uls.core.js index 6352239..7490682 100644 --- a/src/jquery.uls.core.js +++ b/src/jquery.uls.core.js @@ -114,12 +114,33 @@ ULS.prototype = { constructor: ULS, + /** + * A "hook" that runs after the ULS constructor. + * At this point it is not guaranteed that the ULS has its dimensions + * and that the languages lists are initialized. + * + * To use it, pass a function as the onReady parameter + * in the options when initializing ULS. + */ ready: function () { if ( this.options.onReady ) { this.options.onReady.call( this ); } }, + /** + * A "hook" that runs after the ULS panel becomes visible + * by using the show method. + * + * To use it, pass a function as the onVisible parameter + * in the options when initializing ULS. + */ + visible: function () { + if ( this.options.onVisible ) { + this.options.onVisible.call( this ); + } + }, + /** * Calculate the position of ULS * Returns an object with top and left properties. @@ -152,13 +173,15 @@ if ( !this.initialized ) { $( 'body' ).prepend( this.$menu ); this.i18n(); + // Initialize with a full search. // This happens on first time click of uls trigger. this.defaultSearch(); + this.initialized = true; } - // hide any other ULS visible + // hide any other visible ULS $( '.uls-menu' ).hide(); this.$menu.show(); @@ -167,6 +190,8 @@ if ( !this.isMobile() ) { this.$languageFilter.focus(); } + + this.visible(); }, i18n: function () {