From 7aacd2276862472a48cd56bc9e1315689060f666 Mon Sep 17 00:00:00 2001 From: r0mm4k Date: Tue, 5 Nov 2024 12:32:08 +0300 Subject: [PATCH 1/5] fix: fix error when pass disabled and press enter. --- src/Input.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Input.tsx b/src/Input.tsx index c152f0d..de2b6d8 100644 --- a/src/Input.tsx +++ b/src/Input.tsx @@ -94,6 +94,7 @@ const Input = forwardRef((props, ref) => { })); useEffect(() => { + keyLockRef.current && (keyLockRef.current = false); setFocused((prev) => (prev && disabled ? false : prev)); }, [disabled]); From 963ab6ca47cd30dd2e0cffdc63b7faa4aee83480 Mon Sep 17 00:00:00 2001 From: r0mm4k Date: Tue, 5 Nov 2024 13:06:28 +0300 Subject: [PATCH 2/5] Refactoring. --- src/Input.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Input.tsx b/src/Input.tsx index de2b6d8..001feb5 100644 --- a/src/Input.tsx +++ b/src/Input.tsx @@ -94,7 +94,10 @@ const Input = forwardRef((props, ref) => { })); useEffect(() => { - keyLockRef.current && (keyLockRef.current = false); + if (keyLockRef.current) { + keyLockRef.current = false; + } + setFocused((prev) => (prev && disabled ? false : prev)); }, [disabled]); From 038c94170c17b6cbe89358ad36a54e33ed6c4006 Mon Sep 17 00:00:00 2001 From: r0mm4k Date: Mon, 11 Nov 2024 15:03:50 +0300 Subject: [PATCH 3/5] fix error when press enter after trigger blur & add tests. --- src/Input.tsx | 4 +++- tests/index.test.tsx | 26 ++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/Input.tsx b/src/Input.tsx index 001feb5..4ce793f 100644 --- a/src/Input.tsx +++ b/src/Input.tsx @@ -97,7 +97,6 @@ const Input = forwardRef((props, ref) => { if (keyLockRef.current) { keyLockRef.current = false; } - setFocused((prev) => (prev && disabled ? false : prev)); }, [disabled]); @@ -180,6 +179,9 @@ const Input = forwardRef((props, ref) => { }; const handleBlur: React.FocusEventHandler = (e) => { + if (keyLockRef.current) { + keyLockRef.current = false; + } setFocused(false); onBlur?.(e); }; diff --git a/tests/index.test.tsx b/tests/index.test.tsx index ea76fbe..5e07509 100644 --- a/tests/index.test.tsx +++ b/tests/index.test.tsx @@ -60,6 +60,32 @@ describe('Input', () => { expect(onKeyUp).toBeCalledTimes(1); }); + it('should trigger onPressEnter after trigger onBlur', () => { + const onPressEnter = jest.fn(); + const onBlur = jest.fn(); + const { container } = render( + , + ); + const inputEl = container.querySelector('input')!; + fireEvent.keyDown(inputEl, { key: 'Enter' }); + fireEvent.blur(inputEl); + fireEvent.keyDown(inputEl, { key: 'Enter' }); + expect(onBlur).toBeCalled(); + expect(onPressEnter).toBeCalledTimes(2); + }); + + it('should trigger onPressEnter after disabled', () => { + const onPressEnter = jest.fn(); + const { container, rerender } = render( + , + ); + const inputEl = container.querySelector('input')!; + fireEvent.keyDown(inputEl, { key: 'Enter' }); + rerender(); + fireEvent.keyDown(inputEl, { key: 'Enter' }); + expect(onPressEnter).toBeCalledTimes(2); + }); + it('should trigger onChange', () => { const onChange = jest.fn(); const { container } = render(); From a469848f2ea54547234d58e5c8278b344035601e Mon Sep 17 00:00:00 2001 From: r0mm4k Date: Mon, 11 Nov 2024 15:13:07 +0300 Subject: [PATCH 4/5] Refactoring. --- tests/index.test.tsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/index.test.tsx b/tests/index.test.tsx index 5e07509..00191b1 100644 --- a/tests/index.test.tsx +++ b/tests/index.test.tsx @@ -80,10 +80,13 @@ describe('Input', () => { , ); const inputEl = container.querySelector('input')!; + expect(inputEl.disabled).toBe(false); fireEvent.keyDown(inputEl, { key: 'Enter' }); rerender(); + expect(inputEl.disabled).toBe(true); fireEvent.keyDown(inputEl, { key: 'Enter' }); expect(onPressEnter).toBeCalledTimes(2); + expect(inputEl).toBeDisabled(); }); it('should trigger onChange', () => { From f354b57ee9a4ea207148e6805b6ecf6fdedbb068 Mon Sep 17 00:00:00 2001 From: r0mm4k Date: Mon, 11 Nov 2024 15:16:28 +0300 Subject: [PATCH 5/5] Refactoring. --- tests/index.test.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/index.test.tsx b/tests/index.test.tsx index 00191b1..6daf791 100644 --- a/tests/index.test.tsx +++ b/tests/index.test.tsx @@ -86,7 +86,6 @@ describe('Input', () => { expect(inputEl.disabled).toBe(true); fireEvent.keyDown(inputEl, { key: 'Enter' }); expect(onPressEnter).toBeCalledTimes(2); - expect(inputEl).toBeDisabled(); }); it('should trigger onChange', () => {