use-mask-input 3.9.0 → 3.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/dist/antd.cjs +14 -12
- package/dist/antd.cjs.map +1 -1
- package/dist/antd.d.cts +3 -2
- package/dist/antd.d.ts +3 -2
- package/dist/antd.js +6 -4
- package/dist/antd.js.map +1 -1
- package/dist/chunk-PMBRAXS4.cjs +5876 -0
- package/dist/chunk-PMBRAXS4.cjs.map +1 -0
- package/dist/chunk-XSTQDKDU.js +5866 -0
- package/dist/chunk-XSTQDKDU.js.map +1 -0
- package/dist/{index-BoaVtWUr.d.cts → index-D8KkaDbQ.d.cts} +7 -3
- package/dist/{index-BoaVtWUr.d.ts → index-D8KkaDbQ.d.ts} +7 -3
- package/dist/index.cjs +45 -38
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -4
- package/dist/index.d.ts +5 -4
- package/dist/index.js +30 -23
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/antd/useMaskInputAntd.spec.tsx +24 -2
- package/src/antd/useMaskInputAntd.ts +11 -7
- package/src/api/useHookFormMask.spec.ts +2 -2
- package/src/api/useHookFormMask.ts +4 -1
- package/src/api/useMaskInput.spec.tsx +20 -2
- package/src/api/useMaskInput.ts +11 -5
- package/src/api/withHookFormMask.spec.ts +45 -76
- package/src/api/withHookFormMask.ts +18 -10
- package/src/api/withMask.spec.ts +18 -2
- package/src/api/withMask.ts +12 -9
- package/src/api/withTanStackFormMask.spec.ts +2 -2
- package/src/api/withTanStackFormMask.ts +19 -10
- package/src/core/inputmask.spec.ts +21 -0
- package/src/core/inputmask.ts +10 -0
- package/src/core/maskEngine.spec.ts +2 -2
- package/src/core/maskEngine.ts +2 -2
- package/src/index.tsx +2 -0
- package/src/types/index.ts +8 -2
- package/src/utils/index.ts +6 -1
- package/src/utils/maskHelpers.ts +46 -1
- package/dist/chunk-ICLWBMH4.js +0 -3865
- package/dist/chunk-ICLWBMH4.js.map +0 -1
- package/dist/chunk-X5SEJVSB.cjs +0 -3873
- package/dist/chunk-X5SEJVSB.cjs.map +0 -1
package/src/core/maskEngine.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* eslint-disable import-x/no-extraneous-dependencies */
|
|
2
|
-
import inputmask from 'inputmask';
|
|
2
|
+
import inputmask from './inputmask';
|
|
3
3
|
|
|
4
4
|
import { getMaskOptions } from './maskConfig';
|
|
5
5
|
import { moduleInterop } from '../utils';
|
|
@@ -14,7 +14,7 @@ import type { Mask, Options } from '../types';
|
|
|
14
14
|
* @param options - Optional configuration options
|
|
15
15
|
* @returns A mask instance
|
|
16
16
|
*/
|
|
17
|
-
export function createMaskInstance(mask: Mask, options?: Options):
|
|
17
|
+
export function createMaskInstance(mask: Mask, options?: Options): ReturnType<typeof inputmask> {
|
|
18
18
|
const inputmaskInstance = moduleInterop(inputmask);
|
|
19
19
|
return inputmaskInstance(getMaskOptions(mask, options));
|
|
20
20
|
}
|
package/src/index.tsx
CHANGED
package/src/types/index.ts
CHANGED
|
@@ -30,9 +30,15 @@ export type Mask = 'datetime'
|
|
|
30
30
|
export type Options = MaskOptions;
|
|
31
31
|
export type Input = HTMLInputElement | HTMLTextAreaElement | HTMLElement;
|
|
32
32
|
|
|
33
|
+
export interface UnmaskedValueApi {
|
|
34
|
+
unmaskedValue: () => string;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export type UseMaskInputReturn = RefCallback<HTMLElement | null> & UnmaskedValueApi;
|
|
38
|
+
|
|
33
39
|
export interface UseHookFormMaskReturn<
|
|
34
40
|
T extends FieldValues,
|
|
35
|
-
> extends UseFormRegisterReturn<Path<T
|
|
41
|
+
> extends UseFormRegisterReturn<Path<T>>, UnmaskedValueApi {
|
|
36
42
|
ref: RefCallback<HTMLElement | null>;
|
|
37
43
|
prevRef: RefCallback<HTMLElement | null>;
|
|
38
44
|
}
|
|
@@ -47,4 +53,4 @@ export type UseTanStackFormMaskReturn<T extends TanStackFormInputProps = TanStac
|
|
|
47
53
|
Omit<T, 'ref'> & {
|
|
48
54
|
ref: RefCallback<HTMLElement | null>;
|
|
49
55
|
prevRef: RefCallback<HTMLElement | null> | undefined;
|
|
50
|
-
};
|
|
56
|
+
} & UnmaskedValueApi;
|
package/src/utils/index.ts
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
export { default as flow } from './flow';
|
|
2
2
|
export { default as isServer } from './isServer';
|
|
3
3
|
export { default as moduleInterop } from './moduleInterop';
|
|
4
|
-
export {
|
|
4
|
+
export {
|
|
5
|
+
getUnmaskedValue,
|
|
6
|
+
makeMaskCacheKey,
|
|
7
|
+
setPrevRef,
|
|
8
|
+
setUnmaskedValue,
|
|
9
|
+
} from './maskHelpers';
|
package/src/utils/maskHelpers.ts
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { findInputElement, resolveInputRef } from '../core/elementResolver';
|
|
2
|
+
|
|
3
|
+
import type { Input, Mask, UnmaskedValueApi } from '../types';
|
|
4
|
+
|
|
5
|
+
type MaskedElement = (HTMLInputElement | HTMLTextAreaElement) & {
|
|
6
|
+
inputmask?: { unmaskedvalue?: () => string };
|
|
7
|
+
};
|
|
2
8
|
|
|
3
9
|
/**
|
|
4
10
|
* Builds a stable string key from a field name and mask, used to cache ref
|
|
@@ -20,3 +26,42 @@ export function setPrevRef(result: object, ref: unknown): void {
|
|
|
20
26
|
configurable: true,
|
|
21
27
|
});
|
|
22
28
|
}
|
|
29
|
+
|
|
30
|
+
function resolveUnmaskedInput(input: Input | null): HTMLInputElement | HTMLTextAreaElement | null {
|
|
31
|
+
const resolved = resolveInputRef(input);
|
|
32
|
+
if (!resolved) return null;
|
|
33
|
+
|
|
34
|
+
const inputElement = findInputElement(resolved);
|
|
35
|
+
if (inputElement) {
|
|
36
|
+
return inputElement as HTMLInputElement | HTMLTextAreaElement;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
return resolved as HTMLInputElement | HTMLTextAreaElement;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export function getUnmaskedValue(input: Input | null): string {
|
|
43
|
+
const element = resolveUnmaskedInput(input);
|
|
44
|
+
if (!element) return '';
|
|
45
|
+
|
|
46
|
+
const { inputmask } = element as MaskedElement;
|
|
47
|
+
|
|
48
|
+
if (inputmask && typeof inputmask.unmaskedvalue === 'function') {
|
|
49
|
+
return inputmask.unmaskedvalue();
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
return 'value' in element ? element.value : '';
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export function setUnmaskedValue<T extends object>(
|
|
56
|
+
result: T,
|
|
57
|
+
getter: () => string,
|
|
58
|
+
): T & UnmaskedValueApi {
|
|
59
|
+
Object.defineProperty(result, 'unmaskedValue', {
|
|
60
|
+
value: getter,
|
|
61
|
+
enumerable: false,
|
|
62
|
+
writable: true,
|
|
63
|
+
configurable: true,
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
return result as T & UnmaskedValueApi;
|
|
67
|
+
}
|