From 6074b5fec18c8a6a5f7a5229aab0bfd33dcdb320 Mon Sep 17 00:00:00 2001 From: Philipp Fritsche Date: Wed, 6 Apr 2022 11:22:24 +0000 Subject: [PATCH] fix: delete chars from value at `maxlength` --- src/utils/edit/input.ts | 2 +- tests/utils/edit/input.ts | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/utils/edit/input.ts b/src/utils/edit/input.ts index cc858626..9919faff 100644 --- a/src/utils/edit/input.ts +++ b/src/utils/edit/input.ts @@ -128,7 +128,7 @@ function editInputElement( ) { let dataToInsert = data const spaceUntilMaxLength = getSpaceUntilMaxLength(element) - if (spaceUntilMaxLength !== undefined) { + if (spaceUntilMaxLength !== undefined && data.length > 0) { if (spaceUntilMaxLength > 0) { dataToInsert = data.substring(0, spaceUntilMaxLength) } else { diff --git a/tests/utils/edit/input.ts b/tests/utils/edit/input.ts index ef146ca8..6ed3d3c6 100644 --- a/tests/utils/edit/input.ts +++ b/tests/utils/edit/input.ts @@ -235,10 +235,10 @@ test('prevent input on `beforeinput` event', () => { cases( 'maxlength', - ({html, data, expectedValue}) => { + ({html, data, inputType, expectedValue}) => { const {element, eventWasFired} = render(html) - input(createConfig(), element, data) + input(createConfig(), element, data, inputType) expect(element).toHaveValue(expectedValue) expect(eventWasFired('beforeinput')).toBe(true) @@ -270,6 +270,12 @@ cases( data: '', expectedValue: '', }, + 'delete data when maxlength is reached': { + html: ``, + data: '', + inputType: 'deleteContentForward', + expectedValue: 'oo', + }, }, )