* will be appended to the selected element(s).
* See mediawiki.org/wiki/ResourceLoader/Default_modules#jQuery.badge
*
- * @param text The value to display in the badge. If the value is falsey (0,
+ * @param {number|string} text The value to display in the badge. If the value is falsey (0,
* null, false, '', etc.), any existing badge will be removed.
- * @param boolean inline True if the badge should be displayed inline, false
+ * @param {boolean} inline True if the badge should be displayed inline, false
* if the badge should overlay the parent element (default is inline)
+ * @param {boolean} displayZero True if the number zero should be displayed,
+ * false if the number zero should result in the badge being hidden
+ * (default is zero will result in the badge being hidden)
*/
- $.fn.badge = function ( text, inline ) {
- var $badge = this.find( '.mw-badge' );
+ $.fn.badge = function ( text, inline, displayZero ) {
+ var $badge = this.find( '.mw-badge' ),
+ badgeStyleClass = 'mw-badge-' + ( inline ? 'inline' : 'overlay' ),
+ isImportant = true;
+
+ // If we're displaying zero, ensure style to be non-important
+ if ( text === 0 && displayZero ) {
+ isImportant = false;
+ text = '0';
+ }
if ( text ) {
// If a badge already exists, reuse it
if ( $badge.length ) {
- $badge.find( '.mw-badge-content' ).text( text );
+ $badge
+ .toggleClass( 'mw-badge-important', isImportant )
+ .find( '.mw-badge-content' )
+ .text( text );
} else {
// Otherwise, create a new badge with the specified text and style
- $badge = $( '<div class="mw-badge mw-badge-' + ( inline ? 'inline' : 'overlay' ) + '"></div>' )
- .append( $( '<span class="mw-badge-content"></span>' ).text ( text ) )
+ $badge = $( '<div class="mw-badge"></div>' )
+ .addClass( badgeStyleClass )
+ .toggleClass( 'mw-badge-important', isImportant )
+ .append(
+ $( '<span class="mw-badge-content"></span>' ).text ( text )
+ )
.appendTo( this );
}
} else {