UNPKG

dbl-utils

Version:

Utilities for dbl, adba and others projects

49 lines (48 loc) 2.01 kB
import moment from "moment"; import numeral from "numeral"; import t, { formatDate, formatNumber, formatNumberCompact, formatCurrency, formatTime, formatDateTime, getLang } from "./i18n"; /** * Formats a value based on the provided configuration. * * @param value - The value to format * @param conf - Configuration options for formatting * @returns The formatted value or the original value if the format is not specified */ export default function formatValue(value, conf) { if (!(conf === null || conf === void 0 ? void 0 : conf.format)) return value; switch (conf.format) { case 'number-compact': case 'numbercompact': { //TODO: mover a i18n numeral.locale(getLang()); return numeral(value).format(conf.formatConf || formatNumberCompact(conf.context)); } case 'number': { return typeof value === 'boolean' ? Number(value) : value.toLocaleString(getLang(), conf.formatConf || formatNumber(conf.context)); } case 'currency': { const globalConf = (conf.formatConf || formatCurrency(conf.context)); if (typeof globalConf === 'string') throw new Error("currency format must have formatConf as an Intl.NumberFormatOptions"); return value.toLocaleString(getLang(), Object.assign(Object.assign({}, globalConf), { style: "currency", currency: conf.currency || globalConf.currency })); } case 'dictionary': { return t(value, conf.context); } case 'date': { return moment(value).format(conf.formatConf || formatDate(conf.context)); } case 'time': { return moment(value).format(conf.formatConf || formatTime(conf.context)); } case 'date-time': case 'datetime': { return moment(value).format(conf.formatConf || formatDateTime(conf.context)); } default: { return value; } } }