From 7bbc83fb655c48a63a925618e3e336c0f6ea7710 Mon Sep 17 00:00:00 2001 From: Andrea Cimini Date: Fri, 29 Mar 2024 11:57:37 +0100 Subject: [PATCH 1/2] enforced check on code value inserted --- packages/pn-commons/src/components/CodeModal/CodeInput.tsx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/pn-commons/src/components/CodeModal/CodeInput.tsx b/packages/pn-commons/src/components/CodeModal/CodeInput.tsx index b3d3311f84..2055e1abae 100644 --- a/packages/pn-commons/src/components/CodeModal/CodeInput.tsx +++ b/packages/pn-commons/src/components/CodeModal/CodeInput.tsx @@ -108,7 +108,8 @@ const CodeInput = ({ initialValues, isReadOnly, hasError, onChange, onInputError changeInputValue(value, index); return; } - value = value.replace(/[^a-z\d]/g, ''); + // remove from value those characters that aren't letters neither numbers + value = value.replace(/[^a-z\d]/gi, ''); if (value !== '') { // case maxLength 2 if (value.length > 1) { @@ -125,7 +126,7 @@ const CodeInput = ({ initialValues, isReadOnly, hasError, onChange, onInputError event.preventDefault(); // eslint-disable-next-line functional/no-let let pastedCode = event.clipboardData.getData('text'); - pastedCode = pastedCode.replace(/[^a-z\d]/g, ''); + pastedCode = pastedCode.replace(/[^a-z\d]/gi, ''); const maxLengthRequiredCode = pastedCode.slice(0, initialValues.length); const values = maxLengthRequiredCode.split(''); @@ -158,7 +159,7 @@ const CodeInput = ({ initialValues, isReadOnly, hasError, onChange, onInputError maxLength: 2, sx: { padding: '16.5px 10px', textAlign: 'center' }, readOnly: isReadOnly, - pattern: '^[0-9a-z]{1}$', + pattern: '^[0-9a-zA-Z]{1}$', 'data-testid': `code-input-${index}`, }} onKeyDown={(event) => keyDownHandler(event, index)} From 6493a304a75b9bde7512cc12a36167af156ca146 Mon Sep 17 00:00:00 2001 From: Andrea Cimini Date: Fri, 29 Mar 2024 12:07:03 +0100 Subject: [PATCH 2/2] added some comment --- packages/pn-commons/src/components/CodeModal/CodeInput.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/pn-commons/src/components/CodeModal/CodeInput.tsx b/packages/pn-commons/src/components/CodeModal/CodeInput.tsx index 2055e1abae..b11b62940e 100644 --- a/packages/pn-commons/src/components/CodeModal/CodeInput.tsx +++ b/packages/pn-commons/src/components/CodeModal/CodeInput.tsx @@ -129,7 +129,8 @@ const CodeInput = ({ initialValues, isReadOnly, hasError, onChange, onInputError pastedCode = pastedCode.replace(/[^a-z\d]/gi, ''); const maxLengthRequiredCode = pastedCode.slice(0, initialValues.length); const values = maxLengthRequiredCode.split(''); - + // we create an array with empty values for those cases in which the copied values are less than required ones + // initialValues.length - values.length can be only >= 0 because of the slice of pastedCode const emptyValues = new Array(initialValues.length - values.length).fill(''); setCurrentValues(values.concat(emptyValues)); focusInput(values.length);