@desource/phone-mask-vue 0.2.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.
- package/CHANGELOG.md +15 -0
- package/LICENSE +21 -0
- package/README.md +554 -0
- package/dist/index.cjs +1439 -0
- package/dist/index.js +1441 -0
- package/dist/index.mjs +1439 -0
- package/dist/phone-mask-vue.css +362 -0
- package/dist/types/components/PhoneInput.vue.d.ts +49 -0
- package/dist/types/components/PhoneInput.vue.d.ts.map +1 -0
- package/dist/types/composables/useClipboard.d.ts +7 -0
- package/dist/types/composables/useClipboard.d.ts.map +1 -0
- package/dist/types/composables/useCountrySelector.d.ts +21 -0
- package/dist/types/composables/useCountrySelector.d.ts.map +1 -0
- package/dist/types/composables/useMask.d.ts +20 -0
- package/dist/types/composables/useMask.d.ts.map +1 -0
- package/dist/types/composables/usePhoneFormatter.d.ts +16 -0
- package/dist/types/composables/usePhoneFormatter.d.ts.map +1 -0
- package/dist/types/consts.d.ts +8 -0
- package/dist/types/consts.d.ts.map +1 -0
- package/dist/types/directives/vPhoneMask.d.ts +10 -0
- package/dist/types/directives/vPhoneMask.d.ts.map +1 -0
- package/dist/types/index.d.ts +24 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/types.d.ts +184 -0
- package/dist/types/types.d.ts.map +1 -0
- package/package.json +73 -0
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
.phone-input,
|
|
2
|
+
.phone-dropdown {
|
|
3
|
+
--pi-bg: #ffffff;
|
|
4
|
+
--pi-fg: #111827;
|
|
5
|
+
--pi-muted: #6b7280;
|
|
6
|
+
--pi-border: #e5e7eb;
|
|
7
|
+
--pi-border-hover: #d1d5db;
|
|
8
|
+
--pi-border-focus: #3b82f6;
|
|
9
|
+
--pi-radius: 8px;
|
|
10
|
+
--pi-padding: 12px;
|
|
11
|
+
--pi-font-size: 16px;
|
|
12
|
+
--pi-height: 44px;
|
|
13
|
+
--pi-actions-size: 32px;
|
|
14
|
+
--pi-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
|
|
15
|
+
--pi-shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -2px rgb(0 0 0 / 0.05);
|
|
16
|
+
--pi-warning: #f59e0b;
|
|
17
|
+
--pi-warning-light: #fbbf24;
|
|
18
|
+
--pi-success: #10b981;
|
|
19
|
+
--pi-focus-ring: 3px solid rgb(59 130 246 / 0.15);
|
|
20
|
+
--pi-focus-ring-warning: 3px solid rgb(245 158 11 / 0.15);
|
|
21
|
+
--pi-focus-ring-success: 3px solid rgb(16 185 129 / 0.15);
|
|
22
|
+
--pi-disabled-bg: #f9fafb;
|
|
23
|
+
--pi-disabled-fg: #9ca3af;
|
|
24
|
+
}
|
|
25
|
+
.phone-input.theme-dark,
|
|
26
|
+
.phone-dropdown.theme-dark {
|
|
27
|
+
--pi-bg: #1f2937;
|
|
28
|
+
--pi-fg: #f9fafb;
|
|
29
|
+
--pi-muted: #9ca3af;
|
|
30
|
+
--pi-border: #374151;
|
|
31
|
+
--pi-border-hover: #4b5563;
|
|
32
|
+
--pi-border-focus: #60a5fa;
|
|
33
|
+
--pi-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.3);
|
|
34
|
+
--pi-shadow-lg: 0 20px 25px -5px rgb(0 0 0 / 0.3), 0 10px 10px -5px rgb(0 0 0 / 0.2);
|
|
35
|
+
--pi-warning: #fbbf24;
|
|
36
|
+
--pi-warning-light: #fcd34d;
|
|
37
|
+
--pi-focus-ring: 3px solid rgb(96 165 250 / 0.2);
|
|
38
|
+
--pi-focus-ring-warning: 3px solid rgb(251 191 24 / 0.2);
|
|
39
|
+
--pi-focus-ring-success: 3px solid rgb(16 185 129 / 0.2);
|
|
40
|
+
--pi-disabled-bg: #374151;
|
|
41
|
+
}
|
|
42
|
+
.phone-input *,
|
|
43
|
+
.phone-input *::before,
|
|
44
|
+
.phone-input *::after,
|
|
45
|
+
.phone-dropdown *,
|
|
46
|
+
.phone-dropdown *::before,
|
|
47
|
+
.phone-dropdown *::after {
|
|
48
|
+
box-sizing: border-box;
|
|
49
|
+
}
|
|
50
|
+
.phone-input button,
|
|
51
|
+
.phone-input input,
|
|
52
|
+
.phone-dropdown button,
|
|
53
|
+
.phone-dropdown input {
|
|
54
|
+
margin: 0;
|
|
55
|
+
padding: 0;
|
|
56
|
+
border: none;
|
|
57
|
+
background: none;
|
|
58
|
+
font: inherit;
|
|
59
|
+
color: inherit;
|
|
60
|
+
}
|
|
61
|
+
.phone-input button,
|
|
62
|
+
.phone-dropdown button {
|
|
63
|
+
cursor: pointer;
|
|
64
|
+
}
|
|
65
|
+
.phone-input button:disabled,
|
|
66
|
+
.phone-dropdown button:disabled {
|
|
67
|
+
cursor: not-allowed;
|
|
68
|
+
}
|
|
69
|
+
.phone-input input,
|
|
70
|
+
.phone-dropdown input {
|
|
71
|
+
outline: none;
|
|
72
|
+
}
|
|
73
|
+
.phone-input input::placeholder,
|
|
74
|
+
.phone-dropdown input::placeholder {
|
|
75
|
+
opacity: 0.5;
|
|
76
|
+
}
|
|
77
|
+
.phone-input input:disabled,
|
|
78
|
+
.phone-dropdown input:disabled {
|
|
79
|
+
cursor: not-allowed;
|
|
80
|
+
}.phone-input[data-v-cd4ff552],
|
|
81
|
+
.phone-dropdown[data-v-cd4ff552] {
|
|
82
|
+
font-size: var(--pi-font-size);
|
|
83
|
+
background: var(--pi-bg);
|
|
84
|
+
color: var(--pi-fg);
|
|
85
|
+
border-radius: var(--pi-radius);
|
|
86
|
+
border: 1px solid var(--pi-border);
|
|
87
|
+
}
|
|
88
|
+
.phone-input[data-v-cd4ff552] {
|
|
89
|
+
position: relative;
|
|
90
|
+
display: flex;
|
|
91
|
+
align-items: stretch;
|
|
92
|
+
width: 100%;
|
|
93
|
+
}
|
|
94
|
+
.phone-input[data-v-cd4ff552]:focus-within {
|
|
95
|
+
outline: var(--pi-focus-ring);
|
|
96
|
+
}
|
|
97
|
+
.phone-input.is-incomplete[data-v-cd4ff552] {
|
|
98
|
+
border-color: var(--pi-warning);
|
|
99
|
+
}
|
|
100
|
+
.phone-input.is-incomplete[data-v-cd4ff552]:focus-within {
|
|
101
|
+
outline: var(--pi-focus-ring-warning);
|
|
102
|
+
}
|
|
103
|
+
.phone-input.is-complete[data-v-cd4ff552] {
|
|
104
|
+
border-color: var(--pi-success);
|
|
105
|
+
}
|
|
106
|
+
.phone-input.is-complete[data-v-cd4ff552]:focus-within {
|
|
107
|
+
outline: var(--pi-focus-ring-success);
|
|
108
|
+
}
|
|
109
|
+
.phone-input.is-disabled[data-v-cd4ff552] {
|
|
110
|
+
background: var(--pi-disabled-bg);
|
|
111
|
+
color: var(--pi-disabled-fg);
|
|
112
|
+
}
|
|
113
|
+
.phone-input.is-readonly[data-v-cd4ff552] {
|
|
114
|
+
cursor: default;
|
|
115
|
+
}
|
|
116
|
+
.phone-input.size-compact[data-v-cd4ff552] {
|
|
117
|
+
--pi-font-size: 14px;
|
|
118
|
+
--pi-height: 36px;
|
|
119
|
+
--pi-padding: 10px;
|
|
120
|
+
--pi-actions-size: 24px;
|
|
121
|
+
}
|
|
122
|
+
.phone-input.size-large[data-v-cd4ff552] {
|
|
123
|
+
--pi-font-size: 18px;
|
|
124
|
+
--pi-height: 52px;
|
|
125
|
+
--pi-padding: 16px;
|
|
126
|
+
--pi-actions-size: 32px;
|
|
127
|
+
}
|
|
128
|
+
.phone-input.is-unstyled[data-v-cd4ff552] {
|
|
129
|
+
all: initial;
|
|
130
|
+
display: block;
|
|
131
|
+
}
|
|
132
|
+
.pi-selector[data-v-cd4ff552] {
|
|
133
|
+
flex-shrink: 0;
|
|
134
|
+
}
|
|
135
|
+
.pi-selector-btn[data-v-cd4ff552] {
|
|
136
|
+
display: flex;
|
|
137
|
+
align-items: center;
|
|
138
|
+
gap: 6px;
|
|
139
|
+
padding-left: var(--pi-padding);
|
|
140
|
+
padding-right: 0;
|
|
141
|
+
min-height: var(--pi-height);
|
|
142
|
+
border: 1px solid transparent;
|
|
143
|
+
border-radius: var(--pi-radius) 0 0 var(--pi-radius);
|
|
144
|
+
transition: all 150ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
145
|
+
}
|
|
146
|
+
.pi-selector-btn.no-dropdown[data-v-cd4ff552] {
|
|
147
|
+
cursor: default;
|
|
148
|
+
}
|
|
149
|
+
.pi-selector-btn[data-v-cd4ff552]:focus-visible {
|
|
150
|
+
border-color: var(--pi-border-focus);
|
|
151
|
+
outline: none;
|
|
152
|
+
}
|
|
153
|
+
.pi-selector-btn:disabled > .pi-flag[data-v-cd4ff552] {
|
|
154
|
+
opacity: 0.5;
|
|
155
|
+
}
|
|
156
|
+
.pi-flag[data-v-cd4ff552] {
|
|
157
|
+
font-size: 1.25em;
|
|
158
|
+
line-height: 1;
|
|
159
|
+
display: inline-flex;
|
|
160
|
+
}
|
|
161
|
+
.pi-chevron[data-v-cd4ff552] {
|
|
162
|
+
margin-left: 2px;
|
|
163
|
+
color: var(--pi-muted);
|
|
164
|
+
transition: transform 200ms ease;
|
|
165
|
+
}
|
|
166
|
+
.pi-chevron.is-open[data-v-cd4ff552] {
|
|
167
|
+
transform: rotate(180deg);
|
|
168
|
+
}
|
|
169
|
+
.pi-input-wrap[data-v-cd4ff552] {
|
|
170
|
+
flex: 1;
|
|
171
|
+
position: relative;
|
|
172
|
+
display: flex;
|
|
173
|
+
align-items: center;
|
|
174
|
+
}
|
|
175
|
+
.pi-input[data-v-cd4ff552] {
|
|
176
|
+
flex: 1;
|
|
177
|
+
width: 100%;
|
|
178
|
+
padding-left: var(--pi-padding);
|
|
179
|
+
padding-right: calc((var(--pi-actions-size) + 2px) * var(--pi-actions-count) + var(--pi-padding));
|
|
180
|
+
min-height: var(--pi-height);
|
|
181
|
+
border-radius: 0 var(--pi-radius) var(--pi-radius) 0;
|
|
182
|
+
transition: all 150ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
183
|
+
}
|
|
184
|
+
.pi-input[data-v-cd4ff552]:hover:not(:disabled):not(:read-only) {
|
|
185
|
+
border-color: var(--pi-border-hover);
|
|
186
|
+
}
|
|
187
|
+
.pi-input[data-v-cd4ff552]:focus {
|
|
188
|
+
border-color: var(--pi-border-focus);
|
|
189
|
+
position: relative;
|
|
190
|
+
}
|
|
191
|
+
.pi-actions[data-v-cd4ff552] {
|
|
192
|
+
position: absolute;
|
|
193
|
+
right: 2px;
|
|
194
|
+
top: 50%;
|
|
195
|
+
transform: translateY(-50%);
|
|
196
|
+
display: inline-flex;
|
|
197
|
+
align-items: center;
|
|
198
|
+
gap: 2px;
|
|
199
|
+
}
|
|
200
|
+
.pi-btn[data-v-cd4ff552] {
|
|
201
|
+
display: flex;
|
|
202
|
+
align-items: center;
|
|
203
|
+
justify-content: center;
|
|
204
|
+
width: var(--pi-actions-size);
|
|
205
|
+
height: var(--pi-actions-size);
|
|
206
|
+
background: transparent;
|
|
207
|
+
color: var(--pi-muted);
|
|
208
|
+
border: none;
|
|
209
|
+
border-radius: 9999px;
|
|
210
|
+
transition: all 150ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
211
|
+
}
|
|
212
|
+
.pi-btn[data-v-cd4ff552]:hover {
|
|
213
|
+
background: var(--pi-disabled-bg);
|
|
214
|
+
color: var(--pi-fg);
|
|
215
|
+
}
|
|
216
|
+
.pi-btn[data-v-cd4ff552]:active:not(:disabled) {
|
|
217
|
+
transform: scale(0.95);
|
|
218
|
+
}
|
|
219
|
+
.pi-btn[data-v-cd4ff552]:focus {
|
|
220
|
+
outline: 1px solid var(--pi-border-focus);
|
|
221
|
+
outline-offset: -1px;
|
|
222
|
+
}
|
|
223
|
+
.pi-btn.is-copied[data-v-cd4ff552] {
|
|
224
|
+
color: var(--pi-success);
|
|
225
|
+
border-color: var(--pi-success);
|
|
226
|
+
}
|
|
227
|
+
.pi-btn svg[data-v-cd4ff552] {
|
|
228
|
+
flex-shrink: 0;
|
|
229
|
+
}
|
|
230
|
+
.phone-dropdown[data-v-cd4ff552] {
|
|
231
|
+
position: absolute;
|
|
232
|
+
z-index: 9999;
|
|
233
|
+
max-width: 400px;
|
|
234
|
+
box-shadow: var(--pi-shadow-lg);
|
|
235
|
+
overflow: hidden;
|
|
236
|
+
}
|
|
237
|
+
.pi-search-wrap[data-v-cd4ff552] {
|
|
238
|
+
padding: 8px;
|
|
239
|
+
border-bottom: 1px solid var(--pi-border);
|
|
240
|
+
}
|
|
241
|
+
.pi-search[data-v-cd4ff552] {
|
|
242
|
+
width: 100%;
|
|
243
|
+
padding: 8px 12px;
|
|
244
|
+
font-size: 0.875em;
|
|
245
|
+
border: 1px solid var(--pi-border);
|
|
246
|
+
border-radius: calc(var(--pi-radius) - 2px);
|
|
247
|
+
background: var(--pi-bg);
|
|
248
|
+
transition: border-color 150ms ease;
|
|
249
|
+
}
|
|
250
|
+
.pi-search[data-v-cd4ff552]:focus {
|
|
251
|
+
border-color: var(--pi-border-focus);
|
|
252
|
+
}
|
|
253
|
+
.pi-options[data-v-cd4ff552] {
|
|
254
|
+
max-height: 300px;
|
|
255
|
+
overflow-y: auto;
|
|
256
|
+
padding: 4px 0;
|
|
257
|
+
margin: 0;
|
|
258
|
+
list-style: none;
|
|
259
|
+
}
|
|
260
|
+
.pi-options[data-v-cd4ff552]::-webkit-scrollbar {
|
|
261
|
+
width: 8px;
|
|
262
|
+
}
|
|
263
|
+
.pi-options[data-v-cd4ff552]::-webkit-scrollbar-track {
|
|
264
|
+
background: transparent;
|
|
265
|
+
}
|
|
266
|
+
.pi-options[data-v-cd4ff552]::-webkit-scrollbar-thumb {
|
|
267
|
+
background: var(--pi-border);
|
|
268
|
+
border-radius: 4px;
|
|
269
|
+
}
|
|
270
|
+
.pi-options[data-v-cd4ff552]::-webkit-scrollbar-thumb:hover {
|
|
271
|
+
background: var(--pi-border-hover);
|
|
272
|
+
}
|
|
273
|
+
.pi-option[data-v-cd4ff552] {
|
|
274
|
+
display: flex;
|
|
275
|
+
align-items: center;
|
|
276
|
+
gap: 8px;
|
|
277
|
+
padding: 8px 12px;
|
|
278
|
+
cursor: pointer;
|
|
279
|
+
transition: background-color 100ms ease;
|
|
280
|
+
}
|
|
281
|
+
.pi-option[data-v-cd4ff552]:hover, .pi-option.is-focused[data-v-cd4ff552] {
|
|
282
|
+
background: var(--pi-disabled-bg);
|
|
283
|
+
}
|
|
284
|
+
.pi-option.is-selected[data-v-cd4ff552] {
|
|
285
|
+
background: var(--pi-border);
|
|
286
|
+
font-weight: 500;
|
|
287
|
+
}
|
|
288
|
+
.pi-opt-name[data-v-cd4ff552] {
|
|
289
|
+
flex: 1;
|
|
290
|
+
overflow: hidden;
|
|
291
|
+
text-overflow: ellipsis;
|
|
292
|
+
white-space: nowrap;
|
|
293
|
+
}
|
|
294
|
+
.pi-opt-code[data-v-cd4ff552] {
|
|
295
|
+
color: var(--pi-muted);
|
|
296
|
+
font-size: 0.875em;
|
|
297
|
+
}
|
|
298
|
+
.pi-empty[data-v-cd4ff552] {
|
|
299
|
+
padding: 12px;
|
|
300
|
+
text-align: center;
|
|
301
|
+
color: var(--pi-muted);
|
|
302
|
+
font-size: 0.875em;
|
|
303
|
+
}
|
|
304
|
+
.fade-enter-active[data-v-cd4ff552],
|
|
305
|
+
.fade-leave-active[data-v-cd4ff552] {
|
|
306
|
+
transition: opacity 200ms cubic-bezier(0.4, 0, 0.2, 1), transform 200ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
307
|
+
}
|
|
308
|
+
.fade-enter-from[data-v-cd4ff552],
|
|
309
|
+
.fade-leave-to[data-v-cd4ff552] {
|
|
310
|
+
opacity: 0;
|
|
311
|
+
transform: translateY(-50%) translateX(8px);
|
|
312
|
+
}
|
|
313
|
+
.fade-scale-enter-active[data-v-cd4ff552],
|
|
314
|
+
.fade-scale-leave-active[data-v-cd4ff552] {
|
|
315
|
+
transition: opacity 200ms cubic-bezier(0.4, 0, 0.2, 1), transform 200ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
316
|
+
}
|
|
317
|
+
.fade-scale-enter-from[data-v-cd4ff552],
|
|
318
|
+
.fade-scale-leave-to[data-v-cd4ff552] {
|
|
319
|
+
opacity: 0;
|
|
320
|
+
transform: scale(0.8);
|
|
321
|
+
}
|
|
322
|
+
.dropdown-enter-active[data-v-cd4ff552],
|
|
323
|
+
.dropdown-leave-active[data-v-cd4ff552] {
|
|
324
|
+
transition: opacity 200ms cubic-bezier(0.4, 0, 0.2, 1), transform 200ms cubic-bezier(0.4, 0, 0.2, 1);
|
|
325
|
+
}
|
|
326
|
+
.dropdown-enter-from[data-v-cd4ff552],
|
|
327
|
+
.dropdown-leave-to[data-v-cd4ff552] {
|
|
328
|
+
opacity: 0;
|
|
329
|
+
transform: translateY(-8px);
|
|
330
|
+
}
|
|
331
|
+
.sr-only[data-v-cd4ff552] {
|
|
332
|
+
position: absolute;
|
|
333
|
+
width: 1px;
|
|
334
|
+
height: 1px;
|
|
335
|
+
padding: 0;
|
|
336
|
+
margin: -1px;
|
|
337
|
+
overflow: hidden;
|
|
338
|
+
clip: rect(0, 0, 0, 0);
|
|
339
|
+
white-space: nowrap;
|
|
340
|
+
border: 0;
|
|
341
|
+
}
|
|
342
|
+
@media (max-width: 480px) {
|
|
343
|
+
.phone-input[data-v-cd4ff552] {
|
|
344
|
+
--pi-padding: 8px;
|
|
345
|
+
--pi-actions-size: 24px;
|
|
346
|
+
}
|
|
347
|
+
.size-compact[data-v-cd4ff552] {
|
|
348
|
+
--pi-actions-size: 20px;
|
|
349
|
+
}
|
|
350
|
+
.phone-dropdown[data-v-cd4ff552] {
|
|
351
|
+
left: 0;
|
|
352
|
+
right: 0;
|
|
353
|
+
max-width: none;
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
@media (prefers-reduced-motion: reduce) {
|
|
357
|
+
[data-v-cd4ff552] {
|
|
358
|
+
animation-duration: 0.01ms !important;
|
|
359
|
+
animation-iteration-count: 1 !important;
|
|
360
|
+
transition-duration: 0.01ms !important;
|
|
361
|
+
}
|
|
362
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { PhoneInputExposed, PhoneInputProps, PhoneInputSlots } from '../types';
|
|
2
|
+
type __VLS_Props = PhoneInputProps;
|
|
3
|
+
type __VLS_Slots = PhoneInputSlots;
|
|
4
|
+
type __VLS_ModelProps = {
|
|
5
|
+
modelValue?: string;
|
|
6
|
+
};
|
|
7
|
+
type __VLS_PublicProps = __VLS_Props & __VLS_ModelProps;
|
|
8
|
+
declare const __VLS_base: import("vue").DefineComponent<__VLS_PublicProps, PhoneInputExposed, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
9
|
+
"update:modelValue": (value: string | undefined) => any;
|
|
10
|
+
} & {
|
|
11
|
+
change: (value: import("..").PMaskPhoneNumber) => any;
|
|
12
|
+
"country-change": (country: import("@desource/phone-mask").MaskFull) => any;
|
|
13
|
+
"validation-change": (isValid: boolean) => any;
|
|
14
|
+
focus: (event: FocusEvent) => any;
|
|
15
|
+
blur: (event: FocusEvent) => any;
|
|
16
|
+
copy: (value: string) => any;
|
|
17
|
+
clear: () => any;
|
|
18
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
|
|
19
|
+
onChange?: ((value: import("..").PMaskPhoneNumber) => any) | undefined;
|
|
20
|
+
"onCountry-change"?: ((country: import("@desource/phone-mask").MaskFull) => any) | undefined;
|
|
21
|
+
"onValidation-change"?: ((isValid: boolean) => any) | undefined;
|
|
22
|
+
onFocus?: ((event: FocusEvent) => any) | undefined;
|
|
23
|
+
onBlur?: ((event: FocusEvent) => any) | undefined;
|
|
24
|
+
onCopy?: ((value: string) => any) | undefined;
|
|
25
|
+
onClear?: (() => any) | undefined;
|
|
26
|
+
"onUpdate:modelValue"?: ((value: string | undefined) => any) | undefined;
|
|
27
|
+
}>, {
|
|
28
|
+
detect: boolean;
|
|
29
|
+
size: import("../types").Size;
|
|
30
|
+
theme: import("../types").Theme;
|
|
31
|
+
disabled: boolean;
|
|
32
|
+
readonly: boolean;
|
|
33
|
+
showCopy: boolean;
|
|
34
|
+
showClear: boolean;
|
|
35
|
+
withValidity: boolean;
|
|
36
|
+
searchPlaceholder: string;
|
|
37
|
+
noResultsText: string;
|
|
38
|
+
clearButtonLabel: string;
|
|
39
|
+
disableDefaultStyles: boolean;
|
|
40
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
41
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
42
|
+
declare const _default: typeof __VLS_export;
|
|
43
|
+
export default _default;
|
|
44
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
45
|
+
new (): {
|
|
46
|
+
$slots: S;
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=PhoneInput.vue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PhoneInput.vue.d.ts","sourceRoot":"","sources":["../../../src/components/PhoneInput.vue"],"names":[],"mappings":"AAi5BA,OAAO,KAAK,EAAmB,iBAAiB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAErG,KAAK,WAAW,GAAG,eAAe,CAAC;AAgBnC,KAAK,WAAW,GAAG,eAAe,CAAC;AAyQnC,KAAK,gBAAgB,GAAG;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAmBF,KAAK,iBAAiB,GAAG,WAAW,GAAG,gBAAgB,CAAC;AAifxD,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6EAKd,CAAC;AACH,QAAA,MAAM,YAAY,EAAS,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;wBACtD,OAAO,YAAY;AAAxC,wBAAyC;AAWzC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useClipboard.d.ts","sourceRoot":"","sources":["../../../src/composables/useClipboard.ts"],"names":[],"mappings":"AAEA,wBAAgB,YAAY;;;iBAYA,MAAM;;EA2BjC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCountrySelector.d.ts","sourceRoot":"","sources":["../../../src/composables/useCountrySelector.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,UAAU,EACf,KAAK,QAAQ,EACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AAOnD,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;;+BA6FN,MAAM,WAAW,OAAO,WAAW,MAAM,IAAI;EAwCtF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const CACHE_KEY = "@desource/phone-mask:geo";
|
|
2
|
+
export declare const CACHE_EXPIRY_MS: number;
|
|
3
|
+
export declare const GEO_IP_TIMEOUT = 1500;
|
|
4
|
+
export declare const GEO_IP_URL = "https://ipapi.co/json/";
|
|
5
|
+
export declare const Delimiters: string[];
|
|
6
|
+
export declare const NavigationKeys: string[];
|
|
7
|
+
export declare const InvalidPattern: RegExp;
|
|
8
|
+
//# sourceMappingURL=consts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../src/consts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,6BAA6B,CAAC;AACpD,eAAO,MAAM,eAAe,QAAmB,CAAC;AAChD,eAAO,MAAM,cAAc,OAAQ,CAAC;AACpC,eAAO,MAAM,UAAU,2BAA2B,CAAC;AACnD,eAAO,MAAM,UAAU,UAAuB,CAAC;AAC/C,eAAO,MAAM,cAAc,UAA4E,CAAC;AACxG,eAAO,MAAM,cAAc,QAAgB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type Directive } from 'vue';
|
|
2
|
+
import type { PMaskDirectiveOptions, PMaskDirectiveState, DirectiveHTMLInputElement } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Update country and reformat existing input.
|
|
5
|
+
* Updates formatter, placeholder, truncates digits if needed, and triggers callbacks
|
|
6
|
+
*/
|
|
7
|
+
declare function updateCountry(el: HTMLInputElement, state: PMaskDirectiveState, newCountryCode: string): Promise<void>;
|
|
8
|
+
export declare const vPhoneMask: Directive<DirectiveHTMLInputElement, string | PMaskDirectiveOptions | undefined>;
|
|
9
|
+
export { updateCountry as setCountry };
|
|
10
|
+
//# sourceMappingURL=vPhoneMask.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vPhoneMask.d.ts","sourceRoot":"","sources":["../../../src/directives/vPhoneMask.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAmC,MAAM,KAAK,CAAC;AAKtE,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AA8UtG;;;GAGG;AACH,iBAAe,aAAa,CAAC,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBpH;AAED,eAAO,MAAM,UAAU,EAAE,SAAS,CAAC,yBAAyB,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAoFvG,CAAC;AAGF,OAAO,EAAE,aAAa,IAAI,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { countPlaceholders, formatDigitsWithMap, pickMaskVariant, removeCountryCodePrefix, toArray } from '@desource/phone-mask';
|
|
2
|
+
import type { App } from 'vue';
|
|
3
|
+
import PhoneInput from './components/PhoneInput.vue';
|
|
4
|
+
import { vPhoneMask, setCountry as vPhoneMaskSetCountry } from './directives/vPhoneMask';
|
|
5
|
+
import type { PhoneNumber as PMaskPhoneNumber } from './types';
|
|
6
|
+
type TPhoneInputComponent = typeof PhoneInput;
|
|
7
|
+
type TPhoneMaskDirective = typeof vPhoneMask;
|
|
8
|
+
type TPhoneMaskSetCountryType = typeof vPhoneMaskSetCountry;
|
|
9
|
+
declare function install(app: App): void;
|
|
10
|
+
export { PhoneInput, vPhoneMask, install, vPhoneMaskSetCountry, type TPhoneInputComponent, type TPhoneMaskDirective, type TPhoneMaskSetCountryType, type PMaskPhoneNumber };
|
|
11
|
+
declare const _default: {
|
|
12
|
+
install: typeof install;
|
|
13
|
+
};
|
|
14
|
+
export default _default;
|
|
15
|
+
export type { CountryKey as PCountryKey, MaskBase as PMaskBase, MaskBaseMap as PMaskBaseMap, Mask as PMask, MaskMap as PMaskMap, MaskWithFlag as PMaskWithFlag, MaskWithFlagMap as PMaskWithFlagMap, MaskFull as PMaskFull, MaskFullMap as PMaskFullMap } from '@desource/phone-mask';
|
|
16
|
+
export declare const PMaskHelpers: {
|
|
17
|
+
getFlagEmoji: (cc: string) => string;
|
|
18
|
+
countPlaceholders: typeof countPlaceholders;
|
|
19
|
+
formatDigitsWithMap: typeof formatDigitsWithMap;
|
|
20
|
+
pickMaskVariant: typeof pickMaskVariant;
|
|
21
|
+
removeCountryCodePrefix: typeof removeCountryCodePrefix;
|
|
22
|
+
toArray: typeof toArray;
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +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"}
|