From b6865e7ae8544fc7e3efd2b06d4dccc8ea401b2e Mon Sep 17 00:00:00 2001 From: Shobhit-Nagpal Date: Thu, 15 Jan 2026 22:11:20 +0530 Subject: [PATCH 1/2] refactor: add opts and logic to allow submit on enter only under cuesheet line cell for time inputs --- .../input/text-input/useReactiveTextInput.tsx | 14 +++++++++++--- .../cuesheet-table-elements/SingleLineCell.tsx | 1 + 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/apps/client/src/common/components/input/text-input/useReactiveTextInput.tsx b/apps/client/src/common/components/input/text-input/useReactiveTextInput.tsx index 3185e40d5d..257acdf033 100644 --- a/apps/client/src/common/components/input/text-input/useReactiveTextInput.tsx +++ b/apps/client/src/common/components/input/text-input/useReactiveTextInput.tsx @@ -18,6 +18,7 @@ export default function useReactiveTextInput( onCancelUpdate?: () => void; allowSubmitSameValue?: boolean; allowKeyboardNavigation?: boolean; + allowSubmitOnEnterOnly?: boolean; }, ): UseReactiveTextInputReturn { const [text, setText] = useState(initialText); @@ -50,10 +51,17 @@ export default function useReactiveTextInput( * @param {string} valueToSubmit */ const handleSubmit = useCallback( - (valueToSubmit: string) => { + (valueToSubmit: string, triggeredKey?: string) => { // No need to update if it hasn't changed if (valueToSubmit === initialText && !options?.allowSubmitSameValue) { options?.onCancelUpdate?.(); + } else if ( + valueToSubmit === initialText && + options?.allowSubmitOnEnterOnly && + triggeredKey !== 'Enter' && + triggeredKey !== 'mod + Enter' + ) { + options?.onCancelUpdate?.(); } else { const cleanVal = valueToSubmit.trim(); submitCallback(cleanVal); @@ -105,7 +113,7 @@ export default function useReactiveTextInput( 'Enter', () => { isKeyboardSubmitting.current = true; - handleSubmit(text); + handleSubmit(text, 'Enter'); // clear flag after blur has been processed setTimeout(() => { isKeyboardSubmitting.current = false; @@ -119,7 +127,7 @@ export default function useReactiveTextInput( 'mod + Enter', () => { isKeyboardSubmitting.current = true; - handleSubmit(text); + handleSubmit(text, 'mod + Enter'); // clear flag after blur has been processed setTimeout(() => { isKeyboardSubmitting.current = false; diff --git a/apps/client/src/views/cuesheet/cuesheet-table/cuesheet-table-elements/SingleLineCell.tsx b/apps/client/src/views/cuesheet/cuesheet-table/cuesheet-table-elements/SingleLineCell.tsx index 9445b80cb2..a6c14ce6f1 100644 --- a/apps/client/src/views/cuesheet/cuesheet-table/cuesheet-table-elements/SingleLineCell.tsx +++ b/apps/client/src/views/cuesheet/cuesheet-table/cuesheet-table-elements/SingleLineCell.tsx @@ -18,6 +18,7 @@ const SingleLineCell = forwardRef( const { value, onChange, onBlur, onKeyDown } = useReactiveTextInput(initialValue, submitCallback, ref, { allowSubmitSameValue, allowKeyboardNavigation: true, + allowSubmitOnEnterOnly: true, submitOnEnter: true, // single line should submit on enter submitOnCtrlEnter: true, onCancelUpdate: handleCancelUpdate, From de5e2e79f9100eaa47f43724ee681b8495e9e21b Mon Sep 17 00:00:00 2001 From: Shobhit-Nagpal Date: Sat, 17 Jan 2026 06:02:15 +0530 Subject: [PATCH 2/2] refactor: remove check for same value --- .../common/components/input/text-input/useReactiveTextInput.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/client/src/common/components/input/text-input/useReactiveTextInput.tsx b/apps/client/src/common/components/input/text-input/useReactiveTextInput.tsx index 257acdf033..9571aa14d5 100644 --- a/apps/client/src/common/components/input/text-input/useReactiveTextInput.tsx +++ b/apps/client/src/common/components/input/text-input/useReactiveTextInput.tsx @@ -56,7 +56,6 @@ export default function useReactiveTextInput( if (valueToSubmit === initialText && !options?.allowSubmitSameValue) { options?.onCancelUpdate?.(); } else if ( - valueToSubmit === initialText && options?.allowSubmitOnEnterOnly && triggeredKey !== 'Enter' && triggeredKey !== 'mod + Enter'