From cda84660c5a1f3ff2e6ce9c11ac0936b7c123a07 Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Fri, 20 Jan 2017 03:25:59 +0000 Subject: [PATCH] mw.notification: Re-implement autoHideSeconds as string preset option Instead of allowing freeform number values, make it a preset-based string where pre-defined values are encouraged. A numerical override is still possible by creating a new preset, but this undocumented/private for now. Follows-up 4b9992a0, which added this option. No usage found as of yet in Wikimedia Git, thus no deprecation/back-compat. Also: * Unbreaks `#autoHideSeconds` reference in #autoHideLimit doc. * Improve wording of #autoHideLimit doc. Bug: T155228 Change-Id: Id84d8b616fe26b9976263f4bd6bdc70cc8a539ba --- .../src/mediawiki/mediawiki.notification.js | 33 ++++++++++++------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/resources/src/mediawiki/mediawiki.notification.js b/resources/src/mediawiki/mediawiki.notification.js index 7a3fb0a09e..4849f5a08b 100644 --- a/resources/src/mediawiki/mediawiki.notification.js +++ b/resources/src/mediawiki/mediawiki.notification.js @@ -71,7 +71,7 @@ $notificationContent.appendTo( $notification ); // Private state parameters, meant for internal use only - // autoHideSeconds: Number of seconds to wait before auto-hiding notifications. + // autoHideSeconds: String alias for number of seconds for timeout of auto-hiding notifications. // isOpen: Set to true after .start() is called to avoid double calls. // Set back to false after .close() to avoid duplicating the close animation. // isPaused: false after .resume(), true after .pause(). Avoids duplicating or breaking the hide timeouts. @@ -80,8 +80,9 @@ // to stop replacement of a tagged notification with another notification using the same message. // options: The options passed to the notification with a little sanitization. Used by various methods. // $notification: jQuery object containing the notification DOM node. - // Set hide delay - this.autoHideSeconds = options.autoHideSeconds; + this.autoHideSeconds = options.autoHideSeconds && + notification.autoHideSeconds[ options.autoHideSeconds ] || + notification.autoHideSeconds.short; this.isOpen = false; this.isPaused = true; this.message = message; @@ -374,7 +375,8 @@ * be hidden after shown. Or if it should persist. * * - autoHideSeconds: - * Number of seconds to wait before auto-hiding notifications. + * Key to #autoHideSeconds for number of seconds for timeout of auto-hide + * notifications. * * - tag: * An optional string. When a notification is tagged only one message @@ -393,21 +395,30 @@ */ defaults: { autoHide: true, - autoHideSeconds: 5, + autoHideSeconds: 'short', tag: false, title: undefined, type: false }, + /** + * @private + * @property {Object} + */ + autoHideSeconds: { + 'short': 5, + 'long': 30 + }, + /** * @property {number} - * Maximum number of notifications to count down auto-hide timers for. - * Only the first #autoHideLimit notifications being displayed will - * auto-hide. Any notifications further down in the list will only start - * counting down to auto-hide after the first few messages have closed. + * Maximum number of simultaneous notifications to start auto-hide timers for. + * Only this number of notifications being displayed will be auto-hidden at one time. + * Any additional notifications in the list will only start counting their timeout for + * auto-hiding after the previous messages have been closed. * - * This basically represents the number of notifications the user should - * be able to process in #autoHideSeconds time. + * This basically represents the minimal number of notifications the user should + * be able to process during the {@link #defaults default} #autoHideSeconds time. */ autoHideLimit: 3 }; -- 2.20.1