2
0
mirror of https://github.com/tenrok/maska.git synced 2026-06-14 18:42:27 +03:00

Callback onMaska now can accept array

To make it possible use callback with binded value
This commit is contained in:
Alexander Shabunevich
2022-12-07 11:34:02 +03:00
parent 2d594a4837
commit 57f4f44959
5 changed files with 90 additions and 3 deletions
+8 -1
View File
@@ -17,11 +17,18 @@ export const vMaska: MaskaDirective = (el, binding) => {
if (binding.value != null) {
const binded = binding.value
opts.onMaska = (detail: MaskaDetail) => {
const onMaska = (detail: MaskaDetail): void => {
binded.masked = detail.masked
binded.unmasked = detail.unmasked
binded.completed = detail.completed
}
opts.onMaska =
opts.onMaska == null
? onMaska
: Array.isArray(opts.onMaska)
? [...opts.onMaska, onMaska]
: [opts.onMaska, onMaska]
}
masks.set(input, new MaskInput(input, opts))
+8 -2
View File
@@ -1,8 +1,10 @@
import { Mask, MaskOptions } from './mask'
import { parseMask, parseOpts, parseTokens } from './parser'
type OnMaskaType = (detail: MaskaDetail) => void
export interface MaskInputOptions extends MaskOptions {
onMaska?: (detail: MaskaDetail) => void
onMaska?: OnMaskaType | OnMaskaType[]
preProcess?: (value: string) => string
postProcess?: (value: string) => string
}
@@ -142,7 +144,11 @@ export class MaskInput {
}
if (this.options.onMaska != null) {
this.options.onMaska(detail)
if (Array.isArray(this.options.onMaska)) {
this.options.onMaska.forEach((f) => f(detail))
} else {
this.options.onMaska(detail)
}
}
input.dispatchEvent(new CustomEvent<MaskaDetail>('maska', { detail }))
}