@activecollab/components 1.0.403 → 1.0.405

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 (58) hide show
  1. package/dist/cjs/components/EditableCurrency/EditableCurrency.js +76 -0
  2. package/dist/cjs/components/EditableCurrency/EditableCurrency.js.map +1 -0
  3. package/dist/cjs/components/EditableCurrency/index.js +17 -0
  4. package/dist/cjs/components/EditableCurrency/index.js.map +1 -0
  5. package/dist/cjs/components/Input/InputCurrency.js.map +1 -1
  6. package/dist/cjs/components/Input/InputHours.js +2 -1
  7. package/dist/cjs/components/Input/InputHours.js.map +1 -1
  8. package/dist/cjs/components/Input/InputNumber.js +27 -131
  9. package/dist/cjs/components/Input/InputNumber.js.map +1 -1
  10. package/dist/cjs/hooks/index.js +11 -0
  11. package/dist/cjs/hooks/index.js.map +1 -1
  12. package/dist/cjs/hooks/useInputNumber.js +147 -0
  13. package/dist/cjs/hooks/useInputNumber.js.map +1 -0
  14. package/dist/cjs/utils/currencyUtils.js +18 -15
  15. package/dist/cjs/utils/currencyUtils.js.map +1 -1
  16. package/dist/cjs/utils/currencyUtils.test.js +2 -2
  17. package/dist/cjs/utils/currencyUtils.test.js.map +1 -1
  18. package/dist/cjs/utils/validation.js +2 -2
  19. package/dist/cjs/utils/validation.js.map +1 -1
  20. package/dist/esm/components/EditableCurrency/EditableCurrency.d.ts +4 -0
  21. package/dist/esm/components/EditableCurrency/EditableCurrency.d.ts.map +1 -0
  22. package/dist/esm/components/EditableCurrency/EditableCurrency.js +63 -0
  23. package/dist/esm/components/EditableCurrency/EditableCurrency.js.map +1 -0
  24. package/dist/esm/components/EditableCurrency/index.d.ts +2 -0
  25. package/dist/esm/components/EditableCurrency/index.d.ts.map +1 -0
  26. package/dist/esm/components/EditableCurrency/index.js +2 -0
  27. package/dist/esm/components/EditableCurrency/index.js.map +1 -0
  28. package/dist/esm/components/Input/InputCurrency.d.ts +1 -1
  29. package/dist/esm/components/Input/InputCurrency.d.ts.map +1 -1
  30. package/dist/esm/components/Input/InputCurrency.js.map +1 -1
  31. package/dist/esm/components/Input/InputHours.d.ts.map +1 -1
  32. package/dist/esm/components/Input/InputHours.js +2 -1
  33. package/dist/esm/components/Input/InputHours.js.map +1 -1
  34. package/dist/esm/components/Input/InputNumber.d.ts +1 -10
  35. package/dist/esm/components/Input/InputNumber.d.ts.map +1 -1
  36. package/dist/esm/components/Input/InputNumber.js +28 -124
  37. package/dist/esm/components/Input/InputNumber.js.map +1 -1
  38. package/dist/esm/hooks/index.d.ts +1 -0
  39. package/dist/esm/hooks/index.d.ts.map +1 -1
  40. package/dist/esm/hooks/index.js +1 -0
  41. package/dist/esm/hooks/index.js.map +1 -1
  42. package/dist/esm/hooks/useInputNumber.d.ts +22 -0
  43. package/dist/esm/hooks/useInputNumber.d.ts.map +1 -0
  44. package/dist/esm/hooks/useInputNumber.js +131 -0
  45. package/dist/esm/hooks/useInputNumber.js.map +1 -0
  46. package/dist/esm/utils/currencyUtils.d.ts +8 -2
  47. package/dist/esm/utils/currencyUtils.d.ts.map +1 -1
  48. package/dist/esm/utils/currencyUtils.js +16 -14
  49. package/dist/esm/utils/currencyUtils.js.map +1 -1
  50. package/dist/esm/utils/currencyUtils.test.js +2 -2
  51. package/dist/esm/utils/currencyUtils.test.js.map +1 -1
  52. package/dist/esm/utils/validation.js +2 -2
  53. package/dist/esm/utils/validation.js.map +1 -1
  54. package/dist/index.js +171 -3
  55. package/dist/index.js.map +1 -1
  56. package/dist/index.min.js +1 -1
  57. package/dist/index.min.js.map +1 -1
  58. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"currencyUtils.js","names":["formatCurrency","n","thousandSeparator","number","parseFloat","String","replaceAll","isNaN","formattedNum","toFixed","endsWith","numberWithSeparator","x","format","parts","toString","split","replace","join"],"sources":["../../../src/utils/currencyUtils.ts"],"sourcesContent":["import { Separators } from \"../components/Input/InputNumber\";\n\nexport const formatCurrency = (n: string, thousandSeparator = \",\") => {\n const number = parseFloat(String(n).replaceAll(thousandSeparator, \"\"));\n\n if (isNaN(number)) {\n return \"\";\n }\n\n if (number < 1000) {\n return n;\n } else if (number >= 1000 && number < 1_000_000) {\n const formattedNum = (number / 1000).toFixed(1);\n return formattedNum.endsWith(\".0\")\n ? (number / 1000).toFixed(0) + \"K\"\n : formattedNum + \"K\";\n } else if (number >= 1_000_000 && number < 1_000_000_000) {\n const formattedNum = (number / 1_000_000).toFixed(1);\n return formattedNum.endsWith(\".0\")\n ? (number / 1_000_000).toFixed(0) + \"M\"\n : formattedNum + \"M\";\n } else if (number >= 1_000_000_000 && number < 1_000_000_000_000) {\n const formattedNum = (number / 1_000_000_000).toFixed(1);\n return formattedNum.endsWith(\".0\")\n ? (number / 1_000_000_000).toFixed(0) + \"B\"\n : formattedNum + \"B\";\n } else if (number >= 1_000_000_000_000 && number < 1_000_000_000_000_000) {\n const formattedNum = (number / 1_000_000_000_000).toFixed(1);\n return formattedNum.endsWith(\".0\")\n ? (number / 1_000_000_000_000).toFixed(0) + \"T\"\n : formattedNum + \"T\";\n }\n};\n\nexport const numberWithSeparator = (\n x: number | string,\n thousandSeparator: Separators,\n format = true\n) => {\n if (!format) {\n return x;\n }\n\n const parts = x.toString().split(\".\");\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandSeparator);\n\n return parts.join(\".\");\n};\n"],"mappings":";;;;;;AAEO,IAAMA,cAAc,GAAG,SAAjBA,cAAc,CAAIC,CAAS,EAA8B;EAAA,IAA5BC,iBAAiB,uEAAG,GAAG;EAC/D,IAAMC,MAAM,GAAGC,UAAU,CAACC,MAAM,CAACJ,CAAC,CAAC,CAACK,UAAU,CAACJ,iBAAiB,EAAE,EAAE,CAAC,CAAC;EAEtE,IAAIK,KAAK,CAACJ,MAAM,CAAC,EAAE;IACjB,OAAO,EAAE;EACX;EAEA,IAAIA,MAAM,GAAG,IAAI,EAAE;IACjB,OAAOF,CAAC;EACV,CAAC,MAAM,IAAIE,MAAM,IAAI,IAAI,IAAIA,MAAM,GAAG,OAAS,EAAE;IAC/C,IAAMK,YAAY,GAAG,CAACL,MAAM,GAAG,IAAI,EAAEM,OAAO,CAAC,CAAC,CAAC;IAC/C,OAAOD,YAAY,CAACE,QAAQ,CAAC,IAAI,CAAC,GAC9B,CAACP,MAAM,GAAG,IAAI,EAAEM,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,GAChCD,YAAY,GAAG,GAAG;EACxB,CAAC,MAAM,IAAIL,MAAM,IAAI,OAAS,IAAIA,MAAM,GAAG,UAAa,EAAE;IACxD,IAAMK,aAAY,GAAG,CAACL,MAAM,GAAG,OAAS,EAAEM,OAAO,CAAC,CAAC,CAAC;IACpD,OAAOD,aAAY,CAACE,QAAQ,CAAC,IAAI,CAAC,GAC9B,CAACP,MAAM,GAAG,OAAS,EAAEM,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,GACrCD,aAAY,GAAG,GAAG;EACxB,CAAC,MAAM,IAAIL,MAAM,IAAI,UAAa,IAAIA,MAAM,GAAG,aAAiB,EAAE;IAChE,IAAMK,cAAY,GAAG,CAACL,MAAM,GAAG,UAAa,EAAEM,OAAO,CAAC,CAAC,CAAC;IACxD,OAAOD,cAAY,CAACE,QAAQ,CAAC,IAAI,CAAC,GAC9B,CAACP,MAAM,GAAG,UAAa,EAAEM,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,GACzCD,cAAY,GAAG,GAAG;EACxB,CAAC,MAAM,IAAIL,MAAM,IAAI,aAAiB,IAAIA,MAAM,GAAG,gBAAqB,EAAE;IACxE,IAAMK,cAAY,GAAG,CAACL,MAAM,GAAG,aAAiB,EAAEM,OAAO,CAAC,CAAC,CAAC;IAC5D,OAAOD,cAAY,CAACE,QAAQ,CAAC,IAAI,CAAC,GAC9B,CAACP,MAAM,GAAG,aAAiB,EAAEM,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,GAC7CD,cAAY,GAAG,GAAG;EACxB;AACF,CAAC;AAAC;AAEK,IAAMG,mBAAmB,GAAG,SAAtBA,mBAAmB,CAC9BC,CAAkB,EAClBV,iBAA6B,EAE1B;EAAA,IADHW,MAAM,uEAAG,IAAI;EAEb,IAAI,CAACA,MAAM,EAAE;IACX,OAAOD,CAAC;EACV;EAEA,IAAME,KAAK,GAAGF,CAAC,CAACG,QAAQ,EAAE,CAACC,KAAK,CAAC,GAAG,CAAC;EACrCF,KAAK,CAAC,CAAC,CAAC,GAAGA,KAAK,CAAC,CAAC,CAAC,CAACG,OAAO,CAAC,uBAAuB,EAAEf,iBAAiB,CAAC;EAEvE,OAAOY,KAAK,CAACI,IAAI,CAAC,GAAG,CAAC;AACxB,CAAC;AAAC"}
1
+ {"version":3,"file":"currencyUtils.js","names":["currencyMultiplier","k","m","b","t","formatCurrency","n","thousandSeparator","number","parseFloat","String","replaceAll","isNaN","isNegative","absoluteNumber","Math","abs","suffixes","scale","length","formattedNum","toFixed","result","endsWith","slice","numberWithSeparator","x","format","parts","toString","split","replace","join"],"sources":["../../../src/utils/currencyUtils.ts"],"sourcesContent":["import { Separators } from \"../hooks\";\n\nexport const currencyMultiplier = {\n k: 1_000,\n m: 1_000_000,\n b: 1_000_000_000,\n t: 1_000_000_000_000,\n};\n\nexport const formatCurrency = (n: string, thousandSeparator = \",\") => {\n const number = parseFloat(String(n).replaceAll(thousandSeparator, \"\"));\n\n if (isNaN(number)) {\n return \"\";\n }\n\n const isNegative = number < 0;\n let absoluteNumber = Math.abs(number);\n\n const suffixes = [\"\", \"K\", \"M\", \"B\", \"T\"];\n let scale = 0;\n\n while (absoluteNumber >= 1000 && scale < suffixes.length - 1) {\n absoluteNumber /= 1000;\n scale++;\n }\n\n const formattedNum =\n scale === 0 ? absoluteNumber.toFixed(0) : absoluteNumber.toFixed(1);\n const result = formattedNum.endsWith(\".0\")\n ? formattedNum.slice(0, -2)\n : formattedNum;\n\n return isNegative\n ? `-${result}${suffixes[scale]}`\n : `${result}${suffixes[scale]}`;\n};\n\nexport const numberWithSeparator = (\n x: number | string,\n thousandSeparator: Separators,\n format = true\n) => {\n if (!format) {\n return x;\n }\n\n const parts = x.toString().split(\".\");\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, thousandSeparator);\n\n return parts.join(\".\");\n};\n"],"mappings":";;;;;;AAEO,IAAMA,kBAAkB,GAAG;EAChCC,CAAC,EAAE,IAAK;EACRC,CAAC,EAAE,OAAS;EACZC,CAAC,EAAE,UAAa;EAChBC,CAAC,EAAE;AACL,CAAC;AAAC;AAEK,IAAMC,cAAc,GAAG,SAAjBA,cAAc,CAAIC,CAAS,EAA8B;EAAA,IAA5BC,iBAAiB,uEAAG,GAAG;EAC/D,IAAMC,MAAM,GAAGC,UAAU,CAACC,MAAM,CAACJ,CAAC,CAAC,CAACK,UAAU,CAACJ,iBAAiB,EAAE,EAAE,CAAC,CAAC;EAEtE,IAAIK,KAAK,CAACJ,MAAM,CAAC,EAAE;IACjB,OAAO,EAAE;EACX;EAEA,IAAMK,UAAU,GAAGL,MAAM,GAAG,CAAC;EAC7B,IAAIM,cAAc,GAAGC,IAAI,CAACC,GAAG,CAACR,MAAM,CAAC;EAErC,IAAMS,QAAQ,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;EACzC,IAAIC,KAAK,GAAG,CAAC;EAEb,OAAOJ,cAAc,IAAI,IAAI,IAAII,KAAK,GAAGD,QAAQ,CAACE,MAAM,GAAG,CAAC,EAAE;IAC5DL,cAAc,IAAI,IAAI;IACtBI,KAAK,EAAE;EACT;EAEA,IAAME,YAAY,GAChBF,KAAK,KAAK,CAAC,GAAGJ,cAAc,CAACO,OAAO,CAAC,CAAC,CAAC,GAAGP,cAAc,CAACO,OAAO,CAAC,CAAC,CAAC;EACrE,IAAMC,MAAM,GAAGF,YAAY,CAACG,QAAQ,CAAC,IAAI,CAAC,GACtCH,YAAY,CAACI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GACzBJ,YAAY;EAEhB,OAAOP,UAAU,cACTS,MAAM,SAAGL,QAAQ,CAACC,KAAK,CAAC,cACzBI,MAAM,SAAGL,QAAQ,CAACC,KAAK,CAAC,CAAE;AACnC,CAAC;AAAC;AAEK,IAAMO,mBAAmB,GAAG,SAAtBA,mBAAmB,CAC9BC,CAAkB,EAClBnB,iBAA6B,EAE1B;EAAA,IADHoB,MAAM,uEAAG,IAAI;EAEb,IAAI,CAACA,MAAM,EAAE;IACX,OAAOD,CAAC;EACV;EAEA,IAAME,KAAK,GAAGF,CAAC,CAACG,QAAQ,EAAE,CAACC,KAAK,CAAC,GAAG,CAAC;EACrCF,KAAK,CAAC,CAAC,CAAC,GAAGA,KAAK,CAAC,CAAC,CAAC,CAACG,OAAO,CAAC,uBAAuB,EAAExB,iBAAiB,CAAC;EAEvE,OAAOqB,KAAK,CAACI,IAAI,CAAC,GAAG,CAAC;AACxB,CAAC;AAAC"}
@@ -2,12 +2,12 @@
2
2
 
3
3
  var _currencyUtils = require("./currencyUtils");
4
4
  describe("format currency with thousandseparator set to ',' and decimalSeparator to '.'", function () {
5
- it.each([["", ""], ["10", "10"], ["1000", "1K"], ["1000.00", "1K"], ["1200.50", "1.2K"], ["1,200.00", "1.2K"], ["2,240.00", "2.2K"], ["22,240.00", "22.2K"], ["50,000,000.00", "50M"]])("should format currency", function (value, expected) {
5
+ it.each([["", ""], ["10", "10"], ["1000", "1K"], ["1000.00", "1K"], ["1200.50", "1.2K"], ["1,200.00", "1.2K"], ["2,240.00", "2.2K"], ["22,240.00", "22.2K"], ["50,000,000.00", "50M"], ["-50,000.00", "-50K"], ["-1,200", "-1.2K"], ["-90,000,000.00", "-90M"]])("should format currency", function (value, expected) {
6
6
  expect((0, _currencyUtils.formatCurrency)(value, ",")).toEqual(expected);
7
7
  });
8
8
  });
9
9
  describe("format currency with thousandseparator set to '.' and decimalSeparator to ','", function () {
10
- it.each([["", ""], ["10", "10"], ["1000", "1K"], ["1000,00", "1K"], ["1200,50", "1.2K"], ["1.200,00", "1.2K"], ["2.240,00", "2.2K"], ["22.240,00", "22.2K"], ["50.000.000,00", "50M"]])("should format currency", function (value, expected) {
10
+ it.each([["", ""], ["10", "10"], ["1000", "1K"], ["1000,00", "1K"], ["1200,50", "1.2K"], ["1.200,00", "1.2K"], ["2.240,00", "2.2K"], ["22.240,00", "22.2K"], ["50.000.000,00", "50M"], ["-50.000,00", "-50K"], ["-1.200", "-1.2K"], ["-90.000.000,00", "-90M"]])("should format currency", function (value, expected) {
11
11
  expect((0, _currencyUtils.formatCurrency)(value, ".")).toEqual(expected);
12
12
  });
13
13
  });
@@ -1 +1 @@
1
- {"version":3,"file":"currencyUtils.test.js","names":["describe","it","each","value","expected","expect","formatCurrency","toEqual","test","result","numberWithSeparator","toBe"],"sources":["../../../src/utils/currencyUtils.test.ts"],"sourcesContent":["import { formatCurrency, numberWithSeparator } from \"./currencyUtils\";\n\ndescribe(\"format currency with thousandseparator set to ',' and decimalSeparator to '.'\", () => {\n it.each([\n [\"\", \"\"],\n [\"10\", \"10\"],\n [\"1000\", \"1K\"],\n [\"1000.00\", \"1K\"],\n [\"1200.50\", \"1.2K\"],\n [\"1,200.00\", \"1.2K\"],\n [\"2,240.00\", \"2.2K\"],\n [\"22,240.00\", \"22.2K\"],\n [\"50,000,000.00\", \"50M\"],\n ])(\"should format currency\", (value, expected) => {\n expect(formatCurrency(value, \",\")).toEqual(expected);\n });\n});\n\ndescribe(\"format currency with thousandseparator set to '.' and decimalSeparator to ','\", () => {\n it.each([\n [\"\", \"\"],\n [\"10\", \"10\"],\n [\"1000\", \"1K\"],\n [\"1000,00\", \"1K\"],\n [\"1200,50\", \"1.2K\"],\n [\"1.200,00\", \"1.2K\"],\n [\"2.240,00\", \"2.2K\"],\n [\"22.240,00\", \"22.2K\"],\n [\"50.000.000,00\", \"50M\"],\n ])(\"should format currency\", (value, expected) => {\n expect(formatCurrency(value, \".\")).toEqual(expected);\n });\n});\n\ndescribe(\"numberWithSeparator\", () => {\n test(\"should format number with thousand separator\", () => {\n const result = numberWithSeparator(1000, \",\");\n expect(result).toBe(\"1,000\");\n });\n\n test(\"should format string number with thousand separator\", () => {\n const result = numberWithSeparator(\"1000\", \",\");\n expect(result).toBe(\"1,000\");\n });\n\n test(\"should format decimal number with thousand separator and keep decimal part\", () => {\n const result = numberWithSeparator(12345.67, \",\");\n expect(result).toBe(\"12,345.67\");\n });\n\n test(\"should not format when format is set to false\", () => {\n const result = numberWithSeparator(1000, \",\", false);\n expect(result).toBe(1000);\n });\n\n test(\"should handle zero with thousand separator\", () => {\n const result = numberWithSeparator(0, \",\");\n expect(result).toBe(\"0\");\n });\n\n test(\"should handle negative number with thousand separator\", () => {\n const result = numberWithSeparator(-123456789, \",\");\n expect(result).toBe(\"-123,456,789\");\n });\n\n test(\"should not format\", () => {\n const result = numberWithSeparator(123456789, \",\", false);\n expect(result).toBe(123456789);\n });\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"currencyUtils.test.js","names":["describe","it","each","value","expected","expect","formatCurrency","toEqual","test","result","numberWithSeparator","toBe"],"sources":["../../../src/utils/currencyUtils.test.ts"],"sourcesContent":["import { formatCurrency, numberWithSeparator } from \"./currencyUtils\";\n\ndescribe(\"format currency with thousandseparator set to ',' and decimalSeparator to '.'\", () => {\n it.each([\n [\"\", \"\"],\n [\"10\", \"10\"],\n [\"1000\", \"1K\"],\n [\"1000.00\", \"1K\"],\n [\"1200.50\", \"1.2K\"],\n [\"1,200.00\", \"1.2K\"],\n [\"2,240.00\", \"2.2K\"],\n [\"22,240.00\", \"22.2K\"],\n [\"50,000,000.00\", \"50M\"],\n [\"-50,000.00\", \"-50K\"],\n [\"-1,200\", \"-1.2K\"],\n [\"-90,000,000.00\", \"-90M\"],\n ])(\"should format currency\", (value, expected) => {\n expect(formatCurrency(value, \",\")).toEqual(expected);\n });\n});\n\ndescribe(\"format currency with thousandseparator set to '.' and decimalSeparator to ','\", () => {\n it.each([\n [\"\", \"\"],\n [\"10\", \"10\"],\n [\"1000\", \"1K\"],\n [\"1000,00\", \"1K\"],\n [\"1200,50\", \"1.2K\"],\n [\"1.200,00\", \"1.2K\"],\n [\"2.240,00\", \"2.2K\"],\n [\"22.240,00\", \"22.2K\"],\n [\"50.000.000,00\", \"50M\"],\n [\"-50.000,00\", \"-50K\"],\n [\"-1.200\", \"-1.2K\"],\n [\"-90.000.000,00\", \"-90M\"],\n ])(\"should format currency\", (value, expected) => {\n expect(formatCurrency(value, \".\")).toEqual(expected);\n });\n});\n\ndescribe(\"numberWithSeparator\", () => {\n test(\"should format number with thousand separator\", () => {\n const result = numberWithSeparator(1000, \",\");\n expect(result).toBe(\"1,000\");\n });\n\n test(\"should format string number with thousand separator\", () => {\n const result = numberWithSeparator(\"1000\", \",\");\n expect(result).toBe(\"1,000\");\n });\n\n test(\"should format decimal number with thousand separator and keep decimal part\", () => {\n const result = numberWithSeparator(12345.67, \",\");\n expect(result).toBe(\"12,345.67\");\n });\n\n test(\"should not format when format is set to false\", () => {\n const result = numberWithSeparator(1000, \",\", false);\n expect(result).toBe(1000);\n });\n\n test(\"should handle zero with thousand separator\", () => {\n const result = numberWithSeparator(0, \",\");\n expect(result).toBe(\"0\");\n });\n\n test(\"should handle negative number with thousand separator\", () => {\n const result = numberWithSeparator(-123456789, \",\");\n expect(result).toBe(\"-123,456,789\");\n });\n\n test(\"should not format\", () => {\n const result = numberWithSeparator(123456789, \",\", false);\n expect(result).toBe(123456789);\n });\n});\n"],"mappings":"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"}
@@ -10,9 +10,9 @@ var validateStopwatchTime = function validateStopwatchTime(value) {
10
10
  exports.validateStopwatchTime = validateStopwatchTime;
11
11
  var validateTimeInput = function validateTimeInput(value, withLeadingZero) {
12
12
  if (withLeadingZero) {
13
- return /^(([0-9][0-9]?|[1-9][0-9]{2,8})?(([:,.][0-5][0-9]?)|([:,.][0-5]?)|(\.[0-9]+)|(,[0-9]+))?)$/.test(value);
13
+ return /^(([0-9][0-9]?|[1-9][0-9]{2,8})?(([:,.][0-5][0-9]?)|([:,.][0-5]?)|(\.[0-9]{1,2})|(,[0-9]{1,2}))?)$/.test(value);
14
14
  } else {
15
- return /^(([1-9][0-9]*|0)?(([:,.][0-5][0-9]?)|([:,.][0-5]?)|(\.[0-9]+)|(,[0-9]+))?)$/.test(value);
15
+ return /^(([1-9][0-9]*|0)?(([:,.][0-5][0-9]?)|([:,.][0-5]?)|(\.[0-9]{1,2})|(,[0-9]{1,2}))?)$/.test(value);
16
16
  }
17
17
  };
18
18
  exports.validateTimeInput = validateTimeInput;
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","names":["validateStopwatchTime","value","test","validateTimeInput","withLeadingZero"],"sources":["../../../src/utils/validation.ts"],"sourcesContent":["export const validateStopwatchTime = (value: string) => {\n return /^([0-9]{0,2})?(((:([0-5][0-9])?)|(:[0-5]?))|(\\.[0-9]{0,2})|(,[0-9]{0,2}))?$/g.test(\n value\n );\n};\n\nexport const validateTimeInput = (value: string, withLeadingZero: boolean) => {\n if (withLeadingZero) {\n return /^(([0-9][0-9]?|[1-9][0-9]{2,8})?(([:,.][0-5][0-9]?)|([:,.][0-5]?)|(\\.[0-9]+)|(,[0-9]+))?)$/.test(\n value\n );\n } else {\n return /^(([1-9][0-9]*|0)?(([:,.][0-5][0-9]?)|([:,.][0-5]?)|(\\.[0-9]+)|(,[0-9]+))?)$/.test(\n value\n );\n }\n};\n"],"mappings":";;;;;;AAAO,IAAMA,qBAAqB,GAAG,SAAxBA,qBAAqB,CAAIC,KAAa,EAAK;EACtD,OAAO,8EAA8E,CAACC,IAAI,CACxFD,KAAK,CACN;AACH,CAAC;AAAC;AAEK,IAAME,iBAAiB,GAAG,SAApBA,iBAAiB,CAAIF,KAAa,EAAEG,eAAwB,EAAK;EAC5E,IAAIA,eAAe,EAAE;IACnB,OAAO,4FAA4F,CAACF,IAAI,CACtGD,KAAK,CACN;EACH,CAAC,MAAM;IACL,OAAO,8EAA8E,CAACC,IAAI,CACxFD,KAAK,CACN;EACH;AACF,CAAC;AAAC"}
1
+ {"version":3,"file":"validation.js","names":["validateStopwatchTime","value","test","validateTimeInput","withLeadingZero"],"sources":["../../../src/utils/validation.ts"],"sourcesContent":["export const validateStopwatchTime = (value: string) => {\n return /^([0-9]{0,2})?(((:([0-5][0-9])?)|(:[0-5]?))|(\\.[0-9]{0,2})|(,[0-9]{0,2}))?$/g.test(\n value\n );\n};\n\nexport const validateTimeInput = (value: string, withLeadingZero: boolean) => {\n if (withLeadingZero) {\n return /^(([0-9][0-9]?|[1-9][0-9]{2,8})?(([:,.][0-5][0-9]?)|([:,.][0-5]?)|(\\.[0-9]{1,2})|(,[0-9]{1,2}))?)$/.test(\n value\n );\n } else {\n return /^(([1-9][0-9]*|0)?(([:,.][0-5][0-9]?)|([:,.][0-5]?)|(\\.[0-9]{1,2})|(,[0-9]{1,2}))?)$/.test(\n value\n );\n }\n};\n"],"mappings":";;;;;;AAAO,IAAMA,qBAAqB,GAAG,SAAxBA,qBAAqB,CAAIC,KAAa,EAAK;EACtD,OAAO,8EAA8E,CAACC,IAAI,CACxFD,KAAK,CACN;AACH,CAAC;AAAC;AAEK,IAAME,iBAAiB,GAAG,SAApBA,iBAAiB,CAAIF,KAAa,EAAEG,eAAwB,EAAK;EAC5E,IAAIA,eAAe,EAAE;IACnB,OAAO,oGAAoG,CAACF,IAAI,CAC9GD,KAAK,CACN;EACH,CAAC,MAAM;IACL,OAAO,sFAAsF,CAACC,IAAI,CAChGD,KAAK,CACN;EACH;AACF,CAAC;AAAC"}
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import type { InputNumberProps } from "../../hooks";
3
+ export declare const EditableCurrency: React.ForwardRefExoticComponent<Omit<InputNumberProps, "size"> & React.RefAttributes<HTMLInputElement>>;
4
+ //# sourceMappingURL=EditableCurrency.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EditableCurrency.d.ts","sourceRoot":"","sources":["../../../../src/components/EditableCurrency/EditableCurrency.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6B,MAAM,OAAO,CAAC;AAMlD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,eAAO,MAAM,gBAAgB,yGA+D5B,CAAC"}
@@ -0,0 +1,63 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
+ var _excluded = ["decimalLength", "decimalSeparator", "disableAbbreviation", "disabled", "disableMacros", "onValueChange", "step", "thousandSeparator", "value", "className"];
4
+ import React, { forwardRef, useRef } from "react";
5
+ import { useInputNumber } from "../../hooks";
6
+ import { EditableContent } from "../EditableContent";
7
+ import { Tooltip } from "../Tooltip";
8
+ import { useForkRef } from "../../utils";
9
+ export var EditableCurrency = /*#__PURE__*/forwardRef(function (_ref, ref) {
10
+ var _ref$decimalLength = _ref.decimalLength,
11
+ decimalLength = _ref$decimalLength === void 0 ? 2 : _ref$decimalLength,
12
+ _ref$decimalSeparator = _ref.decimalSeparator,
13
+ decimalSeparator = _ref$decimalSeparator === void 0 ? "." : _ref$decimalSeparator,
14
+ _ref$disableAbbreviat = _ref.disableAbbreviation,
15
+ disableAbbreviation = _ref$disableAbbreviat === void 0 ? false : _ref$disableAbbreviat,
16
+ disabled = _ref.disabled,
17
+ _ref$disableMacros = _ref.disableMacros,
18
+ disableMacros = _ref$disableMacros === void 0 ? false : _ref$disableMacros,
19
+ onValueChange = _ref.onValueChange,
20
+ _ref$step = _ref.step,
21
+ step = _ref$step === void 0 ? 1 : _ref$step,
22
+ _ref$thousandSeparato = _ref.thousandSeparator,
23
+ thousandSeparator = _ref$thousandSeparato === void 0 ? "," : _ref$thousandSeparato,
24
+ value = _ref.value,
25
+ className = _ref.className,
26
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded);
27
+ var inputRef = useRef(null);
28
+ var handleRef = useForkRef(ref, inputRef);
29
+ var _useInputNumber = useInputNumber({
30
+ decimalLength: decimalLength,
31
+ decimalSeparator: decimalSeparator,
32
+ disableAbbreviation: disableAbbreviation,
33
+ disableMacros: disableMacros,
34
+ onValueChange: onValueChange,
35
+ step: step,
36
+ thousandSeparator: thousandSeparator,
37
+ value: value
38
+ }, inputRef),
39
+ focused = _useInputNumber.focused,
40
+ rootValue = _useInputNumber.rootValue,
41
+ formattedValue = _useInputNumber.formattedValue,
42
+ handleBlur = _useInputNumber.handleBlur,
43
+ handleChange = _useInputNumber.handleChange,
44
+ handleFocus = _useInputNumber.handleFocus,
45
+ handleKeyDown = _useInputNumber.handleKeyDown;
46
+ return /*#__PURE__*/React.createElement(Tooltip, {
47
+ title: rootValue,
48
+ disable: focused
49
+ }, /*#__PURE__*/React.createElement(EditableContent, {
50
+ disabled: disabled,
51
+ ref: handleRef,
52
+ className: className,
53
+ inputProps: _extends({
54
+ value: formattedValue,
55
+ onBlur: handleBlur,
56
+ onChange: handleChange,
57
+ onFocus: handleFocus,
58
+ onKeyDown: handleKeyDown
59
+ }, rest)
60
+ }));
61
+ });
62
+ EditableCurrency.displayName = "EditableCurrency";
63
+ //# sourceMappingURL=EditableCurrency.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EditableCurrency.js","names":["React","forwardRef","useRef","useInputNumber","EditableContent","Tooltip","useForkRef","EditableCurrency","ref","decimalLength","decimalSeparator","disableAbbreviation","disabled","disableMacros","onValueChange","step","thousandSeparator","value","className","rest","inputRef","handleRef","focused","rootValue","formattedValue","handleBlur","handleChange","handleFocus","handleKeyDown","onBlur","onChange","onFocus","onKeyDown","displayName"],"sources":["../../../../src/components/EditableCurrency/EditableCurrency.tsx"],"sourcesContent":["import React, { forwardRef, useRef } from \"react\";\nimport { useInputNumber } from \"../../hooks\";\nimport { EditableContent } from \"../EditableContent\";\nimport { Tooltip } from \"../Tooltip\";\nimport { useForkRef } from \"../../utils\";\n\nimport type { InputNumberProps } from \"../../hooks\";\n\nexport const EditableCurrency = forwardRef<\n HTMLInputElement,\n Omit<InputNumberProps, \"size\">\n>(\n (\n {\n decimalLength = 2,\n decimalSeparator = \".\",\n disableAbbreviation = false,\n disabled,\n disableMacros = false,\n onValueChange,\n step = 1,\n thousandSeparator = \",\",\n value,\n className,\n ...rest\n },\n ref\n ) => {\n const inputRef = useRef<HTMLInputElement | null>(null);\n const handleRef = useForkRef(ref, inputRef);\n\n const {\n focused,\n rootValue,\n formattedValue,\n handleBlur,\n handleChange,\n handleFocus,\n handleKeyDown,\n } = useInputNumber(\n {\n decimalLength,\n decimalSeparator,\n disableAbbreviation,\n disableMacros,\n onValueChange,\n step,\n thousandSeparator,\n value,\n },\n inputRef\n );\n\n return (\n <Tooltip title={rootValue as string} disable={focused}>\n <EditableContent\n disabled={disabled}\n ref={handleRef}\n className={className}\n inputProps={{\n value: formattedValue,\n onBlur: handleBlur,\n onChange: handleChange,\n onFocus: handleFocus,\n onKeyDown: handleKeyDown,\n ...rest,\n }}\n />\n </Tooltip>\n );\n }\n);\n\nEditableCurrency.displayName = \"EditableCurrency\";\n"],"mappings":";;;AAAA,OAAOA,KAAK,IAAIC,UAAU,EAAEC,MAAM,QAAQ,OAAO;AACjD,SAASC,cAAc,QAAQ,aAAa;AAC5C,SAASC,eAAe,QAAQ,oBAAoB;AACpD,SAASC,OAAO,QAAQ,YAAY;AACpC,SAASC,UAAU,QAAQ,aAAa;AAIxC,OAAO,IAAMC,gBAAgB,gBAAGN,UAAU,CAIxC,gBAcEO,GAAG,EACA;EAAA,8BAbDC,aAAa;IAAbA,aAAa,mCAAG,CAAC;IAAA,6BACjBC,gBAAgB;IAAhBA,gBAAgB,sCAAG,GAAG;IAAA,6BACtBC,mBAAmB;IAAnBA,mBAAmB,sCAAG,KAAK;IAC3BC,QAAQ,QAARA,QAAQ;IAAA,0BACRC,aAAa;IAAbA,aAAa,mCAAG,KAAK;IACrBC,aAAa,QAAbA,aAAa;IAAA,iBACbC,IAAI;IAAJA,IAAI,0BAAG,CAAC;IAAA,6BACRC,iBAAiB;IAAjBA,iBAAiB,sCAAG,GAAG;IACvBC,KAAK,QAALA,KAAK;IACLC,SAAS,QAATA,SAAS;IACNC,IAAI;EAIT,IAAMC,QAAQ,GAAGlB,MAAM,CAA0B,IAAI,CAAC;EACtD,IAAMmB,SAAS,GAAGf,UAAU,CAACE,GAAG,EAAEY,QAAQ,CAAC;EAE3C,sBAQIjB,cAAc,CAChB;MACEM,aAAa,EAAbA,aAAa;MACbC,gBAAgB,EAAhBA,gBAAgB;MAChBC,mBAAmB,EAAnBA,mBAAmB;MACnBE,aAAa,EAAbA,aAAa;MACbC,aAAa,EAAbA,aAAa;MACbC,IAAI,EAAJA,IAAI;MACJC,iBAAiB,EAAjBA,iBAAiB;MACjBC,KAAK,EAALA;IACF,CAAC,EACDG,QAAQ,CACT;IAnBCE,OAAO,mBAAPA,OAAO;IACPC,SAAS,mBAATA,SAAS;IACTC,cAAc,mBAAdA,cAAc;IACdC,UAAU,mBAAVA,UAAU;IACVC,YAAY,mBAAZA,YAAY;IACZC,WAAW,mBAAXA,WAAW;IACXC,aAAa,mBAAbA,aAAa;EAef,oBACE,oBAAC,OAAO;IAAC,KAAK,EAAEL,SAAoB;IAAC,OAAO,EAAED;EAAQ,gBACpD,oBAAC,eAAe;IACd,QAAQ,EAAEV,QAAS;IACnB,GAAG,EAAES,SAAU;IACf,SAAS,EAAEH,SAAU;IACrB,UAAU;MACRD,KAAK,EAAEO,cAAc;MACrBK,MAAM,EAAEJ,UAAU;MAClBK,QAAQ,EAAEJ,YAAY;MACtBK,OAAO,EAAEJ,WAAW;MACpBK,SAAS,EAAEJ;IAAa,GACrBT,IAAI;EACP,EACF,CACM;AAEd,CAAC,CACF;AAEDZ,gBAAgB,CAAC0B,WAAW,GAAG,kBAAkB"}
@@ -0,0 +1,2 @@
1
+ export * from "./EditableCurrency";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/EditableCurrency/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./EditableCurrency";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/EditableCurrency/index.ts"],"sourcesContent":["export * from \"./EditableCurrency\";\n"],"mappings":"AAAA,cAAc,oBAAoB"}
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import type { InputNumberProps } from "./InputNumber";
2
+ import type { InputNumberProps } from "../../hooks";
3
3
  export declare type InputCurrencyProps = InputNumberProps;
4
4
  export declare const InputCurrency: React.ForwardRefExoticComponent<InputNumberProps & React.RefAttributes<HTMLInputElement>>;
5
5
  //# sourceMappingURL=InputCurrency.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"InputCurrency.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/InputCurrency.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAE1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD,oBAAY,kBAAkB,GAAG,gBAAgB,CAAC;AAElD,eAAO,MAAM,aAAa,2FAIzB,CAAC"}
1
+ {"version":3,"file":"InputCurrency.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/InputCurrency.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAE1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,oBAAY,kBAAkB,GAAG,gBAAgB,CAAC;AAElD,eAAO,MAAM,aAAa,2FAIzB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"InputCurrency.js","names":["React","forwardRef","InputNumber","InputCurrency","ref","rest","displayName"],"sources":["../../../../src/components/Input/InputCurrency.tsx"],"sourcesContent":["import React, { forwardRef } from \"react\";\nimport { InputNumber } from \"./InputNumber\";\nimport type { InputNumberProps } from \"./InputNumber\";\n\nexport type InputCurrencyProps = InputNumberProps;\n\nexport const InputCurrency = forwardRef<HTMLInputElement, InputCurrencyProps>(\n ({ ...rest }, ref) => {\n return <InputNumber ref={ref} {...rest} />;\n }\n);\n\nInputCurrency.displayName = \"InputCurrency\";\n"],"mappings":";AAAA,OAAOA,KAAK,IAAIC,UAAU,QAAQ,OAAO;AACzC,SAASC,WAAW,QAAQ,eAAe;AAK3C,OAAO,IAAMC,aAAa,gBAAGF,UAAU,CACrC,gBAAcG,GAAG,EAAK;EAAA,IAAhBC,IAAI;EACR,oBAAO,oBAAC,WAAW;IAAC,GAAG,EAAED;EAAI,GAAKC,IAAI,EAAI;AAC5C,CAAC,CACF;AAEDF,aAAa,CAACG,WAAW,GAAG,eAAe"}
1
+ {"version":3,"file":"InputCurrency.js","names":["React","forwardRef","InputNumber","InputCurrency","ref","rest","displayName"],"sources":["../../../../src/components/Input/InputCurrency.tsx"],"sourcesContent":["import React, { forwardRef } from \"react\";\nimport { InputNumber } from \"./InputNumber\";\nimport type { InputNumberProps } from \"../../hooks\";\n\nexport type InputCurrencyProps = InputNumberProps;\n\nexport const InputCurrency = forwardRef<HTMLInputElement, InputCurrencyProps>(\n ({ ...rest }, ref) => {\n return <InputNumber ref={ref} {...rest} />;\n }\n);\n\nInputCurrency.displayName = \"InputCurrency\";\n"],"mappings":";AAAA,OAAOA,KAAK,IAAIC,UAAU,QAAQ,OAAO;AACzC,SAASC,WAAW,QAAQ,eAAe;AAK3C,OAAO,IAAMC,aAAa,gBAAGF,UAAU,CACrC,gBAAcG,GAAG,EAAK;EAAA,IAAhBC,IAAI;EACR,oBAAO,oBAAC,WAAW;IAAC,GAAG,EAAED;EAAI,GAAKC,IAAI,EAAI;AAC5C,CAAC,CACF;AAEDF,aAAa,CAACG,WAAW,GAAG,eAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"InputHours.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/InputHours.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiB,MAAM,OAAO,CAAC;AAItC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAiB,MAAM,2BAA2B,CAAC;AAEvE,MAAM,WAAW,eACf,SAAQ,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,CAAC,EAC5C,WAAW;CAAG;AAElB,eAAO,MAAM,UAAU,0FA2DtB,CAAC"}
1
+ {"version":3,"file":"InputHours.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/InputHours.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiB,MAAM,OAAO,CAAC;AAItC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAiB,MAAM,2BAA2B,CAAC;AAEvE,MAAM,WAAW,eACf,SAAQ,IAAI,CAAC,UAAU,EAAE,OAAO,GAAG,UAAU,CAAC,EAC5C,WAAW;CAAG;AAElB,eAAO,MAAM,UAAU,0FA4DtB,CAAC"}
@@ -58,7 +58,8 @@ export var InputHours = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
58
58
  onChange: onChange,
59
59
  onClick: onClick,
60
60
  onDoubleClick: onDoubleClick,
61
- ref: handleRef
61
+ ref: handleRef,
62
+ autoComplete: "off"
62
63
  }));
63
64
  });
64
65
  InputHours.displayName = "InputHours";
@@ -1 +1 @@
1
- {"version":3,"file":"InputHours.js","names":["React","useRef","useForkRef","validateTimeInput","Input","useInputHours","InputHours","forwardRef","ref","defaultValue","value","onCancel","onSave","externalEnterKeyPress","onEnterKeyPress","allowEmptyValue","withLeadingZero","validation","incrementOnlySelected","minuteIncrement","className","externalOnChange","onChange","externalOnClick","onClick","align","rest","inputRef","handleRef","inputProps","onBlur","onKeyDown","onDoubleClick","displayName"],"sources":["../../../../src/components/Input/InputHours.tsx"],"sourcesContent":["import React, { useRef } from \"react\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport { validateTimeInput } from \"../../utils\";\nimport { Input } from \"./Input\";\nimport type { InputProps } from \"./Input\";\nimport { IInputHours, useInputHours } from \"../../hooks/useInputHours\";\n\nexport interface InputHoursProps\n extends Omit<InputProps, \"value\" | \"onChange\">,\n IInputHours {}\n\nexport const InputHours = React.forwardRef<HTMLInputElement, InputHoursProps>(\n (\n {\n value: defaultValue,\n onCancel,\n onSave,\n onEnterKeyPress: externalEnterKeyPress,\n allowEmptyValue,\n withLeadingZero = true,\n validation = validateTimeInput,\n incrementOnlySelected = false,\n minuteIncrement = 1,\n className,\n onChange: externalOnChange,\n onClick: externalOnClick,\n align = \"center\",\n ...rest\n },\n ref\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const handleRef = useForkRef(ref, inputRef);\n\n const { inputProps } = useInputHours(\n {\n value: defaultValue,\n withLeadingZero,\n onSave,\n validation,\n allowEmptyValue,\n onCancel,\n minuteIncrement,\n incrementOnlySelected,\n onEnterKeyPress: externalEnterKeyPress,\n onChange: externalOnChange,\n onClick: externalOnClick,\n },\n inputRef\n );\n\n const { value, onBlur, onKeyDown, onChange, onClick, onDoubleClick } =\n inputProps;\n\n return (\n <Input\n {...rest}\n align={align}\n className={className}\n placeholder={withLeadingZero ? \"00:00\" : \"0:00\"}\n value={value}\n onBlur={onBlur}\n onKeyDown={onKeyDown}\n onChange={onChange}\n onClick={onClick}\n onDoubleClick={onDoubleClick}\n ref={handleRef}\n />\n );\n }\n);\n\nInputHours.displayName = \"InputHours\";\n"],"mappings":";;;AAAA,OAAOA,KAAK,IAAIC,MAAM,QAAQ,OAAO;AACrC,OAAOC,UAAU,MAAM,wBAAwB;AAC/C,SAASC,iBAAiB,QAAQ,aAAa;AAC/C,SAASC,KAAK,QAAQ,SAAS;AAE/B,SAAsBC,aAAa,QAAQ,2BAA2B;AAMtE,OAAO,IAAMC,UAAU,gBAAGN,KAAK,CAACO,UAAU,CACxC,gBAiBEC,GAAG,EACA;EAAA,IAhBMC,YAAY,QAAnBC,KAAK;IACLC,QAAQ,QAARA,QAAQ;IACRC,MAAM,QAANA,MAAM;IACWC,qBAAqB,QAAtCC,eAAe;IACfC,eAAe,QAAfA,eAAe;IAAA,4BACfC,eAAe;IAAfA,eAAe,qCAAG,IAAI;IAAA,uBACtBC,UAAU;IAAVA,UAAU,gCAAGd,iBAAiB;IAAA,6BAC9Be,qBAAqB;IAArBA,qBAAqB,sCAAG,KAAK;IAAA,4BAC7BC,eAAe;IAAfA,eAAe,qCAAG,CAAC;IACnBC,SAAS,QAATA,SAAS;IACCC,gBAAgB,QAA1BC,QAAQ;IACCC,eAAe,QAAxBC,OAAO;IAAA,kBACPC,KAAK;IAALA,KAAK,2BAAG,QAAQ;IACbC,IAAI;EAIT,IAAMC,QAAQ,GAAG1B,MAAM,CAAmB,IAAI,CAAC;EAC/C,IAAM2B,SAAS,GAAG1B,UAAU,CAACM,GAAG,EAAEmB,QAAQ,CAAC;EAE3C,qBAAuBtB,aAAa,CAClC;MACEK,KAAK,EAAED,YAAY;MACnBO,eAAe,EAAfA,eAAe;MACfJ,MAAM,EAANA,MAAM;MACNK,UAAU,EAAVA,UAAU;MACVF,eAAe,EAAfA,eAAe;MACfJ,QAAQ,EAARA,QAAQ;MACRQ,eAAe,EAAfA,eAAe;MACfD,qBAAqB,EAArBA,qBAAqB;MACrBJ,eAAe,EAAED,qBAAqB;MACtCS,QAAQ,EAAED,gBAAgB;MAC1BG,OAAO,EAAED;IACX,CAAC,EACDI,QAAQ,CACT;IAfOE,UAAU,kBAAVA,UAAU;EAiBlB,IAAQnB,KAAK,GACXmB,UAAU,CADJnB,KAAK;IAAEoB,MAAM,GACnBD,UAAU,CADGC,MAAM;IAAEC,SAAS,GAC9BF,UAAU,CADWE,SAAS;IAAET,QAAQ,GACxCO,UAAU,CADsBP,QAAQ;IAAEE,OAAO,GACjDK,UAAU,CADgCL,OAAO;IAAEQ,aAAa,GAChEH,UAAU,CADyCG,aAAa;EAGlE,oBACE,oBAAC,KAAK,eACAN,IAAI;IACR,KAAK,EAAED,KAAM;IACb,SAAS,EAAEL,SAAU;IACrB,WAAW,EAAEJ,eAAe,GAAG,OAAO,GAAG,MAAO;IAChD,KAAK,EAAEN,KAAM;IACb,MAAM,EAAEoB,MAAO;IACf,SAAS,EAAEC,SAAU;IACrB,QAAQ,EAAET,QAAS;IACnB,OAAO,EAAEE,OAAQ;IACjB,aAAa,EAAEQ,aAAc;IAC7B,GAAG,EAAEJ;EAAU,GACf;AAEN,CAAC,CACF;AAEDtB,UAAU,CAAC2B,WAAW,GAAG,YAAY"}
1
+ {"version":3,"file":"InputHours.js","names":["React","useRef","useForkRef","validateTimeInput","Input","useInputHours","InputHours","forwardRef","ref","defaultValue","value","onCancel","onSave","externalEnterKeyPress","onEnterKeyPress","allowEmptyValue","withLeadingZero","validation","incrementOnlySelected","minuteIncrement","className","externalOnChange","onChange","externalOnClick","onClick","align","rest","inputRef","handleRef","inputProps","onBlur","onKeyDown","onDoubleClick","displayName"],"sources":["../../../../src/components/Input/InputHours.tsx"],"sourcesContent":["import React, { useRef } from \"react\";\nimport useForkRef from \"../../utils/useForkRef\";\nimport { validateTimeInput } from \"../../utils\";\nimport { Input } from \"./Input\";\nimport type { InputProps } from \"./Input\";\nimport { IInputHours, useInputHours } from \"../../hooks/useInputHours\";\n\nexport interface InputHoursProps\n extends Omit<InputProps, \"value\" | \"onChange\">,\n IInputHours {}\n\nexport const InputHours = React.forwardRef<HTMLInputElement, InputHoursProps>(\n (\n {\n value: defaultValue,\n onCancel,\n onSave,\n onEnterKeyPress: externalEnterKeyPress,\n allowEmptyValue,\n withLeadingZero = true,\n validation = validateTimeInput,\n incrementOnlySelected = false,\n minuteIncrement = 1,\n className,\n onChange: externalOnChange,\n onClick: externalOnClick,\n align = \"center\",\n ...rest\n },\n ref\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const handleRef = useForkRef(ref, inputRef);\n\n const { inputProps } = useInputHours(\n {\n value: defaultValue,\n withLeadingZero,\n onSave,\n validation,\n allowEmptyValue,\n onCancel,\n minuteIncrement,\n incrementOnlySelected,\n onEnterKeyPress: externalEnterKeyPress,\n onChange: externalOnChange,\n onClick: externalOnClick,\n },\n inputRef\n );\n\n const { value, onBlur, onKeyDown, onChange, onClick, onDoubleClick } =\n inputProps;\n\n return (\n <Input\n {...rest}\n align={align}\n className={className}\n placeholder={withLeadingZero ? \"00:00\" : \"0:00\"}\n value={value}\n onBlur={onBlur}\n onKeyDown={onKeyDown}\n onChange={onChange}\n onClick={onClick}\n onDoubleClick={onDoubleClick}\n ref={handleRef}\n autoComplete=\"off\"\n />\n );\n }\n);\n\nInputHours.displayName = \"InputHours\";\n"],"mappings":";;;AAAA,OAAOA,KAAK,IAAIC,MAAM,QAAQ,OAAO;AACrC,OAAOC,UAAU,MAAM,wBAAwB;AAC/C,SAASC,iBAAiB,QAAQ,aAAa;AAC/C,SAASC,KAAK,QAAQ,SAAS;AAE/B,SAAsBC,aAAa,QAAQ,2BAA2B;AAMtE,OAAO,IAAMC,UAAU,gBAAGN,KAAK,CAACO,UAAU,CACxC,gBAiBEC,GAAG,EACA;EAAA,IAhBMC,YAAY,QAAnBC,KAAK;IACLC,QAAQ,QAARA,QAAQ;IACRC,MAAM,QAANA,MAAM;IACWC,qBAAqB,QAAtCC,eAAe;IACfC,eAAe,QAAfA,eAAe;IAAA,4BACfC,eAAe;IAAfA,eAAe,qCAAG,IAAI;IAAA,uBACtBC,UAAU;IAAVA,UAAU,gCAAGd,iBAAiB;IAAA,6BAC9Be,qBAAqB;IAArBA,qBAAqB,sCAAG,KAAK;IAAA,4BAC7BC,eAAe;IAAfA,eAAe,qCAAG,CAAC;IACnBC,SAAS,QAATA,SAAS;IACCC,gBAAgB,QAA1BC,QAAQ;IACCC,eAAe,QAAxBC,OAAO;IAAA,kBACPC,KAAK;IAALA,KAAK,2BAAG,QAAQ;IACbC,IAAI;EAIT,IAAMC,QAAQ,GAAG1B,MAAM,CAAmB,IAAI,CAAC;EAC/C,IAAM2B,SAAS,GAAG1B,UAAU,CAACM,GAAG,EAAEmB,QAAQ,CAAC;EAE3C,qBAAuBtB,aAAa,CAClC;MACEK,KAAK,EAAED,YAAY;MACnBO,eAAe,EAAfA,eAAe;MACfJ,MAAM,EAANA,MAAM;MACNK,UAAU,EAAVA,UAAU;MACVF,eAAe,EAAfA,eAAe;MACfJ,QAAQ,EAARA,QAAQ;MACRQ,eAAe,EAAfA,eAAe;MACfD,qBAAqB,EAArBA,qBAAqB;MACrBJ,eAAe,EAAED,qBAAqB;MACtCS,QAAQ,EAAED,gBAAgB;MAC1BG,OAAO,EAAED;IACX,CAAC,EACDI,QAAQ,CACT;IAfOE,UAAU,kBAAVA,UAAU;EAiBlB,IAAQnB,KAAK,GACXmB,UAAU,CADJnB,KAAK;IAAEoB,MAAM,GACnBD,UAAU,CADGC,MAAM;IAAEC,SAAS,GAC9BF,UAAU,CADWE,SAAS;IAAET,QAAQ,GACxCO,UAAU,CADsBP,QAAQ;IAAEE,OAAO,GACjDK,UAAU,CADgCL,OAAO;IAAEQ,aAAa,GAChEH,UAAU,CADyCG,aAAa;EAGlE,oBACE,oBAAC,KAAK,eACAN,IAAI;IACR,KAAK,EAAED,KAAM;IACb,SAAS,EAAEL,SAAU;IACrB,WAAW,EAAEJ,eAAe,GAAG,OAAO,GAAG,MAAO;IAChD,KAAK,EAAEN,KAAM;IACb,MAAM,EAAEoB,MAAO;IACf,SAAS,EAAEC,SAAU;IACrB,QAAQ,EAAET,QAAS;IACnB,OAAO,EAAEE,OAAQ;IACjB,aAAa,EAAEQ,aAAc;IAC7B,GAAG,EAAEJ,SAAU;IACf,YAAY,EAAC;EAAK,GAClB;AAEN,CAAC,CACF;AAEDtB,UAAU,CAAC2B,WAAW,GAAG,YAAY"}
@@ -1,13 +1,4 @@
1
1
  import React from "react";
2
- import type { InputProps } from "./Input";
3
- export declare type Separators = "." | ",";
4
- export interface InputNumberProps extends InputProps {
5
- decimalSeparator?: Separators;
6
- thousandSeparator?: Separators;
7
- disableAbbreviation?: boolean;
8
- disableMacros?: boolean;
9
- decimalLength?: number;
10
- onValueChange?: (value: string) => void;
11
- }
2
+ import { InputNumberProps } from "../../hooks";
12
3
  export declare const InputNumber: React.ForwardRefExoticComponent<InputNumberProps & React.RefAttributes<HTMLInputElement>>;
13
4
  //# sourceMappingURL=InputNumber.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"InputNumber.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/InputNumber.tsx"],"names":[],"mappings":"AAAA,OAAO,KAON,MAAM,OAAO,CAAC;AAKf,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAS1C,oBAAY,UAAU,GAAG,GAAG,GAAG,GAAG,CAAC;AAEnC,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IAClD,gBAAgB,CAAC,EAAE,UAAU,CAAC;IAC9B,iBAAiB,CAAC,EAAE,UAAU,CAAC;IAC/B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED,eAAO,MAAM,WAAW,2FA4LvB,CAAC"}
1
+ {"version":3,"file":"InputNumber.d.ts","sourceRoot":"","sources":["../../../../src/components/Input/InputNumber.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6B,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAkB,MAAM,aAAa,CAAC;AAI/D,eAAO,MAAM,WAAW,2FA2DvB,CAAC"}
@@ -1,141 +1,45 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- var _excluded = ["disableMacros", "disableAbbreviation", "decimalLength", "thousandSeparator", "decimalSeparator", "value", "onBlur", "onKeyDown", "onFocus", "onValueChange", "disabled", "invalid", "step"];
4
- import React, { forwardRef, useRef, useState } from "react";
5
- import { Input } from "./Input";
6
- import { formatCurrency, numberWithSeparator } from "../../utils/currencyUtils";
3
+ var _excluded = ["decimalLength", "decimalSeparator", "disableAbbreviation", "disabled", "disableMacros", "invalid", "onValueChange", "step", "thousandSeparator", "value"];
4
+ import React, { forwardRef, useRef } from "react";
5
+ import { useInputNumber } from "../../hooks";
7
6
  import { useForkRef } from "../../utils";
8
- var multiplier = {
9
- k: 1000,
10
- m: 1000000,
11
- b: 1000000000,
12
- t: 1000000000000
13
- };
7
+ import { Input } from "./Input";
14
8
  export var InputNumber = /*#__PURE__*/forwardRef(function (_ref, ref) {
15
- var _ref$disableMacros = _ref.disableMacros,
16
- disableMacros = _ref$disableMacros === void 0 ? false : _ref$disableMacros,
17
- _ref$disableAbbreviat = _ref.disableAbbreviation,
18
- disableAbbreviation = _ref$disableAbbreviat === void 0 ? false : _ref$disableAbbreviat,
19
- _ref$decimalLength = _ref.decimalLength,
9
+ var _ref$decimalLength = _ref.decimalLength,
20
10
  decimalLength = _ref$decimalLength === void 0 ? 2 : _ref$decimalLength,
21
- _ref$thousandSeparato = _ref.thousandSeparator,
22
- thousandSeparator = _ref$thousandSeparato === void 0 ? "," : _ref$thousandSeparato,
23
11
  _ref$decimalSeparator = _ref.decimalSeparator,
24
12
  decimalSeparator = _ref$decimalSeparator === void 0 ? "." : _ref$decimalSeparator,
25
- value = _ref.value,
26
- onBlur = _ref.onBlur,
27
- onKeyDown = _ref.onKeyDown,
28
- onFocus = _ref.onFocus,
29
- onValueChange = _ref.onValueChange,
13
+ _ref$disableAbbreviat = _ref.disableAbbreviation,
14
+ disableAbbreviation = _ref$disableAbbreviat === void 0 ? false : _ref$disableAbbreviat,
30
15
  disabled = _ref.disabled,
16
+ _ref$disableMacros = _ref.disableMacros,
17
+ disableMacros = _ref$disableMacros === void 0 ? false : _ref$disableMacros,
31
18
  invalid = _ref.invalid,
19
+ onValueChange = _ref.onValueChange,
32
20
  _ref$step = _ref.step,
33
21
  step = _ref$step === void 0 ? 1 : _ref$step,
22
+ _ref$thousandSeparato = _ref.thousandSeparator,
23
+ thousandSeparator = _ref$thousandSeparato === void 0 ? "," : _ref$thousandSeparato,
24
+ value = _ref.value,
34
25
  rest = _objectWithoutPropertiesLoose(_ref, _excluded);
35
- var _useState = useState(value),
36
- formattedValue = _useState[0],
37
- setFormatted = _useState[1];
38
- var _useState2 = useState(value),
39
- rootValue = _useState2[0],
40
- setRootValue = _useState2[1];
41
26
  var inputRef = useRef(null);
42
27
  var handleRef = useForkRef(ref, inputRef);
43
- var handleInputBlur = function handleInputBlur() {
44
- if (inputRef && inputRef.current) {
45
- inputRef.current.blur();
46
- }
47
- };
48
- var handleSelect = function handleSelect() {
49
- if (inputRef && inputRef.current) {
50
- inputRef.current.select();
51
- }
52
- };
53
- var handleChange = function handleChange(e) {
54
- var inputValue = e.target.value;
55
- var isValidInput = false;
56
- if (inputValue.startsWith("00")) {
57
- return;
58
- }
59
- var numericInput = disableMacros ? inputValue : inputValue.replace(/([0-9.]+)([kmbtKMBT])/, function (_, num, unit) {
60
- return (parseFloat(num) * multiplier[unit.toLowerCase()]).toString();
61
- });
62
- var regexString = "^(\\d{0,9}(?:[" + thousandSeparator + "]?\\d{0,3})*(?:\\" + decimalSeparator + "\\d{0," + decimalLength + "})?)?$";
63
- if (thousandSeparator === ",") {
64
- isValidInput = new RegExp(regexString).test(numericInput);
65
- }
66
- if (thousandSeparator === ".") {
67
- isValidInput = new RegExp(regexString).test(numericInput);
68
- }
69
- if (!isValidInput) {
70
- return;
71
- }
72
- setFormatted(numericInput);
73
- onValueChange && onValueChange(numericInput);
74
- };
75
- var handleKeyDown = function handleKeyDown(e) {
76
- var allowedChars = /[0-9km.,b]/i;
77
- var key = e.key;
78
- var _step = parseFloat(String(step));
79
- if (key === "Escape") {
80
- handleInputBlur();
81
- }
82
- if (key === "ArrowUp") {
83
- e.preventDefault();
84
- updateValue("increment", _step);
85
- }
86
- if (key === "ArrowDown") {
87
- e.preventDefault();
88
- updateValue("decrement", _step);
89
- }
90
- if ((e.metaKey || e.ctrlKey) && e.key === "a") {
91
- handleSelect();
92
- }
93
- if (!allowedChars.test(key)) {
94
- e.preventDefault();
95
- }
96
- if (decimalLength === 0 && e.key === decimalSeparator) {
97
- e.preventDefault();
98
- }
99
- onKeyDown && onKeyDown(e);
100
- };
101
- var handleBlur = function handleBlur(e) {
102
- if (disableAbbreviation) {
103
- setFormatted(formattedValue);
104
- } else {
105
- setFormatted(formatCurrency(formattedValue, thousandSeparator));
106
- }
107
- setRootValue(formattedValue);
108
- onBlur && onBlur(e);
109
- };
110
- var handleFocus = function handleFocus(e) {
111
- setFormatted(rootValue);
112
- onFocus && onFocus(e);
113
- };
114
- var updateValue = function updateValue(type, step) {
115
- var value = String(formattedValue);
116
- var decimalPart = "";
117
- var increasedValue = 0;
118
- var nonDecimalPart = value.replaceAll(thousandSeparator, "");
119
- if (!value) {
120
- return;
121
- }
122
- if (value.includes(decimalSeparator)) {
123
- nonDecimalPart = value.slice(0, value.indexOf(decimalSeparator)).replaceAll(thousandSeparator, "");
124
- }
125
- if (value.includes(decimalSeparator)) {
126
- decimalPart = value.slice(value.indexOf(decimalSeparator));
127
- }
128
- if (type === "increment") {
129
- increasedValue = parseFloat(nonDecimalPart) + step;
130
- } else {
131
- increasedValue = parseFloat(nonDecimalPart) - step;
132
- }
133
- if (value.includes(decimalSeparator)) {
134
- increasedValue = parseFloat(increasedValue.toFixed(decimalLength));
135
- }
136
- var joinedValue = numberWithSeparator(increasedValue, thousandSeparator, value.includes(thousandSeparator));
137
- setFormatted(decimalPart ? joinedValue + decimalPart : joinedValue);
138
- };
28
+ var _useInputNumber = useInputNumber({
29
+ decimalLength: decimalLength,
30
+ decimalSeparator: decimalSeparator,
31
+ disableAbbreviation: disableAbbreviation,
32
+ disableMacros: disableMacros,
33
+ onValueChange: onValueChange,
34
+ step: step,
35
+ thousandSeparator: thousandSeparator,
36
+ value: value
37
+ }, inputRef),
38
+ formattedValue = _useInputNumber.formattedValue,
39
+ handleBlur = _useInputNumber.handleBlur,
40
+ handleChange = _useInputNumber.handleChange,
41
+ handleFocus = _useInputNumber.handleFocus,
42
+ handleKeyDown = _useInputNumber.handleKeyDown;
139
43
  return /*#__PURE__*/React.createElement(Input, _extends({
140
44
  ref: handleRef,
141
45
  placeholder: "5" + thousandSeparator + "000" + decimalSeparator + "00",
@@ -1 +1 @@
1
- {"version":3,"file":"InputNumber.js","names":["React","forwardRef","useRef","useState","Input","formatCurrency","numberWithSeparator","useForkRef","multiplier","k","m","b","t","InputNumber","ref","disableMacros","disableAbbreviation","decimalLength","thousandSeparator","decimalSeparator","value","onBlur","onKeyDown","onFocus","onValueChange","disabled","invalid","step","rest","formattedValue","setFormatted","rootValue","setRootValue","inputRef","handleRef","handleInputBlur","current","blur","handleSelect","select","handleChange","e","inputValue","target","isValidInput","startsWith","numericInput","replace","_","num","unit","parseFloat","toLowerCase","toString","regexString","RegExp","test","handleKeyDown","allowedChars","key","_step","String","preventDefault","updateValue","metaKey","ctrlKey","handleBlur","handleFocus","type","decimalPart","increasedValue","nonDecimalPart","replaceAll","includes","slice","indexOf","toFixed","joinedValue","displayName"],"sources":["../../../../src/components/Input/InputNumber.tsx"],"sourcesContent":["import React, {\n ChangeEventHandler,\n forwardRef,\n FocusEventHandler,\n KeyboardEventHandler,\n useRef,\n useState,\n} from \"react\";\nimport { Input } from \"./Input\";\nimport { formatCurrency, numberWithSeparator } from \"../../utils/currencyUtils\";\nimport { useForkRef } from \"../../utils\";\n\nimport type { InputProps } from \"./Input\";\n\nconst multiplier = {\n k: 1_000,\n m: 1_000_000,\n b: 1_000_000_000,\n t: 1_000_000_000_000,\n};\n\nexport type Separators = \".\" | \",\";\n\nexport interface InputNumberProps extends InputProps {\n decimalSeparator?: Separators;\n thousandSeparator?: Separators;\n disableAbbreviation?: boolean;\n disableMacros?: boolean;\n decimalLength?: number;\n onValueChange?: (value: string) => void;\n}\n\nexport const InputNumber = forwardRef<HTMLInputElement, InputNumberProps>(\n (\n {\n disableMacros = false,\n disableAbbreviation = false,\n decimalLength = 2,\n thousandSeparator = \",\",\n decimalSeparator = \".\",\n value,\n onBlur,\n onKeyDown,\n onFocus,\n onValueChange,\n disabled,\n invalid,\n step = 1,\n ...rest\n },\n ref\n ) => {\n const [formattedValue, setFormatted] = useState(value);\n const [rootValue, setRootValue] = useState(value);\n\n const inputRef = useRef<HTMLInputElement>(null);\n const handleRef = useForkRef(ref, inputRef);\n\n const handleInputBlur = () => {\n if (inputRef && inputRef.current) {\n inputRef.current.blur();\n }\n };\n\n const handleSelect = () => {\n if (inputRef && inputRef.current) {\n inputRef.current.select();\n }\n };\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (e) => {\n const inputValue = e.target.value;\n let isValidInput = false;\n\n if (inputValue.startsWith(\"00\")) {\n return;\n }\n\n const numericInput = disableMacros\n ? inputValue\n : inputValue.replace(/([0-9.]+)([kmbtKMBT])/, (_, num, unit) => {\n return (\n parseFloat(num) * multiplier[unit.toLowerCase()]\n ).toString();\n });\n\n const regexString = `^(\\\\d{0,9}(?:[${thousandSeparator}]?\\\\d{0,3})*(?:\\\\${decimalSeparator}\\\\d{0,${decimalLength}})?)?$`;\n\n if (thousandSeparator === \",\") {\n isValidInput = new RegExp(regexString).test(numericInput);\n }\n\n if (thousandSeparator === \".\") {\n isValidInput = new RegExp(regexString).test(numericInput);\n }\n\n if (!isValidInput) {\n return;\n }\n\n setFormatted(numericInput);\n\n onValueChange && onValueChange(numericInput);\n };\n\n const handleKeyDown: KeyboardEventHandler<HTMLInputElement> = (e) => {\n const allowedChars = /[0-9km.,b]/i;\n const key = e.key;\n const _step = parseFloat(String(step));\n\n if (key === \"Escape\") {\n handleInputBlur();\n }\n\n if (key === \"ArrowUp\") {\n e.preventDefault();\n\n updateValue(\"increment\", _step);\n }\n\n if (key === \"ArrowDown\") {\n e.preventDefault();\n\n updateValue(\"decrement\", _step);\n }\n\n if ((e.metaKey || e.ctrlKey) && e.key === \"a\") {\n handleSelect();\n }\n\n if (!allowedChars.test(key)) {\n e.preventDefault();\n }\n\n if (decimalLength === 0 && e.key === decimalSeparator) {\n e.preventDefault();\n }\n\n onKeyDown && onKeyDown(e);\n };\n\n const handleBlur: FocusEventHandler<HTMLInputElement> = (e) => {\n if (disableAbbreviation) {\n setFormatted(formattedValue);\n } else {\n setFormatted(\n formatCurrency(formattedValue as string, thousandSeparator)\n );\n }\n\n setRootValue(formattedValue);\n\n onBlur && onBlur(e);\n };\n\n const handleFocus: FocusEventHandler<HTMLInputElement> = (e) => {\n setFormatted(rootValue);\n\n onFocus && onFocus(e);\n };\n\n const updateValue = (type: \"increment\" | \"decrement\", step: number) => {\n const value = String(formattedValue);\n\n let decimalPart = \"\";\n let increasedValue = 0;\n let nonDecimalPart = value.replaceAll(thousandSeparator, \"\");\n\n if (!value) {\n return;\n }\n\n if (value.includes(decimalSeparator)) {\n nonDecimalPart = value\n .slice(0, value.indexOf(decimalSeparator))\n .replaceAll(thousandSeparator, \"\");\n }\n\n if (value.includes(decimalSeparator)) {\n decimalPart = value.slice(value.indexOf(decimalSeparator));\n }\n\n if (type === \"increment\") {\n increasedValue = parseFloat(nonDecimalPart) + step;\n } else {\n increasedValue = parseFloat(nonDecimalPart) - step;\n }\n\n if (value.includes(decimalSeparator)) {\n increasedValue = parseFloat(increasedValue.toFixed(decimalLength));\n }\n\n const joinedValue = numberWithSeparator(\n increasedValue,\n thousandSeparator,\n value.includes(thousandSeparator)\n );\n\n setFormatted(decimalPart ? joinedValue + decimalPart : joinedValue);\n };\n\n return (\n <Input\n ref={handleRef}\n placeholder={`5${thousandSeparator}000${decimalSeparator}00`}\n value={formattedValue}\n type=\"text\"\n disabled={disabled}\n invalid={invalid}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n aria-placeholder={`5${thousandSeparator}000${decimalSeparator}00`}\n aria-disabled={disabled}\n aria-invalid={invalid}\n {...rest}\n />\n );\n }\n);\n\nInputNumber.displayName = \"InputNumber\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"InputNumber.js","names":["React","forwardRef","useRef","useInputNumber","useForkRef","Input","InputNumber","ref","decimalLength","decimalSeparator","disableAbbreviation","disabled","disableMacros","invalid","onValueChange","step","thousandSeparator","value","rest","inputRef","handleRef","formattedValue","handleBlur","handleChange","handleFocus","handleKeyDown","displayName"],"sources":["../../../../src/components/Input/InputNumber.tsx"],"sourcesContent":["import React, { forwardRef, useRef } from \"react\";\nimport { InputNumberProps, useInputNumber } from \"../../hooks\";\nimport { useForkRef } from \"../../utils\";\nimport { Input } from \"./Input\";\n\nexport const InputNumber = forwardRef<HTMLInputElement, InputNumberProps>(\n (\n {\n decimalLength = 2,\n decimalSeparator = \".\",\n disableAbbreviation = false,\n disabled,\n disableMacros = false,\n invalid,\n onValueChange,\n step = 1,\n thousandSeparator = \",\",\n value,\n ...rest\n },\n ref\n ) => {\n const inputRef = useRef<HTMLInputElement | null>(null);\n const handleRef = useForkRef(ref, inputRef);\n\n const {\n formattedValue,\n handleBlur,\n handleChange,\n handleFocus,\n handleKeyDown,\n } = useInputNumber(\n {\n decimalLength,\n decimalSeparator,\n disableAbbreviation,\n disableMacros,\n onValueChange,\n step,\n thousandSeparator,\n value,\n },\n inputRef\n );\n\n return (\n <Input\n ref={handleRef}\n placeholder={`5${thousandSeparator}000${decimalSeparator}00`}\n value={formattedValue}\n type=\"text\"\n disabled={disabled}\n invalid={invalid}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n aria-placeholder={`5${thousandSeparator}000${decimalSeparator}00`}\n aria-disabled={disabled}\n aria-invalid={invalid}\n {...rest}\n />\n );\n }\n);\n\nInputNumber.displayName = \"InputNumber\";\n"],"mappings":";;;AAAA,OAAOA,KAAK,IAAIC,UAAU,EAAEC,MAAM,QAAQ,OAAO;AACjD,SAA2BC,cAAc,QAAQ,aAAa;AAC9D,SAASC,UAAU,QAAQ,aAAa;AACxC,SAASC,KAAK,QAAQ,SAAS;AAE/B,OAAO,IAAMC,WAAW,gBAAGL,UAAU,CACnC,gBAcEM,GAAG,EACA;EAAA,8BAbDC,aAAa;IAAbA,aAAa,mCAAG,CAAC;IAAA,6BACjBC,gBAAgB;IAAhBA,gBAAgB,sCAAG,GAAG;IAAA,6BACtBC,mBAAmB;IAAnBA,mBAAmB,sCAAG,KAAK;IAC3BC,QAAQ,QAARA,QAAQ;IAAA,0BACRC,aAAa;IAAbA,aAAa,mCAAG,KAAK;IACrBC,OAAO,QAAPA,OAAO;IACPC,aAAa,QAAbA,aAAa;IAAA,iBACbC,IAAI;IAAJA,IAAI,0BAAG,CAAC;IAAA,6BACRC,iBAAiB;IAAjBA,iBAAiB,sCAAG,GAAG;IACvBC,KAAK,QAALA,KAAK;IACFC,IAAI;EAIT,IAAMC,QAAQ,GAAGjB,MAAM,CAA0B,IAAI,CAAC;EACtD,IAAMkB,SAAS,GAAGhB,UAAU,CAACG,GAAG,EAAEY,QAAQ,CAAC;EAE3C,sBAMIhB,cAAc,CAChB;MACEK,aAAa,EAAbA,aAAa;MACbC,gBAAgB,EAAhBA,gBAAgB;MAChBC,mBAAmB,EAAnBA,mBAAmB;MACnBE,aAAa,EAAbA,aAAa;MACbE,aAAa,EAAbA,aAAa;MACbC,IAAI,EAAJA,IAAI;MACJC,iBAAiB,EAAjBA,iBAAiB;MACjBC,KAAK,EAALA;IACF,CAAC,EACDE,QAAQ,CACT;IAjBCE,cAAc,mBAAdA,cAAc;IACdC,UAAU,mBAAVA,UAAU;IACVC,YAAY,mBAAZA,YAAY;IACZC,WAAW,mBAAXA,WAAW;IACXC,aAAa,mBAAbA,aAAa;EAef,oBACE,oBAAC,KAAK;IACJ,GAAG,EAAEL,SAAU;IACf,WAAW,QAAMJ,iBAAiB,WAAMP,gBAAgB,OAAK;IAC7D,KAAK,EAAEY,cAAe;IACtB,IAAI,EAAC,MAAM;IACX,QAAQ,EAAEV,QAAS;IACnB,OAAO,EAAEE,OAAQ;IACjB,QAAQ,EAAEU,YAAa;IACvB,OAAO,EAAEC,WAAY;IACrB,MAAM,EAAEF,UAAW;IACnB,SAAS,EAAEG,aAAc;IACzB,0BAAsBT,iBAAiB,WAAMP,gBAAgB,OAAK;IAClE,iBAAeE,QAAS;IACxB,gBAAcE;EAAQ,GAClBK,IAAI,EACR;AAEN,CAAC,CACF;AAEDZ,WAAW,CAACoB,WAAW,GAAG,aAAa"}
@@ -1,3 +1,4 @@
1
1
  export * from "./useInitScrollRef";
2
2
  export * from "./useHeight";
3
+ export * from "./useInputNumber";
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export * from "./useInitScrollRef";
2
2
  export * from "./useHeight";
3
+ export * from "./useInputNumber";
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/hooks/index.ts"],"sourcesContent":["export * from \"./useInitScrollRef\";\nexport * from \"./useHeight\";\n"],"mappings":"AAAA,cAAc,oBAAoB;AAClC,cAAc,aAAa"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/hooks/index.ts"],"sourcesContent":["export * from \"./useInitScrollRef\";\nexport * from \"./useHeight\";\nexport * from \"./useInputNumber\";\n"],"mappings":"AAAA,cAAc,oBAAoB;AAClC,cAAc,aAAa;AAC3B,cAAc,kBAAkB"}
@@ -0,0 +1,22 @@
1
+ import { ChangeEventHandler, KeyboardEventHandler, FocusEventHandler, MutableRefObject } from "react";
2
+ import type { InputProps } from "../components";
3
+ export declare type Separators = "." | ",";
4
+ export interface InputNumberProps extends InputProps {
5
+ decimalLength?: number;
6
+ decimalSeparator?: Separators;
7
+ disableAbbreviation?: boolean;
8
+ disableMacros?: boolean;
9
+ thousandSeparator?: Separators;
10
+ onValueChange?: (value: string) => void;
11
+ }
12
+ export declare const useInputNumber: ({ decimalSeparator, thousandSeparator, disableAbbreviation, disableMacros, decimalLength, value, onValueChange, onKeyDown, onBlur, onFocus, step, }: InputNumberProps, ref: MutableRefObject<HTMLInputElement | null>) => {
13
+ readonly focused: boolean;
14
+ readonly formattedValue: string | number | readonly string[] | undefined;
15
+ readonly rootValue: string | number | readonly string[] | undefined;
16
+ readonly handleChange: ChangeEventHandler<HTMLInputElement>;
17
+ readonly handleKeyDown: KeyboardEventHandler<HTMLInputElement>;
18
+ readonly handleBlur: FocusEventHandler<HTMLInputElement>;
19
+ readonly handleFocus: FocusEventHandler<HTMLInputElement>;
20
+ readonly onValueChange: ((value: string) => void) | undefined;
21
+ };
22
+ //# sourceMappingURL=useInputNumber.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInputNumber.d.ts","sourceRoot":"","sources":["../../../src/hooks/useInputNumber.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,OAAO,CAAC;AAMf,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,oBAAY,UAAU,GAAG,GAAG,GAAG,GAAG,CAAC;AAInC,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IAClD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,UAAU,CAAC;IAC9B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iBAAiB,CAAC,EAAE,UAAU,CAAC;IAC/B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED,eAAO,MAAM,cAAc,wJAatB,gBAAgB,OACd,iBAAiB,gBAAgB,GAAG,IAAI,CAAC;;;;;;;;qCAjBtB,MAAM,KAAK,IAAI;CA2KxC,CAAC"}