@dmsi/wedgekit-react 0.0.1247 → 0.0.1249

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.
Files changed (52) hide show
  1. package/dist/{chunk-MOBFZ672.js → chunk-3DJWSTPS.js} +1 -1
  2. package/dist/{chunk-EA6Y4HXQ.js → chunk-4FUZDLWX.js} +1 -1
  3. package/dist/{chunk-PABII472.js → chunk-H5SHC4XZ.js} +40 -33
  4. package/dist/{chunk-PBJ2MEHM.js → chunk-QW4AJ5FK.js} +1 -1
  5. package/dist/{chunk-5UPADXVU.js → chunk-WSZ3ET5G.js} +4 -4
  6. package/dist/components/CalendarRange.cjs +40 -33
  7. package/dist/components/CalendarRange.js +5 -5
  8. package/dist/components/DataGrid/ColumnSelectorHeaderCell/ColumnSelectorMenuOption.cjs +40 -33
  9. package/dist/components/DataGrid/ColumnSelectorHeaderCell/ColumnSelectorMenuOption.js +5 -5
  10. package/dist/components/DataGrid/ColumnSelectorHeaderCell/index.cjs +40 -33
  11. package/dist/components/DataGrid/ColumnSelectorHeaderCell/index.js +5 -5
  12. package/dist/components/DataGrid/PinnedColumns.cjs +40 -33
  13. package/dist/components/DataGrid/PinnedColumns.js +5 -5
  14. package/dist/components/DataGrid/TableBody/LoadingCell.cjs +40 -33
  15. package/dist/components/DataGrid/TableBody/LoadingCell.js +5 -5
  16. package/dist/components/DataGrid/TableBody/TableBodyRow.cjs +40 -33
  17. package/dist/components/DataGrid/TableBody/TableBodyRow.js +5 -5
  18. package/dist/components/DataGrid/TableBody/index.cjs +40 -33
  19. package/dist/components/DataGrid/TableBody/index.js +5 -5
  20. package/dist/components/DataGrid/index.cjs +40 -33
  21. package/dist/components/DataGrid/index.js +5 -5
  22. package/dist/components/DataGrid/utils.cjs +40 -33
  23. package/dist/components/DataGrid/utils.js +5 -5
  24. package/dist/components/DataGridCell.cjs +40 -33
  25. package/dist/components/DataGridCell.js +3 -3
  26. package/dist/components/DateInput.cjs +40 -33
  27. package/dist/components/DateInput.js +5 -5
  28. package/dist/components/DateRangeInput.cjs +40 -33
  29. package/dist/components/DateRangeInput.js +5 -5
  30. package/dist/components/FilterGroup.cjs +40 -33
  31. package/dist/components/FilterGroup.js +2 -2
  32. package/dist/components/Input.cjs +40 -33
  33. package/dist/components/Input.js +1 -1
  34. package/dist/components/MobileDataGrid/ColumnSelector/index.cjs +40 -33
  35. package/dist/components/MobileDataGrid/ColumnSelector/index.js +5 -5
  36. package/dist/components/MobileDataGrid/MobileDataGridHeader.cjs +40 -33
  37. package/dist/components/MobileDataGrid/MobileDataGridHeader.js +5 -5
  38. package/dist/components/MobileDataGrid/index.cjs +40 -33
  39. package/dist/components/MobileDataGrid/index.js +5 -5
  40. package/dist/components/Password.cjs +40 -33
  41. package/dist/components/Password.js +1 -1
  42. package/dist/components/Search.cjs +40 -33
  43. package/dist/components/Search.js +2 -2
  44. package/dist/components/Select.cjs +40 -33
  45. package/dist/components/Select.js +2 -2
  46. package/dist/components/Stepper.cjs +40 -33
  47. package/dist/components/Stepper.js +1 -1
  48. package/dist/components/Time.cjs +40 -33
  49. package/dist/components/Time.js +1 -1
  50. package/dist/components/index.cjs +40 -33
  51. package/dist/components/index.js +5 -5
  52. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Input
3
- } from "./chunk-PABII472.js";
3
+ } from "./chunk-H5SHC4XZ.js";
4
4
  import {
5
5
  __objRest,
6
6
  __spreadValues
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  InputBase
3
- } from "./chunk-PABII472.js";
3
+ } from "./chunk-H5SHC4XZ.js";
4
4
  import {
5
5
  Icon
6
6
  } from "./chunk-NKUETCDA.js";
@@ -34,6 +34,14 @@ import {
34
34
  } from "react";
35
35
  import clsx from "clsx";
36
36
  import { jsx, jsxs } from "react/jsx-runtime";
37
+ function hasEquivalentNumericValue(currentValue, nextValue) {
38
+ if (!currentValue || !nextValue) {
39
+ return false;
40
+ }
41
+ const currentNumericValue = Number(currentValue.replace(/,/g, ""));
42
+ const nextNumericValue = Number(nextValue.replace(/,/g, ""));
43
+ return !Number.isNaN(currentNumericValue) && !Number.isNaN(nextNumericValue) && currentNumericValue === nextNumericValue;
44
+ }
37
45
  var InputBase = (_a) => {
38
46
  var _b = _a, {
39
47
  id,
@@ -256,28 +264,33 @@ var Input = (_a) => {
256
264
  const [internalValue, setInternalValue] = useState("");
257
265
  const [displayValue, setDisplayValue] = useState("");
258
266
  const [isFocused, setIsFocused] = useState(false);
267
+ const internalValueRef = useRef("");
268
+ const setInputValues = (nextInternalValue, nextDisplayValue) => {
269
+ internalValueRef.current = nextInternalValue;
270
+ setInternalValue(nextInternalValue);
271
+ setDisplayValue(nextDisplayValue);
272
+ };
259
273
  useEffect(() => {
260
274
  var _a2;
261
275
  const stringValue = (_a2 = propValue == null ? void 0 : propValue.toString()) != null ? _a2 : "";
262
276
  const shouldUseThousandsFormatting = variant === "currency" || variant === "uom" && currencyFormat;
263
277
  if (!stringValue) {
264
- setInternalValue("");
265
- setDisplayValue("");
278
+ setInputValues("", "");
266
279
  return;
267
280
  }
268
281
  if (!shouldUseThousandsFormatting) {
269
- setInternalValue(stringValue);
270
- setDisplayValue(stringValue);
282
+ setInputValues(stringValue, stringValue);
283
+ return;
284
+ }
285
+ if (isFocused && hasEquivalentNumericValue(internalValueRef.current, stringValue)) {
271
286
  return;
272
287
  }
273
- const formatted = formatDecimalValue(stringValue, decimals != null ? decimals : 2);
274
288
  if (formatOnBlur && isFocused) {
275
- setInternalValue(stringValue);
276
- setDisplayValue(stringValue);
289
+ setInputValues(stringValue, stringValue);
277
290
  return;
278
291
  }
279
- setInternalValue(formatted);
280
- setDisplayValue(formatCurrencyDisplay(formatted));
292
+ const formatted = formatDecimalValue(stringValue, decimals != null ? decimals : 2);
293
+ setInputValues(formatted, formatCurrencyDisplay(formatted));
281
294
  }, [propValue, variant, currencyFormat, decimals, formatOnBlur, isFocused]);
282
295
  const getInputProps = () => {
283
296
  var _a2;
@@ -299,6 +312,7 @@ var Input = (_a) => {
299
312
  return __spreadProps(__spreadValues({}, baseProps), {
300
313
  align: "right",
301
314
  type: "text",
315
+ inputMode: "decimal",
302
316
  value: displayValue
303
317
  });
304
318
  case "percentage":
@@ -306,6 +320,7 @@ var Input = (_a) => {
306
320
  return __spreadProps(__spreadValues({}, baseProps), {
307
321
  type: currencyFormat ? "text" : "number",
308
322
  align: "right",
323
+ inputMode: currencyFormat ? "decimal" : void 0,
309
324
  value: currencyFormat ? displayValue : propValue
310
325
  });
311
326
  default:
@@ -352,8 +367,7 @@ var Input = (_a) => {
352
367
  }
353
368
  };
354
369
  const handleSearchReset = () => {
355
- setInternalValue("");
356
- setDisplayValue("");
370
+ setInputValues("", "");
357
371
  if (onChange) {
358
372
  const syntheticEvent = {
359
373
  target: { value: "" }
@@ -370,8 +384,7 @@ var Input = (_a) => {
370
384
  if (variant === "currency") {
371
385
  const raw = rawValue.replace(/,/g, "");
372
386
  if (raw === "") {
373
- setInternalValue("");
374
- setDisplayValue("");
387
+ setInputValues("", "");
375
388
  if (onChange) {
376
389
  const syntheticEvent = __spreadProps(__spreadValues({}, e), {
377
390
  target: __spreadProps(__spreadValues({}, e.target), { value: "" })
@@ -392,8 +405,8 @@ var Input = (_a) => {
392
405
  clamped.toString(),
393
406
  currentDecimals
394
407
  );
395
- setInternalValue(formattedClamped);
396
- setDisplayValue(
408
+ setInputValues(
409
+ formattedClamped,
397
410
  formatOnBlur ? formattedClamped : formatCurrencyDisplay(formattedClamped)
398
411
  );
399
412
  if (onChange) {
@@ -404,8 +417,7 @@ var Input = (_a) => {
404
417
  }
405
418
  return;
406
419
  }
407
- setInternalValue(raw);
408
- setDisplayValue(formatOnBlur ? raw : formatCurrencyDisplay(raw));
420
+ setInputValues(raw, formatOnBlur ? raw : formatCurrencyDisplay(raw));
409
421
  if (!isNaN(asNumber) && onChange) {
410
422
  const syntheticEvent = __spreadProps(__spreadValues({}, e), {
411
423
  target: __spreadProps(__spreadValues({}, e.target), { value: asNumber.toString() })
@@ -417,8 +429,7 @@ var Input = (_a) => {
417
429
  if (variant === "uom" && currencyFormat) {
418
430
  const raw = rawValue.replace(/,/g, "");
419
431
  if (raw === "") {
420
- setInternalValue("");
421
- setDisplayValue("");
432
+ setInputValues("", "");
422
433
  if (onChange) {
423
434
  const syntheticEvent = __spreadProps(__spreadValues({}, e), {
424
435
  target: __spreadProps(__spreadValues({}, e.target), { value: "" })
@@ -439,8 +450,10 @@ var Input = (_a) => {
439
450
  clamped.toString(),
440
451
  currentDecimals
441
452
  );
442
- setInternalValue(formattedClamped);
443
- setDisplayValue(formatCurrencyDisplay(formattedClamped));
453
+ setInputValues(
454
+ formattedClamped,
455
+ formatCurrencyDisplay(formattedClamped)
456
+ );
444
457
  if (onChange) {
445
458
  const syntheticEvent = __spreadProps(__spreadValues({}, e), {
446
459
  target: __spreadProps(__spreadValues({}, e.target), { value: clamped.toString() })
@@ -449,8 +462,7 @@ var Input = (_a) => {
449
462
  }
450
463
  return;
451
464
  }
452
- setInternalValue(raw);
453
- setDisplayValue(formatCurrencyDisplay(raw));
465
+ setInputValues(raw, formatCurrencyDisplay(raw));
454
466
  if (!isNaN(asNumber) && onChange) {
455
467
  const syntheticEvent = __spreadProps(__spreadValues({}, e), {
456
468
  target: __spreadProps(__spreadValues({}, e.target), { value: asNumber.toString() })
@@ -467,8 +479,7 @@ var Input = (_a) => {
467
479
  clamped.toString(),
468
480
  decimals != null ? decimals : 0
469
481
  );
470
- setInternalValue(formattedClamped);
471
- setDisplayValue(formattedClamped);
482
+ setInputValues(formattedClamped, formattedClamped);
472
483
  if (typeof onChange === "function") {
473
484
  const syntheticEvent = __spreadProps(__spreadValues({}, e), {
474
485
  target: __spreadProps(__spreadValues({}, e.target), { value: clamped.toString() })
@@ -477,15 +488,13 @@ var Input = (_a) => {
477
488
  }
478
489
  return;
479
490
  }
480
- setInternalValue(rawValue);
481
- setDisplayValue(rawValue);
491
+ setInputValues(rawValue, rawValue);
482
492
  if (typeof onChange === "function") {
483
493
  onChange(e);
484
494
  }
485
495
  return;
486
496
  }
487
- setInternalValue(rawValue);
488
- setDisplayValue(rawValue);
497
+ setInputValues(rawValue, rawValue);
489
498
  if (typeof onChange === "function") {
490
499
  onChange(e);
491
500
  }
@@ -498,8 +507,7 @@ var Input = (_a) => {
498
507
  }
499
508
  if (variant === "currency") {
500
509
  const formatted = formatDecimalValue(internalValue, decimals != null ? decimals : 2);
501
- setInternalValue(formatted);
502
- setDisplayValue(formatCurrencyDisplay(formatted));
510
+ setInputValues(formatted, formatCurrencyDisplay(formatted));
503
511
  const asNumber = Number(formatted);
504
512
  if (!isNaN(asNumber) && onChange) {
505
513
  const syntheticEvent = __spreadProps(__spreadValues({}, e), {
@@ -510,8 +518,7 @@ var Input = (_a) => {
510
518
  } else if (variant === "uom") {
511
519
  if (currencyFormat) {
512
520
  const formatted = formatDecimalValue(internalValue, decimals != null ? decimals : 2);
513
- setInternalValue(formatted);
514
- setDisplayValue(formatCurrencyDisplay(formatted));
521
+ setInputValues(formatted, formatCurrencyDisplay(formatted));
515
522
  const asNumber = Number(formatted);
516
523
  if (!isNaN(asNumber) && onChange) {
517
524
  const syntheticEvent = __spreadProps(__spreadValues({}, e), {
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-PE3EZP56.js";
10
10
  import {
11
11
  Search
12
- } from "./chunk-MOBFZ672.js";
12
+ } from "./chunk-3DJWSTPS.js";
13
13
  import {
14
14
  CSS
15
15
  } from "./chunk-WVUIIBRR.js";
@@ -16,7 +16,7 @@ import {
16
16
  } from "./chunk-EWGHVZL5.js";
17
17
  import {
18
18
  Select
19
- } from "./chunk-EA6Y4HXQ.js";
19
+ } from "./chunk-4FUZDLWX.js";
20
20
  import {
21
21
  Tooltip
22
22
  } from "./chunk-QG6NWMGA.js";
@@ -25,7 +25,7 @@ import {
25
25
  DataGridCell,
26
26
  DragAlongCell,
27
27
  DraggableCellHeader
28
- } from "./chunk-PBJ2MEHM.js";
28
+ } from "./chunk-QW4AJ5FK.js";
29
29
  import {
30
30
  MenuOption
31
31
  } from "./chunk-3JUIYULW.js";
@@ -34,11 +34,11 @@ import {
34
34
  } from "./chunk-OM7QLLI2.js";
35
35
  import {
36
36
  Search
37
- } from "./chunk-MOBFZ672.js";
37
+ } from "./chunk-3DJWSTPS.js";
38
38
  import {
39
39
  Input,
40
40
  InputBase
41
- } from "./chunk-PABII472.js";
41
+ } from "./chunk-H5SHC4XZ.js";
42
42
  import {
43
43
  Label
44
44
  } from "./chunk-4UGMSWWA.js";
@@ -1917,6 +1917,14 @@ var import_react11 = require("react");
1917
1917
  var import_react10 = require("react");
1918
1918
  var import_clsx8 = __toESM(require("clsx"), 1);
1919
1919
  var import_jsx_runtime7 = require("react/jsx-runtime");
1920
+ function hasEquivalentNumericValue(currentValue, nextValue) {
1921
+ if (!currentValue || !nextValue) {
1922
+ return false;
1923
+ }
1924
+ const currentNumericValue = Number(currentValue.replace(/,/g, ""));
1925
+ const nextNumericValue = Number(nextValue.replace(/,/g, ""));
1926
+ return !Number.isNaN(currentNumericValue) && !Number.isNaN(nextNumericValue) && currentNumericValue === nextNumericValue;
1927
+ }
1920
1928
  var InputBase = (_a) => {
1921
1929
  var _b = _a, {
1922
1930
  id,
@@ -2139,28 +2147,33 @@ var Input = (_a) => {
2139
2147
  const [internalValue, setInternalValue] = (0, import_react10.useState)("");
2140
2148
  const [displayValue, setDisplayValue] = (0, import_react10.useState)("");
2141
2149
  const [isFocused, setIsFocused] = (0, import_react10.useState)(false);
2150
+ const internalValueRef = (0, import_react10.useRef)("");
2151
+ const setInputValues = (nextInternalValue, nextDisplayValue) => {
2152
+ internalValueRef.current = nextInternalValue;
2153
+ setInternalValue(nextInternalValue);
2154
+ setDisplayValue(nextDisplayValue);
2155
+ };
2142
2156
  (0, import_react10.useEffect)(() => {
2143
2157
  var _a2;
2144
2158
  const stringValue = (_a2 = propValue == null ? void 0 : propValue.toString()) != null ? _a2 : "";
2145
2159
  const shouldUseThousandsFormatting = variant === "currency" || variant === "uom" && currencyFormat;
2146
2160
  if (!stringValue) {
2147
- setInternalValue("");
2148
- setDisplayValue("");
2161
+ setInputValues("", "");
2149
2162
  return;
2150
2163
  }
2151
2164
  if (!shouldUseThousandsFormatting) {
2152
- setInternalValue(stringValue);
2153
- setDisplayValue(stringValue);
2165
+ setInputValues(stringValue, stringValue);
2166
+ return;
2167
+ }
2168
+ if (isFocused && hasEquivalentNumericValue(internalValueRef.current, stringValue)) {
2154
2169
  return;
2155
2170
  }
2156
- const formatted = formatDecimalValue(stringValue, decimals != null ? decimals : 2);
2157
2171
  if (formatOnBlur && isFocused) {
2158
- setInternalValue(stringValue);
2159
- setDisplayValue(stringValue);
2172
+ setInputValues(stringValue, stringValue);
2160
2173
  return;
2161
2174
  }
2162
- setInternalValue(formatted);
2163
- setDisplayValue(formatCurrencyDisplay(formatted));
2175
+ const formatted = formatDecimalValue(stringValue, decimals != null ? decimals : 2);
2176
+ setInputValues(formatted, formatCurrencyDisplay(formatted));
2164
2177
  }, [propValue, variant, currencyFormat, decimals, formatOnBlur, isFocused]);
2165
2178
  const getInputProps = () => {
2166
2179
  var _a2;
@@ -2182,6 +2195,7 @@ var Input = (_a) => {
2182
2195
  return __spreadProps(__spreadValues({}, baseProps), {
2183
2196
  align: "right",
2184
2197
  type: "text",
2198
+ inputMode: "decimal",
2185
2199
  value: displayValue
2186
2200
  });
2187
2201
  case "percentage":
@@ -2189,6 +2203,7 @@ var Input = (_a) => {
2189
2203
  return __spreadProps(__spreadValues({}, baseProps), {
2190
2204
  type: currencyFormat ? "text" : "number",
2191
2205
  align: "right",
2206
+ inputMode: currencyFormat ? "decimal" : void 0,
2192
2207
  value: currencyFormat ? displayValue : propValue
2193
2208
  });
2194
2209
  default:
@@ -2235,8 +2250,7 @@ var Input = (_a) => {
2235
2250
  }
2236
2251
  };
2237
2252
  const handleSearchReset = () => {
2238
- setInternalValue("");
2239
- setDisplayValue("");
2253
+ setInputValues("", "");
2240
2254
  if (onChange) {
2241
2255
  const syntheticEvent = {
2242
2256
  target: { value: "" }
@@ -2253,8 +2267,7 @@ var Input = (_a) => {
2253
2267
  if (variant === "currency") {
2254
2268
  const raw = rawValue.replace(/,/g, "");
2255
2269
  if (raw === "") {
2256
- setInternalValue("");
2257
- setDisplayValue("");
2270
+ setInputValues("", "");
2258
2271
  if (onChange) {
2259
2272
  const syntheticEvent = __spreadProps(__spreadValues({}, e), {
2260
2273
  target: __spreadProps(__spreadValues({}, e.target), { value: "" })
@@ -2275,8 +2288,8 @@ var Input = (_a) => {
2275
2288
  clamped.toString(),
2276
2289
  currentDecimals
2277
2290
  );
2278
- setInternalValue(formattedClamped);
2279
- setDisplayValue(
2291
+ setInputValues(
2292
+ formattedClamped,
2280
2293
  formatOnBlur ? formattedClamped : formatCurrencyDisplay(formattedClamped)
2281
2294
  );
2282
2295
  if (onChange) {
@@ -2287,8 +2300,7 @@ var Input = (_a) => {
2287
2300
  }
2288
2301
  return;
2289
2302
  }
2290
- setInternalValue(raw);
2291
- setDisplayValue(formatOnBlur ? raw : formatCurrencyDisplay(raw));
2303
+ setInputValues(raw, formatOnBlur ? raw : formatCurrencyDisplay(raw));
2292
2304
  if (!isNaN(asNumber) && onChange) {
2293
2305
  const syntheticEvent = __spreadProps(__spreadValues({}, e), {
2294
2306
  target: __spreadProps(__spreadValues({}, e.target), { value: asNumber.toString() })
@@ -2300,8 +2312,7 @@ var Input = (_a) => {
2300
2312
  if (variant === "uom" && currencyFormat) {
2301
2313
  const raw = rawValue.replace(/,/g, "");
2302
2314
  if (raw === "") {
2303
- setInternalValue("");
2304
- setDisplayValue("");
2315
+ setInputValues("", "");
2305
2316
  if (onChange) {
2306
2317
  const syntheticEvent = __spreadProps(__spreadValues({}, e), {
2307
2318
  target: __spreadProps(__spreadValues({}, e.target), { value: "" })
@@ -2322,8 +2333,10 @@ var Input = (_a) => {
2322
2333
  clamped.toString(),
2323
2334
  currentDecimals
2324
2335
  );
2325
- setInternalValue(formattedClamped);
2326
- setDisplayValue(formatCurrencyDisplay(formattedClamped));
2336
+ setInputValues(
2337
+ formattedClamped,
2338
+ formatCurrencyDisplay(formattedClamped)
2339
+ );
2327
2340
  if (onChange) {
2328
2341
  const syntheticEvent = __spreadProps(__spreadValues({}, e), {
2329
2342
  target: __spreadProps(__spreadValues({}, e.target), { value: clamped.toString() })
@@ -2332,8 +2345,7 @@ var Input = (_a) => {
2332
2345
  }
2333
2346
  return;
2334
2347
  }
2335
- setInternalValue(raw);
2336
- setDisplayValue(formatCurrencyDisplay(raw));
2348
+ setInputValues(raw, formatCurrencyDisplay(raw));
2337
2349
  if (!isNaN(asNumber) && onChange) {
2338
2350
  const syntheticEvent = __spreadProps(__spreadValues({}, e), {
2339
2351
  target: __spreadProps(__spreadValues({}, e.target), { value: asNumber.toString() })
@@ -2350,8 +2362,7 @@ var Input = (_a) => {
2350
2362
  clamped.toString(),
2351
2363
  decimals != null ? decimals : 0
2352
2364
  );
2353
- setInternalValue(formattedClamped);
2354
- setDisplayValue(formattedClamped);
2365
+ setInputValues(formattedClamped, formattedClamped);
2355
2366
  if (typeof onChange === "function") {
2356
2367
  const syntheticEvent = __spreadProps(__spreadValues({}, e), {
2357
2368
  target: __spreadProps(__spreadValues({}, e.target), { value: clamped.toString() })
@@ -2360,15 +2371,13 @@ var Input = (_a) => {
2360
2371
  }
2361
2372
  return;
2362
2373
  }
2363
- setInternalValue(rawValue);
2364
- setDisplayValue(rawValue);
2374
+ setInputValues(rawValue, rawValue);
2365
2375
  if (typeof onChange === "function") {
2366
2376
  onChange(e);
2367
2377
  }
2368
2378
  return;
2369
2379
  }
2370
- setInternalValue(rawValue);
2371
- setDisplayValue(rawValue);
2380
+ setInputValues(rawValue, rawValue);
2372
2381
  if (typeof onChange === "function") {
2373
2382
  onChange(e);
2374
2383
  }
@@ -2381,8 +2390,7 @@ var Input = (_a) => {
2381
2390
  }
2382
2391
  if (variant === "currency") {
2383
2392
  const formatted = formatDecimalValue(internalValue, decimals != null ? decimals : 2);
2384
- setInternalValue(formatted);
2385
- setDisplayValue(formatCurrencyDisplay(formatted));
2393
+ setInputValues(formatted, formatCurrencyDisplay(formatted));
2386
2394
  const asNumber = Number(formatted);
2387
2395
  if (!isNaN(asNumber) && onChange) {
2388
2396
  const syntheticEvent = __spreadProps(__spreadValues({}, e), {
@@ -2393,8 +2401,7 @@ var Input = (_a) => {
2393
2401
  } else if (variant === "uom") {
2394
2402
  if (currencyFormat) {
2395
2403
  const formatted = formatDecimalValue(internalValue, decimals != null ? decimals : 2);
2396
- setInternalValue(formatted);
2397
- setDisplayValue(formatCurrencyDisplay(formatted));
2404
+ setInputValues(formatted, formatCurrencyDisplay(formatted));
2398
2405
  const asNumber = Number(formatted);
2399
2406
  if (!isNaN(asNumber) && onChange) {
2400
2407
  const syntheticEvent = __spreadProps(__spreadValues({}, e), {
@@ -2,7 +2,7 @@ import {
2
2
  CalendarRange,
3
3
  CalendarRange_default,
4
4
  isWeekend
5
- } from "../chunk-5UPADXVU.js";
5
+ } from "../chunk-WSZ3ET5G.js";
6
6
  import "../chunk-3UPUZBP5.js";
7
7
  import "../chunk-7ZJIGTFN.js";
8
8
  import "../chunk-E3FOCECQ.js";
@@ -23,7 +23,7 @@ import "../chunk-AJ5M6MVX.js";
23
23
  import "../chunk-7IPESTQS.js";
24
24
  import "../chunk-EWGHVZL5.js";
25
25
  import "../chunk-AT4AWD6B.js";
26
- import "../chunk-EA6Y4HXQ.js";
26
+ import "../chunk-4FUZDLWX.js";
27
27
  import "../chunk-CIYLALYO.js";
28
28
  import "../chunk-KBIEWFQS.js";
29
29
  import "../chunk-NSZTJ5R4.js";
@@ -40,12 +40,12 @@ import "../chunk-UARCWLMD.js";
40
40
  import "../chunk-SJZNVG4N.js";
41
41
  import "../chunk-75USUR3I.js";
42
42
  import "../chunk-BWPNXY7T.js";
43
- import "../chunk-PBJ2MEHM.js";
43
+ import "../chunk-QW4AJ5FK.js";
44
44
  import "../chunk-3JUIYULW.js";
45
45
  import "../chunk-OM7QLLI2.js";
46
46
  import "../chunk-PE3EZP56.js";
47
- import "../chunk-MOBFZ672.js";
48
- import "../chunk-PABII472.js";
47
+ import "../chunk-3DJWSTPS.js";
48
+ import "../chunk-H5SHC4XZ.js";
49
49
  import "../chunk-4UGMSWWA.js";
50
50
  import "../chunk-WVUIIBRR.js";
51
51
  import "../chunk-I3W5K76C.js";
@@ -1911,6 +1911,14 @@ var import_react11 = require("react");
1911
1911
  var import_react10 = require("react");
1912
1912
  var import_clsx8 = __toESM(require("clsx"), 1);
1913
1913
  var import_jsx_runtime7 = require("react/jsx-runtime");
1914
+ function hasEquivalentNumericValue(currentValue, nextValue) {
1915
+ if (!currentValue || !nextValue) {
1916
+ return false;
1917
+ }
1918
+ const currentNumericValue = Number(currentValue.replace(/,/g, ""));
1919
+ const nextNumericValue = Number(nextValue.replace(/,/g, ""));
1920
+ return !Number.isNaN(currentNumericValue) && !Number.isNaN(nextNumericValue) && currentNumericValue === nextNumericValue;
1921
+ }
1914
1922
  var InputBase = (_a) => {
1915
1923
  var _b = _a, {
1916
1924
  id,
@@ -2133,28 +2141,33 @@ var Input = (_a) => {
2133
2141
  const [internalValue, setInternalValue] = (0, import_react10.useState)("");
2134
2142
  const [displayValue, setDisplayValue] = (0, import_react10.useState)("");
2135
2143
  const [isFocused, setIsFocused] = (0, import_react10.useState)(false);
2144
+ const internalValueRef = (0, import_react10.useRef)("");
2145
+ const setInputValues = (nextInternalValue, nextDisplayValue) => {
2146
+ internalValueRef.current = nextInternalValue;
2147
+ setInternalValue(nextInternalValue);
2148
+ setDisplayValue(nextDisplayValue);
2149
+ };
2136
2150
  (0, import_react10.useEffect)(() => {
2137
2151
  var _a2;
2138
2152
  const stringValue = (_a2 = propValue == null ? void 0 : propValue.toString()) != null ? _a2 : "";
2139
2153
  const shouldUseThousandsFormatting = variant === "currency" || variant === "uom" && currencyFormat;
2140
2154
  if (!stringValue) {
2141
- setInternalValue("");
2142
- setDisplayValue("");
2155
+ setInputValues("", "");
2143
2156
  return;
2144
2157
  }
2145
2158
  if (!shouldUseThousandsFormatting) {
2146
- setInternalValue(stringValue);
2147
- setDisplayValue(stringValue);
2159
+ setInputValues(stringValue, stringValue);
2160
+ return;
2161
+ }
2162
+ if (isFocused && hasEquivalentNumericValue(internalValueRef.current, stringValue)) {
2148
2163
  return;
2149
2164
  }
2150
- const formatted = formatDecimalValue(stringValue, decimals != null ? decimals : 2);
2151
2165
  if (formatOnBlur && isFocused) {
2152
- setInternalValue(stringValue);
2153
- setDisplayValue(stringValue);
2166
+ setInputValues(stringValue, stringValue);
2154
2167
  return;
2155
2168
  }
2156
- setInternalValue(formatted);
2157
- setDisplayValue(formatCurrencyDisplay(formatted));
2169
+ const formatted = formatDecimalValue(stringValue, decimals != null ? decimals : 2);
2170
+ setInputValues(formatted, formatCurrencyDisplay(formatted));
2158
2171
  }, [propValue, variant, currencyFormat, decimals, formatOnBlur, isFocused]);
2159
2172
  const getInputProps = () => {
2160
2173
  var _a2;
@@ -2176,6 +2189,7 @@ var Input = (_a) => {
2176
2189
  return __spreadProps(__spreadValues({}, baseProps), {
2177
2190
  align: "right",
2178
2191
  type: "text",
2192
+ inputMode: "decimal",
2179
2193
  value: displayValue
2180
2194
  });
2181
2195
  case "percentage":
@@ -2183,6 +2197,7 @@ var Input = (_a) => {
2183
2197
  return __spreadProps(__spreadValues({}, baseProps), {
2184
2198
  type: currencyFormat ? "text" : "number",
2185
2199
  align: "right",
2200
+ inputMode: currencyFormat ? "decimal" : void 0,
2186
2201
  value: currencyFormat ? displayValue : propValue
2187
2202
  });
2188
2203
  default:
@@ -2229,8 +2244,7 @@ var Input = (_a) => {
2229
2244
  }
2230
2245
  };
2231
2246
  const handleSearchReset = () => {
2232
- setInternalValue("");
2233
- setDisplayValue("");
2247
+ setInputValues("", "");
2234
2248
  if (onChange) {
2235
2249
  const syntheticEvent = {
2236
2250
  target: { value: "" }
@@ -2247,8 +2261,7 @@ var Input = (_a) => {
2247
2261
  if (variant === "currency") {
2248
2262
  const raw = rawValue.replace(/,/g, "");
2249
2263
  if (raw === "") {
2250
- setInternalValue("");
2251
- setDisplayValue("");
2264
+ setInputValues("", "");
2252
2265
  if (onChange) {
2253
2266
  const syntheticEvent = __spreadProps(__spreadValues({}, e), {
2254
2267
  target: __spreadProps(__spreadValues({}, e.target), { value: "" })
@@ -2269,8 +2282,8 @@ var Input = (_a) => {
2269
2282
  clamped.toString(),
2270
2283
  currentDecimals
2271
2284
  );
2272
- setInternalValue(formattedClamped);
2273
- setDisplayValue(
2285
+ setInputValues(
2286
+ formattedClamped,
2274
2287
  formatOnBlur ? formattedClamped : formatCurrencyDisplay(formattedClamped)
2275
2288
  );
2276
2289
  if (onChange) {
@@ -2281,8 +2294,7 @@ var Input = (_a) => {
2281
2294
  }
2282
2295
  return;
2283
2296
  }
2284
- setInternalValue(raw);
2285
- setDisplayValue(formatOnBlur ? raw : formatCurrencyDisplay(raw));
2297
+ setInputValues(raw, formatOnBlur ? raw : formatCurrencyDisplay(raw));
2286
2298
  if (!isNaN(asNumber) && onChange) {
2287
2299
  const syntheticEvent = __spreadProps(__spreadValues({}, e), {
2288
2300
  target: __spreadProps(__spreadValues({}, e.target), { value: asNumber.toString() })
@@ -2294,8 +2306,7 @@ var Input = (_a) => {
2294
2306
  if (variant === "uom" && currencyFormat) {
2295
2307
  const raw = rawValue.replace(/,/g, "");
2296
2308
  if (raw === "") {
2297
- setInternalValue("");
2298
- setDisplayValue("");
2309
+ setInputValues("", "");
2299
2310
  if (onChange) {
2300
2311
  const syntheticEvent = __spreadProps(__spreadValues({}, e), {
2301
2312
  target: __spreadProps(__spreadValues({}, e.target), { value: "" })
@@ -2316,8 +2327,10 @@ var Input = (_a) => {
2316
2327
  clamped.toString(),
2317
2328
  currentDecimals
2318
2329
  );
2319
- setInternalValue(formattedClamped);
2320
- setDisplayValue(formatCurrencyDisplay(formattedClamped));
2330
+ setInputValues(
2331
+ formattedClamped,
2332
+ formatCurrencyDisplay(formattedClamped)
2333
+ );
2321
2334
  if (onChange) {
2322
2335
  const syntheticEvent = __spreadProps(__spreadValues({}, e), {
2323
2336
  target: __spreadProps(__spreadValues({}, e.target), { value: clamped.toString() })
@@ -2326,8 +2339,7 @@ var Input = (_a) => {
2326
2339
  }
2327
2340
  return;
2328
2341
  }
2329
- setInternalValue(raw);
2330
- setDisplayValue(formatCurrencyDisplay(raw));
2342
+ setInputValues(raw, formatCurrencyDisplay(raw));
2331
2343
  if (!isNaN(asNumber) && onChange) {
2332
2344
  const syntheticEvent = __spreadProps(__spreadValues({}, e), {
2333
2345
  target: __spreadProps(__spreadValues({}, e.target), { value: asNumber.toString() })
@@ -2344,8 +2356,7 @@ var Input = (_a) => {
2344
2356
  clamped.toString(),
2345
2357
  decimals != null ? decimals : 0
2346
2358
  );
2347
- setInternalValue(formattedClamped);
2348
- setDisplayValue(formattedClamped);
2359
+ setInputValues(formattedClamped, formattedClamped);
2349
2360
  if (typeof onChange === "function") {
2350
2361
  const syntheticEvent = __spreadProps(__spreadValues({}, e), {
2351
2362
  target: __spreadProps(__spreadValues({}, e.target), { value: clamped.toString() })
@@ -2354,15 +2365,13 @@ var Input = (_a) => {
2354
2365
  }
2355
2366
  return;
2356
2367
  }
2357
- setInternalValue(rawValue);
2358
- setDisplayValue(rawValue);
2368
+ setInputValues(rawValue, rawValue);
2359
2369
  if (typeof onChange === "function") {
2360
2370
  onChange(e);
2361
2371
  }
2362
2372
  return;
2363
2373
  }
2364
- setInternalValue(rawValue);
2365
- setDisplayValue(rawValue);
2374
+ setInputValues(rawValue, rawValue);
2366
2375
  if (typeof onChange === "function") {
2367
2376
  onChange(e);
2368
2377
  }
@@ -2375,8 +2384,7 @@ var Input = (_a) => {
2375
2384
  }
2376
2385
  if (variant === "currency") {
2377
2386
  const formatted = formatDecimalValue(internalValue, decimals != null ? decimals : 2);
2378
- setInternalValue(formatted);
2379
- setDisplayValue(formatCurrencyDisplay(formatted));
2387
+ setInputValues(formatted, formatCurrencyDisplay(formatted));
2380
2388
  const asNumber = Number(formatted);
2381
2389
  if (!isNaN(asNumber) && onChange) {
2382
2390
  const syntheticEvent = __spreadProps(__spreadValues({}, e), {
@@ -2387,8 +2395,7 @@ var Input = (_a) => {
2387
2395
  } else if (variant === "uom") {
2388
2396
  if (currencyFormat) {
2389
2397
  const formatted = formatDecimalValue(internalValue, decimals != null ? decimals : 2);
2390
- setInternalValue(formatted);
2391
- setDisplayValue(formatCurrencyDisplay(formatted));
2398
+ setInputValues(formatted, formatCurrencyDisplay(formatted));
2392
2399
  const asNumber = Number(formatted);
2393
2400
  if (!isNaN(asNumber) && onChange) {
2394
2401
  const syntheticEvent = __spreadProps(__spreadValues({}, e), {