if ( options.tag ) {
// Sanitize options.tag before it is used by any code. (Including Notification class methods)
- options.tag = options.tag.replace( /[ _\-]+/g, '-' ).replace( /[^\-a-z0-9]+/ig, '' );
+ options.tag = options.tag.replace( /[ _-]+/g, '-' ).replace( /[^-a-z0-9]+/ig, '' );
if ( options.tag ) {
$notification.addClass( 'mw-notification-tag-' + options.tag );
} else {
if ( options.type ) {
// Sanitize options.type
- options.type = options.type.replace( /[ _\-]+/g, '-' ).replace( /[^\-a-z0-9]+/ig, '' );
+ options.type = options.type.replace( /[ _-]+/g, '-' ).replace( /[^-a-z0-9]+/ig, '' );
$notification.addClass( 'mw-notification-type-' + options.type );
}
$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.
// 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;
* 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
*/
defaults: {
autoHide: true,
- autoHideSeconds: 5,
- tag: false,
- title: undefined,
- type: false
+ autoHideSeconds: 'short',
+ tag: null,
+ title: null,
+ type: null
+ },
+
+ /**
+ * @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
};