@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.
- package/dist/cjs/components/EditableCurrency/EditableCurrency.js +76 -0
- package/dist/cjs/components/EditableCurrency/EditableCurrency.js.map +1 -0
- package/dist/cjs/components/EditableCurrency/index.js +17 -0
- package/dist/cjs/components/EditableCurrency/index.js.map +1 -0
- package/dist/cjs/components/Input/InputCurrency.js.map +1 -1
- package/dist/cjs/components/Input/InputHours.js +2 -1
- package/dist/cjs/components/Input/InputHours.js.map +1 -1
- package/dist/cjs/components/Input/InputNumber.js +27 -131
- package/dist/cjs/components/Input/InputNumber.js.map +1 -1
- package/dist/cjs/hooks/index.js +11 -0
- package/dist/cjs/hooks/index.js.map +1 -1
- package/dist/cjs/hooks/useInputNumber.js +147 -0
- package/dist/cjs/hooks/useInputNumber.js.map +1 -0
- package/dist/cjs/utils/currencyUtils.js +18 -15
- package/dist/cjs/utils/currencyUtils.js.map +1 -1
- package/dist/cjs/utils/currencyUtils.test.js +2 -2
- package/dist/cjs/utils/currencyUtils.test.js.map +1 -1
- package/dist/cjs/utils/validation.js +2 -2
- package/dist/cjs/utils/validation.js.map +1 -1
- package/dist/esm/components/EditableCurrency/EditableCurrency.d.ts +4 -0
- package/dist/esm/components/EditableCurrency/EditableCurrency.d.ts.map +1 -0
- package/dist/esm/components/EditableCurrency/EditableCurrency.js +63 -0
- package/dist/esm/components/EditableCurrency/EditableCurrency.js.map +1 -0
- package/dist/esm/components/EditableCurrency/index.d.ts +2 -0
- package/dist/esm/components/EditableCurrency/index.d.ts.map +1 -0
- package/dist/esm/components/EditableCurrency/index.js +2 -0
- package/dist/esm/components/EditableCurrency/index.js.map +1 -0
- package/dist/esm/components/Input/InputCurrency.d.ts +1 -1
- package/dist/esm/components/Input/InputCurrency.d.ts.map +1 -1
- package/dist/esm/components/Input/InputCurrency.js.map +1 -1
- package/dist/esm/components/Input/InputHours.d.ts.map +1 -1
- package/dist/esm/components/Input/InputHours.js +2 -1
- package/dist/esm/components/Input/InputHours.js.map +1 -1
- package/dist/esm/components/Input/InputNumber.d.ts +1 -10
- package/dist/esm/components/Input/InputNumber.d.ts.map +1 -1
- package/dist/esm/components/Input/InputNumber.js +28 -124
- package/dist/esm/components/Input/InputNumber.js.map +1 -1
- package/dist/esm/hooks/index.d.ts +1 -0
- package/dist/esm/hooks/index.d.ts.map +1 -1
- package/dist/esm/hooks/index.js +1 -0
- package/dist/esm/hooks/index.js.map +1 -1
- package/dist/esm/hooks/useInputNumber.d.ts +22 -0
- package/dist/esm/hooks/useInputNumber.d.ts.map +1 -0
- package/dist/esm/hooks/useInputNumber.js +131 -0
- package/dist/esm/hooks/useInputNumber.js.map +1 -0
- package/dist/esm/utils/currencyUtils.d.ts +8 -2
- package/dist/esm/utils/currencyUtils.d.ts.map +1 -1
- package/dist/esm/utils/currencyUtils.js +16 -14
- package/dist/esm/utils/currencyUtils.js.map +1 -1
- package/dist/esm/utils/currencyUtils.test.js +2 -2
- package/dist/esm/utils/currencyUtils.test.js.map +1 -1
- package/dist/esm/utils/validation.js +2 -2
- package/dist/esm/utils/validation.js.map +1 -1
- package/dist/index.js +171 -3
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- 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 \"../
|
|
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":";;AAAA;AAEAA,QAAQ,CAAC,+EAA+E,EAAE,YAAM;EAC9FC,EAAE,CAACC,IAAI,CAAC,CACN,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,IAAI,EAAE,IAAI,CAAC,EACZ,CAAC,MAAM,EAAE,IAAI,CAAC,EACd,CAAC,SAAS,EAAE,IAAI,CAAC,EACjB,CAAC,SAAS,EAAE,MAAM,CAAC,EACnB,CAAC,UAAU,EAAE,MAAM,CAAC,EACpB,CAAC,UAAU,EAAE,MAAM,CAAC,EACpB,CAAC,WAAW,EAAE,OAAO,CAAC,EACtB,CAAC,eAAe,EAAE,KAAK,CAAC,
|
|
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]
|
|
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]
|
|
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]
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/EditableCurrency/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
|
|
@@ -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 "
|
|
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,
|
|
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 \"
|
|
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,
|
|
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;
|
|
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
|
|
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,
|
|
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 = ["
|
|
4
|
-
import React, { forwardRef, useRef
|
|
5
|
-
import {
|
|
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
|
-
|
|
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$
|
|
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
|
-
|
|
26
|
-
|
|
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
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
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 +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"}
|
package/dist/esm/hooks/index.js
CHANGED
|
@@ -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"}
|