siam-ui-utils 3.0.4 → 3.0.6

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.
@@ -0,0 +1,85 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useState, useEffect } from "react";
3
+ import { Input } from "reactstrap";
4
+ import { fieldToCurrency } from "siam-utils";
5
+ const CustomInputCurrency = (props) => {
6
+ const {
7
+ onChange = () => {
8
+ },
9
+ onFocus = () => {
10
+ },
11
+ value = {},
12
+ maxLength = "20",
13
+ style = {}
14
+ } = props;
15
+ const styleCurrency = { ...style, textAlign: "right" };
16
+ const [valueInputCur, setValueInputCur] = useState("");
17
+ const escapeRegExp = (string) => string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
18
+ const handleInputOnBlur = (event) => {
19
+ const { target } = event;
20
+ if (valueInputCur !== "") {
21
+ const valor = valueInputCur.replace(".", "");
22
+ const valorPersistence = valor.replace(",", ".");
23
+ setValueInputCur(fieldToCurrency(valorPersistence));
24
+ onChange({
25
+ ...event,
26
+ target: {
27
+ ...target,
28
+ value: valorPersistence,
29
+ valueCurrency: fieldToCurrency(valorPersistence),
30
+ valueFloat: parseFloat(valorPersistence)
31
+ }
32
+ });
33
+ }
34
+ };
35
+ const handleInputOnFocus = (e) => {
36
+ if (valueInputCur !== "") {
37
+ const valor = valueInputCur.replace("$ ", "");
38
+ const valor2 = valor.replace(/\./g, "");
39
+ setValueInputCur(valor2);
40
+ }
41
+ onFocus(e);
42
+ };
43
+ const handleInputChange = (event) => {
44
+ const { target } = event;
45
+ const valor = target.value.replace("$ ", "");
46
+ const valid = /^-?[0-9.]*(?:[,]\d?\d?)?$/;
47
+ if (valid.test(valor)) {
48
+ const sepDec = valor.slice(-1) === "." ? `${valor.slice(0, -1)},` : valor;
49
+ const punto = new RegExp(escapeRegExp("."), "g");
50
+ const sinSepMil = sepDec.replace(punto, "");
51
+ const posPuntoDec = sinSepMil.indexOf(",");
52
+ const parteDecimal = posPuntoDec >= 0 ? sinSepMil.slice(posPuntoDec) : "";
53
+ const parteEntera = posPuntoDec >= 0 ? sinSepMil.slice(0, posPuntoDec) : sinSepMil;
54
+ setValueInputCur(parteEntera + parteDecimal);
55
+ }
56
+ };
57
+ useEffect(() => {
58
+ if (value && value !== "") {
59
+ if (typeof value != "number" && value && value.includes("$")) {
60
+ setValueInputCur(value.toString());
61
+ } else {
62
+ setValueInputCur(fieldToCurrency(value.toString()));
63
+ }
64
+ } else {
65
+ setValueInputCur("");
66
+ }
67
+ }, [value]);
68
+ return /* @__PURE__ */ jsx(
69
+ Input,
70
+ {
71
+ ...props,
72
+ style: styleCurrency,
73
+ maxLength,
74
+ value: valueInputCur,
75
+ onFocus: handleInputOnFocus,
76
+ onChange: handleInputChange,
77
+ onBlur: handleInputOnBlur
78
+ }
79
+ );
80
+ };
81
+ export {
82
+ CustomInputCurrency,
83
+ CustomInputCurrency as default
84
+ };
85
+ //# sourceMappingURL=CustomInputCurrency.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomInputCurrency.js","sources":["../../src/custom-input/CustomInputCurrency.jsx"],"sourcesContent":["import { useEffect, useState } from 'react';\r\nimport { Input } from 'reactstrap';\r\nimport { fieldToCurrency } from 'siam-utils';\r\n/**\r\n * value, //admite formato como devuelve la BD (varchar), flotante o currency\r\n * al setear un valor en el componente se visualiza como Currency:\r\n * Formato $ 3.000,60\r\n * Al intentar editar el VALOR automaticamente se conviertea un numero cuyo formato es:\r\n * sin separador de miles, sin simbolo pesos ($), y la coma como separador de decimales\r\n * Formato: 3000,60\r\n * Al perder el foco el VALOR cambia a formato currency\r\n * Para el componente PADRE que lo esta usando, va a recibir desde el evento onblur un valor cuyo formato es el PERSISTENCE:\r\n * Formato: 3000.60\r\n */\r\nexport const CustomInputCurrency = (props) => {\r\n const {\r\n onChange = () => {\r\n undefined;\r\n },\r\n onFocus = () => {\r\n undefined;\r\n },\r\n value = {},\r\n maxLength = '20',\r\n style = {},\r\n } = props;\r\n const styleCurrency = { ...style, textAlign: 'right' };\r\n const [valueInputCur, setValueInputCur] = useState('');\r\n const escapeRegExp = (string) =>\r\n string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n\r\n const handleInputOnBlur = (event) => {\r\n const { target } = event;\r\n if (valueInputCur !== '') {\r\n const valor = valueInputCur.replace('.', '');\r\n const valorPersistence = valor.replace(',', '.');\r\n setValueInputCur(fieldToCurrency(valorPersistence));\r\n onChange({\r\n ...event,\r\n target: {\r\n ...target,\r\n value: valorPersistence,\r\n valueCurrency: fieldToCurrency(valorPersistence),\r\n valueFloat: parseFloat(valorPersistence),\r\n },\r\n });\r\n }\r\n };\r\n\r\n const handleInputOnFocus = (e) => {\r\n if (valueInputCur !== '') {\r\n const valor = valueInputCur.replace('$ ', '');\r\n const valor2 = valor.replace(/\\./g, '');\r\n setValueInputCur(valor2);\r\n }\r\n onFocus(e);\r\n };\r\n\r\n const handleInputChange = (event) => {\r\n const { target } = event;\r\n const valor = target.value.replace('$ ', '');\r\n const valid = /^-?[0-9.]*(?:[,]\\d?\\d?)?$/;\r\n if (valid.test(valor)) {\r\n const sepDec = valor.slice(-1) === '.' ? `${valor.slice(0, -1)},` : valor;\r\n const punto = new RegExp(escapeRegExp('.'), 'g');\r\n const sinSepMil = sepDec.replace(punto, '');\r\n const posPuntoDec = sinSepMil.indexOf(',');\r\n const parteDecimal = posPuntoDec >= 0 ? sinSepMil.slice(posPuntoDec) : '';\r\n const parteEntera =\r\n posPuntoDec >= 0 ? sinSepMil.slice(0, posPuntoDec) : sinSepMil;\r\n setValueInputCur(parteEntera + parteDecimal);\r\n }\r\n };\r\n useEffect(() => {\r\n if (value && value !== '') {\r\n if (typeof value != 'number' && value && value.includes('$')) {\r\n setValueInputCur(value.toString());\r\n } else {\r\n setValueInputCur(fieldToCurrency(value.toString()));\r\n }\r\n } else {\r\n setValueInputCur('');\r\n }\r\n }, [value]);\r\n\r\n return (\r\n <Input\r\n {...props}\r\n style={styleCurrency}\r\n maxLength={maxLength}\r\n value={valueInputCur}\r\n onFocus={handleInputOnFocus}\r\n onChange={handleInputChange}\r\n onBlur={handleInputOnBlur}\r\n />\r\n );\r\n};\r\n\r\nexport default CustomInputCurrency;\r\n"],"names":[],"mappings":";;;;AAcO,MAAM,sBAAsB,CAAC,UAAU;AAC5C,QAAM;AAAA,IACJ,WAAW,MAAM;AAAA,IAEjB;AAAA,IACA,UAAU,MAAM;AAAA,IAEhB;AAAA,IACA,QAAQ,CAAA;AAAA,IACR,YAAY;AAAA,IACZ,QAAQ,CAAA;AAAA,EAAC,IACP;AACJ,QAAM,gBAAgB,EAAE,GAAG,OAAO,WAAW,QAAA;AAC7C,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAS,EAAE;AACrD,QAAM,eAAe,CAAC,WACpB,OAAO,QAAQ,uBAAuB,MAAM;AAE9C,QAAM,oBAAoB,CAAC,UAAU;AACnC,UAAM,EAAE,WAAW;AACnB,QAAI,kBAAkB,IAAI;AACxB,YAAM,QAAQ,cAAc,QAAQ,KAAK,EAAE;AAC3C,YAAM,mBAAmB,MAAM,QAAQ,KAAK,GAAG;AAC/C,uBAAiB,gBAAgB,gBAAgB,CAAC;AAClD,eAAS;AAAA,QACP,GAAG;AAAA,QACH,QAAQ;AAAA,UACN,GAAG;AAAA,UACH,OAAO;AAAA,UACP,eAAe,gBAAgB,gBAAgB;AAAA,UAC/C,YAAY,WAAW,gBAAgB;AAAA,QAAA;AAAA,MACzC,CACD;AAAA,IACH;AAAA,EACF;AAEA,QAAM,qBAAqB,CAAC,MAAM;AAChC,QAAI,kBAAkB,IAAI;AACxB,YAAM,QAAQ,cAAc,QAAQ,MAAM,EAAE;AAC5C,YAAM,SAAS,MAAM,QAAQ,OAAO,EAAE;AACtC,uBAAiB,MAAM;AAAA,IACzB;AACA,YAAQ,CAAC;AAAA,EACX;AAEA,QAAM,oBAAoB,CAAC,UAAU;AACnC,UAAM,EAAE,WAAW;AACnB,UAAM,QAAQ,OAAO,MAAM,QAAQ,MAAM,EAAE;AAC3C,UAAM,QAAQ;AACd,QAAI,MAAM,KAAK,KAAK,GAAG;AACrB,YAAM,SAAS,MAAM,MAAM,EAAE,MAAM,MAAM,GAAG,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM;AACpE,YAAM,QAAQ,IAAI,OAAO,aAAa,GAAG,GAAG,GAAG;AAC/C,YAAM,YAAY,OAAO,QAAQ,OAAO,EAAE;AAC1C,YAAM,cAAc,UAAU,QAAQ,GAAG;AACzC,YAAM,eAAe,eAAe,IAAI,UAAU,MAAM,WAAW,IAAI;AACvE,YAAM,cACJ,eAAe,IAAI,UAAU,MAAM,GAAG,WAAW,IAAI;AACvD,uBAAiB,cAAc,YAAY;AAAA,IAC7C;AAAA,EACF;AACA,YAAU,MAAM;AACd,QAAI,SAAS,UAAU,IAAI;AACzB,UAAI,OAAO,SAAS,YAAY,SAAS,MAAM,SAAS,GAAG,GAAG;AAC5D,yBAAiB,MAAM,UAAU;AAAA,MACnC,OAAO;AACL,yBAAiB,gBAAgB,MAAM,SAAA,CAAU,CAAC;AAAA,MACpD;AAAA,IACF,OAAO;AACL,uBAAiB,EAAE;AAAA,IACrB;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAEV,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAG;AAAA,MACJ,OAAO;AAAA,MACP;AAAA,MACA,OAAO;AAAA,MACP,SAAS;AAAA,MACT,UAAU;AAAA,MACV,QAAQ;AAAA,IAAA;AAAA,EAAA;AAGd;"}
@@ -1,6 +1,7 @@
1
1
  import { CustomInputCheckbox } from "./CustomInputCheckbox.js";
2
2
  import { CustomInputRadio } from "./CustomInputRadio.js";
3
3
  import { CustomInputFile } from "./CustomInputFile.js";
4
+ import { CustomInputCurrency } from "./CustomInputCurrency.js";
4
5
  import "react/jsx-runtime";
5
6
  import "react";
6
7
  import "../node_modules/react-multi-select-component/dist/esm/index.js";
@@ -10,6 +11,7 @@ import "./multi-select/styled-component.js";
10
11
  /* empty css */
11
12
  export {
12
13
  CustomInputCheckbox,
14
+ CustomInputCurrency,
13
15
  CustomInputFile,
14
16
  CustomInputRadio
15
17
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "siam-ui-utils",
3
- "version": "3.0.4",
3
+ "version": "3.0.6",
4
4
  "keywords": [
5
5
  "ampf-react",
6
6
  "ampf-utils",