From d73405fe14839408da313c0df68efd7900b4f757 Mon Sep 17 00:00:00 2001 From: Reid Barber Date: Wed, 9 Jun 2021 18:24:06 -0500 Subject: [PATCH 1/5] Clear text field on Command + Delete (#1877) --- packages/@react-aria/textfield/src/useFormattedTextField.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/@react-aria/textfield/src/useFormattedTextField.ts b/packages/@react-aria/textfield/src/useFormattedTextField.ts index 5e44f185ef4..46a153b77bc 100644 --- a/packages/@react-aria/textfield/src/useFormattedTextField.ts +++ b/packages/@react-aria/textfield/src/useFormattedTextField.ts @@ -77,6 +77,8 @@ export function useFormattedTextField(props: AriaTextFieldProps, state: Formatte ? input.value.slice(0, input.selectionStart - 1) + input.value.slice(input.selectionStart) : input.value.slice(0, input.selectionStart) + input.value.slice(input.selectionEnd); break; + case 'deleteSoftLineBackward': + nextValue = ''; default: if (e.data != null) { nextValue = From b1c9ae22398bbbc08e5b197db2296ae1cccc7867 Mon Sep 17 00:00:00 2001 From: Reid Barber Date: Thu, 10 Jun 2021 10:16:48 -0500 Subject: [PATCH 2/5] add break in case --- packages/@react-aria/textfield/src/useFormattedTextField.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/@react-aria/textfield/src/useFormattedTextField.ts b/packages/@react-aria/textfield/src/useFormattedTextField.ts index 46a153b77bc..68c63ca4ba3 100644 --- a/packages/@react-aria/textfield/src/useFormattedTextField.ts +++ b/packages/@react-aria/textfield/src/useFormattedTextField.ts @@ -79,6 +79,7 @@ export function useFormattedTextField(props: AriaTextFieldProps, state: Formatte break; case 'deleteSoftLineBackward': nextValue = ''; + break; default: if (e.data != null) { nextValue = From 0a6476d2d984867cb485406d6b726ee364bdddcd Mon Sep 17 00:00:00 2001 From: Reid Barber Date: Thu, 17 Jun 2021 17:18:36 -0500 Subject: [PATCH 3/5] Fix to clear line up to selection --- packages/@react-aria/textfield/src/useFormattedTextField.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/@react-aria/textfield/src/useFormattedTextField.ts b/packages/@react-aria/textfield/src/useFormattedTextField.ts index 68c63ca4ba3..d981980d232 100644 --- a/packages/@react-aria/textfield/src/useFormattedTextField.ts +++ b/packages/@react-aria/textfield/src/useFormattedTextField.ts @@ -78,7 +78,10 @@ export function useFormattedTextField(props: AriaTextFieldProps, state: Formatte : input.value.slice(0, input.selectionStart) + input.value.slice(input.selectionEnd); break; case 'deleteSoftLineBackward': - nextValue = ''; + nextValue = input.value.slice(input.selectionStart); + break; + case 'deleteHardLineBackward': + nextValue = input.value.slice(input.selectionStart); break; default: if (e.data != null) { From b0099ba716abc326a9d7dc2a087f99860dfdbf79 Mon Sep 17 00:00:00 2001 From: Reid Barber Date: Thu, 17 Jun 2021 17:19:16 -0500 Subject: [PATCH 4/5] Add tests for new inputType cases --- packages/@react-spectrum/numberfield/test/NumberField.test.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/@react-spectrum/numberfield/test/NumberField.test.js b/packages/@react-spectrum/numberfield/test/NumberField.test.js index 7474c5cb22e..4caf6f9b434 100644 --- a/packages/@react-spectrum/numberfield/test/NumberField.test.js +++ b/packages/@react-spectrum/numberfield/test/NumberField.test.js @@ -1922,7 +1922,7 @@ describe('NumberField', function () { InputEvent.prototype.getTargetRanges = getTargetRanges; }); - it.each(['deleteContentBackward', 'deleteContentForward', 'deleteContent', 'deleteByCut', 'deleteByDrag'])('allows %s of whole currency symbol', (inputType) => { + it.each(['deleteHardLineBackward', 'deleteSoftLineBackward', 'deleteContentBackward', 'deleteContentForward', 'deleteContent', 'deleteByCut', 'deleteByDrag'])('allows %s of whole currency symbol', (inputType) => { let {textField} = renderNumberField({onChange: onChangeSpy, formatOptions: {style: 'currency', currency: 'USD', currencyDisplay: 'code'}}); act(() => {textField.focus();}); @@ -1942,7 +1942,7 @@ describe('NumberField', function () { expect(proceed).toBe(true); }); - it.each(['deleteContentBackward', 'deleteContentForward', 'deleteContent', 'deleteByCut', 'deleteByDrag'])('prevents %s of partial currency symbol', (inputType) => { + it.each(['deleteHardLineBackward', 'deleteSoftLineBackward', 'deleteContentBackward', 'deleteContentForward', 'deleteContent', 'deleteByCut', 'deleteByDrag'])('prevents %s of partial currency symbol', (inputType) => { let {textField} = renderNumberField({onChange: onChangeSpy, formatOptions: {style: 'currency', currency: 'USD', currencyDisplay: 'code'}}); act(() => {textField.focus();}); From b1e995b518611e56639a14632630f48c0bfffa4e Mon Sep 17 00:00:00 2001 From: Reid Barber Date: Thu, 17 Jun 2021 18:37:33 -0500 Subject: [PATCH 5/5] Consolidate duplicate cases for inputType --- packages/@react-aria/textfield/src/useFormattedTextField.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/@react-aria/textfield/src/useFormattedTextField.ts b/packages/@react-aria/textfield/src/useFormattedTextField.ts index d981980d232..6e24fe28990 100644 --- a/packages/@react-aria/textfield/src/useFormattedTextField.ts +++ b/packages/@react-aria/textfield/src/useFormattedTextField.ts @@ -78,8 +78,6 @@ export function useFormattedTextField(props: AriaTextFieldProps, state: Formatte : input.value.slice(0, input.selectionStart) + input.value.slice(input.selectionEnd); break; case 'deleteSoftLineBackward': - nextValue = input.value.slice(input.selectionStart); - break; case 'deleteHardLineBackward': nextValue = input.value.slice(input.selectionStart); break;