svelte-ux
Version:
- Increment version in `package.json` and commit as `Version bump to x.y.z` - `npm run publish`
20 lines (19 loc) • 828 B
JavaScript
import { isFunction } from 'lodash-es';
import { formatDate, PeriodType } from './date';
import { formatNumberAsStyle } from './number';
/**
* Generic format which can handle Dates, Numbers, or custom format function
*/
export function format(value, format, ...extraFuncArgs) {
let formattedValue = value !== null && value !== void 0 ? value : ''; // Do not render `null`
if (isFunction(format)) {
formattedValue = format(value, ...extraFuncArgs);
}
else if (format in PeriodType) {
formattedValue = formatDate(value, format);
}
else if (typeof value === 'number') {
formattedValue = formatNumberAsStyle(value, format);
}
return formattedValue !== null && formattedValue !== void 0 ? formattedValue : ''; // return empty string so Svelte doesn't render `null` string;
}