persian-number-input 4.0.2 → 4.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -33,16 +33,16 @@ export declare const localizeDecimalSeparator: (numStr: string, locale: keyof ty
|
|
|
33
33
|
/**
|
|
34
34
|
* گروهبندی ارقام قسمت صحیح یک عدد با استفاده از جداکننده.
|
|
35
35
|
* @param numStr قسمت صحیح عدد (فقط ارقام انگلیسی)
|
|
36
|
-
* @param separatorCount تعداد ارقام در هر گروه
|
|
37
|
-
* @param separatorChar کاراکتر جداکننده
|
|
36
|
+
* @param separatorCount تعداد ارقام در هر گروه
|
|
37
|
+
* @param separatorChar کاراکتر جداکننده
|
|
38
38
|
* @returns رشته گروهبندی شده
|
|
39
39
|
*/
|
|
40
40
|
export declare const groupDigits: (numStr: string, separatorCount: number, separatorChar?: string) => string;
|
|
41
41
|
/**
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
* @param value -
|
|
45
|
-
* @returns
|
|
42
|
+
* پاکسازی ورودی عددی برای اجازه دادن به کاراکترهای مجاز (اعداد، نقطه و منفی).
|
|
43
|
+
* این نسخه جدید: ارقام فارسی و جداکننده اعشار فارسی را هم پشتیبانی میکند.
|
|
44
|
+
* @param value - رشته ورودی
|
|
45
|
+
* @returns رشته پاکشده
|
|
46
46
|
*/
|
|
47
47
|
export declare const sanitizeNumericInput: (value: string) => string;
|
|
48
48
|
//# sourceMappingURL=digitUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"digitUtils.d.ts","sourceRoot":"","sources":["../../src/utils/digitUtils.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;CAI7D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAGxD,CAAC;
|
|
1
|
+
{"version":3,"file":"digitUtils.d.ts","sourceRoot":"","sources":["../../src/utils/digitUtils.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;CAI7D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAGxD,CAAC;AAgBF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GAAI,KAAK,MAAM,KAAG,MAGpD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,EAAE,QAAQ,MAAM,OAAO,SAAS,KAAG,MAIlF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,GAAI,QAAQ,MAAM,EAAE,QAAQ,MAAM,OAAO,mBAAmB,KAAG,MAInG,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GACtB,QAAQ,MAAM,EACd,gBAAgB,MAAM,EACtB,sBAAmB,KAClB,MAMF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAAI,OAAO,MAAM,KAAG,MAgCpD,CAAC"}
|
package/dist/utils/digitUtils.js
CHANGED
|
@@ -7,7 +7,7 @@ exports.sanitizeNumericInput = exports.groupDigits = exports.localizeDecimalSepa
|
|
|
7
7
|
*/
|
|
8
8
|
exports.digitsMap = {
|
|
9
9
|
fa: ["۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹"],
|
|
10
|
-
//
|
|
10
|
+
// میتوانید زبانهای دیگر را اضافه کنید
|
|
11
11
|
// in: ["०", "१", "२", "३", "४", "५", "६", "७", "८", "९"],
|
|
12
12
|
};
|
|
13
13
|
/**
|
|
@@ -15,17 +15,19 @@ exports.digitsMap = {
|
|
|
15
15
|
*/
|
|
16
16
|
exports.decimalSeparatorMap = {
|
|
17
17
|
fa: "٫",
|
|
18
|
-
// en: ".",
|
|
18
|
+
// en: ".",
|
|
19
19
|
};
|
|
20
|
+
// همه ارقام محلی را به یک رشته واحد میچسبانیم تا regex بسازیم
|
|
20
21
|
const allLocalizedDigits = Object.values(exports.digitsMap).flat().join("");
|
|
22
|
+
// مپ برای تبدیل رقم محلی به رقم انگلیسی
|
|
21
23
|
const conversionMap = {};
|
|
22
24
|
for (const locale in exports.digitsMap) {
|
|
23
25
|
exports.digitsMap[locale].forEach((digit, index) => {
|
|
24
26
|
conversionMap[digit] = index.toString();
|
|
25
27
|
});
|
|
26
28
|
}
|
|
27
|
-
// Regex
|
|
28
|
-
const localizedDigitsRegex = new RegExp(`[${allLocalizedDigits}]`,
|
|
29
|
+
// Regex برای پیدا کردن تمام ارقام محلی
|
|
30
|
+
const localizedDigitsRegex = new RegExp(`[${allLocalizedDigits}]`, 'g');
|
|
29
31
|
/**
|
|
30
32
|
* تبدیل رشته حاوی ارقام محلی (مانند فارسی) به رشته با ارقام انگلیسی (0-9).
|
|
31
33
|
* @param str رشته ورودی
|
|
@@ -47,7 +49,7 @@ const toLocalizedDigits = (numStr, locale) => {
|
|
|
47
49
|
if (!numStr || !exports.digitsMap[locale])
|
|
48
50
|
return numStr;
|
|
49
51
|
const localeDigits = exports.digitsMap[locale];
|
|
50
|
-
return numStr.replace(/\d/g, (digit) => localeDigits[parseInt(digit)]);
|
|
52
|
+
return numStr.replace(/\d/g, (digit) => localeDigits[parseInt(digit, 10)]);
|
|
51
53
|
};
|
|
52
54
|
exports.toLocalizedDigits = toLocalizedDigits;
|
|
53
55
|
/**
|
|
@@ -59,55 +61,53 @@ exports.toLocalizedDigits = toLocalizedDigits;
|
|
|
59
61
|
const localizeDecimalSeparator = (numStr, locale) => {
|
|
60
62
|
const separator = exports.decimalSeparatorMap[locale];
|
|
61
63
|
if (!separator)
|
|
62
|
-
return numStr;
|
|
63
|
-
return numStr.replace(
|
|
64
|
+
return numStr;
|
|
65
|
+
return numStr.replace('.', separator);
|
|
64
66
|
};
|
|
65
67
|
exports.localizeDecimalSeparator = localizeDecimalSeparator;
|
|
66
68
|
/**
|
|
67
69
|
* گروهبندی ارقام قسمت صحیح یک عدد با استفاده از جداکننده.
|
|
68
70
|
* @param numStr قسمت صحیح عدد (فقط ارقام انگلیسی)
|
|
69
|
-
* @param separatorCount تعداد ارقام در هر گروه
|
|
70
|
-
* @param separatorChar کاراکتر جداکننده
|
|
71
|
+
* @param separatorCount تعداد ارقام در هر گروه
|
|
72
|
+
* @param separatorChar کاراکتر جداکننده
|
|
71
73
|
* @returns رشته گروهبندی شده
|
|
72
74
|
*/
|
|
73
|
-
const groupDigits = (numStr, separatorCount, separatorChar =
|
|
75
|
+
const groupDigits = (numStr, separatorCount, separatorChar = ',') => {
|
|
74
76
|
if (!numStr || separatorCount <= 0) {
|
|
75
77
|
return numStr;
|
|
76
78
|
}
|
|
77
|
-
|
|
78
|
-
const regex = new RegExp(`\\B(?=(\\d{${separatorCount}})+(?!\\d))`, "g");
|
|
79
|
+
const regex = new RegExp(`\\B(?=(\\d{${separatorCount}})+(?!\\d))`, 'g');
|
|
79
80
|
return numStr.replace(regex, separatorChar);
|
|
80
81
|
};
|
|
81
82
|
exports.groupDigits = groupDigits;
|
|
82
|
-
// utils/digitUtils.ts
|
|
83
83
|
/**
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
* @param value -
|
|
87
|
-
* @returns
|
|
84
|
+
* پاکسازی ورودی عددی برای اجازه دادن به کاراکترهای مجاز (اعداد، نقطه و منفی).
|
|
85
|
+
* این نسخه جدید: ارقام فارسی و جداکننده اعشار فارسی را هم پشتیبانی میکند.
|
|
86
|
+
* @param value - رشته ورودی
|
|
87
|
+
* @returns رشته پاکشده
|
|
88
88
|
*/
|
|
89
89
|
const sanitizeNumericInput = (value) => {
|
|
90
|
-
//
|
|
91
|
-
let
|
|
92
|
-
//
|
|
90
|
+
// ۱) تبدیل ارقام فارسی به انگلیسی
|
|
91
|
+
let normalized = (0, exports.convertToEnglishDigits)(value);
|
|
92
|
+
// ۲) تبدیل جداکننده اعشار فارسی (٫) به نقطه
|
|
93
|
+
normalized = normalized.replace(/٫/g, '.');
|
|
94
|
+
// ۳) حذف کاراکترهای غیرمجاز
|
|
95
|
+
let sanitized = normalized.replace(/[^0-9.\-]/g, '');
|
|
96
|
+
// حذف صفرهای ابتدایی مگر در موارد اعشاری
|
|
93
97
|
if (sanitized.startsWith('0') && !sanitized.startsWith('0.') && sanitized.length > 1) {
|
|
94
98
|
sanitized = sanitized.replace(/^0+/, '');
|
|
95
99
|
}
|
|
96
|
-
//
|
|
97
|
-
if (sanitized === '0') {
|
|
98
|
-
return sanitized;
|
|
99
|
-
}
|
|
100
|
-
// اطمینان از وجود فقط یک نقطه اعشار
|
|
100
|
+
// نگهداشتن فقط یک نقطه اعشار
|
|
101
101
|
const parts = sanitized.split('.');
|
|
102
102
|
if (parts.length > 2) {
|
|
103
103
|
sanitized = `${parts[0]}.${parts[1]}`;
|
|
104
104
|
}
|
|
105
|
-
// حذف
|
|
105
|
+
// حذف منفیهای اضافه و اطمینان از جای صحیح آن
|
|
106
106
|
sanitized = sanitized.replace(/-+/g, '-');
|
|
107
107
|
if (sanitized.includes('-') && !sanitized.startsWith('-')) {
|
|
108
108
|
sanitized = sanitized.replace(/-/, '');
|
|
109
109
|
}
|
|
110
|
-
// اگر ورودی خالی
|
|
110
|
+
// اگر ورودی خالی یا فقط '-' یا '.' است، خالی برگردان
|
|
111
111
|
if (sanitized === '' || sanitized === '-' || sanitized === '.') {
|
|
112
112
|
return '';
|
|
113
113
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"digitUtils.js","sourceRoot":"","sources":["../../src/utils/digitUtils.ts"],"names":[],"mappings":";AAAA,sBAAsB;;;AAEtB;;GAEG;AACU,QAAA,SAAS,GAA6C;IACjE,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACtD,wCAAwC;IACxC,0DAA0D;CAC3D,CAAC;AAEF;;GAEG;AACU,QAAA,mBAAmB,GAA8B;IAC5D,EAAE,EAAE,GAAG;IACP,
|
|
1
|
+
{"version":3,"file":"digitUtils.js","sourceRoot":"","sources":["../../src/utils/digitUtils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED