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

Fix of the input event

This commit is contained in:
Alexander Shabunevich
2022-12-09 22:40:51 +03:00
parent 4132dcc874
commit 41fb72b87c
2 changed files with 16 additions and 4 deletions
+7 -2
View File
@@ -410,7 +410,12 @@ new MaskInput("input", {
# Events # Events
You can subscribe to `maska` event, fired every time when mask applied: There are two events you can subscribe to get the masking result:
- `maska` event
- `input` event
They are essentially the same, but the `input` event could be fired by any input logic, and the `maska` event is library specific.
<!-- tabs:start --> <!-- tabs:start -->
## **Vanilla JS** ## **Vanilla JS**
@@ -426,7 +431,7 @@ document.querySelector("input").addEventListener("maska", onMaska)
``` ```
<!-- tabs:end --> <!-- tabs:end -->
Callback will receive custom event contains `detail` property with given structure: Both events contains `detail` property with given structure:
<!-- tabs:start --> <!-- tabs:start -->
### **Description** ### **Description**
+9 -2
View File
@@ -86,7 +86,14 @@ export class MaskInput {
} }
private readonly inputEvent = (e: Event | InputEvent): void => { private readonly inputEvent = (e: Event | InputEvent): void => {
if (e instanceof InputEvent && e.data === '__MASKA__') return if (
e instanceof CustomEvent &&
e.type === 'input' &&
e.detail != null &&
'masked' in e.detail
) {
return
}
const input = e.target as HTMLInputElement const input = e.target as HTMLInputElement
const mask = this.items.get(input) as Mask const mask = this.items.get(input) as Mask
@@ -153,6 +160,6 @@ export class MaskInput {
} }
} }
input.dispatchEvent(new CustomEvent<MaskaDetail>('maska', { detail })) input.dispatchEvent(new CustomEvent<MaskaDetail>('maska', { detail }))
input.dispatchEvent(new InputEvent('input', { data: '__MASKA__' })) input.dispatchEvent(new CustomEvent<MaskaDetail>('input', { detail }))
} }
} }