mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-19 22:58:07 +02:00
Let be more tolerant with predefined phone number format
The long US phone number format should be '(999) 999-9999' but the parenthesis can be omitted or the space replaced with a dash, ...
This commit is contained in:
parent
3001264801
commit
3dd8752283
2 changed files with 98 additions and 11 deletions
|
@ -465,22 +465,22 @@ class AForm {
|
|||
// specific to the format because the user could enter 1234567 when the
|
||||
// format is 999-9999.
|
||||
const simplifiedFormatStr = cMask.replaceAll(/[^9AOX]/g, "");
|
||||
this.#AFSpecial_KeystrokeEx_helper(simplifiedFormatStr, false);
|
||||
this.#AFSpecial_KeystrokeEx_helper(simplifiedFormatStr, null, false);
|
||||
if (event.rc) {
|
||||
return;
|
||||
}
|
||||
|
||||
event.rc = true;
|
||||
this.#AFSpecial_KeystrokeEx_helper(cMask, true);
|
||||
this.#AFSpecial_KeystrokeEx_helper(cMask, null, true);
|
||||
}
|
||||
|
||||
#AFSpecial_KeystrokeEx_helper(cMask, warn) {
|
||||
#AFSpecial_KeystrokeEx_helper(cMask, value, warn) {
|
||||
if (!cMask) {
|
||||
return;
|
||||
}
|
||||
|
||||
const event = globalThis.event;
|
||||
const value = this.AFMergeChange(event);
|
||||
value ||= this.AFMergeChange(event);
|
||||
if (!value) {
|
||||
return;
|
||||
}
|
||||
|
@ -563,7 +563,8 @@ class AForm {
|
|||
const event = globalThis.event;
|
||||
psf = this.AFMakeNumber(psf);
|
||||
|
||||
let formatStr;
|
||||
let value = this.AFMergeChange(event);
|
||||
let formatStr, secondFormatStr;
|
||||
switch (psf) {
|
||||
case 0:
|
||||
formatStr = "99999";
|
||||
|
@ -572,11 +573,8 @@ class AForm {
|
|||
formatStr = "99999-9999";
|
||||
break;
|
||||
case 2:
|
||||
const value = this.AFMergeChange(event);
|
||||
formatStr =
|
||||
value.startsWith("(") || (value.length > 7 && /^\p{N}+$/.test(value))
|
||||
? "(999) 999-9999"
|
||||
: "999-9999";
|
||||
formatStr = "999-9999";
|
||||
secondFormatStr = "(999) 999-9999";
|
||||
break;
|
||||
case 3:
|
||||
formatStr = "999-99-9999";
|
||||
|
@ -584,8 +582,36 @@ class AForm {
|
|||
default:
|
||||
throw new Error("Invalid psf in AFSpecial_Keystroke");
|
||||
}
|
||||
const formats = secondFormatStr
|
||||
? [formatStr, secondFormatStr]
|
||||
: [formatStr];
|
||||
for (const format of formats) {
|
||||
this.#AFSpecial_KeystrokeEx_helper(format, value, false);
|
||||
if (event.rc) {
|
||||
return;
|
||||
}
|
||||
event.rc = true;
|
||||
}
|
||||
|
||||
this.AFSpecial_KeystrokeEx(formatStr);
|
||||
const re = /([-()]|\s)+/g;
|
||||
value = value.replaceAll(re, "");
|
||||
for (const format of formats) {
|
||||
this.#AFSpecial_KeystrokeEx_helper(
|
||||
format.replaceAll(re, ""),
|
||||
value,
|
||||
false
|
||||
);
|
||||
if (event.rc) {
|
||||
return;
|
||||
}
|
||||
event.rc = true;
|
||||
}
|
||||
|
||||
this.AFSpecial_KeystrokeEx(
|
||||
((secondFormatStr && value.match(/\d/g)) || []).length > 7
|
||||
? secondFormatStr
|
||||
: formatStr
|
||||
);
|
||||
}
|
||||
|
||||
AFTime_FormatEx(cFormat) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue