@desource/phone-mask-vue 0.3.0 → 1.1.0

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.
Files changed (44) hide show
  1. package/CHANGELOG.md +65 -0
  2. package/README.md +157 -11
  3. package/dist/index.cjs +868 -978
  4. package/dist/index.js +868 -978
  5. package/dist/index.mjs +869 -979
  6. package/dist/phone-mask-vue.css +64 -64
  7. package/dist/types/components/PhoneInput.vue.d.ts +7 -7
  8. package/dist/types/components/PhoneInput.vue.d.ts.map +1 -1
  9. package/dist/types/composables/internal/useCopyAction.d.ts +14 -0
  10. package/dist/types/composables/internal/useCopyAction.d.ts.map +1 -0
  11. package/dist/types/composables/internal/useCountry.d.ts +22 -0
  12. package/dist/types/composables/internal/useCountry.d.ts.map +1 -0
  13. package/dist/types/composables/internal/useCountrySelector.d.ts +30 -0
  14. package/dist/types/composables/internal/useCountrySelector.d.ts.map +1 -0
  15. package/dist/types/composables/internal/useFormatter.d.ts +46 -0
  16. package/dist/types/composables/internal/useFormatter.d.ts.map +1 -0
  17. package/dist/types/composables/internal/useInputHandlers.d.ts +20 -0
  18. package/dist/types/composables/internal/useInputHandlers.d.ts.map +1 -0
  19. package/dist/types/composables/internal/useTheme.d.ts +10 -0
  20. package/dist/types/composables/internal/useTheme.d.ts.map +1 -0
  21. package/dist/types/composables/internal/useValidationHint.d.ts +6 -0
  22. package/dist/types/composables/internal/useValidationHint.d.ts.map +1 -0
  23. package/dist/types/composables/usePhoneMask.d.ts +8 -0
  24. package/dist/types/composables/usePhoneMask.d.ts.map +1 -0
  25. package/dist/types/composables/{useClipboard.d.ts → utility/useClipboard.d.ts} +1 -2
  26. package/dist/types/composables/utility/useClipboard.d.ts.map +1 -0
  27. package/dist/types/composables/utility/useTimer.d.ts +9 -0
  28. package/dist/types/composables/utility/useTimer.d.ts.map +1 -0
  29. package/dist/types/directives/vPhoneMask.d.ts +1 -2
  30. package/dist/types/directives/vPhoneMask.d.ts.map +1 -1
  31. package/dist/types/index.d.ts +7 -5
  32. package/dist/types/index.d.ts.map +1 -1
  33. package/dist/types/types.d.ts +33 -9
  34. package/dist/types/types.d.ts.map +1 -1
  35. package/package.json +17 -11
  36. package/dist/types/composables/useClipboard.d.ts.map +0 -1
  37. package/dist/types/composables/useCountrySelector.d.ts +0 -21
  38. package/dist/types/composables/useCountrySelector.d.ts.map +0 -1
  39. package/dist/types/composables/useMask.d.ts +0 -20
  40. package/dist/types/composables/useMask.d.ts.map +0 -1
  41. package/dist/types/composables/usePhoneFormatter.d.ts +0 -16
  42. package/dist/types/composables/usePhoneFormatter.d.ts.map +0 -1
  43. package/dist/types/consts.d.ts +0 -4
  44. package/dist/types/consts.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,uBAAuB,EACvB,OAAO,EACR,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC/B,OAAO,UAAU,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACzF,OAAO,KAAK,EAAE,WAAW,IAAI,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE/D,KAAK,oBAAoB,GAAG,OAAO,UAAU,CAAC;AAC9C,KAAK,mBAAmB,GAAG,OAAO,UAAU,CAAC;AAC7C,KAAK,wBAAwB,GAAG,OAAO,oBAAoB,CAAC;AAE5D,iBAAS,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAG/B;AAED,OAAO,EACL,UAAU,EACV,UAAU,EACV,OAAO,EACP,oBAAoB,EACpB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACtB,CAAC;;;;AAEF,wBAEE;AAEF,YAAY,EACV,UAAU,IAAI,WAAW,EACzB,QAAQ,IAAI,SAAS,EACrB,WAAW,IAAI,YAAY,EAC3B,IAAI,IAAI,KAAK,EACb,OAAO,IAAI,QAAQ,EACnB,YAAY,IAAI,aAAa,EAC7B,eAAe,IAAI,gBAAgB,EACnC,QAAQ,IAAI,SAAS,EACrB,WAAW,IAAI,YAAY,EAC5B,MAAM,sBAAsB,CAAC;AAE9B,eAAO,MAAM,YAAY;;;;;;;CAOxB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,uBAAuB,EACvB,OAAO,EACR,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC/B,OAAO,UAAU,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAE,UAAU,IAAI,kBAAkB,EAAE,UAAU,IAAI,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9G,KAAK,oBAAoB,GAAG,OAAO,UAAU,CAAC;AAC9C,KAAK,mBAAmB,GAAG,OAAO,kBAAkB,CAAC;AACrD,KAAK,wBAAwB,GAAG,OAAO,mBAAmB,CAAC;AAE3D,iBAAS,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAG/B;AAED,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,KAAK,wBAAwB,EAAE,CAAC;AAEnH,OAAO,EAAE,UAAU,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAEzF,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,YAAY,EACV,WAAW,IAAI,gBAAgB,EAC/B,IAAI,IAAI,cAAc,EACtB,KAAK,IAAI,eAAe,EACxB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,SAAS,CAAC;;;;AAEjB,wBAEE;AAEF,YAAY,EACV,UAAU,IAAI,WAAW,EACzB,QAAQ,IAAI,SAAS,EACrB,WAAW,IAAI,YAAY,EAC3B,IAAI,IAAI,KAAK,EACb,OAAO,IAAI,QAAQ,EACnB,YAAY,IAAI,aAAa,EAC7B,eAAe,IAAI,gBAAgB,EACnC,QAAQ,IAAI,SAAS,EACrB,WAAW,IAAI,YAAY,EAC5B,MAAM,sBAAsB,CAAC;AAE9B,eAAO,MAAM,YAAY;;;;;;;CAOxB,CAAC"}
@@ -1,4 +1,5 @@
1
- import type { MaskFull, CountryKey } from '@desource/phone-mask';
1
+ import type { MaybeRefOrGetter, ShallowRef, ComputedRef } from 'vue';
2
+ import type { MaskFull, CountryKey, FormatterHelpers } from '@desource/phone-mask';
2
3
  export type Size = 'compact' | 'normal' | 'large';
3
4
  export type Theme = 'auto' | 'light' | 'dark';
4
5
  export type PhoneNumber = {
@@ -6,6 +7,37 @@ export type PhoneNumber = {
6
7
  fullFormatted: string;
7
8
  digits: string;
8
9
  };
10
+ export interface UsePhoneMaskOptions {
11
+ /** Controlled value — digits only, without country code */
12
+ value: MaybeRefOrGetter<string>;
13
+ /** Called when digits change */
14
+ onChange: (digits: string) => void;
15
+ /** Country ISO 3166-1 alpha-2 code */
16
+ country?: MaybeRefOrGetter<string | undefined>;
17
+ /** Locale for country names (defaults to browser language) */
18
+ locale?: MaybeRefOrGetter<string | undefined>;
19
+ /** Auto-detect country via GeoIP */
20
+ detect?: MaybeRefOrGetter<boolean | undefined>;
21
+ /** Called on every phone number update */
22
+ onPhoneChange?: (data: PhoneNumber) => void;
23
+ /** Called when country changes */
24
+ onCountryChange?: (country: MaskFull) => void;
25
+ }
26
+ export interface UsePhoneMaskReturn {
27
+ /** Bind this ref to your &lt;input&gt; element */
28
+ inputRef: ShallowRef<HTMLInputElement | null>;
29
+ digits: ComputedRef<string>;
30
+ /** Phone formatter instance */
31
+ formatter: ComputedRef<FormatterHelpers>;
32
+ full: ComputedRef<string>;
33
+ fullFormatted: ComputedRef<string>;
34
+ isComplete: ComputedRef<boolean>;
35
+ isEmpty: ComputedRef<boolean>;
36
+ shouldShowWarn: ComputedRef<boolean>;
37
+ country: ComputedRef<MaskFull>;
38
+ setCountry: (countryCode?: string | null) => boolean;
39
+ clear: () => void;
40
+ }
9
41
  export interface PhoneInputProps {
10
42
  /** Whether to preselect a country by its ISO 3166-1 alpha-2 code */
11
43
  country?: CountryKey;
@@ -131,14 +163,6 @@ export interface PhoneInputExposed {
131
163
  /** Check if the current phone number is complete */
132
164
  isComplete: () => boolean;
133
165
  }
134
- export interface FormatterHelpers {
135
- formatDisplay: (digits: string) => string;
136
- getMaxDigits: () => number;
137
- getPlaceholder: () => string;
138
- getCaretPosition: (digitIndex: number) => number;
139
- getDigitRange: (digits: string, selStart: number, selEnd: number) => [number, number] | null;
140
- isComplete: (digits: string) => boolean;
141
- }
142
166
  /** Configuration options for the phone mask directive */
143
167
  export interface PMaskDirectiveOptions {
144
168
  /** Country ISO code (e.g., 'US', 'DE', 'GB') */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@desource/phone-mask-vue",
3
- "version": "0.3.0",
4
- "description": "🔌 Vue 3 component & directive for international phone number masking. Powered by @desource/phone-mask with Google libphonenumber sync.",
3
+ "version": "1.1.0",
4
+ "description": "🔌 Vue 3 component, composable, and directive for international phone number masking. Powered by @desource/phone-mask with Google libphonenumber sync.",
5
5
  "keywords": [
6
6
  "vue",
7
7
  "vue3",
@@ -56,18 +56,24 @@
56
56
  "vue": "^3.4.33"
57
57
  },
58
58
  "dependencies": {
59
- "@desource/phone-mask": "0.3.0"
59
+ "@desource/phone-mask": "1.1.0"
60
60
  },
61
61
  "devDependencies": {
62
- "@vitejs/plugin-vue": "^6.0.4",
63
- "vue-tsc": "^3.2.4",
64
- "vue": "^3.5.28"
62
+ "@testing-library/vue": "^8.1.0",
63
+ "@vitejs/plugin-vue": "^6.0.5",
64
+ "vue": "^3.5.30",
65
+ "vue-tsc": "^3.2.5"
65
66
  },
66
67
  "scripts": {
67
- "clean": "rimraf dist tsconfig.tsbuildinfo",
68
- "build": "pnpm build-lib && pnpm build-types",
69
- "build-lib": "vite build",
70
- "build-types": "vue-tsc --emitDeclarationOnly --declaration -p tsconfig.json",
71
- "typecheck": "tsc -p tsconfig.json --noEmit"
68
+ "clean": "rimraf dist tsconfig.tsbuildinfo test-results coverage",
69
+ "dev": "vite demo",
70
+ "build": "pnpm clean && pnpm build:internal",
71
+ "build:internal": "pnpm build:lib && pnpm build:types",
72
+ "build:lib": "vite build",
73
+ "build:types": "vue-tsc --emitDeclarationOnly --declaration -p tsconfig.json",
74
+ "typecheck": "tsc -p tsconfig.json --noEmit",
75
+ "test:unit": "vitest run",
76
+ "test:unit:coverage": "vitest run --coverage.enabled --coverage.provider=v8 --coverage.reporter=lcov --coverage.reportsDirectory=coverage",
77
+ "test:e2e": "playwright test"
72
78
  }
73
79
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"useClipboard.d.ts","sourceRoot":"","sources":["../../../src/composables/useClipboard.ts"],"names":[],"mappings":"AAEA,wBAAgB,YAAY;;;iBAYA,MAAM;;EA2BjC"}
@@ -1,21 +0,0 @@
1
- import { type CountryKey, type MaskFull } from '@desource/phone-mask';
2
- import type { ShallowRef, ComputedRef } from 'vue';
3
- export declare function useCountrySelector(usedLocale: ComputedRef<string>): {
4
- countries: ComputedRef<MaskFull[]>;
5
- selectedId: import("vue").Ref<CountryKey, CountryKey>;
6
- selected: ComputedRef<MaskFull>;
7
- hasCountry: (id: string) => boolean;
8
- hasDropdown: import("vue").Ref<boolean, boolean>;
9
- dropdownOpened: import("vue").Ref<boolean, boolean>;
10
- search: import("vue").Ref<string, string>;
11
- focusedIndex: import("vue").Ref<number, number>;
12
- filteredCountries: ComputedRef<MaskFull[]>;
13
- selectCountry: (id: string) => void;
14
- toggleDropdown: (searchRef: Readonly<ShallowRef<HTMLInputElement | null>>) => Promise<void>;
15
- closeDropdown: () => void;
16
- focusNextOption: (scrollFn?: () => void) => void;
17
- focusPrevOption: (scrollFn?: () => void) => void;
18
- chooseFocusedOption: () => void;
19
- initCountry: (predefined?: string, detect?: boolean, emitFn?: () => void) => Promise<void>;
20
- };
21
- //# sourceMappingURL=useCountrySelector.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useCountrySelector.d.ts","sourceRoot":"","sources":["../../../src/composables/useCountrySelector.ts"],"names":[],"mappings":"AACA,OAAO,EAOL,KAAK,UAAU,EACf,KAAK,QAAQ,EACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AAInD,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC;;;;qBAiBxC,MAAM;;;;;;wBA2CH,MAAM;gCAKQ,QAAQ,CAAC,UAAU,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;;iCAalD,MAAM,IAAI;iCAMV,MAAM,IAAI;;+BAoCN,MAAM,WAAW,OAAO,WAAW,MAAM,IAAI;EAwCtF"}
@@ -1,20 +0,0 @@
1
- import type { Ref, ComputedRef } from 'vue';
2
- import type { MaskFull } from '@desource/phone-mask';
3
- export declare function useMask(selected: ComputedRef<MaskFull>, telRef: Ref<HTMLInputElement | null>): {
4
- digits: Ref<string, string>;
5
- displayValue: Ref<string, string>;
6
- displayPlaceholder: ComputedRef<string>;
7
- isComplete: ComputedRef<boolean>;
8
- isEmpty: ComputedRef<boolean>;
9
- shouldShowWarn: ComputedRef<boolean>;
10
- fullFormatted: ComputedRef<string>;
11
- full: ComputedRef<string>;
12
- handleBeforeInput: (e: InputEvent) => void;
13
- handleInput: (e: Event) => void;
14
- handleKeydown: (e: KeyboardEvent) => void;
15
- handlePaste: (e: ClipboardEvent) => void;
16
- handleFocus: () => void;
17
- updateDisplayFromDigits: () => void;
18
- clear: () => void;
19
- };
20
- //# sourceMappingURL=useMask.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useMask.d.ts","sourceRoot":"","sources":["../../../src/composables/useMask.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAKrD,wBAAgB,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC;;;;;;;;;2BAwC7D,UAAU;qBAahB,KAAK;uBAoHH,aAAa;qBAcf,cAAc;;;;EAiGvC"}
@@ -1,16 +0,0 @@
1
- import { type MaskFull } from '@desource/phone-mask';
2
- import type { FormatterHelpers } from '../types';
3
- export declare function createPhoneFormatter(country: MaskFull): FormatterHelpers;
4
- /**
5
- * Caret manipulation helper
6
- */
7
- export declare function setCaret(el: HTMLInputElement | null, position: number): void;
8
- /**
9
- * Extract digits from any string
10
- */
11
- export declare function extractDigits(value: string, maxLength?: number): string;
12
- /**
13
- * Parse selection range for digit operations
14
- */
15
- export declare function getSelection(el: HTMLInputElement | null): [number, number];
16
- //# sourceMappingURL=usePhoneFormatter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usePhoneFormatter.d.ts","sourceRoot":"","sources":["../../../src/composables/usePhoneFormatter.ts"],"names":[],"mappings":"AACA,OAAO,EAML,KAAK,QAAQ,EACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,QAAQ,GAAG,gBAAgB,CA6DxE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,gBAAgB,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAO5E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAGvE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,gBAAgB,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAG1E"}
@@ -1,4 +0,0 @@
1
- export declare const Delimiters: string[];
2
- export declare const NavigationKeys: string[];
3
- export declare const InvalidPattern: RegExp;
4
- //# sourceMappingURL=consts.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../src/consts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,UAAuB,CAAC;AAC/C,eAAO,MAAM,cAAc,UAA4E,CAAC;AACxG,eAAO,MAAM,cAAc,QAAgB,CAAC"}