All files / src/components/zd-badge badge.ts

100% Statements 9/9
100% Branches 2/2
100% Functions 1/1
100% Lines 9/9

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 4893x           93x       3x                   3x                                   3x 1x   2x 1x   1x      
import { ComponentRender } from '../zd-component/component-render';
import { IBadge, IBadgeEvents } from './interfaces';
 
/**
 * Base class for Badge component.
 */
export class Badge extends ComponentRender implements IBadge {
	/**
	 * Wrap a number to badge
	 */
	public badge = 0;
 
	/**
	 * Events registered to the badge
	 */
	public declare events: IBadgeEvents;
 
	/**
	 * Highlight information to a user or to just draw attention
	 */
	public showBadgeCounter = true;
 
	/* istanbul ignore next */
	/**
	 * Create a new Badge
	 * @param props Badge definition
	 */
	constructor(props: IBadge) {
		super(props);
		this.badge = this.getInitValue('badge', props.badge, this.badge);
		this.showBadgeCounter = this.getInitValue('showBadgeCounter', props.showBadgeCounter, this.showBadgeCounter);
		this.createAccessors();
	}
 
	/**
	 * Returns a string with the badge counter
	 */
	public getBadgeText(): string {
		if (!this.badge) {
			return '0';
		}
		if (this.badge >= 100) {
			return '99+';
		}
		return this.badge.toString();
	}
}