mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2026-03-13 10:22:08 +08:00
35 lines
970 B
TypeScript
35 lines
970 B
TypeScript
import { printIonError } from '../../utils/logging';
|
|
|
|
export const getCounterText = (
|
|
value: string | number | null | undefined,
|
|
maxLength: number,
|
|
counterFormatter?: (inputLength: number, maxLength: number) => string
|
|
) => {
|
|
const valueLength = value == null ? 0 : value.toString().length;
|
|
const defaultCounterText = defaultCounterFormatter(valueLength, maxLength);
|
|
|
|
/**
|
|
* If developers did not pass a custom formatter,
|
|
* use the default one.
|
|
*/
|
|
if (counterFormatter === undefined) {
|
|
return defaultCounterText;
|
|
}
|
|
|
|
/**
|
|
* Otherwise, try to use the custom formatter
|
|
* and fallback to the default formatter if
|
|
* there was an error.
|
|
*/
|
|
try {
|
|
return counterFormatter(valueLength, maxLength);
|
|
} catch (e) {
|
|
printIonError('Exception in provided `counterFormatter`.', e);
|
|
return defaultCounterText;
|
|
}
|
|
};
|
|
|
|
const defaultCounterFormatter = (length: number, maxlength: number) => {
|
|
return `${length} / ${maxlength}`;
|
|
};
|