2
0
mirror of https://github.com/tenrok/maska.git synced 2026-06-20 20:00:34 +03:00

Fix eager mask bug #128

This commit is contained in:
Alexander Shabunevich
2023-01-29 16:59:24 +03:00
parent ea47223566
commit 056b6fb855
2 changed files with 82 additions and 5 deletions
+2 -5
View File
@@ -105,16 +105,13 @@ export class MaskInput {
let value = valueOld let value = valueOld
if (mask.isEager()) { if (mask.isEager()) {
const masked = mask.masked(valueOld)
const unmasked = mask.unmasked(valueOld) const unmasked = mask.unmasked(valueOld)
const maskedUnmasked = mask.masked(unmasked)
if (unmasked === '' && 'data' in e && e.data != null) { if (unmasked === '' && 'data' in e && e.data != null) {
// empty state and something like `space` pressed // empty state and something like `space` pressed
value = e.data value = e.data
} else if ( } else if (unmasked !== mask.unmasked(masked)) {
maskedUnmasked.startsWith(valueOld) ||
mask.completed(unmasked)
) {
value = unmasked value = unmasked
} }
} }
+80
View File
@@ -802,6 +802,71 @@ describe('#-# eager mask', () => {
}) })
}) })
describe('+1 (#) #-# eager mask', () => {
beforeAll(() => {
input = prepareInput({ mask: '+1 (#) #-#', eager: true })
})
afterEach(async () => {
await user.clear(input)
})
test('input 1', async () => {
await user.type(input, '1')
expect(input).toHaveValue('+1 (1) ')
})
test('input 12', async () => {
await user.type(input, '12')
expect(input).toHaveValue('+1 (1) 2-')
})
test('input 123', async () => {
await user.type(input, '123')
expect(input).toHaveValue('+1 (1) 2-3')
})
test('input 123', async () => {
await user.type(input, '123')
expect(input).toHaveValue('+1 (1) 2-3')
})
test('input 2', async () => {
await user.type(input, '2')
expect(input).toHaveValue('+1 (2) ')
})
test('input 234', async () => {
await user.type(input, '234')
expect(input).toHaveValue('+1 (2) 3-4')
})
test('input 2{ArrowLeft}3', async () => {
await user.type(input, '2{ArrowLeft}3')
expect(input).toHaveValue('+1 (2) 3-')
})
test('input 234{backspace}', async () => {
await user.type(input, '234{backspace}')
expect(input).toHaveValue('+1 (2) 3-')
})
test('input 234{backspace}×2', async () => {
await user.type(input, '234{backspace}{backspace}')
expect(input).toHaveValue('+1 (2) 3-')
})
test('input 234{backspace}×3', async () => {
await user.type(input, '234{backspace}{backspace}{backspace}')
expect(input).toHaveValue('+1 (2) ')
})
test('input 234{backspace}×4', async () => {
await user.type(input, '234{backspace}{backspace}{backspace}{backspace}')
expect(input).toHaveValue('')
})
})
describe('#-#--# mask', () => { describe('#-#--# mask', () => {
beforeAll(() => { beforeAll(() => {
input = prepareInput({ mask: '#-#--#' }) input = prepareInput({ mask: '#-#--#' })
@@ -1104,6 +1169,11 @@ describe('12## eager mask', () => {
expect(input).toHaveValue('123') expect(input).toHaveValue('123')
}) })
test('input 11', async () => {
await user.type(input, '11')
expect(input).toHaveValue('1211')
})
test('input 12', async () => { test('input 12', async () => {
await user.type(input, '12') await user.type(input, '12')
expect(input).toHaveValue('1212') expect(input).toHaveValue('1212')
@@ -1578,6 +1648,16 @@ describe('IP eager mask', () => {
await user.type(input, '123.456.789.0123') await user.type(input, '123.456.789.0123')
expect(input).toHaveValue('123.456.789.012') expect(input).toHaveValue('123.456.789.012')
}) })
test('input 12.3{ArrowLeft}a', async () => {
await user.type(input, '12.3{ArrowLeft}a')
expect(input).toHaveValue('12.3')
})
test('input 12.3{ArrowLeft}1', async () => {
await user.type(input, '12.3{ArrowLeft}1')
expect(input).toHaveValue('12.13')
})
}) })
describe('Repeated mask', () => { describe('Repeated mask', () => {