diff --git a/package-lock.json b/package-lock.json index 9e8dbb3..2ad757f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,6 +17,7 @@ }, "devDependencies": { "@testing-library/react": "^16.1.0", + "@types/numeral": "^2.0.5", "@types/react": "^18.3.14", "@types/react-dom": "^18.3.2", "@types/sanitize-html": "^2.13.0", @@ -1568,6 +1569,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/numeral": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/numeral/-/numeral-2.0.5.tgz", + "integrity": "sha512-kH8I7OSSwQu9DS9JYdFWbuvhVzvFRoCPCkGxNwoGgaPeDfEPJlcxNvEOypZhQ3XXHsGbfIuYcxcJxKUfJHnRfw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/parse-json": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", diff --git a/package.json b/package.json index 702120c..fc42ff4 100644 --- a/package.json +++ b/package.json @@ -64,6 +64,7 @@ }, "devDependencies": { "@testing-library/react": "^16.1.0", + "@types/numeral": "^2.0.5", "@types/react": "^18.3.14", "@types/react-dom": "^18.3.2", "@types/sanitize-html": "^2.13.0", diff --git a/src/formatter/text-format.tsx b/src/formatter/text-format.tsx index 10cab16..c47abe3 100644 --- a/src/formatter/text-format.tsx +++ b/src/formatter/text-format.tsx @@ -22,20 +22,28 @@ import dayjs from 'dayjs'; import TranslatorContext from '../language/translator-context'; import 'numeral/locales'; -export type ITextFormatTypes = 'date' | 'number'; - -export interface ITextFormatProps { - value: string | number | Date; - type: ITextFormatTypes; +interface CommonTextFormatProps { format?: string; blankOnInvalid?: boolean; locale?: string; } +interface ITextFormatDateProps extends CommonTextFormatProps { + value: dayjs.ConfigType; + type: 'date'; +} + +interface ITextFormatNumberProps extends CommonTextFormatProps { + value: number | string; + type: 'number'; +} + +export type ITextFormatProps = ITextFormatDateProps | ITextFormatNumberProps; + /** * Formats the given value to specified type like date or number. * @param value value to be formatted - * @param type type of formatting to use ${ITextFormatTypes} + * @param type type of formatting to use (`date` or `number`) * @param format optional format to use. * For date type dayjs(https://day.js.org/docs/en/display/format) format is used * For number type NumeralJS (http://numeraljs.com/#format) format is used