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

Refactor Mask options

Allow to pass null mask for disable masking
This commit is contained in:
Alexander Shabunevich
2022-12-09 00:05:24 +03:00
parent f72af982b9
commit 547f1711e8
4 changed files with 96 additions and 68 deletions
+20 -20
View File
@@ -41,8 +41,8 @@ describe('test init', () => {
`
const mask = new MaskInput('[data-maska]')
expect([...mask.items][0][1].eager).toBe(true)
expect([...mask.items][1][1].eager).toBe(false)
expect([...mask.items][0][1].isEager()).toBe(true)
expect([...mask.items][1][1].isEager()).toBe(false)
})
test('test callback', async () => {
@@ -126,8 +126,8 @@ describe('test init', () => {
const input = <HTMLInputElement>document.getElementById('input')
new MaskInput('#input')
await user.type(input, '1')
expect(input).toHaveValue('')
await user.type(input, '1a')
expect(input).toHaveValue('1a')
})
test('no mask param', async () => {
@@ -135,8 +135,8 @@ describe('test init', () => {
const input = <HTMLInputElement>document.getElementById('input')
new MaskInput(input)
await user.type(input, '1')
expect(input).toHaveValue('')
await user.type(input, '1a')
expect(input).toHaveValue('1a')
})
})
@@ -149,74 +149,74 @@ describe('test data-attr', () => {
test('empty mask', () => {
const mask = prepareMaskWithHtml(`<input id="input" data-maska>`)
expect([...mask.items][0][1].mask).toBe('')
expect([...mask.items][0][1].opts.mask).toBe(undefined)
})
test('simple mask', () => {
const mask = prepareMaskWithHtml(`<input id="input" data-maska="#-#">`)
expect([...mask.items][0][1].mask).toBe('#-#')
expect([...mask.items][0][1].opts.mask).toBe('#-#')
})
test('dynamic mask', () => {
const mask = prepareMaskWithHtml(
`<input id="input" data-maska="['#--#', '#-#--#']">`
)
expect([...mask.items][0][1].mask.length).toBe(2)
expect([...mask.items][0][1].opts.mask?.length).toBe(2)
})
test('eager mask', () => {
const mask = prepareMaskWithHtml(`<input id="input" data-maska-eager>`)
expect([...mask.items][0][1].eager).toBe(true)
expect([...mask.items][0][1].isEager()).toBe(true)
})
test('eager mask true', () => {
const mask = prepareMaskWithHtml(
`<input id="input" data-maska-eager="true">`
)
expect([...mask.items][0][1].eager).toBe(true)
expect([...mask.items][0][1].isEager()).toBe(true)
})
test('eager mask false', () => {
const mask = prepareMaskWithHtml(
`<input id="input" data-maska-eager="false">`
)
expect([...mask.items][0][1].eager).toBe(false)
expect([...mask.items][0][1].isEager()).toBe(false)
})
test('reversed mask', () => {
const mask = prepareMaskWithHtml(`<input id="input" data-maska-reversed>`)
expect([...mask.items][0][1].reversed).toBe(true)
expect([...mask.items][0][1].opts.reversed).toBe(true)
})
test('custom tokens mask', () => {
const mask = prepareMaskWithHtml(
`<input id="input" data-maska-tokens='{ "Z": { "pattern": "[0-9]" } }'>`
)
expect([...mask.items][0][1].tokens).toHaveProperty('#.pattern')
expect([...mask.items][0][1].tokens).toHaveProperty('Z.pattern')
expect([...mask.items][0][1].opts.tokens).toHaveProperty('#.pattern')
expect([...mask.items][0][1].opts.tokens).toHaveProperty('Z.pattern')
})
test('replace tokens mask', () => {
const mask = prepareMaskWithHtml(
`<input id="input" data-maska-tokens='{ "Z": { "pattern": "[0-9]" } }' data-maska-tokens-replace>`
)
expect([...mask.items][0][1].tokens).toHaveProperty('Z.pattern')
expect([...mask.items][0][1].tokens).not.toHaveProperty('#.pattern')
expect([...mask.items][0][1].opts.tokens).toHaveProperty('Z.pattern')
expect([...mask.items][0][1].opts.tokens).not.toHaveProperty('#.pattern')
})
test('single quotes tokens mask', () => {
const mask = prepareMaskWithHtml(
`<input id="input" data-maska-tokens="{ 'Z': { 'pattern': '[0-9]' } }">`
)
expect([...mask.items][0][1].tokens).toHaveProperty('Z.pattern')
expect([...mask.items][0][1].opts.tokens).toHaveProperty('Z.pattern')
})
test('simple tokens mask', () => {
const mask = prepareMaskWithHtml(
`<input id="input" data-maska-tokens="Z:[0-9]|X:[0-9]:optional">`
)
expect([...mask.items][0][1].tokens).toHaveProperty('Z.optional', false)
expect([...mask.items][0][1].tokens).toHaveProperty('X.optional', true)
expect([...mask.items][0][1].opts.tokens).toHaveProperty('Z.optional', false)
expect([...mask.items][0][1].opts.tokens).toHaveProperty('X.optional', true)
})
})
+9 -4
View File
@@ -3,16 +3,21 @@ import { expect, test } from 'vitest'
import { Mask } from '../src/mask'
test('null mask', () => {
// @ts-ignore
const mask = new Mask({ mask: null })
expect(mask.masked('1a')).toBe('')
expect(mask.masked('1a')).toBe('1a')
})
test('empty string mask', () => {
const mask = new Mask({ mask: '' })
expect(mask.masked('1a')).toBe('1a')
})
test('undefined mask', () => {
const mask = new Mask({ mask: undefined })
expect(mask.masked('1a')).toBe('')
expect(mask.masked('1a')).toBe('1a')
})
test('@ @ mask', () => {
@@ -721,7 +726,7 @@ test('multiple letters mask', () => {
test('dynamic empty mask', () => {
const mask = new Mask({ mask: [] })
expect(mask.masked('1')).toBe('')
expect(mask.masked('1')).toBe('1')
})
test('dynamic single mask', () => {