persian-number-input 5.0.0 → 5.0.2

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.
package/README.fa.md CHANGED
@@ -38,7 +38,7 @@ English | [فارسی](./README.fa.md)
38
38
  - 🔢 **تبدیل خودکار ارقام** — فارسی (۰-۹) و عربی (٠-٩) به انگلیسی و برعکس
39
39
  - 🌍 **چند زبانه** — فارسی (`fa`)، عربی (`ar`)، انگلیسی (`en`)
40
40
  - 📊 **جداکننده هزارگان** — قابل تنظیم با هر کاراکتری
41
- - 💰 **آماده برای ارز** — پشتیبانی از پسوند (تومان، ریال، ر.س) و جداکننده اعشاری سفارشی
41
+ - 💰 **آماده برای ارز** — پشتیبانی از پسوند (تومان، ریال، ر.س) به صورت overlay بصری مجزا از مقدار ورودی
42
42
  - ⚡ **فقط ~۱ کیلوبایت** — بدون هیچ dependency اضافه
43
43
  - 🎯 **TypeScript** — تعریف تایپ کامل
44
44
  - 🔄 **حفظ موقعیت cursor** — بدون جهش هنگام فرمت‌دهی
@@ -97,7 +97,8 @@ function App() {
97
97
  />
98
98
  ```
99
99
 
100
- خروجی: `۵,۰۰۰,۰۰۰ تومان`
100
+ خروجی نمایشی: `۵,۰۰۰,۰۰۰` با `تومان` به صورت overlay بصری در کنار input.
101
+ پسوند خارج از مقدار ورودی رندر می‌شود — هرگز با موقعیت cursor یا کلید Backspace تداخل ندارد.
101
102
 
102
103
  ---
103
104
 
@@ -115,6 +116,8 @@ function App() {
115
116
  />
116
117
  ```
117
118
 
119
+ خروجی نمایشی: `۰` با `ریال` به صورت overlay بصری.
120
+
118
121
  ---
119
122
 
120
123
  ### عدد اعشاری با جداکننده فارسی
@@ -146,7 +149,7 @@ function App() {
146
149
  />
147
150
  ```
148
151
 
149
- خروجی: `٩٨٧,٦٥٤ ر.س`
152
+ خروجی نمایشی: `٩٨٧,٦٥٤` با `ر.س` به صورت overlay بصری.
150
153
 
151
154
  ---
152
155
 
@@ -188,30 +191,50 @@ function ProductForm() {
188
191
  import { usePersianNumberInput } from "persian-number-input";
189
192
 
190
193
  function CustomInput() {
191
- const { value, onChange, onBlur, rawValue } = usePersianNumberInput({
192
- initialValue: 1000,
193
- locale: "fa",
194
- separatorCount: 3,
195
- maxDecimals: 2,
196
- min: 0,
197
- max: 1000000,
198
- onValueChange: (val) => console.log("مقدار انگلیسی:", val),
199
- });
194
+ const { value, onChange, onBlur, rawValue, isInvalid } =
195
+ usePersianNumberInput({
196
+ initialValue: 1000,
197
+ locale: "fa",
198
+ suffix: "تومان",
199
+ maxDecimals: 2,
200
+ min: 0,
201
+ max: 1000000,
202
+ onValueChange: (val) => console.log("مقدار انگلیسی:", val),
203
+ });
200
204
 
201
205
  return (
202
- <input
203
- type="text"
204
- value={value}
205
- onChange={onChange}
206
- onBlur={onBlur}
207
- onPaste={onPaste}
208
- dir="rtl"
209
- />
206
+ <div>
207
+ <div style={{ position: "relative", display: "inline-flex", alignItems: "center" }}>
208
+ <input
209
+ type="text"
210
+ value={value}
211
+ onChange={onChange}
212
+ onBlur={onBlur}
213
+ onPaste={onPaste}
214
+ dir="ltr"
215
+ aria-invalid={isInvalid || undefined}
216
+ />
217
+ <span
218
+ style={{
219
+ position: "absolute",
220
+ pointerEvents: "none",
221
+ right: 0,
222
+ top: 0,
223
+ bottom: 0,
224
+ display: "flex",
225
+ alignItems: "center",
226
+ }}
227
+ >
228
+ تومان
229
+ </span>
230
+ </div>
231
+ <p>مقدار خام: {rawValue}</p>
232
+ </div>
210
233
  );
211
234
  }
212
235
  ```
213
236
 
214
- Hook همچنین `isInvalid` (boolean) رو وقتی مقدار از `max` بیشتر بشه برمی‌گردونه، و `onPaste` برای مدیریت رویداد paste.
237
+ وقتی از هوک با `suffix` استفاده می‌کنید، `<input>` رو در یک کانتینر `relative` بپیچید و پسوند را به صورت `<span>` با `pointer-events: none` رندر کنید. این کار تضمین می‌کند پسوند هرگز با موقعیت cursor یا کلید Backspace تداخل نداشته باشد. برای جلوگیری از همپوشانی متن، `paddingRight` مناسب به input اضافه کنید.
215
238
 
216
239
  ---
217
240
 
@@ -267,7 +290,7 @@ function LoanCalculator() {
267
290
  | `separatorCount` | `number` | `3` | تعداد ارقام بین جداکننده‌ها (۳ = هزارگان) |
268
291
  | `separatorChar` | `string` | `","` | کاراکتر جداکننده هزارگان |
269
292
  | `decimalChar` | `string` | خودکار | جداکننده اعشار (`٫` برای fa، `.` برای en) |
270
- | `suffix` | `string` | `undefined` | پسوند — مثل `تومان`، `ریال` |
293
+ | `suffix` | `string` | `undefined` | پسوند بصری خارج از مقدار ورودی هرگز با cursor، انتخاب متن یا Backspace تداخل ندارد (مثل `تومان`، `ریال`) |
271
294
  | `maxDecimals` | `number` | `undefined` | حداکثر رقم اعشار مجاز |
272
295
  | `min` | `number` | `undefined` | کمترین مقدار مجاز |
273
296
  | `max` | `number` | `undefined` | بیشترین مقدار مجاز — اعتبارسنجی نرم (علامت‌گذاری invalid، اعمال در blur) |
@@ -292,11 +315,12 @@ transformNumber("1234567.89", {
292
315
  separatorCount: 3,
293
316
  separatorChar: ",",
294
317
  maxDecimals: 2,
295
- suffix: "تومان",
296
318
  });
297
- // "۱,۲۳۴,۵۶۷٫۸۹ تومان"
319
+ // "۱,۲۳۴,۵۶۷٫۸۹"
298
320
  ```
299
321
 
322
+ > نکته: `suffix` یک ویژگی صرفاً UI در کامپوننت و هوک است. تابع `transformNumber` پسوند را به خروجی اضافه نمی‌کند — برای نمایش پسوند از کامپوننت `PersianNumberInput` یا هوک `usePersianNumberInput` استفاده کنید.
323
+
300
324
  #### `toEnglishDigits(str, decimalChar?)`
301
325
 
302
326
  تبدیل ارقام فارسی یا عربی به انگلیسی:
package/README.md CHANGED
@@ -38,7 +38,7 @@ Form receives: "1234567"
38
38
  - 🔢 **Automatic digit conversion** — Persian (۰-۹) and Arabic (٠-٩) to English and back
39
39
  - 🌍 **Multi-locale** — `fa` (Farsi/Persian), `ar` (Arabic), `en` (English)
40
40
  - 📊 **Thousand separator formatting** — customizable separator character and group size
41
- - 💰 **Currency-ready** — add prefix, suffix (e.g. تومان, ریال, ر.س), and custom decimal separator
41
+ - 💰 **Currency-ready** — add suffix (e.g. تومان, ریال, ر.س) as a visual-only overlay, and custom decimal separator
42
42
  - ⚡ **~1KB gzipped** — zero extra dependencies, pure TypeScript
43
43
  - 🎯 **TypeScript** — full type definitions included
44
44
  - 🔄 **Cursor-position preservation** — no jump on re-format
@@ -98,7 +98,9 @@ Output displayed to user: `۱,۲۳۴,۵۶۷`
98
98
  />
99
99
  ```
100
100
 
101
- Displayed: `۵,۰۰۰,۰۰۰ تومان`
101
+ Displayed to user: `۵,۰۰۰,۰۰۰` with `تومان` rendered as a visual-only overlay next to the input.
102
+
103
+ The suffix is rendered outside the input's value — it never interferes with cursor position, selection, or backspace behavior.
102
104
 
103
105
  ---
104
106
 
@@ -114,7 +116,7 @@ Displayed: `۵,۰۰۰,۰۰۰ تومان`
114
116
  />
115
117
  ```
116
118
 
117
- Displayed: `٩٨٧,٦٥٤ ر.س`
119
+ Displayed to user: `٩٨٧,٦٥٤` with `ر.س` rendered as a visual-only overlay.
118
120
 
119
121
  ---
120
122
 
@@ -149,6 +151,8 @@ Displayed: `۱,۲۳۴٫۵۶`
149
151
  />
150
152
  ```
151
153
 
154
+ Displayed to user: `۰` with `ریال` rendered as visual-only overlay.
155
+
152
156
  ---
153
157
 
154
158
  ### With React Hook Form
@@ -189,30 +193,50 @@ function ProductForm() {
189
193
  import { usePersianNumberInput } from "persian-number-input";
190
194
 
191
195
  function CustomInput() {
192
- const { value, onChange, onBlur, rawValue } = usePersianNumberInput({
193
- initialValue: 1000,
194
- locale: "fa",
195
- separatorCount: 3,
196
- maxDecimals: 2,
197
- min: 0,
198
- max: 1000000,
199
- onValueChange: (val) => console.log("English value:", val),
200
- });
196
+ const { value, onChange, onBlur, rawValue, isInvalid } =
197
+ usePersianNumberInput({
198
+ initialValue: 1000,
199
+ locale: "fa",
200
+ suffix: "تومان",
201
+ maxDecimals: 2,
202
+ min: 0,
203
+ max: 1000000,
204
+ onValueChange: (val) => console.log("English value:", val),
205
+ });
201
206
 
202
207
  return (
203
- <input
204
- type="text"
205
- value={value}
206
- onChange={onChange}
207
- onBlur={onBlur}
208
- onPaste={onPaste}
209
- dir="rtl"
210
- />
208
+ <div>
209
+ <div style={{ position: "relative", display: "inline-flex", alignItems: "center" }}>
210
+ <input
211
+ type="text"
212
+ value={value}
213
+ onChange={onChange}
214
+ onBlur={onBlur}
215
+ onPaste={onPaste}
216
+ dir="ltr"
217
+ aria-invalid={isInvalid || undefined}
218
+ />
219
+ <span
220
+ style={{
221
+ position: "absolute",
222
+ pointerEvents: "none",
223
+ right: 0,
224
+ top: 0,
225
+ bottom: 0,
226
+ display: "flex",
227
+ alignItems: "center",
228
+ }}
229
+ >
230
+ تومان
231
+ </span>
232
+ </div>
233
+ <p>Raw value: {rawValue}</p>
234
+ </div>
211
235
  );
212
236
  }
213
237
  ```
214
238
 
215
- The hook also returns `isInvalid` (boolean) when the value exceeds `max`, and `onPaste` for paste event handling.
239
+ When using a suffix with the hook, wrap the `<input>` in a relative container and render the suffix as an absolutely-positioned `<span>` with `pointer-events: none`. This ensures the suffix never interferes with cursor positioning or backspace behavior. Add `paddingRight` to the input to prevent text from overlapping the suffix overlay.
216
240
 
217
241
  ---
218
242
 
@@ -227,7 +251,7 @@ The hook also returns `isInvalid` (boolean) when the value exceeds `max`, and `o
227
251
  | `separatorCount` | `number` | `3` | Digits per group (3 = thousand separator) |
228
252
  | `separatorChar` | `string` | `","` | Thousand separator character |
229
253
  | `decimalChar` | `string` | Auto | Decimal separator (`٫` for fa, `.` for en) |
230
- | `suffix` | `string` | `undefined` | Currency or unit suffix (e.g. `تومان`, `ریال`) |
254
+ | `suffix` | `string` | `undefined` | Visual-only suffix rendered outside the input value — never affects cursor, selection, or backspace (e.g. `تومان`, `ریال`) |
231
255
  | `maxDecimals` | `number` | `undefined` | Maximum allowed decimal places |
232
256
  | `min` | `number` | `undefined` | Minimum allowed value |
233
257
  | `max` | `number` | `undefined` | Maximum allowed value — soft validation (marks invalid, clamps on blur) |
@@ -252,11 +276,12 @@ transformNumber("1234567.89", {
252
276
  separatorCount: 3,
253
277
  separatorChar: ",",
254
278
  maxDecimals: 2,
255
- suffix: "تومان",
256
279
  });
257
- // → "۱,۲۳۴,۵۶۷٫۸۹ تومان"
280
+ // → "۱,۲۳۴,۵۶۷٫۸۹"
258
281
  ```
259
282
 
283
+ > Note: `suffix` is a UI-only feature of the component and hook. The `transformNumber` utility does not append suffix — use the `PersianNumberInput` component or `usePersianNumberInput` hook for suffix rendering.
284
+
260
285
  #### `toEnglishDigits(str, decimalChar?)`
261
286
 
262
287
  Convert Persian or Arabic digits to English.
@@ -5,6 +5,7 @@ interface EventOptions {
5
5
  rawValue: string;
6
6
  maxDecimals?: number;
7
7
  decimalChar?: string;
8
+ separatorChar: string;
8
9
  updateValue: (value: string) => void;
9
10
  onKeyDown?: React.KeyboardEventHandler<HTMLInputElement>;
10
11
  onPaste?: React.ClipboardEventHandler<HTMLInputElement>;
@@ -1 +1 @@
1
- {"version":3,"file":"useNumericInputEvents.d.ts","sourceRoot":"","sources":["../../src/hooks/useNumericInputEvents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,UAAU,YAAY;IACpB,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,SAAS,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;IACzD,OAAO,CAAC,EAAE,KAAK,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;CACzD;AAED,eAAO,MAAM,qBAAqB,GAAI,SAAS,YAAY;mBAYnD,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC;iBAkBrC,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC;CAY7C,CAAC"}
1
+ {"version":3,"file":"useNumericInputEvents.d.ts","sourceRoot":"","sources":["../../src/hooks/useNumericInputEvents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,UAAU,YAAY;IACpB,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,SAAS,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;IACzD,OAAO,CAAC,EAAE,KAAK,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;CACzD;AAED,eAAO,MAAM,qBAAqB,GAAI,SAAS,YAAY;mBAanD,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC;iBAoBrC,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC;CA4B7C,CAAC"}
@@ -4,25 +4,43 @@ exports.useNumericInputEvents = void 0;
4
4
  const react_1 = require("react");
5
5
  const digitUtils_1 = require("../utils/digitUtils");
6
6
  const useNumericInputEvents = (options) => {
7
- const { keyFilter, rawValue, maxDecimals, decimalChar, updateValue, onKeyDown: externalOnKeyDown, onPaste: externalOnPaste, } = options;
7
+ const { keyFilter, rawValue, maxDecimals, decimalChar, separatorChar, updateValue, onKeyDown: externalOnKeyDown, onPaste: externalOnPaste, } = options;
8
8
  const onKeyDown = (0, react_1.useCallback)((e) => {
9
9
  if (!keyFilter({
10
10
  key: e.key,
11
11
  ctrlKey: e.ctrlKey,
12
12
  metaKey: e.metaKey,
13
13
  altKey: e.altKey,
14
+ currentValue: e.currentTarget.value,
15
+ selectionStart: e.currentTarget.selectionStart ?? 0,
14
16
  })) {
15
17
  e.preventDefault();
16
18
  }
17
19
  externalOnKeyDown?.(e);
18
- }, [keyFilter, updateValue, externalOnKeyDown]);
20
+ }, [keyFilter, externalOnKeyDown]);
19
21
  const onPaste = (0, react_1.useCallback)((e) => {
20
22
  e.preventDefault();
23
+ const input = e.currentTarget;
24
+ const selStart = input.selectionStart ?? 0;
25
+ const selEnd = input.selectionEnd ?? 0;
21
26
  const pasted = e.clipboardData.getData("text");
22
- const sanitized = (0, digitUtils_1.sanitizeNumericInput)(pasted, maxDecimals, decimalChar);
23
- updateValue(sanitized);
27
+ const currentFormatted = input.value;
28
+ let rawStart = 0;
29
+ for (let i = 0; i < selStart && i < currentFormatted.length; i++) {
30
+ if (currentFormatted[i] !== separatorChar)
31
+ rawStart++;
32
+ }
33
+ let rawEnd = rawStart;
34
+ for (let i = selStart; i < selEnd && i < currentFormatted.length; i++) {
35
+ if (currentFormatted[i] !== separatorChar)
36
+ rawEnd++;
37
+ }
38
+ const sanitizedPaste = (0, digitUtils_1.sanitizeNumericInput)(pasted, maxDecimals, decimalChar);
39
+ const newRaw = rawValue.slice(0, rawStart) + sanitizedPaste + rawValue.slice(rawEnd);
40
+ const finalRaw = (0, digitUtils_1.sanitizeNumericInput)(newRaw, maxDecimals, decimalChar);
41
+ updateValue(finalRaw);
24
42
  externalOnPaste?.(e);
25
- }, [maxDecimals, decimalChar, updateValue, externalOnPaste]);
43
+ }, [rawValue, maxDecimals, decimalChar, updateValue, externalOnPaste, separatorChar]);
26
44
  return { onKeyDown, onPaste };
27
45
  };
28
46
  exports.useNumericInputEvents = useNumericInputEvents;
@@ -1 +1 @@
1
- {"version":3,"file":"useNumericInputEvents.js","sourceRoot":"","sources":["../../src/hooks/useNumericInputEvents.ts"],"names":[],"mappings":";;;AAAA,iCAA2C;AAE3C,oDAA2D;AAYpD,MAAM,qBAAqB,GAAG,CAAC,OAAqB,EAAE,EAAE;IAC7D,MAAM,EACJ,SAAS,EACT,QAAQ,EACR,WAAW,EACX,WAAW,EACX,WAAW,EACX,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,eAAe,GACzB,GAAG,OAAO,CAAC;IAEZ,MAAM,SAAS,GAAG,IAAA,mBAAW,EAC3B,CAAC,CAAwC,EAAE,EAAE;QAC3C,IACE,CAAC,SAAS,CAAC;YACT,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,MAAM,EAAE,CAAC,CAAC,MAAM;SACjB,CAAC,EACF,CAAC;YACD,CAAC,CAAC,cAAc,EAAE,CAAC;QACrB,CAAC;QAED,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC,EACD,CAAC,SAAS,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAC5C,CAAC;IAEF,MAAM,OAAO,GAAG,IAAA,mBAAW,EACzB,CAAC,CAAyC,EAAE,EAAE;QAC5C,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,SAAS,GAAG,IAAA,iCAAoB,EAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QACzE,WAAW,CAAC,SAAS,CAAC,CAAC;QAEvB,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC,EACD,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,CAAC,CACzD,CAAC;IAEF,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAChC,CAAC,CAAC;AA1CW,QAAA,qBAAqB,yBA0ChC"}
1
+ {"version":3,"file":"useNumericInputEvents.js","sourceRoot":"","sources":["../../src/hooks/useNumericInputEvents.ts"],"names":[],"mappings":";;;AAAA,iCAA2C;AAE3C,oDAA2D;AAapD,MAAM,qBAAqB,GAAG,CAAC,OAAqB,EAAE,EAAE;IAC7D,MAAM,EACJ,SAAS,EACT,QAAQ,EACR,WAAW,EACX,WAAW,EACX,aAAa,EACb,WAAW,EACX,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,eAAe,GACzB,GAAG,OAAO,CAAC;IAEZ,MAAM,SAAS,GAAG,IAAA,mBAAW,EAC3B,CAAC,CAAwC,EAAE,EAAE;QAC3C,IACE,CAAC,SAAS,CAAC;YACT,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,YAAY,EAAE,CAAC,CAAC,aAAa,CAAC,KAAK;YACnC,cAAc,EAAE,CAAC,CAAC,aAAa,CAAC,cAAc,IAAI,CAAC;SACpD,CAAC,EACF,CAAC;YACD,CAAC,CAAC,cAAc,EAAE,CAAC;QACrB,CAAC;QAED,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC,EACD,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAC/B,CAAC;IAEF,MAAM,OAAO,GAAG,IAAA,mBAAW,EACzB,CAAC,CAAyC,EAAE,EAAE;QAC5C,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,MAAM,KAAK,GAAG,CAAC,CAAC,aAAa,CAAC;QAC9B,MAAM,QAAQ,GAAG,KAAK,CAAC,cAAc,IAAI,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE/C,MAAM,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAAC;QACrC,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,IAAI,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACjE,IAAI,gBAAgB,CAAC,CAAC,CAAC,KAAK,aAAa;gBAAE,QAAQ,EAAE,CAAC;QACxD,CAAC;QACD,IAAI,MAAM,GAAG,QAAQ,CAAC;QACtB,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,MAAM,IAAI,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtE,IAAI,gBAAgB,CAAC,CAAC,CAAC,KAAK,aAAa;gBAAE,MAAM,EAAE,CAAC;QACtD,CAAC;QAED,MAAM,cAAc,GAAG,IAAA,iCAAoB,EAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QAC9E,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrF,MAAM,QAAQ,GAAG,IAAA,iCAAoB,EAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QACxE,WAAW,CAAC,QAAQ,CAAC,CAAC;QAEtB,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC,EACD,CAAC,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,CAAC,CAClF,CAAC;IAEF,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAChC,CAAC,CAAC;AA7DW,QAAA,qBAAqB,yBA6DhC"}
@@ -1 +1 @@
1
- {"version":3,"file":"usePersianNumberInput.d.ts","sourceRoot":"","sources":["../../src/hooks/usePersianNumberInput.ts"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AACxE,OAAO,EAEL,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;AAQlC,MAAM,WAAW,0BACf,SAAQ,IAAI,CAAC,sBAAsB,EAAE,aAAa,CAAC;IACnD,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IACpD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IACtD,MAAM,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IACnD,SAAS,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;IACzD,OAAO,CAAC,EAAE,KAAK,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;CACzD;AAED,eAAO,MAAM,qBAAqB,GAChC,QAAO,0BAA+B;;sBAwEb,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC;;;oBA0BlD,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC;;;2BAjDhC,MAAM;;CAwEnB,CAAC"}
1
+ {"version":3,"file":"usePersianNumberInput.d.ts","sourceRoot":"","sources":["../../src/hooks/usePersianNumberInput.ts"],"names":[],"mappings":"AAAA,OAAO,KAAwC,MAAM,OAAO,CAAC;AAC7D,OAAO,EAEL,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;AAQlC,MAAM,WAAW,0BACf,SAAQ,IAAI,CAAC,sBAAsB,EAAE,aAAa,CAAC;IACnD,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IACpD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IACtD,MAAM,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IACnD,SAAS,CAAC,EAAE,KAAK,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;IACzD,OAAO,CAAC,EAAE,KAAK,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;CACzD;AAED,eAAO,MAAM,qBAAqB,GAChC,QAAO,0BAA+B;;sBAoEb,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC;;;oBAoClD,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC;;;2BA5DhC,MAAM;;CAmFnB,CAAC"}
@@ -13,13 +13,9 @@ const usePersianNumberInput = (props = {}) => {
13
13
  const { initialValue, separatorCount = 3, separatorChar = ",", decimalChar, locale = "fa", showZero = false, onValueChange, min, max, maxDecimals, onChange: externalOnChange, onBlur: externalOnBlur, onKeyDown: externalOnKeyDown, onPaste: externalOnPaste, } = props;
14
14
  const [rawValue, setRawValue] = (0, react_1.useState)(() => (0, digitUtils_1.sanitizeNumericInput)(initialValue, maxDecimals, decimalChar));
15
15
  const [isInvalid, setIsInvalid] = (0, react_1.useState)(false);
16
- (0, react_1.useEffect)(() => {
17
- setRawValue((0, digitUtils_1.sanitizeNumericInput)(initialValue, maxDecimals, decimalChar));
18
- setIsInvalid(false);
19
- }, [initialValue, maxDecimals, decimalChar]);
20
16
  const inputRef = (0, react_1.useRef)(null);
21
- const rawValueLen = rawValue ? rawValue.length : 0;
22
- const { setCursor } = (0, useCursorManager_1.useCursorManager)(inputRef, rawValueLen);
17
+ const cursorTrigger = (0, react_1.useRef)(0);
18
+ const { setCursor } = (0, useCursorManager_1.useCursorManager)(inputRef, cursorTrigger.current);
23
19
  const { displayValue, transformOpts } = (0, useNumberFormatter_1.useNumberFormatter)(rawValue ?? "", {
24
20
  separatorCount,
25
21
  separatorChar,
@@ -46,6 +42,7 @@ const usePersianNumberInput = (props = {}) => {
46
42
  rawValue: rawValue ?? "",
47
43
  maxDecimals,
48
44
  decimalChar,
45
+ separatorChar,
49
46
  updateValue,
50
47
  onKeyDown: externalOnKeyDown,
51
48
  onPaste: externalOnPaste,
@@ -59,9 +56,24 @@ const usePersianNumberInput = (props = {}) => {
59
56
  setIsInvalid(!valid);
60
57
  const prevFormatted = (0, transformNumber_1.transformNumber)(rawValue, transformOpts);
61
58
  const nextFormatted = (0, transformNumber_1.transformNumber)(sanitized, transformOpts);
62
- let cursor = input.selectionStart || 0;
63
- const diff = nextFormatted.length - prevFormatted.length;
64
- setCursor(cursor + diff);
59
+ cursorTrigger.current += 1;
60
+ const formattedCursor = input.selectionStart ?? 0;
61
+ let rawCursor = 0;
62
+ for (let i = 0; i < formattedCursor && i < prevFormatted.length; i++) {
63
+ if (prevFormatted[i] !== separatorChar)
64
+ rawCursor++;
65
+ }
66
+ let newFormattedCursor = nextFormatted.length;
67
+ let rawCount = 0;
68
+ for (let i = 0; i < nextFormatted.length; i++) {
69
+ if (rawCount >= rawCursor) {
70
+ newFormattedCursor = i;
71
+ break;
72
+ }
73
+ if (nextFormatted[i] !== separatorChar)
74
+ rawCount++;
75
+ }
76
+ setCursor(newFormattedCursor);
65
77
  setRawValue(sanitized);
66
78
  if (valid) {
67
79
  onValueChange?.(sanitized);
@@ -1 +1 @@
1
- {"version":3,"file":"usePersianNumberInput.js","sourceRoot":"","sources":["../../src/hooks/usePersianNumberInput.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"usePersianNumberInput.js","sourceRoot":"","sources":["../../src/hooks/usePersianNumberInput.ts"],"names":[],"mappings":"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"}
@@ -97,7 +97,7 @@ const sanitizeNumericInput = (value, maxDecimals, decimalChar) => {
97
97
  const isNegative = str.startsWith("-");
98
98
  str = (0, exports.stripNonNumeric)(str);
99
99
  str = (0, exports.normalizeDecimals)(str);
100
- if (isNegative && str) {
100
+ if (isNegative) {
101
101
  str = "-" + str;
102
102
  }
103
103
  str = (0, exports.stripLeadingZeros)(str);
@@ -1 +1 @@
1
- {"version":3,"file":"digitUtils.js","sourceRoot":"","sources":["../../src/utils/digitUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"digitUtils.js","sourceRoot":"","sources":["../../src/utils/digitUtils.ts"],"names":[],"mappings":"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"}
@@ -3,10 +3,13 @@ export interface KeyFilterEvent {
3
3
  ctrlKey: boolean;
4
4
  metaKey: boolean;
5
5
  altKey: boolean;
6
+ currentValue?: string;
7
+ selectionStart?: number;
6
8
  }
7
9
  export interface KeyFilterRule {
8
10
  pattern?: RegExp;
9
11
  key?: string;
12
+ validate?: (e: KeyFilterEvent) => boolean;
10
13
  description?: string;
11
14
  }
12
15
  export type KeyFilter = (e: KeyFilterEvent) => boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"keyFilter.d.ts","sourceRoot":"","sources":["../../src/utils/keyFilter.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,EAAE,cAAc,KAAK,OAAO,CAAC;AAEvD,eAAO,MAAM,eAAe,GAAI,OAAO,aAAa,EAAE,KAAG,SASxD,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,aAAa,EAUhD,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,aAAY,aAAa,EAAO,KAC/B,SACyD,CAAC"}
1
+ {"version":3,"file":"keyFilter.d.ts","sourceRoot":"","sources":["../../src/utils/keyFilter.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,cAAc,KAAK,OAAO,CAAC;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,EAAE,cAAc,KAAK,OAAO,CAAC;AAEvD,eAAO,MAAM,eAAe,GAAI,OAAO,aAAa,EAAE,KAAG,SAUxD,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,aAAa,EAUhD,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,aAAY,aAAa,EAAO,KAC/B,SAaF,CAAC"}
@@ -10,6 +10,8 @@ const createKeyFilter = (rules) => {
10
10
  return true;
11
11
  if (rule.pattern?.test(e.key))
12
12
  return true;
13
+ if (rule.validate?.(e))
14
+ return true;
13
15
  }
14
16
  return false;
15
17
  };
@@ -23,9 +25,19 @@ exports.DEFAULT_NUMERIC_RULES = [
23
25
  { key: "Home" },
24
26
  { key: "End" },
25
27
  { pattern: /^Arrow/ },
26
- { pattern: /^[0-9.\-]$/ },
28
+ { pattern: /^[0-9.]$/ },
27
29
  { pattern: /^[\u0660-\u0669\u06F0-\u06F9]$/ },
28
30
  ];
29
- const createNumericKeyFilter = (extraRules = []) => (0, exports.createKeyFilter)([...exports.DEFAULT_NUMERIC_RULES, ...extraRules]);
31
+ const createNumericKeyFilter = (extraRules = []) => {
32
+ const baseRules = exports.DEFAULT_NUMERIC_RULES.filter(r => r.pattern?.source !== "^[0-9.]$");
33
+ const digitRule = { pattern: /^[0-9.]$/ };
34
+ const negativeRule = {
35
+ description: "minus only at start",
36
+ validate: (e) => e.key === "-" &&
37
+ (e.selectionStart ?? 1) === 0 &&
38
+ !(e.currentValue ?? "").startsWith("-"),
39
+ };
40
+ return (0, exports.createKeyFilter)([...baseRules, digitRule, negativeRule, ...extraRules]);
41
+ };
30
42
  exports.createNumericKeyFilter = createNumericKeyFilter;
31
43
  //# sourceMappingURL=keyFilter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"keyFilter.js","sourceRoot":"","sources":["../../src/utils/keyFilter.ts"],"names":[],"mappings":";;;AAeO,MAAM,eAAe,GAAG,CAAC,KAAsB,EAAa,EAAE;IACnE,OAAO,CAAC,CAAC,EAAE,EAAE;QACX,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACpD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG;gBAAE,OAAO,IAAI,CAAC;YAChD,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;QAC7C,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC,CAAC;AATW,QAAA,eAAe,mBAS1B;AAEW,QAAA,qBAAqB,GAAoB;IACpD,EAAE,GAAG,EAAE,WAAW,EAAE;IACpB,EAAE,GAAG,EAAE,QAAQ,EAAE;IACjB,EAAE,GAAG,EAAE,KAAK,EAAE;IACd,EAAE,GAAG,EAAE,OAAO,EAAE;IAChB,EAAE,GAAG,EAAE,MAAM,EAAE;IACf,EAAE,GAAG,EAAE,KAAK,EAAE;IACd,EAAE,OAAO,EAAE,QAAQ,EAAE;IACrB,EAAE,OAAO,EAAE,YAAY,EAAE;IACzB,EAAE,OAAO,EAAE,gCAAgC,EAAE;CAC9C,CAAC;AAEK,MAAM,sBAAsB,GAAG,CACpC,aAA8B,EAAE,EACrB,EAAE,CACb,IAAA,uBAAe,EAAC,CAAC,GAAG,6BAAqB,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC;AAHhD,QAAA,sBAAsB,0BAG0B"}
1
+ {"version":3,"file":"keyFilter.js","sourceRoot":"","sources":["../../src/utils/keyFilter.ts"],"names":[],"mappings":";;;AAkBO,MAAM,eAAe,GAAG,CAAC,KAAsB,EAAa,EAAE;IACnE,OAAO,CAAC,CAAC,EAAE,EAAE;QACX,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACpD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG;gBAAE,OAAO,IAAI,CAAC;YAChD,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC3C,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAC;QACtC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC,CAAC;AAVW,QAAA,eAAe,mBAU1B;AAEW,QAAA,qBAAqB,GAAoB;IACpD,EAAE,GAAG,EAAE,WAAW,EAAE;IACpB,EAAE,GAAG,EAAE,QAAQ,EAAE;IACjB,EAAE,GAAG,EAAE,KAAK,EAAE;IACd,EAAE,GAAG,EAAE,OAAO,EAAE;IAChB,EAAE,GAAG,EAAE,MAAM,EAAE;IACf,EAAE,GAAG,EAAE,KAAK,EAAE;IACd,EAAE,OAAO,EAAE,QAAQ,EAAE;IACrB,EAAE,OAAO,EAAE,UAAU,EAAE;IACvB,EAAE,OAAO,EAAE,gCAAgC,EAAE;CAC9C,CAAC;AAEK,MAAM,sBAAsB,GAAG,CACpC,aAA8B,EAAE,EACrB,EAAE;IACb,MAAM,SAAS,GAAG,6BAAqB,CAAC,MAAM,CAC5C,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,UAAU,CACtC,CAAC;IACF,MAAM,SAAS,GAAkB,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IACzD,MAAM,YAAY,GAAkB;QAClC,WAAW,EAAE,qBAAqB;QAClC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CACd,CAAC,CAAC,GAAG,KAAK,GAAG;YACb,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,KAAK,CAAC;YAC7B,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;KAC1C,CAAC;IACF,OAAO,IAAA,uBAAe,EAAC,CAAC,GAAG,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC;AACjF,CAAC,CAAC;AAfW,QAAA,sBAAsB,0BAejC"}
@@ -1 +1 @@
1
- {"version":3,"file":"transformNumber.d.ts","sourceRoot":"","sources":["../../src/utils/transformNumber.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,sBAAsB;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,eAAe,GAC1B,UAAU,MAAM,GAAG,SAAS,EAC5B,UAAU,sBAAsB,KAC/B,MA0CF,CAAC"}
1
+ {"version":3,"file":"transformNumber.d.ts","sourceRoot":"","sources":["../../src/utils/transformNumber.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,sBAAsB;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,eAAe,GAC1B,UAAU,MAAM,GAAG,SAAS,EAC5B,UAAU,sBAAsB,KAC/B,MA4CF,CAAC"}
@@ -27,6 +27,8 @@ const transformNumber = (rawValue, options) => {
27
27
  if (locale !== "en") {
28
28
  finalStr = (0, digitUtils_1.toLocalizedDigits)(finalStr, locale);
29
29
  }
30
+ if (suffix)
31
+ finalStr = `${finalStr}${suffix}`;
30
32
  return finalStr;
31
33
  };
32
34
  exports.transformNumber = transformNumber;
@@ -1 +1 @@
1
- {"version":3,"file":"transformNumber.js","sourceRoot":"","sources":["../../src/utils/transformNumber.ts"],"names":[],"mappings":";;;AAAA,6CAIsB;AAYf,MAAM,eAAe,GAAG,CAC7B,QAA4B,EAC5B,OAAgC,EACxB,EAAE;IACV,MAAM,EACJ,cAAc,GAAG,CAAC,EAClB,aAAa,GAAG,GAAG,EACnB,WAAW,EACX,MAAM,EACN,MAAM,GAAG,IAAI,EACb,QAAQ,GAAG,KAAK,GACjB,GAAG,OAAO,IAAI,EAAE,CAAC;IAElB,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;QACnE,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAA,8BAAiB,EAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxD,CAAC;IAED,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAE9C,MAAM,UAAU,GACd,WAAW,IAAI,CAAC,cAAc,IAAI,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAE7E,IAAI,UAAU,KAAK,EAAE,IAAI,CAAC,cAAc,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACzE,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAA,8BAAiB,EAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxD,CAAC;IAED,MAAM,UAAU,GAAG,IAAA,wBAAW,EAAC,UAAU,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;IAE1E,IAAI,QAAQ,GAAG,UAAU,CAAC;IAC1B,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,QAAQ,GAAG,GAAG,UAAU,IAAI,cAAc,EAAE,CAAC;IAC/C,CAAC;SAAM,IAAI,cAAc,EAAE,CAAC;QAC1B,QAAQ,GAAG,GAAG,UAAU,GAAG,CAAC;IAC9B,CAAC;IAED,IAAI,WAAW,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACnC,QAAQ,GAAG,IAAA,qCAAwB,EAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,QAAQ,GAAG,IAAA,8BAAiB,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AA7CW,QAAA,eAAe,mBA6C1B"}
1
+ {"version":3,"file":"transformNumber.js","sourceRoot":"","sources":["../../src/utils/transformNumber.ts"],"names":[],"mappings":";;;AAAA,6CAIsB;AAYf,MAAM,eAAe,GAAG,CAC7B,QAA4B,EAC5B,OAAgC,EACxB,EAAE;IACV,MAAM,EACJ,cAAc,GAAG,CAAC,EAClB,aAAa,GAAG,GAAG,EACnB,WAAW,EACX,MAAM,EACN,MAAM,GAAG,IAAI,EACb,QAAQ,GAAG,KAAK,GACjB,GAAG,OAAO,IAAI,EAAE,CAAC;IAElB,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;QACnE,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAA,8BAAiB,EAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxD,CAAC;IAED,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAE9C,MAAM,UAAU,GACd,WAAW,IAAI,CAAC,cAAc,IAAI,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAE7E,IAAI,UAAU,KAAK,EAAE,IAAI,CAAC,cAAc,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACzE,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAA,8BAAiB,EAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxD,CAAC;IAED,MAAM,UAAU,GAAG,IAAA,wBAAW,EAAC,UAAU,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;IAE1E,IAAI,QAAQ,GAAG,UAAU,CAAC;IAC1B,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,QAAQ,GAAG,GAAG,UAAU,IAAI,cAAc,EAAE,CAAC;IAC/C,CAAC;SAAM,IAAI,cAAc,EAAE,CAAC;QAC1B,QAAQ,GAAG,GAAG,UAAU,GAAG,CAAC;IAC9B,CAAC;IAED,IAAI,WAAW,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACnC,QAAQ,GAAG,IAAA,qCAAwB,EAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,QAAQ,GAAG,IAAA,8BAAiB,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,MAAM;QAAE,QAAQ,GAAG,GAAG,QAAQ,GAAG,MAAM,EAAE,CAAC;IAE9C,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AA/CW,QAAA,eAAe,mBA+C1B"}
@@ -41,7 +41,7 @@ function compareNumericStrings(a, b) {
41
41
  const createMaxRule = (max, timing = ValidationTiming.OnChange) => ({
42
42
  timing,
43
43
  validate: (rawValue) => {
44
- if (rawValue === "" || rawValue === "." || max === undefined) {
44
+ if (rawValue === "" || rawValue === "." || rawValue === "-" || max === undefined) {
45
45
  return { valid: true };
46
46
  }
47
47
  const maxStr = String(max);
@@ -58,7 +58,7 @@ exports.createMaxRule = createMaxRule;
58
58
  const createMinRule = (min) => ({
59
59
  timing: ValidationTiming.OnBlur,
60
60
  validate: (rawValue) => {
61
- if (!rawValue || rawValue === "." || min === undefined) {
61
+ if (!rawValue || rawValue === "." || rawValue === "-" || min === undefined) {
62
62
  return { valid: true };
63
63
  }
64
64
  const minStr = String(min);
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":";;;AAAA,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,yCAAqB,CAAA;IACrB,qCAAiB,CAAA;AACnB,CAAC,EAHW,gBAAgB,gCAAhB,gBAAgB,QAG3B;AAoBD,SAAS,qBAAqB,CAAC,CAAS,EAAE,CAAS;IACjD,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAE/B,IAAI,IAAI,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,CAAC,CAAC;IAC7B,IAAI,CAAC,IAAI,IAAI,IAAI;QAAE,OAAO,CAAC,CAAC;IAE5B,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnC,MAAM,CAAC,IAAI,GAAG,GAAG,EAAE,KAAK,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjD,MAAM,CAAC,IAAI,GAAG,GAAG,EAAE,KAAK,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEjD,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAC3B,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAE9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,CAAC,CAAC;AACX,CAAC;AAEM,MAAM,aAAa,GAAG,CAC3B,GAAY,EACZ,SAA2B,gBAAgB,CAAC,QAAQ,EACpC,EAAE,CAAC,CAAC;IACpB,MAAM;IACN,QAAQ,EAAE,CAAC,QAAgB,EAAE,EAAE;QAC7B,IAAI,QAAQ,KAAK,EAAE,IAAI,QAAQ,KAAK,GAAG,IAAI,QAAQ,KAAK,GAAG,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACjF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACzB,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,qBAAqB,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YAChD,IAAI,MAAM,KAAK,gBAAgB,CAAC,MAAM,EAAE,CAAC;gBACvC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC;YAClD,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAC1B,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzB,CAAC;CACF,CAAC,CAAC;AAlBU,QAAA,aAAa,iBAkBvB;AAEI,MAAM,aAAa,GAAG,CAAC,GAAY,EAAkB,EAAE,CAAC,CAAC;IAC9D,MAAM,EAAE,gBAAgB,CAAC,MAAM;IAC/B,QAAQ,EAAE,CAAC,QAAgB,EAAE,EAAE;QAC7B,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,GAAG,IAAI,QAAQ,KAAK,GAAG,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAC3E,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACzB,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,qBAAqB,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YAChD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC;QAClD,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzB,CAAC;CACF,CAAC,CAAC;AAZU,QAAA,aAAa,iBAYvB;AAEI,MAAM,sBAAsB,GAAG,CAAC,KAAuB,EAAE,EAAE,CAAC,CAAC;IAClE,QAAQ,EAAE,CAAC,MAAwB,EAAE,QAAgB,EAAoB,EAAE;QACzE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBAC3C,IAAI,CAAC,MAAM,CAAC,KAAK;oBAAE,OAAO,MAAM,CAAC;YACnC,CAAC;QACH,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzB,CAAC;CACF,CAAC,CAAC;AAVU,QAAA,sBAAsB,0BAUhC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "persian-number-input",
3
- "version": "5.0.0",
3
+ "version": "5.0.2",
4
4
  "description": "React component for Persian, Indic, or English localized number input with customizable digit grouping",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",