36 lines
1.0 KiB
TypeScript
36 lines
1.0 KiB
TypeScript
import i18n from "@/shared/config/i18n";
|
||
import { LanguageRoutes } from "@/shared/config/i18n/type";
|
||
|
||
/**
|
||
* Format price. With label.
|
||
* @param amount Price
|
||
* @param withLabel Show label. Default false
|
||
* @returns string. Ex. 1 000 000 so‘m
|
||
*/
|
||
const formatPrice = (amount: number | string, withLabel = false): string => {
|
||
const locale = i18n.language;
|
||
const label = withLabel
|
||
? locale === LanguageRoutes.RU
|
||
? " сум"
|
||
: locale === LanguageRoutes.UZ
|
||
? " so‘m"
|
||
: " so‘m"
|
||
: "";
|
||
|
||
// Agar qiymat bo‘sh yoki null/undefined bo‘lsa — hech narsa ko‘rsatmaymiz
|
||
if (amount === "" || amount === null || amount === undefined) return "";
|
||
|
||
// Faqat raqamlarni qoldiramiz
|
||
const numeric = String(amount).replace(/\D/g, "");
|
||
|
||
// Agar hech qanday raqam kiritilmagan bo‘lsa, bo‘sh qaytaramiz
|
||
if (numeric === "") return "";
|
||
|
||
// Raqamni 3 xonadan ajratamiz
|
||
const formatted = numeric.replace(/\B(?=(\d{3})+(?!\d))/g, " ");
|
||
|
||
return formatted + label;
|
||
};
|
||
|
||
export default formatPrice;
|