@primer/view-components
Version:
ViewComponents for the Primer Design System
42 lines (41 loc) • 1.26 kB
TypeScript
/**
* Shared character counting functionality for text inputs with character limits.
* Handles real-time character count updates, validation, and aria-live announcements.
*/
export declare class CharacterCounter {
private inputElement;
private characterLimitElement;
private characterLimitSrElement;
private SCREEN_READER_DELAY;
private announceTimeout;
private isInitialLoad;
constructor(inputElement: HTMLInputElement | HTMLTextAreaElement, characterLimitElement: HTMLElement, characterLimitSrElement: HTMLElement);
/**
* Initialize character counting by setting up event listener and initial count
*/
initialize(signal?: AbortSignal): void;
/**
* Clean up any pending timeouts
*/
cleanup(): void;
/**
* Pluralizes a word based on the count
*/
private pluralize;
/**
* Update the character count display and validation state
*/
private updateCharacterCount;
/**
* Announce character count to screen readers with debouncing
*/
private announceToScreenReader;
/**
* Set error when character limit is exceeded
*/
private setError;
/**
* Clear error when back under character limit
*/
private clearError;
}