linear-react-components-ui 2.0.1-beta.0 → 2.0.1-beta.1

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.
@@ -22,9 +22,9 @@ const CurrencyField = (props) => {
22
22
  displayCurrencySymbol = true
23
23
  } = props;
24
24
  const currencyNumberInputRef = useRef(null);
25
- const isResetting = useRef(false);
26
25
  const leftElements = displayCurrencySymbol ? /* @__PURE__ */ jsx("span", { className: "currency-symbol", children: currencySymbol }) : [];
27
26
  const {
27
+ maskRef: maskRef_0,
28
28
  value: maskedValue,
29
29
  setValue: setMaskedValue,
30
30
  typedValue
@@ -42,10 +42,7 @@ const CurrencyField = (props) => {
42
42
  }, {
43
43
  ref: currencyNumberInputRef,
44
44
  onAccept: (__, maskRef, event) => {
45
- if (isResetting.current) {
46
- isResetting.current = false;
47
- return;
48
- }
45
+ if (!event) return;
49
46
  props?.onChange?.({
50
47
  ...event,
51
48
  target: {
@@ -57,7 +54,7 @@ const CurrencyField = (props) => {
57
54
  }
58
55
  });
59
56
  const handleBlur = (event_0) => {
60
- const currentValue = typedValue;
57
+ const currentValue = maskRef_0.current?.typedValue ?? typedValue;
61
58
  if (!_.isNil(min)) {
62
59
  if (_.isNil(currentValue) || _.isNaN(currentValue) || currentValue < min) {
63
60
  setMaskedValue(numberToPtBR(min) ?? _.toString(min));
@@ -82,7 +79,6 @@ const CurrencyField = (props) => {
82
79
  useEffect(() => {
83
80
  if (_.isNil(props?.value)) {
84
81
  if (maskedValue !== "") {
85
- isResetting.current = true;
86
82
  setMaskedValue("");
87
83
  }
88
84
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"Currency.js","sources":["../../../src/lib/inputs/number/Currency.tsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport _ from 'lodash';\nimport { useIMask } from 'react-imask';\nimport { ICurrencyProps } from './types';\nimport { numberToPtBR } from './format_number';\nimport InputTextBase from '../base/InputTextBase';\nimport { mergeRefs } from '../../form2/helpers';\nimport type { CustomInputEvent } from '../base/types';\n\nconst CurrencyField = (props: ICurrencyProps) => {\n const {\n inputRef = undefined, textAlign = 'left', themePopover = 'light', popoverAlign = 'left',\n min = undefined, max = undefined, allowNegative = false, scale = 2, normalizeZeros = true,\n padFractionalZeros = true, unmask = true, currencySymbol = 'R$', displayCurrencySymbol = true,\n } = props;\n const currencyNumberInputRef = useRef<HTMLInputElement | null>(null);\n const isResetting = useRef(false);\n const leftElements = displayCurrencySymbol ?\n <span className=\"currency-symbol\">{currencySymbol}</span>\n : [];\n\n const { value: maskedValue, setValue: setMaskedValue, typedValue } = useIMask({\n mask: Number,\n unmask,\n scale,\n normalizeZeros,\n padFractionalZeros,\n max,\n min: !_.isNil(min) ? min : (allowNegative ? undefined : 0),\n radix: ',',\n mapToRadix: ['.'],\n thousandsSeparator: '.',\n }, {\n ref: currencyNumberInputRef,\n onAccept: (__, maskRef, event) => {\n if (isResetting.current) {\n isResetting.current = false;\n return;\n }\n props?.onChange?.({\n ...event,\n target: {\n ...event?.target,\n name: props?.name,\n value: maskRef.typedValue as any,\n },\n } as React.ChangeEvent<HTMLInputElement>);\n },\n });\n\n /**\n * Função sobrescrevendo o evento onBlur para tratar o valor mínimo ao sair do campo, \n * garantindo que o valor não seja menor que o mínimo definido.\n */\n const handleBlur = (event: CustomInputEvent) => {\n const currentValue = typedValue as number;\n if (!_.isNil(min)) {\n if (_.isNil(currentValue) || _.isNaN(currentValue) || currentValue < min) {\n setMaskedValue(numberToPtBR(min) ?? _.toString(min));\n props?.onChange?.({\n ...event,\n target: {\n ...event?.target,\n name: props?.name,\n value: min as any,\n },\n } as CustomInputEvent);\n }\n }\n props?.onBlur?.({ \n ...event, \n target: { \n ...event?.target, \n value: currentValue as any, \n }, \n });\n };\n\n useEffect(() => {\n if (_.isNil(props?.value)) {\n if (maskedValue !== '') {\n isResetting.current = true;\n setMaskedValue('');\n }\n return;\n }\n const numericValue = typeof props.value === 'string' ? parseFloat(props.value) : props.value;\n if (!_.isEqual(typedValue, numericValue)) {\n setMaskedValue(numberToPtBR(props?.value) ?? '');\n }\n }, [props?.value]);\n\n return (\n <InputTextBase\n {...props}\n inputRef={mergeRefs(currencyNumberInputRef, inputRef) as any}\n type=\"text\"\n onChange={() => { }}\n leftElements={leftElements}\n onBlur={handleBlur}\n value={maskedValue}\n textAlign={textAlign}\n themePopover={themePopover}\n popoverAlign={popoverAlign} />\n );\n};\n\nexport default CurrencyField;\n"],"names":["CurrencyField","props","inputRef","undefined","textAlign","themePopover","popoverAlign","min","max","allowNegative","scale","normalizeZeros","padFractionalZeros","unmask","currencySymbol","displayCurrencySymbol","currencyNumberInputRef","useRef","isResetting","leftElements","value","maskedValue","setValue","setMaskedValue","typedValue","useIMask","mask","Number","_","isNil","radix","mapToRadix","thousandsSeparator","ref","onAccept","__","maskRef","event","current","onChange","target","name","handleBlur","currentValue","isNaN","numberToPtBR","toString","onBlur","useEffect","numericValue","parseFloat","isEqual","mergeRefs"],"mappings":"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"}
1
+ {"version":3,"file":"Currency.js","sources":["../../../src/lib/inputs/number/Currency.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport _ from 'lodash';\nimport { useIMask } from 'react-imask';\nimport { ICurrencyProps } from './types';\nimport { numberToPtBR } from './format_number';\nimport InputTextBase from '../base/InputTextBase';\nimport { mergeRefs } from '../../form2/helpers';\nimport type { CustomInputEvent } from '../base/types';\n\nconst CurrencyField = (props: ICurrencyProps) => {\n const {\n inputRef = undefined, textAlign = 'left', themePopover = 'light', popoverAlign = 'left',\n min = undefined, max = undefined, allowNegative = false, scale = 2, normalizeZeros = true,\n padFractionalZeros = true, unmask = true, currencySymbol = 'R$', displayCurrencySymbol = true,\n } = props;\n const currencyNumberInputRef = useRef<HTMLInputElement | null>(null);\n const leftElements = displayCurrencySymbol ?\n <span className=\"currency-symbol\">{currencySymbol}</span>\n : [];\n\n const { maskRef, value: maskedValue, setValue: setMaskedValue, typedValue } = useIMask({\n mask: Number,\n unmask,\n scale,\n normalizeZeros,\n padFractionalZeros,\n max,\n min: !_.isNil(min) ? min : (allowNegative ? undefined : 0),\n radix: ',',\n mapToRadix: ['.'],\n thousandsSeparator: '.',\n }, {\n ref: currencyNumberInputRef,\n onAccept: (__, maskRef, event) => {\n if (!event) return;\n props?.onChange?.({\n ...event,\n target: {\n ...event?.target,\n name: props?.name,\n value: maskRef.typedValue as any,\n },\n } as CustomInputEvent);\n },\n });\n\n /**\n * Função sobrescrevendo o evento onBlur para tratar o valor mínimo ao sair do campo, \n * garantindo que o valor não seja menor que o mínimo definido.\n */\n const handleBlur = (event: CustomInputEvent) => {\n const currentValue = (maskRef.current?.typedValue ?? typedValue) as number;\n if (!_.isNil(min)) {\n if (_.isNil(currentValue) || _.isNaN(currentValue) || currentValue < min) {\n setMaskedValue(numberToPtBR(min) ?? _.toString(min));\n props?.onChange?.({\n ...event,\n target: {\n ...event?.target,\n name: props?.name,\n value: min as any,\n },\n } as CustomInputEvent);\n }\n }\n props?.onBlur?.({ \n ...event, \n target: { \n ...event?.target, \n value: currentValue as any, \n }, \n });\n };\n\n useEffect(() => {\n if (_.isNil(props?.value)) {\n if (maskedValue !== '') {\n setMaskedValue('');\n }\n return;\n }\n const numericValue = typeof props.value === 'string' ? parseFloat(props.value) : props.value;\n if (!_.isEqual(typedValue, numericValue)) {\n setMaskedValue(numberToPtBR(props?.value) ?? '');\n }\n }, [props?.value]);\n\n return (\n <InputTextBase\n {...props}\n inputRef={mergeRefs(currencyNumberInputRef, inputRef) as any}\n type=\"text\"\n onChange={() => { }}\n leftElements={leftElements}\n onBlur={handleBlur}\n value={maskedValue}\n textAlign={textAlign}\n themePopover={themePopover}\n popoverAlign={popoverAlign} />\n );\n};\n\nexport default CurrencyField;\n"],"names":["CurrencyField","props","inputRef","undefined","textAlign","themePopover","popoverAlign","min","max","allowNegative","scale","normalizeZeros","padFractionalZeros","unmask","currencySymbol","displayCurrencySymbol","currencyNumberInputRef","useRef","leftElements","maskRef","value","maskedValue","setValue","setMaskedValue","typedValue","useIMask","mask","Number","_","isNil","radix","mapToRadix","thousandsSeparator","ref","onAccept","__","event","onChange","target","name","handleBlur","currentValue","current","isNaN","numberToPtBR","toString","onBlur","useEffect","numericValue","parseFloat","isEqual","mergeRefs"],"mappings":"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"}
@@ -20,8 +20,8 @@ const DecimalField = (props) => {
20
20
  inputRef = void 0
21
21
  } = props;
22
22
  const decimalNumberInputRef = useRef(null);
23
- const isResetting = useRef(false);
24
23
  const {
24
+ maskRef: maskRef_0,
25
25
  value: maskedValue,
26
26
  setValue: setMaskedValue,
27
27
  typedValue
@@ -39,10 +39,7 @@ const DecimalField = (props) => {
39
39
  }, {
40
40
  ref: decimalNumberInputRef,
41
41
  onAccept: (__, maskRef, event) => {
42
- if (isResetting.current) {
43
- isResetting.current = false;
44
- return;
45
- }
42
+ if (!event) return;
46
43
  props?.onChange?.({
47
44
  ...event,
48
45
  target: {
@@ -54,7 +51,7 @@ const DecimalField = (props) => {
54
51
  }
55
52
  });
56
53
  const handleBlur = (event_0) => {
57
- const currentValue = typedValue;
54
+ const currentValue = maskRef_0.current?.typedValue ?? typedValue;
58
55
  if (!_.isNil(min)) {
59
56
  if (_.isNil(currentValue) || _.isNaN(currentValue) || currentValue < min) {
60
57
  setMaskedValue(numberToPtBR(min) ?? _.toString(min));
@@ -79,7 +76,6 @@ const DecimalField = (props) => {
79
76
  useEffect(() => {
80
77
  if (_.isNil(props?.value)) {
81
78
  if (maskedValue !== "") {
82
- isResetting.current = true;
83
79
  setMaskedValue("");
84
80
  }
85
81
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"Decimal.js","sources":["../../../src/lib/inputs/number/Decimal.tsx"],"sourcesContent":["import _ from 'lodash';\nimport React, { useEffect, useRef } from 'react';\nimport { useIMask } from 'react-imask';\nimport { IDecimalProps } from './types';\nimport { numberToPtBR } from './format_number';\nimport InputTextBase from '../base/InputTextBase';\nimport type { CustomInputEvent } from '../base/types';\nimport { mergeRefs } from '../../form2/helpers';\n\nconst DecimalField = (props: IDecimalProps) => {\n const {\n textAlign = 'left', themePopover = 'light', popoverAlign = 'left', min = undefined,\n max = undefined, allowNegative = false, scale = 2, normalizeZeros = true,\n padFractionalZeros = true, unmask = true, inputRef = undefined,\n } = props;\n const decimalNumberInputRef = useRef<HTMLInputElement | null>(null);\n const isResetting = useRef(false);\n\n const { value: maskedValue, setValue: setMaskedValue, typedValue } = useIMask({\n mask: Number,\n unmask,\n scale,\n normalizeZeros,\n padFractionalZeros,\n max,\n min: !_.isNil(min) ? min : (allowNegative ? undefined : 0),\n radix: ',',\n mapToRadix: ['.'],\n thousandsSeparator: '.',\n }, {\n ref: decimalNumberInputRef,\n onAccept: (__, maskRef, event) => {\n if (isResetting.current) {\n isResetting.current = false;\n return;\n }\n props?.onChange?.({\n ...event,\n target: {\n ...event?.target,\n name: props?.name,\n value: maskRef.typedValue as any,\n },\n } as React.ChangeEvent<HTMLInputElement>);\n },\n });\n\n /**\n * Função sobrescrevendo o evento onBlur para tratar o valor mínimo ao sair do campo, \n * garantindo que o valor não seja menor que o mínimo definido.\n */\n const handleBlur = (event: CustomInputEvent) => {\n const currentValue = typedValue as number;\n if (!_.isNil(min)) {\n if (_.isNil(currentValue) || _.isNaN(currentValue) || currentValue < min) {\n setMaskedValue(numberToPtBR(min) ?? _.toString(min));\n props?.onChange?.({\n ...event,\n target: {\n ...event?.target,\n name: props?.name,\n value: min as any,\n },\n } as CustomInputEvent);\n }\n }\n props?.onBlur?.({ \n ...event, \n target: { \n ...event?.target, \n value: currentValue as any, \n }, \n });\n };\n\n useEffect(() => {\n if (_.isNil(props?.value)) {\n if (maskedValue !== '') {\n isResetting.current = true;\n setMaskedValue('');\n }\n return;\n }\n const numericValue = typeof props.value === 'string' ? parseFloat(props.value) : props.value;\n if (!_.isEqual(typedValue, numericValue)) {\n setMaskedValue(numberToPtBR(props?.value) ?? '');\n }\n }, [props?.value]);\n\n return (\n <InputTextBase\n {...props}\n inputRef={mergeRefs(decimalNumberInputRef, inputRef) as any}\n type=\"text\"\n onChange={() => { }}\n onBlur={handleBlur}\n value={maskedValue}\n textAlign={textAlign}\n themePopover={themePopover}\n popoverAlign={popoverAlign} />\n );\n};\n\nexport default DecimalField;\n"],"names":["DecimalField","props","textAlign","themePopover","popoverAlign","min","undefined","max","allowNegative","scale","normalizeZeros","padFractionalZeros","unmask","inputRef","decimalNumberInputRef","useRef","isResetting","value","maskedValue","setValue","setMaskedValue","typedValue","useIMask","mask","Number","_","isNil","radix","mapToRadix","thousandsSeparator","ref","onAccept","__","maskRef","event","current","onChange","target","name","handleBlur","currentValue","isNaN","numberToPtBR","toString","onBlur","useEffect","numericValue","parseFloat","isEqual","mergeRefs"],"mappings":";;;;;;;AASA,MAAMA,eAAeA,CAACC,UAAyB;AAC7C,QAAM;AAAA,IACJC,YAAY;AAAA,IAAQC,eAAe;AAAA,IAASC,eAAe;AAAA,IAAQC,MAAMC;AAAAA,IACzEC,MAAMD;AAAAA,IAAWE,gBAAgB;AAAA,IAAOC,QAAQ;AAAA,IAAGC,iBAAiB;AAAA,IACpEC,qBAAqB;AAAA,IAAMC,SAAS;AAAA,IAAMC,WAAWP;AAAAA,EAAAA,IACnDL;AACJ,QAAMa,wBAAwBC,OAAgC,IAAI;AAClE,QAAMC,cAAcD,OAAO,KAAK;AAEhC,QAAM;AAAA,IAAEE,OAAOC;AAAAA,IAAaC,UAAUC;AAAAA,IAAgBC;AAAAA,EAAAA,IAAeC,SAAS;AAAA,IAC5EC,MAAMC;AAAAA,IACNZ;AAAAA,IACAH;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAJ;AAAAA,IACAF,KAAK,CAACoB,EAAEC,MAAMrB,GAAG,IAAIA,MAAOG,gBAAgBF,SAAY;AAAA,IACxDqB,OAAO;AAAA,IACPC,YAAY,CAAC,GAAG;AAAA,IAChBC,oBAAoB;AAAA,EAAA,GACnB;AAAA,IACDC,KAAKhB;AAAAA,IACLiB,UAAUA,CAACC,IAAIC,SAASC,UAAU;AAChC,UAAIlB,YAAYmB,SAAS;AACvBnB,oBAAYmB,UAAU;AACtB;AAAA,MACF;AACAlC,aAAOmC,WAAW;AAAA,QAChB,GAAGF;AAAAA,QACHG,QAAQ;AAAA,UACN,GAAGH,OAAOG;AAAAA,UACVC,MAAMrC,OAAOqC;AAAAA,UACbrB,OAAOgB,QAAQZ;AAAAA,QAAAA;AAAAA,MACjB,CACsC;AAAA,IAC1C;AAAA,EAAA,CACD;AAMD,QAAMkB,aAAaA,CAACL,YAA4B;AAC9C,UAAMM,eAAenB;AACrB,QAAI,CAACI,EAAEC,MAAMrB,GAAG,GAAG;AACjB,UAAIoB,EAAEC,MAAMc,YAAY,KAAKf,EAAEgB,MAAMD,YAAY,KAAKA,eAAenC,KAAK;AACxEe,uBAAesB,aAAarC,GAAG,KAAKoB,EAAEkB,SAAStC,GAAG,CAAC;AACnDJ,eAAOmC,WAAW;AAAA,UAChB,GAAGF;AAAAA,UACHG,QAAQ;AAAA,YACN,GAAGH,SAAOG;AAAAA,YACVC,MAAMrC,OAAOqC;AAAAA,YACbrB,OAAOZ;AAAAA,UAAAA;AAAAA,QACT,CACmB;AAAA,MACvB;AAAA,IACF;AACAJ,WAAO2C,SAAS;AAAA,MACd,GAAGV;AAAAA,MACHG,QAAQ;AAAA,QACN,GAAGH,SAAOG;AAAAA,QACVpB,OAAOuB;AAAAA,MAAAA;AAAAA,IACT,CACD;AAAA,EACH;AAEAK,YAAU,MAAM;AACd,QAAIpB,EAAEC,MAAMzB,OAAOgB,KAAK,GAAG;AACzB,UAAIC,gBAAgB,IAAI;AACtBF,oBAAYmB,UAAU;AACtBf,uBAAe,EAAE;AAAA,MACnB;AACA;AAAA,IACF;AACA,UAAM0B,eAAe,OAAO7C,MAAMgB,UAAU,WAAW8B,WAAW9C,MAAMgB,KAAK,IAAIhB,MAAMgB;AACvF,QAAI,CAACQ,EAAEuB,QAAQ3B,YAAYyB,YAAY,GAAG;AACxC1B,qBAAesB,aAAazC,OAAOgB,KAAK,KAAK,EAAE;AAAA,IACjD;AAAA,EACF,GAAG,CAAChB,OAAOgB,KAAK,CAAC;AAEjB,SACE,oBAAC,eAAA,EACC,GAAIhB,OACJ,UAAUgD,UAAUnC,uBAAuBD,QAAQ,GACnD,MAAK,QACL,UAAU,MAAM;AAAA,EAAE,GAClB,QAAQ0B,YACR,OAAOrB,aACP,WACA,cACA,cAA2B;AAEjC;"}
1
+ {"version":3,"file":"Decimal.js","sources":["../../../src/lib/inputs/number/Decimal.tsx"],"sourcesContent":["import _ from 'lodash';\nimport { useEffect, useRef } from 'react';\nimport { useIMask } from 'react-imask';\nimport { IDecimalProps } from './types';\nimport { numberToPtBR } from './format_number';\nimport InputTextBase from '../base/InputTextBase';\nimport type { CustomInputEvent } from '../base/types';\nimport { mergeRefs } from '../../form2/helpers';\n\nconst DecimalField = (props: IDecimalProps) => {\n const {\n textAlign = 'left', themePopover = 'light', popoverAlign = 'left', min = undefined,\n max = undefined, allowNegative = false, scale = 2, normalizeZeros = true,\n padFractionalZeros = true, unmask = true, inputRef = undefined,\n } = props;\n const decimalNumberInputRef = useRef<HTMLInputElement | null>(null);\n\n const { maskRef, value: maskedValue, setValue: setMaskedValue, typedValue } = useIMask({\n mask: Number,\n unmask,\n scale,\n normalizeZeros,\n padFractionalZeros,\n max,\n min: !_.isNil(min) ? min : (allowNegative ? undefined : 0),\n radix: ',',\n mapToRadix: ['.'],\n thousandsSeparator: '.',\n }, {\n ref: decimalNumberInputRef,\n onAccept: (__, maskRef, event) => {\n if (!event) return;\n props?.onChange?.({\n ...event,\n target: {\n ...event?.target,\n name: props?.name,\n value: maskRef.typedValue as any,\n },\n } as CustomInputEvent);\n },\n });\n\n /**\n * Função sobrescrevendo o evento onBlur para tratar o valor mínimo ao sair do campo, \n * garantindo que o valor não seja menor que o mínimo definido.\n */\n const handleBlur = (event: CustomInputEvent) => {\n const currentValue = (maskRef.current?.typedValue ?? typedValue) as number;\n if (!_.isNil(min)) {\n if (_.isNil(currentValue) || _.isNaN(currentValue) || currentValue < min) {\n setMaskedValue(numberToPtBR(min) ?? _.toString(min));\n props?.onChange?.({\n ...event,\n target: {\n ...event?.target,\n name: props?.name,\n value: min as any,\n },\n } as CustomInputEvent);\n }\n }\n props?.onBlur?.({ \n ...event, \n target: { \n ...event?.target, \n value: currentValue as any, \n }, \n });\n };\n\n useEffect(() => {\n if (_.isNil(props?.value)) {\n if (maskedValue !== '') {\n setMaskedValue('');\n }\n return;\n }\n const numericValue = typeof props.value === 'string' ? parseFloat(props.value) : props.value;\n if (!_.isEqual(typedValue, numericValue)) {\n setMaskedValue(numberToPtBR(props?.value) ?? '');\n }\n }, [props?.value]);\n\n return (\n <InputTextBase\n {...props}\n inputRef={mergeRefs(decimalNumberInputRef, inputRef) as any}\n type=\"text\"\n onChange={() => { }}\n onBlur={handleBlur}\n value={maskedValue}\n textAlign={textAlign}\n themePopover={themePopover}\n popoverAlign={popoverAlign} />\n );\n};\n\nexport default DecimalField;\n"],"names":["DecimalField","props","textAlign","themePopover","popoverAlign","min","undefined","max","allowNegative","scale","normalizeZeros","padFractionalZeros","unmask","inputRef","decimalNumberInputRef","useRef","maskRef","value","maskedValue","setValue","setMaskedValue","typedValue","useIMask","mask","Number","_","isNil","radix","mapToRadix","thousandsSeparator","ref","onAccept","__","event","onChange","target","name","handleBlur","currentValue","current","isNaN","numberToPtBR","toString","onBlur","useEffect","numericValue","parseFloat","isEqual","mergeRefs"],"mappings":";;;;;;;AASA,MAAMA,eAAeA,CAACC,UAAyB;AAC7C,QAAM;AAAA,IACJC,YAAY;AAAA,IAAQC,eAAe;AAAA,IAASC,eAAe;AAAA,IAAQC,MAAMC;AAAAA,IACzEC,MAAMD;AAAAA,IAAWE,gBAAgB;AAAA,IAAOC,QAAQ;AAAA,IAAGC,iBAAiB;AAAA,IACpEC,qBAAqB;AAAA,IAAMC,SAAS;AAAA,IAAMC,WAAWP;AAAAA,EAAAA,IACnDL;AACJ,QAAMa,wBAAwBC,OAAgC,IAAI;AAElE,QAAM;AAAA,IAAEC,SAAAA;AAAAA,IAASC,OAAOC;AAAAA,IAAaC,UAAUC;AAAAA,IAAgBC;AAAAA,EAAAA,IAAeC,SAAS;AAAA,IACrFC,MAAMC;AAAAA,IACNZ;AAAAA,IACAH;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAJ;AAAAA,IACAF,KAAK,CAACoB,EAAEC,MAAMrB,GAAG,IAAIA,MAAOG,gBAAgBF,SAAY;AAAA,IACxDqB,OAAO;AAAA,IACPC,YAAY,CAAC,GAAG;AAAA,IAChBC,oBAAoB;AAAA,EAAA,GACnB;AAAA,IACDC,KAAKhB;AAAAA,IACLiB,UAAUA,CAACC,IAAIhB,SAASiB,UAAU;AAChC,UAAI,CAACA,MAAO;AACZhC,aAAOiC,WAAW;AAAA,QAChB,GAAGD;AAAAA,QACHE,QAAQ;AAAA,UACN,GAAGF,OAAOE;AAAAA,UACVC,MAAMnC,OAAOmC;AAAAA,UACbnB,OAAOD,QAAQK;AAAAA,QAAAA;AAAAA,MACjB,CACmB;AAAA,IACvB;AAAA,EAAA,CACD;AAMD,QAAMgB,aAAaA,CAACJ,YAA4B;AAC9C,UAAMK,eAAgBtB,UAAQuB,SAASlB,cAAcA;AACrD,QAAI,CAACI,EAAEC,MAAMrB,GAAG,GAAG;AACjB,UAAIoB,EAAEC,MAAMY,YAAY,KAAKb,EAAEe,MAAMF,YAAY,KAAKA,eAAejC,KAAK;AACxEe,uBAAeqB,aAAapC,GAAG,KAAKoB,EAAEiB,SAASrC,GAAG,CAAC;AACnDJ,eAAOiC,WAAW;AAAA,UAChB,GAAGD;AAAAA,UACHE,QAAQ;AAAA,YACN,GAAGF,SAAOE;AAAAA,YACVC,MAAMnC,OAAOmC;AAAAA,YACbnB,OAAOZ;AAAAA,UAAAA;AAAAA,QACT,CACmB;AAAA,MACvB;AAAA,IACF;AACAJ,WAAO0C,SAAS;AAAA,MACd,GAAGV;AAAAA,MACHE,QAAQ;AAAA,QACN,GAAGF,SAAOE;AAAAA,QACVlB,OAAOqB;AAAAA,MAAAA;AAAAA,IACT,CACD;AAAA,EACH;AAEAM,YAAU,MAAM;AACd,QAAInB,EAAEC,MAAMzB,OAAOgB,KAAK,GAAG;AACzB,UAAIC,gBAAgB,IAAI;AACtBE,uBAAe,EAAE;AAAA,MACnB;AACA;AAAA,IACF;AACA,UAAMyB,eAAe,OAAO5C,MAAMgB,UAAU,WAAW6B,WAAW7C,MAAMgB,KAAK,IAAIhB,MAAMgB;AACvF,QAAI,CAACQ,EAAEsB,QAAQ1B,YAAYwB,YAAY,GAAG;AACxCzB,qBAAeqB,aAAaxC,OAAOgB,KAAK,KAAK,EAAE;AAAA,IACjD;AAAA,EACF,GAAG,CAAChB,OAAOgB,KAAK,CAAC;AAEjB,SACE,oBAAC,eAAA,EACC,GAAIhB,OACJ,UAAU+C,UAAUlC,uBAAuBD,QAAQ,GACnD,MAAK,QACL,UAAU,MAAM;AAAA,EAAE,GAClB,QAAQwB,YACR,OAAOnB,aACP,WACA,cACA,cAA2B;AAEjC;"}
@@ -0,0 +1,13 @@
1
+ import { INumberFieldProps } from '../types';
2
+ /**
3
+ * NumberFieldBeta - Versao alternativa do NumberField que utiliza a API imperativa
4
+ * do IMask diretamente, sem o hook useIMask do react-imask.
5
+ *
6
+ * Vantagens:
7
+ * - Controle total do ciclo de vida da mascara
8
+ * - onChange/onBlur disparam SOMENTE por interacao do usuario
9
+ * - Sem disparos espurios na inicializacao ou sincronizacao programatica
10
+ * - Sem problemas de closure stale (leitura direta do maskRef)
11
+ */
12
+ declare const NumberFieldBeta: (props: INumberFieldProps) => import("react/jsx-runtime").JSX.Element;
13
+ export default NumberFieldBeta;
@@ -17,8 +17,8 @@ const NumberField = (props) => {
17
17
  inputRef = void 0
18
18
  } = props;
19
19
  const numberInputRef = useRef(null);
20
- const isResetting = useRef(false);
21
20
  const {
21
+ maskRef: maskRef_0,
22
22
  value: maskedValue,
23
23
  setValue: setMaskedValue,
24
24
  typedValue
@@ -35,10 +35,7 @@ const NumberField = (props) => {
35
35
  }, {
36
36
  ref: numberInputRef,
37
37
  onAccept: (__, maskRef, event) => {
38
- if (isResetting.current) {
39
- isResetting.current = false;
40
- return;
41
- }
38
+ if (!event) return;
42
39
  props?.onChange?.({
43
40
  ...event,
44
41
  target: {
@@ -50,7 +47,7 @@ const NumberField = (props) => {
50
47
  }
51
48
  });
52
49
  const handleBlur = (event_0) => {
53
- const currentValue = typedValue;
50
+ const currentValue = maskRef_0.current?.typedValue ?? typedValue;
54
51
  if (!_.isNil(min)) {
55
52
  if (_.isNil(currentValue) || _.isNaN(currentValue) || currentValue < min) {
56
53
  setMaskedValue(_.toString(min));
@@ -75,7 +72,6 @@ const NumberField = (props) => {
75
72
  useEffect(() => {
76
73
  if (_.isNil(props?.value)) {
77
74
  if (maskedValue !== "") {
78
- isResetting.current = true;
79
75
  setMaskedValue("");
80
76
  }
81
77
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/lib/inputs/number/index.tsx"],"sourcesContent":["import '../../assets/styles/numbers.scss';\n\nimport React, { useEffect, useRef } from 'react';\nimport _ from 'lodash';\nimport { useIMask } from 'react-imask';\nimport DecimalField from './Decimal';\nimport CurrencyField from './Currency';\nimport { INumberFieldProps } from './types';\nimport InputTextBase from '../base/InputTextBase';\nimport { CustomInputEvent } from '../base/types';\nimport { mergeRefs } from '../../form2/helpers';\n\nconst NumberField = (props: INumberFieldProps) => {\n const {\n textAlign = 'left', themePopover = 'light', popoverAlign = 'left', min = undefined, \n max = undefined, inputRef = undefined,\n } = props;\n const numberInputRef = useRef<HTMLInputElement | null>(null);\n const isResetting = useRef(false);\n\n const { value: maskedValue, setValue: setMaskedValue, typedValue } = useIMask({\n mask: Number,\n max,\n min,\n scale: 0,\n enum: undefined,\n to: undefined,\n from: undefined,\n normalizeZeros: true,\n padFractionalZeros: false,\n }, {\n ref: numberInputRef,\n onAccept: (__, maskRef, event) => {\n if (isResetting.current) {\n isResetting.current = false;\n return;\n }\n props?.onChange?.({\n ...event,\n target: {\n ...event?.target,\n name: props?.name,\n value: maskRef.typedValue as any,\n },\n } as CustomInputEvent);\n },\n });\n\n /**\n * Função sobrescrevendo o evento onBlur para tratar o valor mínimo ao sair do campo, \n * garantindo que o valor não seja menor que o mínimo definido.\n */\n const handleBlur = (event: CustomInputEvent) => {\n const currentValue = typedValue as number;\n if (!_.isNil(min)) {\n if (_.isNil(currentValue) || _.isNaN(currentValue) || currentValue < min) {\n setMaskedValue(_.toString(min));\n props?.onChange?.({\n ...event,\n target: {\n ...event?.target,\n name: props?.name,\n value: min as any,\n },\n } as CustomInputEvent);\n }\n }\n props?.onBlur?.({ \n ...event, \n target: { \n ...event?.target, \n value: currentValue as any, \n }, \n });\n };\n\n useEffect(() => {\n if (_.isNil(props?.value)) {\n if (maskedValue !== '') {\n isResetting.current = true;\n setMaskedValue('');\n }\n return;\n }\n const numericValue = typeof props.value === 'string' ? Number(props.value) : props.value;\n if (!_.isEqual(typedValue, numericValue)) {\n setMaskedValue(_.toString(props?.value));\n }\n }, [props?.value]);\n\n return (\n <InputTextBase\n {...props}\n inputRef={mergeRefs(numberInputRef, inputRef) as any}\n type=\"number\"\n onChange={() => {}}\n onBlur={handleBlur}\n value={maskedValue}\n textAlign={textAlign}\n themePopover={themePopover}\n popoverAlign={popoverAlign} />\n );\n};\n\nexport default NumberField;\nexport {\n CurrencyField,\n DecimalField,\n};\n"],"names":["NumberField","props","textAlign","themePopover","popoverAlign","min","undefined","max","inputRef","numberInputRef","useRef","isResetting","value","maskedValue","setValue","setMaskedValue","typedValue","useIMask","mask","Number","scale","enum","to","from","normalizeZeros","padFractionalZeros","ref","onAccept","__","maskRef","event","current","onChange","target","name","handleBlur","currentValue","_","isNil","isNaN","toString","onBlur","useEffect","numericValue","isEqual","mergeRefs"],"mappings":";;;;;;;;;AAYA,MAAMA,cAAcA,CAACC,UAA6B;AAChD,QAAM;AAAA,IACJC,YAAY;AAAA,IAAQC,eAAe;AAAA,IAASC,eAAe;AAAA,IAAQC,MAAMC;AAAAA,IACzEC,MAAMD;AAAAA,IAAWE,WAAWF;AAAAA,EAAAA,IAC1BL;AACJ,QAAMQ,iBAAiBC,OAAgC,IAAI;AAC3D,QAAMC,cAAcD,OAAO,KAAK;AAEhC,QAAM;AAAA,IAAEE,OAAOC;AAAAA,IAAaC,UAAUC;AAAAA,IAAgBC;AAAAA,EAAAA,IAAeC,SAAS;AAAA,IAC5EC,MAAMC;AAAAA,IACNZ;AAAAA,IACAF;AAAAA,IACAe,OAAO;AAAA,IACPC,MAAMf;AAAAA,IACNgB,IAAIhB;AAAAA,IACJiB,MAAMjB;AAAAA,IACNkB,gBAAgB;AAAA,IAChBC,oBAAoB;AAAA,EAAA,GACnB;AAAA,IACDC,KAAKjB;AAAAA,IACLkB,UAAUA,CAACC,IAAIC,SAASC,UAAU;AAChC,UAAInB,YAAYoB,SAAS;AACvBpB,oBAAYoB,UAAU;AACtB;AAAA,MACF;AACA9B,aAAO+B,WAAW;AAAA,QAChB,GAAGF;AAAAA,QACHG,QAAQ;AAAA,UACN,GAAGH,OAAOG;AAAAA,UACVC,MAAMjC,OAAOiC;AAAAA,UACbtB,OAAOiB,QAAQb;AAAAA,QAAAA;AAAAA,MACjB,CACmB;AAAA,IACvB;AAAA,EAAA,CACD;AAMD,QAAMmB,aAAaA,CAACL,YAA4B;AAC9C,UAAMM,eAAepB;AACrB,QAAI,CAACqB,EAAEC,MAAMjC,GAAG,GAAG;AACjB,UAAIgC,EAAEC,MAAMF,YAAY,KAAKC,EAAEE,MAAMH,YAAY,KAAKA,eAAe/B,KAAK;AACxEU,uBAAesB,EAAEG,SAASnC,GAAG,CAAC;AAC9BJ,eAAO+B,WAAW;AAAA,UAChB,GAAGF;AAAAA,UACHG,QAAQ;AAAA,YACN,GAAGH,SAAOG;AAAAA,YACVC,MAAMjC,OAAOiC;AAAAA,YACbtB,OAAOP;AAAAA,UAAAA;AAAAA,QACT,CACmB;AAAA,MACvB;AAAA,IACF;AACAJ,WAAOwC,SAAS;AAAA,MACd,GAAGX;AAAAA,MACHG,QAAQ;AAAA,QACN,GAAGH,SAAOG;AAAAA,QACVrB,OAAOwB;AAAAA,MAAAA;AAAAA,IACT,CACD;AAAA,EACH;AAEAM,YAAU,MAAM;AACd,QAAIL,EAAEC,MAAMrC,OAAOW,KAAK,GAAG;AACzB,UAAIC,gBAAgB,IAAI;AACtBF,oBAAYoB,UAAU;AACtBhB,uBAAe,EAAE;AAAA,MACnB;AACA;AAAA,IACF;AACA,UAAM4B,eAAe,OAAO1C,MAAMW,UAAU,WAAWO,OAAOlB,MAAMW,KAAK,IAAIX,MAAMW;AACnF,QAAI,CAACyB,EAAEO,QAAQ5B,YAAY2B,YAAY,GAAG;AACxC5B,qBAAesB,EAAEG,SAASvC,OAAOW,KAAK,CAAC;AAAA,IACzC;AAAA,EACF,GAAG,CAACX,OAAOW,KAAK,CAAC;AAEjB,SACE,oBAAC,eAAA,EACC,GAAIX,OACJ,UAAU4C,UAAUpC,gBAAgBD,QAAQ,GAC5C,MAAK,UACL,UAAU,MAAM;AAAA,EAAC,GACjB,QAAQ2B,YACR,OAAOtB,aACP,WACA,cACA,cAA2B;AAEjC;"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/lib/inputs/number/index.tsx"],"sourcesContent":["import '../../assets/styles/numbers.scss';\n\nimport { useEffect, useRef } from 'react';\nimport _ from 'lodash';\nimport { useIMask } from 'react-imask';\nimport DecimalField from './Decimal';\nimport CurrencyField from './Currency';\nimport { INumberFieldProps } from './types';\nimport InputTextBase from '../base/InputTextBase';\nimport { CustomInputEvent } from '../base/types';\nimport { mergeRefs } from '../../form2/helpers';\n\nconst NumberField = (props: INumberFieldProps) => {\n const {\n textAlign = 'left', themePopover = 'light', popoverAlign = 'left', min = undefined, \n max = undefined, inputRef = undefined,\n } = props;\n const numberInputRef = useRef<HTMLInputElement | null>(null);\n\n const { maskRef, value: maskedValue, setValue: setMaskedValue, typedValue } = useIMask({\n mask: Number,\n max,\n min,\n scale: 0,\n enum: undefined,\n to: undefined,\n from: undefined,\n normalizeZeros: true,\n padFractionalZeros: false,\n }, {\n ref: numberInputRef,\n onAccept: (__, maskRef, event) => {\n if (!event) return;\n props?.onChange?.({\n ...event,\n target: {\n ...event?.target,\n name: props?.name,\n value: maskRef.typedValue as any,\n },\n } as CustomInputEvent);\n },\n });\n\n /**\n * Função sobrescrevendo o evento onBlur para tratar o valor mínimo ao sair do campo, \n * garantindo que o valor não seja menor que o mínimo definido.\n */\n const handleBlur = (event: CustomInputEvent) => {\n const currentValue = (maskRef.current?.typedValue ?? typedValue) as number;\n if (!_.isNil(min)) {\n if (_.isNil(currentValue) || _.isNaN(currentValue) || currentValue < min) {\n setMaskedValue(_.toString(min));\n props?.onChange?.({\n ...event,\n target: {\n ...event?.target,\n name: props?.name,\n value: min as any,\n },\n } as CustomInputEvent);\n }\n }\n props?.onBlur?.({ \n ...event, \n target: { \n ...event?.target, \n value: currentValue as any, \n }, \n });\n };\n\n useEffect(() => {\n if (_.isNil(props?.value)) {\n if (maskedValue !== '') {\n setMaskedValue('');\n }\n return;\n }\n const numericValue = typeof props.value === 'string' ? Number(props.value) : props.value;\n if (!_.isEqual(typedValue, numericValue)) {\n setMaskedValue(_.toString(props?.value));\n }\n }, [props?.value]);\n\n return (\n <InputTextBase\n {...props}\n inputRef={mergeRefs(numberInputRef, inputRef) as any}\n type=\"number\"\n onChange={() => {}}\n onBlur={handleBlur}\n value={maskedValue}\n textAlign={textAlign}\n themePopover={themePopover}\n popoverAlign={popoverAlign} />\n );\n};\n\nexport default NumberField;\nexport {\n CurrencyField,\n DecimalField,\n};\n"],"names":["NumberField","props","textAlign","themePopover","popoverAlign","min","undefined","max","inputRef","numberInputRef","useRef","maskRef","value","maskedValue","setValue","setMaskedValue","typedValue","useIMask","mask","Number","scale","enum","to","from","normalizeZeros","padFractionalZeros","ref","onAccept","__","event","onChange","target","name","handleBlur","currentValue","current","_","isNil","isNaN","toString","onBlur","useEffect","numericValue","isEqual","mergeRefs"],"mappings":";;;;;;;;;AAYA,MAAMA,cAAcA,CAACC,UAA6B;AAChD,QAAM;AAAA,IACJC,YAAY;AAAA,IAAQC,eAAe;AAAA,IAASC,eAAe;AAAA,IAAQC,MAAMC;AAAAA,IACzEC,MAAMD;AAAAA,IAAWE,WAAWF;AAAAA,EAAAA,IAC1BL;AACJ,QAAMQ,iBAAiBC,OAAgC,IAAI;AAE3D,QAAM;AAAA,IAAEC,SAAAA;AAAAA,IAASC,OAAOC;AAAAA,IAAaC,UAAUC;AAAAA,IAAgBC;AAAAA,EAAAA,IAAeC,SAAS;AAAA,IACrFC,MAAMC;AAAAA,IACNZ;AAAAA,IACAF;AAAAA,IACAe,OAAO;AAAA,IACPC,MAAMf;AAAAA,IACNgB,IAAIhB;AAAAA,IACJiB,MAAMjB;AAAAA,IACNkB,gBAAgB;AAAA,IAChBC,oBAAoB;AAAA,EAAA,GACnB;AAAA,IACDC,KAAKjB;AAAAA,IACLkB,UAAUA,CAACC,IAAIjB,SAASkB,UAAU;AAChC,UAAI,CAACA,MAAO;AACZ5B,aAAO6B,WAAW;AAAA,QAChB,GAAGD;AAAAA,QACHE,QAAQ;AAAA,UACN,GAAGF,OAAOE;AAAAA,UACVC,MAAM/B,OAAO+B;AAAAA,UACbpB,OAAOD,QAAQK;AAAAA,QAAAA;AAAAA,MACjB,CACmB;AAAA,IACvB;AAAA,EAAA,CACD;AAMD,QAAMiB,aAAaA,CAACJ,YAA4B;AAC9C,UAAMK,eAAgBvB,UAAQwB,SAASnB,cAAcA;AACrD,QAAI,CAACoB,EAAEC,MAAMhC,GAAG,GAAG;AACjB,UAAI+B,EAAEC,MAAMH,YAAY,KAAKE,EAAEE,MAAMJ,YAAY,KAAKA,eAAe7B,KAAK;AACxEU,uBAAeqB,EAAEG,SAASlC,GAAG,CAAC;AAC9BJ,eAAO6B,WAAW;AAAA,UAChB,GAAGD;AAAAA,UACHE,QAAQ;AAAA,YACN,GAAGF,SAAOE;AAAAA,YACVC,MAAM/B,OAAO+B;AAAAA,YACbpB,OAAOP;AAAAA,UAAAA;AAAAA,QACT,CACmB;AAAA,MACvB;AAAA,IACF;AACAJ,WAAOuC,SAAS;AAAA,MACd,GAAGX;AAAAA,MACHE,QAAQ;AAAA,QACN,GAAGF,SAAOE;AAAAA,QACVnB,OAAOsB;AAAAA,MAAAA;AAAAA,IACT,CACD;AAAA,EACH;AAEAO,YAAU,MAAM;AACd,QAAIL,EAAEC,MAAMpC,OAAOW,KAAK,GAAG;AACzB,UAAIC,gBAAgB,IAAI;AACtBE,uBAAe,EAAE;AAAA,MACnB;AACA;AAAA,IACF;AACA,UAAM2B,eAAe,OAAOzC,MAAMW,UAAU,WAAWO,OAAOlB,MAAMW,KAAK,IAAIX,MAAMW;AACnF,QAAI,CAACwB,EAAEO,QAAQ3B,YAAY0B,YAAY,GAAG;AACxC3B,qBAAeqB,EAAEG,SAAStC,OAAOW,KAAK,CAAC;AAAA,IACzC;AAAA,EACF,GAAG,CAACX,OAAOW,KAAK,CAAC;AAEjB,SACE,oBAAC,eAAA,EACC,GAAIX,OACJ,UAAU2C,UAAUnC,gBAAgBD,QAAQ,GAC5C,MAAK,UACL,UAAU,MAAM;AAAA,EAAC,GACjB,QAAQyB,YACR,OAAOpB,aACP,WACA,cACA,cAA2B;AAEjC;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "linear-react-components-ui",
3
- "version": "2.0.1-beta.0",
3
+ "version": "2.0.1-beta.1",
4
4
  "description": "Linear Sistemas ReactJs Components",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",